43 namespace NekMeshUtils
54 vector<NodeSharedPtr> pNodeList,
56 :
Element(pConf, GetNumNodes(pConf), pNodeList.size())
66 map<pair<int, int>,
int> edgeNodeMap;
68 edgeNodeMap[pair<int, int>(1, 2)] = 5;
69 edgeNodeMap[pair<int, int>(2, 3)] = 5 + n;
70 edgeNodeMap[pair<int, int>(3, 4)] = 5 + 2 * n;
71 edgeNodeMap[pair<int, int>(4, 1)] = 5 + 3 * n;
76 for (
int i = 0; i < 4; ++i)
80 sum += (pNodeList[o]->m_x - pNodeList[i]->m_x) *
81 (pNodeList[o]->m_y + pNodeList[i]->m_y);
85 for (it = edgeNodeMap.begin(); it != edgeNodeMap.end(); ++it)
87 vector<NodeSharedPtr> edgeNodes;
90 for (
int j = it->second; j < it->second + n; ++j)
92 edgeNodes.push_back(pNodeList[j - 1]);
96 pNodeList[it->first.second - 1],
133 int nqtot = quad->GetTotPoints();
139 quad->GetCoords(x, y, z);
143 int edgeMap[4][2] = {{0, 1},
146 {order * (order + 1), -order - 1}};
148 for (
int i = 0; i < 4; ++i)
150 int pos = edgeMap[i][0] + edgeMap[i][1];
151 m_edge[i]->m_edgeNodes.clear();
152 for (
int j = 1; j < order; ++j, pos += edgeMap[i][1])
154 m_edge[i]->m_edgeNodes.push_back(
161 for (
int i = 1; i < order; ++i)
163 int pos = i * (order + 1);
164 for (
int j = 1; j < order; ++j)
182 for (
int i = 0; i < 4; ++i)
184 edges[i] =
m_edge[i]->GetGeom(coordDim);
185 verts[i] =
m_vertex[i]->GetGeom(coordDim);
195 m_id, verts, edges, edgeorient);
209 return (n + 1) * (n + 1);
bool m_faceNodes
Denotes whether the element contains face nodes. For 2D elements, if this is true then the element co...
Basic information about an element.
Represents an edge which joins two points.
static boost::shared_ptr< DataType > AllocateSharedPtr()
Allocate a shared pointer from the memory pool.
static NEKMESHUTILS_EXPORT unsigned int GetNumNodes(ElmtConfig pConf)
Return the number of nodes defining a quadrilateral.
virtual NEKMESHUTILS_EXPORT SpatialDomains::GeometrySharedPtr GetGeom(int coordDim)
Generate a Nektar++ geometry object for this element.
boost::shared_ptr< QuadGeom > QuadGeomSharedPtr
ElementFactory & GetElementFactory()
ElmtConfig m_conf
Contains configuration of the element.
static StdRegions::Orientation GetEdgeOrientation(const SegGeom &edge1, const SegGeom &edge2)
Get the orientation of edge1.
Represents a point in the domain.
std::vector< int > m_taglist
List of integers specifying properties of the element.
LibUtilities::PointsType m_edgeCurveType
Distribution of points in edges.
unsigned int m_order
Order of the element.
std::vector< NodeSharedPtr > m_vertex
List of element vertex nodes.
unsigned int m_dim
Dimension of the element.
bool m_volumeNodes
Denotes whether the element contains volume (i.e. interior) nodes. These are not supported by either ...
boost::shared_ptr< SegGeom > SegGeomSharedPtr
std::vector< EdgeSharedPtr > m_edge
List of element edges.
boost::shared_ptr< Node > NodeSharedPtr
Principle Orthogonal Functions .
Defines a specification for a set of points.
boost::shared_ptr< QuadExp > QuadExpSharedPtr
std::vector< NodeSharedPtr > m_volumeNodes
List of element volume nodes.
std::string m_tag
Tag character describing the element.
boost::shared_ptr< Edge > EdgeSharedPtr
Shared pointer to an edge.
StandardMatrixTag boost::call_traits< LhsDataType >::const_reference rhs typedef NekMatrix< LhsDataType, StandardMatrixTag >::iterator iterator
virtual NEKMESHUTILS_EXPORT void Complete(int order)
Complete this object.
unsigned int m_id
ID of the element.
bool m_reorient
Denotes whether the element needs to be re-orientated for a spectral element framework.
boost::shared_ptr< Geometry > GeometrySharedPtr
Describes the specification for a Basis.
boost::shared_ptr< PointGeom > PointGeomSharedPtr
1D Gauss-Lobatto-Legendre quadrature points
Base class for element definitions.
tKey RegisterCreatorFunction(tKey idKey, CreatorFunction classCreator, tDescription pDesc="")
Register a class with the factory.