From aebfc3c75fa7c4f18eabf3132bbb25daa82d11ff Mon Sep 17 00:00:00 2001
From: laurence <laurence>
Date: Thu, 26 Sep 2013 12:08:28 +0100
Subject: [PATCH] ENH: foamyHexMesh: Do not insert surface points near edge
 points

---
 .../conformalVoronoiMesh.C                    | 22 +++++++++++++++++++
 .../conformalVoronoiMesh.H                    |  3 +++
 .../conformalVoronoiMeshConformToSurface.C    |  4 +++-
 3 files changed, 28 insertions(+), 1 deletion(-)

diff --git a/applications/utilities/mesh/generation/foamyHexMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMesh.C b/applications/utilities/mesh/generation/foamyHexMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMesh.C
index 526367e46c4..c74740d8126 100644
--- a/applications/utilities/mesh/generation/foamyHexMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMesh.C
+++ b/applications/utilities/mesh/generation/foamyHexMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMesh.C
@@ -354,6 +354,28 @@ bool Foam::conformalVoronoiMesh::nearFeaturePt(const Foam::point& pt) const
 }
 
 
+bool Foam::conformalVoronoiMesh::surfacePtNearFeatureEdge
+(
+    const Foam::point& pt
+) const
+{
+    scalar exclusionRangeSqr = surfacePtExclusionDistanceSqr(pt);
+
+    pointIndexHit info;
+    label featureHit;
+
+    geometryToConformTo_.findEdgeNearest
+    (
+        pt,
+        exclusionRangeSqr,
+        info,
+        featureHit
+    );
+
+    return info.hit();
+}
+
+
 void Foam::conformalVoronoiMesh::insertInitialPoints()
 {
     Info<< nl << "Inserting initial points" << endl;
diff --git a/applications/utilities/mesh/generation/foamyHexMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMesh.H b/applications/utilities/mesh/generation/foamyHexMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMesh.H
index bc4d724ec01..61b669882a8 100644
--- a/applications/utilities/mesh/generation/foamyHexMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMesh.H
+++ b/applications/utilities/mesh/generation/foamyHexMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMesh.H
@@ -351,6 +351,9 @@ private:
         //- Check if a location is in exclusion range around a feature point
         bool nearFeaturePt(const Foam::point& pt) const;
 
+        //- Check if a surface point is in exclusion range around a feature edge
+        bool surfacePtNearFeatureEdge(const Foam::point& pt) const;
+
         //- Insert the initial points into the triangulation, based on the
         //  initialPointsMethod
         void insertInitialPoints();
diff --git a/applications/utilities/mesh/generation/foamyHexMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMeshConformToSurface.C b/applications/utilities/mesh/generation/foamyHexMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMeshConformToSurface.C
index 6ca14deb90d..e2b6c0d2e8e 100644
--- a/applications/utilities/mesh/generation/foamyHexMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMeshConformToSurface.C
+++ b/applications/utilities/mesh/generation/foamyHexMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMeshConformToSurface.C
@@ -2057,9 +2057,11 @@ void Foam::conformalVoronoiMesh::addSurfaceAndEdgeHits
 
         bool isNearFeaturePt = nearFeaturePt(surfPt);
 
+        bool isNearFeatureEdge = surfacePtNearFeatureEdge(surfPt);
+
         bool isNearSurfacePt = nearSurfacePoint(surfHitI);
 
-        if (isNearFeaturePt || isNearSurfacePt)
+        if (isNearFeaturePt || isNearSurfacePt || isNearFeatureEdge)
         {
             keepSurfacePoint = false;
         }
-- 
GitLab