diff --git a/applications/solvers/combustion/PDRFoam/PDRModels/turbulence/PDRkEpsilon/PDRkEpsilon.C b/applications/solvers/combustion/PDRFoam/PDRModels/turbulence/PDRkEpsilon/PDRkEpsilon.C
index 73dbee5664c3e5186ade28cb04347a88813bc5fc..e09c1bbd14080664322c3840bccf33bbcb2039d5 100644
--- a/applications/solvers/combustion/PDRFoam/PDRModels/turbulence/PDRkEpsilon/PDRkEpsilon.C
+++ b/applications/solvers/combustion/PDRFoam/PDRModels/turbulence/PDRkEpsilon/PDRkEpsilon.C
@@ -55,7 +55,7 @@ PDRkEpsilon::PDRkEpsilon
     const word& modelName
 )
 :
-    Foam::RASModels::kEpsilon<eddyDiffusivity<compressible::turbulenceModel> >
+    Foam::RASModels::kEpsilon<EddyDiffusivity<compressible::turbulenceModel> >
     (
         geometricOneField(),
         rho,
diff --git a/applications/solvers/combustion/PDRFoam/PDRModels/turbulence/PDRkEpsilon/PDRkEpsilon.H b/applications/solvers/combustion/PDRFoam/PDRModels/turbulence/PDRkEpsilon/PDRkEpsilon.H
index 689a47844a4ca25066c7f8e1a9c126e3b1417826..1ee0719076a7ca58155ef168f86cf90948612ad3 100644
--- a/applications/solvers/combustion/PDRFoam/PDRModels/turbulence/PDRkEpsilon/PDRkEpsilon.H
+++ b/applications/solvers/combustion/PDRFoam/PDRModels/turbulence/PDRkEpsilon/PDRkEpsilon.H
@@ -80,7 +80,7 @@ class PDRkEpsilon
 :
     public Foam::RASModels::kEpsilon
     <
-        eddyDiffusivity
+        EddyDiffusivity
         <
             compressible::turbulenceModel
         >
diff --git a/applications/solvers/combustion/reactingFoam/reactingFoam.C b/applications/solvers/combustion/reactingFoam/reactingFoam.C
index 2045c175fdc8b138b6abc373f4e239ffae2e50b0..79deedb763fbefe580b7c0c54b6a65bbf9528861 100644
--- a/applications/solvers/combustion/reactingFoam/reactingFoam.C
+++ b/applications/solvers/combustion/reactingFoam/reactingFoam.C
@@ -58,7 +58,7 @@ int main(int argc, char *argv[])
 
     if (!LTS)
     {
-        #include "CourantNo.H"
+        #include "compressibleCourantNo.H"
         #include "setInitialDeltaT.H"
     }
 
diff --git a/applications/solvers/combustion/reactingFoam/rhoReactingBuoyantFoam/rhoReactingBuoyantFoam.C b/applications/solvers/combustion/reactingFoam/rhoReactingBuoyantFoam/rhoReactingBuoyantFoam.C
index 743db294542a6e87ede92d03f8e285bed1e6dbf5..e8645bb47c0b8a7d59c9c85d701a3b26e7a84727 100644
--- a/applications/solvers/combustion/reactingFoam/rhoReactingBuoyantFoam/rhoReactingBuoyantFoam.C
+++ b/applications/solvers/combustion/reactingFoam/rhoReactingBuoyantFoam/rhoReactingBuoyantFoam.C
@@ -59,7 +59,7 @@ int main(int argc, char *argv[])
 
     if (!LTS)
     {
-        #include "CourantNo.H"
+        #include "compressibleCourantNo.H"
         #include "setInitialDeltaT.H"
     }
 
diff --git a/applications/solvers/combustion/reactingFoam/rhoReactingFoam/rhoReactingFoam.C b/applications/solvers/combustion/reactingFoam/rhoReactingFoam/rhoReactingFoam.C
index cdb1c64d560ef0db360f3942b227c8707fcbc599..6eb245028d0c5c07714b63d0fcb982c11f628d08 100644
--- a/applications/solvers/combustion/reactingFoam/rhoReactingFoam/rhoReactingFoam.C
+++ b/applications/solvers/combustion/reactingFoam/rhoReactingFoam/rhoReactingFoam.C
@@ -59,7 +59,7 @@ int main(int argc, char *argv[])
 
     if (!LTS)
     {
-        #include "CourantNo.H"
+        #include "compressibleCourantNo.H"
         #include "setInitialDeltaT.H"
     }
 
diff --git a/applications/solvers/compressible/rhoPimpleFoam/createFields.H b/applications/solvers/compressible/rhoPimpleFoam/createFields.H
index 0e214011dee27ee9645a852eda71d2911911735e..96a8ea84213810748eaad1f490df26b9fa87a90a 100644
--- a/applications/solvers/compressible/rhoPimpleFoam/createFields.H
+++ b/applications/solvers/compressible/rhoPimpleFoam/createFields.H
@@ -45,8 +45,8 @@ dimensionedScalar rhoMax
     (
         "rhoMax",
         pimple.dict(),
-        GREAT,
-        dimDensity
+        dimDensity,
+        GREAT
     )
 );
 
@@ -56,8 +56,8 @@ dimensionedScalar rhoMin
     (
         "rhoMin",
         pimple.dict(),
-        0,
-        dimDensity
+        dimDensity,
+        0
     )
 );
 
diff --git a/applications/solvers/compressible/rhoPimpleFoam/rhoPimpleDyMFoam/rhoPimpleDyMFoam.C b/applications/solvers/compressible/rhoPimpleFoam/rhoPimpleDyMFoam/rhoPimpleDyMFoam.C
index 530d66ce5d53e2e03fb0d74de7c17f371473277a..bd30b60a90ca78efe08e2f5888a829906b28eb12 100644
--- a/applications/solvers/compressible/rhoPimpleFoam/rhoPimpleDyMFoam/rhoPimpleDyMFoam.C
+++ b/applications/solvers/compressible/rhoPimpleFoam/rhoPimpleDyMFoam/rhoPimpleDyMFoam.C
@@ -63,12 +63,11 @@ int main(int argc, char *argv[])
     #include "createMRF.H"
     #include "createFvOptions.H"
     #include "createRhoUf.H"
-    #include "CourantNo.H"
     #include "createControls.H"
 
     if (!LTS)
     {
-        #include "CourantNo.H"
+        #include "compressibleCourantNo.H"
         #include "setInitialDeltaT.H"
     }
 
diff --git a/applications/solvers/compressible/rhoPimpleFoam/rhoPimpleFoam.C b/applications/solvers/compressible/rhoPimpleFoam/rhoPimpleFoam.C
index 5a54c9845f02433755bb1151201ef8633b810327..382d041fd956c3bdeb8b02ab887073fd7c5de45e 100644
--- a/applications/solvers/compressible/rhoPimpleFoam/rhoPimpleFoam.C
+++ b/applications/solvers/compressible/rhoPimpleFoam/rhoPimpleFoam.C
@@ -61,7 +61,7 @@ int main(int argc, char *argv[])
 
     if (!LTS)
     {
-        #include "CourantNo.H"
+        #include "compressibleCourantNo.H"
         #include "setInitialDeltaT.H"
     }
 
diff --git a/applications/solvers/compressible/rhoSimpleFoam/createFields.H b/applications/solvers/compressible/rhoSimpleFoam/createFields.H
index 2d89e2b56675f0cbdc46190b145e0b4a06701a39..fdf8a2a769e20bfbe12939cf91cd0c16c1c64d52 100644
--- a/applications/solvers/compressible/rhoSimpleFoam/createFields.H
+++ b/applications/solvers/compressible/rhoSimpleFoam/createFields.H
@@ -52,8 +52,8 @@ dimensionedScalar rhoMax
     (
         "rhoMax",
         simple.dict(),
-        GREAT,
-        dimDensity
+        dimDensity,
+        GREAT
     )
 );
 
@@ -63,8 +63,8 @@ dimensionedScalar rhoMin
     (
         "rhoMin",
         simple.dict(),
-        0,
-        dimDensity
+        dimDensity,
+        0
     )
 );
 
diff --git a/applications/solvers/compressible/rhoSimpleFoam/rhoPorousSimpleFoam/createFields.H b/applications/solvers/compressible/rhoSimpleFoam/rhoPorousSimpleFoam/createFields.H
index 3ce8270b5e027444a5fdea912cd0fa6535322cd8..149049e63ee4a727beb791fecc47f1bc7c5a9e60 100644
--- a/applications/solvers/compressible/rhoSimpleFoam/rhoPorousSimpleFoam/createFields.H
+++ b/applications/solvers/compressible/rhoSimpleFoam/rhoPorousSimpleFoam/createFields.H
@@ -51,8 +51,8 @@ dimensionedScalar rhoMax
     (
         "rhoMax",
         simple.dict(),
-        GREAT,
-        dimDensity
+        dimDensity,
+        GREAT
     )
 );
 
@@ -62,8 +62,8 @@ dimensionedScalar rhoMin
     (
         "rhoMin",
         simple.dict(),
-        0,
-        dimDensity
+        dimDensity,
+        0
     )
 );
 
diff --git a/applications/solvers/compressible/sonicFoam/sonicDyMFoam/sonicDyMFoam.C b/applications/solvers/compressible/sonicFoam/sonicDyMFoam/sonicDyMFoam.C
index 1fc630ca62c35a1f3b75bebf40f93ff923179500..8d913919d29d99dba9c587c0d5595292b44f786c 100644
--- a/applications/solvers/compressible/sonicFoam/sonicDyMFoam/sonicDyMFoam.C
+++ b/applications/solvers/compressible/sonicFoam/sonicDyMFoam/sonicDyMFoam.C
@@ -57,7 +57,7 @@ int main(int argc, char *argv[])
     #include "createMRF.H"
     #include "createFvOptions.H"
     #include "createRhoUf.H"
-    #include "CourantNo.H"
+    #include "compressibleCourantNo.H"
     #include "setInitialDeltaT.H"
 
     // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/createFluidFields.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/createFluidFields.H
index bd7452ae9e39ad73b7bdd45108ecbdbcdb6b2c9f..1811878bd738453bf1a8f4eebc23cc7396b8d39d 100644
--- a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/createFluidFields.H
+++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/createFluidFields.H
@@ -187,8 +187,8 @@ forAll(fluidRegions, i)
             (
                 "rhoMax",
                 simpleDict,
-                GREAT,
-                dimDensity
+                dimDensity,
+                GREAT
             )
         )
     );
@@ -202,8 +202,8 @@ forAll(fluidRegions, i)
             (
                 "rhoMin",
                 simpleDict,
-                0,
-                dimDensity
+                dimDensity,
+                0
             )
         )
     );
diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/solid/solveSolid.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/solid/solveSolid.H
index 49a945989d4875149861d30ae4cb9c8b3be7a41a..0600a1c65087524b1e38a03e59e97707ebe5f1d5 100644
--- a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/solid/solveSolid.H
+++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/solid/solveSolid.H
@@ -24,4 +24,5 @@
 
 thermo.correct();
 
-Info<< "Min/max T:" << min(thermo.T()) << ' ' << max(thermo.T()) << endl;
+Info<< "Min/max T:" << min(thermo.T()).value() << ' '
+    << max(thermo.T()).value() << endl;
diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/solveSolid.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/solveSolid.H
old mode 100644
new mode 100755
index 27f1737e52a25378d617c58a24e90bcb2f221ab4..49fd39e45b78e2a7ad389897076677352afdc1ee
--- a/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/solveSolid.H
+++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/solveSolid.H
@@ -30,7 +30,8 @@ if (finalIter)
 
 thermo.correct();
 
-Info<< "Min/max T:" << min(thermo.T()) << ' ' << max(thermo.T()) << endl;
+Info<< "Min/max T:" << min(thermo.T()).value() << ' '
+    << max(thermo.T()).value() << endl;
 
 if (finalIter)
 {
diff --git a/applications/solvers/lagrangian/coalChemistryFoam/coalChemistryFoam.C b/applications/solvers/lagrangian/coalChemistryFoam/coalChemistryFoam.C
index 99fc9feed17a10588fc1d62a1e4da29abecf3486..3bfb2be7764b0fca8f2ac5d0184c7355a118b3fc 100644
--- a/applications/solvers/lagrangian/coalChemistryFoam/coalChemistryFoam.C
+++ b/applications/solvers/lagrangian/coalChemistryFoam/coalChemistryFoam.C
@@ -70,7 +70,7 @@ int main(int argc, char *argv[])
 
     if (!LTS)
     {
-        #include "CourantNo.H"
+        #include "compressibleCourantNo.H"
         #include "setInitialDeltaT.H"
     }
 
diff --git a/applications/solvers/lagrangian/reactingParcelFoam/createFields.H b/applications/solvers/lagrangian/reactingParcelFoam/createFields.H
index 43c3d45e320490676f3f551974662d3b7011383b..9d05da04250c41c34fdb8e3d826aff657519c79b 100644
--- a/applications/solvers/lagrangian/reactingParcelFoam/createFields.H
+++ b/applications/solvers/lagrangian/reactingParcelFoam/createFields.H
@@ -64,8 +64,8 @@ dimensionedScalar rhoMax
     (
         "rhoMax",
         pimple.dict(),
-        GREAT,
-        dimDensity
+        dimDensity,
+        GREAT
     )
 );
 
@@ -75,8 +75,8 @@ dimensionedScalar rhoMin
     (
         "rhoMin",
         pimple.dict(),
-        0,
-        dimDensity
+        dimDensity,
+        0
     )
 );
 
diff --git a/applications/solvers/lagrangian/reactingParcelFoam/reactingParcelFoam.C b/applications/solvers/lagrangian/reactingParcelFoam/reactingParcelFoam.C
index e314d8b31882a8fb04090201d7b50798abbc5d1c..b3e758df12fedefb9e3a5a4d9aef460dd0e68309 100644
--- a/applications/solvers/lagrangian/reactingParcelFoam/reactingParcelFoam.C
+++ b/applications/solvers/lagrangian/reactingParcelFoam/reactingParcelFoam.C
@@ -65,7 +65,7 @@ int main(int argc, char *argv[])
 
     if (!LTS)
     {
-        #include "CourantNo.H"
+        #include "compressibleCourantNo.H"
         #include "setInitialDeltaT.H"
     }
 
diff --git a/applications/solvers/lagrangian/reactingParcelFoam/simpleReactingParcelFoam/createFields.H b/applications/solvers/lagrangian/reactingParcelFoam/simpleReactingParcelFoam/createFields.H
index 7e79f9fb7db552b4e2dcb78150f250a003d7947e..cfabbfb5b05fa41b8717fec5162d29292c1ad5f5 100644
--- a/applications/solvers/lagrangian/reactingParcelFoam/simpleReactingParcelFoam/createFields.H
+++ b/applications/solvers/lagrangian/reactingParcelFoam/simpleReactingParcelFoam/createFields.H
@@ -64,8 +64,8 @@ dimensionedScalar rhoMax
     (
         "rhoMax",
         simple.dict(),
-        GREAT,
-        dimDensity
+        dimDensity,
+        GREAT
     )
 );
 
@@ -75,8 +75,8 @@ dimensionedScalar rhoMin
     (
         "rhoMin",
         simple.dict(),
-        0,
-        dimDensity
+        dimDensity,
+        0
     )
 );
 
diff --git a/applications/solvers/lagrangian/sprayFoam/createFields.H b/applications/solvers/lagrangian/sprayFoam/createFields.H
index 721c3f8319ecda938c20533daf8c301e945cf5c6..7cc45050ce4dbfe94fabfaf9fc163a0608967506 100644
--- a/applications/solvers/lagrangian/sprayFoam/createFields.H
+++ b/applications/solvers/lagrangian/sprayFoam/createFields.H
@@ -64,8 +64,8 @@ dimensionedScalar rhoMax
     (
         "rhoMax",
         pimple.dict(),
-        GREAT,
-        dimDensity
+        dimDensity,
+        GREAT
     )
 );
 
@@ -75,8 +75,8 @@ dimensionedScalar rhoMin
     (
         "rhoMin",
         pimple.dict(),
-        0,
-        dimDensity
+        dimDensity,
+        0
     )
 );
 
diff --git a/applications/solvers/multiphase/cavitatingFoam/setInitialDeltaT.H b/applications/solvers/multiphase/cavitatingFoam/setInitialDeltaT.H
index b0516d1101f003523edd0a1ff541120eaefa9580..52c04603c429048c65e4d43c6b729c212a566450 100644
--- a/applications/solvers/multiphase/cavitatingFoam/setInitialDeltaT.H
+++ b/applications/solvers/multiphase/cavitatingFoam/setInitialDeltaT.H
@@ -32,8 +32,6 @@ Description
 
 if (adjustTimeStep)
 {
-    #include "CourantNo.H"
-
     if (CoNum > SMALL)
     {
         scalar maxDeltaTFact =
diff --git a/applications/solvers/multiphase/compressibleInterFoam/alphaEqns.H b/applications/solvers/multiphase/compressibleInterFoam/alphaEqns.H
index 41ed1cf9c0af6e7bf72c5936d4959f95452b7bd1..51dad81e77ee8563b432bef427ddac4db003d548 100644
--- a/applications/solvers/multiphase/compressibleInterFoam/alphaEqns.H
+++ b/applications/solvers/multiphase/compressibleInterFoam/alphaEqns.H
@@ -45,7 +45,7 @@
         }
 
 
-        surfaceScalarField phiAlpha1
+        surfaceScalarField alphaPhi1
         (
             fvc::flux
             (
@@ -66,7 +66,7 @@
             geometricOneField(),
             alpha1,
             phi,
-            phiAlpha1,
+            alphaPhi1,
             Sp,
             Su,
             1,
@@ -75,7 +75,7 @@
 
         surfaceScalarField rho1f(fvc::interpolate(rho1));
         surfaceScalarField rho2f(fvc::interpolate(rho2));
-        rhoPhi = phiAlpha1*(rho1f - rho2f) + phi*rho2f;
+        rhoPhi = alphaPhi1*(rho1f - rho2f) + phi*rho2f;
 
         alpha2 = scalar(1) - alpha1;
     }
diff --git a/applications/solvers/multiphase/compressibleMultiphaseInterFoam/multiphaseMixtureThermo/multiphaseMixtureThermo.C b/applications/solvers/multiphase/compressibleMultiphaseInterFoam/multiphaseMixtureThermo/multiphaseMixtureThermo.C
index 6eda25f9ff83899df17b0fab0e6a819d4fe2f9f3..7733cf13646be2b2af4a33742289dde88fc5c4a2 100644
--- a/applications/solvers/multiphase/compressibleMultiphaseInterFoam/multiphaseMixtureThermo/multiphaseMixtureThermo.C
+++ b/applications/solvers/multiphase/compressibleMultiphaseInterFoam/multiphaseMixtureThermo/multiphaseMixtureThermo.C
@@ -942,14 +942,14 @@ void Foam::multiphaseMixtureThermo::solveAlphas
     surfaceScalarField phic(mag(phi_/mesh_.magSf()));
     phic = min(cAlpha*phic, max(phic));
 
-    PtrList<surfaceScalarField> phiAlphaCorrs(phases_.size());
+    PtrList<surfaceScalarField> alphaPhiCorrs(phases_.size());
     int phasei = 0;
 
     forAllIter(PtrDictionary<phaseModel>, phases_, phase)
     {
         phaseModel& alpha = phase();
 
-        phiAlphaCorrs.set
+        alphaPhiCorrs.set
         (
             phasei,
             new surfaceScalarField
@@ -964,7 +964,7 @@ void Foam::multiphaseMixtureThermo::solveAlphas
             )
         );
 
-        surfaceScalarField& phiAlphaCorr = phiAlphaCorrs[phasei];
+        surfaceScalarField& alphaPhiCorr = alphaPhiCorrs[phasei];
 
         forAllIter(PtrDictionary<phaseModel>, phases_, phase2)
         {
@@ -974,7 +974,7 @@ void Foam::multiphaseMixtureThermo::solveAlphas
 
             surfaceScalarField phir(phic*nHatf(alpha, alpha2));
 
-            phiAlphaCorr += fvc::flux
+            alphaPhiCorr += fvc::flux
             (
                 -fvc::flux(-phir, alpha2, alpharScheme),
                 alpha,
@@ -988,7 +988,7 @@ void Foam::multiphaseMixtureThermo::solveAlphas
             geometricOneField(),
             alpha,
             phi_,
-            phiAlphaCorr,
+            alphaPhiCorr,
             zeroField(),
             zeroField(),
             1,
@@ -999,7 +999,7 @@ void Foam::multiphaseMixtureThermo::solveAlphas
         phasei++;
     }
 
-    MULES::limitSum(phiAlphaCorrs);
+    MULES::limitSum(alphaPhiCorrs);
 
     rhoPhi_ = dimensionedScalar("0", dimensionSet(1, 0, -1, 0, 0), 0);
 
@@ -1025,8 +1025,8 @@ void Foam::multiphaseMixtureThermo::solveAlphas
     {
         phaseModel& alpha = phase();
 
-        surfaceScalarField& phiAlpha = phiAlphaCorrs[phasei];
-        phiAlpha += upwind<scalar>(mesh_, phi_).flux(alpha);
+        surfaceScalarField& alphaPhi = alphaPhiCorrs[phasei];
+        alphaPhi += upwind<scalar>(mesh_, phi_).flux(alpha);
 
         volScalarField::DimensionedInternalField Sp
         (
@@ -1096,12 +1096,12 @@ void Foam::multiphaseMixtureThermo::solveAlphas
         (
             geometricOneField(),
             alpha,
-            phiAlpha,
+            alphaPhi,
             Sp,
             Su
         );
 
-        rhoPhi_ += fvc::interpolate(alpha.thermo().rho())*phiAlpha;
+        rhoPhi_ += fvc::interpolate(alpha.thermo().rho())*alphaPhi;
 
         Info<< alpha.name() << " volume fraction, min, max = "
             << alpha.weightedAverage(mesh_.V()).value()
diff --git a/applications/solvers/multiphase/compressibleMultiphaseInterFoam/multiphaseMixtureThermo/multiphaseMixtureThermo.H b/applications/solvers/multiphase/compressibleMultiphaseInterFoam/multiphaseMixtureThermo/multiphaseMixtureThermo.H
index 6d797d16c5bbcd3f43a6f91fa92a0c4850946295..a769a459144993492da0b12100b587312eb1258d 100644
--- a/applications/solvers/multiphase/compressibleMultiphaseInterFoam/multiphaseMixtureThermo/multiphaseMixtureThermo.H
+++ b/applications/solvers/multiphase/compressibleMultiphaseInterFoam/multiphaseMixtureThermo/multiphaseMixtureThermo.H
@@ -254,14 +254,14 @@ public:
             virtual volScalarField& he()
             {
                 notImplemented("multiphaseMixtureThermo::he()");
-                return phases_[0]->thermo().he();
+                return phases_[0].thermo().he();
             }
 
             //- Enthalpy/Internal energy [J/kg]
             virtual const volScalarField& he() const
             {
                 notImplemented("multiphaseMixtureThermo::he() const");
-                return phases_[0]->thermo().he();
+                return phases_[0].thermo().he();
             }
 
             //- Enthalpy/Internal energy
diff --git a/applications/solvers/multiphase/driftFluxFoam/alphaEqn.H b/applications/solvers/multiphase/driftFluxFoam/alphaEqn.H
index 954b2a8b3a9c1c7311a0c5dc99636e7735fea205..68f027cd2463e750c63e09b01966799816634b27 100644
--- a/applications/solvers/multiphase/driftFluxFoam/alphaEqn.H
+++ b/applications/solvers/multiphase/driftFluxFoam/alphaEqn.H
@@ -23,32 +23,32 @@
             << "  Max(" << alpha1.name() << ") = " << max(alpha1).value()
             << endl;
 
-        tmp<surfaceScalarField> tphiAlphaUD(alpha1Eqn.flux());
-        phiAlpha = tphiAlphaUD();
+        tmp<surfaceScalarField> talphaPhiUD(alpha1Eqn.flux());
+        alphaPhi = talphaPhiUD();
 
-        if (alphaApplyPrevCorr && tphiAlphaCorr0.valid())
+        if (alphaApplyPrevCorr && talphaPhiCorr0.valid())
         {
             Info<< "Applying the previous iteration correction flux" << endl;
 
             MULES::correct
             (
                 alpha1,
-                phiAlpha,
-                tphiAlphaCorr0(),
+                alphaPhi,
+                talphaPhiCorr0(),
                 mixture.alphaMax(),
                 0
             );
 
-            phiAlpha += tphiAlphaCorr0();
+            alphaPhi += talphaPhiCorr0();
         }
 
         // Cache the upwind-flux
-        tphiAlphaCorr0 = tphiAlphaUD;
+        talphaPhiCorr0 = talphaPhiUD;
     }
 
     for (int aCorr=0; aCorr<nAlphaCorr; aCorr++)
     {
-        tmp<surfaceScalarField> tphiAlphaUn
+        tmp<surfaceScalarField> talphaPhiUn
         (
             fvc::flux
             (
@@ -66,14 +66,14 @@
 
         if (MULESCorr)
         {
-            tmp<surfaceScalarField> tphiAlphaCorr(tphiAlphaUn() - phiAlpha);
+            tmp<surfaceScalarField> talphaPhiCorr(talphaPhiUn() - alphaPhi);
             volScalarField alpha10("alpha10", alpha1);
 
             MULES::correct
             (
                 alpha1,
-                tphiAlphaUn(),
-                tphiAlphaCorr(),
+                talphaPhiUn(),
+                talphaPhiCorr(),
                 mixture.alphaMax(),
                 0
             );
@@ -81,23 +81,23 @@
             // Under-relax the correction for all but the 1st corrector
             if (aCorr == 0)
             {
-                phiAlpha += tphiAlphaCorr();
+                alphaPhi += talphaPhiCorr();
             }
             else
             {
                 alpha1 = 0.5*alpha1 + 0.5*alpha10;
-                phiAlpha += 0.5*tphiAlphaCorr();
+                alphaPhi += 0.5*talphaPhiCorr();
             }
         }
         else
         {
-            phiAlpha = tphiAlphaUn;
+            alphaPhi = talphaPhiUn;
 
             MULES::explicitSolve
             (
                 alpha1,
                 phi,
-                phiAlpha,
+                alphaPhi,
                 mixture.alphaMax(),
                 0
             );
@@ -106,7 +106,7 @@
 
     if (alphaApplyPrevCorr && MULESCorr)
     {
-        tphiAlphaCorr0 = phiAlpha - tphiAlphaCorr0;
+        talphaPhiCorr0 = alphaPhi - talphaPhiCorr0;
     }
 
     alpha2 = 1.0 - alpha1;
diff --git a/applications/solvers/multiphase/driftFluxFoam/alphaEqnSubCycle.H b/applications/solvers/multiphase/driftFluxFoam/alphaEqnSubCycle.H
index 956bacf48dce00e2412aef5d62732cb077bddc5c..b586e77fad5a2928a4aac611f5dae8076c7e2b97 100644
--- a/applications/solvers/multiphase/driftFluxFoam/alphaEqnSubCycle.H
+++ b/applications/solvers/multiphase/driftFluxFoam/alphaEqnSubCycle.H
@@ -1,9 +1,9 @@
 {
-    surfaceScalarField phiAlpha
+    surfaceScalarField alphaPhi
     (
         IOobject
         (
-            "phiAlpha",
+            "alphaPhi",
             runTime.timeName(),
             mesh
         ),
@@ -19,11 +19,11 @@
     if (nAlphaSubCycles > 1)
     {
         dimensionedScalar totalDeltaT = runTime.deltaT();
-        surfaceScalarField phiAlphaSum
+        surfaceScalarField alphaPhiSum
         (
             IOobject
             (
-                "phiAlphaSum",
+                "alphaPhiSum",
                 runTime.timeName(),
                 mesh
             ),
@@ -38,10 +38,10 @@
         )
         {
             #include "alphaEqn.H"
-            phiAlphaSum += (runTime.deltaT()/totalDeltaT)*phiAlpha;
+            alphaPhiSum += (runTime.deltaT()/totalDeltaT)*alphaPhi;
         }
 
-        phiAlpha = phiAlphaSum;
+        alphaPhi = alphaPhiSum;
     }
     else
     {
@@ -59,7 +59,7 @@
 
         alpha1Eqn.solve(mesh.solver("alpha1Diffusion"));
 
-        phiAlpha += alpha1Eqn.flux();
+        alphaPhi += alpha1Eqn.flux();
         alpha2 = 1.0 - alpha1;
 
         Info<< "Phase-1 volume fraction = "
@@ -69,6 +69,6 @@
             << endl;
     }
 
-    rhoPhi = phiAlpha*(rho1 - rho2) + phi*rho2;
+    rhoPhi = alphaPhi*(rho1 - rho2) + phi*rho2;
     rho = mixture.rho();
 }
diff --git a/applications/solvers/multiphase/driftFluxFoam/createFields.H b/applications/solvers/multiphase/driftFluxFoam/createFields.H
index d2e8d1d93e1fcba1b91d78df9abca27d7a29d1dd..65d3d38eaec3c6e0f0375826e935709587931e1f 100644
--- a/applications/solvers/multiphase/driftFluxFoam/createFields.H
+++ b/applications/solvers/multiphase/driftFluxFoam/createFields.H
@@ -135,4 +135,4 @@ mesh.setFluxRequired(p_rgh.name());
 mesh.setFluxRequired(alpha1.name());
 
 // MULES Correction
-tmp<surfaceScalarField> tphiAlphaCorr0;
+tmp<surfaceScalarField> talphaPhiCorr0;
diff --git a/applications/solvers/multiphase/interFoam/alphaEqn.H b/applications/solvers/multiphase/interFoam/alphaEqn.H
index 4405c5801535762e1a15fe046b734838643d98be..a2e9097e309c1e108145a00eed2748ca2312d4b4 100644
--- a/applications/solvers/multiphase/interFoam/alphaEqn.H
+++ b/applications/solvers/multiphase/interFoam/alphaEqn.H
@@ -98,19 +98,19 @@
             << "  Max(" << alpha1.name() << ") = " << max(alpha1).value()
             << endl;
 
-        tmp<surfaceScalarField> tphiAlphaUD(alpha1Eqn.flux());
-        phiAlpha = tphiAlphaUD();
+        tmp<surfaceScalarField> talphaPhiUD(alpha1Eqn.flux());
+        alphaPhi = talphaPhiUD();
 
-        if (alphaApplyPrevCorr && tphiAlphaCorr0.valid())
+        if (alphaApplyPrevCorr && talphaPhiCorr0.valid())
         {
             Info<< "Applying the previous iteration compression flux" << endl;
-            MULES::correct(alpha1, phiAlpha, tphiAlphaCorr0(), 1, 0);
+            MULES::correct(alpha1, alphaPhi, talphaPhiCorr0(), 1, 0);
 
-            phiAlpha += tphiAlphaCorr0();
+            alphaPhi += talphaPhiCorr0();
         }
 
         // Cache the upwind-flux
-        tphiAlphaCorr0 = tphiAlphaUD;
+        talphaPhiCorr0 = talphaPhiUD;
 
         alpha2 = 1.0 - alpha1;
 
@@ -122,7 +122,7 @@
     {
         surfaceScalarField phir(phic*mixture.nHatf());
 
-        tmp<surfaceScalarField> tphiAlphaUn
+        tmp<surfaceScalarField> talphaPhiUn
         (
             fvc::flux
             (
@@ -141,33 +141,33 @@
         // Calculate the Crank-Nicolson off-centred alpha flux
         if (ocCoeff > 0)
         {
-            tphiAlphaUn =
-                cnCoeff*tphiAlphaUn + (1.0 - cnCoeff)*phiAlpha.oldTime();
+            talphaPhiUn =
+                cnCoeff*talphaPhiUn + (1.0 - cnCoeff)*alphaPhi.oldTime();
         }
 
         if (MULESCorr)
         {
-            tmp<surfaceScalarField> tphiAlphaCorr(tphiAlphaUn() - phiAlpha);
+            tmp<surfaceScalarField> talphaPhiCorr(talphaPhiUn() - alphaPhi);
             volScalarField alpha10("alpha10", alpha1);
 
-            MULES::correct(alpha1, tphiAlphaUn(), tphiAlphaCorr(), 1, 0);
+            MULES::correct(alpha1, talphaPhiUn(), talphaPhiCorr(), 1, 0);
 
             // Under-relax the correction for all but the 1st corrector
             if (aCorr == 0)
             {
-                phiAlpha += tphiAlphaCorr();
+                alphaPhi += talphaPhiCorr();
             }
             else
             {
                 alpha1 = 0.5*alpha1 + 0.5*alpha10;
-                phiAlpha += 0.5*tphiAlphaCorr();
+                alphaPhi += 0.5*talphaPhiCorr();
             }
         }
         else
         {
-            phiAlpha = tphiAlphaUn;
+            alphaPhi = talphaPhiUn;
 
-            MULES::explicitSolve(alpha1, phiCN, phiAlpha, 1, 0);
+            MULES::explicitSolve(alpha1, phiCN, alphaPhi, 1, 0);
         }
 
         alpha2 = 1.0 - alpha1;
@@ -177,7 +177,7 @@
 
     if (alphaApplyPrevCorr && MULESCorr)
     {
-        tphiAlphaCorr0 = phiAlpha - tphiAlphaCorr0;
+        talphaPhiCorr0 = alphaPhi - talphaPhiCorr0;
     }
 
     if
@@ -186,18 +186,18 @@
      == fv::EulerDdtScheme<vector>::typeName
     )
     {
-        rhoPhi = phiAlpha*(rho1 - rho2) + phiCN*rho2;
+        rhoPhi = alphaPhi*(rho1 - rho2) + phiCN*rho2;
     }
     else
     {
         if (ocCoeff > 0)
         {
             // Calculate the end-of-time-step alpha flux
-            phiAlpha = (phiAlpha - (1.0 - cnCoeff)*phiAlpha.oldTime())/cnCoeff;
+            alphaPhi = (alphaPhi - (1.0 - cnCoeff)*alphaPhi.oldTime())/cnCoeff;
         }
 
         // Calculate the end-of-time-step mass flux
-        rhoPhi = phiAlpha*(rho1 - rho2) + phi*rho2;
+        rhoPhi = alphaPhi*(rho1 - rho2) + phi*rho2;
     }
 
     Info<< "Phase-1 volume fraction = "
diff --git a/applications/solvers/multiphase/interFoam/createFields.H b/applications/solvers/multiphase/interFoam/createFields.H
index fc682190ce1a0b1c36acfe0f79ad3db44cb4bd4d..c3e65f24e36c8db20ac9281f966e0883b1fe8f4f 100644
--- a/applications/solvers/multiphase/interFoam/createFields.H
+++ b/applications/solvers/multiphase/interFoam/createFields.H
@@ -121,11 +121,11 @@ mesh.setFluxRequired(p_rgh.name());
 mesh.setFluxRequired(alpha1.name());
 
 // MULES flux from previous time-step
-surfaceScalarField phiAlpha
+surfaceScalarField alphaPhi
 (
     IOobject
     (
-        "phiAlpha",
+        "alphaPhi",
         runTime.timeName(),
         mesh,
         IOobject::READ_IF_PRESENT,
@@ -135,4 +135,4 @@ surfaceScalarField phiAlpha
 );
 
 // MULES Correction
-tmp<surfaceScalarField> tphiAlphaCorr0;
+tmp<surfaceScalarField> talphaPhiCorr0;
diff --git a/applications/solvers/multiphase/interFoam/interMixingFoam/alphaEqns.H b/applications/solvers/multiphase/interFoam/interMixingFoam/alphaEqns.H
index 9585905c08442f7c401e28b4e5325a2484a12770..d720aa97f654aa5d4f835efc4fe9f128b8f59a86 100644
--- a/applications/solvers/multiphase/interFoam/interMixingFoam/alphaEqns.H
+++ b/applications/solvers/multiphase/interFoam/interMixingFoam/alphaEqns.H
@@ -40,7 +40,7 @@
 
 
         // Create the complete convection flux for alpha1
-        surfaceScalarField phiAlpha1
+        surfaceScalarField alphaPhi1
         (
             fvc::flux
             (
@@ -63,13 +63,13 @@
         );
 
         // Create the bounded (upwind) flux for alpha1
-        surfaceScalarField phiAlpha1BD
+        surfaceScalarField alphaPhi1BD
         (
             upwind<scalar>(mesh, phi).flux(alpha1)
         );
 
         // Calculate the flux correction for alpha1
-        phiAlpha1 -= phiAlpha1BD;
+        alphaPhi1 -= alphaPhi1BD;
 
         // Calculate the limiter for alpha1
         if (LTS)
@@ -83,8 +83,8 @@
                 rDeltaT,
                 geometricOneField(),
                 alpha1,
-                phiAlpha1BD,
-                phiAlpha1,
+                alphaPhi1BD,
+                alphaPhi1,
                 zeroField(),
                 zeroField(),
                 1,
@@ -99,8 +99,8 @@
                 1.0/runTime.deltaT().value(),
                 geometricOneField(),
                 alpha1,
-                phiAlpha1BD,
-                phiAlpha1,
+                alphaPhi1BD,
+                alphaPhi1,
                 zeroField(),
                 zeroField(),
                 1,
@@ -109,7 +109,7 @@
         }
 
         // Create the complete flux for alpha2
-        surfaceScalarField phiAlpha2
+        surfaceScalarField alphaPhi2
         (
             fvc::flux
             (
@@ -126,13 +126,13 @@
         );
 
         // Create the bounded (upwind) flux for alpha2
-        surfaceScalarField phiAlpha2BD
+        surfaceScalarField alphaPhi2BD
         (
             upwind<scalar>(mesh, phi).flux(alpha2)
         );
 
         // Calculate the flux correction for alpha2
-        phiAlpha2 -= phiAlpha2BD;
+        alphaPhi2 -= alphaPhi2BD;
 
         // Further limit the limiter for alpha2
         if (LTS)
@@ -146,8 +146,8 @@
                 rDeltaT,
                 geometricOneField(),
                 alpha2,
-                phiAlpha2BD,
-                phiAlpha2,
+                alphaPhi2BD,
+                alphaPhi2,
                 zeroField(),
                 zeroField(),
                 1,
@@ -162,8 +162,8 @@
                 1.0/runTime.deltaT().value(),
                 geometricOneField(),
                 alpha2,
-                phiAlpha2BD,
-                phiAlpha2,
+                alphaPhi2BD,
+                alphaPhi2,
                 zeroField(),
                 zeroField(),
                 1,
@@ -172,32 +172,32 @@
         }
 
         // Construct the limited fluxes
-        phiAlpha1 = phiAlpha1BD + lambda*phiAlpha1;
-        phiAlpha2 = phiAlpha2BD + lambda*phiAlpha2;
+        alphaPhi1 = alphaPhi1BD + lambda*alphaPhi1;
+        alphaPhi2 = alphaPhi2BD + lambda*alphaPhi2;
 
         // Solve for alpha1
-        solve(fvm::ddt(alpha1) + fvc::div(phiAlpha1));
+        solve(fvm::ddt(alpha1) + fvc::div(alphaPhi1));
 
         // Create the diffusion coefficients for alpha2<->alpha3
         volScalarField Dc23(D23*max(alpha3, scalar(0))*pos(alpha2));
         volScalarField Dc32(D23*max(alpha2, scalar(0))*pos(alpha3));
 
         // Add the diffusive flux for alpha3->alpha2
-        phiAlpha2 -= fvc::interpolate(Dc32)*mesh.magSf()*fvc::snGrad(alpha1);
+        alphaPhi2 -= fvc::interpolate(Dc32)*mesh.magSf()*fvc::snGrad(alpha1);
 
         // Solve for alpha2
         fvScalarMatrix alpha2Eqn
         (
             fvm::ddt(alpha2)
-          + fvc::div(phiAlpha2)
+          + fvc::div(alphaPhi2)
           - fvm::laplacian(Dc23 + Dc32, alpha2)
         );
         alpha2Eqn.solve();
 
         // Construct the complete mass flux
         rhoPhi =
-              phiAlpha1*(rho1 - rho3)
-            + (phiAlpha2 + alpha2Eqn.flux())*(rho2 - rho3)
+              alphaPhi1*(rho1 - rho3)
+            + (alphaPhi2 + alpha2Eqn.flux())*(rho2 - rho3)
             + phi*rho3;
 
         alpha3 = 1.0 - alpha1 - alpha2;
diff --git a/applications/solvers/multiphase/interPhaseChangeFoam/alphaEqn.H b/applications/solvers/multiphase/interPhaseChangeFoam/alphaEqn.H
index bf506c2a70fa7a0d40532e96f9578068cea1ba52..172676b97fd4502b1e13ec686755934a643a9a8d 100644
--- a/applications/solvers/multiphase/interPhaseChangeFoam/alphaEqn.H
+++ b/applications/solvers/multiphase/interPhaseChangeFoam/alphaEqn.H
@@ -10,7 +10,7 @@
     const volScalarField& vDotvAlphal = vDotAlphal[1]();
     const volScalarField vDotvmcAlphal(vDotvAlphal - vDotcAlphal);
 
-    tmp<surfaceScalarField> tphiAlpha;
+    tmp<surfaceScalarField> talphaPhi;
 
     if (MULESCorr)
     {
@@ -37,14 +37,14 @@
             << "  Max(" << alpha1.name() << ") = " << max(alpha1).value()
             << endl;
 
-        tphiAlpha = alpha1Eqn.flux();
+        talphaPhi = alpha1Eqn.flux();
     }
 
     volScalarField alpha10("alpha10", alpha1);
 
     for (int aCorr=0; aCorr<nAlphaCorr; aCorr++)
     {
-        tmp<surfaceScalarField> tphiAlphaCorr
+        tmp<surfaceScalarField> talphaPhiCorr
         (
             fvc::flux
             (
@@ -62,7 +62,7 @@
 
         if (MULESCorr)
         {
-            tphiAlphaCorr() -= tphiAlpha();
+            talphaPhiCorr() -= talphaPhi();
 
             volScalarField alpha100("alpha100", alpha10);
             alpha10 = alpha1;
@@ -71,8 +71,8 @@
             (
                 geometricOneField(),
                 alpha1,
-                tphiAlpha(),
-                tphiAlphaCorr(),
+                talphaPhi(),
+                talphaPhiCorr(),
                 vDotvmcAlphal,
                 (
                     divU*(alpha10 - alpha100)
@@ -85,12 +85,12 @@
             // Under-relax the correction for all but the 1st corrector
             if (aCorr == 0)
             {
-                tphiAlpha() += tphiAlphaCorr();
+                talphaPhi() += talphaPhiCorr();
             }
             else
             {
                 alpha1 = 0.5*alpha1 + 0.5*alpha10;
-                tphiAlpha() += 0.5*tphiAlphaCorr();
+                talphaPhi() += 0.5*talphaPhiCorr();
             }
         }
         else
@@ -100,20 +100,20 @@
                 geometricOneField(),
                 alpha1,
                 phi,
-                tphiAlphaCorr(),
+                talphaPhiCorr(),
                 vDotvmcAlphal,
                 (divU*alpha1 + vDotcAlphal)(),
                 1,
                 0
             );
 
-            tphiAlpha = tphiAlphaCorr;
+            talphaPhi = talphaPhiCorr;
         }
 
         alpha2 = 1.0 - alpha1;
     }
 
-    rhoPhi = tphiAlpha()*(rho1 - rho2) + phi*rho2;
+    rhoPhi = talphaPhi()*(rho1 - rho2) + phi*rho2;
 
     Info<< "Liquid phase volume fraction = "
         << alpha1.weightedAverage(mesh.V()).value()
diff --git a/applications/solvers/multiphase/multiphaseEulerFoam/UEqns.H b/applications/solvers/multiphase/multiphaseEulerFoam/UEqns.H
index 6b9174def73d96be3889f36502b6fd8fd440136f..abad0dfaf042dc43be9b57fdc3040a18030195e1 100644
--- a/applications/solvers/multiphase/multiphaseEulerFoam/UEqns.H
+++ b/applications/solvers/multiphase/multiphaseEulerFoam/UEqns.H
@@ -18,7 +18,7 @@ forAllIter(PtrDictionary<phaseModel>, fluid.phases(), iter)
         new fvVectorMatrix
         (
             fvm::ddt(alpha, U)
-          + fvm::div(phase.phiAlpha(), U)
+          + fvm::div(phase.alphaPhi(), U)
 
           + (alpha/phase.rho())*fluid.Cvm(phase)*
             (
diff --git a/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseSystem/multiphaseSystem.C b/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseSystem/multiphaseSystem.C
index 01637a6cc153be6de55ef8d1c5787088aad25760..767600e394011a6cedce9e0b389ee4b489034b92 100644
--- a/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseSystem/multiphaseSystem.C
+++ b/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseSystem/multiphaseSystem.C
@@ -61,7 +61,7 @@ void Foam::multiphaseSystem::calcAlphas()
 
 void Foam::multiphaseSystem::solveAlphas()
 {
-    PtrList<surfaceScalarField> phiAlphaCorrs(phases_.size());
+    PtrList<surfaceScalarField> alphaPhiCorrs(phases_.size());
     int phasei = 0;
 
     forAllIter(PtrDictionary<phaseModel>, phases_, iter)
@@ -69,10 +69,10 @@ void Foam::multiphaseSystem::solveAlphas()
         phaseModel& phase1 = iter();
         volScalarField& alpha1 = phase1;
 
-        phase1.phiAlpha() =
+        phase1.alphaPhi() =
             dimensionedScalar("0", dimensionSet(0, 3, -1, 0, 0), 0);
 
-        phiAlphaCorrs.set
+        alphaPhiCorrs.set
         (
             phasei,
             new surfaceScalarField
@@ -87,7 +87,7 @@ void Foam::multiphaseSystem::solveAlphas()
             )
         );
 
-        surfaceScalarField& phiAlphaCorr = phiAlphaCorrs[phasei];
+        surfaceScalarField& alphaPhiCorr = alphaPhiCorrs[phasei];
 
         forAllIter(PtrDictionary<phaseModel>, phases_, iter2)
         {
@@ -118,7 +118,7 @@ void Foam::multiphaseSystem::solveAlphas()
                 "div(phir," + alpha2.name() + ',' + alpha1.name() + ')'
             );
 
-            phiAlphaCorr += fvc::flux
+            alphaPhiCorr += fvc::flux
             (
                 -fvc::flux(-phir, phase2, phirScheme),
                 phase1,
@@ -127,21 +127,21 @@ void Foam::multiphaseSystem::solveAlphas()
         }
 
         // Ensure that the flux at inflow BCs is preserved
-        forAll(phiAlphaCorr.boundaryField(), patchi)
+        forAll(alphaPhiCorr.boundaryField(), patchi)
         {
-            fvsPatchScalarField& phiAlphaCorrp =
-                phiAlphaCorr.boundaryField()[patchi];
+            fvsPatchScalarField& alphaPhiCorrp =
+                alphaPhiCorr.boundaryField()[patchi];
 
-            if (!phiAlphaCorrp.coupled())
+            if (!alphaPhiCorrp.coupled())
             {
                 const scalarField& phi1p = phase1.phi().boundaryField()[patchi];
                 const scalarField& alpha1p = alpha1.boundaryField()[patchi];
 
-                forAll(phiAlphaCorrp, facei)
+                forAll(alphaPhiCorrp, facei)
                 {
                     if (phi1p[facei] < 0)
                     {
-                        phiAlphaCorrp[facei] = alpha1p[facei]*phi1p[facei];
+                        alphaPhiCorrp[facei] = alpha1p[facei]*phi1p[facei];
                     }
                 }
             }
@@ -153,7 +153,7 @@ void Foam::multiphaseSystem::solveAlphas()
             geometricOneField(),
             phase1,
             phi_,
-            phiAlphaCorr,
+            alphaPhiCorr,
             zeroField(),
             zeroField(),
             1,
@@ -164,7 +164,7 @@ void Foam::multiphaseSystem::solveAlphas()
         phasei++;
     }
 
-    MULES::limitSum(phiAlphaCorrs);
+    MULES::limitSum(alphaPhiCorrs);
 
     volScalarField sumAlpha
     (
@@ -184,19 +184,19 @@ void Foam::multiphaseSystem::solveAlphas()
     {
         phaseModel& phase1 = iter();
 
-        surfaceScalarField& phiAlpha = phiAlphaCorrs[phasei];
-        phiAlpha += upwind<scalar>(mesh_, phi_).flux(phase1);
+        surfaceScalarField& alphaPhi = alphaPhiCorrs[phasei];
+        alphaPhi += upwind<scalar>(mesh_, phi_).flux(phase1);
 
         MULES::explicitSolve
         (
             geometricOneField(),
             phase1,
-            phiAlpha,
+            alphaPhi,
             zeroField(),
             zeroField()
         );
 
-        phase1.phiAlpha() += phiAlpha;
+        phase1.alphaPhi() += alphaPhi;
 
         Info<< phase1.name() << " volume fraction, min, max = "
             << phase1.weightedAverage(mesh_.V()).value()
@@ -888,7 +888,7 @@ void Foam::multiphaseSystem::solve()
         dimensionedScalar totalDeltaT = runTime.deltaT();
 
         PtrList<volScalarField> alpha0s(phases_.size());
-        PtrList<surfaceScalarField> phiSums(phases_.size());
+        PtrList<surfaceScalarField> alphaPhiSums(phases_.size());
 
         int phasei = 0;
         forAllIter(PtrDictionary<phaseModel>, phases_, iter)
@@ -902,7 +902,7 @@ void Foam::multiphaseSystem::solve()
                 new volScalarField(alpha.oldTime())
             );
 
-            phiSums.set
+            alphaPhiSums.set
             (
                 phasei,
                 new surfaceScalarField
@@ -936,7 +936,7 @@ void Foam::multiphaseSystem::solve()
             int phasei = 0;
             forAllIter(PtrDictionary<phaseModel>, phases_, iter)
             {
-                phiSums[phasei] += (runTime.deltaT()/totalDeltaT)*iter().phi();
+                alphaPhiSums[phasei] += iter().alphaPhi()/nAlphaSubCycles;
                 phasei++;
             }
         }
@@ -947,7 +947,7 @@ void Foam::multiphaseSystem::solve()
             phaseModel& phase = iter();
             volScalarField& alpha = phase;
 
-            phase.phi() = phiSums[phasei];
+            phase.alphaPhi() = alphaPhiSums[phasei];
 
             // Correct the time index of the field
             // to correspond to the global time
diff --git a/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseSystem/phaseModel/phaseModel.C b/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseSystem/phaseModel/phaseModel.C
index 9f6ed4ac731b7a57593fa8f785f569c3fc6b7660..f107cfb44059078808556c01ecfd3d4e3fe60a32 100644
--- a/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseSystem/phaseModel/phaseModel.C
+++ b/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseSystem/phaseModel/phaseModel.C
@@ -100,11 +100,11 @@ Foam::phaseModel::phaseModel
         mesh,
         dimensionedVector("0", dimVelocity/dimTime, vector::zero)
     ),
-    phiAlpha_
+    alphaPhi_
     (
         IOobject
         (
-            IOobject::groupName("phiAlpha", phaseName),
+            IOobject::groupName("alphaPhi", phaseName),
             mesh.time().timeName(),
             mesh
         ),
diff --git a/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseSystem/phaseModel/phaseModel.H b/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseSystem/phaseModel/phaseModel.H
index 54d6119e493e72b1208413cc6312df9a2150371f..d1f1157b9a1896da0e71281f4a058670e7a938d7 100644
--- a/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseSystem/phaseModel/phaseModel.H
+++ b/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseSystem/phaseModel/phaseModel.H
@@ -80,7 +80,7 @@ class phaseModel
         volVectorField DDtU_;
 
         //- Volumetric flux of the phase
-        surfaceScalarField phiAlpha_;
+        surfaceScalarField alphaPhi_;
 
         //- Volumetric flux for the phase
         autoPtr<surfaceScalarField> phiPtr_;
@@ -198,14 +198,14 @@ public:
             return phiPtr_();
         }
 
-        const surfaceScalarField& phiAlpha() const
+        const surfaceScalarField& alphaPhi() const
         {
-            return phiAlpha_;
+            return alphaPhi_;
         }
 
-        surfaceScalarField& phiAlpha()
+        surfaceScalarField& alphaPhi()
         {
-            return phiAlpha_;
+            return alphaPhi_;
         }
 
         //- Correct the phase properties
diff --git a/applications/solvers/multiphase/multiphaseInterFoam/multiphaseMixture/multiphaseMixture.C b/applications/solvers/multiphase/multiphaseInterFoam/multiphaseMixture/multiphaseMixture.C
index 16d1b5f80961de0a20eb0205deee8df7cf75500b..f1305897ba10d1b24bb0a52e6175c20e8d20ef65 100644
--- a/applications/solvers/multiphase/multiphaseInterFoam/multiphaseMixture/multiphaseMixture.C
+++ b/applications/solvers/multiphase/multiphaseInterFoam/multiphaseMixture/multiphaseMixture.C
@@ -573,14 +573,14 @@ void Foam::multiphaseMixture::solveAlphas
     surfaceScalarField phic(mag(phi_/mesh_.magSf()));
     phic = min(cAlpha*phic, max(phic));
 
-    PtrList<surfaceScalarField> phiAlphaCorrs(phases_.size());
+    PtrList<surfaceScalarField> alphaPhiCorrs(phases_.size());
     int phasei = 0;
 
     forAllIter(PtrDictionary<phase>, phases_, iter)
     {
         phase& alpha = iter();
 
-        phiAlphaCorrs.set
+        alphaPhiCorrs.set
         (
             phasei,
             new surfaceScalarField
@@ -595,7 +595,7 @@ void Foam::multiphaseMixture::solveAlphas
             )
         );
 
-        surfaceScalarField& phiAlphaCorr = phiAlphaCorrs[phasei];
+        surfaceScalarField& alphaPhiCorr = alphaPhiCorrs[phasei];
 
         forAllIter(PtrDictionary<phase>, phases_, iter2)
         {
@@ -605,7 +605,7 @@ void Foam::multiphaseMixture::solveAlphas
 
             surfaceScalarField phir(phic*nHatf(alpha, alpha2));
 
-            phiAlphaCorr += fvc::flux
+            alphaPhiCorr += fvc::flux
             (
                 -fvc::flux(-phir, alpha2, alpharScheme),
                 alpha,
@@ -619,7 +619,7 @@ void Foam::multiphaseMixture::solveAlphas
             geometricOneField(),
             alpha,
             phi_,
-            phiAlphaCorr,
+            alphaPhiCorr,
             zeroField(),
             zeroField(),
             1,
@@ -630,7 +630,7 @@ void Foam::multiphaseMixture::solveAlphas
         phasei++;
     }
 
-    MULES::limitSum(phiAlphaCorrs);
+    MULES::limitSum(alphaPhiCorrs);
 
     rhoPhi_ = dimensionedScalar("0", dimensionSet(1, 0, -1, 0, 0), 0);
 
@@ -652,19 +652,19 @@ void Foam::multiphaseMixture::solveAlphas
     {
         phase& alpha = iter();
 
-        surfaceScalarField& phiAlpha = phiAlphaCorrs[phasei];
-        phiAlpha += upwind<scalar>(mesh_, phi_).flux(alpha);
+        surfaceScalarField& alphaPhi = alphaPhiCorrs[phasei];
+        alphaPhi += upwind<scalar>(mesh_, phi_).flux(alpha);
 
         MULES::explicitSolve
         (
             geometricOneField(),
             alpha,
-            phiAlpha,
+            alphaPhi,
             zeroField(),
             zeroField()
         );
 
-        rhoPhi_ += phiAlpha*alpha.rho();
+        rhoPhi_ += alphaPhi*alpha.rho();
 
         Info<< alpha.name() << " volume fraction, min, max = "
             << alpha.weightedAverage(mesh_.V()).value()
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/Allwclean b/applications/solvers/multiphase/reactingEulerFoam/Allwclean
similarity index 77%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/Allwclean
rename to applications/solvers/multiphase/reactingEulerFoam/Allwclean
index ac1a48d1a8e04429798b107d93682def88ecfc3a..618570ccbb216ece90b34917fb8af9962bf6016e 100755
--- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/Allwclean
+++ b/applications/solvers/multiphase/reactingEulerFoam/Allwclean
@@ -5,7 +5,7 @@ set -x
 wclean libso phaseSystems
 wclean libso interfacialModels
 wclean libso interfacialCompositionModels
-wclean libso phaseCompressibleTurbulenceModels
-wclean
+reactingTwoPhaseEulerFoam/Allwclean
+reactingMultiphaseEulerFoam/Allwclean
 
 # ----------------------------------------------------------------- end-of-file
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/Allwmake b/applications/solvers/multiphase/reactingEulerFoam/Allwmake
similarity index 81%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/Allwmake
rename to applications/solvers/multiphase/reactingEulerFoam/Allwmake
index 2566b5a1eb0c768e79d638cde3c1f3b22529fc72..91c6cd94917756b6b2dc8d0fa72f6545aa3ef3b8 100755
--- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/Allwmake
+++ b/applications/solvers/multiphase/reactingEulerFoam/Allwmake
@@ -7,7 +7,7 @@ wmakeLnInclude interfacialCompositionModels
 wmake libso phaseSystems
 wmake libso interfacialModels
 wmake libso interfacialCompositionModels
-wmake libso phaseCompressibleTurbulenceModels
-wmake
+reactingTwoPhaseEulerFoam/Allwmake
+reactingMultiphaseEulerFoam/Allwmake
 
 # ----------------------------------------------------------------- end-of-file
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/Make/files b/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/Make/files
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/Make/files
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/Make/files
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/Make/options b/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/Make/options
similarity index 97%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/Make/options
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/Make/options
index 088d504706bbd4e2989e16e4bc6982ca225edffc..b25751cd2d0b5bd8cdb7371d3f5659130819cbb4 100644
--- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/Make/options
+++ b/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/Make/options
@@ -21,7 +21,6 @@ EXE_INC = \
     -I$(LIB_SRC)/meshTools/lnInclude
 
 LIB_LIBS = \
-    -lreactingTwoPhaseSystem \
     -lfluidThermophysicalModels \
     -lreactionThermophysicalModels \
     -lspecie
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Henry/Henry.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Henry/Henry.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Henry/Henry.C
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Henry/Henry.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Henry/Henry.H b/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Henry/Henry.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Henry/Henry.H
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Henry/Henry.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/InterfaceCompositionModel/InterfaceCompositionModel.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/interfaceCompositionModels/InterfaceCompositionModel/InterfaceCompositionModel.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/InterfaceCompositionModel/InterfaceCompositionModel.C
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/interfaceCompositionModels/InterfaceCompositionModel/InterfaceCompositionModel.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/InterfaceCompositionModel/InterfaceCompositionModel.H b/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/interfaceCompositionModels/InterfaceCompositionModel/InterfaceCompositionModel.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/InterfaceCompositionModel/InterfaceCompositionModel.H
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/interfaceCompositionModels/InterfaceCompositionModel/InterfaceCompositionModel.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/InterfaceCompositionModel/InterfaceCompositionModels.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/interfaceCompositionModels/InterfaceCompositionModel/InterfaceCompositionModels.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/InterfaceCompositionModel/InterfaceCompositionModels.C
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/interfaceCompositionModels/InterfaceCompositionModel/InterfaceCompositionModels.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/NonRandomTwoLiquid/NonRandomTwoLiquid.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/interfaceCompositionModels/NonRandomTwoLiquid/NonRandomTwoLiquid.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/NonRandomTwoLiquid/NonRandomTwoLiquid.C
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/interfaceCompositionModels/NonRandomTwoLiquid/NonRandomTwoLiquid.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/NonRandomTwoLiquid/NonRandomTwoLiquid.H b/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/interfaceCompositionModels/NonRandomTwoLiquid/NonRandomTwoLiquid.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/NonRandomTwoLiquid/NonRandomTwoLiquid.H
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/interfaceCompositionModels/NonRandomTwoLiquid/NonRandomTwoLiquid.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Raoult/Raoult.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Raoult/Raoult.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Raoult/Raoult.C
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Raoult/Raoult.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Raoult/Raoult.H b/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Raoult/Raoult.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Raoult/Raoult.H
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Raoult/Raoult.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Saturated/Saturated.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Saturated/Saturated.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Saturated/Saturated.C
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Saturated/Saturated.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Saturated/Saturated.H b/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Saturated/Saturated.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Saturated/Saturated.H
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Saturated/Saturated.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/interfaceCompositionModel/interfaceCompositionModel.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/interfaceCompositionModels/interfaceCompositionModel/interfaceCompositionModel.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/interfaceCompositionModel/interfaceCompositionModel.C
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/interfaceCompositionModels/interfaceCompositionModel/interfaceCompositionModel.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/interfaceCompositionModel/interfaceCompositionModel.H b/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/interfaceCompositionModels/interfaceCompositionModel/interfaceCompositionModel.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/interfaceCompositionModel/interfaceCompositionModel.H
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/interfaceCompositionModels/interfaceCompositionModel/interfaceCompositionModel.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/interfaceCompositionModel/newInterfaceCompositionModel.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/interfaceCompositionModels/interfaceCompositionModel/newInterfaceCompositionModel.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/interfaceCompositionModel/newInterfaceCompositionModel.C
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/interfaceCompositionModels/interfaceCompositionModel/newInterfaceCompositionModel.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/Frossling/Frossling.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/massTransferModels/Frossling/Frossling.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/Frossling/Frossling.C
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/massTransferModels/Frossling/Frossling.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/Frossling/Frossling.H b/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/massTransferModels/Frossling/Frossling.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/Frossling/Frossling.H
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/massTransferModels/Frossling/Frossling.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/massTransferModel/massTransferModel.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/massTransferModels/massTransferModel/massTransferModel.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/massTransferModel/massTransferModel.C
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/massTransferModels/massTransferModel/massTransferModel.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/massTransferModel/massTransferModel.H b/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/massTransferModels/massTransferModel/massTransferModel.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/massTransferModel/massTransferModel.H
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/massTransferModels/massTransferModel/massTransferModel.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/massTransferModel/newMassTransferModel.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/massTransferModels/massTransferModel/newMassTransferModel.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/massTransferModel/newMassTransferModel.C
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/massTransferModels/massTransferModel/newMassTransferModel.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/sphericalMassTransfer/sphericalMassTransfer.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/massTransferModels/sphericalMassTransfer/sphericalMassTransfer.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/sphericalMassTransfer/sphericalMassTransfer.C
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/massTransferModels/sphericalMassTransfer/sphericalMassTransfer.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/sphericalMassTransfer/sphericalMassTransfer.H b/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/massTransferModels/sphericalMassTransfer/sphericalMassTransfer.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/sphericalMassTransfer/sphericalMassTransfer.H
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/massTransferModels/sphericalMassTransfer/sphericalMassTransfer.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationModels/Antoine/Antoine.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/saturationModels/Antoine/Antoine.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationModels/Antoine/Antoine.C
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/saturationModels/Antoine/Antoine.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationModels/Antoine/Antoine.H b/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/saturationModels/Antoine/Antoine.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationModels/Antoine/Antoine.H
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/saturationModels/Antoine/Antoine.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationModels/AntoineExtended/AntoineExtended.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/saturationModels/AntoineExtended/AntoineExtended.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationModels/AntoineExtended/AntoineExtended.C
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/saturationModels/AntoineExtended/AntoineExtended.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationModels/AntoineExtended/AntoineExtended.H b/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/saturationModels/AntoineExtended/AntoineExtended.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationModels/AntoineExtended/AntoineExtended.H
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/saturationModels/AntoineExtended/AntoineExtended.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationModels/ArdenBuck/ArdenBuck.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/saturationModels/ArdenBuck/ArdenBuck.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationModels/ArdenBuck/ArdenBuck.C
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/saturationModels/ArdenBuck/ArdenBuck.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationModels/ArdenBuck/ArdenBuck.H b/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/saturationModels/ArdenBuck/ArdenBuck.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationModels/ArdenBuck/ArdenBuck.H
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/saturationModels/ArdenBuck/ArdenBuck.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationModels/constantSaturationConditions/constantSaturationConditions.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/saturationModels/constantSaturationConditions/constantSaturationConditions.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationModels/constantSaturationConditions/constantSaturationConditions.C
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/saturationModels/constantSaturationConditions/constantSaturationConditions.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationModels/constantSaturationConditions/constantSaturationConditions.H b/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/saturationModels/constantSaturationConditions/constantSaturationConditions.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationModels/constantSaturationConditions/constantSaturationConditions.H
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/saturationModels/constantSaturationConditions/constantSaturationConditions.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationModels/saturationModel/newSaturationModel.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/saturationModels/saturationModel/newSaturationModel.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationModels/saturationModel/newSaturationModel.C
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/saturationModels/saturationModel/newSaturationModel.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationModels/saturationModel/saturationModel.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/saturationModels/saturationModel/saturationModel.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationModels/saturationModel/saturationModel.C
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/saturationModels/saturationModel/saturationModel.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationModels/saturationModel/saturationModel.H b/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/saturationModels/saturationModel/saturationModel.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationModels/saturationModel/saturationModel.H
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/saturationModels/saturationModel/saturationModel.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/surfaceTensionModels/constantSurfaceTensionCoefficient/constantSurfaceTensionCoefficient.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/surfaceTensionModels/constantSurfaceTensionCoefficient/constantSurfaceTensionCoefficient.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/surfaceTensionModels/constantSurfaceTensionCoefficient/constantSurfaceTensionCoefficient.C
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/surfaceTensionModels/constantSurfaceTensionCoefficient/constantSurfaceTensionCoefficient.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/surfaceTensionModels/constantSurfaceTensionCoefficient/constantSurfaceTensionCoefficient.H b/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/surfaceTensionModels/constantSurfaceTensionCoefficient/constantSurfaceTensionCoefficient.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/surfaceTensionModels/constantSurfaceTensionCoefficient/constantSurfaceTensionCoefficient.H
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/surfaceTensionModels/constantSurfaceTensionCoefficient/constantSurfaceTensionCoefficient.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/surfaceTensionModels/surfaceTensionModel/newSurfaceTensionModel.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/surfaceTensionModels/surfaceTensionModel/newSurfaceTensionModel.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/surfaceTensionModels/surfaceTensionModel/newSurfaceTensionModel.C
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/surfaceTensionModels/surfaceTensionModel/newSurfaceTensionModel.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/surfaceTensionModels/surfaceTensionModel/surfaceTensionModel.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/surfaceTensionModels/surfaceTensionModel/surfaceTensionModel.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/surfaceTensionModels/surfaceTensionModel/surfaceTensionModel.C
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/surfaceTensionModels/surfaceTensionModel/surfaceTensionModel.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/surfaceTensionModels/surfaceTensionModel/surfaceTensionModel.H b/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/surfaceTensionModels/surfaceTensionModel/surfaceTensionModel.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/surfaceTensionModels/surfaceTensionModel/surfaceTensionModel.H
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/surfaceTensionModels/surfaceTensionModel/surfaceTensionModel.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/Make/files b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/Make/files
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/Make/files
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/Make/files
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/Make/options b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/Make/options
similarity index 94%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/Make/options
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/Make/options
index ba5bb85f9930a4c9504525e4941d938b31d701c7..1e5f8f0aea9bcef1a5c8740a80c1941b44464674 100644
--- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/Make/options
+++ b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/Make/options
@@ -10,7 +10,6 @@ EXE_INC = \
     -I$(LIB_SRC)/meshTools/lnInclude
 
 LIB_LIBS = \
-    -lreactingTwoPhaseSystem \
     -lcompressibleTransportModels \
     -lfluidThermophysicalModels \
     -lspecie
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/TomiyamaAspectRatio/TomiyamaAspectRatio.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/aspectRatioModels/TomiyamaAspectRatio/TomiyamaAspectRatio.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/TomiyamaAspectRatio/TomiyamaAspectRatio.C
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/aspectRatioModels/TomiyamaAspectRatio/TomiyamaAspectRatio.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/TomiyamaAspectRatio/TomiyamaAspectRatio.H b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/aspectRatioModels/TomiyamaAspectRatio/TomiyamaAspectRatio.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/TomiyamaAspectRatio/TomiyamaAspectRatio.H
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/aspectRatioModels/TomiyamaAspectRatio/TomiyamaAspectRatio.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/VakhrushevEfremov/VakhrushevEfremov.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/aspectRatioModels/VakhrushevEfremov/VakhrushevEfremov.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/VakhrushevEfremov/VakhrushevEfremov.C
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/aspectRatioModels/VakhrushevEfremov/VakhrushevEfremov.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/VakhrushevEfremov/VakhrushevEfremov.H b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/aspectRatioModels/VakhrushevEfremov/VakhrushevEfremov.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/VakhrushevEfremov/VakhrushevEfremov.H
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/aspectRatioModels/VakhrushevEfremov/VakhrushevEfremov.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/Wellek/Wellek.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/aspectRatioModels/Wellek/Wellek.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/Wellek/Wellek.C
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/aspectRatioModels/Wellek/Wellek.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/Wellek/Wellek.H b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/aspectRatioModels/Wellek/Wellek.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/Wellek/Wellek.H
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/aspectRatioModels/Wellek/Wellek.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/aspectRatioModel/aspectRatioModel.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/aspectRatioModels/aspectRatioModel/aspectRatioModel.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/aspectRatioModel/aspectRatioModel.C
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/aspectRatioModels/aspectRatioModel/aspectRatioModel.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/aspectRatioModel/aspectRatioModel.H b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/aspectRatioModels/aspectRatioModel/aspectRatioModel.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/aspectRatioModel/aspectRatioModel.H
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/aspectRatioModels/aspectRatioModel/aspectRatioModel.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/aspectRatioModel/newAspectRatioModel.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/aspectRatioModels/aspectRatioModel/newAspectRatioModel.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/aspectRatioModel/newAspectRatioModel.C
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/aspectRatioModels/aspectRatioModel/newAspectRatioModel.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/constantAspectRatio/constantAspectRatio.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/aspectRatioModels/constantAspectRatio/constantAspectRatio.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/constantAspectRatio/constantAspectRatio.C
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/aspectRatioModels/constantAspectRatio/constantAspectRatio.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/constantAspectRatio/constantAspectRatio.H b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/aspectRatioModels/constantAspectRatio/constantAspectRatio.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/constantAspectRatio/constantAspectRatio.H
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/aspectRatioModels/constantAspectRatio/constantAspectRatio.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/Ergun/Ergun.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/dragModels/Ergun/Ergun.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/Ergun/Ergun.C
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/dragModels/Ergun/Ergun.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/Ergun/Ergun.H b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/dragModels/Ergun/Ergun.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/Ergun/Ergun.H
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/dragModels/Ergun/Ergun.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/Gibilaro/Gibilaro.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/dragModels/Gibilaro/Gibilaro.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/Gibilaro/Gibilaro.C
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/dragModels/Gibilaro/Gibilaro.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/Gibilaro/Gibilaro.H b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/dragModels/Gibilaro/Gibilaro.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/Gibilaro/Gibilaro.H
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/dragModels/Gibilaro/Gibilaro.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/GidaspowErgunWenYu/GidaspowErgunWenYu.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/dragModels/GidaspowErgunWenYu/GidaspowErgunWenYu.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/GidaspowErgunWenYu/GidaspowErgunWenYu.C
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/dragModels/GidaspowErgunWenYu/GidaspowErgunWenYu.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/GidaspowErgunWenYu/GidaspowErgunWenYu.H b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/dragModels/GidaspowErgunWenYu/GidaspowErgunWenYu.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/GidaspowErgunWenYu/GidaspowErgunWenYu.H
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/dragModels/GidaspowErgunWenYu/GidaspowErgunWenYu.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/GidaspowSchillerNaumann/GidaspowSchillerNaumann.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/dragModels/GidaspowSchillerNaumann/GidaspowSchillerNaumann.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/GidaspowSchillerNaumann/GidaspowSchillerNaumann.C
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/dragModels/GidaspowSchillerNaumann/GidaspowSchillerNaumann.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/GidaspowSchillerNaumann/GidaspowSchillerNaumann.H b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/dragModels/GidaspowSchillerNaumann/GidaspowSchillerNaumann.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/GidaspowSchillerNaumann/GidaspowSchillerNaumann.H
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/dragModels/GidaspowSchillerNaumann/GidaspowSchillerNaumann.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/IshiiZuber/IshiiZuber.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/dragModels/IshiiZuber/IshiiZuber.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/IshiiZuber/IshiiZuber.C
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/dragModels/IshiiZuber/IshiiZuber.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/IshiiZuber/IshiiZuber.H b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/dragModels/IshiiZuber/IshiiZuber.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/IshiiZuber/IshiiZuber.H
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/dragModels/IshiiZuber/IshiiZuber.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/Lain/Lain.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/dragModels/Lain/Lain.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/Lain/Lain.C
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/dragModels/Lain/Lain.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/Lain/Lain.H b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/dragModels/Lain/Lain.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/Lain/Lain.H
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/dragModels/Lain/Lain.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/SchillerNaumann/SchillerNaumann.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/dragModels/SchillerNaumann/SchillerNaumann.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/SchillerNaumann/SchillerNaumann.C
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/dragModels/SchillerNaumann/SchillerNaumann.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/SchillerNaumann/SchillerNaumann.H b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/dragModels/SchillerNaumann/SchillerNaumann.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/SchillerNaumann/SchillerNaumann.H
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/dragModels/SchillerNaumann/SchillerNaumann.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/SyamlalOBrien/SyamlalOBrien.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/dragModels/SyamlalOBrien/SyamlalOBrien.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/SyamlalOBrien/SyamlalOBrien.C
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/dragModels/SyamlalOBrien/SyamlalOBrien.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/SyamlalOBrien/SyamlalOBrien.H b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/dragModels/SyamlalOBrien/SyamlalOBrien.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/SyamlalOBrien/SyamlalOBrien.H
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/dragModels/SyamlalOBrien/SyamlalOBrien.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/TomiyamaAnalytic/TomiyamaAnalytic.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/dragModels/TomiyamaAnalytic/TomiyamaAnalytic.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/TomiyamaAnalytic/TomiyamaAnalytic.C
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/dragModels/TomiyamaAnalytic/TomiyamaAnalytic.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/TomiyamaAnalytic/TomiyamaAnalytic.H b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/dragModels/TomiyamaAnalytic/TomiyamaAnalytic.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/TomiyamaAnalytic/TomiyamaAnalytic.H
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/dragModels/TomiyamaAnalytic/TomiyamaAnalytic.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/TomiyamaCorrelated/TomiyamaCorrelated.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/dragModels/TomiyamaCorrelated/TomiyamaCorrelated.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/TomiyamaCorrelated/TomiyamaCorrelated.C
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/dragModels/TomiyamaCorrelated/TomiyamaCorrelated.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/TomiyamaCorrelated/TomiyamaCorrelated.H b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/dragModels/TomiyamaCorrelated/TomiyamaCorrelated.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/TomiyamaCorrelated/TomiyamaCorrelated.H
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/dragModels/TomiyamaCorrelated/TomiyamaCorrelated.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/WenYu/WenYu.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/dragModels/WenYu/WenYu.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/WenYu/WenYu.C
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/dragModels/WenYu/WenYu.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/WenYu/WenYu.H b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/dragModels/WenYu/WenYu.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/WenYu/WenYu.H
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/dragModels/WenYu/WenYu.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/dragModel/dragModel.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/dragModels/dragModel/dragModel.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/dragModel/dragModel.C
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/dragModels/dragModel/dragModel.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/dragModel/dragModel.H b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/dragModels/dragModel/dragModel.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/dragModel/dragModel.H
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/dragModels/dragModel/dragModel.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/dragModel/newDragModel.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/dragModels/dragModel/newDragModel.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/dragModel/newDragModel.C
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/dragModels/dragModel/newDragModel.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/segregated/segregated.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/dragModels/segregated/segregated.C
similarity index 96%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/segregated/segregated.C
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/dragModels/segregated/segregated.C
index 4b1fc88ddc5e6be40b99f12f341c5d75c390798e..2f3e0db69922a1e91b84b60393beed349d13b1a8 100644
--- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/segregated/segregated.C
+++ b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/dragModels/segregated/segregated.C
@@ -132,7 +132,10 @@ Foam::tmp<Foam::volScalarField> Foam::dragModels::segregated::K() const
     volScalarField muAlphaI
     (
         alpha1*rho1*nu1*alpha2*rho2*nu2
-       /(alpha1*rho1*nu1 + alpha2*rho2*nu2)
+       /(
+           max(alpha1, pair_.phase1().residualAlpha())*rho1*nu1
+         + max(alpha2, pair_.phase2().residualAlpha())*rho2*nu2
+        )
     );
 
     volScalarField ReI
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/segregated/segregated.H b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/dragModels/segregated/segregated.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/segregated/segregated.H
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/dragModels/segregated/segregated.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/RanzMarshall/RanzMarshall.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/heatTransferModels/RanzMarshall/RanzMarshall.C
similarity index 94%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/RanzMarshall/RanzMarshall.C
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/heatTransferModels/RanzMarshall/RanzMarshall.C
index 7e1693dfed28aea4c31021fbbb78c482773feb5c..9b65bb82f77c922998b1cc6a57602b77515f0bd9 100644
--- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/RanzMarshall/RanzMarshall.C
+++ b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/heatTransferModels/RanzMarshall/RanzMarshall.C
@@ -60,13 +60,13 @@ Foam::heatTransferModels::RanzMarshall::~RanzMarshall()
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 Foam::tmp<Foam::volScalarField>
-Foam::heatTransferModels::RanzMarshall::K() const
+Foam::heatTransferModels::RanzMarshall::K(const scalar residualAlpha) const
 {
     volScalarField Nu(scalar(2) + 0.6*sqrt(pair_.Re())*cbrt(pair_.Pr()));
 
     return
         6.0
-       *max(pair_.dispersed(), residualAlpha_)
+       *max(pair_.dispersed(), residualAlpha)
        *pair_.continuous().kappa()
        *Nu
        /sqr(pair_.dispersed().d());
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/RanzMarshall/RanzMarshall.H b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/heatTransferModels/RanzMarshall/RanzMarshall.H
similarity index 97%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/RanzMarshall/RanzMarshall.H
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/heatTransferModels/RanzMarshall/RanzMarshall.H
index c02126528a03c8ddd8c503120b0263a03cb17492..a4987ab0afb0d560298ee35368727f7dc45c5fc5 100644
--- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/RanzMarshall/RanzMarshall.H
+++ b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/heatTransferModels/RanzMarshall/RanzMarshall.H
@@ -79,7 +79,7 @@ public:
     // Member Functions
 
         //- The heat transfer function K used in the enthalpy equation
-        tmp<volScalarField> K() const;
+        tmp<volScalarField> K(const scalar residualAlpha) const;
 };
 
 
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/heatTransferModel/heatTransferModel.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/heatTransferModels/heatTransferModel/heatTransferModel.C
similarity index 91%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/heatTransferModel/heatTransferModel.C
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/heatTransferModels/heatTransferModel/heatTransferModel.C
index 1621b6be19dbeb3fdcaee31f379d0569c8a201cd..3a75fbf3d1f809cc99dfd57b1eab34c487466176 100644
--- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/heatTransferModel/heatTransferModel.C
+++ b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/heatTransferModels/heatTransferModel/heatTransferModel.C
@@ -65,4 +65,13 @@ Foam::heatTransferModel::~heatTransferModel()
 {}
 
 
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volScalarField>
+Foam::heatTransferModel::K() const
+{
+    return K(residualAlpha_.value());
+}
+
+
 // ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/heatTransferModel/heatTransferModel.H b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/heatTransferModels/heatTransferModel/heatTransferModel.H
similarity index 90%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/heatTransferModel/heatTransferModel.H
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/heatTransferModels/heatTransferModel/heatTransferModel.H
index 6276e8aee14661d8c789eca3872ec45833a7540a..130b82198b336641f39f1d789aa64c1339daaf78 100644
--- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/heatTransferModel/heatTransferModel.H
+++ b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/heatTransferModels/heatTransferModel/heatTransferModel.H
@@ -117,7 +117,13 @@ public:
         //- The heat transfer function K used in the enthalpy equation
         //    ddt(alpha1*rho1*ha) + ... = ... K*(Ta - Tb)
         //    ddt(alpha2*rho2*hb) + ... = ... K*(Tb - Ta)
-        virtual tmp<volScalarField> K() const = 0;
+        tmp<volScalarField> K() const;
+
+        //- The heat transfer function K used in the enthalpy equation
+        //    ddt(alpha1*rho1*ha) + ... = ... K*(Ta - Tb)
+        //    ddt(alpha2*rho2*hb) + ... = ... K*(Tb - Ta)
+        //  with a specified residual volume fraction
+        virtual tmp<volScalarField> K(const scalar residualAlpha) const = 0;
 };
 
 
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/heatTransferModel/newHeatTransferModel.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/heatTransferModels/heatTransferModel/newHeatTransferModel.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/heatTransferModel/newHeatTransferModel.C
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/heatTransferModels/heatTransferModel/newHeatTransferModel.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/sphericalHeatTransfer/sphericalHeatTransfer.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/heatTransferModels/sphericalHeatTransfer/sphericalHeatTransfer.C
similarity index 94%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/sphericalHeatTransfer/sphericalHeatTransfer.C
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/heatTransferModels/sphericalHeatTransfer/sphericalHeatTransfer.C
index 4eec6de0283456fdf08fa62eab746a36275b8fe5..0672f16ef8a3a91a4811f042729013f490c7bffa 100644
--- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/sphericalHeatTransfer/sphericalHeatTransfer.C
+++ b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/heatTransferModels/sphericalHeatTransfer/sphericalHeatTransfer.C
@@ -65,11 +65,14 @@ Foam::heatTransferModels::sphericalHeatTransfer::~sphericalHeatTransfer()
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 Foam::tmp<Foam::volScalarField>
-Foam::heatTransferModels::sphericalHeatTransfer::K() const
+Foam::heatTransferModels::sphericalHeatTransfer::K
+(
+    const scalar residualAlpha
+) const
 {
     return
         60.0
-       *max(pair_.dispersed(), residualAlpha_)
+       *max(pair_.dispersed(), residualAlpha)
        *pair_.continuous().kappa()
        /sqr(pair_.dispersed().d());
 }
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/sphericalHeatTransfer/sphericalHeatTransfer.H b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/heatTransferModels/sphericalHeatTransfer/sphericalHeatTransfer.H
similarity index 97%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/sphericalHeatTransfer/sphericalHeatTransfer.H
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/heatTransferModels/sphericalHeatTransfer/sphericalHeatTransfer.H
index 88d098668fa581edb0add1c704e187b590565282..f3164df9bd82239277b36fa478c241434223d6b9 100644
--- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/sphericalHeatTransfer/sphericalHeatTransfer.H
+++ b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/heatTransferModels/sphericalHeatTransfer/sphericalHeatTransfer.H
@@ -79,7 +79,7 @@ public:
     // Member Functions
 
         //- The heat transfer function K used in the enthalpy equation
-        tmp<volScalarField> K() const;
+        tmp<volScalarField> K(const scalar residualAlpha) const;
 };
 
 
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/LegendreMagnaudet/LegendreMagnaudet.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/liftModels/LegendreMagnaudet/LegendreMagnaudet.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/LegendreMagnaudet/LegendreMagnaudet.C
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/liftModels/LegendreMagnaudet/LegendreMagnaudet.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/LegendreMagnaudet/LegendreMagnaudet.H b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/liftModels/LegendreMagnaudet/LegendreMagnaudet.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/LegendreMagnaudet/LegendreMagnaudet.H
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/liftModels/LegendreMagnaudet/LegendreMagnaudet.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/Moraga/Moraga.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/liftModels/Moraga/Moraga.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/Moraga/Moraga.C
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/liftModels/Moraga/Moraga.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/Moraga/Moraga.H b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/liftModels/Moraga/Moraga.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/Moraga/Moraga.H
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/liftModels/Moraga/Moraga.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/TomiyamaLift/TomiyamaLift.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/liftModels/TomiyamaLift/TomiyamaLift.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/TomiyamaLift/TomiyamaLift.C
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/liftModels/TomiyamaLift/TomiyamaLift.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/TomiyamaLift/TomiyamaLift.H b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/liftModels/TomiyamaLift/TomiyamaLift.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/TomiyamaLift/TomiyamaLift.H
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/liftModels/TomiyamaLift/TomiyamaLift.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/constantLiftCoefficient/constantLiftCoefficient.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/liftModels/constantLiftCoefficient/constantLiftCoefficient.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/constantLiftCoefficient/constantLiftCoefficient.C
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/liftModels/constantLiftCoefficient/constantLiftCoefficient.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/constantLiftCoefficient/constantLiftCoefficient.H b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/liftModels/constantLiftCoefficient/constantLiftCoefficient.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/constantLiftCoefficient/constantLiftCoefficient.H
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/liftModels/constantLiftCoefficient/constantLiftCoefficient.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/liftModel/liftModel.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/liftModels/liftModel/liftModel.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/liftModel/liftModel.C
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/liftModels/liftModel/liftModel.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/liftModel/liftModel.H b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/liftModels/liftModel/liftModel.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/liftModel/liftModel.H
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/liftModels/liftModel/liftModel.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/liftModel/newLiftModel.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/liftModels/liftModel/newLiftModel.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/liftModel/newLiftModel.C
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/liftModels/liftModel/newLiftModel.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/noLift/noLift.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/liftModels/noLift/noLift.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/noLift/noLift.C
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/liftModels/noLift/noLift.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/noLift/noLift.H b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/liftModels/noLift/noLift.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/noLift/noLift.H
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/liftModels/noLift/noLift.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/TomiyamaSwarm/TomiyamaSwarm.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/swarmCorrections/TomiyamaSwarm/TomiyamaSwarm.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/TomiyamaSwarm/TomiyamaSwarm.C
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/swarmCorrections/TomiyamaSwarm/TomiyamaSwarm.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/TomiyamaSwarm/TomiyamaSwarm.H b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/swarmCorrections/TomiyamaSwarm/TomiyamaSwarm.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/TomiyamaSwarm/TomiyamaSwarm.H
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/swarmCorrections/TomiyamaSwarm/TomiyamaSwarm.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/noSwarm/noSwarm.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/swarmCorrections/noSwarm/noSwarm.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/noSwarm/noSwarm.C
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/swarmCorrections/noSwarm/noSwarm.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/noSwarm/noSwarm.H b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/swarmCorrections/noSwarm/noSwarm.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/noSwarm/noSwarm.H
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/swarmCorrections/noSwarm/noSwarm.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/swarmCorrection/newSwarmCorrection.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/swarmCorrections/swarmCorrection/newSwarmCorrection.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/swarmCorrection/newSwarmCorrection.C
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/swarmCorrections/swarmCorrection/newSwarmCorrection.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/swarmCorrection/swarmCorrection.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/swarmCorrections/swarmCorrection/swarmCorrection.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/swarmCorrection/swarmCorrection.C
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/swarmCorrections/swarmCorrection/swarmCorrection.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/swarmCorrection/swarmCorrection.H b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/swarmCorrections/swarmCorrection/swarmCorrection.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/swarmCorrection/swarmCorrection.H
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/swarmCorrections/swarmCorrection/swarmCorrection.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/Burns/Burns.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/turbulentDispersionModels/Burns/Burns.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/Burns/Burns.C
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/turbulentDispersionModels/Burns/Burns.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/Burns/Burns.H b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/turbulentDispersionModels/Burns/Burns.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/Burns/Burns.H
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/turbulentDispersionModels/Burns/Burns.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/Gosman/Gosman.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/turbulentDispersionModels/Gosman/Gosman.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/Gosman/Gosman.C
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/turbulentDispersionModels/Gosman/Gosman.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/Gosman/Gosman.H b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/turbulentDispersionModels/Gosman/Gosman.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/Gosman/Gosman.H
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/turbulentDispersionModels/Gosman/Gosman.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/LopezDeBertodano/LopezDeBertodano.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/turbulentDispersionModels/LopezDeBertodano/LopezDeBertodano.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/LopezDeBertodano/LopezDeBertodano.C
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/turbulentDispersionModels/LopezDeBertodano/LopezDeBertodano.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/LopezDeBertodano/LopezDeBertodano.H b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/turbulentDispersionModels/LopezDeBertodano/LopezDeBertodano.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/LopezDeBertodano/LopezDeBertodano.H
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/turbulentDispersionModels/LopezDeBertodano/LopezDeBertodano.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/constantTurbulentDispersionCoefficient/constantTurbulentDispersionCoefficient.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/turbulentDispersionModels/constantTurbulentDispersionCoefficient/constantTurbulentDispersionCoefficient.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/constantTurbulentDispersionCoefficient/constantTurbulentDispersionCoefficient.C
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/turbulentDispersionModels/constantTurbulentDispersionCoefficient/constantTurbulentDispersionCoefficient.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/constantTurbulentDispersionCoefficient/constantTurbulentDispersionCoefficient.H b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/turbulentDispersionModels/constantTurbulentDispersionCoefficient/constantTurbulentDispersionCoefficient.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/constantTurbulentDispersionCoefficient/constantTurbulentDispersionCoefficient.H
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/turbulentDispersionModels/constantTurbulentDispersionCoefficient/constantTurbulentDispersionCoefficient.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/noTurbulentDispersion/noTurbulentDispersion.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/turbulentDispersionModels/noTurbulentDispersion/noTurbulentDispersion.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/noTurbulentDispersion/noTurbulentDispersion.C
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/turbulentDispersionModels/noTurbulentDispersion/noTurbulentDispersion.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/noTurbulentDispersion/noTurbulentDispersion.H b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/turbulentDispersionModels/noTurbulentDispersion/noTurbulentDispersion.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/noTurbulentDispersion/noTurbulentDispersion.H
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/turbulentDispersionModels/noTurbulentDispersion/noTurbulentDispersion.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/turbulentDispersionModel/newTurbulentDispersionModel.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/turbulentDispersionModels/turbulentDispersionModel/newTurbulentDispersionModel.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/turbulentDispersionModel/newTurbulentDispersionModel.C
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/turbulentDispersionModels/turbulentDispersionModel/newTurbulentDispersionModel.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/turbulentDispersionModel/turbulentDispersionModel.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/turbulentDispersionModels/turbulentDispersionModel/turbulentDispersionModel.C
similarity index 91%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/turbulentDispersionModel/turbulentDispersionModel.C
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/turbulentDispersionModels/turbulentDispersionModel/turbulentDispersionModel.C
index d5d805c08511d4a44431b0b4ffee006f08eeceb6..0bb29c1bea3c7db63dd72a8a8881ba5d0b262dff 100644
--- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/turbulentDispersionModel/turbulentDispersionModel.C
+++ b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/turbulentDispersionModels/turbulentDispersionModel/turbulentDispersionModel.C
@@ -26,6 +26,8 @@ License
 #include "turbulentDispersionModel.H"
 #include "phasePair.H"
 #include "fvcGrad.H"
+#include "surfaceInterpolate.H"
+#include "fvcSnGrad.H"
 
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
@@ -66,4 +68,11 @@ Foam::turbulentDispersionModel::F() const
 }
 
 
+Foam::tmp<Foam::surfaceScalarField>
+Foam::turbulentDispersionModel::Ff() const
+{
+    return fvc::interpolate(D())*fvc::snGrad(pair_.dispersed());
+}
+
+
 // ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/turbulentDispersionModel/turbulentDispersionModel.H b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/turbulentDispersionModels/turbulentDispersionModel/turbulentDispersionModel.H
similarity index 97%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/turbulentDispersionModel/turbulentDispersionModel.H
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/turbulentDispersionModels/turbulentDispersionModel/turbulentDispersionModel.H
index 932fdb3801c3017939ff20fa2fed3d0d9e430bc0..56e72ebcacb60c763dd41ed925c18abc3f6a9c26 100644
--- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/turbulentDispersionModel/turbulentDispersionModel.H
+++ b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/turbulentDispersionModels/turbulentDispersionModel/turbulentDispersionModel.H
@@ -120,6 +120,9 @@ public:
 
         //- Turbulent dispersion force
         virtual tmp<volVectorField> F() const;
+
+        //- Turbulent dispersion force on faces
+        virtual tmp<surfaceScalarField> Ff() const;
 };
 
 
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/Lamb/Lamb.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/virtualMassModels/Lamb/Lamb.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/Lamb/Lamb.C
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/virtualMassModels/Lamb/Lamb.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/Lamb/Lamb.H b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/virtualMassModels/Lamb/Lamb.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/Lamb/Lamb.H
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/virtualMassModels/Lamb/Lamb.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/constantVirtualMassCoefficient/constantVirtualMassCoefficient.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/virtualMassModels/constantVirtualMassCoefficient/constantVirtualMassCoefficient.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/constantVirtualMassCoefficient/constantVirtualMassCoefficient.C
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/virtualMassModels/constantVirtualMassCoefficient/constantVirtualMassCoefficient.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/constantVirtualMassCoefficient/constantVirtualMassCoefficient.H b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/virtualMassModels/constantVirtualMassCoefficient/constantVirtualMassCoefficient.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/constantVirtualMassCoefficient/constantVirtualMassCoefficient.H
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/virtualMassModels/constantVirtualMassCoefficient/constantVirtualMassCoefficient.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/noVirtualMass/noVirtualMass.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/virtualMassModels/noVirtualMass/noVirtualMass.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/noVirtualMass/noVirtualMass.C
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/virtualMassModels/noVirtualMass/noVirtualMass.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/noVirtualMass/noVirtualMass.H b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/virtualMassModels/noVirtualMass/noVirtualMass.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/noVirtualMass/noVirtualMass.H
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/virtualMassModels/noVirtualMass/noVirtualMass.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/virtualMassModel/newVirtualMassModel.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/virtualMassModels/virtualMassModel/newVirtualMassModel.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/virtualMassModel/newVirtualMassModel.C
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/virtualMassModels/virtualMassModel/newVirtualMassModel.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/virtualMassModel/virtualMassModel.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/virtualMassModels/virtualMassModel/virtualMassModel.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/virtualMassModel/virtualMassModel.C
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/virtualMassModels/virtualMassModel/virtualMassModel.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/virtualMassModel/virtualMassModel.H b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/virtualMassModels/virtualMassModel/virtualMassModel.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/virtualMassModel/virtualMassModel.H
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/virtualMassModels/virtualMassModel/virtualMassModel.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallDependentModel/wallDependentModel.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/wallDependentModel/wallDependentModel.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallDependentModel/wallDependentModel.C
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/wallDependentModel/wallDependentModel.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallDependentModel/wallDependentModel.H b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/wallDependentModel/wallDependentModel.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallDependentModel/wallDependentModel.H
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/wallDependentModel/wallDependentModel.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/Antal/Antal.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/wallLubricationModels/Antal/Antal.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/Antal/Antal.C
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/wallLubricationModels/Antal/Antal.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/Antal/Antal.H b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/wallLubricationModels/Antal/Antal.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/Antal/Antal.H
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/wallLubricationModels/Antal/Antal.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/Frank/Frank.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/wallLubricationModels/Frank/Frank.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/Frank/Frank.C
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/wallLubricationModels/Frank/Frank.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/Frank/Frank.H b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/wallLubricationModels/Frank/Frank.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/Frank/Frank.H
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/wallLubricationModels/Frank/Frank.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/TomiyamaWallLubrication/TomiyamaWallLubrication.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/wallLubricationModels/TomiyamaWallLubrication/TomiyamaWallLubrication.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/TomiyamaWallLubrication/TomiyamaWallLubrication.C
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/wallLubricationModels/TomiyamaWallLubrication/TomiyamaWallLubrication.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/TomiyamaWallLubrication/TomiyamaWallLubrication.H b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/wallLubricationModels/TomiyamaWallLubrication/TomiyamaWallLubrication.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/TomiyamaWallLubrication/TomiyamaWallLubrication.H
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/wallLubricationModels/TomiyamaWallLubrication/TomiyamaWallLubrication.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/noWallLubrication/noWallLubrication.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/wallLubricationModels/noWallLubrication/noWallLubrication.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/noWallLubrication/noWallLubrication.C
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/wallLubricationModels/noWallLubrication/noWallLubrication.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/noWallLubrication/noWallLubrication.H b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/wallLubricationModels/noWallLubrication/noWallLubrication.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/noWallLubrication/noWallLubrication.H
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/wallLubricationModels/noWallLubrication/noWallLubrication.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/wallLubricationModel/newWallLubricationModel.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/wallLubricationModels/wallLubricationModel/newWallLubricationModel.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/wallLubricationModel/newWallLubricationModel.C
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/wallLubricationModels/wallLubricationModel/newWallLubricationModel.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/wallLubricationModel/wallLubricationModel.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/wallLubricationModels/wallLubricationModel/wallLubricationModel.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/wallLubricationModel/wallLubricationModel.C
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/wallLubricationModels/wallLubricationModel/wallLubricationModel.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/wallLubricationModel/wallLubricationModel.H b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/wallLubricationModels/wallLubricationModel/wallLubricationModel.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/wallLubricationModel/wallLubricationModel.H
rename to applications/solvers/multiphase/reactingEulerFoam/interfacialModels/wallLubricationModels/wallLubricationModel/wallLubricationModel.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/BlendedInterfacialModel.C b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/BlendedInterfacialModel/BlendedInterfacialModel.C
similarity index 89%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/BlendedInterfacialModel.C
rename to applications/solvers/multiphase/reactingEulerFoam/phaseSystems/BlendedInterfacialModel/BlendedInterfacialModel.C
index da6c62ade5912aa6ac5c89fc4e2eb73722f9778b..36e31630a49daedc405f2057caba294528aa0a63 100644
--- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/BlendedInterfacialModel.C
+++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/BlendedInterfacialModel/BlendedInterfacialModel.C
@@ -223,6 +223,66 @@ Foam::BlendedInterfacialModel<ModelType>::K() const
 }
 
 
+template<class ModelType>
+Foam::tmp<Foam::volScalarField>
+Foam::BlendedInterfacialModel<ModelType>::K(const scalar residualAlpha) const
+{
+    tmp<volScalarField> f1, f2;
+
+    if (model_.valid() || model1In2_.valid())
+    {
+        f1 = blending_.f1(phase1_, phase2_);
+    }
+
+    if (model_.valid() || model2In1_.valid())
+    {
+        f2 = blending_.f2(phase1_, phase2_);
+    }
+
+    tmp<volScalarField> x
+    (
+        new volScalarField
+        (
+            IOobject
+            (
+                ModelType::typeName + ":K",
+                phase1_.mesh().time().timeName(),
+                phase1_.mesh(),
+                IOobject::NO_READ,
+                IOobject::NO_WRITE,
+                false
+            ),
+            phase1_.mesh(),
+            dimensionedScalar("zero", ModelType::dimK, 0)
+        )
+    );
+
+    if (model_.valid())
+    {
+        x() += model_->K(residualAlpha)*(scalar(1) - f1() - f2());
+    }
+    if (model1In2_.valid())
+    {
+        x() += model1In2_->K(residualAlpha)*f1;
+    }
+    if (model2In1_.valid())
+    {
+        x() += model2In1_->K(residualAlpha)*f2;
+    }
+
+    if
+    (
+        correctFixedFluxBCs_
+     && (model_.valid() || model1In2_.valid() || model2In1_.valid())
+    )
+    {
+        correctFixedFluxBCs(x());
+    }
+
+    return x;
+}
+
+
 template<class ModelType>
 Foam::tmp<Foam::surfaceScalarField>
 Foam::BlendedInterfacialModel<ModelType>::Kf() const
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/BlendedInterfacialModel.H b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/BlendedInterfacialModel/BlendedInterfacialModel.H
similarity index 97%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/BlendedInterfacialModel.H
rename to applications/solvers/multiphase/reactingEulerFoam/phaseSystems/BlendedInterfacialModel/BlendedInterfacialModel.H
index bd2ec60235624af8b37d191120ab2a0278e5863b..4be8f0b347ea5178e9317f44ce55616893052e59 100644
--- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/BlendedInterfacialModel.H
+++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/BlendedInterfacialModel/BlendedInterfacialModel.H
@@ -136,6 +136,9 @@ public:
         //- Return the blended force coefficient
         tmp<volScalarField> K() const;
 
+        //- Return the blended force coefficient with a specified residual alpha
+        tmp<volScalarField> K(const scalar residualAlpha) const;
+
         //- Return the face blended force coefficient
         tmp<surfaceScalarField> Kf() const;
 
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/blendingMethod/blendingMethod.C b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/blendingMethod/blendingMethod.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/blendingMethod/blendingMethod.C
rename to applications/solvers/multiphase/reactingEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/blendingMethod/blendingMethod.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/blendingMethod/blendingMethod.H b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/blendingMethod/blendingMethod.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/blendingMethod/blendingMethod.H
rename to applications/solvers/multiphase/reactingEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/blendingMethod/blendingMethod.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/blendingMethod/newBlendingMethod.C b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/blendingMethod/newBlendingMethod.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/blendingMethod/newBlendingMethod.C
rename to applications/solvers/multiphase/reactingEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/blendingMethod/newBlendingMethod.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/hyperbolic/hyperbolic.C b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/hyperbolic/hyperbolic.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/hyperbolic/hyperbolic.C
rename to applications/solvers/multiphase/reactingEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/hyperbolic/hyperbolic.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/hyperbolic/hyperbolic.H b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/hyperbolic/hyperbolic.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/hyperbolic/hyperbolic.H
rename to applications/solvers/multiphase/reactingEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/hyperbolic/hyperbolic.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/linear/linear.C b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/linear/linear.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/linear/linear.C
rename to applications/solvers/multiphase/reactingEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/linear/linear.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/linear/linear.H b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/linear/linear.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/linear/linear.H
rename to applications/solvers/multiphase/reactingEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/linear/linear.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/noBlending/noBlending.C b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/noBlending/noBlending.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/noBlending/noBlending.C
rename to applications/solvers/multiphase/reactingEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/noBlending/noBlending.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/noBlending/noBlending.H b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/noBlending/noBlending.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/noBlending/noBlending.H
rename to applications/solvers/multiphase/reactingEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/noBlending/noBlending.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/Make/files b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/Make/files
similarity index 63%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/Make/files
rename to applications/solvers/multiphase/reactingEulerFoam/phaseSystems/Make/files
index 538bd7d63712f1a3b809a33767310e28931e5264..1f516dc2437c5f1a0eb3b03dc9e1388511a686c1 100644
--- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/Make/files
+++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/Make/files
@@ -13,20 +13,12 @@ diameterModels/diameterModel/newDiameterModel.C
 diameterModels/constantDiameter/constantDiameter.C
 diameterModels/isothermalDiameter/isothermalDiameter.C
 
-diameterModels/IATE/IATE.C
-diameterModels/IATE/IATEsources/IATEsource/IATEsource.C
-diameterModels/IATE/IATEsources/wakeEntrainmentCoalescence/wakeEntrainmentCoalescence.C
-diameterModels/IATE/IATEsources/turbulentBreakUp/turbulentBreakUp.C
-diameterModels/IATE/IATEsources/randomCoalescence/randomCoalescence.C
-
 BlendedInterfacialModel/blendingMethods/blendingMethod/blendingMethod.C
 BlendedInterfacialModel/blendingMethods/blendingMethod/newBlendingMethod.C
 BlendedInterfacialModel/blendingMethods/noBlending/noBlending.C
 BlendedInterfacialModel/blendingMethods/linear/linear.C
 BlendedInterfacialModel/blendingMethods/hyperbolic/hyperbolic.C
 
-twoPhaseSystem/twoPhaseSystem.C
-twoPhaseSystem/newTwoPhaseSystem.C
-twoPhaseSystem/twoPhaseSystems.C
+reactionThermo/hRefConstThermos.C
 
-LIB = $(FOAM_LIBBIN)/libreactingTwoPhaseSystem
+LIB = $(FOAM_LIBBIN)/libreactingPhaseSystem
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/Make/options b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/Make/options
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/Make/options
rename to applications/solvers/multiphase/reactingEulerFoam/phaseSystems/Make/options
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/HeatAndMassTransferPhaseSystem/HeatAndMassTransferPhaseSystem.C b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/PhaseSystems/HeatAndMassTransferPhaseSystem/HeatAndMassTransferPhaseSystem.C
similarity index 80%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/HeatAndMassTransferPhaseSystem/HeatAndMassTransferPhaseSystem.C
rename to applications/solvers/multiphase/reactingEulerFoam/phaseSystems/PhaseSystems/HeatAndMassTransferPhaseSystem/HeatAndMassTransferPhaseSystem.C
index ff4fb10e9dddaf69fb27da3418c39a9516ba56a8..3db07ef8044bd6357e5e2cebc13732914ec2a2b9 100644
--- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/HeatAndMassTransferPhaseSystem/HeatAndMassTransferPhaseSystem.C
+++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/PhaseSystems/HeatAndMassTransferPhaseSystem/HeatAndMassTransferPhaseSystem.C
@@ -151,6 +151,16 @@ Foam::HeatAndMassTransferPhaseSystem<BasePhaseSystem>::
 
 // * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * * //
 
+template<class BasePhaseSystem>
+bool Foam::HeatAndMassTransferPhaseSystem<BasePhaseSystem>::transfersMass
+(
+    const phaseModel& phase
+) const
+{
+    return true;
+}
+
+
 template<class BasePhaseSystem>
 Foam::tmp<Foam::volScalarField>
 Foam::HeatAndMassTransferPhaseSystem<BasePhaseSystem>::dmdt
@@ -164,6 +174,60 @@ Foam::HeatAndMassTransferPhaseSystem<BasePhaseSystem>::dmdt
 }
 
 
+template<class BasePhaseSystem>
+Foam::tmp<Foam::volScalarField>
+Foam::HeatAndMassTransferPhaseSystem<BasePhaseSystem>::dmdt
+(
+    const Foam::phaseModel& phase
+) const
+{
+    tmp<volScalarField> tdmdt
+    (
+        new volScalarField
+        (
+            IOobject
+            (
+                IOobject::groupName("dmdt", phase.name()),
+                this->mesh_.time().timeName(),
+                this->mesh_
+            ),
+            this->mesh_,
+            dimensionedScalar("zero", dimDensity/dimTime, 0)
+        )
+    );
+
+    forAllConstIter
+    (
+        phaseSystem::phasePairTable,
+        this->phasePairs_,
+        phasePairIter
+    )
+    {
+        const phasePair& pair(phasePairIter());
+
+        if (pair.ordered())
+        {
+            continue;
+        }
+
+        const phaseModel* phase1 = &pair.phase1();
+        const phaseModel* phase2 = &pair.phase2();
+
+        forAllConstIter(phasePair, pair, iter)
+        {
+            if (phase1 == &phase)
+            {
+                tdmdt() += this->dmdt(pair);
+            }
+
+            Swap(phase1, phase2);
+        }
+    }
+
+    return tdmdt;
+}
+
+
 template<class BasePhaseSystem>
 Foam::autoPtr<Foam::phaseSystem::momentumTransferTable>
 Foam::HeatAndMassTransferPhaseSystem<BasePhaseSystem>::momentumTransfer() const
@@ -192,11 +256,11 @@ Foam::HeatAndMassTransferPhaseSystem<BasePhaseSystem>::momentumTransfer() const
         const volVectorField& U2(pair.phase2().U());
 
         const volScalarField dmdt(this->dmdt(pair));
-        const volScalarField dmdt12(posPart(dmdt));
-        const volScalarField dmdt21(negPart(dmdt));
+        const volScalarField dmdt21(posPart(dmdt));
+        const volScalarField dmdt12(negPart(dmdt));
 
-        *eqns[pair.phase1().name()] += fvm::Sp(dmdt21, U1) - dmdt21*U2;
-        *eqns[pair.phase2().name()] += dmdt12*U1 - fvm::Sp(dmdt12, U2);
+        *eqns[pair.phase1().name()] += dmdt21*U2 - fvm::Sp(dmdt21, U1);
+        *eqns[pair.phase2().name()] -= dmdt12*U1 - fvm::Sp(dmdt12, U2);
     }
 
     return eqnsPtr;
@@ -214,14 +278,9 @@ Foam::HeatAndMassTransferPhaseSystem<BasePhaseSystem>::heatTransfer() const
 
     phaseSystem::heatTransferTable& eqns = eqnsPtr();
 
-    forAllConstIter
-    (
-        phaseSystem::phaseModelTable,
-        this->phaseModels_,
-        phaseModelIter
-    )
+    forAll(this->phaseModels_, phasei)
     {
-        const phaseModel& phase(phaseModelIter());
+        const phaseModel& phase = this->phaseModels_[phasei];
 
         eqns.insert
         (
@@ -283,7 +342,7 @@ Foam::HeatAndMassTransferPhaseSystem<BasePhaseSystem>::heatTransfer() const
         }
     }
 
-    // Source term due to mass trasfer
+    // Source term due to mass transfer
     forAllConstIter
     (
         phaseSystem::phasePairTable,
@@ -308,17 +367,19 @@ Foam::HeatAndMassTransferPhaseSystem<BasePhaseSystem>::heatTransfer() const
         const volScalarField& K2(phase2.K());
 
         const volScalarField dmdt(this->dmdt(pair));
-        const volScalarField dmdt12(posPart(dmdt));
-        const volScalarField dmdt21(negPart(dmdt));
+        const volScalarField dmdt21(posPart(dmdt));
+        const volScalarField dmdt12(negPart(dmdt));
         const volScalarField& Tf(*Tf_[pair]);
 
         *eqns[phase1.name()] +=
-            fvm::Sp(dmdt21, he1) + dmdt21*K1
-          - dmdt21*(phase2.thermo().he(phase2.thermo().p(), Tf) + K2);
-
-        *eqns[phase2.name()] +=
-            dmdt12*(phase1.thermo().he(phase1.thermo().p(), Tf) + K1)
-          - fvm::Sp(dmdt12, he2) - dmdt12*K2;
+            dmdt21*(phase1.thermo().he(phase1.thermo().p(), Tf))
+          - fvm::Sp(dmdt21, he1)
+          + dmdt21*(K2 - K1);
+
+        *eqns[phase2.name()] -=
+            dmdt12*(phase2.thermo().he(phase2.thermo().p(), Tf))
+          - fvm::Sp(dmdt12, he2)
+          + dmdt12*(K1 - K2);
     }
 
     return eqnsPtr;
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/HeatAndMassTransferPhaseSystem/HeatAndMassTransferPhaseSystem.H b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/PhaseSystems/HeatAndMassTransferPhaseSystem/HeatAndMassTransferPhaseSystem.H
similarity index 92%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/HeatAndMassTransferPhaseSystem/HeatAndMassTransferPhaseSystem.H
rename to applications/solvers/multiphase/reactingEulerFoam/phaseSystems/PhaseSystems/HeatAndMassTransferPhaseSystem/HeatAndMassTransferPhaseSystem.H
index 3f20c575f83d4abccd2d1504c1134373eb7c2325..3a0cbd4ba23dd7c3e2eafe8e17c519f3798cbba6 100644
--- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/HeatAndMassTransferPhaseSystem/HeatAndMassTransferPhaseSystem.H
+++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/PhaseSystems/HeatAndMassTransferPhaseSystem/HeatAndMassTransferPhaseSystem.H
@@ -120,11 +120,14 @@ public:
 
     // Member Functions
 
+        //- Return true if there is mass transfer for phase
+        virtual bool transfersMass(const phaseModel& phase) const;
+
         //- Return the interfacial mass flow rate
-        virtual tmp<volScalarField> dmdt
-        (
-            const phasePairKey& key
-        ) const;
+        virtual tmp<volScalarField> dmdt(const phasePairKey& key) const;
+
+        //- Return the total interfacial mass transfer rate for phase
+        virtual tmp<volScalarField> dmdt(const phaseModel& phase) const;
 
         //- Return the momentum transfer matrices
         virtual autoPtr<phaseSystem::momentumTransferTable>
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/HeatTransferPhaseSystem/HeatTransferPhaseSystem.C b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/PhaseSystems/HeatTransferPhaseSystem/HeatTransferPhaseSystem.C
similarity index 90%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/HeatTransferPhaseSystem/HeatTransferPhaseSystem.C
rename to applications/solvers/multiphase/reactingEulerFoam/phaseSystems/PhaseSystems/HeatTransferPhaseSystem/HeatTransferPhaseSystem.C
index 0a5d8a7060b2afd5a16173fb70ea27a7d4ed291d..07b41eb77109d58fc0fc99c4a2cac2d4b940e65f 100644
--- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/HeatTransferPhaseSystem/HeatTransferPhaseSystem.C
+++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/PhaseSystems/HeatTransferPhaseSystem/HeatTransferPhaseSystem.C
@@ -57,6 +57,16 @@ Foam::HeatTransferPhaseSystem<BasePhaseSystem>::~HeatTransferPhaseSystem()
 
 // * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * * //
 
+template<class BasePhaseSystem>
+bool Foam::HeatTransferPhaseSystem<BasePhaseSystem>::transfersMass
+(
+    const phaseModel& phase
+) const
+{
+    return false;
+}
+
+
 template<class BasePhaseSystem>
 Foam::tmp<Foam::volScalarField>
 Foam::HeatTransferPhaseSystem<BasePhaseSystem>::dmdt
@@ -85,6 +95,17 @@ Foam::HeatTransferPhaseSystem<BasePhaseSystem>::dmdt
 }
 
 
+template<class BasePhaseSystem>
+Foam::tmp<Foam::volScalarField>
+Foam::HeatTransferPhaseSystem<BasePhaseSystem>::dmdt
+(
+    const Foam::phaseModel& phase
+) const
+{
+    return tmp<volScalarField>(NULL);
+}
+
+
 template<class BasePhaseSystem>
 Foam::autoPtr<Foam::phaseSystem::heatTransferTable>
 Foam::HeatTransferPhaseSystem<BasePhaseSystem>::heatTransfer() const
@@ -96,14 +117,9 @@ Foam::HeatTransferPhaseSystem<BasePhaseSystem>::heatTransfer() const
 
     phaseSystem::heatTransferTable& eqns = eqnsPtr();
 
-    forAllConstIter
-    (
-        phaseSystem::phaseModelTable,
-        this->phaseModels_,
-        phaseModelIter
-    )
+    forAll(this->phaseModels_, phasei)
     {
-        const phaseModel& phase(phaseModelIter());
+        const phaseModel& phase = this->phaseModels_[phasei];
 
         eqns.insert
         (
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/HeatTransferPhaseSystem/HeatTransferPhaseSystem.H b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/PhaseSystems/HeatTransferPhaseSystem/HeatTransferPhaseSystem.H
similarity index 92%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/HeatTransferPhaseSystem/HeatTransferPhaseSystem.H
rename to applications/solvers/multiphase/reactingEulerFoam/phaseSystems/PhaseSystems/HeatTransferPhaseSystem/HeatTransferPhaseSystem.H
index 6bb96c90baeacb80ae3ed46d15168a899258fbfd..0c908239fdb9a18f451a305c35d8f6f47584aa03 100644
--- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/HeatTransferPhaseSystem/HeatTransferPhaseSystem.H
+++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/PhaseSystems/HeatTransferPhaseSystem/HeatTransferPhaseSystem.H
@@ -89,12 +89,18 @@ public:
 
     // Member Functions
 
+        //- Return true if there is mass transfer for phase
+        virtual bool transfersMass(const phaseModel& phase) const;
+
         //- Return the interfacial mass flow rate
         virtual tmp<volScalarField> dmdt
         (
             const phasePairKey& key
         ) const;
 
+        //- Return the total interfacial mass transfer rate for phase
+        virtual tmp<volScalarField> dmdt(const phaseModel& phase) const;
+
         //- Return the heat transfer matrices
         virtual autoPtr<phaseSystem::heatTransferTable>
             heatTransfer() const;
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/InterfaceCompositionPhaseChangePhaseSystem/InterfaceCompositionPhaseChangePhaseSystem.C b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/PhaseSystems/InterfaceCompositionPhaseChangePhaseSystem/InterfaceCompositionPhaseChangePhaseSystem.C
similarity index 98%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/InterfaceCompositionPhaseChangePhaseSystem/InterfaceCompositionPhaseChangePhaseSystem.C
rename to applications/solvers/multiphase/reactingEulerFoam/phaseSystems/PhaseSystems/InterfaceCompositionPhaseChangePhaseSystem/InterfaceCompositionPhaseChangePhaseSystem.C
index 47c994334d63bcc48c9be3fd696b4f21fb68647c..fe0343b2ac47f04649a3919ef8de8499675d631f 100644
--- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/InterfaceCompositionPhaseChangePhaseSystem/InterfaceCompositionPhaseChangePhaseSystem.C
+++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/PhaseSystems/InterfaceCompositionPhaseChangePhaseSystem/InterfaceCompositionPhaseChangePhaseSystem.C
@@ -69,14 +69,9 @@ massTransfer() const
 
     phaseSystem::massTransferTable& eqns = eqnsPtr();
 
-    forAllConstIter
-    (
-        phaseSystem::phaseModelTable,
-        this->phaseModels_,
-        phaseModelIter
-    )
+    forAll(this->phaseModels_, phasei)
     {
-        const phaseModel& phase(phaseModelIter());
+        const phaseModel& phase = this->phaseModels_[phasei];
 
         const PtrList<volScalarField>& Yi = phase.Y();
 
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/InterfaceCompositionPhaseChangePhaseSystem/InterfaceCompositionPhaseChangePhaseSystem.H b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/PhaseSystems/InterfaceCompositionPhaseChangePhaseSystem/InterfaceCompositionPhaseChangePhaseSystem.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/InterfaceCompositionPhaseChangePhaseSystem/InterfaceCompositionPhaseChangePhaseSystem.H
rename to applications/solvers/multiphase/reactingEulerFoam/phaseSystems/PhaseSystems/InterfaceCompositionPhaseChangePhaseSystem/InterfaceCompositionPhaseChangePhaseSystem.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/MomentumTransferPhaseSystem/MomentumTransferPhaseSystem.C b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/PhaseSystems/MomentumTransferPhaseSystem/MomentumTransferPhaseSystem.C
similarity index 72%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/MomentumTransferPhaseSystem/MomentumTransferPhaseSystem.C
rename to applications/solvers/multiphase/reactingEulerFoam/phaseSystems/PhaseSystems/MomentumTransferPhaseSystem/MomentumTransferPhaseSystem.C
index 9646a6a80c1c167f9eebf08285ee963778224507..f50bd61f9ea540d88f3b4822eb5dbc5395f98128 100644
--- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/MomentumTransferPhaseSystem/MomentumTransferPhaseSystem.C
+++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/PhaseSystems/MomentumTransferPhaseSystem/MomentumTransferPhaseSystem.C
@@ -38,6 +38,7 @@ License
 #include "fvmDiv.H"
 #include "fvmSup.H"
 #include "fvcDiv.H"
+#include "fvcSnGrad.H"
 #include "fvMatrix.H"
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
@@ -155,6 +156,62 @@ Foam::MomentumTransferPhaseSystem<BasePhaseSystem>::Kdf
 }
 
 
+template<class BasePhaseSystem>
+Foam::tmp<Foam::volScalarField>
+Foam::MomentumTransferPhaseSystem<BasePhaseSystem>::Kd
+(
+    const Foam::phaseModel& phase
+) const
+{
+    tmp<volScalarField> tKd
+    (
+        new volScalarField
+        (
+            IOobject
+            (
+                IOobject::groupName("Kd", phase.name()),
+                this->mesh_.time().timeName(),
+                this->mesh_
+            ),
+            this->mesh_,
+            dimensionedScalar
+            (
+                IOobject::groupName("Kd", phase.name()),
+                dimensionSet(1, -3, -1, 0, 0),
+                0
+            )
+        )
+    );
+
+    forAllConstIter
+    (
+        phaseSystem::KdTable,
+        Kds_,
+        KdIter
+    )
+    {
+        const volScalarField& K(*KdIter());
+
+        const phasePair& pair(this->phasePairs_[KdIter.key()]);
+
+        const phaseModel* phase1 = &pair.phase1();
+        const phaseModel* phase2 = &pair.phase2();
+
+        forAllConstIter(phasePair, pair, iter)
+        {
+            if (phase1 == &phase)
+            {
+                tKd() += K;
+            }
+
+            Swap(phase1, phase2);
+        }
+    }
+
+    return tKd;
+}
+
+
 template<class BasePhaseSystem>
 Foam::tmp<Foam::volScalarField>
 Foam::MomentumTransferPhaseSystem<BasePhaseSystem>::Vm
@@ -357,14 +414,9 @@ Foam::MomentumTransferPhaseSystem<BasePhaseSystem>::momentumTransfer() const
 
     phaseSystem::momentumTransferTable& eqns = eqnsPtr();
 
-    forAllConstIter
-    (
-        phaseSystem::phaseModelTable,
-        this->phaseModels_,
-        phaseModelIter
-    )
+    forAll(this->phaseModels_, phasei)
     {
-        const phaseModel& phase(phaseModelIter());
+        const phaseModel& phase = this->phaseModels_[phasei];
 
         eqns.insert
         (
@@ -401,7 +453,7 @@ Foam::MomentumTransferPhaseSystem<BasePhaseSystem>::momentumTransfer() const
 
         forAllConstIter(phasePair, pair, iter)
         {
-            const volVectorField& U(phase->U());
+            const volVectorField& U = phase->U();
 
             *eqns[phase->name()] -= fvm::Sp(K, U);
 
@@ -437,23 +489,69 @@ Foam::MomentumTransferPhaseSystem<BasePhaseSystem>::momentumTransfer() const
 
         forAllConstIter(phasePair, pair, iter)
         {
-            const volVectorField& U(phase->U());
-            const surfaceScalarField& phi(phase->phi());
+            const volVectorField& U = phase->U();
+            const surfaceScalarField& phi = phase->phi();
 
-            *eqns[phase->name()] +=
-              - Vm
+            *eqns[phase->name()] -=
+                Vm
                *(
                     fvm::ddt(U)
                   + fvm::div(phi, U)
                   - fvm::Sp(fvc::div(phi), U)
                   - otherPhase->DUDt()
                 )
-              - this->MRF_.DDt(Vm, U - otherPhase->U());
+              + this->MRF_.DDt(Vm, U - otherPhase->U());
 
             Swap(phase, otherPhase);
         }
     }
 
+    return eqnsPtr;
+}
+
+
+template<class BasePhaseSystem>
+Foam::volVectorField& Foam::MomentumTransferPhaseSystem<BasePhaseSystem>::setF
+(
+    PtrList<volVectorField>& Fs, const label phasei
+) const
+{
+    if (!Fs.set(phasei))
+    {
+        Fs.set
+        (
+            phasei,
+            new volVectorField
+            (
+                IOobject
+                (
+                    liftModel::typeName + ":F",
+                    this->mesh_.time().timeName(),
+                    this->mesh_,
+                    IOobject::NO_READ,
+                    IOobject::NO_WRITE,
+                    false
+                ),
+                this->mesh_,
+                dimensionedVector("zero", liftModel::dimF, vector::zero)
+            )
+        );
+    }
+
+    return Fs[phasei];
+}
+
+
+template<class BasePhaseSystem>
+Foam::autoPtr<Foam::PtrList<Foam::volVectorField> >
+Foam::MomentumTransferPhaseSystem<BasePhaseSystem>::Fs() const
+{
+    autoPtr<PtrList<volVectorField> > tFs
+    (
+        new PtrList<volVectorField>(this->phases().size())
+    );
+    PtrList<volVectorField>& Fs = tFs();
+
     // Add the lift force
     forAllConstIter
     (
@@ -466,8 +564,8 @@ Foam::MomentumTransferPhaseSystem<BasePhaseSystem>::momentumTransfer() const
 
         const phasePair& pair(this->phasePairs_[liftModelIter.key()]);
 
-        *eqns[pair.phase1().name()] += F;
-        *eqns[pair.phase2().name()] -= F;
+        setF(Fs, pair.phase1().index()) += F;
+        setF(Fs, pair.phase2().index()) -= F;
     }
 
     // Add the wall lubrication force
@@ -483,10 +581,65 @@ Foam::MomentumTransferPhaseSystem<BasePhaseSystem>::momentumTransfer() const
         const phasePair&
             pair(this->phasePairs_[wallLubricationModelIter.key()]);
 
-        *eqns[pair.phase1().name()] += F;
-        *eqns[pair.phase2().name()] -= F;
+        setF(Fs, pair.phase1().index()) += F;
+        setF(Fs, pair.phase2().index()) -= F;
+    }
+
+    return tFs;
+}
+
+
+template<class BasePhaseSystem>
+Foam::surfaceScalarField&
+Foam::MomentumTransferPhaseSystem<BasePhaseSystem>::setPhiD
+(
+    PtrList<surfaceScalarField>& phiDs, const label phasei
+) const
+{
+    if (!phiDs.set(phasei))
+    {
+        phiDs.set
+        (
+            phasei,
+            new surfaceScalarField
+            (
+                IOobject
+                (
+                    turbulentDispersionModel::typeName + ":phiD",
+                    this->mesh_.time().timeName(),
+                    this->mesh_,
+                    IOobject::NO_READ,
+                    IOobject::NO_WRITE,
+                    false
+                ),
+                this->mesh_,
+                dimensionedScalar
+                (
+                    "zero",
+                    dimTime*dimArea*turbulentDispersionModel::dimF/dimDensity,
+                    0
+                )
+            )
+        );
     }
 
+    return phiDs[phasei];
+}
+
+
+template<class BasePhaseSystem>
+Foam::autoPtr<Foam::PtrList<Foam::surfaceScalarField> >
+Foam::MomentumTransferPhaseSystem<BasePhaseSystem>::phiDs
+(
+    const PtrList<volScalarField>& rAUs
+) const
+{
+    autoPtr<PtrList<surfaceScalarField> > tphiDs
+    (
+        new PtrList<surfaceScalarField>(this->phases().size())
+    );
+    PtrList<surfaceScalarField>& phiDs = tphiDs();
+
     // Add the turbulent dispersion force
     forAllConstIter
     (
@@ -495,16 +648,22 @@ Foam::MomentumTransferPhaseSystem<BasePhaseSystem>::momentumTransfer() const
         turbulentDispersionModelIter
     )
     {
-        const volVectorField F(turbulentDispersionModelIter()->F<vector>());
-
         const phasePair&
             pair(this->phasePairs_[turbulentDispersionModelIter.key()]);
 
-        *eqns[pair.phase1().name()] += F;
-        *eqns[pair.phase2().name()] -= F;
+        const volScalarField D(turbulentDispersionModelIter()->D());
+        const surfaceScalarField snGradAlpha1
+        (
+            fvc::snGrad(pair.phase1())*this->mesh_.magSf()
+        );
+
+        setPhiD(phiDs, pair.phase1().index()) +=
+            fvc::interpolate(rAUs[pair.phase1().index()]*D)*snGradAlpha1;
+        setPhiD(phiDs, pair.phase2().index()) -=
+            fvc::interpolate(rAUs[pair.phase2().index()]*D)*snGradAlpha1;
     }
 
-    return eqnsPtr;
+    return tphiDs;
 }
 
 
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/MomentumTransferPhaseSystem/MomentumTransferPhaseSystem.H b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/PhaseSystems/MomentumTransferPhaseSystem/MomentumTransferPhaseSystem.H
similarity index 84%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/MomentumTransferPhaseSystem/MomentumTransferPhaseSystem.H
rename to applications/solvers/multiphase/reactingEulerFoam/phaseSystems/PhaseSystems/MomentumTransferPhaseSystem/MomentumTransferPhaseSystem.H
index 5c9f057bedc2fa2f8871325a735e4416cad4ce00..2f787ed004a96329fc1cd8b11fd81d517286ac85 100644
--- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/MomentumTransferPhaseSystem/MomentumTransferPhaseSystem.H
+++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/PhaseSystems/MomentumTransferPhaseSystem/MomentumTransferPhaseSystem.H
@@ -133,6 +133,20 @@ private:
             //- Turbulent dispersion models
             turbulentDispersionModelTable turbulentDispersionModels_;
 
+            //- Construct element phasei of Fs if not set and return
+            //  Used by Fs()
+            volVectorField& setF
+            (
+                PtrList<volVectorField>& Fs, const label phasei
+            ) const;
+
+            //- Construct element phasei of phiDs if not set and return
+            //  Used by phiDs()
+            surfaceScalarField& setPhiD
+            (
+                PtrList<surfaceScalarField>& phiDs, const label phasei
+            ) const;
+
 
 public:
 
@@ -148,12 +162,21 @@ public:
 
     // Member Functions
 
+        //- Constant access to drag coefficients
+        virtual const phaseSystem::KdTable& Kds() const
+        {
+            return Kds_;
+        }
+
         //- Return the drag coefficient
         virtual tmp<volScalarField> Kd(const phasePairKey& key) const;
 
         //- Return the face drag coefficient
         virtual tmp<surfaceScalarField> Kdf(const phasePairKey& key) const;
 
+        //- Return the drag coefficient for phase
+        virtual tmp<volScalarField> Kd(const phaseModel& phase) const;
+
         //- Return the virtual mass coefficient
         virtual tmp<volScalarField> Vm(const phasePairKey& key) const;
 
@@ -163,6 +186,15 @@ public:
         //- Return the combined force (lift + wall-lubrication)
         virtual tmp<volVectorField> F(const phasePairKey& key) const;
 
+        //- Return the combined force (lift + wall-lubrication)
+        virtual autoPtr<PtrList<volVectorField> > Fs() const;
+
+        //- Return the turbulent dispersion force on faces for phase pair
+        virtual autoPtr<PtrList<surfaceScalarField> > phiDs
+        (
+            const PtrList<volScalarField>& rAUs
+        ) const;
+
         //- Return the combined face-force (lift + wall-lubrication)
         virtual tmp<surfaceScalarField> Ff(const phasePairKey& key) const;
 
diff --git a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/PhaseSystems/ThermalPhaseChangePhaseSystem/ThermalPhaseChangePhaseSystem.C b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/PhaseSystems/ThermalPhaseChangePhaseSystem/ThermalPhaseChangePhaseSystem.C
new file mode 100644
index 0000000000000000000000000000000000000000..175a993e304c087b685d6aed02137ce16940719e
--- /dev/null
+++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/PhaseSystems/ThermalPhaseChangePhaseSystem/ThermalPhaseChangePhaseSystem.C
@@ -0,0 +1,372 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "ThermalPhaseChangePhaseSystem.H"
+#include "fvCFD.H"
+#include "alphatPhaseChangeWallFunctionFvPatchScalarField.H"
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+template<class BasePhaseSystem>
+Foam::ThermalPhaseChangePhaseSystem<BasePhaseSystem>::
+ThermalPhaseChangePhaseSystem
+(
+    const fvMesh& mesh
+)
+:
+    HeatAndMassTransferPhaseSystem<BasePhaseSystem>(mesh),
+    volatile_(this->lookup("volatile")),
+    saturationModel_(saturationModel::New(this->subDict("saturationModel"))),
+    massTransfer_(this->lookup("massTransfer"))
+{
+
+    forAllConstIter
+    (
+        phaseSystem::phasePairTable,
+        this->phasePairs_,
+        phasePairIter
+    )
+    {
+        const phasePair& pair(phasePairIter());
+
+        if (pair.ordered())
+        {
+            continue;
+        }
+
+        // Initially assume no mass transfer
+        iDmdt_.insert
+        (
+            pair,
+            new volScalarField
+            (
+                IOobject
+                (
+                    IOobject::groupName("iDmdt", pair.name()),
+                    this->mesh().time().timeName(),
+                    this->mesh(),
+                    IOobject::NO_READ,
+                    IOobject::AUTO_WRITE
+                ),
+                this->mesh(),
+                dimensionedScalar("zero", dimDensity/dimTime, 0)
+            )
+        );
+
+        // Initially assume no mass transfer
+        wDmdt_.insert
+        (
+            pair,
+            new volScalarField
+            (
+                IOobject
+                (
+                    IOobject::groupName("wDmdt", pair.name()),
+                    this->mesh().time().timeName(),
+                    this->mesh(),
+                    IOobject::NO_READ,
+                    IOobject::AUTO_WRITE
+                ),
+                this->mesh(),
+                dimensionedScalar("zero", dimDensity/dimTime, 0)
+            )
+        );
+    }
+}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+template<class BasePhaseSystem>
+Foam::ThermalPhaseChangePhaseSystem<BasePhaseSystem>::
+~ThermalPhaseChangePhaseSystem()
+{}
+
+
+// * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * * //
+
+template<class BasePhaseSystem>
+const Foam::saturationModel&
+Foam::ThermalPhaseChangePhaseSystem<BasePhaseSystem>::saturation() const
+{
+    return saturationModel_();
+}
+
+
+template<class BasePhaseSystem>
+Foam::autoPtr<Foam::phaseSystem::massTransferTable>
+Foam::ThermalPhaseChangePhaseSystem<BasePhaseSystem>::massTransfer() const
+{
+    // Create a mass transfer matrix for each species of each phase
+    autoPtr<phaseSystem::massTransferTable> eqnsPtr
+    (
+        new phaseSystem::massTransferTable()
+    );
+
+    phaseSystem::massTransferTable& eqns = eqnsPtr();
+
+    forAll(this->phaseModels_, phasei)
+    {
+        const phaseModel& phase = this->phaseModels_[phasei];
+
+        const PtrList<volScalarField>& Yi = phase.Y();
+
+        forAll(Yi, i)
+        {
+            eqns.insert
+            (
+                Yi[i].name(),
+                new fvScalarMatrix(Yi[i], dimMass/dimTime)
+            );
+        }
+    }
+
+    forAllConstIter
+    (
+        phaseSystem::phasePairTable,
+        this->phasePairs_,
+        phasePairIter
+    )
+    {
+        const phasePair& pair(phasePairIter());
+
+        if (pair.ordered())
+        {
+            continue;
+        }
+        const phaseModel& phase = pair.phase1();
+        const phaseModel& otherPhase = pair.phase2();
+
+        const word name
+        (
+            IOobject::groupName(volatile_, phase.name())
+        );
+
+        const word otherName
+        (
+            IOobject::groupName(volatile_, otherPhase.name())
+        );
+
+        const volScalarField dmdt(this->dmdt(pair));
+        const volScalarField dmdt12(posPart(dmdt));
+        const volScalarField dmdt21(negPart(dmdt));
+
+        *eqns[name] += fvm::Sp(dmdt21, eqns[name]->psi()) - dmdt21;
+        *eqns[otherName] += dmdt12 - fvm::Sp(dmdt12, eqns[otherName]->psi());
+    }
+
+    return eqnsPtr;
+}
+
+
+template<class BasePhaseSystem>
+void Foam::ThermalPhaseChangePhaseSystem<BasePhaseSystem>::correctThermo()
+{
+    typedef compressible::alphatPhaseChangeWallFunctionFvPatchScalarField
+        alphatPhaseChangeWallFunction;
+
+    BasePhaseSystem::correctThermo();
+
+    forAllConstIter
+    (
+        phaseSystem::phasePairTable,
+        this->phasePairs_,
+        phasePairIter
+    )
+    {
+        const phasePair& pair(phasePairIter());
+
+        if (pair.ordered())
+        {
+            continue;
+        }
+
+        const phaseModel& phase1 = pair.phase1();
+        const phaseModel& phase2 = pair.phase2();
+
+        const volScalarField& T1(phase1.thermo().T());
+        const volScalarField& T2(phase2.thermo().T());
+
+        const volScalarField& he1(phase1.thermo().he());
+        const volScalarField& he2(phase2.thermo().he());
+
+        volScalarField& dmdt(*this->dmdt_[pair]);
+        volScalarField& iDmdt(*this->iDmdt_[pair]);
+        volScalarField& wDmdt(*this->wDmdt_[pair]);
+
+        volScalarField& Tf = *this->Tf_[pair];
+
+        volScalarField hef1(phase1.thermo().he(phase1.thermo().p(), Tf));
+        volScalarField hef2(phase2.thermo().he(phase2.thermo().p(), Tf));
+
+        if (massTransfer_ )
+        {
+            volScalarField H1
+            (
+                this->heatTransferModels_[pair][pair.first()]->K(0)
+            );
+
+            volScalarField H2
+            (
+                this->heatTransferModels_[pair][pair.second()]->K(0)
+            );
+
+            Tf = saturationModel_->Tsat(phase1.thermo().p());
+
+            scalar iDmdtRelax(this->mesh().fieldRelaxationFactor("iDmdt"));
+
+            iDmdt =
+                (1 - iDmdtRelax)*iDmdt
+              + iDmdtRelax*(H1*(Tf - T1) + H2*(Tf - T2))
+               /min
+                (
+                    (pos(iDmdt)*he2 + neg(iDmdt)*hef2)
+                  - (neg(iDmdt)*he1 + pos(iDmdt)*hef1),
+                    0.3*mag(hef2 - hef1)
+                );
+
+            Info<< "iDmdt." << pair.name()
+                << ": min = " << min(iDmdt.internalField())
+                << ", mean = " << average(iDmdt.internalField())
+                << ", max = " << max(iDmdt.internalField())
+                << ", integral = " << fvc::domainIntegrate(iDmdt).value()
+                << endl;
+        }
+        else
+        {
+            iDmdt == dimensionedScalar("0", dmdt.dimensions(), 0);
+        }
+
+        volScalarField H1(this->heatTransferModels_[pair][pair.first()]->K());
+        volScalarField H2(this->heatTransferModels_[pair][pair.second()]->K());
+
+        // Limit the H[12] boundary field to avoid /0
+        const scalar HLimit = 1e-4;
+        H1.boundaryField() =
+            max(H1.boundaryField(), phase1.boundaryField()*HLimit);
+        H2.boundaryField() =
+            max(H2.boundaryField(), phase2.boundaryField()*HLimit);
+
+        volScalarField mDotL
+        (
+            iDmdt*
+            (
+                (pos(iDmdt)*he2 + neg(iDmdt)*hef2)
+              - (neg(iDmdt)*he1 + pos(iDmdt)*hef1)
+            )
+        );
+
+        Tf = (H1*T1 + H2*T2 + mDotL)/(H1 + H2);
+
+        Info<< "Tf." << pair.name()
+            << ": min = " << min(Tf.internalField())
+            << ", mean = " << average(Tf.internalField())
+            << ", max = " << max(Tf.internalField())
+            << endl;
+
+        // Accumulate dmdt contributions from boundaries
+        if
+        (
+            phase2.mesh().foundObject<volScalarField>
+            (
+                "alphat." +  phase2.name()
+            )
+        )
+        {
+            scalar wDmdtRelax(this->mesh().fieldRelaxationFactor("wDmdt"));
+            wDmdt *= (1 - wDmdtRelax);
+
+            const volScalarField& alphat =
+                phase2.mesh().lookupObject<volScalarField>
+                (
+                    "alphat." +  phase2.name()
+                );
+
+            const fvPatchList& patches = this->mesh().boundary();
+            forAll(patches, patchi)
+            {
+                const fvPatch& currPatch = patches[patchi];
+
+                if
+                (
+                    isA<alphatPhaseChangeWallFunction>
+                    (
+                        alphat.boundaryField()[patchi]
+                    )
+                )
+                {
+                    const scalarField& patchDmdt =
+                        refCast<const alphatPhaseChangeWallFunction>
+                        (
+                            alphat.boundaryField()[patchi]
+                        ).dmdt();
+
+                    forAll(patchDmdt,facei)
+                    {
+                        label faceCelli = currPatch.faceCells()[facei];
+                        wDmdt[faceCelli] += wDmdtRelax*patchDmdt[facei];
+                    }
+                }
+            }
+
+            Info<< "wDmdt." << pair.name()
+                << ": min = " << min(wDmdt.internalField())
+                << ", mean = " << average(wDmdt.internalField())
+                << ", max = " << max(wDmdt.internalField())
+                << ", integral = " << fvc::domainIntegrate(wDmdt).value()
+                << endl;
+        }
+
+        dmdt = wDmdt + iDmdt;
+
+        Info<< "dmdt." << pair.name()
+            << ": min = " << min(dmdt.internalField())
+            << ", mean = " << average(dmdt.internalField())
+            << ", max = " << max(dmdt.internalField())
+            << ", integral = " << fvc::domainIntegrate(dmdt).value()
+            << endl;
+    }
+}
+
+
+template<class BasePhaseSystem>
+bool Foam::ThermalPhaseChangePhaseSystem<BasePhaseSystem>::read()
+{
+    if (BasePhaseSystem::read())
+    {
+        bool readOK = true;
+
+        // Models ...
+
+        return readOK;
+    }
+    else
+    {
+        return false;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/ThermalPhaseChangePhaseSystem/ThermalPhaseChangePhaseSystem.H b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/PhaseSystems/ThermalPhaseChangePhaseSystem/ThermalPhaseChangePhaseSystem.H
similarity index 88%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/ThermalPhaseChangePhaseSystem/ThermalPhaseChangePhaseSystem.H
rename to applications/solvers/multiphase/reactingEulerFoam/phaseSystems/PhaseSystems/ThermalPhaseChangePhaseSystem/ThermalPhaseChangePhaseSystem.H
index 9a0a0d109a446a09a79c29dfd62cce912ccb3453..e67b8209fe28c3773a0a72524d0d4e50036428c1 100644
--- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/ThermalPhaseChangePhaseSystem/ThermalPhaseChangePhaseSystem.H
+++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/PhaseSystems/ThermalPhaseChangePhaseSystem/ThermalPhaseChangePhaseSystem.H
@@ -43,6 +43,7 @@ SourceFiles
 
 #include "HeatAndMassTransferPhaseSystem.H"
 #include "saturationModel.H"
+#include "Switch.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -69,6 +70,17 @@ protected:
         //- The saturation model used to evaluate Tsat = Tf
         autoPtr<saturationModel> saturationModel_;
 
+        // Mass transfer enabled
+        Switch massTransfer_;
+
+        //- Interfacial Mass transfer rate
+        HashPtrTable<volScalarField, phasePairKey, phasePairKey::hash>
+            iDmdt_;
+
+        //- Wall Mass transfer rate
+        HashPtrTable<volScalarField, phasePairKey, phasePairKey::hash>
+            wDmdt_;
+
 
 public:
 
@@ -84,6 +96,9 @@ public:
 
     // Member Functions
 
+        //- Return the saturationModel
+        const saturationModel& saturation() const;
+
         //- Return the mass transfer matrices
         virtual autoPtr<phaseSystem::massTransferTable> massTransfer() const;
 
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/constantDiameter/constantDiameter.C b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/diameterModels/constantDiameter/constantDiameter.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/constantDiameter/constantDiameter.C
rename to applications/solvers/multiphase/reactingEulerFoam/phaseSystems/diameterModels/constantDiameter/constantDiameter.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/constantDiameter/constantDiameter.H b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/diameterModels/constantDiameter/constantDiameter.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/constantDiameter/constantDiameter.H
rename to applications/solvers/multiphase/reactingEulerFoam/phaseSystems/diameterModels/constantDiameter/constantDiameter.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/diameterModel/diameterModel.C b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/diameterModels/diameterModel/diameterModel.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/diameterModel/diameterModel.C
rename to applications/solvers/multiphase/reactingEulerFoam/phaseSystems/diameterModels/diameterModel/diameterModel.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/diameterModel/diameterModel.H b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/diameterModels/diameterModel/diameterModel.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/diameterModel/diameterModel.H
rename to applications/solvers/multiphase/reactingEulerFoam/phaseSystems/diameterModels/diameterModel/diameterModel.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/diameterModel/newDiameterModel.C b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/diameterModels/diameterModel/newDiameterModel.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/diameterModel/newDiameterModel.C
rename to applications/solvers/multiphase/reactingEulerFoam/phaseSystems/diameterModels/diameterModel/newDiameterModel.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/isothermalDiameter/isothermalDiameter.C b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/diameterModels/isothermalDiameter/isothermalDiameter.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/isothermalDiameter/isothermalDiameter.C
rename to applications/solvers/multiphase/reactingEulerFoam/phaseSystems/diameterModels/isothermalDiameter/isothermalDiameter.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/isothermalDiameter/isothermalDiameter.H b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/diameterModels/isothermalDiameter/isothermalDiameter.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/isothermalDiameter/isothermalDiameter.H
rename to applications/solvers/multiphase/reactingEulerFoam/phaseSystems/diameterModels/isothermalDiameter/isothermalDiameter.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/AnisothermalPhaseModel/AnisothermalPhaseModel.C b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/AnisothermalPhaseModel/AnisothermalPhaseModel.C
similarity index 84%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/AnisothermalPhaseModel/AnisothermalPhaseModel.C
rename to applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/AnisothermalPhaseModel/AnisothermalPhaseModel.C
index 3a2786d75c1851d2d1d7d5c0de0fc67addcaadba..8d705049f79da933f93d29c1fa03de9127348374 100644
--- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/AnisothermalPhaseModel/AnisothermalPhaseModel.C
+++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/AnisothermalPhaseModel/AnisothermalPhaseModel.C
@@ -32,21 +32,12 @@ template<class BasePhaseModel>
 Foam::AnisothermalPhaseModel<BasePhaseModel>::AnisothermalPhaseModel
 (
     const phaseSystem& fluid,
-    const word& phaseName
+    const word& phaseName,
+    const label index
 )
 :
-    BasePhaseModel(fluid, phaseName),
-    divU_
-    (
-        IOobject
-        (
-            IOobject::groupName("divU", this->name()),
-            fluid.mesh().time().timeName(),
-            fluid.mesh()
-        ),
-        fluid.mesh(),
-        dimensionedScalar("divU", dimless/dimTime, 0)
-    ),
+    BasePhaseModel(fluid, phaseName, index),
+    divU_(NULL),
     K_
     (
         IOobject
@@ -104,7 +95,7 @@ Foam::AnisothermalPhaseModel<BasePhaseModel>::heEqn()
 
     volScalarField& he = this->thermo_->he();
 
-    return
+    tmp<fvScalarMatrix> tEEqn
     (
         fvm::ddt(alpha, this->rho(), he) + fvm::div(alphaRhoPhi, he)
       - fvm::Sp(contErr, he)
@@ -118,28 +109,35 @@ Foam::AnisothermalPhaseModel<BasePhaseModel>::heEqn()
            *fvc::interpolate(alphaEff),
             he
         )
-
-      + (
-            he.name() == this->thermo_->phasePropertyName("e")
-          ? fvc::ddt(alpha)*this->thermo().p()
-          + fvc::div(alphaPhi, this->thermo().p())
-          : -alpha*this->fluid().dpdt()
-        )
      ==
         this->Sh()
     );
+
+    // Add the appropriate pressure-work term
+    if (he.name() == this->thermo_->phasePropertyName("e"))
+    {
+        tEEqn() +=
+            fvc::ddt(alpha)*this->thermo().p()
+          + fvc::div(alphaPhi, this->thermo().p());
+    }
+    else if (this->thermo_->dpdt())
+    {
+        tEEqn() -= alpha*this->fluid().dpdt();
+    }
+
+    return tEEqn;
 }
 
 
 template<class BasePhaseModel>
 bool Foam::AnisothermalPhaseModel<BasePhaseModel>::compressible() const
 {
-    return true;
+    return !this->thermo().incompressible();
 }
 
 
 template<class BasePhaseModel>
-const Foam::volScalarField&
+const Foam::tmp<Foam::volScalarField>&
 Foam::AnisothermalPhaseModel<BasePhaseModel>::divU() const
 {
     return divU_;
@@ -148,7 +146,10 @@ Foam::AnisothermalPhaseModel<BasePhaseModel>::divU() const
 
 template<class BasePhaseModel>
 void
-Foam::AnisothermalPhaseModel<BasePhaseModel>::divU(const volScalarField& divU)
+Foam::AnisothermalPhaseModel<BasePhaseModel>::divU
+(
+    const tmp<volScalarField>& divU
+)
 {
     divU_ = divU;
 }
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/AnisothermalPhaseModel/AnisothermalPhaseModel.H b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/AnisothermalPhaseModel/AnisothermalPhaseModel.H
similarity index 91%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/AnisothermalPhaseModel/AnisothermalPhaseModel.H
rename to applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/AnisothermalPhaseModel/AnisothermalPhaseModel.H
index e7a76bf496e24375cb3956492abc254ee800ccd4..a8c4be694a98d09b48b616287148bd192d37b36a 100644
--- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/AnisothermalPhaseModel/AnisothermalPhaseModel.H
+++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/AnisothermalPhaseModel/AnisothermalPhaseModel.H
@@ -55,7 +55,7 @@ class AnisothermalPhaseModel
     // Private data
 
         //- Dilatation rate
-        volScalarField divU_;
+        tmp<volScalarField> divU_;
 
         //- Kinetic energy
         volScalarField K_;
@@ -65,7 +65,12 @@ public:
 
     // Constructors
 
-        AnisothermalPhaseModel(const phaseSystem& fluid, const word& phaseName);
+        AnisothermalPhaseModel
+        (
+            const phaseSystem& fluid,
+            const word& phaseName,
+            const label index
+        );
 
 
     //- Destructor
@@ -90,10 +95,10 @@ public:
             virtual bool compressible() const;
 
             //- Return the phase dilatation rate (d(alpha)/dt + div(alpha*phi))
-            virtual const volScalarField& divU() const;
+            virtual const tmp<volScalarField>& divU() const;
 
             //- Set the phase dilatation rate (d(alpha)/dt + div(alpha*phi))
-            virtual void divU(const volScalarField& divU);
+            virtual void divU(const tmp<volScalarField>& divU);
 
             //- Return the phase kinetic energy
             virtual const volScalarField& K() const;
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/InertPhaseModel/InertPhaseModel.C b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/InertPhaseModel/InertPhaseModel.C
similarity index 96%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/InertPhaseModel/InertPhaseModel.C
rename to applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/InertPhaseModel/InertPhaseModel.C
index 909a5418b92ca77c9154671dab4334810244e493..ba5e90459bf7da610f725cfa9173c607d8e28887 100644
--- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/InertPhaseModel/InertPhaseModel.C
+++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/InertPhaseModel/InertPhaseModel.C
@@ -32,10 +32,11 @@ template<class BasePhaseModel>
 Foam::InertPhaseModel<BasePhaseModel>::InertPhaseModel
 (
     const phaseSystem& fluid,
-    const word& phaseName
+    const word& phaseName,
+    const label index
 )
 :
-    BasePhaseModel(fluid, phaseName)
+    BasePhaseModel(fluid, phaseName, index)
 {}
 
 
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/InertPhaseModel/InertPhaseModel.H b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/InertPhaseModel/InertPhaseModel.H
similarity index 94%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/InertPhaseModel/InertPhaseModel.H
rename to applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/InertPhaseModel/InertPhaseModel.H
index c74088eaa505413fa79731e47dc6834b708f3bdd..77823d44913610eebdabda9bbabac558445b7685 100644
--- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/InertPhaseModel/InertPhaseModel.H
+++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/InertPhaseModel/InertPhaseModel.H
@@ -56,7 +56,12 @@ public:
 
     // Constructors
 
-        InertPhaseModel(const phaseSystem& fluid, const word& phaseName);
+        InertPhaseModel
+        (
+            const phaseSystem& fluid,
+            const word& phaseName,
+            const label index
+        );
 
 
     //- Destructor
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/IsothermalPhaseModel/IsothermalPhaseModel.C b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/IsothermalPhaseModel/IsothermalPhaseModel.C
similarity index 95%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/IsothermalPhaseModel/IsothermalPhaseModel.C
rename to applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/IsothermalPhaseModel/IsothermalPhaseModel.C
index 07f99c5a5d23dc2d5cf315705a72e127f44b5bd2..19b7b73ebe10fb1654d7b05e6790a01eff49e6f9 100644
--- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/IsothermalPhaseModel/IsothermalPhaseModel.C
+++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/IsothermalPhaseModel/IsothermalPhaseModel.C
@@ -32,10 +32,11 @@ template<class BasePhaseModel>
 Foam::IsothermalPhaseModel<BasePhaseModel>::IsothermalPhaseModel
 (
     const phaseSystem& fluid,
-    const word& phaseName
+    const word& phaseName,
+    const label index
 )
 :
-    BasePhaseModel(fluid, phaseName)
+    BasePhaseModel(fluid, phaseName, index)
 {}
 
 
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/IsothermalPhaseModel/IsothermalPhaseModel.H b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/IsothermalPhaseModel/IsothermalPhaseModel.H
similarity index 94%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/IsothermalPhaseModel/IsothermalPhaseModel.H
rename to applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/IsothermalPhaseModel/IsothermalPhaseModel.H
index d43a1a6119b6efbcb8148e620074e04850454cc2..bdf1a14aed60fd762c52d544f122b24c1c55dab7 100644
--- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/IsothermalPhaseModel/IsothermalPhaseModel.H
+++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/IsothermalPhaseModel/IsothermalPhaseModel.H
@@ -57,7 +57,12 @@ public:
 
     // Constructors
 
-        IsothermalPhaseModel(const phaseSystem& fluid, const word& phaseName);
+        IsothermalPhaseModel
+        (
+            const phaseSystem& fluid,
+            const word& phaseName,
+            const label index
+        );
 
 
     //- Destructor
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/MovingPhaseModel/MovingPhaseModel.C b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/MovingPhaseModel/MovingPhaseModel.C
similarity index 95%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/MovingPhaseModel/MovingPhaseModel.C
rename to applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/MovingPhaseModel/MovingPhaseModel.C
index b1869b9fbfe2ac7f0e85b3bbdbd3523e999f7951..d06c61987a6dcb4c4ec128cbbfbb25a176903e6a 100644
--- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/MovingPhaseModel/MovingPhaseModel.C
+++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/MovingPhaseModel/MovingPhaseModel.C
@@ -123,10 +123,11 @@ template<class BasePhaseModel>
 Foam::MovingPhaseModel<BasePhaseModel>::MovingPhaseModel
 (
     const phaseSystem& fluid,
-    const word& phaseName
+    const word& phaseName,
+    const label index
 )
 :
-    BasePhaseModel(fluid, phaseName),
+    BasePhaseModel(fluid, phaseName, index),
     U_
     (
         IOobject
@@ -197,6 +198,7 @@ Foam::MovingPhaseModel<BasePhaseModel>::MovingPhaseModel
         dimensionedScalar("0", dimDensity/dimTime, 0)
     )
 {
+    phi_.writeOpt() = IOobject::AUTO_WRITE;
     correctKinematics();
 }
 
@@ -243,6 +245,14 @@ void Foam::MovingPhaseModel<BasePhaseModel>::correctTurbulence()
 }
 
 
+template<class BasePhaseModel>
+void Foam::MovingPhaseModel<BasePhaseModel>::correctEnergyTransport()
+{
+    BasePhaseModel::correctEnergyTransport();
+    turbulence_->correctEnergyTransport();
+}
+
+
 template<class BasePhaseModel>
 Foam::tmp<Foam::fvVectorMatrix>
 Foam::MovingPhaseModel<BasePhaseModel>::UEqn()
@@ -252,6 +262,7 @@ Foam::MovingPhaseModel<BasePhaseModel>::UEqn()
         fvm::ddt(*this, this->thermo().rho(), U_)
       + fvm::div(alphaRhoPhi_, U_)
       - fvm::Sp(continuityError_, U_)
+      + this->fluid().MRF().DDt(*this*this->thermo().rho(), U_)
       + turbulence_->divDevRhoReff(U_)
     );
 }
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/MovingPhaseModel/MovingPhaseModel.H b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/MovingPhaseModel/MovingPhaseModel.H
similarity index 97%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/MovingPhaseModel/MovingPhaseModel.H
rename to applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/MovingPhaseModel/MovingPhaseModel.H
index 14e9c057b7eaaaf2f92db29eea3c0b73abab3bf4..b78762fd533688c58744124292c272f0eb947d5d 100644
--- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/MovingPhaseModel/MovingPhaseModel.H
+++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/MovingPhaseModel/MovingPhaseModel.H
@@ -106,7 +106,8 @@ public:
         MovingPhaseModel
         (
             const phaseSystem& fluid,
-            const word& phaseName
+            const word& phaseName,
+            const label index
         );
 
 
@@ -125,6 +126,9 @@ public:
         //- Correct the turbulence
         virtual void correctTurbulence();
 
+        //- Correct the energy transport e.g. alphat
+        virtual void correctEnergyTransport();
+
         //- Return the momentum equation
         virtual tmp<fvVectorMatrix> UEqn();
 
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/MultiComponentPhaseModel/MultiComponentPhaseModel.C b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/MultiComponentPhaseModel/MultiComponentPhaseModel.C
similarity index 97%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/MultiComponentPhaseModel/MultiComponentPhaseModel.C
rename to applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/MultiComponentPhaseModel/MultiComponentPhaseModel.C
index d6e05a51397501881f736b519f4e1a66a0af53b2..efa486a0e471748e286e1154ab47bf6650249c80 100644
--- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/MultiComponentPhaseModel/MultiComponentPhaseModel.C
+++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/MultiComponentPhaseModel/MultiComponentPhaseModel.C
@@ -41,10 +41,11 @@ template<class BasePhaseModel>
 Foam::MultiComponentPhaseModel<BasePhaseModel>::MultiComponentPhaseModel
 (
     const phaseSystem& fluid,
-    const word& phaseName
+    const word& phaseName,
+    const label index
 )
 :
-    BasePhaseModel(fluid, phaseName),
+    BasePhaseModel(fluid, phaseName, index),
     Sc_
     (
         "Sc",
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/MultiComponentPhaseModel/MultiComponentPhaseModel.H b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/MultiComponentPhaseModel/MultiComponentPhaseModel.H
similarity index 98%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/MultiComponentPhaseModel/MultiComponentPhaseModel.H
rename to applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/MultiComponentPhaseModel/MultiComponentPhaseModel.H
index 272e520eeb311d2196e09438e3a5b912d49d16a1..94ca80582c4c056d10ead927d564e1ba06511d06 100644
--- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/MultiComponentPhaseModel/MultiComponentPhaseModel.H
+++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/MultiComponentPhaseModel/MultiComponentPhaseModel.H
@@ -73,7 +73,8 @@ public:
         MultiComponentPhaseModel
         (
             const phaseSystem& fluid,
-            const word& phaseName
+            const word& phaseName,
+            const label index
         );
 
 
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/PurePhaseModel/PurePhaseModel.C b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/PurePhaseModel/PurePhaseModel.C
similarity index 96%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/PurePhaseModel/PurePhaseModel.C
rename to applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/PurePhaseModel/PurePhaseModel.C
index c3e1831158af975200e8b012ebf99415198f89f4..be2800574465399ff8a6bdaea97f10df3b5b9360 100644
--- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/PurePhaseModel/PurePhaseModel.C
+++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/PurePhaseModel/PurePhaseModel.C
@@ -32,10 +32,11 @@ template<class BasePhaseModel>
 Foam::PurePhaseModel<BasePhaseModel>::PurePhaseModel
 (
     const phaseSystem& fluid,
-    const word& phaseName
+    const word& phaseName,
+    const label index
 )
 :
-    BasePhaseModel(fluid, phaseName)
+    BasePhaseModel(fluid, phaseName, index)
 {}
 
 
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/PurePhaseModel/PurePhaseModel.H b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/PurePhaseModel/PurePhaseModel.H
similarity index 95%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/PurePhaseModel/PurePhaseModel.H
rename to applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/PurePhaseModel/PurePhaseModel.H
index f17c60cb6f8c91b9f7aacac25341390a2b84f525..2aa8034ede7ca95a15e643afe54fc5274ffcd418 100644
--- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/PurePhaseModel/PurePhaseModel.H
+++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/PurePhaseModel/PurePhaseModel.H
@@ -64,7 +64,12 @@ public:
 
     // Constructors
 
-        PurePhaseModel(const phaseSystem& fluid, const word& phaseName);
+        PurePhaseModel
+        (
+            const phaseSystem& fluid,
+            const word& phaseName,
+            const label index
+        );
 
 
     //- Destructor
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/ReactingPhaseModel/ReactingPhaseModel.C b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/ReactingPhaseModel/ReactingPhaseModel.C
similarity index 95%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/ReactingPhaseModel/ReactingPhaseModel.C
rename to applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/ReactingPhaseModel/ReactingPhaseModel.C
index a6ab32d2fcb8c0c91daef702360400c87eb6b86d..96a76de1698c4eeaf61e944ee599c89978fe7a22 100644
--- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/ReactingPhaseModel/ReactingPhaseModel.C
+++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/ReactingPhaseModel/ReactingPhaseModel.C
@@ -33,13 +33,14 @@ template<class BasePhaseModel, class ReactionType>
 Foam::ReactingPhaseModel<BasePhaseModel, ReactionType>::ReactingPhaseModel
 (
     const phaseSystem& fluid,
-    const word& phaseName
+    const word& phaseName,
+    const label index
 )
 :
-    BasePhaseModel(fluid, phaseName, false),
+    BasePhaseModel(fluid, phaseName, index, false),
     reaction_
     (
-        ReactionType::New(fluid.mesh(), phaseName)
+        ReactionType::New(fluid.mesh(), this->name())
     )
 {
     this->thermo_ = &reaction_->thermo();
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/ReactingPhaseModel/ReactingPhaseModel.H b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/ReactingPhaseModel/ReactingPhaseModel.H
similarity index 97%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/ReactingPhaseModel/ReactingPhaseModel.H
rename to applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/ReactingPhaseModel/ReactingPhaseModel.H
index 988674d55c8fa8010fbae34e6b2b0a12c294692c..305b62590a891248d759e1f1304909a9e88437d3 100644
--- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/ReactingPhaseModel/ReactingPhaseModel.H
+++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/ReactingPhaseModel/ReactingPhaseModel.H
@@ -67,7 +67,8 @@ public:
         ReactingPhaseModel
         (
             const phaseSystem& fluid,
-            const word& phaseName
+            const word& phaseName,
+            const label index
         );
 
 
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/ThermoPhaseModel/ThermoPhaseModel.C b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/ThermoPhaseModel/ThermoPhaseModel.C
similarity index 69%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/ThermoPhaseModel/ThermoPhaseModel.C
rename to applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/ThermoPhaseModel/ThermoPhaseModel.C
index 2befe1585afb66487fcd56f38a52c895cbed32ce..2367cda41475e051775ab2fef141beb6b5893a95 100644
--- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/ThermoPhaseModel/ThermoPhaseModel.C
+++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/ThermoPhaseModel/ThermoPhaseModel.C
@@ -41,16 +41,17 @@ Foam::ThermoPhaseModel<BasePhaseModel, ThermoType>::ThermoPhaseModel
 (
     const phaseSystem& fluid,
     const word& phaseName,
+    const label index,
     const bool createThermo
 )
 :
-    BasePhaseModel(fluid, phaseName)
+    BasePhaseModel(fluid, phaseName, index)
 {
     if (createThermo)
     {
         thermoPtr_.set
         (
-            ThermoType::New(fluid.mesh(), phaseName).ptr()
+            ThermoType::New(fluid.mesh(), this->name()).ptr()
         );
 
         thermo_ = thermoPtr_.ptr();
@@ -110,10 +111,10 @@ template<class BasePhaseModel, class ThermoType>
 Foam::tmp<Foam::scalarField>
 Foam::ThermoPhaseModel<BasePhaseModel, ThermoType>::mu
 (
-    const label patchI
+    const label patchi
 ) const
 {
-    return thermo_->mu(patchI);
+    return thermo_->mu(patchi);
 }
 
 
@@ -129,10 +130,10 @@ template<class BasePhaseModel, class ThermoType>
 Foam::tmp<Foam::scalarField>
 Foam::ThermoPhaseModel<BasePhaseModel, ThermoType>::nu
 (
-    const label patchI
+    const label patchi
 ) const
 {
-    return thermo_->nu(patchI);
+    return thermo_->nu(patchi);
 }
 
 
@@ -148,10 +149,75 @@ template<class BasePhaseModel, class ThermoType>
 Foam::tmp<Foam::scalarField>
 Foam::ThermoPhaseModel<BasePhaseModel, ThermoType>::kappa
 (
-    const label patchI
+    const label patchi
 ) const
 {
-    return thermo_->kappa(patchI);
+    return thermo_->kappa(patchi);
+}
+
+
+template<class BasePhaseModel, class ThermoType>
+Foam::tmp<Foam::volScalarField>
+Foam::ThermoPhaseModel<BasePhaseModel, ThermoType>::kappaEff
+(
+    const volScalarField& alphat
+) const
+{
+    return thermo_->kappaEff(alphat);
+}
+
+
+template<class BasePhaseModel, class ThermoType>
+Foam::tmp<Foam::scalarField>
+Foam::ThermoPhaseModel<BasePhaseModel, ThermoType>::kappaEff
+(
+    const scalarField& alphat,
+    const label patchi
+) const
+{
+    return thermo_->kappaEff(alphat, patchi);
+}
+
+
+template<class BasePhaseModel, class ThermoType>
+Foam::tmp<Foam::volScalarField>
+Foam::ThermoPhaseModel<BasePhaseModel, ThermoType>::alpha() const
+{
+    return thermo_->alpha();
+}
+
+
+template<class BasePhaseModel, class ThermoType>
+Foam::tmp<Foam::scalarField>
+Foam::ThermoPhaseModel<BasePhaseModel, ThermoType>::alpha
+(
+    const label patchi
+) const
+{
+    return thermo_->alpha(patchi);
+}
+
+
+template<class BasePhaseModel, class ThermoType>
+Foam::tmp<Foam::volScalarField>
+Foam::ThermoPhaseModel<BasePhaseModel, ThermoType>::alphaEff
+(
+    const volScalarField& alphat
+) const
+{
+    return thermo_->alphaEff(alphat);
+}
+
+
+template<class BasePhaseModel, class ThermoType>
+Foam::tmp<Foam::scalarField>
+Foam::ThermoPhaseModel<BasePhaseModel, ThermoType>::alphaEff
+(
+    const scalarField& alphat,
+    const label patchi
+) const
+{
+    return thermo_->alphaEff(alphat, patchi);
 }
 
 
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/ThermoPhaseModel/ThermoPhaseModel.H b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/ThermoPhaseModel/ThermoPhaseModel.H
similarity index 74%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/ThermoPhaseModel/ThermoPhaseModel.H
rename to applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/ThermoPhaseModel/ThermoPhaseModel.H
index 0c2b243a83c2d7e2613ceded67c82cf479194e1c..960d2c1ba68c1b01cce98ffa1a0ac72f578579cd 100644
--- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/ThermoPhaseModel/ThermoPhaseModel.H
+++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/ThermoPhaseModel/ThermoPhaseModel.H
@@ -76,6 +76,7 @@ public:
         (
             const phaseSystem& fluid,
             const word& phaseName,
+            const label index,
             const bool createThermo = true
         );
 
@@ -105,19 +106,51 @@ public:
             virtual tmp<volScalarField> mu() const;
 
             //- Access the laminar dynamic viscosity
-            virtual tmp<scalarField> mu(const label patchI) const;
+            virtual tmp<scalarField> mu(const label patchi) const;
 
             //- Return the laminar kinematic viscosity
             virtual tmp<volScalarField> nu() const;
 
             //- Access the laminar kinematic viscosity
-            virtual tmp<scalarField> nu(const label patchI) const;
+            virtual tmp<scalarField> nu(const label patchi) const;
 
             //- Return the laminar thermal conductivity
             virtual tmp<volScalarField> kappa() const;
 
             //- Access the laminar thermal conductivity
-            virtual tmp<scalarField> kappa(const label patchI) const;
+            virtual tmp<scalarField> kappa(const label patchi) const;
+
+            //- Return the laminar thermal conductivity
+            virtual tmp<volScalarField> kappaEff
+            (
+                const volScalarField& alphat
+            ) const;
+
+            //- Access the laminar thermal conductivity
+            virtual tmp<scalarField> kappaEff
+            (
+                const scalarField& alphat,
+                const label patchi
+            ) const;
+
+            //- Return the thermal diffusivity for enthalpy
+            virtual tmp<volScalarField> alpha() const;
+
+            //- Return the thermal diffusivity for enthalpy on a patch
+            virtual tmp<scalarField> alpha(const label patchi) const;
+
+            //- Return the thermal diffusivity for enthalpy
+            virtual tmp<volScalarField> alphaEff
+            (
+                const volScalarField& alphat
+            ) const;
+
+            //- Return the thermal diffusivity for enthalpy on a patch
+            virtual tmp<scalarField> alphaEff
+            (
+                const scalarField& alphat,
+                const label patchi
+            ) const;
 };
 
 
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/phaseModel/newPhaseModel.C b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/phaseModel/newPhaseModel.C
similarity index 95%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/phaseModel/newPhaseModel.C
rename to applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/phaseModel/newPhaseModel.C
index f2686cedb5c764f55f286cba302b0b6df697a279..0a577313b22f6b0adbd0aa71d4ce3c1afb9d8906 100644
--- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/phaseModel/newPhaseModel.C
+++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/phaseModel/newPhaseModel.C
@@ -31,7 +31,8 @@ License
 Foam::autoPtr<Foam::phaseModel> Foam::phaseModel::New
 (
     const phaseSystem& fluid,
-    const word& phaseName
+    const word& phaseName,
+    const label index
 )
 {
     word phaseModelType(fluid.subDict(phaseName).lookup("type"));
@@ -52,7 +53,7 @@ Foam::autoPtr<Foam::phaseModel> Foam::phaseModel::New
             << exit(FatalError);
     }
 
-    return cstrIter()(fluid, phaseName);
+    return cstrIter()(fluid, phaseName, index);
 }
 
 // ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/phaseModel/phaseModel.C b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/phaseModel/phaseModel.C
similarity index 85%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/phaseModel/phaseModel.C
rename to applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/phaseModel/phaseModel.C
index 61ea75e586c4c1c27e64bb3e88866d87e12aad6f..eb2e8715300b75aac87f94fef5fb467fe4e8ef71 100644
--- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/phaseModel/phaseModel.C
+++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/phaseModel/phaseModel.C
@@ -41,7 +41,8 @@ namespace Foam
 Foam::phaseModel::phaseModel
 (
     const phaseSystem& fluid,
-    const word& phaseName
+    const word& phaseName,
+    const label index
 )
 :
     volScalarField
@@ -60,6 +61,7 @@ Foam::phaseModel::phaseModel
 
     fluid_(fluid),
     name_(phaseName),
+    index_(index),
     residualAlpha_
     (
         "residualAlpha",
@@ -72,6 +74,13 @@ Foam::phaseModel::phaseModel
 }
 
 
+Foam::autoPtr<Foam::phaseModel> Foam::phaseModel::clone() const
+{
+    notImplemented("phaseModel::clone() const");
+    return autoPtr<phaseModel>(NULL);
+}
+
+
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
 Foam::phaseModel::~phaseModel()
@@ -86,6 +95,18 @@ const Foam::word& Foam::phaseModel::name() const
 }
 
 
+const Foam::word& Foam::phaseModel::keyword() const
+{
+    return name_;
+}
+
+
+Foam::label Foam::phaseModel::index() const
+{
+    return index_;
+}
+
+
 const Foam::phaseSystem& Foam::phaseModel::fluid() const
 {
     return fluid_;
@@ -128,6 +149,10 @@ void Foam::phaseModel::correctTurbulence()
 {}
 
 
+void Foam::phaseModel::correctEnergyTransport()
+{}
+
+
 bool Foam::phaseModel::read()
 {
     return diameterModel_->read(fluid_.subDict(name_));
@@ -140,16 +165,17 @@ bool Foam::phaseModel::compressible() const
 }
 
 
-const Foam::volScalarField& Foam::phaseModel::divU() const
+const Foam::tmp<Foam::volScalarField>& Foam::phaseModel::divU() const
 {
     notImplemented("Foam::phaseModel::divU()");
-    return volScalarField::null();
+    static tmp<Foam::volScalarField> divU_(NULL);
+    return divU_;
 }
 
 
-void Foam::phaseModel::divU(const volScalarField& divU)
+void Foam::phaseModel::divU(const tmp<volScalarField>& divU)
 {
-    WarningIn("phaseModel::divU(const volScalarField& divU)")
+    WarningIn("phaseModel::divU(const tmp<volScalarField>& divU)")
         << "Attempt to set the dilatation rate of an incompressible phase"
         << endl;
 }
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/phaseModel/phaseModel.H b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/phaseModel/phaseModel.H
similarity index 73%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/phaseModel/phaseModel.H
rename to applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/phaseModel/phaseModel.H
index 082bb6c019169e69038b8fe7870ef5519601d609..27d78390cac64c6e4005004a2b715d53561773e2 100644
--- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/phaseModel/phaseModel.H
+++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/phaseModel/phaseModel.H
@@ -67,6 +67,9 @@ class phaseModel
         //- Name of phase
         word name_;
 
+        //- Index of phase
+        label index_;
+
         //- Return the residual phase-fraction for given phase
         //  Used to stabilize the phase momentum as the phase-fraction -> 0
         dimensionedScalar residualAlpha_;
@@ -93,9 +96,10 @@ public:
             phaseSystem,
             (
                 const phaseSystem& fluid,
-                const word& phaseName
+                const word& phaseName,
+                const label index
             ),
-            (fluid, phaseName)
+            (fluid, phaseName, index)
         );
 
 
@@ -104,12 +108,12 @@ public:
         phaseModel
         (
             const phaseSystem& fluid,
-            const word& phaseName
+            const word& phaseName,
+            const label index
         );
 
-
-    //- Destructor
-    virtual ~phaseModel();
+        //- Return clone
+        autoPtr<phaseModel> clone() const;
 
 
     // Selectors
@@ -117,15 +121,54 @@ public:
         static autoPtr<phaseModel> New
         (
             const phaseSystem& fluid,
-            const word& phaseName
+            const word& phaseName,
+            const label index
         );
 
+        //- Return a pointer to a new phase created on freestore
+        //  from Istream
+        class iNew
+        {
+            const phaseSystem& fluid_;
+            mutable label indexCounter_;
+
+        public:
+
+            iNew
+            (
+                const phaseSystem& fluid
+            )
+            :
+                fluid_(fluid),
+                indexCounter_(-1)
+            {}
+
+            autoPtr<phaseModel> operator()(Istream& is) const
+            {
+                indexCounter_++;
+                return autoPtr<phaseModel>
+                (
+                    phaseModel::New(fluid_, word(is), indexCounter_)
+                );
+            }
+        };
+
+
+    //- Destructor
+    virtual ~phaseModel();
+
 
     // Member Functions
 
         //- Return the name of this phase
         const word& name() const;
 
+        //- Return the name of the phase for use as the keyword in PtrDictionary
+        const word& keyword() const;
+
+        //- Return the index of the phase
+        label index() const;
+
         //- Return the system to which this phase belongs
         const phaseSystem& fluid() const;
 
@@ -151,6 +194,9 @@ public:
         //- Correct the turbulence
         virtual void correctTurbulence();
 
+        //- Correct the energy transport e.g. alphat
+        virtual void correctEnergyTransport();
+
         //- Return the momentum equation
         virtual tmp<fvVectorMatrix> UEqn() = 0;
 
@@ -170,10 +216,10 @@ public:
             virtual bool compressible() const;
 
             //- Return the phase dilatation rate (d(alpha)/dt + div(alpha*phi))
-            virtual const volScalarField& divU() const;
+            virtual const tmp<volScalarField>& divU() const;
 
             //- Set the phase dilatation rate (d(alpha)/dt + div(alpha*phi))
-            virtual void divU(const volScalarField& divU);
+            virtual void divU(const tmp<volScalarField>& divU);
 
             //- Return the phase kinetic energy
             virtual const volScalarField& K() const;
@@ -246,19 +292,51 @@ public:
             virtual tmp<volScalarField> mu() const = 0;
 
             //- Return the laminar dynamic viscosity on a patch
-            virtual tmp<scalarField> mu(const label patchI) const = 0;
+            virtual tmp<scalarField> mu(const label patchi) const = 0;
 
             //- Return the laminar kinematic viscosity
             virtual tmp<volScalarField> nu() const = 0;
 
             //- Return the laminar kinematic viscosity on a patch
-            virtual tmp<scalarField> nu(const label patchI) const = 0;
+            virtual tmp<scalarField> nu(const label patchi) const = 0;
 
             //- Return the laminar thermal conductivity
             virtual tmp<volScalarField> kappa() const = 0;
 
             //- Return the laminar thermal conductivity on a patch
-            virtual tmp<scalarField> kappa(const label patchI) const = 0;
+            virtual tmp<scalarField> kappa(const label patchi) const = 0;
+
+            //- Return the effective thermal conductivity
+            virtual tmp<volScalarField> kappaEff
+            (
+                const volScalarField& alphat
+            ) const = 0;
+
+            //- Access the effective thermal conductivity
+            virtual tmp<scalarField> kappaEff
+            (
+                const scalarField& alphat,
+                const label patchi
+            ) const = 0;
+
+            //- Return the laminar thermal diffusivity for enthalpy
+            virtual tmp<volScalarField> alpha() const = 0;
+
+            //- Return the laminar thermal diffusivity for enthalpy on a patch
+            virtual tmp<scalarField> alpha(const label patchi) const = 0;
+
+            //- Return the effective thermal diffusivity for enthalpy
+            virtual tmp<volScalarField> alphaEff
+            (
+                const volScalarField& alphat
+            ) const = 0;
+
+            //- Return the effective thermal diffusivity for enthalpy on a patch
+            virtual tmp<scalarField> alphaEff
+            (
+                const scalarField& alphat,
+                const label patchi
+            ) const = 0;
 
 
         // Turbulence
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/phaseModel/phaseModels.C b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/phaseModel/phaseModels.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/phaseModel/phaseModels.C
rename to applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseModel/phaseModel/phaseModels.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/orderedPhasePair/orderedPhasePair.C b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phasePair/orderedPhasePair/orderedPhasePair.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/orderedPhasePair/orderedPhasePair.C
rename to applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phasePair/orderedPhasePair/orderedPhasePair.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/orderedPhasePair/orderedPhasePair.H b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phasePair/orderedPhasePair/orderedPhasePair.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/orderedPhasePair/orderedPhasePair.H
rename to applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phasePair/orderedPhasePair/orderedPhasePair.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/phasePair/phasePair.C b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phasePair/phasePair/phasePair.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/phasePair/phasePair.C
rename to applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phasePair/phasePair/phasePair.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/phasePair/phasePair.H b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phasePair/phasePair/phasePair.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/phasePair/phasePair.H
rename to applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phasePair/phasePair/phasePair.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/phasePair/phasePairI.H b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phasePair/phasePair/phasePairI.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/phasePair/phasePairI.H
rename to applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phasePair/phasePair/phasePairI.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/phasePairKey/phasePairKey.C b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phasePair/phasePairKey/phasePairKey.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/phasePairKey/phasePairKey.C
rename to applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phasePair/phasePairKey/phasePairKey.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/phasePairKey/phasePairKey.H b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phasePair/phasePairKey/phasePairKey.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/phasePairKey/phasePairKey.H
rename to applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phasePair/phasePairKey/phasePairKey.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseSystem/phaseSystem.C b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseSystem/phaseSystem.C
similarity index 72%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseSystem/phaseSystem.C
rename to applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseSystem/phaseSystem.C
index 3bbb6e82de4df8022efa20d1580c2c1533857838..aa9380758d386d7d82310edbff77199d5d5b8007 100644
--- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseSystem/phaseSystem.C
+++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseSystem/phaseSystem.C
@@ -41,53 +41,24 @@ const Foam::word Foam::phaseSystem::propertiesName("phaseProperties");
 
 // * * * * * * * * * * * * Protected Member Functions  * * * * * * * * * * * //
 
-Foam::phaseSystem::phaseModelTable
-Foam::phaseSystem::generatePhaseModels(const wordList& phaseNames) const
-{
-    phaseModelTable phaseModels;
-
-    forAllConstIter(wordList, phaseNames, phaseNameIter)
-    {
-        phaseModels.insert
-        (
-            *phaseNameIter,
-            phaseModel::New
-            (
-                *this,
-                *phaseNameIter
-            )
-        );
-    }
-
-    // normalise ?
-
-    return phaseModels;
-}
-
-
-Foam::tmp<Foam::surfaceScalarField> Foam::phaseSystem::generatePhi
+Foam::tmp<Foam::surfaceScalarField> Foam::phaseSystem::calcPhi
 (
-    const phaseModelTable& phaseModels
+    const phaseModelList& phaseModels
 ) const
 {
-    phaseModelTable::const_iterator phaseModelIter = phaseModels.begin();
-
     tmp<surfaceScalarField> tmpPhi
     (
         new surfaceScalarField
         (
             "phi",
-            fvc::interpolate(phaseModelIter()())*phaseModelIter()->phi()
+            fvc::interpolate(phaseModels[0])*phaseModels[0].phi()
         )
     );
 
-    ++phaseModelIter;
-
-    for (; phaseModelIter != phaseModels.end(); ++ phaseModelIter)
+    for (label phasei=1; phasei<phaseModels.size(); phasei++)
     {
         tmpPhi() +=
-            fvc::interpolate(phaseModelIter()())
-           *phaseModelIter()->phi();
+            fvc::interpolate(phaseModels[phasei])*phaseModels[phasei].phi();
     }
 
     return tmpPhi;
@@ -167,11 +138,9 @@ Foam::phaseSystem::phaseSystem
 
     mesh_(mesh),
 
-    phaseNames_(lookup("phases")),
-
-    phaseModels_(generatePhaseModels(phaseNames_)),
+    phaseModels_(lookup("phases"), phaseModel::iNew(*this)),
 
-    phi_(generatePhi(phaseModels_)),
+    phi_(calcPhi(phaseModels_)),
 
     dpdt_
     (
@@ -188,6 +157,8 @@ Foam::phaseSystem::phaseSystem
     MRF_(mesh_),
     fvOptions_(mesh_)
 {
+    phi_.writeOpt() = IOobject::AUTO_WRITE;
+
     // Blending methods
     forAllConstIter(dictionary, subDict("blending"), iter)
     {
@@ -197,7 +168,7 @@ Foam::phaseSystem::phaseSystem
             blendingMethod::New
             (
                 iter().dict(),
-                wordList(lookup("phases"))
+                phaseModels_.toc()
             )
         );
     }
@@ -220,16 +191,14 @@ Foam::phaseSystem::~phaseSystem()
 
 Foam::tmp<Foam::volScalarField> Foam::phaseSystem::rho() const
 {
-    phaseModelTable::const_iterator phaseModelIter = phaseModels_.begin();
-
     tmp<volScalarField> tmpRho
     (
-        phaseModelIter()()*phaseModelIter()->rho()
+        phaseModels_[0]*phaseModels_[0].rho()
     );
 
-    for (; phaseModelIter != phaseModels_.end(); ++ phaseModelIter)
+    for (label phasei=1; phasei<phaseModels_.size(); phasei++)
     {
-        tmpRho() += phaseModelIter()()*phaseModelIter()->rho();
+        tmpRho() += phaseModels_[phasei]*phaseModels_[phasei].rho();
     }
 
     return tmpRho;
@@ -238,16 +207,14 @@ Foam::tmp<Foam::volScalarField> Foam::phaseSystem::rho() const
 
 Foam::tmp<Foam::volVectorField> Foam::phaseSystem::U() const
 {
-    phaseModelTable::const_iterator phaseModelIter = phaseModels_.begin();
-
     tmp<volVectorField> tmpU
     (
-        phaseModelIter()()*phaseModelIter()->U()
+        phaseModels_[0]*phaseModels_[0].U()
     );
 
-    for (; phaseModelIter != phaseModels_.end(); ++ phaseModelIter)
+    for (label phasei=1; phasei<phaseModels_.size(); phasei++)
     {
-        tmpU() += phaseModelIter()()*phaseModelIter()->U();
+        tmpU() += phaseModels_[phasei]*phaseModels_[phasei].U();
     }
 
     return tmpU;
@@ -290,9 +257,9 @@ void Foam::phaseSystem::solve()
 
 void Foam::phaseSystem::correct()
 {
-    forAllIter(phaseModelTable, phaseModels_, phaseModelIter)
+    forAll(phaseModels_, phasei)
     {
-        phaseModelIter()->correct();
+        phaseModels_[phasei].correct();
     }
 }
 
@@ -301,35 +268,44 @@ void Foam::phaseSystem::correctKinematics()
 {
     bool updateDpdt = false;
 
-    forAllIter(phaseModelTable, phaseModels_, phaseModelIter)
+    forAll(phaseModels_, phasei)
     {
-        phaseModelIter()->correctKinematics();
+        phaseModels_[phasei].correctKinematics();
 
-        updateDpdt = updateDpdt || phaseModelIter()->thermo().dpdt();
+        updateDpdt = updateDpdt || phaseModels_[phasei].thermo().dpdt();
     }
 
     // Update the pressure time-derivative if required
     if (updateDpdt)
     {
-        dpdt_ = fvc::ddt(phaseModels_.begin()()().thermo().p());
+        dpdt_ = fvc::ddt(phaseModels_.begin()().thermo().p());
     }
 }
 
 
 void Foam::phaseSystem::correctThermo()
 {
-    forAllIter(phaseModelTable, phaseModels_, phaseModelIter)
+    forAll(phaseModels_, phasei)
     {
-        phaseModelIter()->correctThermo();
+        phaseModels_[phasei].correctThermo();
     }
 }
 
 
 void Foam::phaseSystem::correctTurbulence()
 {
-    forAllIter(phaseModelTable, phaseModels_, phaseModelIter)
+    forAll(phaseModels_, phasei)
+    {
+        phaseModels_[phasei].correctTurbulence();
+    }
+}
+
+
+void Foam::phaseSystem::correctEnergyTransport()
+{
+    forAll(phaseModels_, phasei)
     {
-        phaseModelIter()->correctTurbulence();
+        phaseModels_[phasei].correctEnergyTransport();
     }
 }
 
@@ -340,9 +316,9 @@ bool Foam::phaseSystem::read()
     {
         bool readOK = true;
 
-        forAllIter(phaseModelTable, phaseModels_, phaseModelIter)
+        forAll(phaseModels_, phasei)
         {
-            readOK &= phaseModelIter()->read();
+            readOK &= phaseModels_[phasei].read();
         }
 
         // models ...
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseSystem/phaseSystem.H b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseSystem/phaseSystem.H
similarity index 71%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseSystem/phaseSystem.H
rename to applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseSystem/phaseSystem.H
index 81bfd708f8ac9dbe652b250bfd6203ff61d9a514..001f1acdd34d2e30c444fe96e65c4f78cc6126ab 100644
--- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseSystem/phaseSystem.H
+++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseSystem/phaseSystem.H
@@ -42,6 +42,7 @@ SourceFiles
 #include "phasePair.H"
 #include "orderedPhasePair.H"
 #include "HashPtrTable.H"
+#include "PtrListDictionary.H"
 
 #include "IOMRFZoneList.H"
 #include "fvIOoptionList.H"
@@ -117,15 +118,13 @@ public:
             >
             massTransferTable;
 
+        typedef PtrListDictionary<phaseModel> phaseModelList;
+
 
 protected:
 
     // Protected typedefs
 
-        typedef
-            HashTable<autoPtr<phaseModel>, word, word::hash>
-            phaseModelTable;
-
         typedef
             HashTable<dictionary, phasePairKey, phasePairKey::hash>
             dictTable;
@@ -162,11 +161,8 @@ protected:
         //- Reference to the mesh
         const fvMesh& mesh_;
 
-        //- Phase names
-        wordList phaseNames_;
-
         //- Phase models
-        phaseModelTable phaseModels_;
+        phaseModelList phaseModels_;
 
         //- Phase pairs
         phasePairTable phasePairs_;
@@ -198,16 +194,10 @@ protected:
 
     // Protected member functions
 
-        //- Generate the phases
-        HashTable<autoPtr<phaseModel> > generatePhaseModels
+        //- Calculate and return the mixture flux
+        tmp<surfaceScalarField> calcPhi
         (
-            const wordList& names
-        ) const;
-
-        //- Generate the mixture flux
-        tmp<surfaceScalarField> generatePhi
-        (
-            const HashTable<autoPtr<phaseModel> >& phaseModels
+            const phaseModelList& phaseModels
         ) const;
 
         //- Generate pairs
@@ -290,48 +280,56 @@ public:
 
     // Member Functions
 
+        //- Constant access the mesh
+        inline const fvMesh& mesh() const;
+
+        //- Constant access the phase models
+        inline const phaseModelList& phases() const;
+
+        //- Access the phase models
+        inline phaseModelList& phases();
+
+        //- Constant access the phase pairs
+        inline const phasePairTable& phasePairs() const;
+
         //- Return the mixture density
         tmp<volScalarField> rho() const;
 
         //- Return the mixture velocity
         tmp<volVectorField> U() const;
 
-        //- Return the surface tension coefficient
-        tmp<volScalarField> sigma(const phasePairKey& key) const;
-
-        //- Return the drag coefficient
-        virtual tmp<volScalarField> Kd(const phasePairKey& key) const = 0;
-
-        //- Return the face drag coefficient
-        virtual tmp<surfaceScalarField> Kdf(const phasePairKey& key) const = 0;
+        //- Constant access the mixture flux
+        inline const surfaceScalarField& phi() const;
 
-        //- Return the virtual mass coefficient
-        virtual tmp<volScalarField> Vm(const phasePairKey& key) const = 0;
+        //- Access the mixture flux
+        inline surfaceScalarField& phi();
 
-        //- Return the face virtual mass coefficient
-        virtual tmp<surfaceScalarField> Vmf(const phasePairKey& key) const = 0;
+        //- Constant access the rate of change of the pressure
+        inline const volScalarField& dpdt() const;
 
-        //- Return the combined force (lift + wall-lubrication)
-        virtual tmp<volVectorField> F(const phasePairKey& key) const = 0;
+        //- Access the rate of change of the pressure
+        inline volScalarField& dpdt();
 
-        //- Return the combined face-force (lift + wall-lubrication)
-        virtual tmp<surfaceScalarField> Ff(const phasePairKey& key) const = 0;
-
-        //- Return the turbulent diffusivity
-        //  Multiplies the phase-fraction gradient
-        virtual tmp<volScalarField> D(const phasePairKey& key) const = 0;
+        //- Return the surface tension coefficient
+        tmp<volScalarField> sigma(const phasePairKey& key) const;
 
-        //- Return the interfacial mass flow rate
-        virtual tmp<volScalarField> dmdt(const phasePairKey& key) const = 0;
+        //- Return MRF zones
+        inline const IOMRFZoneList& MRF() const;
 
-        //- Return the momentum transfer matrices
-        virtual autoPtr<momentumTransferTable> momentumTransfer() const = 0;
+        //- Optional FV-options
+        inline fv::IOoptionList& fvOptions() const;
 
-        //- Return the heat transfer matrices
-        virtual autoPtr<heatTransferTable> heatTransfer() const = 0;
+        //- Access a sub model between a phase pair
+        template <class modelType>
+        const modelType& lookupSubModel(const phasePair& key) const;
 
-        //- Return the mass transfer matrices
-        virtual autoPtr<massTransferTable> massTransfer() const = 0;
+        //- Access a sub model between two phases
+        template <class modelType>
+        const modelType& lookupSubModel
+        (
+            const phaseModel& dispersed,
+            const phaseModel& continuous
+        ) const;
 
         //- Solve for the phase fractions
         virtual void solve();
@@ -348,44 +346,11 @@ public:
         //- Correct the turbulence
         virtual void correctTurbulence();
 
+        //- Correct the energy transport e.g. alphat
+        virtual void correctEnergyTransport();
+
         //- Read base phaseProperties dictionary
         virtual bool read();
-
-
-        // Access
-
-            //- Constant access the mesh
-            inline const fvMesh& mesh() const;
-
-            //- Constant access the mixture flux
-            inline const surfaceScalarField& phi() const;
-
-            //- Access the mixture flux
-            inline surfaceScalarField& phi();
-
-            //- Constant access the rate of change of the pressure
-            inline const volScalarField& dpdt() const;
-
-            //- Access the rate of change of the pressure
-            inline volScalarField& dpdt();
-
-            //- Return MRF zones
-            inline const IOMRFZoneList& MRF() const;
-
-            //- Optional FV-options
-            inline fv::IOoptionList& fvOptions() const;
-
-            //- Access a sub model between a phase pair
-            template <class modelType>
-            const modelType& lookupSubModel(const phasePair& key) const;
-
-            //- Access a sub model between two phases
-            template <class modelType>
-            const modelType& lookupSubModel
-            (
-                const phaseModel& dispersed,
-                const phaseModel& continuous
-            ) const;
 };
 
 
@@ -400,7 +365,7 @@ public:
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 #ifdef NoRepository
-#   include "phaseSystemTemplates.H"
+#   include "phaseSystemTemplates.C"
 #endif
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseSystem/phaseSystemI.H b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseSystem/phaseSystemI.H
similarity index 85%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseSystem/phaseSystemI.H
rename to applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseSystem/phaseSystemI.H
index 3d7e837533ac4372487e7a5ec09b4e4558557d7b..0f9aef50335a4fcc63b38db1a4b9fff90a5d1c32 100644
--- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseSystem/phaseSystemI.H
+++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseSystem/phaseSystemI.H
@@ -31,6 +31,27 @@ inline const Foam::fvMesh& Foam::phaseSystem::mesh() const
 }
 
 
+inline const Foam::phaseSystem::phaseModelList&
+Foam::phaseSystem::phases() const
+{
+    return phaseModels_;
+}
+
+
+inline Foam::phaseSystem::phaseModelList&
+Foam::phaseSystem::phases()
+{
+    return phaseModels_;
+}
+
+
+inline const Foam::phaseSystem::phasePairTable&
+Foam::phaseSystem::phasePairs() const
+{
+    return phasePairs_;
+}
+
+
 inline const Foam::surfaceScalarField& Foam::phaseSystem::phi() const
 {
     return phi_;
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseSystem/phaseSystemTemplates.H b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseSystem/phaseSystemTemplates.C
similarity index 97%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseSystem/phaseSystemTemplates.H
rename to applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseSystem/phaseSystemTemplates.C
index 48d17166123dcf075f49c0bc644f2b52340bffb8..eee3fcd3b3f948310157a878b0b4e0027d682d05 100644
--- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseSystem/phaseSystemTemplates.H
+++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/phaseSystem/phaseSystemTemplates.C
@@ -151,12 +151,12 @@ void Foam::phaseSystem::generatePairsAndSubModels
         HashTable<autoPtr<modelType>, phasePairKey, phasePairKey::hash>
         modelTypeTable;
 
-    forAllConstIter(wordList, phaseNames_, phaseNameIter)
+    forAll(phaseModels_, phasei)
     {
         modelTypeTable tempModels;
         generatePairsAndSubModels
         (
-            IOobject::groupName(modelName, *phaseNameIter),
+            IOobject::groupName(modelName, phaseModels_[phasei].name()),
             tempModels
         );
 
@@ -175,7 +175,7 @@ void Foam::phaseSystem::generatePairsAndSubModels
 
             models[tempModelIter.key()].insert
             (
-                *phaseNameIter,
+                phaseModels_[phasei].name(),
                 *tempModelIter
             );
         }
diff --git a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/reactionThermo/hRefConstThermos.C b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/reactionThermo/hRefConstThermos.C
new file mode 100644
index 0000000000000000000000000000000000000000..f43303a2b7ecb5671e0fc962bc25e8d80a58e60b
--- /dev/null
+++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/reactionThermo/hRefConstThermos.C
@@ -0,0 +1,271 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "makeReactionThermo.H"
+#include "makeThermo.H"
+
+#include "rhoReactionThermo.H"
+#include "heRhoThermo.H"
+
+#include "specie.H"
+#include "perfectGas.H"
+#include "perfectFluid.H"
+#include "rhoConst.H"
+
+#include "sensibleEnthalpy.H"
+
+#include "hRefConstThermo.H"
+
+#include "constTransport.H"
+
+#include "pureMixture.H"
+#include "multiComponentMixture.H"
+
+#include "thermoPhysicsTypes.H"
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+// Thermo type typedefs:
+
+typedef
+constTransport
+<
+    species::thermo
+    <
+        hRefConstThermo
+        <
+            perfectGas<specie>
+        >,
+        sensibleEnthalpy
+    >
+> constRefGasHThermoPhysics;
+
+typedef
+constTransport
+<
+    species::thermo
+    <
+        hRefConstThermo
+        <
+            perfectFluid<specie>
+        >,
+        sensibleEnthalpy
+    >
+> constRefFluidHThermoPhysics;
+
+typedef
+constTransport
+<
+    species::thermo
+    <
+        hRefConstThermo
+        <
+            perfectGas<specie>
+        >,
+        sensibleInternalEnergy
+    >
+> constRefGasEThermoPhysics;
+
+typedef
+constTransport
+<
+    species::thermo
+    <
+        hRefConstThermo
+        <
+            perfectFluid<specie>
+        >,
+        sensibleInternalEnergy
+    >
+> constRefFluidEThermoPhysics;
+
+typedef
+constTransport
+<
+    species::thermo
+    <
+        hRefConstThermo
+        <
+            rhoConst<specie>
+        >,
+        sensibleInternalEnergy
+    >
+> constRefRhoConstEThermoPhysics;
+
+typedef
+constTransport
+<
+    species::thermo
+    <
+        hRefConstThermo
+        <
+            rhoConst<specie>
+        >,
+        sensibleEnthalpy
+    >
+> constRefRhoConstHThermoPhysics;
+
+
+// pureMixture, sensibleEnthalpy:
+
+makeThermo
+(
+    rhoThermo,
+    heRhoThermo,
+    pureMixture,
+    constTransport,
+    sensibleEnthalpy,
+    hRefConstThermo,
+    perfectGas,
+    specie
+);
+
+makeThermo
+(
+    rhoThermo,
+    heRhoThermo,
+    pureMixture,
+    constTransport,
+    sensibleEnthalpy,
+    hRefConstThermo,
+    perfectFluid,
+    specie
+);
+
+makeThermo
+(
+    rhoThermo,
+    heRhoThermo,
+    pureMixture,
+    constTransport,
+    sensibleEnthalpy,
+    hRefConstThermo,
+    rhoConst,
+    specie
+);
+
+
+// pureMixture, sensibleInternalEnergy:
+
+makeThermo
+(
+    rhoThermo,
+    heRhoThermo,
+    pureMixture,
+    constTransport,
+    sensibleInternalEnergy,
+    hRefConstThermo,
+    perfectGas,
+    specie
+);
+
+makeThermo
+(
+    rhoThermo,
+    heRhoThermo,
+    pureMixture,
+    constTransport,
+    sensibleInternalEnergy,
+    hRefConstThermo,
+    perfectFluid,
+    specie
+);
+
+makeThermo
+(
+    rhoThermo,
+    heRhoThermo,
+    pureMixture,
+    constTransport,
+    sensibleInternalEnergy,
+    hRefConstThermo,
+    rhoConst,
+    specie
+);
+
+
+// multiComponentMixture, sensibleInternalEnergy:
+
+makeReactionMixtureThermo
+(
+    rhoThermo,
+    rhoReactionThermo,
+    heRhoThermo,
+    multiComponentMixture,
+    constRefGasEThermoPhysics
+);
+
+makeReactionMixtureThermo
+(
+    rhoThermo,
+    rhoReactionThermo,
+    heRhoThermo,
+    multiComponentMixture,
+    constRefFluidEThermoPhysics
+);
+
+makeReactionMixtureThermo
+(
+    rhoThermo,
+    rhoReactionThermo,
+    heRhoThermo,
+    multiComponentMixture,
+    constRefRhoConstEThermoPhysics
+);
+
+
+// multiComponentMixture, sensibleEnthalpy:
+
+makeReactionMixtureThermo
+(
+    rhoThermo,
+    rhoReactionThermo,
+    heRhoThermo,
+    multiComponentMixture,
+    constRefRhoConstHThermoPhysics
+);
+
+
+makeReactionMixtureThermo
+(
+    rhoThermo,
+    rhoReactionThermo,
+    heRhoThermo,
+    multiComponentMixture,
+    constRefGasHThermoPhysics
+);
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/Allwclean b/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/Allwclean
new file mode 100755
index 0000000000000000000000000000000000000000..93ee94face2158640ba291e93b2489cd0e9917c2
--- /dev/null
+++ b/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/Allwclean
@@ -0,0 +1,9 @@
+#!/bin/sh
+cd ${0%/*} || exit 1    # Run from this directory
+set -x
+
+wclean libso multiphaseSystem
+wclean libso multiphaseCompressibleTurbulenceModels
+wclean
+
+# ----------------------------------------------------------------- end-of-file
diff --git a/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/Allwmake b/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/Allwmake
new file mode 100755
index 0000000000000000000000000000000000000000..c60b665df4f0c0cf68d749bddb9aa3d7cb8186f4
--- /dev/null
+++ b/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/Allwmake
@@ -0,0 +1,9 @@
+#!/bin/sh
+cd ${0%/*} || exit 1    # Run from this directory
+set -x
+
+wmake libso multiphaseSystem
+wmake libso multiphaseCompressibleTurbulenceModels
+wmake
+
+# ----------------------------------------------------------------- end-of-file
diff --git a/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/CourantNo.H b/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/CourantNo.H
new file mode 100644
index 0000000000000000000000000000000000000000..d7d1cc66d88a5ba6310172052b7781ec5ff2055e
--- /dev/null
+++ b/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/CourantNo.H
@@ -0,0 +1,60 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Global
+    CourantNo
+
+Description
+    Calculates and outputs the mean and maximum Courant Numbers.
+
+\*---------------------------------------------------------------------------*/
+
+scalar CoNum = 0.0;
+scalar meanCoNum = 0.0;
+
+if (mesh.nInternalFaces())
+{
+    scalarField sumPhi
+    (
+        fvc::surfaceSum(mag(phi))().internalField()
+    );
+
+    forAll(phases, phasei)
+    {
+        sumPhi = max
+        (
+            sumPhi,
+            fvc::surfaceSum(mag(phases[phasei].phi()))().internalField()
+        );
+    }
+
+    CoNum = 0.5*gMax(sumPhi/mesh.V().field())*runTime.deltaTValue();
+
+    meanCoNum =
+        0.5*(gSum(sumPhi)/gSum(mesh.V().field()))*runTime.deltaTValue();
+}
+
+Info<< "Courant Number mean: " << meanCoNum
+    << " max: " << CoNum << endl;
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/EEqns.H b/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/EEqns.H
new file mode 100644
index 0000000000000000000000000000000000000000..386331e0ee9073212a88c0bc1719e4227fcdfd36
--- /dev/null
+++ b/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/EEqns.H
@@ -0,0 +1,48 @@
+{
+    fluid.correctEnergyTransport();
+
+    autoPtr<phaseSystem::heatTransferTable>
+        heatTransferPtr(fluid.heatTransfer());
+
+    phaseSystem::heatTransferTable& heatTransfer = heatTransferPtr();
+
+    forAll(phases, phasei)
+    {
+        phaseModel& phase = phases[phasei];
+
+        const volScalarField& alpha = phase;
+        const volScalarField& rho = phase.rho();
+        const volVectorField& U = phase.U();
+
+        tmp<fvScalarMatrix> EEqn(phase.heEqn());
+
+        if (EEqn.valid())
+        {
+            EEqn =
+            (
+                EEqn
+             ==
+               *heatTransfer[phase.name()]
+              + alpha*rho*(U&g)
+              + fvOptions(alpha, rho, phase.thermo().he())
+            );
+
+            EEqn->relax();
+            fvOptions.constrain(EEqn());
+            EEqn->solve();
+        }
+    }
+}
+
+fluid.correctThermo();
+
+forAll(phases, phasei)
+{
+    phaseModel& phase = phases[phasei];
+
+    Info<< phase.name() << " min/max T "
+        << min(phase.thermo().T()).value()
+        << " - "
+        << max(phase.thermo().T()).value()
+        << endl;
+}
diff --git a/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/Make/files b/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/Make/files
new file mode 100644
index 0000000000000000000000000000000000000000..0f1d5ae27115910e59fc07c5272daa814b73b18e
--- /dev/null
+++ b/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/Make/files
@@ -0,0 +1,3 @@
+reactingMultiphaseEulerFoam.C
+
+EXE = $(FOAM_APPBIN)/reactingMultiphaseEulerFoam
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/Make/options b/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/Make/options
similarity index 71%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/Make/options
rename to applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/Make/options
index f1f3b8dc8e38fafd84d8f3241372780f644ec8ff..9acc2a5f82df09feee7bf89a071fd985f405abf2 100644
--- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/Make/options
+++ b/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/Make/options
@@ -1,8 +1,8 @@
 EXE_INC = \
-    -IphaseSystems/lnInclude \
-    -IinterfacialModels/lnInclude \
-    -IinterfacialCompositionModels/lnInclude \
-    -IphaseCompressibleTurbulenceModels/lnInclude \
+    -ImultiphaseSystem/lnInclude \
+    -I../phaseSystems/lnInclude \
+    -I../interfacialModels/lnInclude \
+    -I../interfacialCompositionModels/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
     -I$(LIB_SRC)/transportModels/compressible/lnInclude \
     -I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \
@@ -14,10 +14,11 @@ EXE_INC = \
     -I$(LIB_SRC)/sampling/lnInclude
 
 EXE_LIBS = \
-    -lreactingTwoPhaseSystem \
+    -lreactingPhaseSystem \
+    -lreactingMultiphaseSystem \
     -lreactingEulerianInterfacialModels \
     -lreactingEulerianInterfacialCompositionModels \
-    -lphaseReactingTurbulenceModels \
+    -lmultiphaseReactingTurbulenceModels \
     -lfiniteVolume \
     -lfvOptions \
     -lmeshTools \
diff --git a/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/YEqns.H b/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/YEqns.H
new file mode 100644
index 0000000000000000000000000000000000000000..4094e185af08d0cd0ecd9832d61c4eaddf828b11
--- /dev/null
+++ b/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/YEqns.H
@@ -0,0 +1,37 @@
+{
+    autoPtr<phaseSystem::massTransferTable>
+        massTransferPtr(fluid.massTransfer());
+
+    phaseSystem::massTransferTable&
+        massTransfer(massTransferPtr());
+
+    forAll(phases, phasei)
+    {
+        phaseModel& phase = phases[phasei];
+
+        PtrList<volScalarField>& Y = phase.Y();
+        const volScalarField& alpha = phase;
+        const volScalarField& rho = phase.rho();
+
+        forAll(Y, i)
+        {
+            tmp<fvScalarMatrix> YiEqn(phase.YiEqn(Y[i]));
+
+            if (YiEqn.valid())
+            {
+                YiEqn =
+                (
+                    YiEqn
+                  ==
+                    *massTransfer[Y[i].name()]
+                   + fvOptions(alpha, rho, Y[i])
+                );
+
+                YiEqn->relax();
+                YiEqn->solve(mesh.solver("Yi"));
+            }
+        }
+    }
+
+    fluid.massTransfer(); // updates interfacial mass flow rates
+}
diff --git a/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/createFields.H b/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/createFields.H
new file mode 100644
index 0000000000000000000000000000000000000000..1375db8c406728e3c3247ebd06801e93f452fd39
--- /dev/null
+++ b/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/createFields.H
@@ -0,0 +1,53 @@
+#include "readGravitationalAcceleration.H"
+#include "readhRef.H"
+
+Info<< "Creating phaseSystem\n" << endl;
+
+autoPtr<multiphaseSystem> fluidPtr
+(
+    multiphaseSystem::New(mesh)
+);
+multiphaseSystem& fluid = fluidPtr();
+multiphaseSystem::phaseModelList& phases = fluid.phases();
+
+surfaceScalarField& phi = fluid.phi();
+
+dimensionedScalar pMin
+(
+    "pMin",
+    dimPressure,
+    fluid
+);
+
+#include "gh.H"
+
+volScalarField& p = phases[0].thermo().p();
+
+Info<< "Reading field p_rgh\n" << endl;
+volScalarField p_rgh
+(
+    IOobject
+    (
+        "p_rgh",
+        runTime.timeName(),
+        mesh,
+        IOobject::MUST_READ,
+        IOobject::AUTO_WRITE
+    ),
+    mesh
+);
+
+label pRefCell = 0;
+scalar pRefValue = 0.0;
+setRefCell
+(
+    p,
+    p_rgh,
+    pimple.dict(),
+    pRefCell,
+    pRefValue
+);
+mesh.setFluxRequired(p_rgh.name());
+
+const IOMRFZoneList& MRF = fluid.MRF();
+fv::IOoptionList& fvOptions = fluid.fvOptions();
diff --git a/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/multiphaseCompressibleTurbulenceModels/Make/files b/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/multiphaseCompressibleTurbulenceModels/Make/files
new file mode 100644
index 0000000000000000000000000000000000000000..dd421b52a3d314467a51942a9a3bb099f88b2090
--- /dev/null
+++ b/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/multiphaseCompressibleTurbulenceModels/Make/files
@@ -0,0 +1,3 @@
+multiphaseCompressibleTurbulenceModels.C
+
+LIB = $(FOAM_LIBBIN)/libmultiphaseReactingTurbulenceModels
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/Make/options b/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/multiphaseCompressibleTurbulenceModels/Make/options
similarity index 81%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/Make/options
rename to applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/multiphaseCompressibleTurbulenceModels/Make/options
index 832cefa73d09298b893f0e0c700a88dc5259ba53..553f60638c28ed062bcb58388b79661fa0e60695 100644
--- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/Make/options
+++ b/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/multiphaseCompressibleTurbulenceModels/Make/options
@@ -1,11 +1,12 @@
 EXE_INC = \
-    -I../phaseSystems/lnInclude \
-    -I../interfacialModels/lnInclude\
+    -I../multiphaseSystem/lnInclude \
+    -I../../phaseSystems/lnInclude \
+    -I../../interfacialModels/lnInclude\
     -I$(LIB_SRC)/transportModels/compressible/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
     -I$(LIB_SRC)/transportModels/incompressible/transportModel \
-    -I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \
     -I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude \
+    -I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \
     -I$(LIB_SRC)/TurbulenceModels/phaseCompressible/lnInclude \
     -I$(LIB_SRC)/finiteVolume/lnInclude \
     -I$(LIB_SRC)/fvOptions/lnInclude \
diff --git a/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/multiphaseCompressibleTurbulenceModels/multiphaseCompressibleTurbulenceModels.C b/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/multiphaseCompressibleTurbulenceModels/multiphaseCompressibleTurbulenceModels.C
new file mode 100644
index 0000000000000000000000000000000000000000..de792b433a76374791e7650a34fa7dbe63645272
--- /dev/null
+++ b/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/multiphaseCompressibleTurbulenceModels/multiphaseCompressibleTurbulenceModels.C
@@ -0,0 +1,70 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "PhaseCompressibleTurbulenceModel.H"
+#include "phaseModel.H"
+#include "multiphaseSystem.H"
+#include "addToRunTimeSelectionTable.H"
+#include "makeTurbulenceModel.H"
+
+#include "ThermalDiffusivity.H"
+#include "EddyDiffusivity.H"
+
+#include "laminar.H"
+#include "RASModel.H"
+#include "LESModel.H"
+
+makeBaseTurbulenceModel
+(
+    volScalarField,
+    volScalarField,
+    compressibleTurbulenceModel,
+    PhaseCompressibleTurbulenceModel,
+    ThermalDiffusivity,
+    phaseModel
+);
+
+#define makeRASModel(Type)                                                     \
+    makeTemplatedTurbulenceModel                                               \
+    (phaseModelPhaseCompressibleTurbulenceModel, RAS, Type)
+
+#define makeLESModel(Type)                                                     \
+    makeTemplatedTurbulenceModel                                               \
+    (phaseModelPhaseCompressibleTurbulenceModel, LES, Type)
+
+#include "kEpsilon.H"
+makeRASModel(kEpsilon);
+
+#include "kOmegaSST.H"
+makeRASModel(kOmegaSST);
+
+#include "Smagorinsky.H"
+makeLESModel(Smagorinsky);
+
+#include "kEqn.H"
+makeLESModel(kEqn);
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/multiphaseSystem/Make/files b/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/multiphaseSystem/Make/files
new file mode 100644
index 0000000000000000000000000000000000000000..f1728bb33dcd72639cdbd864f5561e569a9febd2
--- /dev/null
+++ b/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/multiphaseSystem/Make/files
@@ -0,0 +1,6 @@
+alphaContactAngle/alphaContactAngleFvPatchScalarField.C
+multiphaseSystem.C
+newMultiphaseSystem.C
+multiphaseSystems.C
+
+LIB = $(FOAM_LIBBIN)/libreactingMultiphaseSystem
diff --git a/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/multiphaseSystem/Make/options b/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/multiphaseSystem/Make/options
new file mode 100644
index 0000000000000000000000000000000000000000..222f3b3ba4f6695daa19ca3e0ae7236bee8a7928
--- /dev/null
+++ b/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/multiphaseSystem/Make/options
@@ -0,0 +1,21 @@
+EXE_INC = \
+    -I../../interfacialModels/lnInclude \
+    -I../../interfacialCompositionModels/lnInclude \
+    -I../../phaseSystems/lnInclude \
+    -IalphaContactAngle \
+    -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude \
+    -I$(LIB_SRC)/transportModels/compressible/lnInclude \
+    -I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \
+    -I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude \
+    -I$(LIB_SRC)/TurbulenceModels/phaseCompressible/lnInclude \
+    -I$(LIB_SRC)/combustionModels/lnInclude \
+    -I$(LIB_SRC)/finiteVolume/lnInclude \
+    -I$(LIB_SRC)/fvOptions/lnInclude \
+    -I$(LIB_SRC)/meshTools/lnInclude \
+    -I$(LIB_SRC)/sampling/lnInclude
+
+LIB_LIBS = \
+    -lcombustionModels \
+    -lreactingPhaseSystem
diff --git a/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/multiphaseSystem/alphaContactAngle/alphaContactAngleFvPatchScalarField.C b/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/multiphaseSystem/alphaContactAngle/alphaContactAngleFvPatchScalarField.C
new file mode 100644
index 0000000000000000000000000000000000000000..b26ec2faa0829dbd7bca3f811d4572b489e6cee9
--- /dev/null
+++ b/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/multiphaseSystem/alphaContactAngle/alphaContactAngleFvPatchScalarField.C
@@ -0,0 +1,146 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "alphaContactAngleFvPatchScalarField.H"
+#include "addToRunTimeSelectionTable.H"
+#include "fvPatchFieldMapper.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+alphaContactAngleFvPatchScalarField::interfaceThetaProps::interfaceThetaProps
+(
+    Istream& is
+)
+:
+    theta0_(readScalar(is)),
+    uTheta_(readScalar(is)),
+    thetaA_(readScalar(is)),
+    thetaR_(readScalar(is))
+{}
+
+
+Istream& operator>>
+(
+    Istream& is,
+    alphaContactAngleFvPatchScalarField::interfaceThetaProps& tp
+)
+{
+    is >> tp.theta0_ >> tp.uTheta_ >> tp.thetaA_ >> tp.thetaR_;
+    return is;
+}
+
+
+Ostream& operator<<
+(
+    Ostream& os,
+    const alphaContactAngleFvPatchScalarField::interfaceThetaProps& tp
+)
+{
+    os  << tp.theta0_ << token::SPACE
+        << tp.uTheta_ << token::SPACE
+        << tp.thetaA_ << token::SPACE
+        << tp.thetaR_;
+
+    return os;
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+alphaContactAngleFvPatchScalarField::alphaContactAngleFvPatchScalarField
+(
+    const fvPatch& p,
+    const DimensionedField<scalar, volMesh>& iF
+)
+:
+    zeroGradientFvPatchScalarField(p, iF)
+{}
+
+
+alphaContactAngleFvPatchScalarField::alphaContactAngleFvPatchScalarField
+(
+    const alphaContactAngleFvPatchScalarField& gcpsf,
+    const fvPatch& p,
+    const DimensionedField<scalar, volMesh>& iF,
+    const fvPatchFieldMapper& mapper
+)
+:
+    zeroGradientFvPatchScalarField(gcpsf, p, iF, mapper),
+    thetaProps_(gcpsf.thetaProps_)
+{}
+
+
+alphaContactAngleFvPatchScalarField::alphaContactAngleFvPatchScalarField
+(
+    const fvPatch& p,
+    const DimensionedField<scalar, volMesh>& iF,
+    const dictionary& dict
+)
+:
+    zeroGradientFvPatchScalarField(p, iF),
+    thetaProps_(dict.lookup("thetaProperties"))
+{
+    evaluate();
+}
+
+
+alphaContactAngleFvPatchScalarField::alphaContactAngleFvPatchScalarField
+(
+    const alphaContactAngleFvPatchScalarField& gcpsf,
+    const DimensionedField<scalar, volMesh>& iF
+)
+:
+    zeroGradientFvPatchScalarField(gcpsf, iF),
+    thetaProps_(gcpsf.thetaProps_)
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+void alphaContactAngleFvPatchScalarField::write(Ostream& os) const
+{
+    fvPatchScalarField::write(os);
+    os.writeKeyword("thetaProperties")
+        << thetaProps_ << token::END_STATEMENT << nl;
+    writeEntry("value", os);
+}
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+makePatchTypeField
+(
+    fvPatchScalarField,
+    alphaContactAngleFvPatchScalarField
+);
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/multiphaseSystem/alphaContactAngle/alphaContactAngleFvPatchScalarField.H b/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/multiphaseSystem/alphaContactAngle/alphaContactAngleFvPatchScalarField.H
new file mode 100644
index 0000000000000000000000000000000000000000..17fced8dfa620adb98b7ae43c86ff60f97507c7d
--- /dev/null
+++ b/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/multiphaseSystem/alphaContactAngle/alphaContactAngleFvPatchScalarField.H
@@ -0,0 +1,215 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::alphaContactAngleFvPatchScalarField
+
+Description
+    Contact-angle boundary condition for multi-phase interface-capturing
+    simulations.  Used in conjuction with multiphaseSystem.
+
+SourceFiles
+    alphaContactAngleFvPatchScalarField.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef alphaContactAngleFvPatchScalarField_H
+#define alphaContactAngleFvPatchScalarField_H
+
+#include "zeroGradientFvPatchFields.H"
+#include "multiphaseSystem.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+                           Class alphaContactAngleFvPatch Declaration
+\*---------------------------------------------------------------------------*/
+
+class alphaContactAngleFvPatchScalarField
+:
+    public zeroGradientFvPatchScalarField
+{
+public:
+
+    class interfaceThetaProps
+    {
+        //- Equilibrium contact angle
+        scalar theta0_;
+
+        //- Dynamic contact angle velocity scale
+        scalar uTheta_;
+
+        //- Limiting advancing contact angle
+        scalar thetaA_;
+
+        //- Limiting receeding contact angle
+        scalar thetaR_;
+
+
+    public:
+
+        // Constructors
+            interfaceThetaProps()
+            {}
+
+            interfaceThetaProps(Istream&);
+
+
+        // Member functions
+
+            //- Return the equilibrium contact angle theta0
+            scalar theta0(bool matched=true) const
+            {
+                if (matched) return theta0_;
+                else return 180.0 - theta0_;
+            }
+
+            //- Return the dynamic contact angle velocity scale
+            scalar uTheta() const
+            {
+                return uTheta_;
+            }
+
+            //- Return the limiting advancing contact angle
+            scalar thetaA(bool matched=true) const
+            {
+                if (matched) return thetaA_;
+                else return 180.0 - thetaA_;
+            }
+
+            //- Return the limiting receeding contact angle
+            scalar thetaR(bool matched=true) const
+            {
+                if (matched) return thetaR_;
+                else return 180.0 - thetaR_;
+            }
+
+
+        // IO functions
+
+            friend Istream& operator>>(Istream&, interfaceThetaProps&);
+            friend Ostream& operator<<(Ostream&, const interfaceThetaProps&);
+    };
+
+    typedef HashTable
+    <
+        interfaceThetaProps,
+        phasePairKey,
+        phasePairKey::hash
+    > thetaPropsTable;
+
+
+private:
+
+    // Private data
+
+        thetaPropsTable thetaProps_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("alphaContactAngle");
+
+
+    // Constructors
+
+        //- Construct from patch and internal field
+        alphaContactAngleFvPatchScalarField
+        (
+            const fvPatch&,
+            const DimensionedField<scalar, volMesh>&
+        );
+
+        //- Construct from patch, internal field and dictionary
+        alphaContactAngleFvPatchScalarField
+        (
+            const fvPatch&,
+            const DimensionedField<scalar, volMesh>&,
+            const dictionary&
+        );
+
+        //- Construct by mapping given alphaContactAngleFvPatchScalarField
+        //  onto a new patch
+        alphaContactAngleFvPatchScalarField
+        (
+            const alphaContactAngleFvPatchScalarField&,
+            const fvPatch&,
+            const DimensionedField<scalar, volMesh>&,
+            const fvPatchFieldMapper&
+        );
+
+        //- Construct and return a clone
+        virtual tmp<fvPatchScalarField> clone() const
+        {
+            return tmp<fvPatchScalarField>
+            (
+                new alphaContactAngleFvPatchScalarField(*this)
+            );
+        }
+
+        //- Construct as copy setting internal field reference
+        alphaContactAngleFvPatchScalarField
+        (
+            const alphaContactAngleFvPatchScalarField&,
+            const DimensionedField<scalar, volMesh>&
+        );
+
+        //- Construct and return a clone setting internal field reference
+        virtual tmp<fvPatchScalarField> clone
+        (
+            const DimensionedField<scalar, volMesh>& iF
+        ) const
+        {
+            return tmp<fvPatchScalarField>
+            (
+                new alphaContactAngleFvPatchScalarField(*this, iF)
+            );
+        }
+
+
+    // Member functions
+
+        //- Return the contact angle properties
+        const thetaPropsTable& thetaProps() const
+        {
+            return thetaProps_;
+        }
+
+        //- Write
+        virtual void write(Ostream&) const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/multiphaseSystem/multiphaseSystem.C b/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/multiphaseSystem/multiphaseSystem.C
new file mode 100644
index 0000000000000000000000000000000000000000..fe1e4d4a8dd4adc90ba909861f509701aef2de57
--- /dev/null
+++ b/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/multiphaseSystem/multiphaseSystem.C
@@ -0,0 +1,725 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2013-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "multiphaseSystem.H"
+#include "alphaContactAngleFvPatchScalarField.H"
+
+#include "MULES.H"
+#include "subCycle.H"
+
+#include "fvcDdt.H"
+#include "fvcDiv.H"
+#include "fvcSnGrad.H"
+#include "fvcFlux.H"
+#include "fvcMeshPhi.H"
+#include "fvcSup.H"
+
+#include "fvmDdt.H"
+#include "fvmLaplacian.H"
+#include "fvmSup.H"
+
+// * * * * * * * * * * * * * * * Static Member Data  * * * * * * * * * * * * //
+
+namespace Foam
+{
+    defineTypeNameAndDebug(multiphaseSystem, 0);
+    defineRunTimeSelectionTable(multiphaseSystem, dictionary);
+}
+
+const Foam::scalar Foam::multiphaseSystem::convertToRad =
+    Foam::constant::mathematical::pi/180.0;
+
+
+// * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
+
+void Foam::multiphaseSystem::calcAlphas()
+{
+    scalar level = 0.0;
+    alphas_ == 0.0;
+
+    forAll(phases(), i)
+    {
+        alphas_ += level*phases()[i];
+        level += 1.0;
+    }
+
+    alphas_.correctBoundaryConditions();
+}
+
+
+void Foam::multiphaseSystem::solveAlphas()
+{
+    PtrList<surfaceScalarField> alphaPhiCorrs(phases().size());
+    forAll(phases(), phasei)
+    {
+        phaseModel& phase = phases()[phasei];
+        volScalarField& alpha1 = phase;
+
+        phase.alphaPhi() =
+            dimensionedScalar("0", dimensionSet(0, 3, -1, 0, 0), 0);
+
+        alphaPhiCorrs.set
+        (
+            phasei,
+            new surfaceScalarField
+            (
+                "phi" + alpha1.name() + "Corr",
+                fvc::flux
+                (
+                    phi_,
+                    phase,
+                    "div(phi," + alpha1.name() + ')'
+                )
+            )
+        );
+
+        surfaceScalarField& alphaPhiCorr = alphaPhiCorrs[phasei];
+
+        forAll(phases(), phasej)
+        {
+            phaseModel& phase2 = phases()[phasej];
+            volScalarField& alpha2 = phase2;
+
+            if (&phase2 == &phase) continue;
+
+            surfaceScalarField phir(phase.phi() - phase2.phi());
+
+            cAlphaTable::const_iterator cAlpha
+            (
+                cAlphas_.find(phasePairKey(phase.name(), phase2.name()))
+            );
+
+            if (cAlpha != cAlphas_.end())
+            {
+                surfaceScalarField phic
+                (
+                    (mag(phi_) + mag(phir))/mesh_.magSf()
+                );
+
+                phir += min(cAlpha()*phic, max(phic))*nHatf(phase, phase2);
+            }
+
+            word phirScheme
+            (
+                "div(phir," + alpha2.name() + ',' + alpha1.name() + ')'
+            );
+
+            alphaPhiCorr += fvc::flux
+            (
+                -fvc::flux(-phir, phase2, phirScheme),
+                phase,
+                phirScheme
+            );
+        }
+
+        // Ensure that the flux at inflow BCs is preserved
+        forAll(alphaPhiCorr.boundaryField(), patchi)
+        {
+            fvsPatchScalarField& alphaPhiCorrp =
+                alphaPhiCorr.boundaryField()[patchi];
+
+            if (!alphaPhiCorrp.coupled())
+            {
+                const scalarField& phi1p = phase.phi().boundaryField()[patchi];
+                const scalarField& alpha1p = alpha1.boundaryField()[patchi];
+
+                forAll(alphaPhiCorrp, facei)
+                {
+                    if (phi1p[facei] < 0)
+                    {
+                        alphaPhiCorrp[facei] = alpha1p[facei]*phi1p[facei];
+                    }
+                }
+            }
+        }
+
+        if (fv::localEulerDdt::enabled(mesh_))
+        {
+            const volScalarField& rDeltaT =
+                fv::localEulerDdt::localRDeltaT(mesh_);
+
+            MULES::limit
+            (
+                rDeltaT,
+                geometricOneField(),
+                phase,
+                phi_,
+                alphaPhiCorr,
+                zeroField(),
+                zeroField(),
+                phase.alphaMax(),
+                0,
+                true
+            );
+        }
+        else
+        {
+            const scalar rDeltaT = 1.0/mesh_.time().deltaTValue();
+
+            MULES::limit
+            (
+                rDeltaT,
+                geometricOneField(),
+                phase,
+                phi_,
+                alphaPhiCorr,
+                zeroField(),
+                zeroField(),
+                phase.alphaMax(),
+                0,
+                true
+            );
+        }
+    }
+
+    MULES::limitSum(alphaPhiCorrs);
+
+    volScalarField sumAlpha
+    (
+        IOobject
+        (
+            "sumAlpha",
+            mesh_.time().timeName(),
+            mesh_
+        ),
+        mesh_,
+        dimensionedScalar("sumAlpha", dimless, 0)
+    );
+
+
+    volScalarField divU(fvc::div(fvc::absolute(phi_, phases().first().U())));
+
+    forAll(phases(), phasei)
+    {
+        phaseModel& phase = phases()[phasei];
+        volScalarField& alpha = phase;
+
+        surfaceScalarField& alphaPhic = alphaPhiCorrs[phasei];
+        alphaPhic += upwind<scalar>(mesh_, phi_).flux(phase);
+
+        volScalarField::DimensionedInternalField Sp
+        (
+            IOobject
+            (
+                "Sp",
+                mesh_.time().timeName(),
+                mesh_
+            ),
+            mesh_,
+            dimensionedScalar("Sp", divU.dimensions(), 0.0)
+        );
+
+        volScalarField::DimensionedInternalField Su
+        (
+            IOobject
+            (
+                "Su",
+                mesh_.time().timeName(),
+                mesh_
+            ),
+            // Divergence term is handled explicitly to be
+            // consistent with the explicit transport solution
+            divU*min(alpha, scalar(1))
+        );
+
+        if (phase.divU().valid())
+        {
+            const scalarField& dgdt = phase.divU()();
+
+            forAll(dgdt, celli)
+            {
+                if (dgdt[celli] > 0.0)
+                {
+                    Sp[celli] -= dgdt[celli];
+                    Su[celli] += dgdt[celli];
+                }
+                else if (dgdt[celli] < 0.0)
+                {
+                    Sp[celli] +=
+                        dgdt[celli]
+                       *(1.0 - alpha[celli])/max(alpha[celli], 1e-4);
+                }
+            }
+        }
+
+        forAll(phases(), phasej)
+        {
+            const phaseModel& phase2 = phases()[phasej];
+            const volScalarField& alpha2 = phase2;
+
+            if (&phase2 == &phase) continue;
+
+            if (phase2.divU().valid())
+            {
+                const scalarField& dgdt2 = phase2.divU()();
+
+                forAll(dgdt2, celli)
+                {
+                    if (dgdt2[celli] < 0.0)
+                    {
+                        Sp[celli] +=
+                            dgdt2[celli]
+                           *(1.0 - alpha2[celli])/max(alpha2[celli], 1e-4);
+
+                        Su[celli] -=
+                            dgdt2[celli]
+                           *alpha[celli]/max(alpha2[celli], 1e-4);
+                    }
+                    else if (dgdt2[celli] > 0.0)
+                    {
+                        Sp[celli] -= dgdt2[celli];
+                    }
+                }
+            }
+        }
+
+        MULES::explicitSolve
+        (
+            geometricOneField(),
+            alpha,
+            alphaPhic,
+            Sp,
+            Su
+        );
+
+        phase.alphaPhi() += alphaPhic;
+
+        Info<< phase.name() << " volume fraction, min, max = "
+            << phase.weightedAverage(mesh_.V()).value()
+            << ' ' << min(phase).value()
+            << ' ' << max(phase).value()
+            << endl;
+
+        sumAlpha += phase;
+    }
+
+    Info<< "Phase-sum volume fraction, min, max = "
+        << sumAlpha.weightedAverage(mesh_.V()).value()
+        << ' ' << min(sumAlpha).value()
+        << ' ' << max(sumAlpha).value()
+        << endl;
+}
+
+
+Foam::tmp<Foam::surfaceVectorField> Foam::multiphaseSystem::nHatfv
+(
+    const volScalarField& alpha1,
+    const volScalarField& alpha2
+) const
+{
+    /*
+    // Cell gradient of alpha
+    volVectorField gradAlpha =
+        alpha2*fvc::grad(alpha1) - alpha1*fvc::grad(alpha2);
+
+    // Interpolated face-gradient of alpha
+    surfaceVectorField gradAlphaf = fvc::interpolate(gradAlpha);
+    */
+
+    surfaceVectorField gradAlphaf
+    (
+        fvc::interpolate(alpha2)*fvc::interpolate(fvc::grad(alpha1))
+      - fvc::interpolate(alpha1)*fvc::interpolate(fvc::grad(alpha2))
+    );
+
+    // Face unit interface normal
+    return gradAlphaf/(mag(gradAlphaf) + deltaN_);
+}
+
+
+Foam::tmp<Foam::surfaceScalarField> Foam::multiphaseSystem::nHatf
+(
+    const volScalarField& alpha1,
+    const volScalarField& alpha2
+) const
+{
+    // Face unit interface normal flux
+    return nHatfv(alpha1, alpha2) & mesh_.Sf();
+}
+
+
+// Correction for the boundary condition on the unit normal nHat on
+// walls to produce the correct contact angle.
+
+// The dynamic contact angle is calculated from the component of the
+// velocity on the direction of the interface, parallel to the wall.
+
+void Foam::multiphaseSystem::correctContactAngle
+(
+    const phaseModel& phase1,
+    const phaseModel& phase2,
+    surfaceVectorField::GeometricBoundaryField& nHatb
+) const
+{
+    const volScalarField::GeometricBoundaryField& gbf
+        = phase1.boundaryField();
+
+    const fvBoundaryMesh& boundary = mesh_.boundary();
+
+    forAll(boundary, patchi)
+    {
+        if (isA<alphaContactAngleFvPatchScalarField>(gbf[patchi]))
+        {
+            const alphaContactAngleFvPatchScalarField& acap =
+                refCast<const alphaContactAngleFvPatchScalarField>(gbf[patchi]);
+
+            vectorField& nHatPatch = nHatb[patchi];
+
+            vectorField AfHatPatch
+            (
+                mesh_.Sf().boundaryField()[patchi]
+               /mesh_.magSf().boundaryField()[patchi]
+            );
+
+            alphaContactAngleFvPatchScalarField::thetaPropsTable::
+                const_iterator tp =
+                    acap.thetaProps()
+                   .find(phasePairKey(phase1.name(), phase2.name()));
+
+            if (tp == acap.thetaProps().end())
+            {
+                FatalErrorIn
+                (
+                    "multiphaseSystem::correctContactAngle"
+                    "(const phaseModel& phase1, const phaseModel& phase2, "
+                    "fvPatchVectorFieldField& nHatb) const"
+                )   << "Cannot find interface "
+                    << phasePairKey(phase1.name(), phase2.name())
+                    << "\n    in table of theta properties for patch "
+                    << acap.patch().name()
+                    << exit(FatalError);
+            }
+
+            bool matched = (tp.key().first() == phase1.name());
+
+            scalar theta0 = convertToRad*tp().theta0(matched);
+            scalarField theta(boundary[patchi].size(), theta0);
+
+            scalar uTheta = tp().uTheta();
+
+            // Calculate the dynamic contact angle if required
+            if (uTheta > SMALL)
+            {
+                scalar thetaA = convertToRad*tp().thetaA(matched);
+                scalar thetaR = convertToRad*tp().thetaR(matched);
+
+                // Calculated the component of the velocity parallel to the wall
+                vectorField Uwall
+                (
+                    phase1.U()().boundaryField()[patchi].patchInternalField()
+                  - phase1.U()().boundaryField()[patchi]
+                );
+                Uwall -= (AfHatPatch & Uwall)*AfHatPatch;
+
+                // Find the direction of the interface parallel to the wall
+                vectorField nWall
+                (
+                    nHatPatch - (AfHatPatch & nHatPatch)*AfHatPatch
+                );
+
+                // Normalise nWall
+                nWall /= (mag(nWall) + SMALL);
+
+                // Calculate Uwall resolved normal to the interface parallel to
+                // the interface
+                scalarField uwall(nWall & Uwall);
+
+                theta += (thetaA - thetaR)*tanh(uwall/uTheta);
+            }
+
+
+            // Reset nHatPatch to correspond to the contact angle
+
+            scalarField a12(nHatPatch & AfHatPatch);
+
+            scalarField b1(cos(theta));
+
+            scalarField b2(nHatPatch.size());
+
+            forAll(b2, facei)
+            {
+                b2[facei] = cos(acos(a12[facei]) - theta[facei]);
+            }
+
+            scalarField det(1.0 - a12*a12);
+
+            scalarField a((b1 - a12*b2)/det);
+            scalarField b((b2 - a12*b1)/det);
+
+            nHatPatch = a*AfHatPatch + b*nHatPatch;
+
+            nHatPatch /= (mag(nHatPatch) + deltaN_.value());
+        }
+    }
+}
+
+
+Foam::tmp<Foam::volScalarField> Foam::multiphaseSystem::K
+(
+    const phaseModel& phase1,
+    const phaseModel& phase2
+) const
+{
+    tmp<surfaceVectorField> tnHatfv = nHatfv(phase1, phase2);
+
+    correctContactAngle(phase1, phase2, tnHatfv().boundaryField());
+
+    // Simple expression for curvature
+    return -fvc::div(tnHatfv & mesh_.Sf());
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::multiphaseSystem::multiphaseSystem
+(
+    const fvMesh& mesh
+)
+:
+    phaseSystem(mesh),
+
+    alphas_
+    (
+        IOobject
+        (
+            "alphas",
+            mesh_.time().timeName(),
+            mesh,
+            IOobject::NO_READ,
+            IOobject::AUTO_WRITE
+        ),
+        mesh,
+        dimensionedScalar("alphas", dimless, 0.0),
+        zeroGradientFvPatchScalarField::typeName
+    ),
+
+    cAlphas_(lookup("interfaceCompression")),
+
+    deltaN_
+    (
+        "deltaN",
+        1e-8/pow(average(mesh_.V()), 1.0/3.0)
+    )
+{
+    forAll(phases(), phasei)
+    {
+        volScalarField& alphai = phases()[phasei];
+        mesh_.setFluxRequired(alphai.name());
+    }
+}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::multiphaseSystem::~multiphaseSystem()
+{}
+
+
+// * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::surfaceScalarField> Foam::multiphaseSystem::surfaceTension
+(
+    const phaseModel& phase1
+) const
+{
+    tmp<surfaceScalarField> tSurfaceTension
+    (
+        new surfaceScalarField
+        (
+            IOobject
+            (
+                "surfaceTension",
+                mesh_.time().timeName(),
+                mesh_
+            ),
+            mesh_,
+            dimensionedScalar
+            (
+                "surfaceTension",
+                dimensionSet(1, -2, -2, 0, 0),
+                0
+            )
+        )
+    );
+
+    forAll(phases(), phasej)
+    {
+        const phaseModel& phase2 = phases()[phasej];
+
+        if (&phase2 != &phase1)
+        {
+            phasePairKey key12(phase1.name(), phase2.name());
+
+            cAlphaTable::const_iterator cAlpha(cAlphas_.find(key12));
+
+            if (cAlpha != cAlphas_.end())
+            {
+                tSurfaceTension() +=
+                    fvc::interpolate(sigma(key12)*K(phase1, phase2))
+                   *(
+                        fvc::interpolate(phase2)*fvc::snGrad(phase1)
+                      - fvc::interpolate(phase1)*fvc::snGrad(phase2)
+                    );
+            }
+        }
+    }
+
+    return tSurfaceTension;
+}
+
+
+Foam::tmp<Foam::volScalarField>
+Foam::multiphaseSystem::nearInterface() const
+{
+    tmp<volScalarField> tnearInt
+    (
+        new volScalarField
+        (
+            IOobject
+            (
+                "nearInterface",
+                mesh_.time().timeName(),
+                mesh_
+            ),
+            mesh_,
+            dimensionedScalar("nearInterface", dimless, 0.0)
+        )
+    );
+
+    forAll(phases(), phasei)
+    {
+        tnearInt() = max
+        (
+            tnearInt(),
+            pos(phases()[phasei] - 0.01)*pos(0.99 - phases()[phasei])
+        );
+    }
+
+    return tnearInt;
+}
+
+
+void Foam::multiphaseSystem::solve()
+{
+    const Time& runTime = mesh_.time();
+
+    const dictionary& alphaControls = mesh_.solverDict("alpha");
+    label nAlphaSubCycles(readLabel(alphaControls.lookup("nAlphaSubCycles")));
+
+    bool LTS = fv::localEulerDdt::enabled(mesh_);
+
+    if (nAlphaSubCycles > 1)
+    {
+        tmp<volScalarField> trSubDeltaT;
+
+        if (LTS)
+        {
+            trSubDeltaT =
+                fv::localEulerDdt::localRSubDeltaT(mesh_, nAlphaSubCycles);
+        }
+
+        dimensionedScalar totalDeltaT = runTime.deltaT();
+
+        PtrList<volScalarField> alpha0s(phases().size());
+        PtrList<surfaceScalarField> alphaPhiSums(phases().size());
+
+        forAll(phases(), phasei)
+        {
+            phaseModel& phase = phases()[phasei];
+            volScalarField& alpha = phase;
+
+            alpha0s.set
+            (
+                phasei,
+                new volScalarField(alpha.oldTime())
+            );
+
+            alphaPhiSums.set
+            (
+                phasei,
+                new surfaceScalarField
+                (
+                    IOobject
+                    (
+                        "phiSum" + alpha.name(),
+                        runTime.timeName(),
+                        mesh_
+                    ),
+                    mesh_,
+                    dimensionedScalar("0", dimensionSet(0, 3, -1, 0, 0), 0)
+                )
+            );
+        }
+
+        for
+        (
+            subCycleTime alphaSubCycle
+            (
+                const_cast<Time&>(runTime),
+                nAlphaSubCycles
+            );
+            !(++alphaSubCycle).end();
+        )
+        {
+            solveAlphas();
+
+            forAll(phases(), phasei)
+            {
+                alphaPhiSums[phasei] += phases()[phasei].alphaPhi();
+            }
+        }
+
+        forAll(phases(), phasei)
+        {
+            phaseModel& phase = phases()[phasei];
+            volScalarField& alpha = phase;
+
+            phase.alphaPhi() = alphaPhiSums[phasei]/nAlphaSubCycles;
+
+            // Correct the time index of the field
+            // to correspond to the global time
+            alpha.timeIndex() = runTime.timeIndex();
+
+            // Reset the old-time field value
+            alpha.oldTime() = alpha0s[phasei];
+            alpha.oldTime().timeIndex() = runTime.timeIndex();
+        }
+    }
+    else
+    {
+        solveAlphas();
+    }
+
+    forAll(phases(), phasei)
+    {
+        phaseModel& phase = phases()[phasei];
+        phase.alphaRhoPhi() = fvc::interpolate(phase.rho())*phase.alphaPhi();
+    }
+
+    calcAlphas();
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/multiphaseSystem/multiphaseSystem.H b/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/multiphaseSystem/multiphaseSystem.H
new file mode 100644
index 0000000000000000000000000000000000000000..e33bf8c4878053847d4cae31fa2f0e79d551eb82
--- /dev/null
+++ b/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/multiphaseSystem/multiphaseSystem.H
@@ -0,0 +1,216 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2013-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::multiphaseSystem
+
+Description
+    Class which solves the volume fraction equations for two phases.
+
+SourceFiles
+    multiphaseSystem.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef multiphaseSystem_H
+#define multiphaseSystem_H
+
+#include "phaseSystem.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+class dragModel;
+class virtualMassModel;
+
+/*---------------------------------------------------------------------------*\
+                         Class multiphaseSystem Declaration
+\*---------------------------------------------------------------------------*/
+
+class multiphaseSystem
+:
+    public phaseSystem
+{
+    // Private data
+
+        volScalarField alphas_;
+
+        typedef HashTable<scalar, phasePairKey, phasePairKey::hash>
+            cAlphaTable;
+
+        cAlphaTable cAlphas_;
+
+        //- Stabilisation for normalisation of the interface normal
+        const dimensionedScalar deltaN_;
+
+        //- Conversion factor for degrees into radians
+        static const scalar convertToRad;
+
+
+    // Private member functions
+
+        void calcAlphas();
+
+        void solveAlphas();
+
+        tmp<surfaceVectorField> nHatfv
+        (
+            const volScalarField& alpha1,
+            const volScalarField& alpha2
+        ) const;
+
+        tmp<surfaceScalarField> nHatf
+        (
+            const volScalarField& alpha1,
+            const volScalarField& alpha2
+        ) const;
+
+        void correctContactAngle
+        (
+            const phaseModel& alpha1,
+            const phaseModel& alpha2,
+            surfaceVectorField::GeometricBoundaryField& nHatb
+        ) const;
+
+        tmp<volScalarField> K
+        (
+            const phaseModel& alpha1,
+            const phaseModel& alpha2
+        ) const;
+
+
+        //- Return the drag coefficient for phase pair
+        virtual tmp<volScalarField> Kd(const phasePairKey& key) const = 0;
+
+        //- Return the face drag coefficient for phase pair
+        virtual tmp<surfaceScalarField> Kdf(const phasePairKey& key) const = 0;
+
+        //- Return the virtual mass coefficient for phase pair
+        virtual tmp<volScalarField> Vm(const phasePairKey& key) const = 0;
+
+        //- Return the face virtual mass coefficient for phase pair
+        virtual tmp<surfaceScalarField> Vmf(const phasePairKey& key) const = 0;
+
+        //- Return the turbulent diffusivity for phase pair
+        //  Multiplies the phase-fraction gradient
+        virtual tmp<volScalarField> D(const phasePairKey& key) const = 0;
+
+        //- Return the interfacial mass flow rate for phase pair
+        virtual tmp<volScalarField> dmdt(const phasePairKey& key) const = 0;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("multiphaseSystem");
+
+    // Declare runtime construction
+
+        declareRunTimeSelectionTable
+        (
+            autoPtr,
+            multiphaseSystem,
+            dictionary,
+            (
+                const fvMesh& mesh
+            ),
+            (mesh)
+        );
+
+
+    // Constructors
+
+        //- Construct from fvMesh
+        multiphaseSystem(const fvMesh&);
+
+
+    //- Destructor
+    virtual ~multiphaseSystem();
+
+
+    // Selectors
+
+        static autoPtr<multiphaseSystem> New
+        (
+            const fvMesh& mesh
+        );
+
+
+    // Member Functions
+
+        //- Return the drag coefficient for all phase-pairs
+        virtual const phaseSystem::KdTable& Kds() const = 0;
+
+        //- Return the drag coefficient for phase
+        virtual tmp<volScalarField> Kd(const phaseModel& phase) const = 0;
+
+        //- Return the combined force (lift + wall-lubrication) for phase pair
+        virtual autoPtr<PtrList<Foam::volVectorField> > Fs() const = 0;
+
+        //- Return the turbulent dispersion force on faces for phase pair
+        virtual autoPtr<PtrList<Foam::surfaceScalarField> > phiDs
+        (
+            const PtrList<volScalarField>& rAUs
+        ) const = 0;
+
+        //- Return true if there is mass transfer for phase
+        virtual bool transfersMass(const phaseModel& phase) const = 0;
+
+        //- Return the total interfacial mass transfer rate for phase
+        virtual tmp<volScalarField> dmdt(const phaseModel& phase) const = 0;
+
+        //- Return the momentum transfer matrices
+        virtual autoPtr<momentumTransferTable> momentumTransfer() const = 0;
+
+        //- Return the heat transfer matrices
+        virtual autoPtr<heatTransferTable> heatTransfer() const = 0;
+
+        //- Return the mass transfer matrices
+        virtual autoPtr<massTransferTable> massTransfer() const = 0;
+
+        tmp<surfaceScalarField> surfaceTension(const phaseModel& phase) const;
+
+        //- Indicator of the proximity of the interface
+        //  Field values are 1 near and 0 away for the interface.
+        tmp<volScalarField> nearInterface() const;
+
+        //- Solve for the phase fractions
+        virtual void solve();
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include "multiphaseSystemI.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/multiphaseSystem/multiphaseSystemI.H b/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/multiphaseSystem/multiphaseSystemI.H
new file mode 100644
index 0000000000000000000000000000000000000000..b4ea3674517664da67a2c2a8c033f899309a1f21
--- /dev/null
+++ b/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/multiphaseSystem/multiphaseSystemI.H
@@ -0,0 +1,28 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/multiphaseSystem/multiphaseSystems.C b/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/multiphaseSystem/multiphaseSystems.C
new file mode 100644
index 0000000000000000000000000000000000000000..3e1a3eaf9f395feafe5eb1503b1ea995440e60ce
--- /dev/null
+++ b/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/multiphaseSystem/multiphaseSystems.C
@@ -0,0 +1,86 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "addToRunTimeSelectionTable.H"
+
+#include "phaseSystem.H"
+#include "multiphaseSystem.H"
+#include "MomentumTransferPhaseSystem.H"
+#include "HeatTransferPhaseSystem.H"
+#include "InterfaceCompositionPhaseChangePhaseSystem.H"
+#include "ThermalPhaseChangePhaseSystem.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    typedef
+        HeatTransferPhaseSystem
+        <
+            MomentumTransferPhaseSystem<multiphaseSystem>
+        >
+        heatAndMomentumTransferMultiphaseSystem;
+
+    addNamedToRunTimeSelectionTable
+    (
+        multiphaseSystem,
+        heatAndMomentumTransferMultiphaseSystem,
+        dictionary,
+        heatAndMomentumTransferMultiphaseSystem
+    );
+
+    typedef
+        InterfaceCompositionPhaseChangePhaseSystem
+        <
+            MomentumTransferPhaseSystem<multiphaseSystem>
+        >
+        interfaceCompositionPhaseChangeMultiphaseSystem;
+
+    addNamedToRunTimeSelectionTable
+    (
+        multiphaseSystem,
+        interfaceCompositionPhaseChangeMultiphaseSystem,
+        dictionary,
+        interfaceCompositionPhaseChangeMultiphaseSystem
+    );
+
+    typedef
+        ThermalPhaseChangePhaseSystem
+        <
+            MomentumTransferPhaseSystem<multiphaseSystem>
+        >
+        thermalPhaseChangeMultiphaseSystem;
+
+    addNamedToRunTimeSelectionTable
+    (
+        multiphaseSystem,
+        thermalPhaseChangeMultiphaseSystem,
+        dictionary,
+        thermalPhaseChangeMultiphaseSystem
+    );
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/multiphaseSystem/newMultiphaseSystem.C b/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/multiphaseSystem/newMultiphaseSystem.C
new file mode 100644
index 0000000000000000000000000000000000000000..79e3546c491d1f2515e1ee2f1eafb59c4137fc56
--- /dev/null
+++ b/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/multiphaseSystem/newMultiphaseSystem.C
@@ -0,0 +1,70 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "multiphaseSystem.H"
+
+// * * * * * * * * * * * * * * * * Selector  * * * * * * * * * * * * * * * * //
+
+Foam::autoPtr<Foam::multiphaseSystem> Foam::multiphaseSystem::New
+(
+    const fvMesh& mesh
+)
+{
+    const word multiphaseSystemType
+    (
+        IOdictionary
+        (
+            IOobject
+            (
+                propertiesName,
+                mesh.time().constant(),
+                mesh,
+                IOobject::MUST_READ_IF_MODIFIED,
+                IOobject::NO_WRITE,
+                false
+            )
+        ).lookup("type")
+    );
+
+    Info<< "Selecting multiphaseSystem "
+        << multiphaseSystemType << endl;
+
+    dictionaryConstructorTable::iterator cstrIter =
+        dictionaryConstructorTablePtr_->find(multiphaseSystemType);
+
+    if (cstrIter == dictionaryConstructorTablePtr_->end())
+    {
+        FatalErrorIn("multiphaseSystem::New")
+            << "Unknown multiphaseSystemType type "
+            << multiphaseSystemType << endl << endl
+            << "Valid multiphaseSystem types are : " << endl
+            << dictionaryConstructorTablePtr_->sortedToc()
+            << exit(FatalError);
+    }
+
+    return cstrIter()(mesh);
+}
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/pU/UEqns.H b/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/pU/UEqns.H
new file mode 100644
index 0000000000000000000000000000000000000000..cf70a99e188a7418356c15cf4b73925576f754bd
--- /dev/null
+++ b/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/pU/UEqns.H
@@ -0,0 +1,36 @@
+Info<< "Constructing momentum equations" << endl;
+
+PtrList<fvVectorMatrix> UEqns(phases.size());
+
+{
+    autoPtr<phaseSystem::momentumTransferTable>
+        momentumTransferPtr(fluid.momentumTransfer());
+
+    phaseSystem::momentumTransferTable&
+        momentumTransfer(momentumTransferPtr());
+
+    forAll(phases, phasei)
+    {
+        phaseModel& phase = phases[phasei];
+
+        const volScalarField& alpha = phase;
+        const volScalarField& rho = phase.rho();
+        volVectorField& U = phase.U();
+
+        UEqns.set
+        (
+            phasei,
+            new fvVectorMatrix
+            (
+                phase.UEqn()
+             ==
+               *momentumTransfer[phase.name()]
+              + fvOptions(alpha, rho, U)
+            )
+        );
+
+        UEqns[phasei].relax();
+        fvOptions.constrain(UEqns[phasei]);
+        fvOptions.correct(U);
+    }
+}
diff --git a/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/pU/pEqn.H b/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/pU/pEqn.H
new file mode 100644
index 0000000000000000000000000000000000000000..2703d75ef1f6b2da04bb0d86ca4cb24368730ad1
--- /dev/null
+++ b/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/pU/pEqn.H
@@ -0,0 +1,464 @@
+PtrList<surfaceScalarField> alphafs(phases.size());
+PtrList<volScalarField> rAUs(phases.size());
+PtrList<surfaceScalarField> alpharAUfs(phases.size());
+
+forAll(phases, phasei)
+{
+    phaseModel& phase = phases[phasei];
+    const volScalarField& alpha = phase;
+
+    alphafs.set(phasei, fvc::interpolate(alpha).ptr());
+    alphafs[phasei].rename("pEqn" + alphafs[phasei].name());
+
+    rAUs.set
+    (
+        phasei,
+        new volScalarField
+        (
+            IOobject::groupName("rAU", phase.name()),
+            1.0
+           /(
+               UEqns[phasei].A()
+             + max(phase.residualAlpha() - alpha, scalar(0))
+              *phase.rho()/runTime.deltaT()
+            )
+        )
+    );
+
+    alpharAUfs.set
+    (
+        phasei,
+        (
+            fvc::interpolate(max(alpha, phase.residualAlpha())*rAUs[phasei])
+        ).ptr()
+    );
+}
+
+// Lift, wall-lubrication and turbulent diffusion fluxes
+PtrList<surfaceScalarField> phiFs(phases.size());
+{
+    autoPtr<PtrList<volVectorField> > Fs = fluid.Fs();
+
+    forAll(phases, phasei)
+    {
+        phaseModel& phase = phases[phasei];
+
+        if (Fs().set(phasei))
+        {
+            phiFs.set
+            (
+                phasei,
+                new surfaceScalarField
+                (
+                    IOobject::groupName("phiF", phase.name()),
+                    (fvc::interpolate(rAUs[phasei]*Fs()[phasei]) & mesh.Sf())
+                )
+            );
+        }
+    }
+}
+{
+    autoPtr<PtrList<surfaceScalarField> > phiDs = fluid.phiDs(rAUs);
+
+    forAll(phases, phasei)
+    {
+        phaseModel& phase = phases[phasei];
+
+        if (phiDs().set(phasei))
+        {
+            if (phiFs.set(phasei))
+            {
+                phiFs[phasei] += phiDs()[phasei];
+            }
+            else
+            {
+                phiFs.set
+                (
+                    phasei,
+                    new surfaceScalarField
+                    (
+                        IOobject::groupName("phiF", phase.name()),
+                        phiDs()[phasei]
+                    )
+                );
+            }
+        }
+    }
+}
+
+// --- Pressure corrector loop
+while (pimple.correct())
+{
+    // Update continuity errors due to temperature changes
+    fluid.correct();
+
+    PtrList<volVectorField> HbyAs(phases.size());
+
+    forAll(phases, phasei)
+    {
+        phaseModel& phase = phases[phasei];
+        const volScalarField& alpha = phase;
+
+        // Correct fixed-flux BCs to be consistent with the velocity BCs
+        MRF.correctBoundaryFlux(phase.U(), phase.phi());
+
+        HbyAs.set
+        (
+            phasei,
+            new volVectorField
+            (
+                IOobject::groupName("HbyA", phase.name()),
+                phase.U()
+            )
+        );
+
+        HbyAs[phasei] =
+            rAUs[phasei]
+           *(
+                UEqns[phasei].H()
+              + max(phase.residualAlpha() - alpha, scalar(0))
+               *phase.rho()*phase.U().oldTime()/runTime.deltaT()
+            );
+    }
+
+    // Mean density for buoyancy force and p_rgh -> p
+    volScalarField rho("rho", fluid.rho());
+
+    surfaceScalarField ghSnGradRho
+    (
+        "ghSnGradRho",
+        ghf*fvc::snGrad(rho)*mesh.magSf()
+    );
+
+    PtrList<surfaceScalarField> phigFs(phases.size());
+    forAll(phases, phasei)
+    {
+        phaseModel& phase = phases[phasei];
+
+        phigFs.set
+        (
+            phasei,
+            (
+                alpharAUfs[phasei]
+               *(
+                   ghSnGradRho
+                 - (fvc::interpolate(phase.rho() - rho))*(g & mesh.Sf())
+                 - fluid.surfaceTension(phase)*mesh.magSf()
+                )
+            ).ptr()
+        );
+
+        if (phiFs.set(phasei))
+        {
+            phigFs[phasei] += phiFs[phasei];
+        }
+    }
+
+    PtrList<surfaceScalarField> phiHbyAs(phases.size());
+
+    surfaceScalarField phiHbyA
+    (
+        IOobject
+        (
+            "phiHbyA",
+            runTime.timeName(),
+            mesh,
+            IOobject::NO_READ,
+            IOobject::AUTO_WRITE
+        ),
+        mesh,
+        dimensionedScalar("phiHbyA", dimArea*dimVelocity, 0)
+    );
+
+    forAll(phases, phasei)
+    {
+        phaseModel& phase = phases[phasei];
+        const volScalarField& alpha = phase;
+
+        // ddtPhiCorr filter -- only apply in pure(ish) phases
+        surfaceScalarField alphafBar
+        (
+            fvc::interpolate(fvc::average(alphafs[phasei]))
+        );
+        surfaceScalarField phiCorrCoeff(pos(alphafBar - 0.99));
+
+        forAll(mesh.boundary(), patchi)
+        {
+            // Set ddtPhiCorr to 0 on non-coupled boundaries
+            if
+            (
+                !mesh.boundary()[patchi].coupled()
+             || isA<cyclicAMIFvPatch>(mesh.boundary()[patchi])
+            )
+            {
+                phiCorrCoeff.boundaryField()[patchi] = 0;
+            }
+        }
+
+        phiHbyAs.set
+        (
+            phasei,
+            new surfaceScalarField
+            (
+                IOobject::groupName("phiHbyA", phase.name()),
+                (fvc::interpolate(HbyAs[phasei]) & mesh.Sf())
+              + phiCorrCoeff
+               *fvc::interpolate
+                (
+                    alpha.oldTime()*phase.rho()().oldTime()*rAUs[phasei]
+                )
+               *(
+                   MRF.absolute(phase.phi().oldTime())
+                 - (fvc::interpolate(phase.U().oldTime()) & mesh.Sf())
+                )/runTime.deltaT()
+              - phigFs[phasei]
+            )
+        );
+
+        forAllConstIter
+        (
+            phaseSystem::KdTable,
+            fluid.Kds(),
+            KdIter
+        )
+        {
+            const volScalarField& K(*KdIter());
+
+            const phasePair& pair(fluid.phasePairs()[KdIter.key()]);
+
+            const phaseModel* phase1 = &pair.phase1();
+            const phaseModel* phase2 = &pair.phase2();
+
+            forAllConstIter(phasePair, pair, iter)
+            {
+                if (phase1 == &phase)
+                {
+                    phiHbyAs[phasei] +=
+                        fvc::interpolate(rAUs[phasei]*K)
+                       *MRF.absolute(phase2->phi());
+
+                    HbyAs[phasei] += rAUs[phasei]*K*phase2->U();
+                }
+
+                Swap(phase1, phase2);
+            }
+        }
+
+        phiHbyA += alphafs[phasei]*phiHbyAs[phasei];
+    }
+
+    MRF.makeRelative(phiHbyA);
+
+    // Construct pressure "diffusivity"
+    surfaceScalarField rAUf
+    (
+        IOobject
+        (
+            "rAUf",
+            runTime.timeName(),
+            mesh
+        ),
+        mesh,
+        dimensionedScalar("rAUf", dimensionSet(-1, 3, 1, 0, 0), 0)
+    );
+
+    forAll(phases, phasei)
+    {
+        rAUf += alphafs[phasei]*alpharAUfs[phasei];
+    }
+    rAUf = mag(rAUf);
+
+
+    // Update the fixedFluxPressure BCs to ensure flux consistency
+    {
+        surfaceScalarField::GeometricBoundaryField phib(phi.boundaryField());
+        phib = 0;
+        forAll(phases, phasei)
+        {
+            phaseModel& phase = phases[phasei];
+            phib += alphafs[phasei].boundaryField()*phase.phi().boundaryField();
+        }
+
+        setSnGrad<fixedFluxPressureFvPatchScalarField>
+        (
+            p_rgh.boundaryField(),
+            (
+                phiHbyA.boundaryField() - phib
+            )/(mesh.magSf().boundaryField()*rAUf.boundaryField())
+        );
+    }
+
+    PtrList<fvScalarMatrix> pEqnComps(phases.size());
+    forAll(phases, phasei)
+    {
+        phaseModel& phase = phases[phasei];
+
+        if (phase.compressible())
+        {
+            const volScalarField& alpha = phase;
+            const volScalarField& rho = phase.rho();
+
+            if (pimple.transonic())
+            {
+                surfaceScalarField phid
+                (
+                    IOobject::groupName("phid", phase.name()),
+                    fvc::interpolate(phase.thermo().psi())*phase.phi()
+                );
+
+                pEqnComps.set
+                (
+                    phasei,
+                    (
+                        (
+                            phase.continuityError()
+                          - fvc::Sp
+                            (
+                                fvc::ddt(alpha) + fvc::div(phase.alphaPhi()),
+                                rho
+                            )
+                        )/rho
+                      + (alpha/rho)*correction
+                        (
+                            phase.thermo().psi()*fvm::ddt(p_rgh)
+                          + fvm::div(phid, p_rgh)
+                          - fvm::Sp(fvc::div(phid), p_rgh)
+                        )
+                    ).ptr()
+                );
+
+                deleteDemandDrivenData
+                (
+                    pEqnComps[phasei].faceFluxCorrectionPtr()
+                );
+                pEqnComps[phasei].relax();
+            }
+            else
+            {
+                pEqnComps.set
+                (
+                    phasei,
+                    (
+                        (
+                            phase.continuityError()
+                          - fvc::Sp
+                            (
+                                (fvc::ddt(alpha) + fvc::div(phase.alphaPhi())),
+                                rho
+                            )
+                        )/rho
+                      + (alpha*phase.thermo().psi()/rho)
+                       *correction(fvm::ddt(p_rgh))
+                    ).ptr()
+                );
+            }
+
+            if (fluid.transfersMass(phase))
+            {
+                if (pEqnComps.set(phasei))
+                {
+                    pEqnComps[phasei] -= fluid.dmdt(phase)/rho;
+                }
+                else
+                {
+                    pEqnComps.set
+                    (
+                        phasei,
+                        fvm::Su(-fluid.dmdt(phase)/rho, p_rgh)
+                    );
+                }
+            }
+        }
+    }
+
+    // Cache p prior to solve for density update
+    volScalarField p_rgh_0(p_rgh);
+
+    // Iterate over the pressure equation to correct for non-orthogonality
+    while (pimple.correctNonOrthogonal())
+    {
+        // Construct the transport part of the pressure equation
+        fvScalarMatrix pEqnIncomp
+        (
+            fvc::div(phiHbyA)
+          - fvm::laplacian(rAUf, p_rgh)
+        );
+
+        {
+            fvScalarMatrix pEqn(pEqnIncomp);
+
+            forAll(phases, phasei)
+            {
+                if (pEqnComps.set(phasei))
+                {
+                    pEqn += pEqnComps[phasei];
+                }
+            }
+
+            solve
+            (
+                pEqn,
+                mesh.solver(p_rgh.select(pimple.finalInnerIter()))
+            );
+        }
+
+        // Correct fluxes and velocities on last non-orthogonal iteration
+        if (pimple.finalNonOrthogonalIter())
+        {
+            phi = phiHbyA + pEqnIncomp.flux();
+
+            surfaceScalarField mSfGradp("mSfGradp", pEqnIncomp.flux()/rAUf);
+
+            forAll(phases, phasei)
+            {
+                phaseModel& phase = phases[phasei];
+
+                phase.phi() = phiHbyAs[phasei] + alpharAUfs[phasei]*mSfGradp;
+
+                // Set the phase dilatation rates
+                if (phase.compressible())
+                {
+                    phase.divU(-pEqnComps[phasei] & p_rgh);
+                }
+            }
+
+            // Optionally relax pressure for velocity correction
+            p_rgh.relax();
+
+            mSfGradp = pEqnIncomp.flux()/rAUf;
+
+            forAll(phases, phasei)
+            {
+                phaseModel& phase = phases[phasei];
+
+                phase.U() =
+                    HbyAs[phasei]
+                  + fvc::reconstruct
+                    (
+                        alpharAUfs[phasei]*mSfGradp
+                      - phigFs[phasei]
+                    );
+                phase.U().correctBoundaryConditions();
+                fvOptions.correct(phase.U());
+            }
+        }
+    }
+
+    // Update and limit the static pressure
+    p = max(p_rgh + rho*gh, pMin);
+
+    // Limit p_rgh
+    p_rgh = p - rho*gh;
+
+    // Update densities from change in p_rgh
+    forAll(phases, phasei)
+    {
+        phaseModel& phase = phases[phasei];
+        phase.rho()() += phase.thermo().psi()*(p_rgh - p_rgh_0);
+    }
+
+    // Correct p_rgh for consistency with p and the updated densities
+    rho = fluid.rho();
+    p_rgh = p - rho*gh;
+    p_rgh.correctBoundaryConditions();
+}
diff --git a/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/reactingMultiphaseEulerFoam.C b/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/reactingMultiphaseEulerFoam.C
new file mode 100644
index 0000000000000000000000000000000000000000..cb90ee119626b6a0b83eec8c55bd857c294b3aa1
--- /dev/null
+++ b/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/reactingMultiphaseEulerFoam.C
@@ -0,0 +1,143 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Application
+    reactingMultiphaseEulerFoam
+
+Description
+    Solver for a system of any number of compressible fluid phases with a
+    common pressure, but otherwise separate properties. The type of phase model
+    is run time selectable and can optionally represent multiple species and
+    in-phase reactions. The phase system is also run time selectable and can
+    optionally represent different types of momentun, heat and mass transfer.
+
+\*---------------------------------------------------------------------------*/
+
+#include "fvCFD.H"
+#include "multiphaseSystem.H"
+#include "fixedFluxPressureFvPatchScalarField.H"
+#include "pimpleControl.H"
+#include "localEulerDdtScheme.H"
+#include "fvcSmooth.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+int main(int argc, char *argv[])
+{
+    #include "setRootCase.H"
+
+    #include "createTime.H"
+    #include "createMesh.H"
+
+    pimpleControl pimple(mesh);
+
+    #include "createTimeControls.H"
+    #include "createRDeltaT.H"
+    #include "createFields.H"
+
+    if (!LTS)
+    {
+        #include "CourantNo.H"
+        #include "setInitialDeltaT.H"
+    }
+
+    // Switch faceMomentum
+    // (
+    //     pimple.dict().lookupOrDefault<Switch>("faceMomentum", false)
+    // );
+
+    // Switch implicitPhasePressure
+    // (
+    //     mesh.solverDict(alpha1.name()).lookupOrDefault<Switch>
+    //     (
+    //         "implicitPhasePressure", false
+    //     )
+    // );
+
+    //#include "pUf/createDDtU.H"
+
+    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+    Info<< "\nStarting time loop\n" << endl;
+
+    while (runTime.run())
+    {
+        #include "readTimeControls.H"
+
+        if (LTS)
+        {
+            #include "setRDeltaT.H"
+        }
+        else
+        {
+            #include "CourantNo.H"
+            #include "setDeltaT.H"
+        }
+
+        runTime++;
+        Info<< "Time = " << runTime.timeName() << nl << endl;
+
+        // --- Pressure-velocity PIMPLE corrector loop
+        while (pimple.loop())
+        {
+            fluid.solve();
+            fluid.correct();
+
+            #include "YEqns.H"
+
+            // if (faceMomentum)
+            // {
+            //     #include "pUf/UEqns.H"
+            //     #include "EEqns.H"
+            //     #include "pUf/pEqn.H"
+            //     #include "pUf/DDtU.H"
+            // }
+            // else
+            {
+                #include "pU/UEqns.H"
+                #include "EEqns.H"
+                #include "pU/pEqn.H"
+            }
+
+            fluid.correctKinematics();
+
+            if (pimple.turbCorr())
+            {
+                fluid.correctTurbulence();
+            }
+        }
+
+        runTime.write();
+
+        Info<< "ExecutionTime = "
+            << runTime.elapsedCpuTime()
+            << " s\n\n" << endl;
+    }
+
+    Info<< "End\n" << endl;
+
+    return 0;
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/setRDeltaT.H b/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/setRDeltaT.H
new file mode 100644
index 0000000000000000000000000000000000000000..9e9ca5423090d416c988e44e5663849fad33119f
--- /dev/null
+++ b/applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/setRDeltaT.H
@@ -0,0 +1,36 @@
+{
+    volScalarField& rDeltaT = trDeltaT();
+
+    scalar rDeltaTSmoothingCoeff
+    (
+        runTime.controlDict().lookupOrDefault<scalar>
+        (
+            "rDeltaTSmoothingCoeff",
+            0.02
+        )
+    );
+
+    surfaceScalarField maxPhi("maxPhi", phi);
+
+    forAll(phases, phasei)
+    {
+        maxPhi = max(maxPhi, mag(phases[phasei].phi()));
+    }
+
+    // Set the reciprocal time-step from the local Courant number
+    rDeltaT.dimensionedInternalField() = max
+    (
+        1/dimensionedScalar("maxDeltaT", dimTime, maxDeltaT),
+        fvc::surfaceSum(maxPhi)().dimensionedInternalField()
+       /((2*maxCo)*mesh.V())
+    );
+
+    // Update tho boundary values of the reciprocal time-step
+    rDeltaT.correctBoundaryConditions();
+
+    fvc::smooth(rDeltaT, rDeltaTSmoothingCoeff);
+
+    Info<< "Flow time scale min/max = "
+        << gMin(1/rDeltaT.internalField())
+        << ", " << gMax(1/rDeltaT.internalField()) << endl;
+}
diff --git a/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/Allwclean b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/Allwclean
new file mode 100755
index 0000000000000000000000000000000000000000..87e030a14ad58109b78b60b1c22233e77228ba5f
--- /dev/null
+++ b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/Allwclean
@@ -0,0 +1,9 @@
+#!/bin/sh
+cd ${0%/*} || exit 1    # Run from this directory
+set -x
+
+wclean libso twoPhaseSystem
+wclean libso twoPhaseCompressibleTurbulenceModels
+wclean
+
+# ----------------------------------------------------------------- end-of-file
diff --git a/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/Allwmake b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/Allwmake
new file mode 100755
index 0000000000000000000000000000000000000000..d0e2fc63c7aae159a7bac304aceb2f23f236a89b
--- /dev/null
+++ b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/Allwmake
@@ -0,0 +1,9 @@
+#!/bin/sh
+cd ${0%/*} || exit 1    # Run from this directory
+set -x
+
+wmake libso twoPhaseSystem
+wmake libso twoPhaseCompressibleTurbulenceModels
+wmake
+
+# ----------------------------------------------------------------- end-of-file
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/CourantNos.H b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/CourantNos.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/CourantNos.H
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/CourantNos.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/EEqns.H b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/EEqns.H
similarity index 76%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/EEqns.H
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/EEqns.H
index 588bd7ddf44d4399175fdcaa1d10dc71ecbf5bb7..684e5ede43f3382f296a3ac147f1d7b86e570989 100644
--- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/EEqns.H
+++ b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/EEqns.H
@@ -1,4 +1,6 @@
 {
+    fluid.correctEnergyTransport();
+
     autoPtr<phaseSystem::heatTransferTable>
         heatTransferPtr(fluid.heatTransfer());
 
@@ -47,3 +49,15 @@
 }
 
 fluid.correctThermo();
+
+Info<< phase1.name() << " min/max T "
+    << min(phase1.thermo().T()).value()
+    << " - "
+    << max(phase1.thermo().T()).value()
+    << endl;
+
+Info<< phase2.name() << " min/max T "
+    << min(phase2.thermo().T()).value()
+    << " - "
+    << max(phase2.thermo().T()).value()
+    << endl;
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/Make/files b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/Make/files
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/Make/files
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/Make/files
diff --git a/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/Make/options b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/Make/options
new file mode 100644
index 0000000000000000000000000000000000000000..6d3bc54b85ab9bd3c82f99599202e1596f23902c
--- /dev/null
+++ b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/Make/options
@@ -0,0 +1,26 @@
+EXE_INC = \
+    -ItwoPhaseSystem/lnInclude \
+    -I../phaseSystems/lnInclude \
+    -I../interfacialModels/lnInclude \
+    -I../interfacialCompositionModels/lnInclude \
+    -ItwoPhaseCompressibleTurbulenceModels/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
+    -I$(LIB_SRC)/transportModels/compressible/lnInclude \
+    -I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \
+    -I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude \
+    -I$(LIB_SRC)/TurbulenceModels/phaseCompressible/lnInclude \
+    -I$(LIB_SRC)/finiteVolume/lnInclude \
+    -I$(LIB_SRC)/fvOptions/lnInclude \
+    -I$(LIB_SRC)/meshTools/lnInclude \
+    -I$(LIB_SRC)/sampling/lnInclude
+
+EXE_LIBS = \
+    -lreactingPhaseSystem \
+    -lreactingTwoPhaseSystem \
+    -lreactingEulerianInterfacialModels \
+    -lreactingEulerianInterfacialCompositionModels \
+    -ltwoPhaseReactingTurbulenceModels \
+    -lfiniteVolume \
+    -lfvOptions \
+    -lmeshTools \
+    -lsampling
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/YEqns.H b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/YEqns.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/YEqns.H
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/YEqns.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/createFields.H b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/createFields.H
similarity index 97%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/createFields.H
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/createFields.H
index 30b3b0e715e10da6aecea7090b4d4c9d8448fe69..60d17c251fb4ff3e11ca291aff083dc0f6811be5 100644
--- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/createFields.H
+++ b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/createFields.H
@@ -72,7 +72,6 @@ setRefCell
     pRefValue
 );
 mesh.setFluxRequired(p_rgh.name());
-mesh.setFluxRequired(alpha1.name());
 
 const IOMRFZoneList& MRF = fluid.MRF();
 fv::IOoptionList& fvOptions = fluid.fvOptions();
diff --git a/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/pU/UEqns.H b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/pU/UEqns.H
new file mode 100644
index 0000000000000000000000000000000000000000..99bc95cfd67e05ed3b5c2a1d8786b2b3fa253778
--- /dev/null
+++ b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/pU/UEqns.H
@@ -0,0 +1,38 @@
+Info<< "Constructing momentum equations" << endl;
+
+fvVectorMatrix U1Eqn(U1, rho1.dimensions()*U1.dimensions()*dimVol/dimTime);
+fvVectorMatrix U2Eqn(U2, rho2.dimensions()*U2.dimensions()*dimVol/dimTime);
+
+{
+    autoPtr<phaseSystem::momentumTransferTable>
+        momentumTransferPtr(fluid.momentumTransfer());
+
+    phaseSystem::momentumTransferTable&
+        momentumTransfer(momentumTransferPtr());
+
+    {
+        U1Eqn =
+        (
+            phase1.UEqn()
+         ==
+           *momentumTransfer[phase1.name()]
+          + fvOptions(alpha1, rho1, U1)
+        );
+        U1Eqn.relax();
+        fvOptions.constrain(U1Eqn);
+        fvOptions.correct(U1);
+    }
+
+    {
+        U2Eqn =
+        (
+            phase2.UEqn()
+         ==
+           *momentumTransfer[phase2.name()]
+          + fvOptions(alpha2, rho2, U2)
+        );
+        U2Eqn.relax();
+        fvOptions.constrain(U2Eqn);
+        fvOptions.correct(U2);
+    }
+}
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/pU/pEqn.H b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/pU/pEqn.H
similarity index 76%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/pU/pEqn.H
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/pU/pEqn.H
index 19f2d473b9beb2a436cc491f6aab9e07a4675880..f269a79760a7e217d4b77d9d5016f0e2a5a74e3a 100644
--- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/pU/pEqn.H
+++ b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/pU/pEqn.H
@@ -31,6 +31,8 @@ surfaceScalarField alpharAUf2
     fvc::interpolate(max(alpha2, phase2.residualAlpha())*rAU2)
 );
 
+volScalarField Kd(fluid.Kd());
+
 // Turbulent diffusion, particle-pressure, lift and wall-lubrication fluxes
 tmp<surfaceScalarField> phiF1;
 tmp<surfaceScalarField> phiF2;
@@ -237,58 +239,93 @@ while (pimple.correct())
     // Construct the compressibility parts of the pressure equation
     if (pimple.transonic())
     {
-        surfaceScalarField phid1
-        (
-            IOobject::groupName("phid", phase1.name()),
-            fvc::interpolate(psi1)*phi1
-        );
-        surfaceScalarField phid2
-        (
-            IOobject::groupName("phid", phase2.name()),
-            fvc::interpolate(psi2)*phi2
-        );
-
-        pEqnComp1 =
-            (
-                phase1.continuityError() - fluid.dmdt()
-              - fvc::Sp(fvc::ddt(alpha1) + fvc::div(alphaPhi1), rho1)
-            )/rho1
-          + (alpha1/rho1)*correction
+        if (phase1.compressible())
+        {
+            surfaceScalarField phid1
             (
-                psi1*fvm::ddt(p_rgh)
-              + fvm::div(phid1, p_rgh) - fvm::Sp(fvc::div(phid1), p_rgh)
+                IOobject::groupName("phid", phase1.name()),
+                fvc::interpolate(psi1)*phi1
             );
-        deleteDemandDrivenData(pEqnComp1().faceFluxCorrectionPtr());
-        pEqnComp1().relax();
 
-        pEqnComp2 =
-            (
-                phase2.continuityError() + fluid.dmdt()
-              - fvc::Sp(fvc::ddt(alpha2) + fvc::div(alphaPhi2), rho2)
-            )/rho2
-          + (alpha2/rho2)*correction
+            pEqnComp1 =
+                (
+                    phase1.continuityError()
+                  - fvc::Sp(fvc::ddt(alpha1) + fvc::div(alphaPhi1), rho1)
+                )/rho1
+              + (alpha1/rho1)*correction
+                (
+                    psi1*fvm::ddt(p_rgh)
+                  + fvm::div(phid1, p_rgh) - fvm::Sp(fvc::div(phid1), p_rgh)
+                );
+
+            deleteDemandDrivenData(pEqnComp1().faceFluxCorrectionPtr());
+            pEqnComp1().relax();
+        }
+
+        if (phase2.compressible())
+        {
+            surfaceScalarField phid2
             (
-                psi2*fvm::ddt(p_rgh)
-              + fvm::div(phid2, p_rgh) - fvm::Sp(fvc::div(phid2), p_rgh)
+                IOobject::groupName("phid", phase2.name()),
+                fvc::interpolate(psi2)*phi2
             );
-        deleteDemandDrivenData(pEqnComp2().faceFluxCorrectionPtr());
-        pEqnComp2().relax();
+
+            pEqnComp2 =
+                (
+                    phase2.continuityError()
+                  - fvc::Sp(fvc::ddt(alpha2) + fvc::div(alphaPhi2), rho2)
+                )/rho2
+               + (alpha2/rho2)*correction
+                (
+                    psi2*fvm::ddt(p_rgh)
+                  + fvm::div(phid2, p_rgh) - fvm::Sp(fvc::div(phid2), p_rgh)
+                );
+            deleteDemandDrivenData(pEqnComp2().faceFluxCorrectionPtr());
+            pEqnComp2().relax();
+        }
     }
     else
     {
-        pEqnComp1 =
-            (
-                phase1.continuityError() - fluid.dmdt()
-              - fvc::Sp(fvc::ddt(alpha1) + fvc::div(alphaPhi1), rho1)
-            )/rho1
-          + (alpha1*psi1/rho1)*correction(fvm::ddt(p_rgh));
+        if (phase1.compressible())
+        {
+            pEqnComp1 =
+                (
+                    phase1.continuityError()
+                  - fvc::Sp(fvc::ddt(alpha1) + fvc::div(alphaPhi1), rho1)
+                )/rho1
+              + (alpha1*psi1/rho1)*correction(fvm::ddt(p_rgh));
+        }
 
-        pEqnComp2 =
-            (
-                phase2.continuityError() + fluid.dmdt()
-              - fvc::Sp(fvc::ddt(alpha2) + fvc::div(alphaPhi2), rho2)
-            )/rho2
-          + (alpha2*psi2/rho2)*correction(fvm::ddt(p_rgh));
+        if (phase2.compressible())
+        {
+            pEqnComp2 =
+                (
+                    phase2.continuityError()
+                  - fvc::Sp(fvc::ddt(alpha2) + fvc::div(alphaPhi2), rho2)
+                )/rho2
+              + (alpha2*psi2/rho2)*correction(fvm::ddt(p_rgh));
+        }
+    }
+
+    if (fluid.transfersMass())
+    {
+        if (pEqnComp1.valid())
+        {
+            pEqnComp1() -= fluid.dmdt()/rho1;
+        }
+        else
+        {
+            pEqnComp1 = fvm::Su(-fluid.dmdt()/rho1, p_rgh);
+        }
+
+        if (pEqnComp2.valid())
+        {
+            pEqnComp2() += fluid.dmdt()/rho2;
+        }
+        else
+        {
+            pEqnComp2 = fvm::Su(fluid.dmdt()/rho2, p_rgh);
+        }
     }
 
     // Cache p prior to solve for density update
@@ -304,11 +341,25 @@ while (pimple.correct())
           - fvm::laplacian(rAUf, p_rgh)
         );
 
-        solve
-        (
-            pEqnComp1() + pEqnComp2() + pEqnIncomp,
-            mesh.solver(p_rgh.select(pimple.finalInnerIter()))
-        );
+        {
+            fvScalarMatrix pEqn(pEqnIncomp);
+
+            if (pEqnComp1.valid())
+            {
+                pEqn += pEqnComp1();
+            }
+
+            if (pEqnComp2.valid())
+            {
+                pEqn += pEqnComp2();
+            }
+
+            solve
+            (
+                pEqn,
+                mesh.solver(p_rgh.select(pimple.finalInnerIter()))
+            );
+        }
 
         // Correct fluxes and velocities on last non-orthogonal iteration
         if (pimple.finalNonOrthogonalIter())
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/pUf/DDtU.H b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/pUf/DDtU.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/pUf/DDtU.H
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/pUf/DDtU.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/pUf/UEqns.H b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/pUf/UEqns.H
similarity index 95%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/pUf/UEqns.H
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/pUf/UEqns.H
index eb1456bc15807fc77b930c42de58ea1df68b6aa4..83c3a9ce7f736029755385c297c4834c9dc205a0 100644
--- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/pUf/UEqns.H
+++ b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/pUf/UEqns.H
@@ -1,8 +1,5 @@
 Info<< "Constructing face momentum equations" << endl;
 
-MRF.correctBoundaryVelocity(U1);
-MRF.correctBoundaryVelocity(U2);
-
 fvVectorMatrix U1Eqn(U1, rho1.dimensions()*U1.dimensions()*dimVol/dimTime);
 fvVectorMatrix U2Eqn(U2, rho2.dimensions()*U2.dimensions()*dimVol/dimTime);
 
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/pUf/createDDtU.H b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/pUf/createDDtU.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/pUf/createDDtU.H
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/pUf/createDDtU.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/pUf/pEqn.H b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/pUf/pEqn.H
similarity index 82%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/pUf/pEqn.H
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/pUf/pEqn.H
index 161a08b06db21c93344586c82432f41b9fcd45e2..e2edf14bed061f0bbc3e530839bb961ef4065163 100644
--- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/pUf/pEqn.H
+++ b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/pUf/pEqn.H
@@ -227,9 +227,11 @@ while (pimple.correct())
             fvc::interpolate(psi2)*phi2
         );
 
-        pEqnComp1 =
+        if (phase1.compressible())
+        {
+            pEqnComp1 =
             (
-                phase1.continuityError() - fluid.dmdt()
+                phase1.continuityError()
               - fvc::Sp(fvc::ddt(alpha1) + fvc::div(alphaPhi1), rho1)
             )/rho1
           + (alpha1/rho1)*correction
@@ -237,12 +239,15 @@ while (pimple.correct())
                 psi1*fvm::ddt(p_rgh)
               + fvm::div(phid1, p_rgh) - fvm::Sp(fvc::div(phid1), p_rgh)
             );
-        deleteDemandDrivenData(pEqnComp1().faceFluxCorrectionPtr());
-        pEqnComp1().relax();
+            deleteDemandDrivenData(pEqnComp1().faceFluxCorrectionPtr());
+            pEqnComp1().relax();
+        }
 
-        pEqnComp2 =
+        if (phase2.compressible())
+        {
+            pEqnComp2 =
             (
-                phase2.continuityError() + fluid.dmdt()
+                phase2.continuityError()
               - fvc::Sp(fvc::ddt(alpha2) + fvc::div(alphaPhi2), rho2)
             )/rho2
           + (alpha2/rho2)*correction
@@ -250,24 +255,52 @@ while (pimple.correct())
                 psi2*fvm::ddt(p_rgh)
               + fvm::div(phid2, p_rgh) - fvm::Sp(fvc::div(phid2), p_rgh)
             );
-        deleteDemandDrivenData(pEqnComp2().faceFluxCorrectionPtr());
-        pEqnComp2().relax();
+            deleteDemandDrivenData(pEqnComp2().faceFluxCorrectionPtr());
+            pEqnComp2().relax();
+        }
     }
     else
     {
-        pEqnComp1 =
+        if (phase1.compressible())
+        {
+            pEqnComp1 =
             (
-                phase1.continuityError() - fluid.dmdt()
+                phase1.continuityError()
               - fvc::Sp(fvc::ddt(alpha1) + fvc::div(alphaPhi1), rho1)
             )/rho1
           + (alpha1*psi1/rho1)*correction(fvm::ddt(p_rgh));
+        }
 
-        pEqnComp2 =
+        if (phase2.compressible())
+        {
+            pEqnComp2 =
             (
-                phase2.continuityError() + fluid.dmdt()
+                phase2.continuityError()
               - fvc::Sp(fvc::ddt(alpha2) + fvc::div(alphaPhi2), rho2)
             )/rho2
           + (alpha2*psi2/rho2)*correction(fvm::ddt(p_rgh));
+        }
+    }
+
+    if (fluid.transfersMass())
+    {
+        if (pEqnComp1.valid())
+        {
+            pEqnComp1() -= fluid.dmdt()/rho1;
+        }
+        else
+        {
+            pEqnComp1 = fvm::Su(-fluid.dmdt()/rho1, p_rgh);
+        }
+
+        if (pEqnComp2.valid())
+        {
+            pEqnComp2() += fluid.dmdt()/rho2;
+        }
+        else
+        {
+            pEqnComp2 = fvm::Su(fluid.dmdt()/rho2, p_rgh);
+        }
     }
 
     // Cache p prior to solve for density update
@@ -281,11 +314,25 @@ while (pimple.correct())
           - fvm::laplacian(rAUf, p_rgh)
         );
 
-        solve
-        (
-            pEqnComp1() + pEqnComp2() + pEqnIncomp,
-            mesh.solver(p_rgh.select(pimple.finalInnerIter()))
-        );
+        {
+            fvScalarMatrix pEqn(pEqnIncomp);
+
+            if (pEqnComp1.valid())
+            {
+                pEqn += pEqnComp1();
+            }
+
+            if (pEqnComp2.valid())
+            {
+                pEqn += pEqnComp2();
+            }
+
+            solve
+            (
+                pEqn,
+                mesh.solver(p_rgh.select(pimple.finalInnerIter()))
+            );
+        }
 
         if (pimple.finalNonOrthogonalIter())
         {
@@ -325,17 +372,23 @@ while (pimple.correct())
             fvOptions.correct(U2);
 
             // Set the phase dilatation rates
-            if (phase1.compressible())
+            if (pEqnComp1.valid())
             {
                 phase1.divU(-pEqnComp1 & p_rgh);
             }
-            if (phase2.compressible())
+            if (pEqnComp2.valid())
             {
                 phase2.divU(-pEqnComp2 & p_rgh);
             }
         }
     }
 
+    Info<< "min(p) = " << min(p_rgh + rho*gh).value() << endl;
+    if (min(p_rgh + rho*gh) < pMin)
+    {
+        Info<< "Clipping p" << endl;
+    }
+
     // Update and limit the static pressure
     p = max(p_rgh + rho*gh, pMin);
 
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/reactingTwoPhaseEulerFoam.C b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/reactingTwoPhaseEulerFoam.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/reactingTwoPhaseEulerFoam.C
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/reactingTwoPhaseEulerFoam.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/setRDeltaT.H b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/setRDeltaT.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/setRDeltaT.H
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/setRDeltaT.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/Make/files b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/Make/files
similarity index 92%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/Make/files
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/Make/files
index eccde529bd8f3522f85224517c6ee8630c363d40..10a0e8679ad8f0c06c80a2df75dd99d6310621c8 100644
--- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/Make/files
+++ b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/Make/files
@@ -35,4 +35,6 @@ kineticTheoryModels/frictionalStressModel/Schaeffer/SchaefferFrictionalStress.C
 kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleTheta/JohnsonJacksonParticleThetaFvPatchScalarField.C
 kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleSlip/JohnsonJacksonParticleSlipFvPatchVectorField.C
 
-LIB = $(FOAM_LIBBIN)/libphaseReactingTurbulenceModels
+derivedFvPatchFields/alphatFixedDmdtWallBoilingWallFunction/alphatFixedDmdtWallBoilingWallFunctionFvPatchScalarField.C
+
+LIB = $(FOAM_LIBBIN)/libtwoPhaseReactingTurbulenceModels
diff --git a/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/Make/options b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/Make/options
new file mode 100644
index 0000000000000000000000000000000000000000..f003ce2281337a0c32d738f3657c74aef28968a5
--- /dev/null
+++ b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/Make/options
@@ -0,0 +1,14 @@
+EXE_INC = \
+    -I../twoPhaseSystem/lnInclude \
+    -I../../phaseSystems/lnInclude \
+    -I../../interfacialModels/lnInclude\
+    -I../../interfacialCompositionModels/lnInclude \
+    -I$(LIB_SRC)/transportModels/compressible/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
+    -I$(LIB_SRC)/transportModels/incompressible/transportModel \
+    -I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude \
+    -I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \
+    -I$(LIB_SRC)/TurbulenceModels/phaseCompressible/lnInclude \
+    -I$(LIB_SRC)/finiteVolume/lnInclude \
+    -I$(LIB_SRC)/fvOptions/lnInclude \
+    -I$(LIB_SRC)/meshTools/lnInclude
diff --git a/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/derivedFvPatchFields/alphatFixedDmdtWallBoilingWallFunction/alphatFixedDmdtWallBoilingWallFunctionFvPatchScalarField.C b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/derivedFvPatchFields/alphatFixedDmdtWallBoilingWallFunction/alphatFixedDmdtWallBoilingWallFunctionFvPatchScalarField.C
new file mode 100644
index 0000000000000000000000000000000000000000..a37553e338f20ec05553bb3f12df848f32ceb90b
--- /dev/null
+++ b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/derivedFvPatchFields/alphatFixedDmdtWallBoilingWallFunction/alphatFixedDmdtWallBoilingWallFunctionFvPatchScalarField.C
@@ -0,0 +1,373 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "alphatFixedDmdtWallBoilingWallFunctionFvPatchScalarField.H"
+#include "compressibleTurbulenceModel.H"
+#include "fvPatchFieldMapper.H"
+#include "volFields.H"
+#include "addToRunTimeSelectionTable.H"
+#include "twoPhaseSystem.H"
+#include "phaseSystem.H"
+#include "ThermalPhaseChangePhaseSystem.H"
+#include "MomentumTransferPhaseSystem.H"
+#include "wallFvPatch.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace compressible
+{
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+scalar alphatFixedDmdtWallBoilingWallFunctionFvPatchScalarField::maxExp_
+    = 50.0;
+scalar alphatFixedDmdtWallBoilingWallFunctionFvPatchScalarField::tolerance_
+    = 0.01;
+label alphatFixedDmdtWallBoilingWallFunctionFvPatchScalarField::maxIters_
+    = 10;
+
+// * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
+
+void alphatFixedDmdtWallBoilingWallFunctionFvPatchScalarField::checkType()
+{
+    if (!isA<wallFvPatch>(patch()))
+    {
+        FatalErrorIn
+        (
+            "alphatFixedDmdtWallBoilingWallFunctionFvPatchScalarField"
+            "::checkType()"
+        )
+            << "Patch type for patch " << patch().name() << " must be wall\n"
+            << "Current patch type is " << patch().type() << nl
+            << exit(FatalError);
+    }
+}
+
+
+tmp<scalarField>
+alphatFixedDmdtWallBoilingWallFunctionFvPatchScalarField::Psmooth
+(
+    const scalarField& Prat
+) const
+{
+    return 9.24*(pow(Prat, 0.75) - 1.0)*(1.0 + 0.28*exp(-0.007*Prat));
+}
+
+
+tmp<scalarField>
+alphatFixedDmdtWallBoilingWallFunctionFvPatchScalarField::yPlusTherm
+(
+    const scalarField& P,
+    const scalarField& Prat
+) const
+{
+
+    tmp<scalarField> typtf(new scalarField(this->size()));
+    scalarField& yptf = typtf();
+
+    forAll(yptf, faceI)
+    {
+        scalar ypt = 11.0;
+
+        for (int i=0; i<maxIters_; i++)
+        {
+            scalar f = ypt - (log(E_*ypt)/kappa_ + P[faceI])/Prat[faceI];
+            scalar df = 1.0 - 1.0/(ypt*kappa_*Prat[faceI]);
+            scalar yptNew = ypt - f/df;
+
+            if (yptNew < VSMALL)
+            {
+                yptf[faceI] =  0;
+            }
+            else if (mag(yptNew - ypt) < tolerance_)
+            {
+                yptf[faceI] = yptNew;
+            }
+            else
+            {
+                ypt = yptNew;
+            }
+        }
+
+        yptf[faceI] = ypt;
+    }
+
+    return typtf;
+}
+
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+alphatFixedDmdtWallBoilingWallFunctionFvPatchScalarField::
+alphatFixedDmdtWallBoilingWallFunctionFvPatchScalarField
+(
+    const fvPatch& p,
+    const DimensionedField<scalar, volMesh>& iF
+)
+:
+    alphatPhaseChangeWallFunctionFvPatchScalarField(p, iF),
+    Prt_(0.85),
+    Cmu_(0.09),
+    kappa_(0.41),
+    E_(9.8),
+    fixedDmdt_(0.0)
+{
+    checkType();
+}
+
+
+alphatFixedDmdtWallBoilingWallFunctionFvPatchScalarField::
+alphatFixedDmdtWallBoilingWallFunctionFvPatchScalarField
+(
+    const fvPatch& p,
+    const DimensionedField<scalar, volMesh>& iF,
+    const dictionary& dict
+)
+:
+    alphatPhaseChangeWallFunctionFvPatchScalarField(p, iF, dict),
+    Prt_(dict.lookupOrDefault<scalar>("Prt", 0.85)),
+    Cmu_(dict.lookupOrDefault<scalar>("Cmu", 0.09)),
+    kappa_(dict.lookupOrDefault<scalar>("kappa", 0.41)),
+    E_(dict.lookupOrDefault<scalar>("E", 9.8)),
+    fixedDmdt_(dict.lookupOrDefault<scalar>("fixedDmdt", 0.0))
+{}
+
+
+alphatFixedDmdtWallBoilingWallFunctionFvPatchScalarField::
+alphatFixedDmdtWallBoilingWallFunctionFvPatchScalarField
+(
+    const alphatFixedDmdtWallBoilingWallFunctionFvPatchScalarField& ptf,
+    const fvPatch& p,
+    const DimensionedField<scalar, volMesh>& iF,
+    const fvPatchFieldMapper& mapper
+)
+:
+    alphatPhaseChangeWallFunctionFvPatchScalarField(ptf, p, iF, mapper),
+    Prt_(ptf.Prt_),
+    Cmu_(ptf.Cmu_),
+    kappa_(ptf.kappa_),
+    E_(ptf.E_),
+    fixedDmdt_(ptf.fixedDmdt_)
+{}
+
+
+alphatFixedDmdtWallBoilingWallFunctionFvPatchScalarField::
+alphatFixedDmdtWallBoilingWallFunctionFvPatchScalarField
+(
+    const alphatFixedDmdtWallBoilingWallFunctionFvPatchScalarField& awfpsf
+)
+:
+    alphatPhaseChangeWallFunctionFvPatchScalarField(awfpsf),
+    Prt_(awfpsf.Prt_),
+    Cmu_(awfpsf.Cmu_),
+    kappa_(awfpsf.kappa_),
+    E_(awfpsf.E_),
+    fixedDmdt_(awfpsf.fixedDmdt_)
+{}
+
+
+alphatFixedDmdtWallBoilingWallFunctionFvPatchScalarField::
+alphatFixedDmdtWallBoilingWallFunctionFvPatchScalarField
+(
+    const alphatFixedDmdtWallBoilingWallFunctionFvPatchScalarField& awfpsf,
+    const DimensionedField<scalar, volMesh>& iF
+)
+:
+    alphatPhaseChangeWallFunctionFvPatchScalarField(awfpsf, iF),
+    Prt_(awfpsf.Prt_),
+    Cmu_(awfpsf.Cmu_),
+    kappa_(awfpsf.kappa_),
+    E_(awfpsf.E_),
+    fixedDmdt_(awfpsf.fixedDmdt_)
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+void alphatFixedDmdtWallBoilingWallFunctionFvPatchScalarField::updateCoeffs()
+{
+    if (updated())
+    {
+        return;
+    }
+
+    // Lookup the fluid model
+    const ThermalPhaseChangePhaseSystem
+    <
+        MomentumTransferPhaseSystem<twoPhaseSystem>
+    >& fluid =
+        refCast
+        <
+            const ThermalPhaseChangePhaseSystem
+            <
+                MomentumTransferPhaseSystem<twoPhaseSystem>
+            >
+        >
+        (
+            db().lookupObject<phaseSystem>("phaseProperties")
+        );
+
+    const phaseModel& liquid
+    (
+        fluid.phase1().name() == dimensionedInternalField().group()
+      ? fluid.phase1()
+      : fluid.phase2()
+    );
+
+    const label patchi = patch().index();
+
+    // Retrieve turbulence properties from model
+    const compressibleTurbulenceModel& turbModel =
+        db().lookupObject<compressibleTurbulenceModel>
+        (
+            IOobject::groupName
+            (
+                compressibleTurbulenceModel::propertiesName,
+                dimensionedInternalField().group()
+            )
+        );
+
+    const scalar Cmu25 = pow025(Cmu_);
+
+    const scalarField& y = turbModel.y()[patchi];
+
+    const tmp<scalarField> tmuw = turbModel.mu(patchi);
+    const scalarField& muw = tmuw();
+
+    const tmp<scalarField> talphaw = liquid.thermo().alpha(patchi);
+    const scalarField& alphaw = talphaw();
+
+    scalarField& alphatw = *this;
+
+    const tmp<volScalarField> tk = turbModel.k();
+    const volScalarField& k = tk();
+    const fvPatchScalarField& kw = k.boundaryField()[patchi];
+
+    const fvPatchVectorField& Uw = turbModel.U().boundaryField()[patchi];
+    const scalarField magUp(mag(Uw.patchInternalField() - Uw));
+    const scalarField magGradUw(mag(Uw.snGrad()));
+
+    const fvPatchScalarField& rhow = turbModel.rho().boundaryField()[patchi];
+    const fvPatchScalarField& hew =
+        liquid.thermo().he().boundaryField()[patchi];
+
+    const fvPatchScalarField& Tw =
+        liquid.thermo().T().boundaryField()[patchi];
+
+    scalarField Tp(Tw.patchInternalField());
+
+    // Heat flux [W/m2] - lagging alphatw
+    const scalarField qDot
+    (
+        (alphatw + alphaw)*hew.snGrad()
+    );
+
+    scalarField uTau(Cmu25*sqrt(kw));
+
+    scalarField yPlus(uTau*y/(muw/rhow));
+
+    scalarField Pr(muw/alphaw);
+
+    // Molecular-to-turbulent Prandtl number ratio
+    scalarField Prat(Pr/Prt_);
+
+    // Thermal sublayer thickness
+    scalarField P(this->Psmooth(Prat));
+
+    scalarField yPlusTherm(this->yPlusTherm(P, Prat));
+
+    scalarField alphatConv(this->size(), 0.0);
+
+    // Populate boundary values
+    forAll(alphatw, faceI)
+    {
+        // Evaluate new effective thermal diffusivity
+        scalar alphaEff = 0.0;
+        if (yPlus[faceI] < yPlusTherm[faceI])
+        {
+            scalar A = qDot[faceI]*rhow[faceI]*uTau[faceI]*y[faceI];
+            scalar B = qDot[faceI]*Pr[faceI]*yPlus[faceI];
+            scalar C = Pr[faceI]*0.5*rhow[faceI]*uTau[faceI]*sqr(magUp[faceI]);
+            alphaEff = A/(B + C + VSMALL);
+        }
+        else
+        {
+            scalar A = qDot[faceI]*rhow[faceI]*uTau[faceI]*y[faceI];
+            scalar B =
+                qDot[faceI]*Prt_*(1.0/kappa_*log(E_*yPlus[faceI]) + P[faceI]);
+            scalar magUc =
+                uTau[faceI]/kappa_*log(E_*yPlusTherm[faceI]) - mag(Uw[faceI]);
+            scalar C =
+                0.5*rhow[faceI]*uTau[faceI]
+               *(Prt_*sqr(magUp[faceI]) + (Pr[faceI] - Prt_)*sqr(magUc));
+            alphaEff = A/(B + C + VSMALL);
+        }
+
+        // Update convective heat transfer turbulent thermal diffusivity
+        alphatConv[faceI] = max(0.0, alphaEff - alphaw[faceI]);
+    }
+
+    dmdt_ = fixedDmdt_;
+
+    operator==(alphatConv);
+
+    fixedValueFvPatchScalarField::updateCoeffs();
+}
+
+
+void alphatFixedDmdtWallBoilingWallFunctionFvPatchScalarField::write
+(
+    Ostream& os
+) const
+{
+    fvPatchField<scalar>::write(os);
+    os.writeKeyword("Prt") << Prt_ << token::END_STATEMENT << nl;
+    os.writeKeyword("Cmu") << Cmu_ << token::END_STATEMENT << nl;
+    os.writeKeyword("kappa") << kappa_ << token::END_STATEMENT << nl;
+    os.writeKeyword("E") << E_ << token::END_STATEMENT << nl;
+    os.writeKeyword("fixedDmdt") << fixedDmdt_ << token::END_STATEMENT << nl;
+    dmdt_.writeEntry("dmdt", os);
+    writeEntry("value", os);
+}
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+makePatchTypeField
+(
+    fvPatchScalarField,
+    alphatFixedDmdtWallBoilingWallFunctionFvPatchScalarField
+);
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace compressible
+} // End namespace Foam
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/derivedFvPatchFields/alphatFixedDmdtWallBoilingWallFunction/alphatFixedDmdtWallBoilingWallFunctionFvPatchScalarField.H b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/derivedFvPatchFields/alphatFixedDmdtWallBoilingWallFunction/alphatFixedDmdtWallBoilingWallFunctionFvPatchScalarField.H
new file mode 100644
index 0000000000000000000000000000000000000000..bd9426fdb6b85ae3fc380134704c147fe1a9416b
--- /dev/null
+++ b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/derivedFvPatchFields/alphatFixedDmdtWallBoilingWallFunction/alphatFixedDmdtWallBoilingWallFunctionFvPatchScalarField.H
@@ -0,0 +1,210 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::compressible::alphatFixedDmdtWallBoilingWallFunctionFvPatchScalarField
+
+Group
+    grpCmpWallFunctions
+
+Description
+    A simple alphatPhaseChangeWallFunctionFvPatchScalarField with a fixed
+    volumetric phase-change mass flux.
+
+SeeAlso
+    Foam::compressible::alphatPhaseChangeWallFunctionFvPatchScalarField
+
+SourceFiles
+    alphatFixedDmdtWallBoilingWallFunctionFvPatchScalarField.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef compressibleAlphatFixedDmdtWallBoilingWallFunctionFvPatchScalarField_H
+#define compressibleAlphatFixedDmdtWallBoilingWallFunctionFvPatchScalarField_H
+
+#include "alphatPhaseChangeWallFunctionFvPatchScalarField.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace compressible
+{
+
+/*---------------------------------------------------------------------------*\
+   Class alphatFixedDmdtWallBoilingWallFunctionFvPatchScalarField Declaration
+\*---------------------------------------------------------------------------*/
+
+class alphatFixedDmdtWallBoilingWallFunctionFvPatchScalarField
+:
+    public alphatPhaseChangeWallFunctionFvPatchScalarField
+{
+    // Private data
+
+        //- Turbulent Prandtl number
+        scalar Prt_;
+
+        //- Cmu coefficient
+        scalar Cmu_;
+
+        //- Von Karman constant
+        scalar kappa_;
+
+        //- E coefficient
+        scalar E_;
+
+        //- E coefficient
+        scalar fixedDmdt_;
+
+
+        // Solution parameters
+
+            static scalar maxExp_;
+            static scalar tolerance_;
+            static label maxIters_;
+
+
+    // Private Member Functions
+
+        //- Check the type of the patch
+        void checkType();
+
+        //- 'P' function
+        tmp<scalarField> Psmooth(const scalarField& Prat) const;
+
+        //- Calculate y+ at the edge of the thermal laminar sublayer
+        tmp<scalarField> yPlusTherm
+        (
+            const scalarField& P,
+            const scalarField& Prat
+        ) const;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("compressible::alphatFixedDmdtWallBoilingWallFunction");
+
+
+    // Constructors
+
+        //- Construct from patch and internal field
+        alphatFixedDmdtWallBoilingWallFunctionFvPatchScalarField
+        (
+            const fvPatch&,
+            const DimensionedField<scalar, volMesh>&
+        );
+
+        //- Construct from patch, internal field and dictionary
+        alphatFixedDmdtWallBoilingWallFunctionFvPatchScalarField
+        (
+            const fvPatch&,
+            const DimensionedField<scalar, volMesh>&,
+            const dictionary&
+        );
+
+        //- Construct by mapping given
+        //  alphatFixedDmdtWallBoilingWallFunctionFvPatchScalarField
+        //  onto a new patch
+        alphatFixedDmdtWallBoilingWallFunctionFvPatchScalarField
+        (
+            const alphatFixedDmdtWallBoilingWallFunctionFvPatchScalarField&,
+            const fvPatch&,
+            const DimensionedField<scalar, volMesh>&,
+            const fvPatchFieldMapper&
+        );
+
+        //- Construct as copy
+        alphatFixedDmdtWallBoilingWallFunctionFvPatchScalarField
+        (
+            const alphatFixedDmdtWallBoilingWallFunctionFvPatchScalarField&
+        );
+
+        //- Construct and return a clone
+        virtual tmp<fvPatchScalarField> clone() const
+        {
+            return tmp<fvPatchScalarField>
+            (
+                new alphatFixedDmdtWallBoilingWallFunctionFvPatchScalarField
+                (
+                    *this
+                )
+            );
+        }
+
+        //- Construct as copy setting internal field reference
+        alphatFixedDmdtWallBoilingWallFunctionFvPatchScalarField
+        (
+            const alphatFixedDmdtWallBoilingWallFunctionFvPatchScalarField&,
+            const DimensionedField<scalar, volMesh>&
+        );
+
+        //- Construct and return a clone setting internal field reference
+        virtual tmp<fvPatchScalarField> clone
+        (
+            const DimensionedField<scalar, volMesh>& iF
+        ) const
+        {
+            return tmp<fvPatchScalarField>
+            (
+                new alphatFixedDmdtWallBoilingWallFunctionFvPatchScalarField
+                (
+                    *this,
+                    iF
+                )
+            );
+        }
+
+
+    // Member functions
+
+        //- Return the rate of phase-change
+        virtual const scalarField& dmdt() const
+        {
+            return dmdt_;
+        }
+
+
+        // Evaluation functions
+
+            //- Update the coefficients associated with the patch field
+            virtual void updateCoeffs();
+
+
+        // I-O
+
+            //- Write
+            virtual void write(Ostream&) const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace compressible
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Gidaspow/GidaspowConductivity.C b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Gidaspow/GidaspowConductivity.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Gidaspow/GidaspowConductivity.C
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Gidaspow/GidaspowConductivity.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Gidaspow/GidaspowConductivity.H b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Gidaspow/GidaspowConductivity.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Gidaspow/GidaspowConductivity.H
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Gidaspow/GidaspowConductivity.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/HrenyaSinclair/HrenyaSinclairConductivity.C b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/HrenyaSinclair/HrenyaSinclairConductivity.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/HrenyaSinclair/HrenyaSinclairConductivity.C
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/HrenyaSinclair/HrenyaSinclairConductivity.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/HrenyaSinclair/HrenyaSinclairConductivity.H b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/HrenyaSinclair/HrenyaSinclairConductivity.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/HrenyaSinclair/HrenyaSinclairConductivity.H
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/HrenyaSinclair/HrenyaSinclairConductivity.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Syamlal/SyamlalConductivity.C b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Syamlal/SyamlalConductivity.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Syamlal/SyamlalConductivity.C
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Syamlal/SyamlalConductivity.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Syamlal/SyamlalConductivity.H b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Syamlal/SyamlalConductivity.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Syamlal/SyamlalConductivity.H
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Syamlal/SyamlalConductivity.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/conductivityModel/conductivityModel.C b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/conductivityModel/conductivityModel.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/conductivityModel/conductivityModel.C
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/conductivityModel/conductivityModel.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/conductivityModel/conductivityModel.H b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/conductivityModel/conductivityModel.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/conductivityModel/conductivityModel.H
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/conductivityModel/conductivityModel.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/conductivityModel/newConductivityModel.C b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/conductivityModel/newConductivityModel.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/conductivityModel/newConductivityModel.C
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/conductivityModel/newConductivityModel.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleSlip/JohnsonJacksonParticleSlipFvPatchVectorField.C b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleSlip/JohnsonJacksonParticleSlipFvPatchVectorField.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleSlip/JohnsonJacksonParticleSlipFvPatchVectorField.C
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleSlip/JohnsonJacksonParticleSlipFvPatchVectorField.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleSlip/JohnsonJacksonParticleSlipFvPatchVectorField.H b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleSlip/JohnsonJacksonParticleSlipFvPatchVectorField.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleSlip/JohnsonJacksonParticleSlipFvPatchVectorField.H
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleSlip/JohnsonJacksonParticleSlipFvPatchVectorField.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleTheta/JohnsonJacksonParticleThetaFvPatchScalarField.C b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleTheta/JohnsonJacksonParticleThetaFvPatchScalarField.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleTheta/JohnsonJacksonParticleThetaFvPatchScalarField.C
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleTheta/JohnsonJacksonParticleThetaFvPatchScalarField.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleTheta/JohnsonJacksonParticleThetaFvPatchScalarField.H b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleTheta/JohnsonJacksonParticleThetaFvPatchScalarField.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleTheta/JohnsonJacksonParticleThetaFvPatchScalarField.H
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleTheta/JohnsonJacksonParticleThetaFvPatchScalarField.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/JohnsonJackson/JohnsonJacksonFrictionalStress.C b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/JohnsonJackson/JohnsonJacksonFrictionalStress.C
similarity index 98%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/JohnsonJackson/JohnsonJacksonFrictionalStress.C
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/JohnsonJackson/JohnsonJacksonFrictionalStress.C
index 2180c0bd2e2ddd50d582cb6ae5759a71bb96f850..ab5fb531ea5daa3bf81bcc7ff283b4bdaa9c4a9f 100644
--- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/JohnsonJackson/JohnsonJacksonFrictionalStress.C
+++ b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/JohnsonJackson/JohnsonJacksonFrictionalStress.C
@@ -115,6 +115,7 @@ Foam::tmp<Foam::volScalarField>
 Foam::kineticTheoryModels::frictionalStressModels::JohnsonJackson::nu
 (
     const volScalarField& alpha1,
+    const dimensionedScalar& alphaMinFriction,
     const dimensionedScalar& alphaMax,
     const volScalarField& pf,
     const volSymmTensorField& D
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/JohnsonJackson/JohnsonJacksonFrictionalStress.H b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/JohnsonJackson/JohnsonJacksonFrictionalStress.H
similarity index 98%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/JohnsonJackson/JohnsonJacksonFrictionalStress.H
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/JohnsonJackson/JohnsonJacksonFrictionalStress.H
index cc5a9dc5ea143e13dc480c137b7d403f5d35b59c..1fe92e7d0ea972fbaa7943ca7586d5ee30dba32d 100644
--- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/JohnsonJackson/JohnsonJacksonFrictionalStress.H
+++ b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/JohnsonJackson/JohnsonJacksonFrictionalStress.H
@@ -108,6 +108,7 @@ public:
         virtual tmp<volScalarField> nu
         (
             const volScalarField& alpha1,
+            const dimensionedScalar& alphaMinFriction,
             const dimensionedScalar& alphaMax,
             const volScalarField& pf,
             const volSymmTensorField& D
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/Schaeffer/SchaefferFrictionalStress.C b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/Schaeffer/SchaefferFrictionalStress.C
similarity index 97%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/Schaeffer/SchaefferFrictionalStress.C
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/Schaeffer/SchaefferFrictionalStress.C
index 55e7b9f2cd2ec8071b1fedd3f1e6324bf7b9aea7..4a0d2290d13c91fa9b755a82119190e730241f56 100644
--- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/Schaeffer/SchaefferFrictionalStress.C
+++ b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/Schaeffer/SchaefferFrictionalStress.C
@@ -104,6 +104,7 @@ Foam::tmp<Foam::volScalarField>
 Foam::kineticTheoryModels::frictionalStressModels::Schaeffer::nu
 (
     const volScalarField& alpha1,
+    const dimensionedScalar& alphaMinFriction,
     const dimensionedScalar& alphaMax,
     const volScalarField& pf,
     const volSymmTensorField& D
@@ -133,9 +134,9 @@ Foam::kineticTheoryModels::frictionalStressModels::Schaeffer::nu
 
     volScalarField& nuf = tnu();
 
-    forAll (D, celli)
+    forAll(D, celli)
     {
-        if (alpha1[celli] > alphaMax.value() - 5e-2)
+        if (alpha1[celli] > alphaMinFriction.value())
         {
             nuf[celli] =
                 0.5*pf[celli]*sin(phi_.value())
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/Schaeffer/SchaefferFrictionalStress.H b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/Schaeffer/SchaefferFrictionalStress.H
similarity index 98%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/Schaeffer/SchaefferFrictionalStress.H
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/Schaeffer/SchaefferFrictionalStress.H
index 7ff4862348aea50bc0157ee6f26e361675cb66ad..d4a304eb40c1a1444ae5c2ecdc428de44dcd5471 100644
--- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/Schaeffer/SchaefferFrictionalStress.H
+++ b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/Schaeffer/SchaefferFrictionalStress.H
@@ -96,6 +96,7 @@ public:
         virtual tmp<volScalarField> nu
         (
             const volScalarField& alpha1,
+            const dimensionedScalar& alphaMinFriction,
             const dimensionedScalar& alphaMax,
             const volScalarField& pf,
             const volSymmTensorField& D
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/frictionalStressModel/frictionalStressModel.C b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/frictionalStressModel/frictionalStressModel.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/frictionalStressModel/frictionalStressModel.C
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/frictionalStressModel/frictionalStressModel.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/frictionalStressModel/frictionalStressModel.H b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/frictionalStressModel/frictionalStressModel.H
similarity index 98%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/frictionalStressModel/frictionalStressModel.H
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/frictionalStressModel/frictionalStressModel.H
index 0e08f7ec8c885c20e983bce95328f0f1cbad33aa..923a1fce3f71a273916c41946b48c3b3dff1b3b5 100644
--- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/frictionalStressModel/frictionalStressModel.H
+++ b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/frictionalStressModel/frictionalStressModel.H
@@ -122,6 +122,7 @@ public:
         virtual tmp<volScalarField> nu
         (
             const volScalarField& alpha1,
+            const dimensionedScalar& alphaMinFriction,
             const dimensionedScalar& alphaMax,
             const volScalarField& pf,
             const volSymmTensorField& D
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/frictionalStressModel/newFrictionalStressModel.C b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/frictionalStressModel/newFrictionalStressModel.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/frictionalStressModel/newFrictionalStressModel.C
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/frictionalStressModel/newFrictionalStressModel.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/Lun/LunPressure.C b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/Lun/LunPressure.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/Lun/LunPressure.C
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/Lun/LunPressure.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/Lun/LunPressure.H b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/Lun/LunPressure.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/Lun/LunPressure.H
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/Lun/LunPressure.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/SyamlalRogersOBrien/SyamlalRogersOBrienPressure.C b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/SyamlalRogersOBrien/SyamlalRogersOBrienPressure.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/SyamlalRogersOBrien/SyamlalRogersOBrienPressure.C
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/SyamlalRogersOBrien/SyamlalRogersOBrienPressure.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/SyamlalRogersOBrien/SyamlalRogersOBrienPressure.H b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/SyamlalRogersOBrien/SyamlalRogersOBrienPressure.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/SyamlalRogersOBrien/SyamlalRogersOBrienPressure.H
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/SyamlalRogersOBrien/SyamlalRogersOBrienPressure.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/granularPressureModel/granularPressureModel.C b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/granularPressureModel/granularPressureModel.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/granularPressureModel/granularPressureModel.C
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/granularPressureModel/granularPressureModel.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/granularPressureModel/granularPressureModel.H b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/granularPressureModel/granularPressureModel.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/granularPressureModel/granularPressureModel.H
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/granularPressureModel/granularPressureModel.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/granularPressureModel/newGranularPressureModel.C b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/granularPressureModel/newGranularPressureModel.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/granularPressureModel/newGranularPressureModel.C
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/granularPressureModel/newGranularPressureModel.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.C b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.C
similarity index 97%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.C
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.C
index 11d09d1118fd6b12a205157d4fca0541dcd1eeea..bbf37904ca83743a749d6936ce5d54ad4229295b 100644
--- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.C
+++ b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.C
@@ -41,7 +41,13 @@ Foam::RASModels::kineticTheoryModel::kineticTheoryModel
     const word& type
 )
 :
-    eddyViscosity<RASModel<PhaseCompressibleTurbulenceModel<phaseModel> > >
+    eddyViscosity
+    <
+        RASModel<EddyDiffusivity<ThermalDiffusivity
+        <
+            PhaseCompressibleTurbulenceModel<phaseModel>
+        > > >
+    >
     (
         type,
         alpha,
@@ -183,7 +189,10 @@ bool Foam::RASModels::kineticTheoryModel::read()
     (
         eddyViscosity
         <
-            RASModel<PhaseCompressibleTurbulenceModel<phaseModel> >
+            RASModel<EddyDiffusivity<ThermalDiffusivity
+            <
+                PhaseCompressibleTurbulenceModel<phaseModel>
+            > > >
         >::read()
     )
     {
@@ -519,6 +528,7 @@ void Foam::RASModels::kineticTheoryModel::correct()
         nut_ += frictionalStressModel_->nu
         (
             alpha,
+            alphaMinFriction_,
             alphaMax_,
             pf/rho,
             D
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.H b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.H
similarity index 97%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.H
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.H
index bfa1f872cb877ecdfd0e15e5e2d0faf8cbc5ef25..9aadb83d12738a7f3fb91b54cff381d5772ab15a 100644
--- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.H
+++ b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.H
@@ -48,6 +48,8 @@ SourceFiles
 #include "RASModel.H"
 #include "eddyViscosity.H"
 #include "PhaseCompressibleTurbulenceModel.H"
+#include "ThermalDiffusivity.H"
+#include "EddyDiffusivity.H"
 #include "phaseModel.H"
 #include "dragModel.H"
 #include "viscosityModel.H"
@@ -72,7 +74,10 @@ class kineticTheoryModel
 :
     public eddyViscosity
     <
-        RASModel<PhaseCompressibleTurbulenceModel<phaseModel> >
+        RASModel<EddyDiffusivity<ThermalDiffusivity
+        <
+            PhaseCompressibleTurbulenceModel<phaseModel>
+        > > >
     >
 {
     // Private data
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/CarnahanStarling/CarnahanStarlingRadial.C b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/CarnahanStarling/CarnahanStarlingRadial.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/CarnahanStarling/CarnahanStarlingRadial.C
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/CarnahanStarling/CarnahanStarlingRadial.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/CarnahanStarling/CarnahanStarlingRadial.H b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/CarnahanStarling/CarnahanStarlingRadial.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/CarnahanStarling/CarnahanStarlingRadial.H
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/CarnahanStarling/CarnahanStarlingRadial.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/LunSavage/LunSavageRadial.C b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/LunSavage/LunSavageRadial.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/LunSavage/LunSavageRadial.C
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/LunSavage/LunSavageRadial.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/LunSavage/LunSavageRadial.H b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/LunSavage/LunSavageRadial.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/LunSavage/LunSavageRadial.H
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/LunSavage/LunSavageRadial.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/SinclairJackson/SinclairJacksonRadial.C b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/SinclairJackson/SinclairJacksonRadial.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/SinclairJackson/SinclairJacksonRadial.C
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/SinclairJackson/SinclairJacksonRadial.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/SinclairJackson/SinclairJacksonRadial.H b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/SinclairJackson/SinclairJacksonRadial.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/SinclairJackson/SinclairJacksonRadial.H
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/SinclairJackson/SinclairJacksonRadial.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/radialModel/newRadialModel.C b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/radialModel/newRadialModel.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/radialModel/newRadialModel.C
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/radialModel/newRadialModel.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/radialModel/radialModel.C b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/radialModel/radialModel.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/radialModel/radialModel.C
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/radialModel/radialModel.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/radialModel/radialModel.H b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/radialModel/radialModel.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/radialModel/radialModel.H
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/radialModel/radialModel.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Gidaspow/GidaspowViscosity.C b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Gidaspow/GidaspowViscosity.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Gidaspow/GidaspowViscosity.C
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Gidaspow/GidaspowViscosity.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Gidaspow/GidaspowViscosity.H b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Gidaspow/GidaspowViscosity.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Gidaspow/GidaspowViscosity.H
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Gidaspow/GidaspowViscosity.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/HrenyaSinclair/HrenyaSinclairViscosity.C b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/HrenyaSinclair/HrenyaSinclairViscosity.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/HrenyaSinclair/HrenyaSinclairViscosity.C
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/HrenyaSinclair/HrenyaSinclairViscosity.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/HrenyaSinclair/HrenyaSinclairViscosity.H b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/HrenyaSinclair/HrenyaSinclairViscosity.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/HrenyaSinclair/HrenyaSinclairViscosity.H
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/HrenyaSinclair/HrenyaSinclairViscosity.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Syamlal/SyamlalViscosity.C b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Syamlal/SyamlalViscosity.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Syamlal/SyamlalViscosity.C
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Syamlal/SyamlalViscosity.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Syamlal/SyamlalViscosity.H b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Syamlal/SyamlalViscosity.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Syamlal/SyamlalViscosity.H
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Syamlal/SyamlalViscosity.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/none/noneViscosity.C b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/none/noneViscosity.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/none/noneViscosity.C
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/none/noneViscosity.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/none/noneViscosity.H b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/none/noneViscosity.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/none/noneViscosity.H
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/none/noneViscosity.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/viscosityModel/newViscosityModel.C b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/viscosityModel/newViscosityModel.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/viscosityModel/newViscosityModel.C
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/viscosityModel/newViscosityModel.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/viscosityModel/viscosityModel.C b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/viscosityModel/viscosityModel.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/viscosityModel/viscosityModel.C
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/viscosityModel/viscosityModel.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/viscosityModel/viscosityModel.H b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/viscosityModel/viscosityModel.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/viscosityModel/viscosityModel.H
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/viscosityModel/viscosityModel.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/phaseCompressibleTurbulenceModels.C b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/phaseCompressibleTurbulenceModels.C
similarity index 97%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/phaseCompressibleTurbulenceModels.C
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/phaseCompressibleTurbulenceModels.C
index 65d857d9c842f58f147769165d86a13685ddcfc2..eb0a07004439a5b028680abf4fd024e99cb1ebe0 100644
--- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/phaseCompressibleTurbulenceModels.C
+++ b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/phaseCompressibleTurbulenceModels.C
@@ -29,6 +29,9 @@ License
 #include "addToRunTimeSelectionTable.H"
 #include "makeTurbulenceModel.H"
 
+#include "ThermalDiffusivity.H"
+#include "EddyDiffusivity.H"
+
 #include "laminar.H"
 #include "RASModel.H"
 #include "LESModel.H"
@@ -39,6 +42,7 @@ makeBaseTurbulenceModel
     volScalarField,
     compressibleTurbulenceModel,
     PhaseCompressibleTurbulenceModel,
+    ThermalDiffusivity,
     phaseModel
 );
 
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/phasePressureModel/phasePressureModel.C b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/phasePressureModel/phasePressureModel.C
similarity index 94%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/phasePressureModel/phasePressureModel.C
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/phasePressureModel/phasePressureModel.C
index 8cca6f493f098cf93b841a128ff96286df2dbb46..adb23d40d2c63d264adb8d5ac2aa2cb501d04474 100644
--- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/phasePressureModel/phasePressureModel.C
+++ b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/phasePressureModel/phasePressureModel.C
@@ -40,7 +40,13 @@ Foam::RASModels::phasePressureModel::phasePressureModel
     const word& type
 )
 :
-    eddyViscosity<RASModel<PhaseCompressibleTurbulenceModel<phaseModel> > >
+    eddyViscosity
+    <
+        RASModel<EddyDiffusivity<ThermalDiffusivity
+        <
+            PhaseCompressibleTurbulenceModel<phaseModel>
+        > > >
+    >
     (
         type,
         alpha,
@@ -87,7 +93,10 @@ bool Foam::RASModels::phasePressureModel::read()
     (
         eddyViscosity
         <
-            RASModel<PhaseCompressibleTurbulenceModel<phaseModel> >
+            RASModel<EddyDiffusivity<ThermalDiffusivity
+            <
+                PhaseCompressibleTurbulenceModel<phaseModel>
+            > > >
         >::read()
     )
     {
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/phasePressureModel/phasePressureModel.H b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/phasePressureModel/phasePressureModel.H
similarity index 96%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/phasePressureModel/phasePressureModel.H
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/phasePressureModel/phasePressureModel.H
index a2b17dc1c7660edd7cd938faa83167d8d8b79fa2..68734e5b4f792e2f80ff503a6fc2b2d819e05a6e 100644
--- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/phasePressureModel/phasePressureModel.H
+++ b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseCompressibleTurbulenceModels/phasePressureModel/phasePressureModel.H
@@ -54,6 +54,8 @@ SourceFiles
 #include "RASModel.H"
 #include "eddyViscosity.H"
 #include "PhaseCompressibleTurbulenceModel.H"
+#include "ThermalDiffusivity.H"
+#include "EddyDiffusivity.H"
 #include "phaseModel.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -71,7 +73,10 @@ class phasePressureModel
 :
     public eddyViscosity
     <
-        RASModel<PhaseCompressibleTurbulenceModel<phaseModel> >
+        RASModel<EddyDiffusivity<ThermalDiffusivity
+        <
+            PhaseCompressibleTurbulenceModel<phaseModel>
+        > > >
     >
 {
     // Private data
diff --git a/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseSystem/Make/files b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseSystem/Make/files
new file mode 100644
index 0000000000000000000000000000000000000000..ce89d9907bda7641720d617e8db43a75344ee0fc
--- /dev/null
+++ b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseSystem/Make/files
@@ -0,0 +1,11 @@
+diameterModels/IATE/IATE.C
+diameterModels/IATE/IATEsources/IATEsource/IATEsource.C
+diameterModels/IATE/IATEsources/wakeEntrainmentCoalescence/wakeEntrainmentCoalescence.C
+diameterModels/IATE/IATEsources/turbulentBreakUp/turbulentBreakUp.C
+diameterModels/IATE/IATEsources/randomCoalescence/randomCoalescence.C
+
+twoPhaseSystem.C
+newTwoPhaseSystem.C
+twoPhaseSystems.C
+
+LIB = $(FOAM_LIBBIN)/libreactingTwoPhaseSystem
diff --git a/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseSystem/Make/options b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseSystem/Make/options
new file mode 100644
index 0000000000000000000000000000000000000000..7321f6ef68cf9524e25a80224691d11cb182dba3
--- /dev/null
+++ b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseSystem/Make/options
@@ -0,0 +1,20 @@
+EXE_INC = \
+    -I../../interfacialModels/lnInclude \
+    -I../../interfacialCompositionModels/lnInclude \
+    -I../../phaseSystems/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude \
+    -I$(LIB_SRC)/transportModels/compressible/lnInclude \
+    -I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \
+    -I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude \
+    -I$(LIB_SRC)/TurbulenceModels/phaseCompressible/lnInclude \
+    -I$(LIB_SRC)/combustionModels/lnInclude \
+    -I$(LIB_SRC)/finiteVolume/lnInclude \
+    -I$(LIB_SRC)/fvOptions/lnInclude \
+    -I$(LIB_SRC)/meshTools/lnInclude \
+    -I$(LIB_SRC)/sampling/lnInclude
+
+LIB_LIBS = \
+    -lcombustionModels \
+    -lreactingPhaseSystem
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATE.C b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseSystem/diameterModels/IATE/IATE.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATE.C
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseSystem/diameterModels/IATE/IATE.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATE.H b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseSystem/diameterModels/IATE/IATE.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATE.H
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseSystem/diameterModels/IATE/IATE.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/IATEsource/IATEsource.C b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseSystem/diameterModels/IATE/IATEsources/IATEsource/IATEsource.C
similarity index 99%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/IATEsource/IATEsource.C
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseSystem/diameterModels/IATE/IATEsources/IATEsource/IATEsource.C
index 59bf824f56ad4647c7bbb86dcf3494cd3543d130..9c62dfc819f5e0fd4b511d73e0a3e266ca3c159e 100644
--- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/IATEsource/IATEsource.C
+++ b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseSystem/diameterModels/IATE/IATEsources/IATEsource/IATEsource.C
@@ -24,7 +24,6 @@ License
 \*---------------------------------------------------------------------------*/
 
 #include "IATEsource.H"
-#include "twoPhaseSystem.H"
 #include "fvMatrix.H"
 #include "PhaseCompressibleTurbulenceModel.H"
 #include "uniformDimensionedFields.H"
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/IATEsource/IATEsource.H b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseSystem/diameterModels/IATE/IATEsources/IATEsource/IATEsource.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/IATEsource/IATEsource.H
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseSystem/diameterModels/IATE/IATEsources/IATEsource/IATEsource.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/dummy/dummy.C b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseSystem/diameterModels/IATE/IATEsources/dummy/dummy.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/dummy/dummy.C
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseSystem/diameterModels/IATE/IATEsources/dummy/dummy.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/dummy/dummy.H b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseSystem/diameterModels/IATE/IATEsources/dummy/dummy.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/dummy/dummy.H
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseSystem/diameterModels/IATE/IATEsources/dummy/dummy.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/randomCoalescence/randomCoalescence.C b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseSystem/diameterModels/IATE/IATEsources/randomCoalescence/randomCoalescence.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/randomCoalescence/randomCoalescence.C
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseSystem/diameterModels/IATE/IATEsources/randomCoalescence/randomCoalescence.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/randomCoalescence/randomCoalescence.H b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseSystem/diameterModels/IATE/IATEsources/randomCoalescence/randomCoalescence.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/randomCoalescence/randomCoalescence.H
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseSystem/diameterModels/IATE/IATEsources/randomCoalescence/randomCoalescence.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/turbulentBreakUp/turbulentBreakUp.C b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseSystem/diameterModels/IATE/IATEsources/turbulentBreakUp/turbulentBreakUp.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/turbulentBreakUp/turbulentBreakUp.C
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseSystem/diameterModels/IATE/IATEsources/turbulentBreakUp/turbulentBreakUp.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/turbulentBreakUp/turbulentBreakUp.H b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseSystem/diameterModels/IATE/IATEsources/turbulentBreakUp/turbulentBreakUp.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/turbulentBreakUp/turbulentBreakUp.H
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseSystem/diameterModels/IATE/IATEsources/turbulentBreakUp/turbulentBreakUp.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/wakeEntrainmentCoalescence/wakeEntrainmentCoalescence.C b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseSystem/diameterModels/IATE/IATEsources/wakeEntrainmentCoalescence/wakeEntrainmentCoalescence.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/wakeEntrainmentCoalescence/wakeEntrainmentCoalescence.C
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseSystem/diameterModels/IATE/IATEsources/wakeEntrainmentCoalescence/wakeEntrainmentCoalescence.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/wakeEntrainmentCoalescence/wakeEntrainmentCoalescence.H b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseSystem/diameterModels/IATE/IATEsources/wakeEntrainmentCoalescence/wakeEntrainmentCoalescence.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/wakeEntrainmentCoalescence/wakeEntrainmentCoalescence.H
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseSystem/diameterModels/IATE/IATEsources/wakeEntrainmentCoalescence/wakeEntrainmentCoalescence.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/twoPhaseSystem/newTwoPhaseSystem.C b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseSystem/newTwoPhaseSystem.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/twoPhaseSystem/newTwoPhaseSystem.C
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseSystem/newTwoPhaseSystem.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/twoPhaseSystem/twoPhaseSystem.C b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseSystem/twoPhaseSystem.C
similarity index 94%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/twoPhaseSystem/twoPhaseSystem.C
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseSystem/twoPhaseSystem.C
index caee01b251f15dc896e3e6ecce9ab06f4c033222..7b7ddee6f49d622ff4068791a0bc7b3d3ec6b2fa 100644
--- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/twoPhaseSystem/twoPhaseSystem.C
+++ b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseSystem/twoPhaseSystem.C
@@ -57,10 +57,13 @@ Foam::twoPhaseSystem::twoPhaseSystem
 )
 :
     phaseSystem(mesh),
-    phase1_(phaseModels_[phaseNames_[0]]()),
-    phase2_(phaseModels_[phaseNames_[1]]())
+    phase1_(phaseModels_[0]),
+    phase2_(phaseModels_[1])
 {
     phase2_.volScalarField::operator=(scalar(1) - phase1_);
+
+    volScalarField& alpha1 = phase1_;
+    mesh.setFluxRequired(alpha1.name());
 }
 
 
@@ -82,6 +85,12 @@ Foam::twoPhaseSystem::sigma() const
 }
 
 
+const Foam::dragModel& Foam::twoPhaseSystem::drag(const phaseModel& phase) const
+{
+    return lookupSubModel<dragModel>(phase, otherPhase(phase));
+}
+
+
 Foam::tmp<Foam::volScalarField>
 Foam::twoPhaseSystem::Kd() const
 {
@@ -102,6 +111,13 @@ Foam::twoPhaseSystem::Kdf() const
 }
 
 
+const Foam::virtualMassModel&
+Foam::twoPhaseSystem::virtualMass(const phaseModel& phase) const
+{
+    return lookupSubModel<virtualMassModel>(phase, otherPhase(phase));
+}
+
+
 Foam::tmp<Foam::volScalarField>
 Foam::twoPhaseSystem::Vm() const
 {
@@ -152,6 +168,12 @@ Foam::twoPhaseSystem::D() const
 }
 
 
+bool Foam::twoPhaseSystem::transfersMass() const
+{
+    return transfersMass(phase1());
+}
+
+
 Foam::tmp<Foam::volScalarField>
 Foam::twoPhaseSystem::dmdt() const
 {
@@ -187,30 +209,30 @@ void Foam::twoPhaseSystem::solve()
     // Construct the dilatation rate source term
     tmp<volScalarField::DimensionedInternalField> tdgdt;
 
-    if (phase1_.compressible() && phase2_.compressible())
+    if (phase1_.divU().valid() && phase2_.divU().valid())
     {
         tdgdt =
         (
             alpha2.dimensionedInternalField()
-           *phase1_.divU().dimensionedInternalField()
+           *phase1_.divU()().dimensionedInternalField()
           - alpha1.dimensionedInternalField()
-           *phase2_.divU().dimensionedInternalField()
+           *phase2_.divU()().dimensionedInternalField()
         );
     }
-    else if (phase1_.compressible())
+    else if (phase1_.divU().valid())
     {
         tdgdt =
         (
             alpha2.dimensionedInternalField()
-           *phase1_.divU().dimensionedInternalField()
+           *phase1_.divU()().dimensionedInternalField()
         );
     }
-    else if (phase2_.compressible())
+    else if (phase2_.divU().valid())
     {
         tdgdt =
         (
           - alpha1.dimensionedInternalField()
-           *phase2_.divU().dimensionedInternalField()
+           *phase2_.divU()().dimensionedInternalField()
         );
     }
 
@@ -406,17 +428,4 @@ void Foam::twoPhaseSystem::solve()
 }
 
 
-const Foam::dragModel& Foam::twoPhaseSystem::drag(const phaseModel& phase) const
-{
-    return lookupSubModel<dragModel>(phase, otherPhase(phase));
-}
-
-
-const Foam::virtualMassModel&
-Foam::twoPhaseSystem::virtualMass(const phaseModel& phase) const
-{
-    return lookupSubModel<virtualMassModel>(phase, otherPhase(phase));
-}
-
-
 // ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/twoPhaseSystem/twoPhaseSystem.H b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseSystem/twoPhaseSystem.H
similarity index 60%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/twoPhaseSystem/twoPhaseSystem.H
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseSystem/twoPhaseSystem.H
index 0ac971b790e328735fa56fec79a25276facb52d5..3c4c98f58921d11e3f01f6ab2754138d36ad8e75 100644
--- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/twoPhaseSystem/twoPhaseSystem.H
+++ b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseSystem/twoPhaseSystem.H
@@ -53,6 +53,38 @@ class twoPhaseSystem
 :
     public phaseSystem
 {
+    // Private member functions
+
+        //- Return the drag coefficient for phase pair
+        virtual tmp<volScalarField> Kd(const phasePairKey& key) const = 0;
+
+        //- Return the face drag coefficient for phase pair
+        virtual tmp<surfaceScalarField> Kdf(const phasePairKey& key) const = 0;
+
+        //- Return the virtual mass coefficient for phase pair
+        virtual tmp<volScalarField> Vm(const phasePairKey& key) const = 0;
+
+        //- Return the face virtual mass coefficient for phase pair
+        virtual tmp<surfaceScalarField> Vmf(const phasePairKey& key) const = 0;
+
+        //- Return the combined force (lift + wall-lubrication) for phase pair
+        virtual tmp<volVectorField> F(const phasePairKey& key) const = 0;
+
+        //- Return the combined face-force (lift + wall-lubrication)
+        //  for phase pair
+        virtual tmp<surfaceScalarField> Ff(const phasePairKey& key) const = 0;
+
+        //- Return the turbulent diffusivity for phase pair
+        //  Multiplies the phase-fraction gradient
+        virtual tmp<volScalarField> D(const phasePairKey& key) const = 0;
+
+        //- Return true if there is mass transfer for phase
+        virtual bool transfersMass(const phaseModel& phase) const = 0;
+
+        //- Return the interfacial mass flow rate for phase pair
+        virtual tmp<volScalarField> dmdt(const phasePairKey& key) const = 0;
+
+
 protected:
 
     // Protected data
@@ -103,28 +135,50 @@ public:
 
     // Member Functions
 
-        //- Solve for the phase fractions
-        virtual void solve();
+        //- Constant access phase model 1
+        const phaseModel& phase1() const;
+
+        //- Access phase model 1
+        phaseModel& phase1();
+
+        //- Constant access phase model 2
+        const phaseModel& phase2() const;
+
+        //- Access phase model 2
+        phaseModel& phase2();
+
+        //- Constant access the phase not given as an argument
+        const phaseModel& otherPhase
+        (
+            const phaseModel& phase
+        ) const;
+
+        //- Return the momentum transfer matrices
+        virtual autoPtr<momentumTransferTable> momentumTransfer() const = 0;
+
+        //- Return the heat transfer matrices
+        virtual autoPtr<heatTransferTable> heatTransfer() const = 0;
+
+        //- Return the mass transfer matrices
+        virtual autoPtr<massTransferTable> massTransfer() const = 0;
 
         using phaseSystem::sigma;
-        using phaseSystem::Kd;
-        using phaseSystem::Kdf;
-        using phaseSystem::Vm;
-        using phaseSystem::Vmf;
-        using phaseSystem::F;
-        using phaseSystem::Ff;
-        using phaseSystem::D;
-        using phaseSystem::dmdt;
 
         //- Return the surface tension coefficient
         tmp<volScalarField> sigma() const;
 
+        //- Return the drag model for the given phase
+        const dragModel& drag(const phaseModel& phase) const;
+
         //- Return the drag coefficient
         tmp<volScalarField> Kd() const;
 
         //- Return the face drag coefficient
         tmp<surfaceScalarField> Kdf() const;
 
+        //- Return the virtual mass model for the given phase
+        const virtualMassModel& virtualMass(const phaseModel& phase) const;
+
         //- Return the virtual mass coefficient
         tmp<volScalarField> Vm() const;
 
@@ -141,35 +195,14 @@ public:
         //  Multiplies the phase-fraction gradient
         tmp<volScalarField> D() const;
 
+        //- Return true if there is mass transfer
+        bool transfersMass() const;
+
         //- Return the interfacial mass flow rate
         tmp<volScalarField> dmdt() const;
 
-
-        // Access
-
-            //- Constant access phase model 1
-            const phaseModel& phase1() const;
-
-            //- Access phase model 1
-            phaseModel& phase1();
-
-            //- Constant access phase model 2
-            const phaseModel& phase2() const;
-
-            //- Access phase model 2
-            phaseModel& phase2();
-
-            //- Constant access the phase not given as an argument
-            const phaseModel& otherPhase
-            (
-                const phaseModel& phase
-            ) const;
-
-            //- Return the drag model for the given phase
-            const dragModel& drag(const phaseModel& phase) const;
-
-            //- Return the virtual mass model for the given phase
-            const virtualMassModel& virtualMass(const phaseModel& phase) const;
+        //- Solve for the phase fractions
+        virtual void solve();
 };
 
 
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/twoPhaseSystem/twoPhaseSystemI.H b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseSystem/twoPhaseSystemI.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/twoPhaseSystem/twoPhaseSystemI.H
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseSystem/twoPhaseSystemI.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/twoPhaseSystem/twoPhaseSystems.C b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseSystem/twoPhaseSystems.C
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/twoPhaseSystem/twoPhaseSystems.C
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/twoPhaseSystem/twoPhaseSystems.C
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/write.H b/applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/write.H
similarity index 100%
rename from applications/solvers/multiphase/reactingTwoPhaseEulerFoam/write.H
rename to applications/solvers/multiphase/reactingEulerFoam/reactingTwoPhaseEulerFoam/write.H
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/pU/UEqns.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/pU/UEqns.H
deleted file mode 100644
index 31bd20ff7a6e8a8f6aeda844aebed61d74f1f9df..0000000000000000000000000000000000000000
--- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/pU/UEqns.H
+++ /dev/null
@@ -1,66 +0,0 @@
-Info<< "Constructing momentum equations" << endl;
-
-MRF.correctBoundaryVelocity(U1);
-MRF.correctBoundaryVelocity(U2);
-
-fvVectorMatrix U1Eqn(U1, rho1.dimensions()*U1.dimensions()*dimVol/dimTime);
-fvVectorMatrix U2Eqn(U2, rho2.dimensions()*U2.dimensions()*dimVol/dimTime);
-
-volScalarField Kd(fluid.Kd());
-
-{
-    volScalarField Vm(fluid.Vm());
-
-    const volScalarField dmdt12(posPart(fluid.dmdt()));
-    const volScalarField dmdt21(negPart(fluid.dmdt()));
-
-    {
-        U1Eqn =
-        (
-            fvm::ddt(alpha1, rho1, U1) + fvm::div(alphaRhoPhi1, U1)
-          - fvm::Sp(phase1.continuityError() + dmdt21, U1) + dmdt21*U2
-          + MRF.DDt(alpha1*rho1, U1)
-          + phase1.turbulence().divDevRhoReff(U1)
-         ==
-          - Vm
-           *(
-                fvm::ddt(U1)
-              + fvm::div(phi1, U1)
-              - fvm::Sp(fvc::div(phi1), U1)
-              - phase2.DUDt()
-            )
-          - MRF.DDt(Vm, U1 - U2)
-          + fvOptions(alpha1, rho1, U1)
-        );
-        U1Eqn.relax();
-        U1Eqn += fvm::Sp(Kd, U1);
-        fvOptions.constrain(U1Eqn);
-        U1.correctBoundaryConditions();
-        fvOptions.correct(U1);
-    }
-
-    {
-        U2Eqn =
-        (
-            fvm::ddt(alpha2, rho2, U2) + fvm::div(alphaRhoPhi2, U2)
-          - fvm::Sp(phase2.continuityError() - dmdt12, U2) - dmdt12*U1
-          + MRF.DDt(alpha2*rho2, U2)
-          + phase2.turbulence().divDevRhoReff(U2)
-         ==
-          - Vm
-           *(
-                fvm::ddt(U2)
-              + fvm::div(phi2, U2)
-              - fvm::Sp(fvc::div(phi2), U2)
-              - phase1.DUDt()
-            )
-          - MRF.DDt(Vm, U2 - U1)
-          + fvOptions(alpha2, rho2, U2)
-        );
-        U2Eqn.relax();
-        U2Eqn += fvm::Sp(Kd, U2);
-        fvOptions.constrain(U2Eqn);
-        U2.correctBoundaryConditions();
-        fvOptions.correct(U2);
-    }
-}
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/ThermalPhaseChangePhaseSystem/ThermalPhaseChangePhaseSystem.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/ThermalPhaseChangePhaseSystem/ThermalPhaseChangePhaseSystem.C
deleted file mode 100644
index bbce1962a12a3e105be2176f723349e63abd14a1..0000000000000000000000000000000000000000
--- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/ThermalPhaseChangePhaseSystem/ThermalPhaseChangePhaseSystem.C
+++ /dev/null
@@ -1,199 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software: you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
-
-\*---------------------------------------------------------------------------*/
-
-#include "ThermalPhaseChangePhaseSystem.H"
-
-// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
-
-template<class BasePhaseSystem>
-Foam::ThermalPhaseChangePhaseSystem<BasePhaseSystem>::
-ThermalPhaseChangePhaseSystem
-(
-    const fvMesh& mesh
-)
-:
-    HeatAndMassTransferPhaseSystem<BasePhaseSystem>(mesh),
-    volatile_(this->lookup("volatile")),
-    saturationModel_(saturationModel::New(this->subDict("saturationModel")))
-{}
-
-
-// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
-
-template<class BasePhaseSystem>
-Foam::ThermalPhaseChangePhaseSystem<BasePhaseSystem>::
-~ThermalPhaseChangePhaseSystem()
-{}
-
-
-// * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * * //
-
-template<class BasePhaseSystem>
-Foam::autoPtr<Foam::phaseSystem::massTransferTable>
-Foam::ThermalPhaseChangePhaseSystem<BasePhaseSystem>::massTransfer() const
-{
-    // Create a mass transfer matrix for each species of each phase
-    autoPtr<phaseSystem::massTransferTable> eqnsPtr
-    (
-        new phaseSystem::massTransferTable()
-    );
-
-    phaseSystem::massTransferTable& eqns = eqnsPtr();
-
-    forAllConstIter
-    (
-        phaseSystem::phaseModelTable,
-        this->phaseModels_,
-        phaseModelIter
-    )
-    {
-        const phaseModel& phase(phaseModelIter());
-
-        const PtrList<volScalarField>& Yi = phase.Y();
-
-        forAll(Yi, i)
-        {
-            eqns.insert
-            (
-                Yi[i].name(),
-                new fvScalarMatrix(Yi[i], dimMass/dimTime)
-            );
-        }
-    }
-
-    forAllConstIter
-    (
-        phaseSystem::phasePairTable,
-        this->phasePairs_,
-        phasePairIter
-    )
-    {
-        const phasePair& pair(phasePairIter());
-
-        if (pair.ordered())
-        {
-            continue;
-        }
-        const phaseModel& phase = pair.phase1();
-        const phaseModel& otherPhase = pair.phase2();
-
-        const word name
-        (
-            IOobject::groupName(volatile_, phase.name())
-        );
-
-        const word otherName
-        (
-            IOobject::groupName(volatile_, otherPhase.name())
-        );
-
-        const volScalarField dmdt(this->dmdt(pair));
-        const volScalarField dmdt12(posPart(dmdt));
-        const volScalarField dmdt21(negPart(dmdt));
-
-        *eqns[name] += fvm::Sp(dmdt21, eqns[name]->psi()) - dmdt21;
-        *eqns[otherName] += dmdt12 - fvm::Sp(dmdt12, eqns[otherName]->psi());
-    }
-
-    return eqnsPtr;
-}
-
-
-template<class BasePhaseSystem>
-void Foam::ThermalPhaseChangePhaseSystem<BasePhaseSystem>::correctThermo()
-{
-    BasePhaseSystem::correctThermo();
-
-    forAllConstIter
-    (
-        phaseSystem::phasePairTable,
-        this->phasePairs_,
-        phasePairIter
-    )
-    {
-        const phasePair& pair(phasePairIter());
-
-        if (pair.ordered())
-        {
-            continue;
-        }
-
-        const phaseModel& phase1 = pair.phase1();
-        const phaseModel& phase2 = pair.phase2();
-
-        volScalarField& Tf = *this->Tf_[pair];
-        Tf = saturationModel_->Tsat(phase1.thermo().p());
-
-        Info<< "Tf." << pair.name()
-            << ": min = " << min(Tf.internalField())
-            << ", mean = " << average(Tf.internalField())
-            << ", max = " << max(Tf.internalField())
-            << endl;
-
-        volScalarField& dmdt(*this->dmdt_[pair]);
-
-        volScalarField H1(this->heatTransferModels_[pair][pair.first()]->K());
-        volScalarField H2(this->heatTransferModels_[pair][pair.second()]->K());
-
-        const volScalarField& T1(phase1.thermo().T());
-        const volScalarField& T2(phase2.thermo().T());
-
-        const volScalarField& he1(phase1.thermo().he());
-        const volScalarField& he2(phase2.thermo().he());
-
-        volScalarField hef2(phase2.thermo().he(phase2.thermo().p(), Tf));
-        volScalarField hef1(phase1.thermo().he(phase1.thermo().p(), Tf));
-
-        dmdt =
-            (H2*(Tf - T1) + H1*(Tf - T2))
-           /min
-            (
-                (pos(dmdt)*he2 + neg(dmdt)*hef2)
-              - (neg(dmdt)*he1 + pos(dmdt)*hef1),
-                0.3*(hef1 - hef2)
-            );
-    }
-}
-
-
-template<class BasePhaseSystem>
-bool Foam::ThermalPhaseChangePhaseSystem<BasePhaseSystem>::read()
-{
-    if (BasePhaseSystem::read())
-    {
-        bool readOK = true;
-
-        // Models ...
-
-        return readOK;
-    }
-    else
-    {
-        return false;
-    }
-}
-
-
-// ************************************************************************* //
diff --git a/applications/solvers/multiphase/twoLiquidMixingFoam/alphaEqn.H b/applications/solvers/multiphase/twoLiquidMixingFoam/alphaEqn.H
index bd106468716eab150b0ee1661c40687d4d80f7b9..5344fb75f29a9de76c3cac6e3af945270575bd56 100644
--- a/applications/solvers/multiphase/twoLiquidMixingFoam/alphaEqn.H
+++ b/applications/solvers/multiphase/twoLiquidMixingFoam/alphaEqn.H
@@ -1,7 +1,7 @@
 {
     word alphaScheme("div(phi,alpha)");
 
-    surfaceScalarField phiAlpha
+    surfaceScalarField alphaPhi
     (
         phi.name() + alpha1.name(),
         fvc::flux
@@ -12,9 +12,9 @@
         )
     );
 
-    MULES::explicitSolve(alpha1, phi, phiAlpha, 1, 0);
+    MULES::explicitSolve(alpha1, phi, alphaPhi, 1, 0);
 
-    rhoPhi = phiAlpha*(rho1 - rho2) + phi*rho2;
+    rhoPhi = alphaPhi*(rho1 - rho2) + phi*rho2;
 
     Info<< "Phase-1 volume fraction = "
         << alpha1.weightedAverage(mesh.Vsc()).value()
diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/Make/options b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/Make/options
index efb6d206ea2210a9bb2ab7adf18c12817c3c6335..1035e5526eb269fe9ec327f8b9b1ab87fa832a97 100644
--- a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/Make/options
+++ b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/Make/options
@@ -4,8 +4,9 @@ EXE_INC = \
     -I$(LIB_SRC)/transportModels/compressible/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
     -I$(LIB_SRC)/transportModels/incompressible/transportModel \
-    -I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \
     -I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude \
+    -I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \
     -I$(LIB_SRC)/TurbulenceModels/phaseCompressible/lnInclude \
     -I$(LIB_SRC)/finiteVolume/lnInclude \
+    -I$(LIB_SRC)/fvOptions/lnInclude \
     -I$(LIB_SRC)/meshTools/lnInclude
diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Gidaspow/GidaspowConductivity.C b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Gidaspow/GidaspowConductivity.C
index 63e84966bb1c744f216fe8f0dba204d0818659ac..6ef7f1ec83eb6f2089d72ee0a2f53f69f0383d44 100644
--- a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Gidaspow/GidaspowConductivity.C
+++ b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Gidaspow/GidaspowConductivity.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Gidaspow/GidaspowConductivity.H b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Gidaspow/GidaspowConductivity.H
index 714282dbb8b7a806c9da11a406fe421831d45c93..f8987ce13d94b73458273a9ac7b97221bfe7ad4a 100644
--- a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Gidaspow/GidaspowConductivity.H
+++ b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Gidaspow/GidaspowConductivity.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Syamlal/SyamlalConductivity.C b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Syamlal/SyamlalConductivity.C
index 3732c57ecd42d307cb18867f73aa58a8064e3a79..2bd6c25f79bd3944539b4c2ceeb702cca2a6c350 100644
--- a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Syamlal/SyamlalConductivity.C
+++ b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Syamlal/SyamlalConductivity.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Syamlal/SyamlalConductivity.H b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Syamlal/SyamlalConductivity.H
index bb47cf66948a28fe98f4cc05f2e486c8410d0b6d..dbc6b8f60a6d1fa23e70cd1f022ca02876cf3836 100644
--- a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Syamlal/SyamlalConductivity.H
+++ b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Syamlal/SyamlalConductivity.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/conductivityModel/conductivityModel.C b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/conductivityModel/conductivityModel.C
index 3db83f67b697ada6a2639e4f0baeea3a012f6197..4cd6368943dbbfca3fee155784d5268fc47f9de2 100644
--- a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/conductivityModel/conductivityModel.C
+++ b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/conductivityModel/conductivityModel.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/conductivityModel/conductivityModel.H b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/conductivityModel/conductivityModel.H
index 19f13ca9a615dd2eef36436fc34b5913268d491d..6e44f6457a0ac9280d06333b7ecc1dc67ed1a16f 100644
--- a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/conductivityModel/conductivityModel.H
+++ b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/conductivityModel/conductivityModel.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/conductivityModel/newConductivityModel.C b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/conductivityModel/newConductivityModel.C
index 4f86a8d206d0eeb1d26377bc5c2b471d026fb306..a878a0977319a96c1bc0ca2311da364045fec4be 100644
--- a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/conductivityModel/newConductivityModel.C
+++ b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/conductivityModel/newConductivityModel.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleSlip/JohnsonJacksonParticleSlipFvPatchVectorField.C b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleSlip/JohnsonJacksonParticleSlipFvPatchVectorField.C
index 78b6ab7e7035fb73a279b36dda83e78968b115d4..ea28dd01b512d30195d0e43bb8178ed5185dc5fd 100644
--- a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleSlip/JohnsonJacksonParticleSlipFvPatchVectorField.C
+++ b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleSlip/JohnsonJacksonParticleSlipFvPatchVectorField.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2014 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleSlip/JohnsonJacksonParticleSlipFvPatchVectorField.H b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleSlip/JohnsonJacksonParticleSlipFvPatchVectorField.H
index b125ba0211355776b5419b556d3cc0e4826bbeee..1aaa801f0f8cebc7184b5b70f622aaf826ad26c3 100644
--- a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleSlip/JohnsonJacksonParticleSlipFvPatchVectorField.H
+++ b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleSlip/JohnsonJacksonParticleSlipFvPatchVectorField.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2014 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleTheta/JohnsonJacksonParticleThetaFvPatchScalarField.C b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleTheta/JohnsonJacksonParticleThetaFvPatchScalarField.C
index 1bea51998207d4274a8412c6ccfb1c7868604b63..93d97c650c77b3fecdfe929c3a975d87124661ac 100644
--- a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleTheta/JohnsonJacksonParticleThetaFvPatchScalarField.C
+++ b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleTheta/JohnsonJacksonParticleThetaFvPatchScalarField.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2014 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleTheta/JohnsonJacksonParticleThetaFvPatchScalarField.H b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleTheta/JohnsonJacksonParticleThetaFvPatchScalarField.H
index 586a3b4e512b3e69248e1f2de366ee30121d7736..5391e8c27d66326296b8fe3b2dda69cba9987dac 100644
--- a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleTheta/JohnsonJacksonParticleThetaFvPatchScalarField.H
+++ b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleTheta/JohnsonJacksonParticleThetaFvPatchScalarField.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2014 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/JohnsonJackson/JohnsonJacksonFrictionalStress.C b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/JohnsonJackson/JohnsonJacksonFrictionalStress.C
index 2180c0bd2e2ddd50d582cb6ae5759a71bb96f850..ab5fb531ea5daa3bf81bcc7ff283b4bdaa9c4a9f 100644
--- a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/JohnsonJackson/JohnsonJacksonFrictionalStress.C
+++ b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/JohnsonJackson/JohnsonJacksonFrictionalStress.C
@@ -115,6 +115,7 @@ Foam::tmp<Foam::volScalarField>
 Foam::kineticTheoryModels::frictionalStressModels::JohnsonJackson::nu
 (
     const volScalarField& alpha1,
+    const dimensionedScalar& alphaMinFriction,
     const dimensionedScalar& alphaMax,
     const volScalarField& pf,
     const volSymmTensorField& D
diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/JohnsonJackson/JohnsonJacksonFrictionalStress.H b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/JohnsonJackson/JohnsonJacksonFrictionalStress.H
index cc5a9dc5ea143e13dc480c137b7d403f5d35b59c..1fe92e7d0ea972fbaa7943ca7586d5ee30dba32d 100644
--- a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/JohnsonJackson/JohnsonJacksonFrictionalStress.H
+++ b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/JohnsonJackson/JohnsonJacksonFrictionalStress.H
@@ -108,6 +108,7 @@ public:
         virtual tmp<volScalarField> nu
         (
             const volScalarField& alpha1,
+            const dimensionedScalar& alphaMinFriction,
             const dimensionedScalar& alphaMax,
             const volScalarField& pf,
             const volSymmTensorField& D
diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/Schaeffer/SchaefferFrictionalStress.C b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/Schaeffer/SchaefferFrictionalStress.C
index 55e7b9f2cd2ec8071b1fedd3f1e6324bf7b9aea7..4a0d2290d13c91fa9b755a82119190e730241f56 100644
--- a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/Schaeffer/SchaefferFrictionalStress.C
+++ b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/Schaeffer/SchaefferFrictionalStress.C
@@ -104,6 +104,7 @@ Foam::tmp<Foam::volScalarField>
 Foam::kineticTheoryModels::frictionalStressModels::Schaeffer::nu
 (
     const volScalarField& alpha1,
+    const dimensionedScalar& alphaMinFriction,
     const dimensionedScalar& alphaMax,
     const volScalarField& pf,
     const volSymmTensorField& D
@@ -133,9 +134,9 @@ Foam::kineticTheoryModels::frictionalStressModels::Schaeffer::nu
 
     volScalarField& nuf = tnu();
 
-    forAll (D, celli)
+    forAll(D, celli)
     {
-        if (alpha1[celli] > alphaMax.value() - 5e-2)
+        if (alpha1[celli] > alphaMinFriction.value())
         {
             nuf[celli] =
                 0.5*pf[celli]*sin(phi_.value())
diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/Schaeffer/SchaefferFrictionalStress.H b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/Schaeffer/SchaefferFrictionalStress.H
index 3f56759e2ad7fc2641a044365f84a94432ca9594..d4a304eb40c1a1444ae5c2ecdc428de44dcd5471 100644
--- a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/Schaeffer/SchaefferFrictionalStress.H
+++ b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/Schaeffer/SchaefferFrictionalStress.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -96,6 +96,7 @@ public:
         virtual tmp<volScalarField> nu
         (
             const volScalarField& alpha1,
+            const dimensionedScalar& alphaMinFriction,
             const dimensionedScalar& alphaMax,
             const volScalarField& pf,
             const volSymmTensorField& D
diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/frictionalStressModel/frictionalStressModel.C b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/frictionalStressModel/frictionalStressModel.C
index f1e899e85441e11cd1688d5272535c1e90630d40..3a764313a7bb6e2b3c8ca37795c5cd7a97795ab0 100644
--- a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/frictionalStressModel/frictionalStressModel.C
+++ b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/frictionalStressModel/frictionalStressModel.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/frictionalStressModel/frictionalStressModel.H b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/frictionalStressModel/frictionalStressModel.H
index 28dc1ab1f081f6bb6fb4e4a078b790c5618210f9..923a1fce3f71a273916c41946b48c3b3dff1b3b5 100644
--- a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/frictionalStressModel/frictionalStressModel.H
+++ b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/frictionalStressModel/frictionalStressModel.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -122,6 +122,7 @@ public:
         virtual tmp<volScalarField> nu
         (
             const volScalarField& alpha1,
+            const dimensionedScalar& alphaMinFriction,
             const dimensionedScalar& alphaMax,
             const volScalarField& pf,
             const volSymmTensorField& D
diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/frictionalStressModel/newFrictionalStressModel.C b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/frictionalStressModel/newFrictionalStressModel.C
index 96e15ed4a690d2f37109dc940d3f9d558376141c..db6102174a24a098fa7087969f67acbca719369b 100644
--- a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/frictionalStressModel/newFrictionalStressModel.C
+++ b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/frictionalStressModel/newFrictionalStressModel.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/Lun/LunPressure.C b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/Lun/LunPressure.C
index 248d8b1fec546923e48de369aa8d92131ace5b9a..3a94ea5734777e8ce390f52691a59da466f39fef 100644
--- a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/Lun/LunPressure.C
+++ b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/Lun/LunPressure.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/Lun/LunPressure.H b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/Lun/LunPressure.H
index 8585d00174f02757ae9b0b0bb7f9cde696c39651..d82ba47d5b375e2ebda2b0cc6580929c2003d9e3 100644
--- a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/Lun/LunPressure.H
+++ b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/Lun/LunPressure.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/SyamlalRogersOBrien/SyamlalRogersOBrienPressure.C b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/SyamlalRogersOBrien/SyamlalRogersOBrienPressure.C
index 892a690a6ac06c41052f98b3b1facbb7d997c4a8..8e45c45e21ba66c165c7b014d811b6bc13f4727d 100644
--- a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/SyamlalRogersOBrien/SyamlalRogersOBrienPressure.C
+++ b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/SyamlalRogersOBrien/SyamlalRogersOBrienPressure.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/SyamlalRogersOBrien/SyamlalRogersOBrienPressure.H b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/SyamlalRogersOBrien/SyamlalRogersOBrienPressure.H
index 8b4223f1ce8c1309e829f143698bfc776297acd3..3f420538f1fafcd5ee0ce4996989de8cae59339a 100644
--- a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/SyamlalRogersOBrien/SyamlalRogersOBrienPressure.H
+++ b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/SyamlalRogersOBrien/SyamlalRogersOBrienPressure.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/granularPressureModel/granularPressureModel.C b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/granularPressureModel/granularPressureModel.C
index 6f3c915fb4a742d9b549d57a9516eb3a47c678f1..3a2214e9e63cdfd385f92ce3db441b2443ea4a68 100644
--- a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/granularPressureModel/granularPressureModel.C
+++ b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/granularPressureModel/granularPressureModel.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/granularPressureModel/granularPressureModel.H b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/granularPressureModel/granularPressureModel.H
index b22ae2677100cb22a3c1a112630182d3227acf10..06160f6c0ac834330d49642d07e247b178ffcca1 100644
--- a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/granularPressureModel/granularPressureModel.H
+++ b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/granularPressureModel/granularPressureModel.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/granularPressureModel/newGranularPressureModel.C b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/granularPressureModel/newGranularPressureModel.C
index deaf6fc676f5241608faee764fe44212504554b7..36b2c2b175ec15007558a51bea19fec6960175de 100644
--- a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/granularPressureModel/newGranularPressureModel.C
+++ b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/granularPressureModel/newGranularPressureModel.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.C b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.C
index 30254f3891b6811927aa84e5bc0a8b51b81662ae..bbf37904ca83743a749d6936ce5d54ad4229295b 100644
--- a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.C
+++ b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.C
@@ -41,7 +41,13 @@ Foam::RASModels::kineticTheoryModel::kineticTheoryModel
     const word& type
 )
 :
-    eddyViscosity<RASModel<PhaseCompressibleTurbulenceModel<phaseModel> > >
+    eddyViscosity
+    <
+        RASModel<EddyDiffusivity<ThermalDiffusivity
+        <
+            PhaseCompressibleTurbulenceModel<phaseModel>
+        > > >
+    >
     (
         type,
         alpha,
@@ -183,7 +189,10 @@ bool Foam::RASModels::kineticTheoryModel::read()
     (
         eddyViscosity
         <
-            RASModel<PhaseCompressibleTurbulenceModel<phaseModel> >
+            RASModel<EddyDiffusivity<ThermalDiffusivity
+            <
+                PhaseCompressibleTurbulenceModel<phaseModel>
+            > > >
         >::read()
     )
     {
@@ -339,7 +348,8 @@ void Foam::RASModels::kineticTheoryModel::correct()
     const volScalarField& rho = phase_.rho();
     const surfaceScalarField& alphaRhoPhi = alphaRhoPhi_;
     const volVectorField& U = U_;
-    const volVectorField& Uc_ = phase_.fluid().otherPhase(phase_).U();
+    const volVectorField& Uc_ =
+        refCast<const twoPhaseSystem>(phase_.fluid()).otherPhase(phase_).U();
 
     const scalar sqrtPi = sqrt(constant::mathematical::pi);
     dimensionedScalar ThetaSmall("ThetaSmall", Theta_.dimensions(), 1.0e-6);
@@ -381,7 +391,10 @@ void Foam::RASModels::kineticTheoryModel::correct()
         );
 
         // Drag
-        volScalarField beta(phase_.fluid().drag(phase_).K());
+        volScalarField beta
+        (
+            refCast<const twoPhaseSystem>(phase_.fluid()).drag(phase_).K()
+        );
 
         // Eq. 3.25, p. 50 Js = J1 - J2
         volScalarField J1("J1", 3.0*beta);
@@ -515,6 +528,7 @@ void Foam::RASModels::kineticTheoryModel::correct()
         nut_ += frictionalStressModel_->nu
         (
             alpha,
+            alphaMinFriction_,
             alphaMax_,
             pf/rho,
             D
diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.H b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.H
index b631143d40206100ba99151f322268b7e3d39cb0..9aadb83d12738a7f3fb91b54cff381d5772ab15a 100644
--- a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.H
+++ b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -48,6 +48,8 @@ SourceFiles
 #include "RASModel.H"
 #include "eddyViscosity.H"
 #include "PhaseCompressibleTurbulenceModel.H"
+#include "ThermalDiffusivity.H"
+#include "EddyDiffusivity.H"
 #include "phaseModel.H"
 #include "dragModel.H"
 #include "viscosityModel.H"
@@ -72,7 +74,10 @@ class kineticTheoryModel
 :
     public eddyViscosity
     <
-        RASModel<PhaseCompressibleTurbulenceModel<phaseModel> >
+        RASModel<EddyDiffusivity<ThermalDiffusivity
+        <
+            PhaseCompressibleTurbulenceModel<phaseModel>
+        > > >
     >
 {
     // Private data
diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/CarnahanStarling/CarnahanStarlingRadial.C b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/CarnahanStarling/CarnahanStarlingRadial.C
index 8ea724a20bd39529d17d1da74112a4be1da89225..abc364979c56c56473fc76421dae0ce5d265fddb 100644
--- a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/CarnahanStarling/CarnahanStarlingRadial.C
+++ b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/CarnahanStarling/CarnahanStarlingRadial.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/CarnahanStarling/CarnahanStarlingRadial.H b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/CarnahanStarling/CarnahanStarlingRadial.H
index 528a3b366e8c168774d7b8ddff44c1fd6d158c77..a4082d5326c1d2bf81929dca9383b3919e65f977 100644
--- a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/CarnahanStarling/CarnahanStarlingRadial.H
+++ b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/CarnahanStarling/CarnahanStarlingRadial.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/LunSavage/LunSavageRadial.C b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/LunSavage/LunSavageRadial.C
index a362a48841a305cefde919b3669490aa30c16097..df931c8752866b2f0d08536e412af2034963f90a 100644
--- a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/LunSavage/LunSavageRadial.C
+++ b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/LunSavage/LunSavageRadial.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/LunSavage/LunSavageRadial.H b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/LunSavage/LunSavageRadial.H
index a20682422c164c7bb1e0529847482b6d869c1d03..17cd8e5907bee083fcef6cf249a2151d5f309239 100644
--- a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/LunSavage/LunSavageRadial.H
+++ b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/LunSavage/LunSavageRadial.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/SinclairJackson/SinclairJacksonRadial.C b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/SinclairJackson/SinclairJacksonRadial.C
index 36971079174a52403594c8575839a32b114f5c9c..bc74ce177a7babce2484a87a8eb59616feaa6b4d 100644
--- a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/SinclairJackson/SinclairJacksonRadial.C
+++ b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/SinclairJackson/SinclairJacksonRadial.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/SinclairJackson/SinclairJacksonRadial.H b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/SinclairJackson/SinclairJacksonRadial.H
index 9e5abcbb8f1a0fbbff9810d78d1faa929674edd1..37545343a9c99f8eb4613def6e075e45c6a276be 100644
--- a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/SinclairJackson/SinclairJacksonRadial.H
+++ b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/SinclairJackson/SinclairJacksonRadial.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/radialModel/newRadialModel.C b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/radialModel/newRadialModel.C
index 18b8eed813746abe6f9f34b507c40bab01fb1c3e..65f6c9ebb83c109055334cd0184beaa751fc143c 100644
--- a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/radialModel/newRadialModel.C
+++ b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/radialModel/newRadialModel.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/radialModel/radialModel.C b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/radialModel/radialModel.C
index e8763a01b1eb212919e959317a633feab8e904fb..821e9e6ec72973d10d2663908d69321bb6e8f71b 100644
--- a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/radialModel/radialModel.C
+++ b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/radialModel/radialModel.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/radialModel/radialModel.H b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/radialModel/radialModel.H
index 1d225e3bb7181aac36a5deabd2bd10de8bddc2b2..de73a227474e37d1a414459b0c74ed1b7eaf823d 100644
--- a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/radialModel/radialModel.H
+++ b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/radialModel/radialModel.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Gidaspow/GidaspowViscosity.C b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Gidaspow/GidaspowViscosity.C
index ebe4e6ddd8b2f6a1855160840b3f9f038e2275c9..98cf0c90efb92ad4e956cb3295b75239e8d74436 100644
--- a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Gidaspow/GidaspowViscosity.C
+++ b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Gidaspow/GidaspowViscosity.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Gidaspow/GidaspowViscosity.H b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Gidaspow/GidaspowViscosity.H
index 96a65bb7993f37989fc4f768aabdd8458d11b6ae..e309ed988a1a0a8523b0cde1ee695e7b94eb0c7e 100644
--- a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Gidaspow/GidaspowViscosity.H
+++ b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Gidaspow/GidaspowViscosity.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/HrenyaSinclair/HrenyaSinclairViscosity.H b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/HrenyaSinclair/HrenyaSinclairViscosity.H
index a47163e063ea2e9dc36205b860ba8cfc3c7f4d8f..0a280ba3699a8923b34ce258253fd07ad059f11e 100644
--- a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/HrenyaSinclair/HrenyaSinclairViscosity.H
+++ b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/HrenyaSinclair/HrenyaSinclairViscosity.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Syamlal/SyamlalViscosity.C b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Syamlal/SyamlalViscosity.C
index 1eab21fc109fea67b59b42396df8eb01bb69ff6f..215d3608164e50552e7c3c1e759b48882ede0694 100644
--- a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Syamlal/SyamlalViscosity.C
+++ b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Syamlal/SyamlalViscosity.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Syamlal/SyamlalViscosity.H b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Syamlal/SyamlalViscosity.H
index 979e0391497af6935ff93d8982be2f1cb926833c..844bf21b0da66edaff1bf8914fbdad89ca322273 100644
--- a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Syamlal/SyamlalViscosity.H
+++ b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Syamlal/SyamlalViscosity.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/none/noneViscosity.C b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/none/noneViscosity.C
index 843386cac768bc6165168abab7ca771086e482c3..4b3c97d69a4274f15b29c2465c7b02826d1cf033 100644
--- a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/none/noneViscosity.C
+++ b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/none/noneViscosity.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/none/noneViscosity.H b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/none/noneViscosity.H
index 565dd45fc8712c5333c57af3b8f37b52c6d82d93..f5d74f0e96561578219bcb6070134547fc1bba57 100644
--- a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/none/noneViscosity.H
+++ b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/none/noneViscosity.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/viscosityModel/newViscosityModel.C b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/viscosityModel/newViscosityModel.C
index c0222ff4df3b5e3abefe8a86356b2e35b3f02756..e79cbde0c17848e9969143745a3aebb51457b7e3 100644
--- a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/viscosityModel/newViscosityModel.C
+++ b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/viscosityModel/newViscosityModel.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/viscosityModel/viscosityModel.C b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/viscosityModel/viscosityModel.C
index d7aa5efb91a9bb295cf21f5c8ab4b5d290a8c645..dae23e2b31023febb26d6d143c178d8bd0aa7d8c 100644
--- a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/viscosityModel/viscosityModel.C
+++ b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/viscosityModel/viscosityModel.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/viscosityModel/viscosityModel.H b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/viscosityModel/viscosityModel.H
index 045c7f49866a43e46ecc1bfc7509d1e35794c43d..e0bc93cc79617a8cdf01a12b4de3ba7c57d222e9 100644
--- a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/viscosityModel/viscosityModel.H
+++ b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/viscosityModel/viscosityModel.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/phaseCompressibleTurbulenceModels.C b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/phaseCompressibleTurbulenceModels.C
index d7e35e96cb0c619fcc3b6e786746d03f786a4357..eb0a07004439a5b028680abf4fd024e99cb1ebe0 100644
--- a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/phaseCompressibleTurbulenceModels.C
+++ b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/phaseCompressibleTurbulenceModels.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2014 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -29,6 +29,9 @@ License
 #include "addToRunTimeSelectionTable.H"
 #include "makeTurbulenceModel.H"
 
+#include "ThermalDiffusivity.H"
+#include "EddyDiffusivity.H"
+
 #include "laminar.H"
 #include "RASModel.H"
 #include "LESModel.H"
@@ -39,6 +42,7 @@ makeBaseTurbulenceModel
     volScalarField,
     compressibleTurbulenceModel,
     PhaseCompressibleTurbulenceModel,
+    ThermalDiffusivity,
     phaseModel
 );
 
diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/phasePressureModel/phasePressureModel.C b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/phasePressureModel/phasePressureModel.C
index 8cca6f493f098cf93b841a128ff96286df2dbb46..adb23d40d2c63d264adb8d5ac2aa2cb501d04474 100644
--- a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/phasePressureModel/phasePressureModel.C
+++ b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/phasePressureModel/phasePressureModel.C
@@ -40,7 +40,13 @@ Foam::RASModels::phasePressureModel::phasePressureModel
     const word& type
 )
 :
-    eddyViscosity<RASModel<PhaseCompressibleTurbulenceModel<phaseModel> > >
+    eddyViscosity
+    <
+        RASModel<EddyDiffusivity<ThermalDiffusivity
+        <
+            PhaseCompressibleTurbulenceModel<phaseModel>
+        > > >
+    >
     (
         type,
         alpha,
@@ -87,7 +93,10 @@ bool Foam::RASModels::phasePressureModel::read()
     (
         eddyViscosity
         <
-            RASModel<PhaseCompressibleTurbulenceModel<phaseModel> >
+            RASModel<EddyDiffusivity<ThermalDiffusivity
+            <
+                PhaseCompressibleTurbulenceModel<phaseModel>
+            > > >
         >::read()
     )
     {
diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/phasePressureModel/phasePressureModel.H b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/phasePressureModel/phasePressureModel.H
index f44f77a46011ad916f3356920171416d8a51924b..68734e5b4f792e2f80ff503a6fc2b2d819e05a6e 100644
--- a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/phasePressureModel/phasePressureModel.H
+++ b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseCompressibleTurbulenceModels/phasePressureModel/phasePressureModel.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2013-2014 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2013-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -54,6 +54,8 @@ SourceFiles
 #include "RASModel.H"
 #include "eddyViscosity.H"
 #include "PhaseCompressibleTurbulenceModel.H"
+#include "ThermalDiffusivity.H"
+#include "EddyDiffusivity.H"
 #include "phaseModel.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -71,7 +73,10 @@ class phasePressureModel
 :
     public eddyViscosity
     <
-        RASModel<PhaseCompressibleTurbulenceModel<phaseModel> >
+        RASModel<EddyDiffusivity<ThermalDiffusivity
+        <
+            PhaseCompressibleTurbulenceModel<phaseModel>
+        > > >
     >
 {
     // Private data
diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/twoPhaseSystem/phaseModel/phaseModel.H b/applications/solvers/multiphase/twoPhaseEulerFoam/twoPhaseSystem/phaseModel/phaseModel.H
index 3550c3da9859d85b278ab5a097e5a31d7d9f6759..3f91a8bd255057f0b7596f450e4b0bb4da82aca4 100644
--- a/applications/solvers/multiphase/twoPhaseEulerFoam/twoPhaseSystem/phaseModel/phaseModel.H
+++ b/applications/solvers/multiphase/twoPhaseEulerFoam/twoPhaseSystem/phaseModel/phaseModel.H
@@ -196,12 +196,68 @@ public:
             return thermo_->mu(patchi);
         }
 
+        //- Return the thermal conductivity on a patch
+        tmp<scalarField> kappa(const label patchi) const
+        {
+            return thermo_->kappa(patchi);
+        }
+
         //- Return the thermal conductivity
         tmp<volScalarField> kappa() const
         {
             return thermo_->kappa();
         }
 
+        //- Return the laminar thermal conductivity
+        tmp<volScalarField> kappaEff
+        (
+            const volScalarField& alphat
+        ) const
+        {
+            return thermo_->kappaEff(alphat);
+        }
+
+        //- Return the laminar thermal conductivity on a patch
+        tmp<scalarField> kappaEff
+        (
+            const scalarField& alphat,
+            const label patchi
+        ) const
+        {
+            return thermo_->kappaEff(alphat, patchi);
+        }
+
+        //- Return the laminar thermal diffusivity for enthalpy
+        tmp<volScalarField> alpha() const
+        {
+            return thermo_->alpha();
+        }
+
+        //- Return the laminar thermal diffusivity for enthalpy on a patch
+        tmp<scalarField> alpha(const label patchi) const
+        {
+            return thermo_->alpha(patchi);
+        }
+
+        //- Return the effective thermal diffusivity for enthalpy
+        tmp<volScalarField> alphaEff
+        (
+            const volScalarField& alphat
+        ) const
+        {
+            return thermo_->alphaEff(alphat);
+        }
+
+        //- Return the effective thermal diffusivity for enthalpy on a patch
+        tmp<scalarField> alphaEff
+        (
+            const scalarField& alphat,
+            const label patchi
+        ) const
+        {
+            return thermo_->alphaEff(alphat, patchi);
+        }
+
         //- Return the specific heat capacity
         tmp<volScalarField> Cp() const
         {
diff --git a/applications/test/PtrListDictionary/Make/files b/applications/test/PtrListDictionary/Make/files
new file mode 100644
index 0000000000000000000000000000000000000000..a3c4c87ba48172776243d8feefd021fdc7d0efc5
--- /dev/null
+++ b/applications/test/PtrListDictionary/Make/files
@@ -0,0 +1,3 @@
+Test-PtrListDictionary.C
+
+EXE = $(FOAM_USER_APPBIN)/Test-PtrListDictionary
diff --git a/applications/test/PtrListDictionary/Make/options b/applications/test/PtrListDictionary/Make/options
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/applications/test/PtrListDictionary/Test-PtrListDictionary.C b/applications/test/PtrListDictionary/Test-PtrListDictionary.C
new file mode 100644
index 0000000000000000000000000000000000000000..33aa3b2792005f9a09259a2606106f3f6119adc3
--- /dev/null
+++ b/applications/test/PtrListDictionary/Test-PtrListDictionary.C
@@ -0,0 +1,123 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Application
+
+Description
+
+\*---------------------------------------------------------------------------*/
+
+#include "OSspecific.H"
+
+#include "scalar.H"
+
+#include "IOstreams.H"
+#include "PtrListDictionary.H"
+
+using namespace Foam;
+
+class Scalar
+{
+    scalar data_;
+
+public:
+
+    Scalar()
+    :
+        data_(0)
+    {}
+
+    Scalar(scalar val)
+    :
+        data_(val)
+    {}
+
+    ~Scalar()
+    {
+        Info<<"delete Scalar: " << data_ << endl;
+    }
+
+    friend Ostream& operator<<(Ostream& os, const Scalar& val)
+    {
+        os  << val.data_;
+        return os;
+    }
+};
+
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+//  Main program:
+
+int main(int argc, char *argv[])
+{
+    PtrListDictionary<Scalar> scalarDict(10);
+    forAll(scalarDict, i)
+    {
+        word key("ent" + name(i));
+        scalarDict.set(i, key, new Scalar(1.3*i));
+    }
+
+    Info<< nl << "scalarDict1: " << endl;
+    forAll(scalarDict, i)
+    {
+        Info<< "elem " << i << " = " << scalarDict[i] << endl;
+    }
+
+    Scalar* ent8Ptr = scalarDict.lookupPtr("ent8");
+
+    Info<< "ent8 = " << *ent8Ptr << endl;
+
+    PtrListDictionary<Scalar> scalarDict2(15);
+    forAll(scalarDict2, i)
+    {
+        word key("ent" + name(i));
+        scalarDict2.set(i, key, new Scalar(1.3*i));
+    }
+    Info<< nl << "scalarDict2: " << endl;
+    forAll(scalarDict2, i)
+    {
+        Info<< "elem " << i << " = " << scalarDict2[i] << endl;
+    }
+
+    scalarDict.transfer(scalarDict2);
+
+    Scalar* p = scalarDict.lookupPtr("ent8");
+
+    if (p)
+    {
+        Info<< "found: " << *p << endl;
+    }
+    else
+    {
+        Info<< "no p: " << endl;
+    }
+
+    scalarDict.clear();
+
+    Info<< nl << "Done." << endl;
+    return 0;
+}
+
+
+// ************************************************************************* //
diff --git a/applications/utilities/mesh/conversion/fluent3DMeshToFoam/fluent3DMeshToFoam.L b/applications/utilities/mesh/conversion/fluent3DMeshToFoam/fluent3DMeshToFoam.L
index bf1bee143f04391fc36a4707f3d2055563852c49..830fecbb2338ebc29baaf8fe61a8da77173b5d63 100644
--- a/applications/utilities/mesh/conversion/fluent3DMeshToFoam/fluent3DMeshToFoam.L
+++ b/applications/utilities/mesh/conversion/fluent3DMeshToFoam/fluent3DMeshToFoam.L
@@ -137,7 +137,6 @@ int yyFlexLexer::yywrap()
 one_space                  [ \t\f]
 space                      {one_space}*
 some_space                 {one_space}+
-cspace                     ","{space}
 
 alpha                      [_[:alpha:]]
 digit                      [[:digit:]]
@@ -150,6 +149,7 @@ rbrac                      ")"
 quote                      \"
 dash                       "-"
 dotColonDash               [.:-]
+commaPipe                  [,\|]
 
 schemeSpecialInitial       [!$%&*/\\:<=>?~_^#.@']
 schemeSpecialSubsequent    [.+-]
@@ -164,6 +164,7 @@ zeroLabel                  {digit}*
 signedInteger              [-+]?{integer}
 word                       ({alpha}|{digit}|{dotColonDash})*
 wordBraces                 ({word}|{lbrac}|{rbrac})*
+wordBracesExtras           ({word}|{lbrac}|{rbrac}|{commaPipe})*
 
 exponent_part              [eE][-+]?{digit}+
 fractional_constant        [-+]?(({digit}*"."{digit}+)|({digit}+".")|({digit}))
@@ -186,6 +187,8 @@ schemeSymbolList           ({schemeSymbolListElement}+{space})
 starStar                   ("**")
 text                       ({space}({word}*{space})*)
 textBraces                 ({space}({wordBraces}*{space})*)
+textExtras                 ({space}({word}*{commaPipe}{space})*)
+textBracesExtras           ({space}({wordBracesExtras}*{space})*)
 anythingInBlock            ([^)]*)
 
 dateDDMMYYYY               ({digit}{digit}"/"{digit}{digit}"/"{digit}{digit}{digit}{digit})
@@ -278,7 +281,7 @@ endOfSection               {space}")"{space}
         BEGIN(readHeader);
     }
 
-<readHeader>{quote}{textBraces}{quote} {
+<readHeader>{quote}{textBracesExtras}{quote} {
         Info<< "Reading header: " << YYText() << endl;
     }
 
@@ -727,6 +730,8 @@ endOfSection               {space}")"{space}
 <ignoreBlock,ignoreEmbeddedBlock>{space}{text} {
     }
 
+<ignoreBlock,ignoreEmbeddedBlock>{space}{textExtras} {
+    }
 
  /* ------              Count newlines.                              ------  */
 
diff --git a/applications/utilities/mesh/manipulation/checkMesh/checkGeometry.C b/applications/utilities/mesh/manipulation/checkMesh/checkGeometry.C
index 8677f08c65919bdaebb8fb16de3cc1ab4da3c20b..987e26d2e3dc7cb365d6ac35b74b679d827ac715 100644
--- a/applications/utilities/mesh/manipulation/checkMesh/checkGeometry.C
+++ b/applications/utilities/mesh/manipulation/checkMesh/checkGeometry.C
@@ -136,7 +136,7 @@ bool Foam::checkWedges
                 const point& pt = p[pp.meshPoints()[i]];
                 scalar d = mag((pt - p0) & pp.n());
 
-                if (d > sqrt(SMALL))
+                if (d > ROOTSMALL)
                 {
                     if (report)
                     {
diff --git a/applications/utilities/mesh/manipulation/stitchMesh/stitchMesh.C b/applications/utilities/mesh/manipulation/stitchMesh/stitchMesh.C
index c8cba9f2b2c1178a76099de5041744a097c8bcc5..8e64c28a38107006fb07d76cfb4b3e094b3b937b 100644
--- a/applications/utilities/mesh/manipulation/stitchMesh/stitchMesh.C
+++ b/applications/utilities/mesh/manipulation/stitchMesh/stitchMesh.C
@@ -198,8 +198,10 @@ int main(int argc, char *argv[])
 {
     argList::addNote
     (
-        "merge the faces on the specified patches (if geometrically possible)\n"
-        "so the faces become internal"
+        "Merge the faces on the specified patches (if geometrically possible)\n"
+        "so the faces become internal.\n"
+        "Integral matching is used when the options -partial and -perfect are "
+        "omitted.\n"
     );
 
     argList::noParallel();
@@ -212,12 +214,12 @@ int main(int argc, char *argv[])
     argList::addBoolOption
     (
         "partial",
-        "couple partially overlapping patches"
+        "couple partially overlapping patches (optional)"
     );
     argList::addBoolOption
     (
         "perfect",
-        "couple perfectly aligned patches"
+        "couple perfectly aligned patches (optional)"
     );
     argList::addOption
     (
diff --git a/applications/utilities/mesh/manipulation/stitchMesh/toleranceDict b/applications/utilities/mesh/manipulation/stitchMesh/toleranceDict
new file mode 100644
index 0000000000000000000000000000000000000000..a5e7a3297f80f993c72855abe86b6c33ca80013d
--- /dev/null
+++ b/applications/utilities/mesh/manipulation/stitchMesh/toleranceDict
@@ -0,0 +1,45 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      toleranceDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+// For complete details on what this dictionary file should provide, see
+//   $FOAM_SRC/src/dynamicMesh/slidingInterface/slidingInterface.C
+//   method: Foam::slidingInterface::setTolerances
+
+//- Point merge tolerance
+pointMergeTol            0.05;
+
+//- Edge merge tolerance
+edgeMergeTol             0.01;
+
+//- Estimated number of faces an edge goes through
+nFacesPerSlaveEdge       5;
+
+//- Edge-face interaction escape limit
+edgeFaceEscapeLimit      10;
+
+//- Integral match point adjustment tolerance
+integralAdjTol           0.05;
+
+//- Edge intersection master catch fraction
+edgeMasterCatchFraction  0.4;
+
+//- Edge intersection co-planar tolerance
+edgeCoPlanarTol          0.8;
+
+//- Edge end cut-off tolerance
+edgeEndCutoffTol         0.0001;
+
+// ************************************************************************* //
diff --git a/applications/utilities/postProcessing/miscellaneous/ptot/ptot.C b/applications/utilities/postProcessing/miscellaneous/ptot/ptot.C
index 1977bb747619bc9c482be0531b91abd561691e06..41ca2101798370bdb5957412309acb2a9725b529 100644
--- a/applications/utilities/postProcessing/miscellaneous/ptot/ptot.C
+++ b/applications/utilities/postProcessing/miscellaneous/ptot/ptot.C
@@ -36,13 +36,14 @@ Description
 int main(int argc, char *argv[])
 {
     timeSelector::addOptions();
+    #include "addRegionOption.H"
 
     #include "setRootCase.H"
     #include "createTime.H"
 
     instantList timeDirs = timeSelector::select0(runTime, args);
 
-    #include "createMesh.H"
+    #include "createNamedMesh.H"
 
     forAll(timeDirs, timeI)
     {
diff --git a/applications/utilities/postProcessing/miscellaneous/temporalInterpolate/temporalInterpolate.C b/applications/utilities/postProcessing/miscellaneous/temporalInterpolate/temporalInterpolate.C
index 9460c33d48193fa97b3ade1a86a4996c560c3d50..ea8fc4975dc544857a0bacb40a521bb1ca6deb98 100644
--- a/applications/utilities/postProcessing/miscellaneous/temporalInterpolate/temporalInterpolate.C
+++ b/applications/utilities/postProcessing/miscellaneous/temporalInterpolate/temporalInterpolate.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -185,6 +185,7 @@ void fieldInterpolator::interpolate()
 int main(int argc, char *argv[])
 {
     timeSelector::addOptions();
+    #include "addRegionOption.H"
     argList::addOption
     (
         "fields",
@@ -259,7 +260,7 @@ int main(int argc, char *argv[])
     );
 
 
-    #include "createMesh.H"
+    #include "createNamedMesh.H"
 
     Info<< "Interpolating fields for times:" << endl;
 
diff --git a/applications/utilities/postProcessing/noise/noise.C b/applications/utilities/postProcessing/noise/noise.C
index 79a5521510f467a7b72ce5dd7489f35c5513b01d..6b6628f080299ac14c6ad4607c4f0fe7b280616f 100644
--- a/applications/utilities/postProcessing/noise/noise.C
+++ b/applications/utilities/postProcessing/noise/noise.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -42,13 +42,16 @@ Description
     fU          10000;
     graphFormat raw;
 
-    csvFileData
+    pressureData
     {
         fileName        "pressureData"
-        nHeaderLine     1;
-        refColumn       0;
-        componentColumns (1);
-        separator       " ";
+        nHeaderLine         1;          // number of header lines
+        refColumn           0;          // reference column index
+        componentColumns    (1);        // component column indices
+        separator           " ";        // optional (defaults to ",")
+        mergeSeparators     no;         // merge multiple separators
+        outOfBounds         clamp;      // optional out-of-bounds handling
+        interpolationScheme linear;     // optional interpolation scheme
     }
     \endverbatim
 
diff --git a/applications/utilities/postProcessing/scalarField/pPrime2/pPrime2.C b/applications/utilities/postProcessing/scalarField/pPrime2/pPrime2.C
index e217bfd6a5b104248019b42dd105613a2a3a9d0b..7848679a25bac75289980a2776971957e883129d 100644
--- a/applications/utilities/postProcessing/scalarField/pPrime2/pPrime2.C
+++ b/applications/utilities/postProcessing/scalarField/pPrime2/pPrime2.C
@@ -38,13 +38,14 @@ Description
 int main(int argc, char *argv[])
 {
     timeSelector::addOptions();
+    #include "addRegionOption.H"
 
     #include "setRootCase.H"
     #include "createTime.H"
 
     instantList timeDirs = timeSelector::select0(runTime, args);
 
-    #include "createMesh.H"
+    #include "createNamedMesh.H"
 
     runTime.setTime(timeDirs.last(), timeDirs.size()-1);
 
diff --git a/applications/utilities/postProcessing/wall/wallGradU/wallGradU.C b/applications/utilities/postProcessing/wall/wallGradU/wallGradU.C
index 6491f2b1f9f882601a4554a9eb50aa68a4048b84..7d58220a59538401a8de19e89541d84b1cd94efb 100644
--- a/applications/utilities/postProcessing/wall/wallGradU/wallGradU.C
+++ b/applications/utilities/postProcessing/wall/wallGradU/wallGradU.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -37,10 +37,14 @@ Description
 int main(int argc, char *argv[])
 {
     timeSelector::addOptions();
+    #include "addRegionOption.H"
+
     #include "setRootCase.H"
     #include "createTime.H"
+
     instantList timeDirs = timeSelector::select0(runTime, args);
-    #include "createMesh.H"
+
+    #include "createNamedMesh.H"
 
     forAll(timeDirs, timeI)
     {
diff --git a/etc/caseDicts/general/coordinateSystem/cartesianXY b/etc/caseDicts/general/coordinateSystem/cartesianXY
new file mode 100644
index 0000000000000000000000000000000000000000..020366c10f4dc053b9519941284eb22f6efefd41
--- /dev/null
+++ b/etc/caseDicts/general/coordinateSystem/cartesianXY
@@ -0,0 +1,26 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      cartesianXY;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+type      cartesian;
+origin    (0 0 0);
+coordinateRotation
+{
+    type  axesRotation;
+    e1    $x;
+    e2    $y;
+}
+
+//************************************************************************* //
diff --git a/etc/caseDicts/general/coordinateSystem/cartesianXZ b/etc/caseDicts/general/coordinateSystem/cartesianXZ
new file mode 100644
index 0000000000000000000000000000000000000000..e1be4c9dd4905f0d21704aa2579438f915878129
--- /dev/null
+++ b/etc/caseDicts/general/coordinateSystem/cartesianXZ
@@ -0,0 +1,26 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      cartesianXZ;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+type      cartesian;
+origin    (0 0 0);
+coordinateRotation
+{
+    type  axesRotation;
+    e1    $x;
+    e3    $z;
+}
+
+//************************************************************************* //
diff --git a/etc/caseDicts/general/coordinateSystem/cartesianYZ b/etc/caseDicts/general/coordinateSystem/cartesianYZ
new file mode 100644
index 0000000000000000000000000000000000000000..e2def70c3219dcc586e9c99f11175b3585d7c269
--- /dev/null
+++ b/etc/caseDicts/general/coordinateSystem/cartesianYZ
@@ -0,0 +1,26 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      cartesianYZ;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+type      cartesian;
+origin    (0 0 0);
+coordinateRotation
+{
+    type  axesRotation;
+    e2    $y;
+    e3    $z
+}
+
+//************************************************************************* //
diff --git a/etc/caseDicts/general/coordinateSystem/cylindrical b/etc/caseDicts/general/coordinateSystem/cylindrical
new file mode 100644
index 0000000000000000000000000000000000000000..ff5b3559d3c403b57e690bb4c12e7adc1c9122a8
--- /dev/null
+++ b/etc/caseDicts/general/coordinateSystem/cylindrical
@@ -0,0 +1,24 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      cylindrical;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+type      cartesian;
+coordinateRotation
+{
+    type  localAxesRotation;
+    e3    $axis;
+}
+
+//************************************************************************* //
diff --git a/etc/caseDicts/general/fvOptions/porosity/porousZone b/etc/caseDicts/general/fvOptions/porosity/porousZone
new file mode 100644
index 0000000000000000000000000000000000000000..f7ab42ffed34b0e0a193196a833deabe0bde60f9
--- /dev/null
+++ b/etc/caseDicts/general/fvOptions/porosity/porousZone
@@ -0,0 +1,60 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      porousZone;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+porousZone // Change to something more descriptive
+{
+    type           explicitPorositySource;
+    active         true;
+    selectionMode  cellZone;
+    cellZone       <cellZoneName>; // Specify the name of the cellZone
+
+    explicitPorositySourceCoeffs
+    {
+        type           DarcyForchheimer;
+
+        DarcyForchheimerCoeffs
+        {
+            // Negative coeffs are multiplied by largest positive coeff,
+            // taking the magnitude, e.g. for -1000, coeff = |1e7*-1000| = 1e10
+
+            d          [0 -2 0 0 0 0 0] (1e7 -1000 -1000);
+            f          [0 -1 0 0 0 0 0] (0 0 0);
+
+            coordinateSystem // Cartesian coordinates for the cellZone
+            {
+                x          (1 0 0);
+                y          (0 1 0);
+                #includeEtc "caseDicts/general/coordinateSystem/cartesianXY"
+            }
+        }
+
+        fixedCoeffCoeffs
+        {
+            alpha      [0 0 -1 0 0 0 0] (100 -1000 -1000);
+            beta       [0 -1 0 0 0 0 0] (0 0 0);
+            rhoRef     1.205;
+
+            coordinateSystem // Cylindrical coordinates for the cellZone
+            {
+                origin     (0 0 0);
+                axis       (0 0 1);
+                #includeEtc "caseDicts/general/coordinateSystem/cylindrical"
+            }
+        }
+    }
+}
+
+//************************************************************************** //
diff --git a/etc/thermoData/thermoData b/etc/thermoData/thermoData
index 057c9557fcdccd83d8ab091a256237a359185c8e..dddc4e85f752b36e4eb87ecbf9aac31735111819 100644
--- a/etc/thermoData/thermoData
+++ b/etc/thermoData/thermoData
@@ -152,7 +152,7 @@ Pb-
         lowCpCoeffs     ( 2.5 0 0 0 0 17762.3 8.23513 );
     }
 }
-GeCL4
+GeCl4
 {
     specie
     {
@@ -536,7 +536,7 @@ F2O-__FOF-
         lowCpCoeffs     ( 4.64786 0.0100535 -1.79176e-05 1.47983e-08 -4.6499e-12 -25825.4 3.76539 );
     }
 }
-CCL
+CCl
 {
     specie
     {
@@ -552,7 +552,7 @@ CCL
         lowCpCoeffs     ( 3.76699 -0.00149298 9.61147e-06 -1.27138e-08 5.2737e-12 50911.8 5.66471 );
     }
 }
-ALCL+
+AlCl+
 {
     specie
     {
@@ -584,7 +584,7 @@ C20H36O2_EtLinolea
         lowCpCoeffs     ( -1.31454 0.212235 -8.58818e-05 -3.39348e-08 2.87278e-11 -71080.7 58.9753 );
     }
 }
-CL2O__Cl-O-Cl
+Cl2O__Cl-O-Cl
 {
     specie
     {
@@ -616,7 +616,7 @@ C6H8O_3,4DiMeFuran
         lowCpCoeffs     ( 2.41515 0.0320931 4.3306e-05 -8.36935e-08 3.70127e-11 -14574.6 14.9425 );
     }
 }
-NH4CLO4(II)
+NH4ClO4(II)
 {
     specie
     {
@@ -904,7 +904,7 @@ C60
         lowCpCoeffs     ( -33.5791 0.428444 -0.000317123 4.75463e-08 2.76777e-11 304651 148.329 );
     }
 }
-HCL
+HCl
 {
     specie
     {
@@ -1000,7 +1000,7 @@ HNO2_equil__ATcT
         lowCpCoeffs     ( 3.21416 0.00812778 1.65999e-06 -9.52815e-09 4.87131e-12 -10783.1 9.822 );
     }
 }
-FeCL3(L)
+FeCl3(L)
 {
     specie
     {
@@ -1016,7 +1016,7 @@ FeCL3(L)
         lowCpCoeffs     ( 16.1029 0 0 0 0 -48492 -67.1135 );
     }
 }
-C3H2BR2__1,3_Dib
+C3H2Br2__1,3_Dib
 {
     specie
     {
@@ -1048,7 +1048,7 @@ C4H8N8O8_HMX
         lowCpCoeffs     ( 8.14013 0.0833154 2.72628e-05 -9.98161e-08 4.69226e-11 16398.6 -3.22779 );
     }
 }
-SnCL4
+SnCl4
 {
     specie
     {
@@ -1112,7 +1112,7 @@ PS
         lowCpCoeffs     ( 3.4687 0.00449701 -8.42505e-06 7.47111e-09 -2.51772e-12 18049.7 7.36114 );
     }
 }
-BCL3
+BCl3
 {
     specie
     {
@@ -1416,7 +1416,7 @@ C2H4O2_HG(O)OCH3
         lowCpCoeffs     ( 5.96757 -0.00938085 7.07648e-05 -8.29932e-08 3.13523e-11 -44871 0.750341 );
     }
 }
-B3O3CL3
+B3O3Cl3
 {
     specie
     {
@@ -1432,7 +1432,7 @@ B3O3CL3
         lowCpCoeffs     ( 3.59422 0.0505755 -4.66182e-05 1.48922e-08 5.70497e-13 -199700 12.0898 );
     }
 }
-C3CL4_PerClAllene
+C3Cl4_PerClAllene
 {
     specie
     {
@@ -1448,7 +1448,7 @@ C3CL4_PerClAllene
         lowCpCoeffs     ( 2.89989 0.0562603 -9.46435e-05 7.87159e-08 -2.55213e-11 13576.3 15.0009 );
     }
 }
-AL2O3(L)
+Al2O3(L)
 {
     specie
     {
@@ -1592,7 +1592,7 @@ C2Cl3F3_FC-113A
         lowCpCoeffs     ( 2.5428 0.0608765 -8.62331e-05 6.07755e-08 -1.7269e-11 -94117.6 15.9691 );
     }
 }
-C12H9CL
+C12H9Cl
 {
     specie
     {
@@ -1672,7 +1672,7 @@ C8H7_C6H4CH=CH2
         lowCpCoeffs     ( 1.17831 0.0340766 5.85066e-05 -1.10953e-07 4.95223e-11 46141.5 23.6053 );
     }
 }
-MgCLF
+MgClF
 {
     specie
     {
@@ -1992,7 +1992,7 @@ C4H6__1,2-butadi
         lowCpCoeffs     ( 2.90828 0.0179025 2.61487e-05 -4.81599e-08 2.11296e-11 17592.9 12.3118 );
     }
 }
-CuCL
+CuCl
 {
     specie
     {
@@ -2024,7 +2024,7 @@ SO-
         lowCpCoeffs     ( 3.65351 0.00228026 -2.55566e-06 1.37405e-09 -2.7867e-13 -13915.6 5.50813 );
     }
 }
-PbCL2
+PbCl2
 {
     specie
     {
@@ -2168,7 +2168,7 @@ SB(CH3)2
         lowCpCoeffs     ( 4.74742 0.012719 1.70266e-05 -2.86489e-08 1.20242e-11 15230.4 7.86383 );
     }
 }
-BF2CL
+BF2Cl
 {
     specie
     {
@@ -2248,7 +2248,7 @@ C4H6O2_Crotonic_ac
         lowCpCoeffs     ( 3.40323 0.0269846 2.63698e-05 -5.87467e-08 2.69692e-11 -46024.4 13.1928 );
     }
 }
-BOCL
+BOCl
 {
     specie
     {
@@ -2392,7 +2392,7 @@ C5H11,pentyl
         lowCpCoeffs     ( 7.17405 0.00380923 0.00010438 -1.39635e-07 5.60398e-11 2528.72 -1.18869 );
     }
 }
-ALBr2
+AlBr2
 {
     specie
     {
@@ -2472,7 +2472,7 @@ HS2__RRHO
         lowCpCoeffs     ( 2.96324 0.00855502 -1.00388e-05 6.25269e-09 -1.52826e-12 51449.8 11.58 );
     }
 }
-AL
+Al
 {
     specie
     {
@@ -2680,7 +2680,7 @@ PH2-
         lowCpCoeffs     ( 3.95759 -0.000728834 5.13055e-06 -3.73172e-09 8.41295e-13 -2300.28 2.15723 );
     }
 }
-C12H5O3CL4_DOH2
+C12H5O3Cl4_DOH2
 {
     specie
     {
@@ -2728,7 +2728,7 @@ C22H44O2_Behenic
         lowCpCoeffs     ( 25.149 -0.0104152 0.000584232 -7.54109e-07 2.97753e-10 -112513 -54.9776 );
     }
 }
-AL2
+Al2
 {
     specie
     {
@@ -3064,7 +3064,7 @@ HCNO+_Fulminic_cat
         lowCpCoeffs     ( 1.1113 0.0257273 -3.99372e-05 3.18403e-08 -9.91911e-12 145418 15.4371 );
     }
 }
-CH3CL
+CH3Cl
 {
     specie
     {
@@ -3224,7 +3224,7 @@ C8H18(L)_isooctane
         lowCpCoeffs     ( 17.5199 0.0157484 7.35947e-05 -6.10398e-10 4.70619e-13 -37742.3 -68.3211 );
     }
 }
-CBrCL2F___11B1
+CBrCl2F___11B1
 {
     specie
     {
@@ -3464,7 +3464,7 @@ Si+
         lowCpCoeffs     ( 4.23261 -0.00743109 1.31426e-05 -1.07436e-08 3.34175e-12 148410 -2.74005 );
     }
 }
-SiCL4
+SiCl4
 {
     specie
     {
@@ -3512,7 +3512,7 @@ SiO2(b-qz)
         lowCpCoeffs     ( 29.6202 -0.0476273 2.62543e-05 0 0 -122857 -156.169 );
     }
 }
-FeCL2(S)
+FeCl2(S)
 {
     specie
     {
@@ -3624,7 +3624,7 @@ C4H4N2_PYRIMIDINE
         lowCpCoeffs     ( 1.63714 0.0119774 6.83832e-05 -1.0465e-07 4.42186e-11 22212.5 18.6564 );
     }
 }
-C3BR3_Allene_Rad.
+C3Br3_Allene_Rad.
 {
     specie
     {
@@ -3672,7 +3672,7 @@ H2O+
         lowCpCoeffs     ( 4.02466 -0.00108851 5.13577e-06 -4.40028e-09 1.40727e-12 116896 0.699969 );
     }
 }
-Fe2CL6
+Fe2Cl6
 {
     specie
     {
@@ -3720,7 +3720,7 @@ BI2
         lowCpCoeffs     ( 3.3065 0.0158184 -2.88094e-05 2.45287e-08 -7.96353e-12 27157.1 14.9424 );
     }
 }
-C2HCLF_1,1-CLF
+C2HClF_1,1-ClF
 {
     specie
     {
@@ -3752,7 +3752,7 @@ Mg2F4
         lowCpCoeffs     ( 1.51049 0.0696575 -0.000139294 1.2747e-07 -4.37228e-11 -209218 16.3106 );
     }
 }
-C6H2CL3O_RAD
+C6H2Cl3O_RAD
 {
     specie
     {
@@ -3816,7 +3816,7 @@ BiF2
         lowCpCoeffs     ( 3.10494 0.0151822 -2.53454e-05 1.9977e-08 -6.06776e-12 -25510.8 13.5101 );
     }
 }
-ALH3(a)_hexagonal
+AlH3(a)_hexagonal
 {
     specie
     {
@@ -4040,7 +4040,7 @@ C8H12_3,6-Dimeth
         lowCpCoeffs     ( 3.35348 0.0295908 8.59569e-05 -1.33332e-07 5.53072e-11 3491.85 11.6563 );
     }
 }
-CCL2F-CHF2
+CCl2F-CHF2
 {
     specie
     {
@@ -4248,7 +4248,7 @@ Ca+
         lowCpCoeffs     ( 2.5 0 0 0 0 92324.2 5.07768 );
     }
 }
-FeCL2
+FeCl2
 {
     specie
     {
@@ -4280,7 +4280,7 @@ C12H8_Acenaphtyl
         lowCpCoeffs     ( -2.14922 0.0589101 6.42492e-05 -1.41294e-07 6.47477e-11 28938 33.6791 );
     }
 }
-PF3CL2
+PF3Cl2
 {
     specie
     {
@@ -4328,7 +4328,7 @@ O2_singlet
         lowCpCoeffs     ( 3.78535 -0.00321929 1.12323e-05 -1.17254e-08 4.1766e-12 10292.3 3.2732 );
     }
 }
-ALF+
+AlF+
 {
     specie
     {
@@ -4728,7 +4728,7 @@ CO2-
         lowCpCoeffs     ( 2.49677 0.00870769 -4.87281e-06 -4.90572e-10 9.38694e-13 -42687.4 9.97856 );
     }
 }
-PCL3
+PCl3
 {
     specie
     {
@@ -4984,7 +4984,7 @@ F2H-____FHF-
         lowCpCoeffs     ( 3.32548 0.00415755 3.33684e-06 -7.76225e-09 3.38752e-12 -87832.1 7.32348 );
     }
 }
-C6H3CL3O_TriClPhen
+C6H3Cl3O_TriClPhen
 {
     specie
     {
@@ -5608,7 +5608,7 @@ C2H2FCl_1,1-FCl
         lowCpCoeffs     ( 0.912416 0.0311142 -3.24491e-05 1.67416e-08 -3.16508e-12 -21292.1 20.903 );
     }
 }
-AL(L)
+Al(L)
 {
     specie
     {
@@ -5784,7 +5784,7 @@ C3F7_CF3CF*CF3_M
         lowCpCoeffs     ( 3.14242 0.0603443 -6.17598e-05 2.7938e-08 -4.02551e-12 -165147 16.6898 );
     }
 }
-C12H4CL6O2_BIFENYL
+C12H4Cl6O2_BIFENYL
 {
     specie
     {
@@ -5832,7 +5832,7 @@ CH2OH+
         lowCpCoeffs     ( 3.54817 -0.00288791 2.98391e-05 -3.33578e-08 1.20141e-11 85029.7 7.01729 );
     }
 }
-PCL2-
+PCl2-
 {
     specie
     {
@@ -6232,7 +6232,7 @@ C10H20_3-decene-
         lowCpCoeffs     ( 2.73154 0.0788863 2.51642e-05 -8.5251e-08 3.92428e-11 -20689.8 25.7334 );
     }
 }
-C3H5Cl__CHCL=CHCH3
+C3H5Cl__CHCl=CHCH3
 {
     specie
     {
@@ -6360,7 +6360,7 @@ C
         lowCpCoeffs     ( 2.55424 -0.000321538 7.33792e-07 -7.32235e-10 2.66521e-13 85442.7 4.53131 );
     }
 }
-PbCL3
+PbCl3
 {
     specie
     {
@@ -6584,7 +6584,7 @@ C12H7_Acenaphtynyl
         lowCpCoeffs     ( -2.23704 0.0620074 4.69636e-05 -1.20874e-07 5.68319e-11 60886.8 33.8046 );
     }
 }
-C5H3CL3_CY-1,2,4CL
+C5H3Cl3_CY-1,2,4Cl
 {
     specie
     {
@@ -6616,7 +6616,7 @@ C3D6_Cyclopropan
         lowCpCoeffs     ( -1.18501 0.0361683 -2.53517e-06 -2.83415e-08 1.57552e-11 2767.63 26.5463 );
     }
 }
-CL2O2
+Cl2O2
 {
     specie
     {
@@ -6648,7 +6648,7 @@ PH3+
         lowCpCoeffs     ( 2.49088 0.00917665 -7.25623e-06 4.81735e-09 -1.58795e-12 115032 9.37716 );
     }
 }
-MgAL2O4(cr)
+MgAl2O4(cr)
 {
     specie
     {
@@ -6696,7 +6696,7 @@ NO3
         lowCpCoeffs     ( 2.17359 0.0104903 1.10473e-05 -2.81562e-08 1.36584e-11 7812.91 14.6022 );
     }
 }
-SiCL
+SiCl
 {
     specie
     {
@@ -6760,7 +6760,7 @@ C6H4O2__O=C6H4=O
         lowCpCoeffs     ( 0.856753 0.0415771 4.09304e-06 -4.07329e-08 2.08924e-11 -16679.3 21.4023 );
     }
 }
-C2H3CLO2
+C2H3ClO2
 {
     specie
     {
@@ -6808,7 +6808,7 @@ Hg(L)
         lowCpCoeffs     ( 3.68613 -0.000884371 -2.58545e-06 8.12482e-09 -5.52476e-12 -1050.3 -11.5403 );
     }
 }
-C12H4CL5O2_Radic
+C12H4Cl5O2_Radic
 {
     specie
     {
@@ -6920,7 +6920,7 @@ C4H8O2_Butyricacid
         lowCpCoeffs     ( 6.55569 0.00119881 9.25041e-05 -1.19594e-07 4.69862e-11 -57428.4 3.36227 );
     }
 }
-CF3-CHCLF__FC-124
+CF3-CHClF__FC-124
 {
     specie
     {
@@ -6952,7 +6952,7 @@ Ag
         lowCpCoeffs     ( 2.5 0 0 0 0 33520 6.56282 );
     }
 }
-ALF2
+AlF2
 {
     specie
     {
@@ -7048,7 +7048,7 @@ C5H10__2MB-3-ene
         lowCpCoeffs     ( 7.22291 -0.00273953 0.000104969 -1.31727e-07 5.12971e-11 -6107.68 -1.8469 );
     }
 }
-C2BR5
+C2Br5
 {
     specie
     {
@@ -7080,7 +7080,7 @@ C6H2Cl3O3_BiCy
         lowCpCoeffs     ( 0.82596 0.0897047 -8.89846e-05 3.66349e-08 -3.29896e-12 -36.1541 24.2683 );
     }
 }
-CBrCLF2
+CBrClF2
 {
     specie
     {
@@ -7128,7 +7128,7 @@ C8H5_C6H5-CC*
         lowCpCoeffs     ( 1.77838 0.0324194 3.85016e-05 -8.03842e-08 3.6269e-11 76600.4 19.3639 );
     }
 }
-COHCL2___Radical
+COHCl2___Radical
 {
     specie
     {
@@ -7208,7 +7208,7 @@ C12H20O10_Cellobi
         lowCpCoeffs     ( 8.32198 0.0628814 0.000271753 -4.29459e-07 1.80191e-10 -174415 -4.13432 );
     }
 }
-C5H7CL
+C5H7Cl
 {
     specie
     {
@@ -7560,7 +7560,7 @@ CO2_cy__C(OO)
         lowCpCoeffs     ( 3.18456 0.00536293 2.20597e-06 -8.41227e-09 4.16779e-12 21632.5 8.74099 );
     }
 }
-PbCL4
+PbCl4
 {
     specie
     {
@@ -7592,7 +7592,7 @@ C20H40O2_etStearat
         lowCpCoeffs     ( -2.70218 0.226825 -8.75531e-05 -4.39254e-08 3.47715e-11 -101728 60.8589 );
     }
 }
-PCL
+PCl
 {
     specie
     {
@@ -7640,7 +7640,7 @@ C2Cl4_Tetrachlor
         lowCpCoeffs     ( 3.11949 0.0449195 -7.36241e-05 5.96895e-08 -1.89904e-11 -4918.58 12.6542 );
     }
 }
-ALO-
+AlO-
 {
     specie
     {
@@ -7752,7 +7752,7 @@ CHF3__FLUOROFORM
         lowCpCoeffs     ( 2.73539 0.00872479 1.74822e-05 -3.21505e-08 1.41695e-11 -84684 12.488 );
     }
 }
-BrCL
+BrCl
 {
     specie
     {
@@ -8184,7 +8184,7 @@ C6H10O5_Levogluco
         lowCpCoeffs     ( 1.02548 0.0539526 5.79178e-05 -1.24491e-07 5.63562e-11 -97953 24.8253 );
     }
 }
-PFCL-
+PFCl-
 {
     specie
     {
@@ -8248,7 +8248,7 @@ s-1-C10H7C*O
         lowCpCoeffs     ( 0.247025 0.0623078 3.25269e-05 -9.98773e-08 4.79264e-11 18078.8 27.46 );
     }
 }
-CH2CLF__GC-31
+CH2ClF__GC-31
 {
     specie
     {
@@ -8344,7 +8344,7 @@ C4H8_Cyclobutan
         lowCpCoeffs     ( 3.14397 -0.00504252 0.000120645 -1.5841e-07 6.38394e-11 1919.48 10.6618 );
     }
 }
-DCL
+DCl
 {
     specie
     {
@@ -8584,7 +8584,7 @@ C8H15_1-octenyl-
         lowCpCoeffs     ( 3.9658 0.0500732 4.58634e-05 -9.55246e-08 4.20969e-11 9477.34 19.0962 );
     }
 }
-SiCL3
+SiCl3
 {
     specie
     {
@@ -8952,7 +8952,7 @@ Cr7C3(S)
         lowCpCoeffs     ( 1.2648 0.135086 -0.000236887 1.97375e-07 -6.14407e-11 -23973 -14.4012 );
     }
 }
-FeCL
+FeCl
 {
     specie
     {
@@ -9064,7 +9064,7 @@ C6H7+_C5H4-1-CH3
         lowCpCoeffs     ( -1.46109 0.0501602 -1.7565e-05 -1.40099e-08 9.74331e-12 119212 31.9146 );
     }
 }
-PFCL2
+PFCl2
 {
     specie
     {
@@ -9176,7 +9176,7 @@ SB(s)
         lowCpCoeffs     ( 2.12274 0.00603818 -1.41051e-05 1.52518e-08 -5.38507e-12 -804.253 -7.91696 );
     }
 }
-CCLF2
+CClF2
 {
     specie
     {
@@ -9528,7 +9528,7 @@ NO2+
         lowCpCoeffs     ( 3.56214 0.00343629 -1.19401e-07 -1.31592e-09 5.01139e-13 114780 7.19236 );
     }
 }
-C2H3CL
+C2H3Cl
 {
     specie
     {
@@ -9576,7 +9576,7 @@ Fe(CO)5
         lowCpCoeffs     ( 1.32844 0.114541 -0.00022444 2.11015e-07 -7.45587e-11 -91425.7 19.3738 );
     }
 }
-CHCLF
+CHClF
 {
     specie
     {
@@ -9768,7 +9768,7 @@ Cr3C2(S)
         lowCpCoeffs     ( -1.6814 0.0744936 -0.00012215 9.39506e-08 -2.71337e-11 -12169 2.29813 );
     }
 }
-PCL5
+PCl5
 {
     specie
     {
@@ -9832,7 +9832,7 @@ C6H5NO_Nitrosobe
         lowCpCoeffs     ( 1.68039 0.0292539 5.20478e-05 -9.72307e-08 4.29288e-11 21733.6 20.1972 );
     }
 }
-CCLF3___FC-13
+CClF3___FC-13
 {
     specie
     {
@@ -9992,7 +9992,7 @@ C10H8__AZULENE
         lowCpCoeffs     ( -0.627409 0.0405369 8.4064e-05 -1.5093e-07 6.63559e-11 31574.8 30.3043 );
     }
 }
-PF2CL3
+PF2Cl3
 {
     specie
     {
@@ -10024,7 +10024,7 @@ C8_linear_triplet
         lowCpCoeffs     ( 3.14179 0.0514027 -7.82216e-05 6.51159e-08 -2.18045e-11 179419 5.9977 );
     }
 }
-CCL3O*
+CCl3O*
 {
     specie
     {
@@ -10088,7 +10088,7 @@ C3H6O2_EthylFormat
         lowCpCoeffs     ( 5.59041 0.00242724 6.61618e-05 -8.61264e-08 3.38174e-11 -47569.9 4.84087 );
     }
 }
-C6HCL3OH__3-YL_RAD
+C6HCl3OH__3-YL_RAD
 {
     specie
     {
@@ -10136,7 +10136,7 @@ CCl3
         lowCpCoeffs     ( 2.66358 0.0271296 -4.42403e-05 3.46851e-08 -1.05867e-11 6882.02 14.1173 );
     }
 }
-GeCL3
+GeCl3
 {
     specie
     {
@@ -10168,7 +10168,7 @@ C14H6N6O12_HNS
         lowCpCoeffs     ( 7.35142 0.152248 -3.6908e-06 -1.32914e-07 7.04139e-11 19976 6.96546 );
     }
 }
-SiHCL3
+SiHCl3
 {
     specie
     {
@@ -10456,7 +10456,7 @@ C2H2_acetylene
         lowCpCoeffs     ( 0.80868 0.0233616 -3.55172e-05 2.80153e-08 -8.50075e-12 26429 13.9397 );
     }
 }
-ALF3
+AlF3
 {
     specie
     {
@@ -10952,7 +10952,7 @@ C2H2O2__HOCCOH
         lowCpCoeffs     ( 4.39325 0.0178016 -1.81564e-05 1.11665e-08 -2.9637e-12 -5323.32 9.51277 );
     }
 }
-C2HCLF2-1,1
+C2HClF2-1,1
 {
     specie
     {
@@ -10968,7 +10968,7 @@ C2HCLF2-1,1
         lowCpCoeffs     ( 2.04804 0.0295909 -2.80654e-05 1.12979e-08 -1.01686e-12 -41870.5 17.0867 );
     }
 }
-ClO2___CLOO*___H
+ClO2___ClOO*___H
 {
     specie
     {
@@ -10984,7 +10984,7 @@ ClO2___CLOO*___H
         lowCpCoeffs     ( 4.26695 0.00747999 -1.15233e-05 9.93421e-09 -3.48897e-12 10707.3 7.19227 );
     }
 }
-SO2CL2
+SO2Cl2
 {
     specie
     {
@@ -11496,7 +11496,7 @@ C5H8O2_MeCrotanoat
         lowCpCoeffs     ( 5.79381 0.0245644 3.60443e-05 -6.23879e-08 2.61793e-11 -44636.7 4.57237 );
     }
 }
-PFCL4
+PFCl4
 {
     specie
     {
@@ -11992,7 +11992,7 @@ D2O2
         lowCpCoeffs     ( 3.99336 0.00303683 1.02968e-05 -1.60577e-08 6.83692e-12 -18743.3 5.12865 );
     }
 }
-CHCL=CH*
+CHCl=CH*
 {
     specie
     {
@@ -12104,7 +12104,7 @@ C4H4__1-butene-3
         lowCpCoeffs     ( 1.37369 0.0288801 -1.46864e-05 -3.91045e-09 4.78134e-12 33063.3 17.5941 );
     }
 }
-HCLO2
+HClO2
 {
     specie
     {
@@ -12200,7 +12200,7 @@ O+
         lowCpCoeffs     ( 2.5 0 0 0 0 187935 4.39338 );
     }
 }
-C12H5CL4O3_Rad
+C12H5Cl4O3_Rad
 {
     specie
     {
@@ -12264,7 +12264,7 @@ C2H5O_CH3CH*OH
         lowCpCoeffs     ( 4.22283 0.00512175 3.48387e-05 -4.91944e-08 2.01184e-11 -8356.22 8.01676 );
     }
 }
-C3H3Cl_3CyCLPropen
+C3H3Cl_3CyClPropen
 {
     specie
     {
@@ -12312,7 +12312,7 @@ BH
         lowCpCoeffs     ( 3.54452 -0.000231822 -1.32913e-07 2.13394e-09 -1.32335e-12 52920.3 0.530536 );
     }
 }
-B2CL4
+B2Cl4
 {
     specie
     {
@@ -12664,7 +12664,7 @@ C4H6O2_Diacetyl
         lowCpCoeffs     ( 5.68608 0.0155041 3.82144e-05 -5.99463e-08 2.47932e-11 -41762.7 4.02905 );
     }
 }
-AL2O2
+Al2O2
 {
     specie
     {
@@ -12760,7 +12760,7 @@ Cr(OH)6
         lowCpCoeffs     ( -5.65718 0.136404 -0.000222736 1.74482e-07 -5.23661e-11 -125010 44.361 );
     }
 }
-MgCL+
+MgCl+
 {
     specie
     {
@@ -12872,7 +12872,7 @@ SbCl_singlet
         lowCpCoeffs     ( 2.4133 0.0128929 -2.44407e-05 1.98759e-08 -5.99572e-12 20273.6 13.1774 );
     }
 }
-C2HBR4_1,1,1,2
+C2HBr4_1,1,1,2
 {
     specie
     {
@@ -12984,7 +12984,7 @@ C2H5O-__Ethoxy_a
         lowCpCoeffs     ( 3.88372 0.00362649 3.51129e-05 -4.19768e-08 1.49671e-11 -23727.9 7.57799 );
     }
 }
-C12H4CL5O2_2p,4,
+C12H4Cl5O2_2p,4,
 {
     specie
     {
@@ -13144,7 +13144,7 @@ C5H11,t-pentyl
         lowCpCoeffs     ( 6.44629 -0.00954232 0.000137892 -1.69242e-07 6.53098e-11 1508.39 5.43062 );
     }
 }
-PCL2
+PCl2
 {
     specie
     {
@@ -13464,7 +13464,7 @@ C6H
         lowCpCoeffs     ( 0.905835 0.0607761 -0.000112134 1.02799e-07 -3.57814e-11 118105 17.5981 );
     }
 }
-C2CL3_RAD
+C2Cl3_RAD
 {
     specie
     {
@@ -13512,7 +13512,7 @@ CH2Br-CH2Br
         lowCpCoeffs     ( 4.62116 0.00941442 3.26665e-05 -5.17217e-08 2.19246e-11 -6503.17 9.40527 );
     }
 }
-ALH2
+AlH2
 {
     specie
     {
@@ -14184,7 +14184,7 @@ C2H3O_Oxyrane_Rad
         lowCpCoeffs     ( 3.58349 -0.00602276 6.32427e-05 -8.18541e-08 3.30445e-11 18568.1 9.59726 );
     }
 }
-S2CL
+S2Cl
 {
     specie
     {
@@ -14232,7 +14232,7 @@ NOH+_cation
         lowCpCoeffs     ( 4.08416 -0.00241926 1.18224e-05 -1.16756e-08 3.86465e-12 138736 4.14404 );
     }
 }
-C3H2CL2__1,2_Dic
+C3H2Cl2__1,2_Dic
 {
     specie
     {
@@ -14344,7 +14344,7 @@ C2HF2__CHF=CF(E)
         lowCpCoeffs     ( 3.0869 0.0160213 -7.49407e-06 -3.65235e-09 3.19176e-12 -6672.08 11.5974 );
     }
 }
-AL2O3(a)
+Al2O3(a)
 {
     specie
     {
@@ -14776,7 +14776,7 @@ Fe
         lowCpCoeffs     ( 1.70744 0.0106339 -2.76118e-05 2.80918e-08 -1.0122e-11 49184.4 9.80811 );
     }
 }
-C2BR
+C2Br
 {
     specie
     {
@@ -14904,7 +14904,7 @@ s-1,5-C6H4__trans
         lowCpCoeffs     ( 0.221633 0.0581529 -7.13934e-05 4.76726e-08 -1.28753e-11 60806.5 22.325 );
     }
 }
-CHBR
+CHBr
 {
     specie
     {
@@ -15048,7 +15048,7 @@ PO3
         lowCpCoeffs     ( 4.76937 0.00784394 3.34335e-06 -1.31052e-08 6.59556e-12 -55973.8 4.98978 );
     }
 }
-PF4CL
+PF4Cl
 {
     specie
     {
@@ -15288,7 +15288,7 @@ C32H13_OVALENYL
         lowCpCoeffs     ( -9.14252 0.178117 4.87162e-05 -2.22438e-07 1.09692e-10 74571.6 65.7092 );
     }
 }
-C2CL2
+C2Cl2
 {
     specie
     {
@@ -15576,7 +15576,7 @@ ClO3___Chlorate
         lowCpCoeffs     ( 1.54804 0.0255914 -3.27199e-05 1.9253e-08 -4.18676e-12 20946.5 18.7937 );
     }
 }
-AL(cr)
+Al(cr)
 {
     specie
     {
@@ -15656,7 +15656,7 @@ Mo(cr)
         lowCpCoeffs     ( 1.32884 0.00982554 -2.1093e-05 2.0951e-08 -7.60703e-12 -684.365 -6.29287 );
     }
 }
-AL2O2+
+Al2O2+
 {
     specie
     {
@@ -15704,7 +15704,7 @@ NH2F
         lowCpCoeffs     ( 4.43076 -0.00700448 3.24294e-05 -3.55242e-08 1.30599e-11 -10252.6 3.29678 );
     }
 }
-C2H4Cl_betaCLEthyl
+C2H4Cl_betaClEthyl
 {
     specie
     {
@@ -15784,7 +15784,7 @@ CO+
         lowCpCoeffs     ( 3.77062 -0.00201773 4.61082e-06 -2.99175e-09 6.06065e-13 149007 3.3813 );
     }
 }
-CH2CL2
+CH2Cl2
 {
     specie
     {
@@ -15896,7 +15896,7 @@ C12H8O2
         lowCpCoeffs     ( -1.48215 0.0751205 3.87198e-05 -1.19145e-07 5.69743e-11 -9056.11 32.9719 );
     }
 }
-CBRF3_FREON_1301
+CBrF3_FREON_1301
 {
     specie
     {
@@ -15976,7 +15976,7 @@ C18H34_1-Octadecy
         lowCpCoeffs     ( -11.646 0.27397 -0.000297994 2.01809e-07 -5.91668e-11 -21318 96.8119 );
     }
 }
-C2HCL
+C2HCl
 {
     specie
     {
@@ -16136,7 +16136,7 @@ Ge2
         lowCpCoeffs     ( 1.86915 0.0207355 -4.51129e-05 4.06077e-08 -1.32217e-11 55553.6 15.6846 );
     }
 }
-C2H4O2CL2
+C2H4O2Cl2
 {
     specie
     {
@@ -16200,7 +16200,7 @@ C12H8Cl2O2_6,6-(
         lowCpCoeffs     ( -5.72669 0.155871 -0.000158005 7.90551e-08 -1.57801e-11 -31851.6 56.0168 );
     }
 }
-AL(OH)2
+Al(OH)2
 {
     specie
     {
@@ -16216,7 +16216,7 @@ AL(OH)2
         lowCpCoeffs     ( 3.1217 0.0208986 -2.3495e-05 1.23528e-08 -2.11959e-12 -62732.6 11.1282 );
     }
 }
-CF2H-CCLF2_FC-124A
+CF2H-CClF2_FC-124A
 {
     specie
     {
@@ -16408,7 +16408,7 @@ C4H
         lowCpCoeffs     ( 0.938093 0.038592 -6.86755e-05 6.13265e-08 -2.08966e-11 92312.3 16.501 );
     }
 }
-CLCLO
+Cl2O
 {
     specie
     {
@@ -16504,7 +16504,7 @@ C7H10_cyC5H9-CCH
         lowCpCoeffs     ( 2.86273 0.0238049 8.02798e-05 -1.24667e-07 5.24739e-11 17577.4 16.0168 );
     }
 }
-ClO2___OCLO___HF
+ClO2___OClO___HF
 {
     specie
     {
@@ -16584,7 +16584,7 @@ NH2OH+
         lowCpCoeffs     ( 3.72525 0.00417577 9.81141e-06 -1.38336e-08 5.37208e-12 101394 6.30909 );
     }
 }
-MgCL
+MgCl
 {
     specie
     {
@@ -16824,7 +16824,7 @@ PH+
         lowCpCoeffs     ( 4.69912 -0.0050137 8.44515e-06 -5.45911e-09 1.2742e-12 146096 -1.93635 );
     }
 }
-C2HCL4_CHCl2-CCL2
+C2HCl4_CHCl2-CCl2
 {
     specie
     {
@@ -17256,7 +17256,7 @@ BF2
         lowCpCoeffs     ( 3.76866 0.00206633 8.29846e-06 -1.31415e-08 5.49423e-12 -61332.3 7.37107 );
     }
 }
-NH4CL(II)
+NH4Cl(II)
 {
     specie
     {
@@ -17304,7 +17304,7 @@ C7H5NO_Benzoxazole
         lowCpCoeffs     ( -0.249438 0.0355983 5.64045e-05 -1.10126e-07 4.93628e-11 1629.13 28.0949 );
     }
 }
-Cu3CL3
+Cu3Cl3
 {
     specie
     {
@@ -17944,7 +17944,7 @@ C10H10_3-meIndene
         lowCpCoeffs     ( 1.10114 0.0421733 8.14199e-05 -1.45129e-07 6.32748e-11 18168 22.5602 );
     }
 }
-C2H5CLO2
+C2H5ClO2
 {
     specie
     {
@@ -18120,7 +18120,7 @@ MgO(cr)
         lowCpCoeffs     ( 78.7549 -0.528711 0.00124188 -1.22847e-06 4.37279e-10 -81264.3 -328.879 );
     }
 }
-C3H3Cl_CH2CL-CCH
+C3H3Cl_CH2Cl-CCH
 {
     specie
     {
@@ -18184,7 +18184,7 @@ CBr4
         lowCpCoeffs     ( 5.10359 0.0339593 -6.24045e-05 5.36484e-08 -1.7571e-11 9691.51 1.31944 );
     }
 }
-BAO(G)
+BaO(G)
 {
     specie
     {
@@ -18328,7 +18328,7 @@ NITROPROPYLENE_C
         lowCpCoeffs     ( 3.65176 0.0201896 3.27505e-05 -5.72328e-08 2.41049e-11 -972.583 11.8667 );
     }
 }
-BCL
+BCl
 {
     specie
     {
@@ -18504,7 +18504,7 @@ Br2(cr)
         lowCpCoeffs     ( 9.12519 -0.0826112 0.000699829 -2.40834e-06 3.21096e-09 -3304.08 -30.1719 );
     }
 }
-CLO3F
+ClO3F
 {
     specie
     {
@@ -18632,7 +18632,7 @@ T_Tritium__(g)
         lowCpCoeffs     ( 2.5 -4.39695e-07 2.02543e-09 -2.95668e-12 1.35888e-15 26119.9 1.19728 );
     }
 }
-NH4CLO4(I)
+NH4ClO4(I)
 {
     specie
     {
@@ -18696,7 +18696,7 @@ CNN+
         lowCpCoeffs     ( 3.93138 0.0075873 -8.55735e-06 5.55474e-09 -1.58157e-12 196345 4.04892 );
     }
 }
-C4CL6_Butadiene
+C4Cl6_Butadiene
 {
     specie
     {
@@ -18760,7 +18760,7 @@ CH5N2__CH2*NHNH2
         lowCpCoeffs     ( 2.31544 0.0218627 -3.68464e-06 -1.3271e-08 8.00413e-12 30774.4 15.0726 );
     }
 }
-PF2CL
+PF2Cl
 {
     specie
     {
@@ -18920,7 +18920,7 @@ MgF2(cr)I
         lowCpCoeffs     ( 3.15877 0.00196088 0.000105362 -2.77411e-07 2.08833e-10 -136720 -14.3472 );
     }
 }
-C6H5CL+_Chlorobe
+C6H5Cl+_Chlorobe
 {
     specie
     {
@@ -19080,7 +19080,7 @@ CH2=CH-NO2_Nitroe
         lowCpCoeffs     ( 2.75939 0.0170696 2.37368e-05 -4.77983e-08 2.14793e-11 1843.4 14.6556 );
     }
 }
-C3HCL3__TriClAllen
+C3HCl3__TriClAllen
 {
     specie
     {
@@ -19256,7 +19256,7 @@ C4H6O_H3CCH2CH=C
         lowCpCoeffs     ( 3.2361 0.0232109 2.16181e-05 -4.71002e-08 2.13586e-11 -12724.9 12.9611 );
     }
 }
-SCL2
+SCl2
 {
     specie
     {
@@ -19400,7 +19400,7 @@ C4H8O_2-Butanone
         lowCpCoeffs     ( 6.61978 0.00851848 5.10322e-05 -6.58433e-08 2.4911e-11 -31525.2 -1.09485 );
     }
 }
-C2H4Cl_alfaCLEthyl
+C2H4Cl_alfaClEthyl
 {
     specie
     {
@@ -19480,7 +19480,7 @@ MgBr2(L)
         lowCpCoeffs     ( 12.0272 0 0 0 0 -63633.8 -52.4664 );
     }
 }
-BCL+
+BCl+
 {
     specie
     {
@@ -19512,7 +19512,7 @@ CHNH2-__anion__H
         lowCpCoeffs     ( 1.8202 0.0153201 -1.1192e-05 4.57191e-09 -7.44802e-13 40235.2 14.2819 );
     }
 }
-CHBrCL2__FC-20B1
+CHBrCl2__FC-20B1
 {
     specie
     {
@@ -19624,7 +19624,7 @@ CH3N__(H2C=NH)
         lowCpCoeffs     ( 4.79303 -0.0126842 5.69767e-05 -6.34985e-08 2.37023e-11 9413.86 1.10278 );
     }
 }
-HALO2
+HAlO2
 {
     specie
     {
@@ -19656,7 +19656,7 @@ HCN
         lowCpCoeffs     ( 2.25901 0.010051 -1.33515e-05 1.0092e-08 -3.0088e-12 14590.3 8.91632 );
     }
 }
-ALO2
+AlO2
 {
     specie
     {
@@ -19672,7 +19672,7 @@ ALO2
         lowCpCoeffs     ( 4.34295 0.00865076 -8.91493e-06 3.12927e-09 9.49015e-14 -6256.26 5.43603 );
     }
 }
-HOCL
+HOCl
 {
     specie
     {
@@ -19752,7 +19752,7 @@ C6H11I_IodocyHexan
         lowCpCoeffs     ( 4.95589 0.00624026 0.00013695 -1.85304e-07 7.45516e-11 -8647.49 9.04456 );
     }
 }
-CL-
+Cl-
 {
     specie
     {
@@ -19832,7 +19832,7 @@ C7H7_Quadri_Base
         lowCpCoeffs     ( -0.865668 0.0202947 0.000109981 -1.75784e-07 7.63992e-11 68615.1 31.45 );
     }
 }
-CBRCL3_Bromotric
+CBrCl3_Bromotric
 {
     specie
     {
@@ -19848,7 +19848,7 @@ CBRCL3_Bromotric
         lowCpCoeffs     ( 2.8408 0.0425731 -7.69558e-05 6.54734e-08 -2.13015e-11 -7238.49 12.5268 );
     }
 }
-CCL3F___FC-11
+CCl3F___FC-11
 {
     specie
     {
@@ -20008,7 +20008,7 @@ FeSO4(S)
         lowCpCoeffs     ( 1.36573 0.0529862 -7.03486e-05 4.90952e-08 -1.44139e-11 -113945 -6.31021 );
     }
 }
-C2BR4
+C2Br4
 {
     specie
     {
@@ -20056,7 +20056,7 @@ CH3-NH-NH-CH3_Sy
         lowCpCoeffs     ( 5.41669 0.00250625 7.35471e-05 -9.60749e-08 3.79945e-11 10565.4 3.29279 );
     }
 }
-DOBR
+DOBr
 {
     specie
     {
@@ -20120,7 +20120,7 @@ C4__triplet
         lowCpCoeffs     ( 3.68513 0.0184223 -3.11974e-05 2.9645e-08 -1.07298e-11 125759 5.42249 );
     }
 }
-SI2H6__Disilane
+Si2H6__Disilane
 {
     specie
     {
@@ -20168,7 +20168,7 @@ C3H2F3_CF3-CH=CH*
         lowCpCoeffs     ( 0.681987 0.0469264 -4.86401e-05 2.2047e-08 -2.75415e-12 -47231.4 22.9561 );
     }
 }
-CL2
+Cl2
 {
     specie
     {
@@ -20184,7 +20184,7 @@ CL2
         lowCpCoeffs     ( 2.73638 0.00783526 -1.45105e-05 1.25731e-08 -4.13247e-12 -1058.8 9.44557 );
     }
 }
-AL2O+
+Al2O+
 {
     specie
     {
@@ -20264,7 +20264,7 @@ COH
         lowCpCoeffs     ( 4.36381 -0.00535204 2.31955e-05 -2.66109e-08 1.02712e-11 25010.9 2.98106 );
     }
 }
-C4CL2
+C4Cl2
 {
     specie
     {
@@ -20328,7 +20328,7 @@ C5H10,cyclo-
         lowCpCoeffs     ( 3.70339 -0.0115575 0.000164113 -2.0937e-07 8.31059e-11 -10938.9 11.9773 );
     }
 }
-DOCL
+DOCl
 {
     specie
     {
@@ -20408,7 +20408,7 @@ NO
         lowCpCoeffs     ( 4.2186 -0.00463988 1.10443e-05 -9.34056e-09 2.80555e-12 9845.1 2.28061 );
     }
 }
-NO2CL
+NO2Cl
 {
     specie
     {
@@ -20488,7 +20488,7 @@ C6H9I-3-iodo
         lowCpCoeffs     ( 3.97475 0.0142793 0.000103556 -1.4999e-07 6.192e-11 5835.6 13.0713 );
     }
 }
-FeCL3
+FeCl3
 {
     specie
     {
@@ -20536,7 +20536,7 @@ C22H18_(C10H7CH2)2
         lowCpCoeffs     ( -9.01278 0.205116 -0.000183057 1.10357e-07 -3.44709e-11 28550.4 69.335 );
     }
 }
-C2HCL5
+C2HCl5
 {
     specie
     {
@@ -20568,7 +20568,7 @@ C3H3+_CH2=C=CH+
         lowCpCoeffs     ( 1.5491 0.0233307 -1.70274e-05 4.66368e-09 2.21539e-13 143166 13.7174 );
     }
 }
-CCL4
+CCl4
 {
     specie
     {
@@ -20840,7 +20840,7 @@ ZrN(cr)
         lowCpCoeffs     ( -1.60329 0.0435534 -0.000102727 1.12384e-07 -4.61701e-11 -45399.9 4.48755 );
     }
 }
-ALF
+AlF
 {
     specie
     {
@@ -20936,7 +20936,7 @@ MgI2
         lowCpCoeffs     ( 5.47324 0.0105458 -2.22792e-05 2.12039e-08 -7.48636e-12 -22593.5 4.23281 );
     }
 }
-C2CL
+C2Cl
 {
     specie
     {
@@ -21240,7 +21240,7 @@ CF-
         lowCpCoeffs     ( 2.67417 0.00577946 -7.7641e-06 5.08964e-09 -1.30782e-12 22801.9 8.08085 );
     }
 }
-C5H8CL
+C5H8Cl
 {
     specie
     {
@@ -21352,7 +21352,7 @@ K(cr)
         lowCpCoeffs     ( -2.08951 0.061632 -0.000240732 3.27256e-07 0 -636.098 9.11737 );
     }
 }
-ALO2-
+AlO2-
 {
     specie
     {
@@ -21576,7 +21576,7 @@ C3HCl2OH
         lowCpCoeffs     ( 3.1571 0.0399226 -4.67896e-05 2.89518e-08 -7.27289e-12 -2951.93 14.6502 );
     }
 }
-NOCL
+NOCl
 {
     specie
     {
@@ -21656,7 +21656,7 @@ CBr3__Radical
         lowCpCoeffs     ( 4.24875 0.0227424 -3.912e-05 3.19712e-08 -1.00758e-11 25938.1 10.3538 );
     }
 }
-CLF5
+ClF5
 {
     specie
     {
@@ -22040,7 +22040,7 @@ ZrC(cr)
         lowCpCoeffs     ( -1.12575 0.0338354 -6.64955e-05 6.40913e-08 -2.42647e-11 -24347.1 2.77083 );
     }
 }
-CCL2F
+CCl2F
 {
     specie
     {
@@ -22392,7 +22392,7 @@ C3H4N__CH3-CH*-CN
         lowCpCoeffs     ( 2.90886 0.021025 -3.11711e-06 -1.06743e-08 5.98989e-12 25029.2 12.2021 );
     }
 }
-PFCL
+PFCl
 {
     specie
     {
@@ -22520,7 +22520,7 @@ C3H6O3_Trioxane
         lowCpCoeffs     ( 3.55244 0.00170629 9.91147e-05 -1.31999e-07 5.26422e-11 -59030.2 10.6185 );
     }
 }
-ALH
+AlH
 {
     specie
     {
@@ -22760,7 +22760,7 @@ D
         lowCpCoeffs     ( 2.5 0 0 0 0 25921.3 0.591714 );
     }
 }
-C2CL2F4_CF3CFCL2
+C2Cl2F4_CF3CFCl2
 {
     specie
     {
@@ -22808,7 +22808,7 @@ SbCl2
         lowCpCoeffs     ( 3.26046 0.00813469 -5.31504e-06 -1.00842e-09 1.59478e-12 -13161.4 13.0106 );
     }
 }
-AL2O3
+Al2O3
 {
     specie
     {
@@ -22936,7 +22936,7 @@ C3H6_propylene
         lowCpCoeffs     ( 3.83464 0.00329079 5.05228e-05 -6.66251e-08 2.63707e-11 788.717 7.53408 );
     }
 }
-FeCL3(s)
+FeCl3(s)
 {
     specie
     {
@@ -23096,7 +23096,7 @@ HNNH-__trans
         lowCpCoeffs     ( 3.03932 0.00358025 8.30143e-06 -1.1908e-08 4.60611e-12 29701.1 8.63197 );
     }
 }
-SbCL5
+SbCl5
 {
     specie
     {
@@ -23240,7 +23240,7 @@ C9H18O6_TATP
         lowCpCoeffs     ( -1.19327 0.16895 -0.000171505 1.01467e-07 -2.60451e-11 -53390.5 23.2901 );
     }
 }
-C12H5CL4O2_RAD
+C12H5Cl4O2_RAD
 {
     specie
     {
@@ -23448,7 +23448,7 @@ P2
         lowCpCoeffs     ( 2.9606 0.00385561 -2.87398e-06 -3.19976e-10 8.10023e-13 16290.7 8.34523 );
     }
 }
-CBR3CL__TriBromo
+CBr3Cl__TriBromo
 {
     specie
     {
@@ -23480,7 +23480,7 @@ C6H3_CH2=C=C=C=C=C
         lowCpCoeffs     ( 1.50089 0.0545902 -7.88221e-05 6.27969e-08 -2.00769e-11 84913.4 17.6237 );
     }
 }
-CLF3
+ClF3
 {
     specie
     {
@@ -23592,7 +23592,7 @@ C3H4O2_AcrylAcid
         lowCpCoeffs     ( 1.24227 0.0300699 -1.48207e-06 -2.42738e-08 1.33122e-11 -40866.8 21.9243 );
     }
 }
-CHFCLBr
+CHFClBr
 {
     specie
     {
@@ -23608,7 +23608,7 @@ CHFCLBr
         lowCpCoeffs     ( 2.84647 0.0204936 -1.70059e-05 4.11372e-09 9.31157e-13 -29280.4 15.0637 );
     }
 }
-ALCL
+AlCl
 {
     specie
     {
@@ -23704,7 +23704,7 @@ CH3C(CH3)2CH3
         lowCpCoeffs     ( 3.56479 0.0290185 5.00307e-05 -8.66302e-08 3.72524e-11 -22877.4 6.73829 );
     }
 }
-GeCL2____triplet
+GeCl2____triplet
 {
     specie
     {
@@ -23720,7 +23720,7 @@ GeCL2____triplet
         lowCpCoeffs     ( 4.11513 0.0153508 -3.27832e-05 3.13345e-08 -1.10726e-11 10627.5 10.2028 );
     }
 }
-CL2O7
+Cl2O7
 {
     specie
     {
@@ -23768,7 +23768,7 @@ C8H7N__o-ToluoNitr
         lowCpCoeffs     ( 2.05214 0.038168 4.22551e-05 -8.69955e-08 3.87533e-11 20059 19.5286 );
     }
 }
-CLNC_biradical
+ClNC_biradical
 {
     specie
     {
@@ -23832,7 +23832,7 @@ NITRO-PENTANE
         lowCpCoeffs     ( 4.00704 0.0229727 0.000104023 -1.55574e-07 6.44329e-11 -22634.2 13.9587 );
     }
 }
-AR
+Ar
 {
     specie
     {
@@ -23928,7 +23928,7 @@ Na2O(a)
         lowCpCoeffs     7 { 0 };
     }
 }
-FeCL2(L)
+FeCl2(L)
 {
     specie
     {
@@ -23960,7 +23960,7 @@ Na2O(c)
         lowCpCoeffs     ( 2.1367 0.0391996 -8.50796e-05 8.70574e-08 -3.22937e-11 -51645.5 -11.76 );
     }
 }
-CF3-CHCL2__HF123
+CF3-CHCl2__HF123
 {
     specie
     {
@@ -24088,7 +24088,7 @@ C3H7_i-propyl
         lowCpCoeffs     ( 5.47421 -0.00842537 8.04608e-05 -9.49288e-08 3.59831e-11 9049.39 3.40542 );
     }
 }
-ALOH
+AlOH
 {
     specie
     {
@@ -24280,7 +24280,7 @@ C8H18,n-octane
         lowCpCoeffs     ( 12.5245 -0.0101019 0.000221993 -2.84864e-07 1.1241e-10 -29843.4 -19.711 );
     }
 }
-C12H6CL4O2
+C12H6Cl4O2
 {
     specie
     {
@@ -24408,7 +24408,7 @@ C12H10_biphenyl
         lowCpCoeffs     ( 0.1946 0.053526 8.55001e-05 -1.63904e-07 7.29976e-11 19002.1 27.2149 );
     }
 }
-NH4CL(III)
+NH4Cl(III)
 {
     specie
     {
@@ -24424,7 +24424,7 @@ NH4CL(III)
         lowCpCoeffs     ( 1.70591 0.0307824 -4.40956e-05 4.81013e-08 -1.91059e-11 -38502.2 -3.73732 );
     }
 }
-SO2FCL
+SO2FCl
 {
     specie
     {
@@ -24632,7 +24632,7 @@ C7H5(NO2)3_(TNT)
         lowCpCoeffs     ( 3.19573 0.086222 -2.31687e-05 -4.31208e-08 2.63453e-11 -1609.11 15.4068 );
     }
 }
-C2H5CL
+C2H5Cl
 {
     specie
     {
@@ -24696,7 +24696,7 @@ CH3C
         lowCpCoeffs     ( 3.59147 -6.65568e-05 2.69433e-05 -3.438e-08 1.35235e-11 59929.5 5.96528 );
     }
 }
-CH2CL
+CH2Cl
 {
     specie
     {
@@ -24856,7 +24856,7 @@ NCN
         lowCpCoeffs     ( 2.79808 0.0100009 -9.59242e-06 4.75566e-09 -1.04349e-12 53857.5 8.6213 );
     }
 }
-CHBR2
+CHBr2
 {
     specie
     {
@@ -24904,7 +24904,7 @@ CH3-_anion
         lowCpCoeffs     ( 4.35455 -0.00541267 2.17109e-05 -1.94567e-08 5.95104e-12 15405.2 -0.727196 );
     }
 }
-MgAL2O4(L)
+MgAl2O4(L)
 {
     specie
     {
@@ -25096,7 +25096,7 @@ C12H9,o-bipheny
         lowCpCoeffs     ( 0.407668 0.0542795 7.12516e-05 -1.44404e-07 6.48498e-11 48535.2 28.1981 );
     }
 }
-CLF
+ClF
 {
     specie
     {
@@ -25160,7 +25160,7 @@ N2O+
         lowCpCoeffs     ( 3.28691 0.00740222 -4.86664e-06 7.32928e-10 2.98234e-13 159103 7.40137 );
     }
 }
-CLCN
+ClCN
 {
     specie
     {
@@ -25688,7 +25688,7 @@ C3H3Cl_Chloro-Al
         lowCpCoeffs     ( 2.17406 0.0233296 -8.27347e-06 -8.72361e-09 6.26711e-12 19487 15.7635 );
     }
 }
-BFCL
+BFCl
 {
     specie
     {
@@ -25960,7 +25960,7 @@ C2H4F_beta-Fluor
         lowCpCoeffs     ( 4.38589 0.00444185 2.81593e-05 -3.89282e-08 1.56056e-11 -9031.77 6.2837 );
     }
 }
-AL(OH)3
+Al(OH)3
 {
     specie
     {
@@ -26024,7 +26024,7 @@ H6F6
         lowCpCoeffs     ( 4.76645 0.0786031 -0.000121157 9.36149e-08 -2.78945e-11 -221172 12.5468 );
     }
 }
-GeCL2____singlet
+GeCl2____singlet
 {
     specie
     {
@@ -26056,7 +26056,7 @@ C3H6_cyclo-
         lowCpCoeffs     ( 2.83279 -0.00521029 9.29583e-05 -1.22753e-07 4.99191e-11 5195.2 10.8306 );
     }
 }
-ALO+
+AlO+
 {
     specie
     {
@@ -26264,7 +26264,7 @@ H2O(L)
         lowCpCoeffs     ( 72.5575 -0.662445 0.00256199 -4.36592e-06 2.78179e-09 -41886.5 -288.28 );
     }
 }
-CBr2CLF___11B3
+CBr2ClF___11B3
 {
     specie
     {
@@ -26520,7 +26520,7 @@ N2O3
         lowCpCoeffs     ( 5.81084 0.0143331 -1.96209e-05 1.73061e-08 -6.46554e-12 8191.84 1.20461 );
     }
 }
-CL
+Cl
 {
     specie
     {
@@ -26536,7 +26536,7 @@ CL
         lowCpCoeffs     ( 2.26062 0.00154154 -6.80284e-07 -1.59973e-09 1.15417e-12 13855.3 6.57021 );
     }
 }
-Cl2C=C=CCL(O*)
+Cl2C=C=CCl(O*)
 {
     specie
     {
@@ -26584,7 +26584,7 @@ CrO
         lowCpCoeffs     ( 3.18819 0.00146295 3.31396e-06 -6.66294e-09 3.11838e-12 21611.6 10.0817 );
     }
 }
-ALCL3
+AlCl3
 {
     specie
     {
@@ -26616,7 +26616,7 @@ C4H3_E-1yl_Radical
         lowCpCoeffs     ( 0.554264 0.0386185 -4.70818e-05 3.0624e-08 -7.90588e-12 63797.5 21.0542 );
     }
 }
-COCL2
+COCl2
 {
     specie
     {
@@ -27272,7 +27272,7 @@ C4H5__1,3-Butadi
         lowCpCoeffs     ( 2.00881 0.0250341 4.4793e-06 -2.6399e-08 1.34433e-11 36207 15.9914 );
     }
 }
-MgCL2(L)
+MgCl2(L)
 {
     specie
     {
@@ -27320,7 +27320,7 @@ CH3+
         lowCpCoeffs     ( 4.73044 -0.0086626 3.12269e-05 -3.13569e-08 1.09957e-11 131270 -3.03198 );
     }
 }
-ALBr3
+AlBr3
 {
     specie
     {
@@ -27448,7 +27448,7 @@ HPO
         lowCpCoeffs     ( 4.13953 -0.00375644 2.10092e-05 -2.45888e-08 9.33164e-12 -12480.7 5.14556 );
     }
 }
-FeOCL(cr)
+FeOCl(cr)
 {
     specie
     {
@@ -27784,7 +27784,7 @@ CrO3
         lowCpCoeffs     ( 2.2336 0.0241281 -3.23842e-05 2.06088e-08 -5.05776e-12 -40222.5 13.7496 );
     }
 }
-BOCL2
+BOCl2
 {
     specie
     {
@@ -27800,7 +27800,7 @@ BOCL2
         lowCpCoeffs     ( 2.39602 0.0242258 -3.58262e-05 2.65234e-08 -7.85785e-12 -45009.4 15.654 );
     }
 }
-Fe2CL4
+Fe2Cl4
 {
     specie
     {
@@ -28344,7 +28344,7 @@ CD2_Deutherometh
         lowCpCoeffs     ( 3.55503 0.00336947 -3.5028e-06 4.99693e-09 -2.45123e-12 44827.3 3.42741 );
     }
 }
-C2H2CL2_1,1-
+C2H2Cl2_1,1-
 {
     specie
     {
@@ -28360,7 +28360,7 @@ C2H2CL2_1,1-
         lowCpCoeffs     ( 1.09096 0.0338226 -4.14124e-05 2.66328e-08 -6.88458e-12 -1247.49 19.9996 );
     }
 }
-BFCL2
+BFCl2
 {
     specie
     {
@@ -28504,7 +28504,7 @@ C3H2(1)_HCC-CH**
         lowCpCoeffs     ( 2.87527 0.0199236 -2.41971e-05 1.66378e-08 -4.69231e-12 96819.2 8.88674 );
     }
 }
-HALO
+HAlO
 {
     specie
     {
@@ -28776,7 +28776,7 @@ C6H7_1,3,5_Linear
         lowCpCoeffs     ( 2.82605 0.0348405 1.31407e-05 -4.6882e-08 2.29961e-11 49458.2 17.0295 );
     }
 }
-HCLO4
+HClO4
 {
     specie
     {
@@ -28872,7 +28872,7 @@ N2-
         lowCpCoeffs     ( 3.87906 -0.00316855 8.46825e-06 -7.28826e-09 2.18785e-12 21755.2 3.12725 );
     }
 }
-BCL2+
+BCl2+
 {
     specie
     {
@@ -29016,7 +29016,7 @@ NH4NO3_gas
         lowCpCoeffs     ( 4.14853 0.0269825 -9.75933e-06 -6.09907e-09 4.33965e-12 -30074.6 8.49838 );
     }
 }
-CL+
+Cl+
 {
     specie
     {
@@ -29128,7 +29128,7 @@ F2O+__FOF+
         lowCpCoeffs     ( 2.46499 0.0109177 -1.05316e-05 4.05496e-09 -3.04762e-13 154795 13.2086 );
     }
 }
-ALF2-
+AlF2-
 {
     specie
     {
@@ -29320,7 +29320,7 @@ C10H8O__Naphtol
         lowCpCoeffs     ( -2.08768 0.07681 -1.53593e-05 -4.04658e-08 2.3376e-11 -6290.56 34.3331 );
     }
 }
-ALH3
+AlH3
 {
     specie
     {
@@ -29384,7 +29384,7 @@ s-1,2,3,5-C6H2Cl4
         lowCpCoeffs     ( 2.48196 0.0655633 -5.95894e-05 2.22036e-08 -1.43435e-12 -5391.51 16.9276 );
     }
 }
-CCL2F2_FREON-12
+CCl2F2_FREON-12
 {
     specie
     {
@@ -29704,7 +29704,7 @@ CH3S_Radical
         lowCpCoeffs     ( 2.56437 0.0115796 -4.5012e-06 -5.02342e-10 6.95253e-13 13370.6 11.2505 );
     }
 }
-CHFCL2___FC-21
+CHFCl2___FC-21
 {
     specie
     {
@@ -30200,7 +30200,7 @@ C2H2Br2_trans
         lowCpCoeffs     ( 3.8637 0.016965 -3.41692e-06 -1.08161e-08 6.58651e-12 10083.8 10.913 );
     }
 }
-SiCL2
+SiCl2
 {
     specie
     {
@@ -30440,7 +30440,7 @@ C4F8_CY
         lowCpCoeffs     ( -6.40876 0.117788 -0.000157354 1.1578e-07 -3.71123e-11 -184189 56.1863 );
     }
 }
-CHCL3_Chloroform
+CHCl3_Chloroform
 {
     specie
     {
@@ -30584,7 +30584,7 @@ CH3-NH-NH2
         lowCpCoeffs     ( 3.36546 0.00916487 4.07415e-05 -6.18271e-08 2.62064e-11 11498.2 9.75315 );
     }
 }
-SCL
+SCl
 {
     specie
     {
@@ -31224,7 +31224,7 @@ C24H17
         lowCpCoeffs     ( -16.409 0.226724 -0.000140015 -2.78751e-09 2.47131e-11 70999.3 110.51 );
     }
 }
-BCL2
+BCl2
 {
     specie
     {
@@ -31464,7 +31464,7 @@ CI
         lowCpCoeffs     ( 1.89139 0.0167386 -3.68508e-05 3.50616e-08 -1.22019e-11 67533.2 14.609 );
     }
 }
-C12H6CL2O2
+C12H6Cl2O2
 {
     specie
     {
@@ -31512,7 +31512,7 @@ C13H10O__Benzoph
         lowCpCoeffs     ( 2.03306 0.0530785 0.000104699 -1.89967e-07 8.33778e-11 4094.98 22.7448 );
     }
 }
-C2H2CL2_Equilibriu
+C2H2Cl2_Equilibriu
 {
     specie
     {
@@ -31544,7 +31544,7 @@ HNO2+_cis____HF2
         lowCpCoeffs     ( 2.63706 0.0102578 -5.14296e-06 -5.04116e-10 9.47515e-13 120845 12.4287 );
     }
 }
-CBR
+CBr
 {
     specie
     {
@@ -31624,7 +31624,7 @@ H2Sn(C2H5)2
         lowCpCoeffs     ( 5.22643 0.0383917 2.00663e-05 -5.18249e-08 2.32704e-11 3442.92 7.61235 );
     }
 }
-AL2O3(b)
+Al2O3(b)
 {
     specie
     {
@@ -31672,7 +31672,7 @@ MgSiO3(III)
         lowCpCoeffs     7 { 0 };
     }
 }
-C5H7CL2
+C5H7Cl2
 {
     specie
     {
@@ -31736,7 +31736,7 @@ HCCNO2
         lowCpCoeffs     ( 1.34403 0.0333183 -3.93939e-05 2.41125e-08 -5.90505e-12 31935.8 18.7891 );
     }
 }
-S2CL2
+S2Cl2
 {
     specie
     {
@@ -31944,7 +31944,7 @@ C4H9O_DiEthyl_Et
         lowCpCoeffs     ( 7.25386 -0.000750391 0.000104998 -1.35171e-07 5.26869e-11 -8118.19 -0.573033 );
     }
 }
-C2BR6
+C2Br6
 {
     specie
     {
@@ -32248,7 +32248,7 @@ C4H8O2_DIOXANE
         lowCpCoeffs     ( 4.81265 -0.00385996 0.000125372 -1.60862e-07 6.33257e-11 -37571.3 6.04153 );
     }
 }
-ALO
+AlO
 {
     specie
     {
@@ -32392,7 +32392,7 @@ NO2-
         lowCpCoeffs     ( 3.09784 0.00370486 5.92941e-06 -1.09497e-08 4.62722e-12 -24155.4 9.48237 );
     }
 }
-C2HBR4_1,1,2,2
+C2HBr4_1,1,2,2
 {
     specie
     {
@@ -32424,7 +32424,7 @@ F2+
         lowCpCoeffs     ( 3.96417 -0.000599836 4.03663e-06 -4.74261e-09 1.76772e-12 181724 2.80862 );
     }
 }
-CF2CL-CHCLF_123a
+CF2Cl-CHClF_123a
 {
     specie
     {
@@ -32456,7 +32456,7 @@ COOH
         lowCpCoeffs     ( 2.92208 0.00762454 3.29884e-06 -1.07135e-08 5.11587e-12 -23028.2 11.2926 );
     }
 }
-CH3COCL_Acetyl-CL
+CH3COCl_Acetyl-Cl
 {
     specie
     {
@@ -32472,7 +32472,7 @@ CH3COCL_Acetyl-CL
         lowCpCoeffs     ( 3.9884 0.0126777 7.80939e-06 -1.82292e-08 7.97984e-12 -30830 8.16676 );
     }
 }
-NE
+Ne
 {
     specie
     {
@@ -33048,7 +33048,7 @@ C2H5O-__CH3C*HOH-
         lowCpCoeffs     ( 2.73686 0.0206277 -7.16876e-06 -3.02068e-09 2.28832e-12 -6393.69 12.5982 );
     }
 }
-C12H4CL6O2__tric
+C12H4Cl6O2__tric
 {
     specie
     {
@@ -33064,7 +33064,7 @@ C12H4CL6O2__tric
         lowCpCoeffs     ( 3.28452 0.141319 -0.000138658 5.99059e-08 -7.31751e-12 -30439.2 19.9985 );
     }
 }
-COCL
+COCl
 {
     specie
     {
@@ -33400,7 +33400,7 @@ C4H10_isobutane
         lowCpCoeffs     ( 4.45479 0.00826059 8.29886e-05 -1.14648e-07 4.6457e-11 -18459.4 4.92741 );
     }
 }
-C12H5CL5O2_PD
+C12H5Cl5O2_PD
 {
     specie
     {
@@ -33592,7 +33592,7 @@ MgSO4(I)
         lowCpCoeffs     7 { 0 };
     }
 }
-C2HFCL2_equilibr
+C2HFCl2_equilibr
 {
     specie
     {
@@ -33800,7 +33800,7 @@ C18H36O2_etPalmita
         lowCpCoeffs     ( 0.607765 0.187616 -4.8932e-05 -5.75354e-08 3.32268e-11 -96555.9 43.5519 );
     }
 }
-COFCL
+COFCl
 {
     specie
     {
@@ -33896,7 +33896,7 @@ C6H6+_Benzene_ion
         lowCpCoeffs     ( -2.36188 0.050756 -2.00023e-05 -1.27434e-08 9.63134e-12 116788 33.7617 );
     }
 }
-BRCN
+BrCN
 {
     specie
     {
@@ -33976,7 +33976,7 @@ C8H7___i-styryl
         lowCpCoeffs     ( 0.595576 0.0431716 3.39695e-05 -8.55153e-08 4.02635e-11 41975.6 25.7012 );
     }
 }
-GeCL
+GeCl
 {
     specie
     {
@@ -33992,7 +33992,7 @@ GeCL
         lowCpCoeffs     ( 2.72445 0.00895175 -1.25463e-05 6.75349e-09 -1.04008e-12 7190.16 11.8835 );
     }
 }
-CHCLF2__HCFC-22
+CHClF2__HCFC-22
 {
     specie
     {
@@ -34632,7 +34632,7 @@ C19H36O2_meOleic
         lowCpCoeffs     ( 1.03901 0.189498 -4.90209e-05 -6.24649e-08 3.76956e-11 -82267.1 52.4855 );
     }
 }
-MgCL2
+MgCl2
 {
     specie
     {
@@ -34696,7 +34696,7 @@ C6H6_1,3-Butadie
         lowCpCoeffs     ( 0.744284 0.0472659 -2.19464e-05 -9.84219e-09 9.27386e-12 39556.6 21.8138 );
     }
 }
-MgCL2(cr)
+MgCl2(cr)
 {
     specie
     {
@@ -34744,7 +34744,7 @@ GeS2(II)(s)
         lowCpCoeffs     ( 5.26457 0.0158411 -3.14864e-05 3.00355e-08 -1.04866e-11 -17420.7 -22.3062 );
     }
 }
-AL2O
+Al2O
 {
     specie
     {
@@ -34792,7 +34792,7 @@ Mg2SiO4(L)
         lowCpCoeffs     7 { 0 };
     }
 }
-SCL2+
+SCl2+
 {
     specie
     {
@@ -34888,7 +34888,7 @@ C2Cl5___Pentachl
         lowCpCoeffs     ( 3.91975 0.0549683 -9.27441e-05 7.45661e-08 -2.32158e-11 -284.949 13.3912 );
     }
 }
-C2BR3
+C2Br3
 {
     specie
     {
@@ -35048,7 +35048,7 @@ C8H7___1,3,5,7_Cy
         lowCpCoeffs     ( 0.221489 0.0439671 3.08077e-05 -8.02318e-08 3.77773e-11 58455.7 25.8576 );
     }
 }
-PBS(cr)__GALENA
+PbS(cr)__GALENA
 {
     specie
     {
@@ -35208,7 +35208,7 @@ C4H6Cl2_1,4-DiCl
         lowCpCoeffs     ( 4.62931 0.0213074 4.38339e-05 -8.04356e-08 3.58875e-11 -8812.42 12.3975 );
     }
 }
-CHBr2CL
+CHBr2Cl
 {
     specie
     {
@@ -35272,7 +35272,7 @@ ClC2H4OH__ATcT_C
         lowCpCoeffs     ( 3.29693 0.0155882 2.61101e-05 -4.87089e-08 2.16773e-11 -33904.2 13.6163 );
     }
 }
-ALBr
+AlBr
 {
     specie
     {
@@ -35336,7 +35336,7 @@ Na2O
         lowCpCoeffs     ( 4.47778 0.0141517 -2.77158e-05 2.4968e-08 -8.46423e-12 -3756.21 3.92862 );
     }
 }
-CHCL
+CHCl
 {
     specie
     {
@@ -35416,7 +35416,7 @@ C4F6_CycloButene
         lowCpCoeffs     ( 4.2381 0.0498 -4.01139e-05 9.85389e-09 1.49299e-12 -148774 8.3064 );
     }
 }
-C24CL12_Coronene
+C24Cl12_Coronene
 {
     specie
     {
@@ -35672,7 +35672,7 @@ C7H8__1,6-diyne
         lowCpCoeffs     ( 2.65094 0.0475342 -6.58275e-06 -2.70985e-08 1.531e-11 44797.6 14.6492 );
     }
 }
-CHCL2
+CHCl2
 {
     specie
     {
@@ -35784,7 +35784,7 @@ B3O3F3
         lowCpCoeffs     ( 2.25601 0.046567 -3.26831e-05 1.27816e-09 5.045e-12 -289030 16.0606 );
     }
 }
-PbCL
+PbCl
 {
     specie
     {
@@ -35832,7 +35832,7 @@ C10_linear_triple
         lowCpCoeffs     ( 3.4855 0.0640662 -9.35342e-05 7.56085e-08 -2.48799e-11 206209 10.6203 );
     }
 }
-C2CL2F4__FC-114
+C2Cl2F4__FC-114
 {
     specie
     {
@@ -35928,7 +35928,7 @@ C7H5NS_Benzothiaz
         lowCpCoeffs     ( -0.923877 0.0491355 1.97405e-05 -7.21022e-08 3.54777e-11 22598.7 30.7415 );
     }
 }
-ALCL2
+AlCl2
 {
     specie
     {
@@ -36200,7 +36200,7 @@ HNO3+
         lowCpCoeffs     ( 0.696075 0.0308976 -4.05429e-05 2.68505e-08 -7.08467e-12 122156 22.6095 );
     }
 }
-CCLF
+CClF
 {
     specie
     {
@@ -36408,12 +36408,12 @@ C3H7NO3_NPN
         lowCpCoeffs     ( 4.69954 0.0174527 6.53066e-05 -9.90515e-08 4.08918e-11 -24608.3 11.0308 );
     }
 }
-AIR
+air
 {
     specie
     {
         nMoles          1;
-        molWeight       0;
+        molWeight       28.9644;
     }
     thermodynamics
     {
@@ -36808,7 +36808,7 @@ CH2O+_Fornald_cati
         lowCpCoeffs     ( 2.99008 0.00405957 7.18536e-06 -1.01674e-08 3.74118e-12 112947 8.64302 );
     }
 }
-C12H6CL2O
+C12H6Cl2O
 {
     specie
     {
@@ -36952,7 +36952,7 @@ Na2O(L)
         lowCpCoeffs     7 { 0 };
     }
 }
-CH2BRCOOH
+CH2BrCOOH
 {
     specie
     {
diff --git a/src/OpenFOAM/containers/Dictionaries/DictionaryBase/DictionaryBase.H b/src/OpenFOAM/containers/Dictionaries/DictionaryBase/DictionaryBase.H
index 7d788fe4dfe0e0b90f7b0c931d994b36f6659231..f9294eedd0338e540eef4c422307a98c2cda0bb1 100644
--- a/src/OpenFOAM/containers/Dictionaries/DictionaryBase/DictionaryBase.H
+++ b/src/OpenFOAM/containers/Dictionaries/DictionaryBase/DictionaryBase.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -74,13 +74,15 @@ class DictionaryBase
 :
     public IDLListType
 {
-    // Private data
+protected:
+
+    // Protected data
 
         //- HashTable of the entries held on the IDLListType for quick lookup
         HashTable<T*> hashedTs_;
 
 
-    // Private Member functions
+    // Protected Member functions
 
         // Add the IDLListType entries into the HashTable
         void addEntries();
@@ -146,6 +148,7 @@ public:
             //  and annul the argument.
             void transfer(DictionaryBase<IDLListType, T>&);
 
+
     // Member operators
 
         void operator=(const DictionaryBase&);
diff --git a/src/OpenFOAM/containers/Dictionaries/PtrDictionary/PtrDictionary.H b/src/OpenFOAM/containers/Dictionaries/PtrDictionary/PtrDictionary.H
index efa739d26a2ca54327509c439e2f699bb7140eb0..a287e326cb635215ba66b474f9ae9604744753b1 100644
--- a/src/OpenFOAM/containers/Dictionaries/PtrDictionary/PtrDictionary.H
+++ b/src/OpenFOAM/containers/Dictionaries/PtrDictionary/PtrDictionary.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -25,11 +25,10 @@ Class
     Foam::PtrDictionary
 
 Description
-    Template dictionary class which does not manages the storage
-    associated with it.
+    Template dictionary class which manages the storage associated with it.
 
-    It is derived from DictionaryBase instantiated on a non-memory managed
-    form of intrusive doubly-linked list of T.
+    It is derived from DictionaryBase instantiated on a memory managed form of
+    intrusive doubly-linked list of \<T\>.
 
 SourceFiles
     PtrDictionary.C
@@ -73,6 +72,21 @@ public:
 
         //- Construct from Istream
         PtrDictionary(Istream&);
+
+
+    // Member operators
+
+        //- Find and return entry
+        const T& operator[](const word& key) const
+        {
+            return *DictionaryBase<DLPtrList<T>, T>::operator[](key);
+        }
+
+        //- Find and return entry
+        T& operator[](const word& key)
+        {
+            return *DictionaryBase<DLPtrList<T>, T>::operator[](key);
+        }
 };
 
 
diff --git a/src/OpenFOAM/containers/Dictionaries/PtrListDictionary/PtrListDictionary.C b/src/OpenFOAM/containers/Dictionaries/PtrListDictionary/PtrListDictionary.C
new file mode 100644
index 0000000000000000000000000000000000000000..dae34e82fe23c8a64ddaf5872cce35a39c910e40
--- /dev/null
+++ b/src/OpenFOAM/containers/Dictionaries/PtrListDictionary/PtrListDictionary.C
@@ -0,0 +1,127 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "PtrListDictionary.H"
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+template<class T>
+Foam::PtrListDictionary<T>::PtrListDictionary(const label size)
+:
+    DictionaryBase<PtrList<T>, T>(2*size)
+{
+    PtrList<T>::setSize(size);
+}
+
+
+template<class T>
+Foam::PtrListDictionary<T>::PtrListDictionary(const PtrListDictionary& dict)
+:
+    DictionaryBase<PtrList<T>, T>(dict)
+{}
+
+
+template<class T>
+template<class INew>
+Foam::PtrListDictionary<T>::PtrListDictionary(Istream& is, const INew& iNew)
+:
+    DictionaryBase<PtrList<T>, T>(is, iNew)
+{}
+
+
+template<class T>
+Foam::PtrListDictionary<T>::PtrListDictionary(Istream& is)
+:
+    DictionaryBase<PtrList<T>, T>(is)
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+template<class T>
+inline Foam::autoPtr<T> Foam::PtrListDictionary<T>::set
+(
+    const label i,
+    const word& key,
+    T* ptr
+)
+{
+    if (!DictionaryBase<PtrList<T>, T>::hashedTs_.insert(key, ptr))
+    {
+        FatalErrorIn
+        (
+            "PtrListDictionary<T>::set(const label i, const word& key, T* ptr)"
+        )   << "Cannot insert with key '" << key << "' into hash-table"
+            << abort(FatalError);
+    }
+    return PtrList<T>::set(i, ptr);
+}
+
+
+template<class T>
+inline Foam::autoPtr<T> Foam::PtrListDictionary<T>::set
+(
+    const label i,
+    const word& key,
+    autoPtr<T>& aptr
+)
+{
+    T* ptr = aptr.ptr();
+    if (!DictionaryBase<PtrList<T>, T>::hashedTs_.insert(key, ptr))
+    {
+        FatalErrorIn
+        (
+            "PtrListDictionary<T>::"
+            "set(const label i, const word& key, autoPtr<T>& aptr)"
+        )   << "Cannot insert with key '" << key << "' into hash-table"
+            << abort(FatalError);
+    }
+    return PtrList<T>::set(i, ptr);
+}
+
+
+template<class T>
+inline Foam::autoPtr<T> Foam::PtrListDictionary<T>::set
+(
+    const label i,
+    const word& key,
+    tmp<T>& t
+)
+{
+    T* ptr = t.ptr();
+    if (!DictionaryBase<PtrList<T>, T>::hashedTs_.insert(key, ptr))
+    {
+        FatalErrorIn
+        (
+            "PtrListDictionary<T>::"
+            "set(const label i, const word& key, tmp<T>& t)"
+        )   << "Cannot insert with key '" << key << "' into hash-table"
+            << abort(FatalError);
+    }
+    return PtrList<T>::set(i, ptr);
+}
+
+
+// ************************************************************************* //
diff --git a/src/OpenFOAM/containers/Dictionaries/PtrListDictionary/PtrListDictionary.H b/src/OpenFOAM/containers/Dictionaries/PtrListDictionary/PtrListDictionary.H
new file mode 100644
index 0000000000000000000000000000000000000000..761bccd76e38a1ce9a2c23e2343385da0fb6a7d6
--- /dev/null
+++ b/src/OpenFOAM/containers/Dictionaries/PtrListDictionary/PtrListDictionary.H
@@ -0,0 +1,121 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::PtrListDictionary
+
+Description
+    Template dictionary class which manages the storage associated with it.
+
+    It is derived from DictionaryBase instantiated on the memory managed PtrList
+    of \<T\> to provide ordered indexing in addition to the dictionary lookup.
+
+SourceFiles
+    PtrListDictionary.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef PtrListDictionary_H
+#define PtrListDictionary_H
+
+#include "DictionaryBase.H"
+#include "PtrList.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+                        Class PtrListDictionary Declaration
+\*---------------------------------------------------------------------------*/
+
+template<class T>
+class PtrListDictionary
+:
+    public DictionaryBase<PtrList<T>, T>
+{
+
+public:
+
+    // Constructors
+
+        //- Construct given initial list size
+        PtrListDictionary(const label size);
+
+        //- Copy construct
+        PtrListDictionary(const PtrListDictionary&);
+
+        //- Construct from Istream using given Istream constructor class
+        template<class INew>
+        PtrListDictionary(Istream&, const INew&);
+
+        //- Construct from Istream
+        PtrListDictionary(Istream&);
+
+
+    // Member functions
+
+        //- Set element to pointer provided and return old element
+        autoPtr<T> set(const label, const word& key, T*);
+
+        //- Set element to autoPtr value provided and return old element
+        autoPtr<T> set(const label, const word& key, autoPtr<T>&);
+
+        //- Set element to tmp value provided and return old element
+        autoPtr<T> set(const label, const word& key, tmp<T>&);
+
+
+    // Member operators
+
+        using PtrList<T>::operator[];
+
+        //- Find and return entry
+        const T& operator[](const word& key) const
+        {
+            return *DictionaryBase<PtrList<T>, T>::operator[](key);
+        }
+
+        //- Find and return entry
+        T& operator[](const word& key)
+        {
+            return *DictionaryBase<PtrList<T>, T>::operator[](key);
+        }
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#ifdef NoRepository
+#   include "PtrListDictionary.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/OpenFOAM/containers/LinkedLists/accessTypes/LList/LList.H b/src/OpenFOAM/containers/LinkedLists/accessTypes/LList/LList.H
index 3e4ed069c9044ee0ba244fe2a96f927a3670b2dc..e8a9ff22d4d5c7781c9fa8506b3b457fc2586895 100644
--- a/src/OpenFOAM/containers/LinkedLists/accessTypes/LList/LList.H
+++ b/src/OpenFOAM/containers/LinkedLists/accessTypes/LList/LList.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -203,6 +203,7 @@ public:
             //  and annul the argument list.
             void transfer(LList<LListBase, T>&);
 
+
     // Member operators
 
         void operator=(const LList<LListBase, T>&);
@@ -265,6 +266,16 @@ public:
                 }
         };
 
+        inline iterator begin()
+        {
+            return LListBase::begin();
+        }
+
+        inline const iterator& end()
+        {
+            return static_cast<const iterator&>(LListBase::end());
+        }
+
 
     // STL const_iterator
 
@@ -313,6 +324,26 @@ public:
                 }
         };
 
+        inline const_iterator cbegin() const
+        {
+            return LListBase::cbegin();
+        }
+
+        inline const const_iterator& cend() const
+        {
+            return static_cast<const const_iterator&>(LListBase::cend());
+        }
+
+        inline const_iterator begin() const
+        {
+            return LListBase::begin();
+        }
+
+        inline const const_iterator& end() const
+        {
+            return static_cast<const const_iterator&>(LListBase::end());
+        }
+
 
     // IOstream operators
 
diff --git a/src/OpenFOAM/containers/LinkedLists/accessTypes/UILList/UILList.H b/src/OpenFOAM/containers/LinkedLists/accessTypes/UILList/UILList.H
index 893af0042293b2afafeb395e6b30ac7cad8c2994..b2ec4c8fca4c65b3d500e1a63325f40b94f8be91 100644
--- a/src/OpenFOAM/containers/LinkedLists/accessTypes/UILList/UILList.H
+++ b/src/OpenFOAM/containers/LinkedLists/accessTypes/UILList/UILList.H
@@ -209,6 +209,16 @@ public:
                 }
         };
 
+        inline iterator begin()
+        {
+            return LListBase::begin();
+        }
+
+        inline const iterator& end()
+        {
+            return static_cast<const iterator&>(LListBase::end());
+        }
+
 
     // STL const_iterator
 
@@ -256,6 +266,26 @@ public:
                 }
         };
 
+        inline const_iterator cbegin() const
+        {
+            return LListBase::cbegin();
+        }
+
+        inline const const_iterator& cend() const
+        {
+            return static_cast<const const_iterator&>(LListBase::cend());
+        }
+
+        inline const_iterator begin() const
+        {
+            return LListBase::begin();
+        }
+
+        inline const const_iterator& end() const
+        {
+            return static_cast<const const_iterator&>(LListBase::end());
+        }
+
 
     // STL const_reverse_iterator
 
@@ -298,6 +328,29 @@ public:
                 }
         };
 
+        inline const_reverse_iterator crbegin() const
+        {
+            return LListBase::crbegin();
+        }
+
+        inline const const_reverse_iterator& crend() const
+        {
+            return
+                static_cast<const const_reverse_iterator&>(LListBase::crend());
+        }
+
+
+        inline const_reverse_iterator rbegin() const
+        {
+            return LListBase::rbegin();
+        }
+
+        inline const const_reverse_iterator& rend() const
+        {
+            return
+                static_cast<const const_reverse_iterator&>(LListBase::rend());
+        }
+
 
     // STL member operators
 
diff --git a/src/OpenFOAM/containers/LinkedLists/linkTypes/DLListBase/DLListBase.H b/src/OpenFOAM/containers/LinkedLists/linkTypes/DLListBase/DLListBase.H
index 095e51fe1ffad1f650fd7f19a6face1b1823f40c..0e7fc75aa801de0748f307ded66b61701b1aeb00 100644
--- a/src/OpenFOAM/containers/LinkedLists/linkTypes/DLListBase/DLListBase.H
+++ b/src/OpenFOAM/containers/LinkedLists/linkTypes/DLListBase/DLListBase.H
@@ -263,6 +263,7 @@ public:
         inline const_iterator begin() const;
         inline const const_iterator& end() const;
 
+
     // STL const_reverse_iterator
 
         //- An STL-conforming const_reverse_iterator
@@ -300,6 +301,7 @@ public:
         inline const_reverse_iterator rbegin() const;
         inline const const_reverse_iterator& rend() const;
 
+
 private:
 
         //- Iterator returned by end()
@@ -310,7 +312,6 @@ private:
 
         //- const_reverse_iterator returned by end()
         static const_reverse_iterator endConstRevIter_;
-
 };
 
 
diff --git a/src/OpenFOAM/containers/LinkedLists/user/DLPtrList.H b/src/OpenFOAM/containers/LinkedLists/user/DLPtrList.H
index 6e83434125eef8ee768bef1af107adea43e7f893..9793d8be9f0634dfbc1d44e1873b0cd80a4efd3e 100644
--- a/src/OpenFOAM/containers/LinkedLists/user/DLPtrList.H
+++ b/src/OpenFOAM/containers/LinkedLists/user/DLPtrList.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -58,12 +58,6 @@ public:
         DLPtrList()
         {}
 
-        //- Construct given initial T
-        DLPtrList(T a)
-        :
-            LPtrList<DLListBase, T>(a)
-        {}
-
         //- Construct from Istream using given Istream constructor class
         template<class INew>
         DLPtrList(Istream& is, const INew& inewt)
diff --git a/src/OpenFOAM/containers/Lists/PtrList/PtrList.H b/src/OpenFOAM/containers/Lists/PtrList/PtrList.H
index 357b078dbfddf46afd6d9d3e187e63915aed5874..b3b2924d9f8becac800ae3607f24d50e66ca4784 100644
--- a/src/OpenFOAM/containers/Lists/PtrList/PtrList.H
+++ b/src/OpenFOAM/containers/Lists/PtrList/PtrList.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -32,6 +32,7 @@ Description
     pointer.
 
 SourceFiles
+    PtrListI.H
     PtrList.C
     PtrListIO.C
 
@@ -80,6 +81,34 @@ inline label operator-
     const typename PtrList<T>::iterator&
 );
 
+template<class T>
+inline typename PtrList<T>::const_iterator operator+
+(
+    const typename PtrList<T>::const_iterator&,
+    label
+);
+
+template<class T>
+inline typename PtrList<T>::const_iterator operator+
+(
+    label,
+    const typename PtrList<T>::const_iterator&
+);
+
+template<class T>
+inline typename PtrList<T>::const_iterator operator-
+(
+    const typename PtrList<T>::const_iterator&,
+    label
+);
+
+template<class T>
+inline label operator-
+(
+    const typename PtrList<T>::const_iterator&,
+    const typename PtrList<T>::const_iterator&
+);
+
 template<class T>
 Istream& operator>>(Istream&, PtrList<T>&);
 
@@ -245,7 +274,9 @@ public:
     // Random access iterator for traversing PtrList.
 
         class iterator;
+        class const_iterator;
         friend class iterator;
+        friend class const_iterator;
 
         //- An STL-conforming iterator
         class iterator
@@ -254,6 +285,8 @@ public:
 
         public:
 
+            friend class const_iterator;
+
             //- Construct for a given PtrList entry
             inline iterator(T**);
 
@@ -303,6 +336,87 @@ public:
         inline iterator end();
 
 
+    // STL const_iterator
+    // Random access iterator for traversing PtrList.
+
+        //- An STL-conforming const_iterator
+        class const_iterator
+        {
+            const T* const* ptr_;
+
+        public:
+
+            //- Construct for a given PtrList entry
+            inline const_iterator(const T* const*);
+
+            //- Construct from an iterator
+            inline const_iterator(const iterator&);
+
+
+            // Member operators
+
+                inline bool operator==(const const_iterator&) const;
+                inline bool operator!=(const const_iterator&) const;
+
+                typedef const T& Tref;
+                inline Tref operator*();
+                inline Tref operator()();
+
+                inline const_iterator operator++();
+                inline const_iterator operator++(int);
+
+                inline const_iterator operator--();
+                inline const_iterator operator--(int);
+
+                inline const_iterator operator+=(label);
+
+                friend const_iterator operator+ <T>
+                (
+                    const const_iterator&,
+                    label
+                );
+                friend const_iterator operator+ <T>
+                (
+                    label,
+                    const const_iterator&
+                );
+
+                inline const_iterator operator-=(label);
+
+                friend const_iterator operator- <T>
+                (
+                    const const_iterator&,
+                    label
+                );
+
+                friend label operator- <T>
+                (
+                    const const_iterator&,
+                    const const_iterator&
+                );
+
+                inline const T& operator[](label);
+
+                inline bool operator<(const const_iterator&) const;
+                inline bool operator>(const const_iterator&) const;
+
+                inline bool operator<=(const const_iterator&) const;
+                inline bool operator>=(const const_iterator&) const;
+        };
+
+        //- Return an const_iterator to begin traversing the PtrList.
+        inline const_iterator cbegin() const;
+
+        //- Return an const_iterator to end traversing the PtrList.
+        inline const_iterator cend() const;
+
+        //- Return an const_iterator to begin traversing the PtrList.
+        inline const_iterator begin() const;
+
+        //- Return an const_iterator to end traversing the PtrList.
+        inline const_iterator end() const;
+
+
     // IOstream operator
 
         //- Read List from Istream, discarding contents of existing List.
diff --git a/src/OpenFOAM/containers/Lists/PtrList/PtrListI.H b/src/OpenFOAM/containers/Lists/PtrList/PtrListI.H
index e6acf7fab6910de934d3587af6d825016dd4ba2a..a2970eb3614cdcf16ac0e9ffab583338908a3e5d 100644
--- a/src/OpenFOAM/containers/Lists/PtrList/PtrListI.H
+++ b/src/OpenFOAM/containers/Lists/PtrList/PtrListI.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -23,8 +23,6 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "error.H"
-
 #include "autoPtr.H"
 #include "tmp.H"
 
@@ -373,4 +371,227 @@ inline typename Foam::PtrList<T>::iterator Foam::PtrList<T>::end()
 }
 
 
+// * * * * * * * * * * * * * * * STL const_iterator  * * * * * * * * * * * * //
+
+template<class T>
+inline Foam::PtrList<T>::const_iterator::const_iterator(const T* const* ptr)
+:
+    ptr_(ptr)
+{}
+
+
+template<class T>
+inline Foam::PtrList<T>::const_iterator::const_iterator(const iterator& iter)
+:
+    ptr_(iter.ptr_)
+{}
+
+
+template<class T>
+inline bool Foam::PtrList<T>::const_iterator::operator==
+(
+    const const_iterator& iter
+) const
+{
+    return ptr_ == iter.ptr_;
+}
+
+
+template<class T>
+inline bool Foam::PtrList<T>::const_iterator::operator!=
+(
+    const const_iterator& iter
+) const
+{
+    return ptr_ != iter.ptr_;
+}
+
+
+template<class T>
+inline const T& Foam::PtrList<T>::const_iterator::operator*()
+{
+    return **ptr_;
+}
+
+
+template<class T>
+inline const T& Foam::PtrList<T>::const_iterator::operator()()
+{
+    return operator*();
+}
+
+
+template<class T>
+inline typename Foam::PtrList<T>::const_iterator
+Foam::PtrList<T>::const_iterator::operator++()
+{
+    ++ptr_;
+    return *this;
+}
+
+
+template<class T>
+inline typename Foam::PtrList<T>::const_iterator
+Foam::PtrList<T>::const_iterator::operator++(int)
+{
+    const_iterator tmp = *this;
+    ++ptr_;
+    return tmp;
+}
+
+
+template<class T>
+inline typename Foam::PtrList<T>::const_iterator
+Foam::PtrList<T>::const_iterator::operator--()
+{
+    --ptr_;
+    return *this;
+}
+
+
+template<class T>
+inline typename Foam::PtrList<T>::const_iterator
+Foam::PtrList<T>::const_iterator::operator--(int)
+{
+    const_iterator tmp = *this;
+    --ptr_;
+    return tmp;
+}
+
+
+template<class T>
+inline typename Foam::PtrList<T>::const_iterator
+Foam::PtrList<T>::const_iterator::operator+=(label n)
+{
+    ptr_ += n;
+    return *this;
+}
+
+
+template<class T>
+inline typename Foam::PtrList<T>::const_iterator
+Foam::operator+(const typename PtrList<T>::const_iterator& iter, label n)
+{
+    typename PtrList<T>::const_iterator tmp = iter;
+    return tmp += n;
+}
+
+
+template<class T>
+inline typename Foam::PtrList<T>::const_iterator
+Foam::operator+(label n, const typename PtrList<T>::const_iterator& iter)
+{
+    typename PtrList<T>::const_iterator tmp = iter;
+    return tmp += n;
+}
+
+
+template<class T>
+inline typename Foam::PtrList<T>::const_iterator
+Foam::PtrList<T>::const_iterator::operator-=(label n)
+{
+    ptr_ -= n;
+    return *this;
+}
+
+
+template<class T>
+inline typename Foam::PtrList<T>::const_iterator
+Foam::operator-(const typename PtrList<T>::const_iterator& iter, label n)
+{
+    typename PtrList<T>::const_iterator tmp = iter;
+    return tmp -= n;
+}
+
+
+template<class T>
+inline Foam::label Foam::operator-
+(
+    const typename PtrList<T>::const_iterator& iter1,
+    const typename PtrList<T>::const_iterator& iter2
+)
+{
+    return (iter1.ptr_ - iter2.ptr_)/sizeof(T*);
+}
+
+
+template<class T>
+inline const T& Foam::PtrList<T>::const_iterator::operator[](label n)
+{
+    return *(*this + n);
+}
+
+
+template<class T>
+inline bool Foam::PtrList<T>::const_iterator::operator<
+(
+    const const_iterator& iter
+) const
+{
+    return ptr_ < iter.ptr_;
+}
+
+
+template<class T>
+inline bool Foam::PtrList<T>::const_iterator::operator>
+(
+    const const_iterator& iter
+) const
+{
+    return ptr_ > iter.ptr_;
+}
+
+
+template<class T>
+inline bool Foam::PtrList<T>::const_iterator::operator<=
+(
+    const const_iterator& iter
+) const
+{
+    return ptr_ <= iter.ptr_;
+}
+
+
+template<class T>
+inline bool Foam::PtrList<T>::const_iterator::operator>=
+(
+    const const_iterator& iter
+) const
+{
+    return ptr_ >= iter.ptr_;
+}
+
+
+template<class T>
+inline typename Foam::PtrList<T>::const_iterator
+Foam::PtrList<T>::begin() const
+{
+    return ptrs_.begin();
+}
+
+
+template<class T>
+inline typename Foam::PtrList<T>::const_iterator
+Foam::PtrList<T>::end() const
+{
+    return ptrs_.end();
+}
+
+
+template<class T>
+inline typename Foam::PtrList<T>::const_iterator
+Foam::PtrList<T>::cbegin() const
+{
+    return ptrs_.begin();
+}
+
+
+template<class T>
+inline typename Foam::PtrList<T>::const_iterator
+Foam::PtrList<T>::cend() const
+{
+    return ptrs_.end();
+}
+
+
 // ************************************************************************* //
diff --git a/src/OpenFOAM/dimensionedTypes/dimensionedType/dimensionedType.C b/src/OpenFOAM/dimensionedTypes/dimensionedType/dimensionedType.C
index b9ed09ae800bd110ac93cfb7ebe129cb88971d10..fdb38737a5b41d49034de20240d912e18efdaf3b 100644
--- a/src/OpenFOAM/dimensionedTypes/dimensionedType/dimensionedType.C
+++ b/src/OpenFOAM/dimensionedTypes/dimensionedType/dimensionedType.C
@@ -178,8 +178,8 @@ Foam::dimensioned<Type> Foam::dimensioned<Type>::lookupOrDefault
 (
     const word& name,
     const dictionary& dict,
-    const Type& defaultValue,
-    const dimensionSet& dims
+    const dimensionSet& dims,
+    const Type& defaultValue
 )
 {
     if (dict.found(name))
@@ -193,13 +193,25 @@ Foam::dimensioned<Type> Foam::dimensioned<Type>::lookupOrDefault
 }
 
 
+template<class Type>
+Foam::dimensioned<Type> Foam::dimensioned<Type>::lookupOrDefault
+(
+    const word& name,
+    const dictionary& dict,
+    const Type& defaultValue
+)
+{
+    return lookupOrDefault(name, dict, dimless, defaultValue);
+}
+
+
 template<class Type>
 Foam::dimensioned<Type> Foam::dimensioned<Type>::lookupOrAddToDict
 (
     const word& name,
     dictionary& dict,
-    const Type& defaultValue,
-    const dimensionSet& dims
+    const dimensionSet& dims,
+    const Type& defaultValue
 )
 {
     Type value = dict.lookupOrAddDefault<Type>(name, defaultValue);
@@ -207,6 +219,18 @@ Foam::dimensioned<Type> Foam::dimensioned<Type>::lookupOrAddToDict
 }
 
 
+template<class Type>
+Foam::dimensioned<Type> Foam::dimensioned<Type>::lookupOrAddToDict
+(
+    const word& name,
+    dictionary& dict,
+    const Type& defaultValue
+)
+{
+    return lookupOrAddToDict(name, dict, dimless, defaultValue);
+}
+
+
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 template<class Type>
diff --git a/src/OpenFOAM/dimensionedTypes/dimensionedType/dimensionedType.H b/src/OpenFOAM/dimensionedTypes/dimensionedType/dimensionedType.H
index bb7f632918f1911673c9259514f865ebd52a857b..40baca77f6ae2efee6a2f5e604d0aa99c8f3c67b 100644
--- a/src/OpenFOAM/dimensionedTypes/dimensionedType/dimensionedType.H
+++ b/src/OpenFOAM/dimensionedTypes/dimensionedType/dimensionedType.H
@@ -123,13 +123,21 @@ public:
 
     // Static member functions
 
-        //- Construct from dictionary, with default value.
+        //- Construct from dictionary, with default dimensions and value.
+        static dimensioned<Type> lookupOrDefault
+        (
+            const word&,
+            const dictionary&,
+            const dimensionSet& dims = dimless,
+            const Type& defaultValue = pTraits<Type>::zero
+        );
+
+        //- Construct from dictionary dimensionless with value.
         static dimensioned<Type> lookupOrDefault
         (
             const word&,
             const dictionary&,
-            const Type& defaultValue = pTraits<Type>::zero,
-            const dimensionSet& dims = dimless
+            const Type& defaultValue = pTraits<Type>::zero
         );
 
         //- Construct from dictionary, with default value.
@@ -138,8 +146,17 @@ public:
         (
             const word&,
             dictionary&,
-            const Type& defaultValue = pTraits<Type>::zero,
-            const dimensionSet& dims = dimless
+            const dimensionSet& dims = dimless,
+            const Type& defaultValue = pTraits<Type>::zero
+        );
+
+        //- Construct from dictionary, dimensionless with default value.
+        //  If the value is not found, it is added into the dictionary.
+        static dimensioned<Type> lookupOrAddToDict
+        (
+            const word&,
+            dictionary&,
+            const Type& defaultValue = pTraits<Type>::zero
         );
 
 
diff --git a/src/OpenFOAM/meshes/meshShapes/face/face.C b/src/OpenFOAM/meshes/meshShapes/face/face.C
index e7b8c5e3e92dd99f68e1ac91455aa5817a2ef974..30847ce3ca6066fdb191500e3ed2aa44bb309d6a 100644
--- a/src/OpenFOAM/meshes/meshShapes/face/face.C
+++ b/src/OpenFOAM/meshes/meshShapes/face/face.C
@@ -427,18 +427,22 @@ bool Foam::face::sameVertices(const face& a, const face& b)
 
     forAll(a, i)
     {
-        bool found = false;
+        // Count occurrences of a[i] in a
+        label aOcc = 0;
+        forAll(a, j)
+        {
+            if (a[i] == a[j]) aOcc++;
+        }
 
+        // Count occurrences of a[i] in b
+        label bOcc = 0;
         forAll(b, j)
         {
-            if (a[i] == b[j])
-            {
-                found = true;
-                break;
-            }
+            if (a[i] == b[j]) bOcc++;
         }
 
-        if (!found) return false;
+        // Check if occurrences of a[i] in a and b are the same
+        if (aOcc != bOcc) return false;
     }
 
     return true;
diff --git a/src/OpenFOAM/meshes/polyMesh/globalMeshData/globalMeshData.C b/src/OpenFOAM/meshes/polyMesh/globalMeshData/globalMeshData.C
index 2739e828b349f34986ea6028e57f2967de45f885..b36a0e9579c79c87147fe7cd047b35dd3208ee1f 100644
--- a/src/OpenFOAM/meshes/polyMesh/globalMeshData/globalMeshData.C
+++ b/src/OpenFOAM/meshes/polyMesh/globalMeshData/globalMeshData.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -2746,22 +2746,44 @@ void Foam::globalMeshData::updateMesh()
         Pout<< "globalMeshData : merge dist:" << tolDim << endl;
     }
 
+    // *** Temporary hack to avoid problems with overlapping communication
+    // *** between these reductions and the calculation of deltaCoeffs
+    label comm = UPstream::worldComm + 1;
+
     // Total number of faces.
-    nTotalFaces_ = returnReduce(mesh_.nFaces(), sumOp<label>());
+    nTotalFaces_ = returnReduce
+    (
+        mesh_.nFaces(),
+        sumOp<label>(),
+        Pstream::msgType(),
+        comm
+    );
 
     if (debug)
     {
         Pout<< "globalMeshData : nTotalFaces_:" << nTotalFaces_ << endl;
     }
 
-    nTotalCells_ = returnReduce(mesh_.nCells(), sumOp<label>());
+    nTotalCells_ = returnReduce
+    (
+        mesh_.nCells(),
+        sumOp<label>(),
+        Pstream::msgType(),
+        comm
+    );
 
     if (debug)
     {
         Pout<< "globalMeshData : nTotalCells_:" << nTotalCells_ << endl;
     }
 
-    nTotalPoints_ = returnReduce(mesh_.nPoints(), sumOp<label>());
+    nTotalPoints_ = returnReduce
+    (
+        mesh_.nPoints(),
+        sumOp<label>(),
+        Pstream::msgType(),
+        comm
+    );
 
     if (debug)
     {
diff --git a/src/OpenFOAM/meshes/polyMesh/polyMeshFromShapeMesh.C b/src/OpenFOAM/meshes/polyMesh/polyMeshFromShapeMesh.C
index 9a3e69faf5740036417922052c2f9a4b1509fbf5..62c1877fc16c8575520f6d7c3b3b2eb810db4ffc 100644
--- a/src/OpenFOAM/meshes/polyMesh/polyMeshFromShapeMesh.C
+++ b/src/OpenFOAM/meshes/polyMesh/polyMeshFromShapeMesh.C
@@ -328,9 +328,7 @@ void Foam::polyMesh::setTopology
 
             const label cellInside = curPatchFaceCells[faceI];
 
-            faces_[nFaces] = curFace;
-
-            // get faces of the cell inside
+            // Get faces of the cell inside
             const faceList& facesOfCellInside = cellsFaceShapes[cellInside];
 
             bool found = false;
@@ -366,6 +364,9 @@ void Foam::polyMesh::setTopology
 
                     found = true;
 
+                    // Set the patch face to corresponding cell-face
+                    faces_[nFaces] = facesOfCellInside[cellFaceI];
+
                     cells[cellInside][cellFaceI] = nFaces;
 
                     break;
diff --git a/src/OpenFOAM/primitives/Scalar/doubleScalar/doubleScalar.H b/src/OpenFOAM/primitives/Scalar/doubleScalar/doubleScalar.H
index 2498f5f9cc84bfdc6fd781fbe7182a3d539ca0b6..308994785302345d82895c6b5798bc44bfa7dd8a 100644
--- a/src/OpenFOAM/primitives/Scalar/doubleScalar/doubleScalar.H
+++ b/src/OpenFOAM/primitives/Scalar/doubleScalar/doubleScalar.H
@@ -55,6 +55,7 @@ static const doubleScalar doubleScalarGREAT = 1.0e+15;
 static const doubleScalar doubleScalarVGREAT = 1.0e+300;
 static const doubleScalar doubleScalarROOTVGREAT = 1.0e+150;
 static const doubleScalar doubleScalarSMALL = 1.0e-15;
+static const doubleScalar doubleScalarROOTSMALL = 3.0e-8;
 static const doubleScalar doubleScalarVSMALL = 1.0e-300;
 static const doubleScalar doubleScalarROOTVSMALL = 1.0e-150;
 
diff --git a/src/OpenFOAM/primitives/Scalar/floatScalar/floatScalar.H b/src/OpenFOAM/primitives/Scalar/floatScalar/floatScalar.H
index 31ae9891dd0a50d1811a8de12cadf95c847d80db..1cfb728a235d2b925ada448541415fea2e576588 100644
--- a/src/OpenFOAM/primitives/Scalar/floatScalar/floatScalar.H
+++ b/src/OpenFOAM/primitives/Scalar/floatScalar/floatScalar.H
@@ -55,6 +55,7 @@ static const floatScalar floatScalarGREAT = 1.0e+6;
 static const floatScalar floatScalarVGREAT = 1.0e+37;
 static const floatScalar floatScalarROOTVGREAT = 1.0e+18;
 static const floatScalar floatScalarSMALL = 1.0e-6;
+static const floatScalar floatScalarROOTSMALL = 1.0e-3;
 static const floatScalar floatScalarVSMALL = 1.0e-37;
 static const floatScalar floatScalarROOTVSMALL = 1.0e-18;
 
diff --git a/src/OpenFOAM/primitives/Scalar/scalar/scalar.H b/src/OpenFOAM/primitives/Scalar/scalar/scalar.H
index cb5496a65ed813e2596d00670e26ecc891f37b75..f4a4a0f63ba27fc969d3c6e09dcf4ed85d8db4d7 100644
--- a/src/OpenFOAM/primitives/Scalar/scalar/scalar.H
+++ b/src/OpenFOAM/primitives/Scalar/scalar/scalar.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -53,6 +53,7 @@ namespace Foam
     static const scalar VGREAT = floatScalarVGREAT;
     static const scalar ROOTVGREAT = floatScalarROOTVGREAT;
     static const scalar SMALL = floatScalarSMALL;
+    static const scalar ROOTSMALL = floatScalarROOTSMALL;
     static const scalar VSMALL = floatScalarVSMALL;
     static const scalar ROOTVSMALL = floatScalarROOTVSMALL;
 
@@ -71,6 +72,7 @@ namespace Foam
     static const scalar VGREAT = doubleScalarVGREAT;
     static const scalar ROOTVGREAT = doubleScalarROOTVGREAT;
     static const scalar SMALL = doubleScalarSMALL;
+    static const scalar ROOTSMALL = doubleScalarROOTSMALL;
     static const scalar VSMALL = doubleScalarVSMALL;
     static const scalar ROOTVSMALL = doubleScalarROOTVSMALL;
 
diff --git a/src/OpenFOAM/primitives/functions/DataEntry/CSV/CSV.H b/src/OpenFOAM/primitives/functions/DataEntry/CSV/CSV.H
index 5969339d67ff5afd3480476a7ef10cce3f186311..1d0b0620e906006e0a33208ca14c07223b6fc9e0 100644
--- a/src/OpenFOAM/primitives/functions/DataEntry/CSV/CSV.H
+++ b/src/OpenFOAM/primitives/functions/DataEntry/CSV/CSV.H
@@ -32,7 +32,7 @@ Description
         <entryName> csvFile;
         <entryName>Coeffs
         {
-            nHeaderLine         4;
+            nHeaderLine         4;          // number of header lines
             refColumn           0;          // reference column index
             componentColumns    (1 2 3);    // component column indices
             separator           ",";        // optional (defaults to ",")
diff --git a/src/OpenFOAM/primitives/ints/int32/int32.H b/src/OpenFOAM/primitives/ints/int32/int32.H
index 2bf5e799d2596050e32cd353bd8e6e282db25923..694bfb57f74ae6db62689479ef7ca5c196f18717 100644
--- a/src/OpenFOAM/primitives/ints/int32/int32.H
+++ b/src/OpenFOAM/primitives/ints/int32/int32.H
@@ -136,6 +136,12 @@ public:
 };
 
 
+inline int32_t mag(const int32_t l)
+{
+    return ::abs(l);
+}
+
+
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 } // End namespace Foam
diff --git a/src/OpenFOAM/primitives/ints/int64/int64.H b/src/OpenFOAM/primitives/ints/int64/int64.H
index 3169232a40d3e4ff4666abd50f9632a4ab23a4a1..38cd1057860e0788653b17a94f591e8f9744be10 100644
--- a/src/OpenFOAM/primitives/ints/int64/int64.H
+++ b/src/OpenFOAM/primitives/ints/int64/int64.H
@@ -127,6 +127,12 @@ public:
 };
 
 
+inline int64_t mag(const int64_t l)
+{
+    return ::labs(l);
+}
+
+
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 } // End namespace Foam
diff --git a/src/OpenFOAM/primitives/ints/label/labelSpecific.H b/src/OpenFOAM/primitives/ints/label/labelSpecific.H
index 21e5c7aec24bcb2098a8ba95fdbaf751bde77f33..66fa99d0ccc9a673292b92f0466b3eee82506501 100644
--- a/src/OpenFOAM/primitives/ints/label/labelSpecific.H
+++ b/src/OpenFOAM/primitives/ints/label/labelSpecific.H
@@ -36,15 +36,6 @@ namespace Foam
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-inline label mag(const label l)
-{
-    #if WM_LABEL_SIZE == 32
-        return ::abs(l);
-    #elif WM_LABEL_SIZE == 64
-        return ::labs(l);
-    #endif
-}
-
 inline label sign(const label s)
 {
     return (s >= 0)? 1: -1;
diff --git a/src/TurbulenceModels/compressible/eddyDiffusivity/eddyDiffusivity.C b/src/TurbulenceModels/compressible/EddyDiffusivity/EddyDiffusivity.C
similarity index 71%
rename from src/TurbulenceModels/compressible/eddyDiffusivity/eddyDiffusivity.C
rename to src/TurbulenceModels/compressible/EddyDiffusivity/EddyDiffusivity.C
index fc73f457e8134d2cea169a230753710743901121..1647c88ca8239fd0e909ac8a17be15926cedb6bd 100644
--- a/src/TurbulenceModels/compressible/eddyDiffusivity/eddyDiffusivity.C
+++ b/src/TurbulenceModels/compressible/EddyDiffusivity/EddyDiffusivity.C
@@ -23,13 +23,21 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "eddyDiffusivity.H"
+#include "EddyDiffusivity.H"
 
 // * * * * * * * * * * * * Protected Member Functions  * * * * * * * * * * * //
 
 template<class BasicTurbulenceModel>
-void Foam::eddyDiffusivity<BasicTurbulenceModel>::correctNut()
+void Foam::EddyDiffusivity<BasicTurbulenceModel>::correctNut()
 {
+    // Read Prt if provided
+    Prt_ = dimensioned<scalar>::lookupOrDefault
+    (
+        "Prt",
+        this->coeffDict(),
+        1.0
+    );
+
     alphat_ = this->rho_*this->nut()/Prt_;
     alphat_.correctBoundaryConditions();
 }
@@ -38,10 +46,10 @@ void Foam::eddyDiffusivity<BasicTurbulenceModel>::correctNut()
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
 template<class BasicTurbulenceModel>
-Foam::eddyDiffusivity<BasicTurbulenceModel>::eddyDiffusivity
+Foam::EddyDiffusivity<BasicTurbulenceModel>::EddyDiffusivity
 (
     const word& type,
-    const geometricOneField& alpha,
+    const alphaField& alpha,
     const volScalarField& rho,
     const volVectorField& U,
     const surfaceScalarField& alphaRhoPhi,
@@ -62,23 +70,14 @@ Foam::eddyDiffusivity<BasicTurbulenceModel>::eddyDiffusivity
         propertiesName
     ),
 
-    // Prt_
-    // (
-    //     dimensioned<scalar>::lookupOrAddToDict
-    //     (
-    //         "Prt",
-    //         this->coeffDict_,
-    //         1.0
-    //     )
-    // ),
-
+    // Cannot read Prt yet
     Prt_("Prt", dimless, 1.0),
 
     alphat_
     (
         IOobject
         (
-            "alphat",
+            IOobject::groupName("alphat", U.group()),
             this->runTime_.timeName(),
             this->mesh_,
             IOobject::MUST_READ,
@@ -89,38 +88,10 @@ Foam::eddyDiffusivity<BasicTurbulenceModel>::eddyDiffusivity
 {}
 
 
-// * * * * * * * * * * * * * * * * * Selectors * * * * * * * * * * * * * * * //
-
-template<class BasicTurbulenceModel>
-Foam::autoPtr<Foam::eddyDiffusivity<BasicTurbulenceModel> >
-Foam::eddyDiffusivity<BasicTurbulenceModel>::New
-(
-    const volScalarField& rho,
-    const volVectorField& U,
-    const surfaceScalarField& phi,
-    const transportModel& transport,
-    const word& propertiesName
-)
-{
-    return autoPtr<eddyDiffusivity>
-    (
-        static_cast<eddyDiffusivity*>(
-        BasicTurbulenceModel::New
-        (
-            rho,
-            U,
-            phi,
-            transport,
-            propertiesName
-        ).ptr())
-    );
-}
-
-
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 template<class BasicTurbulenceModel>
-bool Foam::eddyDiffusivity<BasicTurbulenceModel>::read()
+bool Foam::EddyDiffusivity<BasicTurbulenceModel>::read()
 {
     if (BasicTurbulenceModel::read())
     {
@@ -135,4 +106,11 @@ bool Foam::eddyDiffusivity<BasicTurbulenceModel>::read()
 }
 
 
+template<class BasicTurbulenceModel>
+void Foam::EddyDiffusivity<BasicTurbulenceModel>::correctEnergyTransport()
+{
+    EddyDiffusivity<BasicTurbulenceModel>::correctNut();
+}
+
+
 // ************************************************************************* //
diff --git a/src/TurbulenceModels/compressible/eddyDiffusivity/eddyDiffusivity.H b/src/TurbulenceModels/compressible/EddyDiffusivity/EddyDiffusivity.H
similarity index 85%
rename from src/TurbulenceModels/compressible/eddyDiffusivity/eddyDiffusivity.H
rename to src/TurbulenceModels/compressible/EddyDiffusivity/EddyDiffusivity.H
index 0913da84649c6ecbe0491ca71a77fb9df5b65482..82ba1221d91f90deff988277d4d4fd1fd535723c 100644
--- a/src/TurbulenceModels/compressible/eddyDiffusivity/eddyDiffusivity.H
+++ b/src/TurbulenceModels/compressible/EddyDiffusivity/EddyDiffusivity.H
@@ -22,21 +22,19 @@ License
     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
 
 Class
-    Foam::eddyDiffusivity
+    Foam::EddyDiffusivity
 
 Description
     Templated abstract base class for single-phase compressible
     turbulence models.
 
 SourceFiles
-    eddyDiffusivity.C
+    EddyDiffusivity.C
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef eddyDiffusivity_H
-#define eddyDiffusivity_H
-
-#include "CompressibleTurbulenceModel.H"
+#ifndef EddyDiffusivity_H
+#define EddyDiffusivity_H
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -44,11 +42,11 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-               Class eddyDiffusivity Declaration
+               Class EddyDiffusivity Declaration
 \*---------------------------------------------------------------------------*/
 
 template<class BasicTurbulenceModel>
-class eddyDiffusivity
+class EddyDiffusivity
 :
     public BasicTurbulenceModel
 {
@@ -81,10 +79,10 @@ public:
     // Constructors
 
         //- Construct
-        eddyDiffusivity
+        EddyDiffusivity
         (
             const word& type,
-            const geometricOneField& alpha,
+            const alphaField& alpha,
             const volScalarField& rho,
             const volVectorField& U,
             const surfaceScalarField& alphaRhoPhi,
@@ -94,21 +92,8 @@ public:
         );
 
 
-    // Selectors
-
-        //- Return a reference to the selected turbulence model
-        static autoPtr<eddyDiffusivity> New
-        (
-            const volScalarField& rho,
-            const volVectorField& U,
-            const surfaceScalarField& phi,
-            const transportModel& trasportModel,
-            const word& propertiesName = turbulenceModel::propertiesName
-        );
-
-
     //- Destructor
-    virtual ~eddyDiffusivity()
+    virtual ~EddyDiffusivity()
     {}
 
 
@@ -157,6 +142,9 @@ public:
         {
             return this->transport_.alphaEff(alphat(patchi), patchi);
         }
+
+        //- Correct the turbulence thermal diffusivity for energy transport
+        virtual void correctEnergyTransport();
 };
 
 
@@ -167,7 +155,7 @@ public:
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 #ifdef NoRepository
-#   include "eddyDiffusivity.C"
+#   include "EddyDiffusivity.C"
 #endif
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/TurbulenceModels/compressible/Make/files b/src/TurbulenceModels/compressible/Make/files
index 2f6e9f1dd3571823ef23f012b6b18d42c22daf13..c4aab942510cd628afd489cab84fe998245e32d0 100644
--- a/src/TurbulenceModels/compressible/Make/files
+++ b/src/TurbulenceModels/compressible/Make/files
@@ -15,5 +15,6 @@ $(BCs)/convectiveHeatTransfer/convectiveHeatTransferFvPatchScalarField.C
 
 turbulentFluidThermoModels/derivedFvPatchFields/wallFunctions/alphatWallFunctions/alphatWallFunction/alphatWallFunctionFvPatchScalarField.C
 turbulentFluidThermoModels/derivedFvPatchFields/wallFunctions/alphatWallFunctions/alphatJayatillekeWallFunction/alphatJayatillekeWallFunctionFvPatchScalarField.C
+turbulentFluidThermoModels/derivedFvPatchFields/wallFunctions/alphatWallFunctions/alphatPhaseChangeWallFunction/alphatPhaseChangeWallFunctionFvPatchScalarField.C
 
 LIB = $(FOAM_LIBBIN)/libcompressibleTurbulenceModels
diff --git a/src/TurbulenceModels/compressible/thermalDiffusivity/thermalDiffusivity.C b/src/TurbulenceModels/compressible/ThermalDiffusivity/ThermalDiffusivity.C
similarity index 70%
rename from src/TurbulenceModels/compressible/thermalDiffusivity/thermalDiffusivity.C
rename to src/TurbulenceModels/compressible/ThermalDiffusivity/ThermalDiffusivity.C
index 5b25fe8d8e63366d7233af15438efc66379c7183..4a85a59d074422c300e3389db6a4211aebc82ae3 100644
--- a/src/TurbulenceModels/compressible/thermalDiffusivity/thermalDiffusivity.C
+++ b/src/TurbulenceModels/compressible/ThermalDiffusivity/ThermalDiffusivity.C
@@ -23,15 +23,15 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "thermalDiffusivity.H"
+#include "ThermalDiffusivity.H"
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-template<class TransportModel>
-Foam::thermalDiffusivity<TransportModel>::thermalDiffusivity
+template<class BasicTurbulenceModel>
+Foam::ThermalDiffusivity<BasicTurbulenceModel>::ThermalDiffusivity
 (
     const word& type,
-    const geometricOneField& alpha,
+    const alphaField& alpha,
     const volScalarField& rho,
     const volVectorField& U,
     const surfaceScalarField& alphaRhoPhi,
@@ -40,7 +40,7 @@ Foam::thermalDiffusivity<TransportModel>::thermalDiffusivity
     const word& propertiesName
 )
 :
-    CompressibleTurbulenceModel<TransportModel>
+    BasicTurbulenceModel
     (
         type,
         alpha,
@@ -56,9 +56,37 @@ Foam::thermalDiffusivity<TransportModel>::thermalDiffusivity
 
 // * * * * * * * * * * * * * * * * * Selectors * * * * * * * * * * * * * * * //
 
-template<class TransportModel>
-Foam::autoPtr<Foam::thermalDiffusivity<TransportModel> >
-Foam::thermalDiffusivity<TransportModel>::New
+template<class BasicTurbulenceModel>
+Foam::autoPtr<Foam::ThermalDiffusivity<BasicTurbulenceModel> >
+Foam::ThermalDiffusivity<BasicTurbulenceModel>::New
+(
+    const alphaField& alpha,
+    const volScalarField& rho,
+    const volVectorField& U,
+    const surfaceScalarField& phi,
+    const transportModel& transport,
+    const word& propertiesName
+)
+{
+    return autoPtr<ThermalDiffusivity>
+    (
+        static_cast<ThermalDiffusivity*>(
+        BasicTurbulenceModel::New
+        (
+            alpha,
+            rho,
+            U,
+            phi,
+            transport,
+            propertiesName
+        ).ptr())
+    );
+}
+
+
+template<class BasicTurbulenceModel>
+Foam::autoPtr<Foam::ThermalDiffusivity<BasicTurbulenceModel> >
+Foam::ThermalDiffusivity<BasicTurbulenceModel>::New
 (
     const volScalarField& rho,
     const volVectorField& U,
@@ -67,10 +95,10 @@ Foam::thermalDiffusivity<TransportModel>::New
     const word& propertiesName
 )
 {
-    return autoPtr<thermalDiffusivity>
+    return autoPtr<ThermalDiffusivity>
     (
-        static_cast<thermalDiffusivity*>(
-        CompressibleTurbulenceModel<transportModel>::New
+        static_cast<ThermalDiffusivity*>(
+        BasicTurbulenceModel::New
         (
             rho,
             U,
@@ -86,7 +114,7 @@ Foam::thermalDiffusivity<TransportModel>::New
 
 template<class BasicTurbulenceModel>
 Foam::tmp<Foam::volScalarField>
-Foam::thermalDiffusivity<BasicTurbulenceModel>::alphat() const
+Foam::ThermalDiffusivity<BasicTurbulenceModel>::alphat() const
 {
     return tmp<volScalarField>
     (
@@ -109,7 +137,7 @@ Foam::thermalDiffusivity<BasicTurbulenceModel>::alphat() const
 
 template<class BasicTurbulenceModel>
 Foam::tmp<Foam::scalarField>
-Foam::thermalDiffusivity<BasicTurbulenceModel>::alphat
+Foam::ThermalDiffusivity<BasicTurbulenceModel>::alphat
 (
     const label patchi
 ) const
diff --git a/src/TurbulenceModels/compressible/thermalDiffusivity/thermalDiffusivity.H b/src/TurbulenceModels/compressible/ThermalDiffusivity/ThermalDiffusivity.H
similarity index 80%
rename from src/TurbulenceModels/compressible/thermalDiffusivity/thermalDiffusivity.H
rename to src/TurbulenceModels/compressible/ThermalDiffusivity/ThermalDiffusivity.H
index b62cfa2e95ec435399aa6ef0acf90a14dc620cf0..2066e44a1daf176f4e74a088359358f4636bee30 100644
--- a/src/TurbulenceModels/compressible/thermalDiffusivity/thermalDiffusivity.H
+++ b/src/TurbulenceModels/compressible/ThermalDiffusivity/ThermalDiffusivity.H
@@ -22,21 +22,19 @@ License
     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
 
 Class
-    Foam::thermalDiffusivity
+    Foam::ThermalDiffusivity
 
 Description
-    Templated abstract base class for single-phase compressible
-    turbulence models.
+    Templated wrapper class to provide compressible turbulence models
+    thermal diffusivity based thermal transport.
 
 SourceFiles
-    thermalDiffusivity.C
+    ThermalDiffusivity.C
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef thermalDiffusivity_H
-#define thermalDiffusivity_H
-
-#include "CompressibleTurbulenceModel.H"
+#ifndef ThermalDiffusivity_H
+#define ThermalDiffusivity_H
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -44,29 +42,29 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-               Class thermalDiffusivity Declaration
+               Class ThermalDiffusivity Declaration
 \*---------------------------------------------------------------------------*/
 
-template<class TransportModel>
-class thermalDiffusivity
+template<class BasicTurbulenceModel>
+class ThermalDiffusivity
 :
-    public CompressibleTurbulenceModel<TransportModel>
+    public BasicTurbulenceModel
 {
 
 public:
 
-    typedef geometricOneField alphaField;
+    typedef typename BasicTurbulenceModel::alphaField alphaField;
     typedef volScalarField rhoField;
-    typedef TransportModel transportModel;
+    typedef typename BasicTurbulenceModel::transportModel transportModel;
 
 
     // Constructors
 
         //- Construct
-        thermalDiffusivity
+        ThermalDiffusivity
         (
             const word& type,
-            const geometricOneField& alpha,
+            const alphaField& alpha,
             const volScalarField& rho,
             const volVectorField& U,
             const surfaceScalarField& alphaRhoPhi,
@@ -79,7 +77,19 @@ public:
     // Selectors
 
         //- Return a reference to the selected turbulence model
-        static autoPtr<thermalDiffusivity> New
+        static autoPtr<ThermalDiffusivity> New
+        (
+            const alphaField& alpha,
+            const volScalarField& rho,
+            const volVectorField& U,
+            const surfaceScalarField& phi,
+            const transportModel& trasportModel,
+            const word& propertiesName = turbulenceModel::propertiesName
+        );
+
+
+        //- Return a reference to the selected turbulence model
+        static autoPtr<ThermalDiffusivity> New
         (
             const volScalarField& rho,
             const volVectorField& U,
@@ -90,7 +100,7 @@ public:
 
 
     //- Destructor
-    virtual ~thermalDiffusivity()
+    virtual ~ThermalDiffusivity()
     {}
 
 
@@ -166,7 +176,7 @@ public:
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 #ifdef NoRepository
-#   include "thermalDiffusivity.C"
+#   include "ThermalDiffusivity.C"
 #endif
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/TurbulenceModels/compressible/compressibleTurbulenceModel.C b/src/TurbulenceModels/compressible/compressibleTurbulenceModel.C
index 1fbebad3eea3df415f03951439da42b7f7734ae8..ae0462081a010ed28e1c8f52ac5587872626bc93 100644
--- a/src/TurbulenceModels/compressible/compressibleTurbulenceModel.C
+++ b/src/TurbulenceModels/compressible/compressibleTurbulenceModel.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2013-2014 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2013-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -73,4 +73,8 @@ Foam::compressibleTurbulenceModel::phi() const
 }
 
 
+void Foam::compressibleTurbulenceModel::correctEnergyTransport()
+{}
+
+
 // ************************************************************************* //
diff --git a/src/TurbulenceModels/compressible/compressibleTurbulenceModel.H b/src/TurbulenceModels/compressible/compressibleTurbulenceModel.H
index 8ecf2f51fff73a40c8e106183ad1e0a42c086a1b..a952fbeadc846ed1603de09f06af2da38a39364e 100644
--- a/src/TurbulenceModels/compressible/compressibleTurbulenceModel.H
+++ b/src/TurbulenceModels/compressible/compressibleTurbulenceModel.H
@@ -120,6 +120,9 @@ public:
 
         //- Return the source term for the momentum equation
         virtual tmp<fvVectorMatrix> divDevRhoReff(volVectorField& U) const = 0;
+
+        //- Correct the turbulence thermal diffusivity for energy transport
+        virtual void correctEnergyTransport();
 };
 
 
diff --git a/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/convectiveHeatTransfer/convectiveHeatTransferFvPatchScalarField.C b/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/convectiveHeatTransfer/convectiveHeatTransferFvPatchScalarField.C
index 02e87c7a776e08424112330dc5db2a793334a28c..8ace068f487521f17f25fb5ba8d32b8fd30bc4e7 100644
--- a/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/convectiveHeatTransfer/convectiveHeatTransferFvPatchScalarField.C
+++ b/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/convectiveHeatTransfer/convectiveHeatTransferFvPatchScalarField.C
@@ -110,14 +110,15 @@ void convectiveHeatTransferFvPatchScalarField::updateCoeffs()
 
     const label patchi = patch().index();
 
-    const turbulenceModel& turbModel = db().lookupObject<turbulenceModel>
-    (
-        IOobject::groupName
+    const compressible::turbulenceModel& turbModel =
+        db().lookupObject<compressible::turbulenceModel>
         (
-            turbulenceModel::propertiesName,
-            dimensionedInternalField().group()
-        )
-    );
+            IOobject::groupName
+            (
+                compressible::turbulenceModel::propertiesName,
+                dimensionedInternalField().group()
+            )
+        );
 
     const scalarField alphaEffw(turbModel.alphaEff(patchi));
 
diff --git a/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/totalFlowRateAdvectiveDiffusive/totalFlowRateAdvectiveDiffusiveFvPatchScalarField.C b/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/totalFlowRateAdvectiveDiffusive/totalFlowRateAdvectiveDiffusiveFvPatchScalarField.C
index 646fbed6620ef1eaac5cde7bd8dc0a730e5e2621..d3d5116348a1b46d51ab227379794b508dae23dc 100644
--- a/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/totalFlowRateAdvectiveDiffusive/totalFlowRateAdvectiveDiffusiveFvPatchScalarField.C
+++ b/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/totalFlowRateAdvectiveDiffusive/totalFlowRateAdvectiveDiffusiveFvPatchScalarField.C
@@ -32,6 +32,7 @@ License
 #include "turbulentFluidThermoModel.H"
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
 Foam::totalFlowRateAdvectiveDiffusiveFvPatchScalarField::
 totalFlowRateAdvectiveDiffusiveFvPatchScalarField
 (
@@ -153,11 +154,12 @@ void Foam::totalFlowRateAdvectiveDiffusiveFvPatchScalarField::updateCoeffs()
 
     const label patchI = patch().index();
 
-    const LESModel<eddyDiffusivity<compressible::turbulenceModel> >& turbModel =
-    db().lookupObject
-    <
-        LESModel<eddyDiffusivity<compressible::turbulenceModel> >
-    >   (
+    const LESModel<EddyDiffusivity<compressible::turbulenceModel> >& turbModel =
+        db().lookupObject
+        <
+            LESModel<EddyDiffusivity<compressible::turbulenceModel> >
+        >
+        (
             IOobject::groupName
             (
                 turbulenceModel::propertiesName,
diff --git a/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/wallFunctions/alphatWallFunctions/alphatJayatillekeWallFunction/alphatJayatillekeWallFunctionFvPatchScalarField.C b/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/wallFunctions/alphatWallFunctions/alphatJayatillekeWallFunction/alphatJayatillekeWallFunctionFvPatchScalarField.C
index 98a5a05f5e75c94032da7d005f00f69c67dba5ae..7a9983fc20f987f6cff4b507d75bfcbe5f4b142e 100644
--- a/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/wallFunctions/alphatWallFunctions/alphatJayatillekeWallFunction/alphatJayatillekeWallFunctionFvPatchScalarField.C
+++ b/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/wallFunctions/alphatWallFunctions/alphatJayatillekeWallFunction/alphatJayatillekeWallFunctionFvPatchScalarField.C
@@ -200,15 +200,15 @@ void alphatJayatillekeWallFunctionFvPatchScalarField::updateCoeffs()
     const label patchi = patch().index();
 
     // Retrieve turbulence properties from model
-
-    const turbulenceModel& turbModel = db().lookupObject<turbulenceModel>
-    (
-        IOobject::groupName
+    const compressible::turbulenceModel& turbModel =
+        db().lookupObject<compressible::turbulenceModel>
         (
-            turbulenceModel::propertiesName,
-            dimensionedInternalField().group()
-        )
-    );
+            IOobject::groupName
+            (
+                compressible::turbulenceModel::propertiesName,
+                dimensionedInternalField().group()
+            )
+        );
 
     const scalar Cmu25 = pow025(Cmu_);
 
diff --git a/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/wallFunctions/alphatWallFunctions/alphatPhaseChangeWallFunction/alphatPhaseChangeWallFunctionFvPatchScalarField.C b/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/wallFunctions/alphatWallFunctions/alphatPhaseChangeWallFunction/alphatPhaseChangeWallFunctionFvPatchScalarField.C
new file mode 100644
index 0000000000000000000000000000000000000000..0eb70aabbc5d313c898030ead2d7ed0d4203e51f
--- /dev/null
+++ b/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/wallFunctions/alphatWallFunctions/alphatPhaseChangeWallFunction/alphatPhaseChangeWallFunctionFvPatchScalarField.C
@@ -0,0 +1,127 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "alphatPhaseChangeWallFunctionFvPatchScalarField.H"
+#include "fvPatchFieldMapper.H"
+#include "volFields.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace compressible
+{
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+defineTypeNameAndDebug(alphatPhaseChangeWallFunctionFvPatchScalarField,0);
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+alphatPhaseChangeWallFunctionFvPatchScalarField::
+alphatPhaseChangeWallFunctionFvPatchScalarField
+(
+    const fvPatch& p,
+    const DimensionedField<scalar, volMesh>& iF
+)
+:
+    fixedValueFvPatchScalarField(p, iF),
+    dmdt_(p.size(), 0.0)
+{}
+
+
+alphatPhaseChangeWallFunctionFvPatchScalarField::
+alphatPhaseChangeWallFunctionFvPatchScalarField
+(
+    const fvPatch& p,
+    const DimensionedField<scalar, volMesh>& iF,
+    const dictionary& dict
+)
+:
+    fixedValueFvPatchScalarField(p, iF, dict),
+    dmdt_(p.size(), 0.0)
+{
+    if (dict.found("dmdt"))
+    {
+        dmdt_ = scalarField("dmdt", dict, p.size());
+    }
+}
+
+
+alphatPhaseChangeWallFunctionFvPatchScalarField::
+alphatPhaseChangeWallFunctionFvPatchScalarField
+(
+    const alphatPhaseChangeWallFunctionFvPatchScalarField& ptf,
+    const fvPatch& p,
+    const DimensionedField<scalar, volMesh>& iF,
+    const fvPatchFieldMapper& mapper
+)
+:
+    fixedValueFvPatchScalarField(ptf, p, iF, mapper),
+    dmdt_(ptf.dmdt_, mapper)
+{}
+
+
+alphatPhaseChangeWallFunctionFvPatchScalarField::
+alphatPhaseChangeWallFunctionFvPatchScalarField
+(
+    const alphatPhaseChangeWallFunctionFvPatchScalarField& awfpsf
+)
+:
+    fixedValueFvPatchScalarField(awfpsf),
+    dmdt_(awfpsf.dmdt_)
+{}
+
+
+alphatPhaseChangeWallFunctionFvPatchScalarField::
+alphatPhaseChangeWallFunctionFvPatchScalarField
+(
+    const alphatPhaseChangeWallFunctionFvPatchScalarField& awfpsf,
+    const DimensionedField<scalar, volMesh>& iF
+)
+:
+    fixedValueFvPatchScalarField(awfpsf, iF),
+    dmdt_(awfpsf.dmdt_)
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+void alphatPhaseChangeWallFunctionFvPatchScalarField::write(Ostream& os) const
+{
+    fvPatchField<scalar>::write(os);
+    dmdt_.writeEntry("dmdt", os);
+    writeEntry("value", os);
+}
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace compressible
+} // End namespace Foam
+
+// ************************************************************************* //
diff --git a/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/wallFunctions/alphatWallFunctions/alphatPhaseChangeWallFunction/alphatPhaseChangeWallFunctionFvPatchScalarField.H b/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/wallFunctions/alphatWallFunctions/alphatPhaseChangeWallFunction/alphatPhaseChangeWallFunctionFvPatchScalarField.H
new file mode 100644
index 0000000000000000000000000000000000000000..4d1dd4f15b76c7ae8bdb7d60df7b24cbeb438efa
--- /dev/null
+++ b/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/wallFunctions/alphatWallFunctions/alphatPhaseChangeWallFunction/alphatPhaseChangeWallFunctionFvPatchScalarField.H
@@ -0,0 +1,147 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::compressible::alphatPhaseChangeWallFunctionFvPatchScalarField
+
+Group
+    grpCmpWallFunctions
+
+Description
+    Abstract base-class for all alphatWallFunctions supporting phase-change.
+
+SeeAlso
+    Foam::alphatWallFunction
+
+SourceFiles
+    alphatPhaseChangeWallFunctionFvPatchScalarField.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef compressibleAlphatPhaseChangeWallFunctionFvPatchScalarField_H
+#define compressibleAlphatPhaseChangeWallFunctionFvPatchScalarField_H
+
+#include "fixedValueFvPatchFields.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace compressible
+{
+
+/*---------------------------------------------------------------------------*\
+            Class alphatPhaseChangeWallFunctionFvPatchScalarField Declaration
+\*---------------------------------------------------------------------------*/
+
+class alphatPhaseChangeWallFunctionFvPatchScalarField
+:
+    public fixedValueFvPatchScalarField
+{
+protected:
+
+    // Protected data
+
+        //- Rate of phase-change
+        scalarField dmdt_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("compressible::alphatPhaseChangeWallFunction");
+
+
+    // Constructors
+
+        //- Construct from patch and internal field
+        alphatPhaseChangeWallFunctionFvPatchScalarField
+        (
+            const fvPatch&,
+            const DimensionedField<scalar, volMesh>&
+        );
+
+        //- Construct from patch, internal field and dictionary
+        alphatPhaseChangeWallFunctionFvPatchScalarField
+        (
+            const fvPatch&,
+            const DimensionedField<scalar, volMesh>&,
+            const dictionary&
+        );
+
+        //- Construct by mapping given
+        //  alphatPhaseChangeWallFunctionFvPatchScalarField
+        //  onto a new patch
+        alphatPhaseChangeWallFunctionFvPatchScalarField
+        (
+            const alphatPhaseChangeWallFunctionFvPatchScalarField&,
+            const fvPatch&,
+            const DimensionedField<scalar, volMesh>&,
+            const fvPatchFieldMapper&
+        );
+
+        //- Construct as copy
+        alphatPhaseChangeWallFunctionFvPatchScalarField
+        (
+            const alphatPhaseChangeWallFunctionFvPatchScalarField&
+        );
+
+        //- Construct as copy setting internal field reference
+        alphatPhaseChangeWallFunctionFvPatchScalarField
+        (
+            const alphatPhaseChangeWallFunctionFvPatchScalarField&,
+            const DimensionedField<scalar, volMesh>&
+        );
+
+
+    // Member functions
+
+        //- Return the rate of phase-change
+        const scalarField& dmdt() const
+        {
+            return dmdt_;
+        }
+
+        // Evaluation functions
+
+            //- Update the coefficients associated with the patch field
+            virtual void updateCoeffs() = 0;
+
+
+        // I-O
+
+            //- Write
+            virtual void write(Ostream&) const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace compressible
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/wallFunctions/alphatWallFunctions/alphatWallFunction/alphatWallFunctionFvPatchScalarField.C b/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/wallFunctions/alphatWallFunctions/alphatWallFunction/alphatWallFunctionFvPatchScalarField.C
index 90d2236005691bcda5e309cc602d7b304826703c..ece3ac9e36dd897524af892cd6dc08360ccd3a78 100644
--- a/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/wallFunctions/alphatWallFunctions/alphatWallFunction/alphatWallFunctionFvPatchScalarField.C
+++ b/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/wallFunctions/alphatWallFunctions/alphatWallFunction/alphatWallFunctionFvPatchScalarField.C
@@ -24,6 +24,7 @@ License
 \*---------------------------------------------------------------------------*/
 
 #include "alphatWallFunctionFvPatchScalarField.H"
+#include "compressibleTurbulenceModel.H"
 #include "fvPatchFieldMapper.H"
 #include "volFields.H"
 #include "addToRunTimeSelectionTable.H"
@@ -44,8 +45,6 @@ alphatWallFunctionFvPatchScalarField::alphatWallFunctionFvPatchScalarField
 )
 :
     fixedValueFvPatchScalarField(p, iF),
-    rhoName_("rho"),
-    nutName_("nut"),
     Prt_(0.85)
 {}
 
@@ -59,8 +58,6 @@ alphatWallFunctionFvPatchScalarField::alphatWallFunctionFvPatchScalarField
 )
 :
     fixedValueFvPatchScalarField(ptf, p, iF, mapper),
-    rhoName_(ptf.rhoName_),
-    nutName_(ptf.nutName_),
     Prt_(ptf.Prt_)
 {}
 
@@ -73,8 +70,6 @@ alphatWallFunctionFvPatchScalarField::alphatWallFunctionFvPatchScalarField
 )
 :
     fixedValueFvPatchScalarField(p, iF, dict),
-    rhoName_(dict.lookupOrDefault<word>("rho", "rho")),
-    nutName_(dict.lookupOrDefault<word>("nut", "nut")),
     Prt_(dict.lookupOrDefault<scalar>("Prt", 0.85))
 {}
 
@@ -85,8 +80,6 @@ alphatWallFunctionFvPatchScalarField::alphatWallFunctionFvPatchScalarField
 )
 :
     fixedValueFvPatchScalarField(awfpsf),
-    rhoName_(awfpsf.rhoName_),
-    nutName_(awfpsf.nutName_),
     Prt_(awfpsf.Prt_)
 {}
 
@@ -98,8 +91,6 @@ alphatWallFunctionFvPatchScalarField::alphatWallFunctionFvPatchScalarField
 )
 :
     fixedValueFvPatchScalarField(awfpsf, iF),
-    rhoName_(awfpsf.rhoName_),
-    nutName_(awfpsf.nutName_),
     Prt_(awfpsf.Prt_)
 {}
 
@@ -113,13 +104,23 @@ void alphatWallFunctionFvPatchScalarField::updateCoeffs()
         return;
     }
 
-    const scalarField& rhow =
-        patch().lookupPatchField<volScalarField, scalar>(rhoName_);
+    const label patchi = patch().index();
 
-    const scalarField& nutw =
-        patch().lookupPatchField<volScalarField, scalar>(nutName_);
+    // Retrieve turbulence properties from model
+    const compressibleTurbulenceModel& turbModel =
+        db().lookupObject<compressibleTurbulenceModel>
+        (
+            IOobject::groupName
+            (
+                compressibleTurbulenceModel::propertiesName,
+                dimensionedInternalField().group()
+            )
+        );
 
-    operator==(rhow*nutw/Prt_);
+    const scalarField& rhow = turbModel.rho().boundaryField()[patchi];
+    const tmp<scalarField> tnutw = turbModel.nut(patchi);
+
+    operator==(rhow*tnutw/Prt_);
 
     fixedValueFvPatchScalarField::updateCoeffs();
 }
@@ -128,8 +129,6 @@ void alphatWallFunctionFvPatchScalarField::updateCoeffs()
 void alphatWallFunctionFvPatchScalarField::write(Ostream& os) const
 {
     fvPatchField<scalar>::write(os);
-    writeEntryIfDifferent<word>(os, "rho", "rho", rhoName_);
-    writeEntryIfDifferent<word>(os, "nut", "nut", nutName_);
     os.writeKeyword("Prt") << Prt_ << token::END_STATEMENT << nl;
     writeEntry("value", os);
 }
diff --git a/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/wallFunctions/alphatWallFunctions/alphatWallFunction/alphatWallFunctionFvPatchScalarField.H b/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/wallFunctions/alphatWallFunctions/alphatWallFunction/alphatWallFunctionFvPatchScalarField.H
index f44ee6b8cf13c048843de3e88f813883a16334a9..308128ecce8a13f67e86cf8eedc2132824c73200 100644
--- a/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/wallFunctions/alphatWallFunctions/alphatWallFunction/alphatWallFunctionFvPatchScalarField.H
+++ b/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/wallFunctions/alphatWallFunctions/alphatWallFunction/alphatWallFunctionFvPatchScalarField.H
@@ -95,12 +95,6 @@ class alphatWallFunctionFvPatchScalarField
 {
     // Private data
 
-        //- Name of density field (default = rho)
-        word rhoName_;
-
-        //- Name of turbulent viscosity field (default = nut)
-        word nutName_;
-
         //- Turbulent Prandtl number (default = 0.85)
         scalar Prt_;
 
diff --git a/src/TurbulenceModels/compressible/turbulentFluidThermoModels/makeTurbulenceModel.H b/src/TurbulenceModels/compressible/turbulentFluidThermoModels/makeTurbulenceModel.H
index 12839d7c6bc849b743d94b494b3c90bc89da0c4d..2bf0664c1631acd35c2f7fb4bdeca6b4805dccea 100644
--- a/src/TurbulenceModels/compressible/turbulentFluidThermoModels/makeTurbulenceModel.H
+++ b/src/TurbulenceModels/compressible/turbulentFluidThermoModels/makeTurbulenceModel.H
@@ -23,7 +23,8 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#define makeBaseTurbulenceModel(Alpha, Rho, baseModel, BaseModel, Transport)   \
+#define makeBaseTurbulenceModel(                                               \
+    Alpha, Rho, baseModel, BaseModel, TDModel, Transport)                      \
                                                                                \
     namespace Foam                                                             \
     {                                                                          \
@@ -41,7 +42,8 @@ License
             dictionary                                                         \
         );                                                                     \
                                                                                \
-        typedef BaseModel<Transport> Transport##BaseModel;                     \
+        typedef TDModel<BaseModel<Transport> >                                 \
+            Transport##BaseModel;                                              \
                                                                                \
                                                                                \
         typedef laminar<Transport##BaseModel> Laminar##Transport##BaseModel;   \
@@ -56,7 +58,7 @@ License
         );                                                                     \
                                                                                \
                                                                                \
-        typedef RASModel<eddyDiffusivity<Transport##BaseModel> >               \
+        typedef RASModel<EddyDiffusivity<Transport##BaseModel> >               \
             RAS##Transport##BaseModel;                                         \
                                                                                \
         defineNamedTemplateTypeNameAndDebug(RAS##Transport##BaseModel, 0);     \
@@ -72,7 +74,7 @@ License
         );                                                                     \
                                                                                \
                                                                                \
-        typedef LESModel<eddyDiffusivity<Transport##BaseModel> >               \
+        typedef LESModel<EddyDiffusivity<Transport##BaseModel> >               \
             LES##Transport##BaseModel;                                         \
                                                                                \
         defineNamedTemplateTypeNameAndDebug(LES##Transport##BaseModel, 0);     \
@@ -90,7 +92,7 @@ License
 
 
 #define makeTemplatedTurbulenceModel(BaseModel, SType, Type)                   \
-    typedef Foam::SType##Models::Type<Foam::eddyDiffusivity<Foam::BaseModel> > \
+    typedef Foam::SType##Models::Type<Foam::EddyDiffusivity<Foam::BaseModel> > \
         Type##SType##BaseModel;                                                \
     defineNamedTemplateTypeNameAndDebug(Type##SType##BaseModel, 0);            \
                                                                                \
@@ -98,7 +100,7 @@ License
     {                                                                          \
         namespace SType##Models                                                \
         {                                                                      \
-            typedef Type<eddyDiffusivity<BaseModel> > Type##SType##BaseModel;  \
+            typedef Type<EddyDiffusivity<BaseModel> > Type##SType##BaseModel;  \
                                                                                \
             addToRunTimeSelectionTable                                         \
             (                                                                  \
diff --git a/src/TurbulenceModels/compressible/turbulentFluidThermoModels/turbulentFluidThermoModel.H b/src/TurbulenceModels/compressible/turbulentFluidThermoModels/turbulentFluidThermoModel.H
index 7725dee9717de05d7a2a9bacfa98d1a09a542d12..da111a9907013ea200c2b754901c978bae5a5499 100644
--- a/src/TurbulenceModels/compressible/turbulentFluidThermoModels/turbulentFluidThermoModel.H
+++ b/src/TurbulenceModels/compressible/turbulentFluidThermoModels/turbulentFluidThermoModel.H
@@ -43,8 +43,8 @@ SourceFiles
 #define turbulentFluidThermoModel_H
 
 #include "SpecificCompressibleTurbulenceModel.H"
-#include "thermalDiffusivity.H"
-#include "eddyDiffusivity.H"
+#include "ThermalDiffusivity.H"
+#include "EddyDiffusivity.H"
 #include "RASModel.H"
 #include "LESModel.H"
 #include "fluidThermo.H"
@@ -55,16 +55,17 @@ namespace Foam
 {
     namespace compressible
     {
-        typedef thermalDiffusivity<fluidThermo> turbulenceModel;
+        typedef ThermalDiffusivity<CompressibleTurbulenceModel<fluidThermo> >
+            turbulenceModel;
 
         typedef SpecificCompressibleTurbulenceModel
         <
-            RASModel<eddyDiffusivity<turbulenceModel> >
+            RASModel<EddyDiffusivity<turbulenceModel> >
         > RASModel;
 
         typedef SpecificCompressibleTurbulenceModel
         <
-            LESModel<eddyDiffusivity<turbulenceModel> >
+            LESModel<EddyDiffusivity<turbulenceModel> >
         > LESModel;
     }
 }
diff --git a/src/TurbulenceModels/compressible/turbulentFluidThermoModels/turbulentFluidThermoModels.C b/src/TurbulenceModels/compressible/turbulentFluidThermoModels/turbulentFluidThermoModels.C
index ec6a3eb4dbcafeb7027dc320e6c2093a396a2c21..db2d4140700320b205c91b2c77a538a17314b15d 100644
--- a/src/TurbulenceModels/compressible/turbulentFluidThermoModels/turbulentFluidThermoModels.C
+++ b/src/TurbulenceModels/compressible/turbulentFluidThermoModels/turbulentFluidThermoModels.C
@@ -23,13 +23,14 @@ License
 
 \*---------------------------------------------------------------------------*/
 
+#include "CompressibleTurbulenceModel.H"
 #include "compressibleTransportModel.H"
 #include "fluidThermo.H"
 #include "addToRunTimeSelectionTable.H"
 #include "makeTurbulenceModel.H"
 
-#include "thermalDiffusivity.H"
-#include "eddyDiffusivity.H"
+#include "ThermalDiffusivity.H"
+#include "EddyDiffusivity.H"
 
 #include "laminar.H"
 #include "RASModel.H"
@@ -42,17 +43,18 @@ makeBaseTurbulenceModel
     geometricOneField,
     volScalarField,
     compressibleTurbulenceModel,
-    thermalDiffusivity,
+    CompressibleTurbulenceModel,
+    ThermalDiffusivity,
     fluidThermo
 );
 
 #define makeRASModel(Type)                                                     \
     makeTemplatedTurbulenceModel                                               \
-    (fluidThermothermalDiffusivity, RAS, Type)
+    (fluidThermoCompressibleTurbulenceModel, RAS, Type)
 
 #define makeLESModel(Type)                                                     \
     makeTemplatedTurbulenceModel                                               \
-    (fluidThermothermalDiffusivity, LES, Type)
+    (fluidThermoCompressibleTurbulenceModel, LES, Type)
 
 
 // -------------------------------------------------------------------------- //
diff --git a/src/TurbulenceModels/turbulenceModels/LES/LESModel/LESModel.C b/src/TurbulenceModels/turbulenceModels/LES/LESModel/LESModel.C
index 48c4cc0bd97894cabd780e3b33cead75a43b26f7..9955478f419b2bbc6c11978a01e808eb4ebda1df 100644
--- a/src/TurbulenceModels/turbulenceModels/LES/LESModel/LESModel.C
+++ b/src/TurbulenceModels/turbulenceModels/LES/LESModel/LESModel.C
@@ -75,8 +75,8 @@ Foam::LESModel<BasicTurbulenceModel>::LESModel
         (
             "kMin",
             LESDict_,
-            SMALL,
-            sqr(dimVelocity)
+            sqr(dimVelocity),
+            SMALL
         )
     ),
 
diff --git a/src/TurbulenceModels/turbulenceModels/RAS/RASModel/RASModel.C b/src/TurbulenceModels/turbulenceModels/RAS/RASModel/RASModel.C
index 3e53f4f4145969f23298712ae49778e3856277a0..240c0870df11d4ac5ced130c8541020dec83b038 100644
--- a/src/TurbulenceModels/turbulenceModels/RAS/RASModel/RASModel.C
+++ b/src/TurbulenceModels/turbulenceModels/RAS/RASModel/RASModel.C
@@ -75,8 +75,8 @@ Foam::RASModel<BasicTurbulenceModel>::RASModel
         (
             "kMin",
             RASDict_,
-            SMALL,
-            sqr(dimVelocity)
+            sqr(dimVelocity),
+            SMALL
         )
     ),
 
@@ -86,8 +86,8 @@ Foam::RASModel<BasicTurbulenceModel>::RASModel
         (
             "epsilonMin",
             RASDict_,
-            SMALL,
-            kMin_.dimensions()/dimTime
+            kMin_.dimensions()/dimTime,
+            SMALL
         )
     ),
 
@@ -97,8 +97,8 @@ Foam::RASModel<BasicTurbulenceModel>::RASModel
         (
             "omegaMin",
             RASDict_,
-            SMALL,
-            dimless/dimTime
+            dimless/dimTime,
+            SMALL
         )
     )
 {
diff --git a/src/TurbulenceModels/turbulenceModels/RAS/kOmegaSST/kOmegaSST.H b/src/TurbulenceModels/turbulenceModels/RAS/kOmegaSST/kOmegaSST.H
index e3a3fcd3327468270110e23200f0208e7ca1f595..1bbbedc91df55a2e51dc9f80214520f217564d2d 100644
--- a/src/TurbulenceModels/turbulenceModels/RAS/kOmegaSST/kOmegaSST.H
+++ b/src/TurbulenceModels/turbulenceModels/RAS/kOmegaSST/kOmegaSST.H
@@ -141,8 +141,6 @@ protected:
             dimensionedScalar alphaOmega1_;
             dimensionedScalar alphaOmega2_;
 
-            dimensionedScalar Prt_;
-
             dimensionedScalar gamma1_;
             dimensionedScalar gamma2_;
 
diff --git a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFvMesh.C b/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFvMesh.C
index 030fdea85dfadddf8e37bef9ecb7f7770ecb819e..d7118782a51126d1aed719218724428fdbf04953 100644
--- a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFvMesh.C
+++ b/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFvMesh.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -123,9 +123,8 @@ Foam::solidBodyMotionFvMesh::solidBodyMotionFvMesh(const IOobject& io)
             FatalErrorIn
             (
                 "solidBodyMotionFvMesh::solidBodyMotionFvMesh(const IOobject&)"
-            )
-                << "Unable to find cellZone " << cellZoneName
-                << ".  Valid celLZones are:"
+            )   << "Unable to find cellZone " << cellZoneName
+                << ".  Valid cellZones are:"
                 << cellZones().names()
                 << exit(FatalError);
         }
diff --git a/src/finiteVolume/fields/fvPatchFields/basic/transform/transformFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/basic/transform/transformFvPatchField.C
index 2af9131b02b8a6a50d22e176d42e36ecff0b6621..901c81e9cc34a35dbe9288e39aa6eddaa066f885 100644
--- a/src/finiteVolume/fields/fvPatchFields/basic/transform/transformFvPatchField.C
+++ b/src/finiteVolume/fields/fvPatchFields/basic/transform/transformFvPatchField.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -27,15 +27,10 @@ License
 #include "IOstreams.H"
 #include "transformField.H"
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-namespace Foam
-{
-
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 template<class Type>
-transformFvPatchField<Type>::transformFvPatchField
+Foam::transformFvPatchField<Type>::transformFvPatchField
 (
     const fvPatch& p,
     const DimensionedField<Type, volMesh>& iF
@@ -46,7 +41,7 @@ transformFvPatchField<Type>::transformFvPatchField
 
 
 template<class Type>
-transformFvPatchField<Type>::transformFvPatchField
+Foam::transformFvPatchField<Type>::transformFvPatchField
 (
     const transformFvPatchField<Type>& ptf,
     const fvPatch& p,
@@ -59,7 +54,7 @@ transformFvPatchField<Type>::transformFvPatchField
 
 
 template<class Type>
-transformFvPatchField<Type>::transformFvPatchField
+Foam::transformFvPatchField<Type>::transformFvPatchField
 (
     const fvPatch& p,
     const DimensionedField<Type, volMesh>& iF,
@@ -71,7 +66,7 @@ transformFvPatchField<Type>::transformFvPatchField
 
 
 template<class Type>
-transformFvPatchField<Type>::transformFvPatchField
+Foam::transformFvPatchField<Type>::transformFvPatchField
 (
     const transformFvPatchField<Type>& ptf
 )
@@ -81,7 +76,7 @@ transformFvPatchField<Type>::transformFvPatchField
 
 
 template<class Type>
-transformFvPatchField<Type>::transformFvPatchField
+Foam::transformFvPatchField<Type>::transformFvPatchField
 (
     const transformFvPatchField<Type>& ptf,
     const DimensionedField<Type, volMesh>& iF
@@ -94,7 +89,8 @@ transformFvPatchField<Type>::transformFvPatchField
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 template<class Type>
-tmp<Field<Type> > transformFvPatchField<Type>::valueInternalCoeffs
+Foam::tmp<Foam::Field<Type> >
+Foam::transformFvPatchField<Type>::valueInternalCoeffs
 (
     const tmp<scalarField>&
 ) const
@@ -104,7 +100,8 @@ tmp<Field<Type> > transformFvPatchField<Type>::valueInternalCoeffs
 
 
 template<class Type>
-tmp<Field<Type> > transformFvPatchField<Type>::valueBoundaryCoeffs
+Foam::tmp<Foam::Field<Type> >
+Foam::transformFvPatchField<Type>::valueBoundaryCoeffs
 (
     const tmp<scalarField>&
 ) const
@@ -120,14 +117,16 @@ tmp<Field<Type> > transformFvPatchField<Type>::valueBoundaryCoeffs
 
 
 template<class Type>
-tmp<Field<Type> > transformFvPatchField<Type>::gradientInternalCoeffs() const
+Foam::tmp<Foam::Field<Type> >
+Foam::transformFvPatchField<Type>::gradientInternalCoeffs() const
 {
     return -this->patch().deltaCoeffs()*snGradTransformDiag();
 }
 
 
 template<class Type>
-tmp<Field<Type> > transformFvPatchField<Type>::gradientBoundaryCoeffs() const
+Foam::tmp<Foam::Field<Type> >
+Foam::transformFvPatchField<Type>::gradientBoundaryCoeffs() const
 {
     return
         snGrad()
@@ -138,7 +137,7 @@ tmp<Field<Type> > transformFvPatchField<Type>::gradientBoundaryCoeffs() const
 // * * * * * * * * * * * * * * * Member Operators  * * * * * * * * * * * * * //
 
 template<class Type>
-void transformFvPatchField<Type>::operator=
+void Foam::transformFvPatchField<Type>::operator=
 (
     const fvPatchField<Type>& ptf
 )
@@ -147,8 +146,4 @@ void transformFvPatchField<Type>::operator=
 }
 
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-} // End namespace Foam
-
 // ************************************************************************* //
diff --git a/src/finiteVolume/fields/fvPatchFields/basic/transform/transformFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/basic/transform/transformFvPatchField.H
index 0eab206104500c5517cee3c591fc1e17dd23f2fc..76174f26278813ed179ae69b3bcf40582c90ec14 100644
--- a/src/finiteVolume/fields/fvPatchFields/basic/transform/transformFvPatchField.H
+++ b/src/finiteVolume/fields/fvPatchFields/basic/transform/transformFvPatchField.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -153,7 +153,13 @@ public:
 // * * * * * * * * * * * Template Specialisations  * * * * * * * * * * * * * //
 
 template<>
-tmp<scalarField > transformFvPatchField<scalar>::gradientInternalCoeffs() const;
+tmp<scalarField> transformFvPatchField<scalar>::valueInternalCoeffs
+(
+    const tmp<scalarField>&
+) const;
+
+template<>
+tmp<scalarField> transformFvPatchField<scalar>::gradientInternalCoeffs() const;
 
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/finiteVolume/fields/fvPatchFields/basic/transform/transformFvPatchScalarField.C b/src/finiteVolume/fields/fvPatchFields/basic/transform/transformFvPatchScalarField.C
index 506374c7426f4f81d41097a112f3e0e1bcb796aa..81947be896ad53f277bc34954314dfe840a52989 100644
--- a/src/finiteVolume/fields/fvPatchFields/basic/transform/transformFvPatchScalarField.C
+++ b/src/finiteVolume/fields/fvPatchFields/basic/transform/transformFvPatchScalarField.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -25,21 +25,25 @@ License
 
 #include "transformFvPatchField.H"
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-namespace Foam
+template<>
+Foam::tmp<Foam::scalarField>
+Foam::transformFvPatchField<Foam::scalar>::valueInternalCoeffs
+(
+    const tmp<scalarField>&
+) const
 {
+     return tmp<scalarField>(new scalarField(size(), 1.0));
+}
 
-// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 template<>
-tmp<scalarField > transformFvPatchField<scalar>::gradientInternalCoeffs() const
+Foam::tmp<Foam::scalarField>
+Foam::transformFvPatchField<Foam::scalar>::gradientInternalCoeffs() const
 {
-    return tmp<scalarField >(new scalarField(size(), 0.0));
+    return tmp<scalarField>(new scalarField(size(), 0.0));
 }
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-} // End namespace Foam
 
 // ************************************************************************* //
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/activePressureForceBaffleVelocity/activePressureForceBaffleVelocityFvPatchVectorField.C b/src/finiteVolume/fields/fvPatchFields/derived/activePressureForceBaffleVelocity/activePressureForceBaffleVelocityFvPatchVectorField.C
index 18321c9013bf75cfaf72100e0a44a47ae813a2a7..02a63dd00d3e1e708ee9de6a598682990eeef5b3 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/activePressureForceBaffleVelocity/activePressureForceBaffleVelocityFvPatchVectorField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/activePressureForceBaffleVelocity/activePressureForceBaffleVelocityFvPatchVectorField.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -296,13 +296,13 @@ void Foam::activePressureForceBaffleVelocityFvPatchVectorField::updateCoeffs()
             Info<< "Pressure difference = " << valueDiff << endl;
         }
 
-        if ((mag(valueDiff) > mag(minThresholdValue_) || baffleActivated_))
+        if ((mag(valueDiff) > mag(minThresholdValue_)) || baffleActivated_)
         {
             openFraction_ =
                 max(
                     min(
                         openFraction_
-                      + max
+                      + min
                         (
                           this->db().time().deltaT().value()/openingTime_,
                           maxOpenFractionDelta_
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/activePressureForceBaffleVelocity/activePressureForceBaffleVelocityFvPatchVectorField.H b/src/finiteVolume/fields/fvPatchFields/derived/activePressureForceBaffleVelocity/activePressureForceBaffleVelocityFvPatchVectorField.H
index c313f296fe4fbe5fbae829ba3771e471889faf90..289e735586372848ffc409292faedb0d0d52e439 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/activePressureForceBaffleVelocity/activePressureForceBaffleVelocityFvPatchVectorField.H
+++ b/src/finiteVolume/fields/fvPatchFields/derived/activePressureForceBaffleVelocity/activePressureForceBaffleVelocityFvPatchVectorField.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -29,17 +29,20 @@ Group
 
 Description
     This boundary condition is applied to the flow velocity, to simulate the
-    opening of a baffle due to local flow conditions, by merging the behaviours
-    of wall and cyclic conditions.
+    opening or closure of a baffle due to local pressure or force changes,
+    by merging the behaviours of wall and cyclic conditions.
 
     The baffle joins two mesh regions, where the open fraction determines
     the interpolation weights applied to each cyclic- and neighbour-patch
-    contribution.
+    contribution. This means that this is boundary condition is meant to be
+    used in an extra wall beyond an existing cyclic patch pair. See PDRMesh
+    for more details.
 
-    Once opened the baffle continues to open at a fixed rate using
+    Once the threshold is crossed, this condition activated and continues to
+    open or close at a fixed rate using
 
         \f[
-            x = x_{old} + \frac{dt}{DT}
+            x = x_{old} + s \times \frac{dt}{DT}
         \f]
 
     where
@@ -47,6 +50,7 @@ Description
     \vartable
         x       | baffle open fraction [0-1]
         x_{old} | baffle open fraction on previous evaluation
+        s       | sign for orientation: 1 to open or -1 to close
         dt      | simulation time step
         DT      | time taken to open the baffle
     \endvartable
@@ -58,12 +62,13 @@ Description
     \table
         Property     | Description             | Required    | Default value
         p            | pressure field name     | no          | p
-        cyclicPatch  | cylclic patch name      | yes         |
-        orientation  | 1 or -1 used to switch flow direction | yes|
-        openFraction | current opatch open fraction [0-1]| yes |
-        openingTime  | time taken to open the baffle | yes |
-        maxOpenFractionDelta | max open fraction change per timestep | yes |
-        minThresholdValue | minimum open fraction for activation | yes |
+        cyclicPatch  | cyclic patch name       | yes         |
+        orientation  | 1 to open or -1 to close | yes|
+        openFraction | current open fraction [0-1] | yes |
+        openingTime  | time taken to open or close the baffle | yes |
+        maxOpenFractionDelta | max fraction change per timestep | yes |
+        minThresholdValue | minimum absolute pressure or
+                            force difference for activation | yes |
         forceBased   | force (true) or pressure-based (false) activation | yes |
     \endtable
 
@@ -119,9 +124,8 @@ class activePressureForceBaffleVelocityFvPatchVectorField
         //- Index of the cyclic patch used when the active baffle is open
         label cyclicPatchLabel_;
 
-        //- Orientation (1 or -1) of the active baffle patch.
-        //  Used to change the direction of opening without the need for
-        //  reordering the patch faces
+        //- Orientation (1 or -1) of the active baffle mode
+        //  Used to change the direction of opening or closing the baffle
         label orientation_;
 
         //- Initial wall patch areas
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/uniformFixedGradient/uniformFixedGradientFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/derived/uniformFixedGradient/uniformFixedGradientFvPatchField.C
index 566093591a08856038f51a35aa17db3b648f3a8e..0a5a113d907c49039aef74e286f86fdefee3296f 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/uniformFixedGradient/uniformFixedGradientFvPatchField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/uniformFixedGradient/uniformFixedGradientFvPatchField.C
@@ -90,6 +90,8 @@ Foam::uniformFixedGradientFvPatchField<Type>::uniformFixedGradientFvPatchField
         const scalar t = this->db().time().timeOutputValue();
         this->gradient() = uniformGradient_->value(t);
     }
+
+    fixedGradientFvPatchField<Type>::evaluate();
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/uniformFixedGradient/uniformFixedGradientFvPatchFieldsFwd.H b/src/finiteVolume/fields/fvPatchFields/derived/uniformFixedGradient/uniformFixedGradientFvPatchFieldsFwd.H
index 9eaa07e2a69e7b2a5310a0b2ab9317cc237b2cf4..d76a6080e22bdd94a8492a36bdb05b472c34ebd6 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/uniformFixedGradient/uniformFixedGradientFvPatchFieldsFwd.H
+++ b/src/finiteVolume/fields/fvPatchFields/derived/uniformFixedGradient/uniformFixedGradientFvPatchFieldsFwd.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2013-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -37,7 +37,7 @@ namespace Foam
 
 template<class Type> class uniformFixedGradientFvPatchField;
 
-makePatchTypeFieldTypedefs(uniform);
+makePatchTypeFieldTypedefs(uniformFixedGradient);
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
diff --git a/src/finiteVolume/interpolation/surfaceInterpolation/schemes/linearUpwind/linearUpwindV.C b/src/finiteVolume/interpolation/surfaceInterpolation/schemes/linearUpwind/linearUpwindV.C
index 6368d2accd863cc9d6965b94b0a826e6ef2bbbaa..22a04bff7b4a7c0a56c286f306d8c48c580d5c7d 100644
--- a/src/finiteVolume/interpolation/surfaceInterpolation/schemes/linearUpwind/linearUpwindV.C
+++ b/src/finiteVolume/interpolation/surfaceInterpolation/schemes/linearUpwind/linearUpwindV.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -125,17 +125,6 @@ Foam::linearUpwindV<Type>::correction
                 sfCorr[facei] *= maxCorrs/(sfCorrs + VSMALL);
             }
         }
-        else if (sfCorrs < 0)
-        {
-            if (maxCorrs > 0)
-            {
-                sfCorr[facei] = vector::zero;
-            }
-            else if (sfCorrs < maxCorrs)
-            {
-                sfCorr[facei] *= maxCorrs/(sfCorrs - VSMALL);
-            }
-        }
     }
 
 
@@ -203,17 +192,6 @@ Foam::linearUpwindV<Type>::correction
                         pSfCorr[facei] *= maxCorrs/(pSfCorrs + VSMALL);
                     }
                 }
-                else if (pSfCorrs < 0)
-                {
-                    if (maxCorrs > 0)
-                    {
-                        pSfCorr[facei] = vector::zero;
-                    }
-                    else if (pSfCorrs < maxCorrs)
-                    {
-                        pSfCorr[facei] *= maxCorrs/(pSfCorrs - VSMALL);
-                    }
-                }
             }
         }
     }
@@ -227,4 +205,5 @@ namespace Foam
     makelimitedSurfaceInterpolationTypeScheme(linearUpwindV, vector)
 }
 
+
 // ************************************************************************* //
diff --git a/src/fvAgglomerationMethods/pairPatchAgglomeration/pairPatchAgglomeration.C b/src/fvAgglomerationMethods/pairPatchAgglomeration/pairPatchAgglomeration.C
index f3c986bac474630f7d72bde64ebb3c8c220abbf4..46fc5f185316719ddfd8e2bc385b6febad220098 100644
--- a/src/fvAgglomerationMethods/pairPatchAgglomeration/pairPatchAgglomeration.C
+++ b/src/fvAgglomerationMethods/pairPatchAgglomeration/pairPatchAgglomeration.C
@@ -440,6 +440,8 @@ void Foam::pairPatchAgglomeration::agglomerate()
 
         nCoarseFacesOld = nCoarseFaces;
     }
+
+    compactLevels(nCreatedLevels);
 }
 
 
diff --git a/src/fvOptions/sources/derived/rotorDiskSource/rotorDiskSource.C b/src/fvOptions/sources/derived/rotorDiskSource/rotorDiskSource.C
index c638d06ad45623b607e42f976a6c597b4a8f7b04..73e11394e7675d9cfa4200ba46527b95dbd33aa5 100644
--- a/src/fvOptions/sources/derived/rotorDiskSource/rotorDiskSource.C
+++ b/src/fvOptions/sources/derived/rotorDiskSource/rotorDiskSource.C
@@ -334,9 +334,9 @@ void Foam::fv::rotorDiskSource::createCoordinateSystem()
 
             coeffs_.lookup("refDirection") >> refDir;
 
-            localAxesRotation_.reset
+            cylindrical_.reset
             (
-                new localAxesRotation
+                new cylindrical
                 (
                     mesh_,
                     axis,
@@ -357,9 +357,9 @@ void Foam::fv::rotorDiskSource::createCoordinateSystem()
             coeffs_.lookup("axis") >> axis;
             coeffs_.lookup("refDirection") >> refDir;
 
-            localAxesRotation_.reset
+            cylindrical_.reset
             (
-                new localAxesRotation
+                new cylindrical
                 (
                     mesh_,
                     axis,
@@ -491,7 +491,7 @@ Foam::fv::rotorDiskSource::rotorDiskSource
     invR_(cells_.size(), I),
     area_(cells_.size(), 0.0),
     coordSys_(false),
-    localAxesRotation_(),
+    cylindrical_(),
     rMax_(0.0),
     trim_(trimModel::New(*this, coeffs_)),
     blade_(coeffs_.subDict("blade")),
diff --git a/src/fvOptions/sources/derived/rotorDiskSource/rotorDiskSource.H b/src/fvOptions/sources/derived/rotorDiskSource/rotorDiskSource.H
index ddd4c6cae9bc3ef1758d43b42ebf27057b6c42ce..f94a463eb7f0a8f50f2dbd8445d244228feb421e 100644
--- a/src/fvOptions/sources/derived/rotorDiskSource/rotorDiskSource.H
+++ b/src/fvOptions/sources/derived/rotorDiskSource/rotorDiskSource.H
@@ -103,7 +103,7 @@ SourceFiles
 
 #include "cellSetOption.H"
 #include "cylindricalCS.H"
-#include "localAxesRotation.H"
+#include "cylindrical.H"
 #include "NamedEnum.H"
 #include "bladeModel.H"
 #include "profileModelList.H"
@@ -201,7 +201,7 @@ protected:
         cylindricalCS coordSys_;
 
          //- Rotor transformation co-ordinate system
-        autoPtr<localAxesRotation> localAxesRotation_;
+        autoPtr<cylindrical> cylindrical_;
 
         //- Maximum radius
         scalar rMax_;
diff --git a/src/fvOptions/sources/derived/rotorDiskSource/rotorDiskSourceTemplates.C b/src/fvOptions/sources/derived/rotorDiskSource/rotorDiskSourceTemplates.C
index 83a29e2248d4b6da54a0b9b508e1988b929fe1ae..a0664e696d668505e457037c78fddddbb797d1f2 100644
--- a/src/fvOptions/sources/derived/rotorDiskSource/rotorDiskSourceTemplates.C
+++ b/src/fvOptions/sources/derived/rotorDiskSource/rotorDiskSourceTemplates.C
@@ -59,7 +59,7 @@ void Foam::fv::rotorDiskSource::calculate
             const scalar radius = x_[i].x();
 
             // Transform velocity into local cylindrical reference frame
-            vector Uc = localAxesRotation_->invTransform(U[cellI], i);
+            vector Uc = cylindrical_->invTransform(U[cellI], i);
 
             // Transform velocity into local coning system
             Uc = R_[i] & Uc;
@@ -132,7 +132,7 @@ void Foam::fv::rotorDiskSource::calculate
             localForce = invR_[i] & localForce;
 
             // Transform force into global Cartesian co-ordinate system
-            force[cellI] = localAxesRotation_->transform(localForce, i);
+            force[cellI] = cylindrical_->transform(localForce, i);
 
             if (divideVolume)
             {
diff --git a/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcel.C b/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcel.C
index efbee0018e642f388b067c2899cfbc30588a05eb..f94c19f39636a824b10fd6d8bcf994473697b2d1 100644
--- a/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcel.C
+++ b/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcel.C
@@ -80,8 +80,6 @@ void Foam::ReactingParcel<ParcelType>::calcPhaseChange
     const scalar Tdash = min(T, TMax);
     const scalar Tsdash = min(Ts, TMax);
 
-    scalarField hmm(dMassPC);
-
     // Calculate mass transfer due to phase change
     phaseChange.calculate
     (
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/KinematicLookupTableInjection/KinematicLookupTableInjection.C b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/KinematicLookupTableInjection/KinematicLookupTableInjection.C
index 293fd7d740c1013e1701209bb7cb052258272c1f..d53b781cdb48ffdde3aad8ada6829667228e0f39 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/KinematicLookupTableInjection/KinematicLookupTableInjection.C
+++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/KinematicLookupTableInjection/KinematicLookupTableInjection.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -187,7 +187,7 @@ void Foam::KinematicLookupTableInjection<CloudType>::setPositionAndCell
     }
     else
     {
-        injectorI = parcelI*injectorCells_.size()/nParcels;
+        injectorI = int64_t(parcelI)*int64_t(injectors_.size())/nParcels;
     }
 
     position = injectors_[injectorI].x();
@@ -206,7 +206,7 @@ void Foam::KinematicLookupTableInjection<CloudType>::setProperties
     typename CloudType::parcelType& parcel
 )
 {
-    label injectorI = parcelI*injectorCells_.size()/nParcels;
+    label injectorI = int64_t(parcelI)*int64_t(injectors_.size())/nParcels;
 
     // set particle velocity
     parcel.U() = injectors_[injectorI].U();
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/LocalInteraction/LocalInteraction.C b/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/LocalInteraction/LocalInteraction.C
index 77a6debde794011dcdb8e77e7b76806508bc891d..7a2a3edf495bd81e908be05d87c9d444fd953c03 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/LocalInteraction/LocalInteraction.C
+++ b/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/LocalInteraction/LocalInteraction.C
@@ -3,7 +3,7 @@
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
     \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
-     \\/     M anipulation  |
+     \\/     M anipulation  | Copyright (C) 2015 OpenCFD Ltd
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -284,6 +284,8 @@ bool Foam::LocalInteraction<CloudType>::correct
 template<class CloudType>
 void Foam::LocalInteraction<CloudType>::info(Ostream& os)
 {
+    PatchInteractionModel<CloudType>::info(os);
+
     // retrieve any stored data
     labelList npe0(patchData_.size(), 0);
     this->getModelProperty("nEscape", npe0);
@@ -317,8 +319,8 @@ void Foam::LocalInteraction<CloudType>::info(Ostream& os)
 
     forAll(patchData_, i)
     {
-        os  << "    Parcel fate (number, mass)      : patch "
-            <<  patchData_[i].patchName() << nl
+        os  << "    Parcel fate: patch " <<  patchData_[i].patchName()
+            << " (number, mass)" << nl
             << "      - escape                      = " << npe[i]
             << ", " << mpe[i] << nl
             << "      - stick                       = " << nps[i]
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/StandardWallInteraction/StandardWallInteraction.C b/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/StandardWallInteraction/StandardWallInteraction.C
index fa86f67ca9f9cf7a6d4d54fc7b8ecd7e4e19b6d1..1545e62d57234c1a262a0724c63241150a67f626 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/StandardWallInteraction/StandardWallInteraction.C
+++ b/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/StandardWallInteraction/StandardWallInteraction.C
@@ -3,7 +3,7 @@
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
     \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
-     \\/     M anipulation  |
+     \\/     M anipulation  | Copyright (C) 2015 OpenCFD Ltd
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -130,6 +130,7 @@ bool Foam::StandardWallInteraction<CloudType>::correct
                 active = false;
                 U = vector::zero;
                 nEscape_++;
+                massEscape_ += p.nParticle()*p.mass();
                 break;
             }
             case PatchInteractionModel<CloudType>::itStick:
@@ -138,6 +139,7 @@ bool Foam::StandardWallInteraction<CloudType>::correct
                 active = false;
                 U = vector::zero;
                 nStick_++;
+                massStick_ += p.nParticle()*p.mass();
                 break;
             }
             case PatchInteractionModel<CloudType>::itRebound:
@@ -197,19 +199,21 @@ bool Foam::StandardWallInteraction<CloudType>::correct
 template<class CloudType>
 void Foam::StandardWallInteraction<CloudType>::info(Ostream& os)
 {
-    label npe0 = this->template getBaseProperty<scalar>("nEscape");
+    PatchInteractionModel<CloudType>::info(os);
+
+    label npe0 = this->template getModelProperty<scalar>("nEscape");
     label npe = npe0 + returnReduce(nEscape_, sumOp<label>());
 
-    scalar mpe0 = this->template getBaseProperty<scalar>("massEscape");
+    scalar mpe0 = this->template getModelProperty<scalar>("massEscape");
     scalar mpe = mpe0 + returnReduce(massEscape_, sumOp<scalar>());
 
-    label nps0 = this->template getBaseProperty<scalar>("nStick");
+    label nps0 = this->template getModelProperty<scalar>("nStick");
     label nps = nps0 + returnReduce(nStick_, sumOp<label>());
 
-    scalar mps0 = this->template getBaseProperty<scalar>("massStick");
+    scalar mps0 = this->template getModelProperty<scalar>("massStick");
     scalar mps = mps0 + returnReduce(massStick_, sumOp<scalar>());
 
-    os  << "    Parcel fate (number, mass)" << nl
+    os  << "    Parcel fate: walls (number, mass)" << nl
         << "      - escape                      = " << npe << ", " << mpe << nl
         << "      - stick                       = " << nps << ", " << mps << nl;
 
diff --git a/src/mesh/autoMesh/autoHexMesh/meshRefinement/meshRefinement.C b/src/mesh/autoMesh/autoHexMesh/meshRefinement/meshRefinement.C
index 7b77e35875e5d22bbdf48523e3822b951c969283..e4bfa8840c994ca689be4dcfb46ece5ae3e445fd 100644
--- a/src/mesh/autoMesh/autoHexMesh/meshRefinement/meshRefinement.C
+++ b/src/mesh/autoMesh/autoHexMesh/meshRefinement/meshRefinement.C
@@ -279,7 +279,7 @@ void Foam::meshRefinement::updateIntersections(const labelList& changedFaces)
 
     // Extend segments a bit
     {
-        const vectorField smallVec(Foam::sqrt(SMALL)*(end-start));
+        const vectorField smallVec(ROOTSMALL*(end-start));
         start -= smallVec;
         end += smallVec;
     }
@@ -491,7 +491,7 @@ void Foam::meshRefinement::checkData()
 
         // Extend segments a bit
         {
-            const vectorField smallVec(Foam::sqrt(SMALL)*(end-start));
+            const vectorField smallVec(ROOTSMALL*(end-start));
             start -= smallVec;
             end += smallVec;
         }
@@ -2974,7 +2974,7 @@ void Foam::meshRefinement::dumpIntersections(const fileName& prefix) const
 
         // Extend segments a bit
         {
-            const vectorField smallVec(Foam::sqrt(SMALL)*(end-start));
+            const vectorField smallVec(ROOTSMALL*(end-start));
             start -= smallVec;
             end += smallVec;
         }
diff --git a/src/mesh/autoMesh/autoHexMesh/meshRefinement/meshRefinementBaffles.C b/src/mesh/autoMesh/autoHexMesh/meshRefinement/meshRefinementBaffles.C
index e63c6a353ed37bb7e9dc0658a3f9769ce3f4bcc3..6f500c117a10304be1cf1330ea45baec56674473 100644
--- a/src/mesh/autoMesh/autoHexMesh/meshRefinement/meshRefinementBaffles.C
+++ b/src/mesh/autoMesh/autoHexMesh/meshRefinement/meshRefinementBaffles.C
@@ -233,7 +233,7 @@ void Foam::meshRefinement::getIntersections
 
     // Extend segments a bit
     {
-        const vectorField smallVec(Foam::sqrt(SMALL)*(end-start));
+        const vectorField smallVec(ROOTSMALL*(end-start));
         start -= smallVec;
         end += smallVec;
     }
@@ -1097,7 +1097,7 @@ Foam::List<Foam::labelPair> Foam::meshRefinement::freeStandingBaffles
 
         // Extend segments a bit
         {
-            const vectorField smallVec(Foam::sqrt(SMALL)*(end-start));
+            const vectorField smallVec(ROOTSMALL*(end-start));
             start -= smallVec;
             end += smallVec;
         }
@@ -4010,7 +4010,7 @@ Foam::autoPtr<Foam::mapPolyMesh> Foam::meshRefinement::zonify
 
             // Extend segments a bit
             {
-                const vectorField smallVec(Foam::sqrt(SMALL)*(end-start));
+                const vectorField smallVec(ROOTSMALL*(end-start));
                 start -= smallVec;
                 end += smallVec;
             }
diff --git a/src/mesh/autoMesh/autoHexMesh/meshRefinement/meshRefinementRefine.C b/src/mesh/autoMesh/autoHexMesh/meshRefinement/meshRefinementRefine.C
index 05f89fb5dd51396b8c56b822d1dffd87e83a3acc..b27c4fae3f80a1b06c78b56993663662bb6acee8 100644
--- a/src/mesh/autoMesh/autoHexMesh/meshRefinement/meshRefinementRefine.C
+++ b/src/mesh/autoMesh/autoHexMesh/meshRefinement/meshRefinementRefine.C
@@ -967,7 +967,7 @@ Foam::label Foam::meshRefinement::markSurfaceRefinement
 
     // Extend segments a bit
     {
-        const vectorField smallVec(Foam::sqrt(SMALL)*(end-start));
+        const vectorField smallVec(ROOTSMALL*(end-start));
         start -= smallVec;
         end += smallVec;
     }
@@ -1162,7 +1162,7 @@ Foam::label Foam::meshRefinement::markSurfaceCurvatureRefinement
 
     // Extend segments a bit
     {
-        const vectorField smallVec(Foam::sqrt(SMALL)*(end-start));
+        const vectorField smallVec(ROOTSMALL*(end-start));
         start -= smallVec;
         end += smallVec;
     }
@@ -1765,7 +1765,7 @@ Foam::label Foam::meshRefinement::markProximityRefinement
 
     // Extend segments a bit
     {
-        const vectorField smallVec(Foam::sqrt(SMALL)*(end-start));
+        const vectorField smallVec(ROOTSMALL*(end-start));
         start -= smallVec;
         end += smallVec;
     }
diff --git a/src/mesh/blockMesh/blockMesh/blockMeshCheck.C b/src/mesh/blockMesh/blockMesh/blockMeshCheck.C
index b44f7259b88494d155a78dd8e7b76f8433c19aa4..39c7ed6c109b90c9317feae5434525b75bff95fe 100644
--- a/src/mesh/blockMesh/blockMesh/blockMeshCheck.C
+++ b/src/mesh/blockMesh/blockMesh/blockMeshCheck.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -27,7 +27,6 @@ License
 
 // * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
 
-// Check the blockMesh topology
 void Foam::blockMesh::checkBlockMesh(const polyMesh& bm) const
 {
     if (verboseOutput)
diff --git a/src/mesh/blockMesh/blockMesh/blockMeshMergeFast.C b/src/mesh/blockMesh/blockMesh/blockMeshMergeFast.C
index d6d2a2d5f40c28783b2a5c6667247449a9aaad39..077db0b8fd22d0c7120b7a77f9579cd244d85dda 100644
--- a/src/mesh/blockMesh/blockMesh/blockMeshMergeFast.C
+++ b/src/mesh/blockMesh/blockMesh/blockMeshMergeFast.C
@@ -455,6 +455,9 @@ void Foam::blockMesh::calcMergeInfoFast()
                         << " and face "
                         << blockNfacei << " of block " << blockNi
                         << endl
+                        << "    Points: " << blockPpoints[blockPpointi]
+                        << " " << blockNpoints[blockNpointi]
+                        << endl
                         << "    This may be due to inconsistent grading."
                         << exit(FatalError);
                 }
diff --git a/src/mesh/blockMesh/curvedEdges/arcEdge.C b/src/mesh/blockMesh/curvedEdges/arcEdge.C
index 1f42125f98bef047890b6152bd2c6c1f9bf3e261..512eab4a206a6fe9e82b0fbbb4bc3063343c7523 100644
--- a/src/mesh/blockMesh/curvedEdges/arcEdge.C
+++ b/src/mesh/blockMesh/curvedEdges/arcEdge.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -133,7 +133,7 @@ Foam::arcEdge::arcEdge(const pointField& points, Istream& is)
 
 Foam::point Foam::arcEdge::position(const scalar lambda) const
 {
-    if (lambda < 0 || lambda > 1)
+    if (lambda < -SMALL || lambda > 1 + SMALL)
     {
         FatalErrorIn("arcEdge::position(const scalar lambda) const")
             << "Parameter out of range, lambda = " << lambda
diff --git a/src/mesh/blockMesh/curvedEdges/lineEdge.C b/src/mesh/blockMesh/curvedEdges/lineEdge.C
index f5bd3348ea5267bd427359f4ee219ae755c1cf69..a00243e5841c897554b407d63d9887bdbd8bac70 100644
--- a/src/mesh/blockMesh/curvedEdges/lineEdge.C
+++ b/src/mesh/blockMesh/curvedEdges/lineEdge.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -54,16 +54,18 @@ Foam::lineEdge::lineEdge(const pointField& points, Istream& is)
     curvedEdge(points, is)
 {}
 
+
 // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * * //
 
 Foam::lineEdge::~lineEdge()
 {}
 
+
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 Foam::point Foam::lineEdge::position(const scalar lambda) const
 {
-    if (lambda < 0 || lambda > 1)
+    if (lambda < -SMALL || lambda > 1+SMALL)
     {
         FatalErrorIn("lineEdge::position(const scalar)")
             << "Parameter out of range, lambda = " << lambda
diff --git a/src/meshTools/Make/files b/src/meshTools/Make/files
index d70492950392f7350c64b3ac14f9a45ccafefe44..0c1b794f7c6d45d76d37d2448d8cc5b8e6725278 100644
--- a/src/meshTools/Make/files
+++ b/src/meshTools/Make/files
@@ -20,7 +20,7 @@ $(csys)/coordinateRotation/coordinateRotation.C
 $(csys)/coordinateRotation/coordinateRotationNew.C
 $(csys)/coordinateRotation/EulerCoordinateRotation.C
 $(csys)/coordinateRotation/STARCDCoordinateRotation.C
-$(csys)/coordinateRotation/localAxesRotation.C
+$(csys)/coordinateRotation/cylindrical.C
 
 edgeFaceCirculator/edgeFaceCirculator.C
 
diff --git a/src/meshTools/coordinateSystems/coordinateRotation/coordinateRotation.H b/src/meshTools/coordinateSystems/coordinateRotation/coordinateRotation.H
index 0e90d7aa8f1b4e6220f186a481de8e9994e2a8b5..ae37a3764f3a1fdc8f57f5cdef34f2d7d3755fe4 100644
--- a/src/meshTools/coordinateSystems/coordinateRotation/coordinateRotation.H
+++ b/src/meshTools/coordinateSystems/coordinateRotation/coordinateRotation.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -39,7 +39,7 @@ Description
     Types of coordinateRotation:
     1) axesRotation
     2) STARCDRotation
-    3) localAxesRotation
+    3) cylindrical
     4) EulerCoordinateRotation
 
 
diff --git a/src/meshTools/coordinateSystems/coordinateRotation/localAxesRotation.C b/src/meshTools/coordinateSystems/coordinateRotation/cylindrical.C
similarity index 75%
rename from src/meshTools/coordinateSystems/coordinateRotation/localAxesRotation.C
rename to src/meshTools/coordinateSystems/coordinateRotation/cylindrical.C
index 53c18f9fb941cfc2fa3bfef60e549b767d1498a0..8d0c85568c25d79fb0f481f0e7518692383ef505 100644
--- a/src/meshTools/coordinateSystems/coordinateRotation/localAxesRotation.C
+++ b/src/meshTools/coordinateSystems/coordinateRotation/cylindrical.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -23,7 +23,7 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "localAxesRotation.H"
+#include "cylindrical.H"
 #include "axesRotation.H"
 #include "addToRunTimeSelectionTable.H"
 #include "polyMesh.H"
@@ -33,17 +33,17 @@ License
 
 namespace Foam
 {
-    defineTypeNameAndDebug(localAxesRotation, 0);
+    defineTypeNameAndDebug(cylindrical, 0);
     addToRunTimeSelectionTable
     (
         coordinateRotation,
-        localAxesRotation,
+        cylindrical,
         dictionary
     );
     addToRunTimeSelectionTable
     (
         coordinateRotation,
-        localAxesRotation,
+        cylindrical,
         objectRegistry
     );
 }
@@ -51,7 +51,7 @@ namespace Foam
 
 // * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * * //
 
-void Foam::localAxesRotation::init
+void Foam::cylindrical::init
 (
     const objectRegistry& obr,
     const List<label>& cells
@@ -92,7 +92,7 @@ void Foam::localAxesRotation::init
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::localAxesRotation::localAxesRotation
+Foam::cylindrical::cylindrical
 (
     const dictionary& dict,
     const objectRegistry& obr
@@ -115,7 +115,7 @@ Foam::localAxesRotation::localAxesRotation
 }
 
 
-Foam::localAxesRotation::localAxesRotation
+Foam::cylindrical::cylindrical
 (
     const objectRegistry& obr,
     const vector& axis,
@@ -130,7 +130,7 @@ Foam::localAxesRotation::localAxesRotation
 }
 
 
-Foam::localAxesRotation::localAxesRotation
+Foam::cylindrical::cylindrical
 (
     const objectRegistry& obr,
     const vector& axis,
@@ -146,14 +146,14 @@ Foam::localAxesRotation::localAxesRotation
 }
 
 
-Foam::localAxesRotation::localAxesRotation(const dictionary& dict)
+Foam::cylindrical::cylindrical(const dictionary& dict)
 :
     Rptr_(),
     origin_(),
     e3_()
 {
-    FatalErrorIn("localAxesRotation(const dictionary&)")
-        << " localAxesRotation can not be constructed from dictionary "
+    FatalErrorIn("cylindrical(const dictionary&)")
+        << " cylindrical can not be constructed from dictionary "
         << " use the construtctor : "
            "("
            "    const dictionary&, const objectRegistry&"
@@ -162,7 +162,7 @@ Foam::localAxesRotation::localAxesRotation(const dictionary& dict)
 }
 
 
-Foam::localAxesRotation::localAxesRotation(const tensorField& R)
+Foam::cylindrical::cylindrical(const tensorField& R)
 :
     Rptr_(),
     origin_(vector::zero),
@@ -174,7 +174,7 @@ Foam::localAxesRotation::localAxesRotation(const tensorField& R)
 
 // * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * * //
 
-void Foam::localAxesRotation::clear()
+void Foam::cylindrical::clear()
 {
     if (!Rptr_.empty())
     {
@@ -183,7 +183,7 @@ void Foam::localAxesRotation::clear()
 }
 
 
-void Foam::localAxesRotation::updateCells
+void Foam::cylindrical::updateCells
 (
     const polyMesh& mesh,
     const labelList& cells
@@ -203,7 +203,7 @@ void Foam::localAxesRotation::updateCells
 }
 
 
-Foam::tmp<Foam::vectorField> Foam::localAxesRotation::transform
+Foam::tmp<Foam::vectorField> Foam::cylindrical::transform
 (
     const vectorField& vf
 ) const
@@ -212,7 +212,7 @@ Foam::tmp<Foam::vectorField> Foam::localAxesRotation::transform
     {
         FatalErrorIn
         (
-            "tmp<vectorField> localAxesRotation::transform(const vectorField&)"
+            "tmp<vectorField> cylindrical::transform(const vectorField&)"
         )
             << "vectorField st has different size to tensorField "
             << abort(FatalError);
@@ -222,17 +222,17 @@ Foam::tmp<Foam::vectorField> Foam::localAxesRotation::transform
 }
 
 
-Foam::vector Foam::localAxesRotation::transform(const vector& v) const
+Foam::vector Foam::cylindrical::transform(const vector& v) const
 {
     notImplemented
     (
-        "vector localAxesRotation::transform(const vector&) const"
+        "vector cylindrical::transform(const vector&) const"
     );
     return vector::zero;
 }
 
 
-Foam::vector Foam::localAxesRotation::transform
+Foam::vector Foam::cylindrical::transform
 (
     const vector& v,
     const label cmptI
@@ -242,7 +242,7 @@ Foam::vector Foam::localAxesRotation::transform
 }
 
 
-Foam::tmp<Foam::vectorField> Foam::localAxesRotation::invTransform
+Foam::tmp<Foam::vectorField> Foam::cylindrical::invTransform
 (
     const vectorField& vf
 ) const
@@ -251,17 +251,17 @@ Foam::tmp<Foam::vectorField> Foam::localAxesRotation::invTransform
 }
 
 
-Foam::vector Foam::localAxesRotation::invTransform(const vector& v) const
+Foam::vector Foam::cylindrical::invTransform(const vector& v) const
 {
     notImplemented
     (
-        "vector localAxesRotation::invTransform(const vector&) const"
+        "vector cylindrical::invTransform(const vector&) const"
     );
     return vector::zero;
 }
 
 
-Foam::vector Foam::localAxesRotation::invTransform
+Foam::vector Foam::cylindrical::invTransform
 (
     const vector& v,
     const label cmptI
@@ -271,7 +271,7 @@ Foam::vector Foam::localAxesRotation::invTransform
 }
 
 
-Foam::tmp<Foam::tensorField> Foam::localAxesRotation::transformTensor
+Foam::tmp<Foam::tensorField> Foam::cylindrical::transformTensor
 (
     const tensorField& tf
 ) const
@@ -280,7 +280,7 @@ Foam::tmp<Foam::tensorField> Foam::localAxesRotation::transformTensor
     {
         FatalErrorIn
         (
-            "tmp<tensorField> localAxesRotation::transformTensor"
+            "tmp<tensorField> cylindrical::transformTensor"
             "("
                 "const tensorField&"
             ")"
@@ -292,21 +292,21 @@ Foam::tmp<Foam::tensorField> Foam::localAxesRotation::transformTensor
 }
 
 
-Foam::tensor Foam::localAxesRotation::transformTensor
+Foam::tensor Foam::cylindrical::transformTensor
 (
     const tensor& t
 ) const
 {
     notImplemented
     (
-        "tensor localAxesRotation::transformTensor(const tensor&) const"
+        "tensor cylindrical::transformTensor(const tensor&) const"
     );
 
     return tensor::zero;
 }
 
 
-Foam::tmp<Foam::tensorField> Foam::localAxesRotation::transformTensor
+Foam::tmp<Foam::tensorField> Foam::cylindrical::transformTensor
 (
     const tensorField& tf,
     const labelList& cellMap
@@ -316,7 +316,7 @@ Foam::tmp<Foam::tensorField> Foam::localAxesRotation::transformTensor
     {
         FatalErrorIn
         (
-            "tmp<tensorField> localAxesRotation::transformTensor"
+            "tmp<tensorField> cylindrical::transformTensor"
             "("
                 "const tensorField&, "
                 "const labelList&"
@@ -340,14 +340,14 @@ Foam::tmp<Foam::tensorField> Foam::localAxesRotation::transformTensor
 }
 
 
-Foam::tmp<Foam::symmTensorField> Foam::localAxesRotation::transformVector
+Foam::tmp<Foam::symmTensorField> Foam::cylindrical::transformVector
 (
     const vectorField& vf
 ) const
 {
     if (Rptr_->size() != vf.size())
     {
-        FatalErrorIn("localAxesRotation::transformVector(const vectorField&)")
+        FatalErrorIn("cylindrical::transformVector(const vectorField&)")
             << "tensorField vf has different size to tensorField Tr"
             << abort(FatalError);
     }
@@ -364,20 +364,20 @@ Foam::tmp<Foam::symmTensorField> Foam::localAxesRotation::transformVector
 }
 
 
-Foam::symmTensor Foam::localAxesRotation::transformVector
+Foam::symmTensor Foam::cylindrical::transformVector
 (
     const vector& v
 ) const
 {
     notImplemented
     (
-        "tensor localAxesRotation::transformVector(const vector&) const"
+        "tensor cylindrical::transformVector(const vector&) const"
     );
     return symmTensor::zero;
 }
 
 
-void Foam::localAxesRotation::write(Ostream& os) const
+void Foam::cylindrical::write(Ostream& os) const
 {
      os.writeKeyword("e3") << e3() << token::END_STATEMENT << nl;
 }
diff --git a/src/meshTools/coordinateSystems/coordinateRotation/localAxesRotation.H b/src/meshTools/coordinateSystems/coordinateRotation/cylindrical.H
similarity index 86%
rename from src/meshTools/coordinateSystems/coordinateRotation/localAxesRotation.H
rename to src/meshTools/coordinateSystems/coordinateRotation/cylindrical.H
index 41a12f459bd6b8351334879410727aa11dbfa388..f166f95e71dc09392e38b8130d6f9a8fe8368460 100644
--- a/src/meshTools/coordinateSystems/coordinateRotation/localAxesRotation.H
+++ b/src/meshTools/coordinateSystems/coordinateRotation/cylindrical.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -22,7 +22,7 @@ License
     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
 
 Class
-    Foam::localAxesRotation
+    Foam::cylindrical
 
 Description
     A local coordinate rotation.
@@ -34,7 +34,7 @@ Description
         (cylindrical coordinates)
 
         \verbatim
-            localAxesRotation
+            cylindrical
             {
                 type        localAxes;
                 e3          (0 0 1);
@@ -45,8 +45,8 @@ Description
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef localAxesRotation_H
-#define localAxesRotation_H
+#ifndef cylindrical_H
+#define cylindrical_H
 
 #include "point.H"
 #include "vector.H"
@@ -58,10 +58,10 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-                    Class localAxesRotation Declaration
+                    Class cylindrical Declaration
 \*---------------------------------------------------------------------------*/
 
-class localAxesRotation
+class cylindrical
 :
     public coordinateRotation
 {
@@ -90,15 +90,15 @@ class localAxesRotation
 public:
 
     //- Runtime type information
-    TypeName("localAxesRotation");
+    TypeName("cylindrical");
 
     // Constructors
 
         //- Construct from dictionary and objectRegistry
-        localAxesRotation(const dictionary&, const objectRegistry&);
+        cylindrical(const dictionary&, const objectRegistry&);
 
         //- Construct from components for all cells
-        localAxesRotation
+        cylindrical
         (
             const objectRegistry&,
             const vector& axis,
@@ -106,7 +106,7 @@ public:
         );
 
         //- Construct from components for list of cells
-        localAxesRotation
+        cylindrical
         (
             const objectRegistry&,
             const vector& axis,
@@ -115,20 +115,20 @@ public:
         );
 
         //- Construct from dictionary
-        localAxesRotation(const dictionary&);
+        cylindrical(const dictionary&);
 
         //- Construct from tensor Field
-        localAxesRotation(const tensorField&);
+        cylindrical(const tensorField&);
 
         //- Return clone
-        autoPtr<localAxesRotation> clone() const
+        autoPtr<cylindrical> clone() const
         {
-            return autoPtr<localAxesRotation>(new localAxesRotation(*this));
+            return autoPtr<cylindrical>(new cylindrical(*this));
         }
 
 
     //- Destructor
-    virtual ~localAxesRotation()
+    virtual ~cylindrical()
     {}
 
 
@@ -143,28 +143,28 @@ public:
         //- Return local-to-global transformation tensor
         virtual const tensor& R() const
         {
-            notImplemented("const tensor& localAxesRotation::R() const");
+            notImplemented("const tensor& cylindrical::R() const");
             return tensor::zero;
         }
 
         //- Return global-to-local transformation tensor
         virtual const tensor& Rtr() const
         {
-             notImplemented("const tensor& localAxesRotation::Rtr() const");
+             notImplemented("const tensor& cylindrical::Rtr() const");
              return tensor::zero;
         }
 
         //- Return local Cartesian x-axis
         virtual const vector e1() const
         {
-            notImplemented("const tensor& localAxesRotation::e1() const");
+            notImplemented("const tensor& cylindrical::e1() const");
             return vector::zero;
         }
 
         //- Return local Cartesian y-axis
         virtual const vector e2() const
         {
-            notImplemented("const tensor& localAxesRotation::e2() const");
+            notImplemented("const tensor& cylindrical::e2() const");
             return vector::zero;
         }
 
diff --git a/src/meshTools/coordinateSystems/coordinateSystem.H b/src/meshTools/coordinateSystems/coordinateSystem.H
index 7e8b81c0e56cbbdd185b773f7e8984e774eba4f7..34579acf2740ddfa34a5ad5094efc2a817f27ce7 100644
--- a/src/meshTools/coordinateSystems/coordinateSystem.H
+++ b/src/meshTools/coordinateSystems/coordinateSystem.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -36,7 +36,7 @@ Description
             origin  (0 0 0);
             coordinateRotation
             {
-                type        localAxesRotation;
+                type        cylindrical;
                 e3          (0 0 1);
             }
         }
@@ -45,7 +45,7 @@ Description
     Types of coordinateRotation:
     1) axesRotation
     2) STARCDRotation
-    3) localAxesRotation
+    3) cylindrical
     4) EulerCoordinateRotation
 
     Type of co-ordinates:
diff --git a/src/meshTools/searchableSurface/searchableBox.C b/src/meshTools/searchableSurface/searchableBox.C
index 5970e8257597703f908c667596a6a4ec8eecb8fc..535b7e2871bcab96acf8cc4e3afd9c115b3bf2fc 100644
--- a/src/meshTools/searchableSurface/searchableBox.C
+++ b/src/meshTools/searchableSurface/searchableBox.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -531,7 +531,7 @@ void Foam::searchableBox::findLineAll
     const scalarField magSqrDirVec(magSqr(dirVec));
     const vectorField smallVec
     (
-        Foam::sqrt(SMALL)*dirVec
+        ROOTSMALL*dirVec
       + vector(ROOTVSMALL,ROOTVSMALL,ROOTVSMALL)
     );
 
diff --git a/src/parallel/distributed/distributedTriSurfaceMesh/distributedTriSurfaceMesh.C b/src/parallel/distributed/distributedTriSurfaceMesh/distributedTriSurfaceMesh.C
index 1a636b1caddc40a88165ce552cf226824b975d07..f17d26277ef99118fb25ab0b80f31b0b607301d2 100644
--- a/src/parallel/distributed/distributedTriSurfaceMesh/distributedTriSurfaceMesh.C
+++ b/src/parallel/distributed/distributedTriSurfaceMesh/distributedTriSurfaceMesh.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -1752,7 +1752,7 @@ void Foam::distributedTriSurfaceMesh::findLineAll
     const scalarField magSqrDirVec(magSqr(dirVec));
     const vectorField smallVec
     (
-        Foam::sqrt(SMALL)*dirVec
+        ROOTSMALL*dirVec
       + vector(ROOTVSMALL,ROOTVSMALL,ROOTVSMALL)
     );
 
diff --git a/src/postProcessing/functionObjects/fvTools/calcFvcGrad/calcFvcGradTemplates.C b/src/postProcessing/functionObjects/fvTools/calcFvcGrad/calcFvcGradTemplates.C
index c028628e37091ddfa98a036c937a3980f2c7c7e9..89589a0c45449adc42cb449d3a468fa1d2455593 100644
--- a/src/postProcessing/functionObjects/fvTools/calcFvcGrad/calcFvcGradTemplates.C
+++ b/src/postProcessing/functionObjects/fvTools/calcFvcGrad/calcFvcGradTemplates.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2012-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2012-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -26,6 +26,8 @@ License
 #include "fvMesh.H"
 #include "fvcGrad.H"
 
+// * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
+
 template<class Type>
 Foam::GeometricField
 <
@@ -35,6 +37,8 @@ Foam::GeometricField
 >&
 Foam::calcFvcGrad::gradField(const word& gradName, const dimensionSet& dims)
 {
+    Info<< "gradField" << endl;
+
     typedef typename outerProduct<vector, Type>::type gradType;
     typedef GeometricField<gradType, fvPatchField, volMesh> vfGradType;
 
@@ -73,8 +77,6 @@ Foam::calcFvcGrad::gradField(const word& gradName, const dimensionSet& dims)
 }
 
 
-// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
-
 template<class Type>
 void Foam::calcFvcGrad::calcGrad
 (
@@ -98,7 +100,8 @@ void Foam::calcFvcGrad::calcGrad
 
         vfGradType& field = gradField<Type>(resultName, vf.dimensions());
 
-        field = fvc::grad(vf);
+        // De-reference the tmp to avoid a clash with the cached grad field
+        field = fvc::grad(vf)();
 
         processed = true;
     }
@@ -108,7 +111,8 @@ void Foam::calcFvcGrad::calcGrad
 
         vfGradType& field = gradField<Type>(resultName, sf.dimensions());
 
-        field = fvc::grad(sf);
+        // De-reference the tmp to avoid a clash with the cached grad field
+        field = fvc::grad(sf)();
 
         processed = true;
     }
diff --git a/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/patchInjection/patchInjection.C b/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/patchInjection/patchInjection.C
index 218c727a86ef978244ca28357f40173efd94aeac..8ad13750c90237138acace8a58a959cf82fb8cdd 100644
--- a/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/patchInjection/patchInjection.C
+++ b/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/patchInjection/patchInjection.C
@@ -82,6 +82,13 @@ patchInjection::patchInjection
 
         patchInjectedMasses_.setSize(pbm.size(), 0);
     }
+
+    if (!patchIDs_.size())
+    {
+        FatalErrorIn("patchInjection::patchInjection")
+            << "No patches selected"
+            << exit(FatalError);
+    }
 }
 
 
@@ -100,6 +107,9 @@ void patchInjection::correct
     scalarField& diameterToInject
 )
 {
+    // Do not correct if no patches selected
+    if (!patchIDs_.size()) return;
+
     const scalarField& delta = owner().delta();
     const scalarField& rho = owner().rho();
     const scalarField& magSf = owner().magSf();
@@ -160,6 +170,9 @@ void patchInjection::correct
 
 void patchInjection::patchInjectedMassTotals(scalarField& patchMasses) const
 {
+    // Do not correct if no patches selected
+    if (!patchIDs_.size()) return;
+
     scalarField patchInjectedMasses
     (
         getModelProperty<scalarField>
@@ -170,7 +183,6 @@ void patchInjection::patchInjectedMassTotals(scalarField& patchMasses) const
     );
 
     scalarField patchInjectedMassTotals(patchInjectedMasses_);
-    //combineReduce(patchInjectedMassTotals, plusEqOp<scalarField>());
     Pstream::listCombineGather(patchInjectedMassTotals, plusEqOp<scalar>());
 
     forAll(patchIDs_, pidi)
diff --git a/src/regionModels/surfaceFilmModels/submodels/thermo/phaseChangeModel/solidification/solidification.C b/src/regionModels/surfaceFilmModels/submodels/thermo/phaseChangeModel/solidification/solidification.C
index f7cfae75625013be13eeaff3b8e11b6c1b1b8e03..f5b5b36f59983888af9e3caa2ad8ffe499fa271d 100644
--- a/src/regionModels/surfaceFilmModels/submodels/thermo/phaseChangeModel/solidification/solidification.C
+++ b/src/regionModels/surfaceFilmModels/submodels/thermo/phaseChangeModel/solidification/solidification.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2013-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -57,8 +57,20 @@ solidification::solidification
 :
     phaseChangeModel(typeName, owner, dict),
     T0_(readScalar(coeffDict_.lookup("T0"))),
-    L_(readScalar(coeffDict_.lookup("L"))),
-    alpha_(readScalar(coeffDict_.lookup("alpha"))),
+    maxSolidificationFrac_
+    (
+        coeffDict_.lookupOrDefault("maxSolidificationFrac", 0.2)
+    ),
+    maxSolidificationRate_
+    (
+        dimensioned<scalar>::lookupOrDefault
+        (
+            "maxSolidificationRate",
+            coeffDict_,
+            dimless/dimTime,
+            GREAT
+        )
+    ),
     mass_
     (
         IOobject
@@ -111,15 +123,28 @@ void solidification::correctModel
     const scalarField& T = film.T();
     const scalarField& alpha = film.alpha();
 
-    forAll(alpha, cellI)
+    const scalar rateLimiter = min
+    (
+        maxSolidificationFrac_,
+        (
+            maxSolidificationRate_
+           *owner_.regionMesh().time().deltaTValue()
+        ).value()
+    );
+
+    forAll(alpha, celli)
     {
-        if (alpha[cellI] > 0.5)
+        if (alpha[celli] > 0.5)
         {
-            if (T[cellI] > T0_)
+            if (T[celli] < T0_)
             {
-                mass_[cellI] += alpha_*availableMass[cellI];
-                dMass[cellI] += alpha_*availableMass[cellI];
-                dEnergy[cellI] += alpha_*availableMass[cellI]*L_;
+                const scalar dm = rateLimiter*availableMass[celli];
+
+                mass_[celli] += dm;
+                dMass[celli] += dm;
+
+                // Heat is assumed to be removed by heat-transfer to the wall
+                // so the energy remains unchanged by the phase-change.
             }
         }
     }
diff --git a/src/regionModels/surfaceFilmModels/submodels/thermo/phaseChangeModel/solidification/solidification.H b/src/regionModels/surfaceFilmModels/submodels/thermo/phaseChangeModel/solidification/solidification.H
index 87f0c1206e987e603f455eee32ab6233d437aa65..1854feac28c487d675509ed423183a7e0822413e 100644
--- a/src/regionModels/surfaceFilmModels/submodels/thermo/phaseChangeModel/solidification/solidification.H
+++ b/src/regionModels/surfaceFilmModels/submodels/thermo/phaseChangeModel/solidification/solidification.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2013-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -25,8 +25,9 @@ Class
     Foam::solidification
 
 Description
-    Solidification phase change model where all film mass is converted when
-    the local temperature > activation temperature.
+    Solidification phase change model where all film mass is converted when the
+    local temperature > activation temperature.  The latent heat is
+    assumed to be removed by heat-transfer to the wall.
 
 SourceFiles
     solidification.C
@@ -55,8 +56,6 @@ class solidification
 :
     public phaseChangeModel
 {
-private:
-
     // Private member functions
 
         //- Disallow default bitwise copy construct
@@ -73,11 +72,13 @@ protected:
         //- Temperature at which solidification starts
         scalar T0_;
 
-        //- Latent heat of solidification [J/kg]
-        scalar L_;
+        //- Solidification limiter
+        //  Maximum fraction of film which can solidify in a time-step
+        scalar maxSolidificationFrac_;
 
-        //- Under-relaxation parameter for solidification process (0-1)
-        scalar alpha_;
+        //- Solidification limiter
+        //  Maximum rate at which the film can solidify
+        dimensionedScalar maxSolidificationRate_;
 
         //- Accumulated solid mass [kg]
         volScalarField mass_;
diff --git a/src/thermophysicalModels/reactionThermo/chemistryReaders/chemkinReader/chemkinReader.C b/src/thermophysicalModels/reactionThermo/chemistryReaders/chemkinReader/chemkinReader.C
index 701ce73c8d1419d06507ea76751a99c906866b03..23342419402b6543e0c1af24948995041fe20827 100644
--- a/src/thermophysicalModels/reactionThermo/chemistryReaders/chemkinReader/chemkinReader.C
+++ b/src/thermophysicalModels/reactionThermo/chemistryReaders/chemkinReader/chemkinReader.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -753,10 +753,11 @@ void Foam::chemkinReader::addReaction
 
     forAll(nAtoms, i)
     {
-        if (mag(nAtoms[i]) > SMALL)
+        if (mag(nAtoms[i]) > imbalanceTol_)
         {
             FatalErrorIn("chemkinReader::addReaction")
-                << "Elemental imbalance in " << elementNames_[i]
+                << "Elemental imbalance of " << mag(nAtoms[i])
+                << " in " << elementNames_[i]
                 << " in reaction" << nl
                 << reactions_.last() << nl
                 << " on line " << lineNo_-1
@@ -839,7 +840,8 @@ Foam::chemkinReader::chemkinReader
     specieNames_(10),
     speciesTable_(species),
     reactions_(speciesTable_, speciesThermo_),
-    newFormat_(newFormat)
+    newFormat_(newFormat),
+    imbalanceTol_(ROOTSMALL)
 {
     read(CHEMKINFileName, thermoFileName);
 }
@@ -855,7 +857,8 @@ Foam::chemkinReader::chemkinReader
     specieNames_(10),
     speciesTable_(species),
     reactions_(speciesTable_, speciesThermo_),
-    newFormat_(thermoDict.lookupOrDefault("newFormat", false))
+    newFormat_(thermoDict.lookupOrDefault("newFormat", false)),
+    imbalanceTol_(thermoDict.lookupOrDefault("imbalanceTolerance", ROOTSMALL))
 {
     if (newFormat_)
     {
diff --git a/src/thermophysicalModels/reactionThermo/chemistryReaders/chemkinReader/chemkinReader.H b/src/thermophysicalModels/reactionThermo/chemistryReaders/chemkinReader/chemkinReader.H
index 1f5aa7acc8c0a97ac186467d4d07aac118fed402..ee1986f60b0a7a10b3058d323872e1c3574c82c2 100644
--- a/src/thermophysicalModels/reactionThermo/chemistryReaders/chemkinReader/chemkinReader.H
+++ b/src/thermophysicalModels/reactionThermo/chemistryReaders/chemkinReader/chemkinReader.H
@@ -77,7 +77,7 @@ public:
             gas
         };
 
-        //- Species element
+        //- species element
         struct specieElement
         {
             word elementName;
@@ -211,6 +211,9 @@ private:
         //- Flag to indicate that file is in new format
         Switch newFormat_;
 
+        //- Tolerance for element imbalance in a reaction
+        scalar imbalanceTol_;
+
 
     // Private Member Functions
 
diff --git a/src/thermophysicalModels/specie/equationOfState/perfectFluid/perfectFluidI.H b/src/thermophysicalModels/specie/equationOfState/perfectFluid/perfectFluidI.H
index 338807ad02d633a6def311412986203ad2f89ece..d30416c01400d339a6156c09ae6416d63be4a0ce 100644
--- a/src/thermophysicalModels/specie/equationOfState/perfectFluid/perfectFluidI.H
+++ b/src/thermophysicalModels/specie/equationOfState/perfectFluid/perfectFluidI.H
@@ -186,7 +186,7 @@ inline Foam::perfectFluid<Specie> Foam::operator+
     scalar molr1 = pf1.nMoles()/nMoles;
     scalar molr2 = pf2.nMoles()/nMoles;
 
-    return rhoConst<Specie>
+    return perfectFluid<Specie>
     (
         static_cast<const Specie&>(pf1)
       + static_cast<const Specie&>(pf2),
@@ -207,7 +207,7 @@ inline Foam::perfectFluid<Specie> Foam::operator-
     scalar molr1 = pf1.nMoles()/nMoles;
     scalar molr2 = pf2.nMoles()/nMoles;
 
-    return rhoConst<Specie>
+    return perfectFluid<Specie>
     (
         static_cast<const Specie&>(pf1)
       - static_cast<const Specie&>(pf2),
diff --git a/src/thermophysicalModels/specie/thermo/hRefConst/hRefConstThermo.C b/src/thermophysicalModels/specie/thermo/hRefConst/hRefConstThermo.C
new file mode 100644
index 0000000000000000000000000000000000000000..fe83f1794b6bde6f1b5d0a12647f00c3f5384b7b
--- /dev/null
+++ b/src/thermophysicalModels/specie/thermo/hRefConst/hRefConstThermo.C
@@ -0,0 +1,97 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "hRefConstThermo.H"
+#include "IOstreams.H"
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+template<class EquationOfState>
+Foam::hRefConstThermo<EquationOfState>::hRefConstThermo(Istream& is)
+:
+    EquationOfState(is),
+    Cp_(readScalar(is)),
+    Hf_(readScalar(is)),
+    Tref_(readScalar(is)),
+    Href_(readScalar(is))
+{
+    is.check("hRefConstThermo::hRefConstThermo(Istream& is)");
+
+    Cp_ *= this->W();
+    Hf_ *= this->W();
+    Href_ *= this->W();
+}
+
+
+template<class EquationOfState>
+Foam::hRefConstThermo<EquationOfState>::hRefConstThermo(const dictionary& dict)
+:
+    EquationOfState(dict),
+    Cp_(readScalar(dict.subDict("thermodynamics").lookup("Cp"))),
+    Hf_(readScalar(dict.subDict("thermodynamics").lookup("Hf"))),
+    Tref_(readScalar(dict.subDict("thermodynamics").lookup("Tref"))),
+    Href_(readScalar(dict.subDict("thermodynamics").lookup("Href")))
+{
+    Cp_ *= this->W();
+    Hf_ *= this->W();
+    Href_ *= this->W();
+}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+template<class EquationOfState>
+void Foam::hRefConstThermo<EquationOfState>::write(Ostream& os) const
+{
+    EquationOfState::write(os);
+
+    dictionary dict("thermodynamics");
+    dict.add("Cp", Cp_/this->W());
+    dict.add("Hf", Hf_/this->W());
+    dict.add("Tref", Tref_);
+    dict.add("Href", Href_/this->W());
+    os  << indent << dict.dictName() << dict;
+}
+
+
+// * * * * * * * * * * * * * * * Ostream Operator  * * * * * * * * * * * * * //
+
+template<class EquationOfState>
+Foam::Ostream& Foam::operator<<
+(
+    Ostream& os,
+    const hRefConstThermo<EquationOfState>& ct
+)
+{
+    os  << static_cast<const EquationOfState&>(ct) << tab
+        << ct.Cp_/ct.W() << tab << ct.Hf_/ct.W() << tab
+        << ct.Tref_ << tab << ct.Href_/ct.W();
+
+    os.check("Ostream& operator<<(Ostream& os, const hRefConstThermo& ct)");
+    return os;
+}
+
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/specie/thermo/hRefConst/hRefConstThermo.H b/src/thermophysicalModels/specie/thermo/hRefConst/hRefConstThermo.H
new file mode 100644
index 0000000000000000000000000000000000000000..9a62231d9c00a0846a9bff6cda6165ca05b982b1
--- /dev/null
+++ b/src/thermophysicalModels/specie/thermo/hRefConst/hRefConstThermo.H
@@ -0,0 +1,233 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::hRefConstThermo
+
+Description
+    Constant properties thermodynamics package
+    templated into the EquationOfState.
+
+SourceFiles
+    hRefConstThermoI.H
+    hRefConstThermo.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef hRefConstThermo_H
+#define hRefConstThermo_H
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+// Forward declaration of friend functions and operators
+
+template<class EquationOfState> class hRefConstThermo;
+
+template<class EquationOfState>
+inline hRefConstThermo<EquationOfState> operator+
+(
+    const hRefConstThermo<EquationOfState>&,
+    const hRefConstThermo<EquationOfState>&
+);
+
+template<class EquationOfState>
+inline hRefConstThermo<EquationOfState> operator-
+(
+    const hRefConstThermo<EquationOfState>&,
+    const hRefConstThermo<EquationOfState>&
+);
+
+template<class EquationOfState>
+inline hRefConstThermo<EquationOfState> operator*
+(
+    const scalar,
+    const hRefConstThermo<EquationOfState>&
+);
+
+template<class EquationOfState>
+inline hRefConstThermo<EquationOfState> operator==
+(
+    const hRefConstThermo<EquationOfState>&,
+    const hRefConstThermo<EquationOfState>&
+);
+
+template<class EquationOfState>
+Ostream& operator<<
+(
+    Ostream&,
+    const hRefConstThermo<EquationOfState>&
+);
+
+
+/*---------------------------------------------------------------------------*\
+                           Class hRefConstThermo Declaration
+\*---------------------------------------------------------------------------*/
+
+template<class EquationOfState>
+class hRefConstThermo
+:
+    public EquationOfState
+{
+    // Private data
+
+        scalar Cp_;
+        scalar Hf_;
+        scalar Tref_;
+        scalar Href_;
+
+
+    // Private Member Functions
+
+        //- Construct from components
+        inline hRefConstThermo
+        (
+            const EquationOfState& st,
+            const scalar cp,
+            const scalar hf,
+            const scalar tref,
+            const scalar href
+        );
+
+
+public:
+
+    // Constructors
+
+        //- Construct from Istream
+        hRefConstThermo(Istream&);
+
+        //- Construct from dictionary
+        hRefConstThermo(const dictionary& dict);
+
+        //- Construct as named copy
+        inline hRefConstThermo(const word&, const hRefConstThermo&);
+
+        //- Construct and return a clone
+        inline autoPtr<hRefConstThermo> clone() const;
+
+        //- Selector from Istream
+        inline static autoPtr<hRefConstThermo> New(Istream& is);
+
+        //- Selector from dictionary
+        inline static autoPtr<hRefConstThermo> New(const dictionary& dict);
+
+
+    // Member Functions
+
+        //- Return the instantiated type name
+        static word typeName()
+        {
+            return "hRefConst<" + EquationOfState::typeName() + '>';
+        }
+
+        //- Limit the temperature to be in the range Tlow_ to Thigh_
+        inline scalar limit(const scalar T) const;
+
+
+        // Fundamental properties
+
+            //- Heat capacity at constant pressure [J/(kmol K)]
+            inline scalar cp(const scalar p, const scalar T) const;
+
+            //- Absolute Enthalpy [J/kmol]
+            inline scalar ha(const scalar p, const scalar T) const;
+
+            //- Sensible enthalpy [J/kmol]
+            inline scalar hs(const scalar p, const scalar T) const;
+
+            //- Chemical enthalpy [J/kmol]
+            inline scalar hc() const;
+
+            //- Entropy [J/(kmol K)]
+            inline scalar s(const scalar p, const scalar T) const;
+
+
+        // I-O
+
+            //- Write to Ostream
+            void write(Ostream& os) const;
+
+
+    // Member operators
+
+        inline void operator+=(const hRefConstThermo&);
+        inline void operator-=(const hRefConstThermo&);
+
+
+    // Friend operators
+
+        friend hRefConstThermo operator+ <EquationOfState>
+        (
+            const hRefConstThermo&,
+            const hRefConstThermo&
+        );
+
+        friend hRefConstThermo operator- <EquationOfState>
+        (
+            const hRefConstThermo&,
+            const hRefConstThermo&
+        );
+
+        friend hRefConstThermo operator* <EquationOfState>
+        (
+            const scalar,
+            const hRefConstThermo&
+        );
+
+        friend hRefConstThermo operator== <EquationOfState>
+        (
+            const hRefConstThermo&,
+            const hRefConstThermo&
+        );
+
+
+    // IOstream Operators
+
+        friend Ostream& operator<< <EquationOfState>
+        (
+            Ostream&,
+            const hRefConstThermo&
+        );
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include "hRefConstThermoI.H"
+
+#ifdef NoRepository
+#   include "hRefConstThermo.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/specie/thermo/hRefConst/hRefConstThermoI.H b/src/thermophysicalModels/specie/thermo/hRefConst/hRefConstThermoI.H
new file mode 100644
index 0000000000000000000000000000000000000000..c6a699540e3d6fc254baf3e86533bdb10f928a74
--- /dev/null
+++ b/src/thermophysicalModels/specie/thermo/hRefConst/hRefConstThermoI.H
@@ -0,0 +1,277 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+// * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
+
+template<class EquationOfState>
+inline Foam::hRefConstThermo<EquationOfState>::hRefConstThermo
+(
+    const EquationOfState& st,
+    const scalar cp,
+    const scalar hf,
+    const scalar tref,
+    const scalar href
+)
+:
+    EquationOfState(st),
+    Cp_(cp),
+    Hf_(hf),
+    Tref_(tref),
+    Href_(href)
+{}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+template<class EquationOfState>
+inline Foam::hRefConstThermo<EquationOfState>::hRefConstThermo
+(
+    const word& name,
+    const hRefConstThermo& ct
+)
+:
+    EquationOfState(name, ct),
+    Cp_(ct.Cp_),
+    Hf_(ct.Hf_),
+    Tref_(ct.Tref_),
+    Href_(ct.Href_)
+{}
+
+
+template<class EquationOfState>
+inline Foam::autoPtr<Foam::hRefConstThermo<EquationOfState> >
+Foam::hRefConstThermo<EquationOfState>::clone() const
+{
+    return autoPtr<hRefConstThermo<EquationOfState> >
+    (
+        new hRefConstThermo<EquationOfState>(*this)
+    );
+}
+
+
+template<class EquationOfState>
+inline Foam::autoPtr<Foam::hRefConstThermo<EquationOfState> >
+Foam::hRefConstThermo<EquationOfState>::New(Istream& is)
+{
+    return autoPtr<hRefConstThermo<EquationOfState> >
+    (
+        new hRefConstThermo<EquationOfState>(is)
+    );
+}
+
+
+template<class EquationOfState>
+inline Foam::autoPtr<Foam::hRefConstThermo<EquationOfState> >
+Foam::hRefConstThermo<EquationOfState>::New(const dictionary& dict)
+{
+    return autoPtr<hRefConstThermo<EquationOfState> >
+    (
+        new hRefConstThermo<EquationOfState>(dict)
+    );
+}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+template<class EquationOfState>
+inline Foam::scalar Foam::hRefConstThermo<EquationOfState>::limit
+(
+    const scalar T
+) const
+{
+    return T;
+}
+
+
+template<class EquationOfState>
+inline Foam::scalar Foam::hRefConstThermo<EquationOfState>::cp
+(
+    const scalar p,
+    const scalar T
+) const
+{
+    return Cp_;
+}
+
+
+template<class EquationOfState>
+inline Foam::scalar Foam::hRefConstThermo<EquationOfState>::ha
+(
+    const scalar p, const scalar T
+) const
+{
+    return Cp_*(T-Tref_) + Href_ + Hf_;
+}
+
+
+template<class EquationOfState>
+inline Foam::scalar Foam::hRefConstThermo<EquationOfState>::hs
+(
+    const scalar p, const scalar T
+) const
+{
+    return Cp_*(T-Tref_) + Href_ ;
+}
+
+
+template<class EquationOfState>
+inline Foam::scalar Foam::hRefConstThermo<EquationOfState>::hc() const
+{
+    return Hf_;
+}
+
+
+template<class EquationOfState>
+inline Foam::scalar Foam::hRefConstThermo<EquationOfState>::s
+(
+    const scalar p, const scalar T
+) const
+{
+    return Cp_*log(T/Tstd) + EquationOfState::s(p, T);
+}
+
+
+// * * * * * * * * * * * * * * * Member Operators  * * * * * * * * * * * * * //
+
+template<class EquationOfState>
+inline void Foam::hRefConstThermo<EquationOfState>::operator+=
+(
+    const hRefConstThermo<EquationOfState>& ct
+)
+{
+    scalar molr1 = this->nMoles();
+
+    EquationOfState::operator+=(ct);
+
+    molr1 /= this->nMoles();
+    scalar molr2 = ct.nMoles()/this->nMoles();
+
+    Cp_ = molr1*Cp_ + molr2*ct.Cp_;
+    Hf_ = molr1*Hf_ + molr2*ct.Hf_;
+}
+
+
+template<class EquationOfState>
+inline void Foam::hRefConstThermo<EquationOfState>::operator-=
+(
+    const hRefConstThermo<EquationOfState>& ct
+)
+{
+    scalar molr1 = this->nMoles();
+
+    EquationOfState::operator-=(ct);
+
+    molr1 /= this->nMoles();
+    scalar molr2 = ct.nMoles()/this->nMoles();
+
+    Cp_ = molr1*Cp_ - molr2*ct.Cp_;
+    Hf_ = molr1*Hf_ - molr2*ct.Hf_;
+}
+
+
+// * * * * * * * * * * * * * * * Friend Operators  * * * * * * * * * * * * * //
+
+template<class EquationOfState>
+inline Foam::hRefConstThermo<EquationOfState> Foam::operator+
+(
+    const hRefConstThermo<EquationOfState>& ct1,
+    const hRefConstThermo<EquationOfState>& ct2
+)
+{
+    EquationOfState eofs
+    (
+        static_cast<const EquationOfState&>(ct1)
+      + static_cast<const EquationOfState&>(ct2)
+    );
+
+    return hRefConstThermo<EquationOfState>
+    (
+        eofs,
+        ct1.nMoles()/eofs.nMoles()*ct1.Cp_
+      + ct2.nMoles()/eofs.nMoles()*ct2.Cp_,
+        ct1.nMoles()/eofs.nMoles()*ct1.Hf_
+      + ct2.nMoles()/eofs.nMoles()*ct2.Hf_,
+        ct1.nMoles()/eofs.nMoles()*ct1.Tref_
+      + ct2.nMoles()/eofs.nMoles()*ct2.Tref_,
+        ct1.nMoles()/eofs.nMoles()*ct1.Href_
+      + ct2.nMoles()/eofs.nMoles()*ct2.Href_
+    );
+}
+
+
+template<class EquationOfState>
+inline Foam::hRefConstThermo<EquationOfState> Foam::operator-
+(
+    const hRefConstThermo<EquationOfState>& ct1,
+    const hRefConstThermo<EquationOfState>& ct2
+)
+{
+    EquationOfState eofs
+    (
+        static_cast<const EquationOfState&>(ct1)
+      - static_cast<const EquationOfState&>(ct2)
+    );
+
+    return hRefConstThermo<EquationOfState>
+    (
+        eofs,
+        ct1.nMoles()/eofs.nMoles()*ct1.Cp_
+      - ct2.nMoles()/eofs.nMoles()*ct2.Cp_,
+        ct1.nMoles()/eofs.nMoles()*ct1.Hf_
+      - ct2.nMoles()/eofs.nMoles()*ct2.Hf_
+    );
+}
+
+
+template<class EquationOfState>
+inline Foam::hRefConstThermo<EquationOfState> Foam::operator*
+(
+    const scalar s,
+    const hRefConstThermo<EquationOfState>& ct
+)
+{
+    return hRefConstThermo<EquationOfState>
+    (
+        s*static_cast<const EquationOfState&>(ct),
+        ct.Cp_,
+        ct.Hf_,
+        ct.Tref_,
+        ct.Href_
+    );
+}
+
+
+template<class EquationOfState>
+inline Foam::hRefConstThermo<EquationOfState> Foam::operator==
+(
+    const hRefConstThermo<EquationOfState>& ct1,
+    const hRefConstThermo<EquationOfState>& ct2
+)
+{
+    return ct2 - ct1;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/include/frontBackTopBottomPatches b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/include/frontBackTopBottomPatches
index 462f4ee594a9c3fc23a28393528f1d3f5689696d..01475bef7517bfe4a67233fe13da22449c89d267 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/include/frontBackTopBottomPatches
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/include/frontBackTopBottomPatches
@@ -13,7 +13,7 @@ topAndBottom
 
 front
 {
-    type empty
+    type empty;
 }
 
 back
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/include/frontBackTopBottomPatches b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/include/frontBackTopBottomPatches
index 462f4ee594a9c3fc23a28393528f1d3f5689696d..01475bef7517bfe4a67233fe13da22449c89d267 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/include/frontBackTopBottomPatches
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/include/frontBackTopBottomPatches
@@ -13,7 +13,7 @@ topAndBottom
 
 front
 {
-    type empty
+    type empty;
 }
 
 back
diff --git a/tutorials/multiphase/multiphaseEulerFoam/bubbleColumn/system/fvSchemes b/tutorials/multiphase/multiphaseEulerFoam/bubbleColumn/system/fvSchemes
index ac5bbc54b1aaaddaede2b31378ea16b12c3f05bc..c861bbec908a31a1e699e31d6b8afb46996b2a48 100644
--- a/tutorials/multiphase/multiphaseEulerFoam/bubbleColumn/system/fvSchemes
+++ b/tutorials/multiphase/multiphaseEulerFoam/bubbleColumn/system/fvSchemes
@@ -32,7 +32,7 @@ divSchemes
     "div\(phi,alpha.*\)"    Gauss vanLeer;
     "div\(phir,alpha.*,alpha.*\)"   Gauss vanLeer;
 
-    "div\(phiAlpha.*,U.*\)" Gauss limitedLinearV 1;
+    "div\(alphaPhi.*,U.*\)" Gauss limitedLinearV 1;
     div(Rc)                 Gauss linear;
     "div\(phi.*,U.*\)"      Gauss limitedLinearV 1;
 }
diff --git a/tutorials/multiphase/multiphaseEulerFoam/damBreak4phase/system/fvSchemes b/tutorials/multiphase/multiphaseEulerFoam/damBreak4phase/system/fvSchemes
index acf13bc703e802af5760499ee6b4b7c4248d372a..bed046cf3af0bffa43134a3185f4b1a7e5caa619 100644
--- a/tutorials/multiphase/multiphaseEulerFoam/damBreak4phase/system/fvSchemes
+++ b/tutorials/multiphase/multiphaseEulerFoam/damBreak4phase/system/fvSchemes
@@ -30,7 +30,7 @@ divSchemes
     "div\(phi,alpha.*\)"    Gauss vanLeer;
     "div\(phir,alpha.*,alpha.*\)"   Gauss vanLeer;
 
-    "div\(phiAlpha.*,U.*\)" Gauss limitedLinearV 1;
+    "div\(alphaPhi.*,U.*\)" Gauss limitedLinearV 1;
     div(Rc)                 Gauss linear;
     "div\(phi.*,U.*\)"      Gauss limitedLinearV 1;
 }
diff --git a/tutorials/multiphase/multiphaseEulerFoam/damBreak4phaseFine/system/fvSchemes b/tutorials/multiphase/multiphaseEulerFoam/damBreak4phaseFine/system/fvSchemes
index acf13bc703e802af5760499ee6b4b7c4248d372a..bed046cf3af0bffa43134a3185f4b1a7e5caa619 100644
--- a/tutorials/multiphase/multiphaseEulerFoam/damBreak4phaseFine/system/fvSchemes
+++ b/tutorials/multiphase/multiphaseEulerFoam/damBreak4phaseFine/system/fvSchemes
@@ -30,7 +30,7 @@ divSchemes
     "div\(phi,alpha.*\)"    Gauss vanLeer;
     "div\(phir,alpha.*,alpha.*\)"   Gauss vanLeer;
 
-    "div\(phiAlpha.*,U.*\)" Gauss limitedLinearV 1;
+    "div\(alphaPhi.*,U.*\)" Gauss limitedLinearV 1;
     div(Rc)                 Gauss linear;
     "div\(phi.*,U.*\)"      Gauss limitedLinearV 1;
 }
diff --git a/tutorials/multiphase/multiphaseEulerFoam/mixerVessel2D/system/fvSchemes b/tutorials/multiphase/multiphaseEulerFoam/mixerVessel2D/system/fvSchemes
index acf13bc703e802af5760499ee6b4b7c4248d372a..bed046cf3af0bffa43134a3185f4b1a7e5caa619 100644
--- a/tutorials/multiphase/multiphaseEulerFoam/mixerVessel2D/system/fvSchemes
+++ b/tutorials/multiphase/multiphaseEulerFoam/mixerVessel2D/system/fvSchemes
@@ -30,7 +30,7 @@ divSchemes
     "div\(phi,alpha.*\)"    Gauss vanLeer;
     "div\(phir,alpha.*,alpha.*\)"   Gauss vanLeer;
 
-    "div\(phiAlpha.*,U.*\)" Gauss limitedLinearV 1;
+    "div\(alphaPhi.*,U.*\)" Gauss limitedLinearV 1;
     div(Rc)                 Gauss linear;
     "div\(phi.*,U.*\)"      Gauss limitedLinearV 1;
 }
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/0/T.air b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/0/T.air
new file mode 100644
index 0000000000000000000000000000000000000000..9c0fd4206c19f34a05d8c05da28254b22882ebcf
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/0/T.air
@@ -0,0 +1,45 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      Tair;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions          [0 0 0 1 0 0 0];
+
+internalField       uniform 300;
+
+boundaryField
+{
+    walls
+    {
+        type               zeroGradient;
+    }
+    outlet
+    {
+        type               inletOutlet;
+        phi                phi.air;
+        inletValue         $internalField;
+        value              $internalField;
+    }
+    inlet
+    {
+        type               fixedValue;
+        value              $internalField;
+    }
+    frontAndBackPlanes
+    {
+        type               empty;
+    }
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/0/T.water b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/0/T.water
new file mode 100644
index 0000000000000000000000000000000000000000..e592c501d54f0421cc5df1b3ed3954cfb6969b1d
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/0/T.water
@@ -0,0 +1,45 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      Twater;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions          [0 0 0 1 0 0 0];
+
+internalField       uniform 350;
+
+boundaryField
+{
+    walls
+    {
+        type               zeroGradient;
+    }
+    outlet
+    {
+        type               inletOutlet;
+        phi                phi.water;
+        inletValue         $internalField;
+        value              $internalField;
+    }
+    inlet
+    {
+        type               fixedValue;
+        value              $internalField;
+    }
+    frontAndBackPlanes
+    {
+        type               empty;
+    }
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/0/Theta b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/0/Theta
new file mode 100644
index 0000000000000000000000000000000000000000..4cfbc0bbea6c52a5519b248519971e310d8fce96
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/0/Theta
@@ -0,0 +1,47 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      Theta;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions          [0 2 -2 0 0 0 0];
+
+internalField   uniform 0.0;
+
+boundaryField
+{
+    inlet
+    {
+        type            fixedValue;
+        value           uniform 1.0e-7;
+    }
+
+    outlet
+    {
+        type            inletOutlet;
+        inletValue      uniform 1.0e-7;
+        value           uniform 1.0e-7;
+    }
+
+    walls
+    {
+        type            zeroGradient;
+    }
+
+    defaultFaces
+    {
+        type            empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/0/U.air b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/0/U.air
new file mode 100644
index 0000000000000000000000000000000000000000..e81fffac0612e0a20d26f1cb9be4211ba4be9a16
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/0/U.air
@@ -0,0 +1,41 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      binary;
+    class       volVectorField;
+    object      U.air;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -1 0 0 0 0];
+
+internalField   uniform (0 0.1 0);
+
+boundaryField
+{
+    inlet
+    {
+        type               fixedValue;
+        value              $internalField;
+    }
+    outlet
+    {
+        type               pressureInletOutletVelocity;
+        phi                phi.air;
+        value              $internalField;
+    }
+    walls
+    {
+        type               fixedValue;
+        value              uniform (0 0 0);
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/0/U.water b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/0/U.water
new file mode 100644
index 0000000000000000000000000000000000000000..aab00fd78bb2a097604737fb5b1b77d2ae159967
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/0/U.water
@@ -0,0 +1,41 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      binary;
+    class       volVectorField;
+    object      U.water;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -1 0 0 0 0];
+
+internalField   uniform (0 0 0);
+
+boundaryField
+{
+    inlet
+    {
+        type               fixedValue;
+        value              $internalField;
+    }
+    outlet
+    {
+        type               pressureInletOutletVelocity;
+        phi                phi.water;
+        value              $internalField;
+    }
+    walls
+    {
+        type               fixedValue;
+        value              uniform (0 0 0);
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/0/alpha.air b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/0/alpha.air
new file mode 100644
index 0000000000000000000000000000000000000000..1b1a35684a06787a1eb3cb75f388563aad1443a1
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/0/alpha.air
@@ -0,0 +1,1926 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      alpha.air;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   nonuniform List<scalar>
+1875
+(
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+)
+;
+
+boundaryField
+{
+    inlet
+    {
+        type            fixedValue;
+        value           uniform 0.5;
+    }
+    outlet
+    {
+        type            inletOutlet;
+        phi             phi.air;
+        inletValue      uniform 1;
+        value           uniform 1;
+    }
+    walls
+    {
+        type            zeroGradient;
+    }
+    defaultFaces
+    {
+        type            empty;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/0/alpha.air.org b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/0/alpha.air.org
new file mode 100644
index 0000000000000000000000000000000000000000..4472b0c63598b7f95acf8d79fac10b3e9a08ebf7
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/0/alpha.air.org
@@ -0,0 +1,42 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      alpha.air;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    inlet
+    {
+        type            fixedValue;
+        value           uniform 0.5;
+    }
+    outlet
+    {
+        type            inletOutlet;
+        phi             phi.air;
+        inletValue      uniform 1;
+        value           uniform 1;
+    }
+    walls
+    {
+        type            zeroGradient;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/0/alpha.water b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/0/alpha.water
new file mode 100644
index 0000000000000000000000000000000000000000..92b1a774aaa20e5773761c89bc973a4e0695fc03
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/0/alpha.water
@@ -0,0 +1,1926 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      alpha.water;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   nonuniform List<scalar>
+1875
+(
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+)
+;
+
+boundaryField
+{
+    inlet
+    {
+        type            fixedValue;
+        value           uniform 0.5;
+    }
+    outlet
+    {
+        type            inletOutlet;
+        phi             phi.water;
+        inletValue      uniform 0;
+        value           uniform 0;
+    }
+    walls
+    {
+        type            zeroGradient;
+    }
+    defaultFaces
+    {
+        type            empty;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/0/alpha.water.org b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/0/alpha.water.org
new file mode 100644
index 0000000000000000000000000000000000000000..75a49e4169330526ff467f3f6be339845eaeb9b5
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/0/alpha.water.org
@@ -0,0 +1,41 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      alpha.water;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   uniform 1;
+
+boundaryField
+{
+    inlet
+    {
+        type            fixedValue;
+        value           uniform 0.5;
+    }
+    outlet
+    {
+        type            inletOutlet;
+        phi             phi.water;
+        inletValue      uniform 0;
+        value           uniform 0;
+    }
+    walls
+    {
+        type            zeroGradient;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/0/p b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/0/p
new file mode 100644
index 0000000000000000000000000000000000000000..0af317df79295b2d0ec3fbd7e89f1ecdc122119f
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/0/p
@@ -0,0 +1,40 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      p;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions          [1 -1 -2 0 0 0 0];
+
+internalField       uniform 1e5;
+
+boundaryField
+{
+    inlet
+    {
+        type               calculated;
+        value              $internalField;
+    }
+    outlet
+    {
+        type               calculated;
+        value              $internalField;
+    }
+    walls
+    {
+        type               calculated;
+        value              $internalField;
+    }
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/0/p_rgh b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/0/p_rgh
new file mode 100644
index 0000000000000000000000000000000000000000..de5ac9e4379285e390239add1bd4e2ac6fe8c51e
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/0/p_rgh
@@ -0,0 +1,41 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     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
+{
+    inlet
+    {
+        type               fixedFluxPressure;
+        value              $internalField;
+    }
+    outlet
+    {
+        type               prghPressure;
+        p                  $internalField;
+        value              $internalField;
+    }
+    walls
+    {
+        type               fixedFluxPressure;
+        value              $internalField;
+    }
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/constant/g b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/constant/g
new file mode 100644
index 0000000000000000000000000000000000000000..0cc222ca3457ed24bf9753d0926fbee84359e624
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/constant/g
@@ -0,0 +1,22 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       uniformDimensionedVectorField;
+    location    "constant";
+    object      g;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -2 0 0 0 0];
+value           (0 -9.81 0);
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/constant/phaseProperties b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/constant/phaseProperties
new file mode 100644
index 0000000000000000000000000000000000000000..98192e477f8097c3691a1d9a90b6a882a1212002
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/constant/phaseProperties
@@ -0,0 +1,166 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      phaseProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+type heatAndMomentumTransferMultiphaseSystem;
+
+phases (air water);
+
+air
+{
+    type            purePhaseModel;
+    diameterModel   isothermal;
+    isothermalCoeffs
+    {
+        d0              3e-3;
+        p0              1e5;
+    }
+
+    residualAlpha   1e-6;
+}
+
+water
+{
+    type            purePhaseModel;
+    diameterModel   constant;
+    constantCoeffs
+    {
+        d               1e-4;
+    }
+
+    residualAlpha   1e-6;
+}
+
+blending
+{
+    default
+    {
+        type            linear;
+        minFullyContinuousAlpha.air 0.7;
+        minPartlyContinuousAlpha.air 0.5;
+        minFullyContinuousAlpha.water 0.7;
+        minPartlyContinuousAlpha.water 0.5;
+    }
+}
+
+surfaceTension
+(
+    (air and water)
+    {
+        type            constant;
+        sigma           0.07;
+    }
+);
+
+interfaceCompression
+();
+
+aspectRatio
+(
+    (air in water)
+    {
+        type            constant;
+        E0              1.0;
+    }
+
+    (water in air)
+    {
+        type            constant;
+        E0              1.0;
+    }
+);
+
+drag
+(
+    (air in water)
+    {
+        type            SchillerNaumann;
+
+        residualRe      1e-3;
+        swarmCorrection
+        {
+            type        none;
+        }
+    }
+
+    (water in air)
+    {
+        type            SchillerNaumann;
+
+        residualRe      1e-3;
+        swarmCorrection
+        {
+            type        none;
+        }
+    }
+
+    (air and water)
+    {
+        type            segregated;
+
+        m               0.5;
+        n               8;
+        swarmCorrection
+        {
+            type        none;
+        }
+    }
+);
+
+virtualMass
+(
+    (air in water)
+    {
+        type            constantCoefficient;
+        Cvm             0.5;
+    }
+
+    (water in air)
+    {
+        type            constantCoefficient;
+        Cvm             0.5;
+    }
+);
+
+heatTransfer
+(
+    (air in water)
+    {
+        type            RanzMarshall;
+        residualAlpha   1e-4;
+    }
+
+    (water in air)
+    {
+        type            RanzMarshall;
+        residualAlpha   1e-4;
+    }
+);
+
+lift
+();
+
+wallLubrication
+();
+
+turbulentDispersion
+();
+
+// Minimum allowable pressure
+pMin            10000;
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/constant/polyMesh/boundary b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/constant/polyMesh/boundary
new file mode 100644
index 0000000000000000000000000000000000000000..4564ccc46a64685c98cc53274688263dee85086a
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/constant/polyMesh/boundary
@@ -0,0 +1,48 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       polyBoundaryMesh;
+    location    "constant/polyMesh";
+    object      boundary;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+4
+(
+    inlet
+    {
+        type            patch;
+        nFaces          25;
+        startFace       3650;
+    }
+    outlet
+    {
+        type            patch;
+        nFaces          25;
+        startFace       3675;
+    }
+    walls
+    {
+        type            wall;
+        inGroups        1(wall);
+        nFaces          150;
+        startFace       3700;
+    }
+    defaultFaces
+    {
+        type            empty;
+        inGroups        1(empty);
+        nFaces          3750;
+        startFace       3850;
+    }
+)
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/constant/thermophysicalProperties.air b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/constant/thermophysicalProperties.air
new file mode 100644
index 0000000000000000000000000000000000000000..befc0aeae449cccc50a24e955083b88b914aba67
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/constant/thermophysicalProperties.air
@@ -0,0 +1,49 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      thermophysicalProperties.air;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+thermoType
+{
+    type            heRhoThermo;
+    mixture         pureMixture;
+    transport       const;
+    thermo          hConst;
+    equationOfState perfectGas;
+    specie          specie;
+    energy          sensibleInternalEnergy;
+}
+
+mixture
+{
+    specie
+    {
+        nMoles      1;
+        molWeight   28.9;
+    }
+    thermodynamics
+    {
+        Cp          1007;
+        Hf          0;
+    }
+    transport
+    {
+        mu          1.84e-05;
+        Pr          0.7;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/constant/thermophysicalProperties.water b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/constant/thermophysicalProperties.water
new file mode 100644
index 0000000000000000000000000000000000000000..c44c005d3b17561dc32c9e32262b37dc348aecc3
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/constant/thermophysicalProperties.water
@@ -0,0 +1,54 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      thermophysicalProperties.water;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+thermoType
+{
+    type            heRhoThermo;
+    mixture         pureMixture;
+    transport       const;
+    thermo          hConst;
+    equationOfState perfectFluid;
+    specie          specie;
+    energy          sensibleInternalEnergy;
+}
+
+mixture
+{
+    specie
+    {
+        nMoles      1;
+        molWeight   18;
+    }
+    equationOfState
+    {
+        R           3000;
+        rho0        1027;
+    }
+    thermodynamics
+    {
+        Cp          4195;
+        Hf          0;
+    }
+    transport
+    {
+        mu          3.645e-4;
+        Pr          2.289;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/constant/turbulenceProperties.air b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/constant/turbulenceProperties.air
new file mode 100644
index 0000000000000000000000000000000000000000..1296429b72a21953def920b08774aa75e1d048b1
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/constant/turbulenceProperties.air
@@ -0,0 +1,20 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      turbulenceProperties.air;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+simulationType  laminar;
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/constant/turbulenceProperties.water b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/constant/turbulenceProperties.water
new file mode 100644
index 0000000000000000000000000000000000000000..7f0d75a82fcdc99677fa0be8a4111cfe91e4a82c
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/constant/turbulenceProperties.water
@@ -0,0 +1,20 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      turbulenceProperties.water;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+simulationType  laminar;
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/system/blockMeshDict b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/system/blockMeshDict
new file mode 100644
index 0000000000000000000000000000000000000000..d03967afdc2ccf7afbecdf32d50159c309a475e3
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/system/blockMeshDict
@@ -0,0 +1,61 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      blockMeshDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+convertToMeters 1;
+
+vertices
+(
+    (0 0 0)
+    (0.15 0 0)
+    (0.15 1 0)
+    (0 1 0)
+    (0 0 0.1)
+    (0.15 0 0.1)
+    (0.15 1 0.1)
+    (0 1 0.1)
+);
+
+blocks
+(
+    hex (0 1 2 3 4 5 6 7) (25 75 1) simpleGrading (1 1 1)
+);
+
+edges
+(
+);
+
+patches
+(
+    patch inlet
+    (
+        (1 5 4 0)
+    )
+    patch outlet
+    (
+        (3 7 6 2)
+    )
+    wall walls
+    (
+        (0 4 7 3)
+        (2 6 5 1)
+    )
+);
+
+mergePatchPairs
+(
+);
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/system/controlDict b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/system/controlDict
new file mode 100644
index 0000000000000000000000000000000000000000..c718db4669614a94ede5131d937b4cb0ed802e66
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/system/controlDict
@@ -0,0 +1,95 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      controlDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+application     reactingMultiphaseEulerFoam;
+
+startFrom       startTime;
+
+startTime       0;
+
+stopAt          endTime;
+
+endTime         100;
+
+deltaT          0.005;
+
+writeControl    runTime;
+
+writeInterval   1;
+
+purgeWrite      0;
+
+writeFormat     ascii;
+
+writePrecision  6;
+
+writeCompression uncompressed;
+
+timeFormat      general;
+
+timePrecision   6;
+
+runTimeModifiable yes;
+
+adjustTimeStep  no;
+
+maxCo           0.5;
+
+maxDeltaT       1;
+
+functions0
+{
+    fieldAverage1
+    {
+        type            fieldAverage;
+        functionObjectLibs ( "libfieldFunctionObjects.so" );
+        outputControl   outputTime;
+        fields
+        (
+            U.air
+            {
+                 mean        on;
+                 prime2Mean  off;
+                 base        time;
+            }
+
+            U.water
+            {
+                 mean        on;
+                 prime2Mean  off;
+                 base        time;
+            }
+
+            alpha.air
+            {
+                 mean        on;
+                 prime2Mean  off;
+                 base        time;
+            }
+
+            p
+            {
+                 mean        on;
+                 prime2Mean  off;
+                 base        time;
+            }
+        );
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/system/fvSchemes b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/system/fvSchemes
new file mode 100644
index 0000000000000000000000000000000000000000..3560150851a839a3afec0a35363d153c65600bc2
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/system/fvSchemes
@@ -0,0 +1,63 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      fvSchemes;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ddtSchemes
+{
+    default         Euler;
+}
+
+gradSchemes
+{
+    default         Gauss linear;
+}
+
+divSchemes
+{
+    default                         none;
+
+    div(phi,alpha.air)              Gauss vanLeer;
+    div(phi,alpha.water)            Gauss vanLeer;
+    div(phir,alpha.water,alpha.air) Gauss vanLeer;
+    div(phir,alpha.air,alpha.water) Gauss vanLeer;
+
+    "div\(alphaRhoPhi.*,U.*\)"      Gauss limitedLinearV 1;
+    "div\(phi.*,U.*\)"              Gauss limitedLinearV 1;
+
+    "div\(alphaRhoPhi.*,(h|e).*\)"  Gauss limitedLinear 1;
+    "div\(alphaRhoPhi.*,K.*\)"      Gauss limitedLinear 1;
+    "div\(alphaPhi.*,p\)"           Gauss limitedLinear 1;
+
+    "div\(\(\(\(alpha.*\*thermo:rho.*\)*nuEff.*\)\*dev2\(T\(grad\(U.*\)\)\)\)\)" Gauss linear;
+}
+
+laplacianSchemes
+{
+    default         Gauss linear uncorrected;
+}
+
+interpolationSchemes
+{
+    default         linear;
+}
+
+snGradSchemes
+{
+    default         uncorrected;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/system/fvSolution b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/system/fvSolution
new file mode 100644
index 0000000000000000000000000000000000000000..06c5db7aee0c677f3bb6b3b5a45be3e53829c17f
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/system/fvSolution
@@ -0,0 +1,82 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      fvSolution;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+solvers
+{
+    "alpha.*"
+    {
+        nAlphaCorr      1;
+        nAlphaSubCycles 2;
+    }
+
+    p_rgh
+    {
+        solver          GAMG;
+        smoother        DIC;
+        nPreSweeps      0;
+        nPostSweeps     2;
+        nFinestSweeps   2;
+        cacheAgglomeration true;
+        nCellsInCoarsestLevel 10;
+        agglomerator    faceAreaPair;
+        mergeLevels     1;
+        tolerance       1e-8;
+        relTol          0;
+    }
+
+    p_rghFinal
+    {
+        $p_rgh;
+        relTol          0;
+    }
+
+    "U.*"
+    {
+        solver          smoothSolver;
+        smoother        symGaussSeidel;
+        tolerance       1e-5;
+        relTol          0;
+        minIter         1;
+    }
+
+    "e.*"
+    {
+        solver          smoothSolver;
+        smoother        symGaussSeidel;
+        tolerance       1e-8;
+        relTol          0;
+        minIter         1;
+    }
+}
+
+PIMPLE
+{
+    nOuterCorrectors 3;
+    nCorrectors      1;
+    nNonOrthogonalCorrectors 0;
+}
+
+relaxationFactors
+{
+    equations
+    {
+        ".*"            1;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/system/setFieldsDict b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/system/setFieldsDict
new file mode 100644
index 0000000000000000000000000000000000000000..93d742ba74a2424f861b51d1c5d2d8211a625715
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/system/setFieldsDict
@@ -0,0 +1,36 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      setFieldsDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+defaultFieldValues
+(
+    volScalarFieldValue alpha.air 1
+);
+
+regions
+(
+    boxToCell
+    {
+        box (0 0 -0.1) (0.15 0.701 0.1);
+        fieldValues
+        (
+            volScalarFieldValue alpha.air 0
+        );
+    }
+);
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/0/T.air b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/0/T.air
new file mode 100644
index 0000000000000000000000000000000000000000..328ba98e8d870c0b901521d2c87a5b6c7e9147f3
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/0/T.air
@@ -0,0 +1,48 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      T.air;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 1 0];
+
+internalField   uniform 300;
+
+boundaryField
+{
+    rotor
+    {
+        type            zeroGradient;
+        value           uniform 300;
+    }
+
+    stator
+    {
+        type            zeroGradient;
+        value           uniform 300;
+    }
+
+    front
+    {
+        type            empty;
+    }
+
+    back
+    {
+        type            empty;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/0/T.mercury b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/0/T.mercury
new file mode 100644
index 0000000000000000000000000000000000000000..7e5ba636aad42c4c714e67728944297e7c99909c
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/0/T.mercury
@@ -0,0 +1,48 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      T.mercury;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 1 0];
+
+internalField   uniform 300;
+
+boundaryField
+{
+    rotor
+    {
+        type            zeroGradient;
+        value           uniform 300;
+    }
+
+    stator
+    {
+        type            zeroGradient;
+        value           uniform 300;
+    }
+
+    front
+    {
+        type            empty;
+    }
+
+    back
+    {
+        type            empty;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/0/T.oil b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/0/T.oil
new file mode 100644
index 0000000000000000000000000000000000000000..bd22fff2fec44f88d14d57f04c29ee3f0e51180c
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/0/T.oil
@@ -0,0 +1,48 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      T.oil;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 1 0];
+
+internalField   uniform 300;
+
+boundaryField
+{
+    rotor
+    {
+        type            zeroGradient;
+        value           uniform 300;
+    }
+
+    stator
+    {
+        type            zeroGradient;
+        value           uniform 300;
+    }
+
+    front
+    {
+        type            empty;
+    }
+
+    back
+    {
+        type            empty;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/0/T.water b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/0/T.water
new file mode 100644
index 0000000000000000000000000000000000000000..0671cbf1ad3eb2f94e99be56a90c646772201993
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/0/T.water
@@ -0,0 +1,48 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      T.water;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 1 0];
+
+internalField   uniform 300;
+
+boundaryField
+{
+    rotor
+    {
+        type            zeroGradient;
+        value           uniform 300;
+    }
+
+    stator
+    {
+        type            zeroGradient;
+        value           uniform 300;
+    }
+
+    front
+    {
+        type            empty;
+    }
+
+    back
+    {
+        type            empty;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/0/Theta b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/0/Theta
new file mode 100644
index 0000000000000000000000000000000000000000..b18d202df894c0276dd7f546fd3820cd154623e4
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/0/Theta
@@ -0,0 +1,44 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      Theta;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 2 -2 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    rotor
+    {
+        type            zeroGradient;
+    }
+
+    stator
+    {
+        type            zeroGradient;
+    }
+
+    front
+    {
+        type            empty;
+    }
+
+    back
+    {
+        type            empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/0/U.air b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/0/U.air
new file mode 100644
index 0000000000000000000000000000000000000000..6c91343655a215322430abb2118c736c7a29c320
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/0/U.air
@@ -0,0 +1,46 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volVectorField;
+    object      U.air;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -1 0 0 0 0];
+
+internalField   uniform (0 0 0);
+
+boundaryField
+{
+    rotor
+    {
+        type            fixedValue;
+        value           uniform (0 0 0);
+    }
+
+    stator
+    {
+        type            fixedValue;
+        value           uniform (0 0 0);
+    }
+
+    front
+    {
+        type            empty;
+    }
+
+    back
+    {
+        type            empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/0/U.mercury b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/0/U.mercury
new file mode 100644
index 0000000000000000000000000000000000000000..44441b84d810a004f81774fbeaafb4cb3e69733b
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/0/U.mercury
@@ -0,0 +1,46 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volVectorField;
+    object      U.mercury;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -1 0 0 0 0];
+
+internalField   uniform (0 0 0);
+
+boundaryField
+{
+    rotor
+    {
+        type            fixedValue;
+        value           uniform (0 0 0);
+    }
+
+    stator
+    {
+        type            fixedValue;
+        value           uniform (0 0 0);
+    }
+
+    front
+    {
+        type            empty;
+    }
+
+    back
+    {
+        type            empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/0/U.oil b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/0/U.oil
new file mode 100644
index 0000000000000000000000000000000000000000..9f6f8f999c1d8f20da566c7f059526673aba4057
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/0/U.oil
@@ -0,0 +1,46 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volVectorField;
+    object      U.oil;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -1 0 0 0 0];
+
+internalField   uniform (0 0 0);
+
+boundaryField
+{
+    rotor
+    {
+        type            fixedValue;
+        value           uniform (0 0 0);
+    }
+
+    stator
+    {
+        type            fixedValue;
+        value           uniform (0 0 0);
+    }
+
+    front
+    {
+        type            empty;
+    }
+
+    back
+    {
+        type            empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/0/U.water b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/0/U.water
new file mode 100644
index 0000000000000000000000000000000000000000..65f9af410b9aa3707d3d7115d13c3eab8df30b2c
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/0/U.water
@@ -0,0 +1,46 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volVectorField;
+    object      U.water;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -1 0 0 0 0];
+
+internalField   uniform (0 0 0);
+
+boundaryField
+{
+    rotor
+    {
+        type            fixedValue;
+        value           uniform (0 0 0);
+    }
+
+    stator
+    {
+        type            fixedValue;
+        value           uniform (0 0 0);
+    }
+
+    front
+    {
+        type            empty;
+    }
+
+    back
+    {
+        type            empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/0/alpha.air b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/0/alpha.air
new file mode 100644
index 0000000000000000000000000000000000000000..1b2bf4793ddb5ba501463984414aecff2c45707d
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/0/alpha.air
@@ -0,0 +1,44 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      alpha.air;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   uniform 0.1;
+
+boundaryField
+{
+    rotor
+    {
+        type            zeroGradient;
+    }
+
+    stator
+    {
+        type            zeroGradient;
+    }
+
+    front
+    {
+        type            empty;
+    }
+
+    back
+    {
+        type            empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/0/alpha.mercury b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/0/alpha.mercury
new file mode 100644
index 0000000000000000000000000000000000000000..a75393eb38b13c1a0cd8c672e527e42f22c6ffa3
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/0/alpha.mercury
@@ -0,0 +1,44 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      alpha.mercury;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   uniform 0.1;
+
+boundaryField
+{
+    rotor
+    {
+        type            zeroGradient;
+    }
+
+    stator
+    {
+        type            zeroGradient;
+    }
+
+    front
+    {
+        type            empty;
+    }
+
+    back
+    {
+        type            empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/0/alpha.oil b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/0/alpha.oil
new file mode 100644
index 0000000000000000000000000000000000000000..fe67cfa6add7749d5c4a13b29bbb51dd31b0e516
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/0/alpha.oil
@@ -0,0 +1,44 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      alpha.oil;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   uniform 0.1;
+
+boundaryField
+{
+    rotor
+    {
+        type            zeroGradient;
+    }
+
+    stator
+    {
+        type            zeroGradient;
+    }
+
+    front
+    {
+        type            empty;
+    }
+
+    back
+    {
+        type            empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/0/alpha.water b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/0/alpha.water
new file mode 100644
index 0000000000000000000000000000000000000000..8e47199187f25fc104fd80080125ada84e499d24
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/0/alpha.water
@@ -0,0 +1,44 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      alpha.water;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   uniform 0.7;
+
+boundaryField
+{
+    rotor
+    {
+        type            zeroGradient;
+    }
+
+    stator
+    {
+        type            zeroGradient;
+    }
+
+    front
+    {
+        type            empty;
+    }
+
+    back
+    {
+        type            empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/0/p b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/0/p
new file mode 100644
index 0000000000000000000000000000000000000000..515add92dbe796b854e1e2f28299b863f17db151
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/0/p
@@ -0,0 +1,46 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      p;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions          [1 -1 -2 0 0 0 0];
+
+internalField       uniform 1e5;
+
+boundaryField
+{
+    rotor
+    {
+        type            calculated;
+        value           $internalField;
+    }
+
+    stator
+    {
+        type            calculated;
+        value           $internalField;
+    }
+
+    front
+    {
+        type            empty;
+    }
+
+    back
+    {
+        type            empty;
+    }
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/0/p_rgh b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/0/p_rgh
new file mode 100644
index 0000000000000000000000000000000000000000..1e32488272935c1c47ff98f43710ebaffe09d38c
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/0/p_rgh
@@ -0,0 +1,46 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      p_rgh;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 -1 -2 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    rotor
+    {
+        type            fixedFluxPressure;
+        value           $internalField;
+    }
+
+    stator
+    {
+        type            fixedFluxPressure;
+        value           $internalField;
+    }
+
+    front
+    {
+        type            empty;
+    }
+
+    back
+    {
+        type            empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/Allrun b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/Allrun
new file mode 100755
index 0000000000000000000000000000000000000000..349ea685ea56c4967077cdb6bb6963a6b61c7c63
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/Allrun
@@ -0,0 +1,12 @@
+#!/bin/sh
+cd ${0%/*} || exit 1    # Run from this directory
+
+# Source tutorial run functions
+. $WM_PROJECT_DIR/bin/tools/RunFunctions
+
+application=`getApplication`
+
+runApplication ./makeMesh
+runApplication $application
+
+# ----------------------------------------------------------------- end-of-file
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/constant/MRFProperties b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/constant/MRFProperties
new file mode 100644
index 0000000000000000000000000000000000000000..c604aa7e2c4631238b2e0535d4786c4245c2dd5b
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/constant/MRFProperties
@@ -0,0 +1,31 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      MRFProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+MRF1
+{
+    cellZone    rotor;
+    active      yes;
+
+    // Fixed patches (by default they 'move' with the MRF zone)
+    nonRotatingPatches ();
+
+    origin    (0 0 0);
+    axis      (0 0 1);
+    omega     constant 10.472;
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/constant/g b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/constant/g
new file mode 100644
index 0000000000000000000000000000000000000000..508d65849430f8e5abf4b12d7baa53d70521a1c3
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/constant/g
@@ -0,0 +1,22 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       uniformDimensionedVectorField;
+    location    "constant";
+    object      g;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -2 0 0 0 0];
+value           (0 0 0);
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/constant/phaseProperties b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/constant/phaseProperties
new file mode 100644
index 0000000000000000000000000000000000000000..371c656ea3d9f4cde5f5921116cf934d947d33c8
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/constant/phaseProperties
@@ -0,0 +1,459 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      phaseProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+type heatAndMomentumTransferMultiphaseSystem;
+
+phases (water oil mercury air);
+
+water
+{
+    type            purePhaseModel;
+    diameterModel   constant;
+    constantCoeffs
+    {
+        d               1e-3;
+    }
+
+    residualAlpha 1e-3;
+}
+
+oil
+{
+    type            purePhaseModel;
+    diameterModel constant;
+    constantCoeffs
+    {
+        d               1e-3;
+    }
+
+    residualAlpha 1e-3;
+}
+
+mercury
+{
+    type            purePhaseModel;
+    diameterModel constant;
+    constantCoeffs
+    {
+        d               1e-3;
+    }
+
+    residualAlpha 1e-3;
+}
+
+air
+{
+    type            purePhaseModel;
+    diameterModel   isothermal;
+    isothermalCoeffs
+    {
+        d0              1e-3;
+        p0              1e5;
+    }
+
+    residualAlpha 1e-3;
+}
+
+blending
+{
+    default
+    {
+        type            linear;
+        minFullyContinuousAlpha.water 0.7;
+        minPartlyContinuousAlpha.water 0.5;
+        minFullyContinuousAlpha.oil 0.7;
+        minPartlyContinuousAlpha.oil 0.5;
+        minFullyContinuousAlpha.mercury 0.7;
+        minPartlyContinuousAlpha.mercury 0.5;
+        minFullyContinuousAlpha.air 0.7;
+        minPartlyContinuousAlpha.air 0.5;
+    }
+}
+
+surfaceTension
+(
+    (air and water)
+    {
+        type            constant;
+        sigma           0.07;
+    }
+    (air and oil)
+    {
+        type            constant;
+        sigma           0.07;
+    }
+    (air and mercury)
+    {
+        type            constant;
+        sigma           0.07;
+    }
+    (water and oil)
+    {
+        type            constant;
+        sigma           0;
+    }
+    (water and mercury)
+    {
+        type            constant;
+        sigma           0;
+    }
+    (oil and mercury)
+    {
+        type            constant;
+        sigma           0;
+    }
+);
+
+interfaceCompression
+(
+    (air and water)     0
+    (air and oil)       0
+    (air and mercury)   0
+    (water and oil)     0
+    (water and mercury) 0
+    (oil and mercury)   0
+);
+
+aspectRatio
+();
+
+drag
+(
+    (air in water)
+    {
+        type            SchillerNaumann;
+
+        residualRe      1e-3;
+        swarmCorrection
+        {
+            type        none;
+        }
+    }
+
+    (water in air)
+    {
+        type            SchillerNaumann;
+
+        residualRe      1e-3;
+        swarmCorrection
+        {
+            type        none;
+        }
+    }
+
+    (air and water)
+    {
+        type            segregated;
+
+        m               0.5;
+        n               8;
+        swarmCorrection
+        {
+            type        none;
+        }
+    }
+
+
+    (air in oil)
+    {
+        type            SchillerNaumann;
+
+        residualRe      1e-3;
+        swarmCorrection
+        {
+            type        none;
+        }
+    }
+
+    (oil in air)
+    {
+        type            SchillerNaumann;
+
+        residualRe      1e-3;
+        swarmCorrection
+        {
+            type        none;
+        }
+    }
+
+    (air and oil)
+    {
+        type            segregated;
+
+        m               0.5;
+        n               8;
+        swarmCorrection
+        {
+            type        none;
+        }
+    }
+
+
+    (air in mercury)
+    {
+        type            SchillerNaumann;
+
+        residualRe      1e-3;
+        swarmCorrection
+        {
+            type        none;
+        }
+    }
+
+    (mercury in air)
+    {
+        type            SchillerNaumann;
+
+        residualRe      1e-3;
+        swarmCorrection
+        {
+            type        none;
+        }
+    }
+
+    (air and mercury)
+    {
+        type            segregated;
+
+        m               0.5;
+        n               8;
+        swarmCorrection
+        {
+            type        none;
+        }
+    }
+
+
+
+    (water in oil)
+    {
+        type            SchillerNaumann;
+
+        residualRe      1e-3;
+        swarmCorrection
+        {
+            type        none;
+        }
+    }
+
+    (oil in water)
+    {
+        type            SchillerNaumann;
+
+        residualRe      1e-3;
+        swarmCorrection
+        {
+            type        none;
+        }
+    }
+
+    (water and oil)
+    {
+        type            segregated;
+
+        m               0.5;
+        n               8;
+        swarmCorrection
+        {
+            type        none;
+        }
+    }
+
+
+    (water in mercury)
+    {
+        type            SchillerNaumann;
+
+        residualRe      1e-3;
+        swarmCorrection
+        {
+            type        none;
+        }
+    }
+
+    (mercury in water)
+    {
+        type            SchillerNaumann;
+
+        residualRe      1e-3;
+        swarmCorrection
+        {
+            type        none;
+        }
+    }
+
+    (water and mercury)
+    {
+        type            segregated;
+
+        m               0.5;
+        n               8;
+        swarmCorrection
+        {
+            type        none;
+        }
+    }
+
+
+
+    (oil in mercury)
+    {
+        type            SchillerNaumann;
+
+        residualRe      1e-3;
+        swarmCorrection
+        {
+            type        none;
+        }
+    }
+
+    (mercury in oil)
+    {
+        type            SchillerNaumann;
+
+        residualRe      1e-3;
+        swarmCorrection
+        {
+            type        none;
+        }
+    }
+
+    (oil and mercury)
+    {
+        type            segregated;
+
+        m               0.5;
+        n               8;
+        swarmCorrection
+        {
+            type        none;
+        }
+    }
+);
+
+virtualMass
+(
+    (air in water)
+    {
+        type            constantCoefficient;
+        Cvm             0.5;
+    }
+
+    (air in oil)
+    {
+        type            constantCoefficient;
+        Cvm             0.5;
+    }
+
+    (air in mercury)
+    {
+        type            constantCoefficient;
+        Cvm             0.5;
+    }
+);
+
+heatTransfer
+(
+    (air in water)
+    {
+        type            RanzMarshall;
+        residualAlpha   1e-3;
+    }
+
+    (water in air)
+    {
+        type            RanzMarshall;
+        residualAlpha   1e-3;
+    }
+
+    (air in oil)
+    {
+        type            RanzMarshall;
+        residualAlpha   1e-3;
+    }
+
+    (oil in air)
+    {
+        type            RanzMarshall;
+        residualAlpha   1e-3;
+    }
+
+    (air in mercury)
+    {
+        type            RanzMarshall;
+        residualAlpha   1e-3;
+    }
+
+    (mercury in air)
+    {
+        type            RanzMarshall;
+        residualAlpha   1e-3;
+    }
+
+
+    (water in oil)
+    {
+        type            RanzMarshall;
+        residualAlpha   1e-3;
+    }
+
+    (oil in water)
+    {
+        type            RanzMarshall;
+        residualAlpha   1e-3;
+    }
+
+    (water in mercury)
+    {
+        type            RanzMarshall;
+        residualAlpha   1e-3;
+    }
+
+    (mercury in water)
+    {
+        type            RanzMarshall;
+        residualAlpha   1e-3;
+    }
+
+
+    (oil in mercury)
+    {
+        type            RanzMarshall;
+        residualAlpha   1e-3;
+    }
+
+    (mercury in oil)
+    {
+        type            RanzMarshall;
+        residualAlpha   1e-3;
+    }
+);
+
+lift
+();
+
+wallLubrication
+();
+
+turbulentDispersion
+();
+
+// Minimum allowable pressure
+pMin            10000;
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/constant/polyMesh/boundary b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/constant/polyMesh/boundary
new file mode 100644
index 0000000000000000000000000000000000000000..5c2a6cf99c517b8361b84403c7ca9833023efacd
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/constant/polyMesh/boundary
@@ -0,0 +1,50 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       polyBoundaryMesh;
+    location    "constant/polyMesh";
+    object      boundary;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+4
+(
+    rotor
+    {
+        type            wall;
+        inGroups        1(wall);
+        nFaces          192;
+        startFace       5952;
+    }
+    stator
+    {
+        type            wall;
+        inGroups        1(wall);
+        nFaces          192;
+        startFace       6144;
+    }
+    front
+    {
+        type            empty;
+        inGroups        1(empty);
+        nFaces          3072;
+        startFace       6336;
+    }
+    back
+    {
+        type            empty;
+        inGroups        1(empty);
+        nFaces          3072;
+        startFace       9408;
+    }
+)
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/constant/thermophysicalProperties.air b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/constant/thermophysicalProperties.air
new file mode 100644
index 0000000000000000000000000000000000000000..befc0aeae449cccc50a24e955083b88b914aba67
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/constant/thermophysicalProperties.air
@@ -0,0 +1,49 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      thermophysicalProperties.air;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+thermoType
+{
+    type            heRhoThermo;
+    mixture         pureMixture;
+    transport       const;
+    thermo          hConst;
+    equationOfState perfectGas;
+    specie          specie;
+    energy          sensibleInternalEnergy;
+}
+
+mixture
+{
+    specie
+    {
+        nMoles      1;
+        molWeight   28.9;
+    }
+    thermodynamics
+    {
+        Cp          1007;
+        Hf          0;
+    }
+    transport
+    {
+        mu          1.84e-05;
+        Pr          0.7;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/constant/thermophysicalProperties.mercury b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/constant/thermophysicalProperties.mercury
new file mode 100644
index 0000000000000000000000000000000000000000..864b73f24ed46cd5a98077e047c7f42fe59813b6
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/constant/thermophysicalProperties.mercury
@@ -0,0 +1,53 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      thermophysicalProperties.oil;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+thermoType
+{
+    type            heRhoThermo;
+    mixture         pureMixture;
+    transport       const;
+    thermo          hConst;
+    equationOfState rhoConst;
+    specie          specie;
+    energy          sensibleInternalEnergy;
+}
+
+mixture
+{
+    specie
+    {
+        nMoles      1;
+        molWeight   200;
+    }
+    equationOfState
+    {
+        rho         13529;
+    }
+    thermodynamics
+    {
+        Cp          135;
+        Hf          0;
+    }
+    transport
+    {
+        mu          8.6e-4;
+        Pr          111;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/constant/thermophysicalProperties.oil b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/constant/thermophysicalProperties.oil
new file mode 100644
index 0000000000000000000000000000000000000000..7c0d16aa9032291695160a419c602513111823f6
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/constant/thermophysicalProperties.oil
@@ -0,0 +1,53 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      thermophysicalProperties.oil;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+thermoType
+{
+    type            heRhoThermo;
+    mixture         pureMixture;
+    transport       const;
+    thermo          hConst;
+    equationOfState rhoConst;
+    specie          specie;
+    energy          sensibleInternalEnergy;
+}
+
+mixture
+{
+    specie
+    {
+        nMoles      1;
+        molWeight   160;
+    }
+    equationOfState
+    {
+        rho         500;
+    }
+    thermodynamics
+    {
+        Cp          4195;
+        Hf          0;
+    }
+    transport
+    {
+        mu          5e-4;
+        Pr          1;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/constant/thermophysicalProperties.water b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/constant/thermophysicalProperties.water
new file mode 100644
index 0000000000000000000000000000000000000000..c44c005d3b17561dc32c9e32262b37dc348aecc3
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/constant/thermophysicalProperties.water
@@ -0,0 +1,54 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      thermophysicalProperties.water;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+thermoType
+{
+    type            heRhoThermo;
+    mixture         pureMixture;
+    transport       const;
+    thermo          hConst;
+    equationOfState perfectFluid;
+    specie          specie;
+    energy          sensibleInternalEnergy;
+}
+
+mixture
+{
+    specie
+    {
+        nMoles      1;
+        molWeight   18;
+    }
+    equationOfState
+    {
+        R           3000;
+        rho0        1027;
+    }
+    thermodynamics
+    {
+        Cp          4195;
+        Hf          0;
+    }
+    transport
+    {
+        mu          3.645e-4;
+        Pr          2.289;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/constant/turbulenceProperties.air b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/constant/turbulenceProperties.air
new file mode 100644
index 0000000000000000000000000000000000000000..1296429b72a21953def920b08774aa75e1d048b1
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/constant/turbulenceProperties.air
@@ -0,0 +1,20 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      turbulenceProperties.air;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+simulationType  laminar;
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/constant/turbulenceProperties.mercury b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/constant/turbulenceProperties.mercury
new file mode 100644
index 0000000000000000000000000000000000000000..cf1ca5634deeb52e0727d005edc98a38eb5dd07b
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/constant/turbulenceProperties.mercury
@@ -0,0 +1,20 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      turbulenceProperties.mercury;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+simulationType  laminar;
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/constant/turbulenceProperties.oil b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/constant/turbulenceProperties.oil
new file mode 100644
index 0000000000000000000000000000000000000000..eb2604b78c1f4eed2f80c0048ea6760cf9075dee
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/constant/turbulenceProperties.oil
@@ -0,0 +1,20 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      turbulenceProperties.oil;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+simulationType  laminar;
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/constant/turbulenceProperties.water b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/constant/turbulenceProperties.water
new file mode 100644
index 0000000000000000000000000000000000000000..7f0d75a82fcdc99677fa0be8a4111cfe91e4a82c
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/constant/turbulenceProperties.water
@@ -0,0 +1,20 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      turbulenceProperties.water;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+simulationType  laminar;
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/makeMesh b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/makeMesh
new file mode 100755
index 0000000000000000000000000000000000000000..4d667956a0a85573c003797a5e2385cba6296964
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/makeMesh
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+m4 < system/blockMeshDict.m4 > system/blockMeshDict
+blockMesh
+topoSet
+setsToZones -noFlipMap
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/system/blockMeshDict.m4 b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/system/blockMeshDict.m4
new file mode 100644
index 0000000000000000000000000000000000000000..a93868498ba68d11b25b0875ff69205f62f822ed
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/system/blockMeshDict.m4
@@ -0,0 +1,818 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    `format'      ascii;
+    class       dictionary;
+    object      blockMeshDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// General macros to create 2D/extruded-2D meshes
+
+changecom(//)changequote([,])
+define(calc, [esyscmd(perl -e 'print ($1)')])
+define(VCOUNT, 0)
+define(vlabel, [[// ]Vertex $1 = VCOUNT define($1, VCOUNT)define([VCOUNT], incr(VCOUNT))])
+define(pi, 3.14159265)
+
+define(hex2D, hex ($1b $2b $3b $4b $1t $2t $3t $4t))
+define(quad2D, ($1b $2b $2t $1t))
+define(frontQuad, ($1t $2t $3t $4t))
+define(backQuad, ($1b $4b $3b $2b))
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+convertToMeters 0.1;
+
+// Hub radius
+define(r, 0.2)
+
+// Impeller-tip radius
+define(rb, 0.5)
+
+// Baffle-tip radius
+define(Rb, 0.7)
+
+// Tank radius
+define(R, 1)
+
+// MRF region radius
+define(ri, calc(0.5*(rb + Rb)))
+
+// Thickness of 2D slab
+define(z, 0.1)
+
+// Base z
+define(Zb, 0)
+
+// Top z
+define(Zt, calc(Zb + z))
+
+// Number of cells radially between hub and impeller tip
+define(Nr, 12)
+
+// Number of cells radially in each of the two regions between
+// impeller and baffle tips
+define(Ni, 4)
+
+// Number of cells radially between baffle tip and tank
+define(NR, 12)
+
+// Number of cells azimuthally in each of the 8 blocks
+define(Na, 12)
+
+// Number of cells in the thickness of the slab
+define(Nz, 1)
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+define(vert, (x$1$2 y$1$2 $3))
+define(evert, (ex$1$2 ey$1$2 $3))
+
+define(a0, 0)
+define(a1, -45)
+define(a2, -90)
+define(a3, -135)
+define(a4, 180)
+define(a5, 135)
+define(a6, 90)
+define(a7, 45)
+
+define(ea0, -22.5)
+define(ea1, -67.5)
+define(ea2, -112.5)
+define(ea3, -157.5)
+define(ea4, 157.5)
+define(ea5, 112.5)
+define(ea6, 67.5)
+define(ea7, 22.5)
+
+define(ca0, calc(cos((pi/180)*a0)))
+define(ca1, calc(cos((pi/180)*a1)))
+define(ca2, calc(cos((pi/180)*a2)))
+define(ca3, calc(cos((pi/180)*a3)))
+define(ca4, calc(cos((pi/180)*a4)))
+define(ca5, calc(cos((pi/180)*a5)))
+define(ca6, calc(cos((pi/180)*a6)))
+define(ca7, calc(cos((pi/180)*a7)))
+
+define(sa0, calc(sin((pi/180)*a0)))
+define(sa1, calc(sin((pi/180)*a1)))
+define(sa2, calc(sin((pi/180)*a2)))
+define(sa3, calc(sin((pi/180)*a3)))
+define(sa4, calc(sin((pi/180)*a4)))
+define(sa5, calc(sin((pi/180)*a5)))
+define(sa6, calc(sin((pi/180)*a6)))
+define(sa7, calc(sin((pi/180)*a7)))
+
+define(cea0, calc(cos((pi/180)*ea0)))
+define(cea1, calc(cos((pi/180)*ea1)))
+define(cea2, calc(cos((pi/180)*ea2)))
+define(cea3, calc(cos((pi/180)*ea3)))
+define(cea4, calc(cos((pi/180)*ea4)))
+define(cea5, calc(cos((pi/180)*ea5)))
+define(cea6, calc(cos((pi/180)*ea6)))
+define(cea7, calc(cos((pi/180)*ea7)))
+
+define(sea0, calc(sin((pi/180)*ea0)))
+define(sea1, calc(sin((pi/180)*ea1)))
+define(sea2, calc(sin((pi/180)*ea2)))
+define(sea3, calc(sin((pi/180)*ea3)))
+define(sea4, calc(sin((pi/180)*ea4)))
+define(sea5, calc(sin((pi/180)*ea5)))
+define(sea6, calc(sin((pi/180)*ea6)))
+define(sea7, calc(sin((pi/180)*ea7)))
+
+define(x00, calc(r*ca0))
+define(x01, calc(r*ca1))
+define(x02, calc(r*ca2))
+define(x03, calc(r*ca3))
+define(x04, calc(r*ca4))
+define(x05, calc(r*ca5))
+define(x06, calc(r*ca6))
+define(x07, calc(r*ca7))
+
+define(x10, calc(rb*ca0))
+define(x11, calc(rb*ca1))
+define(x12, calc(rb*ca2))
+define(x13, calc(rb*ca3))
+define(x14, calc(rb*ca4))
+define(x15, calc(rb*ca5))
+define(x16, calc(rb*ca6))
+define(x17, calc(rb*ca7))
+
+define(x20, calc(ri*ca0))
+define(x21, calc(ri*ca1))
+define(x22, calc(ri*ca2))
+define(x23, calc(ri*ca3))
+define(x24, calc(ri*ca4))
+define(x25, calc(ri*ca5))
+define(x26, calc(ri*ca6))
+define(x27, calc(ri*ca7))
+
+define(x30, calc(Rb*ca0))
+define(x31, calc(Rb*ca1))
+define(x32, calc(Rb*ca2))
+define(x33, calc(Rb*ca3))
+define(x34, calc(Rb*ca4))
+define(x35, calc(Rb*ca5))
+define(x36, calc(Rb*ca6))
+define(x37, calc(Rb*ca7))
+
+define(x40, calc(R*ca0))
+define(x41, calc(R*ca1))
+define(x42, calc(R*ca2))
+define(x43, calc(R*ca3))
+define(x44, calc(R*ca4))
+define(x45, calc(R*ca5))
+define(x46, calc(R*ca6))
+define(x47, calc(R*ca7))
+
+define(y00, calc(r*sa0))
+define(y01, calc(r*sa1))
+define(y02, calc(r*sa2))
+define(y03, calc(r*sa3))
+define(y04, calc(r*sa4))
+define(y05, calc(r*sa5))
+define(y06, calc(r*sa6))
+define(y07, calc(r*sa7))
+
+define(y10, calc(rb*sa0))
+define(y11, calc(rb*sa1))
+define(y12, calc(rb*sa2))
+define(y13, calc(rb*sa3))
+define(y14, calc(rb*sa4))
+define(y15, calc(rb*sa5))
+define(y16, calc(rb*sa6))
+define(y17, calc(rb*sa7))
+
+define(y20, calc(ri*sa0))
+define(y21, calc(ri*sa1))
+define(y22, calc(ri*sa2))
+define(y23, calc(ri*sa3))
+define(y24, calc(ri*sa4))
+define(y25, calc(ri*sa5))
+define(y26, calc(ri*sa6))
+define(y27, calc(ri*sa7))
+
+define(y30, calc(Rb*sa0))
+define(y31, calc(Rb*sa1))
+define(y32, calc(Rb*sa2))
+define(y33, calc(Rb*sa3))
+define(y34, calc(Rb*sa4))
+define(y35, calc(Rb*sa5))
+define(y36, calc(Rb*sa6))
+define(y37, calc(Rb*sa7))
+
+define(y40, calc(R*sa0))
+define(y41, calc(R*sa1))
+define(y42, calc(R*sa2))
+define(y43, calc(R*sa3))
+define(y44, calc(R*sa4))
+define(y45, calc(R*sa5))
+define(y46, calc(R*sa6))
+define(y47, calc(R*sa7))
+
+define(ex00, calc(r*cea0))
+define(ex01, calc(r*cea1))
+define(ex02, calc(r*cea2))
+define(ex03, calc(r*cea3))
+define(ex04, calc(r*cea4))
+define(ex05, calc(r*cea5))
+define(ex06, calc(r*cea6))
+define(ex07, calc(r*cea7))
+
+define(ex10, calc(rb*cea0))
+define(ex11, calc(rb*cea1))
+define(ex12, calc(rb*cea2))
+define(ex13, calc(rb*cea3))
+define(ex14, calc(rb*cea4))
+define(ex15, calc(rb*cea5))
+define(ex16, calc(rb*cea6))
+define(ex17, calc(rb*cea7))
+
+define(ex20, calc(ri*cea0))
+define(ex21, calc(ri*cea1))
+define(ex22, calc(ri*cea2))
+define(ex23, calc(ri*cea3))
+define(ex24, calc(ri*cea4))
+define(ex25, calc(ri*cea5))
+define(ex26, calc(ri*cea6))
+define(ex27, calc(ri*cea7))
+
+define(ex30, calc(Rb*cea0))
+define(ex31, calc(Rb*cea1))
+define(ex32, calc(Rb*cea2))
+define(ex33, calc(Rb*cea3))
+define(ex34, calc(Rb*cea4))
+define(ex35, calc(Rb*cea5))
+define(ex36, calc(Rb*cea6))
+define(ex37, calc(Rb*cea7))
+
+define(ex40, calc(R*cea0))
+define(ex41, calc(R*cea1))
+define(ex42, calc(R*cea2))
+define(ex43, calc(R*cea3))
+define(ex44, calc(R*cea4))
+define(ex45, calc(R*cea5))
+define(ex46, calc(R*cea6))
+define(ex47, calc(R*cea7))
+
+define(ey00, calc(r*sea0))
+define(ey01, calc(r*sea1))
+define(ey02, calc(r*sea2))
+define(ey03, calc(r*sea3))
+define(ey04, calc(r*sea4))
+define(ey05, calc(r*sea5))
+define(ey06, calc(r*sea6))
+define(ey07, calc(r*sea7))
+
+define(ey10, calc(rb*sea0))
+define(ey11, calc(rb*sea1))
+define(ey12, calc(rb*sea2))
+define(ey13, calc(rb*sea3))
+define(ey14, calc(rb*sea4))
+define(ey15, calc(rb*sea5))
+define(ey16, calc(rb*sea6))
+define(ey17, calc(rb*sea7))
+
+define(ey20, calc(ri*sea0))
+define(ey21, calc(ri*sea1))
+define(ey22, calc(ri*sea2))
+define(ey23, calc(ri*sea3))
+define(ey24, calc(ri*sea4))
+define(ey25, calc(ri*sea5))
+define(ey26, calc(ri*sea6))
+define(ey27, calc(ri*sea7))
+
+define(ey30, calc(Rb*sea0))
+define(ey31, calc(Rb*sea1))
+define(ey32, calc(Rb*sea2))
+define(ey33, calc(Rb*sea3))
+define(ey34, calc(Rb*sea4))
+define(ey35, calc(Rb*sea5))
+define(ey36, calc(Rb*sea6))
+define(ey37, calc(Rb*sea7))
+
+define(ey40, calc(R*sea0))
+define(ey41, calc(R*sea1))
+define(ey42, calc(R*sea2))
+define(ey43, calc(R*sea3))
+define(ey44, calc(R*sea4))
+define(ey45, calc(R*sea5))
+define(ey46, calc(R*sea6))
+define(ey47, calc(R*sea7))
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+vertices
+(
+    vert(0, 0, Zb) vlabel(r0b)
+    vert(0, 0, Zb) vlabel(r0sb)
+    vert(0, 1, Zb) vlabel(r1b)
+    vert(0, 2, Zb) vlabel(r2b)
+    vert(0, 2, Zb) vlabel(r2sb)
+    vert(0, 3, Zb) vlabel(r3b)
+    vert(0, 4, Zb) vlabel(r4b)
+    vert(0, 4, Zb) vlabel(r4sb)
+    vert(0, 5, Zb) vlabel(r5b)
+    vert(0, 6, Zb) vlabel(r6b)
+    vert(0, 6, Zb) vlabel(r6sb)
+    vert(0, 7, Zb) vlabel(r7b)
+
+    vert(1, 0, Zb) vlabel(rb0b)
+    vert(1, 1, Zb) vlabel(rb1b)
+    vert(1, 2, Zb) vlabel(rb2b)
+    vert(1, 3, Zb) vlabel(rb3b)
+    vert(1, 4, Zb) vlabel(rb4b)
+    vert(1, 5, Zb) vlabel(rb5b)
+    vert(1, 6, Zb) vlabel(rb6b)
+    vert(1, 7, Zb) vlabel(rb7b)
+
+    vert(2, 0, Zb) vlabel(ri0b)
+    vert(2, 1, Zb) vlabel(ri1b)
+    vert(2, 2, Zb) vlabel(ri2b)
+    vert(2, 3, Zb) vlabel(ri3b)
+    vert(2, 4, Zb) vlabel(ri4b)
+    vert(2, 5, Zb) vlabel(ri5b)
+    vert(2, 6, Zb) vlabel(ri6b)
+    vert(2, 7, Zb) vlabel(ri7b)
+
+    vert(3, 0, Zb) vlabel(Rb0b)
+    vert(3, 1, Zb) vlabel(Rb1b)
+    vert(3, 2, Zb) vlabel(Rb2b)
+    vert(3, 3, Zb) vlabel(Rb3b)
+    vert(3, 4, Zb) vlabel(Rb4b)
+    vert(3, 5, Zb) vlabel(Rb5b)
+    vert(3, 6, Zb) vlabel(Rb6b)
+    vert(3, 7, Zb) vlabel(Rb7b)
+
+    vert(4, 0, Zb) vlabel(R0b)
+    vert(4, 1, Zb) vlabel(R1b)
+    vert(4, 1, Zb) vlabel(R1sb)
+    vert(4, 2, Zb) vlabel(R2b)
+    vert(4, 3, Zb) vlabel(R3b)
+    vert(4, 3, Zb) vlabel(R3sb)
+    vert(4, 4, Zb) vlabel(R4b)
+    vert(4, 5, Zb) vlabel(R5b)
+    vert(4, 5, Zb) vlabel(R5sb)
+    vert(4, 6, Zb) vlabel(R6b)
+    vert(4, 7, Zb) vlabel(R7b)
+    vert(4, 7, Zb) vlabel(R7sb)
+
+    vert(0, 0, Zt) vlabel(r0t)
+    vert(0, 0, Zt) vlabel(r0st)
+    vert(0, 1, Zt) vlabel(r1t)
+    vert(0, 2, Zt) vlabel(r2t)
+    vert(0, 2, Zt) vlabel(r2st)
+    vert(0, 3, Zt) vlabel(r3t)
+    vert(0, 4, Zt) vlabel(r4t)
+    vert(0, 4, Zt) vlabel(r4st)
+    vert(0, 5, Zt) vlabel(r5t)
+    vert(0, 6, Zt) vlabel(r6t)
+    vert(0, 6, Zt) vlabel(r6st)
+    vert(0, 7, Zt) vlabel(r7t)
+
+    vert(1, 0, Zt) vlabel(rb0t)
+    vert(1, 1, Zt) vlabel(rb1t)
+    vert(1, 2, Zt) vlabel(rb2t)
+    vert(1, 3, Zt) vlabel(rb3t)
+    vert(1, 4, Zt) vlabel(rb4t)
+    vert(1, 5, Zt) vlabel(rb5t)
+    vert(1, 6, Zt) vlabel(rb6t)
+    vert(1, 7, Zt) vlabel(rb7t)
+
+    vert(2, 0, Zt) vlabel(ri0t)
+    vert(2, 1, Zt) vlabel(ri1t)
+    vert(2, 2, Zt) vlabel(ri2t)
+    vert(2, 3, Zt) vlabel(ri3t)
+    vert(2, 4, Zt) vlabel(ri4t)
+    vert(2, 5, Zt) vlabel(ri5t)
+    vert(2, 6, Zt) vlabel(ri6t)
+    vert(2, 7, Zt) vlabel(ri7t)
+
+    vert(3, 0, Zt) vlabel(Rb0t)
+    vert(3, 1, Zt) vlabel(Rb1t)
+    vert(3, 2, Zt) vlabel(Rb2t)
+    vert(3, 3, Zt) vlabel(Rb3t)
+    vert(3, 4, Zt) vlabel(Rb4t)
+    vert(3, 5, Zt) vlabel(Rb5t)
+    vert(3, 6, Zt) vlabel(Rb6t)
+    vert(3, 7, Zt) vlabel(Rb7t)
+
+    vert(4, 0, Zt) vlabel(R0t)
+    vert(4, 1, Zt) vlabel(R1t)
+    vert(4, 1, Zt) vlabel(R1st)
+    vert(4, 2, Zt) vlabel(R2t)
+    vert(4, 3, Zt) vlabel(R3t)
+    vert(4, 3, Zt) vlabel(R3st)
+    vert(4, 4, Zt) vlabel(R4t)
+    vert(4, 5, Zt) vlabel(R5t)
+    vert(4, 5, Zt) vlabel(R5st)
+    vert(4, 6, Zt) vlabel(R6t)
+    vert(4, 7, Zt) vlabel(R7t)
+    vert(4, 7, Zt) vlabel(R7st)
+);
+
+blocks
+(
+    // block0
+    hex2D(r0, r1, rb1, rb0)
+    rotor
+    (Na Nr Nz)
+    simpleGrading (1 1 1)
+
+    // block1
+    hex2D(r1, r2s, rb2, rb1)
+    rotor
+    (Na Nr Nz)
+    simpleGrading (1 1 1)
+
+    // block2
+    hex2D(r2, r3, rb3, rb2)
+    rotor
+    (Na Nr Nz)
+    simpleGrading (1 1 1)
+
+    // block3
+    hex2D(r3, r4s, rb4, rb3)
+    rotor
+    (Na Nr Nz)
+    simpleGrading (1 1 1)
+
+    // block4
+    hex2D(r4, r5, rb5, rb4)
+    rotor
+    (Na Nr Nz)
+    simpleGrading (1 1 1)
+
+    // block5
+    hex2D(r5, r6s, rb6, rb5)
+    rotor
+    (Na Nr Nz)
+    simpleGrading (1 1 1)
+
+    // block6
+    hex2D(r6, r7, rb7, rb6)
+    rotor
+    (Na Nr Nz)
+    simpleGrading (1 1 1)
+
+    // block7
+    hex2D(r7, r0s, rb0, rb7)
+    rotor
+    (Na Nr Nz)
+    simpleGrading (1 1 1)
+
+    // block0
+    hex2D(rb0, rb1, ri1, ri0)
+    rotor
+    (Na Ni Nz)
+    simpleGrading (1 1 1)
+
+    // block1
+    hex2D(rb1, rb2, ri2, ri1)
+    rotor
+    (Na Ni Nz)
+    simpleGrading (1 1 1)
+
+    // block2
+    hex2D(rb2, rb3, ri3, ri2)
+    rotor
+    (Na Ni Nz)
+    simpleGrading (1 1 1)
+
+    // block3
+    hex2D(rb3, rb4, ri4, ri3)
+    rotor
+    (Na Ni Nz)
+    simpleGrading (1 1 1)
+
+    // block4
+    hex2D(rb4, rb5, ri5, ri4)
+    rotor
+    (Na Ni Nz)
+    simpleGrading (1 1 1)
+
+    // block5
+    hex2D(rb5, rb6, ri6, ri5)
+    rotor
+    (Na Ni Nz)
+    simpleGrading (1 1 1)
+
+    // block6
+    hex2D(rb6, rb7, ri7, ri6)
+    rotor
+    (Na Ni Nz)
+    simpleGrading (1 1 1)
+
+    // block7
+    hex2D(rb7, rb0, ri0, ri7)
+    rotor
+    (Na Ni Nz)
+    simpleGrading (1 1 1)
+
+    // block0
+    hex2D(ri0, ri1, Rb1, Rb0)
+    (Na Ni Nz)
+    simpleGrading (1 1 1)
+
+    // block1
+    hex2D(ri1, ri2, Rb2, Rb1)
+    (Na Ni Nz)
+    simpleGrading (1 1 1)
+
+    // block2
+    hex2D(ri2, ri3, Rb3, Rb2)
+    (Na Ni Nz)
+    simpleGrading (1 1 1)
+
+    // block3
+    hex2D(ri3, ri4, Rb4, Rb3)
+    (Na Ni Nz)
+    simpleGrading (1 1 1)
+
+    // block4
+    hex2D(ri4, ri5, Rb5, Rb4)
+    (Na Ni Nz)
+    simpleGrading (1 1 1)
+
+    // block5
+    hex2D(ri5, ri6, Rb6, Rb5)
+    (Na Ni Nz)
+    simpleGrading (1 1 1)
+
+    // block6
+    hex2D(ri6, ri7, Rb7, Rb6)
+    (Na Ni Nz)
+    simpleGrading (1 1 1)
+
+    // block7
+    hex2D(ri7, ri0, Rb0, Rb7)
+    (Na Ni Nz)
+    simpleGrading (1 1 1)
+
+    // block0
+    hex2D(Rb0, Rb1, R1s, R0)
+    (Na NR Nz)
+    simpleGrading (1 1 1)
+
+    // block1
+    hex2D(Rb1, Rb2, R2, R1)
+    (Na NR Nz)
+    simpleGrading (1 1 1)
+
+    // block2
+    hex2D(Rb2, Rb3, R3s, R2)
+    (Na NR Nz)
+    simpleGrading (1 1 1)
+
+    // block3
+    hex2D(Rb3, Rb4, R4, R3)
+    (Na NR Nz)
+    simpleGrading (1 1 1)
+
+    // block4
+    hex2D(Rb4, Rb5, R5s, R4)
+    (Na NR Nz)
+    simpleGrading (1 1 1)
+
+    // block5
+    hex2D(Rb5, Rb6, R6, R5)
+    (Na NR Nz)
+    simpleGrading (1 1 1)
+
+    // block6
+    hex2D(Rb6, Rb7, R7s, R6)
+    (Na NR Nz)
+    simpleGrading (1 1 1)
+
+    // block7
+    hex2D(Rb7, Rb0, R0, R7)
+    (Na NR Nz)
+    simpleGrading (1 1 1)
+);
+
+edges
+(
+    arc r0b r1b evert(0, 0, Zb)
+    arc r1b r2sb evert(0, 1, Zb)
+    arc r2b r3b evert(0, 2, Zb)
+    arc r3b r4sb evert(0, 3, Zb)
+    arc r4b r5b evert(0, 4, Zb)
+    arc r5b r6sb evert(0, 5, Zb)
+    arc r6b r7b evert(0, 6, Zb)
+    arc r7b r0sb evert(0, 7, Zb)
+
+    arc rb0b rb1b evert(1, 0, Zb)
+    arc rb1b rb2b evert(1, 1, Zb)
+    arc rb2b rb3b evert(1, 2, Zb)
+    arc rb3b rb4b evert(1, 3, Zb)
+    arc rb4b rb5b evert(1, 4, Zb)
+    arc rb5b rb6b evert(1, 5, Zb)
+    arc rb6b rb7b evert(1, 6, Zb)
+    arc rb7b rb0b evert(1, 7, Zb)
+
+    arc ri0b ri1b evert(2, 0, Zb)
+    arc ri1b ri2b evert(2, 1, Zb)
+    arc ri2b ri3b evert(2, 2, Zb)
+    arc ri3b ri4b evert(2, 3, Zb)
+    arc ri4b ri5b evert(2, 4, Zb)
+    arc ri5b ri6b evert(2, 5, Zb)
+    arc ri6b ri7b evert(2, 6, Zb)
+    arc ri7b ri0b evert(2, 7, Zb)
+
+    arc Rb0b Rb1b evert(3, 0, Zb)
+    arc Rb1b Rb2b evert(3, 1, Zb)
+    arc Rb2b Rb3b evert(3, 2, Zb)
+    arc Rb3b Rb4b evert(3, 3, Zb)
+    arc Rb4b Rb5b evert(3, 4, Zb)
+    arc Rb5b Rb6b evert(3, 5, Zb)
+    arc Rb6b Rb7b evert(3, 6, Zb)
+    arc Rb7b Rb0b evert(3, 7, Zb)
+
+    arc R0b R1sb evert(4, 0, Zb)
+    arc R1b R2b evert(4, 1, Zb)
+    arc R2b R3sb evert(4, 2, Zb)
+    arc R3b R4b evert(4, 3, Zb)
+    arc R4b R5sb evert(4, 4, Zb)
+    arc R5b R6b evert(4, 5, Zb)
+    arc R6b R7sb evert(4, 6, Zb)
+    arc R7b R0b evert(4, 7, Zb)
+
+    arc r0t r1t evert(0, 0, Zt)
+    arc r1t r2st evert(0, 1, Zt)
+    arc r2t r3t evert(0, 2, Zt)
+    arc r3t r4st evert(0, 3, Zt)
+    arc r4t r5t evert(0, 4, Zt)
+    arc r5t r6st evert(0, 5, Zt)
+    arc r6t r7t evert(0, 6, Zt)
+    arc r7t r0st evert(0, 7, Zt)
+
+    arc rb0t rb1t evert(1, 0, Zt)
+    arc rb1t rb2t evert(1, 1, Zt)
+    arc rb2t rb3t evert(1, 2, Zt)
+    arc rb3t rb4t evert(1, 3, Zt)
+    arc rb4t rb5t evert(1, 4, Zt)
+    arc rb5t rb6t evert(1, 5, Zt)
+    arc rb6t rb7t evert(1, 6, Zt)
+    arc rb7t rb0t evert(1, 7, Zt)
+
+    arc ri0t ri1t evert(2, 0, Zt)
+    arc ri1t ri2t evert(2, 1, Zt)
+    arc ri2t ri3t evert(2, 2, Zt)
+    arc ri3t ri4t evert(2, 3, Zt)
+    arc ri4t ri5t evert(2, 4, Zt)
+    arc ri5t ri6t evert(2, 5, Zt)
+    arc ri6t ri7t evert(2, 6, Zt)
+    arc ri7t ri0t evert(2, 7, Zt)
+
+    arc Rb0t Rb1t evert(3, 0, Zt)
+    arc Rb1t Rb2t evert(3, 1, Zt)
+    arc Rb2t Rb3t evert(3, 2, Zt)
+    arc Rb3t Rb4t evert(3, 3, Zt)
+    arc Rb4t Rb5t evert(3, 4, Zt)
+    arc Rb5t Rb6t evert(3, 5, Zt)
+    arc Rb6t Rb7t evert(3, 6, Zt)
+    arc Rb7t Rb0t evert(3, 7, Zt)
+
+    arc R0t R1st evert(4, 0, Zt)
+    arc R1t R2t evert(4, 1, Zt)
+    arc R2t R3st evert(4, 2, Zt)
+    arc R3t R4t evert(4, 3, Zt)
+    arc R4t R5st evert(4, 4, Zt)
+    arc R5t R6t evert(4, 5, Zt)
+    arc R6t R7st evert(4, 6, Zt)
+    arc R7t R0t evert(4, 7, Zt)
+);
+
+patches
+(
+    wall rotor
+    (
+        quad2D(r0, r1)
+        quad2D(r1, r2s)
+        quad2D(r2, r3)
+        quad2D(r3, r4s)
+        quad2D(r4, r5)
+        quad2D(r5, r6s)
+        quad2D(r6, r7)
+        quad2D(r7, r0s)
+
+        quad2D(r0, rb0)
+        quad2D(r0s, rb0)
+
+        quad2D(r2, rb2)
+        quad2D(r2s, rb2)
+
+        quad2D(r4, rb4)
+        quad2D(r4s, rb4)
+
+        quad2D(r6, rb6)
+        quad2D(r6s, rb6)
+    )
+
+    wall stator
+    (
+        quad2D(R0, R1s)
+        quad2D(R1, R2)
+        quad2D(R2, R3s)
+        quad2D(R3, R4)
+        quad2D(R4, R5s)
+        quad2D(R5, R6)
+        quad2D(R6, R7s)
+        quad2D(R7, R0)
+
+        quad2D(R1, Rb1)
+        quad2D(R1s, Rb1)
+
+        quad2D(R3, Rb3)
+        quad2D(R3s, Rb3)
+
+        quad2D(R5, Rb5)
+        quad2D(R5s, Rb5)
+
+        quad2D(R7, Rb7)
+        quad2D(R7s, Rb7)
+    )
+
+    empty front
+    (
+        frontQuad(r0, r1, rb1, rb0)
+        frontQuad(r1, r2s, rb2, rb1)
+        frontQuad(r2, r3, rb3, rb2)
+        frontQuad(r3, r4s, rb4, rb3)
+        frontQuad(r4, r5, rb5, rb4)
+        frontQuad(r5, r6s, rb6, rb5)
+        frontQuad(r6, r7, rb7, rb6)
+        frontQuad(r7, r0s, rb0, rb7)
+        frontQuad(rb0, rb1, ri1, ri0)
+        frontQuad(rb1, rb2, ri2, ri1)
+        frontQuad(rb2, rb3, ri3, ri2)
+        frontQuad(rb3, rb4, ri4, ri3)
+        frontQuad(rb4, rb5, ri5, ri4)
+        frontQuad(rb5, rb6, ri6, ri5)
+        frontQuad(rb6, rb7, ri7, ri6)
+        frontQuad(rb7, rb0, ri0, ri7)
+        frontQuad(ri0, ri1, Rb1, Rb0)
+        frontQuad(ri1, ri2, Rb2, Rb1)
+        frontQuad(ri2, ri3, Rb3, Rb2)
+        frontQuad(ri3, ri4, Rb4, Rb3)
+        frontQuad(ri4, ri5, Rb5, Rb4)
+        frontQuad(ri5, ri6, Rb6, Rb5)
+        frontQuad(ri6, ri7, Rb7, Rb6)
+        frontQuad(ri7, ri0, Rb0, Rb7)
+        frontQuad(Rb0, Rb1, R1s, R0)
+        frontQuad(Rb1, Rb2, R2, R1)
+        frontQuad(Rb2, Rb3, R3s, R2)
+        frontQuad(Rb3, Rb4, R4, R3)
+        frontQuad(Rb4, Rb5, R5s, R4)
+        frontQuad(Rb5, Rb6, R6, R5)
+        frontQuad(Rb6, Rb7, R7s, R6)
+        frontQuad(Rb7, Rb0, R0, R7)
+    )
+
+    empty back
+    (
+        backQuad(r0, r1, rb1, rb0)
+        backQuad(r1, r2s, rb2, rb1)
+        backQuad(r2, r3, rb3, rb2)
+        backQuad(r3, r4s, rb4, rb3)
+        backQuad(r4, r5, rb5, rb4)
+        backQuad(r5, r6s, rb6, rb5)
+        backQuad(r6, r7, rb7, rb6)
+        backQuad(r7, r0s, rb0, rb7)
+        backQuad(rb0, rb1, ri1, ri0)
+        backQuad(rb1, rb2, ri2, ri1)
+        backQuad(rb2, rb3, ri3, ri2)
+        backQuad(rb3, rb4, ri4, ri3)
+        backQuad(rb4, rb5, ri5, ri4)
+        backQuad(rb5, rb6, ri6, ri5)
+        backQuad(rb6, rb7, ri7, ri6)
+        backQuad(rb7, rb0, ri0, ri7)
+        backQuad(ri0, ri1, Rb1, Rb0)
+        backQuad(ri1, ri2, Rb2, Rb1)
+        backQuad(ri2, ri3, Rb3, Rb2)
+        backQuad(ri3, ri4, Rb4, Rb3)
+        backQuad(ri4, ri5, Rb5, Rb4)
+        backQuad(ri5, ri6, Rb6, Rb5)
+        backQuad(ri6, ri7, Rb7, Rb6)
+        backQuad(ri7, ri0, Rb0, Rb7)
+        backQuad(Rb0, Rb1, R1s, R0)
+        backQuad(Rb1, Rb2, R2, R1)
+        backQuad(Rb2, Rb3, R3s, R2)
+        backQuad(Rb3, Rb4, R4, R3)
+        backQuad(Rb4, Rb5, R5s, R4)
+        backQuad(Rb5, Rb6, R6, R5)
+        backQuad(Rb6, Rb7, R7s, R6)
+        backQuad(Rb7, Rb0, R0, R7)
+    )
+);
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/system/controlDict b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/system/controlDict
new file mode 100644
index 0000000000000000000000000000000000000000..8ac877bb69fb9d3cf9657f2a29090dc0ff8ab351
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/system/controlDict
@@ -0,0 +1,55 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      controlDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+application     reactingMultiphaseEulerFoam;
+
+startFrom       startTime;
+
+startTime       0;
+
+stopAt          endTime;
+
+endTime         5;
+
+deltaT          1e-4;
+
+writeControl    adjustableRunTime;
+
+writeInterval   0.1;
+
+purgeWrite      0;
+
+writeFormat     ascii;
+
+writePrecision  6;
+
+writeCompression uncompressed;
+
+timeFormat      general;
+
+timePrecision   6;
+
+runTimeModifiable yes;
+
+adjustTimeStep  yes;
+
+maxCo           0.5;
+
+maxDeltaT       1;
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/system/fvSchemes b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/system/fvSchemes
new file mode 100644
index 0000000000000000000000000000000000000000..4cd730fdd386c14eeb4e2303c29856cdad5ef63b
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/system/fvSchemes
@@ -0,0 +1,58 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      fvSchemes;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ddtSchemes
+{
+    default         Euler;
+}
+
+gradSchemes
+{
+    default         Gauss linear;
+}
+
+divSchemes
+{
+    "div\(phi,alpha.*\)"    Gauss vanLeer;
+    "div\(phir,alpha.*,alpha.*\)"   Gauss vanLeer;
+
+    "div\(alphaRhoPhi.*,U.*\)"      Gauss limitedLinearV 1;
+    "div\(phi.*,U.*\)"              Gauss limitedLinearV 1;
+
+    "div\(alphaRhoPhi.*,(h|e).*\)"  Gauss limitedLinear 1;
+    "div\(alphaRhoPhi.*,K.*\)"      Gauss limitedLinear 1;
+    "div\(alphaPhi.*,p\)"           Gauss limitedLinear 1;
+
+    "div\(\(\(\(alpha.*\*thermo:rho.*\)*nuEff.*\)\*dev2\(T\(grad\(U.*\)\)\)\)\)" Gauss linear;
+}
+
+laplacianSchemes
+{
+    default         Gauss linear corrected;
+}
+
+interpolationSchemes
+{
+    default         linear;
+}
+
+snGradSchemes
+{
+    default         corrected;
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/system/fvSolution b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/system/fvSolution
new file mode 100644
index 0000000000000000000000000000000000000000..a49313e5c009dd498b4f9f516a0471f1aa2ab441
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/system/fvSolution
@@ -0,0 +1,109 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      fvSolution;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+solvers
+{
+    "alpha.*"
+    {
+        nAlphaSubCycles 2;
+    }
+
+    p_rgh
+    {
+        solver          GAMG;
+        tolerance       1e-7;
+        relTol          0.01;
+        smoother        GaussSeidel;
+        nPreSweeps      0;
+        nPostSweeps     2;
+        nFinestSweeps   2;
+        cacheAgglomeration on;
+        nCellsInCoarsestLevel 10;
+        agglomerator    faceAreaPair;
+        mergeLevels     1;
+    }
+
+    p_rghFinal
+    {
+        solver          PCG;
+        preconditioner
+        {
+            preconditioner  GAMG;
+            tolerance       1e-7;
+            relTol          0;
+            nVcycles        2;
+            smoother        GaussSeidel;
+            nPreSweeps      0;
+            nPostSweeps     2;
+            nFinestSweeps   2;
+            cacheAgglomeration on;
+            nCellsInCoarsestLevel 10;
+            agglomerator    faceAreaPair;
+            mergeLevels     1;
+        }
+        tolerance       1e-7;
+        relTol          0;
+        maxIter         30;
+    }
+
+    pcorr
+    {
+        $p_rghFinal;
+        tolerance       1e-5;
+        relTol          0;
+    }
+
+    "U.*"
+    {
+        solver          smoothSolver;
+        smoother        symGaussSeidel;
+        tolerance       1e-5;
+        relTol          0;
+        minIter         1;
+    }
+
+    "e.*"
+    {
+        solver          smoothSolver;
+        smoother        symGaussSeidel;
+        tolerance       1e-8;
+        relTol          0;
+        minIter         1;
+        maxIter         10;
+    }
+}
+
+PIMPLE
+{
+    nOuterCorrectors     1;
+    nCorrectors     3;
+    nNonOrthogonalCorrectors 0;
+
+    pRefCell        0;
+    pRefValue       0;
+}
+
+relaxationFactors
+{
+    equations
+    {
+        ".*"            1;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/system/topoSetDict b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/system/topoSetDict
new file mode 100644
index 0000000000000000000000000000000000000000..bf749449bfe3a53cee9b2d709eb66a9b2aff4bfe
--- /dev/null
+++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/mixerVessel2D/system/topoSetDict
@@ -0,0 +1,32 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      topoSetDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+actions
+(
+    {
+        name    rotor;
+        type    cellSet;
+        action  new;
+        source  zoneToCell;
+        sourceInfo
+        {
+            name rotor;
+        }
+    }
+);
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/alphat.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/alphat.air
new file mode 100644
index 0000000000000000000000000000000000000000..60979da94f4cd22aaa91059d363efb400f581977
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/alphat.air
@@ -0,0 +1,48 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      alphat.air;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 -1 -1 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    inlet
+    {
+        type            calculated;
+        value           $internalField;
+    }
+
+    outlet
+    {
+        type            calculated;
+        value           $internalField;
+    }
+
+    walls
+    {
+        type            compressible::alphatWallFunction;
+        Prt             0.85;
+        value           $internalField;
+    }
+
+    defaultFaces
+    {
+        type            empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/alphat.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/alphat.water
new file mode 100644
index 0000000000000000000000000000000000000000..3ae0a65592e12a3e4de29a4f74fbdbe0d359f0fd
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/alphat.water
@@ -0,0 +1,48 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      alphat.water;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 -1 -1 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    inlet
+    {
+        type            calculated;
+        value           $internalField;
+    }
+
+    outlet
+    {
+        type            calculated;
+        value           $internalField;
+    }
+
+    walls
+    {
+        type            compressible::alphatWallFunction;
+        Prt             0.85;
+        value           $internalField;
+    }
+
+    defaultFaces
+    {
+        type            empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/alphat.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/alphat.air
new file mode 100644
index 0000000000000000000000000000000000000000..60979da94f4cd22aaa91059d363efb400f581977
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/alphat.air
@@ -0,0 +1,48 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      alphat.air;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 -1 -1 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    inlet
+    {
+        type            calculated;
+        value           $internalField;
+    }
+
+    outlet
+    {
+        type            calculated;
+        value           $internalField;
+    }
+
+    walls
+    {
+        type            compressible::alphatWallFunction;
+        Prt             0.85;
+        value           $internalField;
+    }
+
+    defaultFaces
+    {
+        type            empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/alphat.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/alphat.water
new file mode 100644
index 0000000000000000000000000000000000000000..3ae0a65592e12a3e4de29a4f74fbdbe0d359f0fd
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/alphat.water
@@ -0,0 +1,48 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      alphat.water;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 -1 -1 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    inlet
+    {
+        type            calculated;
+        value           $internalField;
+    }
+
+    outlet
+    {
+        type            calculated;
+        value           $internalField;
+    }
+
+    walls
+    {
+        type            compressible::alphatWallFunction;
+        Prt             0.85;
+        value           $internalField;
+    }
+
+    defaultFaces
+    {
+        type            empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/alphat.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/alphat.gas
new file mode 100644
index 0000000000000000000000000000000000000000..de0de301914bd2350f7be7483c62bfd33b74e418
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/alphat.gas
@@ -0,0 +1,48 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      alphat.gas;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 -1 -1 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    inlet
+    {
+        type            calculated;
+        value           $internalField;
+    }
+
+    outlet
+    {
+        type            calculated;
+        value           $internalField;
+    }
+
+    walls
+    {
+        type            compressible::alphatWallFunction;
+        Prt             0.85;
+        value           $internalField;
+    }
+
+    defaultFaces
+    {
+        type            empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/alphat.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/alphat.air
new file mode 100644
index 0000000000000000000000000000000000000000..60979da94f4cd22aaa91059d363efb400f581977
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/alphat.air
@@ -0,0 +1,48 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      alphat.air;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 -1 -1 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    inlet
+    {
+        type            calculated;
+        value           $internalField;
+    }
+
+    outlet
+    {
+        type            calculated;
+        value           $internalField;
+    }
+
+    walls
+    {
+        type            compressible::alphatWallFunction;
+        Prt             0.85;
+        value           $internalField;
+    }
+
+    defaultFaces
+    {
+        type            empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/alphat.particles b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/alphat.particles
new file mode 100644
index 0000000000000000000000000000000000000000..b047d8d119ee3e73504c1aae0b99a3a3258975e3
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/alphat.particles
@@ -0,0 +1,47 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      alphat.particles;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 -1 -1 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    inlet
+    {
+        type            calculated;
+        value           $internalField;
+    }
+
+    outlet
+    {
+        type            calculated;
+        value           $internalField;
+    }
+
+    walls
+    {
+        type            calculated;
+        value           $internalField;
+    }
+
+    defaultFaces
+    {
+        type            empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/alphat.particles b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/alphat.particles
new file mode 100644
index 0000000000000000000000000000000000000000..b047d8d119ee3e73504c1aae0b99a3a3258975e3
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/alphat.particles
@@ -0,0 +1,47 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      alphat.particles;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 -1 -1 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    inlet
+    {
+        type            calculated;
+        value           $internalField;
+    }
+
+    outlet
+    {
+        type            calculated;
+        value           $internalField;
+    }
+
+    walls
+    {
+        type            calculated;
+        value           $internalField;
+    }
+
+    defaultFaces
+    {
+        type            empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/0/T.steam b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/0/T.steam
new file mode 100644
index 0000000000000000000000000000000000000000..c0cd064e4942d60a22f33b15bbe73c066c302b40
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/0/T.steam
@@ -0,0 +1,42 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      T.steam;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions          [0 0 0 1 0 0 0];
+
+internalField       uniform 372.76;
+
+boundaryField
+{
+    walls
+    {
+        type            zeroGradient;
+    }
+    outlet
+    {
+        type            inletOutlet;
+        phi             phi.steam;
+        inletValue      $internalField;
+        value           $internalField;
+    }
+    inlet
+    {
+        type            fixedValue;
+        value           $internalField;
+    }
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/0/T.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/0/T.water
new file mode 100644
index 0000000000000000000000000000000000000000..16c68c31f2f5f7feac053d35286deb17477acb00
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/0/T.water
@@ -0,0 +1,42 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      T.water;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions          [0 0 0 1 0 0 0];
+
+internalField       uniform 360;
+
+boundaryField
+{
+    walls
+    {
+        type            fixedValue;
+        value           $internalField;
+    }
+    outlet
+    {
+        type            inletOutlet;
+        phi             phi.water;
+        inletValue      $internalField;
+        value           $internalField;
+    }
+    inlet
+    {
+        type             zeroGradient;
+    }
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/0/U.steam b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/0/U.steam
new file mode 100644
index 0000000000000000000000000000000000000000..15d945857aa8cce22ae064b96fcbc715d9f0b658
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/0/U.steam
@@ -0,0 +1,42 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      binary;
+    class       volVectorField;
+    location    "0";
+    object      U.steam;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -1 0 0 0 0];
+
+internalField   uniform (0 0.1 0);
+
+boundaryField
+{
+    inlet
+    {
+        type            fixedValue;
+        value           uniform (0 0.1 0);
+    }
+    outlet
+    {
+        type            pressureInletOutletVelocity;
+        phi             phi.steam;
+        value           $internalField;
+    }
+    walls
+    {
+        type            fixedValue;
+        value           uniform (0 0 0);
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/0/U.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/0/U.water
new file mode 100644
index 0000000000000000000000000000000000000000..256fe1cb1ad4edbfa5a2c80df7a5285516a71f6d
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/0/U.water
@@ -0,0 +1,42 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      binary;
+    class       volVectorField;
+    location    "0";
+    object      U.water;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -1 0 0 0 0];
+
+internalField   uniform (0 0.1 0);
+
+boundaryField
+{
+    inlet
+    {
+        type            fixedValue;
+        value           uniform (0 0.1 0);
+    }
+    outlet
+    {
+        type            pressureInletOutletVelocity;
+        phi             phi.water;
+        value           $internalField;
+    }
+    walls
+    {
+        type            fixedValue;
+        value           uniform (0 0 0);
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/0/alpha.steam b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/0/alpha.steam
new file mode 100644
index 0000000000000000000000000000000000000000..0b69e50eed9c2459ed01f5e8ee0c57a52f2fd4e2
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/0/alpha.steam
@@ -0,0 +1,47 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      alpha.steam;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    inlet
+    {
+        type            fixedValue;
+        value           uniform 0.;
+    }
+    outlet
+    {
+        type            inletOutlet;
+        phi             phi.steam;
+        inletValue      uniform 0;
+        value           uniform 0;
+    }
+    walls
+    {
+        type            zeroGradient;
+    }
+    defaultFaces
+    {
+        type            empty;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/0/alpha.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/0/alpha.water
new file mode 100644
index 0000000000000000000000000000000000000000..f7aab53be20bfd54b426c6330f07b1840b0babb5
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/0/alpha.water
@@ -0,0 +1,47 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      alpha.water;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   uniform 1;
+
+boundaryField
+{
+    inlet
+    {
+        type            fixedValue;
+        value           uniform 1.;
+    }
+    outlet
+    {
+        type            inletOutlet;
+        phi             phi.water;
+        inletValue      uniform 1.0;
+        value           uniform 1.0;
+    }
+    walls
+    {
+        type            zeroGradient;
+    }
+    defaultFaces
+    {
+        type            empty;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/0/nut.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/0/nut.water
new file mode 100644
index 0000000000000000000000000000000000000000..634a29a38b52f4f3c7cb531a1294caea3057c86a
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/0/nut.water
@@ -0,0 +1,41 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      nut;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 2 -1 0 0 0 0];
+
+internalField   uniform 1e-8;
+
+boundaryField
+{
+    inlet
+    {
+        type            calculated;
+        value           $internalField;
+    }
+    outlet
+    {
+        type            calculated;
+        value           $internalField;
+    }
+    walls
+    {
+        type            nutkWallFunction;
+        value           $internalField;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/0/p b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/0/p
new file mode 100644
index 0000000000000000000000000000000000000000..799576be27a6fc698fbc2681d3a797ed5444feaf
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/0/p
@@ -0,0 +1,40 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      p;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions          [ 1 -1 -2 0 0 0 0 ];
+
+internalField       uniform 1e5;
+
+boundaryField
+{
+    inlet
+    {
+        type            calculated;
+        value           $internalField;
+    }
+    outlet
+    {
+        type            calculated;
+        value           $internalField;
+    }
+    walls
+    {
+        type            calculated;
+        value           $internalField;
+    }
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/0/p_rgh b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/0/p_rgh
new file mode 100644
index 0000000000000000000000000000000000000000..071e58a3951d6f5f55027c112f391d5fb6354fa6
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/0/p_rgh
@@ -0,0 +1,41 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     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
+{
+    inlet
+    {
+        type            fixedFluxPressure;
+        value           $internalField;
+    }
+    outlet
+    {
+        type            prghPressure;
+        p               $internalField;
+        value           $internalField;
+    }
+    walls
+    {
+        type            fixedFluxPressure;
+        value           $internalField;
+    }
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/0/water.steam b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/0/water.steam
new file mode 100644
index 0000000000000000000000000000000000000000..edd088bc1748af564974fed6f72a91cf8a0f1569
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/0/water.steam
@@ -0,0 +1,42 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      AIR.steam;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   uniform 1;
+
+boundaryField
+{
+    inlet
+    {
+        type            fixedValue;
+        value           uniform 1;
+    }
+    outlet
+    {
+        type            inletOutlet;
+        phi             phi.steam;
+        inletValue      $internalField;
+        value           $internalField;
+    }
+    walls
+    {
+        type            zeroGradient;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/0/water.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/0/water.water
new file mode 100644
index 0000000000000000000000000000000000000000..78063efe6644848c740cbdf53d43be67df42eff1
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/0/water.water
@@ -0,0 +1,42 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      AIR.water;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   uniform 1;
+
+boundaryField
+{
+    inlet
+    {
+        type            fixedValue;
+        value           $internalField;
+    }
+    outlet
+    {
+        type            inletOutlet;
+        phi             phi.water;
+        inletValue      $internalField;
+        value           $internalField;
+    }
+    walls
+    {
+        type            zeroGradient;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/constant/fvOptions b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/constant/fvOptions
new file mode 100644
index 0000000000000000000000000000000000000000..6a3a4da0be7b8d35339eba09a8bb81779e06b1ef
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/constant/fvOptions
@@ -0,0 +1,81 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      fvOptions;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+injector1
+{
+    timeStart       1;
+    duration        500;
+    selectionMode   points;
+    points
+    (
+        (0.075 0.2 0.05)
+    );
+}
+
+options
+{
+    massSource1
+    {
+        type            scalarSemiImplicitSource;
+
+        scalarSemiImplicitSourceCoeffs
+        {
+            $injector1;
+
+            volumeMode      absolute;
+            injectionRateSuSp
+            {
+                thermo:rho.steam     (1.0e-3 0); // kg/s
+            }
+        }
+    }
+
+    momentumSource1
+    {
+        type            vectorSemiImplicitSource;
+
+        vectorSemiImplicitSourceCoeffs
+        {
+            $injector1;
+
+            volumeMode      absolute;
+            injectionRateSuSp
+            {
+                U.steam           ((0 1e-1 0) 0); // kg*m/s^2
+            }
+        }
+    }
+
+    energySource1
+    {
+        type            scalarSemiImplicitSource;
+
+        scalarSemiImplicitSourceCoeffs
+        {
+            $injector1;
+
+            volumeMode      absolute;
+            injectionRateSuSp
+            {
+                e.steam      (3700 0); // kg*m^2/s^3
+            }
+        }
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/constant/g b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/constant/g
new file mode 100644
index 0000000000000000000000000000000000000000..0cc222ca3457ed24bf9753d0926fbee84359e624
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/constant/g
@@ -0,0 +1,22 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       uniformDimensionedVectorField;
+    location    "constant";
+    object      g;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -2 0 0 0 0];
+value           (0 -9.81 0);
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/constant/phaseProperties b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/constant/phaseProperties
new file mode 100644
index 0000000000000000000000000000000000000000..fc976bc67cbfb62885309d8fe16983df67e56061
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/constant/phaseProperties
@@ -0,0 +1,222 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      phaseProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+type    thermalPhaseChangeTwoPhaseSystem;
+
+phases (steam water);
+
+volatile    "water";
+
+massTransfer on;
+
+steam
+{
+    type            multiComponentPhaseModel;
+    diameterModel   isothermal;
+    isothermalCoeffs
+    {
+        d0              3e-3;
+        p0              1e5;
+    }
+    Sc              0.7;
+
+    residualAlpha   1e-6;
+}
+
+water
+{
+    type            multiComponentPhaseModel;
+    diameterModel   constant;
+    constantCoeffs
+    {
+        d               1e-4;
+    }
+    Sc              0.7;
+
+    residualAlpha   1e-6;
+}
+
+blending
+{
+    default
+    {
+        type            none;
+        continuousPhase water;
+        minFullyContinuousAlpha.steam 0.7;
+        minPartlyContinuousAlpha.steam 0.5;
+        minFullyContinuousAlpha.water 0.7;
+        minPartlyContinuousAlpha.water 0.5;
+    }
+
+    heatTransfer
+    {
+        type            none;
+        continuousPhase water;
+        minFullyContinuousAlpha.steam 1;
+        minPartlyContinuousAlpha.steam 0;
+        minFullyContinuousAlpha.water 1;
+        minPartlyContinuousAlpha.water 0;
+    }
+
+    massTransfer
+    {
+        type            none;
+        continuousPhase water;
+        minFullyContinuousAlpha.steam 1;
+        minPartlyContinuousAlpha.steam 0;
+        minFullyContinuousAlpha.water 1;
+        minPartlyContinuousAlpha.water 0;
+    }
+}
+
+surfaceTension
+(
+    (steam and water)
+    {
+        type            constant;
+        sigma           0.07;
+    }
+);
+
+saturationModel
+{
+    type constant;
+    pSat 1e5;
+    Tsat 372.76;
+};
+
+
+aspectRatio
+(
+    (steam in water)
+    {
+        type            constant;
+        E0              1.0;
+    }
+
+    (water in steam)
+    {
+        type            constant;
+        E0              1.0;
+    }
+);
+
+drag
+(
+    (steam in water)
+    {
+        type            SchillerNaumann;
+        residualRe      1e-3;
+        swarmCorrection
+        {
+            type        none;
+        }
+    }
+
+    (water in steam)
+    {
+        type            SchillerNaumann;
+        residualRe      1e-3;
+        swarmCorrection
+        {
+            type        none;
+        }
+    }
+);
+
+virtualMass
+(
+    (steam in water)
+    {
+        type            constantCoefficient;
+        Cvm             0.5;
+    }
+
+    (water in steam)
+    {
+        type            constantCoefficient;
+        Cvm             0.5;
+    }
+);
+
+interfaceComposition
+(
+    (steam in water)
+    {
+        type Saturated;
+        species ( H2O );
+        Le 1.0;
+        saturationPressure
+        {
+            type ArdenBuck;
+        }
+    }
+
+);
+
+heatTransfer.steam
+(
+    (steam in water)
+    {
+        type spherical;
+        residualAlpha 1e-4;
+    }
+);
+
+heatTransfer.water
+(
+    (steam in water)
+    {
+        type RanzMarshall;
+        residualAlpha 1e-4;
+    }
+);
+
+massTransfer.steam
+(
+
+);
+
+massTransfer.water
+(
+
+);
+
+lift
+(
+);
+
+wallLubrication
+(
+);
+
+turbulentDispersion
+(
+    (steam in water)
+    {
+        type                Burns;//
+        sigma               0.7;
+        Ctd                 1.0;
+        residualAlpha       1e-3;
+    }
+);
+
+// Minimum allowable pressure
+pMin            10000;
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/constant/thermophysicalProperties.steam b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/constant/thermophysicalProperties.steam
new file mode 100644
index 0000000000000000000000000000000000000000..4053b173ee9b236f5a59e34f201ac6f0b808eb17
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/constant/thermophysicalProperties.steam
@@ -0,0 +1,60 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      thermophysicalProperties.steam;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+thermoType
+{
+    type            heRhoThermo;
+    mixture         multiComponentMixture;
+    transport       const;
+    thermo          hRefConst;
+    equationOfState perfectGas;
+    specie          specie;
+    energy          sensibleInternalEnergy;
+}
+
+species
+(
+    water
+);
+
+inertSpecie water;
+
+water
+{
+    specie
+    {
+        nMoles          1;
+        molWeight       18.0153;
+    }
+
+    thermodynamics
+    {
+        Hf          0;
+        Cp          2078.4;
+        Tref        372.76;
+        Href        2675500;
+    }
+
+    transport
+    {
+        mu          1.2256e-5;
+        Pr          2.289;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/constant/thermophysicalProperties.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/constant/thermophysicalProperties.water
new file mode 100644
index 0000000000000000000000000000000000000000..3e40c9dce6afd0967ab22295d4632d5c85ac9cc5
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/constant/thermophysicalProperties.water
@@ -0,0 +1,66 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      thermophysicalProperties.water;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+thermoType
+{
+    type            heRhoThermo;
+    mixture         multiComponentMixture;
+    transport       const;
+    thermo          hRefConst;
+    equationOfState perfectFluid;
+    specie          specie;
+    energy          sensibleInternalEnergy;
+}
+
+species
+(
+    water
+);
+
+inertSpecie water;
+
+water
+{
+    specie
+    {
+        nMoles          1;
+        molWeight       18.0153;
+    }
+
+    equationOfState
+    {
+        R           3000;
+        rho0        959;
+    }
+
+    thermodynamics
+    {
+        Hf          0;
+        Cp          4195;
+        Tref        372.76;
+        Href        417500;
+    }
+
+    transport
+    {
+        mu          2.8291e-4;
+        Pr          2.289;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/constant/turbulenceProperties.steam b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/constant/turbulenceProperties.steam
new file mode 100644
index 0000000000000000000000000000000000000000..bdcd006d4ebb10716cd2e6f61a04f99c3547197b
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/constant/turbulenceProperties.steam
@@ -0,0 +1,20 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      turbulenceProperties.steam;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+simulationType  laminar;
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/constant/turbulenceProperties.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/constant/turbulenceProperties.water
new file mode 100644
index 0000000000000000000000000000000000000000..2accd9147b9c646528faa05ca02852f1887b67bc
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/constant/turbulenceProperties.water
@@ -0,0 +1,20 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      turbulenceProperties.water;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+simulationType laminar;
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/system/blockMeshDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/system/blockMeshDict
new file mode 100644
index 0000000000000000000000000000000000000000..d03967afdc2ccf7afbecdf32d50159c309a475e3
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/system/blockMeshDict
@@ -0,0 +1,61 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      blockMeshDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+convertToMeters 1;
+
+vertices
+(
+    (0 0 0)
+    (0.15 0 0)
+    (0.15 1 0)
+    (0 1 0)
+    (0 0 0.1)
+    (0.15 0 0.1)
+    (0.15 1 0.1)
+    (0 1 0.1)
+);
+
+blocks
+(
+    hex (0 1 2 3 4 5 6 7) (25 75 1) simpleGrading (1 1 1)
+);
+
+edges
+(
+);
+
+patches
+(
+    patch inlet
+    (
+        (1 5 4 0)
+    )
+    patch outlet
+    (
+        (3 7 6 2)
+    )
+    wall walls
+    (
+        (0 4 7 3)
+        (2 6 5 1)
+    )
+);
+
+mergePatchPairs
+(
+);
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/system/controlDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/system/controlDict
new file mode 100644
index 0000000000000000000000000000000000000000..c39421ffae2b7f1020da69844f3ab62337d14fa7
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/system/controlDict
@@ -0,0 +1,55 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      controlDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+application     reactingTwoPhaseEulerFoam;
+
+startFrom       startTime;
+
+startTime       0;
+
+stopAt          endTime;
+
+endTime         10;
+
+deltaT          1e-6;
+
+writeControl    adjustableRunTime;
+
+writeInterval   0.5;
+
+purgeWrite      0;
+
+writeFormat     ascii;
+
+writePrecision  10;
+
+writeCompression compressed;
+
+timeFormat      general;
+
+timePrecision   6;
+
+runTimeModifiable yes;
+
+adjustTimeStep  yes;
+
+maxCo           0.1;
+
+maxDeltaT       1e-2;
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/system/fvSchemes b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/system/fvSchemes
new file mode 100644
index 0000000000000000000000000000000000000000..2eb1993dc71c9f06b77941c76c349c3dd252af1e
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/system/fvSchemes
@@ -0,0 +1,75 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      fvSchemes;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ddtSchemes
+{
+    default         Euler;
+}
+
+gradSchemes
+{
+    default         Gauss linear;
+}
+
+divSchemes
+{
+    default                         none;
+
+    "div\(phi,alpha.*\)"            Gauss vanLeer;
+    "div\(phir,alpha.*\)"           Gauss vanLeer;
+
+    "div\(alphaRhoPhi.*,U.*\)"      Gauss limitedLinearV 1;
+    "div\(phi.*,U.*\)"              Gauss limitedLinearV 1;
+
+    "div\(alphaRhoPhi.*,Yi\)"       Gauss limitedLinear 1;
+    "div\(alphaRhoPhi.*,(h|e).*\)"  Gauss limitedLinear 1;
+    "div\(alphaRhoPhi.*,K.*\)"      Gauss limitedLinear 1;
+    "div\(alphaPhi.*,p\)"           Gauss limitedLinear 1;
+
+    "div\(alphaRhoPhi.*,(k|epsilon).*\)"  Gauss limitedLinear 1;
+    "div\(phim,(k|epsilon)m\)"      Gauss limitedLinear 1;
+
+    "div\(\(\(\(alpha.*\*thermo:rho.*\)\*nuEff.*\)\*dev2\(T\(grad\(U.*\)\)\)\)\)" Gauss linear;
+}
+
+laplacianSchemes
+{
+    default         Gauss linear uncorrected;
+}
+
+interpolationSchemes
+{
+    default         linear;
+}
+
+snGradSchemes
+{
+    default         uncorrected;
+}
+
+fluxRequired
+{
+    default         no;
+}
+
+wallDist
+{
+    method          meshWave;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/system/fvSolution b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/system/fvSolution
new file mode 100644
index 0000000000000000000000000000000000000000..6cf90aa61f3d9656df00ad8bd3f1d185e9cc46bc
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection/system/fvSolution
@@ -0,0 +1,97 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      fvSolution;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+solvers
+{
+    "alpha.*"
+    {
+        nAlphaCorr      1;
+        nAlphaSubCycles 3;
+    }
+
+    p_rgh
+    {
+        solver          PCG;
+        preconditioner  DIC;
+        tolerance       1e-8;
+        relTol          0;
+    }
+
+    p_rghFinal
+    {
+        $p_rgh;
+        relTol          0;
+    }
+
+    "U.*"
+    {
+        solver          smoothSolver;
+        smoother        symGaussSeidel;
+        tolerance       1e-6;
+        relTol          0;
+        minIter         1;
+    }
+
+    "(e|h).*"
+    {
+        solver          smoothSolver;
+        smoother        symGaussSeidel;
+        tolerance       1e-6;
+        relTol          0;
+        minIter         1;
+        maxIter         20;
+    }
+
+    "(k|epsilon|Theta).*"
+    {
+        solver          smoothSolver;
+        smoother        symGaussSeidel;
+        tolerance       1e-8;
+        relTol          0;
+        minIter         1;
+    }
+
+    Yi
+    {
+        solver          smoothSolver;
+        smoother        symGaussSeidel;
+        tolerance       1e-6;
+        relTol          0;
+        minIter         1;
+        residualAlpha   1e-8;
+    }
+}
+
+PIMPLE
+{
+    nOuterCorrectors 4;
+    nCorrectors      1;
+    nNonOrthogonalCorrectors 0;
+    nEnergyCorrectors 1;
+    faceMomentum    on;
+}
+
+relaxationFactors
+{
+    equations
+    {
+        ".*"            1;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/twoPhaseEulerFoam/LES/bubbleColumn/0/alphat.air b/tutorials/multiphase/twoPhaseEulerFoam/LES/bubbleColumn/0/alphat.air
new file mode 100644
index 0000000000000000000000000000000000000000..60979da94f4cd22aaa91059d363efb400f581977
--- /dev/null
+++ b/tutorials/multiphase/twoPhaseEulerFoam/LES/bubbleColumn/0/alphat.air
@@ -0,0 +1,48 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      alphat.air;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 -1 -1 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    inlet
+    {
+        type            calculated;
+        value           $internalField;
+    }
+
+    outlet
+    {
+        type            calculated;
+        value           $internalField;
+    }
+
+    walls
+    {
+        type            compressible::alphatWallFunction;
+        Prt             0.85;
+        value           $internalField;
+    }
+
+    defaultFaces
+    {
+        type            empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/twoPhaseEulerFoam/LES/bubbleColumn/0/alphat.water b/tutorials/multiphase/twoPhaseEulerFoam/LES/bubbleColumn/0/alphat.water
new file mode 100644
index 0000000000000000000000000000000000000000..3ae0a65592e12a3e4de29a4f74fbdbe0d359f0fd
--- /dev/null
+++ b/tutorials/multiphase/twoPhaseEulerFoam/LES/bubbleColumn/0/alphat.water
@@ -0,0 +1,48 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      alphat.water;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 -1 -1 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    inlet
+    {
+        type            calculated;
+        value           $internalField;
+    }
+
+    outlet
+    {
+        type            calculated;
+        value           $internalField;
+    }
+
+    walls
+    {
+        type            compressible::alphatWallFunction;
+        Prt             0.85;
+        value           $internalField;
+    }
+
+    defaultFaces
+    {
+        type            empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/twoPhaseEulerFoam/RAS/bubbleColumn/0/alphat.air b/tutorials/multiphase/twoPhaseEulerFoam/RAS/bubbleColumn/0/alphat.air
new file mode 100644
index 0000000000000000000000000000000000000000..60979da94f4cd22aaa91059d363efb400f581977
--- /dev/null
+++ b/tutorials/multiphase/twoPhaseEulerFoam/RAS/bubbleColumn/0/alphat.air
@@ -0,0 +1,48 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      alphat.air;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 -1 -1 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    inlet
+    {
+        type            calculated;
+        value           $internalField;
+    }
+
+    outlet
+    {
+        type            calculated;
+        value           $internalField;
+    }
+
+    walls
+    {
+        type            compressible::alphatWallFunction;
+        Prt             0.85;
+        value           $internalField;
+    }
+
+    defaultFaces
+    {
+        type            empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/twoPhaseEulerFoam/RAS/bubbleColumn/0/alphat.water b/tutorials/multiphase/twoPhaseEulerFoam/RAS/bubbleColumn/0/alphat.water
new file mode 100644
index 0000000000000000000000000000000000000000..3ae0a65592e12a3e4de29a4f74fbdbe0d359f0fd
--- /dev/null
+++ b/tutorials/multiphase/twoPhaseEulerFoam/RAS/bubbleColumn/0/alphat.water
@@ -0,0 +1,48 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      alphat.water;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 -1 -1 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    inlet
+    {
+        type            calculated;
+        value           $internalField;
+    }
+
+    outlet
+    {
+        type            calculated;
+        value           $internalField;
+    }
+
+    walls
+    {
+        type            compressible::alphatWallFunction;
+        Prt             0.85;
+        value           $internalField;
+    }
+
+    defaultFaces
+    {
+        type            empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/twoPhaseEulerFoam/RAS/fluidisedBed/0/alphat.air b/tutorials/multiphase/twoPhaseEulerFoam/RAS/fluidisedBed/0/alphat.air
new file mode 100644
index 0000000000000000000000000000000000000000..60979da94f4cd22aaa91059d363efb400f581977
--- /dev/null
+++ b/tutorials/multiphase/twoPhaseEulerFoam/RAS/fluidisedBed/0/alphat.air
@@ -0,0 +1,48 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      alphat.air;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 -1 -1 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    inlet
+    {
+        type            calculated;
+        value           $internalField;
+    }
+
+    outlet
+    {
+        type            calculated;
+        value           $internalField;
+    }
+
+    walls
+    {
+        type            compressible::alphatWallFunction;
+        Prt             0.85;
+        value           $internalField;
+    }
+
+    defaultFaces
+    {
+        type            empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/twoPhaseEulerFoam/RAS/fluidisedBed/0/alphat.particles b/tutorials/multiphase/twoPhaseEulerFoam/RAS/fluidisedBed/0/alphat.particles
new file mode 100644
index 0000000000000000000000000000000000000000..b047d8d119ee3e73504c1aae0b99a3a3258975e3
--- /dev/null
+++ b/tutorials/multiphase/twoPhaseEulerFoam/RAS/fluidisedBed/0/alphat.particles
@@ -0,0 +1,47 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      alphat.particles;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 -1 -1 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    inlet
+    {
+        type            calculated;
+        value           $internalField;
+    }
+
+    outlet
+    {
+        type            calculated;
+        value           $internalField;
+    }
+
+    walls
+    {
+        type            calculated;
+        value           $internalField;
+    }
+
+    defaultFaces
+    {
+        type            empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/twoPhaseEulerFoam/laminar/fluidisedBed/0/alphat.particles b/tutorials/multiphase/twoPhaseEulerFoam/laminar/fluidisedBed/0/alphat.particles
new file mode 100644
index 0000000000000000000000000000000000000000..b047d8d119ee3e73504c1aae0b99a3a3258975e3
--- /dev/null
+++ b/tutorials/multiphase/twoPhaseEulerFoam/laminar/fluidisedBed/0/alphat.particles
@@ -0,0 +1,47 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      alphat.particles;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 -1 -1 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    inlet
+    {
+        type            calculated;
+        value           $internalField;
+    }
+
+    outlet
+    {
+        type            calculated;
+        value           $internalField;
+    }
+
+    walls
+    {
+        type            calculated;
+        value           $internalField;
+    }
+
+    defaultFaces
+    {
+        type            empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/wmake/rules/linuxPPC64leGcc/c++ b/wmake/rules/linuxPPC64leGcc/c++
index 0eec42b85e1f91c74b9801777989f855a22d5a50..284007b730e09d87e094cdf1e52aa3db31af6084 100644
--- a/wmake/rules/linuxPPC64leGcc/c++
+++ b/wmake/rules/linuxPPC64leGcc/c++
@@ -20,5 +20,5 @@ cpptoo      = $(Ctoo)
 
 LINK_LIBS   = $(c++DBUG)
 
-LINKLIBSO   = $(CC) $(c++FLAGS) -shared
-LINKEXE     = $(CC) $(c++FLAGS) -Xlinker --add-needed
+LINKLIBSO   = $(CC) $(c++FLAGS) -shared -Xlinker --add-needed -Xlinker --no-as-needed
+LINKEXE     = $(CC) $(c++FLAGS) -Xlinker --add-needed -Xlinker --no-as-needed