diff --git a/src/meshTools/triSurface/surfaceFeatures/surfaceFeatures.C b/src/meshTools/triSurface/surfaceFeatures/surfaceFeatures.C index 2639f854c1a8745c679ddfb9ee5d40446287ebda..06e97a41a1892d948392d5ccda758e799e430f80 100644 --- a/src/meshTools/triSurface/surfaceFeatures/surfaceFeatures.C +++ b/src/meshTools/triSurface/surfaceFeatures/surfaceFeatures.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -263,6 +263,16 @@ Foam::surfaceFeatures::labelScalar Foam::surfaceFeatures::walkSegment label vertI = startPointI; + scalar visitedLength = 0.0; + + label nVisited = 0; + + if (findIndex(featurePoints_, startPointI) >= 0) + { + // Do not walk across feature points + + return labelScalar(nVisited, visitedLength); + } // // Now we have: @@ -284,11 +294,6 @@ Foam::surfaceFeatures::labelScalar Foam::surfaceFeatures::walkSegment unsetVal = currentFeatI; } - - scalar visitedLength = 0.0; - - label nVisited = 0; - do { // Step to next feature edge with value unsetVal @@ -620,8 +625,13 @@ void Foam::surfaceFeatures::trimFeatures if ( - (leftPath.len_ + rightPath.len_ < minLen) - || (leftPath.n_ + rightPath.n_ < minElems) + ( + leftPath.len_ + + rightPath.len_ + + startEdge.mag(surf_.localPoints()) + < minLen + ) + || (leftPath.n_ + rightPath.n_ + 1 < minElems) ) { // Rewalk same route (recognizable by featLines == featI)