Skip to content
Snippets Groups Projects
Commit 0008052e authored by mattijs's avatar mattijs
Browse files

ENH: triSurface.C: avoid faceFaces() since not valid for non-manifold

parent 1b5de71f
Branches
Tags
No related merge requests found
......@@ -211,8 +211,6 @@ void Foam::triSurface::checkTriangles(const bool verbose)
boolList valid(size(), true);
bool hasInvalid = false;
const labelListList& fFaces = faceFaces();
forAll(*this, faceI)
{
const labelledTri& f = (*this)[faceI];
......@@ -236,47 +234,53 @@ void Foam::triSurface::checkTriangles(const bool verbose)
else
{
// duplicate triangle check
const labelList& neighbours = fFaces[faceI];
const labelList& fEdges = faceEdges()[faceI];
// Check if faceNeighbours use same points as this face.
// Note: discards normal information - sides of baffle are merged.
forAll(neighbours, neighbourI)
{
if (neighbours[neighbourI] <= faceI)
{
// lower numbered faces already checked
continue;
}
const labelledTri& n = (*this)[neighbours[neighbourI]];
forAll(fEdges, fp)
{
const labelList& eFaces = edgeFaces()[fEdges[fp]];
if
(
((f[0] == n[0]) || (f[0] == n[1]) || (f[0] == n[2]))
&& ((f[1] == n[0]) || (f[1] == n[1]) || (f[1] == n[2]))
&& ((f[2] == n[0]) || (f[2] == n[1]) || (f[2] == n[2]))
)
forAll(eFaces, i)
{
valid[faceI] = false;
hasInvalid = true;
label neighbour = eFaces[i];
if (verbose)
if (neighbour > faceI)
{
WarningIn
// lower numbered faces already checked
const labelledTri& n = (*this)[neighbour];
if
(
"triSurface::checkTriangles(bool verbose)"
) << "triangles share the same vertices:\n"
<< " face 1 :" << faceI << endl;
printTriangle(Warning, " ", f, points());
Warning
<< endl
<< " face 2 :"
<< neighbours[neighbourI] << endl;
printTriangle(Warning, " ", n, points());
((f[0] == n[0]) || (f[0] == n[1]) || (f[0] == n[2]))
&& ((f[1] == n[0]) || (f[1] == n[1]) || (f[1] == n[2]))
&& ((f[2] == n[0]) || (f[2] == n[1]) || (f[2] == n[2]))
)
{
valid[faceI] = false;
hasInvalid = true;
if (verbose)
{
WarningIn
(
"triSurface::checkTriangles(bool verbose)"
) << "triangles share the same vertices:\n"
<< " face 1 :" << faceI << endl;
printTriangle(Warning, " ", f, points());
Warning
<< endl
<< " face 2 :"
<< neighbour << endl;
printTriangle(Warning, " ", n, points());
}
break;
}
}
break;
}
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment