From f8ae2453dfaf1cf80b7a10e3c95f5378142e4c3f Mon Sep 17 00:00:00 2001
From: Henry <Henry>
Date: Tue, 2 Nov 2010 18:57:39 +0000
Subject: [PATCH] chtMultiRegionFoam: updated thermodynamics

---
 .../chtMultiRegionFoam/chtMultiRegionFoam.C   |   4 +-
 .../chtMultiRegionSimpleFoam.C                |   2 +-
 .../fluid/createFluidFields.H                 |   4 +-
 .../chtMultiRegionSimpleFoam/fluid/pEqn.H     |  15 +-
 .../fluid/setRegionFluidFields.H              |   2 +-
 .../fluid/compressibleCourantNo.C             |   7 +-
 .../fluid/createFluidFields.H                 |   4 +-
 .../chtMultiRegionFoam/fluid/pEqn.H           |  54 ++++--
 .../fluid/setRegionFluidFields.H              |   2 +-
 .../solid/readSolidMultiRegionPISOControls.H  |   5 -
 .../interFoam/LTSInterFoam/setrDeltaT.H       |  11 +-
 .../mixtures/basicMixture/basicMixtures.C     |  19 ++
 .../mixtures/basicMixture/makeBasicMixture.H  |  24 +++
 .../basicRhoThermo/makeBasicRhoThermo.H       |  33 ++++
 .../basic/rhoThermo/hRhoThermo/hRhoThermos.C  |  20 ++
 src/thermophysicalModels/specie/Make/files    |   1 +
 .../chtMultiRegionFoam/multiRegionHeater/0/T  |   1 +
 .../chtMultiRegionFoam/multiRegionHeater/0/U  |   1 +
 .../multiRegionHeater/0/epsilon               |   1 +
 .../chtMultiRegionFoam/multiRegionHeater/0/k  |   1 +
 .../chtMultiRegionFoam/multiRegionHeater/0/p  |   1 +
 .../multiRegionHeater/0/p_rgh                 |   1 +
 .../bottomAir/thermophysicalProperties        |   2 +-
 .../constant/polyMesh/boundary                |   2 +-
 .../constant/topAir/thermophysicalProperties  |   2 +-
 .../system/bottomAir/fvSolution               |  28 +--
 .../system/heater/fvSolution                  |   6 +-
 .../system/leftSolid/fvSolution               |   6 +-
 .../system/rightSolid/fvSolution              |   6 +-
 .../system/topAir/fvSolution                  |  12 +-
 .../multiRegionLiquidHeater/0/T               |  30 +++
 .../multiRegionLiquidHeater/0/U               |  30 +++
 .../multiRegionLiquidHeater/0/epsilon         |  31 ++++
 .../multiRegionLiquidHeater/0/k               |  31 ++++
 .../multiRegionLiquidHeater/0/p               |  30 +++
 .../multiRegionLiquidHeater/0/p_rgh           |  30 +++
 .../multiRegionLiquidHeater/Allclean          |  22 +++
 .../multiRegionLiquidHeater/Allrun            |  57 ++++++
 .../constant/bottomWater/RASProperties        |  24 +++
 .../constant/bottomWater/g                    |  20 ++
 .../bottomWater/thermophysicalProperties      |  31 ++++
 .../constant/bottomWater/turbulenceProperties |  19 ++
 .../heater/solidThermophysicalProperties      |  76 ++++++++
 .../leftSolid/solidThermophysicalProperties   |   1 +
 .../constant/polyMesh/blockMeshDict           |  72 ++++++++
 .../constant/polyMesh/boundary                |  58 ++++++
 .../constant/regionProperties                 |  22 +++
 .../rightSolid/solidThermophysicalProperties  |   1 +
 .../constant/topAir/RASProperties             |  24 +++
 .../multiRegionLiquidHeater/constant/topAir/g |  20 ++
 .../constant/topAir/thermophysicalProperties  |  31 ++++
 .../constant/topAir/turbulenceProperties      |  19 ++
 .../makeCellSets.setSet                       |  16 ++
 .../system/bottomWater/changeDictionaryDict   | 173 ++++++++++++++++++
 .../bottomWater/changeDictionaryDict.save     | 124 +++++++++++++
 .../system/bottomWater/decomposeParDict       |  86 +++++++++
 .../system/bottomWater/fvSchemes              |  67 +++++++
 .../system/bottomWater/fvSolution             |  84 +++++++++
 .../system/controlDict                        |  62 +++++++
 .../system/decomposeParDict                   |  86 +++++++++
 .../multiRegionLiquidHeater/system/fvSchemes  |  46 +++++
 .../multiRegionLiquidHeater/system/fvSolution |  22 +++
 .../system/heater/changeDictionaryDict        |  64 +++++++
 .../system/heater/decomposeParDict            |  86 +++++++++
 .../system/heater/fvSchemes                   |  53 ++++++
 .../system/heater/fvSolution                  |  44 +++++
 .../system/leftSolid/changeDictionaryDict     |  54 ++++++
 .../system/leftSolid/decomposeParDict         |  86 +++++++++
 .../system/leftSolid/fvSchemes                |  53 ++++++
 .../system/leftSolid/fvSolution               |  44 +++++
 .../system/rightSolid/changeDictionaryDict    |  54 ++++++
 .../system/rightSolid/decomposeParDict        |  86 +++++++++
 .../system/rightSolid/fvSchemes               |  53 ++++++
 .../system/rightSolid/fvSolution              |  44 +++++
 .../system/topAir/changeDictionaryDict        | 172 +++++++++++++++++
 .../system/topAir/decomposeParDict            |  86 +++++++++
 .../system/topAir/fvSchemes                   |  67 +++++++
 .../system/topAir/fvSolution                  |  86 +++++++++
 .../snappyMultiRegionHeater/0/T               |   1 +
 .../snappyMultiRegionHeater/0/U               |   1 +
 .../snappyMultiRegionHeater/0/alphat          |   1 +
 .../snappyMultiRegionHeater/0/epsilon         |   1 +
 .../snappyMultiRegionHeater/0/k               |   1 +
 .../snappyMultiRegionHeater/0/p               |   1 +
 .../snappyMultiRegionHeater/0/p_rgh           |   1 +
 .../snappyMultiRegionHeater/0/rho             |   1 +
 .../system/bottomAir/fvSolution               |  10 -
 .../system/heater/fvSolution                  |   6 +-
 .../system/leftSolid/fvSolution               |   5 -
 .../system/rightSolid/fvSolution              |   5 -
 .../system/topAir/fvSolution                  |  10 -
 91 files changed, 2765 insertions(+), 133 deletions(-)
 delete mode 100644 applications/solvers/heatTransfer/chtMultiRegionFoam/solid/readSolidMultiRegionPISOControls.H
 create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/0/T
 create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/0/U
 create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/0/epsilon
 create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/0/k
 create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/0/p
 create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/0/p_rgh
 create mode 100755 tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/Allclean
 create mode 100755 tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/Allrun
 create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/constant/bottomWater/RASProperties
 create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/constant/bottomWater/g
 create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/constant/bottomWater/thermophysicalProperties
 create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/constant/bottomWater/turbulenceProperties
 create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/constant/heater/solidThermophysicalProperties
 create mode 120000 tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/constant/leftSolid/solidThermophysicalProperties
 create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/constant/polyMesh/blockMeshDict
 create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/constant/polyMesh/boundary
 create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/constant/regionProperties
 create mode 120000 tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/constant/rightSolid/solidThermophysicalProperties
 create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/constant/topAir/RASProperties
 create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/constant/topAir/g
 create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/constant/topAir/thermophysicalProperties
 create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/constant/topAir/turbulenceProperties
 create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/makeCellSets.setSet
 create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/bottomWater/changeDictionaryDict
 create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/bottomWater/changeDictionaryDict.save
 create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/bottomWater/decomposeParDict
 create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/bottomWater/fvSchemes
 create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/bottomWater/fvSolution
 create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/controlDict
 create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/decomposeParDict
 create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/fvSchemes
 create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/fvSolution
 create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/heater/changeDictionaryDict
 create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/heater/decomposeParDict
 create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/heater/fvSchemes
 create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/heater/fvSolution
 create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/leftSolid/changeDictionaryDict
 create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/leftSolid/decomposeParDict
 create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/leftSolid/fvSchemes
 create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/leftSolid/fvSolution
 create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/rightSolid/changeDictionaryDict
 create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/rightSolid/decomposeParDict
 create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/rightSolid/fvSchemes
 create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/rightSolid/fvSolution
 create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/topAir/changeDictionaryDict
 create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/topAir/decomposeParDict
 create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/topAir/fvSchemes
 create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/topAir/fvSolution

diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionFoam.C b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionFoam.C
index 36b3f1c3b0f..0f9ff2f7f2a 100644
--- a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionFoam.C
+++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionFoam.C
@@ -31,7 +31,7 @@ Description
 \*---------------------------------------------------------------------------*/
 
 #include "fvCFD.H"
-#include "basicPsiThermo.H"
+#include "basicRhoThermo.H"
 #include "turbulenceModel.H"
 #include "fixedGradientFvPatchFields.H"
 #include "regionProperties.H"
@@ -121,7 +121,7 @@ int main(int argc, char *argv[])
             << nl << endl;
     }
 
-    Info << "End\n" << endl;
+    Info<< "End\n" << endl;
 
     return 0;
 }
diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/chtMultiRegionSimpleFoam.C b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/chtMultiRegionSimpleFoam.C
index 17c4b5386c5..0c590f781b1 100644
--- a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/chtMultiRegionSimpleFoam.C
+++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/chtMultiRegionSimpleFoam.C
@@ -30,7 +30,7 @@ Description
 \*---------------------------------------------------------------------------*/
 
 #include "fvCFD.H"
-#include "basicPsiThermo.H"
+#include "basicRhoThermo.H"
 #include "turbulenceModel.H"
 #include "fixedGradientFvPatchFields.H"
 #include "regionProperties.H"
diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/createFluidFields.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/createFluidFields.H
index 167484a7c73..75191acff96 100644
--- a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/createFluidFields.H
+++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/createFluidFields.H
@@ -1,5 +1,5 @@
     // Initialise fluid field pointer lists
-    PtrList<basicPsiThermo> thermoFluid(fluidRegions.size());
+    PtrList<basicRhoThermo> thermoFluid(fluidRegions.size());
     PtrList<volScalarField> rhoFluid(fluidRegions.size());
     PtrList<volScalarField> KFluid(fluidRegions.size());
     PtrList<volVectorField> UFluid(fluidRegions.size());
