diff --git a/src/mesh/snappyHexMesh/Make/files b/src/mesh/snappyHexMesh/Make/files
index 00c46b066eac113306e1aa34d353bea023460d9d..0bdadb98481a063fa80e57133817b196b36d1bf7 100644
--- a/src/mesh/snappyHexMesh/Make/files
+++ b/src/mesh/snappyHexMesh/Make/files
@@ -14,6 +14,7 @@ meshRefinement/meshRefinementMerge.C
 meshRefinement/meshRefinementProblemCells.C
 meshRefinement/meshRefinementRefine.C
 meshRefinement/meshRefinementGapRefine.C
+meshRefinement/meshRefinementBlock.C
 meshRefinement/patchFaceOrientation.C
 
 refinementFeatures/refinementFeatures.C
diff --git a/src/mesh/snappyHexMesh/Make/options b/src/mesh/snappyHexMesh/Make/options
index 2cf98acf6b29ca68bdb02f18d3c558b356bc7f99..f76521cbc2cf604813ffe1a9f25313d1f9601cc4 100644
--- a/src/mesh/snappyHexMesh/Make/options
+++ b/src/mesh/snappyHexMesh/Make/options
@@ -1,5 +1,4 @@
 EXE_INC = \
-    /* -g -DFULLDEBUG -O0 */ \
     -I$(LIB_SRC)/parallel/decompose/decompositionMethods/lnInclude \
     -I$(LIB_SRC)/dynamicMesh/lnInclude \
     -I$(LIB_SRC)/finiteVolume/lnInclude \
diff --git a/src/mesh/snappyHexMesh/meshRefinement/meshRefinement.C b/src/mesh/snappyHexMesh/meshRefinement/meshRefinement.C
index 9717e6e553cdc35418a29cb1a7d26191c167f109..1f1839bac408fbd3322225eaa99f03f004c1c010 100644
--- a/src/mesh/snappyHexMesh/meshRefinement/meshRefinement.C
+++ b/src/mesh/snappyHexMesh/meshRefinement/meshRefinement.C
@@ -58,6 +58,8 @@ License
 #include "fvMeshTools.H"
 #include "motionSmoother.H"
 #include "faceSet.H"
+#include "topoDistanceData.H"
+#include "FaceCellWave.H"
 
 // Leak path
 #include "shortestPathSet.H"
@@ -358,6 +360,218 @@ void Foam::meshRefinement::updateIntersections(const labelList& changedFaces)
 }
 
 
+Foam::labelList Foam::meshRefinement::nearestPatch
+(
+    const labelList& adaptPatchIDs
+) const
+{
+    // Determine nearest patch for all mesh faces. Used when removing cells
+    // to give some reasonable patch to exposed faces.
+
+    const polyBoundaryMesh& patches = mesh_.boundaryMesh();
+
+    labelList nearestAdaptPatch;
+
+    if (adaptPatchIDs.size())
+    {
+        nearestAdaptPatch.setSize(mesh_.nFaces(), adaptPatchIDs[0]);
+
+
+        // Count number of faces in adaptPatchIDs
+        label nFaces = 0;
+        forAll(adaptPatchIDs, i)
+        {
+            const polyPatch& pp = patches[adaptPatchIDs[i]];
+            nFaces += pp.size();
+        }
+
+        // Field on cells and faces.
+        List<topoDistanceData> cellData(mesh_.nCells());
+        List<topoDistanceData> faceData(mesh_.nFaces());
+
+        // Start of changes
+        labelList patchFaces(nFaces);
+        List<topoDistanceData> patchData(nFaces);
+        nFaces = 0;
+        forAll(adaptPatchIDs, i)
+        {
+            label patchi = adaptPatchIDs[i];
+            const polyPatch& pp = patches[patchi];
+
+            forAll(pp, i)
+            {
+                patchFaces[nFaces] = pp.start()+i;
+                patchData[nFaces] = topoDistanceData(patchi, 0);
+                nFaces++;
+            }
+        }
+
+        // Propagate information inwards
+        FaceCellWave<topoDistanceData> deltaCalc
+        (
+            mesh_,
+            patchFaces,
+            patchData,
+            faceData,
+            cellData,
+            mesh_.globalData().nTotalCells()+1
+        );
+
+        // And extract
+
+        bool haveWarned = false;
+        forAll(faceData, facei)
+        {
+            if (!faceData[facei].valid(deltaCalc.data()))
+            {
+                if (!haveWarned)
+                {
+                    WarningInFunction
+                        << "Did not visit some faces, e.g. face " << facei
+                        << " at " << mesh_.faceCentres()[facei] << endl
+                        << "Assigning these faces to patch "
+                        << adaptPatchIDs[0]
+                        << endl;
+                    haveWarned = true;
+                }
+            }
+            else
+            {
+                nearestAdaptPatch[facei] = faceData[facei].data();
+            }
+        }
+    }
+    else
+    {
+        // Use patch 0
+        nearestAdaptPatch.setSize(mesh_.nFaces(), 0);
+    }
+
+    return nearestAdaptPatch;
+}
+
+
+Foam::labelList Foam::meshRefinement::nearestIntersection
+(
+    const labelList& surfacesToTest,
+    const label defaultRegion
+) const
+{
+    // Determine nearest intersection for all mesh faces. Used when removing
+    // cells to give some reasonable patch to exposed faces. Use this
+    // function instead of nearestPatch if you don't have patches yet.
+
+
+    // Swap neighbouring cell centres and cell level
+    labelList neiLevel(mesh_.nFaces()-mesh_.nInternalFaces());
+    pointField neiCc(mesh_.nFaces()-mesh_.nInternalFaces());
+    calcNeighbourData(neiLevel, neiCc);
+
+
+    // Collect segments
+    // ~~~~~~~~~~~~~~~~
+
+    const labelList testFaces(intersectedFaces());
+
+    pointField start(testFaces.size());
+    pointField end(testFaces.size());
+    labelList minLevel(testFaces.size());
+
+    calcCellCellRays
+    (
+        neiCc,
+        neiLevel,
+        testFaces,
+        start,
+        end,
+        minLevel
+    );
+
+    // Do tests in one go
+    labelList surface1;
+    List<pointIndexHit> hit1;
+    labelList region1;
+    labelList surface2;
+    List<pointIndexHit> hit2;
+    labelList region2;
+    surfaces_.findNearestIntersection
+    (
+        surfacesToTest,
+        start,
+        end,
+
+        surface1,
+        hit1,
+        region1,
+        surface2,
+        hit2,
+        region2
+    );
+
+    labelList nearestRegion(mesh_.nFaces(), defaultRegion);
+
+    // Field on cells and faces.
+    List<topoDistanceData> cellData(mesh_.nCells());
+    List<topoDistanceData> faceData(mesh_.nFaces());
+
+    // Start walking from all intersected faces
+    DynamicList<label> patchFaces(start.size());
+    DynamicList<topoDistanceData> patchData(start.size());
+    forAll(start, i)
+    {
+        label facei = testFaces[i];
+        if (surface1[i] != -1)
+        {
+            patchFaces.append(facei);
+            label regioni = surfaces_.globalRegion(surface1[i], region1[i]);
+            patchData.append(topoDistanceData(regioni, 0));
+        }
+        else if (surface2[i] != -1)
+        {
+            patchFaces.append(facei);
+            label regioni = surfaces_.globalRegion(surface2[i], region2[i]);
+            patchData.append(topoDistanceData(regioni, 0));
+        }
+    }
+
+    // Propagate information inwards
+    FaceCellWave<topoDistanceData> deltaCalc
+    (
+        mesh_,
+        patchFaces,
+        patchData,
+        faceData,
+        cellData,
+        mesh_.globalData().nTotalCells()+1
+    );
+
+    // And extract
+
+    bool haveWarned = false;
+    forAll(faceData, facei)
+    {
+        if (!faceData[facei].valid(deltaCalc.data()))
+        {
+            if (!haveWarned)
+            {
+                WarningInFunction
+                    << "Did not visit some faces, e.g. face " << facei
+                    << " at " << mesh_.faceCentres()[facei] << endl
+                    << "Assigning these faces to global region "
+                    << defaultRegion << endl;
+                haveWarned = true;
+            }
+        }
+        else
+        {
+            nearestRegion[facei] = faceData[facei].data();
+        }
+    }
+
+    return nearestRegion;
+}
+
+
 void Foam::meshRefinement::testSyncPointList
 (
     const string& msg,
@@ -3147,7 +3361,7 @@ void Foam::meshRefinement::write
         dumpRefinementLevel();
     }
 
-    if (debugFlags & OBJINTERSECTIONS && prefix.size())
+    if ((debugFlags & OBJINTERSECTIONS) && prefix.size())
     {
         dumpIntersections(prefix);
     }
diff --git a/src/mesh/snappyHexMesh/meshRefinement/meshRefinement.H b/src/mesh/snappyHexMesh/meshRefinement/meshRefinement.H
index 1db4c4120b5d95ea13e76336133d86a82d288a0f..56067d2b9ff847d8b26c6d4f5f6f151816af53b2 100644
--- a/src/mesh/snappyHexMesh/meshRefinement/meshRefinement.H
+++ b/src/mesh/snappyHexMesh/meshRefinement/meshRefinement.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2015-2017 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2015-2019 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
                             | Copyright (C) 2011-2017 OpenFOAM Foundation
@@ -313,7 +313,7 @@ private:
             ) const;
 
             //- Collect faces that are intersected and whose neighbours aren't
-            //  yet marked  for refinement.
+            //  yet marked for refinement.
             labelList getRefineCandidateFaces
             (
                 const labelList& refineCell
@@ -329,6 +329,43 @@ private:
                 label& nRefine
             ) const;
 
+            //- Collect cells intersected by the surface that are candidates
+            //  for gap checking. Used inside markSurfaceGapRefinement
+            void collectGapCandidates
+            (
+                const shellSurfaces& shells,
+                const labelList& testFaces,
+                const labelList& neiLevel,
+                const pointField& neiCc,
+                labelList& cellToCompact,
+                labelList& bFaceToCompact,
+                List<FixedList<label, 3>>& shellGapInfo,
+                List<volumeType>& shellGapMode
+            ) const;
+            void collectGapCells
+            (
+                const scalar planarCos,
+
+                const List<FixedList<label, 3>>& extendedGapLevel,
+                const List<volumeType>& extendedGapMode,
+                const labelList& testFaces,
+                const pointField& start,
+                const pointField& end,
+
+                const labelList& cellToCompact,
+                const labelList& bFaceToCompact,
+                const List<FixedList<label, 3>>& shellGapInfo,
+                const List<volumeType>& shellGapMode,
+
+                const label nAllowRefine,
+                const labelList& neiLevel,
+                const pointField& neiCc,
+
+                labelList& refineCell,
+                label& nRefine
+            ) const;
+
+
             //- Mark cells intersected by the surface if they are inside
             //  close gaps
             label markSurfaceGapRefinement
@@ -472,6 +509,11 @@ private:
             label markProximityRefinement
             (
                 const scalar curvature,
+
+                // Per region the min and max cell level
+                const labelList& surfaceMinLevel,
+                const labelList& surfaceMaxLevel,
+
                 const label nAllowRefine,
                 const labelList& neiLevel,
                 const pointField& neiCc,
@@ -608,6 +650,15 @@ private:
             //  adaptPatchIDs[0]
             labelList nearestPatch(const labelList& adaptPatchIDs) const;
 
+            //- Returns list with for every face the label of the nearest
+            //  (global) region. Any unreached face (disconnected mesh?) becomes
+            //  defaultRegion
+            labelList nearestIntersection
+            (
+                const labelList& surfacesToTest,
+                const label defaultRegion
+            ) const;
+
             //- Returns list with for every internal face -1 or the patch
             //  they should be baffled into.
             labelList markFacesOnProblemCellsGeometric
@@ -1005,11 +1056,13 @@ public:
             //- Is local topology a small gap normal to the test vector
             bool isNormalGap
             (
-                const scalar,
-                const vector&,
-                const vector&,
-                const vector&,
-                const vector&
+                const scalar planarCos,
+                const label level0,
+                const vector& point0,
+                const vector& normal0,
+                const label level1,
+                const vector& point1,
+                const vector& normal1
             ) const;
 
             //- Calculate list of cells to refine.
@@ -1032,6 +1085,44 @@ public:
                 const label maxLocalCells
             ) const;
 
+
+            // Blocking cells
+
+                //- Mark faces on interface between set and rest
+                //  (and same cell level)
+                void markOutsideFaces
+                (
+                    const labelList& cellLevel,
+                    const labelList& neiLevel,
+                    const labelList& refineCell,
+                    bitSet& isOutsideFace
+                ) const;
+
+                //- Count number of faces on cell that are in set
+                label countFaceDirs
+                (
+                    const bitSet& isOutsideFace,
+                    const label celli
+                ) const;
+
+                //- Add one layer of cells to set
+                void growSet
+                (
+                    const labelList& neiLevel,
+                    const bitSet& isOutsideFace,
+                    labelList& refineCell,
+                    label& nRefine
+                ) const;
+
+                //- Detect gapRefinement cells and remove them
+                autoPtr<mapPolyMesh> removeGapCells
+                (
+                    const scalar planarAngle,
+                    const labelList& minSurfaceLevel,
+                    const labelList& globalToMasterPatch,
+                    const label growIter
+                );
+
             //- Refine some cells
             autoPtr<mapPolyMesh> refine(const labelList& cellsToRefine);
 
@@ -1561,6 +1652,9 @@ public:
             );
 };
 
+template<>
+inline bool contiguous<FixedList<label, 3>>()               {return true;}
+
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
diff --git a/src/mesh/snappyHexMesh/meshRefinement/meshRefinementBlock.C b/src/mesh/snappyHexMesh/meshRefinement/meshRefinementBlock.C
new file mode 100644
index 0000000000000000000000000000000000000000..7b20766fdb2719688f103427743559ad4bc3575b
--- /dev/null
+++ b/src/mesh/snappyHexMesh/meshRefinement/meshRefinementBlock.C
@@ -0,0 +1,437 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2018-2019 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "meshRefinement.H"
+#include "fvMesh.H"
+#include "Time.H"
+#include "refinementSurfaces.H"
+#include "removeCells.H"
+#include "unitConversion.H"
+#include "bitSet.H"
+
+// * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
+
+//Foam::label Foam::meshRefinement::markFakeGapRefinement
+//(
+//    const scalar planarCos,
+//
+//    const label nAllowRefine,
+//    const labelList& neiLevel,
+//    const pointField& neiCc,
+//
+//    labelList& refineCell,
+//    label& nRefine
+//) const
+//{
+//    label oldNRefine = nRefine;
+//
+//
+//    // Collect candidate faces (i.e. intersecting any surface and
+//    // owner/neighbour not yet refined.
+//    const labelList testFaces(getRefineCandidateFaces(refineCell));
+//
+//    // Collect segments
+//    pointField start(testFaces.size());
+//    pointField end(testFaces.size());
+//    labelList minLevel(testFaces.size());
+//
+//    calcCellCellRays
+//    (
+//        neiCc,
+//        neiLevel,
+//        testFaces,
+//        start,
+//        end,
+//        minLevel
+//    );
+//
+//
+//    // Re-use the gap shooting methods. This needs:
+//    //  - shell gapLevel : faked. Set to 0,labelMax
+//    //  - surface gapLevel : faked by overwriting
+//
+//
+//    List<FixedList<label, 3>>& surfGapLevel = const_cast
+//    <
+//        List<FixedList<label, 3>>&
+//    >(surfaces_.extendedGapLevel());
+//
+//    List<volumeType>& surfGapMode = const_cast
+//    <
+//        List<volumeType>&
+//    >(surfaces_.extendedGapMode());
+//
+//    const List<FixedList<label, 3>> surfOldLevel(surfGapLevel);
+//    const List<volumeType> surfOldMode(surfGapMode);
+//
+//    // Set the extended gap levels
+//    forAll(surfaces_.gapLevel(), regioni)
+//    {
+//        surfGapLevel[regioni] = FixedList<label, 3>
+//        ({
+//            3,
+//           -1,
+//            surfaces_.gapLevel()[regioni]+1
+//        });
+//    }
+//    surfGapMode = volumeType::MIXED;
+//
+//Pout<< "gapLevel was:" << surfOldLevel << endl;
+//Pout<< "gapLevel now:" << surfGapLevel << endl;
+//Pout<< "gapMode was:" << surfOldMode << endl;
+//Pout<< "gapMode now:" << surfGapMode << endl;
+//Pout<< "nRefine was:" << oldNRefine << endl;
+//
+//
+//
+//    List<List<FixedList<label, 3>>>& shellGapLevel = const_cast
+//    <
+//        List<List<FixedList<label, 3>>>&
+//    >(shells_.extendedGapLevel());
+//
+//    List<List<volumeType>>& shellGapMode = const_cast
+//    <
+//        List<List<volumeType>>&
+//    >(shells_.extendedGapMode());
+//
+//    const List<List<FixedList<label, 3>>> shellOldLevel(shellGapLevel);
+//    const List<List<volumeType>> shellOldMode(shellGapMode);
+//
+//    // Set the extended gap levels
+//    forAll(shellGapLevel, shelli)
+//    {
+//        shellGapLevel[shelli] =  FixedList<label, 3>({3, -1, labelMax});
+//        shellGapMode[shelli] = volumeType::MIXED;
+//    }
+//Pout<< "shellLevel was:" << shellOldLevel << endl;
+//Pout<< "shellLevel now:" << shellGapLevel << endl;
+//
+//    const label nAdditionalRefined = markSurfaceGapRefinement
+//    (
+//        planarCos,
+//
+//        nAllowRefine,
+//        neiLevel,
+//        neiCc,
+//
+//        refineCell,
+//        nRefine
+//    );
+//
+//Pout<< "nRefine now:" << nRefine << endl;
+//
+//    // Restore
+//    surfGapLevel = surfOldLevel;
+//    surfGapMode = surfOldMode;
+//    shellGapLevel = shellOldLevel;
+//    shellGapMode = shellOldMode;
+//
+//    return nAdditionalRefined;
+//}
+
+
+void Foam::meshRefinement::markOutsideFaces
+(
+    const labelList& cellLevel,
+    const labelList& neiLevel,
+    const labelList& refineCell,
+    bitSet& isOutsideFace
+) const
+{
+    // Get faces:
+    // - on outside of cell set
+    // - inbetween same cell level (i.e. quads)
+
+    isOutsideFace.setSize(mesh_.nFaces());
+    isOutsideFace = Zero;
+
+    forAll(mesh_.faceNeighbour(), facei)
+    {
+        label own = mesh_.faceOwner()[facei];
+        label nei = mesh_.faceNeighbour()[facei];
+        if
+        (
+            (cellLevel[own] == cellLevel[nei])
+         && (
+                (refineCell[own] != -1)
+             != (refineCell[nei] != -1)
+            )
+        )
+        {
+            isOutsideFace.set(facei);
+        }
+    }
+    {
+
+        const label nBnd = mesh_.nFaces()-mesh_.nInternalFaces();
+
+        labelList neiRefineCell(nBnd);
+        syncTools::swapBoundaryCellList(mesh_, refineCell, neiRefineCell);
+        for (label bFacei = 0; bFacei < nBnd; ++bFacei)
+        {
+            label facei = mesh_.nInternalFaces()+bFacei;
+            label own = mesh_.faceOwner()[facei];
+
+            if
+            (
+                (cellLevel[own] == neiLevel[bFacei])
+             && (
+                    (refineCell[own] != -1)
+                 != (neiRefineCell[bFacei] != -1)
+                )
+            )
+            {
+                isOutsideFace.set(facei);
+            }
+        }
+    }
+}
+
+
+Foam::label Foam::meshRefinement::countFaceDirs
+(
+    const bitSet& isOutsideFace,
+    const label celli
+) const
+{
+    const cell& cFaces = mesh_.cells()[celli];
+    const vectorField& faceAreas = mesh_.faceAreas();
+
+    Vector<bool> haveDirs(vector::uniform(false));
+
+    forAll(cFaces, cFacei)
+    {
+        const label facei = cFaces[cFacei];
+
+        if (isOutsideFace[facei])
+        {
+            const vector& n = faceAreas[facei];
+            scalar magSqrN = magSqr(n);
+
+            if (magSqrN > ROOTVSMALL)
+            {
+                for
+                (
+                    direction dir = 0;
+                    dir < pTraits<vector>::nComponents;
+                    dir++
+                )
+                {
+                    if (Foam::sqr(n[dir]) > 0.99*magSqrN)
+                    {
+                        haveDirs[dir] = true;
+                        break;
+                    }
+                }
+            }
+        }
+    }
+
+    label nDirs = 0;
+    forAll(haveDirs, dir)
+    {
+        if (haveDirs[dir])
+        {
+            nDirs++;
+        }
+    }
+    return nDirs;
+}
+
+
+void Foam::meshRefinement::growSet
+(
+    const labelList& neiLevel,
+    const bitSet& isOutsideFace,
+    labelList& refineCell,
+    label& nRefine
+) const
+{
+    // Get cells with three or more outside faces
+    const cellList& cells = mesh_.cells();
+    forAll(cells, celli)
+    {
+        if (refineCell[celli] == -1)
+        {
+            if (countFaceDirs(isOutsideFace, celli) == 3)
+            {
+                // Mark cell with any value
+                refineCell[celli] = 0;
+                nRefine++;
+            }
+        }
+    }
+}
+
+
+Foam::autoPtr<Foam::mapPolyMesh> Foam::meshRefinement::removeGapCells
+(
+    const scalar planarAngle,
+    const labelList& minSurfaceLevel,
+    const labelList& globalToMasterPatch,
+    const label growIter
+)
+{
+    // Swap neighbouring cell centres and cell level
+    labelList neiLevel(mesh_.nFaces()-mesh_.nInternalFaces());
+    pointField neiCc(mesh_.nFaces()-mesh_.nInternalFaces());
+    calcNeighbourData(neiLevel, neiCc);
+
+    labelList refineCell(mesh_.nCells(), -1);
+    label nRefine = 0;
+    markProximityRefinement
+    (
+        Foam::cos(degToRad(planarAngle)),
+
+        minSurfaceLevel,                                // surface min level
+        labelList(minSurfaceLevel.size(), labelMax),    // surfaceGapLevel
+
+        labelMax/Pstream::nProcs(), //nAllowRefine,
+        neiLevel,
+        neiCc,
+
+        refineCell,
+        nRefine
+    );
+
+
+    //// Mark big-gap refinement
+    //markFakeGapRefinement
+    //(
+    //    Foam::cos(degToRad(planarAngle)),
+    //
+    //    labelMax/Pstream::nProcs(), //nAllowRefine,
+    //    neiLevel,
+    //    neiCc,
+    //
+    //    refineCell,
+    //    nRefine
+    //);
+
+
+    Info<< "Marked for blocking due to close opposite surfaces         : "
+        << returnReduce(nRefine, sumOp<label>()) << " cells." << endl;
+
+    // Remove outliers, i.e. cells with all points exposed
+    if (growIter)
+    {
+        labelList oldRefineCell(refineCell);
+
+        // Pass1: extend the set to fill in gaps
+        bitSet isOutsideFace;
+        for (label iter = 0; iter < growIter; iter++)
+        {
+            // Get outside faces
+            markOutsideFaces
+            (
+                meshCutter_.cellLevel(),
+                neiLevel,
+                refineCell,
+                isOutsideFace
+            );
+            // Extend with cells with three outside faces
+            growSet(neiLevel, isOutsideFace, refineCell, nRefine);
+        }
+
+
+        // Pass2: erode back to original set if pass1 didn't help
+        for (label iter = 0; iter < growIter; iter++)
+        {
+            // Get outside faces. Ignore cell level.
+            markOutsideFaces
+            (
+                labelList(mesh_.nCells(), 0),
+                labelList(neiLevel.size(), 0),
+                refineCell,
+                isOutsideFace
+            );
+
+            // Unmark cells with three or more outside faces
+            for (label celli = 0; celli < mesh_.nCells(); celli++)
+            {
+                if (refineCell[celli] != -1 && oldRefineCell[celli] == -1)
+                {
+                    if (countFaceDirs(isOutsideFace, celli) >= 3)
+                    {
+                        refineCell[celli] = -1;
+                        --nRefine;
+                    }
+                }
+            }
+        }
+
+        Info<< "Marked for blocking after filtering                        : "
+            << returnReduce(nRefine, sumOp<label>()) << " cells." << endl;
+    }
+
+
+    // Determine patch for every mesh face
+    const PtrList<surfaceZonesInfo>& surfZones = surfaces_.surfZones();
+    labelList unnamedSurfaces(surfaceZonesInfo::getUnnamedSurfaces(surfZones));
+    const label defaultRegion(surfaces_.globalRegion(unnamedSurfaces[0], 0));
+
+    const labelList nearestRegion
+    (
+        nearestIntersection
+        (
+            unnamedSurfaces,
+            defaultRegion
+        )
+    );
+
+    // Pack
+    labelList cellsToRemove(nRefine);
+    nRefine = 0;
+
+    forAll(refineCell, cellI)
+    {
+        if (refineCell[cellI] != -1)
+        {
+            cellsToRemove[nRefine++] = cellI;
+        }
+    }
+
+    // Remove cells
+    removeCells cellRemover(mesh_);
+    labelList exposedFaces(cellRemover.getExposedFaces(cellsToRemove));
+
+    labelList exposedPatches(exposedFaces.size());
+    forAll(exposedFaces, i)
+    {
+        label facei = exposedFaces[i];
+        exposedPatches[i] = globalToMasterPatch[nearestRegion[facei]];
+    }
+
+    return doRemoveCells
+    (
+        cellsToRemove,
+        exposedFaces,
+        exposedPatches,
+        cellRemover
+    );
+}
+
+
+// ************************************************************************* //
diff --git a/src/mesh/snappyHexMesh/meshRefinement/meshRefinementProblemCells.C b/src/mesh/snappyHexMesh/meshRefinement/meshRefinementProblemCells.C
index 2d66b8eb78231174e9b797e5615306e1be7ebb61..000ae8de28d83bf9071bca9e338d89f205ff57bc 100644
--- a/src/mesh/snappyHexMesh/meshRefinement/meshRefinementProblemCells.C
+++ b/src/mesh/snappyHexMesh/meshRefinement/meshRefinementProblemCells.C
@@ -42,8 +42,6 @@ License
 
 #include "snapParameters.H"
 #include "motionSmoother.H"
