From 2d9ea72b6a0a544cd407cd9e94def1d492392a0f Mon Sep 17 00:00:00 2001
From: mattijs <mattijs@hunt.opencfd.co.uk>
Date: Tue, 9 Jun 2009 14:02:10 +0100
Subject: [PATCH] allow -overwrite in snappyHexMesh

---
 .../generation/snappyHexMesh/snappyHexMesh.C  | 26 ++++++++--
 .../autoHexMeshDriver/autoHexMeshDriver.C     |  8 ++--
 .../autoHexMeshDriver/autoHexMeshDriver.H     |  1 +
 .../autoHexMeshDriver/autoLayerDriver.C       | 47 +++++++++++++++----
 .../autoHexMeshDriver/autoRefineDriver.C      | 15 +++---
 .../autoHexMeshDriver/autoSnapDriver.C        | 14 +++---
 .../meshRefinement/meshRefinement.C           | 34 ++++++++++----
 .../meshRefinement/meshRefinement.H           | 29 ++++++++++--
 .../meshRefinement/meshRefinementBaffles.C    | 36 ++++++++++++--
 .../meshRefinement/meshRefinementMerge.C      | 14 ++++--
 .../meshRefinement/meshRefinementRefine.C     | 14 ++++--
 11 files changed, 180 insertions(+), 58 deletions(-)

diff --git a/applications/utilities/mesh/generation/snappyHexMesh/snappyHexMesh.C b/applications/utilities/mesh/generation/snappyHexMesh/snappyHexMesh.C
index 67b16d75ea2..6f086523dd2 100644
--- a/applications/utilities/mesh/generation/snappyHexMesh/snappyHexMesh.C
+++ b/applications/utilities/mesh/generation/snappyHexMesh/snappyHexMesh.C
@@ -96,7 +96,7 @@ void writeMesh
     const fvMesh& mesh = meshRefiner.mesh();
 
     meshRefiner.printMeshInfo(debug, msg);
-    Info<< "Writing mesh to time " << mesh.time().timeName() << endl;
+    Info<< "Writing mesh to time " << meshRefiner.timeName() << endl;
 
     meshRefiner.write(meshRefinement::MESH|meshRefinement::SCALARLEVELS, "");
     if (debug & meshRefinement::OBJINTERSECTIONS)
@@ -104,7 +104,7 @@ void writeMesh
         meshRefiner.write
         (
             meshRefinement::OBJINTERSECTIONS,
-            mesh.time().path()/mesh.time().timeName()
+            mesh.time().path()/meshRefiner.timeName()
         );
     }
     Info<< "Written mesh in = "