@@ -28,7 +28,7 @@
         thermoFluid.set
         (
             i,
-            basicPsiThermo::New(fluidRegions[i]).ptr()
+            basicRhoThermo::New(fluidRegions[i]).ptr()
         );
 
         Info<< "    Adding to rhoFluid\n" << endl;
diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/pEqn.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/pEqn.H
index b0cbbf80bf9..2f339b87d7c 100644
--- a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/pEqn.H
+++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/pEqn.H
@@ -1,5 +1,4 @@
 {
-    // From buoyantSimpleFoam
     rho = thermo.rho();
     rho = max(rho, rhoMin[i]);
     rho = min(rho, rhoMax[i]);
@@ -13,6 +12,8 @@
 
     phi = fvc::interpolate(rho)*(fvc::interpolate(U) & mesh.Sf());
     bool closedVolume = adjustPhi(phi, U, p_rgh);
+    dimensionedScalar compressibility = fvc::domainIntegrate(psi);
+    bool compressible = (compressibility.value() > SMALL);
 
     surfaceScalarField buoyancyPhi = rhorAUf*ghf*fvc::snGrad(rho)*mesh.magSf();
     phi -= buoyancyPhi;
@@ -25,7 +26,11 @@
             fvm::laplacian(rhorAUf, p_rgh) == fvc::div(phi)
         );
 
-        p_rghEqn.setReference(pRefCell, getRefCellValue(p_rgh, pRefCell));
+        p_rghEqn.setReference
+        (
+            pRefCell,
+            compressible ? getRefCellValue(p_rgh, pRefCell) : pRefValue
+        );
 
         p_rghEqn.solve();
 
@@ -50,10 +55,10 @@
 
     // For closed-volume cases adjust the pressure level
     // to obey overall mass continuity
-    if (closedVolume)
+    if (closedVolume && compressible)
     {
-        p += (initialMass - fvc::domainIntegrate(psi*p))
-            /fvc::domainIntegrate(psi);
+        p += (initialMass - fvc::domainIntegrate(thermo.rho()))
+            /compressibility;
         p_rgh = p - rho*gh;
     }
 
diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/setRegionFluidFields.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/setRegionFluidFields.H
index cac7750e972..754f67c52cf 100644
--- a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/setRegionFluidFields.H
+++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/setRegionFluidFields.H
@@ -1,6 +1,6 @@
     const fvMesh& mesh = fluidRegions[i];
 
-    basicPsiThermo& thermo = thermoFluid[i];
+    basicRhoThermo& thermo = thermoFluid[i];
     volScalarField& rho = rhoFluid[i];
     volScalarField& K = KFluid[i];
     volVectorField& U = UFluid[i];
diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/compressibleCourantNo.C b/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/compressibleCourantNo.C
index 8895151817d..606cd811ea9 100644
--- a/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/compressibleCourantNo.C
+++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/compressibleCourantNo.C
@@ -34,16 +34,13 @@ Foam::scalar Foam::compressibleCourantNo
     const surfaceScalarField& phi
 )
 {
-    scalar CoNum = 0.0;
-    scalar meanCoNum = 0.0;
-
     scalarField sumPhi =
         fvc::surfaceSum(mag(phi))().internalField()
        /rho.internalField();
 
-    CoNum = 0.5*gMax(sumPhi/mesh.V().field())*runTime.deltaTValue();
+    scalar CoNum = 0.5*gMax(sumPhi/mesh.V().field())*runTime.deltaTValue();
 
-    meanCoNum =
+    scalar meanCoNum =
         0.5*(gSum(sumPhi)/gSum(mesh.V().field()))*runTime.deltaTValue();
 
     Info<< "Region: " << mesh.name() << " Courant Number mean: " << meanCoNum
diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/createFluidFields.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/createFluidFields.H
index b0a7f95912f..012426af6a7 100644
--- a/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/createFluidFields.H
+++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/createFluidFields.H
@@ -1,5 +1,5 @@
     // Initialise fluid field pointer lists
-    PtrList<basicPsiThermo> thermoFluid(fluidRegions.size());
+    PtrList<basicRhoThermo> thermoFluid(fluidRegions.size());
     PtrList<volScalarField> rhoFluid(fluidRegions.size());
     PtrList<volScalarField> KFluid(fluidRegions.size());
     PtrList<volVectorField> UFluid(fluidRegions.size());
@@ -23,7 +23,7 @@
         thermoFluid.set
         (
             i,
-            basicPsiThermo::New(fluidRegions[i]).ptr()
+            basicRhoThermo::New(fluidRegions[i]).ptr()
         );
 
         Info<< "    Adding to rhoFluid\n" << endl;
diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/pEqn.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/pEqn.H
index 686a8edceef..854dc9e2cc3 100644
--- a/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/pEqn.H
+++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/pEqn.H
@@ -1,5 +1,7 @@
 {
     bool closedVolume = p_rgh.needReference();
+    dimensionedScalar compressibility = fvc::domainIntegrate(psi);
+    bool compressible = (compressibility.value() > SMALL);
 
     rho = thermo.rho();
 
@@ -19,34 +21,48 @@
 
     phi = phiU - rhorAUf*ghf*fvc::snGrad(rho)*mesh.magSf();
 
-    for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
     {
-        fvScalarMatrix p_rghEqn
+        fvScalarMatrix p_rghDDtEqn
         (
-            fvm::ddt(psi, p_rgh) + fvc::ddt(psi, rho)*gh
+            fvc::ddt(rho) + psi*correction(fvm::ddt(p_rgh))
           + fvc::div(phi)
-          - fvm::laplacian(rhorAUf, p_rgh)
         );
 
-        p_rghEqn.solve
-        (
-            mesh.solver
+        // Thermodynamic density needs to be updated by psi*d(p) after the
+        // pressure solution - done in 2 parts. Part 1:
+        thermo.rho() -= psi*p_rgh;
+
+        for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
+        {
+            fvScalarMatrix p_rghEqn
+            (
+                p_rghDDtEqn
+              - fvm::laplacian(rhorAUf, p_rgh)
+            );
+
+            p_rghEqn.solve
             (
-                p_rgh.select
+                mesh.solver
                 (
+                    p_rgh.select
                     (
-                        oCorr == nOuterCorr-1
-                     && corr == nCorr-1
-                     && nonOrth == nNonOrthCorr
+                        (
+                           oCorr == nOuterCorr-1
+                        && corr == nCorr-1
+                        && nonOrth == nNonOrthCorr
+                        )
                     )
                 )
-            )
-        );
+            );
 
-        if (nonOrth == nNonOrthCorr)
-        {
-            phi += p_rghEqn.flux();
+            if (nonOrth == nNonOrthCorr)
+            {
+                phi += p_rghEqn.flux();
+            }
         }
+
+        // Second part of thermodynamic density update
+        thermo.rho() += psi*p_rgh;
     }
 
     // Correct velocity field
@@ -66,10 +82,10 @@
 
     // For closed-volume cases adjust the pressure and density levels
     // to obey overall mass continuity
-    if (closedVolume)
+    if (closedVolume && compressible)
     {
-        p += (initialMass - fvc::domainIntegrate(psi*p))
-            /fvc::domainIntegrate(psi);
+        p += (initialMass - fvc::domainIntegrate(thermo.rho()))
+            /compressibility;
         rho = thermo.rho();
         p_rgh = p - rho*gh;
     }
diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/setRegionFluidFields.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/setRegionFluidFields.H
index 89aaec4737e..9cb2450952a 100644
--- a/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/setRegionFluidFields.H
+++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/setRegionFluidFields.H
@@ -1,6 +1,6 @@
     fvMesh& mesh = fluidRegions[i];
 
-    basicPsiThermo& thermo = thermoFluid[i];
+    basicRhoThermo& thermo = thermoFluid[i];
     volScalarField& rho = rhoFluid[i];
     volScalarField& K = KFluid[i];
     volVectorField& U = UFluid[i];
diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/readSolidMultiRegionPISOControls.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/readSolidMultiRegionPISOControls.H
deleted file mode 100644
index 0c965a8322a..00000000000
--- a/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/readSolidMultiRegionPISOControls.H
+++ /dev/null
@@ -1,5 +0,0 @@
-    const dictionary& piso = solidRegions[i].solutionDict().subDict("PISO");
-
-    const int nNonOrthCorr =
-        piso.lookupOrDefault<int>("nNonOrthogonalCorrectors", 0);
-
diff --git a/applications/solvers/multiphase/interFoam/LTSInterFoam/setrDeltaT.H b/applications/solvers/multiphase/interFoam/LTSInterFoam/setrDeltaT.H
index be8068c288b..e84eef10237 100644
--- a/applications/solvers/multiphase/interFoam/LTSInterFoam/setrDeltaT.H
+++ b/applications/solvers/multiphase/interFoam/LTSInterFoam/setrDeltaT.H
@@ -103,7 +103,7 @@
         fvc::sweep(rDeltaT, alpha1, nAlphaSweepIter, alphaSpreadDiff);
     }
 
-    Info<< "Flow time scale min/max = "
+    Info<< "Smoothed flow time scale min/max = "
         << gMin(1/rDeltaT.internalField())
         << ", " << gMax(1/rDeltaT.internalField()) << endl;
 
@@ -116,13 +116,12 @@
      && runTime.timeIndex() > runTime.startTimeIndex() + 1
     )
     {
-        Info<< "Damping rDeltaT" << endl;
         rDeltaT = rDeltaT0*max(rDeltaT/rDeltaT0, 1.0 - rDeltaTDampingCoeff);
-    }
 
-    Info<< "Flow time scale min/max = "
-        << gMin(1/rDeltaT.internalField())
-        << ", " << gMax(1/rDeltaT.internalField()) << endl;
+        Info<< "Damped flow time scale min/max = "
+            << gMin(1/rDeltaT.internalField())
+            << ", " << gMax(1/rDeltaT.internalField()) << endl;
+    }
 
     label nAlphaSubCycles
     (
diff --git a/src/thermophysicalModels/basic/mixtures/basicMixture/basicMixtures.C b/src/thermophysicalModels/basic/mixtures/basicMixture/basicMixtures.C
index 67170d73e9b..5e0dbd88aea 100644
--- a/src/thermophysicalModels/basic/mixtures/basicMixture/basicMixtures.C
+++ b/src/thermophysicalModels/basic/mixtures/basicMixture/basicMixtures.C
@@ -32,6 +32,7 @@ Description
 #include "makeBasicMixture.H"
 
 #include "perfectGas.H"
+#include "incompressible.H"
 
 #include "eConstThermo.H"
 
@@ -42,6 +43,10 @@ Description
 #include "constTransport.H"
 #include "sutherlandTransport.H"
 
+#include "icoPolynomial.H"
+#include "hPolynomialThermo.H"
+#include "polynomialTransport.H"
+
 #include "pureMixture.H"
 
 #include "addToRunTimeSelectionTable.H"
@@ -94,6 +99,20 @@ makeBasicMixture
     perfectGas
 );
 
