From 34606f54b93b722637453dbda2b5f4c99447cf2c Mon Sep 17 00:00:00 2001
From: Andrew Heather <a.heather@opencfd.co.uk>
Date: Fri, 1 Jun 2018 15:39:28 +0100
Subject: [PATCH] COMP: Updated createDpDt for moving meshes

---
 .../dynamicFvMesh/dynamicFvMeshNew.C          | 11 ++--
 src/engine/engineMesh/engineMesh/engineMesh.H | 12 +++--
 .../cfdTools/compressible/createDpdt.H        | 51 ++++++++-----------
 3 files changed, 33 insertions(+), 41 deletions(-)

diff --git a/src/dynamicFvMesh/dynamicFvMesh/dynamicFvMeshNew.C b/src/dynamicFvMesh/dynamicFvMesh/dynamicFvMeshNew.C
index a5ea250e1fa..ce86e1d3dcb 100644
--- a/src/dynamicFvMesh/dynamicFvMesh/dynamicFvMeshNew.C
+++ b/src/dynamicFvMesh/dynamicFvMesh/dynamicFvMeshNew.C
@@ -49,9 +49,9 @@ Foam::autoPtr<Foam::dynamicFvMesh> Foam::dynamicFvMesh::New(const IOobject& io)
     {
         IOdictionary dict(dictHeader);
 
-        const word dynamicFvMeshTypeName(dict.lookup("dynamicFvMesh"));
+        const word modelType(dict.lookup("dynamicFvMesh"));
 
-        Info<< "Selecting dynamicFvMesh " << dynamicFvMeshTypeName << endl;
+        Info<< "Selecting dynamicFvMesh " << modelType << endl;
 
         const_cast<Time&>(io.time()).libs().open
         (
@@ -67,25 +67,22 @@ Foam::autoPtr<Foam::dynamicFvMesh> Foam::dynamicFvMesh::New(const IOobject& io)
                 << exit(FatalError);
         }
 
-        auto cstrIter =
-            IOobjectConstructorTablePtr_->cfind(dynamicFvMeshTypeName);
+        auto cstrIter = IOobjectConstructorTablePtr_->cfind(modelType);
 
         if (!cstrIter.found())
         {
             FatalIOErrorInFunction(dict)
                 << "Unknown dynamicFvMesh type "
-                << dynamicFvMeshTypeName << nl << nl
+                << modelType << nl << nl
                 << "Valid dynamicFvMesh types are :" << endl
                 << IOobjectConstructorTablePtr_->sortedToc()
                 << exit(FatalIOError);
         }
 
-        #define MOVING_MESH
         return autoPtr<dynamicFvMesh>(cstrIter()(io));
     }
 
 
-    #undef MOVING_MESH
     return autoPtr<dynamicFvMesh>(new staticFvMesh(io));
 }
 
diff --git a/src/engine/engineMesh/engineMesh/engineMesh.H b/src/engine/engineMesh/engineMesh/engineMesh.H
index d9fdf359ef8..3d6f89c3c32 100644
--- a/src/engine/engineMesh/engineMesh/engineMesh.H
+++ b/src/engine/engineMesh/engineMesh/engineMesh.H
@@ -40,15 +40,13 @@ SourceFiles
 #include "autoPtr.H"
 #include "runTimeSelectionTables.H"
 
-#define MOVING_MESH
-
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-                           Class engineMesh Declaration
+                         Class engineMesh Declaration
 \*---------------------------------------------------------------------------*/
 
 class engineMesh
@@ -114,9 +112,13 @@ public:
 
     // Member Functions
 
-        // Edit
+        //- Is mesh dynamic
+        virtual bool dynamic() const
+        {
+            return true;
+        }
 
-            virtual void move() = 0;
+        virtual void move() = 0;
 };
 
 
diff --git a/src/finiteVolume/cfdTools/compressible/createDpdt.H b/src/finiteVolume/cfdTools/compressible/createDpdt.H
index 0d74762fd05..aabc296ae09 100644
--- a/src/finiteVolume/cfdTools/compressible/createDpdt.H
+++ b/src/finiteVolume/cfdTools/compressible/createDpdt.H
@@ -1,36 +1,29 @@
-#if defined(MOVING_MESH)
+IOobject dpdtHeader
+(
+    "dpdt",
+    runTime.timeName(),
+    mesh,
+    IOobject::NO_READ,
+    IOobject::NO_WRITE
+);
+
+if (mesh.dynamic())
+{
     Info<< "Creating field dpdt for moving meshes\n" << endl;
 
-    // Note: set to read if present and auto write to simplify dpdt correction
-    // by meshPhi
-    volScalarField dpdt
-    (
-        IOobject
-        (
-            "dpdt",
-            runTime.timeName(),
-            mesh,
-            IOobject::READ_IF_PRESENT,
-            IOobject::AUTO_WRITE
-        ),
-        fvc::ddt(p)
-    );
-#else
+    // Note
+    // - set to READ_IF_PRESENT and AUTO_WRITE to simplify dpdt correction
+    //   by meshPhi
+    
+    dpdtHeader.readOpt() = IOobject::READ_IF_PRESENT;
+    dpdtHeader.writeOpt() = IOobject::AUTO_WRITE;
+}
+else
+{
     Info<< "Creating field dpdt\n" << endl;
+}
 
-    volScalarField dpdt
-    (
-        IOobject
-        (
-            "dpdt",
-            runTime.timeName(),
-            mesh,
-            IOobject::NO_READ,
-            IOobject::NO_WRITE
-        ),
-        fvc::ddt(p)
-    );
-#endif
+volScalarField dpdt(dpdtHeader, fvc::ddt(p));
 
 if (!thermo.dpdt())
 {
-- 
GitLab