@@ -115,6 +115,7 @@ void writeMesh
 
 int main(int argc, char *argv[])
 {
+    argList::validOptions.insert("overwrite", "");
 #   include "setRootCase.H"
 #   include "createTime.H"
     runTime.functionObjects().off();
@@ -123,6 +124,9 @@ int main(int argc, char *argv[])
     Info<< "Read mesh in = "
         << runTime.cpuTimeIncrement() << " s" << endl;
 
+    const bool overwrite = args.optionFound("overwrite");
+
+
     // Check patches and faceZones are synchronised
     mesh.boundaryMesh().checkParallelSync(true);
     meshRefinement::checkCoupledFaceZones(mesh);
@@ -256,6 +260,7 @@ int main(int argc, char *argv[])
     (
         mesh,
         mergeDist,          // tolerance used in sorting coordinates
+        overwrite,          // overwrite mesh files?
         surfaces,           // for surface intersection refinement
         shells              // for volume (inside/outside) refinement
     );
@@ -268,7 +273,7 @@ int main(int argc, char *argv[])
     meshRefiner.write
     (
         debug&meshRefinement::OBJINTERSECTIONS,
-        mesh.time().path()/mesh.time().timeName()
+        mesh.time().path()/meshRefiner.timeName()
     );
 
 
@@ -369,6 +374,11 @@ int main(int argc, char *argv[])
         // Refinement parameters
         refinementParameters refineParams(refineDict);
 
+        if (!overwrite)
+        {
+            const_cast<Time&>(mesh.time())++;
+        }
+
         refineDriver.doRefine(refineDict, refineParams, wantSnap, motionDict);
 
         writeMesh
@@ -390,6 +400,11 @@ int main(int argc, char *argv[])
         // Snap parameters
         snapParameters snapParams(snapDict);
 
+        if (!overwrite)
+        {
+            const_cast<Time&>(mesh.time())++;
+        }
+
         snapDriver.doSnap(snapDict, motionDict, snapParams);
 
         writeMesh
@@ -407,6 +422,11 @@ int main(int argc, char *argv[])
         // Layer addition parameters
         layerParameters layerParams(layerDict, mesh.boundaryMesh());
 
+        if (!overwrite)
+        {
+            const_cast<Time&>(mesh.time())++;
+        }
+
         layerDriver.doLayers
         (
             layerDict,
diff --git a/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoHexMeshDriver.C b/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoHexMeshDriver.C
index 9081ceb3ee0..3c2221f8d04 100644
--- a/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoHexMeshDriver.C
+++ b/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoHexMeshDriver.C
@@ -148,6 +148,7 @@ Foam::scalar Foam::autoHexMeshDriver::getMergeDistance(const scalar mergeTol)
 Foam::autoHexMeshDriver::autoHexMeshDriver
 (
     fvMesh& mesh,
+    const bool overwrite,
     const dictionary& dict,
     const dictionary& decomposeDict
 )
@@ -308,6 +309,7 @@ Foam::autoHexMeshDriver::autoHexMeshDriver
             (
                 mesh,
                 mergeDist_,         // tolerance used in sorting coordinates
+                overwrite,
                 surfaces(),
                 shells()
             )
@@ -321,7 +323,7 @@ Foam::autoHexMeshDriver::autoHexMeshDriver
         meshRefinerPtr_().write
         (
             debug_&meshRefinement::OBJINTERSECTIONS,
-            mesh_.time().path()/mesh_.time().timeName()
+            mesh_.time().path()/meshRefinerPtr_().timeName()
         );
     }
 
@@ -447,7 +449,7 @@ void Foam::autoHexMeshDriver::writeMesh(const string& msg) const
     const meshRefinement& meshRefiner = meshRefinerPtr_();
 
     meshRefiner.printMeshInfo(debug_, msg);
-    Info<< "Writing mesh to time " << mesh_.time().timeName() << endl;
+    Info<< "Writing mesh to time " << meshRefiner.timeName() << endl;
 
     meshRefiner.write(meshRefinement::MESH|meshRefinement::SCALARLEVELS, "");
     if (debug_ & meshRefinement::OBJINTERSECTIONS)
@@ -455,7 +457,7 @@ void Foam::autoHexMeshDriver::writeMesh(const string& msg) const
         meshRefiner.write
         (
             meshRefinement::OBJINTERSECTIONS,
-            mesh_.time().path()/mesh_.time().timeName()
+            mesh_.time().path()/meshRefiner.timeName()
         );
     }
     Info<< "Written mesh in = "
diff --git a/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoHexMeshDriver.H b/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoHexMeshDriver.H
index c0b7668d0ac..02eba5afbe9 100644
--- a/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoHexMeshDriver.H
+++ b/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoHexMeshDriver.H
@@ -174,6 +174,7 @@ public:
         autoHexMeshDriver
         (
             fvMesh& mesh,
+            const bool overwrite,
             const dictionary& meshDict,
             const dictionary& decomposeDict
         );
diff --git a/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoLayerDriver.C b/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoLayerDriver.C
index 55e35269dd2..fea25e35eb8 100644
--- a/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoLayerDriver.C
+++ b/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoLayerDriver.C
@@ -159,12 +159,16 @@ Foam::label Foam::autoLayerDriver::mergePatchFacesUndo
             mesh.clearOut();
         }
 