-#include "topoDistanceData.H"
-#include "FaceCellWave.H"
 
 // * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
 
@@ -375,94 +373,6 @@ bool Foam::meshRefinement::isCollapsedCell
 }
 
 
-Foam::labelList Foam::meshRefinement::nearestPatch
-(
-    const labelList& adaptPatchIDs
-) const
-{
-    const polyBoundaryMesh& patches = mesh_.boundaryMesh();
-
-    labelList nearestAdaptPatch;
-
-    if (adaptPatchIDs.size())
-    {
-        nearestAdaptPatch.setSize(mesh_.nFaces(), adaptPatchIDs[0]);
-
-
-        // Count number of faces in adaptPatchIDs
-        label nFaces = 0;
-        forAll(adaptPatchIDs, i)
-        {
-            const polyPatch& pp = patches[adaptPatchIDs[i]];
-            nFaces += pp.size();
-        }
-
-        // Field on cells and faces.
-        List<topoDistanceData> cellData(mesh_.nCells());
-        List<topoDistanceData> faceData(mesh_.nFaces());
-
-        // Start of changes
-        labelList patchFaces(nFaces);
-        List<topoDistanceData> patchData(nFaces);
-        nFaces = 0;
-        forAll(adaptPatchIDs, i)
-        {
-            label patchi = adaptPatchIDs[i];
-            const polyPatch& pp = patches[patchi];
-
-            forAll(pp, i)
-            {
-                patchFaces[nFaces] = pp.start()+i;
-                patchData[nFaces] = topoDistanceData(patchi, 0);
-                nFaces++;
-            }
-        }
-
-        // Propagate information inwards
-        FaceCellWave<topoDistanceData> deltaCalc
-        (
-            mesh_,
-            patchFaces,
-            patchData,
-            faceData,
-            cellData,
-            mesh_.globalData().nTotalCells()+1
-        );
-
-        // And extract
-
-        bool haveWarned = false;
-        forAll(faceData, facei)
-        {
-            if (!faceData[facei].valid(deltaCalc.data()))
-            {
-                if (!haveWarned)
-                {
-                    WarningInFunction
-                        << "Did not visit some faces, e.g. face " << facei
-                        << " at " << mesh_.faceCentres()[facei] << endl
-                        << "Assigning  these cells to patch "
-                        << adaptPatchIDs[0]
-                        << endl;
-                    haveWarned = true;
-                }
-            }
-            else
-            {
-                nearestAdaptPatch[facei] = faceData[facei].data();
-            }
-        }
-    }
-    else
-    {
-        // Use patch 0
-        nearestAdaptPatch.setSize(mesh_.nFaces(), 0);
-    }
-
-    return nearestAdaptPatch;
-}
-
-
 // Returns list with for every internal face -1 or the patch they should
 // be baffled into. Gets run after createBaffles so all the unzoned surface
 // intersections have already been turned into baffles. (Note: zoned surfaces
diff --git a/src/mesh/snappyHexMesh/meshRefinement/meshRefinementRefine.C b/src/mesh/snappyHexMesh/meshRefinement/meshRefinementRefine.C
index 60f41bd9f0357d1133ead73b4b848efa95a40fac..f5dfad986b5649980d0df308d9301f2d7912aeed 100644
--- a/src/mesh/snappyHexMesh/meshRefinement/meshRefinementRefine.C
+++ b/src/mesh/snappyHexMesh/meshRefinement/meshRefinementRefine.C
@@ -1191,13 +1191,14 @@ Foam::label Foam::meshRefinement::markSurfaceCurvatureRefinement
         // Per segment the list of levels of the surfaces
         labelListList surfaceLevel;
 
-        surfaces_.findAllHigherIntersections
+        surfaces_.findAllIntersections
         (
             start,
             end,
             minLevel,           // max level of surface has to be bigger
                                 // than min level of neighbouring cells
 
+            labelList(surfaces_.maxLevel().size(), 0),  // min level
             surfaces_.maxLevel(),
 
             surfaceNormal,
@@ -1572,13 +1573,17 @@ bool Foam::meshRefinement::isGap
 bool Foam::meshRefinement::isNormalGap
 (
     const scalar planarCos,
+    const label level0,
     const vector& point0,
     const vector& normal0,
 
+    const label level1,
     const vector& point1,
     const vector& normal1
 ) const
 {
+    //const scalar edge0Len = meshCutter_.level0EdgeLength();
+
     //- Hits differ and angles are oppositeish and
     //  hits have a normal distance
     vector d = point1-point0;
@@ -1588,24 +1593,31 @@ bool Foam::meshRefinement::isNormalGap
     {
         scalar cosAngle = (normal0 & normal1);
 
-        vector avg = Zero;
+        vector avgNormal = Zero;
         if (cosAngle < (-1+planarCos))
         {
             // Opposite normals
-            avg = 0.5*(normal0-normal1);
+            avgNormal = 0.5*(normal0-normal1);
         }
         else if (cosAngle > (1-planarCos))
         {
-            avg = 0.5*(normal0+normal1);
+            avgNormal = 0.5*(normal0+normal1);
         }
 
-        if (avg != vector::zero)
+        if (avgNormal != vector::zero)
         {
-            avg /= mag(avg);
-            d /= magD;
+            avgNormal /= mag(avgNormal);
+
+            //scalar normalDist = mag(d&avgNormal);
+            //const scalar avgCellSize = edge0Len/pow(2.0, 0.5*(level0+level1));
+            //if (normalDist > 1*avgCellSize)
+            //{
+            //    Pout<< "** skipping large distance " << endl;
+            //    return false;
+            //}
 
             // Check average normal with respect to intersection locations
-            if (mag(avg&d) > Foam::cos(degToRad(45.0)))
+            if (mag(avgNormal&d/magD) > Foam::cos(degToRad(45.0)))
             {
                 return true;
             }
@@ -1628,7 +1640,7 @@ bool Foam::meshRefinement::checkProximity
     const label cellI,
 
     label& cellMaxLevel,        // cached max surface level for this cell
-    vector& cellMaxLocation,    // cached surface normal for this cell
+    vector& cellMaxLocation,    // cached surface location for this cell
     vector& cellMaxNormal,      // cached surface normal for this cell
 
     labelList& refineCell,
@@ -1657,8 +1669,10 @@ bool Foam::meshRefinement::checkProximity
             bool closeSurfaces = isNormalGap
             (
                 planarCos,
+                cellLevel[cellI],   //cellMaxLevel,
                 cellMaxLocation,
                 cellMaxNormal,
+                cellLevel[cellI],   //surfaceLevel,
                 surfaceLocation,
                 surfaceNormal
             );
@@ -1702,6 +1716,10 @@ bool Foam::meshRefinement::checkProximity
 Foam::label Foam::meshRefinement::markProximityRefinement
 (
     const scalar planarCos,
+
+    const labelList& surfaceMinLevel,
+    const labelList& surfaceMaxLevel,
+
     const label nAllowRefine,
     const labelList& neiLevel,
     const pointField& neiCc,
@@ -1723,7 +1741,7 @@ Foam::label Foam::meshRefinement::markProximityRefinement
 
     // Collect candidate faces (i.e. intersecting any surface and
     // owner/neighbour not yet refined.
-    labelList testFaces(getRefineCandidateFaces(refineCell));
+    const labelList testFaces(getRefineCandidateFaces(refineCell));
 
     // Collect segments
     pointField start(testFaces.size());
@@ -1755,14 +1773,15 @@ Foam::label Foam::meshRefinement::markProximityRefinement
         // Per segment the list of levels of the surfaces
         labelListList surfaceLevel;
 
-        surfaces_.findAllHigherIntersections
+        surfaces_.findAllIntersections
         (
             start,
             end,
             minLevel,           // gap level of surface has to be bigger
                                 // than min level of neighbouring cells
 
-            surfaces_.gapLevel(),
+            surfaceMinLevel,
+            surfaceMaxLevel,
 
             surfaceLocation,
             surfaceNormal,
@@ -1777,7 +1796,7 @@ Foam::label Foam::meshRefinement::markProximityRefinement
         //OBJstream str
         //(
         //    mesh_.time().path()
-        //  / "findAllHigherIntersections_"
+        //  / "findAllIntersections_"
         //  + mesh_.time().timeName()
         //  + ".obj"
         //);
@@ -1785,7 +1804,7 @@ Foam::label Foam::meshRefinement::markProximityRefinement
         //OBJstream str2
         //(
         //    mesh_.time().path()
-        //  / "findAllHigherIntersections2_"
+        //  / "findAllIntersections2_"
         //  + mesh_.time().timeName()
         //  + ".obj"
         //);
@@ -1884,8 +1903,10 @@ Foam::label Foam::meshRefinement::markProximityRefinement
                 isNormalGap
                 (
                     planarCos,
+                    cellLevel[own], //cellMaxLevel[own],
                     cellMaxLocation[own],
                     cellMaxNormal[own],
+                    cellLevel[nei], //cellMaxLevel[nei],
                     cellMaxLocation[nei],
                     cellMaxNormal[nei]
                 )
@@ -1954,8 +1975,10 @@ Foam::label Foam::meshRefinement::markProximityRefinement
                 isNormalGap
                 (
                     planarCos,
+                    cellLevel[own], //cellMaxLevel[own],
                     cellMaxLocation[own],
                     cellMaxNormal[own],
+                    neiLevel[bFaceI], //neiBndMaxLevel[bFaceI],
                     neiBndMaxLocation[bFaceI],
                     neiBndMaxNormal[bFaceI]
                 )
@@ -2217,19 +2240,25 @@ Foam::labelList Foam::meshRefinement::refineCandidates
         // Refinement based on gap (only neighbouring cells)
         // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
+        const labelList& surfaceGapLevel = surfaces_.gapLevel();
+
         if
         (
             gapRefinement
          && (planarCos >= -1 && planarCos <= 1)
-         && (max(surfaces_.gapLevel()) > -1)
+         && (max(surfaceGapLevel) > -1)
         )
         {
-            Info<< "Specified gap level : " << max(surfaces_.gapLevel())
+            Info<< "Specified gap level : " << max(surfaceGapLevel)
                 << ", planar angle " << planarAngle << endl;
 
             label nGap = markProximityRefinement
             (
                 planarCos,
+
+                labelList(surfaceGapLevel.size(), -1),  // surface min level
+                surfaceGapLevel,                        // surface max level
+
                 nAllowRefine,
                 neiLevel,
                 neiCc,
diff --git a/src/mesh/snappyHexMesh/refinementSurfaces/refinementSurfaces.C b/src/mesh/snappyHexMesh/refinementSurfaces/refinementSurfaces.C
index a80cdbad901b93f1b01e3c59b9bac6d21ae2c0cf..98496210fda0c9a6c22ebeeede49e73390938c9d 100644
--- a/src/mesh/snappyHexMesh/refinementSurfaces/refinementSurfaces.C
+++ b/src/mesh/snappyHexMesh/refinementSurfaces/refinementSurfaces.C
@@ -160,6 +160,7 @@ Foam::refinementSurfaces::refinementSurfaces
     surfZones_.setSize(surfI);
     regionOffset_.setSize(surfI);
 
+    // Per surface data
     labelList globalMinLevel(surfI, Zero);
     labelList globalMaxLevel(surfI, Zero);
     labelList globalLevelIncr(surfI, Zero);
@@ -174,6 +175,10 @@ Foam::refinementSurfaces::refinementSurfaces
 
     scalarField globalAngle(surfI, -GREAT);
     PtrList<dictionary> globalPatchInfo(surfI);
+
+    labelList globalBlockLevel(surfI, labelMax);
+
+    // Per surface, per region data
     List<Map<label>> regionMinLevel(surfI);
     List<Map<label>> regionMaxLevel(surfI);
     List<Map<label>> regionLevelIncr(surfI);
@@ -181,7 +186,7 @@ Foam::refinementSurfaces::refinementSurfaces
     List<Map<volumeType>> regionGapMode(surfI);
     List<Map<scalar>> regionAngle(surfI);
     List<Map<autoPtr<dictionary>>> regionPatchInfo(surfI);
-
+    List<Map<label>> regionBlockLevel(surfI);
 
     wordHashSet unmatchedKeys(surfacesDict.toc());
 
@@ -282,6 +287,8 @@ Foam::refinementSurfaces::refinementSurfaces
                 );
             }
             dict.readIfPresent("perpendicularAngle", globalAngle[surfI]);
+            dict.readIfPresent("blockLevel", globalBlockLevel[surfI]);
+
 
             if (dict.found("regions"))
             {
@@ -392,6 +399,12 @@ Foam::refinementSurfaces::refinementSurfaces
                                 regionDict.subDict("patchInfo").clone()
                             );
                         }
+
+                        label l;
+                        if (regionDict.readIfPresent<label>("blockLevel", l))
+                        {
+                            regionBlockLevel[surfI].insert(regionI, l);
+                        }
                     }
                 }
             }
@@ -432,6 +445,8 @@ Foam::refinementSurfaces::refinementSurfaces
     perpendicularAngle_.setSize(nRegions);
     perpendicularAngle_ = -GREAT;
     patchInfo_.setSize(nRegions);
+    blockLevel_.setSize(nRegions);
+    blockLevel_ = labelMax;
 
 
     forAll(globalMinLevel, surfI)
@@ -458,6 +473,7 @@ Foam::refinementSurfaces::refinementSurfaces
                     globalPatchInfo[surfI].clone()
                 );
             }
+            blockLevel_[globalRegionI] = globalBlockLevel[surfI];
         }
 
         // Overwrite with region specific information
@@ -490,6 +506,12 @@ Foam::refinementSurfaces::refinementSurfaces
 
             patchInfo_.set(globalRegionI, dict.clone());
         }
+
+        forAllConstIter(Map<label>, regionBlockLevel[surfI], iter)
+        {
+            label globalRegionI = regionOffset_[surfI] + iter.key();
+            blockLevel_[globalRegionI] = regionBlockLevel[surfI][iter.key()];
+        }
     }
 }
 
@@ -903,13 +925,14 @@ void Foam::refinementSurfaces::findHigherIntersection
 }
 
 
-void Foam::refinementSurfaces::findAllHigherIntersections
+void Foam::refinementSurfaces::findAllIntersections
 (
     const pointField& start,
     const pointField& end,
     const labelList& currentLevel,   // current cell refinement level
 
-    const labelList& globalRegionLevel,
+    const labelList& globalMinLevel,
+    const labelList& globalMaxLevel,
 
     List<vectorList>& surfaceNormal,
     labelListList& surfaceLevel
@@ -976,7 +999,11 @@ void Foam::refinementSurfaces::findAllHigherIntersections
             label region = globalRegion(surfI, surfRegion[i]);
             label pointI = pointMap[i];
 
-            if (globalRegionLevel[region] > currentLevel[pointI])
+            if
+            (
+                currentLevel[pointI] >= globalMinLevel[region]
+             && currentLevel[pointI] < globalMaxLevel[region]
+            )
             {
                 // Append to pointI info
                 label sz = surfaceNormal[pointI].size();
@@ -984,20 +1011,21 @@ void Foam::refinementSurfaces::findAllHigherIntersections
                 surfaceNormal[pointI][sz] = surfNormal[i];
 
                 surfaceLevel[pointI].setSize(sz+1);
-                surfaceLevel[pointI][sz] = globalRegionLevel[region];
+                surfaceLevel[pointI][sz] = globalMaxLevel[region];
             }
         }
     }
 }
 
 
-void Foam::refinementSurfaces::findAllHigherIntersections
+void Foam::refinementSurfaces::findAllIntersections
 (
     const pointField& start,
     const pointField& end,
     const labelList& currentLevel,   // current cell refinement level
 
-    const labelList& globalRegionLevel,
+    const labelList& globalMinLevel,
+    const labelList& globalMaxLevel,
 
     List<pointList>& surfaceLocation,
     List<vectorList>& surfaceNormal,
@@ -1063,7 +1091,11 @@ void Foam::refinementSurfaces::findAllHigherIntersections
             label region = globalRegion(surfI, surfRegion[i]);
             label pointI = pointMap[i];
 
-            if (globalRegionLevel[region] > currentLevel[pointI])
+            if
+            (
+                currentLevel[pointI] >= globalMinLevel[region]
+             && currentLevel[pointI] < globalMaxLevel[region]
+            )
             {
                 // Append to pointI info
                 label sz = surfaceNormal[pointI].size();
@@ -1074,7 +1106,9 @@ void Foam::refinementSurfaces::findAllHigherIntersections
                 surfaceNormal[pointI][sz] = surfNormal[i];
 
                 surfaceLevel[pointI].setSize(sz+1);
-                surfaceLevel[pointI][sz] = globalRegionLevel[region];
+                // Level should just be higher than provided point level.
+                // Actual value is not important.
+                surfaceLevel[pointI][sz] = globalMaxLevel[region];
             }
         }
     }
diff --git a/src/mesh/snappyHexMesh/refinementSurfaces/refinementSurfaces.H b/src/mesh/snappyHexMesh/refinementSurfaces/refinementSurfaces.H
index 26f695ef5c61bb6420891e7ae48542724adcf1a4..c438b0c6a8b8b84ddadab3fd2847fa62204a2891 100644
--- a/src/mesh/snappyHexMesh/refinementSurfaces/refinementSurfaces.H
+++ b/src/mesh/snappyHexMesh/refinementSurfaces/refinementSurfaces.H
@@ -88,6 +88,10 @@ class refinementSurfaces
         //- From global region number to small-gap level
         labelList gapLevel_;
 
+        //- From global region number to cell level at which blockage detection
+        //  needs to apply
+        labelList blockLevel_;
+
         //- From global region number to small-gap level specification
         List<FixedList<label, 3>> extendedGapLevel_;
 
@@ -202,6 +206,13 @@ public:
                 return gapLevel_;
             }
 
+            //- From global region number to cell level at which blockage
+            //- detection is applied
+            const labelList& blockLevel() const
+            {
+                return blockLevel_;
+            }
+
             //- From global region number to specification of gap and its
             //  refinement: 3 labels specifying
             //  - minimum wanted number of cells in the gap
@@ -287,25 +298,31 @@ public:
                 labelList& surfaceLevel
             ) const;
 
-            //- Find all intersections of edge. Unsorted order.
-            void findAllHigherIntersections
+            //- Find all intersections of edge with any surface with applicable
+            //  min/max refinement level. Unsorted order.
+            void findAllIntersections
             (
                 const pointField& start,
                 const pointField& end,
                 const labelList& currentLevel,  // current cell refinement level
-                const labelList& globalRegionLevel, // level per surfregion
+
+                const labelList& globalMinLevel,    // level per surfregion
+                const labelList& globalMaxLevel,    // level per surfregion
 
                 List<vectorList>& surfaceNormal,
                 labelListList& surfaceLevel
             ) const;
 
-            //- Find all intersections of edge. Unsorted order.
-            void findAllHigherIntersections
+            //- Find all intersections of edge with any surface with applicable
+            //  min/max refinement level. Unsorted order.
+            void findAllIntersections
             (
                 const pointField& start,
                 const pointField& end,
                 const labelList& currentLevel,  // current cell refinement level
-                const labelList& globalRegionLevel, // level per surfregion
+
+                const labelList& globalMinLevel,    // level per surfregion
+                const labelList& globalMaxLevel,    // level per surfregion
 
                 List<pointList>& surfaceLocation,
                 List<vectorList>& surfaceNormal,
diff --git a/src/mesh/snappyHexMesh/shellSurfaces/shellSurfaces.H b/src/mesh/snappyHexMesh/shellSurfaces/shellSurfaces.H
index 26a8a263d17c0b12db0228864f8dfcfa8b9db9a1..c5763abf99f993c10b6a0690f9ab400478c4dd4e 100644
--- a/src/mesh/snappyHexMesh/shellSurfaces/shellSurfaces.H
+++ b/src/mesh/snappyHexMesh/shellSurfaces/shellSurfaces.H
@@ -193,6 +193,18 @@ public:
                 return shells_;
             }
 
+            //- Per shell, per region the small-gap level specification
+            const List<List<FixedList<label, 3>>>& extendedGapLevel() const
+            {
+                return extendedGapLevel_;
+            }
+
+            //- Per shell, per region the small-gap level specification
+            const List<List<volumeType>>& extendedGapMode() const
+            {
+                return extendedGapMode_;
+            }
+
         // Query
 
             //- Highest shell level
diff --git a/src/mesh/snappyHexMesh/snappyHexMeshDriver/refinementParameters/refinementParameters.C b/src/mesh/snappyHexMesh/snappyHexMeshDriver/refinementParameters/refinementParameters.C
index c36516f918d0220fe5dcca0852a2a722d01a2803..47b4edcf4893d863e9c669dc0a93ecb0ba19f121 100644
--- a/src/mesh/snappyHexMesh/snappyHexMeshDriver/refinementParameters/refinementParameters.C
+++ b/src/mesh/snappyHexMesh/snappyHexMeshDriver/refinementParameters/refinementParameters.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2015-2018 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2015-2019 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
                             | Copyright (C) 2011-2015 OpenFOAM Foundation
@@ -92,6 +92,7 @@ Foam::refinementParameters::refinementParameters
         dict.lookupOrDefault<Switch>("interfaceRefine", true)
     ),
     nErodeCellZone_(dict.lookupOrDefault<label>("nCellZoneErodeIter", 0)),
+    nFilterIter_(dict.lookupOrDefault<label>("nFilterIter", 2)),
     dryRun_(dryRun)
 {
     point locationInMesh;
diff --git a/src/mesh/snappyHexMesh/snappyHexMeshDriver/refinementParameters/refinementParameters.H b/src/mesh/snappyHexMesh/snappyHexMeshDriver/refinementParameters/refinementParameters.H
index 7c4f0953481dade84ca210b6f83d5a6b8f906156..3c81a2f31ab23484f7c79d6445d5ed5df1904df7 100644
--- a/src/mesh/snappyHexMesh/snappyHexMeshDriver/refinementParameters/refinementParameters.H
+++ b/src/mesh/snappyHexMesh/snappyHexMeshDriver/refinementParameters/refinementParameters.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2015 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 2015-2019 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
                             | Copyright (C) 2011-2014 OpenFOAM Foundation
@@ -90,7 +90,7 @@ class refinementParameters
             wordList zonesInMesh_;
 
             //- Information on how to handle faces on faceZones
-            dictionary faceZoneControls_;
+            const dictionary faceZoneControls_;
 
 
         //- FaceZone faces allowed which have owner and neighbour in same
@@ -110,6 +110,8 @@ class refinementParameters
 
         const label nErodeCellZone_;
 
+        const label nFilterIter_;
+
         const bool dryRun_;
 
 
@@ -219,11 +221,19 @@ public:
                 return interfaceRefine_;
             }
 
+            //- Number of iterations of erosion to get a consistent cellZone
             label nErodeCellZone() const
             {
                 return nErodeCellZone_;
             }
 
+            //- Number of iterations of infill/erosion to get a smoother
+            //  blockage
+            label nFilterIter() const
+            {
+                return nFilterIter_;
+            }
+
 
         // Other
 
