43 std::array<Node*, 3> nodes{};
44 for (
unsigned j = 0; j < 3; j++)
50 ERR(
"Error in MeshLib::Element::getFace() - Index {:d} does not exist.", i);
69 for (
unsigned i = 0; i < 4; i++)
72 for (
unsigned j = 0; j < 3; j++)
74 for (
unsigned k = 0; k < 3; k++)
87 return std::numeric_limits<unsigned>::max();
Definition of the Line class.
void ERR(char const *fmt, Args const &... args)
Definition of the Node class.
Definition of the Tri class.
Collects error flags for mesh elements.
virtual const Node * getNode(unsigned idx) const =0
virtual bool testElementNodeOrder() const =0
virtual std::size_t getID() const final
Returns the ID of the element.
static const unsigned face_nodes[4][3]
Constant: Local node index table for faces.
static bool isPntInElement(Node const *const *nodes, MathLib::Point3d const &pnt, double eps)
static double computeVolume(Node const *const *_nodes)
Calculates the volume of the element.
static const unsigned n_faces
Constant: The number of faces.
static const unsigned edge_nodes[6][2]
Constant: Local node index table for edge.
static const Element * getFace(const Element *e, unsigned i)
Returns the i-th face of the element.
static ElementErrorCode validate(const Element *e)
static unsigned identifyFace(Node const *const *, Node const *nodes[3])
Returns the ID of a face given an array of nodes.
double calcTetrahedronVolume(MathLib::Point3d const &a, MathLib::Point3d const &b, MathLib::Point3d const &c, MathLib::Point3d const &d)
bool isPointInTetrahedron(MathLib::Point3d const &p, MathLib::Point3d const &a, MathLib::Point3d const &b, MathLib::Point3d const &c, MathLib::Point3d const &d, double eps)
bool hasZeroVolume(MeshLib::Element const &element)
Returns true if the element has zero length/area/volume.
TemplateElement< MeshLib::TriRule3 > Tri