35 #ifndef NEKTAR_SPATIALDOMAINS_MESHGRAPH_H 
   36 #define NEKTAR_SPATIALDOMAINS_MESHGRAPH_H 
   38 #include <boost/unordered_map.hpp> 
   59     namespace SpatialDomains
 
  192                         unsigned int meshDimension,
 
  193                         unsigned int spaceDimension);
 
  197                         const DomainRangeShPtr &rng = NullDomainRangeShPtr);
 
  206                         DomainRangeShPtr &rng = NullDomainRangeShPtr);
 
  210                         const std::string& infilename,
 
  211                         bool pReadExpansions = 
true);
 
  216                         const std::string& infilename);
 
  224                         const std::string &infilename);
 
  232                         const std::string &infilename);
 
  245                         std::string &infilename);
 
  248                         std::string &outfilename);
 
  276                 inline Composite 
GetComposite(
int whichComposite) 
const;
 
  283                         const std::string &compositeStr,
 
  284                         CompositeMap &compositeVector) 
const;
 
  289                 inline const std::vector<CompositeMap> &
GetDomain(
void) 
const;
 
  291                 inline const CompositeMap &
GetDomain(
int domain) 
const;
 
  298                         const std::string variable);
 
  305                         std::vector<LibUtilities::FieldDefinitionsSharedPtr>
 
  310                         std::vector<LibUtilities::FieldDefinitionsSharedPtr>
 
  312                         std::vector< std::vector<LibUtilities::PointsType> >
 
  329                         const std::string variable,
 
  330                         ExpansionMapShPtr &exp);
 
  336                         std::string var = 
"DefaultVar");
 
  339                         const std::string var1,
 
  340                         const std::string var2);
 
  344                 inline const std::string 
GetGeomInfo(std::string parameter);
 
  358                         const int nummodes_x,
 
  359                         const int nummodes_y,
 
  360                         const int nummodes_z);
 
  405                 template<
typename ElementType>
 
  470                     "Composite not found.");
 
  507             ASSERTL1(domain < 
m_domain.size(),
"Request for domain which does not exist");
 
  517             std::string defstr = 
"DefaultVar";
 
  529                 ASSERTL0(
false,(std::string(
"Expansion field is already set for variable ") + variable).c_str());
 
  546             if(expVec1.get() == expVec2.get())
 
  570                     "Parameter " + parameter + 
" does not exist.");
 
  592                      "Vertex " + boost::lexical_cast<std::string>(id)
 
const std::map< int, boost::shared_ptr< ElementType > > & GetAllElementsOfType() const 
Convenience method for ElVis. 
 
std::map< std::string, std::string > GeomInfoMap
 
void SetExpansions(std::vector< LibUtilities::FieldDefinitionsSharedPtr > &fielddef)
Sets expansions given field definitions. 
 
boost::shared_ptr< PyrGeom > PyrGeomSharedPtr
 
#define ASSERTL0(condition, msg)
 
const std::vector< CompositeMap > & GetDomain(void) const 
 
LibUtilities::ShapeType m_shapeType
 
LibUtilities::SessionReaderSharedPtr m_session
 
int GetSpaceDimension() const 
Dimension of the space (can be a 1D curve in 3D space). 
 
boost::shared_ptr< ElementFaceVector > ElementFaceVectorSharedPtr
 
CurveMap & GetCurvedFaces()
 
std::map< int, std::string > m_compositesLabels
 
std::map< int, ExpansionShPtr >::const_iterator ExpansionMapConstIter
 
const PrismGeomMap & GetAllPrismGeoms() const 
 
void SetExpansionsToPolyOrder(int nmodes)
Reset expansion to have specified polynomial order nmodes. 
 
PrismGeomMap m_prismGeoms
 
static boost::shared_ptr< MeshGraph > Read(const LibUtilities::SessionReaderSharedPtr &pSession, DomainRangeShPtr &rng=NullDomainRangeShPtr)
 
void ReadCurves(TiXmlDocument &doc)
 
std::vector< PointGeomSharedPtr > PointGeomVector
 
PrismGeomSharedPtr AddPrism(TriGeomSharedPtr tfaces[PrismGeom::kNtfaces], QuadGeomSharedPtr qfaces[PrismGeom::kNqfaces])
 
CompositeMap m_meshComposites
 
