Nektar++
|
A 3-dimensional five-faced element (2 triangles, 3 quadrilaterals). More...
#include <Prism.h>
Public Member Functions | |
NEKMESHUTILS_EXPORT | Prism (ElmtConfig pConf, std::vector< NodeSharedPtr > pNodeList, std::vector< int > pTagList) |
Create a prism element. More... | |
NEKMESHUTILS_EXPORT | Prism (const Prism &pSrc) |
virtual NEKMESHUTILS_EXPORT | ~Prism () |
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 prism. More... | |
Public Attributes | |
unsigned int | m_orientation |
Static Public Attributes | |
static LibUtilities::ShapeType | m_type |
Element type. More... | |
Protected Member Functions | |
void | OrientPrism () |
Orient prism 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 five-faced element (2 triangles, 3 quadrilaterals).
Nektar::NekMeshUtils::Prism::Prism | ( | ElmtConfig | pConf, |
std::vector< NodeSharedPtr > | pNodeList, | ||
std::vector< int > | pTagList | ||
) |
Create a prism element.
Definition at line 55 of file Prism.cpp.
References ASSERTL1, 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_orientation, Nektar::NekMeshUtils::ElmtConfig::m_reorient, Nektar::NekMeshUtils::Element::m_tag, Nektar::NekMeshUtils::Element::m_taglist, Nektar::NekMeshUtils::Element::m_vertex, and OrientPrism().
Referenced by create().
NEKMESHUTILS_EXPORT Nektar::NekMeshUtils::Prism::Prism | ( | const Prism & | pSrc | ) |
|
inlinevirtual |
|
virtual |
Reimplemented from Nektar::NekMeshUtils::Element.
Definition at line 248 of file Prism.cpp.
References Nektar::MemoryManager< DataType >::AllocateSharedPtr(), Nektar::LibUtilities::eGaussLobattoLegendre, Nektar::LibUtilities::eGaussRadauMAlpha1Beta0, Nektar::LibUtilities::eNodalPrismEvenlySpaced, Nektar::LibUtilities::eOrtho_A, Nektar::LibUtilities::eOrtho_B, 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 Prism.h.
References Prism().
|
virtual |
Generate a Nektar++ geometry object for this element.
Reimplemented from Nektar::NekMeshUtils::Element.
Definition at line 230 of file Prism.cpp.
References Nektar::MemoryManager< DataType >::AllocateSharedPtr(), and Nektar::NekMeshUtils::Element::m_face.
Referenced by Complete().
|
static |
Return the number of nodes defining a prism.
Definition at line 218 of file Prism.cpp.
References Nektar::NekMeshUtils::ElmtConfig::m_faceNodes, Nektar::NekMeshUtils::ElmtConfig::m_order, and Nektar::NekMeshUtils::ElmtConfig::m_volumeNodes.
|
protected |
Orient prism to align degenerate vertices.
Orientation of prismatric 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 points are re-ordered so that the highest global IDs represent the two singular points of the prism. Then, if necessary, the nodes are rotated either clockwise or counter-clockwise (w.r.t to the p-r plane) to correctly align the prism. The #orientation variable is set to:
This is necessary for some input modules (e.g. #InputNek) which add high-order information or bounary conditions to faces.
Definition at line 386 of file Prism.cpp.
References m_orientation, and Nektar::NekMeshUtils::Element::m_vertex.
Referenced by Prism().
unsigned int Nektar::NekMeshUtils::Prism::m_orientation |
Orientation of prism; unchanged = 0; clockwise = 1; counter-clockwise = 2. This is set by OrientPrism.
Definition at line 88 of file Prism.h.
Referenced by OrientPrism(), and Prism().
|
static |
Element type.