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
52
55
56class TiXmlDocument;
57
59{
60typedef std::map<int, std::pair<LibUtilities::ShapeType, std::vector<int>>>
62
64{
84};
85
86// Keep this consistent with the enums in ExpansionType.
87// This is used in the BC file to specify the expansion type.
88const std::string kExpansionTypeStr[] = {"NOTYPE",
89 "MODIFIED",
90 "MODIFIEDQUADPLUS1",
91 "MODIFIEDQUADPLUS2",
92 "MODIFIEDGLLRADAU10",
93 "ORTHOGONAL",
94 "GLL_LAGRANGE",
95 "GLL_LAGRANGE_SEM",
96 "GAUSS_LAGRANGE",
97 "GAUSS_LAGRANGE_SEM",
98 "FOURIER",
99 "FOURIERSINGLEMODE",
100 "FOURIERHALFMODERE",
101 "FOURIERHALFMODEIM",
102 "CHEBYSHEV",
103 "FOURIER-CHEBYSHEV",
104 "CHEBYSHEV-FOURIER",
105 "FOURIER-MODIFIED"};
106
107typedef std::map<int, std::vector<unsigned int>> CompositeOrdering;
108typedef std::map<int, std::vector<unsigned int>> BndRegionOrdering;
109
110// set restriction on domain range for post-processing.
111// struct DomainRange
112// {
113// bool m_doXrange;
114// NekDouble m_xmin;
115// NekDouble m_xmax;
116// bool m_doYrange;
117// NekDouble m_ymin;
118// NekDouble m_ymax;
119// bool m_doZrange;
120// NekDouble m_zmin;
121// NekDouble m_zmax;
122
123// bool m_checkShape;
124// LibUtilities::ShapeType m_shapeType;
125// };
126
127// typedef std::shared_ptr<DomainRange> DomainRangeShPtr;
128// static DomainRangeShPtr NullDomainRangeShPtr;
129
131{
132 std::vector<std::shared_ptr<Geometry>> m_geomVec;
133};
134
135typedef std::shared_ptr<Composite> CompositeSharedPtr;
136typedef std::map<int, CompositeSharedPtr> CompositeMap;
137
138struct ExpansionInfo;
139
140typedef std::shared_ptr<ExpansionInfo> ExpansionInfoShPtr;
141typedef std::map<int, ExpansionInfoShPtr> ExpansionInfoMap;
142
143typedef std::shared_ptr<ExpansionInfoMap> ExpansionInfoMapShPtr;
144typedef std::map<std::string, ExpansionInfoMapShPtr> ExpansionInfoMapShPtrMap;
145
147{
149 const LibUtilities::BasisKeyVector basiskeyvec)
150 : m_geomShPtr(geomShPtr), m_basisKeyVector(basiskeyvec)
151 {
152 }
153
155 : m_geomShPtr(ExpInfo->m_geomShPtr),
157 {
158 }
159
162};
163
164typedef std::map<std::string, std::string> GeomInfoMap;
165typedef std::shared_ptr<std::vector<std::pair<GeometrySharedPtr, int>>>
167
168// Forward declaration
169class RefRegion;
170
171typedef std::map<std::string, std::string> MeshMetaDataMap;
172
173class MeshGraph;
174typedef std::shared_ptr<MeshGraph> MeshGraphSharedPtr;
175
176class Movement;
177typedef std::shared_ptr<Movement> MovementSharedPtr;
178
179/// Base class for a spectral/hp element mesh.
181{
182public:
185
189 bool fillGraph = true,
190 SpatialDomains::MeshGraphSharedPtr partitionedGraph = nullptr);
191
193 const std::string &outfilename, bool defaultExp = false,
194 const LibUtilities::FieldMetaDataMap &metadata =
196
197 void Empty(int dim, int space)
198 {
199 m_meshDimension = dim;
200 m_spaceDimension = space;
201 }
202
203 /*transfers the minial data structure to full meshgraph*/
205
207
210
211 ////////////////////
213
214 /// Read refinement info.
216
217 /* ---- Helper functions ---- */
218 /// Dimension of the mesh (can be a 1D curve in 3D space).
220 {
221 return m_meshDimension;
222 }
223
224 /// Dimension of the space (can be a 1D curve in 3D space).
226 {
227 return m_spaceDimension;
228 }
229
230 /* Range definitions for postprorcessing */
232 NekDouble xmin, NekDouble xmax,
237
238 /// Check if goemetry is in range definition if activated
240
241 /// Check if goemetry is in range definition if activated
243
244 /* ---- Composites and Domain ---- */
246 {
247 ASSERTL0(m_meshComposites.find(whichComposite) !=
248 m_meshComposites.end(),
249 "Composite not found.");
250 return m_meshComposites.find(whichComposite)->second;
251 }
252
254 GetCompositeItem(int whichComposite, int whichItem);
255
257 const std::string &compositeStr, CompositeMap &compositeVector) const;
258
259 std::map<int, CompositeSharedPtr> &GetComposites()
260 {
261 return m_meshComposites;
262 }
263
264 std::map<int, std::string> &GetCompositesLabels()
265 {
266 return m_compositesLabels;
267 }
268
269 std::map<int, std::map<int, CompositeSharedPtr>> &GetDomain()
270 {
271 return m_domain;
272 }
273
274 std::map<int, CompositeSharedPtr> &GetDomain(int domain)
275 {
276 ASSERTL1(m_domain.count(domain),
277 "Request for domain which does not exist");
278 return m_domain[domain];
279 }
280
282 const std::string variable = "DefaultVar");
283
285 GeometrySharedPtr geom, const std::string variable = "DefaultVar");
286
287 /// Sets expansions given field definitions
289 std::vector<LibUtilities::FieldDefinitionsSharedPtr> &fielddef);
290
291 /// Sets expansions given field definition, quadrature points.
293 std::vector<LibUtilities::FieldDefinitionsSharedPtr> &fielddef,
294 std::vector<std::vector<LibUtilities::PointsType>> &pointstype);
295
296 /// Sets expansions to have equispaced points
298 int npoints = 0);
299
300 /// Reset expansion to have specified polynomial order \a nmodes
302
303 /// Reset expansion to have specified point order \a
304 /// npts
306 /// This function sets the expansion #exp in map with
307 /// entry #variable
308
309 /// Set refinement info.
311 ExpansionInfoMapShPtr &expansionMap);
312
313 /// Perform the p-refinement in the selected elements
315 ExpansionInfoMapShPtr &expansionMap, RefRegion *&region,
316 GeometrySharedPtr geomVecIter);
317
318 inline void SetExpansionInfo(const std::string variable,
320
322
323 /// Sets the basis key for all expansions of the given shape.
326 std::string var = "DefaultVar");
327
331
332 inline bool SameExpansionInfo(const std::string var1,
333 const std::string var2);
334
335 inline bool ExpansionInfoDefined(const std::string var);
336
337 inline bool CheckForGeomInfo(std::string parameter);
338
339 inline const std::string GetGeomInfo(std::string parameter);
340
343 const int order);
344
348 ExpansionType type_z, const int nummodes_x, const int nummodes_y,
349 const int nummodes_z);
350
351 /* ---- Manipulation of mesh ---- */
353 {
354 return m_vertSet.size();
355 }
356
358 {
359 return m_vertSet[id];
360 }
361
363 {
364 return m_segGeoms[id];
365 }
366
368 {
369 return m_curvedEdges;
370 }
372 {
373 return m_curvedFaces;
374 }
375
376 SPATIAL_DOMAINS_EXPORT std::map<int, PointGeomSharedPtr> &GetAllPointGeoms()
377 {
378 return m_vertSet;
379 }
380 SPATIAL_DOMAINS_EXPORT std::map<int, SegGeomSharedPtr> &GetAllSegGeoms()
381 {
382 return m_segGeoms;
383 }
385 {
386 return m_triGeoms;
387 }
389 {
390 return m_quadGeoms;
391 }
393 {
394 return m_tetGeoms;
395 }
397 {
398 return m_pyrGeoms;
399 }
401 {
402 return m_prismGeoms;
403 }
405 {
406 return m_hexGeoms;
407 }
408 SPATIAL_DOMAINS_EXPORT std::unordered_map<int, GeometryLinkSharedPtr>
410 {
411 return m_faceToElMap;
412 }
413
415
417 {
418 auto it1 = m_triGeoms.find(gID);
419 if (it1 != m_triGeoms.end())
420 {
421 return it1->second;
422 }
423
424 auto it2 = m_quadGeoms.find(gID);
425 if (it2 != m_quadGeoms.end())
426 {
427 return it2->second;
428 }
429
430 return Geometry2DSharedPtr();
431 };
432
435
438
440
442 {
443 return m_compOrder;
444 }
445
447 {
448 m_compOrder = p_compOrder;
449 }
450
452 {
453 return m_bndRegOrder;
454 }
455
457 {
458 m_bndRegOrder = p_bndRegOrder;
459 }
460
461 /*an inital read which loads a very light weight data structure*/
463 bool fillGraph);
466
467 SPATIAL_DOMAINS_EXPORT std::map<int, MeshEntity> CreateMeshEntities();
469
471 {
472 return m_movement;
473 }
474
475protected:
477 const std::string &outfilename, bool defaultExp = false,
478 const LibUtilities::FieldMetaDataMap &metadata =
481 LibUtilities::DomainRangeShPtr rng, bool fillGraph) = 0;
484
485 void PopulateFaceToElMap(Geometry3DSharedPtr element, int kNfaces);
487 std::string GetCompositeString(CompositeSharedPtr comp);
488
491
494
496
503
507 bool m_meshPartitioned = false;
509
510 // Refinement attributes (class members)
511 /// Link the refinement id with the composites
512 std::map<int, CompositeMap> m_refComposite;
513 // std::map<int, LibUtilities::BasisKeyVector> m_refBasis;
514 /// Link the refinement id with the surface region data
515 std::map<int, RefRegion *> m_refRegion;
516 bool m_refFlag = false;
517
519 std::map<int, std::string> m_compositesLabels;
520 std::map<int, CompositeMap> m_domain;
522
524
525 std::unordered_map<int, GeometryLinkSharedPtr> m_faceToElMap;
526
527 TiXmlElement *m_xmlGeom;
528
531
532 struct GeomRTree;
533 std::unique_ptr<GeomRTree> m_boundingBoxTree;
535};
536typedef std::shared_ptr<MeshGraph> MeshGraphSharedPtr;
538
540
541/**
542 *
543 */
545 const std::string &outfilename, bool defaultExp,
546 const LibUtilities::FieldMetaDataMap &metadata)
547{
548 v_WriteGeometry(outfilename, defaultExp, metadata);
549}
550
551/**
552 *
553 */
555 bool fillGraph)
556{
557 v_ReadGeometry(rng, fillGraph);
558}
559
560/**
561 *
562 */
565{
566 v_PartitionMesh(session);
567}
568
569/**
570 *
571 */
572void MeshGraph::SetExpansionInfo(const std::string variable,
574{
575 if (m_expansionMapShPtrMap.count(variable) != 0)
576 {
577 ASSERTL0(
578 false,
579 (std::string("ExpansionInfo field is already set for variable ") +
580 variable)
581 .c_str());
582 }
583 else
584 {
585 m_expansionMapShPtrMap[variable] = exp;
586 }
587}
588
589/**
590 *
591 */
592inline bool MeshGraph::SameExpansionInfo(const std::string var1,
593 const std::string var2)
594{
595 ExpansionInfoMapShPtr expVec1 = m_expansionMapShPtrMap.find(var1)->second;
596 ExpansionInfoMapShPtr expVec2 = m_expansionMapShPtrMap.find(var2)->second;
597
598 if (expVec1.get() == expVec2.get())
599 {
600 return true;
601 }
602
603 return false;
604}
605
606/**
607 *
608 */
609inline bool MeshGraph::ExpansionInfoDefined(const std::string var)
610{
611 return m_expansionMapShPtrMap.count(var);
612}
613
614} // namespace Nektar::SpatialDomains
615
616#endif
#define ASSERTL0(condition, msg)
Definition: ErrorUtil.hpp:208
#define ASSERTL1(condition, msg)
Assert Level 1 – Debugging which is used whether in FULLDEBUG or DEBUG compilation mode....
Definition: ErrorUtil.hpp:242
#define SPATIAL_DOMAINS_EXPORT
Provides a generic Factory class.
Definition: NekFactory.hpp:104
2D geometry information
Definition: Geometry2D.h:66
3D geometry information
Definition: Geometry3D.h:65
Base class for a spectral/hp element mesh.
Definition: MeshGraph.h:181
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:4129
std::map< int, SegGeomSharedPtr > & GetAllSegGeoms()
Definition: MeshGraph.h:380
bool CheckRange(Geometry2D &geom)
Check if goemetry is in range definition if activated.
Definition: MeshGraph.cpp:353
std::map< int, RefRegion * > m_refRegion
Link the refinement id with the surface region data.
Definition: MeshGraph.h:515
void SetCompositeOrdering(CompositeOrdering p_compOrder)
Definition: MeshGraph.h:446
int GetMeshDimension()
Dimension of the mesh (can be a 1D curve in 3D space).
Definition: MeshGraph.h:219
const std::string GetGeomInfo(std::string parameter)
void ReadGeometry(LibUtilities::DomainRangeShPtr rng, bool fillGraph)
Definition: MeshGraph.h:554
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:3977
void SetRefinementInfo(ExpansionInfoMapShPtr &expansionMap)
This function sets the expansion #exp in map with entry #variable.
Definition: MeshGraph.cpp:2731
Geometry2DSharedPtr GetGeometry2D(int gID)
Definition: MeshGraph.h:416
std::map< int, std::map< int, CompositeSharedPtr > > & GetDomain()
Definition: MeshGraph.h:269
void SetExpansionInfoToEvenlySpacedPoints(int npoints=0)
Sets expansions to have equispaced points.
Definition: MeshGraph.cpp:1495
std::map< int, CompositeSharedPtr > & GetComposites()
Definition: MeshGraph.h:259
std::unordered_map< int, GeometryLinkSharedPtr > & GetAllFaceToElMap()
Definition: MeshGraph.h:409
LibUtilities::SessionReaderSharedPtr m_session
Definition: MeshGraph.h:489
std::map< int, CompositeMap > m_domain
Definition: MeshGraph.h:520
void SetPartition(SpatialDomains::MeshGraphSharedPtr graph)
Definition: MeshGraph.cpp:179
std::unique_ptr< GeomRTree > m_boundingBoxTree
Definition: MeshGraph.h:533
ExpansionInfoMapShPtr SetUpExpansionInfoMap()
Definition: MeshGraph.cpp:2581
std::map< int, CompositeSharedPtr > & GetDomain(int domain)
Definition: MeshGraph.h:274
void SetExpansionInfoToPointOrder(int npts)
Reset expansion to have specified point order npts.
Definition: MeshGraph.cpp:1570
bool SameExpansionInfo(const std::string var1, const std::string var2)
Definition: MeshGraph.h:592
virtual void v_WriteGeometry(const std::string &outfilename, bool defaultExp=false, const LibUtilities::FieldMetaDataMap &metadata=LibUtilities::NullFieldMetaDataMap)=0
CompositeOrdering m_compOrder
Definition: MeshGraph.h:529
std::map< int, CompositeMap > m_refComposite
Link the refinement id with the composites.
Definition: MeshGraph.h:512
bool ExpansionInfoDefined(const std::string var)
Definition: MeshGraph.h:609
void GetCompositeList(const std::string &compositeStr, CompositeMap &compositeVector) const
Definition: MeshGraph.cpp:600
virtual void v_PartitionMesh(LibUtilities::SessionReaderSharedPtr session)=0
void Empty(int dim, int space)
Definition: MeshGraph.h:197
const ExpansionInfoMap & GetExpansionInfo(const std::string variable="DefaultVar")
Definition: MeshGraph.cpp:653
GeometryLinkSharedPtr GetElementsFromEdge(Geometry1DSharedPtr edge)
Definition: MeshGraph.cpp:3904
GeometrySharedPtr GetCompositeItem(int whichComposite, int whichItem)
Definition: MeshGraph.cpp:561
ExpansionInfoMapShPtrMap m_expansionMapShPtrMap
Definition: MeshGraph.h:523
void PRefinementElmts(ExpansionInfoMapShPtr &expansionMap, RefRegion *&region, GeometrySharedPtr geomVecIter)
Perform the p-refinement in the selected elements.
Definition: MeshGraph.cpp:2670
int GetSpaceDimension()
Dimension of the space (can be a 1D curve in 3D space).
Definition: MeshGraph.h:225
MovementSharedPtr m_movement
Definition: MeshGraph.h:534
BndRegionOrdering & GetBndRegionOrdering()
Definition: MeshGraph.h:451
std::string GetCompositeString(CompositeSharedPtr comp)
Returns a string representation of a composite.
Definition: MeshGraph.cpp:2625
void ResetExpansionInfoToBasisKey(ExpansionInfoMapShPtr &expansionMap, LibUtilities::ShapeType shape, LibUtilities::BasisKeyVector &keys)
Definition: MeshGraph.cpp:1615
void SetExpansionInfoToNumModes(int nmodes)
Reset expansion to have specified polynomial order nmodes.
Definition: MeshGraph.cpp:1537
std::unordered_map< int, GeometryLinkSharedPtr > m_faceToElMap
Definition: MeshGraph.h:525
MovementSharedPtr & GetMovement()
Definition: MeshGraph.h:470
CompositeSharedPtr GetComposite(int whichComposite)
Definition: MeshGraph.h:245
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:706
void SetBndRegionOrdering(BndRegionOrdering p_bndRegOrder)
Definition: MeshGraph.h:456
CompositeOrdering & GetCompositeOrdering()
Definition: MeshGraph.h:441
std::map< int, MeshEntity > CreateMeshEntities()
Create mesh entities for this graph.
Definition: MeshGraph.cpp:4008
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:2347
std::map< int, PointGeomSharedPtr > & GetAllPointGeoms()
Definition: MeshGraph.h:376
bool CheckForGeomInfo(std::string parameter)
SegGeomSharedPtr GetSegGeom(int id)
Definition: MeshGraph.h:362
CompositeDescriptor CreateCompositeDescriptor()
Definition: MeshGraph.cpp:4108
GeometryLinkSharedPtr GetElementsFromFace(Geometry2DSharedPtr face)
Definition: MeshGraph.cpp:3959
void ReadRefinementInfo()
Read refinement info.
Definition: MeshGraph.cpp:2774
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:1607
std::map< int, std::string > m_compositesLabels
Definition: MeshGraph.h:519
std::vector< int > GetElementsContainingPoint(PointGeomSharedPtr p)
Definition: MeshGraph.cpp:299
PointGeomSharedPtr GetVertex(int id)
Definition: MeshGraph.h:357
PrismGeomMap & GetAllPrismGeoms()
Definition: MeshGraph.h:400
std::map< int, std::string > & GetCompositesLabels()
Definition: MeshGraph.h:264
void PartitionMesh(LibUtilities::SessionReaderSharedPtr session)
Definition: MeshGraph.h:563
static LibUtilities::BasisKeyVector DefineBasisKeyFromExpansionType(GeometrySharedPtr in, ExpansionType type, const int order)
Definition: MeshGraph.cpp:1632
void WriteGeometry(const std::string &outfilename, bool defaultExp=false, const LibUtilities::FieldMetaDataMap &metadata=LibUtilities::NullFieldMetaDataMap)
Definition: MeshGraph.h:544
void SetSession(LibUtilities::SessionReaderSharedPtr pSession)
static MeshGraphSharedPtr Read(const LibUtilities::SessionReaderSharedPtr pSession, LibUtilities::DomainRangeShPtr rng=LibUtilities::NullDomainRangeShPtr, bool fillGraph=true, SpatialDomains::MeshGraphSharedPtr partitionedGraph=nullptr)
Definition: MeshGraph.cpp:115
LibUtilities::DomainRangeShPtr m_domainRange
Definition: MeshGraph.h:521
BndRegionOrdering m_bndRegOrder
Definition: MeshGraph.h:530
Abstract base class for the refinement surface region.
Definition: RefRegion.h:51
std::vector< BasisKey > BasisKeyVector
Name for a vector of BasisKeys.
std::map< std::string, std::string > FieldMetaDataMap
Definition: FieldIO.h:50
std::shared_ptr< SessionReader > SessionReaderSharedPtr
static FieldMetaDataMap NullFieldMetaDataMap
Definition: FieldIO.h:51
std::shared_ptr< DomainRange > DomainRangeShPtr
Definition: DomainRange.h:64
static DomainRangeShPtr NullDomainRangeShPtr
Definition: DomainRange.h:65
static const NekDouble kNekUnsetDouble
std::map< int, TriGeomSharedPtr > TriGeomMap
Definition: TriGeom.h:57
std::map< std::string, std::string > GeomInfoMap
Definition: MeshGraph.h:164
std::map< int, std::vector< unsigned int > > CompositeOrdering
Definition: MeshGraph.h:107
std::map< int, PyrGeomSharedPtr > PyrGeomMap
Definition: PyrGeom.h:76
std::map< int, QuadGeomSharedPtr > QuadGeomMap
Definition: QuadGeom.h:52
std::map< int, std::pair< LibUtilities::ShapeType, std::vector< int > > > CompositeDescriptor
Definition: MeshGraph.h:61
std::shared_ptr< std::vector< std::pair< GeometrySharedPtr, int > > > GeometryLinkSharedPtr
Definition: MeshGraph.h:166
std::map< int, std::vector< unsigned int > > BndRegionOrdering
Definition: MeshGraph.h:108
std::shared_ptr< Composite > CompositeSharedPtr
Definition: MeshGraph.h:135
std::shared_ptr< ExpansionInfoMap > ExpansionInfoMapShPtr
Definition: MeshGraph.h:143
std::map< int, SegGeomSharedPtr > SegGeomMap
Definition: SegGeom.h:49
std::shared_ptr< Movement > MovementSharedPtr
Definition: MeshGraph.h:177
std::unordered_map< int, CurveSharedPtr > CurveMap
Definition: Curve.hpp:59
LibUtilities::NekFactory< std::string, MeshGraph > MeshGraphFactory
Definition: MeshGraph.h:537
std::shared_ptr< SegGeom > SegGeomSharedPtr
Definition: Geometry2D.h:59
std::map< int, TetGeomSharedPtr > TetGeomMap
Definition: TetGeom.h:84
std::shared_ptr< ExpansionInfo > ExpansionInfoShPtr
Definition: MeshGraph.h:140
const std::string kExpansionTypeStr[]
Definition: MeshGraph.h:88
std::shared_ptr< MeshGraph > MeshGraphSharedPtr
Definition: MeshGraph.h:174
std::map< std::string, std::string > MeshMetaDataMap
Definition: MeshGraph.h:171
std::map< int, PrismGeomSharedPtr > PrismGeomMap
Definition: PrismGeom.h:83
std::shared_ptr< PointGeom > PointGeomSharedPtr
Definition: Geometry.h:57
std::shared_ptr< Geometry2D > Geometry2DSharedPtr
Definition: Geometry.h:62
std::shared_ptr< Geometry > GeometrySharedPtr
Definition: Geometry.h:51
MeshGraphFactory & GetMeshGraphFactory()
Definition: MeshGraph.cpp:77
std::shared_ptr< Geometry1D > Geometry1DSharedPtr
Definition: Geometry.h:61
std::map< std::string, ExpansionInfoMapShPtr > ExpansionInfoMapShPtrMap
Definition: MeshGraph.h:144
std::map< int, HexGeomSharedPtr > HexGeomMap
Definition: HexGeom.h:85
std::map< int, PointGeomSharedPtr > PointGeomMap
Definition: PointGeom.h:51
std::map< int, ExpansionInfoShPtr > ExpansionInfoMap
Definition: MeshGraph.h:141
std::shared_ptr< Geometry3D > Geometry3DSharedPtr
Definition: Geometry3D.h:50
std::map< int, CompositeSharedPtr > CompositeMap
Definition: MeshGraph.h:136
double NekDouble
std::vector< std::shared_ptr< Geometry > > m_geomVec
Definition: MeshGraph.h:132
ExpansionInfo(GeometrySharedPtr geomShPtr, const LibUtilities::BasisKeyVector basiskeyvec)
Definition: MeshGraph.h:148
LibUtilities::BasisKeyVector m_basisKeyVector
Definition: MeshGraph.h:161
ExpansionInfo(ExpansionInfoShPtr ExpInfo)
Definition: MeshGraph.h:154