Documentation 6b54b78464
Loading...
Searching...
No Matches
CPhysicalGeometry.hpp
Go to the documentation of this file.
1/*!
2 * \file CPhysicalGeometry.hpp
3 * \brief Headers of the physical geometry class used to read meshes from file.
4 * \author F. Palacios, T. Economon
5 * \version 8.5.0 "Harrier"
6 *
7 * SU2 Project Website: https://su2code.github.io
8 *
9 * The SU2 Project is maintained by the SU2 Foundation
10 * (http://su2foundation.org)
11 *
12 * Copyright 2012-2026, SU2 Contributors (cf. AUTHORS.md)
13 *
14 * SU2 is free software; you can redistribute it and/or
15 * modify it under the terms of the GNU Lesser General Public
16 * License as published by the Free Software Foundation; either
17 * version 2.1 of the License, or (at your option) any later version.
18 *
19 * SU2 is distributed in the hope that it will be useful,
20 * but WITHOUT ANY WARRANTY; without even the implied warranty of
21 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
22 * Lesser General Public License for more details.
23 *
24 * You should have received a copy of the GNU Lesser General Public
25 * License along with SU2. If not, see <http://www.gnu.org/licenses/>.
26 */
27
28#pragma once
29
30#include "CGeometry.hpp"
32#include "../containers/C2DContainer.hpp"
33#include "../toolboxes/classes_multiple_integers.hpp"
34#include "../toolboxes/fem/CFaceOfElement.hpp"
35
36/*!
37 * \class CPhysicalGeometry
38 * \brief Class for reading a defining the primal grid which is read from the grid file in .su2 or .cgns format.
39 * \author F. Palacios, T. Economon, J. Alonso
40 */
41class CPhysicalGeometry final : public CGeometry {
42 unordered_map<unsigned long, unsigned long>
43 Global_to_Local_Point; /*!< \brief Global-local indexation for the points. */
44 long* Local_to_Global_Point{nullptr}; /*!< \brief Local-global indexation for the points. */
45 unsigned long* adj_counter{nullptr}; /*!< \brief Adjacency counter. */
46 unsigned long** adjacent_elem{nullptr}; /*!< \brief Adjacency element list. */
47 su2activematrix Sensitivity; /*!< \brief Matrix holding the sensitivities at each point. */
48
49 vector<vector<unsigned long> > Neighbors;
50 unordered_map<unsigned long, unsigned long> Color_List;
51 vector<string> Marker_Tags;
52 unsigned long nLocal_Point{0}, nLocal_PointDomain{0}, nLocal_PointGhost{0}, nLocal_PointPeriodic{0}, nLocal_Elem{0},
53 nLocal_Bound_Elem{0}, nGlobal_Elem{0}, nGlobal_Bound_Elem{0}, nLocal_Line{0}, nLocal_BoundTria{0},
54 nLocal_BoundQuad{0}, nLinear_Line{0}, nLinear_BoundTria{0}, nLinear_BoundQuad{0}, nLocal_Tria{0}, nLocal_Quad{0},
55 nLocal_Tetr{0}, nLocal_Hexa{0}, nLocal_Pris{0}, nLocal_Pyra{0};
56 unsigned long nMarker_Global{0};
57 su2double* Local_Coords{nullptr};
58 unsigned long* Local_Points{nullptr};
59 unsigned long* Local_Colors{nullptr};
60 unsigned long* Conn_Line{nullptr};
61 unsigned long* Conn_BoundTria{nullptr};
62 unsigned long* Conn_BoundQuad{nullptr};
63 unsigned long* Conn_Line_Linear{nullptr};
64 unsigned long* Conn_BoundTria_Linear{nullptr};
65 unsigned long* Conn_BoundQuad_Linear{nullptr};
66 unsigned long* Conn_Tria{nullptr};
67 unsigned long* Conn_Quad{nullptr};
68 unsigned long* Conn_Tetr{nullptr};
69 unsigned long* Conn_Hexa{nullptr};
70 unsigned long* Conn_Pris{nullptr};
71 unsigned long* Conn_Pyra{nullptr};
72 unsigned long* ID_Line{nullptr};
73 unsigned long* ID_BoundTria{nullptr};
74 unsigned long* ID_BoundQuad{nullptr};
75 unsigned long* ID_Line_Linear{nullptr};
76 unsigned long* ID_BoundTria_Linear{nullptr};
77 unsigned long* ID_BoundQuad_Linear{nullptr};
78 unsigned long* ID_Tria{nullptr};
79 unsigned long* ID_Quad{nullptr};
80 unsigned long* ID_Tetr{nullptr};
81 unsigned long* ID_Hexa{nullptr};
82 unsigned long* ID_Pris{nullptr};
83 unsigned long* ID_Pyra{nullptr};
84 unsigned long* Elem_ID_Line{nullptr};
85 unsigned long* Elem_ID_BoundTria{nullptr};
86 unsigned long* Elem_ID_BoundQuad{nullptr};
87 unsigned long* Elem_ID_Line_Linear{nullptr};
88 unsigned long* Elem_ID_BoundTria_Linear{nullptr};
89 unsigned long* Elem_ID_BoundQuad_Linear{nullptr};
90
91 su2double Streamwise_Periodic_RefNode[MAXNDIM] = {
92 0}; /*!< \brief Coordinates of the reference node [m] on the receiving periodic marker, for recovered
93 pressure/temperature computation only.*/
94
95 public:
96 /*--- This is to suppress Woverloaded-virtual, omitting it has no negative impact. ---*/
101
102 /*!
103 * \brief Constructor of the class.
104 */
105 CPhysicalGeometry(void);
106
107 /*!
108 * \overload
109 * \brief Reads the geometry of the grid and adjust the boundary
110 * conditions with the configuration file.
111 * \param[in] config - Definition of the particular problem.
112 * \param[in] val_mesh_filename - Name of the file with the grid information.
113 * \param[in] val_format - Format of the file with the grid information.
114 * \param[in] val_iZone - Domain to be read from the grid file.
115 * \param[in] val_nZone - Total number of domains in the grid file.
116 */
117 CPhysicalGeometry(CConfig* config, unsigned short val_iZone, unsigned short val_nZone);
118
119 /*!
120 * \overload
121 * \brief Accepts a geometry container holding a linearly partitioned grid
122 * with coloring performed by ParMETIS, and this routine distributes
123 * the points and cells to all partitions based on the coloring.
124 * \param[in] geometry - Definition of the geometry container holding the initial linear partitions of the grid +
125 * coloring. \param[in] config - Definition of the particular problem.
126 */
127 CPhysicalGeometry(CGeometry* geometry, CConfig* config);
128
129 /*!
130 * \overload
131 * \brief Accepts a geometry container holding a linearly partitioned grid
132 * with coloring performed by ParMETIS, and this routine distributes
133 * the points and cells to all partitions based on the coloring.
134 * \param[in] geometry - Definition of the geometry container holding the initial linear partitions of the grid +
135 * coloring. \param[in] config - Definition of the particular problem.
136 */
137 CPhysicalGeometry(CGeometry* geometry, CConfig* config, bool val_flag);
138
139 /*!
140 * \brief Destructor of the class.
141 */
142 ~CPhysicalGeometry(void) override;
143
144 /*!
145 * \brief Distributes the coloring from ParMETIS so that each rank has complete information about the local grid
146 * points. \param[in] geometry - Definition of the geometry container holding the initial linear partitions of the
147 * grid + coloring. \param[in] config - Definition of the particular problem.
148 */
149 void DistributeColoring(const CConfig* config, CGeometry* geometry);
150
151 /*!
152 * \brief Distribute the grid points, including ghost points, across all ranks based on a ParMETIS coloring.
153 * \param[in] config - Definition of the particular problem.
154 * \param[in] geometry - Geometrical definition of the problem.
155 */
156 void DistributePoints(const CConfig* config, CGeometry* geometry);
157
158 /*!
159 * \brief Distribute the connectivity for a single volume element type across all ranks based on a ParMETIS coloring.
160 * \param[in] config - Definition of the particular problem.
161 * \param[in] geometry - Geometrical definition of the problem.
162 * \param[in] Elem_Type - VTK index of the element type being distributed.
163 */
164 void DistributeVolumeConnectivity(const CConfig* config, CGeometry* geometry, unsigned short Elem_Type);
165
166 /*!
167 * \brief Distribute the connectivity for a single surface element type in all markers across all ranks based on a
168 * ParMETIS coloring. \param[in] config - Definition of the particular problem. \param[in] geometry - Geometrical
169 * definition of the problem. \param[in] Elem_Type - VTK index of the element type being distributed.
170 */
171 void DistributeSurfaceConnectivity(CConfig* config, CGeometry* geometry, unsigned short Elem_Type);
172
173 /*!
174 * \brief Broadcast the marker tags for all boundaries from the master rank to all other ranks.
175 * \param[in] config - Definition of the particular problem.
176 * \param[in] geometry - Geometrical definition of the problem.
177 */
178 void DistributeMarkerTags(CConfig* config, CGeometry* geometry);
179
180 /*!
181 * \brief Partition the marker connectivity held on the master rank according to a linear partitioning.
182 * \param[in] config - Definition of the particular problem.
183 * \param[in] geometry - Geometrical definition of the problem.
184 * \param[in] Elem_Type - VTK index of the element type being distributed.
185 */
186 void PartitionSurfaceConnectivity(CConfig* config, CGeometry* geometry, unsigned short Elem_Type);
187
188 /*!
189 * \brief Load the local grid points after partitioning (owned and ghost) into the geometry class objects.
190 * \param[in] config - Definition of the particular problem.
191 * \param[in] geometry - Geometrical definition of the problem.
192 */
193 void LoadPoints(CConfig* config, CGeometry* geometry);
194
195 /*!
196 * \brief Load the local volume elements after partitioning (owned and ghost) into the geometry class objects.
197 * \param[in] config - Definition of the particular problem.
198 * \param[in] geometry - Geometrical definition of the problem.
199 */
200 void LoadVolumeElements(CConfig* config, CGeometry* geometry);
201
202 /*!
203 * \brief Load the local surface elements after partitioning (owned and ghost) into the geometry class objects.
204 * \param[in] config - Definition of the particular problem.
205 * \param[in] geometry - Geometrical definition of the problem.
206 */
207 void LoadSurfaceElements(CConfig* config, CGeometry* geometry);
208
209 /*!
210 * \brief Routine to launch non-blocking sends and recvs amongst all processors.
211 * \param[in] bufSend - Buffer of data to be sent.
212 * \param[in] nElemSend - Array containing the number of elements to send to other processors in cumulative storage
213 * format.
214 * \param[in] sendReq - Array of MPI send requests.
215 * \param[in] bufRecv - Buffer of data to be received.
216 * \param[in] nElemSend - Array containing the number of elements to receive from other processors in cumulative
217 * storage format.
218 * \param[in] sendReq - Array of MPI recv requests.
219 * \param[in] countPerElem - Pieces of data per element communicated.
220 */
221 void InitiateCommsAll(void* bufSend, const int* nElemSend, SU2_MPI::Request* sendReq, void* bufRecv,
222 const int* nElemRecv, SU2_MPI::Request* recvReq, unsigned short countPerElem,
223 COMM_TYPE commType);
224
225 /*!
226 * \brief Routine to complete the set of non-blocking communications launched with InitiateComms() with MPI_Waitany().
227 * \param[in] nSends - Number of sends to be completed.
228 * \param[in] sendReq - Array of MPI send requests.
229 * \param[in] nRecvs - Number of receives to be completed.
230 * \param[in] sendReq - Array of MPI recv requests.
231 */
232 void CompleteCommsAll(int nSends, SU2_MPI::Request* sendReq, int nRecvs, SU2_MPI::Request* recvReq);
233
234 /*!
235 * \brief Routine to compute the initial linear partitioning offset counts and store in persistent data structures.
236 * \param[in] val_npoint_global - total number of grid points in the mesh.
237 */
238 void PrepareOffsets(unsigned long val_npoint_global);
239
240 /*!
241 * \brief Get the processor that owns the global numbering index based on the linear partitioning.
242 * \param[in] val_global_index - Global index for a point.
243 * \return Rank of the owner processor for the current point based on linear partitioning.
244 */
245 unsigned long GetLinearPartition(unsigned long val_global_index);
246
247 /*!
248 * \brief Routine to sort the adjacency for ParMETIS for graph partitioning in parallel.
249 * \param[in] config - Definition of the particular problem.
250 */
251 void SortAdjacency(const CConfig* config);
252
253 /*!
254 * \brief Set the send receive boundaries of the grid.
255 * \param[in] config - Definition of the particular problem.
256 */
257 void SetSendReceive(const CConfig* config) override;
258
259 /*!
260 * \brief Set the send receive boundaries of the grid.
261 * \param[in] config - Definition of the particular problem.
262 */
263 void SetBoundaries(CConfig* config) override;
264
265 /*!
266 * \brief Set the local index that correspond with the global numbering index.
267 */
268 void SetGlobal_to_Local_Point() override;
269
270 /*!
271 * \brief Get the local index that correspond with the global numbering index.
272 * \param[in] val_ipoint - Global point.
273 * \return Local index that correspond with the global index, -1 if not found on the current rank (process).
274 */
275 inline long GetGlobal_to_Local_Point(unsigned long val_ipoint) const override {
276 auto it = Global_to_Local_Point.find(val_ipoint);
277 if (it != Global_to_Local_Point.cend()) return it->second;
278 return -1;
279 }
280
281 /*!
282 * \brief Reads the geometry of the grid and adjust the boundary
283 * conditions with the configuration file in parallel (for parmetis).
284 * \param[in] config - Definition of the particular problem.
285 * \param[in] val_mesh_filename - Name of the file with the grid information.
286 * \param[in] val_format - Format of the file with the grid information.
287 * \param[in] val_iZone - Domain to be read from the grid file.
288 * \param[in] val_nZone - Total number of domains in the grid file.
289 */
290 void Read_Mesh(CConfig* config, const string& val_mesh_filename, unsigned short val_iZone, unsigned short val_nZone);
291
292 /*!
293 * \brief Routine to load the CGNS grid points from a single zone into the proper SU2 data structures.
294 * \param[in] config - definition of the particular problem.
295 * \param[in] mesh - mesh reader object containing the current zone data.
296 */
298
299 /*!
300 * \brief Routine to load the grid points from a single zone into the proper SU2 data structures for the FEM solver.
301 * \param[in] config - definition of the particular problem.
302 * \param[in] mesh - mesh reader object containing the current zone data.
303 */
305
306 /*!
307 * \brief Loads the interior volume elements from the mesh reader object into the primal element data structures.
308 * \param[in] config - definition of the particular problem.
309 * \param[in] mesh - mesh reader object containing the current zone data.
310 */
312
313 /*!
314 * \brief Loads the interior volume elements from the mesh reader object into the primal element data structures for
315 * the FEM solver. \param[in] config - definition of the particular problem. \param[in] mesh - mesh reader object
316 * containing the current zone data.
317 */
319
320 /*!
321 * \brief Loads the boundary elements (markers) from the mesh reader object into the primal element data structures.
322 * \param[in] config - definition of the particular problem.
323 * \param[in] mesh - mesh reader object containing the current zone data.
324 */
326
327 /*!
328 * \brief Loads the boundary elements (markers) from the mesh reader object into the primal element data structures
329 * for the FEM solver. \param[in] config - definition of the particular problem. \param[in] mesh - mesh reader
330 * object containing the current zone data.
331 */
333
334 /*!
335 * \brief Prepares the grid point adjacency based on a linearly partitioned mesh object needed by ParMETIS for graph
336 * partitioning in parallel. \param[in] config - Definition of the particular problem.
337 */
338 void PrepareAdjacency(const CConfig* config);
339
340 /*!
341 * \brief Find repeated nodes between two elements to identify the common face.
342 * \param[in] first_elem - Identification of the first element.
343 * \param[in] second_elem - Identification of the second element.
344 * \param[in] face_first_elem - Index of the common face for the first element.
345 * \param[in] face_second_elem - Index of the common face for the second element.
346 * \return It provides 0 or 1 depending if there is a common face or not.
347 */
348 bool FindFace(unsigned long first_elem, unsigned long second_elem, unsigned short& face_first_elem,
349 unsigned short& face_second_elem) override;
350
351 /*!
352 * \brief Compute surface area (positive z-direction) for force coefficient non-dimensionalization.
353 * \param[in] config - Definition of the particular problem.
354 */
355 void SetPositive_ZArea(CConfig* config) override;
356
357 /*!
358 * \brief Set points which surround a point.
359 */
360 void SetPoint_Connectivity() override;
361
362 /*!
363 * \brief Set a renumbering using a Reverse Cuthill-McKee Algorithm
364 * \param[in] config - Definition of the particular problem.
365 */
366 void SetRCM_Ordering(CConfig* config) override;
367
368 /*!
369 * \brief Set elements which surround an element.
370 */
371 void SetElement_Connectivity(void) override;
372
373 /*!
374 * \brief Set the volume element associated to each boundary element.
375 */
376 void SetBoundVolume(void) override;
377
378 /*!
379 * \brief Set boundary vertex.
380 * \param[in] config - Definition of the particular problem.
381 */
382 void SetVertex(const CConfig* config) override;
383
384 /*!
385 * \brief Set number of span wise level for turbomachinery computation.
386 * \param[in] config - Definition of the particular problem.
387 */
388 void ComputeNSpan(CConfig* config, unsigned short val_iZone, unsigned short marker_flag, bool allocate) override;
389
390 /*!
391 * \brief Set turbo boundary vertex.
392 * \param[in] config - Definition of the particular problem.
393 */
394 void SetTurboVertex(CConfig* config, unsigned short val_iZone, unsigned short marker_flag, bool allocate) override;
395
396 /*!
397 * \brief update turbo boundary vertex.
398 * \param[in] config - Definition of the particular problem.
399 */
400 void UpdateTurboVertex(CConfig* config, unsigned short val_iZone, unsigned short marker_flag) override;
401
402 /*!
403 * \brief Set turbo boundary vertex.
404 * \param[in] config - Definition of the particular problem.
405 */
406 void SetAvgTurboValue(CConfig* config, unsigned short val_iZone, unsigned short marker_flag, bool allocate) override;
407
408 /*!
409 * \brief Set turbo boundary vertex.
410 * \param[in] config - Definition of the particular problem.
411 */
412 void GatherInOutAverageValues(CConfig* config, bool allocate) override;
413
414 /*!
415 * \brief Store all the turboperformance in the solver in ZONE_0.
416 * \param[in] donor_geometry - Solution from the donor mesh.
417 * \param[in] target_geometry - Solution from the target mesh.
418 * \param[in] donorZone - counter of the donor solution
419 */
420 void SetAvgTurboGeoValues(const CConfig* donor_config, CGeometry* donor_geometry, unsigned short donorZone) override;
421
422 /*!
423 * \brief Set the edge structure of the control volume.
424 * \param[in] config - Definition of the particular problem.
425 * \param[in] action - Allocate or not the new elements.
426 */
427 void SetControlVolume(CConfig* config, unsigned short action) override;
428
429 /*!
430 * \brief Visualize the structure of the control volume(s).
431 * \param[in] config - Definition of the particular problem.
432 */
433 void VisualizeControlVolume(const CConfig* config) const override;
434
435 /*!
436 * \brief Mach the near field boundary condition.
437 * \param[in] config - Definition of the particular problem.
438 */
439 void MatchActuator_Disk(const CConfig* config) override;
440
441 /*!
442 * \brief Set boundary vertex structure of the control volume.
443 * \param[in] config - Definition of the particular problem.
444 * \param[in] action - Allocate or not the new elements.
445 */
446 void SetBoundControlVolume(const CConfig* config, unsigned short action) override;
447
448 /*!
449 * \brief Set the maximum cell-center to cell-center distance for CVs.
450 * \param[in] config - Definition of the particular problem.
451 */
452 void SetMaxLength(CConfig* config) override;
453
454 /*!
455 * \brief Set the Tecplot file.
456 * \param[in] config_filename - Name of the file where the Tecplot
457 * information is going to be stored.
458 * \param[in] new_file - Create a new file.
459 */
460 void SetTecPlot(char config_filename[MAX_STRING_SIZE], bool new_file) override;
461
462 /*!
463 * \brief Set the output file for boundaries in Tecplot
464 * \param[in] config - Definition of the particular problem.
465 * \param[in] mesh_filename - Name of the file where the Tecplot
466 * information is going to be stored.
467 * \param[in] new_file - Create a new file.
468 */
469 void SetBoundTecPlot(char mesh_filename[MAX_STRING_SIZE], bool new_file, CConfig* config) override;
470
471 /*!
472 * \brief Check the volume element orientation.
473 * \param[in] config - Definition of the particular problem.
474 */
475 void Check_IntElem_Orientation(const CConfig* config) override;
476
477 /*!
478 * \brief Check the volume element orientation.
479 * \param[in] config - Definition of the particular problem.
480 */
481 void Check_BoundElem_Orientation(const CConfig* config) override;
482
483 /*!
484 * \brief Set the domains for grid grid partitioning using ParMETIS.
485 * \param[in] config - Definition of the particular problem.
486 */
487 void SetColorGrid_Parallel(const CConfig* config) override;
488
489 /*!
490 * \brief Set the domains for FEM grid partitioning using ParMETIS.
491 * \param[in] config - Definition of the particular problem.
492 */
493 void SetColorFEMGrid_Parallel(CConfig* config) override;
494
495 /*!
496 * \brief Determine the donor elements for the boundary elements on viscous
497 wall boundaries when wall functions are used.
498 * \param[in] config - Definition of the particular problem.
499 */
501
502#ifdef HAVE_MPI
503#ifdef HAVE_PARMETIS
504 /*!
505 * \brief Function, which converts the input the format for ParMETIS and calls
506 * ParMETIS to determine the actual colors of the elements.
507 * \param[in] adjacency - Adjacency information of the elements.
508 * \param[in] vwgt - Weights of the vertices of the graph, which are the elements.
509 * \param[in] adjwgt - Weights of the adjacencies of the graph.
510 */
511 void DetermineFEMColorsViaParMETIS(vector<vector<unsigned long> >& adjacency, vector<passivedouble>& vwgt,
512 vector<vector<passivedouble> >& adjwgt);
513#endif
514#endif
515
516 /*!
517 * \brief Determine whether or not the Jacobians of the elements and faces
518 are constant and a length scale of the elements.
519 * \param[in] config - Definition of the particular problem.
520 */
522
523 /*!
524 * \brief Compute the weights of the FEM graph for ParMETIS.
525 * \param[in] config - Definition of the particular problem.
526 * \param[in] localFaces - Vector, which contains the element faces of this rank.
527 * \param[in] adjacency - Neighbors of the element.
528 * \param[in] mapExternalElemIDToTimeLevel - Map from the external element ID's to their time level
529 and number of DOFs.
530 * \param[out] vwgt - Weights of the vertices of the graph, i.e. the elements.
531 * \param[out] adjwgt - Weights of the edges of the graph.
532 */
533 void DetermineFEMGraphWeights(CConfig* config, const vector<CFaceOfElement>& localFaces,
534 const vector<vector<unsigned long> >& adjacency,
535 const map<unsigned long, CUnsignedShort2T>& mapExternalElemIDToTimeLevel,
536 vector<passivedouble>& vwgt, vector<vector<passivedouble> >& adjwgt);
537
538 /*!
539 * \brief Function, which determines the adjacency information of the graph
540 * representation of the grid.
541 * \param[in] localFaces - Vector containing the local matching faces of the FEM grid.
542 * \param[out] adjacency - Vector of vectors to store the adjacency.
543 */
544 void DetermineGraphAdjacency(const vector<CFaceOfElement>& localFaces, vector<vector<unsigned long> >& adjacency);
545
546 /*!
547 * \brief Function, which determines the matching faces of a FEM grid.
548 * \param[in] config - Definition of the particular problem.
549 * \param[out] localFaces - Vector containing the local faces of the FEM grid.
550 * On output the matching faces are stored as one face.
551 */
552 void DetermineMatchingFacesFEMGrid(const CConfig* config, vector<CFaceOfElement>& localFaces);
553
554 /*!
555 * \brief Function, which determines the non-matching faces of a FEM grid.
556 * \param[in] config - Definition of the particular problem.
557 * \param[in,out] localMatchingFaces - Vector containing the local faces of the FEM grid.
558 * On output the non-matching faces are removed.
559 */
560 void DetermineNonMatchingFacesFEMGrid(const CConfig* config, vector<CFaceOfElement>& localMatchingFaces);
561
562 /*!
563 * \brief Function, which determines the owner of the internal faces, i.e. which element
564 * is responsible for computing the fluxes through the face.
565 * \param[in] localFaces - Vector, which contains the element faces of this rank.
566 * \param[out] mapExternalElemIDToTimeLevel - Map from the external element ID's to their time level and number of
567 * DOFs.
568 */
569 void DetermineOwnershipInternalFaces(vector<CFaceOfElement>& localFaces,
570 map<unsigned long, CUnsignedShort2T>& mapExternalElemIDToTimeLevel);
571
572 /*!
573 * \brief Determine the neighboring information for periodic faces of a FEM grid.
574 * \param[in] config - Definition of the particular problem.
575 * \param[in,out] localFaces - Vector, which contains the element faces of this rank.
576 */
577 void DeterminePeriodicFacesFEMGrid(CConfig* config, vector<CFaceOfElement>& localFaces);
578
579 /*!
580 * \brief Determine the time level of the elements when time accurate local time stepping is employed.
581 * \param[in] config - Definition of the particular problem.
582 * \param[in] localFaces - Vector, which contains the element faces of this rank.
583 * \param[out] mapExternalElemIDToTimeLevel - Map from the external element ID's to their time level and number of
584 * DOFs.
585 */
586 void DetermineTimeLevelElements(CConfig* config, const vector<CFaceOfElement>& localFaces,
587 map<unsigned long, CUnsignedShort2T>& mapExternalElemIDToTimeLevel);
588
589 /*!
590 * \brief Function, which stores the information of the local matching faces in the
591 * data structures of the local elements.
592 * \param[in] localFaces - Vector, which contains the internal matching faces of this rank.
593 */
594 void StoreFaceInfoInLocalElements(const vector<CFaceOfElement>& localFaces);
595
596 /*!
597 * \brief Compute 3 grid quality metrics: orthogonality angle, dual cell aspect ratio, and dual cell volume ratio.
598 * \param[in] config - Definition of the particular problem.
599 */
600 void ComputeMeshQualityStatistics(const CConfig* config) override;
601
602 /*!
603 * \brief Find and store the closest, most normal, neighbor to a vertex.
604 * \param[in] config - Definition of the particular problem.
605 */
606 void FindNormal_Neighbor(const CConfig* config) override;
607
608 /*!
609 * \brief Read the sensitivity from an input file.
610 * \param[in] config - Definition of the particular problem.
611 */
612 void SetBoundSensitivity(CConfig* config) override;
613
614 /*!
615 * \brief Compute the maximum thickness of an airfoil.
616 * \return Maximum thickness at a particular section.
617 */
618 su2double Compute_MaxThickness(su2double* Plane_P0, su2double* Plane_Normal, CConfig* config,
619 vector<su2double>& Xcoord_Airfoil, vector<su2double>& Ycoord_Airfoil,
620 vector<su2double>& Zcoord_Airfoil) override;
621
622 /*!
623 * \brief Compute the twist of an airfoil.
624 * \return Twist at a particular section.
625 */
626 su2double Compute_Twist(su2double* Plane_P0, su2double* Plane_Normal, vector<su2double>& Xcoord_Airfoil,
627 vector<su2double>& Ycoord_Airfoil, vector<su2double>& Zcoord_Airfoil) override;
628
629 /*!
630 * \brief Compute the leading/trailing edge location of an airfoil.
631 */
632 void Compute_Wing_LeadingTrailing(su2double* LeadingEdge, su2double* TrailingEdge, su2double* Plane_P0,
633 su2double* Plane_Normal, vector<su2double>& Xcoord_Airfoil,
634 vector<su2double>& Ycoord_Airfoil, vector<su2double>& Zcoord_Airfoil) override;
635
636 /*!
637 * \brief Compute the leading/trailing edge location of a fuselage.
638 */
639 void Compute_Fuselage_LeadingTrailing(su2double* LeadingEdge, su2double* TrailingEdge, su2double* Plane_P0,
640 su2double* Plane_Normal, vector<su2double>& Xcoord_Airfoil,
641 vector<su2double>& Ycoord_Airfoil, vector<su2double>& Zcoord_Airfoil) override;
642
643 /*!
644 * \brief Compute the chord of an airfoil.
645 * \return Chord of an airfoil.
646 */
647 su2double Compute_Chord(su2double* Plane_P0, su2double* Plane_Normal, vector<su2double>& Xcoord_Airfoil,
648 vector<su2double>& Ycoord_Airfoil, vector<su2double>& Zcoord_Airfoil) override;
649
650 /*!
651 * \brief Compute the chord of an airfoil.
652 * \return Chord of an airfoil.
653 */
654 su2double Compute_Width(su2double* Plane_P0, su2double* Plane_Normal, vector<su2double>& Xcoord_Airfoil,
655 vector<su2double>& Ycoord_Airfoil, vector<su2double>& Zcoord_Airfoil) override;
656
657 /*!
658 * \brief Compute the chord of an airfoil.
659 * \return Chord of an airfoil.
660 */
661 su2double Compute_WaterLineWidth(su2double* Plane_P0, su2double* Plane_Normal, CConfig* config,
662 vector<su2double>& Xcoord_Airfoil, vector<su2double>& Ycoord_Airfoil,
663 vector<su2double>& Zcoord_Airfoil) override;
664
665 /*!
666 * \brief Compute the chord of an airfoil.
667 * \return Chord of an airfoil.
668 */
669 su2double Compute_Height(su2double* Plane_P0, su2double* Plane_Normal, vector<su2double>& Xcoord_Airfoil,
670 vector<su2double>& Ycoord_Airfoil, vector<su2double>& Zcoord_Airfoil) override;
671
672 /*!
673 * \brief Compute the chord of an airfoil.
674 * \return Chord of an airfoil.
675 */
676 su2double Compute_LERadius(su2double* Plane_P0, su2double* Plane_Normal, vector<su2double>& Xcoord_Airfoil,
677 vector<su2double>& Ycoord_Airfoil, vector<su2double>& Zcoord_Airfoil) override;
678
679 /*!
680 * \brief Compute the thickness of an airfoil.
681 */
682 su2double Compute_Thickness(su2double* Plane_P0, su2double* Plane_Normal, su2double Location, CConfig* config,
683 vector<su2double>& Xcoord_Airfoil, vector<su2double>& Ycoord_Airfoil,
684 vector<su2double>& Zcoord_Airfoil, su2double& ZLoc) override;
685
686 /*!
687 * \brief Compute the area of an airfoil.
688 * \return Area of an airfoil.
689 */
690 su2double Compute_Area(su2double* Plane_P0, su2double* Plane_Normal, CConfig* config,
691 vector<su2double>& Xcoord_Airfoil, vector<su2double>& Ycoord_Airfoil,
692 vector<su2double>& Zcoord_Airfoil) override;
693
694 /*!
695 * \brief Compute the length of an airfoil.
696 * \return Area of an airfoil.
697 */
698 su2double Compute_Length(su2double* Plane_P0, su2double* Plane_Normal, CConfig* config,
699 vector<su2double>& Xcoord_Airfoil, vector<su2double>& Ycoord_Airfoil,
700 vector<su2double>& Zcoord_Airfoil) override;
701
702 /*!
703 * \brief Compute the dihedral of a wing.
704 * \return Dihedral at a particular section.
705 */
706 su2double Compute_Dihedral(su2double* LeadingEdge_im1, su2double* TrailingEdge_im1, su2double* LeadingEdge_i,
707 su2double* TrailingEdge_i) override;
708
709 /*!
710 * \brief Compute the curvature of a wing.
711 */
712 su2double Compute_Curvature(su2double* LeadingEdge_im1, su2double* TrailingEdge_im1, su2double* LeadingEdge_i,
713 su2double* TrailingEdge_i, su2double* LeadingEdge_ip1,
714 su2double* TrailingEdge_ip1) override;
715
716 /*!
717 * \brief Evaluate geometrical parameters of a wing.
718 */
719 void Compute_Wing(CConfig* config, bool original_surface, su2double& Wing_Volume, su2double& Wing_MinMaxThickness,
720 su2double& Wing_MaxMaxThickness, su2double& Wing_MinChord, su2double& Wing_MaxChord,
721 su2double& Wing_MinLERadius, su2double& Wing_MaxLERadius, su2double& Wing_MinToC,
722 su2double& Wing_MaxToC, su2double& Wing_ObjFun_MinToC, su2double& Wing_MaxTwist,
723 su2double& Wing_MaxCurvature, su2double& Wing_MaxDihedral) override;
724
725 /*!
726 * \brief Evaluate geometrical parameters of a wing.
727 */
728 void Compute_Fuselage(CConfig* config, bool original_surface, su2double& Fuselage_Volume,
729 su2double& Fuselage_WettedArea, su2double& Fuselage_MinWidth, su2double& Fuselage_MaxWidth,
730 su2double& Fuselage_MinWaterLineWidth, su2double& Fuselage_MaxWaterLineWidth,
731 su2double& Fuselage_MinHeight, su2double& Fuselage_MaxHeight,
732 su2double& Fuselage_MaxCurvature) override;
733
734 /*!
735 * \brief Evaluate geometrical parameters of a wing.
736 */
737 void Compute_Nacelle(CConfig* config, bool original_surface, su2double& Nacelle_Volume,
738 su2double& Nacelle_MinMaxThickness, su2double& Nacelle_MaxMaxThickness,
739 su2double& Nacelle_MinChord, su2double& Nacelle_MaxChord, su2double& Nacelle_MinLERadius,
740 su2double& Nacelle_MaxLERadius, su2double& Nacelle_MinToC, su2double& Nacelle_MaxToC,
741 su2double& Nacelle_ObjFun_MinToC, su2double& Nacelle_MaxTwist) override;
742
743 /*!
744 * \brief Read the sensitivity from adjoint solution file and store it.
745 * \param[in] config - Definition of the particular problem.
746 */
747 void SetSensitivity(CConfig* config) override;
748
749 /*!
750 * \brief Read the sensitivity from unordered ASCII adjoint solution file and store it.
751 * \param[in] config - Definition of the particular problem.
752 */
753 void ReadUnorderedSensitivity(CConfig* config) override;
754
755 /*!
756 * \brief Get the Sensitivity at a specific point.
757 * \param[in] iPoint - The point where to get the sensitivity.
758 * \param[in] iDim - The component of the dim. vector.
759 * \return The sensitivity at point iPoint and dim. iDim.
760 */
761 inline su2double GetSensitivity(unsigned long iPoint, unsigned short iDim) const override {
762 return Sensitivity(iPoint, iDim);
763 }
764
765 /*!
766 * \brief Set the Sensitivity at a specific point.
767 * \param[in] iPoint - The point where to get the sensitivity.
768 * \param[in] iDim - The component of the dim. vector.
769 * \param[in] val - Value of the sensitivity.
770 */
771 inline void SetSensitivity(unsigned long iPoint, unsigned short iDim, su2double val) override {
772 Sensitivity(iPoint, iDim) = val;
773 }
774
775 /*!
776 * \brief Compute an ADT including the coordinates of all viscous markers
777 * \param[in] config - Definition of the particular problem.
778 * \return pointer to the ADT
779 */
780 std::unique_ptr<CADTElemClass> ComputeViscousWallADT(const CConfig* config) const override;
781
782 /*!
783 * \brief Reduce the wall distance based on an previously constructed ADT.
784 * \details The ADT might belong to another zone, giving rise to lower wall distances
785 * than those already stored.
786 * \param[in] WallADT - The ADT to reduce the wall distance
787 * \param[in] config - ignored
788 * \param[in] iZone - zone whose markers made the ADT
789 */
790 void SetWallDistance(CADTElemClass* WallADT, const CConfig* config, unsigned short iZone) override;
791
792 /*!
793 * \brief Set wall distances a specific value
794 */
795 void SetWallDistance(su2double val) override {
796 for (unsigned long iPoint = 0; iPoint < GetnPoint(); iPoint++) {
797 nodes->SetWall_Distance(iPoint, val);
798 }
799 }
800
801 /*!
802 * \brief For streamwise periodicity, find & store a unique reference node on the designated periodic inlet.
803 * \param[in] config - Definition of the particular problem.
804 */
805 void FindUniqueNode_PeriodicBound(const CConfig* config) final;
806
807 /*!
808 * \brief Get a pointer to the reference node coordinate vector.
809 * \return A pointer to the reference node coordinate vector.
810 */
811 inline const su2double* GetStreamwise_Periodic_RefNode(void) const final { return Streamwise_Periodic_RefNode; }
812};
Headers of the main subroutines for creating the geometrical structure. The subroutines and functions...
Header file for the class CMeshReaderBase. The implementations are in the CMeshReaderBase....
A templated matrix/vector-like object.
Definition C2DContainer.hpp:374
Class for storing an ADT of (linear) elements in an arbitrary number of dimensions.
Definition CADTElemClass.hpp:41
int Request
Definition mpi_structure.hpp:505
Main class for defining the problem; basically this class reads the configuration file,...
Definition CConfig.hpp:64
Parent class for defining the geometry of the problem (complete geometry, multigrid agglomerated geom...
Definition CGeometry.hpp:75
virtual void SetBoundControlVolume(const CConfig *config, unsigned short action)
A virtual member.
Definition CGeometry.hpp:946
@ MAXNDIM
Definition CGeometry.hpp:91
unsigned long GetnPoint() const
Get number of points.
Definition CGeometry.hpp:587
CPoint * nodes
Node vector (dual grid information).
Definition CGeometry.hpp:253
virtual void SetPoint_Connectivity()
Set connectivity between points.
Definition CGeometry.hpp:819
virtual void SetVertex(const CConfig *config)
Sets the vertices.
Definition CGeometry.hpp:851
virtual void SetControlVolume(CConfig *config, unsigned short action)
Sets control volume.
Definition CGeometry.hpp:918
Base class for the mesh zone readers.
Definition CMeshReaderBase.hpp:44
Class for reading a defining the primal grid which is read from the grid file in ....
Definition CPhysicalGeometry.hpp:41
void SetControlVolume(CConfig *config, unsigned short action) override
Set the edge structure of the control volume.
Definition CPhysicalGeometry.cpp:6748
void SetTurboVertex(CConfig *config, unsigned short val_iZone, unsigned short marker_flag, bool allocate) override
Set turbo boundary vertex.
Definition CPhysicalGeometry.cpp:5067
std::unique_ptr< CADTElemClass > ComputeViscousWallADT(const CConfig *config) const override
Compute an ADT including the coordinates of all viscous markers.
Definition CPhysicalGeometry.cpp:10178
void SetColorFEMGrid_Parallel(CConfig *config) override
Set the domains for FEM grid partitioning using ParMETIS.
Definition CPhysicalGeometryFEM.cpp:169
su2double Compute_Curvature(su2double *LeadingEdge_im1, su2double *TrailingEdge_im1, su2double *LeadingEdge_i, su2double *TrailingEdge_i, su2double *LeadingEdge_ip1, su2double *TrailingEdge_ip1) override
Compute the curvature of a wing.
Definition CPhysicalGeometry.cpp:8733
su2double Compute_LERadius(su2double *Plane_P0, su2double *Plane_Normal, vector< su2double > &Xcoord_Airfoil, vector< su2double > &Ycoord_Airfoil, vector< su2double > &Zcoord_Airfoil) override
Compute the chord of an airfoil.
Definition CPhysicalGeometry.cpp:8963
void SetWallDistance(su2double val) override
Set wall distances a specific value.
Definition CPhysicalGeometry.hpp:795
void SetRCM_Ordering(CConfig *config) override
Set a renumbering using a Reverse Cuthill-McKee Algorithm.
Definition CPhysicalGeometry.cpp:4494
void DetermineFEMConstantJacobiansAndLenScale(CConfig *config)
Determine whether or not the Jacobians of the elements and faces are constant and a length scale of t...
Definition CPhysicalGeometryFEM.cpp:1198
void DetermineTimeLevelElements(CConfig *config, const vector< CFaceOfElement > &localFaces, map< unsigned long, CUnsignedShort2T > &mapExternalElemIDToTimeLevel)
Determine the time level of the elements when time accurate local time stepping is employed.
Definition CPhysicalGeometryFEM.cpp:2091
void SetBoundaries(CConfig *config) override
Set the send receive boundaries of the grid.
Definition CPhysicalGeometry.cpp:3136
su2double Compute_Twist(su2double *Plane_P0, su2double *Plane_Normal, vector< su2double > &Xcoord_Airfoil, vector< su2double > &Ycoord_Airfoil, vector< su2double > &Zcoord_Airfoil) override
Compute the twist of an airfoil.
Definition CPhysicalGeometry.cpp:8777
void LoadLinearlyPartitionedVolumeElementsFEM(CConfig *config, CMeshReaderBase *mesh)
Loads the interior volume elements from the mesh reader object into the primal element data structure...
Definition CPhysicalGeometryFEM.cpp:60
void SetColorGrid_Parallel(const CConfig *config) override
Set the domains for grid grid partitioning using ParMETIS.
Definition CPhysicalGeometry.cpp:7364
void ReadUnorderedSensitivity(CConfig *config) override
Read the sensitivity from unordered ASCII adjoint solution file and store it.
Definition CPhysicalGeometry.cpp:8447
su2double GetSensitivity(unsigned long iPoint, unsigned short iDim) const override
Get the Sensitivity at a specific point.
Definition CPhysicalGeometry.hpp:761
void DistributePoints(const CConfig *config, CGeometry *geometry)
Distribute the grid points, including ghost points, across all ranks based on a ParMETIS coloring.
Definition CPhysicalGeometry.cpp:1032
void Read_Mesh(CConfig *config, const string &val_mesh_filename, unsigned short val_iZone, unsigned short val_nZone)
Reads the geometry of the grid and adjust the boundary conditions with the configuration file in para...
Definition CPhysicalGeometry.cpp:3428
unsigned long GetLinearPartition(unsigned long val_global_index)
Get the processor that owns the global numbering index based on the linear partitioning.
Definition CPhysicalGeometry.cpp:2875
su2double Compute_Length(su2double *Plane_P0, su2double *Plane_Normal, CConfig *config, vector< su2double > &Xcoord_Airfoil, vector< su2double > &Ycoord_Airfoil, vector< su2double > &Zcoord_Airfoil) override
Compute the length of an airfoil.
Definition CPhysicalGeometry.cpp:9228
bool FindFace(unsigned long first_elem, unsigned long second_elem, unsigned short &face_first_elem, unsigned short &face_second_elem) override
Find repeated nodes between two elements to identify the common face.
Definition CPhysicalGeometry.cpp:7117
void Compute_Wing(CConfig *config, bool original_surface, su2double &Wing_Volume, su2double &Wing_MinMaxThickness, su2double &Wing_MaxMaxThickness, su2double &Wing_MinChord, su2double &Wing_MaxChord, su2double &Wing_MinLERadius, su2double &Wing_MaxLERadius, su2double &Wing_MinToC, su2double &Wing_MaxToC, su2double &Wing_ObjFun_MinToC, su2double &Wing_MaxTwist, su2double &Wing_MaxCurvature, su2double &Wing_MaxDihedral) override
Evaluate geometrical parameters of a wing.
Definition CPhysicalGeometry.cpp:9258
void SetWallDistance(CADTElemClass *WallADT, const CConfig *config, unsigned short iZone) override
Reduce the wall distance based on an previously constructed ADT.
Definition CPhysicalGeometry.cpp:10267
void SetAvgTurboGeoValues(const CConfig *donor_config, CGeometry *donor_geometry, unsigned short donorZone) override
Store all the turboperformance in the solver in ZONE_0.
Definition CPhysicalGeometry.cpp:6390
su2double Compute_Area(su2double *Plane_P0, su2double *Plane_Normal, CConfig *config, vector< su2double > &Xcoord_Airfoil, vector< su2double > &Ycoord_Airfoil, vector< su2double > &Zcoord_Airfoil) override
Compute the area of an airfoil.
Definition CPhysicalGeometry.cpp:9195
void DeterminePeriodicFacesFEMGrid(CConfig *config, vector< CFaceOfElement > &localFaces)
Determine the neighboring information for periodic faces of a FEM grid.
Definition CPhysicalGeometryFEM.cpp:832
void SetAvgTurboValue(CConfig *config, unsigned short val_iZone, unsigned short marker_flag, bool allocate) override
Set turbo boundary vertex.
Definition CPhysicalGeometry.cpp:5960
void Compute_Fuselage(CConfig *config, bool original_surface, su2double &Fuselage_Volume, su2double &Fuselage_WettedArea, su2double &Fuselage_MinWidth, su2double &Fuselage_MaxWidth, su2double &Fuselage_MinWaterLineWidth, su2double &Fuselage_MaxWaterLineWidth, su2double &Fuselage_MinHeight, su2double &Fuselage_MaxHeight, su2double &Fuselage_MaxCurvature) override
Evaluate geometrical parameters of a wing.
Definition CPhysicalGeometry.cpp:9579
CPhysicalGeometry(CGeometry *geometry, CConfig *config, bool val_flag)
Accepts a geometry container holding a linearly partitioned grid with coloring performed by ParMETIS,...
void DistributeMarkerTags(CConfig *config, CGeometry *geometry)
Broadcast the marker tags for all boundaries from the master rank to all other ranks.
Definition CPhysicalGeometry.cpp:1973
void DetermineMatchingFacesFEMGrid(const CConfig *config, vector< CFaceOfElement > &localFaces)
Function, which determines the matching faces of a FEM grid.
Definition CPhysicalGeometryFEM.cpp:408
void UpdateTurboVertex(CConfig *config, unsigned short val_iZone, unsigned short marker_flag) override
update turbo boundary vertex.
Definition CPhysicalGeometry.cpp:5849
void StoreFaceInfoInLocalElements(const vector< CFaceOfElement > &localFaces)
Function, which stores the information of the local matching faces in the data structures of the loca...
Definition CPhysicalGeometryFEM.cpp:2679
void SetBoundSensitivity(CConfig *config) override
Read the sensitivity from an input file.
Definition CPhysicalGeometry.cpp:7778
void DetermineOwnershipInternalFaces(vector< CFaceOfElement > &localFaces, map< unsigned long, CUnsignedShort2T > &mapExternalElemIDToTimeLevel)
Function, which determines the owner of the internal faces, i.e. which element is responsible for com...
Definition CPhysicalGeometryFEM.cpp:776
su2double Compute_Height(su2double *Plane_P0, su2double *Plane_Normal, vector< su2double > &Xcoord_Airfoil, vector< su2double > &Ycoord_Airfoil, vector< su2double > &Zcoord_Airfoil) override
Compute the chord of an airfoil.
Definition CPhysicalGeometry.cpp:8943
void LoadLinearlyPartitionedVolumeElements(CConfig *config, CMeshReaderBase *mesh)
Loads the interior volume elements from the mesh reader object into the primal element data structure...
Definition CPhysicalGeometry.cpp:3581
void SetElement_Connectivity(void) override
Set elements which surround an element.
Definition CPhysicalGeometry.cpp:4688
void SetBoundControlVolume(const CConfig *config, unsigned short action) override
Set boundary vertex structure of the control volume.
Definition CPhysicalGeometry.cpp:6901
void SetSendReceive(const CConfig *config) override
Set the send receive boundaries of the grid.
Definition CPhysicalGeometry.cpp:2961
void Compute_Nacelle(CConfig *config, bool original_surface, su2double &Nacelle_Volume, su2double &Nacelle_MinMaxThickness, su2double &Nacelle_MaxMaxThickness, su2double &Nacelle_MinChord, su2double &Nacelle_MaxChord, su2double &Nacelle_MinLERadius, su2double &Nacelle_MaxLERadius, su2double &Nacelle_MinToC, su2double &Nacelle_MaxToC, su2double &Nacelle_ObjFun_MinToC, su2double &Nacelle_MaxTwist) override
Evaluate geometrical parameters of a wing.
Definition CPhysicalGeometry.cpp:9864
void SetBoundTecPlot(char mesh_filename[MAX_STRING_SIZE], bool new_file, CConfig *config) override
Set the output file for boundaries in Tecplot.
Definition CPhysicalGeometry.cpp:7257
void VisualizeControlVolume(const CConfig *config) const override
Visualize the structure of the control volume(s).
Definition CPhysicalGeometry.cpp:6990
su2double Compute_MaxThickness(su2double *Plane_P0, su2double *Plane_Normal, CConfig *config, vector< su2double > &Xcoord_Airfoil, vector< su2double > &Ycoord_Airfoil, vector< su2double > &Zcoord_Airfoil) override
Compute the maximum thickness of an airfoil.
Definition CPhysicalGeometry.cpp:8583
void LoadVolumeElements(CConfig *config, CGeometry *geometry)
Load the local volume elements after partitioning (owned and ghost) into the geometry class objects.
Definition CPhysicalGeometry.cpp:2107
const su2double * GetStreamwise_Periodic_RefNode(void) const final
Get a pointer to the reference node coordinate vector.
Definition CPhysicalGeometry.hpp:811
void PrepareOffsets(unsigned long val_npoint_global)
Routine to compute the initial linear partitioning offset counts and store in persistent data structu...
Definition CPhysicalGeometry.cpp:2843
void ComputeMeshQualityStatistics(const CConfig *config) override
Compute 3 grid quality metrics: orthogonality angle, dual cell aspect ratio, and dual cell volume rat...
Definition CPhysicalGeometry.cpp:7447
su2double Compute_WaterLineWidth(su2double *Plane_P0, su2double *Plane_Normal, CConfig *config, vector< su2double > &Xcoord_Airfoil, vector< su2double > &Ycoord_Airfoil, vector< su2double > &Zcoord_Airfoil) override
Compute the chord of an airfoil.
Definition CPhysicalGeometry.cpp:8921
void LoadLinearlyPartitionedPointsFEM(CConfig *config, CMeshReaderBase *mesh)
Routine to load the grid points from a single zone into the proper SU2 data structures for the FEM so...
Definition CPhysicalGeometryFEM.cpp:44
void DetermineNonMatchingFacesFEMGrid(const CConfig *config, vector< CFaceOfElement > &localMatchingFaces)
Function, which determines the non-matching faces of a FEM grid.
Definition CPhysicalGeometryFEM.cpp:734
su2double Compute_Chord(su2double *Plane_P0, su2double *Plane_Normal, vector< su2double > &Xcoord_Airfoil, vector< su2double > &Ycoord_Airfoil, vector< su2double > &Zcoord_Airfoil) override
Compute the chord of an airfoil.
Definition CPhysicalGeometry.cpp:8878
void MatchActuator_Disk(const CConfig *config) override
Mach the near field boundary condition.
Definition CPhysicalGeometry.cpp:6447
void FindUniqueNode_PeriodicBound(const CConfig *config) final
For streamwise periodicity, find & store a unique reference node on the designated periodic inlet.
Definition CPhysicalGeometry.cpp:6660
void DistributeVolumeConnectivity(const CConfig *config, CGeometry *geometry, unsigned short Elem_Type)
Distribute the connectivity for a single volume element type across all ranks based on a ParMETIS col...
Definition CPhysicalGeometry.cpp:707
void Check_IntElem_Orientation(const CConfig *config) override
Check the volume element orientation.
Definition CPhysicalGeometry.cpp:3995
su2double Compute_Dihedral(su2double *LeadingEdge_im1, su2double *TrailingEdge_im1, su2double *LeadingEdge_i, su2double *TrailingEdge_i) override
Compute the dihedral of a wing.
Definition CPhysicalGeometry.cpp:8721
void DetermineGraphAdjacency(const vector< CFaceOfElement > &localFaces, vector< vector< unsigned long > > &adjacency)
Function, which determines the adjacency information of the graph representation of the grid.
Definition CPhysicalGeometryFEM.cpp:243
void SetPositive_ZArea(CConfig *config) override
Compute surface area (positive z-direction) for force coefficient non-dimensionalization.
Definition CPhysicalGeometry.cpp:4294
void SortAdjacency(const CConfig *config)
Routine to sort the adjacency for ParMETIS for graph partitioning in parallel.
Definition CPhysicalGeometry.cpp:2896
void Check_BoundElem_Orientation(const CConfig *config) override
Check the volume element orientation.
Definition CPhysicalGeometry.cpp:4158
void ComputeNSpan(CConfig *config, unsigned short val_iZone, unsigned short marker_flag, bool allocate) override
Set number of span wise level for turbomachinery computation.
Definition CPhysicalGeometry.cpp:4823
void SetSensitivity(unsigned long iPoint, unsigned short iDim, su2double val) override
Set the Sensitivity at a specific point.
Definition CPhysicalGeometry.hpp:771
void LoadLinearlyPartitionedPoints(CConfig *config, CMeshReaderBase *mesh)
Routine to load the CGNS grid points from a single zone into the proper SU2 data structures.
Definition CPhysicalGeometry.cpp:3558
void Compute_Wing_LeadingTrailing(su2double *LeadingEdge, su2double *TrailingEdge, su2double *Plane_P0, su2double *Plane_Normal, vector< su2double > &Xcoord_Airfoil, vector< su2double > &Ycoord_Airfoil, vector< su2double > &Zcoord_Airfoil) override
Compute the leading/trailing edge location of an airfoil.
Definition CPhysicalGeometry.cpp:8806
long GetGlobal_to_Local_Point(unsigned long val_ipoint) const override
Get the local index that correspond with the global numbering index.
Definition CPhysicalGeometry.hpp:275
void SetPoint_Connectivity() override
Set points which surround a point.
Definition CPhysicalGeometry.cpp:4428
void DistributeSurfaceConnectivity(CConfig *config, CGeometry *geometry, unsigned short Elem_Type)
Distribute the connectivity for a single surface element type in all markers across all ranks based o...
Definition CPhysicalGeometry.cpp:1639
void Compute_Fuselage_LeadingTrailing(su2double *LeadingEdge, su2double *TrailingEdge, su2double *Plane_P0, su2double *Plane_Normal, vector< su2double > &Xcoord_Airfoil, vector< su2double > &Ycoord_Airfoil, vector< su2double > &Zcoord_Airfoil) override
Compute the leading/trailing edge location of a fuselage.
Definition CPhysicalGeometry.cpp:8839
void DetermineFEMGraphWeights(CConfig *config, const vector< CFaceOfElement > &localFaces, const vector< vector< unsigned long > > &adjacency, const map< unsigned long, CUnsignedShort2T > &mapExternalElemIDToTimeLevel, vector< passivedouble > &vwgt, vector< vector< passivedouble > > &adjwgt)
Compute the weights of the FEM graph for ParMETIS.
Definition CPhysicalGeometryFEM.cpp:2727
void PartitionSurfaceConnectivity(CConfig *config, CGeometry *geometry, unsigned short Elem_Type)
Partition the marker connectivity held on the master rank according to a linear partitioning.
Definition CPhysicalGeometry.cpp:1283
void SetVertex(const CConfig *config) override
Set boundary vertex.
Definition CPhysicalGeometry.cpp:4759
void InitiateCommsAll(void *bufSend, const int *nElemSend, SU2_MPI::Request *sendReq, void *bufRecv, const int *nElemRecv, SU2_MPI::Request *recvReq, unsigned short countPerElem, COMM_TYPE commType)
Routine to launch non-blocking sends and recvs amongst all processors.
Definition CPhysicalGeometry.cpp:2688
void FindNormal_Neighbor(const CConfig *config) override
Find and store the closest, most normal, neighbor to a vertex.
Definition CPhysicalGeometry.cpp:7734
CPhysicalGeometry(void)
Constructor of the class.
Definition CPhysicalGeometry.cpp:66
void LoadUnpartitionedSurfaceElements(CConfig *config, CMeshReaderBase *mesh)
Loads the boundary elements (markers) from the mesh reader object into the primal element data struct...
Definition CPhysicalGeometry.cpp:3668
~CPhysicalGeometry(void) override
Destructor of the class.
Definition CPhysicalGeometry.cpp:296
void DetermineDonorElementsWallFunctions(CConfig *config)
Determine the donor elements for the boundary elements on viscous wall boundaries when wall functions...
Definition CPhysicalGeometryFEM.cpp:1506
void SetTecPlot(char config_filename[MAX_STRING_SIZE], bool new_file) override
Set the Tecplot file.
Definition CPhysicalGeometry.cpp:7186
void LoadLinearlyPartitionedSurfaceElementsFEM(CConfig *config, CMeshReaderBase *mesh)
Loads the boundary elements (markers) from the mesh reader object into the primal element data struct...
Definition CPhysicalGeometryFEM.cpp:102
void SetMaxLength(CConfig *config) override
Set the maximum cell-center to cell-center distance for CVs.
Definition CPhysicalGeometry.cpp:6405
void PrepareAdjacency(const CConfig *config)
Prepares the grid point adjacency based on a linearly partitioned mesh object needed by ParMETIS for ...
Definition CPhysicalGeometry.cpp:3799
su2double Compute_Width(su2double *Plane_P0, su2double *Plane_Normal, vector< su2double > &Xcoord_Airfoil, vector< su2double > &Ycoord_Airfoil, vector< su2double > &Zcoord_Airfoil) override
Compute the chord of an airfoil.
Definition CPhysicalGeometry.cpp:8902
void DistributeColoring(const CConfig *config, CGeometry *geometry)
Distributes the coloring from ParMETIS so that each rank has complete information about the local gri...
Definition CPhysicalGeometry.cpp:442
void SetSensitivity(CConfig *config) override
Read the sensitivity from adjoint solution file and store it.
Definition CPhysicalGeometry.cpp:7915
void LoadSurfaceElements(CConfig *config, CGeometry *geometry)
Load the local surface elements after partitioning (owned and ghost) into the geometry class objects.
Definition CPhysicalGeometry.cpp:2417
void LoadPoints(CConfig *config, CGeometry *geometry)
Load the local grid points after partitioning (owned and ghost) into the geometry class objects.
Definition CPhysicalGeometry.cpp:2019
void CompleteCommsAll(int nSends, SU2_MPI::Request *sendReq, int nRecvs, SU2_MPI::Request *recvReq)
Routine to complete the set of non-blocking communications launched with InitiateComms() with MPI_Wai...
Definition CPhysicalGeometry.cpp:2828
void SetBoundVolume(void) override
Set the volume element associated to each boundary element.
Definition CPhysicalGeometry.cpp:4720
void GatherInOutAverageValues(CConfig *config, bool allocate) override
Set turbo boundary vertex.
Definition CPhysicalGeometry.cpp:6208
void SetGlobal_to_Local_Point() override
Set the local index that correspond with the global numbering index.
Definition CPhysicalGeometry.cpp:435
su2double Compute_Thickness(su2double *Plane_P0, su2double *Plane_Normal, su2double Location, CConfig *config, vector< su2double > &Xcoord_Airfoil, vector< su2double > &Ycoord_Airfoil, vector< su2double > &Zcoord_Airfoil, su2double &ZLoc) override
Compute the thickness of an airfoil.
Definition CPhysicalGeometry.cpp:9021
void SetWall_Distance(unsigned long iPoint, su2double distance, int rankID, unsigned short zoneID, unsigned short markerID, unsigned long elemID)
Set the value of the distance to the nearest wall.
Definition CPoint.hpp:477
passivedouble su2double
Definition code_config.hpp:181
COMM_TYPE
Definition option_structure.hpp:116
const unsigned int MAX_STRING_SIZE
Maximum size of a generic string.
Definition option_structure.hpp:78