Nektar++
|
A 3-dimensional four-faced element. More...
#include <MeshElements.h>
Public Member Functions | |
Tetrahedron (ElmtConfig pConf, std::vector< NodeSharedPtr > pNodeList, std::vector< int > pTagList) | |
Create a tetrahedron element. More... | |
Tetrahedron (const Tetrahedron &pSrc) | |
virtual | ~Tetrahedron () |
virtual SpatialDomains::GeometrySharedPtr | GetGeom (int coordDim) |
Generate a Nektar++ geometry object for this element. More... | |
virtual void | Complete (int order) |
Public Member Functions inherited from Nektar::Utilities::Element | |
Element (ElmtConfig pConf, unsigned int pNumNodes, unsigned int pGotNodes) | |
unsigned int | GetId () const |
Returns the ID of the element (or associated edge or face for boundary elements). More... | |
unsigned int | GetDim () const |
Returns the expansion dimension of the element. More... | |
ElmtConfig | GetConf () const |
Returns the configuration of the element. More... | |
std::string | GetTag () const |
Returns the tag which defines the element shape. More... | |
NodeSharedPtr | GetVertex (unsigned int i) const |
Access a vertex node. More... | |
EdgeSharedPtr | GetEdge (unsigned int i) const |
Access an edge. More... | |
FaceSharedPtr | GetFace (unsigned int i) const |
Access a face. More... | |
std::vector< NodeSharedPtr > | GetVertexList () const |
Access the list of vertex nodes. More... | |
std::vector< EdgeSharedPtr > | GetEdgeList () const |
Access the list of edges. More... | |
std::vector< FaceSharedPtr > | GetFaceList () const |
Access the list of faces. More... | |
std::vector< NodeSharedPtr > | GetVolumeNodes () const |
Access the list of volume nodes. More... | |
void | SetVolumeNodes (std::vector< NodeSharedPtr > &nodes) |
LibUtilities::PointsType | GetCurveType () const |
void | SetCurveType (LibUtilities::PointsType cT) |
unsigned int | GetNodeCount () const |
Returns the total number of nodes (vertices, edge nodes and face nodes and volume nodes). More... | |
std::vector< int > | GetTagList () const |
Access the list of tags associated with this element. More... | |
unsigned int | GetVertexCount () const |
Returns the number of vertices. More... | |
unsigned int | GetEdgeCount () const |
Returns the number of edges. More... | |
unsigned int | GetFaceCount () const |
Returns the number of faces. More... | |
void | SetId (unsigned int p) |
Change the ID of the element. More... | |
void | SetVertex (unsigned int p, NodeSharedPtr pNew) |
Replace a vertex with another vertex object. More... | |
void | SetEdge (unsigned int p, EdgeSharedPtr pNew) |
Replace an edge with another edge object. More... | |
void | SetFace (unsigned int p, FaceSharedPtr pNew) |
Replace a face with another face object. More... | |
void | SetEdgeLink (EdgeSharedPtr pLink) |
Set a correspondence between this element and an edge (2D boundary element). More... | |
EdgeSharedPtr | GetEdgeLink () |
Get correspondence between this element and an edge. More... | |
void | SetFaceLink (FaceSharedPtr pLink) |
Set a correspondence between this element and a face (3D boundary element). More... | |
FaceSharedPtr | GetFaceLink () |
Get correspondence between this element and a face. More... | |
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... | |
int | GetBoundaryLink (int i) |
Get the location of the boundary face/edge i for this element. More... | |
void | SetTagList (const std::vector< int > &tags) |
Set the list of tags associated with this element. More... | |
virtual std::string | GetXmlString () const |
Generate a list of vertices (1D), edges (2D), or faces (3D). More... | |
std::string | GetXmlCurveString () const |
Generates a string listing the coordinates of all nodes associated with this element. More... | |
int | GetMaxOrder () |
Obtain the order of an element by looking at edges. More... | |
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 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::Utilities::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 1418 of file MeshElements.h.
Nektar::Utilities::Tetrahedron::Tetrahedron | ( | ElmtConfig | pConf, |
std::vector< NodeSharedPtr > | pNodeList, | ||
std::vector< int > | pTagList | ||
) |
Create a tetrahedron element.
Definition at line 840 of file MeshElements.cpp.
References Nektar::Utilities::HOTriangle< T >::Align(), ASSERTL0, Nektar::iterator, Nektar::Utilities::Element::m_conf, Nektar::Utilities::Element::m_dim, Nektar::Utilities::Element::m_edge, Nektar::Utilities::ElmtConfig::m_edgeCurveType, Nektar::Utilities::Element::m_face, Nektar::Utilities::ElmtConfig::m_faceCurveType, Nektar::Utilities::ElmtConfig::m_faceNodes, Nektar::Utilities::ElmtConfig::m_order, m_orientationMap, Nektar::Utilities::ElmtConfig::m_reorient, Nektar::Utilities::Element::m_tag, Nektar::Utilities::Element::m_taglist, Nektar::Utilities::Element::m_vertex, OrientTet(), and Nektar::Utilities::HOTriangle< T >::surfVerts.
Nektar::Utilities::Tetrahedron::Tetrahedron | ( | const Tetrahedron & | pSrc | ) |
|
inlinevirtual |
Definition at line 1442 of file MeshElements.h.
|
virtual |
Reimplemented from Nektar::Utilities::Element.
Definition at line 1034 of file MeshElements.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::Utilities::Element::m_conf, Nektar::Utilities::Element::m_edge, Nektar::Utilities::Element::m_face, Nektar::Utilities::ElmtConfig::m_faceNodes, Nektar::Utilities::ElmtConfig::m_order, Nektar::Utilities::ElmtConfig::m_volumeNodes, and Nektar::Utilities::Element::m_volumeNodes.
|
inlinestatic |
Creates an instance of this class.
Definition at line 1421 of file MeshElements.h.
|
virtual |
Generate a Nektar++ geometry object for this element.
Reimplemented from Nektar::Utilities::Element.
Definition at line 1000 of file MeshElements.cpp.
References Nektar::MemoryManager< DataType >::AllocateSharedPtr(), and Nektar::Utilities::Element::m_face.
Referenced by Complete().
|
static |
Return the number of nodes defining a tetrahedron.
Definition at line 1020 of file MeshElements.cpp.
References Nektar::Utilities::ElmtConfig::m_faceNodes, Nektar::Utilities::ElmtConfig::m_order, and Nektar::Utilities::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 1191 of file MeshElements.cpp.
References Nektar::iterator, Nektar::Utilities::Element::m_id, m_orientationMap, m_origVertMap, and Nektar::Utilities::Element::m_vertex.
Referenced by Tetrahedron().
int Nektar::Utilities::Tetrahedron::m_orientationMap[4] |
Definition at line 1449 of file MeshElements.h.
Referenced by OrientTet(), Nektar::Utilities::InputNek::Process(), and Tetrahedron().
int Nektar::Utilities::Tetrahedron::m_origVertMap[4] |
Definition at line 1450 of file MeshElements.h.
Referenced by OrientTet().
|
static |