From 4b4ca3a247d873661f8970ecd00834945576c346 Mon Sep 17 00:00:00 2001
From: Henry <Henry>
Date: Mon, 16 Feb 2015 21:42:09 +0000
Subject: [PATCH] compressibleInterDyMFoam and interPhaseChangeDyMFoam: cache
 divU before time advancement to ensure the old-time meshPhi are used to make
 phi absolute Resolves bug-report
 http://www.openfoam.org/mantisbt/view.php?id=1531

---
 .../compressibleInterDyMFoam.C                   | 16 +++++++++-------
 .../interPhaseChangeDyMFoam.C                    |  9 ++++++---
 2 files changed, 15 insertions(+), 10 deletions(-)

diff --git a/applications/solvers/multiphase/compressibleInterFoam/compressibleInterDyMFoam/compressibleInterDyMFoam.C b/applications/solvers/multiphase/compressibleInterFoam/compressibleInterDyMFoam/compressibleInterDyMFoam.C
index 8297cd691c7..7f225f4607a 100644
--- a/applications/solvers/multiphase/compressibleInterFoam/compressibleInterDyMFoam/compressibleInterDyMFoam.C
+++ b/applications/solvers/multiphase/compressibleInterFoam/compressibleInterDyMFoam/compressibleInterDyMFoam.C
@@ -73,17 +73,19 @@ int main(int argc, char *argv[])
     while (runTime.run())
     {
         #include "readControls.H"
-        #include "CourantNo.H"
 
-        #include "setDeltaT.H"
+        {
+            // Store divU from the previous mesh so that it can be mapped
+            // and used in correctPhi to ensure the corrected phi has the
+            // same divergence
+            volScalarField divU("divU0", fvc::div(fvc::absolute(phi, U)));
 
-        runTime++;
+            #include "CourantNo.H"
+            #include "setDeltaT.H"
 
-        Info<< "Time = " << runTime.timeName() << nl << endl;
+            runTime++;
 
-        {
-            // Store divU from the previous mesh for the correctPhi
-            volScalarField divU(fvc::div(fvc::absolute(phi, U)));
+            Info<< "Time = " << runTime.timeName() << nl << endl;
 
             scalar timeBeforeMeshUpdate = runTime.elapsedCpuTime();
 
diff --git a/applications/solvers/multiphase/interPhaseChangeFoam/interPhaseChangeDyMFoam/interPhaseChangeDyMFoam.C b/applications/solvers/multiphase/interPhaseChangeFoam/interPhaseChangeDyMFoam/interPhaseChangeDyMFoam.C
index db6b7111d0b..5c05875e358 100644
--- a/applications/solvers/multiphase/interPhaseChangeFoam/interPhaseChangeDyMFoam/interPhaseChangeDyMFoam.C
+++ b/applications/solvers/multiphase/interPhaseChangeFoam/interPhaseChangeDyMFoam/interPhaseChangeDyMFoam.C
@@ -94,6 +94,12 @@ int main(int argc, char *argv[])
     while (runTime.run())
     {
         #include "../interFoam/interDyMFoam/readControls.H"
+
+        // Store divU from the previous mesh so that it can be mapped
+        // and used in correctPhi to ensure the corrected phi has the
+        // same divergence
+        volScalarField divU("divU0", fvc::div(fvc::absolute(phi, U)));
+
         #include "CourantNo.H"
         #include "setDeltaT.H"
 
@@ -106,9 +112,6 @@ int main(int argc, char *argv[])
         {
             if (pimple.firstIter() || moveMeshOuterCorrectors)
             {
-                // Store divU from the previous mesh for the correctPhi
-                volScalarField divU("divU0", fvc::div(fvc::absolute(phi, U)));
-
                 scalar timeBeforeMeshUpdate = runTime.elapsedCpuTime();
 
                 mesh.update();
-- 
GitLab