+makeBasicMixture
+(
+    pureMixture,
+    constTransport,
+    hConstThermo,
+    incompressible
+);
+
+makeBasicPolyMixture
+(
+    pureMixture,
+    3
+);
+
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 } // End namespace Foam
diff --git a/src/thermophysicalModels/basic/mixtures/basicMixture/makeBasicMixture.H b/src/thermophysicalModels/basic/mixtures/basicMixture/makeBasicMixture.H
index 5fa2840a843..c2895464771 100644
--- a/src/thermophysicalModels/basic/mixtures/basicMixture/makeBasicMixture.H
+++ b/src/thermophysicalModels/basic/mixtures/basicMixture/makeBasicMixture.H
@@ -44,6 +44,30 @@ defineTemplateTypeNameAndDebugWithName                                        \
     (Mixture##Transport##Thermo##EqnOfState,                                  \
     #Mixture"<"#Transport"<specieThermo<"#Thermo"<"#EqnOfState">>>>", 0)
 
+
+#define makeBasicPolyMixture(Mixture,Order)                                   \
+                                                                              \
+typedef polynomialTransport                                                   \
+<                                                                             \
+    specieThermo                                                              \
+    <                                                                         \
+        hPolynomialThermo                                                     \
+        <                                                                     \
+            icoPolynomial<Order>,                                             \
+            Order                                                             \
+            >                                                                 \
+    >,                                                                        \
+    Order                                                                     \
+> icoPoly##Order##ThermoPhysics;                                              \
+                                                                              \
+typedef Mixture<icoPoly##Order##ThermoPhysics>                                \
+    Mixture##icoPoly##Order##ThermoPhysics;                                   \
+                                                                              \
+defineTemplateTypeNameAndDebugWithName                                        \
+    (Mixture##icoPoly##Order##ThermoPhysics,                                  \
+    #Mixture"<icoPoly"#Order"ThermoPhysics>", 0)
+
+
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 #endif
diff --git a/src/thermophysicalModels/basic/rhoThermo/basicRhoThermo/makeBasicRhoThermo.H b/src/thermophysicalModels/basic/rhoThermo/basicRhoThermo/makeBasicRhoThermo.H
index 40e5d0d1a13..833778f8d2d 100644
--- a/src/thermophysicalModels/basic/rhoThermo/basicRhoThermo/makeBasicRhoThermo.H
+++ b/src/thermophysicalModels/basic/rhoThermo/basicRhoThermo/makeBasicRhoThermo.H
@@ -58,6 +58,39 @@ addToRunTimeSelectionTable                                                    \
 )
 
 
+#define makeBasicRhoPolyThermo(Cthermo,Mixture,Order)                         \
+                                                                              \
+typedef polynomialTransport                                                   \
+<                                                                             \
+    specieThermo                                                              \
+    <                                                                         \
+        hPolynomialThermo                                                     \
+        <                                                                     \
+            icoPolynomial<Order>,                                             \
+            Order                                                             \
+            >                                                                 \
+    >,                                                                        \
+    Order                                                                     \
+> icoPoly##Order##ThermoPhysics;                                              \
+                                                                              \
+typedef Cthermo<Mixture<icoPoly##Order##ThermoPhysics> >                      \
+    Cthermo##Mixture##icoPoly##Order##ThermoPhysics;                          \
+                                                                              \
+defineTemplateTypeNameAndDebugWithName                                        \
+(                                                                             \
+    Cthermo##Mixture##icoPoly##Order##ThermoPhysics,                          \
+    #Cthermo"<"#Mixture"<icoPoly"#Order"ThermoPhysics>>",                     \
+    0                                                                         \
+);                                                                            \
+                                                                              \
+addToRunTimeSelectionTable                                                    \
+(                                                                             \
+    basicRhoThermo,                                                           \
+    Cthermo##Mixture##icoPoly##Order##ThermoPhysics,                          \
+    fvMesh                                                                    \
+)
+
+
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 #endif
diff --git a/src/thermophysicalModels/basic/rhoThermo/hRhoThermo/hRhoThermos.C b/src/thermophysicalModels/basic/rhoThermo/hRhoThermo/hRhoThermos.C
index 965a8a0b78c..3a8f715be6f 100644
--- a/src/thermophysicalModels/basic/rhoThermo/hRhoThermo/hRhoThermos.C
+++ b/src/thermophysicalModels/basic/rhoThermo/hRhoThermo/hRhoThermos.C
@@ -26,6 +26,7 @@ License
 #include "makeBasicRhoThermo.H"
 
 #include "perfectGas.H"
+#include "incompressible.H"
 
 #include "hConstThermo.H"
 #include "janafThermo.H"
@@ -34,6 +35,10 @@ License
 #include "constTransport.H"
 #include "sutherlandTransport.H"
 
+#include "icoPolynomial.H"
+#include "hPolynomialThermo.H"
+#include "polynomialTransport.H"
+
 #include "hRhoThermo.H"
 #include "pureMixture.H"
 
@@ -71,6 +76,21 @@ makeBasicRhoThermo
     perfectGas
 );
 
+makeBasicRhoThermo
+(
+    hRhoThermo,
+    pureMixture,
+    constTransport,
+    hConstThermo,
+    incompressible
+);
+
+makeBasicRhoPolyThermo
+(
+    hRhoThermo,
+    pureMixture,
+    3
+);
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
diff --git a/src/thermophysicalModels/specie/Make/files b/src/thermophysicalModels/specie/Make/files
index 0e0eacae894..2be4ebfff18 100644
--- a/src/thermophysicalModels/specie/Make/files
+++ b/src/thermophysicalModels/specie/Make/files
@@ -6,6 +6,7 @@ reactions = reaction/reactions
 $(atomicWeights)/atomicWeights.C
 $(specie)/specie.C
 $(equationOfState)/perfectGas/perfectGas.C
+$(equationOfState)/incompressible/incompressible.C
 $(reactions)/makeChemkinReactions.C
 $(reactions)/makeReactionThermoReactions.C
 $(reactions)/makeLangmuirHinshelwoodReactions.C
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/0/T b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/0/T
index b1ac0594dee..fe4d75bd0f4 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/0/T
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/0/T
@@ -23,6 +23,7 @@ boundaryField
     ".*"
     {
         type            calculated;
+        value           uniform 300;
     }
 }
 
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/0/U b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/0/U
index 62058ec7acf..ef547fb0d3b 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/0/U
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/0/U
@@ -23,6 +23,7 @@ boundaryField
     ".*"
     {
         type            calculated;
+        value           uniform (0.01 0 0);
     }
 }
 
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/0/epsilon b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/0/epsilon
index f4e27ad95fb..4df5689c01b 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/0/epsilon
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/0/epsilon
@@ -23,6 +23,7 @@ boundaryField
     ".*"
     {
         type            calculated;
+        value           uniform 0.01;
     }
 }
 
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/0/k b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/0/k
index b2509f96707..51b012e11c3 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/0/k
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/0/k
@@ -23,6 +23,7 @@ boundaryField
     ".*"
     {
         type            calculated;
+        value           uniform 0.1;
     }
 }
 
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/0/p b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/0/p
index 66e0be0a837..958a40ff27c 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/0/p
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/0/p
@@ -23,6 +23,7 @@ boundaryField
     ".*"
     {
         type            calculated;
+        value           uniform 1e5;
     }
 }
 
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/0/p_rgh b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/0/p_rgh
index 638c8c7d7cd..6baa60c260d 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/0/p_rgh
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/0/p_rgh
@@ -23,6 +23,7 @@ boundaryField
     ".*"
     {
         type            calculated;
+        value           uniform 1e5;
     }
 }
 
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/constant/bottomAir/thermophysicalProperties b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/constant/bottomAir/thermophysicalProperties
index be6c8895fda..1c4488eb5e0 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/constant/bottomAir/thermophysicalProperties
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/constant/bottomAir/thermophysicalProperties
@@ -15,7 +15,7 @@ FoamFile
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-thermoType      hPsiThermo<pureMixture<constTransport<specieThermo<hConstThermo<perfectGas>>>>>;
+thermoType      hRhoThermo<pureMixture<constTransport<specieThermo<hConstThermo<perfectGas>>>>>;
 
 mixture
 {
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/constant/polyMesh/boundary b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/constant/polyMesh/boundary
index 39c75e0d212..de3fd42a4d8 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/constant/polyMesh/boundary
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/constant/polyMesh/boundary
@@ -8,7 +8,7 @@
 FoamFile
 {
     version     2.0;
-    format      ascii;
+    format      binary;
     class       polyBoundaryMesh;
     location    "constant/polyMesh";
     object      boundary;
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/constant/topAir/thermophysicalProperties b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/constant/topAir/thermophysicalProperties
index 972acfc40c5..7f67791ae58 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/constant/topAir/thermophysicalProperties
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/constant/topAir/thermophysicalProperties
@@ -15,7 +15,7 @@ FoamFile
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-thermoType      hPsiThermo<pureMixture<constTransport<specieThermo<hConstThermo<perfectGas>>>>>;
+thermoType      hRhoThermo<pureMixture<constTransport<specieThermo<hConstThermo<perfectGas>>>>>;
 
 mixture
 {
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/bottomAir/fvSolution b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/bottomAir/fvSolution
index 036a4b0cb07..ff9e0490c68 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/bottomAir/fvSolution
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/bottomAir/fvSolution
@@ -20,21 +20,21 @@ solvers
     {
         solver          PCG;
         preconditioner  DIC;
-        tolerance       1e-8;
+        tolerance       1e-7;
         relTol          0.1;
     }
 
     rhoFinal
     {
         $rho;
-        tolerance       1e-8;
+        tolerance       1e-7;
         relTol          0;
     }
 
     p_rgh
     {
         solver           GAMG;
-        tolerance        1e-8;
+        tolerance        1e-7;
         relTol           0.01;
 
         smoother         GaussSeidel;
@@ -48,7 +48,7 @@ solvers
     p_rghFinal
     {
         $p_rgh;
-        tolerance        1e-8;
+        tolerance        1e-7;
         relTol           0;
     }
 
@@ -56,29 +56,18 @@ solvers
     {
         solver           PBiCG;
         preconditioner   DILU;
-        tolerance        1e-08;
+        tolerance        1e-7;
         relTol           0.1;
     }
 
     "(U|h|k|epsilon|R)Final"
     {
         $U;
-        tolerance        1e-08;
+        tolerance        1e-7;
         relTol           0;
     }
 }
 
-PISO
-{
-    momentumPredictor   off;
-    nOuterCorrectors     1;
-    nCorrectors     2;
-    nNonOrthogonalCorrectors 1;
-    pRefPoint       (-0.081 -0.0257 8.01);
-    pRefValue       1e5;
-}
-
-
 PIMPLE
 {
     momentumPredictor   on;
@@ -86,11 +75,10 @@ PIMPLE
     nNonOrthogonalCorrectors 0;
 }
 
-
 relaxationFactors
 {
-//    h               0.9;
-//    U               0.9;
+    h               1;
+    U               1;
 }
 
 // ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/heater/fvSolution b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/heater/fvSolution
index 7c00e466f4b..3fd7359865c 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/heater/fvSolution
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/heater/fvSolution
@@ -23,6 +23,7 @@ solvers
         tolerance        1E-06;
         relTol           0.1;
     }
+
     TFinal
     {
         $T;
@@ -31,11 +32,6 @@ solvers
     }
 }
 
-PISO
-{
-    nNonOrthogonalCorrectors 1;
-}
-
 PIMPLE
 {
     nNonOrthogonalCorrectors 1;
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/leftSolid/fvSolution b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/leftSolid/fvSolution
index 7c00e466f4b..3fd7359865c 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/leftSolid/fvSolution
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/leftSolid/fvSolution
@@ -23,6 +23,7 @@ solvers
         tolerance        1E-06;
         relTol           0.1;
     }
+
     TFinal
     {
         $T;
@@ -31,11 +32,6 @@ solvers
     }
 }
 
