44 namespace NekMeshUtils
    55                              vector<NodeSharedPtr> pNodeList,
    57     : 
Element(pConf, GetNumNodes(pConf), pNodeList.size())
    67     map<pair<int, int>, 
int> edgeNodeMap;
    68     map<pair<int, int>, 
int>::iterator it;
    69     edgeNodeMap[pair<int, int>(1, 2)] = 5;
    70     edgeNodeMap[pair<int, int>(2, 3)] = 5 + n;
    71     edgeNodeMap[pair<int, int>(3, 4)] = 5 + 2 * n;
    72     edgeNodeMap[pair<int, int>(4, 1)] = 5 + 3 * n;
    77     for (
int i = 0; i < 4; ++i)
    81         sum += (pNodeList[o]->m_x - pNodeList[i]->m_x) *
    82                (pNodeList[o]->m_y + pNodeList[i]->m_y);
    86     for (it = edgeNodeMap.begin(); it != edgeNodeMap.end(); ++it)
    88         vector<NodeSharedPtr> edgeNodes;
    91             for (
int j = it->second; j < it->second + n; ++j)
    93                 edgeNodes.push_back(pNodeList[j - 1]);
    97                                                 pNodeList[it->first.second - 1],
   122     int locVert = edgeId;
   123     if (edge->m_n1 == 
m_vertex[locVert])
   127     else if (edge->m_n2 == 
m_vertex[locVert])
   133         ASSERTL1(
false, 
"Edge is not connected to this quadrilateral.");
   165     int nPoints = order + 1;
   175     for (
int i = 0; i < coordDim; ++i)
   178         xmap->BwdTrans(geom->GetCoeffs(i), phys[i]);
   181     int nQuadIntPts = (nPoints - 2) * (nPoints - 2);
   184     for (
int i = 1, cnt = 0; i < nPoints-1; ++i)
   186         for (
int j = 1; j < nPoints-1; ++j, ++cnt)
   193             for (
int k = 0; k < coordDim; ++k)
   195                 x[k] = xmap->PhysEvaluate(xp, phys[k]);
   199                 new Node(
id++, x[0], x[1], x[2]));
   209     for (
int i = 0; i < 4; ++i)
   211         edges[i] = 
m_edge[i]->GetGeom(coordDim);
   223     int n = 
m_edge[0]->GetNodeCount();
   224     nodeList.resize(n * n);
   230     nodeList[n * (n - 1)] = 
m_vertex[3];
   234         {0, 1}, {n - 1, n}, {n * n - 1, -1}, {n * (n - 1), -n}};
   235     for (
int i = 0; i < 4; ++i)
   241             for (
int j = 1; j < n - 1; ++j)
   243                 nodeList[skips[i][0] + j * skips[i][1]] =
   244                     m_edge[i]->m_edgeNodes[n - 2 - j];
   249             for (
int j = 1; j < n - 1; ++j)
   251                 nodeList[skips[i][0] + j * skips[i][1]] =
   252                     m_edge[i]->m_edgeNodes[j - 1];
   258     for (
int i = 1; i < n - 1; ++i)
   260         for (
int j = 1; j < n - 1; ++j)
   262             nodeList[i * n + j] =
   278         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 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. 
 
std::shared_ptr< QuadGeom > QuadGeomSharedPtr
 
unsigned int GetPointsDim() const
 
std::shared_ptr< Edge > EdgeSharedPtr
Shared pointer to an edge. 
 
ElementFactory & GetElementFactory()
 
ElmtConfig m_conf
Contains configuration of the element. 
 
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::shared_ptr< StdExpansion > StdExpansionSharedPtr
 
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 ...
 
std::vector< EdgeSharedPtr > m_edge
List of element edges. 
 
std::shared_ptr< Geometry > GeometrySharedPtr
 
virtual NEKMESHUTILS_EXPORT void GetCurvedNodes(std::vector< NodeSharedPtr > &nodeList) const
get list of volume interior nodes 
 
static std::shared_ptr< DataType > AllocateSharedPtr(const Args &...args)
Allocate a shared pointer from the memory pool. 
 
PointsManagerT & PointsManager(void)
 
Defines a specification for a set of points. 
 
std::vector< NodeSharedPtr > m_volumeNodes
List of element volume nodes. 
 
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...
 
std::string m_tag
Tag character describing the element. 
 
unsigned int m_id
ID of the element. 
 
LibUtilities::PointsType m_curveType
Volume curve type. 
 
tKey RegisterCreatorFunction(tKey idKey, CreatorFunction classCreator, std::string pDesc="")
Register a class with the factory. 
 
bool m_reorient
Denotes whether the element needs to be re-orientated for a spectral element framework. 
 
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 representa...
 
#define ASSERTL1(condition, msg)
Assert Level 1 – Debugging which is used whether in FULLDEBUG or DEBUG compilation mode...
 
std::shared_ptr< SegGeom > SegGeomSharedPtr
 
Base class for element definitions.