+        if (meshRefiner_.overwrite())
+        {
+            mesh.setInstance(meshRefiner_.oldInstance());
+        }
+
         faceCombiner.updateMesh(map);
 
         meshRefiner_.updateMesh(map, labelList(0));
 
 
-
         for (label iteration = 0; iteration < 100; iteration++)
         {
             Info<< nl
@@ -313,6 +317,11 @@ Foam::label Foam::autoLayerDriver::mergePatchFacesUndo
                 mesh.clearOut();
             }
 
+            if (meshRefiner_.overwrite())
+            {
+                mesh.setInstance(meshRefiner_.oldInstance());
+            }
+
             faceCombiner.updateMesh(map);
 
             // Renumber restore maps
@@ -336,7 +345,7 @@ Foam::label Foam::autoLayerDriver::mergePatchFacesUndo
         if (debug)
         {
             Pout<< "Writing merged-faces mesh to time "
-                << mesh.time().timeName() << nl << endl;
+                << meshRefiner_.timeName() << nl << endl;
             mesh.write();
         }
     }
@@ -380,6 +389,11 @@ Foam::autoPtr<Foam::mapPolyMesh> Foam::autoLayerDriver::doRemovePoints
         mesh.clearOut();
     }
 
+    if (meshRefiner_.overwrite())
+    {
+        mesh.setInstance(meshRefiner_.oldInstance());
+    }
+
     pointRemover.updateMesh(map);
     meshRefiner_.updateMesh(map, labelList(0));
 
@@ -433,6 +447,11 @@ Foam::autoPtr<Foam::mapPolyMesh> Foam::autoLayerDriver::doRestorePoints
         mesh.clearOut();
     }
 
+    if (meshRefiner_.overwrite())
+    {
+        mesh.setInstance(meshRefiner_.oldInstance());
+    }
+
     pointRemover.updateMesh(map);
     meshRefiner_.updateMesh(map, labelList(0));
 
@@ -656,7 +675,7 @@ Foam::label Foam::autoLayerDriver::mergeEdgesUndo
         if (debug)
         {
             Pout<< "Writing merged-edges mesh to time "
-                << mesh.time().timeName() << nl << endl;
+                << meshRefiner_.timeName() << nl << endl;
             mesh.write();
         }
     }