-PISO
-{
-    nNonOrthogonalCorrectors 1;
-}
-
 PIMPLE
 {
     nNonOrthogonalCorrectors 1;
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/rightSolid/fvSolution b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/rightSolid/fvSolution
index 7c00e466f4b..3fd7359865c 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/rightSolid/fvSolution
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/rightSolid/fvSolution
@@ -23,6 +23,7 @@ solvers
         tolerance        1E-06;
         relTol           0.1;
     }
+
     TFinal
     {
         $T;
@@ -31,11 +32,6 @@ solvers
     }
 }
 
-PISO
-{
-    nNonOrthogonalCorrectors 1;
-}
-
 PIMPLE
 {
     nNonOrthogonalCorrectors 1;
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/topAir/fvSolution b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/topAir/fvSolution
index 3217c345e8a..a3692254e9f 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/topAir/fvSolution
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/topAir/fvSolution
@@ -65,21 +65,11 @@ solvers
     "(U|h|k|epsilon|R)Final"
     {
         $U;
-        tolerance        1e-07;
+        tolerance        1e-7;
         relTol           0;
     }
 }
 
-PISO
-{
-    momentumPredictor    off;
-    nOuterCorrectors     1;
-    nCorrectors          2;
-    nNonOrthogonalCorrectors 1;
-    pRefPoint            (-0.081 -0.0257 8.01);
-    pRefValue            1e5;
-}
-
 PIMPLE
 {
     momentumPredictor   on;
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/0/T b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/0/T
new file mode 100644
index 00000000000..fe4d75bd0f4
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/0/T
@@ -0,0 +1,30 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      T;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 1 0 0 0];
+
+internalField   uniform 300;
+
+boundaryField
+{
+    ".*"
+    {
+        type            calculated;
+        value           uniform 300;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/0/U b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/0/U
new file mode 100644
index 00000000000..ef547fb0d3b
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/0/U
@@ -0,0 +1,30 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volVectorField;
+    object      U;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -1 0 0 0 0];
+
+internalField   uniform (0.01 0 0);
+
+boundaryField
+{
+    ".*"
+    {
+        type            calculated;
+        value           uniform (0.01 0 0);
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/0/epsilon b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/0/epsilon
new file mode 100644
index 00000000000..4df5689c01b
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/0/epsilon
@@ -0,0 +1,31 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      epsilon;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 2 -3 0 0 0 0];
+
+internalField   uniform 0.01;
+
+boundaryField
+{
+    ".*"
+    {
+        type            calculated;
+        value           uniform 0.01;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/0/k b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/0/k
new file mode 100644
index 00000000000..51b012e11c3
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/0/k
@@ -0,0 +1,31 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      k;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 2 -2 0 0 0 0];
+
+internalField   uniform 0.1;
+
+boundaryField
+{
+    ".*"
+    {
+        type            calculated;
+        value           uniform 0.1;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/0/p b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/0/p
new file mode 100644
index 00000000000..958a40ff27c
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/0/p
@@ -0,0 +1,30 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      p;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 -1 -2 0 0 0 0];
+
+internalField   uniform 1e5;
+
+boundaryField
+{
+    ".*"
+    {
+        type            calculated;
+        value           uniform 1e5;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/0/p_rgh b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/0/p_rgh
new file mode 100644
index 00000000000..6baa60c260d
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/0/p_rgh
@@ -0,0 +1,30 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      p_rgh;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 -1 -2 0 0 0 0];
+
+internalField   uniform 1e5;
+
+boundaryField
+{
+    ".*"
+    {
+        type            calculated;
+        value           uniform 1e5;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/Allclean b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/Allclean
new file mode 100755
index 00000000000..88b837a3498
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/Allclean
@@ -0,0 +1,22 @@
+#!/bin/sh
+cd ${0%/*} || exit 1    # run from this directory
+
+# Source tutorial clean functions
+. $WM_PROJECT_DIR/bin/tools/CleanFunctions
+
+cleanCase
+rm -rf VTK
+rm -rf constant/cellToRegion constant/polyMesh/sets
+rm -rf 0/bottomWater
+rm -rf 0/topAir
+rm -rf 0/heater
+rm -rf 0/leftSolid
+rm -rf 0/rightSolid
+rm -f 0/cellToRegion
+rm -rf constant/bottomWater/polyMesh
+rm -rf constant/topAir/polyMesh
+rm -rf constant/heater/polyMesh
+rm -rf constant/leftSolid/polyMesh
+rm -rf constant/rightSolid/polyMesh
+
+# ----------------------------------------------------------------- end-of-file
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/Allrun b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/Allrun
new file mode 100755
index 00000000000..23f096bbdae
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/Allrun
@@ -0,0 +1,57 @@
+#!/bin/sh
+cd ${0%/*} || exit 1    # run from this directory
+
+
+# Source tutorial run functions
+. $WM_PROJECT_DIR/bin/tools/RunFunctions
+
+runApplication blockMesh
+runApplication setSet -batch makeCellSets.setSet
+runApplication splitMeshRegions -cellZones -overwrite
+
+# remove fluid fields from solid regions (important for post-processing)
+for i in heater leftSolid rightSolid
+do
+   rm -f 0*/$i/{mut,alphat,epsilon,k,p,U}
+done
+
+## remove solid fields from fluid regions (important for post-processing)
+#for i in bottomWater topAir
+#do
+#   rm -f 0*/$i/{cp,K,rho}
+#done
+
+for i in bottomWater topAir heater leftSolid rightSolid
+do
+   changeDictionary -region $i > log.changeDictionary.$i 2>&1
+done
+
+
+#-- Run on single processor
+#runApplication chtMultiRegionFoam
+
+# Decompose
+for i in bottomWater topAir heater leftSolid rightSolid
+do
+   decomposePar -region $i > log.decomposePar.$i 2>&1
+done
+
+# Run
+runParallel chtMultiRegionFoam 4
+
+# Reconstruct
+for i in bottomWater topAir heater leftSolid rightSolid
+do
+   reconstructPar -region $i > log.reconstructPar.$i2 >&1
+done
+
+
+echo
+echo "creating files for paraview post-processing"
+echo
+for i in bottomWater topAir heater leftSolid rightSolid
+do
+   paraFoam -touch -region $i
+done
+
+# ----------------------------------------------------------------- end-of-file
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/constant/bottomWater/RASProperties b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/constant/bottomWater/RASProperties
new file mode 100644
index 00000000000..1597ab89059
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/constant/bottomWater/RASProperties
@@ -0,0 +1,24 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      RASProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+RASModel laminar;
+
+turbulence      on;
+
+printCoeffs     on;
+
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/constant/bottomWater/g b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/constant/bottomWater/g
new file mode 100644
index 00000000000..2a29484f31d
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/constant/bottomWater/g
@@ -0,0 +1,20 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       uniformDimensionedVectorField;
+    object      g;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -2 0 0 0 0];
+value           (0 -9.81 0);
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/constant/bottomWater/thermophysicalProperties b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/constant/bottomWater/thermophysicalProperties
new file mode 100644
index 00000000000..5f40eb7ae45
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/constant/bottomWater/thermophysicalProperties
@@ -0,0 +1,31 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.7.1                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      thermophysicalProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+thermoType
+hRhoThermo<pureMixture<constTransport<specieThermo<hConstThermo<incompressible>>>>>;
+
+mixture
+{
+    nMoles          1;
+    molWeight       18;
+    rho             1000;
+    Cp              4181;
+    Hf              0;
+    mu              959e-6;
+    Pr              6.62;
+}
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/constant/bottomWater/turbulenceProperties b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/constant/bottomWater/turbulenceProperties
new file mode 100644
index 00000000000..e01c7d0bdb7
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/constant/bottomWater/turbulenceProperties
@@ -0,0 +1,19 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      turbulenceProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+simulationType  laminar;
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/constant/heater/solidThermophysicalProperties b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/constant/heater/solidThermophysicalProperties
new file mode 100644
index 00000000000..6afd8ebe646
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/constant/heater/solidThermophysicalProperties
@@ -0,0 +1,76 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.6                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      solidThermophysicalProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+thermoType constSolidThermo;
+//thermoType interpolatedSolidThermo;
+//thermoType directionalSolidThermo;
+
+constSolidThermoCoeffs
+{
+    //- constant properties
+
+    rho rho [1 -3  0  0 0 0 0] 8000;
+    cp  cp  [0  2 -2 -1 0 0 0] 450;
+    K   K   [1  1 -3 -1 0 0 0] 80;
+
+    // N/A
+    Hf  Hf  [0  2 -2  0 0 0 0] 1;
+    emissivity  emissivity  [0 0 0 0 0 0 0] 1;
+}
+
+
+interpolatedSolidThermoCoeffs
+{
+    //- interpolated properties
+
+    TValues             (100 1000);
+    rhoValues           (1700 1700);
+    cpValues            (1700 1700);
+    KValues             (80 40);
+    HfValues            (1 1);
+    emissivityValues    (1 1);
+}
+
+
+directionalSolidThermoCoeffs
+{
+    //- does interpolation and directional K in coordinate system.
+    //  Specify multiple values, one for each temperature. Properties are
+    //  interpolated according to the local temperature.
+
+
+    TValues             (100 1000);
+    rhoValues           (1700 1700);
+    cpValues            (1700 1700);
+
+    KValues             ((40 40 40) (40 40 40));
+
+    coordinateSystem
+    {
+        origin  (-0.000062 0.000019 0.000039);
+        coordinateRotation
+        {
+            type    axes;
+            e1      (1 0 0);
+            e3      (-3.1807824E-6 -0.99813473 0.0610505);
+        }
+    }
+
+    HfValues            (1 1);
+    emissivityValues    (1 1);
+}
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/constant/leftSolid/solidThermophysicalProperties b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/constant/leftSolid/solidThermophysicalProperties
new file mode 120000
index 00000000000..1da00bc6bdb
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/constant/leftSolid/solidThermophysicalProperties
@@ -0,0 +1 @@
+../heater/solidThermophysicalProperties
\ No newline at end of file
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/constant/polyMesh/blockMeshDict b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/constant/polyMesh/blockMeshDict
new file mode 100644
index 00000000000..506f0653646
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/constant/polyMesh/blockMeshDict
@@ -0,0 +1,72 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      blockMeshDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+convertToMeters 1;
+
+vertices
+(
+    (-0.1 -0.04  -0.05)
+    ( 0.1 -0.04  -0.05)
+    ( 0.1  0.04  -0.05)
+    (-0.1  0.04  -0.05)
+    (-0.1 -0.04   0.05)
+    ( 0.1 -0.04   0.05)
+    ( 0.1  0.04   0.05)
+    (-0.1  0.04   0.05)
+);
+
+blocks
+(
+    hex (0 1 2 3 4 5 6 7) (30 10 10) simpleGrading (1 1 1)
+);
+
+edges
+(
+);
+
+patches
+(
+    wall maxY
+    (
+        (3 7 6 2)
+    )
+    patch minX
+    (
+        (0 4 7 3)
+    )
+    patch maxX
+    (
+        (2 6 5 1)
+    )
+    wall minY
+    (
+        (1 5 4 0)
+    )
+    wall minZ
+    (
+        (0 3 2 1)
+    )
+    wall maxZ
+    (
+        (4 5 6 7)
+    )
+);
+
+mergePatchPairs
+(
+);
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/constant/polyMesh/boundary b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/constant/polyMesh/boundary
new file mode 100644
index 00000000000..de3fd42a4d8
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/constant/polyMesh/boundary
@@ -0,0 +1,58 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      binary;
+    class       polyBoundaryMesh;
+    location    "constant/polyMesh";
+    object      boundary;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+6
+(
+    maxY
+    {
+        type            wall;
+        nFaces          300;
+        startFace       8300;
+    }
+    minX
+    {
+        type            patch;
+        nFaces          100;
+        startFace       8600;
+    }
+    maxX
+    {
+        type            patch;
+        nFaces          100;
+        startFace       8700;
+    }
+    minY
+    {
+        type            wall;
+        nFaces          300;
+        startFace       8800;
+    }
+    minZ
+    {
+        type            wall;
+        nFaces          300;
+        startFace       9100;
+    }
+    maxZ
+    {
+        type            wall;
+        nFaces          300;
+        startFace       9400;
+    }
+)
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/constant/regionProperties b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/constant/regionProperties
new file mode 100644
index 00000000000..d69a346d98d
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/constant/regionProperties
@@ -0,0 +1,22 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      regionProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+fluidRegionNames ( bottomWater topAir );
+
+solidRegionNames ( heater leftSolid rightSolid );
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/constant/rightSolid/solidThermophysicalProperties b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/constant/rightSolid/solidThermophysicalProperties
new file mode 120000
index 00000000000..1da00bc6bdb
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/constant/rightSolid/solidThermophysicalProperties
@@ -0,0 +1 @@
+../heater/solidThermophysicalProperties
\ No newline at end of file
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/constant/topAir/RASProperties b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/constant/topAir/RASProperties
new file mode 100644
index 00000000000..1597ab89059
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/constant/topAir/RASProperties
@@ -0,0 +1,24 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      RASProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+RASModel laminar;
+
+turbulence      on;
+
+printCoeffs     on;
+
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/constant/topAir/g b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/constant/topAir/g
new file mode 100644
index 00000000000..2a29484f31d
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/constant/topAir/g
@@ -0,0 +1,20 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       uniformDimensionedVectorField;
+    object      g;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -2 0 0 0 0];
+value           (0 -9.81 0);
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/constant/topAir/thermophysicalProperties b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/constant/topAir/thermophysicalProperties
new file mode 100644
index 00000000000..7f67791ae58
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/constant/topAir/thermophysicalProperties
@@ -0,0 +1,31 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant/topAir";
+    object      thermophysicalProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+thermoType      hRhoThermo<pureMixture<constTransport<specieThermo<hConstThermo<perfectGas>>>>>;
+
+mixture
+{
+    nMoles          1;
+    molWeight       28.9;
+    Cp              1000;
+    Hf              0;
+    mu              1.8e-05;
+    Pr              0.7;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/constant/topAir/turbulenceProperties b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/constant/topAir/turbulenceProperties
new file mode 100644
index 00000000000..e01c7d0bdb7
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/constant/topAir/turbulenceProperties
@@ -0,0 +1,19 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      turbulenceProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+simulationType  laminar;
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/makeCellSets.setSet b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/makeCellSets.setSet
new file mode 100644
index 00000000000..7353934fa80
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/makeCellSets.setSet
@@ -0,0 +1,16 @@
+cellSet heater new boxToCell (-0.01001    0 -100 )(0.01001 0.00999 100)
+cellSet heater add boxToCell (-0.01001 -100 -0.01001)(0.01001 0.00999 0.01001)
+cellZoneSet heater new setToCellZone heater
+cellSet leftSolid new boxToCell (-100 0 -100 )(-0.01001 0.00999 100)
+cellZoneSet leftSolid new setToCellZone leftSolid
+cellSet rightSolid new boxToCell (0.01001 0 -100 )(100 0.00999 100)
+cellZoneSet rightSolid new setToCellZone rightSolid
+cellSet topAir new boxToCell (-100 0.00999 -100 )(100 100 100)
+cellZoneSet topAir new setToCellZone topAir
+cellSet bottomWater clear
+cellSet bottomWater add cellToCell heater
+cellSet bottomWater add cellToCell leftSolid
+cellSet bottomWater add cellToCell rightSolid
+cellSet bottomWater add cellToCell topAir
+cellSet bottomWater invert
+cellZoneSet bottomWater new setToCellZone bottomWater
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/bottomWater/changeDictionaryDict b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/bottomWater/changeDictionaryDict
new file mode 100644
index 00000000000..1b621b0620d
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/bottomWater/changeDictionaryDict
@@ -0,0 +1,173 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.7.1                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      changeDictionaryDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dictionaryReplacement
+{
+    U
+    {
+        internalField   uniform (0.001 0 0);
+
+        boundaryField
+        {
+            minX
+            {
+                type            fixedValue;
+                value           uniform (0.001 0 0);
+            }
+
+            maxX
+            {
+                type            inletOutlet;
+                inletValue      uniform (0 0 0);
+            }
+
+            ".*"
+            {
+                type            fixedValue;
+                value           uniform (0 0 0);
+            }
+        }
+    }
+
+    T
+    {
+        internalField   uniform 300;
+
+        boundaryField
+        {
+            minX
+            {
+                type            fixedValue;
+                value           uniform 300;
+            }
+
+            maxX
+            {
+                type            inletOutlet;
+                inletValue      uniform 300;
+            }
+
+            ".*"
+            {
+                type            zeroGradient;
+                value           uniform 300;
+            }
+
+            "bottomWater_to_.*"
+            {
+                type            compressible::turbulentTemperatureCoupledBaffleMixed;
+                neighbourFieldName T;
+                K               basicThermo;
+                KName           none;
+                value           uniform 300;
+            }
+        }
+    }
+
+    epsilon
+    {
+        internalField   uniform 0.01;
+
+        boundaryField
+        {
+            minX
+            {
+                type            fixedValue;
+                value           uniform 0.01;
+            }
+
+            maxX
+            {
+                type            inletOutlet;
+                inletValue      uniform 0.01;
+            }
+
+            ".*"
+            {
+                type            compressible::epsilonWallFunction;
+                value           uniform 0.01;
+            }
+        }
+    }
+
+    k
+    {
+        internalField   uniform 0.1;
+
+        boundaryField
+        {
+            minX
+            {
+                type            inletOutlet;
+                inletValue      uniform 0.1;
+            }
+
+            maxX
+            {
+                type            zeroGradient;
+                value           uniform 0.1;
+            }
+
+            ".*"
+            {
+                type            compressible::kqRWallFunction;
+                value           uniform 0.1;
+            }
+        }
+    }
+
+    p_rgh
+    {
+        internalField   uniform 0;
+
+        boundaryField
+        {
+            minX
+            {
+                type            zeroGradient;
+                value           uniform 0;
+            }
+
+            maxX
+            {
+                type            fixedValue;
+                value           uniform 0;
+            }
+
+            ".*"
+            {
+                type            buoyantPressure;
+                value           uniform 0;
+            }
+        }
+    }
+
+    p
+    {
+        internalField   uniform 0;
+
+        boundaryField
+        {
+            ".*"
+            {
+                type            calculated;
+                value           uniform 0;
+            }
+        }
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/bottomWater/changeDictionaryDict.save b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/bottomWater/changeDictionaryDict.save
new file mode 100644
index 00000000000..0bfd4dda907
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/bottomWater/changeDictionaryDict.save
@@ -0,0 +1,124 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      changeDictionaryDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dictionaryReplacement
+{
+    boundary
+    {
+        minX
+        {
+            type            wall;
+        }
+        maxX
+        {
+            type            wall;
+        }
+    }
+
+    U
+    {
+        internalField   uniform (0.01 0 0);
+
+        boundaryField
+        {
+            ".*"
+            {
+                type            fixedValue;
+                value           uniform (0 0 0);
+            }
+        }
+    }
+
+    T
+    {
+        internalField   uniform 300;
+
+        boundaryField
+        {
+            ".*"
+            {
+                type            zeroGradient;
+            }
+
+            "bottomWater_to_.*"
+            {
+                type            compressible::turbulentTemperatureCoupledBaffleMixed;
+                neighbourFieldName T;
+                K               basicThermo;
+                KName           none;
+                value           uniform 300;
+            }
+        }
+    }
+
+    epsilon
+    {
+        internalField   uniform 0.01;
+
+        boundaryField
+        {
+            ".*"
+            {
+                type            compressible::epsilonWallFunction;
+                value           uniform 0.01;
+            }
+        }
+    }
+
+    k
+    {
+        internalField   uniform 0.1;
+
+        boundaryField
+        {
+            ".*"
+            {
+                type            compressible::kqRWallFunction;
+                value           uniform 0.1;
+            }
+        }
+    }
+
+    p_rgh
+    {
+        internalField   uniform 1e5;
+
+        boundaryField
+        {
+            ".*"
+            {
+                type            buoyantPressure;
+                value           uniform 1e5;
+            }
+        }
+    }
+
+    p
+    {
+        internalField   uniform 1e5;
+
+        boundaryField
+        {
+            ".*"
+            {
+                type            calculated;
+                value           uniform 1e5;
+            }
+        }
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/bottomWater/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/bottomWater/decomposeParDict
new file mode 100644
index 00000000000..8f6ced4ac38
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/bottomWater/decomposeParDict
@@ -0,0 +1,86 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    note        "mesh decomposition control dictionary";
+    location    "system";
+    object      decomposeParDict;
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+numberOfSubdomains  4;
+
+//- Keep owner and neighbour on same processor for faces in zones:
+// preserveFaceZones (heater solid1 solid3);
+
+method          scotch;
+// method          hierarchical;
+// method          simple;
+// method          metis;
+// method          manual;
+
+simpleCoeffs
+{
+    n           (2 2 1);
+    delta       0.001;
+}
+
+hierarchicalCoeffs
+{
+    n           (2 2 1);
+    delta       0.001;
+    order       xyz;
+}
+
+metisCoeffs
+{
+ /*
+    processorWeights
+    (
+        1
+        1
+        1
+        1
+    );
+  */
+}
+
+scotchCoeffs
+{
+    //processorWeights
+    //(
+    //    1
+    //    1
+    //    1
+    //    1
+    //);
+    //writeGraph  true;
+    //strategy "b";
+}
+
+manualCoeffs
+{
+    dataFile    "decompositionData";
+}
+
+
+//// Is the case distributed
+//distributed     yes;
+//// Per slave (so nProcs-1 entries) the directory above the case.
+//roots
+//(
+//    "/tmp"
+//    "/tmp"
+//);
+
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/bottomWater/fvSchemes b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/bottomWater/fvSchemes
new file mode 100644
index 00000000000..7d3e57864ac
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/bottomWater/fvSchemes
@@ -0,0 +1,67 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      fvSchemes;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ddtSchemes
+{
+    default Euler;
+}
+
+gradSchemes
+{
+    default         Gauss linear;
+}
+
+divSchemes
+{
+    default         none;
+    div(phi,U)      Gauss upwind;
+    div(phiU,p)     Gauss linear;
+    div(phi,h)      Gauss upwind;
+    div(phi,k)      Gauss upwind;
+    div(phi,epsilon) Gauss upwind;
+    div(phi,R)      Gauss upwind;
+    div(R)          Gauss linear;
+    div((muEff*dev2(grad(U).T()))) Gauss linear;
+}
+
+laplacianSchemes
+{
+    default         none;
+    laplacian(muEff,U) Gauss linear limited 0.333;
+    laplacian((rho*(1|A(U))),p_rgh) Gauss linear limited 0.333;
+    laplacian(alphaEff,h) Gauss linear limited 0.333;
+    laplacian(DkEff,k) Gauss linear limited 0.333;
+    laplacian(DepsilonEff,epsilon) Gauss linear limited 0.333;
+    laplacian(DREff,R) Gauss linear limited 0.333;
+}
+
+interpolationSchemes
+{
+    default         linear;
+}
+
+snGradSchemes
+{
+    default         limited 0.333;
+}
+
+fluxRequired
+{
+    default         no;
+    p_rgh;
+}
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/bottomWater/fvSolution b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/bottomWater/fvSolution
new file mode 100644
index 00000000000..ff9e0490c68
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/bottomWater/fvSolution
@@ -0,0 +1,84 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      fvSolution;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+solvers
+{
+    rho
+    {
+        solver          PCG;
+        preconditioner  DIC;
+        tolerance       1e-7;
+        relTol          0.1;
+    }
+
+    rhoFinal
+    {
+        $rho;
+        tolerance       1e-7;
+        relTol          0;
+    }
+
+    p_rgh
+    {
+        solver           GAMG;
+        tolerance        1e-7;
+        relTol           0.01;
+
+        smoother         GaussSeidel;
+
+        cacheAgglomeration  true;
+        nCellsInCoarsestLevel 10;
+        agglomerator     faceAreaPair;
+        mergeLevels      1;
+    }
+
+    p_rghFinal
+    {
+        $p_rgh;
+        tolerance        1e-7;
+        relTol           0;
+    }
+
+    "(U|h|k|epsilon|R)"
+    {
+        solver           PBiCG;
+        preconditioner   DILU;
+        tolerance        1e-7;
+        relTol           0.1;
+    }
+
+    "(U|h|k|epsilon|R)Final"
+    {
+        $U;
+        tolerance        1e-7;
+        relTol           0;
+    }
+}
+
+PIMPLE
+{
+    momentumPredictor   on;
+    nCorrectors         2;
+    nNonOrthogonalCorrectors 0;
+}
+
+relaxationFactors
+{
+    h               1;
+    U               1;
+}
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/controlDict b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/controlDict
new file mode 100644
index 00000000000..86119ee8dae
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/controlDict
@@ -0,0 +1,62 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      controlDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+application     chtMultiRegionFoam;
+
+startFrom       latestTime;
+
+startTime       0.001;
+
+stopAt          endTime;
+
+endTime         200;
+
+deltaT          0.001;
+
+writeControl    adjustableRunTime;
+
+writeInterval   50;
+
+purgeWrite      0;
+
+writeFormat     binary;
+
+writePrecision  8;
+
+writeCompression off;
+
+timeFormat      general;
+
+timePrecision   6;
+
+runTimeModifiable yes;
+
+maxCo           0.3;
+
+// Maximum diffusion number
+maxDi           10.0;
+
+adjustTimeStep  yes;
+
+libs
+(
+    "libOpenFOAM.so"
+    "libcompressibleTurbulenceModel.so"
+    "libcompressibleRASModels.so"
+);
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/decomposeParDict
new file mode 100644
index 00000000000..8f6ced4ac38
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/decomposeParDict
@@ -0,0 +1,86 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    note        "mesh decomposition control dictionary";
+    location    "system";
+    object      decomposeParDict;
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+numberOfSubdomains  4;
+
+//- Keep owner and neighbour on same processor for faces in zones:
+// preserveFaceZones (heater solid1 solid3);
+
+method          scotch;
+// method          hierarchical;
+// method          simple;
+// method          metis;
+// method          manual;
+
+simpleCoeffs
+{
+    n           (2 2 1);
+    delta       0.001;
+}
+
+hierarchicalCoeffs
+{
+    n           (2 2 1);
+    delta       0.001;
+    order       xyz;
+}
+
+metisCoeffs
+{
+ /*
+    processorWeights
+    (
+        1
+        1
+        1
+        1
+    );
+  */
+}
+
+scotchCoeffs
+{
+    //processorWeights
+    //(
+    //    1
+    //    1
+    //    1
+    //    1
+    //);
+    //writeGraph  true;
+    //strategy "b";
+}
+
+manualCoeffs
+{
+    dataFile    "decompositionData";
+}
+
+
+//// Is the case distributed
+//distributed     yes;
+//// Per slave (so nProcs-1 entries) the directory above the case.
+//roots
+//(
+//    "/tmp"
+//    "/tmp"
+//);
+
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/fvSchemes b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/fvSchemes
new file mode 100644
index 00000000000..babfc9a5a20
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/fvSchemes
@@ -0,0 +1,46 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      fvSchemes;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ddtSchemes
+{
+}
+
+gradSchemes
+{
+}
+
+divSchemes
+{
+}
+
+laplacianSchemes
+{
+}
+
+interpolationSchemes
+{
+}
+
+snGradSchemes
+{
+}
+
+fluxRequired
+{
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/fvSolution b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/fvSolution
new file mode 100644
index 00000000000..8570cd3674a
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/fvSolution
@@ -0,0 +1,22 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      fvSolution;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+PIMPLE
+{
+    nOuterCorrectors 1;
+}
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/heater/changeDictionaryDict b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/heater/changeDictionaryDict
new file mode 100644
index 00000000000..58ceb0480f9
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/heater/changeDictionaryDict
@@ -0,0 +1,64 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      changeDictionaryDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dictionaryReplacement
+{
+    boundary
+    {
+        minY
+        {
+            type            patch;
+        }
+        minZ
+        {
+            type            patch;
+        }
+        maxZ
+        {
+            type            patch;
+        }
+    }
+
+    T
+    {
+        internalField   uniform 300;
+
+        boundaryField
+        {
+            ".*"
+            {
+                type            zeroGradient;
+                value           uniform 300;
+            }
+            "heater_to_.*"
+            {
+                type            compressible::turbulentTemperatureCoupledBaffleMixed;
+                neighbourFieldName T;
+                K               solidThermo;
+                KName           none;
+                value           uniform 300;
+            }
+            minY
+            {
+                type            fixedValue;
+                value           uniform 500;
+            }
+        }
+    }
+
+}
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/heater/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/heater/decomposeParDict
new file mode 100644
index 00000000000..8f6ced4ac38
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/heater/decomposeParDict
@@ -0,0 +1,86 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    note        "mesh decomposition control dictionary";
+    location    "system";
+    object      decomposeParDict;
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+numberOfSubdomains  4;
+
+//- Keep owner and neighbour on same processor for faces in zones:
+// preserveFaceZones (heater solid1 solid3);
+
+method          scotch;
+// method          hierarchical;
+// method          simple;
+// method          metis;
+// method          manual;
+
+simpleCoeffs
+{
+    n           (2 2 1);
+    delta       0.001;
+}
+
+hierarchicalCoeffs
+{
+    n           (2 2 1);
+    delta       0.001;
+    order       xyz;
+}
+
+metisCoeffs
+{
+ /*
+    processorWeights
+    (
+        1
+        1
+        1
+        1
+    );
+  */
+}
+
+scotchCoeffs
+{
+    //processorWeights
+    //(
+    //    1
+    //    1
+    //    1
+    //    1
+    //);
+    //writeGraph  true;
+    //strategy "b";
+}
+
+manualCoeffs
+{
+    dataFile    "decompositionData";
+}
+
+
+//// Is the case distributed
+//distributed     yes;
+//// Per slave (so nProcs-1 entries) the directory above the case.
+//roots
+//(
+//    "/tmp"
+//    "/tmp"
+//);
+
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/heater/fvSchemes b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/heater/fvSchemes
new file mode 100644
index 00000000000..e0c2260df31
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/heater/fvSchemes
@@ -0,0 +1,53 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      fvSchemes;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ddtSchemes
+{
+    default Euler;
+}
+
+gradSchemes
+{
+    default         Gauss linear;
+}
+
+divSchemes
+{
+    default         none;
+}
+
+laplacianSchemes
+{
+    default         none;
+    laplacian(K,T) Gauss linear limited 0.333;
+}
+
+interpolationSchemes
+{
+    default         linear;
+}
+
+snGradSchemes
+{
+    default         limited 0.333;
+}
+
+fluxRequired
+{
+    default         no;
+}
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/heater/fvSolution b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/heater/fvSolution
new file mode 100644
index 00000000000..7c00e466f4b
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/heater/fvSolution
@@ -0,0 +1,44 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      fvSolution;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+solvers
+{
+    T
+    {
+        solver           PCG;
+        preconditioner   DIC;
+        tolerance        1E-06;
+        relTol           0.1;
+    }
+    TFinal
+    {
+        $T;
+        tolerance        1E-06;
+        relTol           0;
+    }
+}
+
+PISO
+{
+    nNonOrthogonalCorrectors 1;
+}
+
+PIMPLE
+{
+    nNonOrthogonalCorrectors 1;
+}
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/leftSolid/changeDictionaryDict b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/leftSolid/changeDictionaryDict
new file mode 100644
index 00000000000..dc64d455a60
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/leftSolid/changeDictionaryDict
@@ -0,0 +1,54 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      changeDictionaryDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dictionaryReplacement
+{
+    boundary
+    {
+        minZ
+        {
+            type            patch;
+        }
+        maxZ
+        {
+            type            patch;
+        }
+    }
+
+    T
+    {
+        internalField   uniform 300;
+
+        boundaryField
+        {
+            ".*"
+            {
+                type            zeroGradient;
+                value           uniform 300;
+            }
+            "leftSolid_to_.*"
+            {
+                type            compressible::turbulentTemperatureCoupledBaffleMixed;
+                neighbourFieldName T;
+                K               solidThermo;
+                KName           none;
+                value           uniform 300;
+            }
+        }
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/leftSolid/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/leftSolid/decomposeParDict
new file mode 100644
index 00000000000..8f6ced4ac38
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/leftSolid/decomposeParDict
@@ -0,0 +1,86 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    note        "mesh decomposition control dictionary";
+    location    "system";
+    object      decomposeParDict;
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+numberOfSubdomains  4;
+
+//- Keep owner and neighbour on same processor for faces in zones:
+// preserveFaceZones (heater solid1 solid3);
+
+method          scotch;
+// method          hierarchical;
+// method          simple;
+// method          metis;
+// method          manual;
+
+simpleCoeffs
+{
+    n           (2 2 1);
+    delta       0.001;
+}
+
+hierarchicalCoeffs
+{
+    n           (2 2 1);
+    delta       0.001;
+    order       xyz;
+}
+
+metisCoeffs
+{
+ /*
+    processorWeights
+    (
+        1
+        1
+        1
+        1
+    );
+  */
+}
+
+scotchCoeffs
+{
+    //processorWeights
+    //(
+    //    1
+    //    1
+    //    1
+    //    1
+    //);
+    //writeGraph  true;
+    //strategy "b";
+}
+
+manualCoeffs
+{
+    dataFile    "decompositionData";
+}
+
+
+//// Is the case distributed
+//distributed     yes;
+//// Per slave (so nProcs-1 entries) the directory above the case.
+//roots
+//(
+//    "/tmp"
+//    "/tmp"
+//);
+
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/leftSolid/fvSchemes b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/leftSolid/fvSchemes
new file mode 100644
index 00000000000..e0c2260df31
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/leftSolid/fvSchemes
@@ -0,0 +1,53 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      fvSchemes;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ddtSchemes
+{
+    default Euler;
+}
+
+gradSchemes
+{
+    default         Gauss linear;
+}
+
+divSchemes
+{
+    default         none;
+}
+
+laplacianSchemes
+{
+    default         none;
+    laplacian(K,T) Gauss linear limited 0.333;
+}
+
+interpolationSchemes
+{
+    default         linear;
+}
+
+snGradSchemes
+{
+    default         limited 0.333;
+}
+
+fluxRequired
+{
+    default         no;
+}
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/leftSolid/fvSolution b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/leftSolid/fvSolution
new file mode 100644
index 00000000000..7c00e466f4b
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/leftSolid/fvSolution
@@ -0,0 +1,44 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      fvSolution;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+solvers
+{
+    T
+    {
+        solver           PCG;
+        preconditioner   DIC;
+        tolerance        1E-06;
+        relTol           0.1;
+    }
+    TFinal
+    {
+        $T;
+        tolerance        1E-06;
+        relTol           0;
+    }
+}
+
+PISO
+{
+    nNonOrthogonalCorrectors 1;
+}
+
+PIMPLE
+{
+    nNonOrthogonalCorrectors 1;
+}
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/rightSolid/changeDictionaryDict b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/rightSolid/changeDictionaryDict
new file mode 100644
index 00000000000..2c43eb35f09
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/rightSolid/changeDictionaryDict
@@ -0,0 +1,54 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      changeDictionaryDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dictionaryReplacement
+{
+    boundary
+    {
+        minZ
+        {
+            type            patch;
+        }
+        maxZ
+        {
+            type            patch;
+        }
+    }
+
+    T
+    {
+        internalField   uniform 300;
+
+        boundaryField
+        {
+            ".*"
+            {
+                type            zeroGradient;
+                value           uniform 300;
+            }
+            "rightSolid_to_.*"
+            {
+                type            compressible::turbulentTemperatureCoupledBaffleMixed;
+                neighbourFieldName T;
+                K               solidThermo;
+                KName           none;
+                value           uniform 300;
+            }
+        }
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/rightSolid/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/rightSolid/decomposeParDict
new file mode 100644
index 00000000000..8f6ced4ac38
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/rightSolid/decomposeParDict
@@ -0,0 +1,86 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    note        "mesh decomposition control dictionary";
+    location    "system";
+    object      decomposeParDict;
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+numberOfSubdomains  4;
+
+//- Keep owner and neighbour on same processor for faces in zones:
+// preserveFaceZones (heater solid1 solid3);
+
+method          scotch;
+// method          hierarchical;
+// method          simple;
+// method          metis;
+// method          manual;
+
+simpleCoeffs
+{
+    n           (2 2 1);
+    delta       0.001;
+}
+
+hierarchicalCoeffs
+{
+    n           (2 2 1);
+    delta       0.001;
+    order       xyz;
+}
+
+metisCoeffs
+{
+ /*
+    processorWeights
+    (
+        1
+        1
+        1
+        1
+    );
+  */
+}
+
+scotchCoeffs
+{
+    //processorWeights
+    //(
+    //    1
+    //    1
+    //    1
+    //    1
+    //);
+    //writeGraph  true;
+    //strategy "b";
+}
+
+manualCoeffs
+{
+    dataFile    "decompositionData";
+}
+
+
+//// Is the case distributed
+//distributed     yes;
+//// Per slave (so nProcs-1 entries) the directory above the case.
+//roots
+//(
+//    "/tmp"
+//    "/tmp"
+//);
+
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/rightSolid/fvSchemes b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/rightSolid/fvSchemes
new file mode 100644
index 00000000000..e0c2260df31
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/rightSolid/fvSchemes
@@ -0,0 +1,53 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      fvSchemes;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ddtSchemes
+{
+    default Euler;
+}
+
+gradSchemes
+{
+    default         Gauss linear;
+}
+
+divSchemes
+{
+    default         none;
+}
+
+laplacianSchemes
+{
+    default         none;
+    laplacian(K,T) Gauss linear limited 0.333;
+}
+
+interpolationSchemes
+{
+    default         linear;
+}
+
+snGradSchemes
+{
+    default         limited 0.333;
+}
+
+fluxRequired
+{
+    default         no;
+}
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/rightSolid/fvSolution b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/rightSolid/fvSolution
new file mode 100644
index 00000000000..7c00e466f4b
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/rightSolid/fvSolution
@@ -0,0 +1,44 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      fvSolution;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+solvers
+{
+    T
+    {
+        solver           PCG;
+        preconditioner   DIC;
+        tolerance        1E-06;
+        relTol           0.1;
+    }
+    TFinal
+    {
+        $T;
+        tolerance        1E-06;
+        relTol           0;
+    }
+}
+
+PISO
+{
+    nNonOrthogonalCorrectors 1;
+}
+
+PIMPLE
+{
+    nNonOrthogonalCorrectors 1;
+}
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/topAir/changeDictionaryDict b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/topAir/changeDictionaryDict
new file mode 100644
index 00000000000..f1886dda8e0
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/topAir/changeDictionaryDict
@@ -0,0 +1,172 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      changeDictionaryDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dictionaryReplacement
+{
+    U
+    {
+        internalField   uniform (0.1 0 0);
+
+        boundaryField
+        {
+            ".*"
+            {
+                type            fixedValue;
+                value           uniform (0 0 0);
+            }
+            minX
+            {
+                type            fixedValue;
+                value           uniform ( 0.1 0 0 );
+            }
+            maxX
+            {
+                type            inletOutlet;
+                inletValue      uniform ( 0 0 0 );
+                value           uniform ( 0.1 0 0 );
+            }
+        }
+    }
+
+    T
+    {
+        internalField   uniform 300;
+
+        boundaryField
+        {
+            ".*"
+            {
+                type            zeroGradient;
+                value           uniform 300;
+            }
+
+            minX
+            {
+                type            fixedValue;
+                value           uniform 300;
+            }
+            maxX
+            {
+                type            inletOutlet;
+                inletValue      uniform 300;
+                value           uniform 300;
+            }
+
+            "topAir_to_.*"
+            {
+                type            compressible::turbulentTemperatureCoupledBaffleMixed;
+                neighbourFieldName T;
+                K               basicThermo;
+                KName           none;
+                value           uniform 300;
+            }
+        }
+    }
+
+    epsilon
+    {
+        internalField   uniform 0.01;
+
+        boundaryField
+        {
+            ".*"
+            {
+                type            compressible::epsilonWallFunction;
+                value           uniform 0.01;
+            }
+
+            minX
+            {
+                type            fixedValue;
+                value           uniform 0.01;
+            }
+            maxX
+            {
+                type            inletOutlet;
+                inletValue      uniform 0.01;
+                value           uniform 0.01;
+            }
+        }
+    }
+
+    k
+    {
+        internalField   uniform 0.1;
+
+        boundaryField
+        {
+            ".*"
+            {
+                type            compressible::kqRWallFunction;
+                value           uniform 0.1;
+            }
+
+            minX
+            {
+                type            fixedValue;
+                value           uniform 0.1;
+            }
+            maxX
+            {
+                type            inletOutlet;
+                inletValue      uniform 0.1;
+                value           uniform 0.1;
+            }
+        }
+    }
+
+    p_rgh
+    {
+        internalField   uniform 1e5;
+
+        boundaryField
+        {
+            ".*"
+            {
+                type            buoyantPressure;
+                value           uniform 1e5;
+            }
+
+            maxX
+            {
+                type            fixedValue;
+                value           uniform 1e5;
+            }
+        }
+    }
+
+    p
+    {
+        internalField   uniform 1e5;
+
+        boundaryField
+        {
+            ".*"
+            {
+                type            calculated;
+                value           uniform 1e5;
+            }
+
+            maxX
+            {
+                type            calculated;
+                value           uniform 1e5;
+            }
+        }
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/topAir/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/topAir/decomposeParDict
new file mode 100644
index 00000000000..8f6ced4ac38
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/topAir/decomposeParDict
@@ -0,0 +1,86 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    note        "mesh decomposition control dictionary";
+    location    "system";
+    object      decomposeParDict;
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+numberOfSubdomains  4;
+
+//- Keep owner and neighbour on same processor for faces in zones:
+// preserveFaceZones (heater solid1 solid3);
+
+method          scotch;
+// method          hierarchical;
+// method          simple;
+// method          metis;
+// method          manual;
+
+simpleCoeffs
+{
+    n           (2 2 1);
+    delta       0.001;
+}
+
+hierarchicalCoeffs
+{
+    n           (2 2 1);
+    delta       0.001;
+    order       xyz;
+}
+
+metisCoeffs
+{
+ /*
+    processorWeights
+    (
+        1
+        1
+        1
+        1
+    );
+  */
+}
+
+scotchCoeffs
+{
+    //processorWeights
+    //(
+    //    1
+    //    1
+    //    1
+    //    1
+    //);
+    //writeGraph  true;
+    //strategy "b";
+}
+
+manualCoeffs
+{
+    dataFile    "decompositionData";
+}
+
+
+//// Is the case distributed
+//distributed     yes;
+//// Per slave (so nProcs-1 entries) the directory above the case.
+//roots
+//(
+//    "/tmp"
+//    "/tmp"
+//);
+
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/topAir/fvSchemes b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/topAir/fvSchemes
new file mode 100644
index 00000000000..7d3e57864ac
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/topAir/fvSchemes
@@ -0,0 +1,67 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      fvSchemes;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ddtSchemes
+{
+    default Euler;
+}
+
+gradSchemes
+{
+    default         Gauss linear;
+}
+
+divSchemes
+{
+    default         none;
+    div(phi,U)      Gauss upwind;
+    div(phiU,p)     Gauss linear;
+    div(phi,h)      Gauss upwind;
+    div(phi,k)      Gauss upwind;
+    div(phi,epsilon) Gauss upwind;
+    div(phi,R)      Gauss upwind;
+    div(R)          Gauss linear;
+    div((muEff*dev2(grad(U).T()))) Gauss linear;
+}
+
+laplacianSchemes
+{
+    default         none;
+    laplacian(muEff,U) Gauss linear limited 0.333;
+    laplacian((rho*(1|A(U))),p_rgh) Gauss linear limited 0.333;
+    laplacian(alphaEff,h) Gauss linear limited 0.333;
+    laplacian(DkEff,k) Gauss linear limited 0.333;
+    laplacian(DepsilonEff,epsilon) Gauss linear limited 0.333;
+    laplacian(DREff,R) Gauss linear limited 0.333;
+}
+
+interpolationSchemes
+{
+    default         linear;
+}
+
+snGradSchemes
+{
+    default         limited 0.333;
+}
+
+fluxRequired
+{
+    default         no;
+    p_rgh;
+}
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/topAir/fvSolution b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/topAir/fvSolution
new file mode 100644
index 00000000000..a3692254e9f
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionLiquidHeater/system/topAir/fvSolution
@@ -0,0 +1,86 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      fvSolution;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+solvers
+{
+    rho
+    {
+        solver          PCG;
+        preconditioner  DIC;
+        tolerance       1e-7;
+        relTol          0.1;
+    }
+
+    rhoFinal
+    {
+        $rho;
+        tolerance       1e-7;
+        relTol          0;
+    }
+
+    p_rgh
+    {
+        solver           GAMG;
+        tolerance        1e-7;
+        relTol           0.01;
+
+        smoother         GaussSeidel;
+
+        cacheAgglomeration true;
+        nCellsInCoarsestLevel 10;
+        agglomerator     faceAreaPair;
+        mergeLevels      1;
+
+        maxIter          100;
+    }
+
+    p_rghFinal
+    {
+        $p_rgh;
+        tolerance        1e-7;
+        relTol           0;
+    }
+
+    "(U|h|k|epsilon|R)"
+    {
+        solver           PBiCG;
+        preconditioner   DILU;
+        tolerance        1e-7;
+        relTol           0.1;
+    }
+
+    "(U|h|k|epsilon|R)Final"
+    {
+        $U;
+        tolerance        1e-7;
+        relTol           0;
+    }
+}
+
+PIMPLE
+{
+    momentumPredictor   on;
+    nCorrectors         2;
+    nNonOrthogonalCorrectors 0;
+}
+
+relaxationFactors
+{
+    h               1;
+    U               1;
+}
+
+// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/0/T b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/0/T
index b1ac0594dee..fe4d75bd0f4 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/0/T
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/0/T
@@ -23,6 +23,7 @@ boundaryField
     ".*"
     {
         type            calculated;
+        value           uniform 300;
     }
 }
 
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/0/U b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/0/U
index 62058ec7acf..ef547fb0d3b 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/0/U
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/0/U
@@ -23,6 +23,7 @@ boundaryField
     ".*"
     {
         type            calculated;
+        value           uniform (0.01 0 0);
     }
 }
 
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/0/alphat b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/0/alphat
index 5dba622286e..fae2e1b8022 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/0/alphat
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/0/alphat
@@ -23,6 +23,7 @@ boundaryField
     ".*"
     {
         type            calculated;
+        value           uniform 0;
     }
 }
 
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/0/epsilon b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/0/epsilon
index f4e27ad95fb..4df5689c01b 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/0/epsilon
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/0/epsilon
@@ -23,6 +23,7 @@ boundaryField
     ".*"
     {
         type            calculated;
+        value           uniform 0.01;
     }
 }
 
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/0/k b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/0/k
index b2509f96707..51b012e11c3 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/0/k
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/0/k
@@ -23,6 +23,7 @@ boundaryField
     ".*"
     {
         type            calculated;
+        value           uniform 0.1;
     }
 }
 
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/0/p b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/0/p
index 66e0be0a837..958a40ff27c 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/0/p
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/0/p
@@ -23,6 +23,7 @@ boundaryField
     ".*"
     {
         type            calculated;
+        value           uniform 1e5;
     }
 }
 
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/0/p_rgh b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/0/p_rgh
index 638c8c7d7cd..6baa60c260d 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/0/p_rgh
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/0/p_rgh
@@ -23,6 +23,7 @@ boundaryField
     ".*"
     {
         type            calculated;
+        value           uniform 1e5;
     }
 }
 
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/0/rho b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/0/rho
index fb0aab998f6..a5945f0eead 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/0/rho
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/0/rho
@@ -23,6 +23,7 @@ boundaryField
     ".*"
     {
         type            calculated;
+        value           uniform 8000;
     }
 }
 
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/bottomAir/fvSolution b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/bottomAir/fvSolution
index cafe18dadae..2544a9f5c00 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/bottomAir/fvSolution
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/bottomAir/fvSolution
@@ -61,16 +61,6 @@ solvers
     }
 }
 
-PISO
-{
-    momentumPredictor    off;
-    nOuterCorrectors     1;
-    nCorrectors          2;
-    nNonOrthogonalCorrectors 1;
-    pRefPoint            (-0.081 -0.0257 8.01);
-    pRefValue            1e5;
-}
-
 PIMPLE
 {
     momentumPredictor   on;
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/heater/fvSolution b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/heater/fvSolution
index 7c00e466f4b..3fd7359865c 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/heater/fvSolution
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/heater/fvSolution
@@ -23,6 +23,7 @@ solvers
         tolerance        1E-06;
         relTol           0.1;
     }
+
     TFinal
     {
         $T;
@@ -31,11 +32,6 @@ solvers
     }
 }
 
-PISO
-{
-    nNonOrthogonalCorrectors 1;
-}
-
 PIMPLE
 {
     nNonOrthogonalCorrectors 1;
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/leftSolid/fvSolution b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/leftSolid/fvSolution
index 18b2ebb7ebf..3fd7359865c 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/leftSolid/fvSolution
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/leftSolid/fvSolution
@@ -32,11 +32,6 @@ solvers
     }
 }
 
-PISO
-{
-    nNonOrthogonalCorrectors 1;
-}
-
 PIMPLE
 {
     nNonOrthogonalCorrectors 1;
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/rightSolid/fvSolution b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/rightSolid/fvSolution
index 18b2ebb7ebf..3fd7359865c 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/rightSolid/fvSolution
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/rightSolid/fvSolution
@@ -32,11 +32,6 @@ solvers
     }
 }
 
-PISO
-{
-    nNonOrthogonalCorrectors 1;
-}
-
 PIMPLE
 {
     nNonOrthogonalCorrectors 1;
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/topAir/fvSolution b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/topAir/fvSolution
index 8c00768543a..e4bc540afcc 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/topAir/fvSolution
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/topAir/fvSolution
@@ -63,16 +63,6 @@ solvers
     }
 }
 
-PISO
-{
-    momentumPredictor    off;
-    nOuterCorrectors     1;
-    nCorrectors          2;
-    nNonOrthogonalCorrectors 1;
-    pRefPoint            (-0.081 -0.0257 8.01);
-    pRefValue            1e5;
-}
-
 PIMPLE
 {
     momentumPredictor   on;
-- 
GitLab