36 #ifndef NEKMESHUTILS_MESHELEMENTS_FACE
37 #define NEKMESHUTILS_MESHELEMENTS_FACE
48 namespace NekMeshUtils
66 std::vector<NodeSharedPtr> pFaceNodes,
67 std::vector<EdgeSharedPtr> pEdgeList,
113 std::vector<NodeSharedPtr> &nodeList);
141 std::vector<std::pair<ElementSharedPtr, int> >
m_elLink;
151 FaceSharedPtr
const &p2);
153 FaceSharedPtr
const &p2);
155 struct FaceHash : std::unary_function<FaceSharedPtr, std::size_t>
159 unsigned int nVert = p->m_vertexList.size();
160 std::size_t seed = 0;
161 std::vector<unsigned int> ids(nVert);
163 for (
int i = 0; i < nVert; ++i)
165 ids[i] = p->m_vertexList[i]->m_id;
168 std::sort(ids.begin(), ids.end());
169 boost::hash_range(seed, ids.begin(), ids.end());
174 typedef boost::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.
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).
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.
std::size_t operator()(FaceSharedPtr const &p) const
unsigned int m_id
ID of the face.
NEKMESHUTILS_EXPORT Face(const Face &pSrc)
Copy an existing face.
bool operator==(ElmtConfig const &c1, ElmtConfig const &c2)
Compares two element config structs.
boost::unordered_set< FaceSharedPtr, FaceHash > FaceSet
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.
boost::shared_ptr< CADObject > CADObjectSharedPtr
NEKMESHUTILS_EXPORT Face(std::vector< NodeSharedPtr > pVertexList, std::vector< NodeSharedPtr > pFaceNodes, std::vector< EdgeSharedPtr > pEdgeList, LibUtilities::PointsType pCurveType)
Create a new face.
boost::shared_ptr< Geometry2D > Geometry2DSharedPtr
NEKMESHUTILS_EXPORT SpatialDomains::Geometry2DSharedPtr GetGeom(int coordDim)
Generate either SpatialDomains::TriGeom or SpatialDomains::QuadGeom for this element.
StandardMatrixTag boost::call_traits< LhsDataType >::const_reference rhs typedef NekMatrix< LhsDataType, StandardMatrixTag >::iterator iterator
#define NEKMESHUTILS_EXPORT
InputIterator find(InputIterator first, InputIterator last, InputIterator startingpoint, const EqualityComparable &value)
boost::shared_ptr< Element > ElementSharedPtr
boost::shared_ptr< Face > FaceSharedPtr
boost::shared_ptr< Geometry > GeometrySharedPtr
CADObjectSharedPtr m_parentCAD
std::vector< NodeSharedPtr > m_vertexList
List of vertex nodes.
SpatialDomains::Geometry2DSharedPtr m_geom
Nektar++ representation of geometry.