35 #ifndef NEKMESHUTILS_MESHELEMENTS_EDGE 36 #define NEKMESHUTILS_MESHELEMENTS_EDGE 46 namespace NekMeshUtils
64 std::vector<NodeSharedPtr> pEdgeNodes,
93 std::vector<NodeSharedPtr> &nodeList)
const 95 nodeList.push_back(
m_n1);
100 nodeList.push_back(
m_n2);
128 std::vector<std::pair<ElementSharedPtr, int> >
m_elLink;
139 EdgeSharedPtr
const &p2);
141 EdgeSharedPtr
const &p2);
150 struct EdgeHash : std::unary_function<EdgeSharedPtr, std::size_t>
154 const unsigned int id1 = p->m_n1->m_id;
155 const unsigned int id2 = p->m_n2->m_id;
159 typedef std::unordered_set<EdgeSharedPtr, EdgeHash>
EdgeSet;
void MakeOrder(int order, SpatialDomains::GeometrySharedPtr geom, LibUtilities::PointsType edgeType, int coordDim, int &id)
Make this edge an order order edge.
bool operator<(NodeSharedPtr const &p1, NodeSharedPtr const &p2)
Defines ordering between two NodeSharedPtr objects.
NEKMESHUTILS_EXPORT unsigned int GetNodeCount() const
Returns the total number of nodes defining the edge.
NEKMESHUTILS_EXPORT Edge(NodeSharedPtr pVertex1, NodeSharedPtr pVertex2, std::vector< NodeSharedPtr > pEdgeNodes, LibUtilities::PointsType pCurveType)
Creates a new edge.
NodeSharedPtr m_n1
First vertex node.
Represents an edge which joins two points.
std::unordered_set< EdgeSharedPtr, EdgeHash > EdgeSet
NEKMESHUTILS_EXPORT std::string GetXmlCurveString()
Creates a Nektar++ string listing the coordinates of all the nodes.
Defines a hash function for edges.
NEKMESHUTILS_EXPORT SpatialDomains::SegGeomSharedPtr GetGeom(int coordDim)
Generate a SpatialDomains::SegGeom object for this edge.
void hash_combine(std::size_t &seed)
std::shared_ptr< Edge > EdgeSharedPtr
Shared pointer to an edge.
std::shared_ptr< Node > NodeSharedPtr
bool operator==(ElmtConfig const &c1, ElmtConfig const &c2)
Compares two element config structs.
std::vector< NodeSharedPtr > m_edgeNodes
List of control nodes between the first and second vertices.
unsigned int m_id
ID of edge.
CADObjectSharedPtr m_parentCAD
NEKMESHUTILS_EXPORT Edge(NodeSharedPtr pVertex1, NodeSharedPtr pVertex2)
Creates a new linear edge.
NEKMESHUTILS_EXPORT void GetCurvedNodes(std::vector< NodeSharedPtr > &nodeList) const
std::shared_ptr< Element > ElementSharedPtr
std::shared_ptr< Geometry > GeometrySharedPtr
LibUtilities::PointsType m_curveType
Distributions of points along edge.
NEKMESHUTILS_EXPORT ~Edge()
NodeSharedPtr m_n2
Second vertex node.
NEKMESHUTILS_EXPORT Edge(const Edge &pSrc)
Copies an existing edge.
std::shared_ptr< CADObject > CADObjectSharedPtr
std::vector< std::pair< ElementSharedPtr, int > > m_elLink
Element(s) which are linked to this edge.
#define NEKMESHUTILS_EXPORT
SpatialDomains::SegGeomSharedPtr m_geom
std::size_t operator()(EdgeSharedPtr const &p) const
std::shared_ptr< SegGeom > SegGeomSharedPtr
Base class for element definitions.