BUG: orientedSurface: multiple parts of surfaces not visited
This commit is contained in:
parent
dc6d296372
commit
de200baf7d
@ -102,7 +102,7 @@ Foam::labelList Foam::orientedSurface::edgeToFace
|
||||
{
|
||||
if (flip[face1] == UNVISITED)
|
||||
{
|
||||
FatalErrorIn("orientedSurface::edgeToFace") << "Problem"
|
||||
FatalErrorIn("orientedSurface::edgeToFace(..)") << "Problem"
|
||||
<< abort(FatalError);
|
||||
}
|
||||
else
|
||||
@ -283,8 +283,10 @@ bool Foam::orientedSurface::flipSurface
|
||||
}
|
||||
}
|
||||
// Recalculate normals
|
||||
s.clearOut();
|
||||
|
||||
if (hasFlipped)
|
||||
{
|
||||
s.clearOut();
|
||||
}
|
||||
return hasFlipped;
|
||||
}
|
||||
|
||||
@ -352,8 +354,28 @@ bool Foam::orientedSurface::orient
|
||||
// FLIP: need to flip
|
||||
labelList flipState(s.size(), UNVISITED);
|
||||
|
||||
flipState[0] = NOFLIP;
|
||||
walkSurface(s, 0, flipState);
|
||||
label faceI = 0;
|
||||
while (true)
|
||||
{
|
||||
label startFaceI = -1;
|
||||
while (faceI < s.size())
|
||||
{
|
||||
if (flipState[faceI] == UNVISITED)
|
||||
{
|
||||
startFaceI = faceI;
|
||||
break;
|
||||
}
|
||||
faceI++;
|
||||
}
|
||||
|
||||
if (startFaceI == -1)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
flipState[startFaceI] = NOFLIP;
|
||||
walkSurface(s, startFaceI, flipState);
|
||||
}
|
||||
|
||||
anyFlipped = flipSurface(s, flipState);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user