From d047107489c046cafd4dc90fd2e59b1315308417 Mon Sep 17 00:00:00 2001
From: Henry Weller <http://cfd.direct>
Date: Mon, 30 Nov 2015 16:29:10 +0000
Subject: [PATCH] chtMultiRegionFoam, chtMultiRegionSimpleFoam,
 buoyantPimpleFoam, buoyantSimpleFoam: Added support for hRef

---
 .../buoyantPimpleFoam/buoyantPimpleFoam.C     |  1 -
 .../buoyantPimpleFoam/createFields.H          |  8 ++-
 .../buoyantSimpleFoam/buoyantSimpleFoam.C     |  1 -
 .../buoyantSimpleFoam/createFields.H          |  7 ++-
 .../fluid/createFluidFields.H                 | 59 +++++++++++++++----
 .../fluid/createFluidFields.H                 | 59 +++++++++++++++----
 6 files changed, 103 insertions(+), 32 deletions(-)

diff --git a/applications/solvers/heatTransfer/buoyantPimpleFoam/buoyantPimpleFoam.C b/applications/solvers/heatTransfer/buoyantPimpleFoam/buoyantPimpleFoam.C
index cd254643b08..aec50069be2 100644
--- a/applications/solvers/heatTransfer/buoyantPimpleFoam/buoyantPimpleFoam.C
+++ b/applications/solvers/heatTransfer/buoyantPimpleFoam/buoyantPimpleFoam.C
@@ -51,7 +51,6 @@ int main(int argc, char *argv[])
 
     pimpleControl pimple(mesh);
 
-    #include "readGravitationalAcceleration.H"
     #include "createFields.H"
     #include "createMRF.H"
     #include "createFvOptions.H"
diff --git a/applications/solvers/heatTransfer/buoyantPimpleFoam/createFields.H b/applications/solvers/heatTransfer/buoyantPimpleFoam/createFields.H
index 977fb1542a5..8c6402f8f48 100644
--- a/applications/solvers/heatTransfer/buoyantPimpleFoam/createFields.H
+++ b/applications/solvers/heatTransfer/buoyantPimpleFoam/createFields.H
@@ -50,9 +50,11 @@ autoPtr<compressible::turbulenceModel> turbulence
     )
 );
 
-Info<< "Calculating field g.h\n" << endl;
-volScalarField gh("gh", g & mesh.C());
-surfaceScalarField ghf("ghf", g & mesh.Cf());
+
+#include "readGravitationalAcceleration.H"
+#include "readhRef.H"
+#include "gh.H"
+
 
 Info<< "Reading field p_rgh\n" << endl;
 volScalarField p_rgh
diff --git a/applications/solvers/heatTransfer/buoyantSimpleFoam/buoyantSimpleFoam.C b/applications/solvers/heatTransfer/buoyantSimpleFoam/buoyantSimpleFoam.C
index 403fb6fecd1..8950122e32d 100644
--- a/applications/solvers/heatTransfer/buoyantSimpleFoam/buoyantSimpleFoam.C
+++ b/applications/solvers/heatTransfer/buoyantSimpleFoam/buoyantSimpleFoam.C
@@ -48,7 +48,6 @@ int main(int argc, char *argv[])
 
     simpleControl simple(mesh);
 
-    #include "readGravitationalAcceleration.H"
     #include "createFields.H"
     #include "createMRF.H"
     #include "createFvOptions.H"
diff --git a/applications/solvers/heatTransfer/buoyantSimpleFoam/createFields.H b/applications/solvers/heatTransfer/buoyantSimpleFoam/createFields.H
index 37a76ba7c63..d7cf3eb704d 100644
--- a/applications/solvers/heatTransfer/buoyantSimpleFoam/createFields.H
+++ b/applications/solvers/heatTransfer/buoyantSimpleFoam/createFields.H
@@ -49,9 +49,10 @@ autoPtr<compressible::RASModel> turbulence
 );
 
 
-Info<< "Calculating field g.h\n" << endl;
-volScalarField gh("gh", g & mesh.C());
-surfaceScalarField ghf("ghf", g & mesh.Cf());
+#include "readGravitationalAcceleration.H"
+#include "readhRef.H"
+#include "gh.H"
+
 
 Info<< "Reading field p_rgh\n" << endl;
 volScalarField p_rgh
diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/createFluidFields.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/createFluidFields.H
index 1811878bd73..f3b0655405a 100644
--- a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/createFluidFields.H
+++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/createFluidFields.H
@@ -4,10 +4,11 @@ PtrList<volScalarField> rhoFluid(fluidRegions.size());
 PtrList<volVectorField> UFluid(fluidRegions.size());
 PtrList<surfaceScalarField> phiFluid(fluidRegions.size());
 PtrList<uniformDimensionedVectorField> gFluid(fluidRegions.size());
-PtrList<compressible::turbulenceModel> turbulence(fluidRegions.size());
-PtrList<volScalarField> p_rghFluid(fluidRegions.size());
+PtrList<uniformDimensionedScalarField> hRefFluid(fluidRegions.size());
 PtrList<volScalarField> ghFluid(fluidRegions.size());
 PtrList<surfaceScalarField> ghfFluid(fluidRegions.size());
+PtrList<compressible::turbulenceModel> turbulence(fluidRegions.size());
+PtrList<volScalarField> p_rghFluid(fluidRegions.size());
 PtrList<radiation::radiationModel> radiation(fluidRegions.size());
 
 List<scalar> initialMassFluid(fluidRegions.size());
@@ -107,31 +108,65 @@ forAll(fluidRegions, i)
         )
     );
 
