Nektar++
|
A 3-dimensional four-faced element. More...
#include <Tetrahedron.h>
Public Member Functions | |
NEKMESHUTILS_EXPORT | Tetrahedron (ElmtConfig pConf, std::vector< NodeSharedPtr > pNodeList, std::vector< int > pTagList) |
Create a tetrahedron element. More... | |
NEKMESHUTILS_EXPORT | Tetrahedron (const Tetrahedron &pSrc) |
virtual NEKMESHUTILS_EXPORT | ~Tetrahedron () |
virtual NEKMESHUTILS_EXPORT SpatialDomains::GeometrySharedPtr | GetGeom (int coordDim) |
Generate a Nektar++ geometry object for this element. More... | |
virtual NEKMESHUTILS_EXPORT void | Complete (int order) |
Public Member Functions inherited from Nektar::NekMeshUtils::Element | |
NEKMESHUTILS_EXPORT | Element (ElmtConfig pConf, unsigned int pNumNodes, unsigned int pGotNodes) |
NEKMESHUTILS_EXPORT unsigned int | GetId () const |
Returns the ID of the element (or associated edge or face for boundary elements). More... | |
NEKMESHUTILS_EXPORT unsigned int | GetDim () const |
Returns the expansion dimension of the element. More... | |
NEKMESHUTILS_EXPORT ElmtConfig | GetConf () const |
Returns the configuration of the element. More... | |
NEKMESHUTILS_EXPORT std::string | GetTag () const |
Returns the tag which defines the element shape. More... | |
NEKMESHUTILS_EXPORT NodeSharedPtr | GetVertex (unsigned int i) const |
Access a vertex node. More... | |
NEKMESHUTILS_EXPORT EdgeSharedPtr | GetEdge (unsigned int i) const |
Access an edge. More... | |
NEKMESHUTILS_EXPORT FaceSharedPtr | GetFace (unsigned int i) const |
Access a face. More... | |
NEKMESHUTILS_EXPORT std::vector< NodeSharedPtr > | GetVertexList () const |
Access the list of vertex nodes. More... | |
NEKMESHUTILS_EXPORT std::vector< EdgeSharedPtr > | GetEdgeList () const |
Access the list of edges. More... | |
NEKMESHUTILS_EXPORT std::vector< FaceSharedPtr > | GetFaceList () const |
Access the list of faces. More... | |
NEKMESHUTILS_EXPORT std::vector< NodeSharedPtr > | GetVolumeNodes () const |
Access the list of volume nodes. More... | |
NEKMESHUTILS_EXPORT void | SetVolumeNodes (std::vector< NodeSharedPtr > &nodes) |
NEKMESHUTILS_EXPORT LibUtilities::PointsType | GetCurveType () const |
NEKMESHUTILS_EXPORT void | SetCurveType (LibUtilities::PointsType cT) |
NEKMESHUTILS_EXPORT unsigned int | GetNodeCount () const |
Returns the total number of nodes (vertices, edge nodes and face nodes and volume nodes). More... | |
NEKMESHUTILS_EXPORT std::vector< int > | GetTagList () const |
Access the list of tags associated with this element. More... | |
NEKMESHUTILS_EXPORT unsigned int | GetVertexCount () const |
Returns the number of vertices. More... | |
NEKMESHUTILS_EXPORT unsigned int | GetEdgeCount () const |
Returns the number of edges. More... | |
NEKMESHUTILS_EXPORT unsigned int | GetFaceCount () const |
Returns the number of faces. More... | |
NEKMESHUTILS_EXPORT void | SetId (unsigned int p) |
Change the ID of the element. More... | |
NEKMESHUTILS_EXPORT void | SetVertex (unsigned int p, NodeSharedPtr pNew) |
Replace a vertex with another vertex object. More... | |
NEKMESHUTILS_EXPORT void | SetEdge (unsigned int p, EdgeSharedPtr pNew) |
Replace an edge with another edge object. More... | |
NEKMESHUTILS_EXPORT void | SetFace (unsigned int p, FaceSharedPtr pNew) |
Replace a face with another face object. More... | |
NEKMESHUTILS_EXPORT void | SetEdgeLink (EdgeSharedPtr pLink) |
Set a correspondence between this element and an edge (2D boundary element). More... | |
NEKMESHUTILS_EXPORT EdgeSharedPtr | GetEdgeLink () |
Get correspondence between this element and an edge. More... | |
NEKMESHUTILS_EXPORT void | SetFaceLink (FaceSharedPtr pLink) |
Set a correspondence between this element and a face (3D boundary element). More... | |
NEKMESHUTILS_EXPORT FaceSharedPtr | GetFaceLink () |
Get correspondence between this element and a face. More... | |
NEKMESHUTILS_EXPORT void | SetBoundaryLink (int i, int j) |
Set a correspondence between edge or face i and its representative boundary element m->element[expDim-1][j]. More... | |
NEKMESHUTILS_EXPORT int | GetBoundaryLink (int i) |
Get the location of the boundary face/edge i for this element. More... | |
NEKMESHUTILS_EXPORT void | SetTagList (const std::vector< int > &tags) |
Set the list of tags associated with this element. More... | |
virtual NEKMESHUTILS_EXPORT std::string | GetXmlString () const |
Generate a list of vertices (1D), edges (2D), or faces (3D). More... | |
NEKMESHUTILS_EXPORT void | GetCurvedNodes (std::vector< NodeSharedPtr > &nodeList) const |
NEKMESHUTILS_EXPORT std::string | GetXmlCurveString () const |
Generates a string listing the coordinates of all nodes associated with this element. More... | |
NEKMESHUTILS_EXPORT int | GetMaxOrder () |
Obtain the order of an element by looking at edges. More... | |
NEKMESHUTILS_EXPORT void | Print () |
Static Public Member Functions | |
static ElementSharedPtr | create (ElmtConfig pConf, std::vector< NodeSharedPtr > pNodeList, std::vector< int > pTagList) |
Creates an instance of this class. More... | |
static NEKMESHUTILS_EXPORT unsigned int | GetNumNodes (ElmtConfig pConf) |
Return the number of nodes defining a tetrahedron. More... | |
Public Attributes | |
int | m_orientationMap [4] |
int | m_origVertMap [4] |
Static Public Attributes | |
static LibUtilities::ShapeType | m_type |
Element type. More... | |
Protected Member Functions | |
void | OrientTet () |
Orient tetrahedron to align degenerate vertices. More... | |
Additional Inherited Members | |
Protected Attributes inherited from Nektar::NekMeshUtils::Element | |
unsigned int | m_id |
ID of the element. More... | |
unsigned int | m_dim |
Dimension of the element. More... | |
ElmtConfig | m_conf |
Contains configuration of the element. More... | |
std::string | m_tag |
Tag character describing the element. More... | |
std::vector< int > | m_taglist |
List of integers specifying properties of the element. More... | |
std::vector< NodeSharedPtr > | m_vertex |
List of element vertex nodes. More... | |
std::vector< EdgeSharedPtr > | m_edge |
List of element edges. More... | |
std::vector< FaceSharedPtr > | m_face |
List of element faces. More... | |
std::vector< NodeSharedPtr > | m_volumeNodes |
List of element volume nodes. More... | |
LibUtilities::PointsType | m_curveType |
Volume curve type. More... | |
EdgeSharedPtr | m_edgeLink |
Pointer to the corresponding edge if element is a 2D boundary. More... | |
FaceSharedPtr | m_faceLink |
Pointer to the corresponding face if element is a 3D boundary. More... | |
std::map< int, int > | m_boundaryLinks |
Array mapping faces/edges to the location of the appropriate boundary elements in m->element. More... | |
SpatialDomains::GeometrySharedPtr | m_geom |
Nektar++ geometry object for this element. More... | |
A 3-dimensional four-faced element.
Definition at line 50 of file Tetrahedron.h.
Nektar::NekMeshUtils::Tetrahedron::Tetrahedron | ( | ElmtConfig | pConf, |
std::vector< NodeSharedPtr > | pNodeList, | ||
std::vector< int > | pTagList | ||
) |
Create a tetrahedron element.
Definition at line 57 of file Tetrahedron.cpp.
References Nektar::NekMeshUtils::HOTriangle< T >::Align(), ASSERTL0, Nektar::iterator, Nektar::NekMeshUtils::Element::m_conf, Nektar::NekMeshUtils::Element::m_dim, Nektar::NekMeshUtils::Element::m_edge, Nektar::NekMeshUtils::ElmtConfig::m_edgeCurveType, Nektar::NekMeshUtils::Element::m_face, Nektar::NekMeshUtils::ElmtConfig::m_faceCurveType, Nektar::NekMeshUtils::ElmtConfig::m_faceNodes, Nektar::NekMeshUtils::ElmtConfig::m_order, m_orientationMap, Nektar::NekMeshUtils::ElmtConfig::m_reorient, Nektar::NekMeshUtils::Element::m_tag, Nektar::NekMeshUtils::Element::m_taglist, Nektar::NekMeshUtils::Element::m_vertex, OrientTet(), and Nektar::NekMeshUtils::HOTriangle< T >::surfVerts.
Referenced by create().
NEKMESHUTILS_EXPORT Nektar::NekMeshUtils::Tetrahedron::Tetrahedron | ( | const Tetrahedron & | pSrc | ) |
|
inlinevirtual |
Definition at line 74 of file Tetrahedron.h.
|
virtual |
Reimplemented from Nektar::NekMeshUtils::Element.
Definition at line 250 of file Tetrahedron.cpp.
References Nektar::MemoryManager< DataType >::AllocateSharedPtr(), Nektar::LibUtilities::eGaussLobattoLegendre, Nektar::LibUtilities::eGaussRadauMAlpha1Beta0, Nektar::LibUtilities::eGaussRadauMAlpha2Beta0, Nektar::LibUtilities::eNodalTetEvenlySpaced, Nektar::LibUtilities::eOrtho_A, Nektar::LibUtilities::eOrtho_B, Nektar::LibUtilities::eOrtho_C, GetGeom(), Nektar::NekMeshUtils::Element::m_conf, Nektar::NekMeshUtils::Element::m_edge, Nektar::NekMeshUtils::Element::m_face, Nektar::NekMeshUtils::ElmtConfig::m_faceNodes, Nektar::NekMeshUtils::ElmtConfig::m_order, Nektar::NekMeshUtils::ElmtConfig::m_volumeNodes, and Nektar::NekMeshUtils::Element::m_volumeNodes.
|
inlinestatic |
Creates an instance of this class.
Definition at line 54 of file Tetrahedron.h.
References Tetrahedron().
|
virtual |
Generate a Nektar++ geometry object for this element.
Reimplemented from Nektar::NekMeshUtils::Element.
Definition at line 217 of file Tetrahedron.cpp.
References Nektar::MemoryManager< DataType >::AllocateSharedPtr(), and Nektar::NekMeshUtils::Element::m_face.
Referenced by Complete().
|
static |
Return the number of nodes defining a tetrahedron.
Definition at line 236 of file Tetrahedron.cpp.
References Nektar::NekMeshUtils::ElmtConfig::m_faceNodes, Nektar::NekMeshUtils::ElmtConfig::m_order, and Nektar::NekMeshUtils::ElmtConfig::m_volumeNodes.
Referenced by Nektar::Utilities::InputGmsh::GetNnodes().
|
protected |
Orient tetrahedron to align degenerate vertices.
Orientation of tetrahedral elements is required so that the singular vertices of triangular faces (which occur as a part of the collapsed co-ordinate system) align. The algorithm is based on that used in T. Warburton's thesis and in the original Nektar source.
First the vertices are ordered with the highest global vertex at the top degenerate point, and the base degenerate point has second lowest ID. These vertices are swapped if the element is incorrectly oriented.
Definition at line 414 of file Tetrahedron.cpp.
References Nektar::iterator, Nektar::NekMeshUtils::Element::m_id, m_orientationMap, m_origVertMap, and Nektar::NekMeshUtils::Element::m_vertex.
Referenced by Tetrahedron().
int Nektar::NekMeshUtils::Tetrahedron::m_orientationMap[4] |
Definition at line 84 of file Tetrahedron.h.
Referenced by OrientTet(), Nektar::Utilities::InputNek::Process(), and Tetrahedron().
int Nektar::NekMeshUtils::Tetrahedron::m_origVertMap[4] |
Definition at line 85 of file Tetrahedron.h.
Referenced by OrientTet().
|
static |