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 | GetCurvedNodes (std::vector< NodeSharedPtr > &nodeList) const |
get list of volume interior nodes More... | |
virtual NEKMESHUTILS_EXPORT StdRegions::Orientation | GetEdgeOrient (int edgeId, EdgeSharedPtr edge) |
Get the edge orientation of edge with respect to the local element, which lies at edge index edgeId . More... | |
virtual NEKMESHUTILS_EXPORT void | MakeOrder (int order, SpatialDomains::GeometrySharedPtr geom, LibUtilities::PointsType pType, int coordDim, int &id, bool justConfig=false) |
Insert interior (i.e. volume) points into this element to make the geometry an order order representation. More... | |
virtual NEKMESHUTILS_EXPORT int | GetFaceVertex (int i, int j) |
Returns the local index of vertex j of face i . More... | |
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 LibUtilities::ShapeType | GetShapeType () const |
returns the shapetype 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 () |
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, bool descend=true) |
Replace a vertex in the element. More... | |
NEKMESHUTILS_EXPORT void | SetEdge (unsigned int p, EdgeSharedPtr pNew, bool descend=true) |
Replace an edge in the element. More... | |
NEKMESHUTILS_EXPORT void | SetFace (unsigned int p, FaceSharedPtr pNew) |
Replace a face in the element. 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 () |
Generate a list of vertices (1D), edges (2D), or faces (3D). More... | |
NEKMESHUTILS_EXPORT std::string | GetXmlCurveString () |
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 () |
virtual NEKMESHUTILS_EXPORT Array< OneD, NekDouble > | Normal (bool inward=false) |
returns the normal to the element More... | |
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] |
Public Attributes inherited from Nektar::NekMeshUtils::Element | |
CADObjectSharedPtr | m_parentCAD |
Static Public Attributes | |
static LibUtilities::ShapeType | m_type |
Element type. More... | |
Protected Member Functions | |
void | OrientTet () |
Orient tetrahedron to align degenerate vertices. More... | |
Static Private Attributes | |
static int | m_faceIds [4][3] |
Vertex IDs that make up tetrahedron faces. 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 64 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, m_faceIds, 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, Nektar::NekMeshUtils::ElmtConfig::m_volumeNodes, Nektar::NekMeshUtils::Element::m_volumeNodes, OrientTet(), and Nektar::NekMeshUtils::HOTriangle< T >::surfVerts.
Referenced by create().
NEKMESHUTILS_EXPORT Nektar::NekMeshUtils::Tetrahedron::Tetrahedron | ( | const Tetrahedron & | pSrc | ) |
|
inlinevirtual |
Definition at line 68 of file Tetrahedron.h.
|
inlinestatic |
Creates an instance of this class.
Definition at line 54 of file Tetrahedron.h.
References Tetrahedron().
|
virtual |
get list of volume interior nodes
Reimplemented from Nektar::NekMeshUtils::Element.
Definition at line 391 of file Tetrahedron.cpp.
References Nektar::NekMeshUtils::HOTriangle< T >::Align(), CellMLToNektar.pycml::copy(), Nektar::NekMeshUtils::Element::m_edge, Nektar::NekMeshUtils::Element::m_face, Nektar::NekMeshUtils::Element::m_id, Nektar::NekMeshUtils::Element::m_vertex, Nektar::NekMeshUtils::Element::m_volumeNodes, and Nektar::NekMeshUtils::HOTriangle< T >::surfVerts.
|
virtual |
Get the edge orientation of edge
with respect to the local element, which lies at edge index edgeId
.
Reimplemented from Nektar::NekMeshUtils::Element.
Definition at line 246 of file Tetrahedron.cpp.
References ASSERTL1, Nektar::StdRegions::eBackwards, Nektar::StdRegions::eForwards, Nektar::StdRegions::eNoOrientation, and Nektar::NekMeshUtils::Element::m_vertex.
|
inlinevirtual |
Returns the local index of vertex j
of face i
.
Reimplemented from Nektar::NekMeshUtils::Element.
Definition at line 87 of file Tetrahedron.h.
References m_faceIds.
|
virtual |
Generate a Nektar++ geometry object for this element.
Reimplemented from Nektar::NekMeshUtils::Element.
Definition at line 230 of file Tetrahedron.cpp.
References Nektar::MemoryManager< DataType >::AllocateSharedPtr(), and Nektar::NekMeshUtils::Element::m_face.
|
static |
Return the number of nodes defining a tetrahedron.
Definition at line 344 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().
|
virtual |
Insert interior (i.e. volume) points into this element to make the geometry an order order
representation.
order | The desired polynomial order. |
geom | The geometry object used to describe the curvature mapping. |
edgeType | The points distribution to use on the volume. |
coordDim | The coordinate (i.e. space) dimension. |
id | Counter which should be incremented to supply consistent vertex IDs. |
justConfig | If true, then the configuration Element::m_conf will be updated but no nodes will be generated. This is used when considering boundary elements, which just require copying of face or edge interior nodes. |
Reimplemented from Nektar::NekMeshUtils::Element.
Definition at line 267 of file Tetrahedron.cpp.
References ASSERTL1, Nektar::LibUtilities::PointsKey::GetPointsDim(), Nektar::NekMeshUtils::Element::m_conf, Nektar::NekMeshUtils::Element::m_curveType, Nektar::NekMeshUtils::ElmtConfig::m_faceNodes, Nektar::NekMeshUtils::ElmtConfig::m_order, Nektar::NekMeshUtils::ElmtConfig::m_volumeNodes, Nektar::NekMeshUtils::Element::m_volumeNodes, class_topology::Node, and Nektar::LibUtilities::PointsManager().
|
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 484 of file Tetrahedron.cpp.
References Nektar::iterator, m_faceIds, Nektar::NekMeshUtils::Element::m_id, m_orientationMap, m_origVertMap, and Nektar::NekMeshUtils::Element::m_vertex.
Referenced by Tetrahedron().
|
staticprivate |
Vertex IDs that make up tetrahedron faces.
Definition at line 99 of file Tetrahedron.h.
Referenced by GetFaceVertex(), OrientTet(), and Tetrahedron().
int Nektar::NekMeshUtils::Tetrahedron::m_orientationMap[4] |
Definition at line 92 of file Tetrahedron.h.
Referenced by OrientTet(), Nektar::Utilities::InputNek::Process(), and Tetrahedron().
int Nektar::NekMeshUtils::Tetrahedron::m_origVertMap[4] |
Definition at line 93 of file Tetrahedron.h.
Referenced by OrientTet().
|
static |