From c5cede38aa0512129cdbd047449a3d68cd6ad40a Mon Sep 17 00:00:00 2001
From: mattijs <mattijs>
Date: Thu, 9 Jun 2022 11:16:10 +0100
Subject: [PATCH] ENH: snappyHexMesh: early exit of leak detection. See #2403

Changed behaviour to make it the default
---
 etc/caseDicts/annotated/snappyHexMeshDict     |  4 +--
 .../refinementParameters.C                    |  2 +-
 .../refinementParameters.H                    |  4 +--
 .../motorBike_leakDetection/Allrun            | 28 +++++++++----------
 .../{decomposeParDict.6 => decomposeParDict}  |  0
 .../system/snappyHexMeshDict                  |  4 +++
 6 files changed, 22 insertions(+), 20 deletions(-)
 rename tutorials/mesh/snappyHexMesh/motorBike_leakDetection/system/{decomposeParDict.6 => decomposeParDict} (100%)

diff --git a/etc/caseDicts/annotated/snappyHexMeshDict b/etc/caseDicts/annotated/snappyHexMeshDict
index 7adc851a4df..ced21ef9308 100644
--- a/etc/caseDicts/annotated/snappyHexMeshDict
+++ b/etc/caseDicts/annotated/snappyHexMeshDict
@@ -487,8 +487,8 @@ castellatedMeshControls
     // Optional: same but in absolute number of cells. Default is 0.
     //nMinCells 100;
 
-    // Optional: disable of automatic leak closure and exit immediately
-    //useLeakClosure false;
+    // Optional: enable automatic leak closure (default is exit immediately)
+    //useLeakClosure true;
 }
 
 // Settings for the snapping.
diff --git a/src/mesh/snappyHexMesh/snappyHexMeshDriver/refinementParameters/refinementParameters.C b/src/mesh/snappyHexMesh/snappyHexMeshDriver/refinementParameters/refinementParameters.C
index d8158133edf..80f46410245 100644
--- a/src/mesh/snappyHexMesh/snappyHexMeshDriver/refinementParameters/refinementParameters.C
+++ b/src/mesh/snappyHexMesh/snappyHexMeshDriver/refinementParameters/refinementParameters.C
@@ -74,7 +74,7 @@ Foam::refinementParameters::refinementParameters
             pointField(0)
         )
     ),
-    useLeakClosure_(dict.getOrDefault<bool>("useLeakClosure", true)),
+    useLeakClosure_(dict.getOrDefault<bool>("useLeakClosure", false)),
     faceZoneControls_(dict.subOrEmptyDict("faceZoneControls")),
     allowFreeStandingZoneFaces_
     (
diff --git a/src/mesh/snappyHexMesh/snappyHexMeshDriver/refinementParameters/refinementParameters.H b/src/mesh/snappyHexMesh/snappyHexMeshDriver/refinementParameters/refinementParameters.H
index 6f201961d79..117ab78d554 100644
--- a/src/mesh/snappyHexMesh/snappyHexMeshDriver/refinementParameters/refinementParameters.H
+++ b/src/mesh/snappyHexMesh/snappyHexMeshDriver/refinementParameters/refinementParameters.H
@@ -199,8 +199,8 @@ public:
             }
 
             //- Whether to attempt to close any 'leak' between
-            //  locationsInsideMesh and locationsOutsideMesh or exit with
-            //  error. Default is true.
+            //  locationsInsideMesh and locationsOutsideMesh. Default is
+            //  false (dump path and exit with error)
             //  (see also refinementSurfaces::leakLevel to force surfaces to
             //  be checked for leaks early-on in the refinement)
             bool useLeakClosure() const
diff --git a/tutorials/mesh/snappyHexMesh/motorBike_leakDetection/Allrun b/tutorials/mesh/snappyHexMesh/motorBike_leakDetection/Allrun
index 6d57d884a22..3b98cd4069e 100755
--- a/tutorials/mesh/snappyHexMesh/motorBike_leakDetection/Allrun
+++ b/tutorials/mesh/snappyHexMesh/motorBike_leakDetection/Allrun
@@ -1,6 +1,7 @@
 #!/bin/sh
 cd "${0%/*}" || exit                                # Run from this directory
 . ${WM_PROJECT_DIR:?}/bin/tools/RunFunctions        # Tutorial run functions
+. ${WM_PROJECT_DIR:?}/bin/tools/CleanFunctions      # Tutorial clean functions
 #------------------------------------------------------------------------------
 
 mkdir -p constant
@@ -9,26 +10,23 @@ cp -rf \
     "$FOAM_TUTORIALS"/resources/geometry/motorBike_leakDetection \
     constant/triSurface
 
-# Alternative decomposeParDict name:
-decompDict="-decomposeParDict system/decomposeParDict.6"
-## Standard decomposeParDict name:
-# unset decompDict
-
 runApplication surfaceFeatureExtract
 
 runApplication blockMesh
 
-runApplication $decompDict decomposePar
-
-# Using distributedTriSurfaceMesh?
-if foamDictionary -entry geometry -value system/snappyHexMeshDict | \
-   grep -q distributedTriSurfaceMesh
-then
-    runParallel $decompDict surfaceRedistributePar motorBike.obj independent
-fi
+runApplication decomposePar
 
-runParallel $decompDict snappyHexMesh -overwrite
+#- Run with leak-detection (writes postProcessing/leakPath) but no closure
+foamDictionary system/snappyHexMeshDict \
+    -entry castellatedMeshControls.useLeakClosure -set false
+runParallel -s leak snappyHexMesh
+runParallel -s leak checkMesh
+cleanTimeDirectories
 
-runParallel $decompDict checkMesh -writeFields '(nonOrthoAngle)' -constant
+#- Run with leak-detection (writes postProcessing/leakPath) and closure
+foamDictionary system/snappyHexMeshDict \
+    -entry castellatedMeshControls.useLeakClosure -set true
+runParallel -s leak_and_closure snappyHexMesh
+runParallel -s leak_and_closure checkMesh
 
 #------------------------------------------------------------------------------
diff --git a/tutorials/mesh/snappyHexMesh/motorBike_leakDetection/system/decomposeParDict.6 b/tutorials/mesh/snappyHexMesh/motorBike_leakDetection/system/decomposeParDict
similarity index 100%
rename from tutorials/mesh/snappyHexMesh/motorBike_leakDetection/system/decomposeParDict.6
rename to tutorials/mesh/snappyHexMesh/motorBike_leakDetection/system/decomposeParDict
diff --git a/tutorials/mesh/snappyHexMesh/motorBike_leakDetection/system/snappyHexMeshDict b/tutorials/mesh/snappyHexMesh/motorBike_leakDetection/system/snappyHexMeshDict
index e969ac1b174..da460a5e6b2 100644
--- a/tutorials/mesh/snappyHexMesh/motorBike_leakDetection/system/snappyHexMeshDict
+++ b/tutorials/mesh/snappyHexMesh/motorBike_leakDetection/system/snappyHexMeshDict
@@ -175,6 +175,10 @@ castellatedMeshControls
     // are only on the boundary of corresponding cellZones or also allow
     // free-standing zone faces. Not used if there are no faceZones.
     allowFreeStandingZoneFaces true;
+
+
+    // Enable automatic leak closure (default is exit immediately)
+    useLeakClosure true;
 }
 
 
-- 
GitLab