boost::shared_ptr< QuadGeom > QuadGeomSharedPtr
 
int GetMeshDimension() const 
Dimension of the mesh (can be a 1D curve in 3D space). 
 
PointGeomSharedPtr GetVertex(int id)
 
boost::shared_ptr< InterfaceComponent > SharedInterfaceCompPtr
 
std::map< int, PrismGeomSharedPtr > PrismGeomMap
 
std::vector< ElementFaceSharedPtr > ElementFaceVector
 
bool SameExpansions(const std::string var1, const std::string var2)
 
const SegGeomMap & GetAllSegGeoms() const 
 
static const int kNtfaces
 
boost::shared_ptr< HexGeom > HexGeomSharedPtr
 
PointGeomSharedPtr AddVertex(NekDouble x, NekDouble y, NekDouble z)
Adds a vertex to the with the next available ID. 
 
std::map< int, PyrGeomSharedPtr > PyrGeomMap
 
Expansion(GeometrySharedPtr geomShPtr, const LibUtilities::BasisKeyVector basiskeyvec)
 
QuadGeomSharedPtr AddQuadrilateral(SegGeomSharedPtr edges[], StdRegions::Orientation orient[])
 
boost::shared_ptr< SessionReader > SessionReaderSharedPtr
 
virtual void ReadGeometry(const std::string &infilename)
Read will read the meshgraph vertices given a filename. 
 
boost::shared_ptr< Curve > CurveSharedPtr
 
const ExpansionMap & GetExpansions()
 
static LibUtilities::BasisKeyVector DefineBasisKeyFromExpansionType(GeometrySharedPtr in, ExpansionType type, const int order)
 
std::map< int, TetGeomSharedPtr > TetGeomMap
 
bool CheckForGeomInfo(std::string parameter)
 
std::map< int, TriGeomSharedPtr > TriGeomMap
 
const PyrGeomMap & GetAllPyrGeoms() const 
 
void SetExpansionsToPointOrder(int npts)
Reset expansion to have specified point order npts. 
 
TriGeomSharedPtr AddTriangle(SegGeomSharedPtr edges[], StdRegions::Orientation orient[])
 
DomainRangeShPtr m_domainRange
 
boost::shared_ptr< ElementEdge > ElementEdgeSharedPtr
 
void WriteGeometry(std::string &outfilename)
Write out an XML file containing the GEOMETRY block representing this MeshGraph instance inside a NEK...
 
std::map< int, PointGeomSharedPtr > PointGeomMap
 
GeometrySharedPtr m_Element
 
GeometrySharedPtr GetCompositeItem(int whichComposite, int whichItem)
 
boost::shared_ptr< ExpansionMap > ExpansionMapShPtr
 
SegGeomSharedPtr AddEdge(PointGeomSharedPtr v0, PointGeomSharedPtr v1, CurveSharedPtr curveDefinition=CurveSharedPtr())
Adds an edge between two points. If curveDefinition is null, then the edge is straight, otherwise it is curved according to the curveDefinition. 
 
static const int kNqfaces
 
Composite GetComposite(int whichComposite) const 
 
boost::shared_ptr< SegGeom > SegGeomSharedPtr
 
const PointGeomMap & GetAllPointGeoms() const 
 
std::map< std::string, ExpansionMapShPtr >::iterator ExpansionMapShPtrMapIter
 
const HexGeomMap & GetAllHexGeoms() const 
 
CurveMap & GetCurvedEdges()
 
std::map< int, Composite >::const_iterator CompositeMapConstIter
 
std::map< int, SegGeomSharedPtr > SegGeomMap
 
boost::shared_ptr< DomainRange > DomainRangeShPtr
 
PyrGeomSharedPtr AddPyramid(TriGeomSharedPtr tfaces[PyrGeom::kNtfaces], QuadGeomSharedPtr qfaces[PyrGeom::kNqfaces])
 
std::map< int, Composite >::iterator CompositeMapIter
 
GeometrySharedPtr m_geomShPtr
 
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)
 
std::vector< BasisKey > BasisKeyVector
Name for a vector of BasisKeys. 
 
std::map< std::string, ExpansionMapShPtr > ExpansionMapShPtrMap
 
boost::shared_ptr< GeometryVector > Composite
 
static const NekDouble kNekUnsetDouble
 