diff --git a/src/mesh/snappyHexMesh/snappyHexMeshDriver/snappyRefineDriver.C b/src/mesh/snappyHexMesh/snappyHexMeshDriver/snappyRefineDriver.C
index 5a2957b1136019a8d620d51cec11859299ac61c9..75ba0a0f155ce5ed6ac022ae3dead97705a88f7c 100644
--- a/src/mesh/snappyHexMesh/snappyHexMeshDriver/snappyRefineDriver.C
+++ b/src/mesh/snappyHexMesh/snappyHexMeshDriver/snappyRefineDriver.C
@@ -549,6 +549,22 @@ Foam::label Foam::snappyRefineDriver::gapOnlyRefine
 
         if (debug&meshRefinement::MESH)
         {
+            Pout<< "Writing current mesh to time "
+                << meshRefiner_.timeName() << endl;
+            meshRefiner_.write
+            (
+                meshRefinement::debugType(debug),
+                meshRefinement::writeType
+                (
+                    meshRefinement::writeLevel()
+                  | meshRefinement::WRITEMESH
+                ),
+                mesh.time().path()/meshRefiner_.timeName()
+            );
+            Pout<< "Dumped mesh in = "
+                << mesh.time().cpuTimeIncrement() << " s\n" << nl << endl;
+
+
             Pout<< "Dumping " << candidateCells.size()
                 << " cells to cellSet candidateCellsFromGap." << endl;
             cellSet c(mesh, "candidateCellsFromGap", candidateCells);
@@ -716,6 +732,56 @@ Foam::label Foam::snappyRefineDriver::gapOnlyRefine
 }
 
 
