diff --git a/MeshLib/Elements/TemplateQuad.tpp b/MeshLib/Elements/TemplateQuad.tpp index 029e5bd57181ab0c606753f63a9025f35fa7cd86..045c9eb7c7f9ea5927acd1da959c2348094b4565 100644 --- a/MeshLib/Elements/TemplateQuad.tpp +++ b/MeshLib/Elements/TemplateQuad.tpp @@ -125,8 +125,10 @@ ElementErrorCode TemplateQuad<NNODES,CELLQUADTYPE>::validate() const ElementErrorCode error_code; error_code[ElementErrorFlag::ZeroVolume] = this->hasZeroVolume(); error_code[ElementErrorFlag::NonCoplanar] = (!GeoLib::pointsOnAPlane(*_nodes[0], *_nodes[1], *_nodes[2], *_nodes[3])); - error_code[ElementErrorFlag::NonConvex] = (!(GeoLib::dividedByPlane(*_nodes[0], *_nodes[2], *_nodes[1], *_nodes[3]) && - GeoLib::dividedByPlane(*_nodes[1], *_nodes[3], *_nodes[0], *_nodes[2]))); + // for collapsed quads (i.e. reduced to a line) this test might result "false" as all four points are actually located on a line. + if (!error_code[ElementErrorFlag::ZeroVolume]) + error_code[ElementErrorFlag::NonConvex] = (!(GeoLib::dividedByPlane(*_nodes[0], *_nodes[2], *_nodes[1], *_nodes[3]) && + GeoLib::dividedByPlane(*_nodes[1], *_nodes[3], *_nodes[0], *_nodes[2]))); return error_code; }