Skip to content
Snippets Groups Projects
Commit 53d69f78 authored by Tom Fischer's avatar Tom Fischer
Browse files

[MeL/Elements] Free hasZeroVolume.

parent 6957b643
No related branches found
No related tags found
No related merge requests found
......@@ -188,6 +188,12 @@ std::ostream& operator<<(std::ostream& os, Element const& e)
}
#endif // NDEBUG
bool hasZeroVolume(MeshLib::Element const& element)
{
return element.getContent() < std::numeric_limits<double>::epsilon();
}
MeshLib::Node getCenterOfGravity(Element const& element)
{
const unsigned nNodes(element.getNumberOfBaseNodes());
......
......@@ -128,15 +128,6 @@ public:
*/
virtual CellType getCellType() const = 0;
/**
* Returns true if the element has zero length/area/volume.
*/
bool hasZeroVolume() const
{
return this->getContent() < std::numeric_limits<double>::epsilon();
}
/// Returns true if the element is located at a boundary (i.e. has at least one face without neighbour)
virtual bool isBoundaryElement() const;
......@@ -218,6 +209,12 @@ protected:
}; /* class */
/// Returns true if elem is a neighbour of this element and false otherwise.
bool areNeighbors(Element const* const element, Element const* const other);
/// Returns true if the element has zero length/area/volume.
bool hasZeroVolume(MeshLib::Element const& element);
/// Calculates the center of gravity for the mesh element
MeshLib::Node getCenterOfGravity(MeshLib::Element const& element);
......
......@@ -117,7 +117,7 @@ unsigned HexRule8::identifyFace(Node const* const* _nodes, Node* nodes[3])
ElementErrorCode HexRule8::validate(const Element* e)
{
ElementErrorCode error_code;
error_code[ElementErrorFlag::ZeroVolume] = e->hasZeroVolume();
error_code[ElementErrorFlag::ZeroVolume] = hasZeroVolume(*e);
for (unsigned i=0; i<6; ++i)
{
......
......@@ -51,7 +51,7 @@ unsigned LineRule2::identifyFace(Node const* const* _nodes, Node* nodes[1])
ElementErrorCode LineRule2::validate(const Element* e)
{
ElementErrorCode error_code;
error_code[ElementErrorFlag::ZeroVolume] = e->hasZeroVolume();
error_code[ElementErrorFlag::ZeroVolume] = hasZeroVolume(*e);
return error_code;
}
......
......@@ -44,7 +44,7 @@ unsigned PointRule1::identifyFace(Node const* const* _nodes, Node* nodes[1])
ElementErrorCode PointRule1::validate(const Element* e)
{
ElementErrorCode error_code;
error_code[ElementErrorFlag::ZeroVolume] = e->hasZeroVolume();
error_code[ElementErrorFlag::ZeroVolume] = hasZeroVolume(*e);
return error_code;
}
......
......@@ -112,7 +112,7 @@ unsigned PrismRule6::identifyFace(Node const* const* _nodes, Node* nodes[3])
ElementErrorCode PrismRule6::validate(const Element* e)
{
ElementErrorCode error_code;
error_code[ElementErrorFlag::ZeroVolume] = e->hasZeroVolume();
error_code[ElementErrorFlag::ZeroVolume] = hasZeroVolume(*e);
for (unsigned i=1; i<4; ++i)
{
......
......@@ -108,7 +108,7 @@ unsigned PyramidRule5::identifyFace(Node const* const* _nodes, Node* nodes[3])
ElementErrorCode PyramidRule5::validate(const Element* e)
{
ElementErrorCode error_code;
error_code[ElementErrorFlag::ZeroVolume] = e->hasZeroVolume();
error_code[ElementErrorFlag::ZeroVolume] = hasZeroVolume(*e);
std::unique_ptr<MeshLib::Quad const> const base{
dynamic_cast<MeshLib::Quad const*>(e->getFace(4))};
......
......@@ -65,7 +65,7 @@ unsigned QuadRule4::identifyFace(Node const* const* _nodes, Node* nodes[3])
ElementErrorCode QuadRule4::validate(const Element* e)
{
ElementErrorCode error_code;
error_code[ElementErrorFlag::ZeroVolume] = e->hasZeroVolume();
error_code[ElementErrorFlag::ZeroVolume] = hasZeroVolume(*e);
Node const* const* _nodes = e->getNodes();
error_code[ElementErrorFlag::NonCoplanar] =
(!MathLib::isCoplanar(*_nodes[0], *_nodes[1], *_nodes[2], *_nodes[3]));
......
......@@ -93,7 +93,7 @@ unsigned TetRule4::identifyFace(Node const* const* _nodes, Node* nodes[3])
ElementErrorCode TetRule4::validate(const Element* e)
{
ElementErrorCode error_code;
error_code[ElementErrorFlag::ZeroVolume] = e->hasZeroVolume();
error_code[ElementErrorFlag::ZeroVolume] = hasZeroVolume(*e);
error_code[ElementErrorFlag::NodeOrder] = !e->testElementNodeOrder();
return error_code;
}
......
......@@ -61,7 +61,7 @@ unsigned TriRule3::identifyFace(Node const* const* _nodes, Node* nodes[3])
ElementErrorCode TriRule3::validate(const Element* e)
{
ElementErrorCode error_code;
error_code[ElementErrorFlag::ZeroVolume] = e->hasZeroVolume();
error_code[ElementErrorFlag::ZeroVolume] = hasZeroVolume(*e);
error_code[ElementErrorFlag::NodeOrder] = !e->testElementNodeOrder();
return error_code;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment