35 #ifndef NEKMESHUTILS_MESHELEMENTS_FACE 36 #define NEKMESHUTILS_MESHELEMENTS_FACE 38 #include <boost/core/ignore_unused.hpp> 50 namespace NekMeshUtils
68 std::vector<NodeSharedPtr> pFaceNodes,
69 std::vector<EdgeSharedPtr> pEdgeList,
92 std::vector<NodeSharedPtr>::iterator it1;
120 std::vector<NodeSharedPtr> &nodeList);
148 std::vector<std::pair<ElementSharedPtr, int> >
m_elLink;
158 FaceSharedPtr
const &p2);
160 FaceSharedPtr
const &p2);
162 struct FaceHash : std::unary_function<FaceSharedPtr, std::size_t>
166 unsigned int nVert = p->m_vertexList.size();
167 std::size_t seed = 0;
168 std::vector<unsigned int> ids(nVert);
170 for (
int i = 0; i < nVert; ++i)
172 ids[i] = p->m_vertexList[i]->m_id;
175 std::sort(ids.begin(), ids.end());
181 typedef std::unordered_set<FaceSharedPtr, FaceHash>
FaceSet;
bool operator<(NodeSharedPtr const &p1, NodeSharedPtr const &p2)
Defines ordering between two NodeSharedPtr objects.
NEKMESHUTILS_EXPORT bool operator==(Face &pSrc)
Equality is defined by matching all vertices.
std::size_t hash_range(Iter first, Iter last)
NEKMESHUTILS_EXPORT void GetCurvedNodes(std::vector< NodeSharedPtr > &nodeList)
Assemble a list of nodes on curved face.
void MakeOrder(int order, SpatialDomains::GeometrySharedPtr geom, LibUtilities::PointsType pType, int coordDim, int &id)
Make this face an order order face.
std::vector< NodeSharedPtr > m_faceNodes
List of face-interior nodes defining the shape of the face.
NEKMESHUTILS_EXPORT unsigned int GetNodeCount() const
Returns the total number of nodes (vertices, edge nodes and face nodes).
std::shared_ptr< Geometry2D > Geometry2DSharedPtr
std::size_t operator()(FaceSharedPtr const &p) const
Represents a face comprised of three or more edges.
NEKMESHUTILS_EXPORT ~Face()
std::vector< std::pair< ElementSharedPtr, int > > m_elLink
Element(s) which are linked to this face.
std::vector< EdgeSharedPtr > m_edgeList
List of corresponding edges.
unsigned int m_id
ID of the face.
NEKMESHUTILS_EXPORT Face(const Face &pSrc)
Copy an existing face.
std::shared_ptr< Face > FaceSharedPtr
std::unordered_set< FaceSharedPtr, FaceHash > FaceSet
std::shared_ptr< Element > ElementSharedPtr
std::shared_ptr< Geometry > GeometrySharedPtr
NEKMESHUTILS_EXPORT std::string GetXmlCurveString()
Generates a string listing the coordinates of all nodes associated with this face.
LibUtilities::PointsType m_curveType
Distribution of points in this face.
NEKMESHUTILS_EXPORT Face(std::vector< NodeSharedPtr > pVertexList, std::vector< NodeSharedPtr > pFaceNodes, std::vector< EdgeSharedPtr > pEdgeList, LibUtilities::PointsType pCurveType)
Create a new face.
NEKMESHUTILS_EXPORT SpatialDomains::Geometry2DSharedPtr GetGeom(int coordDim)
Generate either SpatialDomains::TriGeom or SpatialDomains::QuadGeom for this element.
std::shared_ptr< CADObject > CADObjectSharedPtr
#define NEKMESHUTILS_EXPORT
InputIterator find(InputIterator first, InputIterator last, InputIterator startingpoint, const EqualityComparable &value)
CADObjectSharedPtr m_parentCAD
std::vector< NodeSharedPtr > m_vertexList
List of vertex nodes.
SpatialDomains::Geometry2DSharedPtr m_geom
Nektar++ representation of geometry.