15 template <
class ELEMENT_RULE>
29 template <
class ELEMENT_RULE>
31 std::array<Node*, n_all_nodes>
const& nodes, std::size_t
id)
40 template <
class ELEMENT_RULE>
43 :
Element(e.getID()), _nodes{e._nodes}
54 template <
class ELEMENT_RULE>
57 return ELEMENT_RULE::computeVolume(_nodes.data());
64 bool isEdge(
unsigned const (&edge_nodes)[N],
unsigned idx1,
unsigned idx2)
66 if (edge_nodes[0] == idx1 && edge_nodes[1] == idx2)
70 if (edge_nodes[1] == idx1 && edge_nodes[0] == idx2)
79 isEdge(
unsigned const (&)[1],
unsigned ,
unsigned )
87 template <
class ELEMENT_RULE>
90 for (
unsigned i(0); i<getNumberOfEdges(); i++)
100 template <
class ELEMENT_RULE>
104 if (idx >= getNumberOfNodes())
106 ERR(
"Error in MeshLib::TemplateElement::getNode() - Index {:d} in {:s}",
114 template <
class ELEMENT_RULE>
118 if (idx >= getNumberOfNodes())
120 ERR(
"Error in MeshLib::TemplateElement::getNode() - Index {:d} in {:s}",
128 template <
class ELEMENT_RULE>
132 if (idx < getNumberOfNodes())
void ERR(char const *fmt, Args const &... args)
unsigned space_dimension_
Dimension of the space, where the element exists.
std::array< Node *, n_all_nodes > _nodes
bool isEdge(unsigned idx1, unsigned idx2) const override
Returns true if these two indices form an edge and false otherwise.
unsigned getNumberOfNeighbors() const override
Get the number of neighbors for this element.
static const unsigned n_all_nodes
Constant: The number of all nodes for this element.
void setNode(unsigned idx, Node *node) override
TemplateElement(Node *nodes[n_all_nodes], std::size_t id=std::numeric_limits< std::size_t >::max())
double getContent() const override final
Returns the length, area or volume of a 1D, 2D or 3D element.
const Node * getNode(unsigned idx) const override
bool isEdge(unsigned const (&edge_nodes)[N], unsigned idx1, unsigned idx2)
std::string MeshElemType2String(const MeshElemType t)
Given a MeshElemType this returns the appropriate string.