Nektar++
MeshGraph.h
Go to the documentation of this file.
1 ////////////////////////////////////////////////////////////////////////////////
2 //
3 // File: MeshGraph.h
4 //
5 // For more information, please see: http://www.nektar.info/
6 //
7 // The MIT License
8 //
9 // Copyright (c) 2006 Division of Applied Mathematics, Brown University (USA),
10 // Department of Aeronautics, Imperial College London (UK), and Scientific
11 // Computing and Imaging Institute, University of Utah (USA).
12 //
13 // Permission is hereby granted, free of charge, to any person obtaining a
14 // copy of this software and associated documentation files (the "Software"),
15 // to deal in the Software without restriction, including without limitation
16 // the rights to use, copy, modify, merge, publish, distribute, sublicense,
17 // and/or sell copies of the Software, and to permit persons to whom the
18 // Software is furnished to do so, subject to the following conditions:
19 //
20 // The above copyright notice and this permission notice shall be included
21 // in all copies or substantial portions of the Software.
22 //
23 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
24 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
25 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
26 // THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
27 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
28 // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
29 // DEALINGS IN THE SOFTWARE.
30 //
31 // Description:
32 //
33 ////////////////////////////////////////////////////////////////////////////////
34 
35 #ifndef NEKTAR_SPATIALDOMAINS_MESHGRAPH_H
36 #define NEKTAR_SPATIALDOMAINS_MESHGRAPH_H
37 
38 #include <unordered_map>
39 
43 
44 #include <SpatialDomains/HexGeom.h>
47 #include <SpatialDomains/PyrGeom.h>
49 #include <SpatialDomains/SegGeom.h>
50 #include <SpatialDomains/TetGeom.h>
51 #include <SpatialDomains/TriGeom.h>
52 
53 #include <SpatialDomains/Curve.hpp>
55 
56 class TiXmlDocument;
57 
58 namespace Nektar
59 {
60 namespace SpatialDomains
61 {
62 typedef std::map<int, std::pair<LibUtilities::ShapeType, std::vector<int>>>
64 
66 {
86 };
87 
88 // Keep this consistent with the enums in ExpansionType.
89 // This is used in the BC file to specify the expansion type.
90 const std::string kExpansionTypeStr[] = {"NOTYPE",
91  "MODIFIED",
92  "MODIFIEDQUADPLUS1",
93  "MODIFIEDQUADPLUS2",
94  "MODIFIEDGLLRADAU10",
95  "ORTHOGONAL",
96  "GLL_LAGRANGE",
97  "GLL_LAGRANGE_SEM",
98  "GAUSS_LAGRANGE",
99  "GAUSS_LAGRANGE_SEM",
100  "FOURIER",
101  "FOURIERSINGLEMODE",
102  "FOURIERHALFMODERE",
103  "FOURIERHALFMODEIM",
104  "CHEBYSHEV",
105  "FOURIER-CHEBYSHEV",
106  "CHEBYSHEV-FOURIER",
107  "FOURIER-MODIFIED"};
108 
109 typedef std::map<int, std::vector<unsigned int>> CompositeOrdering;
110 typedef std::map<int, std::vector<unsigned int>> BndRegionOrdering;
111 
112 // set restriction on domain range for post-processing.
113 // struct DomainRange
114 // {
115 // bool m_doXrange;
116 // NekDouble m_xmin;
117 // NekDouble m_xmax;
118 // bool m_doYrange;
119 // NekDouble m_ymin;
120 // NekDouble m_ymax;
121 // bool m_doZrange;
122 // NekDouble m_zmin;
123 // NekDouble m_zmax;
124 
125 // bool m_checkShape;
126 // LibUtilities::ShapeType m_shapeType;
127 // };
128 
129 // typedef std::shared_ptr<DomainRange> DomainRangeShPtr;
130 // static DomainRangeShPtr NullDomainRangeShPtr;
131 
132 struct Composite
133 {
134  std::vector<std::shared_ptr<Geometry>> m_geomVec;
135 };
136 
137 typedef std::shared_ptr<Composite> CompositeSharedPtr;
138 typedef std::map<int, CompositeSharedPtr> CompositeMap;
139 
140 struct ExpansionInfo;
141 
142 typedef std::shared_ptr<ExpansionInfo> ExpansionInfoShPtr;
143 typedef std::map<int, ExpansionInfoShPtr> ExpansionInfoMap;
144 
145 typedef std::shared_ptr<ExpansionInfoMap> ExpansionInfoMapShPtr;
146 typedef std::map<std::string, ExpansionInfoMapShPtr> ExpansionInfoMapShPtrMap;
147 
149 {
151  const LibUtilities::BasisKeyVector basiskeyvec)
152  : m_geomShPtr(geomShPtr), m_basisKeyVector(basiskeyvec)
153  {
154  }
155 
157  : m_geomShPtr(ExpInfo->m_geomShPtr),
159  {
160  }
161 
164 };
165 
166 typedef std::map<std::string, std::string> GeomInfoMap;
167 typedef std::shared_ptr<std::vector<std::pair<GeometrySharedPtr, int>>>
169 
170 typedef std::map<std::string, std::string> MeshMetaDataMap;
171 
172 class MeshGraph;
173 typedef std::shared_ptr<MeshGraph> MeshGraphSharedPtr;
174 
175 class Movement;
176 typedef std::shared_ptr<Movement> MovementSharedPtr;
177 
178 /// Base class for a spectral/hp element mesh.
180 {
181 public:
184 
188  bool fillGraph = true);
189 
191  std::string &outfilename, bool defaultExp = false,
192  const LibUtilities::FieldMetaDataMap &metadata =
194 
195  void Empty(int dim, int space)
196  {
197  m_meshDimension = dim;
198  m_spaceDimension = space;
199  }
200 
201  /*transfers the minial data structure to full meshgraph*/
203 
205 
208 
209  ////////////////////
211 
212  /* ---- Helper functions ---- */
213  /// Dimension of the mesh (can be a 1D curve in 3D space).
215  {
216  return m_meshDimension;
217  }
218 
219  /// Dimension of the space (can be a 1D curve in 3D space).
221  {
222  return m_spaceDimension;
223  }
224 
225  /* Range definitions for postprorcessing */
227  NekDouble xmin, NekDouble xmax,
232 
233  /// Check if goemetry is in range definition if activated
235 
236  /// Check if goemetry is in range definition if activated
238 
239  /* ---- Composites and Domain ---- */
240  CompositeSharedPtr GetComposite(int whichComposite)
241  {
242  ASSERTL0(m_meshComposites.find(whichComposite) !=
243  m_meshComposites.end(),
244  "Composite not found.");
245  return m_meshComposites.find(whichComposite)->second;
246  }
247 
249  GetCompositeItem(int whichComposite, int whichItem);
250 
252  const std::string &compositeStr, CompositeMap &compositeVector) const;
253 
254  std::map<int, CompositeSharedPtr> &GetComposites()
255  {
256  return m_meshComposites;
257  }
258 
259  std::map<int, std::string> &GetCompositesLabels()
260  {
261  return m_compositesLabels;
262  }
263 
264  std::map<int, std::map<int, CompositeSharedPtr>> &GetDomain()
265  {
266  return m_domain;
267  }
268 
269  std::map<int, CompositeSharedPtr> &GetDomain(int domain)
270  {
271  ASSERTL1(m_domain.count(domain),
272  "Request for domain which does not exist");
273  return m_domain[domain];
274  }
275 
277  const std::string variable = "DefaultVar");
278 
280  GeometrySharedPtr geom, const std::string variable = "DefaultVar");
281 
282  /// Sets expansions given field definitions
284  std::vector<LibUtilities::FieldDefinitionsSharedPtr> &fielddef);
285 
286  /// Sets expansions given field definition, quadrature points.
288  std::vector<LibUtilities::FieldDefinitionsSharedPtr> &fielddef,
289  std::vector<std::vector<LibUtilities::PointsType>> &pointstype);
290 
291  /// Sets expansions to have equispaced points
293  int npoints = 0);
294 
295  /// Reset expansion to have specified polynomial order \a nmodes
297 
298  /// Reset expansion to have specified point order \a
299  /// npts
301  /// This function sets the expansion #exp in map with
302  /// entry #variable
303 
304  inline void SetExpansionInfo(const std::string variable,
305  ExpansionInfoMapShPtr &exp);
306 
308 
309  /// Sets the basis key for all expansions of the given shape.
312  std::string var = "DefaultVar");
313 
315  ExpansionInfoMapShPtr &expansionMap, LibUtilities::ShapeType shape,
317 
318  inline bool SameExpansionInfo(const std::string var1,
319  const std::string var2);
320 
321  inline bool ExpansionInfoDefined(const std::string var);
322 
323  inline bool CheckForGeomInfo(std::string parameter);
324 
325  inline const std::string GetGeomInfo(std::string parameter);
326 
329  const int order);
330 
333  GeometrySharedPtr in, ExpansionType type_x, ExpansionType type_y,
334  ExpansionType type_z, const int nummodes_x, const int nummodes_y,
335  const int nummodes_z);
336 
337  /* ---- Manipulation of mesh ---- */
339  {
340  return m_vertSet.size();
341  }
342 
344  {
345  return m_vertSet[id];
346  }
347 
349  {
350  return m_segGeoms[id];
351  }
352 
354  {
355  return m_curvedEdges;
356  }
358  {
359  return m_curvedFaces;
360  }
361 
362  SPATIAL_DOMAINS_EXPORT std::map<int, PointGeomSharedPtr> &GetAllPointGeoms()
363  {
364  return m_vertSet;
365  }
366  SPATIAL_DOMAINS_EXPORT std::map<int, SegGeomSharedPtr> &GetAllSegGeoms()
367  {
368  return m_segGeoms;
369  }
371  {
372  return m_triGeoms;
373  }
375  {
376  return m_quadGeoms;
377  }
379  {
380  return m_tetGeoms;
381  }
383  {
384  return m_pyrGeoms;
385  }
387  {
388  return m_prismGeoms;
389  }
391  {
392  return m_hexGeoms;
393  }
394 
396 
398  {
399  auto it1 = m_triGeoms.find(gID);
400  if (it1 != m_triGeoms.end())
401  return it1->second;
402 
403  auto it2 = m_quadGeoms.find(gID);
404  if (it2 != m_quadGeoms.end())
405  return it2->second;
406 
407  return Geometry2DSharedPtr();
408  };
409 
411  SegGeomSharedPtr edge, const std::string variable = "DefaultVar");
412 
415 
418 
420  Geometry2DSharedPtr face, const int facedir,
421  const std::string variable = "DefaultVar");
422 
424  {
425  return m_compOrder;
426  }
427 
429  {
430  m_compOrder = p_compOrder;
431  }
432 
434  {
435  return m_bndRegOrder;
436  }
437 
439  {
440  m_bndRegOrder = p_bndRegOrder;
441  }
442 
443  /*an inital read which loads a very light weight data structure*/
445  bool fillGraph);
448 
449  SPATIAL_DOMAINS_EXPORT std::map<int, MeshEntity> CreateMeshEntities();
451 
453  {
454  return m_movement;
455  }
456 
457 protected:
459  std::string &outfilename, bool defaultExp = false,
460  const LibUtilities::FieldMetaDataMap &metadata =
463  LibUtilities::DomainRangeShPtr rng, bool fillGraph) = 0;
466 
467  void PopulateFaceToElMap(Geometry3DSharedPtr element, int kNfaces);
469  std::string GetCompositeString(CompositeSharedPtr comp);
470 
473 
476 
478 
485 
490 
492  std::map<int, std::string> m_compositesLabels;
493  std::map<int, CompositeMap> m_domain;
495 
497 
499 
500  std::unordered_map<int, GeometryLinkSharedPtr> m_faceToElMap;
501 
502  TiXmlElement *m_xmlGeom;
503 
506 
507  struct GeomRTree;
508  std::unique_ptr<GeomRTree> m_boundingBoxTree;
510 };
511 typedef std::shared_ptr<MeshGraph> MeshGraphSharedPtr;
513 
515 
516 /**
517  *
518  */
520  std::string &outfilename, bool defaultExp,
521  const LibUtilities::FieldMetaDataMap &metadata)
522 {
523  v_WriteGeometry(outfilename, defaultExp, metadata);
524 }
525 
526 /**
527  *
528  */
530  bool fillGraph)
531 {
532  v_ReadGeometry(rng, fillGraph);
533 }
534 
535 /**
536  *
537  */
540 {
541  v_PartitionMesh(session);
542 }
543 
544 /**
545  *
546  */
547 void MeshGraph::SetExpansionInfo(const std::string variable,
549 {
550  if (m_expansionMapShPtrMap.count(variable) != 0)
551  {
552  ASSERTL0(
553  false,
554  (std::string("ExpansionInfo field is already set for variable ") +
555  variable)
556  .c_str());
557  }
558  else
559  {
560  m_expansionMapShPtrMap[variable] = exp;
561  }
562 }
563 
564 /**
565  *
566  */
567 inline bool MeshGraph::SameExpansionInfo(const std::string var1,
568  const std::string var2)
569 {
570  ExpansionInfoMapShPtr expVec1 = m_expansionMapShPtrMap.find(var1)->second;
571  ExpansionInfoMapShPtr expVec2 = m_expansionMapShPtrMap.find(var2)->second;
572 
573  if (expVec1.get() == expVec2.get())
574  {
575  return true;
576  }
577 
578  return false;
579 }
580 
581 /**
582  *
583  */
584 inline bool MeshGraph::ExpansionInfoDefined(const std::string var)
585 {
586  return m_expansionMapShPtrMap.count(var);
587 }
588 
589 /**
590  *
591  */
592 inline bool MeshGraph::CheckForGeomInfo(std::string parameter)
593 {
594  return m_geomInfo.find(parameter) != m_geomInfo.end();
595 }
596 
597 /**
598  *
599  */
600 inline const std::string MeshGraph::GetGeomInfo(std::string parameter)
601 {
602  ASSERTL1(m_geomInfo.find(parameter) != m_geomInfo.end(),
603  "Parameter " + parameter + " does not exist.");
604  return m_geomInfo[parameter];
605 }
606 
607 } // namespace SpatialDomains
608 } // namespace Nektar
609 #endif
#define ASSERTL0(condition, msg)
Definition: ErrorUtil.hpp:215
#define ASSERTL1(condition, msg)
Assert Level 1 – Debugging which is used whether in FULLDEBUG or DEBUG compilation mode....
Definition: ErrorUtil.hpp:249
#define SPATIAL_DOMAINS_EXPORT
Describes the specification for a Basis.
Definition: Basis.h:50
Provides a generic Factory class.
Definition: NekFactory.hpp:105
2D geometry information
Definition: Geometry2D.h:69
3D geometry information
Definition: Geometry3D.h:68
Base class for a spectral/hp element mesh.
Definition: MeshGraph.h:180
std::map< int, PointGeomSharedPtr > & GetAllPointGeoms()
Definition: MeshGraph.h:362
std::map< int, std::string > & GetCompositesLabels()
Definition: MeshGraph.h:259
void SetDomainRange(NekDouble xmin, NekDouble xmax, NekDouble ymin=NekConstants::kNekUnsetDouble, NekDouble ymax=NekConstants::kNekUnsetDouble, NekDouble zmin=NekConstants::kNekUnsetDouble, NekDouble zmax=NekConstants::kNekUnsetDouble)
Definition: MeshGraph.cpp:3985
PrismGeomMap & GetAllPrismGeoms()
Definition: MeshGraph.h:386
bool CheckRange(Geometry2D &geom)
Check if goemetry is in range definition if activated.
Definition: MeshGraph.cpp:315
void SetCompositeOrdering(CompositeOrdering p_compOrder)
Definition: MeshGraph.h:428
int GetMeshDimension()
Dimension of the mesh (can be a 1D curve in 3D space).
Definition: MeshGraph.h:214
const std::string GetGeomInfo(std::string parameter)
Definition: MeshGraph.h:600
void ReadGeometry(LibUtilities::DomainRangeShPtr rng, bool fillGraph)
Definition: MeshGraph.h:529
void PopulateFaceToElMap(Geometry3DSharedPtr element, int kNfaces)
Given a 3D geometry object #element, populate the face to element map m_faceToElMap which maps faces ...
Definition: MeshGraph.cpp:3833
BndRegionOrdering & GetBndRegionOrdering()
Definition: MeshGraph.h:433
Geometry2DSharedPtr GetGeometry2D(int gID)
Definition: MeshGraph.h:397
static MeshGraphSharedPtr Read(const LibUtilities::SessionReaderSharedPtr pSession, LibUtilities::DomainRangeShPtr rng=LibUtilities::NullDomainRangeShPtr, bool fillGraph=true)
Definition: MeshGraph.cpp:111
void SetExpansionInfoToEvenlySpacedPoints(int npoints=0)
Sets expansions to have equispaced points.
Definition: MeshGraph.cpp:1457
LibUtilities::SessionReaderSharedPtr m_session
Definition: MeshGraph.h:471
MovementSharedPtr & GetMovement()
Definition: MeshGraph.h:452
std::map< int, CompositeMap > m_domain
Definition: MeshGraph.h:493
std::unique_ptr< GeomRTree > m_boundingBoxTree
Definition: MeshGraph.h:507
ExpansionInfoMapShPtr SetUpExpansionInfoMap()
Definition: MeshGraph.cpp:2543
void SetExpansionInfoToPointOrder(int npts)
Reset expansion to have specified point order npts.
Definition: MeshGraph.cpp:1532
bool SameExpansionInfo(const std::string var1, const std::string var2)
Definition: MeshGraph.h:567
CompositeOrdering m_compOrder
Definition: MeshGraph.h:504
virtual void v_WriteGeometry(std::string &outfilename, bool defaultExp=false, const LibUtilities::FieldMetaDataMap &metadata=LibUtilities::NullFieldMetaDataMap)=0
bool ExpansionInfoDefined(const std::string var)
Definition: MeshGraph.h:584
void GetCompositeList(const std::string &compositeStr, CompositeMap &compositeVector) const
Definition: MeshGraph.cpp:562
virtual void v_PartitionMesh(LibUtilities::SessionReaderSharedPtr session)=0
std::map< int, std::map< int, CompositeSharedPtr > > & GetDomain()
Definition: MeshGraph.h:264
void Empty(int dim, int space)
Definition: MeshGraph.h:195
const ExpansionInfoMap & GetExpansionInfo(const std::string variable="DefaultVar")
Definition: MeshGraph.cpp:615
std::map< int, SegGeomSharedPtr > & GetAllSegGeoms()
Definition: MeshGraph.h:366
void WriteGeometry(std::string &outfilename, bool defaultExp=false, const LibUtilities::FieldMetaDataMap &metadata=LibUtilities::NullFieldMetaDataMap)
Definition: MeshGraph.h:519
GeometryLinkSharedPtr GetElementsFromEdge(Geometry1DSharedPtr edge)
Definition: MeshGraph.cpp:3526
GeometrySharedPtr GetCompositeItem(int whichComposite, int whichItem)
Definition: MeshGraph.cpp:523
ExpansionInfoMapShPtrMap m_expansionMapShPtrMap
Definition: MeshGraph.h:496
int GetSpaceDimension()
Dimension of the space (can be a 1D curve in 3D space).
Definition: MeshGraph.h:220
MovementSharedPtr m_movement
Definition: MeshGraph.h:509
std::string GetCompositeString(CompositeSharedPtr comp)
Returns a string representation of a composite.
Definition: MeshGraph.cpp:2587
void ResetExpansionInfoToBasisKey(ExpansionInfoMapShPtr &expansionMap, LibUtilities::ShapeType shape, LibUtilities::BasisKeyVector &keys)
Definition: MeshGraph.cpp:1577
void SetExpansionInfoToNumModes(int nmodes)
Reset expansion to have specified polynomial order nmodes.
Definition: MeshGraph.cpp:1499
std::map< int, CompositeSharedPtr > & GetComposites()
Definition: MeshGraph.h:254
std::unordered_map< int, GeometryLinkSharedPtr > m_faceToElMap
Definition: MeshGraph.h:500
CompositeSharedPtr GetComposite(int whichComposite)
Definition: MeshGraph.h:240
virtual void v_ReadGeometry(LibUtilities::DomainRangeShPtr rng, bool fillGraph)=0
void SetExpansionInfo(std::vector< LibUtilities::FieldDefinitionsSharedPtr > &fielddef)
Sets expansions given field definitions.
Definition: MeshGraph.cpp:668
void SetBndRegionOrdering(BndRegionOrdering p_bndRegOrder)
Definition: MeshGraph.h:438
CompositeOrdering & GetCompositeOrdering()
Definition: MeshGraph.h:423
LibUtilities::BasisKey GetEdgeBasisKey(SegGeomSharedPtr edge, const std::string variable="DefaultVar")
Definition: MeshGraph.cpp:3581
std::map< int, MeshEntity > CreateMeshEntities()
Create mesh entities for this graph.
Definition: MeshGraph.cpp:3864
LibUtilities::BasisKeyVector DefineBasisKeyFromExpansionTypeHomo(GeometrySharedPtr in, ExpansionType type_x, ExpansionType type_y, ExpansionType type_z, const int nummodes_x, const int nummodes_y, const int nummodes_z)
Definition: MeshGraph.cpp:2309
bool CheckForGeomInfo(std::string parameter)
Definition: MeshGraph.h:592
LibUtilities::BasisKey GetFaceBasisKey(Geometry2DSharedPtr face, const int facedir, const std::string variable="DefaultVar")
3D functions
Definition: MeshGraph.cpp:3757
SegGeomSharedPtr GetSegGeom(int id)
Definition: MeshGraph.h:348
CompositeDescriptor CreateCompositeDescriptor()
Definition: MeshGraph.cpp:3964
GeometryLinkSharedPtr GetElementsFromFace(Geometry2DSharedPtr face)
Definition: MeshGraph.cpp:3815
std::map< int, CompositeSharedPtr > & GetDomain(int domain)
Definition: MeshGraph.h:269
void SetBasisKey(LibUtilities::ShapeType shape, LibUtilities::BasisKeyVector &keys, std::string var="DefaultVar")
Sets the basis key for all expansions of the given shape.
Definition: MeshGraph.cpp:1569
std::map< int, std::string > m_compositesLabels
Definition: MeshGraph.h:492
std::vector< int > GetElementsContainingPoint(PointGeomSharedPtr p)
Definition: MeshGraph.cpp:261
PointGeomSharedPtr GetVertex(int id)
Definition: MeshGraph.h:343
void PartitionMesh(LibUtilities::SessionReaderSharedPtr session)
Definition: MeshGraph.h:538
static LibUtilities::BasisKeyVector DefineBasisKeyFromExpansionType(GeometrySharedPtr in, ExpansionType type, const int order)
Definition: MeshGraph.cpp:1594
void SetSession(LibUtilities::SessionReaderSharedPtr pSession)
LibUtilities::DomainRangeShPtr m_domainRange
Definition: MeshGraph.h:494
BndRegionOrdering m_bndRegOrder
Definition: MeshGraph.h:505
std::vector< BasisKey > BasisKeyVector
Name for a vector of BasisKeys.
std::map< std::string, std::string > FieldMetaDataMap
Definition: FieldIO.h:52
std::shared_ptr< SessionReader > SessionReaderSharedPtr
static FieldMetaDataMap NullFieldMetaDataMap
Definition: FieldIO.h:53
std::shared_ptr< DomainRange > DomainRangeShPtr
Definition: DomainRange.h:66
static DomainRangeShPtr NullDomainRangeShPtr
Definition: DomainRange.h:67
static const NekDouble kNekUnsetDouble
std::map< int, TriGeomSharedPtr > TriGeomMap
Definition: TriGeom.h:59
std::map< std::string, std::string > GeomInfoMap
Definition: MeshGraph.h:166
std::map< int, std::vector< unsigned int > > CompositeOrdering
Definition: MeshGraph.h:109
std::map< int, PyrGeomSharedPtr > PyrGeomMap
Definition: PyrGeom.h:78
std::map< int, QuadGeomSharedPtr > QuadGeomMap
Definition: QuadGeom.h:54
std::map< int, std::pair< LibUtilities::ShapeType, std::vector< int > > > CompositeDescriptor
Definition: MeshGraph.h:63
std::shared_ptr< std::vector< std::pair< GeometrySharedPtr, int > > > GeometryLinkSharedPtr
Definition: MeshGraph.h:168
std::map< int, std::vector< unsigned int > > BndRegionOrdering
Definition: MeshGraph.h:110
std::shared_ptr< Composite > CompositeSharedPtr
Definition: MeshGraph.h:137
std::shared_ptr< ExpansionInfoMap > ExpansionInfoMapShPtr
Definition: MeshGraph.h:145
std::map< int, SegGeomSharedPtr > SegGeomMap
Definition: SegGeom.h:52
std::shared_ptr< Movement > MovementSharedPtr
Definition: MeshGraph.h:175
std::unordered_map< int, CurveSharedPtr > CurveMap
Definition: Curve.hpp:61
LibUtilities::NekFactory< std::string, MeshGraph > MeshGraphFactory
Definition: MeshGraph.h:512
std::shared_ptr< SegGeom > SegGeomSharedPtr
Definition: Geometry2D.h:62
std::map< int, TetGeomSharedPtr > TetGeomMap
Definition: TetGeom.h:87
std::shared_ptr< ExpansionInfo > ExpansionInfoShPtr
Definition: MeshGraph.h:140
const std::string kExpansionTypeStr[]
Definition: MeshGraph.h:90
std::shared_ptr< MeshGraph > MeshGraphSharedPtr
Definition: MeshGraph.h:172
std::map< std::string, std::string > MeshMetaDataMap
Definition: MeshGraph.h:170
std::map< int, PrismGeomSharedPtr > PrismGeomMap
Definition: PrismGeom.h:86
std::shared_ptr< PointGeom > PointGeomSharedPtr
Definition: Geometry.h:59
std::shared_ptr< Geometry2D > Geometry2DSharedPtr
Definition: Geometry.h:65
std::shared_ptr< Geometry > GeometrySharedPtr
Definition: Geometry.h:53
MeshGraphFactory & GetMeshGraphFactory()
Definition: MeshGraph.cpp:74
std::shared_ptr< Geometry1D > Geometry1DSharedPtr
Definition: Geometry.h:63
std::map< std::string, ExpansionInfoMapShPtr > ExpansionInfoMapShPtrMap
Definition: MeshGraph.h:146
std::map< int, HexGeomSharedPtr > HexGeomMap
Definition: HexGeom.h:88
std::map< int, PointGeomSharedPtr > PointGeomMap
Definition: PointGeom.h:54
std::map< int, ExpansionInfoShPtr > ExpansionInfoMap
Definition: MeshGraph.h:143
std::shared_ptr< Geometry3D > Geometry3DSharedPtr
Definition: Geometry3D.h:52
std::map< int, CompositeSharedPtr > CompositeMap
Definition: MeshGraph.h:138
The above copyright notice and this permission notice shall be included.
Definition: CoupledSolver.h:2
double NekDouble
std::vector< std::shared_ptr< Geometry > > m_geomVec
Definition: MeshGraph.h:134
ExpansionInfo(GeometrySharedPtr geomShPtr, const LibUtilities::BasisKeyVector basiskeyvec)
Definition: MeshGraph.h:150
LibUtilities::BasisKeyVector m_basisKeyVector
Definition: MeshGraph.h:163
ExpansionInfo(ExpansionInfoShPtr ExpInfo)
Definition: MeshGraph.h:156