Nektar++
|
#include <InputGmsh.h>
Public Member Functions | |
InputGmsh (NekMeshUtils::MeshSharedPtr m) | |
Set up InputGmsh object. More... | |
virtual | ~InputGmsh () |
virtual void | Process () |
![]() | |
NEKMESHUTILS_EXPORT | InputModule (MeshSharedPtr p_m) |
NEKMESHUTILS_EXPORT void | OpenStream () |
Open a file for input. More... | |
![]() | |
NEKMESHUTILS_EXPORT | Module (MeshSharedPtr p_m) |
NEKMESHUTILS_EXPORT void | RegisterConfig (std::string key, std::string value=std::string()) |
Register a configuration option with a module. More... | |
NEKMESHUTILS_EXPORT void | PrintConfig () |
Print out all configuration options for a module. More... | |
NEKMESHUTILS_EXPORT void | SetDefaults () |
Sets default configuration options for those which have not been set. More... | |
NEKMESHUTILS_EXPORT MeshSharedPtr | GetMesh () |
virtual NEKMESHUTILS_EXPORT void | ProcessVertices () |
Extract element vertices. More... | |
virtual NEKMESHUTILS_EXPORT void | ProcessEdges (bool ReprocessEdges=true) |
Extract element edges. More... | |
virtual NEKMESHUTILS_EXPORT void | ProcessFaces (bool ReprocessFaces=true) |
Extract element faces. More... | |
virtual NEKMESHUTILS_EXPORT void | ProcessElements () |
Generate element IDs. More... | |
virtual NEKMESHUTILS_EXPORT void | ProcessComposites () |
Generate composites. More... | |
virtual NEKMESHUTILS_EXPORT void | ClearElementLinks () |
Static Public Member Functions | |
static NekMeshUtils::ModuleSharedPtr | create (NekMeshUtils::MeshSharedPtr m) |
Creates an instance of this class. More... | |
static std::map< unsigned int, NekMeshUtils::ElmtConfig > | GenElmMap () |
static std::vector< int > | CreateReordering (unsigned int InputGmshEntity) |
Create a reordering map for a given element. More... | |
Static Public Attributes | |
static NekMeshUtils::ModuleKey | className |
ModuleKey for class. More... | |
static std::map< unsigned int, NekMeshUtils::ElmtConfig > | elmMap = InputGmsh::GenElmMap() |
Private Member Functions | |
int | GetNnodes (unsigned int InputGmshEntity) |
void | ReadNextNode () |
void | ReadNextNodeBlock (int nVertices=0) |
void | SaveNode (int id, NekDouble x=0, NekDouble y=0, NekDouble z=0) |
void | ReadNextElement (int tag=0, int elm_type=0) |
Static Private Member Functions | |
static std::vector< int > | TriReordering (NekMeshUtils::ElmtConfig conf) |
Create a reordering for triangles. More... | |
static std::vector< int > | QuadReordering (NekMeshUtils::ElmtConfig conf) |
Create a reordering for quadrilaterals. More... | |
static std::vector< int > | HexReordering (NekMeshUtils::ElmtConfig conf) |
Create a reordering for hexahedra. More... | |
static std::vector< int > | PrismReordering (NekMeshUtils::ElmtConfig conf) |
Create a reordering for prisms. More... | |
static std::vector< int > | TetReordering (NekMeshUtils::ElmtConfig conf) |
Create a reordering for tetrahedra. More... | |
static std::vector< int > | LineReordering (NekMeshUtils::ElmtConfig conf) |
Private Attributes | |
NekDouble | m_version |
int | m_prevId |
std::map< int, int > | m_idMap |
int | m_maxTagId |
std::unordered_map< int, std::vector< int > > | m_orderingMap |
Additional Inherited Members | |
![]() | |
NEKMESHUTILS_EXPORT void | PrintSummary () |
Print summary of elements. More... | |
![]() | |
NEKMESHUTILS_EXPORT void | ReorderPrisms (PerMap &perFaces) |
Reorder node IDs so that prisms and tetrahedra are aligned correctly. More... | |
NEKMESHUTILS_EXPORT void | PrismLines (int prism, PerMap &perFaces, std::set< int > &prismsDone, std::vector< ElementSharedPtr > &line) |
![]() | |
io::filtering_istream | m_mshFile |
Input stream. More... | |
std::ifstream | m_mshFileStream |
Input stream. More... | |
![]() | |
MeshSharedPtr | m_mesh |
Mesh object. More... | |
std::map< std::string, ConfigOption > | m_config |
List of configuration values. More... | |
Converter for Gmsh files.
Definition at line 48 of file InputGmsh.h.
Nektar::Utilities::InputGmsh::InputGmsh | ( | NekMeshUtils::MeshSharedPtr | m | ) |
Set up InputGmsh object.
Definition at line 700 of file InputGmsh.cpp.
|
virtual |
Definition at line 705 of file InputGmsh.cpp.
|
inlinestatic |
Creates an instance of this class.
Definition at line 56 of file InputGmsh.h.
References Nektar::MemoryManager< DataType >::AllocateSharedPtr().
|
static |
Create a reordering map for a given element.
Since Gmsh and Nektar++ have different vertex, edge and face orientations, we need to reorder the nodes in a Gmsh MSH file so that they work with the Nektar++ orderings, since this is what is used in the elements defined in the converter.
Definition at line 1218 of file InputGmsh.cpp.
References Nektar::LibUtilities::eHexahedron, elmMap, Nektar::LibUtilities::ePrism, Nektar::LibUtilities::eQuadrilateral, Nektar::LibUtilities::eSegment, Nektar::LibUtilities::eTetrahedron, Nektar::LibUtilities::eTriangle, HexReordering(), LineReordering(), PrismReordering(), QuadReordering(), TetReordering(), and TriReordering().
Referenced by Nektar::Utilities::OutputGmsh::Process(), and ReadNextElement().
|
static |
Definition at line 1890 of file InputGmsh.cpp.
References Nektar::LibUtilities::eHexahedron, Nektar::ePoint, Nektar::LibUtilities::ePrism, Nektar::LibUtilities::ePyramid, Nektar::LibUtilities::eQuadrilateral, Nektar::LibUtilities::eSegment, Nektar::LibUtilities::eTetrahedron, and Nektar::LibUtilities::eTriangle.
Referenced by Nektar::Utilities::OutputGmsh::OutputGmsh().
|
private |
For a given msh ID, return the corresponding number of nodes.
Definition at line 1162 of file InputGmsh.cpp.
References Nektar::LibUtilities::eHexahedron, elmMap, Nektar::LibUtilities::eNodalTriEvenlySpaced, Nektar::LibUtilities::ePoint, Nektar::LibUtilities::ePrism, Nektar::LibUtilities::ePyramid, Nektar::LibUtilities::eQuadrilateral, Nektar::LibUtilities::eSegment, Nektar::LibUtilities::eTetrahedron, Nektar::LibUtilities::eTriangle, Nektar::NekMeshUtils::Point::GetNumNodes(), Nektar::NekMeshUtils::Pyramid::GetNumNodes(), Nektar::NekMeshUtils::Line::GetNumNodes(), Nektar::NekMeshUtils::Prism::GetNumNodes(), Nektar::NekMeshUtils::Tetrahedron::GetNumNodes(), Nektar::NekMeshUtils::Quadrilateral::GetNumNodes(), Nektar::NekMeshUtils::Triangle::GetNumNodes(), and Nektar::NekMeshUtils::Hexahedron::GetNumNodes().
Referenced by ReadNextElement().
|
staticprivate |
Create a reordering for hexahedra.
Definition at line 1742 of file InputGmsh.cpp.
References Nektar::StdRegions::eDir1BwdDir1_Dir2FwdDir2, Nektar::StdRegions::eDir1FwdDir1_Dir2FwdDir2, Nektar::StdRegions::eDir1FwdDir2_Dir2FwdDir1, Nektar::Utilities::hexTensorNodeOrdering(), Nektar::NekMeshUtils::ElmtConfig::m_faceNodes, Nektar::NekMeshUtils::ElmtConfig::m_order, Nektar::NekMeshUtils::ElmtConfig::m_volumeNodes, and Nektar::Utilities::quadTensorNodeOrdering().
Referenced by CreateReordering().
|
staticprivate |
Definition at line 1258 of file InputGmsh.cpp.
References Nektar::NekMeshUtils::ElmtConfig::m_order.
Referenced by CreateReordering().
|
staticprivate |
Create a reordering for prisms.
Note that whilst Gmsh MSH files have the capability to support high-order prisms, presently Gmsh does not seem to be capable of generating higher than second-order prismatic meshes, so most of the following is untested.
Definition at line 1523 of file InputGmsh.cpp.
References Nektar::NekMeshUtils::HOTriangle< T >::Align(), Nektar::NekMeshUtils::HOQuadrilateral< T >::Align(), Nektar::NekMeshUtils::ElmtConfig::m_faceNodes, Nektar::NekMeshUtils::ElmtConfig::m_order, Nektar::NekMeshUtils::ElmtConfig::m_volumeNodes, Nektar::Utilities::prismTensorNodeOrdering(), Nektar::Utilities::quadTensorNodeOrdering(), Nektar::NekMeshUtils::HOTriangle< T >::surfVerts, Nektar::NekMeshUtils::HOQuadrilateral< T >::surfVerts, and Nektar::Utilities::triTensorNodeOrdering().
Referenced by CreateReordering().
|
virtual |
Gmsh file contains a list of nodes and their coordinates, along with a list of elements and those nodes which define them. We read in and store the list of nodes in #m_node and store the list of elements in #m_element. Each new element is supplied with a list of entries from m_node which defines the element. Finally some mesh statistics are printed.
pFilename | Filename of Gmsh file to read. |
Implements Nektar::NekMeshUtils::Module.
Definition at line 728 of file InputGmsh.cpp.
References ASSERTL0, m_maxTagId, Nektar::NekMeshUtils::Module::m_mesh, Nektar::NekMeshUtils::InputModule::m_mshFile, m_version, Nektar::Utilities::GmshEntity::maxX, Nektar::Utilities::GmshEntity::maxY, Nektar::Utilities::GmshEntity::maxZ, Nektar::Utilities::GmshEntity::minX, Nektar::Utilities::GmshEntity::minY, Nektar::Utilities::GmshEntity::minZ, Nektar::NekMeshUtils::InputModule::OpenStream(), Nektar::Utilities::GmshEntity::physicalTags, Nektar::NekMeshUtils::Module::ProcessComposites(), Nektar::NekMeshUtils::Module::ProcessEdges(), Nektar::NekMeshUtils::Module::ProcessElements(), Nektar::NekMeshUtils::Module::ProcessFaces(), Nektar::NekMeshUtils::Module::ProcessVertices(), ReadNextElement(), ReadNextNode(), ReadNextNodeBlock(), and Nektar::LibUtilities::ShapeTypeMap.
|
staticprivate |
Create a reordering for quadrilaterals.
Definition at line 1323 of file InputGmsh.cpp.
References Nektar::NekMeshUtils::ElmtConfig::m_faceNodes, Nektar::NekMeshUtils::ElmtConfig::m_order, and Nektar::Utilities::quadTensorNodeOrdering().
Referenced by CreateReordering().
|
private |
Read in next element
Definition at line 1069 of file InputGmsh.cpp.
References Nektar::LibUtilities::NekFactory< tKey, tBase, tParam >::CreateInstance(), CreateReordering(), elmMap, Nektar::NekMeshUtils::GetElementFactory(), GetNnodes(), m_idMap, m_maxTagId, Nektar::NekMeshUtils::Module::m_mesh, Nektar::NekMeshUtils::InputModule::m_mshFile, m_orderingMap, and m_version.
Referenced by Process().
|
private |
Read in next node
Definition at line 1009 of file InputGmsh.cpp.
References Nektar::NekMeshUtils::InputModule::m_mshFile, and SaveNode().
Referenced by Process().
|
private |
Read in next node block for v4 format
Definition at line 983 of file InputGmsh.cpp.
References Nektar::NekMeshUtils::InputModule::m_mshFile, and SaveNode().
Referenced by Process().
|
private |
Save node into mesh
Definition at line 1024 of file InputGmsh.cpp.
References m_idMap, Nektar::NekMeshUtils::Module::m_mesh, m_prevId, and class_topology::Node.
Referenced by ReadNextNode(), and ReadNextNodeBlock().
|
staticprivate |
Create a reordering for tetrahedra.
Definition at line 1371 of file InputGmsh.cpp.
References Nektar::NekMeshUtils::HOTriangle< T >::Align(), Nektar::NekMeshUtils::ElmtConfig::m_faceNodes, Nektar::NekMeshUtils::ElmtConfig::m_order, Nektar::NekMeshUtils::ElmtConfig::m_volumeNodes, Nektar::NekMeshUtils::HOTriangle< T >::surfVerts, Nektar::Utilities::tetTensorNodeOrdering(), and Nektar::Utilities::triTensorNodeOrdering().
Referenced by CreateReordering().
|
staticprivate |
Create a reordering for triangles.
Definition at line 1274 of file InputGmsh.cpp.
References Nektar::NekMeshUtils::ElmtConfig::m_faceNodes, Nektar::NekMeshUtils::ElmtConfig::m_order, and Nektar::Utilities::triTensorNodeOrdering().
Referenced by CreateReordering().
|
static |
|
static |
Element map; takes a msh id to an ElmtConfig object.
Definition at line 67 of file InputGmsh.h.
Referenced by CreateReordering(), GetNnodes(), and ReadNextElement().
|
private |
Definition at line 84 of file InputGmsh.h.
Referenced by ReadNextElement(), and SaveNode().
|
private |
Definition at line 86 of file InputGmsh.h.
Referenced by Process(), and ReadNextElement().
|
private |
Definition at line 90 of file InputGmsh.h.
Referenced by ReadNextElement().
|
private |
Definition at line 82 of file InputGmsh.h.
Referenced by SaveNode().
|
private |
Definition at line 80 of file InputGmsh.h.
Referenced by Process(), and ReadNextElement().