+Foam::label Foam::snappyRefineDriver::surfaceProximityBlock
+(
+    const refinementParameters& refineParams,
+    const label maxIter
+)
+{
+    if (refineParams.minRefineCells() == -1)
+    {
+        // Special setting to be able to restart shm on meshes with inconsistent
+        // cellLevel/pointLevel
+        return 0;
+    }
+
+    fvMesh& mesh = meshRefiner_.mesh();
+
+    if (min(meshRefiner_.surfaces().blockLevel()) == labelMax)
+    {
+        return 0;
+    }
+
+    label iter = 0;
+
+    for (iter = 0; iter < maxIter; iter++)
+    {
+        Info<< nl
+            << "Gap blocking iteration " << iter << nl
+            << "------------------------" << nl
+            << endl;
+
+
+        // Determine cells to block
+        // ~~~~~~~~~~~~~~~~~~~~~~~~
+
+        meshRefiner_.removeGapCells
+        (
+            refineParams.planarAngle(),
+            meshRefiner_.surfaces().blockLevel(),
+            globalToMasterPatch_,
+            refineParams.nFilterIter()
+        );
+
+        if (debug)
+        {
+            const_cast<Time&>(mesh.time())++;
+        }
+    }
+    return iter;
+}
+
+
 Foam::label Foam::snappyRefineDriver::bigGapOnlyRefine
 (
     const refinementParameters& refineParams,
@@ -787,6 +853,21 @@ Foam::label Foam::snappyRefineDriver::bigGapOnlyRefine
 
         if (debug&meshRefinement::MESH)
         {
+            Pout<< "Writing current mesh to time "
+                << meshRefiner_.timeName() << endl;
+            meshRefiner_.write
+            (
+                meshRefinement::debugType(debug),
+                meshRefinement::writeType
+                (
+                    meshRefinement::writeLevel()
+                  | meshRefinement::WRITEMESH
+                ),
+                mesh.time().path()/meshRefiner_.timeName()
+            );
+            Pout<< "Dumped mesh in = "
+                << mesh.time().cpuTimeIncrement() << " s\n" << nl << endl;
+
             Pout<< "Dumping " << candidateCells.size()
                 << " cells to cellSet candidateCellsFromBigGap." << endl;
             cellSet c(mesh, "candidateCellsFromBigGap", candidateCells);
@@ -1421,7 +1502,7 @@ void Foam::snappyRefineDriver::removeInsideCells
     );
 
     // Fix any additional (e.g. locationsOutsideMesh). Note: probably not
-    // nessecary.
+    // necessary.
     meshRefiner_.splitMesh
     (
         nBufferLayers,                  // nBufferLayers
@@ -2859,6 +2940,13 @@ void Foam::snappyRefineDriver::doRefine
         100     // maxIter
     );
 
+    // Remove cells inbetween two surfaces
+    surfaceProximityBlock
+    (
+        refineParams,
+        1  //100     // maxIter
+    );
+
     // Remove cells (a certain distance) beyond surface intersections
     removeInsideCells
     (
diff --git a/src/mesh/snappyHexMesh/snappyHexMeshDriver/snappyRefineDriver.H b/src/mesh/snappyHexMesh/snappyHexMeshDriver/snappyRefineDriver.H
index ab4d6a06e4de9f7ff8bc4b78ad8ff0e95ed814f2..eeec7ed89abfdef23d169e9260fbffc49987aff1 100644
--- a/src/mesh/snappyHexMesh/snappyHexMeshDriver/snappyRefineDriver.H
+++ b/src/mesh/snappyHexMesh/snappyHexMeshDriver/snappyRefineDriver.H
@@ -134,6 +134,13 @@ class snappyRefineDriver
             const label maxIter
         );
 
+        //- Block all cells in small gaps
+        label surfaceProximityBlock
+        (
+            const refinementParameters& refineParams,
+            const label maxIter
+        );
+
         //- Refine all cells in large gaps
         label bigGapOnlyRefine
         (
diff --git a/src/meshTools/searchableSurfaces/triSurfaceMesh/triSurfaceMesh.C b/src/meshTools/searchableSurfaces/triSurfaceMesh/triSurfaceMesh.C
index e0677dd0e0ad6dbbac8643a0a9c0ffaa298c5bff..0a0a09597eb50a19138e65719d0e50d001c7325e 100644
--- a/src/meshTools/searchableSurfaces/triSurfaceMesh/triSurfaceMesh.C
+++ b/src/meshTools/searchableSurfaces/triSurfaceMesh/triSurfaceMesh.C
@@ -106,7 +106,7 @@ Foam::fileName Foam::triSurfaceMesh::checkFile
     {
         const fileName rawFName(fName);
 
-        fName = relativeFilePath(io, fName, isGlobal);
+        fName = relativeFilePath(io, rawFName, isGlobal);
 
         if (!exists(fName))
         {
diff --git a/tutorials/mesh/snappyHexMesh/opposite_walls/0/polyMesh/sets/cellsToRemove b/tutorials/mesh/snappyHexMesh/opposite_walls/0/polyMesh/sets/cellsToRemove
new file mode 100644
index 0000000000000000000000000000000000000000..d60446d02a364021ab2391ceeea20b04a6fbdacf
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/opposite_walls/0/polyMesh/sets/cellsToRemove
@@ -0,0 +1,21 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1806                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      binary;
+    class       cellSet;
+    arch        "LSB;label=32;scalar=64";
+    location    "0/polyMesh/sets";
+    object      cellsToRemove;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+0()
+
+// ************************************************************************* //
diff --git a/tutorials/mesh/snappyHexMesh/opposite_walls/Allclean b/tutorials/mesh/snappyHexMesh/opposite_walls/Allclean
new file mode 100755
index 0000000000000000000000000000000000000000..be7ddb068847225ad69704840909a7b0d05a5466
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/opposite_walls/Allclean
@@ -0,0 +1,7 @@
+#!/bin/sh
+cd ${0%/*} || exit 1                        # Run from this directory
+. $WM_PROJECT_DIR/bin/tools/CleanFunctions  # Tutorial clean functions
+
+cleanCase
+
+#------------------------------------------------------------------------------
diff --git a/tutorials/mesh/snappyHexMesh/opposite_walls/Allrun b/tutorials/mesh/snappyHexMesh/opposite_walls/Allrun
new file mode 100755
index 0000000000000000000000000000000000000000..b97b2ffde17ea7473dbabc101fecf9319a4535f1
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/opposite_walls/Allrun
@@ -0,0 +1,15 @@
+#!/bin/sh
+cd ${0%/*} || exit 1                        # Run from this directory
+. $WM_PROJECT_DIR/bin/tools/RunFunctions    # Tutorial run functions
+
+runApplication blockMesh
+
+runApplication snappyHexMesh
+
+#runApplication decomposePar
+#
+#runParallel snappyHexMesh -overwrite
+#
+#runApplication reconstructParMesh -constant
+
+#------------------------------------------------------------------------------
diff --git a/tutorials/mesh/snappyHexMesh/opposite_walls/constant/triSurface/gap0.stl b/tutorials/mesh/snappyHexMesh/opposite_walls/constant/triSurface/gap0.stl
new file mode 100644
index 0000000000000000000000000000000000000000..7e8153b9ff9136f90018e10c038e6e025810ad13
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/opposite_walls/constant/triSurface/gap0.stl
@@ -0,0 +1,702 @@
+solid ascii
+ facet normal 0.0661619 -0.997809 0
+  outer loop
+   vertex -3.29359 0.155981 0.0271616
+   vertex -3.27701 0.157081 0.0270155
+   vertex -3.29359 0.155981 5.02716
+  endloop
+ endfacet
+ facet normal 0.0661619 -0.997809 0
+  outer loop
+   vertex -3.29359 0.155981 5.02716
+   vertex -3.27701 0.157081 0.0270155
+   vertex -3.27701 0.157081 5.02702
+  endloop
+ endfacet
+ facet normal 0.0628737 -0.998021 0
+  outer loop
+   vertex -3.27701 0.157081 0.0270155
+   vertex -3.22853 0.160134 0.0265803
+   vertex -3.27701 0.157081 5.02702
+  endloop
+ endfacet
+ facet normal 0.0628737 -0.998021 0
+  outer loop
+   vertex -3.27701 0.157081 5.02702
+   vertex -3.22853 0.160134 0.0265803
+   vertex -3.22853 0.160134 5.02658
+  endloop
+ endfacet
+ facet normal 0.0590454 -0.998255 0
+  outer loop
+   vertex -3.22853 0.160134 0.0265803
+   vertex -3.15011 0.164773 0.0258607
+   vertex -3.22853 0.160134 5.02658
+  endloop
+ endfacet
+ facet normal 0.0590454 -0.998255 0
+  outer loop
+   vertex -3.22853 0.160134 5.02658
+   vertex -3.15011 0.164773 0.0258607
+   vertex -3.15011 0.164773 5.02586
+  endloop
+ endfacet
+ facet normal 0.054922 -0.998491 0
+  outer loop
+   vertex -3.15011 0.164773 0.0258607
+   vertex -3.04367 0.170628 0.0248616
+   vertex -3.15011 0.164773 5.02586
+  endloop
+ endfacet
+ facet normal 0.054922 -0.998491 0
+  outer loop
+   vertex -3.15011 0.164773 5.02586
+   vertex -3.04367 0.170628 0.0248616
+   vertex -3.04367 0.170628 5.02486
+  endloop
+ endfacet
+ facet normal 0.050508 -0.998724 0
+  outer loop
+   vertex -3.04367 0.170628 0.0248616
+   vertex -2.91114 0.17733 0.0235877
+   vertex -3.04367 0.170628 5.02486
+  endloop
+ endfacet
+ facet normal 0.050508 -0.998724 0
+  outer loop
+   vertex -3.04367 0.170628 5.02486
+   vertex -2.91114 0.17733 0.0235877
+   vertex -2.91114 0.17733 5.02359
+  endloop
+ endfacet
+ facet normal 0.0457832 -0.998951 0
+  outer loop
+   vertex -2.91114 0.17733 0.0235877
+   vertex -2.75447 0.184511 0.0220438
+   vertex -2.91114 0.17733 5.02359
+  endloop
+ endfacet
+ facet normal 0.0457832 -0.998951 0
+  outer loop
+   vertex -2.91114 0.17733 5.02359
+   vertex -2.75447 0.184511 0.0220438
+   vertex -2.75447 0.184511 5.02204
+  endloop
+ endfacet
+ facet normal 0.0407187 -0.999171 0
+  outer loop
+   vertex -2.75447 0.184511 0.0220438
+   vertex -2.57557 0.191801 0.0202347
+   vertex -2.75447 0.184511 5.02204
+  endloop
+ endfacet
+ facet normal 0.0407187 -0.999171 0
+  outer loop
+   vertex -2.75447 0.184511 5.02204
+   vertex -2.57557 0.191801 0.0202347
+   vertex -2.57557 0.191801 5.02023
+  endloop
+ endfacet
+ facet normal 0.0352794 -0.999377 0
+  outer loop
+   vertex -2.57557 0.191801 0.0202347
+   vertex -2.3764 0.198832 0.0181651
+   vertex -2.57557 0.191801 5.02023
+  endloop
+ endfacet
+ facet normal 0.0352794 -0.999377 0
+  outer loop
+   vertex -2.57557 0.191801 5.02023
+   vertex -2.3764 0.198832 0.0181651
+   vertex -2.3764 0.198832 5.01817
+  endloop
+ endfacet
+ facet normal 0.0294239 -0.999567 0
+  outer loop
+   vertex -2.3764 0.198832 0.0181651
+   vertex -2.15887 0.205236 0.0158399
+   vertex -2.3764 0.198832 5.01817
+  endloop
+ endfacet
+ facet normal 0.0294239 -0.999567 0
+  outer loop
+   vertex -2.3764 0.198832 5.01817
+   vertex -2.15887 0.205236 0.0158399
+   vertex -2.15887 0.205236 5.01584
+  endloop
+ endfacet
+ facet normal 0.023104 -0.999733 0
+  outer loop
+   vertex -2.15887 0.205236 0.0158399
+   vertex -1.92493 0.210642 0.0132637
+   vertex -2.15887 0.205236 5.01584
+  endloop
+ endfacet
+ facet normal 0.023104 -0.999733 0
+  outer loop
+   vertex -2.15887 0.205236 5.01584
+   vertex -1.92493 0.210642 0.0132637
+   vertex -1.92493 0.210642 5.01326
+  endloop
+ endfacet
+ facet normal 0.0162636 -0.999868 0
+  outer loop
+   vertex -1.92493 0.210642 0.0132637
+   vertex -1.6765 0.214683 0.0104414
+   vertex -1.92493 0.210642 5.01326
+  endloop
+ endfacet
+ facet normal 0.0162636 -0.999868 0
+  outer loop
+   vertex -1.92493 0.210642 5.01326
+   vertex -1.6765 0.214683 0.0104414
+   vertex -1.6765 0.214683 5.01044
+  endloop
+ endfacet
+ facet normal 0.00883721 -0.999961 0
+  outer loop
+   vertex -1.6765 0.214683 0.0104414
+   vertex -1.41553 0.216989 0.00737764
+   vertex -1.6765 0.214683 5.01044
+  endloop
+ endfacet
+ facet normal 0.00883721 -0.999961 0
+  outer loop
+   vertex -1.6765 0.214683 5.01044
+   vertex -1.41553 0.216989 0.00737764
+   vertex -1.41553 0.216989 5.00738
+  endloop
+ endfacet
+ facet normal 0.000747672 -1 0
+  outer loop
+   vertex -1.41553 0.216989 0.00737764
+   vertex -1.14395 0.217192 0.00407733
+   vertex -1.41553 0.216989 5.00738
+  endloop
+ endfacet
+ facet normal 0.000747672 -1 0
+  outer loop
+   vertex -1.41553 0.216989 5.00738
+   vertex -1.14395 0.217192 0.00407733
+   vertex -1.14395 0.217192 5.00408
+  endloop
+ endfacet
+ facet normal -0.00809571 -0.999967 0
+  outer loop
+   vertex -1.14395 0.217192 0.00407733
+   vertex -0.863677 0.214923 0.000545189
+   vertex -1.14395 0.217192 5.00408
+  endloop
+ endfacet
+ facet normal -0.00809571 -0.999967 0
+  outer loop
+   vertex -1.14395 0.217192 5.00408
+   vertex -0.863677 0.214923 0.000545189
+   vertex -0.863677 0.214923 5.00055
+  endloop
+ endfacet
+ facet normal -0.0176094 -0.999845 0
+  outer loop
+   vertex -0.863677 0.214923 0.000545189
+   vertex -0.576681 0.209869 -0.00320975
+   vertex -0.863677 0.214923 5.00055
+  endloop
+ endfacet
+ facet normal -0.0176094 -0.999845 0
+  outer loop
+   vertex -0.863677 0.214923 5.00055
+   vertex -0.576681 0.209869 -0.00320975
+   vertex -0.576681 0.209869 4.99679
+  endloop
+ endfacet
+ facet normal -0.0267547 -0.999642 0
+  outer loop
+   vertex -0.576681 0.209869 -0.00320975
+   vertex -0.285042 0.202063 -0.00715164
+   vertex -0.576681 0.209869 4.99679
+  endloop
+ endfacet
+ facet normal -0.0267547 -0.999642 0
+  outer loop
+   vertex -0.576681 0.209869 4.99679
+   vertex -0.285042 0.202063 -0.00715164
+   vertex -0.285042 0.202063 4.99285
+  endloop
+ endfacet
+ facet normal -0.0352891 -0.999377 0
+  outer loop
+   vertex -0.285042 0.202063 -0.00715164
+   vertex 0.00910685 0.191676 -0.0112343
+   vertex -0.285042 0.202063 4.99285
+  endloop
+ endfacet
+ facet normal -0.0352891 -0.999377 0
+  outer loop
+   vertex -0.285042 0.202063 4.99285
+   vertex 0.00910685 0.191676 -0.0112343
+   vertex 0.00910685 0.191676 4.98877
+  endloop
+ endfacet
+ facet normal -0.043412 -0.999057 0
+  outer loop
+   vertex 0.00910685 0.191676 -0.0112343
+   vertex 0.303633 0.178878 -0.0154114
+   vertex 0.00910685 0.191676 4.98877
+  endloop
+ endfacet
+ facet normal -0.043412 -0.999057 0
+  outer loop
+   vertex 0.00910685 0.191676 4.98877
+   vertex 0.303633 0.178878 -0.0154114
+   vertex 0.303633 0.178878 4.98459
+  endloop
+ endfacet
+ facet normal -0.0513019 -0.998683 0
+  outer loop
+   vertex 0.303633 0.178878 -0.0154114
+   vertex 0.596402 0.163839 -0.0196367
+   vertex 0.303633 0.178878 4.98459
+  endloop
+ endfacet
+ facet normal -0.0513019 -0.998683 0
+  outer loop
+   vertex 0.303633 0.178878 4.98459
+   vertex 0.596402 0.163839 -0.0196367
+   vertex 0.596402 0.163839 4.98036
+  endloop
+ endfacet
+ facet normal -0.0591281 -0.99825 0
+  outer loop
+   vertex 0.596402 0.163839 -0.0196367
+   vertex 0.885281 0.146728 -0.023864
+   vertex 0.596402 0.163839 4.98036
+  endloop
+ endfacet
+ facet normal -0.0591281 -0.99825 0
+  outer loop
+   vertex 0.596402 0.163839 4.98036
+   vertex 0.885281 0.146728 -0.023864
+   vertex 0.885281 0.146728 4.97614
+  endloop
+ endfacet
+ facet normal -0.0670644 -0.997749 0
+  outer loop
+   vertex 0.885281 0.146728 -0.023864
+   vertex 1.16814 0.127716 -0.028047
+   vertex 0.885281 0.146728 4.97614
+  endloop
+ endfacet
+ facet normal -0.0670644 -0.997749 0
+  outer loop
+   vertex 0.885281 0.146728 4.97614
+   vertex 1.16814 0.127716 -0.028047
+   vertex 1.16814 0.127716 4.97195
+  endloop
+ endfacet
+ facet normal -0.0753008 -0.997161 0
+  outer loop
+   vertex 1.16814 0.127716 -0.028047
+   vertex 1.44283 0.106972 -0.0321394
+   vertex 1.16814 0.127716 4.97195
+  endloop
+ endfacet
+ facet normal -0.0753008 -0.997161 0
+  outer loop
+   vertex 1.16814 0.127716 4.97195
+   vertex 1.44283 0.106972 -0.0321394
+   vertex 1.44283 0.106972 4.96786
+  endloop
+ endfacet
+ facet normal -0.0840617 -0.996461 0
+  outer loop
+   vertex 1.44283 0.106972 -0.0321394
+   vertex 1.70724 0.0846666 -0.0360951
+   vertex 1.44283 0.106972 4.96786
+  endloop
+ endfacet
+ facet normal -0.0840617 -0.996461 0
+  outer loop
+   vertex 1.44283 0.106972 4.96786
+   vertex 1.70724 0.0846666 -0.0360951
+   vertex 1.70724 0.0846666 4.9639
+  endloop
+ endfacet
+ facet normal -0.0936296 -0.995607 0
+  outer loop
+   vertex 1.70724 0.0846666 -0.0360951
+   vertex 1.95922 0.0609695 -0.0398677
+   vertex 1.70724 0.0846666 4.9639
+  endloop
+ endfacet
+ facet normal -0.0936296 -0.995607 0
+  outer loop
+   vertex 1.70724 0.0846666 4.9639
+   vertex 1.95922 0.0609695 -0.0398677
+   vertex 1.95922 0.0609695 4.96013
+  endloop
+ endfacet
+ facet normal -0.104381 -0.994537 0
+  outer loop
+   vertex 1.95922 0.0609695 -0.0398677
+   vertex 2.19665 0.0360507 -0.043411
+   vertex 1.95922 0.0609695 4.96013
+  endloop
+ endfacet
+ facet normal -0.104381 -0.994537 0
+  outer loop
+   vertex 1.95922 0.0609695 4.96013
+   vertex 2.19665 0.0360507 -0.043411
+   vertex 2.19665 0.0360507 4.95659
+  endloop
+ endfacet
+ facet normal -0.11685 -0.99315 0
+  outer loop
+   vertex 2.19665 0.0360507 -0.043411
+   vertex 2.41738 0.0100801 -0.0466788
+   vertex 2.19665 0.0360507 4.95659
+  endloop
+ endfacet
+ facet normal -0.11685 -0.99315 0
+  outer loop
+   vertex 2.19665 0.0360507 4.95659
+   vertex 2.41738 0.0100801 -0.0466788
+   vertex 2.41738 0.0100801 4.95332
+  endloop
+ endfacet
+ facet normal -0.131833 -0.991272 0
+  outer loop
+   vertex 2.41738 0.0100801 -0.0466788
+   vertex 2.61929 -0.0167723 -0.0496248
+   vertex 2.41738 0.0100801 4.95332
+  endloop
+ endfacet
+ facet normal -0.131833 -0.991272 0
+  outer loop
+   vertex 2.41738 0.0100801 4.95332
+   vertex 2.61929 -0.0167723 -0.0496248
+   vertex 2.61929 -0.0167723 4.95038
+  endloop
+ endfacet
+ facet normal -0.150594 -0.988596 0
+  outer loop
+   vertex 2.61929 -0.0167723 -0.0496248
+   vertex 2.80024 -0.0443366 -0.0522027
+   vertex 2.61929 -0.0167723 4.95038
+  endloop
+ endfacet
+ facet normal -0.150594 -0.988596 0
+  outer loop
+   vertex 2.61929 -0.0167723 4.95038
+   vertex 2.80024 -0.0443366 -0.0522027
+   vertex 2.80024 -0.0443366 4.9478
+  endloop
+ endfacet
+ facet normal -0.175292 -0.984517 0
+  outer loop
+   vertex 2.80024 -0.0443366 -0.0522027
+   vertex 2.95809 -0.0724429 -0.0543663
+   vertex 2.80024 -0.0443366 4.9478
+  endloop
+ endfacet
+ facet normal -0.175292 -0.984517 0
+  outer loop
+   vertex 2.80024 -0.0443366 4.9478
+   vertex 2.95809 -0.0724429 -0.0543663
+   vertex 2.95809 -0.0724429 4.94563
+  endloop
+ endfacet
+ facet normal -0.209932 -0.977716 0
+  outer loop
+   vertex 2.95809 -0.0724429 -0.0543663
+   vertex 3.09073 -0.100921 -0.0560693
+   vertex 2.95809 -0.0724429 4.94563
+  endloop
+ endfacet
+ facet normal -0.209932 -0.977716 0
+  outer loop
+   vertex 2.95809 -0.0724429 4.94563
+   vertex 3.09073 -0.100921 -0.0560693
+   vertex 3.09073 -0.100921 4.94393
+  endloop
+ endfacet
+ facet normal -0.262858 -0.964835 0
+  outer loop
+   vertex 3.09073 -0.100921 -0.0560693
+   vertex 3.196 -0.129602 -0.0572656
+   vertex 3.09073 -0.100921 4.94393
+  endloop
+ endfacet
+ facet normal -0.262858 -0.964835 0
+  outer loop
+   vertex 3.09073 -0.100921 4.94393
+   vertex 3.196 -0.129602 -0.0572656
+   vertex 3.196 -0.129602 4.94273
+  endloop
+ endfacet
+ facet normal -0.354313 -0.935127 0
+  outer loop
+   vertex 3.196 -0.129602 -0.0572656
+   vertex 3.27178 -0.158314 -0.0579087
+   vertex 3.196 -0.129602 4.94273
+  endloop
+ endfacet
+ facet normal -0.354313 -0.935127 0
+  outer loop
+   vertex 3.196 -0.129602 4.94273
+   vertex 3.27178 -0.158314 -0.0579087
+   vertex 3.27178 -0.158314 4.94209
+  endloop
+ endfacet
+ facet normal -0.543308 -0.839533 0
+  outer loop
+   vertex 3.27178 -0.158314 -0.0579087
+   vertex 3.31593 -0.186889 -0.0579526
+   vertex 3.27178 -0.158314 4.94209
+  endloop
+ endfacet
+ facet normal -0.543308 -0.839533 0
+  outer loop
+   vertex 3.27178 -0.158314 4.94209
+   vertex 3.31593 -0.186889 -0.0579526
+   vertex 3.31593 -0.186889 4.94205
+  endloop
+ endfacet
+ facet normal -0.938554 -0.345133 0
+  outer loop
+   vertex 3.31593 -0.186889 -0.0579526
+   vertex 3.32633 -0.215156 -0.0573508
+   vertex 3.31593 -0.186889 4.94205
+  endloop
+ endfacet
+ facet normal -0.938554 -0.345133 0
+  outer loop
+   vertex 3.31593 -0.186889 4.94205
+   vertex 3.32633 -0.215156 -0.0573508
+   vertex 3.32633 -0.215156 4.94265
+  endloop
+ endfacet
+ facet normal -0.736826 0.676082 0
+  outer loop
+   vertex 3.32633 -0.215156 -0.0573508
+   vertex 3.30083 -0.242945 -0.0560573
+   vertex 3.32633 -0.215156 4.94265
+  endloop
+ endfacet
+ facet normal -0.736826 0.676082 0
+  outer loop
+   vertex 3.32633 -0.215156 4.94265
+   vertex 3.30083 -0.242945 -0.0560573
+   vertex 3.30083 -0.242945 4.94394
+  endloop
+ endfacet
+ facet normal -0.392899 0.919581 0
+  outer loop
+   vertex 3.30083 -0.242945 -0.0560573
+   vertex 3.2373 -0.270087 -0.0540256
+   vertex 3.30083 -0.242945 4.94394
+  endloop
+ endfacet
+ facet normal -0.392899 0.919581 0
+  outer loop
+   vertex 3.30083 -0.242945 4.94394
+   vertex 3.2373 -0.270087 -0.0540256
+   vertex 3.2373 -0.270087 4.94597
+  endloop
+ endfacet
+ facet normal -0.246078 0.96925 0
+  outer loop
+   vertex 3.2373 -0.270087 -0.0540256
+   vertex 3.13362 -0.296411 -0.0512096
+   vertex 3.2373 -0.270087 4.94597
+  endloop
+ endfacet
+ facet normal -0.246078 0.96925 0
+  outer loop
+   vertex 3.2373 -0.270087 4.94597
+   vertex 3.13362 -0.296411 -0.0512096
+   vertex 3.13362 -0.296411 4.94879
+  endloop
+ endfacet
+ facet normal -0.173081 0.984908 0
+  outer loop
+   vertex 3.13362 -0.296411 -0.0512096
+   vertex 2.98943 -0.32175 -0.0476006
+   vertex 3.13362 -0.296411 4.94879
+  endloop
+ endfacet
+ facet normal -0.173081 0.984908 0
+  outer loop
+   vertex 3.13362 -0.296411 4.94879
+   vertex 2.98943 -0.32175 -0.0476006
+   vertex 2.98943 -0.32175 4.9524
+  endloop
+ endfacet
+ facet normal -0.134459 0.990919 0
+  outer loop
+   vertex 2.98943 -0.32175 -0.0476006
+   vertex 2.81109 -0.345949 -0.0433305
+   vertex 2.98943 -0.32175 4.9524
+  endloop
+ endfacet
+ facet normal -0.134459 0.990919 0
+  outer loop
+   vertex 2.98943 -0.32175 4.9524
+   vertex 2.81109 -0.345949 -0.0433305
+   vertex 2.81109 -0.345949 4.95667
+  endloop
+ endfacet
+ facet normal -0.111286 0.993788 0
+  outer loop
+   vertex 2.81109 -0.345949 -0.0433305
+   vertex 2.60657 -0.368851 -0.0385647
+   vertex 2.81109 -0.345949 4.95667
+  endloop
+ endfacet
+ facet normal -0.111286 0.993788 0
+  outer loop
+   vertex 2.81109 -0.345949 4.95667
+   vertex 2.60657 -0.368851 -0.0385647
+   vertex 2.60657 -0.368851 4.96144
+  endloop
+ endfacet
+ facet normal -0.0958597 0.995395 0
+  outer loop
+   vertex 2.60657 -0.368851 -0.0385647
+   vertex 2.38381 -0.390304 -0.0334684
+   vertex 2.60657 -0.368851 4.96144
+  endloop
+ endfacet
+ facet normal -0.0958597 0.995395 0
+  outer loop
+   vertex 2.60657 -0.368851 4.96144
+   vertex 2.38381 -0.390304 -0.0334684
+   vertex 2.38381 -0.390304 4.96653
+  endloop
+ endfacet
+ facet normal -0.0848608 0.996393 0
+  outer loop
+   vertex 2.38381 -0.390304 -0.0334684
+   vertex 2.15075 -0.410154 -0.028207
+   vertex 2.38381 -0.390304 4.96653
+  endloop
+ endfacet
+ facet normal -0.0848608 0.996393 0
+  outer loop
+   vertex 2.38381 -0.390304 4.96653
+   vertex 2.15075 -0.410154 -0.028207
+   vertex 2.15075 -0.410154 4.97179
+  endloop
+ endfacet
+ facet normal -0.0766254 0.99706 0
+  outer loop
+   vertex 2.15075 -0.410154 -0.028207
+   vertex 1.91534 -0.428245 -0.0229456
+   vertex 2.15075 -0.410154 4.97179
+  endloop
+ endfacet
+ facet normal -0.0766254 0.99706 0
+  outer loop
+   vertex 2.15075 -0.410154 4.97179
+   vertex 1.91534 -0.428245 -0.0229456
+   vertex 1.91534 -0.428245 4.97705
+  endloop
+ endfacet
+ facet normal -0.0702302 0.997531 0
+  outer loop
+   vertex 1.91534 -0.428245 -0.0229456
+   vertex 1.68553 -0.444424 -0.0178496
+   vertex 1.91534 -0.428245 4.97705
+  endloop
+ endfacet
+ facet normal -0.0702302 0.997531 0
+  outer loop
+   vertex 1.91534 -0.428245 4.97705
+   vertex 1.68553 -0.444424 -0.0178496
+   vertex 1.68553 -0.444424 4.98215
+  endloop
+ endfacet
+ facet normal -0.0651223 0.997877 0
+  outer loop
+   vertex 1.68553 -0.444424 -0.0178496
+   vertex 1.46928 -0.458537 -0.0130841
+   vertex 1.68553 -0.444424 4.98215
+  endloop
+ endfacet
+ facet normal -0.0651223 0.997877 0
+  outer loop
+   vertex 1.68553 -0.444424 4.98215
+   vertex 1.46928 -0.458537 -0.0130841
+   vertex 1.46928 -0.458537 4.98692
+  endloop
+ endfacet
+ facet normal -0.0609499 0.998141 0
+  outer loop
+   vertex 1.46928 -0.458537 -0.0130841
+   vertex 1.27451 -0.47043 -0.00881455
+   vertex 1.46928 -0.458537 4.98692
+  endloop
+ endfacet
+ facet normal -0.0609499 0.998141 0
+  outer loop
+   vertex 1.46928 -0.458537 4.98692
+   vertex 1.27451 -0.47043 -0.00881455
+   vertex 1.27451 -0.47043 4.99119
+  endloop
+ endfacet
+ facet normal -0.0574809 0.998347 0
+  outer loop
+   vertex 1.27451 -0.47043 -0.00881455
+   vertex 1.1092 -0.479948 -0.00520608
+   vertex 1.27451 -0.47043 4.99119
+  endloop
+ endfacet
+ facet normal -0.0574809 0.998347 0
+  outer loop
+   vertex 1.27451 -0.47043 4.99119
+   vertex 1.1092 -0.479948 -0.00520608
+   vertex 1.1092 -0.479948 4.99479
+  endloop
+ endfacet
+ facet normal -0.0545577 0.998511 0
+  outer loop
+   vertex 1.1092 -0.479948 -0.00520608
+   vertex 0.981276 -0.486938 -0.00242399
+   vertex 1.1092 -0.479948 4.99479
+  endloop
+ endfacet
+ facet normal -0.0545577 0.998511 0
+  outer loop
+   vertex 1.1092 -0.479948 4.99479
+   vertex 0.981276 -0.486938 -0.00242399
+   vertex 0.981276 -0.486938 4.99758
+  endloop
+ endfacet
+ facet normal -0.0520808 0.998643 0
+  outer loop
+   vertex 0.981276 -0.486938 -0.00242399
+   vertex 0.898694 -0.491245 -0.000633541
+   vertex 0.981276 -0.486938 4.99758
+  endloop
+ endfacet
+ facet normal -0.0520808 0.998643 0
+  outer loop
+   vertex 0.981276 -0.486938 4.99758
+   vertex 0.898694 -0.491245 -0.000633541
+   vertex 0.898694 -0.491245 4.99937
+  endloop
+ endfacet
+ facet normal -0.0501135 0.998744 0
+  outer loop
+   vertex 0.898694 -0.491245 -0.000633541
+   vertex 0.8694 -0.492715 -6.93889e-18
+   vertex 0.898694 -0.491245 4.99937
+  endloop
+ endfacet
+ facet normal -0.0501135 0.998744 0
+  outer loop
+   vertex 0.898694 -0.491245 4.99937
+   vertex 0.8694 -0.492715 -6.93889e-18
+   vertex 0.8694 -0.492715 5
+  endloop
+ endfacet
+endsolid
diff --git a/tutorials/mesh/snappyHexMesh/opposite_walls/constant/triSurface/gap1.stl b/tutorials/mesh/snappyHexMesh/opposite_walls/constant/triSurface/gap1.stl
new file mode 100644
index 0000000000000000000000000000000000000000..c3552e532d31e4b586710399c32e03a91d6c2fb5
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/opposite_walls/constant/triSurface/gap1.stl
@@ -0,0 +1,702 @@
+solid ascii
+ facet normal -0.529226 -0.848481 0
+  outer loop
+   vertex -3.29064 1.36317 0.227764
+   vertex -3.25894 1.3434 0.226215
+   vertex -3.29064 1.36317 5.22776
+  endloop
+ endfacet
+ facet normal -0.529226 -0.848481 0
+  outer loop
+   vertex -3.29064 1.36317 5.22776
+   vertex -3.25894 1.3434 0.226215
+   vertex -3.25894 1.3434 5.22622
+  endloop
+ endfacet
+ facet normal -0.522329 -0.852744 0
+  outer loop
+   vertex -3.25894 1.3434 0.226215
+   vertex -3.17197 1.29012 0.221796
+   vertex -3.25894 1.3434 5.22622
+  endloop
+ endfacet
+ facet normal -0.522329 -0.852744 0
+  outer loop
+   vertex -3.25894 1.3434 5.22622
+   vertex -3.17197 1.29012 0.221796
+   vertex -3.17197 1.29012 5.2218
+  endloop
+ endfacet
+ facet normal -0.512917 -0.858438 0
+  outer loop
+   vertex -3.17197 1.29012 0.221796
+   vertex -3.04192 1.21242 0.214849
+   vertex -3.17197 1.29012 5.2218
+  endloop
+ endfacet
+ facet normal -0.512917 -0.858438 0
+  outer loop
+   vertex -3.17197 1.29012 5.2218
+   vertex -3.04192 1.21242 0.214849
+   vertex -3.04192 1.21242 5.21485
+  endloop
+ endfacet
+ facet normal -0.500622 -0.865666 0
+  outer loop
+   vertex -3.04192 1.21242 0.214849
+   vertex -2.88097 1.11934 0.205716
+   vertex -3.04192 1.21242 5.21485
+  endloop
+ endfacet
+ facet normal -0.500622 -0.865666 0
+  outer loop
+   vertex -3.04192 1.21242 5.21485
+   vertex -2.88097 1.11934 0.205716
+   vertex -2.88097 1.11934 5.20572
+  endloop
+ endfacet
+ facet normal -0.484062 -0.875034 0
+  outer loop
+   vertex -2.88097 1.11934 0.205716
+   vertex -2.70132 1.01996 0.194739
+   vertex -2.88097 1.11934 5.20572
+  endloop
+ endfacet
+ facet normal -0.484062 -0.875034 0
+  outer loop
+   vertex -2.88097 1.11934 5.20572
+   vertex -2.70132 1.01996 0.194739
+   vertex -2.70132 1.01996 5.19474
+  endloop
+ endfacet
+ facet normal -0.460657 -0.887578 0
+  outer loop
+   vertex -2.70132 1.01996 0.194739
+   vertex -2.51516 0.92334 0.182259
+   vertex -2.70132 1.01996 5.19474
+  endloop
+ endfacet
+ facet normal -0.460657 -0.887578 0
+  outer loop
+   vertex -2.70132 1.01996 5.19474
+   vertex -2.51516 0.92334 0.182259
+   vertex -2.51516 0.92334 5.18226
+  endloop
+ endfacet
+ facet normal -0.426861 -0.904317 0
+  outer loop
+   vertex -2.51516 0.92334 0.182259
+   vertex -2.33341 0.83755 0.16861
+   vertex -2.51516 0.92334 5.18226
+  endloop
+ endfacet
+ facet normal -0.426861 -0.904317 0
+  outer loop
+   vertex -2.51516 0.92334 5.18226
+   vertex -2.33341 0.83755 0.16861
+   vertex -2.33341 0.83755 5.16861
+  endloop
+ endfacet
+ facet normal -0.387382 -0.921919 0
+  outer loop
+   vertex -2.33341 0.83755 0.16861
+   vertex -2.15882 0.764192 0.154069
+   vertex -2.33341 0.83755 5.16861
+  endloop
+ endfacet
+ facet normal -0.387382 -0.921919 0
+  outer loop
+   vertex -2.33341 0.83755 5.16861
+   vertex -2.15882 0.764192 0.154069
+   vertex -2.15882 0.764192 5.15407
+  endloop
+ endfacet
+ facet normal -0.345891 -0.938275 0
+  outer loop
+   vertex -2.15882 0.764192 0.154069
+   vertex -1.99089 0.702285 0.138891
+   vertex -2.15882 0.764192 5.15407
+  endloop
+ endfacet
+ facet normal -0.345891 -0.938275 0
+  outer loop
+   vertex -2.15882 0.764192 5.15407
+   vertex -1.99089 0.702285 0.138891
+   vertex -1.99089 0.702285 5.13889
+  endloop
+ endfacet
+ facet normal -0.302998 -0.952991 0
+  outer loop
+   vertex -1.99089 0.702285 0.138891
+   vertex -1.82908 0.650839 0.123332
+   vertex -1.99089 0.702285 5.13889
+  endloop
+ endfacet
+ facet normal -0.302998 -0.952991 0
+  outer loop
+   vertex -1.99089 0.702285 5.13889
+   vertex -1.82908 0.650839 0.123332
+   vertex -1.82908 0.650839 5.12333
+  endloop
+ endfacet
+ facet normal -0.259494 -0.965745 0
+  outer loop
+   vertex -1.82908 0.650839 0.123332
+   vertex -1.67288 0.608866 0.107646
+   vertex -1.82908 0.650839 5.12333
+  endloop
+ endfacet
+ facet normal -0.259494 -0.965745 0
+  outer loop
+   vertex -1.82908 0.650839 5.12333
+   vertex -1.67288 0.608866 0.107646
+   vertex -1.67288 0.608866 5.10765
+  endloop
+ endfacet
+ facet normal -0.216335 -0.976319 0
+  outer loop
+   vertex -1.67288 0.608866 0.107646
+   vertex -1.52174 0.575378 0.0920886
+   vertex -1.67288 0.608866 5.10765
+  endloop
+ endfacet
+ facet normal -0.216335 -0.976319 0
+  outer loop
+   vertex -1.67288 0.608866 5.10765
+   vertex -1.52174 0.575378 0.0920886
+   vertex -1.52174 0.575378 5.09209
+  endloop
+ endfacet
+ facet normal -0.174601 -0.984639 0
+  outer loop
+   vertex -1.52174 0.575378 0.0920886
+   vertex -1.37516 0.549385 0.0769146
+   vertex -1.52174 0.575378 5.09209
+  endloop
+ endfacet
+ facet normal -0.174601 -0.984639 0
+  outer loop
+   vertex -1.52174 0.575378 5.09209
+   vertex -1.37516 0.549385 0.0769146
+   vertex -1.37516 0.549385 5.07691
+  endloop
+ endfacet
+ facet normal -0.135429 -0.990787 0
+  outer loop
+   vertex -1.37516 0.549385 0.0769146
+   vertex -1.2326 0.529898 0.062379
+   vertex -1.37516 0.549385 5.07691
+  endloop
+ endfacet
+ facet normal -0.135429 -0.990787 0
+  outer loop
+   vertex -1.37516 0.549385 5.07691
+   vertex -1.2326 0.529898 0.062379
+   vertex -1.2326 0.529898 5.06238
+  endloop
+ endfacet
+ facet normal -0.0999443 -0.994993 0
+  outer loop
+   vertex -1.2326 0.529898 0.062379
+   vertex -1.09354 0.51593 0.0487369
+   vertex -1.2326 0.529898 5.06238
+  endloop
+ endfacet
+ facet normal -0.0999443 -0.994993 0
+  outer loop
+   vertex -1.2326 0.529898 5.06238
+   vertex -1.09354 0.51593 0.0487369
+   vertex -1.09354 0.51593 5.04874
+  endloop
+ endfacet
+ facet normal -0.0691936 -0.997603 0
+  outer loop
+   vertex -1.09354 0.51593 0.0487369
+   vertex -0.957447 0.506491 0.0362434
+   vertex -1.09354 0.51593 5.04874
+  endloop
+ endfacet
+ facet normal -0.0691936 -0.997603 0
+  outer loop
+   vertex -1.09354 0.51593 5.04874
+   vertex -0.957447 0.506491 0.0362434
+   vertex -0.957447 0.506491 5.03624
+  endloop
+ endfacet
+ facet normal -0.0440947 -0.999027 0
+  outer loop
+   vertex -0.957447 0.506491 0.0362434
+   vertex -0.823806 0.500592 0.0251535
+   vertex -0.957447 0.506491 5.03624
+  endloop
+ endfacet
+ facet normal -0.0440947 -0.999027 0
+  outer loop
+   vertex -0.957447 0.506491 5.03624
+   vertex -0.823806 0.500592 0.0251535
+   vertex -0.823806 0.500592 5.02515
+  endloop
+ endfacet
+ facet normal -0.0254015 -0.999677 0
+  outer loop
+   vertex -0.823806 0.500592 0.0251535
+   vertex -0.692088 0.497245 0.0157222
+   vertex -0.823806 0.500592 5.02515
+  endloop
+ endfacet
+ facet normal -0.0254015 -0.999677 0
+  outer loop
+   vertex -0.823806 0.500592 5.02515
+   vertex -0.692088 0.497245 0.0157222
+   vertex -0.692088 0.497245 5.01572
+  endloop
+ endfacet
+ facet normal -0.0136871 -0.999906 0
+  outer loop
+   vertex -0.692088 0.497245 0.0157222
+   vertex -0.561767 0.495461 0.00820454
+   vertex -0.692088 0.497245 5.01572
+  endloop
+ endfacet
+ facet normal -0.0136871 -0.999906 0
+  outer loop
+   vertex -0.692088 0.497245 5.01572
+   vertex -0.561767 0.495461 0.00820454
+   vertex -0.561767 0.495461 5.0082
+  endloop
+ endfacet
+ facet normal -0.00934395 -0.999956 0
+  outer loop
+   vertex -0.561767 0.495461 0.00820454
+   vertex -0.432318 0.494252 0.00285559
+   vertex -0.561767 0.495461 5.0082
+  endloop
+ endfacet
+ facet normal -0.00934395 -0.999956 0
+  outer loop
+   vertex -0.561767 0.495461 5.0082
+   vertex -0.432318 0.494252 0.00285559
+   vertex -0.432318 0.494252 5.00286
+  endloop
+ endfacet
+ facet normal -0.0125788 -0.999921 0
+  outer loop
+   vertex -0.432318 0.494252 0.00285559
+   vertex -0.303216 0.492628 -6.96415e-05
+   vertex -0.432318 0.494252 5.00286
+  endloop
+ endfacet
+ facet normal -0.0125788 -0.999921 0
+  outer loop
+   vertex -0.432318 0.494252 5.00286
+   vertex -0.303216 0.492628 -6.96415e-05
+   vertex -0.303216 0.492628 4.99993
+  endloop
+ endfacet
+ facet normal -0.0213899 -0.999771 0
+  outer loop
+   vertex -0.303216 0.492628 -6.96415e-05
+   vertex -0.173951 0.489862 -0.000468252
+   vertex -0.303216 0.492628 4.99993
+  endloop
+ endfacet
+ facet normal -0.0213899 -0.999771 0
+  outer loop
+   vertex -0.303216 0.492628 4.99993
+   vertex -0.173951 0.489862 -0.000468252
+   vertex -0.173951 0.489862 4.99953
+  endloop
+ endfacet
+ facet normal -0.0285485 -0.999592 0
+  outer loop
+   vertex -0.173951 0.489862 -0.000468252
+   vertex -0.044067 0.486153 0.00122502
+   vertex -0.173951 0.489862 4.99953
+  endloop
+ endfacet
+ facet normal -0.0285485 -0.999592 0
+  outer loop
+   vertex -0.173951 0.489862 4.99953
+   vertex -0.044067 0.486153 0.00122502
+   vertex -0.044067 0.486153 5.00122
+  endloop
+ endfacet
+ facet normal -0.0324509 -0.999473 0
+  outer loop
+   vertex -0.044067 0.486153 0.00122502
+   vertex 0.0868784 0.481901 0.00445673
+   vertex -0.044067 0.486153 5.00122
+  endloop
+ endfacet
+ facet normal -0.0324509 -0.999473 0
+  outer loop
+   vertex -0.044067 0.486153 5.00122
+   vertex 0.0868784 0.481901 0.00445673
+   vertex 0.0868784 0.481901 5.00446
+  endloop
+ endfacet
+ facet normal -0.0331395 -0.999451 0
+  outer loop
+   vertex 0.0868784 0.481901 0.00445673
+   vertex 0.219329 0.477509 0.00867343
+   vertex 0.0868784 0.481901 5.00446
+  endloop
+ endfacet
+ facet normal -0.0331395 -0.999451 0
+  outer loop
+   vertex 0.0868784 0.481901 5.00446
+   vertex 0.219329 0.477509 0.00867343
+   vertex 0.219329 0.477509 5.00867
+  endloop
+ endfacet
+ facet normal -0.0307156 -0.999528 0
+  outer loop
+   vertex 0.219329 0.477509 0.00867343
+   vertex 0.353728 0.473379 0.0133217
+   vertex 0.219329 0.477509 5.00867
+  endloop
+ endfacet
+ facet normal -0.0307156 -0.999528 0
+  outer loop
+   vertex 0.219329 0.477509 5.00867
+   vertex 0.353728 0.473379 0.0133217
+   vertex 0.353728 0.473379 5.01332
+  endloop
+ endfacet
+ facet normal -0.0253347 -0.999679 0
+  outer loop
+   vertex 0.353728 0.473379 0.0133217
+   vertex 0.490519 0.469913 0.017848
+   vertex 0.353728 0.473379 5.01332
+  endloop
+ endfacet
+ facet normal -0.0253347 -0.999679 0
+  outer loop
+   vertex 0.353728 0.473379 5.01332
+   vertex 0.490519 0.469913 0.017848
+   vertex 0.490519 0.469913 5.01785
+  endloop
+ endfacet
+ facet normal -0.0171959 -0.999852 0
+  outer loop
+   vertex 0.490519 0.469913 0.017848
+   vertex 0.630145 0.467511 0.021699
+   vertex 0.490519 0.469913 5.01785
+  endloop
+ endfacet
+ facet normal -0.0171959 -0.999852 0
+  outer loop
+   vertex 0.490519 0.469913 5.01785
+   vertex 0.630145 0.467511 0.021699
+   vertex 0.630145 0.467511 5.0217
+  endloop
+ endfacet
+ facet normal -0.00653719 -0.999979 0
+  outer loop
+   vertex 0.630145 0.467511 0.021699
+   vertex 0.773049 0.466577 0.0243212
+   vertex 0.630145 0.467511 5.0217
+  endloop
+ endfacet
+ facet normal -0.00653719 -0.999979 0
+  outer loop
+   vertex 0.630145 0.467511 5.0217
+   vertex 0.773049 0.466577 0.0243212
+   vertex 0.773049 0.466577 5.02432
+  endloop
+ endfacet
+ facet normal 0.00637471 -0.99998 0
+  outer loop
+   vertex 0.773049 0.466577 0.0243212
+   vertex 0.919676 0.467512 0.0251611
+   vertex 0.773049 0.466577 5.02432
+  endloop
+ endfacet
+ facet normal 0.00637471 -0.99998 0
+  outer loop
+   vertex 0.773049 0.466577 5.02432
+   vertex 0.919676 0.467512 0.0251611
+   vertex 0.919676 0.467512 5.02516
+  endloop
+ endfacet
+ facet normal 0.0212534 -0.999774 0
+  outer loop
+   vertex 0.919676 0.467512 0.0251611
+   vertex 1.07047 0.470717 0.0236654
+   vertex 0.919676 0.467512 5.02516
+  endloop
+ endfacet
+ facet normal 0.0212534 -0.999774 0
+  outer loop
+   vertex 0.919676 0.467512 5.02516
+   vertex 1.07047 0.470717 0.0236654
+   vertex 1.07047 0.470717 5.02367
+  endloop
+ endfacet
+ facet normal 0.037799 -0.999285 0
+  outer loop
+   vertex 1.07047 0.470717 0.0236654
+   vertex 1.22587 0.476595 0.0192805
+   vertex 1.07047 0.470717 5.02367
+  endloop
+ endfacet
+ facet normal 0.037799 -0.999285 0
+  outer loop
+   vertex 1.07047 0.470717 5.02367
+   vertex 1.22587 0.476595 0.0192805
+   vertex 1.22587 0.476595 5.01928
+  endloop
+ endfacet
+ facet normal 0.0557097 -0.998447 0
+  outer loop
+   vertex 1.22587 0.476595 0.0192805
+   vertex 1.38632 0.485548 0.0114531
+   vertex 1.22587 0.476595 5.01928
+  endloop
+ endfacet
+ facet normal 0.0557097 -0.998447 0
+  outer loop
+   vertex 1.22587 0.476595 5.01928
+   vertex 1.38632 0.485548 0.0114531
+   vertex 1.38632 0.485548 5.01145
+  endloop
+ endfacet
+ facet normal 0.0746878 -0.997207 0
+  outer loop
+   vertex 1.38632 0.485548 0.0114531
+   vertex 1.55227 0.497977 -0.000370394
+   vertex 1.38632 0.485548 5.01145
+  endloop
+ endfacet
+ facet normal 0.0746878 -0.997207 0
+  outer loop
+   vertex 1.38632 0.485548 5.01145
+   vertex 1.55227 0.497977 -0.000370394
+   vertex 1.55227 0.497977 4.99963
+  endloop
+ endfacet
+ facet normal 0.0944474 -0.99553 0
+  outer loop
+   vertex 1.55227 0.497977 -0.000370394
+   vertex 1.72415 0.514284 -0.0167433
+   vertex 1.55227 0.497977 4.99963
+  endloop
+ endfacet
+ facet normal 0.0944474 -0.99553 0
+  outer loop
+   vertex 1.55227 0.497977 4.99963
+   vertex 1.72415 0.514284 -0.0167433
+   vertex 1.72415 0.514284 4.98326
+  endloop
+ endfacet
+ facet normal 0.114721 -0.993398 0
+  outer loop
+   vertex 1.72415 0.514284 -0.0167433
+   vertex 1.90242 0.534871 -0.0382192
+   vertex 1.72415 0.514284 4.98326
+  endloop
+ endfacet
+ facet normal 0.114721 -0.993398 0
+  outer loop
+   vertex 1.72415 0.514284 4.98326
+   vertex 1.90242 0.534871 -0.0382192
+   vertex 1.90242 0.534871 4.96178
+  endloop
+ endfacet
+ facet normal 0.135265 -0.990809 0
+  outer loop
+   vertex 1.90242 0.534871 -0.0382192
+   vertex 2.08751 0.56014 -0.0653515
+   vertex 1.90242 0.534871 4.96178
+  endloop
+ endfacet
+ facet normal 0.135265 -0.990809 0
+  outer loop
+   vertex 1.90242 0.534871 4.96178
+   vertex 2.08751 0.56014 -0.0653515
+   vertex 2.08751 0.56014 4.93465
+  endloop
+ endfacet
+ facet normal 0.155593 -0.987821 0
+  outer loop
+   vertex 2.08751 0.56014 -0.0653515
+   vertex 2.27966 0.590405 -0.0985847
+   vertex 2.08751 0.56014 4.93465
+  endloop
+ endfacet
+ facet normal 0.155593 -0.987821 0
+  outer loop
+   vertex 2.08751 0.56014 4.93465
+   vertex 2.27966 0.590405 -0.0985847
+   vertex 2.27966 0.590405 4.90142
+  endloop
+ endfacet
+ facet normal 0.173128 -0.984899 0
+  outer loop
+   vertex 2.27966 0.590405 -0.0985847
+   vertex 2.47673 0.625047 -0.137215
+   vertex 2.27966 0.590405 4.90142
+  endloop
+ endfacet
+ facet normal 0.173128 -0.984899 0
+  outer loop
+   vertex 2.27966 0.590405 4.90142
+   vertex 2.47673 0.625047 -0.137215
+   vertex 2.47673 0.625047 4.86279
+  endloop
+ endfacet
+ facet normal 0.187282 -0.982306 0
+  outer loop
+   vertex 2.47673 0.625047 -0.137215
+   vertex 2.67522 0.66289 -0.179847
+   vertex 2.47673 0.625047 4.86279
+  endloop
+ endfacet
+ facet normal 0.187282 -0.982306 0
+  outer loop
+   vertex 2.47673 0.625047 4.86279
+   vertex 2.67522 0.66289 -0.179847
+   vertex 2.67522 0.66289 4.82015
+  endloop
+ endfacet
+ facet normal 0.198928 -0.980014 0
+  outer loop
+   vertex 2.67522 0.66289 -0.179847
+   vertex 2.87159 0.702749 -0.22508
+   vertex 2.67522 0.66289 4.82015
+  endloop
+ endfacet
+ facet normal 0.198928 -0.980014 0
+  outer loop
+   vertex 2.67522 0.66289 4.82015
+   vertex 2.87159 0.702749 -0.22508
+   vertex 2.87159 0.702749 4.77492
+  endloop
+ endfacet
+ facet normal 0.208673 -0.977985 0
+  outer loop
+   vertex 2.87159 0.702749 -0.22508
+   vertex 3.0623 0.743442 -0.271509
+   vertex 2.87159 0.702749 4.77492
+  endloop
+ endfacet
+ facet normal 0.208673 -0.977985 0
+  outer loop
+   vertex 2.87159 0.702749 4.77492
+   vertex 3.0623 0.743442 -0.271509
+   vertex 3.0623 0.743442 4.72849
+  endloop
+ endfacet
+ facet normal 0.216945 -0.976184 0
+  outer loop
+   vertex 3.0623 0.743442 -0.271509
+   vertex 3.24382 0.783782 -0.317731
+   vertex 3.0623 0.743442 4.72849
+  endloop
+ endfacet
+ facet normal 0.216945 -0.976184 0
+  outer loop
+   vertex 3.0623 0.743442 4.72849
+   vertex 3.24382 0.783782 -0.317731
+   vertex 3.24382 0.783782 4.68227
+  endloop
+ endfacet
+ facet normal 0.224052 -0.974577 0
+  outer loop
+   vertex 3.24382 0.783782 -0.317731
+   vertex 3.41261 0.822586 -0.362342
+   vertex 3.24382 0.783782 4.68227
+  endloop
+ endfacet
+ facet normal 0.224052 -0.974577 0
+  outer loop
+   vertex 3.24382 0.783782 4.68227
+   vertex 3.41261 0.822586 -0.362342
+   vertex 3.41261 0.822586 4.63766
+  endloop
+ endfacet
+ facet normal 0.230221 -0.973138 0
+  outer loop
+   vertex 3.41261 0.822586 -0.362342
+   vertex 3.56513 0.858669 -0.403941
+   vertex 3.41261 0.822586 4.63766
+  endloop
+ endfacet
+ facet normal 0.230221 -0.973138 0
+  outer loop
+   vertex 3.41261 0.822586 4.63766
+   vertex 3.56513 0.858669 -0.403941
+   vertex 3.56513 0.858669 4.59606
+  endloop
+ endfacet
+ facet normal 0.235625 -0.971844 0
+  outer loop
+   vertex 3.56513 0.858669 -0.403941
+   vertex 3.69785 0.890848 -0.441122
+   vertex 3.56513 0.858669 4.59606
+  endloop
+ endfacet
+ facet normal 0.235625 -0.971844 0
+  outer loop
+   vertex 3.56513 0.858669 4.59606
+   vertex 3.69785 0.890848 -0.441122
+   vertex 3.69785 0.890848 4.55888
+  endloop
+ endfacet
+ facet normal 0.240392 -0.970676 0
+  outer loop
+   vertex 3.69785 0.890848 -0.441122
+   vertex 3.80723 0.917937 -0.472484
+   vertex 3.69785 0.890848 4.55888
+  endloop
+ endfacet
+ facet normal 0.240392 -0.970676 0
+  outer loop
+   vertex 3.69785 0.890848 4.55888
+   vertex 3.80723 0.917937 -0.472484
+   vertex 3.80723 0.917937 4.52752
+  endloop
+ endfacet
+ facet normal 0.24462 -0.969619 0
+  outer loop
+   vertex 3.80723 0.917937 -0.472484
+   vertex 3.88974 0.938753 -0.496623
+   vertex 3.80723 0.917937 4.52752
+  endloop
+ endfacet
+ facet normal 0.24462 -0.969619 0
+  outer loop
+   vertex 3.80723 0.917937 4.52752
+   vertex 3.88974 0.938753 -0.496623
+   vertex 3.88974 0.938753 4.50338
+  endloop
+ endfacet
+ facet normal 0.248364 -0.968667 0
+  outer loop
+   vertex 3.88974 0.938753 -0.496623
+   vertex 3.94184 0.952111 -0.512135
+   vertex 3.88974 0.938753 4.50338
+  endloop
+ endfacet
+ facet normal 0.248364 -0.968667 0
+  outer loop
+   vertex 3.88974 0.938753 4.50338
+   vertex 3.94184 0.952111 -0.512135
+   vertex 3.94184 0.952111 4.48786
+  endloop
+ endfacet
+ facet normal 0.251448 -0.967871 0
+  outer loop
+   vertex 3.94184 0.952111 -0.512135
+   vertex 3.96 0.956827 -0.517617
+   vertex 3.94184 0.952111 4.48786
+  endloop
+ endfacet
+ facet normal 0.251448 -0.967871 0
+  outer loop
+   vertex 3.94184 0.952111 4.48786
+   vertex 3.96 0.956827 -0.517617
+   vertex 3.96 0.956827 4.48238
+  endloop
+ endfacet
+endsolid
diff --git a/tutorials/mesh/snappyHexMesh/opposite_walls/constant/triSurface/gap_transformed0.stl b/tutorials/mesh/snappyHexMesh/opposite_walls/constant/triSurface/gap_transformed0.stl
new file mode 100644
index 0000000000000000000000000000000000000000..8d52d72f5e0f4bd0fe3404b2deb1637eee4efe3d
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/opposite_walls/constant/triSurface/gap_transformed0.stl
@@ -0,0 +1,485 @@
+solid ascii
+ facet normal 0.162993 -0.653976 -0.738748
+  outer loop
+   vertex -2.00546 -1.92761 1.77067
+   vertex -1.9956 -1.91659 1.76309
+   vertex 1.91049 -3.77569 4.27067
+  endloop
+ endfacet
+ facet normal 0.163003 -0.653965 -0.738756
+  outer loop
+   vertex 1.91049 -3.77569 4.27067
+   vertex -1.9956 -1.91659 1.76309
+   vertex 1.92035 -3.76467 4.26309
+  endloop
+ endfacet
+ facet normal 0.160822 -0.656358 -0.737109
+  outer loop
+   vertex -1.9956 -1.91659 1.76309
+   vertex -1.96676 -1.88448 1.74079
+   vertex 1.92035 -3.76467 4.26309
+  endloop
+ endfacet
+ facet normal 0.16084 -0.656339 -0.737122
+  outer loop
+   vertex 1.92035 -3.76467 4.26309
+   vertex -1.96676 -1.88448 1.74079
+   vertex 1.94918 -3.73256 4.24079
+  endloop
+ endfacet
+ facet normal 0.158576 -0.658813 -0.735404
+  outer loop
+   vertex -1.96676 -1.88448 1.74079
+   vertex -1.9201 -1.83274 1.7045
+   vertex 1.94918 -3.73256 4.24079
+  endloop
+ endfacet
+ facet normal 0.158577 -0.658811 -0.735406
+  outer loop
+   vertex 1.94918 -3.73256 4.24079
+   vertex -1.9201 -1.83274 1.7045
+   vertex 1.99584 -3.68082 4.2045
+  endloop
+ endfacet
+ facet normal 0.156086 -0.661518 -0.733506
+  outer loop
+   vertex -1.9201 -1.83274 1.7045
+   vertex -1.85672 -1.76281 1.65492
+   vertex 1.99584 -3.68082 4.2045
+  endloop
+ endfacet
+ facet normal 0.156086 -0.661519 -0.733505
+  outer loop
+   vertex 1.99584 -3.68082 4.2045
+   vertex -1.85672 -1.76281 1.65492
+   vertex 2.05922 -3.61089 4.15492
+  endloop
+ endfacet
+ facet normal 0.153429 -0.664391 -0.731467
+  outer loop
+   vertex -1.85672 -1.76281 1.65492
+   vertex -1.77776 -1.67614 1.59276
+   vertex 2.05922 -3.61089 4.15492
+  endloop
+ endfacet
+ facet normal 0.153422 -0.664399 -0.731462
+  outer loop
+   vertex 2.05922 -3.61089 4.15492
+   vertex -1.77776 -1.67614 1.59276
+   vertex 2.13819 -3.52422 4.09276
+  endloop
+ endfacet
+ facet normal 0.150555 -0.66748 -0.729249
+  outer loop
+   vertex -1.77776 -1.67614 1.59276
+   vertex -1.68435 -1.57419 1.51873
+   vertex 2.13819 -3.52422 4.09276
+  endloop
+ endfacet
+ facet normal 0.150532 -0.667504 -0.729232
+  outer loop
+   vertex 2.13819 -3.52422 4.09276
+   vertex -1.68435 -1.57419 1.51873
+   vertex 2.23159 -3.42227 4.01872
+  endloop
+ endfacet
+ facet normal 0.14752 -0.67072 -0.726892
+  outer loop
+   vertex -1.68435 -1.57419 1.51873
+   vertex -1.57762 -1.45838 1.43353
+   vertex 2.23159 -3.42227 4.01872
+  endloop
+ endfacet
+ facet normal 0.14752 -0.67072 -0.726893
+  outer loop
+   vertex 2.23159 -3.42227 4.01872
+   vertex -1.57762 -1.45838 1.43353
+   vertex 2.33832 -3.30646 3.93352
+  endloop
+ endfacet
+ facet normal 0.144192 -0.674251 -0.724289
+  outer loop
+   vertex -1.57762 -1.45838 1.43353
+   vertex -1.4587 -1.3302 1.33788
+   vertex 2.33832 -3.30646 3.93352
+  endloop
+ endfacet
+ facet normal 0.144209 -0.674234 -0.724301
+  outer loop
+   vertex 2.33832 -3.30646 3.93352
+   vertex -1.4587 -1.3302 1.33788
+   vertex 2.45725 -3.17828 3.83788
+  endloop
+ endfacet
+ facet normal 0.140684 -0.677946 -0.721524
+  outer loop
+   vertex -1.4587 -1.3302 1.33788
+   vertex -1.32871 -1.19105 1.23248
+   vertex 2.45725 -3.17828 3.83788
+  endloop
+ endfacet
+ facet normal 0.140689 -0.677941 -0.721528
+  outer loop
+   vertex 2.45725 -3.17828 3.83788
+   vertex -1.32871 -1.19105 1.23248
+   vertex 2.58723 -3.03913 3.73248
+  endloop
+ endfacet
+ facet normal 0.136822 -0.681982 -0.718457
+  outer loop
+   vertex -1.32871 -1.19105 1.23248
+   vertex -1.1888 -1.04242 1.11804
+   vertex 2.58723 -3.03913 3.73248
+  endloop
+ endfacet
+ facet normal 0.136822 -0.681982 -0.718457
+  outer loop
+   vertex 2.58723 -3.03913 3.73248
+   vertex -1.1888 -1.04242 1.11804
+   vertex 2.72714 -2.8905 3.61804
+  endloop
+ endfacet
+ facet normal 0.13269 -0.686262 -0.715149
+  outer loop
+   vertex -1.1888 -1.04242 1.11804
+   vertex -1.04008 -0.885731 0.995274
+   vertex 2.72714 -2.8905 3.61804
+  endloop
+ endfacet
+ facet normal 0.132684 -0.686267 -0.715145
+  outer loop
+   vertex 2.72714 -2.8905 3.61804
+   vertex -1.04008 -0.885731 0.995274
+   vertex 2.87586 -2.73381 3.49527
+  endloop
+ endfacet
+ facet normal 0.128168 -0.690901 -0.711497
+  outer loop
+   vertex -1.04008 -0.885731 0.995274
+   vertex -0.883688 -0.722446 0.864888
+   vertex 2.87586 -2.73381 3.49527
+  endloop
+ endfacet
+ facet normal 0.128168 -0.690902 -0.711497
+  outer loop
+   vertex 2.87586 -2.73381 3.49527
+   vertex -0.883688 -0.722446 0.864888
+   vertex 3.03226 -2.57053 3.36489
+  endloop
+ endfacet
+ facet normal 0.123244 -0.695903 -0.707481
+  outer loop
+   vertex -0.883688 -0.722446 0.864888
+   vertex -0.720759 -0.554011 0.727592
+   vertex 3.03226 -2.57053 3.36489
+  endloop
+ endfacet
+ facet normal 0.123248 -0.695899 -0.707484
+  outer loop
+   vertex 3.03226 -2.57053 3.36489
+   vertex -0.720759 -0.554011 0.727592
+   vertex 3.19518 -2.40209 3.22759
+  endloop
+ endfacet
+ facet normal 0.117849 -0.701322 -0.703036
+  outer loop
+   vertex -0.720759 -0.554011 0.727592
+   vertex -0.552409 -0.381864 0.584085
+   vertex 3.19518 -2.40209 3.22759
+  endloop
+ endfacet
+ facet normal 0.117846 -0.701324 -0.703034
+  outer loop
+   vertex 3.19518 -2.40209 3.22759
+   vertex -0.552409 -0.381864 0.584085
+   vertex 3.36354 -2.22995 3.08409
+  endloop
+ endfacet
+ facet normal 0.112035 -0.707089 -0.698193
+  outer loop
+   vertex -0.552409 -0.381864 0.584085
+   vertex -0.379793 -0.207438 0.435135
+   vertex 3.36354 -2.22995 3.08409
+  endloop
+ endfacet
+ facet normal 0.112043 -0.707083 -0.698198
+  outer loop
+   vertex 3.36354 -2.22995 3.08409
+   vertex -0.379793 -0.207438 0.435135
+   vertex 3.53615 -2.05552 2.93514
+  endloop
+ endfacet
+ facet normal 0.106436 -0.712575 -0.693476
+  outer loop
+   vertex -0.379793 -0.207438 0.435135
+   vertex -0.204156 -0.0320027 0.281825
+   vertex 3.53615 -2.05552 2.93514
+  endloop
+ endfacet
+ facet normal 0.106443 -0.712569 -0.693481
+  outer loop
+   vertex 3.53615 -2.05552 2.93514
+   vertex -0.204156 -0.0320027 0.281825
+   vertex 3.71179 -1.88008 2.78183
+  endloop
+ endfacet
+ facet normal 0.101202 -0.71764 -0.689021
+  outer loop
+   vertex -0.204156 -0.0320027 0.281825
+   vertex -0.0267831 0.143231 0.125365
+   vertex 3.71179 -1.88008 2.78183
+  endloop
+ endfacet
+ facet normal 0.101197 -0.717645 -0.689017
+  outer loop
+   vertex 3.71179 -1.88008 2.78183
+   vertex -0.0267831 0.143231 0.125365
+   vertex 3.88916 -1.70485 2.62537
+  endloop
+ endfacet
+ facet normal 0.0962111 -0.722415 -0.684734
+  outer loop
+   vertex -0.0267831 0.143231 0.125365
+   vertex 0.151042 0.317053 -0.0330364
+   vertex 3.88916 -1.70485 2.62537
+  endloop
+ endfacet
+ facet normal 0.0961934 -0.72243 -0.68472
+  outer loop
+   vertex 3.88916 -1.70485 2.62537
+   vertex 0.151042 0.317053 -0.0330364
+   vertex 4.06699 -1.53103 2.46696
+  endloop
+ endfacet
+ facet normal 0.091355 -0.727007 -0.680525
+  outer loop
+   vertex 0.151042 0.317053 -0.0330364
+   vertex 0.328034 0.488251 -0.192168
+   vertex 4.06699 -1.53103 2.46696
+  endloop
+ endfacet
+ facet normal 0.0913634 -0.727 -0.680532
+  outer loop
+   vertex 4.06699 -1.53103 2.46696
+   vertex 0.328034 0.488251 -0.192168
+   vertex 4.24397 -1.35983 2.30783
+  endloop
+ endfacet
+ facet normal 0.0865321 -0.731521 -0.676306
+  outer loop
+   vertex 0.328034 0.488251 -0.192168
+   vertex 0.502908 0.655614 -0.35082
+   vertex 4.24397 -1.35983 2.30783
+  endloop
+ endfacet
+ facet normal 0.0865288 -0.731523 -0.676303
+  outer loop
+   vertex 4.24397 -1.35983 2.30783
+   vertex 0.502908 0.655614 -0.35082
+   vertex 4.41885 -1.19247 2.14918
+  endloop
+ endfacet
+ facet normal 0.0816325 -0.736054 -0.671983
+  outer loop
+   vertex 0.502908 0.655614 -0.35082
+   vertex 0.67438 0.817933 -0.507785
+   vertex 4.41885 -1.19247 2.14918
+  endloop
+ endfacet
+ facet normal 0.0816267 -0.736058 -0.671978
+  outer loop
+   vertex 4.41885 -1.19247 2.14918
+   vertex 0.67438 0.817933 -0.507785
+   vertex 4.59032 -1.03015 1.99221
+  endloop
+ endfacet
+ facet normal 0.0765397 -0.740711 -0.667449
+  outer loop
+   vertex 0.67438 0.817933 -0.507785
+   vertex 0.841157 0.973988 -0.661844
+   vertex 4.59032 -1.03015 1.99221
+  endloop
+ endfacet
+ facet normal 0.0765572 -0.740697 -0.667463
+  outer loop
+   vertex 4.59032 -1.03015 1.99221
+   vertex 0.841157 0.973988 -0.661844
+   vertex 4.7571 -0.874093 1.83816
+  endloop
+ endfacet
+ facet normal 0.0711146 -0.745614 -0.662573
+  outer loop
+   vertex 0.841157 0.973988 -0.661844
+   vertex 1.00197 1.12258 -0.811799
+   vertex 4.7571 -0.874093 1.83816
+  endloop
+ endfacet
+ facet normal 0.0711122 -0.745616 -0.662571
+  outer loop
+   vertex 4.7571 -0.874093 1.83816
+   vertex 1.00197 1.12258 -0.811799
+   vertex 4.9179 -0.725499 1.6882
+  endloop
+ endfacet
+ facet normal 0.0651802 -0.750903 -0.657188
+  outer loop
+   vertex 1.00197 1.12258 -0.811799
+   vertex 1.15551 1.26249 -0.956432
+   vertex 4.9179 -0.725499 1.6882
+  endloop
+ endfacet
+ facet normal 0.0651797 -0.750903 -0.657188
+  outer loop
+   vertex 4.9179 -0.725499 1.6882
+   vertex 1.15551 1.26249 -0.956432
+   vertex 5.07145 -0.585591 1.54357
+  endloop
+ endfacet
+ facet normal 0.0584879 -0.756779 -0.651049
+  outer loop
+   vertex 1.15551 1.26249 -0.956432
+   vertex 1.30052 1.39251 -1.09454
+   vertex 5.07145 -0.585591 1.54357
+  endloop
+ endfacet
+ facet normal 0.0584863 -0.75678 -0.651048
+  outer loop
+   vertex 5.07145 -0.585591 1.54357
+   vertex 1.30052 1.39251 -1.09454
+   vertex 5.21646 -0.45557 1.40546
+  endloop
+ endfacet
+ facet normal 0.0507177 -0.763483 -0.643834
+  outer loop
+   vertex 1.30052 1.39251 -1.09454
+   vertex 1.43569 1.51142 -1.2249
+   vertex 5.21646 -0.45557 1.40546
+  endloop
+ endfacet
+ facet normal 0.0507291 -0.763474 -0.643843
+  outer loop
+   vertex 5.21646 -0.45557 1.40546
+   vertex 1.43569 1.51142 -1.2249
+   vertex 5.35163 -0.336655 1.2751
+  endloop
+ endfacet
+ facet normal 0.0413665 -0.771383 -0.635025
+  outer loop
+   vertex 1.43569 1.51142 -1.2249
+   vertex 1.55976 1.61803 -1.34632
+   vertex 5.35163 -0.336655 1.2751
+  endloop
+ endfacet
+ facet normal 0.0413648 -0.771384 -0.635024
+  outer loop
+   vertex 5.35163 -0.336655 1.2751
+   vertex 1.55976 1.61803 -1.34632
+   vertex 5.4757 -0.230054 1.15369
+  endloop
+ endfacet
+ facet normal 0.0295873 -0.781073 -0.623738
+  outer loop
+   vertex 1.55976 1.61803 -1.34632
+   vertex 1.67142 1.7111 -1.45757
+   vertex 5.4757 -0.230054 1.15369
+  endloop
+ endfacet
+ facet normal 0.0295845 -0.781075 -0.623735
+  outer loop
+   vertex 5.4757 -0.230054 1.15369
+   vertex 1.67142 1.7111 -1.45757
+   vertex 5.58736 -0.136977 1.04243
+  endloop
+ endfacet
+ facet normal 0.0140508 -0.793412 -0.608523
+  outer loop
+   vertex 1.67142 1.7111 -1.45757
+   vertex 1.76939 1.78944 -1.55745
+   vertex 5.58736 -0.136977 1.04243
+  endloop
+ endfacet
+ facet normal 0.0140334 -0.793424 -0.608507
+  outer loop
+   vertex 5.58736 -0.136977 1.04243
+   vertex 1.76939 1.78944 -1.55745
+   vertex 5.68533 -0.0586386 0.942545
+  endloop
+ endfacet
+ facet normal -0.00789605 -0.809984 -0.586399
+  outer loop
+   vertex 1.76939 1.78944 -1.55745
+   vertex 1.8524 1.85184 -1.64476
+   vertex 5.68533 -0.0586386 0.942545
+  endloop
+ endfacet
+ facet normal -0.00790256 -0.809989 -0.586392
+  outer loop
+   vertex 5.68533 -0.0586386 0.942545
+   vertex 1.8524 1.85184 -1.64476
+   vertex 5.76834 0.00375753 0.855238
+  endloop
+ endfacet
+ facet normal -0.0417851 -0.833605 -0.550778
+  outer loop
+   vertex 1.8524 1.85184 -1.64476
+   vertex 1.91915 1.89707 -1.71828
+   vertex 5.76834 0.00375753 0.855238
+  endloop
+ endfacet
+ facet normal -0.0417606 -0.83359 -0.550803
+  outer loop
+   vertex 5.76834 0.00375753 0.855238
+   vertex 1.91915 1.89707 -1.71828
+   vertex 5.83509 0.04899 0.781722
+  endloop
+ endfacet
+ facet normal -0.101141 -0.869157 -0.484083
+  outer loop
+   vertex 1.91915 1.89707 -1.71828
+   vertex 1.96837 1.92393 -1.77679
+   vertex 5.83509 0.04899 0.781722
+  endloop
+ endfacet
+ facet normal -0.101138 -0.869155 -0.484087
+  outer loop
+   vertex 5.83509 0.04899 0.781722
+   vertex 1.96837 1.92393 -1.77679
+   vertex 5.88431 0.0758517 0.72321
+  endloop
+ endfacet
+ facet normal -0.2281 -0.918864 -0.321962
+  outer loop
+   vertex 1.96837 1.92393 -1.77679
+   vertex 1.99875 1.93121 -1.81909
+   vertex 5.88431 0.0758517 0.72321
+  endloop
+ endfacet
+ facet normal -0.228106 -0.918865 -0.321955
+  outer loop
+   vertex 5.88431 0.0758517 0.72321
+   vertex 1.99875 1.93121 -1.81909
+   vertex 5.9147 0.0831286 0.68091
+  endloop
+ endfacet
+ facet normal -0.529665 -0.817787 0.225122
+  outer loop
+   vertex 1.99875 1.93121 -1.81909
+   vertex 2.00903 1.9177 -1.84398
+   vertex 5.9147 0.0831286 0.68091
+  endloop
+ endfacet
+ facet normal -0.529651 -0.817805 0.225087
+  outer loop
+   vertex 5.9147 0.0831286 0.68091
+   vertex 2.00903 1.9177 -1.84398
+   vertex 5.92498 0.0696207 0.656022
+  endloop
+ endfacet
+ facet normal -0.532142 0.0175015 0.846474
+  outer loop
+   vertex 2.00903 1.9177 -1.84398
+   vertex 1.99792 1.88218 -1.85023
+   vertex 5.92498 0.0696207 0.656022
+  endloop
+ endfacet
+endsolid
diff --git a/tutorials/mesh/snappyHexMesh/opposite_walls/constant/triSurface/gap_transformed0_with_hook.stl b/tutorials/mesh/snappyHexMesh/opposite_walls/constant/triSurface/gap_transformed0_with_hook.stl
new file mode 100644
index 0000000000000000000000000000000000000000..93b3359a4c20ab4b943a4879e3aea8d989d870f5
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/opposite_walls/constant/triSurface/gap_transformed0_with_hook.stl
@@ -0,0 +1,702 @@
+solid ascii
+ facet normal 0.16287 -0.654111 -0.738655
+  outer loop
+   vertex -2.00546 -1.92761 1.77067
+   vertex -1.9956 -1.91659 1.76309
+   vertex 1.91049 -3.77569 4.27067
+  endloop
+ endfacet
+ facet normal 0.162874 -0.654106 -0.738659
+  outer loop
+   vertex 1.91049 -3.77569 4.27067
+   vertex -1.9956 -1.91659 1.76309
+   vertex 1.92035 -3.76467 4.26309
+  endloop
+ endfacet
+ facet normal 0.160855 -0.656322 -0.737134
+  outer loop
+   vertex -1.9956 -1.91659 1.76309
+   vertex -1.96676 -1.88448 1.74079
+   vertex 1.92035 -3.76467 4.26309
+  endloop
+ endfacet
+ facet normal 0.160852 -0.656325 -0.737132
+  outer loop
+   vertex 1.92035 -3.76467 4.26309
+   vertex -1.96676 -1.88448 1.74079
+   vertex 1.94918 -3.73256 4.24079
+  endloop
+ endfacet
+ facet normal 0.158569 -0.65882 -0.735399
+  outer loop
+   vertex -1.96676 -1.88448 1.74079
+   vertex -1.9201 -1.83274 1.7045
+   vertex 1.94918 -3.73256 4.24079
+  endloop
+ endfacet
+ facet normal 0.158568 -0.658821 -0.735399
+  outer loop
+   vertex 1.94918 -3.73256 4.24079
+   vertex -1.9201 -1.83274 1.7045
+   vertex 1.99584 -3.68082 4.2045
+  endloop
+ endfacet
+ facet normal 0.156081 -0.661524 -0.733501
+  outer loop
+   vertex -1.9201 -1.83274 1.7045
+   vertex -1.85672 -1.76281 1.65492
+   vertex 1.99584 -3.68082 4.2045
+  endloop
+ endfacet
+ facet normal 0.156083 -0.661522 -0.733503
+  outer loop
+   vertex 1.99584 -3.68082 4.2045
+   vertex -1.85672 -1.76281 1.65492
+   vertex 2.05922 -3.61089 4.15492
+  endloop
+ endfacet
+ facet normal 0.153416 -0.664405 -0.731457
+  outer loop
+   vertex -1.85672 -1.76281 1.65492
+   vertex -1.77776 -1.67614 1.59276
+   vertex 2.05922 -3.61089 4.15492
+  endloop
+ endfacet
+ facet normal 0.153416 -0.664405 -0.731457
+  outer loop
+   vertex 2.05922 -3.61089 4.15492
+   vertex -1.77776 -1.67614 1.59276
+   vertex 2.13819 -3.52422 4.09276
+  endloop
+ endfacet
+ facet normal 0.150568 -0.667466 -0.729259
+  outer loop
+   vertex -1.77776 -1.67614 1.59276
+   vertex -1.68435 -1.57419 1.51873
+   vertex 2.13819 -3.52422 4.09276
+  endloop
+ endfacet
+ facet normal 0.150568 -0.667466 -0.729258
+  outer loop
+   vertex 2.13819 -3.52422 4.09276
+   vertex -1.68435 -1.57419 1.51873
+   vertex 2.23159 -3.42227 4.01872
+  endloop
+ endfacet
+ facet normal 0.147503 -0.670739 -0.726878
+  outer loop
+   vertex -1.68435 -1.57419 1.51873
+   vertex -1.57762 -1.45838 1.43353
+   vertex 2.23159 -3.42227 4.01872
+  endloop
+ endfacet
+ facet normal 0.147504 -0.670739 -0.726878
+  outer loop
+   vertex 2.23159 -3.42227 4.01872
+   vertex -1.57762 -1.45838 1.43353
+   vertex 2.33832 -3.30646 3.93352
+  endloop
+ endfacet
+ facet normal 0.144216 -0.674227 -0.724306
+  outer loop
+   vertex -1.57762 -1.45838 1.43353
+   vertex -1.4587 -1.3302 1.33788
+   vertex 2.33832 -3.30646 3.93352
+  endloop
+ endfacet
+ facet normal 0.144216 -0.674227 -0.724306
+  outer loop
+   vertex 2.33832 -3.30646 3.93352
+   vertex -1.4587 -1.3302 1.33788
+   vertex 2.45725 -3.17828 3.83788
+  endloop
+ endfacet
+ facet normal 0.140672 -0.677959 -0.721514
+  outer loop
+   vertex -1.4587 -1.3302 1.33788
+   vertex -1.32871 -1.19105 1.23248
+   vertex 2.45725 -3.17828 3.83788
+  endloop
+ endfacet
+ facet normal 0.140672 -0.677959 -0.721514
+  outer loop
+   vertex 2.45725 -3.17828 3.83788
+   vertex -1.32871 -1.19105 1.23248
+   vertex 2.58723 -3.03913 3.73248
+  endloop
+ endfacet
+ facet normal 0.136837 -0.681966 -0.718469
+  outer loop
+   vertex -1.32871 -1.19105 1.23248
+   vertex -1.1888 -1.04242 1.11804
+   vertex 2.58723 -3.03913 3.73248
+  endloop
+ endfacet
+ facet normal 0.136837 -0.681966 -0.718469
+  outer loop
+   vertex 2.58723 -3.03913 3.73248
+   vertex -1.1888 -1.04242 1.11804
+   vertex 2.72714 -2.8905 3.61804
+  endloop
+ endfacet
+ facet normal 0.132685 -0.686267 -0.715145
+  outer loop
+   vertex -1.1888 -1.04242 1.11804
+   vertex -1.04008 -0.885731 0.995274
+   vertex 2.72714 -2.8905 3.61804
+  endloop
+ endfacet
+ facet normal 0.132685 -0.686266 -0.715145
+  outer loop
+   vertex 2.72714 -2.8905 3.61804
+   vertex -1.04008 -0.885731 0.995274
+   vertex 2.87586 -2.73381 3.49527
+  endloop
+ endfacet
+ facet normal 0.128169 -0.690901 -0.711497
+  outer loop
+   vertex -1.04008 -0.885731 0.995274
+   vertex -0.883688 -0.722446 0.864888
+   vertex 2.87586 -2.73381 3.49527
+  endloop
+ endfacet
+ facet normal 0.128169 -0.690901 -0.711497
+  outer loop
+   vertex 2.87586 -2.73381 3.49527
+   vertex -0.883688 -0.722446 0.864888
+   vertex 3.03226 -2.57053 3.36489
+  endloop
+ endfacet
+ facet normal 0.123243 -0.695904 -0.70748
+  outer loop
+   vertex -0.883688 -0.722446 0.864888
+   vertex -0.720759 -0.554011 0.727592
+   vertex 3.03226 -2.57053 3.36489
+  endloop
+ endfacet
+ facet normal 0.123243 -0.695904 -0.70748
+  outer loop
+   vertex 3.03226 -2.57053 3.36489
+   vertex -0.720759 -0.554011 0.727592
+   vertex 3.19518 -2.40209 3.22759
+  endloop
+ endfacet
+ facet normal 0.117849 -0.701322 -0.703036
+  outer loop
+   vertex -0.720759 -0.554011 0.727592
+   vertex -0.552409 -0.381864 0.584085
+   vertex 3.19518 -2.40209 3.22759
+  endloop
+ endfacet
+ facet normal 0.117849 -0.701322 -0.703036
+  outer loop
+   vertex 3.19518 -2.40209 3.22759
+   vertex -0.552409 -0.381864 0.584085
+   vertex 3.36354 -2.22995 3.08409
+  endloop
+ endfacet
+ facet normal 0.112036 -0.707088 -0.698194
+  outer loop
+   vertex -0.552409 -0.381864 0.584085
+   vertex -0.379793 -0.207438 0.435135
+   vertex 3.36354 -2.22995 3.08409
+  endloop
+ endfacet
+ facet normal 0.112037 -0.707088 -0.698194
+  outer loop
+   vertex 3.36354 -2.22995 3.08409
+   vertex -0.379793 -0.207438 0.435135
+   vertex 3.53615 -2.05552 2.93514
+  endloop
+ endfacet
+ facet normal 0.106435 -0.712575 -0.693475
+  outer loop
+   vertex -0.379793 -0.207438 0.435135
+   vertex -0.204156 -0.0320027 0.281825
+   vertex 3.53615 -2.05552 2.93514
+  endloop
+ endfacet
+ facet normal 0.106435 -0.712575 -0.693475
+  outer loop
+   vertex 3.53615 -2.05552 2.93514
+   vertex -0.204156 -0.0320027 0.281825
+   vertex 3.71179 -1.88008 2.78183
+  endloop
+ endfacet
+ facet normal 0.101201 -0.717641 -0.689021
+  outer loop
+   vertex -0.204156 -0.0320027 0.281825
+   vertex -0.0267831 0.143231 0.125365
+   vertex 3.71179 -1.88008 2.78183
+  endloop
+ endfacet
+ facet normal 0.101201 -0.717641 -0.689021
+  outer loop
+   vertex 3.71179 -1.88008 2.78183
+   vertex -0.0267831 0.143231 0.125365
+   vertex 3.88916 -1.70485 2.62537
+  endloop
+ endfacet
+ facet normal 0.0962108 -0.722414 -0.684734
+  outer loop
+   vertex -0.0267831 0.143231 0.125365
+   vertex 0.151042 0.317053 -0.0330364
+   vertex 3.88916 -1.70485 2.62537
+  endloop
+ endfacet
+ facet normal 0.0962109 -0.722414 -0.684734
+  outer loop
+   vertex 3.88916 -1.70485 2.62537
+   vertex 0.151042 0.317053 -0.0330364
+   vertex 4.06699 -1.53103 2.46696
+  endloop
+ endfacet
+ facet normal 0.0913564 -0.727007 -0.680525
+  outer loop
+   vertex 0.151042 0.317053 -0.0330364
+   vertex 0.328034 0.488251 -0.192168
+   vertex 4.06699 -1.53103 2.46696
+  endloop
+ endfacet
+ facet normal 0.0913561 -0.727007 -0.680525
+  outer loop
+   vertex 4.06699 -1.53103 2.46696
+   vertex 0.328034 0.488251 -0.192168
+   vertex 4.24397 -1.35983 2.30783
+  endloop
+ endfacet
+ facet normal 0.0865316 -0.731521 -0.676305
+  outer loop
+   vertex 0.328034 0.488251 -0.192168
+   vertex 0.502908 0.655614 -0.35082
+   vertex 4.24397 -1.35983 2.30783
+  endloop
+ endfacet
+ facet normal 0.0865318 -0.731521 -0.676305
+  outer loop
+   vertex 4.24397 -1.35983 2.30783
+   vertex 0.502908 0.655614 -0.35082
+   vertex 4.41885 -1.19247 2.14918
+  endloop
+ endfacet
+ facet normal 0.0816341 -0.736053 -0.671984
+  outer loop
+   vertex 0.502908 0.655614 -0.35082
+   vertex 0.67438 0.817933 -0.507785
+   vertex 4.41885 -1.19247 2.14918
+  endloop
+ endfacet
+ facet normal 0.0816342 -0.736053 -0.671984
+  outer loop
+   vertex 4.41885 -1.19247 2.14918
+   vertex 0.67438 0.817933 -0.507785
+   vertex 4.59032 -1.03015 1.99221
+  endloop
+ endfacet
+ facet normal 0.0765387 -0.740713 -0.667447
+  outer loop
+   vertex 0.67438 0.817933 -0.507785
+   vertex 0.841157 0.973988 -0.661844
+   vertex 4.59032 -1.03015 1.99221
+  endloop
+ endfacet
+ facet normal 0.0765387 -0.740713 -0.667447
+  outer loop
+   vertex 4.59032 -1.03015 1.99221
+   vertex 0.841157 0.973988 -0.661844
+   vertex 4.7571 -0.874093 1.83816
+  endloop
+ endfacet
+ facet normal 0.0711149 -0.745613 -0.662574
+  outer loop
+   vertex 0.841157 0.973988 -0.661844
+   vertex 1.00197 1.12258 -0.811799
+   vertex 4.7571 -0.874093 1.83816
+  endloop
+ endfacet
+ facet normal 0.0711149 -0.745613 -0.662574
+  outer loop
+   vertex 4.7571 -0.874093 1.83816
+   vertex 1.00197 1.12258 -0.811799
+   vertex 4.9179 -0.725499 1.6882
+  endloop
+ endfacet
+ facet normal 0.065177 -0.750906 -0.657185
+  outer loop
+   vertex 1.00197 1.12258 -0.811799
+   vertex 1.15551 1.26249 -0.956432
+   vertex 4.9179 -0.725499 1.6882
+  endloop
+ endfacet
+ facet normal 0.065177 -0.750906 -0.657185
+  outer loop
+   vertex 4.9179 -0.725499 1.6882
+   vertex 1.15551 1.26249 -0.956432
+   vertex 5.07145 -0.585591 1.54357
+  endloop
+ endfacet
+ facet normal 0.058494 -0.756773 -0.651055
+  outer loop
+   vertex 1.15551 1.26249 -0.956432
+   vertex 1.30052 1.39251 -1.09454
+   vertex 5.07145 -0.585591 1.54357
+  endloop
+ endfacet
+ facet normal 0.0584939 -0.756773 -0.651055
+  outer loop
+   vertex 5.07145 -0.585591 1.54357
+   vertex 1.30052 1.39251 -1.09454
+   vertex 5.21646 -0.45557 1.40546
+  endloop
+ endfacet
+ facet normal 0.0507207 -0.76348 -0.643837
+  outer loop
+   vertex 1.30052 1.39251 -1.09454
+   vertex 1.43569 1.51142 -1.2249
+   vertex 5.21646 -0.45557 1.40546
+  endloop
+ endfacet
+ facet normal 0.050721 -0.76348 -0.643837
+  outer loop
+   vertex 5.21646 -0.45557 1.40546
+   vertex 1.43569 1.51142 -1.2249
+   vertex 5.35163 -0.336655 1.2751
+  endloop
+ endfacet
+ facet normal 0.0413597 -0.771388 -0.63502
+  outer loop
+   vertex 1.43569 1.51142 -1.2249
+   vertex 1.55976 1.61803 -1.34632
+   vertex 5.35163 -0.336655 1.2751
+  endloop
+ endfacet
+ facet normal 0.0413597 -0.771388 -0.63502
+  outer loop
+   vertex 5.35163 -0.336655 1.2751
+   vertex 1.55976 1.61803 -1.34632
+   vertex 5.4757 -0.230054 1.15369
+  endloop
+ endfacet
+ facet normal 0.0295946 -0.781067 -0.623746
+  outer loop
+   vertex 1.55976 1.61803 -1.34632
+   vertex 1.67142 1.7111 -1.45757
+   vertex 5.4757 -0.230054 1.15369
+  endloop
+ endfacet
+ facet normal 0.0295944 -0.781067 -0.623746
+  outer loop
+   vertex 5.4757 -0.230054 1.15369
+   vertex 1.67142 1.7111 -1.45757
+   vertex 5.58736 -0.136977 1.04243
+  endloop
+ endfacet
+ facet normal 0.0140343 -0.793424 -0.608508
+  outer loop
+   vertex 1.67142 1.7111 -1.45757
+   vertex 1.76939 1.78944 -1.55745
+   vertex 5.58736 -0.136977 1.04243
+  endloop
+ endfacet
+ facet normal 0.0140342 -0.793424 -0.608507
+  outer loop
+   vertex 5.58736 -0.136977 1.04243
+   vertex 1.76939 1.78944 -1.55745
+   vertex 5.68533 -0.0586386 0.942545
+  endloop
+ endfacet
+ facet normal -0.00790206 -0.809989 -0.586392
+  outer loop
+   vertex 1.76939 1.78944 -1.55745
+   vertex 1.8524 1.85184 -1.64476
+   vertex 5.68533 -0.0586386 0.942545
+  endloop
+ endfacet
+ facet normal -0.00790171 -0.809989 -0.586392
+  outer loop
+   vertex 5.68533 -0.0586386 0.942545
+   vertex 1.8524 1.85184 -1.64476
+   vertex 5.76834 0.00375753 0.855238
+  endloop
+ endfacet
+ facet normal -0.0417599 -0.833589 -0.550804
+  outer loop
+   vertex 1.8524 1.85184 -1.64476
+   vertex 1.91915 1.89707 -1.71828
+   vertex 5.76834 0.00375753 0.855238
+  endloop
+ endfacet
+ facet normal -0.0417601 -0.833589 -0.550804
+  outer loop
+   vertex 5.76834 0.00375753 0.855238
+   vertex 1.91915 1.89707 -1.71828
+   vertex 5.83509 0.04899 0.781722
+  endloop
+ endfacet
+ facet normal -0.101143 -0.869158 -0.484082
+  outer loop
+   vertex 1.91915 1.89707 -1.71828
+   vertex 1.96837 1.92393 -1.77679
+   vertex 5.83509 0.04899 0.781722
+  endloop
+ endfacet
+ facet normal -0.101143 -0.869158 -0.484082
+  outer loop
+   vertex 5.83509 0.04899 0.781722
+   vertex 1.96837 1.92393 -1.77679
+   vertex 5.88431 0.0758517 0.72321
+  endloop
+ endfacet
+ facet normal -0.228112 -0.918866 -0.321946
+  outer loop
+   vertex 1.96837 1.92393 -1.77679
+   vertex 1.99875 1.93121 -1.81909
+   vertex 5.88431 0.0758517 0.72321
+  endloop
+ endfacet
+ facet normal -0.228113 -0.918867 -0.321945
+  outer loop
+   vertex 5.88431 0.0758517 0.72321
+   vertex 1.99875 1.93121 -1.81909
+   vertex 5.9147 0.0831286 0.68091
+  endloop
+ endfacet
+ facet normal -0.529652 -0.817804 0.225088
+  outer loop
+   vertex 1.99875 1.93121 -1.81909
+   vertex 2.00903 1.9177 -1.84398
+   vertex 5.9147 0.0831286 0.68091
+  endloop
+ endfacet
+ facet normal -0.529651 -0.817806 0.225085
+  outer loop
+   vertex 5.9147 0.0831286 0.68091
+   vertex 2.00903 1.9177 -1.84398
+   vertex 5.92498 0.0696207 0.656022
+  endloop
+ endfacet
+ facet normal -0.532128 0.0175456 0.846482
+  outer loop
+   vertex 2.00903 1.9177 -1.84398
+   vertex 1.99792 1.88218 -1.85023
+   vertex 5.92498 0.0696207 0.656022
+  endloop
+ endfacet
+ facet normal -0.532126 0.0175498 0.846483
+  outer loop
+   vertex 5.92498 0.0696207 0.656022
+   vertex 1.99792 1.88218 -1.85023
+   vertex 5.91386 0.0341051 0.649767
+  endloop
+ endfacet
+ facet normal -0.352389 0.398675 0.846688
+  outer loop
+   vertex 1.99792 1.88218 -1.85023
+   vertex 1.96412 1.82345 -1.83664
+   vertex 5.91386 0.0341051 0.649767
+  endloop
+ endfacet
+ facet normal -0.35239 0.398674 0.846688
+  outer loop
+   vertex 5.91386 0.0341051 0.649767
+   vertex 1.96412 1.82345 -1.83664
+   vertex 5.88005 -0.024629 0.663355
+  endloop
+ endfacet
+ facet normal -0.269012 0.523558 0.808406
+  outer loop
+   vertex 1.96412 1.82345 -1.83664
+   vertex 1.90636 1.74029 -1.80201
+   vertex 5.88005 -0.024629 0.663355
+  endloop
+ endfacet
+ facet normal -0.269013 0.523557 0.808406
+  outer loop
+   vertex 5.88005 -0.024629 0.663355
+   vertex 1.90636 1.74029 -1.80201
+   vertex 5.8223 -0.107785 0.697991
+  endloop
+ endfacet
+ facet normal -0.226435 0.579376 0.782976
+  outer loop
+   vertex 1.90636 1.74029 -1.80201
+   vertex 1.8244 1.63261 -1.74603
+   vertex 5.8223 -0.107785 0.697991
+  endloop
+ endfacet
+ facet normal -0.226434 0.579377 0.782975
+  outer loop
+   vertex 5.8223 -0.107785 0.697991
+   vertex 1.8244 1.63261 -1.74603
+   vertex 5.74035 -0.215469 0.753974
+  endloop
+ endfacet
+ facet normal -0.20363 0.607323 0.767915
+  outer loop
+   vertex 1.8244 1.63261 -1.74603
+   vertex 1.72201 1.50447 -1.67183
+   vertex 5.74035 -0.215469 0.753974
+  endloop
+ endfacet
+ facet normal -0.203631 0.607323 0.767915
+  outer loop
+   vertex 5.74035 -0.215469 0.753974
+   vertex 1.72201 1.50447 -1.67183
+   vertex 5.63796 -0.343612 0.828167
+  endloop
+ endfacet
+ facet normal -0.189857 0.623578 0.758357
+  outer loop
+   vertex 1.72201 1.50447 -1.67183
+   vertex 1.6039 1.36094 -1.58338
+   vertex 5.63796 -0.343612 0.828167
+  endloop
+ endfacet
+ facet normal -0.189857 0.623578 0.758357
+  outer loop
+   vertex 5.63796 -0.343612 0.828167
+   vertex 1.6039 1.36094 -1.58338
+   vertex 5.51984 -0.487142 0.916618
+  endloop
+ endfacet
+ facet normal -0.180654 0.634184 0.751781
+  outer loop
+   vertex 1.6039 1.36094 -1.58338
+   vertex 1.47474 1.20708 -1.48463
+   vertex 5.51984 -0.487142 0.916618
+  endloop
+ endfacet
+ facet normal -0.180654 0.634184 0.751781
+  outer loop
+   vertex 5.51984 -0.487142 0.916618
+   vertex 1.47474 1.20708 -1.48463
+   vertex 5.39068 -0.641003 1.01537
+  endloop
+ endfacet
+ facet normal -0.174073 0.641645 0.746988
+  outer loop
+   vertex 1.47474 1.20708 -1.48463
+   vertex 1.33924 1.04793 -1.3795
+   vertex 5.39068 -0.641003 1.01537
+  endloop
+ endfacet
+ facet normal -0.174073 0.641644 0.746988
+  outer loop
+   vertex 5.39068 -0.641003 1.01537
+   vertex 1.33924 1.04793 -1.3795
+   vertex 5.25518 -0.800147 1.1205
+  endloop
+ endfacet
+ facet normal -0.169132 0.647179 0.74334
+  outer loop
+   vertex 1.33924 1.04793 -1.3795
+   vertex 1.20209 0.888568 -1.27196
+   vertex 5.25518 -0.800147 1.1205
+  endloop
+ endfacet
+ facet normal -0.169132 0.647179 0.743339
+  outer loop
+   vertex 5.25518 -0.800147 1.1205
+   vertex 1.20209 0.888568 -1.27196
+   vertex 5.11803 -0.959511 1.22804
+  endloop
+ endfacet
+ facet normal -0.165291 0.651441 0.740475
+  outer loop
+   vertex 1.20209 0.888568 -1.27196
+   vertex 1.06799 0.73404 -1.16595
+   vertex 5.11803 -0.959511 1.22804
+  endloop
+ endfacet
+ facet normal -0.165291 0.651441 0.740475
+  outer loop
+   vertex 5.11803 -0.959511 1.22804
+   vertex 1.06799 0.73404 -1.16595
+   vertex 4.98393 -1.11404 1.33405
+  endloop
+ endfacet
+ facet normal -0.162223 0.654822 0.738168
+  outer loop
+   vertex 1.06799 0.73404 -1.16595
+   vertex 0.941641 0.589416 -1.06542
+   vertex 4.98393 -1.11404 1.33405
+  endloop
+ endfacet
+ facet normal -0.162223 0.654822 0.738168
+  outer loop
+   vertex 4.98393 -1.11404 1.33405
+   vertex 0.941641 0.589416 -1.06542
+   vertex 4.85759 -1.25867 1.43459
+  endloop
+ endfacet
+ facet normal -0.15971 0.657575 0.736266
+  outer loop
+   vertex 0.941641 0.589416 -1.06542
+   vertex 0.827725 0.459735 -0.974307
+   vertex 4.85759 -1.25867 1.43459
+  endloop
+ endfacet
+ facet normal -0.15971 0.657575 0.736266
+  outer loop
+   vertex 4.85759 -1.25867 1.43459
+   vertex 0.827725 0.459735 -0.974307
+   vertex 4.74367 -1.38835 1.5257
+  endloop
+ endfacet
+ facet normal -0.157622 0.659851 0.734678
+  outer loop
+   vertex 0.827725 0.459735 -0.974307
+   vertex 0.730956 0.350076 -0.896578
+   vertex 4.74367 -1.38835 1.5257
+  endloop
+ endfacet
+ facet normal -0.157622 0.659851 0.734678
+  outer loop
+   vertex 4.74367 -1.38835 1.5257
+   vertex 0.730956 0.350076 -0.896578
+   vertex 4.64689 -1.498 1.60342
+  endloop
+ endfacet
+ facet normal -0.155862 0.661762 0.733334
+  outer loop
+   vertex 0.730956 0.350076 -0.896578
+   vertex 0.656019 0.265483 -0.836167
+   vertex 4.64689 -1.498 1.60342
+  endloop
+ endfacet
+ facet normal -0.155861 0.661763 0.733333
+  outer loop
+   vertex 4.64689 -1.498 1.60342
+   vertex 0.656019 0.265483 -0.836167
+   vertex 4.57196 -1.5826 1.66383
+  endloop
+ endfacet
+ facet normal -0.154368 0.663378 0.732189
+  outer loop
+   vertex 0.656019 0.265483 -0.836167
+   vertex 0.607613 0.211018 -0.797026
+   vertex 4.57196 -1.5826 1.66383
+  endloop
+ endfacet
+ facet normal -0.154369 0.663377 0.732189
+  outer loop
+   vertex 4.57196 -1.5826 1.66383
+   vertex 0.607613 0.211018 -0.797026
+   vertex 4.52356 -1.63706 1.70298
+  endloop
+ endfacet
+ facet normal -0.153182 0.664657 0.731277
+  outer loop
+   vertex 0.607613 0.211018 -0.797026
+   vertex 0.590434 0.191739 -0.783102
+   vertex 4.52356 -1.63706 1.70298
+  endloop
+ endfacet
+ facet normal -0.153182 0.664657 0.731277
+  outer loop
+   vertex 4.52356 -1.63706 1.70298
+   vertex 0.590434 0.191739 -0.783102
+   vertex 4.50638 -1.65634 1.7169
+  endloop
+ endfacet
+endsolid
diff --git a/tutorials/mesh/snappyHexMesh/opposite_walls/constant/triSurface/gap_transformed1.stl b/tutorials/mesh/snappyHexMesh/opposite_walls/constant/triSurface/gap_transformed1.stl
new file mode 100644
index 0000000000000000000000000000000000000000..a478b610a30164a37a374e931d4ff90ee099a278
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/opposite_walls/constant/triSurface/gap_transformed1.stl
@@ -0,0 +1,702 @@
+solid ascii
+ facet normal -0.218371 -0.916419 -0.335396
+  outer loop
+   vertex -1.99478 -1.1593 2.72311
+   vertex -1.97424 -1.15299 2.6925
+   vertex 1.92116 -3.00738 5.22311
+  endloop
+ endfacet
+ facet normal -0.218368 -0.916418 -0.335399
+  outer loop
+   vertex 1.92116 -3.00738 5.22311
+   vertex -1.97424 -1.15299 2.6925
+   vertex 1.94171 -3.00107 5.19251
+  endloop
+ endfacet
+ facet normal -0.213715 -0.915164 -0.341761
+  outer loop
+   vertex -1.97424 -1.15299 2.6925
+   vertex -1.91815 -1.13496 2.60914
+   vertex 1.94171 -3.00107 5.19251
+  endloop
+ endfacet
+ facet normal -0.213715 -0.915164 -0.34176
+  outer loop
+   vertex 1.94171 -3.00107 5.19251
+   vertex -1.91815 -1.13496 2.60914
+   vertex 1.9978 -2.98304 5.10914
+  endloop
+ endfacet
+ facet normal -0.207222 -0.913323 -0.350571
+  outer loop
+   vertex -1.91815 -1.13496 2.60914
+   vertex -1.83478 -1.10649 2.48569
+   vertex 1.9978 -2.98304 5.10914
+  endloop
+ endfacet
+ facet normal -0.207222 -0.913323 -0.350571
+  outer loop
+   vertex 1.9978 -2.98304 5.10914
+   vertex -1.83478 -1.10649 2.48569
+   vertex 2.08117 -2.95457 4.9857
+  endloop
+ endfacet
+ facet normal -0.19886 -0.910799 -0.361802
+  outer loop
+   vertex -1.83478 -1.10649 2.48569
+   vertex -1.73239 -1.06892 2.33484
+   vertex 2.08117 -2.95457 4.9857
+  endloop
+ endfacet
+ facet normal -0.198859 -0.910798 -0.361803
+  outer loop
+   vertex 2.08117 -2.95457 4.9857
+   vertex -1.73239 -1.06892 2.33484
+   vertex 2.18355 -2.917 4.83484
+  endloop
+ endfacet
+ facet normal -0.187609 -0.907132 -0.376715
+  outer loop
+   vertex -1.73239 -1.06892 2.33484
+   vertex -1.61928 -1.02354 2.16925
+   vertex 2.18355 -2.917 4.83484
+  endloop
+ endfacet
+ facet normal -0.187609 -0.907132 -0.376715
+  outer loop
+   vertex 2.18355 -2.917 4.83484
+   vertex -1.61928 -1.02354 2.16925
+   vertex 2.29666 -2.87163 4.66925
+  endloop
+ endfacet
+ facet normal -0.171811 -0.901472 -0.397277
+  outer loop
+   vertex -1.61928 -1.02354 2.16925
+   vertex -1.50372 -0.97169 2.00161
+   vertex 2.29666 -2.87163 4.66925
+  endloop
+ endfacet
+ facet normal -0.171811 -0.901472 -0.397277
+  outer loop
+   vertex 2.29666 -2.87163 4.66925
+   vertex -1.50372 -0.97169 2.00161
+   vertex 2.41222 -2.81977 4.50161
+  endloop
+ endfacet
+ facet normal -0.149148 -0.892335 -0.426021
+  outer loop
+   vertex -1.50372 -0.97169 2.00161
+   vertex -1.39309 -0.914576 1.84325
+   vertex 2.41222 -2.81977 4.50161
+  endloop
+ endfacet
+ facet normal -0.149148 -0.892335 -0.426021
+  outer loop
+   vertex 2.41222 -2.81977 4.50161
+   vertex -1.39309 -0.914576 1.84325
+   vertex 2.52285 -2.76266 4.34325
+  endloop
+ endfacet
+ facet normal -0.122915 -0.880301 -0.458216
+  outer loop
+   vertex -1.39309 -0.914576 1.84325
+   vertex -1.28906 -0.852878 1.69681
+   vertex 2.52285 -2.76266 4.34325
+  endloop
+ endfacet
+ facet normal -0.122915 -0.880301 -0.458215
+  outer loop
+   vertex 2.52285 -2.76266 4.34325
+   vertex -1.28906 -0.852878 1.69681
+   vertex 2.62689 -2.70096 4.19681
+  endloop
+ endfacet
+ facet normal -0.0956268 -0.866171 -0.490514
+  outer loop
+   vertex -1.28906 -0.852878 1.69681
+   vertex -1.19098 -0.787069 1.56148
+   vertex 2.62689 -2.70096 4.19681
+  endloop
+ endfacet
+ facet normal -0.0956263 -0.866171 -0.490514
+  outer loop
+   vertex 2.62689 -2.70096 4.19681
+   vertex -1.19098 -0.787069 1.56148
+   vertex 2.72496 -2.63515 4.06148
+  endloop
+ endfacet
+ facet normal -0.0676719 -0.85003 -0.52237
+  outer loop
+   vertex -1.19098 -0.787069 1.56148
+   vertex -1.09822 -0.717599 1.43642
+   vertex 2.72496 -2.63515 4.06148
+  endloop
+ endfacet
+ facet normal -0.0676726 -0.85003 -0.522369
+  outer loop
+   vertex 2.72496 -2.63515 4.06148
+   vertex -1.09822 -0.717599 1.43642
+   vertex 2.81772 -2.56568 3.93642
+  endloop
+ endfacet
+ facet normal -0.0395992 -0.832155 -0.553128
+  outer loop
+   vertex -1.09822 -0.717599 1.43642
+   vertex -1.01014 -0.644937 1.3208
+   vertex 2.81772 -2.56568 3.93642
+  endloop
+ endfacet
+ facet normal -0.039599 -0.832154 -0.553128
+  outer loop
+   vertex 2.81772 -2.56568 3.93642
+   vertex -1.01014 -0.644937 1.3208
+   vertex 2.9058 -2.49302 3.8208
+  endloop
+ endfacet
+ facet normal -0.0119769 -0.812956 -0.582203
+  outer loop
+   vertex -1.01014 -0.644937 1.3208
+   vertex -0.926088 -0.569527 1.21377
+   vertex 2.9058 -2.49302 3.8208
+  endloop
+ endfacet
+ facet normal -0.0119772 -0.812956 -0.582202
+  outer loop
+   vertex 2.9058 -2.49302 3.8208
+   vertex -0.926088 -0.569527 1.21377
+   vertex 2.98985 -2.41761 3.71377
+  endloop
+ endfacet
+ facet normal 0.0144723 -0.793083 -0.608942
+  outer loop
+   vertex -0.926088 -0.569527 1.21377
+   vertex -0.845434 -0.491844 1.11451
+   vertex 2.98985 -2.41761 3.71377
+  endloop
+ endfacet
+ facet normal 0.0144728 -0.793083 -0.608942
+  outer loop
+   vertex 2.98985 -2.41761 3.71377
+   vertex -0.845434 -0.491844 1.11451
+   vertex 3.0705 -2.33992 3.61451
+  endloop
+ endfacet
+ facet normal 0.039104 -0.773266 -0.632875
+  outer loop
+   vertex -0.845434 -0.491844 1.11451
+   vertex -0.76753 -0.41234 1.02218
+   vertex 3.0705 -2.33992 3.61451
+  endloop
+ endfacet
+ facet normal 0.0391043 -0.773266 -0.632875
+  outer loop
+   vertex 3.0705 -2.33992 3.61451
+   vertex -0.76753 -0.41234 1.02218
+   vertex 3.14841 -2.26042 3.52218
+  endloop
+ endfacet
+ facet normal 0.0612539 -0.754362 -0.653595
+  outer loop
+   vertex -0.76753 -0.41234 1.02218
+   vertex -0.691736 -0.331475 0.935956
+   vertex 3.14841 -2.26042 3.52218
+  endloop
+ endfacet
+ facet normal 0.0612534 -0.754362 -0.653595
+  outer loop
+   vertex 3.14841 -2.26042 3.52218
+   vertex -0.691736 -0.331475 0.935956
+   vertex 3.22421 -2.17956 3.43596
+  endloop
+ endfacet
+ facet normal 0.0803191 -0.737261 -0.670817
+  outer loop
+   vertex -0.691736 -0.331475 0.935956
+   vertex -0.617408 -0.249707 0.854988
+   vertex 3.22421 -2.17956 3.43596
+  endloop
+ endfacet
+ facet normal 0.080319 -0.737261 -0.670817
+  outer loop
+   vertex 3.22421 -2.17956 3.43596
+   vertex -0.617408 -0.249707 0.854988
+   vertex 3.29853 -2.09779 3.35499
+  endloop
+ endfacet
+ facet normal 0.0957891 -0.722815 -0.68437
+  outer loop
+   vertex -0.617408 -0.249707 0.854988
+   vertex -0.543909 -0.167501 0.778452
+   vertex 3.29853 -2.09779 3.35499
+  endloop
+ endfacet
+ facet normal 0.0957893 -0.722815 -0.68437
+  outer loop
+   vertex 3.29853 -2.09779 3.35499
+   vertex -0.543909 -0.167501 0.778452
+   vertex 3.37203 -2.01558 3.27845
+  endloop
+ endfacet
+ facet normal 0.107265 -0.711767 -0.694178
+  outer loop
+   vertex -0.543909 -0.167501 0.778452
+   vertex -0.470598 -0.0853143 0.70551
+   vertex 3.37203 -2.01558 3.27845
+  endloop
+ endfacet
+ facet normal 0.107264 -0.711767 -0.694177
+  outer loop
+   vertex 3.37203 -2.01558 3.27845
+   vertex -0.470598 -0.0853143 0.70551
+   vertex 3.44534 -1.93339 3.20551
+  endloop
+ endfacet
+ facet normal 0.114433 -0.70472 -0.700196
+  outer loop
+   vertex -0.470598 -0.0853143 0.70551
+   vertex -0.39683 -0.00360559 0.63533
+   vertex 3.44534 -1.93339 3.20551
+  endloop
+ endfacet
+ facet normal 0.114433 -0.70472 -0.700197
+  outer loop
+   vertex 3.44534 -1.93339 3.20551
+   vertex -0.39683 -0.00360559 0.63533
+   vertex 3.51911 -1.85168 3.13533
+  endloop
+ endfacet
+ facet normal 0.11709 -0.702079 -0.702406
+  outer loop
+   vertex -0.39683 -0.00360559 0.63533
+   vertex -0.321967 0.0771655 0.567076
+   vertex 3.51911 -1.85168 3.13533
+  endloop
+ endfacet
+ facet normal 0.11709 -0.702079 -0.702406
+  outer loop
+   vertex 3.51911 -1.85168 3.13533
+   vertex -0.321967 0.0771655 0.567076
+   vertex 3.59398 -1.77092 3.06708
+  endloop
+ endfacet
+ facet normal 0.115111 -0.704047 -0.700762
+  outer loop
+   vertex -0.321967 0.0771655 0.567076
+   vertex -0.245366 0.156538 0.499914
+   vertex 3.59398 -1.77092 3.06708
+  endloop
+ endfacet
+ facet normal 0.115111 -0.704047 -0.700762
+  outer loop
+   vertex 3.59398 -1.77092 3.06708
+   vertex -0.245366 0.156538 0.499914
+   vertex 3.67058 -1.69154 2.99991
+  endloop
+ endfacet
+ facet normal 0.10972 -0.709366 -0.696248
+  outer loop
+   vertex -0.245366 0.156538 0.499914
+   vertex -0.166546 0.234282 0.433126
+   vertex 3.67058 -1.69154 2.99991
+  endloop
+ endfacet
+ facet normal 0.10972 -0.709365 -0.696249
+  outer loop
+   vertex 3.67058 -1.69154 2.99991
+   vertex -0.166546 0.234282 0.433126
+   vertex 3.74939 -1.6138 2.93313
+  endloop
+ endfacet
+ facet normal 0.105339 -0.713641 -0.692546
+  outer loop
+   vertex -0.166546 0.234282 0.433126
+   vertex -0.0855948 0.310977 0.366408
+   vertex 3.74939 -1.6138 2.93313
+  endloop
+ endfacet
+ facet normal 0.105338 -0.713641 -0.692546
+  outer loop
+   vertex 3.74939 -1.6138 2.93313
+   vertex -0.0855948 0.310977 0.366408
+   vertex 3.83034 -1.5371 2.86641
+  endloop
+ endfacet
+ facet normal 0.102941 -0.715963 -0.690507
+  outer loop
+   vertex -0.0855948 0.310977 0.366408
+   vertex -0.00272523 0.387378 0.299545
+   vertex 3.83034 -1.5371 2.86641
+  endloop
+ endfacet
+ facet normal 0.102941 -0.715963 -0.690507
+  outer loop
+   vertex 3.83034 -1.5371 2.86641
+   vertex -0.00272523 0.387378 0.299545
+   vertex 3.91322 -1.4607 2.79955
+  endloop
+ endfacet
+ facet normal 0.102519 -0.71637 -0.690148
+  outer loop
+   vertex -0.00272523 0.387378 0.299545
+   vertex 0.0818505 0.464244 0.232322
+   vertex 3.91322 -1.4607 2.79955
+  endloop
+ endfacet
+ facet normal 0.10252 -0.71637 -0.690148
+  outer loop
+   vertex 3.91322 -1.4607 2.79955
+   vertex 0.0818505 0.464244 0.232322
+   vertex 3.99779 -1.38384 2.73232
+  endloop
+ endfacet
+ facet normal 0.104008 -0.714931 -0.691416
+  outer loop
+   vertex 0.0818505 0.464244 0.232322
+   vertex 0.16792 0.542331 0.164526
+   vertex 3.99779 -1.38384 2.73232
+  endloop
+ endfacet
+ facet normal 0.104008 -0.714931 -0.691416
+  outer loop
+   vertex 3.99779 -1.38384 2.73232
+   vertex 0.16792 0.542331 0.164526
+   vertex 4.08386 -1.30575 2.66453
+  endloop
+ endfacet
+ facet normal 0.107309 -0.711723 -0.694215
+  outer loop
+   vertex 0.16792 0.542331 0.164526
+   vertex 0.25527 0.622397 0.0959432
+   vertex 4.08386 -1.30575 2.66453
+  endloop
+ endfacet
+ facet normal 0.107309 -0.711723 -0.694215
+  outer loop
+   vertex 4.08386 -1.30575 2.66453
+   vertex 0.25527 0.622397 0.0959432
+   vertex 4.17121 -1.22568 2.59594
+  endloop
+ endfacet
+ facet normal 0.112285 -0.706843 -0.698402
+  outer loop
+   vertex 0.25527 0.622397 0.0959432
+   vertex 0.343688 0.705198 0.0263572
+   vertex 4.17121 -1.22568 2.59594
+  endloop
+ endfacet
+ facet normal 0.112285 -0.706843 -0.698402
+  outer loop
+   vertex 4.17121 -1.22568 2.59594
+   vertex 0.343688 0.705198 0.0263572
+   vertex 4.25963 -1.14288 2.52636
+  endloop
+ endfacet
+ facet normal 0.118801 -0.70037 -0.703824
+  outer loop
+   vertex 0.343688 0.705198 0.0263572
+   vertex 0.432963 0.791491 -0.0444441
+   vertex 4.25963 -1.14288 2.52636
+  endloop
+ endfacet
+ facet normal 0.118802 -0.70037 -0.703824
+  outer loop
+   vertex 4.25963 -1.14288 2.52636
+   vertex 0.432963 0.791491 -0.0444441
+   vertex 4.3489 -1.05659 2.45556
+  endloop
+ endfacet
+ facet normal 0.126672 -0.692427 -0.710281
+  outer loop
+   vertex 0.432963 0.791491 -0.0444441
+   vertex 0.522881 0.882036 -0.116677
+   vertex 4.3489 -1.05659 2.45556
+  endloop
+ endfacet
+ facet normal 0.126671 -0.692428 -0.71028
+  outer loop
+   vertex 4.3489 -1.05659 2.45556
+   vertex 0.522881 0.882036 -0.116677
+   vertex 4.43882 -0.966044 2.38332
+  endloop
+ endfacet
+ facet normal 0.135712 -0.683135 -0.717572
+  outer loop
+   vertex 0.522881 0.882036 -0.116677
+   vertex 0.613231 0.977588 -0.190555
+   vertex 4.43882 -0.966044 2.38332
+  endloop
+ endfacet
+ facet normal 0.135713 -0.683134 -0.717572
+  outer loop
+   vertex 4.43882 -0.966044 2.38332
+   vertex 0.613231 0.977588 -0.190555
+   vertex 4.52918 -0.870495 2.30945
+  endloop
+ endfacet
+ facet normal 0.145739 -0.672614 -0.7255
+  outer loop
+   vertex 0.613231 0.977588 -0.190555
+   vertex 0.703797 1.0789 -0.266291
+   vertex 4.52918 -0.870495 2.30945
+  endloop
+ endfacet
+ facet normal 0.145739 -0.672614 -0.725501
+  outer loop
+   vertex 4.52918 -0.870495 2.30945
+   vertex 0.703797 1.0789 -0.266291
+   vertex 4.61974 -0.769178 2.23371
+  endloop
+ endfacet
+ facet normal 0.156556 -0.661009 -0.733865
+  outer loop
+   vertex 0.703797 1.0789 -0.266291
+   vertex 0.794368 1.18674 -0.344099
+   vertex 4.61974 -0.769178 2.23371
+  endloop
+ endfacet
+ facet normal 0.156556 -0.661008 -0.733865
+  outer loop
+   vertex 4.61974 -0.769178 2.23371
+   vertex 0.794368 1.18674 -0.344099
+   vertex 4.71031 -0.661342 2.1559
+  endloop
+ endfacet
+ facet normal 0.167969 -0.648473 -0.742475
+  outer loop
+   vertex 0.794368 1.18674 -0.344099
+   vertex 0.884735 1.30185 -0.424197
+   vertex 4.71031 -0.661342 2.1559
+  endloop
+ endfacet
+ facet normal 0.167969 -0.648473 -0.742475
+  outer loop
+   vertex 4.71031 -0.661342 2.1559
+   vertex 0.884735 1.30185 -0.424197
+   vertex 4.80068 -0.546227 2.0758
+  endloop
+ endfacet
+ facet normal 0.17981 -0.635146 -0.751171
+  outer loop
+   vertex 0.884735 1.30185 -0.424197
+   vertex 0.974678 1.425 -0.506793
+   vertex 4.80068 -0.546227 2.0758
+  endloop
+ endfacet
+ facet normal 0.17981 -0.635146 -0.751171
+  outer loop
+   vertex 4.80068 -0.546227 2.0758
+   vertex 0.974678 1.425 -0.506793
+   vertex 4.89062 -0.423081 1.99321
+  endloop
+ endfacet
+ facet normal 0.191903 -0.621192 -0.759798
+  outer loop
+   vertex 0.974678 1.425 -0.506793
+   vertex 1.06399 1.55694 -0.592109
+   vertex 4.89062 -0.423081 1.99321
+  endloop
+ endfacet
+ facet normal 0.191903 -0.621192 -0.759798
+  outer loop
+   vertex 4.89062 -0.423081 1.99321
+   vertex 1.06399 1.55694 -0.592109
+   vertex 4.97993 -0.291136 1.90789
+  endloop
+ endfacet
+ facet normal 0.20411 -0.606748 -0.768242
+  outer loop
+   vertex 1.06399 1.55694 -0.592109
+   vertex 1.15246 1.69844 -0.680352
+   vertex 4.97993 -0.291136 1.90789
+  endloop
+ endfacet
+ facet normal 0.204111 -0.606748 -0.768242
+  outer loop
+   vertex 4.97993 -0.291136 1.90789
+   vertex 1.15246 1.69844 -0.680352
+   vertex 5.0684 -0.149646 1.81965
+  endloop
+ endfacet
+ facet normal 0.21613 -0.592167 -0.77629
+  outer loop
+   vertex 1.15246 1.69844 -0.680352
+   vertex 1.23984 1.85 -0.771643
+   vertex 5.0684 -0.149646 1.81965
+  endloop
+ endfacet
+ facet normal 0.21613 -0.592167 -0.77629
+  outer loop
+   vertex 5.0684 -0.149646 1.81965
+   vertex 1.23984 1.85 -0.771643
+   vertex 5.15578 0.00192113 1.72836
+  endloop
+ endfacet
+ facet normal 0.226464 -0.57934 -0.782994
+  outer loop
+   vertex 1.23984 1.85 -0.771643
+   vertex 1.32545 2.00964 -0.864998
+   vertex 5.15578 0.00192113 1.72836
+  endloop
+ endfacet
+ facet normal 0.226464 -0.57934 -0.782994
+  outer loop
+   vertex 5.15578 0.00192113 1.72836
+   vertex 1.32545 2.00964 -0.864998
+   vertex 5.2414 0.161559 1.635
+  endloop
+ endfacet
+ facet normal 0.234771 -0.568829 -0.788236
+  outer loop
+   vertex 1.32545 2.00964 -0.864998
+   vertex 1.40841 2.17386 -0.958799
+   vertex 5.2414 0.161559 1.635
+  endloop
+ endfacet
+ facet normal 0.234771 -0.568829 -0.788236
+  outer loop
+   vertex 5.2414 0.161559 1.635
+   vertex 1.40841 2.17386 -0.958799
+   vertex 5.32434 0.325781 1.5412
+  endloop
+ endfacet
+ facet normal 0.241585 -0.560072 -0.792437
+  outer loop
+   vertex 1.40841 2.17386 -0.958799
+   vertex 1.48778 2.33914 -1.05142
+   vertex 5.32434 0.325781 1.5412
+  endloop
+ endfacet
+ facet normal 0.241585 -0.560072 -0.792437
+  outer loop
+   vertex 5.32434 0.325781 1.5412
+   vertex 1.48778 2.33914 -1.05142
+   vertex 5.40372 0.49106 1.44858
+  endloop
+ endfacet
+ facet normal 0.247283 -0.552656 -0.795879
+  outer loop
+   vertex 1.48778 2.33914 -1.05142
+   vertex 1.56267 2.50196 -1.14121
+   vertex 5.40372 0.49106 1.44858
+  endloop
+ endfacet
+ facet normal 0.247282 -0.552656 -0.795879
+  outer loop
+   vertex 5.40372 0.49106 1.44858
+   vertex 1.56267 2.50196 -1.14121
+   vertex 5.47861 0.653882 1.35879
+  endloop
+ endfacet
+ facet normal 0.252099 -0.546319 -0.798738
+  outer loop
+   vertex 1.56267 2.50196 -1.14121
+   vertex 1.63216 2.65881 -1.22656
+   vertex 5.47861 0.653882 1.35879
+  endloop
+ endfacet
+ facet normal 0.252098 -0.546319 -0.798738
+  outer loop
+   vertex 5.47861 0.653882 1.35879
+   vertex 1.63216 2.65881 -1.22656
+   vertex 5.5481 0.810727 1.27344
+  endloop
+ endfacet
+ facet normal 0.256234 -0.540827 -0.801156
+  outer loop
+   vertex 1.63216 2.65881 -1.22656
+   vertex 1.69534 2.80616 -1.30582
+   vertex 5.5481 0.810727 1.27344
+  endloop
+ endfacet
+ facet normal 0.256234 -0.540827 -0.801156
+  outer loop
+   vertex 5.5481 0.810727 1.27344
+   vertex 1.69534 2.80616 -1.30582
+   vertex 5.61128 0.958075 1.19418
+  endloop
+ endfacet
+ facet normal 0.25982 -0.536026 -0.803224
+  outer loop
+   vertex 1.69534 2.80616 -1.30582
+   vertex 1.75129 2.94049 -1.37736
+   vertex 5.61128 0.958075 1.19418
+  endloop
+ endfacet
+ facet normal 0.25982 -0.536027 -0.803224
+  outer loop
+   vertex 5.61128 0.958075 1.19418
+   vertex 1.75129 2.94049 -1.37736
+   vertex 5.66724 1.09241 1.12264
+  endloop
+ endfacet
+ facet normal 0.262957 -0.531799 -0.805012
+  outer loop
+   vertex 1.75129 2.94049 -1.37736
+   vertex 1.79912 3.05829 -1.43956
+   vertex 5.66724 1.09241 1.12264
+  endloop
+ endfacet
+ facet normal 0.262957 -0.531798 -0.805012
+  outer loop
+   vertex 5.66724 1.09241 1.12264
+   vertex 1.79912 3.05829 -1.43956
+   vertex 5.71506 1.21021 1.06044
+  endloop
+ endfacet
+ facet normal 0.265719 -0.528053 -0.806569
+  outer loop
+   vertex 1.79912 3.05829 -1.43956
+   vertex 1.8379 3.15603 -1.49078
+   vertex 5.71506 1.21021 1.06044
+  endloop
+ endfacet
+ facet normal 0.265718 -0.528053 -0.806569
+  outer loop
+   vertex 5.71506 1.21021 1.06044
+   vertex 1.8379 3.15603 -1.49078
+   vertex 5.75385 1.30795 1.00922
+  endloop
+ endfacet
+ facet normal 0.268164 -0.524719 -0.807934
+  outer loop
+   vertex 1.8379 3.15603 -1.49078
+   vertex 1.86674 3.23021 -1.52938
+   vertex 5.75385 1.30795 1.00922
+  endloop
+ endfacet
+ facet normal 0.268163 -0.52472 -0.807934
+  outer loop
+   vertex 5.75385 1.30795 1.00922
+   vertex 1.86674 3.23021 -1.52938
+   vertex 5.78268 1.38213 0.970619
+  endloop
+ endfacet
+ facet normal 0.270324 -0.521759 -0.809131
+  outer loop
+   vertex 1.86674 3.23021 -1.52938
+   vertex 1.8847 3.2773 -1.55374
+   vertex 5.78268 1.38213 0.970619
+  endloop
+ endfacet
+ facet normal 0.270326 -0.521757 -0.809131
+  outer loop
+   vertex 5.78268 1.38213 0.970619
+   vertex 1.8847 3.2773 -1.55374
+   vertex 5.80064 1.42922 0.946254
+  endloop
+ endfacet
+ facet normal 0.272055 -0.519379 -0.810082
+  outer loop
+   vertex 1.8847 3.2773 -1.55374
+   vertex 1.8909 3.29378 -1.56223
+   vertex 5.80064 1.42922 0.946254
+  endloop
+ endfacet
+ facet normal 0.272056 -0.519377 -0.810082
+  outer loop
+   vertex 5.80064 1.42922 0.946254
+   vertex 1.8909 3.29378 -1.56223
+   vertex 5.80684 1.4457 0.937769
+  endloop
+ endfacet
+endsolid
diff --git a/tutorials/mesh/snappyHexMesh/opposite_walls/system/blockMeshDict b/tutorials/mesh/snappyHexMesh/opposite_walls/system/blockMeshDict
new file mode 100644
index 0000000000000000000000000000000000000000..b7b28115b98d18128accc0e62274b60c045351d3
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/opposite_walls/system/blockMeshDict
@@ -0,0 +1,98 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1806                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      blockMeshDict;
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+scale   1;
+
+vertices
+(
+    (-1   -3  -1)
+    ( 5   -3  -1)
+    ( 5    3  -1)
+    (-1    3  -1)
+    (-1   -3   5)
+    ( 5   -3   5)
+    ( 5    3   5)
+    (-1    3   5)
+);
+
+blocks
+(
+    hex (0 1 2 3 4 5 6 7) (6 6 6) simpleGrading (1 1 1)
+);
+
+edges
+(
+);
+
+boundary
+(
+    maxY
+    {
+        type patch;
+        faces
+        (
+            (3 7 6 2)
+        );
+    }
+
+    minX
+    {
+        type patch;
+        faces
+        (
+            (0 4 7 3)
+        );
+    }
+
+    maxX
+    {
+        type patch;
+        faces
+        (
+            (2 6 5 1)
+        );
+    }
+
+    minY
+    {
+        type patch;
+        faces
+        (
+            (1 5 4 0)
+        );
+    }
+
+    minZ
+    {
+        type patch;
+        faces
+        (
+            (0 3 2 1)
+        );
+    }
+
+    maxZ
+    {
+        type patch;
+        faces
+        (
+            (4 5 6 7)
+        );
+    }
+);
+
+// ************************************************************************* //
diff --git a/tutorials/mesh/snappyHexMesh/opposite_walls/system/controlDict b/tutorials/mesh/snappyHexMesh/opposite_walls/system/controlDict
new file mode 100644
index 0000000000000000000000000000000000000000..b9a88e8955344525a18141c6b10ca887b07d5ef9
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/opposite_walls/system/controlDict
@@ -0,0 +1,49 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1806 s                               |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      controlDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+application     snappyHexMesh;
+
+startFrom       startTime;
+
+startTime       0;
+
+stopAt          endTime;
+
+endTime         2000;
+
+deltaT          1;
+
+writeControl    timeStep;
+
+writeInterval   100;
+
+purgeWrite      0;
+
+writeFormat     binary;
+
+writePrecision  6;
+
+writeCompression off;
+
+timeFormat      general;
+
+timePrecision   6;
+
+runTimeModifiable true;
+
+
+// ************************************************************************* //
diff --git a/tutorials/mesh/snappyHexMesh/opposite_walls/system/decomposeParDict b/tutorials/mesh/snappyHexMesh/opposite_walls/system/decomposeParDict
new file mode 100644
index 0000000000000000000000000000000000000000..edfa32d242e7c0ee32406153d47ca12f56b89435
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/opposite_walls/system/decomposeParDict
@@ -0,0 +1,30 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1806                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      decomposeParDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+numberOfSubdomains 8;
+
+method          hierarchical;
+
+coeffs
+{
+    n           (2 2 2);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
+    dataFile    "cellDecomposition";
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/mesh/snappyHexMesh/opposite_walls/system/fvSchemes b/tutorials/mesh/snappyHexMesh/opposite_walls/system/fvSchemes
new file mode 100644
index 0000000000000000000000000000000000000000..8ef0651ea170f9a6308a9f948564b315776737ee
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/opposite_walls/system/fvSchemes
@@ -0,0 +1,57 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1806                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      fvSchemes;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ddtSchemes
+{
+    default         steadyState;
+}
+
+gradSchemes
+{
+    default         Gauss linear;
+}
+
+divSchemes
+{
+    default         none;
+
+    div(phi,U)      bounded Gauss upwind;
+    div(phi,T)      bounded Gauss upwind;
+    div(phi,k)      bounded Gauss upwind;
+    div(phi,epsilon) bounded Gauss upwind;
+    div(phi,R)      bounded Gauss upwind;
+    div(R)          Gauss linear;
+    div((nuEff*dev(T(grad(U))))) Gauss linear;
+}
+
+laplacianSchemes
+{
+    default         Gauss linear limited corrected 0.333;
+}
+
+interpolationSchemes
+{
+    default         linear;
+}
+
+snGradSchemes
+{
+    default         limited corrected 0.333;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/mesh/snappyHexMesh/opposite_walls/system/fvSolution b/tutorials/mesh/snappyHexMesh/opposite_walls/system/fvSolution
new file mode 100644
index 0000000000000000000000000000000000000000..b8ea24dd90019cdaa866298c9dbbb61e9e57c375
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/opposite_walls/system/fvSolution
@@ -0,0 +1,69 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1806                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      fvSolution;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+solvers
+{
+    p_rgh
+    {
+        solver          PCG;
+        preconditioner  DIC;
+        tolerance       1e-08;
+        relTol          0.01;
+    }
+
+    "(U|T|k|epsilon)"
+    {
+        solver          PBiCGStab;
+        preconditioner  DILU;
+        tolerance       1e-07;
+        relTol          0.1;
+    }
+}
+
+SIMPLE
+{
+    nNonOrthogonalCorrectors 2;
+    pRefCell        0;
+    pRefValue       0;
+
+    residualControl
+    {
+        p_rgh           1e-2;
+        U               1e-4;
+        T               1e-3;
+
+        // possibly check turbulence fields
+        "(k|epsilon|omega)" 1e-3;
+    }
+}
+
+relaxationFactors
+{
+    fields
+    {
+        p_rgh           0.7;
+    }
+    equations
+    {
+        U               0.2;
+        T               0.5;
+        "(k|epsilon)"   0.7;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/mesh/snappyHexMesh/opposite_walls/system/meshQualityDict b/tutorials/mesh/snappyHexMesh/opposite_walls/system/meshQualityDict
new file mode 100644
index 0000000000000000000000000000000000000000..f94681c006da542be44fe95a58ebe082ff601116
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/opposite_walls/system/meshQualityDict
@@ -0,0 +1,21 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1806                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      meshQualityDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+// Include defaults parameters from master dictionary
+#includeEtc "caseDicts/meshQualityDict"
+
+
+// ************************************************************************* //
diff --git a/tutorials/mesh/snappyHexMesh/opposite_walls/system/snappyHexMeshDict b/tutorials/mesh/snappyHexMesh/opposite_walls/system/snappyHexMeshDict
new file mode 100644
index 0000000000000000000000000000000000000000..66ef0e1f46db221503a960f4bedb94e9989beb45
--- /dev/null
+++ b/tutorials/mesh/snappyHexMesh/opposite_walls/system/snappyHexMeshDict
@@ -0,0 +1,326 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1806                               |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      snappyHexMeshDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+// Which of the steps to run
+castellatedMesh true;
+snap            true;
+addLayers       false;
+
+
+// Geometry. Definition of all surfaces. All surfaces are of class
+// searchableSurface.
+// Surfaces are used
+// - to specify refinement for any mesh cell intersecting it
+// - to specify refinement for any mesh cell inside/outside/near
+// - to 'snap' the mesh boundary to the surface
+geometry
+{
+    gap0
+    {
+        file "gap_transformed0.stl";
+        type triSurfaceMesh;
+    }
+    gap1
+    {
+        file "gap_transformed1.stl";
+        type triSurfaceMesh;
+    }
+    all
+    {
+        type searchableBox;
+        min (-1000 -1000 -1000);
+        max (1000 1000 1000);
+    }
+};
+
+
+// Settings for the castellatedMesh generation.
+castellatedMeshControls
+{
+
+    // Refinement parameters
+    // ~~~~~~~~~~~~~~~~~~~~~
+
+    // If local number of cells is >= maxLocalCells on any processor
+    // switches from from refinement followed by balancing
+    // (current method) to (weighted) balancing before refinement.
+    maxLocalCells 100000;
+
+    // Overall cell limit (approximately). Refinement will stop immediately
+    // upon reaching this number so a refinement level might not complete.
+    // Note that this is the number of cells before removing the part which
+    // is not 'visible' from the keepPoint. The final number of cells might
+    // actually be a lot less.
+    maxGlobalCells 2000000;
+
+    // The surface refinement loop might spend lots of iterations refining just a
+    // few cells. This setting will cause refinement to stop if <= minimumRefine
+    // are selected for refinement. Note: it will at least do one iteration
+    // (unless the number of cells to refine is 0)
+    minRefinementCells 0;
+
+    // Number of buffer layers between different levels.
+    // 1 means normal 2:1 refinement restriction, larger means slower
+    // refinement.
+    nCellsBetweenLevels 1;
+
+
+
+    // Explicit feature edge refinement
+    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+    // Specifies a level for any cell intersected by its edges.
+    // This is a featureEdgeMesh, read from constant/triSurface for now.
+    features
+    (
+    );
+
+
+
+    // Surface based refinement
+    // ~~~~~~~~~~~~~~~~~~~~~~~~
+
+    // Specifies two levels for every surface. The first is the minimum level,
+    // every cell intersecting a surface gets refined up to the minimum level.
+    // The second level is the maximum level. Cells that 'see' multiple
+    // intersections where the intersections make an
+    // angle > resolveFeatureAngle get refined up to the maximum level.
+
+    refinementSurfaces
+    {
+        "gap.*"
+        {
+            // Surface-wise min and max refinement level
+            level       (2 2);
+            // Additional refinement in tight gaps
+            //MEJ: only to trigger entering gap finding
+            //gapLevelIncrement 1;
+
+            //MEJ: from cell level 2 onwards start checking for opposite
+            //     surfaces
+            //gapLevel    (1 2 10);
+
+            //MEJ: from cell level 2 onwards start checking for opposite
+            //     surfaces
+            blockLevel  2;
+        }
+    }
+
+    // Resolve sharp angles
+    resolveFeatureAngle 60;
+
+
+    // Region-wise refinement
+    // ~~~~~~~~~~~~~~~~~~~~~~
+
+    // Specifies refinement level for cells in relation to a surface. One of
+    // three modes
+    // - distance. 'levels' specifies per distance to the surface the
+    //   wanted refinement level. The distances need to be specified in
+    //   descending order.
+    // - inside. 'levels' is only one entry and only the level is used. All
+    //   cells inside the surface get refined up to the level. The surface
+    //   needs to be closed for this to be possible.
+    // - outside. Same but cells outside.
+
+    refinementRegions
+    {
+        all
+        {
+            mode        inside;
+
+            // Dummy base level
+            levels      ((10000 0));
+
+            // If cells
+            // - have level 4..9
+            // - and are in a gap < 3 cell sizes across
+            // - with the gap on the inside ('inside'), outside ('outside')
+            //   or both ('mixed') of the surface
+            // refine them
+            gapLevel    (100 100 100);
+            gapMode     inside;
+        }
+    }
+
+
+    // Mesh selection
+    // ~~~~~~~~~~~~~~
+
+    // After refinement patches get added for all refinementSurfaces and
+    // all cells intersecting the surfaces get put into these patches. The
+    // section reachable from the locationInMesh is kept.
+    // NOTE: This point should never be on a face, always inside a cell, even
+    // after refinement.
+    locationInMesh (1.5 -0.6 2.1);
+
+
+    // Whether any faceZones (as specified in the refinementSurfaces)
+    // are only on the boundary of corresponding cellZones or also allow
+    // free-standing zone faces. Not used if there are no faceZones.
+    allowFreeStandingZoneFaces false;
+}
+
+
+
+// Settings for the snapping.
+snapControls
+{
+    //- Number of patch smoothing iterations before finding correspondence
+    //  to surface
+    nSmoothPatch 3;
+
+    //- Relative distance for points to be attracted by surface feature point
+    //  or edge. True distance is this factor times local
+    //  maximum edge length.
+    tolerance 2.0;
+
+    //- Number of mesh displacement relaxation iterations.
+    nSolveIter 30;
+
+    //- Maximum number of snapping relaxation iterations. Should stop
+    //  before upon reaching a correct mesh.
+    nRelaxIter 5;
+
+
+    // Feature snapping
+
+        //- Number of feature edge snapping iterations.
+        //  Leave out altogether to disable.
+        nFeatureSnapIter 10;
+
+        //- Detect (geometric) features by sampling the surface (default=false)
+        //implicitFeatureSnap true;
+
+        //- Use castellatedMeshControls::features (default = true)
+        explicitFeatureSnap true;
+}
+
+
+
+// Settings for the layer addition.
+addLayersControls
+{
+    // Are the thickness parameters below relative to the undistorted
+    // size of the refined cell outside layer (true) or absolute sizes (false).
+    relativeSizes true;
+
+    // Per final patch (so not geometry!) the layer information
+    layers
+    {
+    }
+
+    // Expansion factor for layer mesh
+    expansionRatio 1.0;
+
+    // Wanted thickness of final added cell layer. If multiple layers
+    // is the thickness of the layer furthest away from the wall.
+    // Relative to undistorted size of cell outside layer.
+    // is the thickness of the layer furthest away from the wall.
+    // See relativeSizes parameter.
+    finalLayerThickness 0.5;
+
+    // Minimum thickness of cell layer. If for any reason layer
+    // cannot be above minThickness do not add layer.
+    // Relative to undistorted size of cell outside layer.
+    // See relativeSizes parameter.
+    minThickness 0.25;
+
+    // If points get not extruded do nGrow layers of connected faces that are
+    // also not grown. This helps convergence of the layer addition process
+    // close to features.
+    // Note: changed(corrected) w.r.t 1.7.x! (didn't do anything in 1.7.x)
+    nGrow 0;
+
+
+    // Advanced settings
+
+    // When not to extrude surface. 0 is flat surface, 90 is when two faces
+    // are perpendicular
+    featureAngle 60;
+
+    // Maximum number of snapping relaxation iterations. Should stop
+    // before upon reaching a correct mesh.
+    nRelaxIter 5;
+
+    // Number of smoothing iterations of surface normals
+    nSmoothSurfaceNormals 1;
+
+    // Number of smoothing iterations of interior mesh movement direction
+    nSmoothNormals 3;
+
+    // Smooth layer thickness over surface patches
+    nSmoothThickness 10;
+
+    // Stop layer growth on highly warped cells
+    maxFaceThicknessRatio 0.5;
+
+    // Reduce layer growth where ratio thickness to medial
+    // distance is large
+    maxThicknessToMedialRatio 0.3;
+
+    // Angle used to pick up medial axis points
+    // Note: changed(corrected) w.r.t 16x! 90 degrees corresponds to 130 in 16x.
+    minMedianAxisAngle 90;
+
+    // Create buffer region for new layer terminations
+    nBufferCellsNoExtrude 0;
+
+
+    // Overall max number of layer addition iterations. The mesher will exit
+    // if it reaches this number of iterations; possibly with an illegal
+    // mesh.
+    nLayerIter 50;
+}
+
+
+
+// Generic mesh quality settings. At any undoable phase these determine
+// where to undo.
+meshQualityControls
+{
+    #include "meshQualityDict"
+
+    // Advanced
+
+    //- Number of error distribution iterations
+    nSmoothScale 4;
+    //- amount to scale back displacement at error points
+    errorReduction 0.75;
+}
+
+
+// Advanced
+
+// Merge tolerance. Is fraction of overall bounding box of initial mesh.
+// Note: the write tolerance needs to be higher than this.
+mergeTolerance 1e-6;
+
+
+//// Debug flags
+//debugFlags
+//(
+//    mesh            // write intermediate meshes
+//    attraction      // write attraction as .obj files
+//);
+//
+//// Write flags
+//writeFlags
+//(
+//    scalarLevels    // write volScalarField with cellLevel for postprocessing
+//);
+
+// ************************************************************************* //