47 template <
typename ElementRule>
49 Node const* nodes[ElementRule::dimension])
51 for (
unsigned i = 0; i < ElementRule::n_edges; i++)
54 constexpr std::size_t n =
sizeof(ElementRule::edge_nodes[0]) /
55 sizeof(ElementRule::edge_nodes[0][0]);
56 for (
unsigned j = 0; j < n; j++)
58 for (
unsigned k = 0; k < ElementRule::dimension; k++)
60 if (element_nodes[ElementRule::edge_nodes[i][j]] ==
67 if (flag == ElementRule::dimension)
72 return std::numeric_limits<unsigned>::max();
Definition of the Element class.
virtual const Element * getEdge(unsigned i) const =0
Returns the i-th edge of the element.
static const unsigned dimension
Constant: Dimension of this mesh element.
static bool testElementNodeOrder(Element const &e)
static Eigen::Vector3d getSecondSurfaceVector(Element const &e)
static const Element * getFace(const Element *e, unsigned i)
Returns the face i of the element.
static const unsigned n_faces
Constant: The number of faces.
static Eigen::Vector3d getFirstSurfaceVector(Element const &e)
static unsigned identifyFace(Node const *const *element_nodes, Node const *nodes[ElementRule::dimension])
Returns the ID of an edge given an array of nodes.
static Eigen::Vector3d getSurfaceNormal(Element const &e)
Returns the surface normal of a 2D element.