41 namespace NekMeshUtils
50 Element::Element(
ElmtConfig pConf,
unsigned int pNumNodes,
51 unsigned int pGotNodes)
54 if (pNumNodes != pGotNodes)
56 cerr <<
"Number of modes mismatch for type " << pConf.
m_e 57 <<
"! Should be " << pNumNodes <<
" but got " << pGotNodes
73 for (
unsigned int i = 0; i <
m_edge.size(); ++i)
75 if (
m_edge[i]->m_n1 == vOld)
79 else if (
m_edge[i]->m_n2 == vOld)
84 for (
unsigned int i = 0; i <
m_face.size(); ++i)
87 for (
unsigned int j = 0; j <
m_face[i]->m_vertexList.size(); ++j)
89 if (
m_face[i]->m_vertexList[j] == vOld)
91 m_face[i]->m_vertexList[j] = pNew;
94 for (
unsigned int j = 0; j <
m_face[i]->m_edgeList.size(); ++j)
96 if (
m_face[i]->m_edgeList[j]->m_n1 == vOld)
98 m_face[i]->m_edgeList[j]->m_n1 = pNew;
100 else if (
m_face[i]->m_edgeList[j]->m_n2 == vOld)
102 m_face[i]->m_edgeList[j]->m_n2 = pNew;
118 for (
unsigned int i = 0; i <
m_face.size(); ++i)
120 for (
unsigned int j = 0; j <
m_face[i]->m_edgeList.size(); ++j)
122 if (
m_face[i]->m_edgeList[j] == vOld)
124 m_face[i]->m_edgeList[j] = pNew;
139 for (i = 0; i <
m_edge.size(); ++i)
141 int edgeOrder =
m_edge[i]->GetNodeCount() - 1;
160 for (
int i = 0; i <
m_edge.size(); ++i)
162 n +=
m_edge[i]->GetNodeCount();
168 for (
int i = 0; i <
m_face.size(); ++i)
170 n +=
m_face[i]->GetNodeCount();
172 for (
int i = 0; i <
m_edge.size(); ++i)
174 n -=
m_edge[i]->GetNodeCount();
177 std::cerr <<
"Not supported." << std::endl;
189 for (
int j = 0; j <
m_vertex.size(); ++j)
191 s << std::setw(5) <<
m_vertex[j]->m_id <<
" ";
195 for (
int j = 0; j <
m_edge.size(); ++j)
197 s << std::setw(5) <<
m_edge[j]->m_id <<
" ";
201 for (
int j = 0; j <
m_face.size(); ++j)
203 s << std::setw(5) <<
m_face[j]->m_id <<
" ";
213 std::vector<NodeSharedPtr> nodeList;
221 for (
int k = 0; k < nodeList.size(); ++k)
223 s << std::scientific << std::setprecision(8) <<
" " 224 << nodeList[k]->m_x <<
" " << nodeList[k]->m_y <<
" " 225 << nodeList[k]->m_z <<
" ";
NEKMESHUTILS_EXPORT void SetEdge(unsigned int p, EdgeSharedPtr pNew, bool descend=true)
Replace an edge in the element.
Basic information about an element.
NEKMESHUTILS_EXPORT void SetFace(unsigned int p, FaceSharedPtr pNew)
Replace a face in the element.
std::shared_ptr< Edge > EdgeSharedPtr
Shared pointer to an edge.
ElementFactory & GetElementFactory()
std::shared_ptr< Node > NodeSharedPtr
std::shared_ptr< Face > FaceSharedPtr
1D Evenly-spaced points using Lagrange polynomial
NEKMESHUTILS_EXPORT int GetMaxOrder()
Obtain the order of an element by looking at edges.
std::vector< NodeSharedPtr > m_vertex
List of element vertex nodes.
unsigned int m_dim
Dimension of the element.
NEKMESHUTILS_EXPORT std::string GetXmlCurveString()
Generates a string listing the coordinates of all nodes associated with this element.
std::vector< EdgeSharedPtr > m_edge
List of element edges.
virtual NEKMESHUTILS_EXPORT void GetCurvedNodes(std::vector< NodeSharedPtr > &nodeList) const
get list of volume interior nodes
std::vector< NodeSharedPtr > m_volumeNodes
List of element volume nodes.
virtual NEKMESHUTILS_EXPORT std::string GetXmlString()
Generate a list of vertices (1D), edges (2D), or faces (3D).
NEKMESHUTILS_EXPORT void SetVertex(unsigned int p, NodeSharedPtr pNew, bool descend=true)
Replace a vertex in the element.
std::vector< FaceSharedPtr > m_face
List of element faces.
LibUtilities::ShapeType m_e
Element type (e.g. triangle, quad, etc).
NEKMESHUTILS_EXPORT unsigned int GetNodeCount()
Returns the total number of nodes (vertices, edge nodes and face nodes and volume nodes)...
Provides a generic Factory class.