From 2c52371be1cb82fb2102a9615885d0eb5846fbdb Mon Sep 17 00:00:00 2001 From: graham Date: Tue, 5 Jan 2010 17:59:25 +0000 Subject: [PATCH] Adding counter to prevent infinite recursion in displacement limiting function. --- .../conformalVoronoiMesh/conformalVoronoiMesh.H | 3 ++- .../conformalVoronoiMeshConformToSurface.C | 13 +++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) 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); } }