SU2
geometry_structure.hpp
Go to the documentation of this file.
1 
35 #pragma once
36 
37 #include "./mpi_structure.hpp"
38 
39 #ifdef HAVE_METIS
40  #include "metis.h"
41 #endif
42 #ifdef HAVE_PARMETIS
43 extern "C" {
44 #include "parmetis.h"
45 }
46 #endif
47 #ifdef HAVE_CGNS
48  #include "cgnslib.h"
49 #endif
50 #include <string>
51 #include <fstream>
52 #include <sstream>
53 #include <cmath>
54 #include <algorithm>
55 #include <string.h>
56 #include <stdio.h>
57 #include <stdlib.h>
58 
60 #include "dual_grid_structure.hpp"
61 #include "config_structure.hpp"
62 
63 using namespace std;
64 
72 class CGeometry {
73 protected:
74  unsigned long nPoint,
75  nPointDomain,
76  nPointGhost,
77  nPointNode,
78  Global_nPoint,
79  Global_nPointDomain,
80  nElem,
81  Global_nElem,
82  Global_nElemDomain,
83  nEdge,
84  nFace,
85  nelem_edge,
86  Global_nelem_edge,
87  nelem_triangle,
88  Global_nelem_triangle,
89  nelem_quad,
90  Global_nelem_quad,
91  nelem_tetra,
92  Global_nelem_tetra,
93  nelem_hexa,
94  Global_nelem_hexa,
95  nelem_prism,
96  Global_nelem_prism,
97  nelem_pyramid,
98  Global_nelem_pyramid,
99  nelem_edge_bound,
100  Global_nelem_edge_bound,
101  nelem_triangle_bound,
102  Global_nelem_triangle_bound,
103  nelem_quad_bound,
104  Global_nelem_quad_bound;
105  unsigned short nDim,
106  nZone,
107  nMarker;
108  unsigned long Max_GlobalPoint;
110 public:
111  unsigned long *nElem_Bound;
112  string *Tag_to_Marker;
121  unsigned long *nVertex;
122  unsigned short nCommLevel;
123  vector<unsigned long> PeriodicPoint[MAX_NUMBER_PERIODIC][2];
125  vector<unsigned long> PeriodicElem[MAX_NUMBER_PERIODIC];
128  short *Marker_All_SendRecv;
129 
130  /*--- Create vectors and distribute the values among the different planes queues ---*/
131  vector<vector<su2double> > Xcoord_plane;
132  vector<vector<su2double> > Ycoord_plane;
133  vector<vector<su2double> > Zcoord_plane;
134  vector<vector<su2double> > FaceArea_plane;
135  vector<vector<unsigned long> > Plane_points;
137  vector<su2double> XCoordList;
139  unsigned long *nNewElem_Bound;
142  /*--- Partitioning-specific variables ---*/
143  map<unsigned long,unsigned long> Global_to_Local_Elem;
144  unsigned long xadj_size;
145  unsigned long adjacency_size;
146  unsigned long *starting_node;
147  unsigned long *ending_node;
148  unsigned long *npoint_procs;
149 #ifdef HAVE_MPI
150 #ifdef HAVE_PARMETIS
151  idx_t * adjacency;
152  idx_t * xadj;
153 #endif
154 #endif
155 
159  CGeometry(void);
160 
164  virtual ~CGeometry(void);
165 
170  unsigned short GetnDim(void);
171 
176  unsigned short GetnZone(void);
177 
182  unsigned long GetnPoint(void);
183 
188  unsigned long GetnPointDomain(void);
189 
194  unsigned long GetnLine(void);
195 
200  unsigned long GetnElem(void);
201 
206  unsigned long GetnEdge(void);
207 
212  unsigned short GetnMarker(void);
213 
219  unsigned long GetnVertex(unsigned short val_marker);
220 
227  long FindEdge(unsigned long first_point, unsigned long second_point);
228 
235  bool CheckEdge(unsigned long first_point, unsigned long second_point);
236 
245  su2double Point2Plane_Distance(su2double *Coord, su2double *iCoord, su2double *jCoord, su2double *kCoord);
246 
250  void TestGeometry(void);
251 
256  void SetnMarker(unsigned short val_nmarker);
257 
262  void SetnDim(unsigned short val_nDim);
263 
269  string GetMarker_Tag(unsigned short val_marker);
270 
276  void SetMarker_Tag(unsigned short val_marker, string val_index);
277 
283  void SetnElem_Bound(unsigned short val_marker, unsigned long val_nelem_bound);
284 
289  void SetnPoint(unsigned long val_npoint);
290 
295  void SetnPointDomain(unsigned long val_npoint);
296 
301  void SetnElem(unsigned long val_nelem);
302 
307  unsigned long GetnElem_Bound(unsigned short val_marker);
308 
312  unsigned long GetMax_GlobalPoint(void);
313 
321  virtual bool FindFace(unsigned long first_elem, unsigned long second_elem, unsigned short &face_first_elem,
322  unsigned short &face_second_elem);
323 
328  virtual void ComputeWall_Distance(CConfig *config);
329 
334  virtual void SetPositive_ZArea(CConfig *config);
335 
339  virtual void SetPoint_Connectivity(void);
340 
345  virtual void SetRCM_Ordering(CConfig *config);
346 
350  virtual void SetElement_Connectivity(void);
351 
355  void SetEdges(void);
356 
360  void SetFaces(void);
361 
365  virtual void SetBoundVolume(void);
366 
371  virtual void SetVertex(CConfig *config);
372 
376  virtual void SetVertex(void);
377 
381  virtual void SetCoord_CG(void);
382 
388  virtual void SetControlVolume(CConfig *config, unsigned short action);
389 
395  virtual void VisualizeControlVolume(CConfig *config, unsigned short action);
396 
401  virtual void MatchNearField(CConfig *config);
402 
407  virtual void MatchActuator_Disk(CConfig *config);
408 
413  virtual void MatchInterface(CConfig *config);
414 
421  virtual void MatchZone(CConfig *config, CGeometry *geometry_donor, CConfig *config_donor,
422  unsigned short val_iZone, unsigned short val_nZone);
423 
429  virtual void SetBoundControlVolume(CConfig *config, unsigned short action);
430 
435  virtual void SetTecPlot(char config_filename[MAX_STRING_SIZE], bool new_file);
436 
443  virtual void SetBoundTecPlot(char mesh_filename[MAX_STRING_SIZE], bool new_file, CConfig *config);
444 
451  virtual void SetBoundSTL(char mesh_filename[MAX_STRING_SIZE], bool new_file, CConfig *config);
452 
453 
458  virtual void Check_IntElem_Orientation(CConfig *config);
459 
464  virtual void Check_BoundElem_Orientation(CConfig *config);
465 
470  virtual void SetColorGrid(CConfig *config);
471 
476  virtual void SetColorGrid_Parallel(CConfig *config);
477 
482  virtual void DivideConnectivity(CConfig *config, unsigned short Elem_Type);
483 
488  virtual void SetPeriodicBoundary(CConfig *config);
489 
496  virtual void SetSendReceive(CConfig *config);
497 
504  virtual void SetBoundaries(CConfig *config);
505 
510  virtual void SetCoord(CGeometry *geometry);
511 
518  virtual void SetCoord_Smoothing(unsigned short val_nSmooth, su2double val_smooth_coeff, CConfig *config);
519 
524  virtual void SetPoint_Connectivity(CGeometry *geometry);
525 
531  virtual void SetVertex(CGeometry *geometry, CConfig *config);
532 
539  virtual void SetControlVolume(CConfig *config, CGeometry *geometry, unsigned short action);
540 
547  virtual void SetBoundControlVolume(CConfig *config, CGeometry *geometry, unsigned short action);
548 
554  virtual void SetMeshFile(CConfig *config, string val_mesh_out_filename);
555 
561  virtual void SetMeshFile(CGeometry *geometry, CConfig *config, string val_mesh_out_filename);
562 
567  virtual void SetBoundSensitivity(CConfig *config);
568 
574  virtual void SetPeriodicBoundary(CGeometry *geometry, CConfig *config);
575 
581  virtual void SetRotationalVelocity(CConfig *config, unsigned short val_iZone);
582 
587  virtual void SetTranslationalVelocity(CConfig *config);
588 
594  virtual void SetGridVelocity(CConfig *config, unsigned long iter);
595 
600  virtual void Set_MPI_Coord(CConfig *config);
601 
606  virtual void Set_MPI_GridVel(CConfig *config);
607 
612  virtual void Set_MPI_OldCoord(CConfig *config);
613 
619  virtual void SetRestricted_GridVelocity(CGeometry *fine_mesh, CConfig *config);
620 
625  void ComputeSurf_Curvature(CConfig *config);
626 
631  void ComputeAirfoil_Section(su2double *Plane_P0, su2double *Plane_Normal,
632  su2double MinXCoord, su2double MaxXCoord, su2double *FlowVariable,
633  vector<su2double> &Xcoord_Airfoil, vector<su2double> &Ycoord_Airfoil,
634  vector<su2double> &Zcoord_Airfoil, vector<su2double> &Variable_Airfoil,
635  bool original_surface, CConfig *config);
636 
640  virtual su2double Compute_MaxThickness(su2double *Plane_P0, su2double *Plane_Normal, unsigned short iSection, CConfig *config, vector<su2double> &Xcoord_Airfoil, vector<su2double> &Ycoord_Airfoil, vector<su2double> &Zcoord_Airfoil);
641 
645  virtual su2double Compute_Twist(su2double *Plane_P0, su2double *Plane_Normal, unsigned short iSection, vector<su2double> &Xcoord_Airfoil, vector<su2double> &Ycoord_Airfoil, vector<su2double> &Zcoord_Airfoil);
646 
650  virtual su2double Compute_Chord(su2double *Plane_P0, su2double *Plane_Normal, unsigned short iSection, vector<su2double> &Xcoord_Airfoil, vector<su2double> &Ycoord_Airfoil, vector<su2double> &Zcoord_Airfoil);
651 
655  virtual su2double Compute_Thickness(su2double *Plane_P0, su2double *Plane_Normal, unsigned short iSection, su2double Location, CConfig *config, vector<su2double> &Xcoord_Airfoil, vector<su2double> &Ycoord_Airfoil, vector<su2double> &Zcoord_Airfoil);
656 
660  virtual su2double Compute_Area(su2double *Plane_P0, su2double *Plane_Normal, unsigned short iSection, CConfig *config, vector<su2double> &Xcoord_Airfoil, vector<su2double> &Ycoord_Airfoil, vector<su2double> &Zcoord_Airfoil);
661 
665  virtual void Compute_LeadingTrailing(su2double *LeadingEdge, su2double *TrailingEdge, su2double *Plane_P0, su2double *Plane_Normal, unsigned short iSection, vector<su2double>
666  &Xcoord_Airfoil, vector<su2double> &Ycoord_Airfoil, vector<su2double> &Zcoord_Airfoil);
667 
671  virtual su2double Compute_Dihedral(su2double *LeadingEdge_im1, su2double *TrailingEdge_im1,
672  su2double *LeadingEdge_i, su2double *TrailingEdge_i);
673 
677  virtual su2double Compute_Curvature(su2double *LeadingEdge_im1, su2double *TrailingEdge_im1,
678  su2double *LeadingEdge_i, su2double *TrailingEdge_i,
679  su2double *LeadingEdge_ip1, su2double *TrailingEdge_ip1);
680 
684  virtual void Compute_Wing(CConfig *config, bool original_surface,
685  su2double &Wing_Volume, su2double &Wing_MinMaxThickness, su2double &Wing_MaxChord, su2double &Wing_MinToC,
686  su2double &Wing_MaxTwist, su2double &Wing_MaxCurvature, su2double &Wing_MaxDihedral);
687 
692  virtual void FindNormal_Neighbor(CConfig *config);
693 
699  virtual long GetGlobal_to_Local_Point(long val_ipoint);
700 
706  virtual unsigned short GetGlobal_to_Local_Marker(unsigned short val_imarker);
707 
712  virtual unsigned long GetGlobal_nPoint();
713 
718  virtual unsigned long GetGlobal_nPointDomain();
719 
724  virtual unsigned long GetGlobal_nElem();
725 
730  virtual unsigned long GetGlobal_nElemDomain();
731 
736  virtual unsigned long GetGlobal_nElemLine();
737 
742  virtual unsigned long GetGlobal_nElemTria();
743 
748  virtual unsigned long GetGlobal_nElemQuad();
749 
754  virtual unsigned long GetGlobal_nElemTetr();
755 
760  virtual unsigned long GetGlobal_nElemHexa();
761 
766  virtual unsigned long GetGlobal_nElemPris();
767 
772  virtual unsigned long GetGlobal_nElemPyra();
773 
778  virtual unsigned long GetnElemLine();
779 
784  virtual unsigned long GetnElemTria();
785 
790  virtual unsigned long GetnElemQuad();
791 
796  virtual unsigned long GetnElemTetr();
797 
802  virtual unsigned long GetnElemHexa();
803 
808  virtual unsigned long GetnElemPris();
809 
814  virtual unsigned long GetnElemPyra();
815 
819  virtual void SetGeometryPlanes(CConfig *config);
820 
824  virtual vector<su2double> GetGeometryPlanes();
825 
829  virtual vector<vector<su2double> > GetXCoord();
830 
834  virtual vector<vector<su2double> > GetYCoord();
835 
839  virtual vector<vector<su2double> > GetZCoord();
840 
844  virtual vector<vector<unsigned long> > GetPlanarPoints();
845 
855  void SetSpline(vector<su2double> &x, vector<su2double> &y, unsigned long n, su2double yp1, su2double ypn, vector<su2double> &y2);
856 
864  su2double GetSpline(vector<su2double> &xa, vector<su2double> &ya, vector<su2double> &y2a, unsigned long n, su2double x);
865 
875  bool SegmentIntersectsPlane(su2double *Segment_P0, su2double *Segment_P1, su2double Variable_P0, su2double Variable_P1,
876  su2double *Plane_P0, su2double *Plane_Normal, su2double *Intersection, su2double &Variable_Interp);
877 
881  bool RayIntersectsTriangle(su2double orig[3], su2double dir[3],
882  su2double vert0[3], su2double vert1[3], su2double vert2[3],
883  su2double *intersect);
884 
888  bool SegmentIntersectsTriangle(su2double point0[3], su2double point1[3],
889  su2double vert0[3], su2double vert1[3], su2double vert2[3]);
890 
894  bool SegmentIntersectsLine(su2double point0[2], su2double point1[2], su2double vert0[2], su2double vert1[2]);
895 
900  void RegisterCoordinates(CConfig *config);
901 
907  void UpdateGeometry(CGeometry **geometry_container, CConfig *config);
908 
913  virtual void SetSensitivity(CConfig *config);
914 
920  virtual su2double GetSensitivity(unsigned long iPoint, unsigned short iDim);
921 
928  virtual void SetSensitivity(unsigned long iPoint, unsigned short iDim, su2double val);
929 
934  virtual void Check_Periodicity(CConfig *config);
935 
936 };
937 
945 class CPhysicalGeometry : public CGeometry {
946 
947  map<long,long> Global_to_Local_Point;
948  long *Local_to_Global_Point;
949  unsigned short *Local_to_Global_Marker;
950  unsigned short *Global_to_Local_Marker;
951  unsigned long *adj_counter;
952  unsigned long **adjacent_elem;
953  su2double* Sensitivity;
955 public:
956 
960  CPhysicalGeometry(void);
961 
972  CPhysicalGeometry(CConfig *config, unsigned short val_iZone, unsigned short val_nZone);
973 
982  CPhysicalGeometry(CGeometry *geometry, CConfig *config);
983 
987  ~CPhysicalGeometry(void);
988 
995  void SetSendReceive(CConfig *config);
996 
1003  void SetBoundaries(CConfig *config);
1004 
1010  long GetGlobal_to_Local_Point(long val_ipoint);
1011 
1017  unsigned short GetGlobal_to_Local_Marker(unsigned short val_imarker);
1018 
1028  void Read_SU2_Format_Parallel(CConfig *config, string val_mesh_filename, unsigned short val_iZone, unsigned short val_nZone);
1029 
1030 
1040  void Read_CGNS_Format_Parallel(CConfig *config, string val_mesh_filename, unsigned short val_iZone, unsigned short val_nZone);
1041 
1050  bool FindFace(unsigned long first_elem, unsigned long second_elem, unsigned short &face_first_elem,
1051  unsigned short &face_second_elem);
1052 
1057  void ComputeWall_Distance(CConfig *config);
1058 
1063  void SetPositive_ZArea(CConfig *config);
1064 
1068  void SetPoint_Connectivity(void);
1069 
1074  void SetRCM_Ordering(CConfig *config);
1075 
1080  void SetPoint_Connectivity(CGeometry *geometry);
1081 
1085  void SetElement_Connectivity(void);
1086 
1090  void SetBoundVolume(void);
1091 
1096  void SetVertex(CConfig *config);
1097 
1101  void SetCoord_CG(void);
1102 
1108  void SetControlVolume(CConfig *config, unsigned short action);
1109 
1115  void VisualizeControlVolume(CConfig *config, unsigned short action);
1116 
1121  void MatchNearField(CConfig *config);
1122 
1127  void MatchActuator_Disk(CConfig *config);
1128 
1133  void MatchInterface(CConfig *config);
1134 
1141  void MatchZone(CConfig *config, CGeometry *geometry_donor, CConfig *config_donor,
1142  unsigned short val_iZone, unsigned short val_nZone);
1143 
1149  void SetBoundControlVolume(CConfig *config, unsigned short action);
1150 
1157  void SetTecPlot(char config_filename[MAX_STRING_SIZE], bool new_file);
1158 
1166  void SetBoundTecPlot(char mesh_filename[MAX_STRING_SIZE], bool new_file, CConfig *config);
1167 
1175  void SetBoundSTL(char mesh_filename[MAX_STRING_SIZE], bool new_file, CConfig *config) ;
1176 
1181  void Check_IntElem_Orientation(CConfig *config);
1182 
1187  void Check_BoundElem_Orientation(CConfig *config);
1188 
1193  void SetColorGrid(CConfig *config);
1194 
1199  void SetColorGrid_Parallel(CConfig *config);
1200 
1206  void SetRotationalVelocity(CConfig *config, unsigned short val_iZone);
1207 
1212  void SetTranslationalVelocity(CConfig *config);
1213 
1218  void SetGridVelocity(CConfig *config, unsigned long iter);
1219 
1224  void Set_MPI_Coord(CConfig *config);
1225 
1230  void Set_MPI_GridVel(CConfig *config);
1231 
1236  void Set_MPI_OldCoord(CConfig *config);
1237 
1242  void SetPeriodicBoundary(CConfig *config);
1243 
1250  void SetCoord_Smoothing(unsigned short val_nSmooth, su2double val_smooth_coeff, CConfig *config);
1251 
1257  void SetMeshFile(CConfig *config, string val_mesh_out_filename);
1258 
1263  void GetQualityStatistics(su2double *statistics);
1264 
1269  void ComputeSurf_Curvature(CConfig *config);
1270 
1275  void FindNormal_Neighbor(CConfig *config);
1276 
1281  unsigned long GetGlobal_nPoint();
1282 
1287  unsigned long GetGlobal_nPointDomain();
1288 
1293  unsigned long GetGlobal_nElem();
1294 
1299  unsigned long GetGlobal_nElemDomain();
1300 
1305  unsigned long GetGlobal_nElemLine();
1306 
1311  unsigned long GetGlobal_nElemTria();
1312 
1317  unsigned long GetGlobal_nElemQuad();
1318 
1323  unsigned long GetGlobal_nElemTetr();
1324 
1329  unsigned long GetGlobal_nElemHexa();
1330 
1335  unsigned long GetGlobal_nElemPris();
1336 
1341  unsigned long GetGlobal_nElemPyra();
1342 
1347  unsigned long GetnElemLine();
1348 
1353  unsigned long GetnElemTria();
1354 
1359  unsigned long GetnElemQuad();
1360 
1365  unsigned long GetnElemTetr();
1366 
1371  unsigned long GetnElemHexa();
1372 
1377  unsigned long GetnElemPris();
1378 
1383  unsigned long GetnElemPyra();
1384 
1388  void SetGeometryPlanes(CConfig *config);
1389 
1393  vector<su2double> GetGeometryPlanes();
1394 
1398  vector<vector<su2double> > GetXCoord();
1399 
1403  vector<vector<su2double> > GetYCoord();
1404 
1408  vector<vector<su2double> > GetZCoord();
1409 
1413  vector<vector<unsigned long> > GetPlanarPoints();
1414 
1419  void SetBoundSensitivity(CConfig *config);
1420 
1425  su2double Compute_MaxThickness(su2double *Plane_P0, su2double *Plane_Normal, unsigned short iSection, CConfig *config, vector<su2double> &Xcoord_Airfoil, vector<su2double> &Ycoord_Airfoil, vector<su2double> &Zcoord_Airfoil);
1426 
1431  su2double Compute_Twist(su2double *Plane_P0, su2double *Plane_Normal, unsigned short iSection, vector<su2double> &Xcoord_Airfoil, vector<su2double> &Ycoord_Airfoil, vector<su2double> &Zcoord_Airfoil);
1432 
1436  void Compute_LeadingTrailing(su2double *LeadingEdge, su2double *TrailingEdge, su2double *Plane_P0, su2double *Plane_Normal, unsigned short iSection, vector<su2double> &Xcoord_Airfoil,
1437  vector<su2double> &Ycoord_Airfoil, vector<su2double> &Zcoord_Airfoil);
1438 
1443  su2double Compute_Chord(su2double *Plane_P0, su2double *Plane_Normal, unsigned short iSection, vector<su2double> &Xcoord_Airfoil, vector<su2double> &Ycoord_Airfoil, vector<su2double> &Zcoord_Airfoil);
1444 
1448  su2double Compute_Thickness(su2double *Plane_P0, su2double *Plane_Normal, unsigned short iSection, su2double Location, CConfig *config, vector<su2double> &Xcoord_Airfoil, vector<su2double> &Ycoord_Airfoil, vector<su2double> &Zcoord_Airfoil);
1449 
1454  su2double Compute_Area(su2double *Plane_P0, su2double *Plane_Normal, unsigned short iSection, CConfig *config, vector<su2double> &Xcoord_Airfoil, vector<su2double> &Ycoord_Airfoil, vector<su2double> &Zcoord_Airfoil);
1455 
1460  su2double Compute_Dihedral(su2double *LeadingEdge_im1, su2double *TrailingEdge_im1,
1461  su2double *LeadingEdge_i, su2double *TrailingEdge_i);
1462 
1466  su2double Compute_Curvature(su2double *LeadingEdge_im1, su2double *TrailingEdge_im1,
1467  su2double *LeadingEdge_i, su2double *TrailingEdge_i,
1468  su2double *LeadingEdge_ip1, su2double *TrailingEdge_ip1);
1469 
1473  void Compute_Wing(CConfig *config, bool original_surface,
1474  su2double &Wing_Volume, su2double &Wing_MinMaxThickness, su2double &Wing_MaxChord, su2double &Wing_MinToC,
1475  su2double &Wing_MaxTwist, su2double &Wing_MaxCurvature, su2double &Wing_MaxDihedral);
1476 
1481  void SetSensitivity(CConfig *config);
1482 
1489  su2double GetSensitivity(unsigned long iPoint, unsigned short iDim);
1490 
1497  void SetSensitivity(unsigned long iPoint, unsigned short iDim, su2double val);
1498 
1503  void Check_Periodicity(CConfig *config);
1504 
1505 };
1506 
1515 
1516 public:
1517 
1525  CMultiGridGeometry(CGeometry ***geometry, CConfig **config_container, unsigned short iMesh, unsigned short iZone);
1526 
1530  ~CMultiGridGeometry(void);
1531 
1540  bool SetBoundAgglomeration(unsigned long CVPoint, short marker_seed, CGeometry *fine_grid, CConfig *config);
1541 
1548  bool GeometricalCheck(unsigned long iPoint, CGeometry *fine_grid, CConfig *config);
1549 
1557  void SetSuitableNeighbors(vector<unsigned long> *Suitable_Indirect_Neighbors, unsigned long iPoint,
1558  unsigned long Index_CoarseCV, CGeometry *fine_grid);
1559 
1565  void SetVertex(CGeometry *geometry, CConfig *config);
1566 
1571  void SetPoint_Connectivity(CGeometry *geometry);
1572 
1576  void SetPoint_Connectivity(void);
1577 
1584  void SetControlVolume(CConfig *config, CGeometry *geometry, unsigned short action);
1585 
1590  void MatchNearField(CConfig *config);
1591 
1596  void MatchActuator_Disk(CConfig *config);
1597 
1602  void MatchInterface(CConfig *config);
1603 
1610  void SetBoundControlVolume(CConfig *config, CGeometry *geometry, unsigned short action);
1611 
1616  void SetCoord(CGeometry *geometry);
1617 
1623  void SetRotationalVelocity(CConfig *config, unsigned short val_iZone);
1624 
1629  void SetTranslationalVelocity(CConfig *config);
1630 
1636  void SetGridVelocity(CConfig *config, unsigned long iter);
1637 
1644  void SetRestricted_GridVelocity(CGeometry *fine_mesh, CConfig *config);
1645 
1650  void FindNormal_Neighbor(CConfig *config);
1651 
1655  void SetGeometryPlanes(CConfig *config);
1656 
1660  vector<su2double> GetGeometryPlanes();
1661 
1665  vector<vector<su2double> > GetXCoord();
1666 
1670  vector<vector<su2double> > GetYCoord();
1671 
1675  vector<vector<su2double> > GetZCoord();
1676 
1680  vector<vector<unsigned long> > GetPlanarPoints();
1681 
1682 };
1683 
1691  CPrimalGrid*** newBoundPer;
1692  unsigned long *nNewElem_BoundPer;
1694 public:
1695 
1701  CPeriodicGeometry(CGeometry *geometry, CConfig *config);
1702 
1706  ~CPeriodicGeometry(void);
1707 
1713  void SetPeriodicBoundary(CGeometry *geometry, CConfig *config);
1714 
1720  void SetTecPlot(char config_filename[MAX_STRING_SIZE], bool new_file);
1721 
1727  void SetMeshFile(CGeometry *geometry, CConfig *config, string val_mesh_out_filename);
1728 };
1729 
1738  vector<vector<unsigned long> > QueueCV;
1739  short *Priority;
1740  bool *RightCV;
1741  unsigned long nPoint;
1743 public:
1744 
1749  CMultiGridQueue(unsigned long val_npoint);
1750 
1754  ~CMultiGridQueue(void);
1755 
1761  void AddCV(unsigned long val_new_point, unsigned short val_number_neighbors);
1762 
1767  void RemoveCV(unsigned long val_remove_point);
1768 
1774  void MoveCV(unsigned long val_move_point, short val_number_neighbors);
1775 
1780  void IncrPriorityCV(unsigned long val_incr_point);
1781 
1786  void RedPriorityCV(unsigned long val_red_point);
1787 
1791  void VisualizeQueue(void);
1792 
1796  void VisualizePriority(void);
1797 
1802  long NextCV(void);
1803 
1808  bool EmptyQueue(void);
1809 
1814  unsigned long TotalCV(void);
1815 
1822  void Update(unsigned long val_update_point, CGeometry *fine_grid);
1823 
1824 };
1825 
1826 #include "geometry_structure.inl"
unsigned long * nElem_Bound
Number of elements of the boundary.
Definition: geometry_structure.hpp:111
CPrimalGrid ** elem
Element vector (primal grid information).
Definition: geometry_structure.hpp:115
CVertex *** vertex
Boundary Vertex vector (dual grid information).
Definition: geometry_structure.hpp:120
vector< vector< su2double > > Zcoord_plane
Vector containing z coordinates of new points appearing on a single plane.
Definition: geometry_structure.hpp:133
unsigned long * nVertex
Number of vertex for each marker.
Definition: geometry_structure.hpp:121
vector< vector< su2double > > Xcoord_plane
Vector containing x coordinates of new points appearing on a single plane.
Definition: geometry_structure.hpp:131
All the information about the definition of the physical problem. The subroutines and functions are i...
const unsigned int MAX_NUMBER_PERIODIC
Maximum number of periodic boundary conditions.
Definition: option_structure.hpp:116
Parent class for defining the geometry of the problem (complete geometry, multigrid agglomerated geom...
Definition: geometry_structure.hpp:72
unsigned long nPointNode
Size of the node array allocated to hold CPoint objects.
Definition: geometry_structure.hpp:74
CPrimalGrid ** face
Face vector (primal grid information).
Definition: geometry_structure.hpp:116
Class for point definition (including control volume definition).
Definition: dual_grid_structure.hpp:140
Headers of the mpi interface for generalized datatypes. The subroutines and functions are in the mpi_...
Headers of the main subroutines for storing the primal grid structure. The subroutines and functions ...
Headers of the main subroutines for doing the complete dual grid structure. The subroutines and funct...
vector< su2double > XCoordList
Vector containing points appearing on a single plane.
Definition: geometry_structure.hpp:137
unsigned long * nNewElem_Bound
Number of new periodic elements of the boundary.
Definition: geometry_structure.hpp:139
const unsigned int MAX_STRING_SIZE
Maximum number of domains.
Definition: option_structure.hpp:117
unsigned short nZone
Number of zones in the problem.
Definition: geometry_structure.hpp:105
Class to define the numerical primal grid.
Definition: primal_grid_structure.hpp:54
unsigned short GetnDim(string val_mesh_filename, unsigned short val_format)
Gets the number of dimensions in the mesh file.
vector< vector< unsigned long > > Plane_points
Vector containing points appearing on a single plane.
Definition: geometry_structure.hpp:135
Class for vertex definition (equivalent to edges, but for the boundaries).
Definition: dual_grid_structure.hpp:884
In-Line subroutines of the geometry_structure.hpp file.
Class for defining a periodic boundary condition.
Definition: geometry_structure.hpp:1690
CPrimalGrid *** bound
Boundary vector (primal grid information).
Definition: geometry_structure.hpp:117
CPrimalGrid *** newBound
Boundary vector for new periodic elements (primal grid information).
Definition: geometry_structure.hpp:138
This file contains function prototypes and constant definitions for METIS.
Class for defining an edge.
Definition: dual_grid_structure.hpp:747
Class for reading a defining the primal grid which is read from the grid file in .su2 format.
Definition: geometry_structure.hpp:945
Class for a multigrid queue system.
Definition: geometry_structure.hpp:1737
CPoint ** node
Node vector (dual grid information).
Definition: geometry_structure.hpp:118
unsigned long Max_GlobalPoint
Greater global point in the domain local structure.
Definition: geometry_structure.hpp:108
Class for defining the multigrid geometry, the main delicated part is the agglomeration stage...
Definition: geometry_structure.hpp:1514
vector< vector< su2double > > Ycoord_plane
Vector containing y coordinates of new points appearing on a single plane.
Definition: geometry_structure.hpp:132
unsigned short GetnZone(string val_mesh_filename, unsigned short val_format, CConfig *config)
Gets the number of zones in the mesh file.
string * Tag_to_Marker
If you know the index of the boundary (depend of the grid definition), it gives you the maker (where ...
Definition: geometry_structure.hpp:112
unsigned short nCommLevel
Number of non-blocking communication levels.
Definition: geometry_structure.hpp:122
Main class for defining the problem; basically this class reads the configuration file...
Definition: config_structure.hpp:68
CEdge ** edge
Edge vector (dual grid information).
Definition: geometry_structure.hpp:119
vector< vector< su2double > > FaceArea_plane
Vector containing area/volume associated with new points appearing on a single plane.
Definition: geometry_structure.hpp:134