diff --git a/src/mesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMesh.H b/src/mesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMesh.H index 2cb76d7c71..d93587700c 100644 --- a/src/mesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMesh.H +++ b/src/mesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMesh.H @@ -382,7 +382,8 @@ private: void limitDisplacement ( const Triangulation::Finite_vertices_iterator& vit, - vector& displacement + vector& displacement, + label callCount = 0 ) const; //- Check if a location is in the exclusion range of an existing feature diff --git a/src/mesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMeshConformToSurface.C b/src/mesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMeshConformToSurface.C index 0dbff5886b..4a2ee7f762 100644 --- a/src/mesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMeshConformToSurface.C +++ b/src/mesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMeshConformToSurface.C @@ -486,9 +486,18 @@ void Foam::conformalVoronoiMesh::dualCellLargestSurfaceProtrusion void Foam::conformalVoronoiMesh::limitDisplacement ( const Triangulation::Finite_vertices_iterator& vit, - vector& displacement + vector& displacement, + label callCount ) const { + callCount++; + + // Do not allow infinite recursion + if (callCount > 7) + { + return; + } + point pt = topoint(vit->point()); point dispPt = pt + displacement; @@ -556,7 +565,7 @@ void Foam::conformalVoronoiMesh::limitDisplacement // Info<< " Limiting displacement of point " << pt << endl; - limitDisplacement(vit, displacement); + limitDisplacement(vit, displacement, callCount); } }