ENH: searchableSurface: handle multiple surfaces. Fixes #1034

This commit is contained in:
mattijs
2018-10-08 17:11:37 +01:00
parent c006a10bd8
commit 6eb1f6fefc

View File

@ -516,8 +516,11 @@ void Foam::searchableSurfacesQueries::findNearest
// - current surface : info+normal1 // - current surface : info+normal1
forAll(near, i) forAll(near, i)
{ {
if (info[i].hit() && normal[i] != vector::zero) if (info[i].hit())
{ {
if (normal[i] != vector::zero)
{
// Have previous hit. Find intersection
if (mag(normal[i]&normal1[i]) < 1.0-1e-6) if (mag(normal[i]&normal1[i]) < 1.0-1e-6)
{ {
plane pl0(near[i], normal[i], false); plane pl0(near[i], normal[i], false);
@ -548,6 +551,14 @@ void Foam::searchableSurfacesQueries::findNearest
} }
} }
} }
else
{
// First hit
near[i] = info[i].hitPoint();
normal[i] = normal1[i];
constraint[i].applyConstraint(normal1[i]);
}
}
} }
// Step to next surface // Step to next surface