Nektar++
|
A 3-dimensional five-faced element (2 triangles, 3 quadrilaterals). More...
#include <MeshElements.h>
Public Member Functions | |
Prism (ElmtConfig pConf, std::vector< NodeSharedPtr > pNodeList, std::vector< int > pTagList) | |
Create a prism element. | |
Prism (const Prism &pSrc) | |
virtual | ~Prism () |
virtual SpatialDomains::GeometrySharedPtr | GetGeom (int coordDim) |
Generate a Nektar++ geometry object for this element. | |
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). | |
unsigned int | GetDim () const |
Returns the expansion dimension of the element. | |
ElmtConfig | GetConf () const |
Returns the configuration of the element. | |
std::string | GetTag () const |
Returns the tag which defines the element shape. | |
NodeSharedPtr | GetVertex (unsigned int i) const |
Access a vertex node. | |
EdgeSharedPtr | GetEdge (unsigned int i) const |
Access an edge. | |
FaceSharedPtr | GetFace (unsigned int i) const |
Access a face. | |
std::vector< NodeSharedPtr > | GetVertexList () const |
Access the list of vertex nodes. | |
std::vector< EdgeSharedPtr > | GetEdgeList () const |
Access the list of edges. | |
std::vector< FaceSharedPtr > | GetFaceList () const |
Access the list of faces. | |
std::vector< NodeSharedPtr > | GetVolumeNodes () const |
Access the list of volume nodes. | |
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). | |
std::vector< int > | GetTagList () const |
Access the list of tags associated with this element. | |
unsigned int | GetVertexCount () const |
Returns the number of vertices. | |
unsigned int | GetEdgeCount () const |
Returns the number of edges. | |
unsigned int | GetFaceCount () const |
Returns the number of faces. | |
void | SetId (unsigned int p) |
Change the ID of the element. | |
void | SetVertex (unsigned int p, NodeSharedPtr pNew) |
Replace a vertex with another vertex object. | |
void | SetEdge (unsigned int p, EdgeSharedPtr pNew) |
Replace an edge with another edge object. | |
void | SetFace (unsigned int p, FaceSharedPtr pNew) |
Replace a face with another face object. | |
void | SetEdgeLink (EdgeSharedPtr pLink) |
Set a correspondence between this element and an edge (2D boundary element). | |
EdgeSharedPtr | GetEdgeLink () |
Get correspondence between this element and an edge. | |
void | SetFaceLink (FaceSharedPtr pLink) |
Set a correspondence between this element and a face (3D boundary element). | |
FaceSharedPtr | GetFaceLink () |
Get correspondence between this element and a face. | |
void | SetBoundaryLink (int i, int j) |
Set a correspondence between edge or face i and its representative boundary element m->element[expDim-1][j]. | |
int | GetBoundaryLink (int i) |
Get the location of the boundary face/edge i for this element. | |
void | SetTagList (const std::vector< int > &tags) |
Set the list of tags associated with this element. | |
virtual std::string | GetXmlString () const |
Generate a list of vertices (1D), edges (2D), or faces (3D). | |
std::vector< NodeSharedPtr > | tensorNodeOrdering (const std::vector< NodeSharedPtr > &nodes, int n) const |
Reorders Gmsh ordered nodes into a row-by-row ordering required for Nektar++ curve tags. | |
std::string | GetXmlCurveString () const |
Generates a string listing the coordinates of all nodes associated with this element. | |
int | GetMaxOrder () |
Obtain the order of an element by looking at edges. | |
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. | |
static unsigned int | GetNumNodes (ElmtConfig pConf) |
Return the number of nodes defining a prism. |
Public Attributes | |
unsigned int | m_orientation |
Static Public Attributes | |
static LibUtilities::ShapeType | m_type |
Element type. |
Protected Member Functions | |
void | OrientPrism () |
Orient prism to align degenerate vertices. |
Additional Inherited Members | |
Protected Attributes inherited from Nektar::Utilities::Element | |
unsigned int | m_id |
ID of the element. | |
unsigned int | m_dim |
Dimension of the element. | |
ElmtConfig | m_conf |
Contains configuration of the element. | |
std::string | m_tag |
Tag character describing the element. | |
std::vector< int > | m_taglist |
List of integers specifying properties of the element. | |
std::vector< NodeSharedPtr > | m_vertex |
List of element vertex nodes. | |
std::vector< EdgeSharedPtr > | m_edge |
List of element edges. | |
std::vector< FaceSharedPtr > | m_face |
List of element faces. | |
std::vector< NodeSharedPtr > | m_volumeNodes |
List of element volume nodes. | |
LibUtilities::PointsType | m_curveType |
Volume curve type. | |
EdgeSharedPtr | m_edgeLink |
Pointer to the corresponding edge if element is a 2D boundary. | |
FaceSharedPtr | m_faceLink |
Pointer to the corresponding face if element is a 3D boundary. | |
std::map< int, int > | m_boundaryLinks |
Array mapping faces/edges to the location of the appropriate boundary elements in m->element. | |
SpatialDomains::GeometrySharedPtr | m_geom |
Nektar++ geometry object for this element. |
A 3-dimensional five-faced element (2 triangles, 3 quadrilaterals).
Definition at line 1422 of file MeshElements.h.
Nektar::Utilities::Prism::Prism | ( | ElmtConfig | pConf, |
std::vector< NodeSharedPtr > | pNodeList, | ||
std::vector< int > | pTagList | ||
) |
Create a prism element.
Definition at line 1350 of file MeshElements.cpp.
References 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, Nektar::Utilities::ElmtConfig::m_reorient, Nektar::Utilities::Element::m_tag, Nektar::Utilities::Element::m_taglist, Nektar::Utilities::Element::m_vertex, and OrientPrism().
Nektar::Utilities::Prism::Prism | ( | const Prism & | pSrc | ) |
|
inlinevirtual |
Definition at line 1446 of file MeshElements.h.
|
virtual |
Reimplemented from Nektar::Utilities::Element.
Definition at line 1496 of file MeshElements.cpp.
References Nektar::LibUtilities::eGaussLobattoLegendre, Nektar::LibUtilities::eGaussRadauMAlpha1Beta0, Nektar::LibUtilities::eNodalPrismEvenlySpaced, Nektar::LibUtilities::eOrtho_A, Nektar::LibUtilities::eOrtho_B, 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 1425 of file MeshElements.h.
References Nektar::Utilities::Element::GetFaceList().
|
virtual |
Generate a Nektar++ geometry object for this element.
Reimplemented from Nektar::Utilities::Element.
Definition at line 1477 of file MeshElements.cpp.
References Nektar::Utilities::Element::m_face.
Referenced by Complete().
|
static |
Return the number of nodes defining a prism.
Definition at line 1466 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 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 1627 of file MeshElements.cpp.
References m_orientation, and Nektar::Utilities::Element::m_vertex.
Referenced by Prism().
unsigned int Nektar::Utilities::Prism::m_orientation |
Orientation of prism; unchanged = 0; clockwise = 1; counter-clockwise = 2. This is set by OrientPrism.
Definition at line 1457 of file MeshElements.h.
Referenced by OrientPrism().
|
static |