From 5c9f35339e613e2a465e6ceef61fadc75c7b5a66 Mon Sep 17 00:00:00 2001
From: mattijs <mattijs>
Date: Wed, 23 Jul 2014 11:25:11 +0100
Subject: [PATCH] ENH: snappyHexMesh: additional checking for faceZones on
 processor boundaries

---
 .../autoHexMeshDriver/autoRefineDriver.C      |  6 ++++
 .../meshRefinement/meshRefinement.H           |  3 ++
 .../meshRefinement/meshRefinementBaffles.C    | 30 +++++++++++++++++++
 3 files changed, 39 insertions(+)

diff --git a/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoRefineDriver.C b/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoRefineDriver.C
index 48fcdbbb064..8c63239f397 100644
--- a/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoRefineDriver.C
+++ b/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoRefineDriver.C
@@ -1248,6 +1248,12 @@ void Foam::autoRefineDriver::doRefine
             decomposer_,
             distributor_
         );
+
+
+        if (debug)
+        {
+            meshRefiner_.checkZoneFaces();
+        }
     }
 }
 
diff --git a/src/mesh/autoMesh/autoHexMesh/meshRefinement/meshRefinement.H b/src/mesh/autoMesh/autoHexMesh/meshRefinement/meshRefinement.H
index 78b7d9a1a11..770b50254ad 100644
--- a/src/mesh/autoMesh/autoHexMesh/meshRefinement/meshRefinement.H
+++ b/src/mesh/autoMesh/autoHexMesh/meshRefinement/meshRefinement.H
@@ -870,6 +870,9 @@ public:
                 const labelList& neiPatch
             );
 
+            //- Debug helper: check faceZones are not on processor patches
+            void checkZoneFaces() const;
+
             //- Create baffles for faces straddling zoned surfaces. Return
             //  baffles.
             autoPtr<mapPolyMesh> createZoneBaffles
diff --git a/src/mesh/autoMesh/autoHexMesh/meshRefinement/meshRefinementBaffles.C b/src/mesh/autoMesh/autoHexMesh/meshRefinement/meshRefinementBaffles.C
index 76bb6150efb..6dc77b39493 100644
--- a/src/mesh/autoMesh/autoHexMesh/meshRefinement/meshRefinementBaffles.C
+++ b/src/mesh/autoMesh/autoHexMesh/meshRefinement/meshRefinementBaffles.C
@@ -531,6 +531,36 @@ Foam::autoPtr<Foam::mapPolyMesh> Foam::meshRefinement::createBaffles
 }
 
 
+void Foam::meshRefinement::checkZoneFaces() const
+{
+    const faceZoneMesh& fZones = mesh_.faceZones();
+
+    const polyBoundaryMesh& pbm = mesh_.boundaryMesh();
+
+    forAll(pbm, patchI)
+    {
+        const polyPatch& pp = pbm[patchI];
+
+        if (isA<processorPolyPatch>(pp))
+        {
+            forAll(pp, i)
+            {
+                label faceI = pp.start()+i;
+                label zoneI = fZones.whichZone(faceI);
+
+                if (zoneI != -1)
+                {
+                    FatalErrorIn("meshRefinement::checkZoneFaces")
+                        << "face:" << faceI << " on patch " << pp.name()
+                        << " is in zone " << fZones[zoneI].name()
+                        << exit(FatalError);
+                }
+            }
+        }
+    }
+}
+
+
 Foam::autoPtr<Foam::mapPolyMesh> Foam::meshRefinement::createZoneBaffles
 (
     const labelList& globalToMasterPatch,
-- 
GitLab