boost::shared_ptr< ElementFace > ElementFaceSharedPtr
 
std::map< int, Composite > CompositeMap
 
const std::string GetGeomInfo(std::string parameter)
 
const PointGeomMap & GetVertSet() const 
 
static const int kNtfaces
 
SegGeomSharedPtr GetEdge(unsigned int id)
 
const QuadGeomMap & GetAllQuadGeoms() const 
 
boost::shared_ptr< ElementEdgeVector > ElementEdgeVectorSharedPtr
 
void ReadGeometryInfo(const std::string &infilename)
Read geometric information from a file. 
 
StandardMatrixTag boost::call_traits< LhsDataType >::const_reference rhs typedef NekMatrix< LhsDataType, StandardMatrixTag >::iterator iterator
 
std::map< int, QuadGeomSharedPtr > QuadGeomMap
 
static const int kNqfaces
 
std::vector< CompositeMap > m_domain
 
void GetCompositeList(const std::string &compositeStr, CompositeMap &compositeVector) const 
 
static DomainRangeShPtr NullDomainRangeShPtr
 
boost::shared_ptr< Expansion > ExpansionShPtr
 
ExpansionMapShPtrMap m_expansionMapShPtrMap
 
Base class for a spectral/hp element mesh. 
 
std::list< SharedInterfaceCompPtr > InterfaceCompList
 
void ReadDomain(TiXmlDocument &doc)
 
boost::shared_ptr< PrismGeom > PrismGeomSharedPtr
 
void SetDomainRange(NekDouble xmin, NekDouble xmax, NekDouble ymin=NekConstants::kNekUnsetDouble, NekDouble ymax=NekConstants::kNekUnsetDouble, NekDouble zmin=NekConstants::kNekUnsetDouble, NekDouble zmax=NekConstants::kNekUnsetDouble)
 
bool CheckRange(Geometry2D &geom)
Check if goemetry is in range definition if activated. 
 
void SetBasisKey(LibUtilities::ShapeType shape, LibUtilities::BasisKeyVector &keys, std::string var="DefaultVar")
Sets the basis key for all expansions of the given shape. 
 
ExpansionShPtr GetExpansion(GeometrySharedPtr geom, const std::string variable="DefaultVar")
 
boost::shared_ptr< TetGeom > TetGeomSharedPtr
 
boost::shared_ptr< TriGeom > TriGeomSharedPtr
 
HexGeomSharedPtr AddHexahedron(QuadGeomSharedPtr qfaces[HexGeom::kNqfaces])
 
ExpansionMapShPtr SetUpExpansionMap(void)
 
void ReadExpansions(const std::string &infilename)
Read the expansions given the XML file path. 
 
boost::unordered_map< int, CurveSharedPtr > CurveMap
 
static const int kNqfaces
 
const CompositeMap & GetComposites() const 
 
const std::string kExpansionTypeStr[]
 
static const int kNtfaces
 
const TetGeomMap & GetAllTetGeoms() const 
 
#define ASSERTL1(condition, msg)
Assert Level 1 – Debugging which is used whether in FULLDEBUG or DEBUG compilation mode...
 
boost::shared_ptr< MeshGraph > MeshGraphSharedPtr
 
std::map< int, HexGeomSharedPtr > HexGeomMap
 
boost::shared_ptr< Geometry > GeometrySharedPtr
 
void SetExpansionsToEvenlySpacedPoints(int npoints=0)
Sets expansions to have equispaced points. 
 
GeometrySharedPtr m_Element
 
boost::shared_ptr< PointGeom > PointGeomSharedPtr
 
#define SPATIAL_DOMAINS_EXPORT
 
LibUtilities::BasisKeyVector m_basisKeyVector
 
std::map< int, ExpansionShPtr > ExpansionMap
 
TetGeomSharedPtr AddTetrahedron(TriGeomSharedPtr tfaces[TetGeom::kNtfaces])
 
const std::map< int, std::string > & GetCompositesLabels() const 
Return a map of integers and strings containing the labels of each composite. 
 
InterfaceCompList m_iComps
 
std::map< int, ExpansionShPtr >::iterator ExpansionMapIter
 
std::vector< ElementEdgeSharedPtr > ElementEdgeVector
 
const TriGeomMap & GetAllTriGeoms() const