@@ -2724,7 +2743,7 @@ void Foam::autoLayerDriver::addLayers
         IOobject
         (
             "pointMedialDist",
-            mesh.time().timeName(),
+            meshRefiner_.timeName(),
             mesh,
             IOobject::NO_READ,
             IOobject::NO_WRITE,
@@ -2739,7 +2758,7 @@ void Foam::autoLayerDriver::addLayers
         IOobject
         (
             "dispVec",
-            mesh.time().timeName(),
+            meshRefiner_.timeName(),
             mesh,
             IOobject::NO_READ,
             IOobject::NO_WRITE,
@@ -2754,7 +2773,7 @@ void Foam::autoLayerDriver::addLayers
         IOobject
         (
             "medialRatio",
-            mesh.time().timeName(),
+            meshRefiner_.timeName(),
             mesh,
             IOobject::NO_READ,
             IOobject::NO_WRITE,
@@ -2906,7 +2925,7 @@ void Foam::autoLayerDriver::addLayers
             );
 
             const_cast<Time&>(mesh.time())++;
-            Info<< "Writing shrunk mesh to " << mesh.time().timeName() << endl;
+            Info<< "Writing shrunk mesh to " << meshRefiner_.timeName() << endl;
 
             // See comment in autoSnapDriver why we should not remove meshPhi
             // using mesh.clearPout().
@@ -3007,6 +3026,11 @@ void Foam::autoLayerDriver::addLayers
         //?neccesary? Update fields
         newMesh.updateMesh(map);
 
+        if (meshRefiner_.overwrite())
+        {
+            newMesh.setInstance(meshRefiner_.oldInstance());
+        }
+
         // Update numbering on addLayer:
         // - cell/point labels to be newMesh.
         // - patchFaces to remain in oldMesh order.
@@ -3029,7 +3053,7 @@ void Foam::autoLayerDriver::addLayers
 
         if (debug)
         {
-            Info<< "Writing layer mesh to " << mesh.time().timeName() << endl;
+            Info<< "Writing layer mesh to " << meshRefiner_.timeName() << endl;
             newMesh.write();
             cellSet addedCellSet
             (
@@ -3108,6 +3132,11 @@ void Foam::autoLayerDriver::addLayers
         mesh.clearOut();
     }
 
+    if (meshRefiner_.overwrite())
+    {
+        mesh.setInstance(meshRefiner_.oldInstance());
+    }
+
     meshRefiner_.updateMesh(map, labelList(0));
 
 
@@ -3176,8 +3205,6 @@ void Foam::autoLayerDriver::doLayers
         << "----------------------------------" << nl
         << endl;
 
-    const_cast<Time&>(mesh.time())++;
-
     Info<< "Using mesh parameters " << motionDict << nl << endl;
 
     // Merge coplanar boundary faces
diff --git a/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoRefineDriver.C b/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoRefineDriver.C
index d9c205bfca5..0ac24a5574a 100644
--- a/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoRefineDriver.C
+++ b/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoRefineDriver.C
@@ -344,8 +344,8 @@ void Foam::autoRefineDriver::removeInsideCells
     if (debug)
     {
         Pout<< "Writing subsetted mesh to time "
-            << mesh.time().timeName() << '.' << endl;
-        meshRefiner_.write(debug, mesh.time().path()/mesh.time().timeName());
+            << meshRefiner_.timeName() << '.' << endl;
+        meshRefiner_.write(debug, mesh.time().path()/meshRefiner_.timeName());
         Pout<< "Dumped mesh in = "
             << mesh.time().cpuTimeIncrement() << " s\n" << nl << endl;
     }
@@ -561,11 +561,11 @@ void Foam::autoRefineDriver::zonify
         if (debug)
         {
             Pout<< "Writing zoned mesh to time "
-                << mesh.time().timeName() << '.' << endl;
+                << meshRefiner_.timeName() << '.' << endl;
             meshRefiner_.write
             (
                 debug,
-                mesh.time().path()/mesh.time().timeName()
+                mesh.time().path()/meshRefiner_.timeName()
             );
         }
 
@@ -653,8 +653,8 @@ void Foam::autoRefineDriver::splitAndMergeBaffles
     if (debug)
     {
         Pout<< "Writing handleProblemCells mesh to time "
-            << mesh.time().timeName() << '.' << endl;
-        meshRefiner_.write(debug, mesh.time().path()/mesh.time().timeName());
+            << meshRefiner_.timeName() << '.' << endl;
+        meshRefiner_.write(debug, mesh.time().path()/meshRefiner_.timeName());
     }
 }
 
@@ -712,9 +712,6 @@ void Foam::autoRefineDriver::doRefine
 
     const fvMesh& mesh = meshRefiner_.mesh();
 
-    const_cast<Time&>(mesh.time())++;
-
-
     // Check that all the keep points are inside the mesh.
     refineParams.findCells(mesh);
 
diff --git a/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoSnapDriver.C b/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoSnapDriver.C
index f27ccdb9f30..41475a321af 100644
--- a/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoSnapDriver.C
+++ b/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoSnapDriver.C
@@ -557,7 +557,7 @@ Foam::tmp<Foam::scalarField> Foam::autoSnapDriver::edgePatchDist
     //        IOobject
     //        (
     //            "pointDist",
-    //            mesh.DB().timeName(),
+    //            meshRefiner_.timeName(),
     //            mesh.DB(),
     //            IOobject::NO_READ,
     //            IOobject::AUTO_WRITE
@@ -580,7 +580,7 @@ Foam::tmp<Foam::scalarField> Foam::autoSnapDriver::edgePatchDist
     //        pointDist[pointI] /= mesh.pointEdges()[pointI].size();
     //    }
     //    Info<< "Writing patch distance to " << pointDist.name()
-    //        << " at time " << mesh.DB().timeName() << endl;
+    //        << " at time " << meshRefiner_.timeName() << endl;
     //
     //    pointDist.write();
     //}
@@ -750,7 +750,7 @@ Foam::autoPtr<Foam::mapPolyMesh> Foam::autoSnapDriver::createZoneBaffles
             {
                 const_cast<Time&>(mesh.time())++;
                 Pout<< "Writing baffled mesh to time "
-                    << mesh.time().timeName() << endl;
+                    << meshRefiner_.timeName() << endl;
                 mesh.write();
             }
         }
@@ -899,7 +899,7 @@ void Foam::autoSnapDriver::preSmoothPatch
     if (debug)
     {
         const_cast<Time&>(mesh.time())++;
-        Pout<< "Writing patch smoothed mesh to time " << mesh.time().timeName()
+        Pout<< "Writing patch smoothed mesh to time " << meshRefiner_.timeName()
             << endl;
 
         mesh.write();
@@ -1193,7 +1193,7 @@ void Foam::autoSnapDriver::smoothDisplacement
     if (debug)
     {
         const_cast<Time&>(mesh.time())++;
-        Pout<< "Writing smoothed mesh to time " << mesh.time().timeName()
+        Pout<< "Writing smoothed mesh to time " << meshRefiner_.timeName()
             << endl;
 
         // Moving mesh creates meshPhi. Can be cleared out by a mesh.clearOut
@@ -1255,7 +1255,7 @@ void Foam::autoSnapDriver::scaleMesh
         if (debug)
         {
             const_cast<Time&>(mesh.time())++;
-            Pout<< "Writing scaled mesh to time " << mesh.time().timeName()
+            Pout<< "Writing scaled mesh to time " << meshRefiner_.timeName()
                 << endl;
             mesh.write();
 
@@ -1447,8 +1447,6 @@ void Foam::autoSnapDriver::doSnap
         << "--------------" << nl
         << endl;
 
-    const_cast<Time&>(mesh.time())++;
-
     // Get the labels of added patches.
     labelList adaptPatchIDs(meshRefiner_.meshedPatches());
 
diff --git a/src/autoMesh/autoHexMesh/meshRefinement/meshRefinement.C b/src/autoMesh/autoHexMesh/meshRefinement/meshRefinement.C
index eadc22ba3c0..7e90beae6f6 100644
--- a/src/autoMesh/autoHexMesh/meshRefinement/meshRefinement.C
+++ b/src/autoMesh/autoHexMesh/meshRefinement/meshRefinement.C
@@ -465,6 +465,11 @@ Foam::autoPtr<Foam::mapPolyMesh> Foam::meshRefinement::doRemoveCells
         mesh_.clearOut();
     }
 
+    if (overwrite_)
+    {
+        mesh_.setInstance(oldInstance_);
+    }
+
     // Update local mesh data
     cellRemover.updateMesh(map);
 
@@ -817,12 +822,15 @@ Foam::meshRefinement::meshRefinement
 (
     fvMesh& mesh,
     const scalar mergeDistance,
+    const bool overwrite,
     const refinementSurfaces& surfaces,
     const shellSurfaces& shells
 )
 :
     mesh_(mesh),
     mergeDistance_(mergeDistance),
+    overwrite_(overwrite),
+    oldInstance_(mesh.pointsInstance()),
     surfaces_(surfaces),
     shells_(shells),
     meshCutter_
@@ -1199,8 +1207,6 @@ Foam::autoPtr<Foam::mapDistributePolyMesh> Foam::meshRefinement::balance
 // Helper function to get intersected faces
 Foam::labelList Foam::meshRefinement::intersectedFaces() const
 {
-    // Mark all faces that will become baffles
-
     label nBoundaryFaces = 0;
 
     forAll(surfaceIndex_, faceI)
@@ -1226,9 +1232,7 @@ Foam::labelList Foam::meshRefinement::intersectedFaces() const
 
 
 // Helper function to get points used by faces
-Foam::labelList Foam::meshRefinement::intersectedPoints
-(
-) const
+Foam::labelList Foam::meshRefinement::intersectedPoints() const
 {
     const faceList& faces = mesh_.faces();
 
@@ -1384,7 +1388,7 @@ Foam::tmp<Foam::pointVectorField> Foam::meshRefinement::makeDisplacementField
             IOobject
             (
                 "pointDisplacement",
-                mesh.time().timeName(),
+                mesh.time().timeName(), //timeName(),
                 mesh,
                 IOobject::NO_READ,
                 IOobject::AUTO_WRITE
@@ -2059,6 +2063,20 @@ void Foam::meshRefinement::printMeshInfo(const bool debug, const string& msg)
 }
 
 
+//- Return either time().constant() or oldInstance
+Foam::word Foam::meshRefinement::timeName() const
+{
+    if (overwrite_ && mesh_.time().timeIndex() == 0)
+    {
+        return oldInstance_;
+    }
+    else
+    {
+        return mesh_.time().timeName();
+    }
+}
+
+
 void Foam::meshRefinement::dumpRefinementLevel() const
 {
     volScalarField volRefLevel
@@ -2066,7 +2084,7 @@ void Foam::meshRefinement::dumpRefinementLevel() const
         IOobject
         (
             "cellLevel",
-            mesh_.time().timeName(),
+            timeName(),
             mesh_,
             IOobject::NO_READ,
             IOobject::AUTO_WRITE,
@@ -2093,7 +2111,7 @@ void Foam::meshRefinement::dumpRefinementLevel() const
         IOobject
         (
             "pointLevel",
-            mesh_.time().timeName(),
+            timeName(),
             mesh_,
             IOobject::NO_READ,
             IOobject::NO_WRITE,
diff --git a/src/autoMesh/autoHexMesh/meshRefinement/meshRefinement.H b/src/autoMesh/autoHexMesh/meshRefinement/meshRefinement.H
index e0f35934ed0..93ce3ceeb8f 100644
--- a/src/autoMesh/autoHexMesh/meshRefinement/meshRefinement.H
+++ b/src/autoMesh/autoHexMesh/meshRefinement/meshRefinement.H
@@ -110,6 +110,12 @@ private:
         //- tolerance used for sorting coordinates (used in 'less' routine)
         const scalar mergeDistance_;
 
+        //- overwrite the mesh?
+        const bool overwrite_;
+
+        //- Instance of mesh upon construction. Used when in overwrite_ mode.
+        const word oldInstance_;
+
         //- All surface-intersection interaction
         const refinementSurfaces& surfaces_;
 
@@ -167,9 +173,6 @@ private:
         //- Find any intersection of surface. Store in surfaceIndex_.
         void updateIntersections(const labelList& changedFaces);
 
-        //- Set instance of all local IOobjects
-        void setInstance(const fileName&);
-
         //- Remove cells. Put exposedFaces into exposedPatchIDs.
         autoPtr<mapPolyMesh> doRemoveCells
         (
@@ -478,6 +481,7 @@ public:
         (
             fvMesh& mesh,
             const scalar mergeDistance,
+            const bool overwrite,
             const refinementSurfaces&,
             const shellSurfaces&
         );
@@ -502,6 +506,18 @@ public:
                 return mergeDistance_;
             }
 
+            //- Overwrite the mesh?
+            bool overwrite() const
+            {
+                return overwrite_;
+            }
+
+            //- (points)instance of mesh upon construction
+            const word& oldInstance() const
+            {
+                return oldInstance_;
+            }
+
             //- reference to surface search engines
             const refinementSurfaces& surfaces() const
             {
@@ -768,6 +784,13 @@ public:
             //- Print some mesh stats.
             void printMeshInfo(const bool, const string&) const;
 
+            //- Replacement for Time::timeName() : return oldInstance (if
+            //  overwrite_)
+            word timeName() const;
+
+            //- Set instance of all local IOobjects
+            void setInstance(const fileName&);
+
             //- Write mesh and all data
             bool write() const;
 
diff --git a/src/autoMesh/autoHexMesh/meshRefinement/meshRefinementBaffles.C b/src/autoMesh/autoHexMesh/meshRefinement/meshRefinementBaffles.C
index 494a20e2642..baa2e5d463b 100644
--- a/src/autoMesh/autoHexMesh/meshRefinement/meshRefinementBaffles.C
+++ b/src/autoMesh/autoHexMesh/meshRefinement/meshRefinementBaffles.C
@@ -226,7 +226,13 @@ void Foam::meshRefinement::getBafflePatches
     label vertI = 0;
     if (debug&OBJINTERSECTIONS)
     {
-        str.reset(new OFstream(mesh_.time().timePath()/"intersections.obj"));
+        str.reset
+        (
+            new OFstream
+            (
+                mesh_.time().path()/timeName()/"intersections.obj"
+            )
+        );
 
         Pout<< "getBafflePatches : Writing surface intersections to file "
             << str().name() << nl << endl;
@@ -461,6 +467,11 @@ Foam::autoPtr<Foam::mapPolyMesh> Foam::meshRefinement::createBaffles
         mesh_.clearOut();
     }
 
+    if (overwrite())
+    {
+        mesh_.setInstance(oldInstance());
+    }
+
     //- Redo the intersections on the newly create baffle faces. Note that
     //  this changes also the cell centre positions.
     faceSet baffledFacesSet(mesh_, "baffledFacesSet", 2*nBaffles);
@@ -820,6 +831,11 @@ Foam::autoPtr<Foam::mapPolyMesh> Foam::meshRefinement::mergeBaffles
         mesh_.clearOut();
     }
 
+    if (overwrite())
+    {
+        mesh_.setInstance(oldInstance());
+    }
+
     // Update intersections. Recalculate intersections on merged faces since
     // this seems to give problems? Note: should not be nessecary since
     // baffles preserve intersections from when they were created.
@@ -1482,7 +1498,7 @@ void Foam::meshRefinement::baffleAndSplitMesh
 
     if (debug)
     {
-        Pout<< "Writing baffled mesh to time " << mesh_.time().timeName()
+        Pout<< "Writing baffled mesh to time " << timeName()
             << endl;
         write(debug, runTime.path()/"baffles");
         Pout<< "Dumped debug data in = "
@@ -1565,7 +1581,7 @@ void Foam::meshRefinement::baffleAndSplitMesh
         if (debug)
         {
             Pout<< "Writing extra baffled mesh to time "
-                << mesh_.time().timeName() << endl;
+                << timeName() << endl;
             write(debug, runTime.path()/"extraBaffles");
             Pout<< "Dumped debug data in = "
                 << runTime.cpuTimeIncrement() << " s\n" << nl << endl;
@@ -1600,9 +1616,9 @@ void Foam::meshRefinement::baffleAndSplitMesh
 
     if (debug)
     {
-        Pout<< "Writing subsetted mesh to time " << mesh_.time().timeName()
+        Pout<< "Writing subsetted mesh to time " << timeName()
             << endl;
-        write(debug, runTime.timePath());
+        write(debug, runTime.path()/timeName());
         Pout<< "Dumped debug data in = "
             << runTime.cpuTimeIncrement() << " s\n" << nl << endl;
     }
@@ -1994,6 +2010,11 @@ Foam::autoPtr<Foam::mapPolyMesh> Foam::meshRefinement::dupNonManifoldPoints()
         mesh_.clearOut();
     }
 
+    if (overwrite())
+    {
+        mesh_.setInstance(oldInstance());
+    }
+
     // Update intersections. Is mapping only (no faces created, positions stay
     // same) so no need to recalculate intersections.
     updateMesh(map, labelList(0));
@@ -2425,6 +2446,11 @@ Foam::autoPtr<Foam::mapPolyMesh> Foam::meshRefinement::zonify
         mesh_.clearOut();
     }
 
+    if (overwrite())
+    {
+        mesh_.setInstance(oldInstance());
+    }
+
     // None of the faces has changed, only the zones. Still...
     updateMesh(map, labelList());
 
diff --git a/src/autoMesh/autoHexMesh/meshRefinement/meshRefinementMerge.C b/src/autoMesh/autoHexMesh/meshRefinement/meshRefinementMerge.C
index 7ad77e83bf2..b1461cea77c 100644
--- a/src/autoMesh/autoHexMesh/meshRefinement/meshRefinementMerge.C
+++ b/src/autoMesh/autoHexMesh/meshRefinement/meshRefinementMerge.C
@@ -29,10 +29,6 @@ License
 #include "polyTopoChange.H"
 #include "removePoints.H"
 
-
-// * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
-
-
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 // Merge faces that are in-line.
@@ -108,6 +104,11 @@ Foam::label Foam::meshRefinement::mergePatchFaces
             mesh_.clearOut();
         }
 
+        if (overwrite())
+        {
+            mesh_.setInstance(oldInstance());
+        }
+
         faceCombiner.updateMesh(map);
 
         // Get the kept faces that need to be recalculated.
@@ -203,6 +204,11 @@ Foam::autoPtr<Foam::mapPolyMesh> Foam::meshRefinement::mergeEdges
             mesh_.clearOut();
         }
 
+        if (overwrite())
+        {
+            mesh_.setInstance(oldInstance());
+        }
+
         pointRemover.updateMesh(map);
 
         // Get the kept faces that need to be recalculated.
diff --git a/src/autoMesh/autoHexMesh/meshRefinement/meshRefinementRefine.C b/src/autoMesh/autoHexMesh/meshRefinement/meshRefinementRefine.C
index 7aabbc6321c..e35607a5980 100644
--- a/src/autoMesh/autoHexMesh/meshRefinement/meshRefinementRefine.C
+++ b/src/autoMesh/autoHexMesh/meshRefinement/meshRefinementRefine.C
@@ -1232,6 +1232,11 @@ Foam::autoPtr<Foam::mapPolyMesh> Foam::meshRefinement::refine
         mesh_.clearOut();
     }
 
+    if (overwrite())
+    {
+        mesh_.setInstance(oldInstance());
+    }
+
     // Update intersection info
     updateMesh(map, getChangedFaces(map, cellsToRefine));
 
@@ -1256,12 +1261,12 @@ Foam::meshRefinement::refineAndBalance
     if (debug)
     {
         Pout<< "Writing refined but unbalanced " << msg
-            << " mesh to time " << mesh_.time().timeName() << endl;
+            << " mesh to time " << timeName() << endl;
         write
         (
             debug,
             mesh_.time().path()
-           /mesh_.time().timeName()
+           /timeName()
         );
         Pout<< "Dumped debug data in = "
             << mesh_.time().cpuTimeIncrement() << " s" << endl;
@@ -1299,12 +1304,11 @@ Foam::meshRefinement::refineAndBalance
         if (debug)
         {
             Pout<< "Writing balanced " << msg
-                << " mesh to time " << mesh_.time().timeName() << endl;
+                << " mesh to time " << timeName() << endl;
             write
             (
                 debug,
-                mesh_.time().path()
-               /mesh_.time().timeName()
+                mesh_.time().path()/timeName()
             );
             Pout<< "Dumped debug data in = "
                 << mesh_.time().cpuTimeIncrement() << " s" << endl;
-- 
GitLab