-    Info<< "    Adding to turbulence\n" << endl;
-    turbulence.set
+    Info<< "    Adding to hRefFluid\n" << endl;
+    hRefFluid.set
     (
         i,
-        compressible::turbulenceModel::New
+        new uniformDimensionedScalarField
         (
-            rhoFluid[i],
-            UFluid[i],
-            phiFluid[i],
-            thermoFluid[i]
-        ).ptr()
+            IOobject
+            (
+                "hRef",
+                runTime.constant(),
+                fluidRegions[i],
+                IOobject::READ_IF_PRESENT,
+                IOobject::NO_WRITE
+            ),
+            dimensionedScalar("hRef", dimLength, 0)
+        )
+    );
+
+    dimensionedScalar ghRef
+    (
+        mag(gFluid[i].value()) > SMALL
+      ? gFluid[i]
+          & (cmptMag(gFluid[i].value())/mag(gFluid[i].value()))*hRefFluid[i]
+      : dimensionedScalar("ghRef", gFluid[i].dimensions()*dimLength, 0)
     );
 
     Info<< "    Adding to ghFluid\n" << endl;
     ghFluid.set
     (
         i,
-        new volScalarField("gh", gFluid[i] & fluidRegions[i].C())
+        new volScalarField
+        (
+            "gh",
+            (gFluid[i] & fluidRegions[i].C()) - ghRef
+        )
     );
 
     Info<< "    Adding to ghfFluid\n" << endl;
     ghfFluid.set
     (
         i,
-        new surfaceScalarField("ghf", gFluid[i] & fluidRegions[i].Cf())
+        new surfaceScalarField
+        (
+            "ghf",
+            (gFluid[i] & fluidRegions[i].Cf()) - ghRef
+        )
+    );
+
+    Info<< "    Adding to turbulence\n" << endl;
+    turbulence.set
+    (
+        i,
+        compressible::turbulenceModel::New
+        (
+            rhoFluid[i],
+            UFluid[i],
+            phiFluid[i],
+            thermoFluid[i]
+        ).ptr()
     );
 
     p_rghFluid.set
diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/createFluidFields.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/createFluidFields.H
index 2e665464832..2097833ed9d 100644
--- a/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/createFluidFields.H
+++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/createFluidFields.H
@@ -4,10 +4,11 @@ PtrList<volScalarField> rhoFluid(fluidRegions.size());
 PtrList<volVectorField> UFluid(fluidRegions.size());
 PtrList<surfaceScalarField> phiFluid(fluidRegions.size());
 PtrList<uniformDimensionedVectorField> gFluid(fluidRegions.size());
-PtrList<compressible::turbulenceModel> turbulence(fluidRegions.size());
-PtrList<volScalarField> p_rghFluid(fluidRegions.size());
+PtrList<uniformDimensionedScalarField> hRefFluid(fluidRegions.size());
 PtrList<volScalarField> ghFluid(fluidRegions.size());
 PtrList<surfaceScalarField> ghfFluid(fluidRegions.size());
+PtrList<compressible::turbulenceModel> turbulence(fluidRegions.size());
+PtrList<volScalarField> p_rghFluid(fluidRegions.size());
 PtrList<radiation::radiationModel> radiation(fluidRegions.size());
 PtrList<volScalarField> KFluid(fluidRegions.size());
 PtrList<volScalarField> dpdtFluid(fluidRegions.size());
@@ -104,31 +105,65 @@ forAll(fluidRegions, i)
         )
     );
 
-    Info<< "    Adding to turbulence\n" << endl;
-    turbulence.set
+    Info<< "    Adding to hRefFluid\n" << endl;
+    hRefFluid.set
     (
         i,
-        compressible::turbulenceModel::New
+        new uniformDimensionedScalarField
         (
-            rhoFluid[i],
-            UFluid[i],
-            phiFluid[i],
-            thermoFluid[i]
-        ).ptr()
+            IOobject
+            (
+                "hRef",
+                runTime.constant(),
+                fluidRegions[i],
+                IOobject::READ_IF_PRESENT,
+                IOobject::NO_WRITE
+            ),
+            dimensionedScalar("hRef", dimLength, 0)
+        )
+    );
+
+    dimensionedScalar ghRef
+    (
+        mag(gFluid[i].value()) > SMALL
+      ? gFluid[i]
+          & (cmptMag(gFluid[i].value())/mag(gFluid[i].value()))*hRefFluid[i]
+      : dimensionedScalar("ghRef", gFluid[i].dimensions()*dimLength, 0)
     );
 
     Info<< "    Adding to ghFluid\n" << endl;
     ghFluid.set
     (
         i,
-        new volScalarField("gh", gFluid[i] & fluidRegions[i].C())
+        new volScalarField
+        (
+            "gh",
+            (gFluid[i] & fluidRegions[i].C()) - ghRef
+        )
     );
 
     Info<< "    Adding to ghfFluid\n" << endl;
     ghfFluid.set
     (
         i,
-        new surfaceScalarField("ghf", gFluid[i] & fluidRegions[i].Cf())
+        new surfaceScalarField
+        (
+            "ghf",
+            (gFluid[i] & fluidRegions[i].Cf()) - ghRef
+        )
+    );
+
+    Info<< "    Adding to turbulence\n" << endl;
+    turbulence.set
+    (
+        i,
+        compressible::turbulenceModel::New
+        (
+            rhoFluid[i],
+            UFluid[i],
+            phiFluid[i],
+            thermoFluid[i]
+        ).ptr()
     );
 
     p_rghFluid.set
-- 
GitLab