From 499933dbab825027d62b15cc930978c4412d536e Mon Sep 17 00:00:00 2001
From: sergio <s.ferraris@opencfd.co.uk>
Date: Tue, 4 Feb 2020 13:14:04 -0800
Subject: [PATCH 1/4] ENH: Adding features for phase change solvers

1) Adding interfaceHeight FO
2) Adding interfaceHeatResistance mass transfer model to
   interCondensatingEvaporatingFoam with spread source approach
3) Reworking framework for icoReactingMultiphaseInterFoam
---
 .../icoReactingMultiphaseInterFoam/TEqn.H     |    4 +-
 .../icoReactingMultiphaseInterFoam/UEqn.H     |    2 +-
 .../icoReactingMultiphaseInterFoam.C          |    4 +-
 .../massTransferModels/Lee/Lee.C              |  107 +-
 .../massTransferModels/Lee/Lee.H              |   19 +-
 .../interfaceCompositionModel.C               |    6 +
 .../interfaceCompositionModel.H               |   23 +-
 .../kineticGasEvaporation.C                   |   30 +-
 .../kineticGasEvaporation.H                   |   15 +-
 .../icoReactingMultiphaseInterFoam/pEqn.H     |   42 +-
 .../MassTransferPhaseSystem.C                 |  506 ++++++++-
 .../MassTransferPhaseSystem.H                 |   19 +-
 .../MultiComponentPhaseModel.C                |    4 +-
 .../multiphaseSystem/multiphaseSystem.C       |  269 +----
 .../multiphaseSystem/multiphaseSystem.H       |    5 +-
 .../multiphaseSystem_backUp.C                 |  642 +++++++++++
 .../phasesSystem/phaseSystem/phaseSystem.C    |   29 +-
 .../phasesSystem/phaseSystem/phaseSystem.H    |   28 +-
 .../Make/options                              |   12 +-
 .../interCondensatingEvaporatingFoam/TEqn.H   |   19 +-
 .../alphaCourantNo.H                          |   59 +
 .../createFields.H                            |   32 +
 .../interCondensatingEvaporatingFoam.C        |   89 +-
 .../interCondensatingEvaporatingFoam/pEqn.H   |    3 +-
 .../Make/files                                |    1 +
 .../constant/constant.C                       |   86 +-
 .../constant/constant.H                       |    3 +
 .../interfaceHeatResistance.C                 |  409 +++++++
 .../interfaceHeatResistance.H                 |  155 +++
 .../temperaturePhaseChangeTwoPhaseMixture.C   |    4 +-
 .../temperaturePhaseChangeTwoPhaseMixture.H   |   10 +-
 .../thermoIncompressibleTwoPhaseMixture.C     |    2 +-
 .../thermoIncompressibleTwoPhaseMixture.H     |    2 +-
 .../twoPhaseMixtureEThermo.C                  |  146 +--
 .../twoPhaseMixtureEThermo.H                  |   34 +-
 .../interPhaseChangeFoam/alphaEqn.H           |    3 +
 .../interPhaseChangeFoam/alphaEqnSubCycle.H   |   12 +-
 .../interPhaseChangeFoam/createFields.H       |   16 +
 .../finiteVolume/fvc/fvcSmooth/fvcSmooth.C    |  103 ++
 .../finiteVolume/fvc/fvcSmooth/fvcSmooth.H    |   19 +
 src/functionObjects/field/Make/files          |    2 +
 .../field/interfaceHeight/interfaceHeight.C   |  289 +++++
 .../field/interfaceHeight/interfaceHeight.H   |  181 +++
 .../stefanProblem/0.orig/T                    |   47 +
 .../stefanProblem/0.orig/U                    |   46 +
 .../stefanProblem/0.orig/alpha.gas            |   41 +
 .../stefanProblem/0.orig/alpha.liquid         |   41 +
 .../stefanProblem/0.orig/p                    |   48 +
 .../stefanProblem/0.orig/p_rgh                |   48 +
 .../stefanProblem/Allclean                    |   12 +
 .../stefanProblem/Allrun                      |   19 +
 .../stefanProblem/constant/g                  |   22 +
 .../stefanProblem/constant/phaseProperties    |   50 +
 .../constant/thermophysicalProperties.gas     |   54 +
 .../constant/thermophysicalProperties.liquid  |   52 +
 .../constant/transportProperties              |   49 +
 .../constant/turbulenceProperties             |   21 +
 .../stefanProblem/data.dat                    | 1001 +++++++++++++++++
 .../stefanProblem/plotGraph                   |   25 +
 .../stefanProblem/system/blockMeshDict        |   63 ++
 .../stefanProblem/system/controlDict          |   68 ++
 .../stefanProblem/system/fvSchemes            |   66 ++
 .../stefanProblem/system/fvSolution           |  111 ++
 .../stefanProblem/system/setAlphaFieldDict    |   23 +
 .../system/setAlphaFieldDict.gas              |   23 +
 .../system/setAlphaFieldDict.liquid           |   23 +
 .../stefanProblem/0.orig/T                    |   45 +
 .../stefanProblem/0.orig/U                    |   46 +
 .../stefanProblem/0.orig/alpha.liquid         |   34 +
 .../stefanProblem/0.orig/p                    |   48 +
 .../stefanProblem/0.orig/p_rgh                |   48 +
 .../stefanProblem/Allclean                    |   12 +
 .../stefanProblem/Allrun                      |   14 +
 .../stefanProblem/constant/g                  |   22 +
 .../constant/phaseChangeProperties            |   33 +
 .../constant/thermophysicalProperties         |   20 +
 .../constant/transportProperties              |   49 +
 .../constant/turbulenceProperties             |   21 +
 .../stefanProblem/data.dat                    | 1001 +++++++++++++++++
 .../stefanProblem/plotGraph                   |   25 +
 .../stefanProblem/system/blockMeshDict        |   63 ++
 .../stefanProblem/system/controlDict          |   68 ++
 .../stefanProblem/system/fvSchemes            |   58 +
 .../stefanProblem/system/fvSolution           |  118 ++
 .../stefanProblem/system/setAlphaFieldDict    |   23 +
 85 files changed, 6607 insertions(+), 539 deletions(-)
 create mode 100644 applications/solvers/multiphase/icoReactingMultiphaseInterFoam/phasesSystem/phaseSystem/multiphaseSystem/multiphaseSystem_backUp.C
 create mode 100644 applications/solvers/multiphase/interCondensatingEvaporatingFoam/alphaCourantNo.H
 create mode 100644 applications/solvers/multiphase/interCondensatingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/interfaceHeatResistance/interfaceHeatResistance.C
 create mode 100644 applications/solvers/multiphase/interCondensatingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/interfaceHeatResistance/interfaceHeatResistance.H
 create mode 100644 src/functionObjects/field/interfaceHeight/interfaceHeight.C
 create mode 100644 src/functionObjects/field/interfaceHeight/interfaceHeight.H
 create mode 100755 tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/0.orig/T
 create mode 100755 tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/0.orig/U
 create mode 100755 tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/0.orig/alpha.gas
 create mode 100755 tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/0.orig/alpha.liquid
 create mode 100755 tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/0.orig/p
 create mode 100755 tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/0.orig/p_rgh
 create mode 100755 tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/Allclean
 create mode 100755 tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/Allrun
 create mode 100644 tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/constant/g
 create mode 100755 tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/constant/phaseProperties
 create mode 100755 tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/constant/thermophysicalProperties.gas
 create mode 100755 tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/constant/thermophysicalProperties.liquid
 create mode 100644 tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/constant/transportProperties
 create mode 100755 tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/constant/turbulenceProperties
 create mode 100644 tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/data.dat
 create mode 100755 tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/plotGraph
 create mode 100755 tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/system/blockMeshDict
 create mode 100755 tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/system/controlDict
 create mode 100755 tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/system/fvSchemes
 create mode 100755 tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/system/fvSolution
 create mode 100755 tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/system/setAlphaFieldDict
 create mode 100755 tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/system/setAlphaFieldDict.gas
 create mode 100755 tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/system/setAlphaFieldDict.liquid
 create mode 100755 tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/0.orig/T
 create mode 100755 tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/0.orig/U
 create mode 100755 tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/0.orig/alpha.liquid
 create mode 100755 tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/0.orig/p
 create mode 100755 tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/0.orig/p_rgh
 create mode 100755 tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/Allclean
 create mode 100755 tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/Allrun
 create mode 100644 tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/constant/g
 create mode 100755 tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/constant/phaseChangeProperties
 create mode 100755 tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/constant/thermophysicalProperties
 create mode 100644 tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/constant/transportProperties
 create mode 100755 tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/constant/turbulenceProperties
 create mode 100644 tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/data.dat
 create mode 100755 tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/plotGraph
 create mode 100755 tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/system/blockMeshDict
 create mode 100755 tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/system/controlDict
 create mode 100755 tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/system/fvSchemes
 create mode 100755 tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/system/fvSolution
 create mode 100755 tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/system/setAlphaFieldDict

diff --git a/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/TEqn.H b/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/TEqn.H
index 68744f7043b..c0405456173 100644
--- a/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/TEqn.H
+++ b/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/TEqn.H
@@ -1,7 +1,7 @@
 {
     radiation->correct();
     rhoCp =  rho*fluid.Cp();
-
+    
     const surfaceScalarField rhoCpPhi(fvc::interpolate(fluid.Cp())*rhoPhi);
 
     const volScalarField kappaEff
@@ -31,7 +31,7 @@
     fvOptions.correct(T);
 
     fluid.correct();
-
+    
     Info<< "min/max(T) = "
         << min(T).value() << ", " << max(T).value() << endl;
 }
diff --git a/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/UEqn.H b/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/UEqn.H
index 4422f0bd578..9d0a424d265 100644
--- a/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/UEqn.H
+++ b/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/UEqn.H
@@ -2,7 +2,7 @@ fvVectorMatrix UEqn
 (
     fvm::ddt(rho, U)
   + fvm::div(rhoPhi, U)
-    //- fvm::Sp(fvc::ddt(rho) + fvc::div(rhoPhi), U)
+//- fvm::Sp(fvc::ddt(rho) + fvc::div(rhoPhi), U)
   + turbulence->divDevRhoReff(U)
   ==
     fvOptions(rho, U)
diff --git a/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/icoReactingMultiphaseInterFoam.C b/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/icoReactingMultiphaseInterFoam.C
index 0c42797f4ca..9bbe933d8c0 100644
--- a/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/icoReactingMultiphaseInterFoam.C
+++ b/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/icoReactingMultiphaseInterFoam.C
@@ -5,7 +5,7 @@
     \\  /    A nd           | www.openfoam.com
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
-    Copyright (C) 2017 OpenCFD Ltd.
+    Copyright (C) 2017-2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -98,13 +98,13 @@ int main(int argc, char *argv[])
 
         Info<< "Time = " << runTime.timeName() << nl << endl;
 
+        fluid.correctMassSources(T);
         fluid.solve();
         rho = fluid.rho();
 
         // --- Pressure-velocity PIMPLE corrector loop
         while (pimple.loop())
         {
-            solve(fvm::ddt(rho) + fvc::div(rhoPhi));
             #include "UEqn.H"
             #include "YEqns.H"
             #include "TEqn.H"
diff --git a/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/massTransferModels/Lee/Lee.C b/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/massTransferModels/Lee/Lee.C
index 7588b83c9dc..190b7fbb1d0 100644
--- a/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/massTransferModels/Lee/Lee.C
+++ b/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/massTransferModels/Lee/Lee.C
@@ -50,6 +50,44 @@ Foam::meltingEvaporationModels::Lee<Thermo, OtherThermo>::Lee
 template<class Thermo, class OtherThermo>
 Foam::tmp<Foam::volScalarField>
 Foam::meltingEvaporationModels::Lee<Thermo, OtherThermo>::Kexp
+(
+    const volScalarField& refValue
+)
+{
+    {
+        const volScalarField from
+        (
+            min(max(this->pair().from(), scalar(0)), scalar(1))
+        );
+        
+        const volScalarField coeff
+        (
+            C_*from*this->pair().from().rho()*pos(from - alphaMin_)
+           *(refValue - Tactivate_)
+           /Tactivate_
+        );
+        
+        if (sign(C_.value()) > 0)
+        {
+            return
+            (
+                coeff*pos(refValue - Tactivate_)
+            );
+        }
+        else
+        {
+            return
+            (
+               coeff*pos(Tactivate_ - refValue)
+            );
+        }
+    }
+}
+
+
+template<class Thermo, class OtherThermo>
+Foam::tmp<Foam::volScalarField>
+Foam::meltingEvaporationModels::Lee<Thermo, OtherThermo>::KSp
 (
     label variable,
     const volScalarField& refValue
@@ -61,31 +99,68 @@ Foam::meltingEvaporationModels::Lee<Thermo, OtherThermo>::Kexp
         (
             min(max(this->pair().from(), scalar(0)), scalar(1))
         );
+        
+        const volScalarField coeff
+        (
+            C_*from*this->pair().from().rho()*pos(from - alphaMin_)
+            /Tactivate_
+        );
 
         if (sign(C_.value()) > 0)
         {
             return
             (
-                C_
-              * from
-              * this->pair().from().rho()
-              * (refValue.oldTime() - Tactivate_)
-              * pos(from - alphaMin_)
-              * pos(refValue.oldTime() - Tactivate_)/Tactivate_
+                coeff*pos(refValue - Tactivate_)
             );
         }
         else
         {
             return
             (
-               -C_
-              * from
-              * this->pair().from().rho()
-              * pos(from - alphaMin_)
-              * (Tactivate_ - refValue.oldTime())
-              * pos(Tactivate_ - refValue.oldTime())/Tactivate_
+                coeff*pos(Tactivate_ - refValue)
             );
+        }
+    }
+    else
+    {
+        return tmp<volScalarField> ();
+    }
+}
+
 
+template<class Thermo, class OtherThermo>
+Foam::tmp<Foam::volScalarField>
+Foam::meltingEvaporationModels::Lee<Thermo, OtherThermo>::KSu
+(
+    label variable,
+    const volScalarField& refValue
+)
+{
+    if (this->modelVariable_ == variable)
+    {
+        volScalarField from
+        (
+            min(max(this->pair().from(), scalar(0)), scalar(1))
+        );
+        
+        const volScalarField coeff
+        (
+            C_*from*this->pair().from().rho()*pos(from - alphaMin_)
+        );
+
+        if (sign(C_.value()) > 0)
+        {
+            return
+            (
+                -coeff*pos(refValue - Tactivate_)
+            );
+        }
+        else
+        {
+            return
+            (
+                coeff*pos(Tactivate_ - refValue)
+            );
         }
     }
     else
@@ -103,4 +178,12 @@ Foam::meltingEvaporationModels::Lee<Thermo, OtherThermo>::Tactivate() const
 }
 
 
+template<class Thermo, class OtherThermo>
+bool 
+Foam::meltingEvaporationModels::Lee<Thermo, OtherThermo>::includeDivU()
+{
+    return true;
+}
+
+
 // ************************************************************************* //
diff --git a/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/massTransferModels/Lee/Lee.H b/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/massTransferModels/Lee/Lee.H
index 9743ddcfb20..97059d4f299 100644
--- a/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/massTransferModels/Lee/Lee.H
+++ b/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/massTransferModels/Lee/Lee.H
@@ -146,12 +146,29 @@ public:
         //- Explicit mass transfer coefficient
         virtual tmp<volScalarField> Kexp
         (
-            label variable,
+            const volScalarField& field
+        );
+        
+        //- Implicit mass transfer coefficient
+        virtual tmp<volScalarField> KSp
+        (
+            label modelVariable,
+            const volScalarField& field
+        );
+        
+        //- Explicit mass transfer coefficient
+        virtual tmp<volScalarField> KSu
+        (
+            label modelVariable,
             const volScalarField& field
         );
 
         //- Return T transition between phases
         virtual const dimensionedScalar& Tactivate() const;
+        
+        //- Adds and substract alpha*div(U) as a source term
+        //  for alpha, substituting div(U) = mDot(1/rho1 - 1/rho2) 
+        virtual bool includeDivU();
 };
 
 
diff --git a/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/massTransferModels/interfaceCompositionModel/interfaceCompositionModel.C b/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/massTransferModels/interfaceCompositionModel/interfaceCompositionModel.C
index 442b484bcd4..8d54a861079 100644
--- a/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/massTransferModels/interfaceCompositionModel/interfaceCompositionModel.C
+++ b/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/massTransferModels/interfaceCompositionModel/interfaceCompositionModel.C
@@ -90,4 +90,10 @@ const Foam::word Foam::interfaceCompositionModel::variable() const
 }
 
 
+bool Foam::interfaceCompositionModel::includeDivU()
+{
+    return true;
+}
+
+
 // ************************************************************************* //
diff --git a/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/massTransferModels/interfaceCompositionModel/interfaceCompositionModel.H b/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/massTransferModels/interfaceCompositionModel/interfaceCompositionModel.H
index a4ccf813a23..498290199b6 100644
--- a/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/massTransferModels/interfaceCompositionModel/interfaceCompositionModel.H
+++ b/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/massTransferModels/interfaceCompositionModel/interfaceCompositionModel.H
@@ -67,7 +67,8 @@ public:
         {
             T,  /* temperature based */
             P,  /* pressure based */
-            Y   /* mass fraction based */
+            Y,   /* mass fraction based */
+            alpha /* alpha source */
         };
 
         static const Enum<modelVariable> modelVariableNames;
@@ -170,15 +171,33 @@ public:
             const volScalarField& Tf
         ) const = 0;
 
-        //- Explicit mass transfer coefficient
+        //- Explicit full mass transfer
         virtual tmp<volScalarField> Kexp
+        (
+            const volScalarField& field
+        ) = 0;
+        
+        //- Implicit mass transfer
+        virtual tmp<volScalarField> KSp
+        (
+            label modelVariable,
+            const volScalarField& field
+        ) = 0;
+        
+        //- Explicit mass transfer
+        virtual tmp<volScalarField> KSu
         (
             label modelVariable,
             const volScalarField& field
         ) = 0;
+        
 
         //- Reference value
         virtual const dimensionedScalar& Tactivate() const = 0;
+        
+        //- Adds and substract alpha*div(U) as a source term
+        //  for alpha, substituting div(U) = mDot(1/rho1 - 1/rho2)
+        virtual bool includeDivU();
 
         //- Returns the variable on which the model is based
         const word variable() const;
diff --git a/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/massTransferModels/kineticGasEvaporation/kineticGasEvaporation.C b/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/massTransferModels/kineticGasEvaporation/kineticGasEvaporation.C
index 53a398f44ff..3c544fdaeaa 100644
--- a/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/massTransferModels/kineticGasEvaporation/kineticGasEvaporation.C
+++ b/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/massTransferModels/kineticGasEvaporation/kineticGasEvaporation.C
@@ -88,9 +88,8 @@ Foam::meltingEvaporationModels::kineticGasEvaporation<Thermo, OtherThermo>
 template<class Thermo, class OtherThermo>
 Foam::tmp<Foam::volScalarField>
 Foam::meltingEvaporationModels::kineticGasEvaporation<Thermo, OtherThermo>
-::Kexp(label variable, const volScalarField& field)
+::Kexp(const volScalarField& field)
 {
-    if (this->modelVariable_ == variable)
     {
         const volScalarField& to = this->pair().to();
 
@@ -246,10 +245,29 @@ Foam::meltingEvaporationModels::kineticGasEvaporation<Thermo, OtherThermo>
 
         return massFluxEvap*areaDensity*Nl*from;
     }
-    else
-    {
-        return tmp<volScalarField> ();
-    }
+}
+
+template<class Thermo, class OtherThermo>
+Foam::tmp<Foam::volScalarField>
+Foam::meltingEvaporationModels::kineticGasEvaporation<Thermo, OtherThermo>::KSu
+(
+    label variable,
+    const volScalarField& refValue
+)
+{
+    return tmp<volScalarField> ();
+}
+
+
+template<class Thermo, class OtherThermo>
+Foam::tmp<Foam::volScalarField>
+Foam::meltingEvaporationModels::kineticGasEvaporation<Thermo, OtherThermo>::KSp
+(
+    label variable,
+    const volScalarField& refValue
+)
+{
+    return tmp<volScalarField> ();
 }
 
 
diff --git a/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/massTransferModels/kineticGasEvaporation/kineticGasEvaporation.H b/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/massTransferModels/kineticGasEvaporation/kineticGasEvaporation.H
index 8f6fbace00b..4c85bf2e03b 100644
--- a/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/massTransferModels/kineticGasEvaporation/kineticGasEvaporation.H
+++ b/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/massTransferModels/kineticGasEvaporation/kineticGasEvaporation.H
@@ -185,7 +185,20 @@ public:
         //- Explicit mass transfer coefficient
         virtual tmp<volScalarField> Kexp
         (
-            label variable,
+            const volScalarField& field
+        );
+        
+        //- Implicit mass transfer coefficient
+        virtual tmp<volScalarField> KSp
+        (
+            label modelVariable,
+            const volScalarField& field
+        );
+        
+        //- Explicit mass transfer coefficient
+        virtual tmp<volScalarField> KSu
+        (
+            label modelVariable,
             const volScalarField& field
         );
 
diff --git a/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/pEqn.H b/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/pEqn.H
index 5dd79906202..463f59da9e4 100644
--- a/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/pEqn.H
+++ b/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/pEqn.H
@@ -33,47 +33,9 @@
         (
             fvc::div(phiHbyA)
           - fvm::laplacian(rAUf, p_rgh)
+          + fluid.volTransfer(p_rgh)
         );
-
-        forAllConstIters(fluid.totalPhasePairs(), iter)
-        {
-            const phasePair& pair = iter()();
-
-            const phaseModel& phase1 = pair.phase1();
-            const phaseModel& phase2 = pair.phase2();
-
-            const phasePairKey key12
-            (
-                phase1.name(),
-                phase2.name(),
-                true
-            );
-
-            // Mass transfer from phase2 to phase1
-            tmp<volScalarField> tdmdt12(fluid.dmdt(key12));
-            const volScalarField& dmdt12 = tdmdt12();
-
-            const phasePairKey key21
-            (
-                phase2.name(),
-                phase1.name(),
-                true
-            );
-
-            // Mass transfer from phase1 to phase2
-            tmp<volScalarField> tdmdt21(fluid.dmdt(key21));
-            const volScalarField&  dmdt21 = tdmdt21();
-
-            const volScalarField dmdtNet(dmdt21 - dmdt12);
-
-            p_rghEqn +=
-                dmdtNet*
-                (
-                  - fluid.coeffs(phase1.name())
-                  + fluid.coeffs(phase2.name())
-                );
-        }
-
+          
         p_rghEqn.setReference(pRefCell, pRefValue);
 
         p_rghEqn.solve(mesh.solver(p_rgh.select(pimple.finalInnerIter())));
diff --git a/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/phasesSystem/MassTransferPhaseSystem/MassTransferPhaseSystem.C b/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/phasesSystem/MassTransferPhaseSystem/MassTransferPhaseSystem.C
index 59b04864798..73a763bc3bc 100644
--- a/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/phasesSystem/MassTransferPhaseSystem/MassTransferPhaseSystem.C
+++ b/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/phasesSystem/MassTransferPhaseSystem/MassTransferPhaseSystem.C
@@ -5,7 +5,7 @@
     \\  /    A nd           | www.openfoam.com
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
-    Copyright (C) 2017 OpenCFD Ltd.
+    Copyright (C) 2017-202 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -32,6 +32,7 @@ License
 #include "fvcDiv.H"
 #include "fvmSup.H"
 #include "fvMatrix.H"
+#include "volFields.H"
 #include "fundamentalConstants.H"
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
@@ -152,9 +153,7 @@ Foam::MassTransferPhaseSystem<BasePhaseSystem>::dmdt
             (
                 "dmdt",
                 this->mesh().time().timeName(),
-                this->mesh(),
-                IOobject::NO_READ,
-                IOobject::NO_WRITE
+                this->mesh()
             ),
             this->mesh(),
             dimensionedScalar(dimDensity/dimTime, Zero)
@@ -213,15 +212,45 @@ Foam::MassTransferPhaseSystem<BasePhaseSystem>::heatTransfer
                         (
                             "tdmdtYki",
                             this->mesh().time().timeName(),
-                            this->mesh(),
-                            IOobject::NO_READ,
-                            IOobject::NO_WRITE
+                            this->mesh()
                         ),
                         this->mesh(),
                         dimensionedScalar(dimDensity/dimTime, Zero)
                     )
                 );
                 volScalarField& dmdtNetki = tdmdtNetki.ref();
+                
+                tmp<volScalarField> tSp
+                (
+                    new volScalarField
+                    (
+                        IOobject
+                        (
+                            "Sp",
+                            this->mesh().time().timeName(),
+                            this->mesh()
+                        ),
+                        this->mesh(),
+                        dimensionedScalar(dimDensity/dimTime/dimTemperature, Zero)
+                    )
+                );
+                volScalarField& Sp = tSp.ref();
+                
+                tmp<volScalarField> tSu
+                (
+                    new volScalarField
+                    (
+                        IOobject
+                        (
+                            "Su",
+                            this->mesh().time().timeName(),
+                            this->mesh()
+                        ),
+                        this->mesh(),
+                        dimensionedScalar(dimDensity/dimTime, Zero)
+                    )
+                );
+                volScalarField& Su = tSu.ref();
 
 
                 if (massTransferModels_.found(keyik))
@@ -229,14 +258,28 @@ Foam::MassTransferPhaseSystem<BasePhaseSystem>::heatTransfer
                     autoPtr<interfaceCompositionModel>& interfacePtr =
                         massTransferModels_[keyik];
 
-                    // Explicit temperature mass transfer rate
-                    tmp<volScalarField> Kexp =
-                        interfacePtr->Kexp(interfaceCompositionModel::T, T);
-
-                    if (Kexp.valid())
+                    dmdtNetki -= *dmdt_[keyik];
+                    
+                    tmp<volScalarField> KSp =
+                        interfacePtr->KSp(interfaceCompositionModel::T, T);
+                    
+                    if (KSp.valid())
                     {
-                        dmdtNetki -= Kexp.ref();
-                        *dmdt_[keyik] = Kexp.ref();
+                        Sp -= KSp.ref();
+                    }
+                    
+                    tmp<volScalarField> KSu =
+                        interfacePtr->KSu(interfaceCompositionModel::T, T);
+                    
+                    if (KSu.valid())
+                    {
+                        Su -= KSu.ref();
+                    }
+                    
+                    // If linearization is not provided used full explicit
+                    if (!KSp.valid() && !KSu.valid())
+                    {
+                        Su -= *dmdt_[keyik];
                     }
                 }
 
@@ -246,37 +289,438 @@ Foam::MassTransferPhaseSystem<BasePhaseSystem>::heatTransfer
                     autoPtr<interfaceCompositionModel>& interfacePtr =
                         massTransferModels_[keyki];
 
-                    // Explicit temperature mass transfer rate
-                    const tmp<volScalarField> Kexp =
-                        interfacePtr->Kexp(interfaceCompositionModel::T, T);
+                    dmdtNetki += *dmdt_[keyki];
 
-                    if (Kexp.valid())
+                    
+                    tmp<volScalarField> KSp =
+                        interfacePtr->KSp(interfaceCompositionModel::T, T);
+                    
+                    if (KSp.valid())
                     {
-                        dmdtNetki += Kexp.ref();
-                        *dmdt_[keyki] = Kexp.ref();
+                        Sp += KSp.ref();
+                    }
+                    
+                    tmp<volScalarField> KSu =
+                        interfacePtr->KSu(interfaceCompositionModel::T, T);
+                    
+                    if (KSu.valid())
+                    {
+                        Su += KSu.ref();
+                    }
+                    
+                    // If linearization is not provided used full explicit
+                    if (!KSp.valid() && !KSu.valid())
+                    {
+                        Su += *dmdt_[keyki];
                     }
-
                 }
 
-                word keyikName(phasei.name() + phasek.name());
-                word keykiName(phasek.name() + phasei.name());
+                tmp<volScalarField> L = calculateL(dmdtNetki, keyik, keyki, T);
 
-                eqn -=
-                    (
-                        dmdtNetki
-                        *(
-                            calculateL(dmdtNetki, keyik, keyki, T)
-                            - (phasek.Cp() - phasei.Cp())
-                            * constant::standard::Tstd
-                        )
+                //eqn -= dmdtNetki*L;
+                eqn -= fvm::Sp(Sp*L.ref(), T) + Su*L.ref();
+            }
+        }
+    }
+    return tEqnPtr;
+}
+
+
+template<class BasePhaseSystem>
+Foam::tmp<Foam::fvScalarMatrix>
+Foam::MassTransferPhaseSystem<BasePhaseSystem>::volTransfer
+(
+    const volScalarField& p
+)
+{
+    tmp<fvScalarMatrix> tEqnPtr
+    (
+        new fvScalarMatrix(p, dimVolume/dimTime)
+    );
+    
+    fvScalarMatrix& eqn = tEqnPtr.ref();
+    
+    tmp<volScalarField> tSp
+    (
+        new volScalarField
+        (
+            IOobject
+            (
+                "Sp",
+                this->mesh().time().timeName(),
+                this->mesh()
+            ),
+            this->mesh(),
+            dimensionedScalar(dimless/dimTime/dimPressure, Zero)
+        )
+    );
+    volScalarField& Sp = tSp.ref();
+    
+    tmp<volScalarField> tSu
+    (
+        new volScalarField
+        (
+            IOobject
+            (
+                "Su",
+                this->mesh().time().timeName(),
+                this->mesh()
+            ),
+            this->mesh(),
+            dimensionedScalar(dimless/dimTime, Zero)
+        )
+    );
+    volScalarField& Su = tSu.ref();
+    
+    forAllConstIters(this->totalPhasePairs(), iter)
+    {
+        const phasePair& pair = iter()();
+
+        const phaseModel& phase1 = pair.phase1();
+        const phaseModel& phase2 = pair.phase2();
+
+        const phasePairKey key12
+        (
+            phase1.name(),
+            phase2.name(),
+            true
+        );
+        
+        if (massTransferModels_.found(key12))
+        {
+            autoPtr<interfaceCompositionModel>& interfacePtr =
+                massTransferModels_[key12];
+           
+            tmp<volScalarField> KSp =
+                interfacePtr->KSp(interfaceCompositionModel::P, p);
+            
+            if (KSp.valid())
+            {
+                Sp += KSp.ref();
+            }
+            
+            tmp<volScalarField> KSu =
+                interfacePtr->KSu(interfaceCompositionModel::P, p);
+            
+            if (KSu.valid())
+            {
+                Su += KSu.ref();
+            }
+            
+            // If linearization is not provided used full explicit
+            if (!KSp.valid() && !KSu.valid())
+            {
+                Su -= 
+                    *dmdt_[key12] 
+                    *(
+                        - this->coeffs(phase1.name())
+                        + this->coeffs(phase2.name())
+                    );
+            }
+        }
+        
+        const phasePairKey key21
+        (
+            phase2.name(),
+            phase1.name(),
+            true
+        );
+        
+        if (massTransferModels_.found(key21))
+        {
+            autoPtr<interfaceCompositionModel>& interfacePtr =
+                massTransferModels_[key21];
+           
+            tmp<volScalarField> KSp =
+                interfacePtr->KSp(interfaceCompositionModel::P, p);
+            
+            if (KSp.valid())
+            {
+                Sp += KSp.ref();
+            }
+            
+            tmp<volScalarField> KSu =
+                interfacePtr->KSu(interfaceCompositionModel::P, p);
+            
+            if (KSu.valid())
+            {
+                Su += KSu.ref();
+            }
+            
+            // If linearization is not provided used full explicit
+            if (!KSp.valid() && !KSu.valid())
+            {
+                Su += 
+                    *dmdt_[key21]
+                    *(
+                        - this->coeffs(phase1.name())
+                        + this->coeffs(phase2.name())
                     );
             }
         }
+
     }
+    
+    eqn += fvm::Sp(Sp, p) + Su;
     return tEqnPtr;
 }
 
 
+template<class BasePhaseSystem>
+void Foam::MassTransferPhaseSystem<BasePhaseSystem>::correctMassSources
+(
+    const volScalarField& T
+)
+{
+    forAllConstIters(this->phaseModels_, iteri)
+    {
+        const phaseModel& phasei = iteri()();
+
+        auto iterk = iteri;
+
+        for (++iterk; iterk != this->phaseModels_.end(); ++iterk)
+        {
+            if (iteri()().name() != iterk()().name())
+            {
+                const phaseModel& phasek = iterk()();
+
+                // Phase i to phase k
+                const phasePairKey keyik(phasei.name(), phasek.name(), true);
+
+                // Phase k to phase i
+                const phasePairKey keyki(phasek.name(), phasei.name(), true);
+                
+                if (massTransferModels_.found(keyik))
+                {
+                    autoPtr<interfaceCompositionModel>& interfacePtr =
+                        massTransferModels_[keyik];
+                        
+                    tmp<volScalarField> Kexp = interfacePtr->Kexp(T);
+                    
+                    *dmdt_[keyik] = Kexp.ref();
+                    
+                }
+                
+                if (massTransferModels_.found(keyki))
+                {
+                    autoPtr<interfaceCompositionModel>& interfacePtr =
+                        massTransferModels_[keyki];
+
+                    // Explicit temperature mass transfer rate
+                    const tmp<volScalarField> Kexp = interfacePtr->Kexp(T);
+                    
+                    *dmdt_[keyki] = Kexp.ref();
+                }
+            }
+        }
+    }
+}
+
+
+template<class BasePhaseSystem>
+void Foam::MassTransferPhaseSystem<BasePhaseSystem>::alphaTransfer
+(
+    SuSpTable& Su,
+    SuSpTable& Sp
+)
+{
+    // This term adds and substract alpha*div(U) as a source term
+    // for alpha, substituting div(U) = mDot(1/rho1 - 1/rho2)
+    bool includeDivU(true);
+    
+    forAllConstIters(this->totalPhasePairs(), iter)
+    {
+        const phasePair& pair = iter()();
+
+        const phaseModel& phase1 = pair.phase1();
+        const phaseModel& phase2 = pair.phase2();
+
+        const volScalarField& alpha1 = pair.phase1();
+        const volScalarField& alpha2 = pair.phase2();
+
+        tmp<volScalarField> tCoeffs1 = this->coeffs(phase1.name());
+        const volScalarField&  coeffs1 = tCoeffs1();
+
+        tmp<volScalarField> tCoeffs2 = this->coeffs(phase2.name());
+        const volScalarField&  coeffs2 = tCoeffs2();
+
+        // Phase 1 to phase 2
+        const phasePairKey key12
+        (
+            phase1.name(),
+            phase2.name(),
+            true
+        );
+        
+        tmp<volScalarField> tdmdt12(this->dmdt(key12));
+        volScalarField& dmdt12 = tdmdt12.ref();
+        
+        if (massTransferModels_.found(key12))
+        {
+            autoPtr<interfaceCompositionModel>& interfacePtr =
+                massTransferModels_[key12];
+             
+            tmp<volScalarField> KSu =
+                interfacePtr->KSu(interfaceCompositionModel::alpha, phase1);
+            
+            if (KSu.valid())
+            {
+                dmdt12 = KSu.ref();
+            }
+            
+            includeDivU = interfacePtr->includeDivU();
+        }
+       
+
+        // Phase 2 to phase 1
+        const phasePairKey key21
+        (
+            phase2.name(),
+            phase1.name(),
+            true
+        );
+
+        tmp<volScalarField> tdmdt21(this->dmdt(key21));
+        volScalarField& dmdt21 = tdmdt21.ref();
+        
+        if (massTransferModels_.found(key21))
+        {
+            autoPtr<interfaceCompositionModel>& interfacePtr =
+                massTransferModels_[key21];
+            
+            tmp<volScalarField> KSu =
+                interfacePtr->KSu(interfaceCompositionModel::alpha, phase2);
+            
+            if (KSu.valid())
+            {
+                dmdt21 = KSu.ref();
+            }
+            
+            includeDivU = interfacePtr->includeDivU();
+        }
+
+        volScalarField::Internal& SpPhase1 = Sp[phase1.name()];
+
+        volScalarField::Internal& SuPhase1 = Su[phase1.name()];
+
+        volScalarField::Internal& SpPhase2 = Sp[phase2.name()];
+
+        volScalarField::Internal& SuPhase2 = Su[phase2.name()];
+
+        const volScalarField dmdtNet(dmdt21 - dmdt12);
+
+        const volScalarField coeffs12(coeffs1 - coeffs2);
+
+        const surfaceScalarField& phi = this->phi();
+        
+        if (includeDivU)
+        {
+            SuPhase1 +=
+                fvc::div(phi)*min(max(alpha1, scalar(0)), scalar(1));
+                
+            SuPhase2 +=
+                fvc::div(phi)*min(max(alpha2, scalar(0)), scalar(1));
+        }
+        
+        // NOTE: dmdtNet is distributed in terms =
+        //  Source for phase 1 =
+        //      dmdtNet/rho1
+        //    - alpha1*dmdtNet(1/rho1 - 1/rho2)
+
+        forAll(dmdtNet, celli)
+        {
+            scalar dmdt21 = dmdtNet[celli];
+            scalar coeffs12Cell = coeffs12[celli];
+
+            scalar alpha1Limited = max(min(alpha1[celli], 1.0), 0.0);
+
+            // exp.
+            SuPhase1[celli] += coeffs1[celli]*dmdt21;
+
+            if (includeDivU)
+            {
+                if (dmdt21 > 0)
+                {
+                    if (coeffs12Cell > 0)
+                    {
+                        // imp
+                        SpPhase1[celli] -= dmdt21*coeffs12Cell;
+                    }
+                    else if (coeffs12Cell < 0)
+                    {
+                        // exp
+                        SuPhase1[celli] -=
+                            dmdt21*coeffs12Cell*alpha1Limited;
+                    }
+                }
+                else if (dmdt21 < 0)
+                {
+                    if (coeffs12Cell > 0)
+                    {
+                        // exp
+                        SuPhase1[celli] -=
+                            dmdt21*coeffs12Cell*alpha1Limited;
+                    }
+                    else if (coeffs12Cell < 0)
+                    {
+                        // imp
+                        SpPhase1[celli] -= dmdt21*coeffs12Cell;
+                    }
+                }
+            }
+        }
+
+        forAll(dmdtNet, celli)
+        {
+            scalar dmdt12 = -dmdtNet[celli];
+            scalar coeffs21Cell = -coeffs12[celli];
+
+            scalar alpha2Limited = max(min(alpha2[celli], 1.0), 0.0);
+
+            // exp
+            SuPhase2[celli] += coeffs2[celli]*dmdt12;
+
+            if (includeDivU)
+            {
+                if (dmdt12 > 0)
+                {
+                    if (coeffs21Cell > 0)
+                    {
+                        // imp
+                        SpPhase2[celli] -= dmdt12*coeffs21Cell;
+                    }
+                    else if (coeffs21Cell < 0)
+                    {
+                        // exp
+                        SuPhase2[celli] -=
+                            dmdt12*coeffs21Cell*alpha2Limited;
+                    }
+                }
+                else if (dmdt12 < 0)
+                {
+                    if (coeffs21Cell > 0)
+                    {
+                        // exp
+                        SuPhase2[celli] -=
+                            coeffs21Cell*dmdt12*alpha2Limited;
+                    }
+                    else if (coeffs21Cell < 0)
+                    {
+                        // imp
+                        SpPhase2[celli] -= dmdt12*coeffs21Cell;
+                    }
+                }
+            }
+
+        }
+
+        // Update ddtAlphaMax
+        this->ddtAlphaMax_ =  
+            max(gMax((dmdt21*coeffs1)()), gMax((dmdt12*coeffs2)()));
+    }
+}
+
+        
 template<class BasePhaseSystem>
 void Foam::MassTransferPhaseSystem<BasePhaseSystem>::massSpeciesTransfer
 (
diff --git a/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/phasesSystem/MassTransferPhaseSystem/MassTransferPhaseSystem.H b/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/phasesSystem/MassTransferPhaseSystem/MassTransferPhaseSystem.H
index fadfe2344ac..0a6e77ab10d 100644
--- a/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/phasesSystem/MassTransferPhaseSystem/MassTransferPhaseSystem.H
+++ b/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/phasesSystem/MassTransferPhaseSystem/MassTransferPhaseSystem.H
@@ -5,7 +5,7 @@
     \\  /    A nd           | www.openfoam.com
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
-    Copyright (C) 2017 OpenCFD Ltd.
+    Copyright (C) 2017-2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -59,7 +59,7 @@ public:
 
     // Public typedefs
 
-     typedef
+    typedef
             HashTable
             <
                 autoPtr<interfaceCompositionModel>,
@@ -67,6 +67,9 @@ public:
                 phasePairKey::hash
             >
             massTransferModelTable;
+            
+            
+    typedef HashTable<volScalarField::Internal> SuSpTable;
 
 protected:
 
@@ -123,9 +126,17 @@ public:
 
     // Mass transfer functions
 
-        //- Return the heat transfer matrix and fill dmdt for phases
+        //- Return the heat transfer matrix
         virtual  tmp<fvScalarMatrix> heatTransfer(const volScalarField& T);
-
+        
+        //- Return the volumetric rate transfer matrix
+        virtual  tmp<fvScalarMatrix> volTransfer(const volScalarField& p);
+        
+        //- Correct/calculates mass sources dmdt for phases
+        virtual void correctMassSources(const volScalarField& T);
+        
+        //- Calculate mass transfer for alpha's
+        virtual void alphaTransfer(SuSpTable& Su, SuSpTable& Sp);
 
         //- Calculate mass transfer for species
         virtual void massSpeciesTransfer
diff --git a/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/phasesSystem/phaseModel/MultiComponentPhaseModel/MultiComponentPhaseModel.C b/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/phasesSystem/phaseModel/MultiComponentPhaseModel/MultiComponentPhaseModel.C
index 7bf399d3e5f..d06b50380c1 100644
--- a/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/phasesSystem/phaseModel/MultiComponentPhaseModel/MultiComponentPhaseModel.C
+++ b/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/phasesSystem/phaseModel/MultiComponentPhaseModel/MultiComponentPhaseModel.C
@@ -90,9 +90,7 @@ MultiComponentPhaseModel
                 (
                     IOobject::groupName("X" + species_[i], phaseName),
                     fluid.mesh().time().timeName(),
-                    fluid.mesh(),
-                    IOobject::NO_READ,
-                    IOobject::NO_WRITE
+                    fluid.mesh()
                 ),
                 Y()[i]
             )
diff --git a/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/phasesSystem/phaseSystem/multiphaseSystem/multiphaseSystem.C b/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/phasesSystem/phaseSystem/multiphaseSystem/multiphaseSystem.C
index 5fbf895fdee..a6dcf73aa75 100644
--- a/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/phasesSystem/phaseSystem/multiphaseSystem/multiphaseSystem.C
+++ b/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/phasesSystem/phaseSystem/multiphaseSystem/multiphaseSystem.C
@@ -5,7 +5,7 @@
     \\  /    A nd           | www.openfoam.com
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
-    Copyright (C) 2017-2019 OpenCFD Ltd.
+    Copyright (C) 2017-2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -120,166 +120,60 @@ Foam::multiphaseSystem::multiphaseSystem
 // * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * * //
 
 void Foam::multiphaseSystem::calculateSuSp()
-{
-    forAllConstIters(totalPhasePairs_, iter)
-    {
-        const phasePair& pair = iter()();
-
-        const phaseModel& phase1 = pair.phase1();
-        const phaseModel& phase2 = pair.phase2();
-
-        const volScalarField& alpha1 = pair.phase1();
-        const volScalarField& alpha2 = pair.phase2();
-
-        tmp<volScalarField> tCoeffs1 = this->coeffs(phase1.name());
-        const volScalarField&  coeffs1 = tCoeffs1();
+{   
+    this->alphaTransfer(Su_, Sp_);
+}
 
-        tmp<volScalarField> tCoeffs2 = this->coeffs(phase2.name());
-        const volScalarField&  coeffs2 = tCoeffs2();
 
-        // Phase 1 to phase 2
-        const phasePairKey key12
+void Foam::multiphaseSystem::solve()
+{
+    const dictionary& alphaControls = mesh_.solverDict("alpha");
+    label nAlphaSubCycles(alphaControls.get<label>("nAlphaSubCycles"));
+    
+    volScalarField& alpha = phases_.first();
+    
+    if (nAlphaSubCycles > 1)
+    {
+        surfaceScalarField rhoPhiSum
         (
-            phase1.name(),
-            phase2.name(),
-            true
+            IOobject
+            (
+                "rhoPhiSum",
+                mesh_.time().timeName(),
+                mesh_
+            ),
+            mesh_,
+            dimensionedScalar(rhoPhi_.dimensions(), Zero)
         );
 
+        dimensionedScalar totalDeltaT = mesh_.time().deltaT();
 
-        tmp<volScalarField> tdmdt12(this->dmdt(key12));
-        const volScalarField& dmdt12 = tdmdt12();
-
-        // Phase 2 to phase 1
-        const phasePairKey key21
+        for
         (
-            phase2.name(),
-            phase1.name(),
-            true
-        );
-
-        tmp<volScalarField> tdmdt21(this->dmdt(key21));
-        const volScalarField& dmdt21 = tdmdt21();
-
-        volScalarField::Internal& SpPhase1 = Sp_[phase1.name()];
-
-        volScalarField::Internal& SuPhase1 = Su_[phase1.name()];
-
-        volScalarField::Internal& SpPhase2 = Sp_[phase2.name()];
-
-        volScalarField::Internal& SuPhase2 = Su_[phase2.name()];
-
-        const volScalarField dmdtNet(dmdt21 - dmdt12);
-
-        const volScalarField coeffs12(coeffs1 - coeffs2);
-
-        // NOTE: dmdtNet is distributed in terms =
-        //  Source for phase 1 =
-        //      dmdtNet/rho1
-        //    - alpha1*dmdtNet(1/rho1 - 1/rho2)
-
-        forAll(dmdtNet, celli)
+            subCycle<volScalarField> alphaSubCycle(alpha, nAlphaSubCycles);
+            !(++alphaSubCycle).end();
+        )
         {
-            scalar dmdt21 = dmdtNet[celli];
-            scalar coeffs12Cell = coeffs12[celli];
-
-            scalar alpha1Limited = max(min(alpha1[celli], 1.0), 0.0);
-
-            // exp.
-            SuPhase1[celli] += coeffs1[celli]*dmdt21;
-
-            if (dmdt21 > 0)
-            {
-                if (coeffs12Cell > 0)
-                {
-                    // imp
-                    SpPhase1[celli] -= dmdt21*coeffs12Cell;
-                }
-                else if (coeffs12Cell < 0)
-                {
-                    // exp
-                    SuPhase1[celli] -=
-                        dmdt21*coeffs12Cell*alpha1Limited;
-                }
-            }
-            else if (dmdt21 < 0)
-            {
-                if (coeffs12Cell > 0)
-                {
-                    // exp
-                    SuPhase1[celli] -=
-                        dmdt21*coeffs12Cell*alpha1Limited;
-                }
-                else if (coeffs12Cell < 0)
-                {
-                    // imp
-                    SpPhase1[celli] -= dmdt21*coeffs12Cell;
-                }
-            }
+            solveAlphas();
+            rhoPhiSum += (mesh_.time().deltaT()/totalDeltaT)*rhoPhi_;
         }
 
-        forAll(dmdtNet, celli)
-        {
-            scalar dmdt12 = -dmdtNet[celli];
-            scalar coeffs21Cell = -coeffs12[celli];
-
-            scalar alpha2Limited = max(min(alpha2[celli], 1.0), 0.0);
-
-            // exp
-            SuPhase2[celli] += coeffs2[celli]*dmdt12;
-
-            if (dmdt12 > 0)
-            {
-                if (coeffs21Cell > 0)
-                {
-                    // imp
-                    SpPhase2[celli] -= dmdt12*coeffs21Cell;
-                }
-                else if (coeffs21Cell < 0)
-                {
-                    // exp
-                    SuPhase2[celli] -=
-                        dmdt12*coeffs21Cell*alpha2Limited;
-                }
-            }
-            else if (dmdt12 < 0)
-            {
-                if (coeffs21Cell > 0)
-                {
-                    // exp
-                    SuPhase2[celli] -=
-                        coeffs21Cell*dmdt12*alpha2Limited;
-                }
-                else if (coeffs21Cell < 0)
-                {
-                    // imp
-                    SpPhase2[celli] -= dmdt12*coeffs21Cell;
-                }
-            }
-        }
-
-        // Update ddtAlphaMax
-        ddtAlphaMax_ =
-            max
-            (
-                ddtAlphaMax_.value(),
-                max(gMax((dmdt21*coeffs1)()), gMax((dmdt12*coeffs2)()))
-            );
+        rhoPhi_ = rhoPhiSum;
+    }
+    else
+    {
+        solveAlphas();
     }
+    
 }
 
-
-void Foam::multiphaseSystem::solve()
+void Foam::multiphaseSystem::solveAlphas()
 {
-    const fvMesh& mesh = this->mesh();
-
-    const dictionary& alphaControls = mesh.solverDict("alpha");
-    label nAlphaSubCycles(alphaControls.get<label>("nAlphaSubCycles"));
+    
+    mesh_.solverDict("alpha").readEntry("cAlphas", cAlphas_);
+    const dictionary& alphaControls = mesh_.solverDict("alpha");
     label nAlphaCorr(alphaControls.get<label>("nAlphaCorr"));
-    mesh.solverDict("alpha").readEntry("cAlphas", cAlphas_);
-
-    // Reset ddtAlphaMax
-    ddtAlphaMax_ = dimensionedScalar(dimless, Zero);
-
+    
     PtrList<surfaceScalarField> phiAlphaCorrs(phases_.size());
 
     const surfaceScalarField& phi = this->phi();
@@ -389,12 +283,11 @@ void Foam::multiphaseSystem::solve()
             Sp_[phase.name()] = dimensionedScalar("Sp", dimless/dimTime, Zero);
 
             // Add alpha*div(U)
-            const volScalarField& alpha = phase;
-            Su_[phase.name()] +=
-                fvc::div(phi)*min(max(alpha, scalar(0)), scalar(1));
+            //const volScalarField& alpha = phase;
+            //Su_[phase.name()] +=
+            //    fvc::div(phi)*min(max(alpha, scalar(0)), scalar(1));
         }
 
-
         // Fill Su and Sp
         calculateSuSp();
 
@@ -454,12 +347,12 @@ void Foam::multiphaseSystem::solve()
             //phiAlpha += upwind<scalar>(mesh_, phi).flux(alpha1);
             fvScalarMatrix alpha1Eqn
             (
-                fv::EulerDdtScheme<scalar>(mesh).fvmDdt(alpha1)
+                fv::EulerDdtScheme<scalar>(mesh_).fvmDdt(alpha1)
               + fv::gaussConvectionScheme<scalar>
                 (
-                    mesh,
+                    mesh_,
                     phi,
-                    upwind<scalar>(mesh, phi)
+                    upwind<scalar>(mesh_, phi)
                 ).fvmDiv(phi, alpha1)
               ==
                  Su + fvm::Sp(Sp, alpha1)
@@ -468,60 +361,21 @@ void Foam::multiphaseSystem::solve()
             alpha1Eqn.solve();
 
             phiAlpha += alpha1Eqn.flux();
+            
+            MULES::explicitSolve
+            (
+                geometricOneField(),
+                alpha1,
+                phi,
+                phiAlpha,
+                Sp,
+                Su,
+                oneField(),
+                zeroField()
+            );
 
-            if (nAlphaSubCycles > 1)
-            {
-                for
-                (
-                    subCycle<volScalarField> alphaSubCycle
-                    (
-                        alpha1,
-                        nAlphaSubCycles
-                    );
-                    !(++alphaSubCycle).end();
-                )
-                {
-                    MULES::explicitSolve
-                    (
-                        geometricOneField(),
-                        alpha1,
-                        phi,
-                        phiAlpha,
-                        (alphaSubCycle.index()*Sp)(),
-                        (Su - (alphaSubCycle.index() - 1)*Sp*alpha1)(),
-                        oneField(),
-                        zeroField()
-                    );
-
-                    if (alphaSubCycle.index() == 1)
-                    {
-                        phase.alphaPhi() = phiAlpha;
-                    }
-                    else
-                    {
-                        phase.alphaPhi() += phiAlpha;
-                    }
-                }
-
-                phase.alphaPhi() /= nAlphaSubCycles;
-            }
-            else
-            {
-                MULES::explicitSolve
-                (
-                    geometricOneField(),
-                    alpha1,
-                    phi,
-                    phiAlpha,
-                    Sp,
-                    Su,
-                    oneField(),
-                    zeroField()
-                );
-
-                phase.alphaPhi() = phiAlpha;
-            }
-
+            phase.alphaPhi() = phiAlpha;
+            
             ++phasei;
         }
 
@@ -549,7 +403,6 @@ void Foam::multiphaseSystem::solve()
 
                 // Update rhoPhi
                 rhoPhi_ += fvc::interpolate(phase.rho()) * phase.alphaPhi();
-
             }
 
             Info<< "Phase-sum volume fraction, min, max = "
@@ -566,7 +419,7 @@ void Foam::multiphaseSystem::solve()
                 alpha += alpha*sumCorr;
 
                 Info<< alpha.name() << " volume fraction = "
-                    << alpha.weightedAverage(mesh.V()).value()
+                    << alpha.weightedAverage(mesh_.V()).value()
                     << "  Min(alpha) = " << min(alpha).value()
                     << "  Max(alpha) = " << max(alpha).value()
                     << endl;
diff --git a/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/phasesSystem/phaseSystem/multiphaseSystem/multiphaseSystem.H b/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/phasesSystem/phaseSystem/multiphaseSystem/multiphaseSystem.H
index 55c206dc24c..9b827bad619 100644
--- a/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/phasesSystem/phaseSystem/multiphaseSystem/multiphaseSystem.H
+++ b/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/phasesSystem/phaseSystem/multiphaseSystem/multiphaseSystem.H
@@ -5,7 +5,7 @@
     \\  /    A nd           | www.openfoam.com
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
-    Copyright (C) 2017 OpenCFD Ltd.
+    Copyright (C) 2017-2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -89,6 +89,9 @@ protected:
 
         //- Calculate Sp and Su
         void calculateSuSp();
+        
+        //- Solve alphas
+        void solveAlphas();
 
 
 public:
diff --git a/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/phasesSystem/phaseSystem/multiphaseSystem/multiphaseSystem_backUp.C b/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/phasesSystem/phaseSystem/multiphaseSystem/multiphaseSystem_backUp.C
new file mode 100644
index 00000000000..681de149fe8
--- /dev/null
+++ b/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/phasesSystem/phaseSystem/multiphaseSystem/multiphaseSystem_backUp.C
@@ -0,0 +1,642 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | www.openfoam.com
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+    Copyright (C) 2017-2019 OpenCFD Ltd.
+-------------------------------------------------------------------------------
+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 "fixedValueFvsPatchFields.H"
+#include "Time.H"
+#include "subCycle.H"
+#include "fvcMeshPhi.H"
+
+#include "surfaceInterpolate.H"
+#include "fvcGrad.H"
+#include "fvcSnGrad.H"
+#include "fvcDiv.H"
+#include "fvcDdt.H"
+#include "fvcFlux.H"
+#include "fvmDdt.H"
+#include "fvcAverage.H"
+#include "fvMatrix.H"
+#include "fvmSup.H"
+#include "CMULES.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    defineTypeNameAndDebug(multiphaseSystem, 0);
+    defineRunTimeSelectionTable(multiphaseSystem, dictionary);
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::multiphaseSystem::multiphaseSystem
+(
+     const fvMesh& mesh
+)
+:
+    phaseSystem(mesh),
+    cAlphas_(),
+    ddtAlphaMax_(0.0),
+    limitedPhiAlphas_(phaseModels_.size()),
+    Su_(phaseModels_.size()),
+    Sp_(phaseModels_.size())
+{
+    label phasei = 0;
+    phases_.setSize(phaseModels_.size());
+    forAllIters(phaseModels_, iter)
+    {
+        phaseModel& pm = iter()();
+        phases_.set(phasei++, &pm);
+    }
+
+    mesh.solverDict("alpha").readEntry("cAlphas", cAlphas_);
+
+    // Initiate Su and Sp
+    forAllConstIters(phaseModels_, iter)
+    {
+        const phaseModel& pm = iter()();
+
+        Su_.insert
+        (
+            pm.name(),
+            volScalarField::Internal
+            (
+                IOobject
+                (
+                    "Su" + pm.name(),
+                    mesh_.time().timeName(),
+                    mesh_
+                ),
+                mesh_,
+                dimensionedScalar(dimless/dimTime, Zero)
+            )
+        );
+
+        Sp_.insert
+        (
+            pm.name(),
+            volScalarField::Internal
+            (
+                IOobject
+                (
+                    "Sp" + pm.name(),
+                    mesh_.time().timeName(),
+                    mesh_
+                ),
+                mesh_,
+                dimensionedScalar(dimless/dimTime, Zero)
+            )
+        );
+    }
+}
+
+
+// * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * * //
+
+void Foam::multiphaseSystem::calculateSuSp()
+{
+    forAllConstIters(totalPhasePairs_, iter)
+    {
+        const phasePair& pair = iter()();
+
+        const phaseModel& phase1 = pair.phase1();
+        const phaseModel& phase2 = pair.phase2();
+
+        const volScalarField& alpha1 = pair.phase1();
+        const volScalarField& alpha2 = pair.phase2();
+
+        tmp<volScalarField> tCoeffs1 = this->coeffs(phase1.name());
+        const volScalarField&  coeffs1 = tCoeffs1();
+
+        tmp<volScalarField> tCoeffs2 = this->coeffs(phase2.name());
+        const volScalarField&  coeffs2 = tCoeffs2();
+
+        // Phase 1 to phase 2
+        const phasePairKey key12
+        (
+            phase1.name(),
+            phase2.name(),
+            true
+        );
+
+
+        tmp<volScalarField> tdmdt12(this->dmdt(key12));
+        const volScalarField& dmdt12 = tdmdt12();
+
+        // Phase 2 to phase 1
+        const phasePairKey key21
+        (
+            phase2.name(),
+            phase1.name(),
+            true
+        );
+
+        tmp<volScalarField> tdmdt21(this->dmdt(key21));
+        const volScalarField& dmdt21 = tdmdt21();
+
+        volScalarField::Internal& SpPhase1 = Sp_[phase1.name()];
+
+        volScalarField::Internal& SuPhase1 = Su_[phase1.name()];
+
+        volScalarField::Internal& SpPhase2 = Sp_[phase2.name()];
+
+        volScalarField::Internal& SuPhase2 = Su_[phase2.name()];
+
+        const volScalarField dmdtNet(dmdt21 - dmdt12);
+
+        const volScalarField coeffs12(coeffs1 - coeffs2);
+
+        // NOTE: dmdtNet is distributed in terms =
+        //  Source for phase 1 =
+        //      dmdtNet/rho1
+        //    - alpha1*dmdtNet(1/rho1 - 1/rho2)
+
+        forAll(dmdtNet, celli)
+        {
+            scalar dmdt21 = dmdtNet[celli];
+            scalar coeffs12Cell = coeffs12[celli];
+
+            scalar alpha1Limited = max(min(alpha1[celli], 1.0), 0.0);
+
+            // exp.
+            SuPhase1[celli] += coeffs1[celli]*dmdt21;
+
+            if (dmdt21 > 0)
+            {
+                if (coeffs12Cell > 0)
+                {
+                    // imp
+                    SpPhase1[celli] -= dmdt21*coeffs12Cell;
+                }
+                else if (coeffs12Cell < 0)
+                {
+                    // exp
+                    SuPhase1[celli] -=
+                        dmdt21*coeffs12Cell*alpha1Limited;
+                }
+            }
+            else if (dmdt21 < 0)
+            {
+                if (coeffs12Cell > 0)
+                {
+                    // exp
+                    SuPhase1[celli] -=
+                        dmdt21*coeffs12Cell*alpha1Limited;
+                }
+                else if (coeffs12Cell < 0)
+                {
+                    // imp
+                    SpPhase1[celli] -= dmdt21*coeffs12Cell;
+                }
+            }
+        }
+
+        forAll(dmdtNet, celli)
+        {
+            scalar dmdt12 = -dmdtNet[celli];
+            scalar coeffs21Cell = -coeffs12[celli];
+
+            scalar alpha2Limited = max(min(alpha2[celli], 1.0), 0.0);
+
+            // exp
+            SuPhase2[celli] += coeffs2[celli]*dmdt12;
+
+            if (dmdt12 > 0)
+            {
+                if (coeffs21Cell > 0)
+                {
+                    // imp
+                    SpPhase2[celli] -= dmdt12*coeffs21Cell;
+                }
+                else if (coeffs21Cell < 0)
+                {
+                    // exp
+                    SuPhase2[celli] -=
+                        dmdt12*coeffs21Cell*alpha2Limited;
+                }
+            }
+            else if (dmdt12 < 0)
+            {
+                if (coeffs21Cell > 0)
+                {
+                    // exp
+                    SuPhase2[celli] -=
+                        coeffs21Cell*dmdt12*alpha2Limited;
+                }
+                else if (coeffs21Cell < 0)
+                {
+                    // imp
+                    SpPhase2[celli] -= dmdt12*coeffs21Cell;
+                }
+            }
+
+        }
+
+        // Update ddtAlphaMax
+        ddtAlphaMax_ =  
+            max(gMax((dmdt21*coeffs1)()), gMax((dmdt12*coeffs2)()));
+    }
+}
+
+
+void Foam::multiphaseSystem::solve()
+{
+    const fvMesh& mesh = this->mesh();
+
+    const dictionary& alphaControls = mesh.solverDict("alpha");
+    label nAlphaSubCycles(alphaControls.get<label>("nAlphaSubCycles"));
+    label nAlphaCorr(alphaControls.get<label>("nAlphaCorr"));
+    mesh.solverDict("alpha").readEntry("cAlphas", cAlphas_);
+
+    PtrList<surfaceScalarField> phiAlphaCorrs(phases_.size());
+
+    const surfaceScalarField& phi = this->phi();
+
+    surfaceScalarField phic(mag((phi)/mesh_.magSf()));
+
+    // Do not compress interface at non-coupled boundary faces
+    // (inlets, outlets etc.)
+    surfaceScalarField::Boundary& phicBf = phic.boundaryFieldRef();
+    forAll(phic.boundaryField(), patchi)
+    {
+        fvsPatchScalarField& phicp = phicBf[patchi];
+
+        if (!phicp.coupled())
+        {
+            phicp == 0;
+        }
+    }
+
+    for (int acorr=0; acorr<nAlphaCorr; acorr++)
+    {
+        label phasei = 0;
+        for (phaseModel& phase1 : phases_)
+        {
+            const volScalarField& alpha1 = phase1;
+
+            phiAlphaCorrs.set
+            (
+                phasei,
+                new surfaceScalarField
+                (
+                    "phi" + alpha1.name() + "Corr",
+                    fvc::flux
+                    (
+                        phi,
+                        alpha1,
+                        "div(phi," + alpha1.name() + ')'
+                    )
+                )
+            );
+
+            surfaceScalarField& phiAlphaCorr = phiAlphaCorrs[phasei];
+
+            for (phaseModel& phase2 : phases_)
+            {
+                const volScalarField& alpha2 = phase2;
+
+                if (&phase2 == &phase1) continue;
+
+                const phasePairKey key12(phase1.name(), phase2.name());
+
+                if (!cAlphas_.found(key12))
+                {
+                    FatalErrorInFunction
+                        << "Phase compression factor (cAlpha) not found for : "
+                        << key12
+                        << exit(FatalError);
+                }
+                scalar cAlpha = cAlphas_.find(key12)();
+
+                phic = min(cAlpha*phic, max(phic));
+
+                surfaceScalarField phir(phic*nHatf(alpha1, alpha2));
+
+                word phirScheme
+                (
+                    "div(phir," + alpha2.name() + ',' + alpha1.name() + ')'
+                );
+
+                phiAlphaCorr += fvc::flux
+                (
+                   -fvc::flux(-phir, alpha2, phirScheme),
+                    alpha1,
+                    phirScheme
+                );
+            }
+
+            // Ensure that the flux at inflow BCs is preserved
+            forAll(phiAlphaCorr.boundaryField(), patchi)
+            {
+                fvsPatchScalarField& phiAlphaCorrp =
+                    phiAlphaCorr.boundaryFieldRef()[patchi];
+
+                if (!phiAlphaCorrp.coupled())
+                {
+                    const scalarField& phi1p = phi.boundaryField()[patchi];
+                    const scalarField& alpha1p =
+                        alpha1.boundaryField()[patchi];
+
+                    forAll(phiAlphaCorrp, facei)
+                    {
+                        if (phi1p[facei] < 0)
+                        {
+                            phiAlphaCorrp[facei] = alpha1p[facei]*phi1p[facei];
+                        }
+                    }
+                }
+            }
+
+            ++phasei;
+        }
+
+        // Set Su and Sp to zero
+        for (const phaseModel& phase : phases_)
+        {
+            Su_[phase.name()] = dimensionedScalar("Su", dimless/dimTime, Zero);
+            Sp_[phase.name()] = dimensionedScalar("Sp", dimless/dimTime, Zero);
+
+            // Add alpha*div(U)
+            const volScalarField& alpha = phase;
+            Sp_[phase.name()] +=
+                fvc::div(phi);//*min(max(alpha, scalar(0)), scalar(1));
+        }
+
+
+        // Fill Su and Sp
+        calculateSuSp();
+
+        // Limit phiAlphaCorr on each phase
+        phasei = 0;
+        for (phaseModel& phase : phases_)
+        {
+            volScalarField& alpha1 = phase;
+
+            surfaceScalarField& phiAlphaCorr = phiAlphaCorrs[phasei];
+
+            volScalarField::Internal& Su = Su_[phase.name()];
+            volScalarField::Internal& Sp = Sp_[phase.name()];
+
+            MULES::limit
+            (
+                1.0/mesh_.time().deltaT().value(),
+                geometricOneField(),
+                alpha1,
+                phi,
+                phiAlphaCorr,
+                Sp,
+                Su,
+                oneField(),
+                zeroField(),
+                true
+            );
+            ++phasei;
+        }
+
+        MULES::limitSum(phiAlphaCorrs);
+
+        volScalarField sumAlpha
+        (
+            IOobject
+            (
+                "sumAlpha",
+                mesh_.time().timeName(),
+                mesh_
+            ),
+            mesh_,
+            dimensionedScalar(dimless, Zero)
+        );
+
+        phasei = 0;
+        for (phaseModel& phase : phases_)
+        {
+            volScalarField& alpha1 = phase;
+
+            const volScalarField::Internal& Su = Su_[phase.name()];
+
+            const volScalarField::Internal& Sp = Sp_[phase.name()];
+
+            surfaceScalarField& phiAlpha = phiAlphaCorrs[phasei];
+
+            // Add a bounded upwind U-mean flux
+            phiAlpha += upwind<scalar>(mesh_, phi).flux(alpha1);
+//             fvScalarMatrix alpha1Eqn
+//             (
+//                 fv::EulerDdtScheme<scalar>(mesh).fvmDdt(alpha1)
+//               + fv::gaussConvectionScheme<scalar>
+//                 (
+//                     mesh,
+//                     phi,
+//                     upwind<scalar>(mesh, phi)
+//                 ).fvmDiv(phi, alpha1)
+//               ==
+//                  Su + fvm::Sp(Sp, alpha1)
+//             );
+// 
+//             alpha1Eqn.solve();
+
+            //phiAlpha += alpha1Eqn.flux();
+            
+            if (nAlphaSubCycles > 1)
+            {
+                for
+                (
+                    subCycle<volScalarField> alphaSubCycle
+                    (
+                        alpha1,
+                        nAlphaSubCycles
+                    );
+                    !(++alphaSubCycle).end();
+                )
+                {
+                    MULES::explicitSolve
+                    (
+                        geometricOneField(),
+                        alpha1,
+                        phi,
+                        phiAlpha,
+                        (alphaSubCycle.index()*Sp)(),
+                        (Su - (alphaSubCycle.index() - 1)*Sp*alpha1)(),
+                        oneField(),
+                        zeroField()
+                    );
+
+                    if (alphaSubCycle.index() == 1)
+                    {
+                        phase.alphaPhi() = phiAlpha;
+                    }
+                    else
+                    {
+                        phase.alphaPhi() += phiAlpha;
+                    }
+                }
+
+                phase.alphaPhi() /= nAlphaSubCycles;
+            }
+            else
+            {
+                MULES::explicitSolve
+                (
+                    geometricOneField(),
+                    alpha1,
+                    phi,
+                    phiAlpha,
+                    Sp,
+                    Su,
+                    oneField(),
+                    zeroField()
+                );
+
+                phase.alphaPhi() = phiAlpha;
+            }
+
+            ++phasei;
+        }
+
+        if (acorr == nAlphaCorr - 1)
+        {
+            volScalarField sumAlpha
+            (
+                IOobject
+                (
+                    "sumAlpha",
+                    mesh_.time().timeName(),
+                    mesh_
+                ),
+                mesh_,
+                dimensionedScalar(dimless, Zero)
+            );
+
+            // Reset rhoPhi
+            rhoPhi_ = dimensionedScalar("rhoPhi", dimMass/dimTime, Zero);
+
+            for (phaseModel& phase : phases_)
+            {
+                volScalarField& alpha1 = phase;
+                sumAlpha += alpha1;
+
+                // Update rhoPhi
+                rhoPhi_ += fvc::interpolate(phase.rho()) * phase.alphaPhi();
+            }
+
+            Info<< "Phase-sum volume fraction, min, max = "
+                << sumAlpha.weightedAverage(mesh_.V()).value()
+                << ' ' << min(sumAlpha).value()
+                << ' ' << max(sumAlpha).value()
+                << endl;
+
+            volScalarField sumCorr(1.0 - sumAlpha);
+
+            for (phaseModel& phase : phases_)
+            {
+                volScalarField& alpha = phase;
+                //alpha += alpha*sumCorr;
+
+                Info<< alpha.name() << " volume fraction = "
+                    << alpha.weightedAverage(mesh.V()).value()
+                    << "  Min(alpha) = " << min(alpha).value()
+                    << "  Max(alpha) = " << max(alpha).value()
+                    << endl;
+            }
+        }
+    }
+}
+
+
+const Foam::UPtrList<Foam::phaseModel>& Foam::multiphaseSystem::phases() const
+{
+    return phases_;
+}
+
+
+Foam::UPtrList<Foam::phaseModel>& Foam::multiphaseSystem::phases()
+{
+    return phases_;
+}
+
+
+const Foam::phaseModel& Foam::multiphaseSystem::phase(const label i) const
+{
+    return phases_[i];
+}
+
+
+Foam::phaseModel& Foam::multiphaseSystem::phase(const label i)
+{
+    return phases_[i];
+}
+
+
+Foam::dimensionedScalar Foam::multiphaseSystem::ddtAlphaMax() const
+{
+    return ddtAlphaMax_;
+}
+
+
+Foam::scalar Foam::multiphaseSystem::maxDiffNo() const
+{
+    auto iter = phaseModels_.cbegin();
+
+    scalar maxVal = max(iter()->diffNo()).value();
+
+    for (++iter; iter != phaseModels_.cend(); ++iter)
+    {
+        maxVal = max(maxVal, max(iter()->diffNo()).value());
+    }
+
+    return maxVal * mesh_.time().deltaT().value();
+}
+
+
+const Foam::multiphaseSystem::compressionFluxTable&
+Foam::multiphaseSystem::limitedPhiAlphas() const
+{
+    return limitedPhiAlphas_;
+}
+
+
+Foam::multiphaseSystem::SuSpTable& Foam::multiphaseSystem::Su()
+{
+    return Su_;
+}
+
+
+Foam::multiphaseSystem::SuSpTable& Foam::multiphaseSystem::Sp()
+{
+    return Sp_;
+}
+
+
+bool Foam::multiphaseSystem::read()
+{
+    return true;
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/phasesSystem/phaseSystem/phaseSystem.C b/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/phasesSystem/phaseSystem/phaseSystem.C
index 9e97e714b87..242d9cadec2 100644
--- a/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/phasesSystem/phaseSystem/phaseSystem.C
+++ b/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/phasesSystem/phaseSystem/phaseSystem.C
@@ -5,7 +5,7 @@
     \\  /    A nd           | www.openfoam.com
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
-    Copyright (C) 2017-2019 OpenCFD Ltd.
+    Copyright (C) 2017-2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -55,6 +55,12 @@ const Foam::word Foam::phaseSystem::phasePropertiesName("phaseProperties");
 
 // * * * * * * * * * * * * Protected Member Functions  * * * * * * * * * * * //
 
+void Foam::phaseSystem::calcMu()
+{
+    mu_ = mu()();
+}
+
+
 Foam::phaseSystem::phaseModelTable
 Foam::phaseSystem::generatePhaseModels(const wordList& phaseNames) const
 {
@@ -202,6 +208,18 @@ Foam::phaseSystem::phaseSystem
 :
     basicThermo(mesh, word::null, phasePropertiesName),
     mesh_(mesh),
+    mu_
+    (
+        IOobject
+        (
+            "mu",
+            mesh_.time().timeName(),
+            mesh_
+        ),
+        mesh_,
+        dimensionedScalar(dimViscosity*dimDensity, Zero),
+        calculatedFvPatchScalarField::typeName
+    ),
     phaseNames_(lookup("phases")),
     phi_
     (
@@ -222,9 +240,7 @@ Foam::phaseSystem::phaseSystem
         (
             "rhoPhi",
             mesh_.time().timeName(),
-            mesh_,
-            IOobject::NO_READ,
-            IOobject::NO_WRITE
+            mesh_
         ),
         mesh_,
         dimensionedScalar(dimMass/dimTime, Zero)
@@ -265,6 +281,9 @@ Foam::phaseSystem::phaseSystem
 
     // Total phase pair
     generatePairsTable();
+    
+    // Update mu_
+    calcMu();
 }
 
 
@@ -884,6 +903,8 @@ void Foam::phaseSystem::correct()
     {
         iter()->correct();
     }
+    
+    calcMu();
 }
 
 
diff --git a/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/phasesSystem/phaseSystem/phaseSystem.H b/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/phasesSystem/phaseSystem/phaseSystem.H
index 1b4996ba7e3..d3a17be0ea9 100644
--- a/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/phasesSystem/phaseSystem/phaseSystem.H
+++ b/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/phasesSystem/phaseSystem/phaseSystem.H
@@ -5,7 +5,7 @@
     \\  /    A nd           | www.openfoam.com
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
-    Copyright (C) 2017 OpenCFD Ltd.
+    Copyright (C) 2017-2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -78,6 +78,9 @@ public:
 
 
         typedef HashTable<autoPtr<phaseModel>> phaseModelTable;
+        
+
+        typedef HashTable<volScalarField::Internal> SuSpTable;
 
 
 protected:
@@ -113,6 +116,9 @@ protected:
 
         //- Reference to the mesh
         const fvMesh& mesh_;
+        
+        //- Dynamic viscocity
+        volScalarField mu_;
 
         //- Phase names
         wordList phaseNames_;
@@ -148,6 +154,9 @@ protected:
     // Protected member functions
 
 
+        //- Calculate and return the laminar viscosity
+        void calcMu();
+
         //- Generate the phases
         HashTable<autoPtr<phaseModel>> generatePhaseModels
         (
@@ -501,9 +510,15 @@ public:
         (
             const volScalarField& T
         ) = 0;
-
-        //- Calculate mass transfer
-        //virtual void massTransfer(const volScalarField& T) = 0;
+        
+        //- Return the volumetric rate transfer matrix
+        virtual tmp<fvScalarMatrix> volTransfer
+        (
+            const volScalarField& p
+        ) = 0;
+        
+        //- Calculate mass transfer for alpha's
+        virtual void alphaTransfer(SuSpTable& Su, SuSpTable& Sp) = 0;
 
         //- Calculate mass transfer for species
         virtual void massSpeciesTransfer
@@ -522,6 +537,9 @@ public:
 
         //- Correct the mixture thermos
         virtual void correct();
+        
+        //- Correct mass sources
+        virtual void correctMassSources(const volScalarField& T) = 0;
 
         //- Return the name of the thermo physics
         virtual word thermoName() const
@@ -531,7 +549,7 @@ public:
         }
 
         //- Correct the turbulence
-        // (NOTE: Each phase could help its own turbulence)
+        // (NOTE: Each phase could have its own turbulence)
         virtual void correctTurbulence();
 
         //- Read base phaseProperties dictionary
diff --git a/applications/solvers/multiphase/interCondensatingEvaporatingFoam/Make/options b/applications/solvers/multiphase/interCondensatingEvaporatingFoam/Make/options
index 3f2792391d8..b7f1e28a140 100644
--- a/applications/solvers/multiphase/interCondensatingEvaporatingFoam/Make/options
+++ b/applications/solvers/multiphase/interCondensatingEvaporatingFoam/Make/options
@@ -1,13 +1,18 @@
-interPhaseChangePath = $(FOAM_SOLVERS)/multiphase/interPhaseChangeFoam
+interPhaseChangeFoam = $(FOAM_SOLVERS)/multiphase/interPhaseChangeFoam
+interFoam = $(FOAM_SOLVERS)/multiphase/interFoam
+VoF = $(FOAM_SOLVERS)/multiphase/VoF
 
 EXE_INC = \
     -I. \
+    -I$(interPhaseChangeFoam) \
+    -I$(interFoam) \
+    -I$(VoF) \
     -ItemperaturePhaseChangeTwoPhaseMixtures/lnInclude \
-    -I$(interPhaseChangePath) \
     -I$(LIB_SRC)/finiteVolume/lnInclude \
     -I$(LIB_SRC)/fvOptions/lnInclude\
     -I$(LIB_SRC)/meshTools/lnInclude \
     -I$(LIB_SRC)/sampling/lnInclude \
+    -I$(LIB_SRC)/dynamicFvMesh/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
     -I$(LIB_SRC)/transportModels \
     -I$(LIB_SRC)/transportModels/twoPhaseMixture/lnInclude \
@@ -21,6 +26,7 @@ EXE_LIBS = \
     -lfvOptions \
     -lmeshTools \
     -lsampling \
+    -ldynamicFvMesh \
     -lphaseTemperatureChangeTwoPhaseMixtures \
     -ltwoPhaseMixture \
     -linterfaceProperties \
@@ -29,3 +35,5 @@ EXE_LIBS = \
     -lturbulenceModels \
     -lincompressibleTurbulenceModels \
     -lfluidThermophysicalModels
+
+    
diff --git a/applications/solvers/multiphase/interCondensatingEvaporatingFoam/TEqn.H b/applications/solvers/multiphase/interCondensatingEvaporatingFoam/TEqn.H
index b570a71d80d..66eeb0e86cb 100644
--- a/applications/solvers/multiphase/interCondensatingEvaporatingFoam/TEqn.H
+++ b/applications/solvers/multiphase/interCondensatingEvaporatingFoam/TEqn.H
@@ -1,18 +1,19 @@
 {
     tmp<volScalarField> tcp(thermo->Cp());
     const volScalarField& cp = tcp();
+    
+    const dimensionedScalar Cp1 = thermo->Cp1();
+    const dimensionedScalar Cp2 = thermo->Cp2();
 
     rhoCp = rho*cp;
 
     kappaEff = thermo->kappa() + rho*cp*turbulence->nut()/Prt;
-
-    const surfaceScalarField rhoCpPhi(fvc::interpolate(cp)*rhoPhi);
-
-    Pair<tmp<volScalarField>> vDotAlphal = mixture->mDot();
-
-    const volScalarField& vDotcAlphal = vDotAlphal[0]();
-    const volScalarField& vDotvAlphal = vDotAlphal[1]();
-    const volScalarField vDotvmcAlphal(vDotvAlphal - vDotcAlphal);
+    
+    const surfaceScalarField rhoCpPhi
+    (
+        "rhoCpPhi",
+        rhoPhi*(Cp1 - Cp2) + phi*rho2*Cp2
+    );
 
     fvScalarMatrix TEqn
     (
@@ -20,7 +21,7 @@
        + fvm::div(rhoCpPhi, T)
        - fvm::Sp(fvc::ddt(rhoCp) + fvc::div(rhoCpPhi), T)
        - fvm::laplacian(kappaEff, T)
-       + thermo->hc()*vDotvmcAlphal
+       + mixture->TSource()
     );
 
 
diff --git a/applications/solvers/multiphase/interCondensatingEvaporatingFoam/alphaCourantNo.H b/applications/solvers/multiphase/interCondensatingEvaporatingFoam/alphaCourantNo.H
new file mode 100644
index 00000000000..4543f985166
--- /dev/null
+++ b/applications/solvers/multiphase/interCondensatingEvaporatingFoam/alphaCourantNo.H
@@ -0,0 +1,59 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           |
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+                            | Copyright (C) 2011-2017 OpenFOAM Foundation
+-------------------------------------------------------------------------------
+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
+    alphaCourantNo
+
+Description
+    Calculates and outputs the mean and maximum Courant Numbers.
+
+\*---------------------------------------------------------------------------*/
+
+scalar maxAlphaCo
+(
+    runTime.controlDict().get<scalar>("maxAlphaCo")
+);
+
+scalar alphaCoNum = 0.0;
+scalar meanAlphaCoNum = 0.0;
+
+if (mesh.nInternalFaces())
+{
+    scalarField sumPhi
+    (
+        interface.nearInterface()().primitiveField()
+       *fvc::surfaceSum(mag(phi))().primitiveField()
+    );
+
+    alphaCoNum = 0.5*gMax(sumPhi/mesh.V().field())*runTime.deltaTValue();
+
+    meanAlphaCoNum =
+        0.5*(gSum(sumPhi)/gSum(mesh.V().field()))*runTime.deltaTValue();
+}
+
+Info<< "Interface Courant Number mean: " << meanAlphaCoNum
+    << " max: " << alphaCoNum << endl;
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/interCondensatingEvaporatingFoam/createFields.H b/applications/solvers/multiphase/interCondensatingEvaporatingFoam/createFields.H
index f0de2deffd4..7b2272b81bf 100644
--- a/applications/solvers/multiphase/interCondensatingEvaporatingFoam/createFields.H
+++ b/applications/solvers/multiphase/interCondensatingEvaporatingFoam/createFields.H
@@ -61,6 +61,20 @@ volScalarField rho
 );
 rho.oldTime();
 
+// Mass flux
+surfaceScalarField rhoPhi
+(
+    IOobject
+    (
+        "rhoPhi",
+        runTime.timeName(),
+        mesh,
+        IOobject::NO_READ,
+        IOobject::NO_WRITE
+    ),
+    fvc::interpolate(rho)*phi
+);
+
 // Construct interface from alpha1 distribution
 interfaceProperties interface
 (
@@ -106,6 +120,24 @@ if (p_rgh.needReference())
 mesh.setFluxRequired(p_rgh.name());
 mesh.setFluxRequired(alpha1.name());
 
+// MULES compressed flux is registered in case scalarTransport FO needs it.
+surfaceScalarField alphaPhiUn
+(
+    IOobject
+    (
+        "alphaPhiUn",
+        runTime.timeName(),
+        mesh,
+        IOobject::NO_READ,
+        IOobject::NO_WRITE
+    ),
+    mesh,
+    dimensionedScalar(phi.dimensions(), Zero)
+);
+
+#include "createMRF.H"
+#include "createFvOptions.H"
+
 // Turbulent Prandtl number
 dimensionedScalar Prt("Prt", dimless, thermo->transportPropertiesDict());
 
diff --git a/applications/solvers/multiphase/interCondensatingEvaporatingFoam/interCondensatingEvaporatingFoam.C b/applications/solvers/multiphase/interCondensatingEvaporatingFoam/interCondensatingEvaporatingFoam.C
index cae14408b15..9fad2b220b8 100644
--- a/applications/solvers/multiphase/interCondensatingEvaporatingFoam/interCondensatingEvaporatingFoam.C
+++ b/applications/solvers/multiphase/interCondensatingEvaporatingFoam/interCondensatingEvaporatingFoam.C
@@ -5,7 +5,7 @@
     \\  /    A nd           | www.openfoam.com
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
-    Copyright (C) 2016-2019 OpenCFD Ltd.
+    Copyright (C) 2016-2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -43,7 +43,11 @@ Description
 \*---------------------------------------------------------------------------*/
 
 #include "fvCFD.H"
+#include "dynamicFvMesh.H"
 #include "CMULES.H"
+#include "EulerDdtScheme.H"
+#include "localEulerDdtScheme.H"
+#include "CrankNicolsonDdtScheme.H"
 #include "subCycle.H"
 #include "interfaceProperties.H"
 #include "twoPhaseMixtureEThermo.H"
@@ -52,7 +56,8 @@ Description
 #include "turbulenceModel.H"
 #include "pimpleControl.H"
 #include "fvOptions.H"
-#include "fixedFluxPressureFvPatchScalarField.H"
+#include "CorrectPhi.H"
+
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -72,11 +77,14 @@ int main(int argc, char *argv[])
     #include "addCheckCaseOptions.H"
     #include "setRootCaseLists.H"
     #include "createTime.H"
-    #include "createMesh.H"
-    #include "createControl.H"
+    #include "createDynamicFvMesh.H"
+    #include "initContinuityErrs.H"
+    #include "createDyMControls.H"
     #include "createFields.H"
-    #include "createFvOptions.H"
-    #include "createTimeControls.H"
+    #include "createAlphaFluxes.H"
+    #include "initCorrectPhi.H"
+    #include "createUfIfPresent.H"
+    
     #include "CourantNo.H"
     #include "setInitialDeltaT.H"
 
@@ -90,9 +98,19 @@ int main(int argc, char *argv[])
 
     while (runTime.run())
     {
-        #include "createTimeControls.H"
-        #include "CourantNo.H"
-        #include "setDeltaT.H"
+        #include "readDyMControls.H"
+        
+        // Store divU from the previous mesh so that it can be mapped
+        // and used in correctPhi to ensure the corrected phi has the
+        // same divergence
+
+        volScalarField divU("divU", fvc::div(fvc::absolute(phi, U)));
+        
+        {
+            #include "CourantNo.H"
+            #include "alphaCourantNo.H"
+            #include "setDeltaT.H"
+        }
 
         ++runTime;
 
@@ -101,28 +119,53 @@ int main(int argc, char *argv[])
         // --- Pressure-velocity PIMPLE corrector loop
         while (pimple.loop())
         {
-            #include "alphaControls.H"
+            if (pimple.firstIter() || moveMeshOuterCorrectors)
+            {
+                mesh.update();
+
+                if (mesh.changing())
+                {
+                    // Do not apply previous time-step mesh compression flux
+                    // if the mesh topology changed
+                    if (mesh.topoChanging())
+                    {
+                        talphaPhi1Corr0.clear();
+                    }
+
+                    gh = (g & mesh.C()) - ghRef;
+                    ghf = (g & mesh.Cf()) - ghRef;
 
-            surfaceScalarField rhoPhi
-            (
-                IOobject
-                (
-                    "rhoPhi",
-                    runTime.timeName(),
-                    mesh
-                ),
-                mesh,
-                dimensionedScalar(dimMass/dimTime, Zero)
-            );
+                    MRF.update();
 
+                    if (correctPhi)
+                    {
+                        // Calculate absolute flux
+                        // from the mapped surface velocity
+                        phi = mesh.Sf() & Uf();
+
+                        #include "correctPhi.H"
+
+                        // Make the flux relative to the mesh motion
+                        fvc::makeRelative(phi, U);
+
+                        interface.correct();
+                    }
+
+                    if (checkMeshCourantNo)
+                    {
+                        #include "meshCourantNo.H"
+                    }
+                }
+            }
+            
             mixture->correct();
 
+            #include "alphaControls.H"
             #include "alphaEqnSubCycle.H"
 
-            solve(fvm::ddt(rho) + fvc::div(rhoPhi));
             #include "UEqn.H"
             #include "TEqn.H"
-
+            
             // --- Pressure corrector loop
             while (pimple.correct())
             {
diff --git a/applications/solvers/multiphase/interCondensatingEvaporatingFoam/pEqn.H b/applications/solvers/multiphase/interCondensatingEvaporatingFoam/pEqn.H
index 5c7eec6d3c5..88ee90883a2 100644
--- a/applications/solvers/multiphase/interCondensatingEvaporatingFoam/pEqn.H
+++ b/applications/solvers/multiphase/interCondensatingEvaporatingFoam/pEqn.H
@@ -33,7 +33,8 @@
         (
             fvc::div(phiHbyA)
           - fvm::laplacian(rAUf, p_rgh)
-          - (vDotc - vDotv)
+          ==
+            vDotv - vDotc
         );
 
         p_rghEqn.setReference(pRefCell, pRefValue);
diff --git a/applications/solvers/multiphase/interCondensatingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/Make/files b/applications/solvers/multiphase/interCondensatingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/Make/files
index 407c6046553..3944b9edb1e 100644
--- a/applications/solvers/multiphase/interCondensatingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/Make/files
+++ b/applications/solvers/multiphase/interCondensatingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/Make/files
@@ -3,5 +3,6 @@ temperaturePhaseChangeTwoPhaseMixtures/temperaturePhaseChangeTwoPhaseMixture.C
 thermoIncompressibleTwoPhaseMixture/thermoIncompressibleTwoPhaseMixture.C
 twoPhaseMixtureEThermo/twoPhaseMixtureEThermo.C
 constant/constant.C
+interfaceHeatResistance/interfaceHeatResistance.C
 
 LIB = $(FOAM_LIBBIN)/libphaseTemperatureChangeTwoPhaseMixtures
diff --git a/applications/solvers/multiphase/interCondensatingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/constant/constant.C b/applications/solvers/multiphase/interCondensatingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/constant/constant.C
index c8de08eba14..6350420fe54 100644
--- a/applications/solvers/multiphase/interCondensatingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/constant/constant.C
+++ b/applications/solvers/multiphase/interCondensatingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/constant/constant.C
@@ -5,7 +5,7 @@
     \\  /    A nd           | www.openfoam.com
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
-    Copyright (C) 2016 OpenCFD Ltd.
+    Copyright (C) 2016-2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -29,6 +29,7 @@ License
 #include "addToRunTimeSelectionTable.H"
 #include "fvcGrad.H"
 #include "twoPhaseMixtureEThermo.H"
+#include "fvmSup.H"
 
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
@@ -57,11 +58,15 @@ Foam::temperaturePhaseChangeTwoPhaseMixtures::constant::constant
     temperaturePhaseChangeTwoPhaseMixture(mixture, mesh),
     coeffC_
     (
-        "coeffC", dimless/dimTime/dimTemperature, subDict(type() + "Coeffs")
+        "coeffC", 
+        dimless/dimTime/dimTemperature, 
+        optionalSubDict(type() + "Coeffs")
     ),
     coeffE_
     (
-        "coeffE", dimless/dimTime/dimTemperature, subDict(type() + "Coeffs")
+        "coeffE", 
+        dimless/dimTime/dimTemperature, 
+        optionalSubDict(type() + "Coeffs")
     )
 {}
 
@@ -85,8 +90,8 @@ Foam::temperaturePhaseChangeTwoPhaseMixtures::constant::mDotAlphal() const
 
     return Pair<tmp<volScalarField>>
     (
-        coeffC_*mixture_.rho2()*max(TSat - T.oldTime(), T0),
-       -coeffE_*mixture_.rho1()*max(T.oldTime() - TSat, T0)
+        coeffC_*mixture_.rho2()*max(TSat - T, T0),
+       -coeffE_*mixture_.rho1()*max(T - TSat, T0)
     );
 }
 
@@ -116,11 +121,20 @@ Foam::temperaturePhaseChangeTwoPhaseMixtures::constant::mDot() const
     const dimensionedScalar& TSat = thermo.TSat();
 
     const dimensionedScalar T0(dimTemperature, Zero);
+    
+    if (mesh_.time().outputTime())
+    {
+        volScalarField mDot
+        (
+            "mDot", coeffE_*mixture_.rho1()*limitedAlpha1*max(T - TSat, T0)
+        );
+        mDot.write();
+    }
 
     return Pair<tmp<volScalarField>>
     (
-        coeffC_*mixture_.rho2()*limitedAlpha2*max(TSat - T.oldTime(), T0),
-        coeffE_*mixture_.rho1()*limitedAlpha1*max(T.oldTime() - TSat, T0)
+        coeffC_*mixture_.rho2()*limitedAlpha2*max(TSat - T, T0),
+       -coeffE_*mixture_.rho1()*limitedAlpha1*max(T - TSat, T0)
     );
 }
 
@@ -150,9 +164,63 @@ Foam::temperaturePhaseChangeTwoPhaseMixtures::constant::mDotDeltaT() const
 
     return Pair<tmp<volScalarField>>
     (
-        coeffC_*mixture_.rho2()*limitedAlpha2*pos(TSat - T.oldTime()),
-        coeffE_*mixture_.rho1()*limitedAlpha1*pos(T.oldTime() - TSat)
+        coeffC_*mixture_.rho2()*limitedAlpha2*pos(TSat - T),
+        coeffE_*mixture_.rho1()*limitedAlpha1*pos(T - TSat)
+    );
+}
+
+
+Foam::tmp<Foam::fvScalarMatrix>
+Foam::temperaturePhaseChangeTwoPhaseMixtures::constant::TSource() const
+{
+
+    const volScalarField& T = mesh_.lookupObject<volScalarField>("T");
+
+    tmp<fvScalarMatrix> tTSource
+    (
+        new fvScalarMatrix
+        (
+            T,
+            dimEnergy/dimTime
+        )
+    );
+
+    fvScalarMatrix& TSource = tTSource.ref();
+
+    const twoPhaseMixtureEThermo& thermo =
+        refCast<const twoPhaseMixtureEThermo>
+        (
+            mesh_.lookupObject<basicThermo>(basicThermo::dictName)
+        );
+
+    const dimensionedScalar& TSat = thermo.TSat();
+    
+    dimensionedScalar L = mixture_.Hf2() - mixture_.Hf1();
+    
+    volScalarField limitedAlpha1
+    (
+        min(max(mixture_.alpha1(), scalar(0)), scalar(1))
     );
+
+    volScalarField limitedAlpha2
+    (
+        min(max(mixture_.alpha2(), scalar(0)), scalar(1))
+    );
+   
+    const volScalarField Vcoeff
+    (
+        coeffE_*mixture_.rho1()*limitedAlpha1*L
+    );
+    const volScalarField Ccoeff
+    (
+        coeffC_*mixture_.rho2()*limitedAlpha2*L
+    );
+
+    TSource = 
+        fvm::Sp(Vcoeff, T) - Vcoeff*TSat
+      - fvm::Sp(Ccoeff, T) + Ccoeff*TSat;
+
+    return tTSource;
 }
 
 
diff --git a/applications/solvers/multiphase/interCondensatingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/constant/constant.H b/applications/solvers/multiphase/interCondensatingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/constant/constant.H
index 9ea7fdb67b2..87d226c1f1e 100644
--- a/applications/solvers/multiphase/interCondensatingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/constant/constant.H
+++ b/applications/solvers/multiphase/interCondensatingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/constant/constant.H
@@ -98,6 +98,9 @@ public:
         //  coefficient to multiply (Tsat - T) for the condensation rate
         //  and a coefficient to multiply  (T - Tsat) for the vaporisation rate
         virtual Pair<tmp<volScalarField>> mDotDeltaT() const;
+        
+        //- Source for T equarion
+        virtual tmp<fvScalarMatrix> TSource() const;
 
         //- Correct the constant phaseChange model
         virtual void correct();
diff --git a/applications/solvers/multiphase/interCondensatingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/interfaceHeatResistance/interfaceHeatResistance.C b/applications/solvers/multiphase/interCondensatingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/interfaceHeatResistance/interfaceHeatResistance.C
new file mode 100644
index 00000000000..468cf05c996
--- /dev/null
+++ b/applications/solvers/multiphase/interCondensatingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/interfaceHeatResistance/interfaceHeatResistance.C
@@ -0,0 +1,409 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | www.openfoam.com
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+    Copyright (C) 2020 OpenCFD Ltd.
+    Copyright (C) 2020 Henning Scheufler
+-------------------------------------------------------------------------------
+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 "interfaceHeatResistance.H"
+#include "addToRunTimeSelectionTable.H"
+#include "twoPhaseMixtureEThermo.H"
+#include "isoCutCell.H"
+#include "volPointInterpolation.H"
+#include "calculatedFvPatchFields.H"
+#include "wallPolyPatch.H"
+#include "fvcSmooth.H"
+#include "fvmSup.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace temperaturePhaseChangeTwoPhaseMixtures
+{
+    defineTypeNameAndDebug(interfaceHeatResistance, 0);
+    addToRunTimeSelectionTable
+    (
+        temperaturePhaseChangeTwoPhaseMixture,
+        interfaceHeatResistance,
+        components
+    );
+}
+}
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::temperaturePhaseChangeTwoPhaseMixtures::interfaceHeatResistance::
+interfaceHeatResistance
+(
+    const thermoIncompressibleTwoPhaseMixture& mixture,
+    const fvMesh& mesh
+)
+:
+    temperaturePhaseChangeTwoPhaseMixture(mixture, mesh),
+    R_
+    (
+        "R", 
+        dimPower/dimArea/dimTemperature, optionalSubDict(type() + "Coeffs")
+    ),
+    
+    interfaceArea_
+    (
+        IOobject
+        (
+            "interfaceArea",
+            mesh_.time().timeName(),
+            mesh_,
+            IOobject::NO_READ,
+            IOobject::AUTO_WRITE
+        ),
+        mesh_,
+        dimensionedScalar(dimless/dimLength, Zero)
+    ),
+    
+    mDotc_
+    (
+        IOobject
+        (
+            "mDotc",
+            mesh_.time().timeName(),
+            mesh_,
+            IOobject::NO_READ,
+            IOobject::AUTO_WRITE
+        ),
+        mesh_,
+        dimensionedScalar(dimDensity/dimTime, Zero)
+    ),
+    
+    mDote_
+    (
+        IOobject
+        (
+            "mDote",
+            mesh_.time().timeName(),
+            mesh_,
+            IOobject::NO_READ,
+            IOobject::AUTO_WRITE
+        ),
+        mesh_,
+        dimensionedScalar(dimDensity/dimTime, Zero)
+    ),
+    
+    spread_
+    (
+        optionalSubDict(type() + "Coeffs").get<scalar>("spread")
+    )
+{
+    correct();
+}
+
+
+// * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * * //
+
+Foam::Pair<Foam::tmp<Foam::volScalarField>>
+Foam::temperaturePhaseChangeTwoPhaseMixtures::interfaceHeatResistance::
+vDotAlphal() const
+{
+    dimensionedScalar alphalCoeff(1.0/mixture_.rho1());
+
+    return Pair<tmp<volScalarField>>
+    (
+        (alphalCoeff*mDotc_)/(mixture_.alpha2() + SMALL),
+       -(alphalCoeff*mDote_)/(mixture_.alpha1() + SMALL)
+    );
+}
+
+
+Foam::Pair<Foam::tmp<Foam::volScalarField>>
+Foam::temperaturePhaseChangeTwoPhaseMixtures::interfaceHeatResistance::
+mDotAlphal() const
+{
+    volScalarField limitedAlpha1
+    (
+        min(max(mixture_.alpha1(), scalar(0)), scalar(1))
+    );
+
+    volScalarField limitedAlpha2
+    (
+        min(max(mixture_.alpha2(), scalar(0)), scalar(1))
+    );
+    
+    return Pair<tmp<volScalarField>>
+    (
+        (mDotc_/(limitedAlpha2 + SMALL)),
+       -(mDote_/(limitedAlpha1 + SMALL))
+    );
+}
+
+
+Foam::Pair<Foam::tmp<Foam::volScalarField>>
+Foam::temperaturePhaseChangeTwoPhaseMixtures::interfaceHeatResistance::
+mDot() const
+{
+    
+    return Pair<tmp<volScalarField>>
+    (
+        tmp<volScalarField>(mDotc_), 
+        tmp<volScalarField>(mDote_)
+    );
+}
+
+
+Foam::Pair<Foam::tmp<Foam::volScalarField>>
+Foam::temperaturePhaseChangeTwoPhaseMixtures::interfaceHeatResistance::
+mDotDeltaT() const
+{
+   const twoPhaseMixtureEThermo& thermo =
+        refCast<const twoPhaseMixtureEThermo>
+        (
+            mesh_.lookupObject<basicThermo>(basicThermo::dictName)
+        );
+        
+    const volScalarField& T = mesh_.lookupObject<volScalarField>("T");
+
+    const dimensionedScalar& TSat = thermo.TSat();
+
+    Pair<tmp<volScalarField>> mDotce(mDot());
+    
+    return Pair<tmp<volScalarField>>
+    (
+        mDotc_*pos(TSat - T.oldTime())/(TSat - T.oldTime()),
+       -mDote_*pos(T.oldTime() - TSat)/(T.oldTime() - TSat)
+    );
+
+    
+}
+
+
+Foam::tmp<Foam::fvScalarMatrix>
+Foam::temperaturePhaseChangeTwoPhaseMixtures::interfaceHeatResistance::
+TSource() const
+{
+
+    const volScalarField& T = mesh_.lookupObject<volScalarField>("T");
+
+    tmp<fvScalarMatrix> tTSource
+    (
+        new fvScalarMatrix
+        (
+            T,
+            dimEnergy/dimTime
+        )
+    );
+
+    fvScalarMatrix& TSource = tTSource.ref();
+
+    const twoPhaseMixtureEThermo& thermo =
+        refCast<const twoPhaseMixtureEThermo>
+        (
+            mesh_.lookupObject<basicThermo>(basicThermo::dictName)
+        );
+
+    const dimensionedScalar& TSat = thermo.TSat();
+   
+    // interface heat resistance
+    volScalarField IHRcoeff = interfaceArea_*R_;
+
+    TSource = fvm::Sp(IHRcoeff, T) - IHRcoeff*TSat;
+
+    return tTSource;
+}
+
+
+void Foam::temperaturePhaseChangeTwoPhaseMixtures::interfaceHeatResistance::
+correct()
+{
+   
+    // Update Interface
+    updateInterface();
+    
+    // Update mDotc_ and mDote_
+    const volScalarField& T = mesh_.lookupObject<volScalarField>("T");
+
+    const twoPhaseMixtureEThermo& thermo =
+        refCast<const twoPhaseMixtureEThermo>
+        (
+            mesh_.lookupObject<basicThermo>(basicThermo::dictName)
+        );
+
+    const dimensionedScalar& TSat = thermo.TSat();
+    const dimensionedScalar T0(dimTemperature, Zero);
+
+    dimensionedScalar L = mixture_.Hf2() - mixture_.Hf1();
+   
+    // interface heat resistance
+    mDotc_ = interfaceArea_*R_*max(TSat - T, T0)/L;
+    mDote_ = interfaceArea_*R_*(T - TSat)/L;
+       
+    forAll(mDotc_, celli)
+    {
+        scalar rhobyDt = mixture_.rho1().value()/mesh_.time().deltaTValue();
+        scalar maxEvap = mixture_.alpha1()[celli]*rhobyDt; // positive
+        scalar maxCond = -mixture_.alpha2()[celli]*rhobyDt; // negative 
+        mDote_[celli] = min(max(mDote_[celli], maxCond), maxEvap);
+        mDotc_[celli] = min(max(mDotc_[celli], maxCond), maxEvap);
+    }
+}
+
+
+void Foam::temperaturePhaseChangeTwoPhaseMixtures::interfaceHeatResistance::
+updateInterface()
+{
+    const volScalarField& T = mesh_.lookupObject<volScalarField>("T");
+    const twoPhaseMixtureEThermo& thermo =
+    refCast<const twoPhaseMixtureEThermo>
+    (
+        mesh_.lookupObject<basicThermo>(basicThermo::dictName)
+    );
+
+    const dimensionedScalar& TSat = thermo.TSat();
+   
+    // interface heat resistance
+    // Interpolating alpha1 cell centre values to mesh points (vertices)
+    scalarField ap
+    (
+        volPointInterpolation::New(mesh_).interpolate(mixture_.alpha1())
+    );
+
+    isoCutCell cutCell(mesh_, ap);
+
+    forAll(interfaceArea_, celli)
+    {
+        label status = cutCell.calcSubCell(celli, 0.5);
+        interfaceArea_[celli] = 0;
+        if (status == 0) // cell is cut
+        {
+            interfaceArea_[celli] = 
+                mag(cutCell.isoFaceArea())/mesh_.V()[celli];
+        }
+    }
+
+    const polyBoundaryMesh& pbm = mesh_.boundaryMesh();
+
+    forAll(pbm, patchi)
+    {
+        if (isA<wallPolyPatch>(pbm[patchi]))
+        {
+            const polyPatch& pp = pbm[patchi];
+            forAll(pp.faceCells(),i)
+            {
+                const label pCelli = pp.faceCells()[i];
+ 
+                if
+                (
+                    (TSat.value() - T[pCelli]) > 0 
+                  && mixture_.alpha1()[pCelli] < 0.9
+                )
+                {
+                    interfaceArea_[pCelli] = 
+                        mag(pp.faceAreas()[i])/mesh_.V()[pCelli];
+                }
+            }
+        }
+    }
+}
+
+Foam::Pair<Foam::tmp<Foam::volScalarField>>
+Foam::temperaturePhaseChangeTwoPhaseMixtures::interfaceHeatResistance::
+vDot() const
+{
+
+    dimensionedScalar D
+    (
+        "D", 
+        dimArea, 
+        spread_/sqr(gAverage(mesh_.nonOrthDeltaCoeffs()))
+    );
+    
+   
+    const volScalarField& alpha1 = mixture_.alpha1();
+    const volScalarField& alpha2 = mixture_.alpha2();
+    
+    const dimensionedScalar MDotMin("MdotMin", mDotc_.dimensions(), 1e-3);
+    
+    Pair<tmp<volScalarField>> mDotSpread
+    (
+        tmp<volScalarField>(mDotc_*0.0), 
+        tmp<volScalarField>(mDote_*0.0)
+    );
+    
+    if (max(mDotc_) > MDotMin)
+    {
+        fvc::spreadSource
+        (
+            mDotSpread[0].ref(),
+            mDotc_,
+            alpha1,
+            alpha2,
+            D,
+            1e-3
+        );
+    }
+
+    if (max(mDote_) > MDotMin)
+    {
+        fvc::spreadSource
+        (
+            mDotSpread[1].ref(),
+            mDote_,
+            alpha1,
+            alpha2,
+            D,
+            1e-3
+        );
+    }
+    
+    dimensionedScalar pCoeff(1.0/mixture_.rho1() - 1.0/mixture_.rho2());
+    
+    if (mesh_.time().outputTime())
+    {
+        volScalarField mDotS("mDotSpread", mDotSpread[1].ref());
+        mDotS.write();
+    }
+    
+    return Pair<tmp<volScalarField>>
+    (
+        pCoeff*mDotSpread[0], 
+       -pCoeff*mDotSpread[1]
+    );
+}
+
+
+
+bool Foam::temperaturePhaseChangeTwoPhaseMixtures::interfaceHeatResistance::
+read()
+{
+    if (temperaturePhaseChangeTwoPhaseMixture::read())
+    {
+        optionalSubDict(type() + "Coeffs").readEntry("R", R_);
+        optionalSubDict(type() + "Coeffs").readEntry("spread", spread_);
+
+        return true;
+    }
+
+    return false;
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/interCondensatingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/interfaceHeatResistance/interfaceHeatResistance.H b/applications/solvers/multiphase/interCondensatingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/interfaceHeatResistance/interfaceHeatResistance.H
new file mode 100644
index 00000000000..836f5a6f729
--- /dev/null
+++ b/applications/solvers/multiphase/interCondensatingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/interfaceHeatResistance/interfaceHeatResistance.H
@@ -0,0 +1,155 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | www.openfoam.com
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+    Copyright (C) 2020 OpenCFD Ltd.
+    Copyright (C) 2020 Henning Scheufler
+-------------------------------------------------------------------------------
+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::phaseChangeTwoPhaseMixtures::interfaceHeatResistance
+
+Description
+    Interface Heat Resistance type of condensation/saturation model using 
+    spread source distribution following:
+    
+    References:
+    \verbatim
+        Hardt, S., Wondra, F. (2008).
+        Evaporation model for interfacial flows based on a continuum-
+        field representation of the source term
+        Journal of Computational Physics 227 (2008), 5871-5895
+    \endverbatim
+
+
+
+SourceFiles
+    interfaceHeatResistance.C
+
+\*--------------------------------------------------------------------*/
+
+#ifndef interfaceHeatResistance_H
+#define interfaceHeatResistance_H
+
+#include "temperaturePhaseChangeTwoPhaseMixture.H"
+
+// * * * * * * * * * * * * * * * * *  * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace temperaturePhaseChangeTwoPhaseMixtures
+{
+
+/*--------------------------------------------------------------------*\
+                    Class interfaceHeatResistance
+\*--------------------------------------------------------------------*/
+
+class interfaceHeatResistance
+:
+    public temperaturePhaseChangeTwoPhaseMixture
+{
+    // Private data
+
+        //- Heat transfer coefficient [1/s/K]
+        dimensionedScalar R_;
+
+        //- Interface area
+        volScalarField interfaceArea_;
+        
+        //- Mass condensation source
+        volScalarField mDotc_;
+        
+        //- Mass evaporation source
+        volScalarField mDote_;
+              
+        //- Spread for mass source
+        scalar spread_;
+
+        
+    // Private member functions
+
+        //- Update interface area
+        void updateInterface();
+        
+
+public:
+
+    //- Runtime type information
+    TypeName("interfaceHeatResistance");
+
+
+    // Constructors
+
+        //- Construct from components
+        interfaceHeatResistance
+        (
+            const thermoIncompressibleTwoPhaseMixture& mixture,
+            const fvMesh& mesh
+        );
+
+    //- Destructor
+    virtual ~interfaceHeatResistance()
+    {}
+
+
+    // Member Functions
+
+        //- Return the mass condensation and vaporisation rates as a
+        //  coefficient to multiply (1 - alphal) for the condensation rate
+        //  and a coefficient to multiply  alphal for the vaporisation rate
+        virtual Pair<tmp<volScalarField>> mDotAlphal() const;
+
+        //- Return the mass condensation and vaporisation rates as coefficients
+        virtual Pair<tmp<volScalarField>> mDot() const;
+
+        //- Return the mass condensation and vaporisation rates as a
+        //  coefficient to multiply (Tsat - T) for the condensation rate
+        //  and a coefficient to multiply  (T - Tsat) for the vaporisation rate
+        virtual Pair<tmp<volScalarField>> mDotDeltaT() const;
+        
+        //- Source for T equarion
+        virtual tmp<fvScalarMatrix> TSource() const;
+        
+        //- Volumetric source for alpha (used by alphaEq)
+        virtual Pair<tmp<volScalarField>> vDotAlphal() const;
+        
+        //- Return the volumetric condensation and vaporisation rates as
+        //  coefficients (used by p_rghEq)
+        virtual Pair<tmp<volScalarField>> vDot() const;
+        
+        //- Correct the interfaceHeatResistance phaseChange model
+        virtual void correct();
+
+        //- Read the transportProperties dictionary and update
+        virtual bool read();
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace temperaturePhaseChangeTwoPhaseMixtures
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/interCondensatingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/temperaturePhaseChangeTwoPhaseMixtures/temperaturePhaseChangeTwoPhaseMixture.C b/applications/solvers/multiphase/interCondensatingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/temperaturePhaseChangeTwoPhaseMixtures/temperaturePhaseChangeTwoPhaseMixture.C
index bdf626c1770..01c057ccf5a 100644
--- a/applications/solvers/multiphase/interCondensatingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/temperaturePhaseChangeTwoPhaseMixtures/temperaturePhaseChangeTwoPhaseMixture.C
+++ b/applications/solvers/multiphase/interCondensatingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/temperaturePhaseChangeTwoPhaseMixtures/temperaturePhaseChangeTwoPhaseMixture.C
@@ -5,7 +5,7 @@
     \\  /    A nd           | www.openfoam.com
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
-    Copyright (C) 2016-2019 OpenCFD Ltd.
+    Copyright (C) 2016-2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -68,7 +68,7 @@ temperaturePhaseChangeTwoPhaseMixture
 
 Foam::Pair<Foam::tmp<Foam::volScalarField>>
 Foam::temperaturePhaseChangeTwoPhaseMixture::vDotAlphal() const
-{
+{ 
     volScalarField alphalCoeff
     (
         1.0/mixture_.rho1() - mixture_.alpha1()
diff --git a/applications/solvers/multiphase/interCondensatingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/temperaturePhaseChangeTwoPhaseMixtures/temperaturePhaseChangeTwoPhaseMixture.H b/applications/solvers/multiphase/interCondensatingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/temperaturePhaseChangeTwoPhaseMixtures/temperaturePhaseChangeTwoPhaseMixture.H
index 39fa3430afa..8f14c82c962 100644
--- a/applications/solvers/multiphase/interCondensatingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/temperaturePhaseChangeTwoPhaseMixtures/temperaturePhaseChangeTwoPhaseMixture.H
+++ b/applications/solvers/multiphase/interCondensatingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/temperaturePhaseChangeTwoPhaseMixtures/temperaturePhaseChangeTwoPhaseMixture.H
@@ -5,7 +5,7 @@
     \\  /    A nd           | www.openfoam.com
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
-    Copyright (C) 2016-2019 OpenCFD Ltd.
+    Copyright (C) 2016-2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -42,6 +42,7 @@ SourceFiles
 #include "runTimeSelectionTables.H"
 #include "volFields.H"
 #include "dimensionedScalar.H"
+#include "fvMatrices.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -140,15 +141,18 @@ public:
         //  coefficient to multiply (Tsat - T) for the condensation rate
         //  and a coefficient to multiply  (T - Tsat) for the vaporisation rate
         virtual Pair<tmp<volScalarField>> mDotDeltaT() const = 0;
+        
+        //- Source for T equarion
+        virtual tmp<fvScalarMatrix> TSource() const = 0;
 
         //- Return the volumetric condensation and vaporisation rates as a
         //  coefficient to multiply (1 - alphal) for the condensation rate
         //  and a coefficient to multiply  alphal for the vaporisation rate
-        Pair<tmp<volScalarField>> vDotAlphal() const;
+        virtual Pair<tmp<volScalarField>> vDotAlphal() const;
 
         //- Return the volumetric condensation and vaporisation rates as
         //  coefficients
-        Pair<tmp<volScalarField>> vDot() const;
+        virtual Pair<tmp<volScalarField>> vDot() const;
 
         //- Correct the phaseChange model
         virtual void correct() = 0;
diff --git a/applications/solvers/multiphase/interCondensatingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/thermoIncompressibleTwoPhaseMixture/thermoIncompressibleTwoPhaseMixture.C b/applications/solvers/multiphase/interCondensatingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/thermoIncompressibleTwoPhaseMixture/thermoIncompressibleTwoPhaseMixture.C
index 130196953e3..249cd5e801c 100644
--- a/applications/solvers/multiphase/interCondensatingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/thermoIncompressibleTwoPhaseMixture/thermoIncompressibleTwoPhaseMixture.C
+++ b/applications/solvers/multiphase/interCondensatingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/thermoIncompressibleTwoPhaseMixture/thermoIncompressibleTwoPhaseMixture.C
@@ -5,7 +5,7 @@
     \\  /    A nd           | www.openfoam.com
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
-    Copyright (C) 2016-2019 OpenCFD Ltd.
+    Copyright (C) 2016-2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
diff --git a/applications/solvers/multiphase/interCondensatingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/thermoIncompressibleTwoPhaseMixture/thermoIncompressibleTwoPhaseMixture.H b/applications/solvers/multiphase/interCondensatingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/thermoIncompressibleTwoPhaseMixture/thermoIncompressibleTwoPhaseMixture.H
index 8da5fb337b7..71a30eab92c 100644
--- a/applications/solvers/multiphase/interCondensatingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/thermoIncompressibleTwoPhaseMixture/thermoIncompressibleTwoPhaseMixture.H
+++ b/applications/solvers/multiphase/interCondensatingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/thermoIncompressibleTwoPhaseMixture/thermoIncompressibleTwoPhaseMixture.H
@@ -5,7 +5,7 @@
     \\  /    A nd           | www.openfoam.com
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
-    Copyright (C) 2016-2019 OpenCFD Ltd.
+    Copyright (C) 2016-2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
diff --git a/applications/solvers/multiphase/interCondensatingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/twoPhaseMixtureEThermo/twoPhaseMixtureEThermo.C b/applications/solvers/multiphase/interCondensatingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/twoPhaseMixtureEThermo/twoPhaseMixtureEThermo.C
index 6967c5df538..26b975263e6 100644
--- a/applications/solvers/multiphase/interCondensatingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/twoPhaseMixtureEThermo/twoPhaseMixtureEThermo.C
+++ b/applications/solvers/multiphase/interCondensatingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/twoPhaseMixtureEThermo/twoPhaseMixtureEThermo.C
@@ -5,7 +5,7 @@
     \\  /    A nd           | www.openfoam.com
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
-    Copyright (C) 2016-2019 OpenCFD Ltd.
+    Copyright (C) 2016-2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -40,44 +40,6 @@ namespace Foam
     defineTypeNameAndDebug(twoPhaseMixtureEThermo, 0);
 }
 
-// * * * * * * * * * * * * Protected Member Functions  * * * * * * * * * * * //
-
-void Foam::twoPhaseMixtureEThermo::eBoundaryCorrection(volScalarField& h)
-{
-    volScalarField::Boundary& hbf = h.boundaryFieldRef();
-
-    forAll(hbf, patchi)
-    {
-        if (isA<gradientEnergyFvPatchScalarField>(hbf[patchi]))
-        {
-            refCast<gradientEnergyFvPatchScalarField>(hbf[patchi]).gradient()
-                = hbf[patchi].fvPatchField::snGrad();
-        }
-        else if (isA<mixedEnergyFvPatchScalarField>(hbf[patchi]))
-        {
-            refCast<mixedEnergyFvPatchScalarField>(hbf[patchi]).refGrad()
-                = hbf[patchi].fvPatchField::snGrad();
-        }
-    }
-}
-
-
-void Foam::twoPhaseMixtureEThermo::init()
-{
-    const volScalarField alpha1Rho1(alpha1()*rho1());
-    const volScalarField alpha2Rho2(alpha2()*rho2());
-
-    e_ =
-        (
-            (T_ - TSat_)*(alpha1Rho1*Cv1() + alpha2Rho2*Cv2())
-          + (alpha1Rho1*Hf1() + alpha2Rho2*Hf2())
-        )
-       /(alpha1Rho1 + alpha2Rho2);
-
-    e_.correctBoundaryConditions();
-}
-
-
 // * * * * * * * * * * * * * * * * Constructor * * * * * * * * * * * * * * * //
 
 Foam::twoPhaseMixtureEThermo::twoPhaseMixtureEThermo
@@ -89,32 +51,8 @@ Foam::twoPhaseMixtureEThermo::twoPhaseMixtureEThermo
     basicThermo(U.mesh(), word::null),
     thermoIncompressibleTwoPhaseMixture(U, phi),
 
-    e_
-    (
-        volScalarField
-        (
-            IOobject
-            (
-                "e",
-                U.mesh().time().timeName(),
-                U.mesh(),
-                IOobject::NO_READ,
-                IOobject::NO_WRITE
-            ),
-            U.mesh(),
-            dimensionedScalar(dimEnergy/dimMass, Zero),
-            heBoundaryTypes()
-        )
-    ),
-
-    TSat_("TSat", dimTemperature, static_cast<const basicThermo&>(*this)),
-
-    pDivU_(basicThermo::lookupOrDefault<Switch>("pDivU", true))
-
-{
-    // Initialise e
-    init();
-}
+    TSat_("TSat", dimTemperature, static_cast<const basicThermo&>(*this))
+{}
 
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
@@ -122,19 +60,6 @@ Foam::twoPhaseMixtureEThermo::twoPhaseMixtureEThermo
 void Foam::twoPhaseMixtureEThermo::correct()
 {
     incompressibleTwoPhaseMixture::correct();
-
-    const volScalarField alpha1Rho1(alpha1()*rho1());
-    const volScalarField alpha2Rho2(alpha2()*rho2());
-
-    T_ =
-        (
-            (e_*(alpha1Rho1 + alpha2Rho2))
-         -  (alpha1Rho1*Hf1() + alpha2Rho2*Hf2())
-        )
-       /(alpha1Rho1*Cv1() + alpha2Rho2*Cv2())
-       + TSat_;
-
-    T().correctBoundaryConditions();
 }
 
 
@@ -151,15 +76,8 @@ Foam::tmp<Foam::volScalarField> Foam::twoPhaseMixtureEThermo::he
     const volScalarField& T
 ) const
 {
-    const volScalarField alpha1Rho1(alpha1()*rho1());
-    const volScalarField alpha2Rho2(alpha2()*rho2());
-
-    return
-    (
-        (T - TSat_)*(alpha1Rho1*Cv1() + alpha2Rho2*Cv2())
-        + (alpha1Rho1*Hf1() + alpha2Rho2*Hf2())
-    )
-    / (alpha1Rho1 + alpha2Rho2);
+    NotImplemented;
+    return nullptr;
 }
 
 
@@ -170,31 +88,8 @@ Foam::tmp<Foam::scalarField> Foam::twoPhaseMixtureEThermo::he
     const labelList& cells
 ) const
 {
-    tmp<scalarField> the(new scalarField(T.size()));
-    scalarField& he = the.ref();
-
-    const volScalarField alpha1Rho1(alpha1()*rho1());
-    const volScalarField alpha2Rho2(alpha2()*rho2());
-
-    forAll(T, i)
-    {
-        const label celli = cells[i];
-        he[i] =
-            (
-                (T[i] - TSat_.value())
-               *(
-                   alpha1Rho1[celli]*Cv1().value()
-                 + alpha2Rho2[celli]*Cv2().value()
-                )
-              + (
-                    alpha1Rho1[celli]*Hf1().value()
-                  + alpha2Rho2[celli]*Hf2().value()
-                )
-            )
-            / (alpha1Rho1[celli] + alpha2Rho2[celli]);
-    }
-
-    return the;
+    NotImplemented;
+    return nullptr;
 }
 
 
@@ -205,26 +100,8 @@ Foam::tmp<Foam::scalarField> Foam::twoPhaseMixtureEThermo::he
     const label patchi
 ) const
 {
-    const scalarField& alpha1p = alpha1().boundaryField()[patchi];
-    const scalarField& alpha2p = alpha2().boundaryField()[patchi];
-
-    const scalarField& Tp = T_.boundaryField()[patchi];
-
-    return
-    (
-        (
-            (Tp - TSat_.value())
-           *(
-               alpha1p*rho1().value()*Cv1().value()
-             + alpha2p*rho2().value()*Cv2().value()
-            )
-          + (
-               alpha1p*rho1().value()*Hf1().value()
-             + alpha2p*rho2().value()*Hf2().value()
-            )
-        )
-        / (alpha1p*rho1().value() + alpha2p*rho2().value())
-    );
+    NotImplemented;
+    return nullptr;
 }
 
 
@@ -252,7 +129,7 @@ Foam::tmp<Foam::scalarField> Foam::twoPhaseMixtureEThermo::THE
 (
     const scalarField& h,
     const scalarField& p,
-    const scalarField& T0,      // starting temperature
+    const scalarField& T0,
     const labelList& cells
 ) const
 {
@@ -265,7 +142,7 @@ Foam::tmp<Foam::scalarField> Foam::twoPhaseMixtureEThermo::THE
 (
     const scalarField& h,
     const scalarField& p,
-    const scalarField& T0,      // starting temperature
+    const scalarField& T0,
     const label patchi
 ) const
 {
@@ -588,7 +465,6 @@ bool Foam::twoPhaseMixtureEThermo::read()
 {
     if (basicThermo::read() && thermoIncompressibleTwoPhaseMixture::read())
     {
-        basicThermo::readIfPresent("pDivU", pDivU_);
         basicThermo::readEntry("TSat", TSat_);
         return true;
     }
diff --git a/applications/solvers/multiphase/interCondensatingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/twoPhaseMixtureEThermo/twoPhaseMixtureEThermo.H b/applications/solvers/multiphase/interCondensatingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/twoPhaseMixtureEThermo/twoPhaseMixtureEThermo.H
index de841fe63b1..d798857aace 100644
--- a/applications/solvers/multiphase/interCondensatingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/twoPhaseMixtureEThermo/twoPhaseMixtureEThermo.H
+++ b/applications/solvers/multiphase/interCondensatingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/twoPhaseMixtureEThermo/twoPhaseMixtureEThermo.H
@@ -5,7 +5,7 @@
     \\  /    A nd           | www.openfoam.com
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
-    Copyright (C) 2016 OpenCFD Ltd.
+    Copyright (C) 2016-2020 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -27,10 +27,6 @@ Class
     Foam::twoPhaseMixtureEThermo
 
 Description
-    Two phases thermo Internal energy mixture Defined as:
-    e1 = Cv1(T - Tsat) + Hv1
-    e2 = Cv2(T - Tsat) + Hv2
-    e = (alpha1*rho1*e1 + alpha2*rho2*e2) / (alpha1*rho1 + alpha2*rho2)
 
 SourceFiles
     twoPhaseMixtureEThermo.C
@@ -64,25 +60,9 @@ protected:
 
     // Protected Data
 
-        //- Internal energy field [J]
-        volScalarField e_;
-
         //- Saturation Temperature
         dimensionedScalar TSat_;
 
-        //- Should the p*div(U) term be included in the energy equation
-        Switch pDivU_;
-
-
-    // Protected Member Functions
-
-        //- Correct boundary for e
-        void eBoundaryCorrection (volScalarField& h);
-
-        //- Initialize
-        void init();
-
-
 public:
 
     TypeName("twoPhaseMixtureEThermo");
@@ -105,13 +85,15 @@ public:
         //- Return access to the internal energy field [J/Kg]
         virtual volScalarField& he()
         {
-            return e_;
+            NotImplemented;
+            return p();
         }
 
         //- Return access to the internal energy field [J/Kg]
         virtual const volScalarField& he() const
         {
-            return e_;
+            NotImplemented;
+            return p();
         }
 
         //- Enthalpy/Internal energy
@@ -306,12 +288,6 @@ public:
             {
                 return *this;
             }
-
-            //- Should the dpdt term be included in the enthalpy equation
-            Switch pDivU() const
-            {
-                return pDivU_;
-            }
 };
 
 
diff --git a/applications/solvers/multiphase/interPhaseChangeFoam/alphaEqn.H b/applications/solvers/multiphase/interPhaseChangeFoam/alphaEqn.H
index e3bbba19d8b..76949b89779 100644
--- a/applications/solvers/multiphase/interPhaseChangeFoam/alphaEqn.H
+++ b/applications/solvers/multiphase/interPhaseChangeFoam/alphaEqn.H
@@ -114,6 +114,9 @@
     }
 
     rhoPhi = talphaPhi()*(rho1 - rho2) + phi*rho2;
+    
+    // Cache alphaPhi
+    alphaPhi10 = talphaPhi();
 
     Info<< "Liquid phase volume fraction = "
         << alpha1.weightedAverage(mesh.V()).value()
diff --git a/applications/solvers/multiphase/interPhaseChangeFoam/alphaEqnSubCycle.H b/applications/solvers/multiphase/interPhaseChangeFoam/alphaEqnSubCycle.H
index a04fc469475..4acc3c137cc 100644
--- a/applications/solvers/multiphase/interPhaseChangeFoam/alphaEqnSubCycle.H
+++ b/applications/solvers/multiphase/interPhaseChangeFoam/alphaEqnSubCycle.H
@@ -14,7 +14,17 @@
     if (nAlphaSubCycles > 1)
     {
         dimensionedScalar totalDeltaT = runTime.deltaT();
-        surfaceScalarField rhoPhiSum("rhoPhiSum", rhoPhi);
+        surfaceScalarField rhoPhiSum
+        (
+            IOobject
+            (
+                "rhoPhiSum",
+                runTime.timeName(),
+                mesh
+            ),
+            mesh,
+            dimensionedScalar(rhoPhi.dimensions(), Zero)
+        );
 
         for
         (
diff --git a/applications/solvers/multiphase/interPhaseChangeFoam/createFields.H b/applications/solvers/multiphase/interPhaseChangeFoam/createFields.H
index 28c6b2c4eb7..e1b84a64a68 100644
--- a/applications/solvers/multiphase/interPhaseChangeFoam/createFields.H
+++ b/applications/solvers/multiphase/interPhaseChangeFoam/createFields.H
@@ -109,3 +109,19 @@ mesh.setFluxRequired(p_rgh.name());
 mesh.setFluxRequired(alpha1.name());
 
 #include "createFvOptions.H"
+
+IOobject alphaPhi10Header
+(
+    IOobject::groupName("alphaPhi0", alpha1.group()),
+    runTime.timeName(),
+    mesh,
+    IOobject::NO_READ,
+    IOobject::NO_WRITE
+);
+
+// MULES flux from previous time-step
+surfaceScalarField alphaPhi10
+(
+    alphaPhi10Header,
+    phi*fvc::interpolate(alpha1)
+);
diff --git a/src/finiteVolume/finiteVolume/fvc/fvcSmooth/fvcSmooth.C b/src/finiteVolume/finiteVolume/fvc/fvcSmooth/fvcSmooth.C
index 90c71fd9139..dad4ad165d9 100644
--- a/src/finiteVolume/finiteVolume/fvc/fvcSmooth/fvcSmooth.C
+++ b/src/finiteVolume/finiteVolume/fvc/fvcSmooth/fvcSmooth.C
@@ -6,6 +6,8 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2011 OpenFOAM Foundation
+    Copyright (C) 2020 OpenCFD Ltd.
+    Copyright (C) 2020 Henning Scheufler
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -30,6 +32,11 @@ License
 #include "FaceCellWave.H"
 #include "smoothData.H"
 #include "sweepData.H"
+#include "fvMatrices.H"
+#include "fvcVolumeIntegrate.H"
+#include "fvmLaplacian.H"
+#include "fvmSup.H"
+#include "zeroGradientFvPatchField.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -314,4 +321,100 @@ void Foam::fvc::sweep
 }
 
 
+void Foam::fvc::spreadSource
+(
+    volScalarField& mDotOut,
+    const volScalarField& mDotIn,
+    const volScalarField& alpha1,
+    const volScalarField& alpha2,
+    const dimensionedScalar& D,
+    const scalar cutoff
+)
+{
+    const fvMesh& mesh = alpha1.mesh();
+   
+    volScalarField mDotSmear
+    (
+        IOobject
+        (
+            "mDotSmear",
+            mesh.time().timeName(),
+            mesh,
+            IOobject::NO_READ,
+            IOobject::NO_WRITE
+        ),
+        mesh,
+        dimensionedScalar(mDotOut.dimensions(), Zero),
+        zeroGradientFvPatchField<scalar>::typeName
+    );
+
+    //- Smearing of source term field
+    fvScalarMatrix mSourceEqn
+    (
+        fvm::Sp(scalar(1), mDotSmear) 
+      - fvm::laplacian(D, mDotSmear) 
+      == 
+        mDotIn
+    );
+
+    mSourceEqn.solve();
+
+    // Cut cells with cutoff < alpha1 < 1-cutoff and rescale remaining 
+    // source term field
+    
+    dimensionedScalar intvDotLiquid("intvDotLiquid", dimMass/dimTime, 0.0);
+    dimensionedScalar intvDotVapor ("intvDotVapor", dimMass/dimTime, 0.0);
+    
+    const scalarField& Vol = mesh.V();
+    
+    forAll(mesh.C(), celli)
+    {
+        if (alpha1[celli] < cutoff)
+        {
+            intvDotVapor.value() += 
+                alpha2[celli]*mDotSmear[celli]*Vol[celli];
+        }
+        else if (alpha1[celli] > 1.0 - cutoff)
+        {
+            intvDotLiquid.value() += 
+                alpha1[celli]*mDotSmear[celli]*Vol[celli];
+        }
+    }
+    
+    reduce(intvDotVapor.value(), sumOp<scalar>());
+    reduce(intvDotLiquid.value(), sumOp<scalar>());
+
+    //- Calculate Nl and Nv
+    dimensionedScalar Nl ("Nl", dimless, Zero);
+    dimensionedScalar Nv ("Nv", dimless, Zero); 
+    
+    const dimensionedScalar intmSource0(fvc::domainIntegrate(mDotIn));
+
+    if (intvDotVapor.value() > VSMALL)
+    {
+        Nv = intmSource0/intvDotVapor;
+    }
+    if (intvDotLiquid.value() > VSMALL)
+    {
+        Nl = intmSource0/intvDotLiquid;
+    }
+
+    //- Set source terms in cells with alpha1 < cutoff or alpha1 > 1-cutoff
+    forAll(mesh.C(), celli)
+    {
+        if (alpha1[celli] < cutoff)
+        {
+            mDotOut[celli] = Nv.value()*(1 - alpha1[celli])*mDotSmear[celli];
+        }
+        else if (alpha1[celli] > 1.0 - cutoff)
+        {
+            //mDotOut[celli] = 0;
+            mDotOut[celli] = -Nl.value()*alpha1[celli]*mDotSmear[celli];
+        }
+        else
+        {
+            mDotOut[celli] = 0;
+        }
+    }
+}
 // ************************************************************************* //
diff --git a/src/finiteVolume/finiteVolume/fvc/fvcSmooth/fvcSmooth.H b/src/finiteVolume/finiteVolume/fvc/fvcSmooth/fvcSmooth.H
index fdf2dc298dc..b9181a603b4 100644
--- a/src/finiteVolume/finiteVolume/fvc/fvcSmooth/fvcSmooth.H
+++ b/src/finiteVolume/finiteVolume/fvc/fvcSmooth/fvcSmooth.H
@@ -6,6 +6,8 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2011 OpenFOAM Foundation
+    Copyright (C) 2020 OpenCFD Ltd.
+    Copyright (C) 2020 Henning Scheufler
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -42,6 +44,12 @@ Description
            gradient of alpha is large (where the difference between the values
            in neighbouring cells is larger than alphaDiff) away from that
            starting point of the sweep.
+           
+           
+    spreadSource: spread a source field (mDotIn) for two phase multiphase using
+                  a laplacian operator and diffussivity D.
+                  The spread source (mDotOut) is distributed from alpha1 < cutoff 
+                  to alpha1 > 1 - cutoff, and it is zero across the interface
 
 SourceFiles
     fvcSmooth.C
@@ -52,6 +60,7 @@ SourceFiles
 #define fvcSmooth_H
 
 #include "volFieldsFwd.H"
+#include "dimensionedScalar.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -82,6 +91,16 @@ namespace fvc
         const label nLayers,
         const scalar alphaDiff = 0.2
     );
+    
+    void spreadSource
+    (
+        volScalarField& mDotOut,
+        const volScalarField& mDotIn,
+        const volScalarField& alpha1,
+        const volScalarField& alpha2,
+        const dimensionedScalar& D,
+        const scalar cutoff
+    );
 }
 }
 
diff --git a/src/functionObjects/field/Make/files b/src/functionObjects/field/Make/files
index e4b295aa138..ab1157350a6 100644
--- a/src/functionObjects/field/Make/files
+++ b/src/functionObjects/field/Make/files
@@ -115,4 +115,6 @@ zeroGradient/zeroGradient.C
 
 stabilityBlendingFactor/stabilityBlendingFactor.C
 
+interfaceHeight/interfaceHeight.C
+
 LIB = $(FOAM_LIBBIN)/libfieldFunctionObjects
diff --git a/src/functionObjects/field/interfaceHeight/interfaceHeight.C b/src/functionObjects/field/interfaceHeight/interfaceHeight.C
new file mode 100644
index 00000000000..889f89c968f
--- /dev/null
+++ b/src/functionObjects/field/interfaceHeight/interfaceHeight.C
@@ -0,0 +1,289 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | www.openfoam.com
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+    Copyright (C) 2017-2019 OpenFOAM Foundation
+-------------------------------------------------------------------------------
+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 "interfaceHeight.H"
+#include "fvMesh.H"
+#include "interpolation.H"
+#include "IOmanip.H"
+#include "meshSearch.H"
+#include "midPointAndFaceSet.H"
+#include "Time.H"
+#include "uniformDimensionedFields.H"
+#include "volFields.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace functionObjects
+{
+    defineTypeNameAndDebug(interfaceHeight, 0);
+    addToRunTimeSelectionTable(functionObject, interfaceHeight, dictionary);
+}
+}
+
+
+// * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
+
+void Foam::functionObjects::interfaceHeight::writePositions()
+{
+    const uniformDimensionedVectorField& g =
+        mesh_.time().lookupObject<uniformDimensionedVectorField>("g");
+    vector gHat = vector::zero;
+    
+    if (mag(direction_) > 0.0)
+    {
+        gHat = direction_/mag(direction_);
+    }
+    else
+    {
+        gHat = g.value()/mag(g.value());
+    }
+
+    const volScalarField& alpha =
+        mesh_.lookupObject<volScalarField>(alphaName_);
+
+    autoPtr<interpolation<scalar>>
+        interpolator
+        (
+            interpolation<scalar>::New(interpolationScheme_, alpha)
+        );
+
+    if (Pstream::master())
+    {
+        file(fileID::heightFile) << mesh_.time().timeName() << tab;
+        file(fileID::positionFile) << mesh_.time().timeName() << tab;
+    }
+
+    forAll(locations_, li)
+    {
+        // Create a set along a ray projected in the direction of gravity
+        const midPointAndFaceSet set
+        (
+            "",
+            mesh_,
+            meshSearch(mesh_),
+            "xyz",
+            locations_[li] + gHat*mesh_.bounds().mag(),
+            locations_[li] - gHat*mesh_.bounds().mag()
+        );
+
+        // Find the height of the location above the boundary
+        scalar hLB = set.size() ? - gHat & (locations_[li] - set[0]) : - GREAT;
+        reduce(hLB, maxOp<scalar>());
+
+        // Calculate the integrals of length and length*alpha along the sampling
+        // line. The latter is equal to the equivalent length with alpha equal
+        // to one.
+        scalar sumLength = 0, sumLengthAlpha = 0;
+        for(label si = 0; si < set.size() - 1; ++ si)
+        {
+            if (set.segments()[si] != set.segments()[si+1])
+            {
+                continue;
+            }
+
+            const vector& p0 = set[si], p1 = set[si+1];
+            const label c0 = set.cells()[si], c1 = set.cells()[si+1];
+            const label f0 = set.faces()[si], f1 = set.faces()[si+1];
+            const scalar a0 = interpolator->interpolate(p0, c0, f0);
+            const scalar a1 = interpolator->interpolate(p1, c1, f1);
+
+            const scalar l = - gHat & (p1 - p0);
+            sumLength += l;
+            sumLengthAlpha += l*(a0 + a1)/2;
+        }
+
+        reduce(sumLength, sumOp<scalar>());
+        reduce(sumLengthAlpha, sumOp<scalar>());
+
+        // Write out
+        if (Pstream::master())
+        {
+            // Interface heights above the boundary and location
+            const scalar hIB =
+                liquid_ ? sumLengthAlpha : sumLength - sumLengthAlpha;
+            const scalar hIL = hIB - hLB;
+
+            // Position of the interface
+            const point p = locations_[li] - gHat*hIL;
+
+            const Foam::Omanip<int> w = valueWidth(1);
+
+            file(fileID::heightFile) << w << hIB << w << hIL;
+            file(fileID::positionFile) << '(' << w << p.x() << w << p.y()
+                << valueWidth() << p.z() << ") ";
+        }
+    }
+
+    if (Pstream::master())
+    {
+        file(fileID::heightFile).endl();
+        file(fileID::positionFile).endl();
+    }
+}
+
+
+// * * * * * * * * * * * * Protected Member Functions  * * * * * * * * * * * //
+
+void Foam::functionObjects::interfaceHeight::writeFileHeader(const fileID i)
+{
+    forAll(locations_, li)
+    {
+        writeHeaderValue
+        (
+            file(i),
+            "Location " + Foam::name(li),
+            locations_[li]
+        );
+    }
+
+    switch (fileID(i))
+    {
+        case fileID::heightFile:
+            writeHeaderValue
+            (
+                file(fileID::heightFile),
+                "hB",
+                "Interface height above the boundary"
+            );
+            writeHeaderValue
+            (
+                file(fileID::heightFile),
+                "hL",
+                "Interface height above the location"
+            );
+            break;
+        case fileID::positionFile:
+            writeHeaderValue(file(i), "p", "Interface position");
+            break;
+    }
+
+    const Foam::Omanip<int> w = valueWidth(1);
+
+    writeCommented(file(i), "Location");
+    forAll(locations_, li)
+    {
+        switch (fileID(i))
+        {
+            case fileID::heightFile:
+                file(i) << w << li << w << ' ';
+                break;
+            case fileID::positionFile:
+                file(i) << w << li << w << ' ' << w << ' ' << "  ";
+                break;
+        }
+    }
+    file(i).endl();
+
+    writeCommented(file(i), "Time");
+    forAll(locations_, li)
+    {
+        switch (fileID(i))
+        {
+            case fileID::heightFile:
+                file(i) << w << "hB" << w << "hL";
+                break;
+            case fileID::positionFile:
+                file(i) << w << "p" << w << ' ' << w << ' ' << "  ";
+                break;
+        }
+    }
+    file(i).endl();
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::functionObjects::interfaceHeight::interfaceHeight
+(
+    const word& name,
+    const Time& runTime,
+    const dictionary& dict
+)
+:
+    fvMeshFunctionObject(name, runTime, dict),
+    logFiles(obr_, name),
+    alphaName_("alpha"),
+    liquid_(true),
+    locations_(),
+    interpolationScheme_("cellPoint"),
+    direction_(vector::zero)
+{
+    read(dict);
+    resetNames({"height", "position"});
+    
+    writeFileHeader(fileID::heightFile);
+    writeFileHeader(fileID::positionFile);
+}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::functionObjects::interfaceHeight::~interfaceHeight()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+bool Foam::functionObjects::interfaceHeight::read(const dictionary& dict)
+{
+    
+    dict.readIfPresent("alpha", alphaName_);
+    dict.readIfPresent("liquid", liquid_);
+    dict.lookup("locations") >> locations_;
+    dict.readIfPresent("interpolationScheme", interpolationScheme_);
+    dict.readIfPresent("direction", direction_);
+
+    return true;
+}
+
+
+bool Foam::functionObjects::interfaceHeight::execute()
+{
+    return true;
+}
+
+
+bool Foam::functionObjects::interfaceHeight::end()
+{
+    return true;
+}
+
+
+bool Foam::functionObjects::interfaceHeight::write()
+{
+    logFiles::write();
+
+    writePositions();
+
+    return true;
+}
+
+
+// ************************************************************************* //
diff --git a/src/functionObjects/field/interfaceHeight/interfaceHeight.H b/src/functionObjects/field/interfaceHeight/interfaceHeight.H
new file mode 100644
index 00000000000..b2d403baa61
--- /dev/null
+++ b/src/functionObjects/field/interfaceHeight/interfaceHeight.H
@@ -0,0 +1,181 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | www.openfoam.com
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+    Copyright (C) 2017-2019 OpenFOAM Foundation
+-------------------------------------------------------------------------------
+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::functionObjects::interfaceHeight
+
+Description
+    This function object reports the height of the interface above a set of
+    locations. For each location, it writes the vertical distance of the
+    interface above both the location and the lowest boundary. It also writes
+    the point on the interface from which these heights are computed. It uses
+    an integral approach, so if there are multiple interfaces above or below a
+    location then this method will generate average values.
+
+    Example of function object specification:
+    \verbatim
+    interfaceHeight1
+    {
+        type           interfaceHeight;
+        libs           ("libfieldFunctionObjects.so");
+        alpha          alpha.water;
+        locations      ((0 0 0) (10 0 0) (20 0 0));
+    }
+    \endverbatim
+
+Usage
+    \table
+        Property     | Description               | Required | Default value
+        type         | type name                 | yes      |
+        alpha        | name of the alpha field   | no       | alpha
+        locations    | list of locations to report the height at | yes |
+        liquid       | is the alpha field that of the liquid | no | true
+        direction    | direction of interface | no | g
+    \endtable
+
+SourceFiles
+    interfaceHeight.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef interfaceHeight_H
+#define interfaceHeight_H
+
+#include "fvMeshFunctionObject.H"
+#include "logFiles.H"
+#include "point.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace functionObjects
+{
+
+/*---------------------------------------------------------------------------*\
+                   Class interfaceHeight Declaration
+\*---------------------------------------------------------------------------*/
+
+class interfaceHeight
+:
+    public fvMeshFunctionObject,
+    public logFiles
+{
+    // Private Data
+
+        //- Name of the alpha field
+        word alphaName_;
+
+        //- Is the alpha field that of the liquid under the wave?
+        bool liquid_;
+
+        //- List of locations to report the height at
+        List<point> locations_;
+
+        //- Interpolation scheme
+        word interpolationScheme_;
+        
+        
+        //- Direction of interface motion 
+        vector direction_;
+
+
+    // Private Member Functions
+
+        //- Output positions
+        void writePositions();
+
+
+    // Private Enumerations
+
+        //- File enumeration
+        enum class fileID
+        {
+            heightFile = 0,
+            positionFile = 1
+        };
+
+
+        Ostream& file(const fileID fid)
+        {
+            return logFiles::files(label(fid));
+        }
+
+
+protected:
+
+    // Protected Member Functions
+
+        //- Output file header information
+        virtual void writeFileHeader(const fileID i);
+
+
+public:
+
+    //- Runtime type information
+    TypeName("interfaceHeight");
+
+
+    // Constructors
+
+        //- Construct from Time and dictionary
+        interfaceHeight
+        (
+            const word& name,
+            const Time& runTime,
+            const dictionary& dict
+        );
+
+
+    //- Destructor
+    virtual ~interfaceHeight();
+
+
+    // Member Functions
+
+        //- Read
+        virtual bool read(const dictionary&);
+
+        //- Execute
+        virtual bool execute();
+
+        //- Execute at the final time-loop
+        virtual bool end();
+
+        //- Write
+        virtual bool write();
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace functionObjects
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/0.orig/T b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/0.orig/T
new file mode 100755
index 00000000000..552d6f52a7a
--- /dev/null
+++ b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/0.orig/T
@@ -0,0 +1,47 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  plus                                  |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      T;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 1 0 0 0];
+
+internalField   uniform 373.15;
+
+boundaryField
+{
+    sideWalls
+    {
+        type            zeroGradient;
+    }
+
+    faceWall
+    {
+        type            fixedValue;
+        value           uniform 378.15;
+    }
+
+    outlet
+    {
+        type            inletOutlet;
+        inletValue      uniform 373.15;
+        value           uniform 373.15;
+    }
+
+    frontAndBack
+    {
+        type            empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/0.orig/U b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/0.orig/U
new file mode 100755
index 00000000000..cc77ed99d50
--- /dev/null
+++ b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/0.orig/U
@@ -0,0 +1,46 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  plus                                  |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volVectorField;
+    object      U;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -1 0 0 0 0];
+
+internalField   uniform (0 0 0);
+
+boundaryField
+{
+    sideWalls
+    {
+        type            slip;
+        value           uniform (0 0 0);
+    }
+
+    faceWall
+    {
+        type            noSlip;
+    }
+
+    frontAndBack
+    {
+        type            empty;
+    }
+
+    outlet
+    {
+        type            pressureInletOutletVelocity;
+        value           uniform (0 0 0);
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/0.orig/alpha.gas b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/0.orig/alpha.gas
new file mode 100755
index 00000000000..e6181c6e812
--- /dev/null
+++ b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/0.orig/alpha.gas
@@ -0,0 +1,41 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  plus                                  |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      alpha.gas;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    ".*"
+    {
+        type            zeroGradient;
+    }
+    
+    outlet
+    {
+        type            inletOutlet;
+        inletValue      uniform 0;
+        value           uniform 0;
+    }
+
+    frontAndBack
+    {
+        type            empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/0.orig/alpha.liquid b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/0.orig/alpha.liquid
new file mode 100755
index 00000000000..c1a88243e90
--- /dev/null
+++ b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/0.orig/alpha.liquid
@@ -0,0 +1,41 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  plus                                  |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      alpha.liquid;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    ".*"
+    {
+        type            zeroGradient;
+    }
+    
+    outlet
+    {
+        type            inletOutlet;
+        inletValue      uniform 1;
+        value           uniform 0;
+    }
+
+    frontAndBack
+    {
+        type            empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/0.orig/p b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/0.orig/p
new file mode 100755
index 00000000000..94ea98497b8
--- /dev/null
+++ b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/0.orig/p
@@ -0,0 +1,48 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  plus                                  |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      p;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 -1 -2 0 0 0 0];
+
+internalField   uniform 1e5;
+
+boundaryField
+{
+  sideWalls
+  {
+      type            fixedFluxPressure;
+  }
+
+  faceWall
+  {
+      type            fixedFluxPressure;
+  }
+
+  outlet
+  {
+      //type            fixedValue;
+      type            totalPressure;
+      rho             rho;
+      p0              uniform 1e5;
+      value           uniform 1e5;
+  }
+
+  frontAndBack
+  {
+      type            empty;
+  }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/0.orig/p_rgh b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/0.orig/p_rgh
new file mode 100755
index 00000000000..b35272aaf64
--- /dev/null
+++ b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/0.orig/p_rgh
@@ -0,0 +1,48 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  plus                                  |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      p_rgh;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 -1 -2 0 0 0 0];
+
+internalField   uniform 1e5;
+
+boundaryField
+{
+  sideWalls
+  {
+      type            fixedFluxPressure;
+  }
+
+  faceWall
+  {
+      type            fixedFluxPressure;
+  }
+
+  outlet
+  {
+      //type            fixedValue;
+      type            totalPressure;
+      rho             rho;
+      p0              uniform 1e5;
+      value           uniform 1e5;
+  }
+
+  frontAndBack
+  {
+      type            empty;
+  }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/Allclean b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/Allclean
new file mode 100755
index 00000000000..f576c0f68a1
--- /dev/null
+++ b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/Allclean
@@ -0,0 +1,12 @@
+#!/bin/sh
+cd ${0%/*} || exit 1    # Run from this directory
+
+# Source tutorial clean functions
+. $WM_PROJECT_DIR/bin/tools/CleanFunctions
+
+cleanCase
+rm -rf 0
+rm positionClean.dat
+rm OF_vs_Exact.eps
+
+#------------------------------------------------------------------------------
diff --git a/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/Allrun b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/Allrun
new file mode 100755
index 00000000000..c7cdbed219d
--- /dev/null
+++ b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/Allrun
@@ -0,0 +1,19 @@
+#!/bin/sh
+cd ${0%/*} || exit 1    # Run from this directory
+
+# Source tutorial run functions
+. $WM_PROJECT_DIR/bin/tools/RunFunctions
+
+runApplication blockMesh
+restore0Dir
+cp -r 0 1.36
+cp system/setAlphaFieldDict.liquid system/setAlphaFieldDict
+runApplication setAlphaField
+rm log.setAlphaField
+
+cp system/setAlphaFieldDict.gas system/setAlphaFieldDict
+runApplication setAlphaField
+
+#runApplication $(getApplication)
+
+#------------------------------------------------------------------------------
diff --git a/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/constant/g b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/constant/g
new file mode 100644
index 00000000000..4930967bdd6
--- /dev/null
+++ b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/constant/g
@@ -0,0 +1,22 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1906                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     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/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/constant/phaseProperties b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/constant/phaseProperties
new file mode 100755
index 00000000000..92421df57cf
--- /dev/null
+++ b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/constant/phaseProperties
@@ -0,0 +1,50 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1906                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      phaseChangeProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+type    massTransferMultiphaseSystem;
+
+phases  (liquid gas);
+
+liquid
+{
+    type            pureMovingPhaseModel;
+}
+
+gas
+{
+    type            pureMovingPhaseModel;
+}
+
+surfaceTension
+(
+    (gas and liquid)
+    {
+        type            constant;
+        sigma           0.0;
+    }
+);
+
+massTransferModel
+(
+    (liquid to gas)
+    {
+        type            Lee;
+        C               1700;
+        Tactivate       373.25;
+    }
+);
+
+// ************************************************************************* //
diff --git a/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/constant/thermophysicalProperties.gas b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/constant/thermophysicalProperties.gas
new file mode 100755
index 00000000000..a17a753b7dd
--- /dev/null
+++ b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/constant/thermophysicalProperties.gas
@@ -0,0 +1,54 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1906                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      thermophysicalProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+thermoType
+{
+    type            heRhoThermo;
+    mixture         pureMixture;
+    transport       const;
+    thermo          hConst;
+    equationOfState rhoConst;
+    specie          specie;
+    energy          sensibleEnthalpy;
+}
+
+// ************************************************************************* //
+
+mixture
+{
+    specie
+    {
+        nMoles      1;
+        molWeight   18.9;
+    }
+    equationOfState
+    {
+        rho         0.581;
+    }
+    thermodynamics
+    {
+        Hf          0;//-1.338e7; //[J/kg]
+        Cp          2030;
+    }
+    transport
+    {
+        mu          0.9e-05;
+        Pr          0.7;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/constant/thermophysicalProperties.liquid b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/constant/thermophysicalProperties.liquid
new file mode 100755
index 00000000000..544aaa6c8b8
--- /dev/null
+++ b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/constant/thermophysicalProperties.liquid
@@ -0,0 +1,52 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1906                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      thermophysicalProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+thermoType
+{
+    type            heRhoThermo;
+    mixture         pureMixture;
+    transport       const;
+    thermo          hConst;
+    equationOfState rhoConst;
+    specie          specie;
+    energy          sensibleEnthalpy;
+}
+
+mixture
+{
+    specie
+    {
+        nMoles          1;
+        molWeight       18.9;
+    }
+    equationOfState
+    {
+        rho             958.4;
+    }
+    thermodynamics
+    {
+        Cp              4216;
+        Hf              2.26e6;//-1.5833e7;//deltaHv 2.45e6; //[J/Kg]
+    }
+    transport
+    {
+        mu              959e-6;
+        Pr              6.62;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/constant/transportProperties b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/constant/transportProperties
new file mode 100644
index 00000000000..e7f0365ed22
--- /dev/null
+++ b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/constant/transportProperties
@@ -0,0 +1,49 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1906                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      transportProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+phases (liquid vapour); // FC-72
+
+liquid
+{
+    transportModel  Newtonian;
+    nu              1e-6;
+    rho             958.4;
+
+
+    Cp              4216;  // irrelevant
+    Cv              4216;  // irrelevant
+    kappa           0.671; // irrelevant
+    hf              0;
+}
+
+vapour
+{
+    transportModel  Newtonian;
+    nu              1e-5; // irrelevant
+    rho             0.581;
+
+
+    Cp              2030;      // FC72 vapour
+    Cv              2030;      // Cv = Cp - R/w
+    kappa           0.025;       // FC72 vapour // 0.01;
+    hf              2260.0e3;
+}
+
+sigma 0;
+
+Prt             0.7;
+
+// ************************************************************************* //
diff --git a/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/constant/turbulenceProperties b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/constant/turbulenceProperties
new file mode 100755
index 00000000000..5eec0426726
--- /dev/null
+++ b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/constant/turbulenceProperties
@@ -0,0 +1,21 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  plus                                  |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      turbulenceProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+simulationType  laminar;
+
+
+// ************************************************************************* //
diff --git a/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/data.dat b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/data.dat
new file mode 100644
index 00000000000..b55f154e1eb
--- /dev/null
+++ b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/data.dat
@@ -0,0 +1,1001 @@
+t pos
+1.3150245415656703 0.0005
+1.4138083007833222 0.0005184398054516621
+1.5125920600009741 0.0005362458985889908
+1.6113758192186263 0.0005534794446321124
+1.7101595784362782 0.0005701923600917754
+1.8089433376539301 0.0005864291597318349
+1.9077270968715823 0.0006022283547463896
+2.006510856089234 0.0006176235286461328
+2.105294615306886 0.0006326441772545272
+2.204078374524538 0.0006473163731057749
+2.30286213374219 0.0006616632971289642
+2.4016458929598423 0.0006757056686489534
+2.500429652177494 0.0006894620965079127
+2.599213411395146 0.0007029493683031827
+2.697997170612798 0.0007161826905717568
+2.79678092983045 0.0007291758897216487
+2.895564689048102 0.0007419415812772021
+2.994348448265754 0.000754491313339572
+3.093132207483406 0.0007668356889071017
+3.1919159667010577 0.0007789844707427657
+3.29069972591871 0.0007909466717390901
+3.389483485136362 0.0008027306331590325
+3.488267244354014 0.0008143440926835894
+3.587051003571666 0.0008257942438437166
+3.6858347627893178 0.0008370877881334626
+3.7846185220069697 0.0008482309808766301
+3.8834022812246216 0.0008592296717384049
+3.9821860404422735 0.0008700893406268371
+4.0809697996599255 0.0008808151296096142
+4.179753558877578 0.0008914118713736983
+4.27853731809523 0.0009018841146747823
+4.377321077312882 0.0009122361471567948
+4.476104836530533 0.0009224720158661888
+4.5748885957481855 0.0009325955457394098
+4.673672354965838 0.0009426103563030404
+4.772456114183489 0.0009525198767933937
+4.871239873401141 0.0009623273598746214
+4.970023632618794 0.0009720358941109204
+5.068807391836446 0.0009816484153284074
+5.167591151054097 0.000991167716985138
+5.266374910271749 0.001000596459653085
+5.365158669489402 0.0010099371797032948
+5.463942428707053 0.0010191922972745634
+5.562726187924705 0.0010283641235965786
+5.661509947142358 0.0010374548677303107
+5.7602937063600095 0.001046466642781352
+5.859077465577661 0.001055401471635714
+5.957861224795312 0.0010642612922621907
+6.056644984012966 0.0010730479626206582
+6.155428743230617 0.001081763265211526
+6.254212502448269 0.0010904089112978945
+6.352996261665922 0.0010989865448287422
+6.451780020883573 0.0011074977460886204
+6.550563780101225 0.0011159440350968013
+6.649347539318876 0.0011243268747765877
+6.74813129853653 0.0011326476739134928
+6.846915057754181 0.0011409077899192392
+6.945698816971833 0.0011491085314169242
+7.044482576189486 0.0011572511606612963
+7.143266335407137 0.0011653368958068197
+7.242050094624789 0.0011733669130350624
+7.34083385384244 0.0011813423485519297
+7.4396176130600935 0.0011892643004643444
+7.538401372277745 0.0011971338305451498
+7.6371851314953965 0.0012049519658942677
+7.73596889071305 0.0012127197005034668
+7.834752649930701 0.0012204379967314912
+7.933536409148353 0.0012281077866957493
+8.032320168366004 0.0012357299735862562
+8.131103927583657 0.001243305432907074
+8.229887686801309 0.001250835013650083
+8.32867144601896 0.0012583195394055362
+8.427455205236612 0.0012657598094135071
+8.526238964454265 0.0012731565995600367
+8.625022723671917 0.0012805106633214862
+8.723806482889568 0.0012878227326603572
+8.822590242107221 0.0012950935188755857
+8.921374001324873 0.0013023237134101122
+9.020157760542524 0.0013095139886183198
+9.118941519760176 0.001316664998495752
+9.217725278977829 0.0013237773793733506
+9.31650903819548 0.0013308517505783027
+9.415292797413132 0.0013378887150634353
+9.514076556630783 0.00134488886000697
+9.612860315848437 0.0013518527573843258
+9.711644075066088 0.0013587809645135458
+9.81042783428374 0.0013656740245758204
+9.909211593501391 0.0013725324671124818
+10.007995352719044 0.0013793568084997563
+10.106779111936696 0.0013861475524024817
+10.205562871154347 0.0013929051902079148
+10.304346630372 0.0013996302014406894
+10.403130389589652 0.0014063230541599117
+10.501914148807304 0.0014129842053393305
+10.600697908024955 0.0014196141012314495
+10.699481667242608 0.0014262131777164077
+10.79826542646026 0.0014327818606363954
+10.897049185677911 0.0014393205661163355
+10.995832944895565 0.001445829700871512
+11.094616704113216 0.001452309662502788
+11.193400463330867 0.0014587608397800236
+11.292184222548519 0.0014651836129142574
+11.390967981766172 0.0014715783538192025
+11.489751740983824 0.0014779454263625538
+11.588535500201475 0.001484285186607597
+11.687319259419128 0.0014905979830455648
+11.78610301863678 0.0014968841568191783
+11.884886777854431 0.001503144041937771
+11.983670537072083 0.0015093779654843835
+12.082454296289736 0.0015155862478151926
+12.181238055507388 0.0015217692027516168
+12.280021814725039 0.0015279271377654263
+12.378805573942692 0.0015340603541571648
+12.477589333160344 0.0015401691472281748
+12.576373092377995 0.0015462538064465097
+12.675156851595647 0.00155231461560699
+12.7739406108133 0.0015583518529856584
+12.872724370030951 0.0015643657914888678
+12.971508129248603 0.0015703566987972349
+13.070291888466254 0.0015763248375046642
+13.169075647683908 0.0015822704652526584
+13.26785940690156 0.0015881938348600967
+13.36664316611921 0.0015940951944486811
+13.465426925336864 0.0015999747875642088
+13.564210684554515 0.0016058328532938578
+13.662994443772167 0.0016116696263796279
+13.761778202989818 0.0016174853373281026
+13.860561962207472 0.0016232802125166696
+13.959345721425123 0.001629054474296339
+14.058129480642775 0.0016348083410912969
+14.156913239860428 0.001640542027495314
+14.25569699907808 0.0016462557443651315
+14.35448075829573 0.0016519496989109415
+14.453264517513382 0.00165762409478407
+14.552048276731036 0.0016632791321619666
+14.650832035948687 0.001668915007830603
+14.749615795166338 0.001674531915264376
+14.848399554383992 0.0016801300447036045
+14.947183313601643 0.001685709583229713
+15.045967072819295 0.0016912707148381808
+15.144750832036946 0.0016968136205093378
+15.2435345912546 0.001702338478277092
+15.342318350472251 0.0017078454632956468
+15.441102109689902 0.0017133347479042964
+15.539885868907554 0.0017188065016903549
+15.638669628125207 0.0017242608915502878
+15.737453387342859 0.00172969808174911
+15.83623714656051 0.001735118233978108
+15.935020905778163 0.001740521507410944
+16.033804664995817 0.0017459080587581988
+16.132588424213466 0.001751278042320402
+16.23137218343112 0.0017566316100396055
+16.330155942648773 0.0017619689115495466
+16.428939701866422 0.0017672900942244459
+16.527723461084076 0.001772595303226489
+16.62650722030173 0.001777884681552031
+16.72529097951938 0.001783158370076568
+16.824074738737032 0.0017884165075985178
+16.92285849795468 0.001793659230881841
+17.021642257172335 0.0017988866746975456
+17.120426016389988 0.0018040989718641136
+17.219209775607638 0.0018092962532868708
+17.31799353482529 0.001814478647996351
+17.41677729404294 0.0018196462831856699
+17.515561053260594 0.0018247992842469498
+17.614344812478247 0.0018299377748068205
+17.713128571695897 0.0018350618767610247
+17.81191233091355 0.001840171710308158
+17.910696090131204 0.0018452673939825658
+18.009479849348853 0.0018503490446864252
+18.108263608566507 0.001855416777721039
+18.20704736778416 0.0018604707068173585
+18.30583112700181 0.0018655109441657633
+18.404614886219463 0.001870537600445122
+18.503398645437112 0.0018755507848511467
+18.602182404654766 0.001880550605124071
+18.70096616387242 0.0018855371675756663
+18.79974992309007 0.0018905105771156172
+18.898533682307722 0.001895470937277272
+18.997317441525375 0.001900418350242793
+19.096101200743025 0.0019053529168677112
+19.194884959960678 0.0019102747367049202
+19.29366871917833 0.0019151839080281063
+19.39245247839598 0.0019200805278546435
+19.491236237613634 0.0019249646919679653
+19.590019996831288 0.0019298364949394242
+19.688803756048937 0.0019346960301496558
+19.78758751526659 0.0019395433898094663
+19.88637127448424 0.001944378664980243
+19.985155033701894 0.0019492019455939166
+20.083938792919547 0.001954013320472475
+20.182722552137196 0.0019588128773470486
+20.28150631135485 0.0019636007028765753
+20.380290070572503 0.0019683768826660557
+20.479073829790153 0.00197314150128441
+20.577857589007806 0.0019778946422819525
+20.67664134822546 0.0019826363882074825
+20.77542510744311 0.0019873668206250115
+20.874208866660762 0.001992086020130136
+20.972992625878412 0.0019967940663660542
+21.071776385096065 0.002001491038039251
+21.17056014431372 0.00200617701293485
+21.269343903531368 0.00201085206793164
+21.36812766274902 0.002015516279016796
+21.466911421966675 0.0020201697213002843
+21.565695181184324 0.002024812469028978
+21.664478940401978 0.0020294445956004765
+21.76326269961963 0.0020340661735766463
+21.86204645883728 0.0020386772746968794
+21.960830218054934 0.00204327796989109
+22.059613977272587 0.0020478683292924405
+22.158397736490237 0.0020524484222498186
+22.25718149570789 0.0020570183173400586
+22.35596525492554 0.0020615780823799233
+22.454749014143193 0.0020661277844378455
+22.553532773360846 0.002070667489845436
+22.652316532578496 0.0020751972642087677
+22.75110029179615 0.0020797171724194403
+22.849884051013802 0.0020842272786654216
+22.948667810231452 0.0020887276464416865
+23.047451569449105 0.002093218338560644
+23.14623532866676 0.0020976994171623686
+23.24501908788441 0.002102170943724629
+23.34380284710206 0.0021066329790727324
+23.442586606319715 0.0021110855833891746
+23.541370365537365 0.0021155288162231136
+23.640154124755018 0.00211996273649966
+23.738937883972667 0.0021243874025289934
+23.83772164319032 0.002128802872015312
+23.936505402407974 0.0021332092020656104
+24.035289161625624 0.0021376064491982977
+24.134072920843277 0.0021419946693516565
+24.23285668006093 0.0021463739178921434
+24.33164043927858 0.002150744249622541
+24.430424198496233 0.0021551057187899586
+24.529207957713886 0.0021594583790936887
+24.627991716931536 0.0021638022836929205
+24.72677547614919 0.0021681374852143154
+24.82555923536684 0.0021724640357594443
+24.924342994584492 0.0021767819869120955
+25.023126753802146 0.0021810913897454473
+25.121910513019795 0.0021853922948291194
+25.22069427223745 0.0021896847522360936
+25.319478031455102 0.002193968811549517
+25.41826179067275 0.0021982445218693835
+25.517045549890405 0.0022025119318191022
+25.615829309108058 0.0022067710895519433
+25.714613068325708 0.0022110220427573823
+25.81339682754336 0.0022152648386673285
+25.912180586761014 0.0022194995240622474
+26.010964345978664 0.0022237261452771784
+26.109748105196317 0.0022279447482076516
+26.208531864413967 0.0022321553783155
+26.30731562363162 0.0022363580806345775
+26.406099382849273 0.0022405528997763765
+26.504883142066923 0.002244739879935554
+26.603666901284576 0.002248919064895365
+26.70245066050223 0.0022530904980330017
+26.80123441971988 0.0022572542223248484
+26.900018178937533 0.002261410280351647
+26.998801938155186 0.002265558714303576
+27.097585697372836 0.002269699565985249
+27.19636945659049 0.002273832876820631
+27.29515321580814 0.002277958687857869
+27.39393697502579 0.0022820770397740517
+27.492720734243445 0.0022861879728798894
+27.591504493461095 0.002290291527124312
+27.690288252678748 0.0022943877420990052
+27.7890720118964 0.0022984766570428618
+27.88785577111405 0.002302558310846369
+27.986639530331704 0.0023066327420559266
+28.085423289549357 0.002310699988878089
+28.184207048767007 0.002314760089183749
+28.28299080798466 0.002318813080512251
+28.381774567202314 0.00232285900007544
+28.480558326419963 0.0023268978847616477
+28.579342085637617 0.002330929771139617
+28.678125844855266 0.0023349546954623645
+28.77690960407292 0.0023389726936709843
+28.875693363290573 0.0023429838013983915
+28.974477122508222 0.0023469880539730096
+29.073260881725876 0.0023509854864224005
+29.17204464094353 0.0023549761334768406
+29.27082840016118 0.0023589600295728383
+29.369612159378832 0.0023629372088566055
+29.468395918596485 0.0023669077051874667
+29.567179677814135 0.0023708715521412287
+29.665963437031788 0.002374828783013486
+29.764747196249438 0.00237877943082289
+29.86353095546709 0.0023827235283143595
+29.962314714684744 0.0023866611079622485
+30.061098473902394 0.0023905922019734657
+30.159882233120047 0.0023945168422905487
+30.2586659923377 0.002398435060594691
+30.35744975155535 0.0024023468883087253
+30.456233510773004 0.0024062523566000665
+30.555017269990657 0.0024101514963836054
+30.653801029208307 0.002414044338324565
+30.75258478842596 0.002417930912841317
+30.851368547643613 0.0024218112501081506
+30.950152306861263 0.002425685380058007
+31.048936066078916 0.0024295533323851768
+31.147719825296566 0.002433415136547949
+31.24650358451422 0.0024372708217712345
+31.345287343731872 0.002441120417049144
+31.444071102949522 0.002444963951147531
+31.542854862167175 0.0024488014526064996
+31.64163862138483 0.00245263294974288
+31.740422380602478 0.002456458470652662
+31.83920613982013 0.0024602780432134035
+31.937989899037785 0.0024640916950865958
+32.036773658255434 0.0024678994537200025
+32.13555741747309 0.0024717013463499684
+32.23434117669074 0.0024754974000036844
+32.333124935908394 0.0024792876415014376
+32.43190869512605 0.0024830720974588147
+32.53069245434369 0.0024868507942888882
+32.62947621356135 0.002490623758204364
+32.728259972779 0.0024943910152197047
+32.82704373199665 0.0024981525911532197
+32.92582749121431 0.0025019085116291333
+33.02461125043196 0.0025056588020796167
+33.123395009649606 0.002509403487746803
+33.22217876886726 0.0025131425936847623
+33.32096252808491 0.0025168761447614645
+33.419746287302566 0.002520604165660703
+33.51853004652021 0.0025243266808840027
+33.617313805737865 0.0025280437147524966
+33.71609756495552 0.002531755291408781
+33.81488132417317 0.0025354614348187428
+33.913665083390825 0.0025391621687733683
+34.01244884260848 0.002542857516890522
+34.111232601826124 0.0025465475026167075
+34.21001636104378 0.0025502321492288003
+34.30880012026143 0.0025539114798357643
+34.407583879479084 0.0025575855173803398
+34.50636763869674 0.002561254284640715
+34.60515139791438 0.0025649178042321695
+34.70393515713204 0.002568576098608708
+34.80271891634969 0.0025722291900646586
+34.90150267556734 0.002575877100736261
+35.000286434785 0.002579519852603233
+35.09907019400265 0.0025831574674903116
+35.197853953220296 0.0025867899670687835
+35.29663771243795 0.0025904173728579873
+35.3954214716556 0.002594039706226802
+35.494205230873256 0.0025976569883951173
+35.59298899009091 0.0026012692404352817
+35.691772749308555 0.0026048764832735357
+35.79055650852621 0.002608478737691427
+35.88934026774386 0.0026120760243272052
+35.988124026961515 0.002615668363677203
+36.08690778617917 0.002619255776097198
+36.18569154539682 0.0026228382818037584
+36.28447530461447 0.002626415900875573
+36.38325906383212 0.0026299886532547634
+36.482042823049774 0.0026335565587481814
+36.58082658226743 0.0026371196370286883
+36.67961034148508 0.0026406779076364227
+36.77839410070273 0.002644231389980051
+36.87717785992038 0.0026477801033380002
+36.97596161913803 0.0026513240668596793
+37.074745378355686 0.0026548632995666848
+37.17352913757334 0.0026583978203539933
+37.27231289679099 0.0026619276479911357
+37.37109665600864 0.0026654528011233617
+37.46988041522629 0.0026689732982727895
+37.568664174443946 0.0026724891578395393
+37.6674479336616 0.0026760003981028567
+37.76623169287925 0.002679507037222221
+37.865015452096905 0.0026830090932384414
+37.96379921131455 0.0026865065840747386
+38.062582970532205 0.0026899995275378166
+38.16136672974986 0.00269348794131892
+38.26015048896751 0.0026969718429948786
+38.358934248185165 0.002700451250029141
+38.45771800740281 0.0027039261797727958
+38.556501766620464 0.002707396649465583
+38.65528552583812 0.0027108626762368877
+38.75406928505577 0.002714324277106731
+38.852853044273424 0.002717781468986742
+38.95163680349108 0.002721234268681124
+39.05042056270872 0.0027246826928876045
+39.149204321926376 0.002728126758198381
+39.24798808114403 0.0027315664811010483
+39.34677184036168 0.0027350018779795236
+39.445555599579336 0.002738432965114954
+39.54433935879698 0.002741859758686617
+39.643123118014636 0.0027452822747728134
+39.74190687723229 0.0027487005293517427
+39.84069063644994 0.002752114538302377
+39.939474395667595 0.0027555243174053217
+40.03825815488525 0.0027589298823436637
+40.137041914102895 0.0027623312487038147
+40.23582567332055 0.0027657284319763456
+40.3346094325382 0.002769121447556805
+40.433393191755854 0.0027725103107465354
+40.53217695097351 0.0027758950367534805
+40.630960710191154 0.002779275640692978
+40.72974446940881 0.002782652137588549
+40.82852822862646 0.0027860245423726756
+40.927311987844114 0.002789392869887574
+41.02609574706177 0.0027927571348859525
+41.12487950627942 0.002796117352031769
+41.223663265497066 0.0027994735359009753
+41.32244702471472 0.002802825700982254
+41.42123078393237 0.002806173861677751
+41.520014543150026 0.0028095180323037938
+41.61879830236768 0.002812858227091607
+41.71758206158533 0.0028161944601880202
+41.81636582080298 0.002819526745656166
+41.91514958002063 0.0028228550974761716
+42.013933339238285 0.0028261795295458437
+42.11271709845594 0.002829500055681343
+42.21150085767359 0.002832816689617858
+42.31028461689124 0.0028361294450102653
+42.40906837610889 0.0028394383354337868
+42.507852135326544 0.0028427433743846366
+42.6066358945442 0.0028460445752806663
+42.70541965376185 0.0028493419514619978
+42.804203412979504 0.0028526355161916537
+42.90298717219715 0.0028559252826561798
+43.001770931414804 0.00285921126396626
+43.10055469063246 0.0028624934731573265
+43.19933844985011 0.002865771923190164
+43.29812220906776 0.002869046626951505
+43.39690596828541 0.002872317597254622
+43.49568972750306 0.0028755848468399125
+43.594473486720716 0.0028788483883754766
+43.69325724593837 0.0028821082344576924
+43.79204100515602 0.002885364397611781
+43.890824764373676 0.002888616890292368
+43.98960852359132 0.002891865724884042
+44.088392282808975 0.0028951109137019026
+44.18717604202663 0.0028983524689921037
+44.28595980124428 0.0029015904029323952
+44.384743560461935 0.0029048247276326567
+44.48352731967958 0.0029080554551354234
+44.582311078897234 0.002911282597416412
+44.68109483811489 0.0029145061663850376
+44.77987859733254 0.0029177261738849254
+44.878662356550194 0.00292094263169442
+44.97744611576785 0.002924155551527087
+45.07622987498549 0.0029273649450322105
+45.17501363420315 0.0029305708237952885
+45.2737973934208 0.002933773199338516
+45.37258115263845 0.002936972083121273
+45.47136491185611 0.0029401674865405995
+45.57014867107376 0.0029433594209316715
+45.668932430291406 0.0029465478975682683
+45.76771618950906 0.0029497329276632384
+45.86649994872671 0.002952914522368959
+45.965283707944366 0.0029560926927777913
+46.06406746716202 0.0029592674499225326
+46.162851226379665 0.0029624388047768627
+46.26163498559732 0.0029656067682557853
+46.36041874481497 0.002968771351216068
+46.459202504032625 0.0029719325644566768
+46.55798626325028 0.002975090418719202
+46.65677002246793 0.002978244924688289
+46.75555378168558 0.0029813960929920584
+46.85433754090323 0.002984543934202522
+46.953121300120884 0.0029876884588359988
+47.05190505933854 0.0029908296773535235
+47.15068881855619 0.002993967600161254
+47.24947257777384 0.002997102237610872
+47.34825633699149 0.0030002335999999826
+47.44704009620914 0.0030033616975725067
+47.5458238554268 0.0030064865405190775
+47.64460761464445 0.0030096081389774194
+47.7433913738621 0.00301272650303274
+47.84217513307975 0.003015841642718105
+47.9409588922974 0.0030189535680148175
+48.039742651515056 0.0030220622888527883
+48.13852641073271 0.003025167815110909
+48.23731016995036 0.0030282701566174157
+48.33609392916801 0.0030313693231502534
+48.43487768838566 0.0030344653244374345
+48.533661447603315 0.0030375581701573948
+48.63244520682097 0.0030406478699393485
+48.73122896603862 0.003043734433363636
+48.830012725256275 0.003046817869962071
+48.92879648447392 0.003049898189218284
+49.027580243691574 0.003052975400568063
+49.12636400290923 0.0030560495133996903
+49.22514776212688 0.003059120537054276
+49.323931521344534 0.00306218848082609
+49.42271528056218 0.0030652533539628915
+49.52149903977983 0.0030683151656662505
+49.620282798997486 0.0030713739250918747
+49.71906655821514 0.0030744296413499246
+49.81785031743279 0.003077482323505333
+49.916634076650446 0.003080531980578118
+50.01541783586809 0.0030835786215436924
+50.114201595085746 0.0030866222553331745
+50.2129853543034 0.0030896628908336932
+50.31176911352105 0.003092700536888687
+50.410552872738705 0.003095735202298208
+50.50933663195636 0.0030987668958192198
+50.608120391174005 0.003101795626165889
+50.70690415039166 0.0031048214020098805
+50.80568790960931 0.0031078442319806437
+50.904471668826965 0.003110864124665703
+51.00325542804462 0.0031138810886109426
+51.102039187262264 0.0031168951323208845
+51.20082294647992 0.003119906264258974
+51.29960670569757 0.0031229144928478494
+51.398390464915224 0.0031259198264696267
+51.49717422413288 0.0031289222734661617
+51.59595798335053 0.0031319218421393294
+51.694741742568176 0.0031349185407512858
+51.79352550178583 0.0031379123775247338
+51.89230926100348 0.0031409033606431902
+51.991093020221136 0.003143891498251243
+52.08987677943879 0.003146876798454811
+52.188660538656436 0.0031498592693214016
+52.28744429787409 0.003152838918880366
+52.38622805709174 0.0031558157551231456
+52.485011816309395 0.0031587897860035304
+52.58379557552705 0.0031617610194378996
+52.6825793347447 0.003164729463305473
+52.78136309396235 0.003167695125448549
+52.88014685318 0.003170658013672754
+52.978930612397654 0.0031736181357472754
+53.07771437161531 0.003176575499405102
+53.17649813083296 0.003179530112343258
+53.27528189005061 0.003182481982223039
+53.37406564926826 0.003185431116670245
+53.472849408485914 0.0031883775232754044
+53.57163316770357 0.003191321209594007
+53.67041692692122 0.0031942621831467298
+53.76920068613887 0.0031972004514196593
+53.86798444535652 0.0032001360218645125
+53.96676820457417 0.0032030689018988623
+54.065551963791826 0.0032059990989063525
+54.16433572300948 0.0032089266202369134
+54.26311948222713 0.003211851473206982
+54.361903241444786 0.0032147736650997086
+54.46068700066243 0.003217693203165176
+54.559470759880085 0.0032206100946206026
+54.65825451909774 0.0032235243466505552
+54.75703827831539 0.00322643596640715
+54.855822037533045 0.003229344961010267
+54.95460579675069 0.0032322513375477404
+55.053389555968344 0.0032351551030755724
+55.152173315186 0.0032380562646181234
+55.25095707440365 0.003240954829168316
+55.349740833621304 0.003243850803687831
+55.44852459283896 0.003246744195107299
+55.547308352056604 0.003249635010326498
+55.64609211127426 0.0032525232562145437
+55.74487587049191 0.0032554089396100785
+55.84365962970956 0.003258292067321463
+55.94244338892722 0.003261172646126962
+56.04122714814486 0.0032640506827749296
+56.140010907362516 0.0032669261839839976
+56.23879466658017 0.0032697991564432523
+56.33757842579782 0.00327266960681242
+56.436362185015476 0.0032755375417220477
+56.53514594423313 0.0032784029677736803
+56.633929703450775 0.003281265891540036
+56.73271346266843 0.003284126319565188
+56.83149722188608 0.0032869842583647317
+56.930280981103735 0.0032898397144259634
+57.02906474032139 0.003292692694208049
+57.127848499539034 0.003295543204142197
+57.22663225875669 0.0032983912506318247
+57.32541601797434 0.003301236840052729
+57.424199777191994 0.0033040799787532513
+57.52298353640965 0.0033069206730544426
+57.6217672956273 0.0033097589292502257
+57.72055105484495 0.0033125947536075642
+57.8193348140626 0.0033154281523666163
+57.91811857328025 0.0033182591317409
+58.01690233249791 0.0033210876979174503
+58.11568609171556 0.0033239138570569766
+58.214469850933206 0.0033267376152940203
+58.31325361015086 0.0033295589787371094
+58.41203736936851 0.003332377953468913
+58.510821128586166 0.003335194545546394
+58.60960488780382 0.003338008761000962
+58.70838864702147 0.003340820605838621
+58.80717240623912 0.0033436300860401245
+58.90595616545677 0.003346437207561117
+59.004739924674425 0.003349241976332287
+59.10352368389208 0.0033520443982595093
+59.20230744310973 0.003354844479223995
+59.301091202327385 0.0033576422250824276
+59.39987496154503 0.0033604376416671135
+59.498658720762684 0.0033632307347861204
+59.59744247998034 0.003366021510223419
+59.69622623919799 0.003368809973739021
+59.795009998415644 0.00337159613106912
+59.89379375763329 0.0033743799879262294
+59.99257751685094 0.003377161549999315
+60.0913612760686 0.0033799408229539364
+60.19014503528625 0.003382717812432378
+60.2889287945039 0.0033854925240537816
+60.387712553721556 0.0033882649634142843
+60.4864963129392 0.0033910351360871447
+60.585280072156856 0.0033938030476228756
+60.68406383137451 0.003396568703549374
+60.78284759059216 0.0033993321093720497
+60.881631349809815 0.003402093270573955
+60.98041510902746 0.0034048521926159066
+61.079198868245115 0.003407608880936617
+61.17798262746277 0.0034103633409528172
+61.27676638668042 0.0034131155780593803
+61.375550145898075 0.0034158655976294465
+61.47433390511573 0.003418613405014544
+61.573117664333374 0.00342135900554471
+61.67190142355103 0.0034241024045286155
+61.77068518276868 0.003426843607253679
+61.869468941986334 0.003429582618986188
+61.96825270120399 0.0034323194449714205
+62.06703646042163 0.0034350540904337554
+62.165820219639286 0.003437786560576796
+62.26460397885694 0.003440516860583478
+62.36338773807459 0.0034432449956161917
+62.462171497292246 0.003445970970816891
+62.5609552565099 0.0034486947913072072
+62.659739015727546 0.003451416462188563
+62.7585227749452 0.003454135988542283
+62.85730653416285 0.0034568533754297036
+62.956090293380505 0.0034595686278922825
+63.05487405259816 0.003462281750951711
+63.15365781181581 0.0034649927496100195
+63.25244157103346 0.003467701628849685
+63.35122533025111 0.0034704083936337405
+63.450009089468765 0.003473113048905877
+63.54879284868642 0.0034758155995905527
+63.64757660790407 0.003478516050593096
+63.74636036712172 0.003481214406799809
+63.84514412633937 0.003483910673078072
+63.943927885557024 0.003486604854276444
+64.04271164477468 0.003489296955224766
+64.14149540399234 0.0034919869807342606
+64.24027916320999 0.0034946749355976355
+64.33906292242763 0.0034973608245891775
+64.43784668164528 0.003500044652464858
+64.53663044086294 0.003502726423962426
+64.63541420008059 0.0035054061438015084
+64.73419795929824 0.0035080838166837063
+64.8329817185159 0.0035107594472926907
+64.93176547773355 0.003513433040294298
+65.0305492369512 0.0035161046003366276
+65.12933299616886 0.003518774132050131
+65.22811675538651 0.00352144164004771
+65.32690051460416 0.0035241071289248095
+65.42568427382182 0.003526770603259507
+65.52446803303947 0.0035294320676126038
+65.62325179225712 0.0035320915265277223
+65.72203555147476 0.00353474898453139
+65.82081931069241 0.003537404446133132
+65.91960306991007 0.00354005791582556
+66.01838682912772 0.0035427093980844606
+66.11717058834537 0.003545358897368886
+66.21595434756303 0.003548006418121236
+66.31473810678068 0.003550651964767349
+66.41352186599833 0.0035532955417165897
+66.51230562521599 0.0035559371533619307
+66.61108938443364 0.00355857680408004
+66.7098731436513 0.003561214498231364
+66.80865690286893 0.003563850240160215
+66.90744066208659 0.003566484034194851
+67.00622442130424 0.0035691158846475604
+67.10500818052189 0.0035717457958147434
+67.20379193973955 0.0035743737719769954
+67.3025756989572 0.0035769998173991856
+67.40135945817485 0.0035796239363305423
+67.5001432173925 0.0035822461330047273
+67.59892697661016 0.0035848664116399204
+67.69771073582781 0.003587484776438897
+67.79649449504547 0.0035901012315891034
+67.8952782542631 0.003592715781262742
+67.99406201348076 0.003595328429616842
+68.09284577269841 0.0035979391807933418
+68.19162953191606 0.0036005480389191616
+68.29041329113372 0.0036031550081062824
+68.38919705035137 0.003605760092451817
+68.48798080956902 0.0036083632960380936
+68.58676456878668 0.003610964622932722
+68.68554832800433 0.003613564077188671
+68.78433208722198 0.0036161616628443438
+68.88311584643964 0.0036187573839236483
+68.98189960565728 0.003621351244436071
+69.08068336487493 0.0036239432483767507
+69.17946712409258 0.003626533399726548
+69.27825088331024 0.003629121702452117
+69.37703464252789 0.0036317081605059774
+69.47581840174554 0.003634292777826584
+69.5746021609632 0.0036368755583383967
+69.67338592018085 0.003639456505951951
+69.7721696793985 0.0036420356245639254
+69.87095343861616 0.0036446129180572107
+69.96973719783381 0.0036471883903009803
+70.06852095705145 0.0036497620451507533
+70.1673047162691 0.0036523338864484674
+70.26608847548675 0.003654903918022542
+70.36487223470441 0.0036574721436879436
+70.46365599392206 0.003660038567246258
+70.56243975313971 0.003662603192485748
+70.66122351235737 0.003665166023181426
+70.76000727157502 0.003667727063095114
+70.85879103079267 0.003670286315975508
+70.95757479001033 0.003672843785558246
+71.05635854922798 0.0036753994755659666
+71.15514230844562 0.003677953389708377
+71.25392606766327 0.003680505531682312
+71.35270982688093 0.0036830559051717984
+71.45149358609858 0.0036856045138481163
+71.55027734531623 0.003688151361369862
+71.64906110453389 0.003690696451383008
+71.74784486375154 0.003693239787520962
+71.84662862296919 0.0036957813734046336
+71.94541238218684 0.003698321212642487
+72.0441961414045 0.0037008593088306064
+72.14297990062215 0.003703395665552752
+72.24176365983979 0.0037059302863804203
+72.34054741905744 0.0037084631748729047
+72.4393311782751 0.003710994334577349
+72.53811493749275 0.0037135237690288105
+72.6368986967104 0.003716051481750313
+72.73568245592806 0.003718577476252909
+72.83446621514571 0.0037211017560357324
+72.93324997436336 0.0037236243245860573
+73.03203373358102 0.0037261451853793518
+73.13081749279867 0.0037286643418793387
+73.22960125201632 0.003731181797538046
+73.32838501123398 0.0037336975557958627
+73.42716877045162 0.0037362116200815977
+73.52595252966927 0.003738723993812529
+73.62473628888692 0.0037412346803944647
+73.72352004810458 0.0037437436832217863
+73.82230380732223 0.0037462510056775135
+73.92108756653988 0.0037487566511333515
+74.01987132575753 0.0037512606229497436
+74.11865508497519 0.003753762924475926
+74.21743884419284 0.0037562635590499788
+74.3162226034105 0.0037587625299988787
+74.41500636262815 0.00376125984063855
+74.51379012184579 0.003763755494273915
+74.61257388106344 0.0037662494941989497
+74.7113576402811 0.003768741843696726
+74.81014139949875 0.0037712325460394717
+74.9089251587164 0.003773721604488613
+75.00770891793405 0.003776209022294829
+75.1064926771517 0.0037786948026980994
+75.20527643636936 0.003781178948927753
+75.30406019558701 0.003783661464202518
+75.40284395480467 0.003786142351730571
+75.50162771402232 0.0037886216147095847
+75.60041147323996 0.003791099256326773
+75.69919523245761 0.003793575279758947
+75.79797899167527 0.003796049688172552
+75.89676275089292 0.003798522484723723
+75.99554651011057 0.0038009936725583275
+76.09433026932822 0.0038034632548120144
+76.19311402854588 0.0038059312346102572
+76.29189778776353 0.003808397615068405
+76.39068154698118 0.0038108623992917233
+76.48946530619884 0.003813325590375444
+76.58824906541649 0.0038157871914048075
+76.68703282463413 0.0038182472054551077
+76.78581658385178 0.0038207056355917418
+76.88460034306944 0.0038231624848702487
+76.98338410228709 0.003825617756336356
+77.08216786150474 0.0038280714530260235
+77.1809516207224 0.003830523577965489
+77.27973537994005 0.003832974134171308
+77.3785191391577 0.003835423124650401
+77.47730289837536 0.0038378705524000937
+77.57608665759301 0.003840316420408162
+77.67487041681066 0.003842760731652872
+77.7736541760283 0.0038452034891030243
+77.87243793524596 0.0038476446957179957
+77.97122169446361 0.0038500843544477807
+78.07000545368126 0.0038525224682330332
+78.16878921289891 0.0038549590400051075
+78.26757297211657 0.0038573940726861003
+78.36635673133422 0.00385982756918889
+78.46514049055187 0.0038622595324171796
+78.56392424976953 0.003864689965265536
+78.66270800898718 0.0038671188706194287
+78.76149176820483 0.0038695462513552727
+78.86027552742247 0.003871972110340466
+78.95905928664013 0.0038743964504334297
+79.05784304585778 0.0038768192744836473
+79.15662680507543 0.0038792405853317054
+79.25541056429309 0.003881660385809329
+79.35419432351074 0.003884078678739423
+79.4529780827284 0.0038864954669361115
+79.55176184194605 0.0038889107532047713
+79.6505456011637 0.003891324540342075
+79.74932936038135 0.0038937368311360255
+79.848113119599 0.0038961476283659955
+79.94689687881664 0.0038985569348027648
+80.0456806380343 0.0039009647532085557
+80.14446439725195 0.0039033710863370704
+80.2432481564696 0.003905775936933531
+80.34203191568726 0.0039081793077347105
+80.44081567490491 0.003910581201468973
+80.53959943412256 0.003912981620856309
+80.63838319334022 0.0039153805686083735
+80.73716695255787 0.003917778047428515
+80.83595071177552 0.003920174060011819
+80.93473447099318 0.003922568609045138
+81.03351823021082 0.003924961697207128
+81.13230198942847 0.003927353327168287
+81.23108574864612 0.003929743501590985
+81.32986950786378 0.003932132223129498
+81.42865326708143 0.003934519494430049
+81.52743702629908 0.003936905318130834
+81.62622078551674 0.003939289696862062
+81.72500454473439 0.003941672633245988
+81.82378830395204 0.003944054129896941
+81.9225720631697 0.003946434189421366
+82.02135582238735 0.003948812814417851
+82.120139581605 0.003951190007477164
+82.21892334082264 0.003953565771182281
+82.3177071000403 0.003955940108108426
+82.41649085925795 0.003958313020823096
+82.5152746184756 0.003960684511886098
+82.61405837769325 0.00396305458384958
+82.71284213691091 0.0039654232392580665
+82.81162589612856 0.003967790480648479
+82.91040965534621 0.0039701563105501835
+83.00919341456387 0.003972520731485011
+83.10797717378152 0.003974883745967291
+83.20676093299917 0.003977245356503885
+83.30554469221681 0.003979605565594218
+83.40432845143447 0.003981964375730304
+83.50311221065212 0.003984321789396784
+83.60189596986977 0.003986677809070949
+83.70067972908743 0.003989032437222779
+83.79946348830508 0.003991385676314964
+83.89824724752273 0.0039937375288029405
+83.99703100674039 0.0039960879971349195
+84.09581476595804 0.0039984370837519165
+84.19459852517569 0.00400078479108778
+84.29338228439335 0.004003131121569221
+84.39216604361098 0.0040054760776158434
+84.49094980282864 0.004007819661640174
+84.58973356204629 0.004010161876047689
+84.68851732126394 0.004012502723236842
+84.7873010804816 0.004014842205599098
+84.88608483969925 0.004017180325518957
+84.9848685989169 0.0040195170853739816
+85.08365235813456 0.0040218524875348305
+85.18243611735221 0.004024186534365282
+85.28121987656986 0.004026519228222265
+85.38000363578752 0.0040288505714558805
+85.47878739500516 0.00403118056640944
+85.57757115422281 0.004033509215419482
+85.67635491344046 0.004035836520815808
+85.77513867265812 0.004038162484921503
+85.87392243187577 0.004040487110052965
+85.97270619109342 0.004042810398519935
+86.07148995031108 0.00404513235262552
+86.17027370952873 0.00404745297466622
+86.26905746874638 0.004049772266931956
+86.36784122796404 0.004052090231706094
+86.46662498718169 0.004054406871265476
+86.56540874639933 0.004056722187880439
+86.66419250561698 0.00405903618381485
+86.76297626483463 0.00406134886132612
+86.86176002405229 0.004063660222665243
+86.96054378326994 0.00406597027007681
+87.0593275424876 0.004068279005799043
+87.15811130170525 0.004070586432063813
+87.2568950609229 0.004072892551096673
+87.35567882014055 0.004075197365116875
+87.45446257935821 0.0040775008763374015
+87.55324633857586 0.004079803086964986
+87.6520300977935 0.004082103999200141
+87.75081385701115 0.00408440361523718
+87.8495976162288 0.004086701937264242
+87.94838137544646 0.004088998967463316
+88.04716513466411 0.004091294708010267
+88.14594889388177 0.00409358916107486
+88.24473265309942 0.00409588232882078
+88.34351641231707 0.004098174213405659
+88.44230017153473 0.004100464816981101
+88.54108393075238 0.0041027541416927
+88.63986768997003 0.004105042189680073
+88.73865144918767 0.00410732896307687
+88.83743520840532 0.0041096144640108126
+88.93621896762298 0.004111898694603703
+89.03500272684063 0.004114181656971456
+89.13378648605828 0.004116463353224117
+89.23257024527594 0.004118743785465892
+89.33135400449359 0.0041210229557951585
+89.43013776371124 0.004123300866304498
+89.5289215229289 0.004125577519080713
+89.62770528214655 0.004127852916204856
+89.7264890413642 0.004130127059752241
+89.82527280058186 0.004132399951792475
+89.9240565597995 0.0041346715943894755
+90.02284031901715 0.0041369419896014935
+90.1216240782348 0.004139211139481135
+90.22040783745246 0.004141479046075385
+90.31919159667011 0.004143745711425622
+90.41797535588776 0.00414601113756765
+90.51675911510542 0.004148275326531708
+90.61554287432307 0.004150538280342504
+90.71432663354072 0.004152800001019224
+90.81311039275838 0.004155060490575561
+90.91189415197603 0.004157319751019734
+91.01067791119367 0.004159577784354505
+91.10946167041132 0.0041618345925772075
+91.20824542962897 0.004164090177679759
+91.30702918884663 0.004166344541648687
+91.40581294806428 0.004168597686465146
+91.50459670728193 0.0041708496141049396
+91.60338046649959 0.004173100326538541
+91.70216422571724 0.004175349825731114
+91.8009479849349 0.004177598113642526
+91.89973174415255 0.004179845192227381
+91.9985155033702 0.004182091063435026
+92.09729926258784 0.00418433572920958
+92.19608302180549 0.004186579191489947
+92.29486678102315 0.004188821452209843
+92.3936505402408 0.004191062513297808
+92.49243429945845 0.004193302376677229
+92.5912180586761 0.004195541044266359
+92.69000181789376 0.004197778517978338
+92.78878557711141 0.004200014799721206
+92.88756933632907 0.004202249891397932
+92.98635309554672 0.004204483794906419
+93.08513685476437 0.004206716512139538
+93.18392061398201 0.004208948044985135
+93.28270437319966 0.004211178395326058
+93.38148813241732 0.004213407565040167
+93.48027189163497 0.00421563555600036
+93.57905565085262 0.0042178623700745875
+93.67783941007028 0.004220088009125873
+93.77662316928793 0.004222312475012329
+93.87540692850558 0.004224535769587173
+93.97419068772324 0.004226757894698755
+94.07297444694089 0.0042289788521905625
+94.17175820615854 0.004231198643901249
+94.27054196537618 0.0042334172716646445
+94.36932572459384 0.0042356347373097795
+94.46810948381149 0.004237851042660896
+94.56689324302914 0.004240066189537469
+94.6656770022468 0.0042422801797542264
+94.76446076146445 0.004244493015121159
+94.8632445206821 0.004246704697443544
+94.96202827989976 0.004248915228521961
+95.06081203911741 0.004251124610152305
+95.15959579833506 0.004253332844125809
+95.25837955755271 0.004255539932229058
+95.35716331677035 0.004257745876244007
+95.455947075988 0.004259950677947998
+95.55473083520566 0.004262154339113773
+95.65351459442331 0.004264356861509497
+95.75229835364097 0.004266558246898767
+95.85108211285862 0.004268758497040637
+95.94986587207627 0.004270957613689627
+96.04864963129393 0.004273155598595744
+96.14743339051158 0.004275352453504496
+96.24621714972923 0.0042775481801569076
+96.34500090894689 0.004279742780289538
+96.44378466816453 0.004281936255634497
+96.54256842738218 0.004284128607919461
+96.64135218659983 0.004286319838867685
+96.74013594581749 0.004288509950198023
+96.83891970503514 0.004290698943624944
+96.93770346425279 0.004292886820858543
+97.03648722347044 0.004295073583604561
+97.1352709826881 0.004297259233564398
+97.23405474190575 0.0042994437724351315
+97.3328385011234 0.004301627201909529
+97.43162226034106 0.0043038095236760604
+97.5304060195587 0.004305990739418922
+97.62918977877635 0.004308170850818044
+97.727973537994 0.00431034985954911
+97.82675729721166 0.004312527767283567
+97.92554105642931 0.004314704575688646
+98.02432481564696 0.004316880286427375
+98.12310857486462 0.004319054901158592
+98.22189233408227 0.004321228421536961
+98.32067609329992 0.004323400849212986
+98.41945985251758 0.004325572185833029
+98.51824361173523 0.004327742433039319
+98.61702737095288 0.004329911592469971
+98.71581113017052 0.004332079665758998
+98.81459488938818 0.004334246654536328
+98.91337864860583 0.004336412560427815
+99.01216240782348 0.004338577385055252
+99.11094616704113 0.0043407411300363935
+99.20972992625879 0.00434290379698496
+99.30851368547644 0.004345065387510658
+99.4072974446941 0.004347225903219189
+99.50608120391175 0.004349385345712272
+99.6048649631294 0.0043515437165876445
+99.70364872234705 0.004353701017439091
+99.8024324815647 0.004355857249856442
+99.90121624078235 0.0043580124154256016
+100.0 0.00436016651572855
diff --git a/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/plotGraph b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/plotGraph
new file mode 100755
index 00000000000..4df5a7c3c84
--- /dev/null
+++ b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/plotGraph
@@ -0,0 +1,25 @@
+createGraphs()
+{
+    OF=$1
+    EXPT=$2
+
+    gnuplot<<EOF
+    set terminal postscript default
+    set output "OF_vs_Exact.eps"
+    set xlabel "t [sec]"
+    set ylabel "x [mm]"
+    set grid
+
+
+    plot \
+        "$EXPT" u 1:2 title "Exact", \
+        "$OF" u 1:2 title "OpenFOAM" with line lt -1 lw 1
+EOF
+}
+
+sed -e 's/[()]//g' "postProcessing/interfaceHeight1/1.36/position.dat" > "positionClean.dat"
+
+OF="positionClean.dat"
+EXPT="data.dat"
+
+createGraphs $OF $EXPT
diff --git a/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/system/blockMeshDict b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/system/blockMeshDict
new file mode 100755
index 00000000000..ae1a229613f
--- /dev/null
+++ b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/system/blockMeshDict
@@ -0,0 +1,63 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  plus                                  |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      blockMeshDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+convertToMeters 0.001;
+
+vertices
+(
+    (0 0 -0.0)
+    (10 0 -0.0)
+    (10 0.2 -0.0)
+    (0 0.2 -0.0)
+    (0 0 0.02)
+    (10 0 0.02)
+    (10 0.2 0.02)
+    (0 0.2 0.02)
+);
+
+blocks
+(
+    hex (0 1 2 3 4 5 6 7) (400 2 1)
+    simpleGrading (1 1 1)
+);
+
+patches
+(
+   /* wall sideWalls
+    (
+        (1 5 4 0)
+        (3 7 6 2)
+    )*/
+    wall faceWall
+    (
+      (0 4 7 3)
+    )
+
+    patch outlet
+    (
+      (2 6 5 1)
+    )
+    empty frontAndBack
+    (
+        (0 3 2 1)
+        (4 5 6 7)
+        (1 5 4 0)
+        (3 7 6 2)
+
+    )
+);
+
+// ************************************************************************* //
diff --git a/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/system/controlDict b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/system/controlDict
new file mode 100755
index 00000000000..28ec10d7217
--- /dev/null
+++ b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/system/controlDict
@@ -0,0 +1,68 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  plus                                  |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      controlDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+application     icoReactingMultiphaseInterFoam;
+
+startFrom       startTime;
+
+startTime       1.36;
+
+stopAt          endTime;
+
+endTime         40;
+
+deltaT          1e-5;
+
+writeControl    adjustableRunTime;
+
+writeInterval   4;
+
+purgeWrite      0;
+
+writeFormat     ascii;
+
+writePrecision  12;
+
+writeCompression off;
+
+timeFormat      general;
+
+timePrecision   10;
+
+runTimeModifiable yes;
+
+adjustTimeStep  yes;
+
+maxCo           0.01;
+maxAlphaCo      0.01;
+maxAlphaDdt     0.01;
+
+functions
+{
+    interfaceHeight1
+    {
+        type           interfaceHeight;
+        libs           ("libfieldFunctionObjects.so");
+        alpha          alpha.liquid;
+        locations      ((0 0 0));
+        direction       (1 0 0);
+        writeControl    timeStep;
+        writeInterval   3;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/system/fvSchemes b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/system/fvSchemes
new file mode 100755
index 00000000000..124059f30d4
--- /dev/null
+++ b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/system/fvSchemes
@@ -0,0 +1,66 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  plus                                  |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      fvSchemes;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ddtSchemes
+{
+    default         Euler;
+}
+
+gradSchemes
+{
+    default         Gauss linear;
+}
+
+divSchemes
+{
+    div(rhoPhi,U)           Gauss linearUpwind grad(U);
+    "div\(phi,alpha.*\)"    Gauss vanLeer;
+    "div\(phir,alpha.*\)"   Gauss linear;
+
+    "div\(phi,.*\.gas.*\)"  Gauss vanLeer;
+
+    div(((rho*nuEff)*dev2(T(grad(U))))) Gauss linear;
+
+    div(phi,T)              Gauss vanLeer;
+
+    div(rhoPhi,epsilon)     Gauss upwind;
+    div(rhoPhi,k)           Gauss upwind;
+}
+
+laplacianSchemes
+{
+    default        Gauss linear uncorrected;
+}
+
+interpolationSchemes
+{
+    default         linear;
+}
+
+snGradSchemes
+{
+    default         uncorrected;
+}
+
+
+fluxRequired
+{
+    default         no;
+    p_rgh;
+    "alpha.*";
+}
+
+// ************************************************************************* //
diff --git a/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/system/fvSolution b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/system/fvSolution
new file mode 100755
index 00000000000..b28aad30b3b
--- /dev/null
+++ b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/system/fvSolution
@@ -0,0 +1,111 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  plus                                  |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      fvSolution;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+solvers
+{
+    "alpha.*"
+    {
+        nAlphaCorr      1;
+        nAlphaSubCycles 1;
+        cAlphas          ((liquid and gas) 0.1);
+
+        solver          smoothSolver;
+        smoother        symGaussSeidel;
+        tolerance       1e-8;
+        relTol          0;
+    }
+
+    rho
+    {
+        solver           diagonal;
+        tolerance       1e-7;
+        relTol          0.1;
+    }
+
+    rhoFinal
+    {
+        $rho;
+        tolerance       1e-7;
+        relTol          0;
+    }
+
+    p_rgh
+    {
+        solver           PCG;
+        preconditioner   DIC;
+        tolerance        1e-9;
+        relTol           0.001;
+        smoother         DIC;
+    }
+
+    mDotSmearFinal
+    {
+        solver           PCG;
+        tolerance        1e-6;
+        preconditioner   DIC;
+        relTol           0.00;
+        smoother         DIC;
+    }
+
+    p_rghFinal
+    {
+        $p_rgh;
+        tolerance        1e-9;
+        relTol           0;
+        minIter 10;
+    }
+
+    pcorrFinal
+    {
+        $p_rgh;
+        tolerance        1e-9;
+        relTol           0;
+    }
+
+
+    "(U|h|T.*|k|epsilon|R)"
+    {
+        solver           smoothSolver;
+        smoother         symGaussSeidel;
+        tolerance        1e-8;
+        relTol           0.01;
+    }
+
+    "(U|h|T.*|k|epsilon|R)Final"
+    {
+        $U;
+        tolerance        1e-8;
+        relTol           0;
+    }
+}
+
+PIMPLE
+{
+    momentumPredictor   yes;
+    nCorrectors         4;
+    nOuterCorrectors    1;
+    nNonOrthogonalCorrectors 0;
+}
+
+relaxationFactors
+{
+    equations
+    {
+        ".*"           1;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/system/setAlphaFieldDict b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/system/setAlphaFieldDict
new file mode 100755
index 00000000000..9c5ecfe7e82
--- /dev/null
+++ b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/system/setAlphaFieldDict
@@ -0,0 +1,23 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  plus                                  |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system/fluid";
+    object      setFieldsDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+field "alpha.gas";
+type plane;
+origin (0.503e-3 0 0);
+direction (1 0 0);
+
+// ************************************************************************* //
diff --git a/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/system/setAlphaFieldDict.gas b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/system/setAlphaFieldDict.gas
new file mode 100755
index 00000000000..9c5ecfe7e82
--- /dev/null
+++ b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/system/setAlphaFieldDict.gas
@@ -0,0 +1,23 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  plus                                  |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system/fluid";
+    object      setFieldsDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+field "alpha.gas";
+type plane;
+origin (0.503e-3 0 0);
+direction (1 0 0);
+
+// ************************************************************************* //
diff --git a/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/system/setAlphaFieldDict.liquid b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/system/setAlphaFieldDict.liquid
new file mode 100755
index 00000000000..d8f07547ed0
--- /dev/null
+++ b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/system/setAlphaFieldDict.liquid
@@ -0,0 +1,23 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  plus                                  |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system/fluid";
+    object      setFieldsDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+field "alpha.liquid";
+type plane;
+origin (0.503e-3 0 0);
+direction (-1 0 0);
+
+// ************************************************************************* //
diff --git a/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/0.orig/T b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/0.orig/T
new file mode 100755
index 00000000000..5fac80f7245
--- /dev/null
+++ b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/0.orig/T
@@ -0,0 +1,45 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  plus                                  |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      T;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 1 0 0 0];
+
+internalField   uniform 373.15;
+
+boundaryField
+{
+    sideWalls
+    {
+        type            zeroGradient;
+    }
+
+    faceWall
+    {
+        type            fixedValue;
+        value           uniform 378.15;
+    }
+
+    outlet
+    {
+        type            zeroGradient;
+    }
+
+    frontAndBack
+    {
+        type            empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/0.orig/U b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/0.orig/U
new file mode 100755
index 00000000000..cc77ed99d50
--- /dev/null
+++ b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/0.orig/U
@@ -0,0 +1,46 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  plus                                  |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volVectorField;
+    object      U;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -1 0 0 0 0];
+
+internalField   uniform (0 0 0);
+
+boundaryField
+{
+    sideWalls
+    {
+        type            slip;
+        value           uniform (0 0 0);
+    }
+
+    faceWall
+    {
+        type            noSlip;
+    }
+
+    frontAndBack
+    {
+        type            empty;
+    }
+
+    outlet
+    {
+        type            pressureInletOutletVelocity;
+        value           uniform (0 0 0);
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/0.orig/alpha.liquid b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/0.orig/alpha.liquid
new file mode 100755
index 00000000000..3141db82d52
--- /dev/null
+++ b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/0.orig/alpha.liquid
@@ -0,0 +1,34 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  plus                                  |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      alpha.liquid;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    ".*"
+    {
+        type            zeroGradient;
+    }
+
+    frontAndBack
+    {
+        type            empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/0.orig/p b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/0.orig/p
new file mode 100755
index 00000000000..94ea98497b8
--- /dev/null
+++ b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/0.orig/p
@@ -0,0 +1,48 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  plus                                  |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      p;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 -1 -2 0 0 0 0];
+
+internalField   uniform 1e5;
+
+boundaryField
+{
+  sideWalls
+  {
+      type            fixedFluxPressure;
+  }
+
+  faceWall
+  {
+      type            fixedFluxPressure;
+  }
+
+  outlet
+  {
+      //type            fixedValue;
+      type            totalPressure;
+      rho             rho;
+      p0              uniform 1e5;
+      value           uniform 1e5;
+  }
+
+  frontAndBack
+  {
+      type            empty;
+  }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/0.orig/p_rgh b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/0.orig/p_rgh
new file mode 100755
index 00000000000..b35272aaf64
--- /dev/null
+++ b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/0.orig/p_rgh
@@ -0,0 +1,48 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  plus                                  |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      p_rgh;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 -1 -2 0 0 0 0];
+
+internalField   uniform 1e5;
+
+boundaryField
+{
+  sideWalls
+  {
+      type            fixedFluxPressure;
+  }
+
+  faceWall
+  {
+      type            fixedFluxPressure;
+  }
+
+  outlet
+  {
+      //type            fixedValue;
+      type            totalPressure;
+      rho             rho;
+      p0              uniform 1e5;
+      value           uniform 1e5;
+  }
+
+  frontAndBack
+  {
+      type            empty;
+  }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/Allclean b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/Allclean
new file mode 100755
index 00000000000..f576c0f68a1
--- /dev/null
+++ b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/Allclean
@@ -0,0 +1,12 @@
+#!/bin/sh
+cd ${0%/*} || exit 1    # Run from this directory
+
+# Source tutorial clean functions
+. $WM_PROJECT_DIR/bin/tools/CleanFunctions
+
+cleanCase
+rm -rf 0
+rm positionClean.dat
+rm OF_vs_Exact.eps
+
+#------------------------------------------------------------------------------
diff --git a/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/Allrun b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/Allrun
new file mode 100755
index 00000000000..2fbae4635b1
--- /dev/null
+++ b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/Allrun
@@ -0,0 +1,14 @@
+#!/bin/sh
+cd ${0%/*} || exit 1    # Run from this directory
+
+# Source tutorial run functions
+. $WM_PROJECT_DIR/bin/tools/RunFunctions
+
+runApplication blockMesh
+restore0Dir
+cp -r 0 1.36
+runApplication setAlphaField
+
+runApplication $(getApplication)
+
+#------------------------------------------------------------------------------
diff --git a/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/constant/g b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/constant/g
new file mode 100644
index 00000000000..4930967bdd6
--- /dev/null
+++ b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/constant/g
@@ -0,0 +1,22 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1906                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     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/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/constant/phaseChangeProperties b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/constant/phaseChangeProperties
new file mode 100755
index 00000000000..04d24b35f73
--- /dev/null
+++ b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/constant/phaseChangeProperties
@@ -0,0 +1,33 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1906                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      phaseChangeProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+phaseChangeTwoPhaseModel constant;//interfaceHeatResistance;
+
+
+R               1e6;
+maxAlphaRate    1;
+spread          3;
+
+
+coeffC          0;
+coeffE          500;
+
+// interfacePhaseChangeCoeffs
+// {
+//     R_               1e6;
+// }
+
+// ************************************************************************* //
diff --git a/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/constant/thermophysicalProperties b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/constant/thermophysicalProperties
new file mode 100755
index 00000000000..3215af0986c
--- /dev/null
+++ b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/constant/thermophysicalProperties
@@ -0,0 +1,20 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1906                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      thermophysicalProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+TSat             TSat       [0 0 0 1 0]    373.15;   // saturation temperature
+
+
+// ************************************************************************* //
diff --git a/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/constant/transportProperties b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/constant/transportProperties
new file mode 100644
index 00000000000..e7f0365ed22
--- /dev/null
+++ b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/constant/transportProperties
@@ -0,0 +1,49 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1906                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      transportProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+phases (liquid vapour); // FC-72
+
+liquid
+{
+    transportModel  Newtonian;
+    nu              1e-6;
+    rho             958.4;
+
+
+    Cp              4216;  // irrelevant
+    Cv              4216;  // irrelevant
+    kappa           0.671; // irrelevant
+    hf              0;
+}
+
+vapour
+{
+    transportModel  Newtonian;
+    nu              1e-5; // irrelevant
+    rho             0.581;
+
+
+    Cp              2030;      // FC72 vapour
+    Cv              2030;      // Cv = Cp - R/w
+    kappa           0.025;       // FC72 vapour // 0.01;
+    hf              2260.0e3;
+}
+
+sigma 0;
+
+Prt             0.7;
+
+// ************************************************************************* //
diff --git a/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/constant/turbulenceProperties b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/constant/turbulenceProperties
new file mode 100755
index 00000000000..5eec0426726
--- /dev/null
+++ b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/constant/turbulenceProperties
@@ -0,0 +1,21 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  plus                                  |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      turbulenceProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+simulationType  laminar;
+
+
+// ************************************************************************* //
diff --git a/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/data.dat b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/data.dat
new file mode 100644
index 00000000000..b55f154e1eb
--- /dev/null
+++ b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/data.dat
@@ -0,0 +1,1001 @@
+t pos
+1.3150245415656703 0.0005
+1.4138083007833222 0.0005184398054516621
+1.5125920600009741 0.0005362458985889908
+1.6113758192186263 0.0005534794446321124
+1.7101595784362782 0.0005701923600917754
+1.8089433376539301 0.0005864291597318349
+1.9077270968715823 0.0006022283547463896
+2.006510856089234 0.0006176235286461328
+2.105294615306886 0.0006326441772545272
+2.204078374524538 0.0006473163731057749
+2.30286213374219 0.0006616632971289642
+2.4016458929598423 0.0006757056686489534
+2.500429652177494 0.0006894620965079127
+2.599213411395146 0.0007029493683031827
+2.697997170612798 0.0007161826905717568
+2.79678092983045 0.0007291758897216487
+2.895564689048102 0.0007419415812772021
+2.994348448265754 0.000754491313339572
+3.093132207483406 0.0007668356889071017
+3.1919159667010577 0.0007789844707427657
+3.29069972591871 0.0007909466717390901
+3.389483485136362 0.0008027306331590325
+3.488267244354014 0.0008143440926835894
+3.587051003571666 0.0008257942438437166
+3.6858347627893178 0.0008370877881334626
+3.7846185220069697 0.0008482309808766301
+3.8834022812246216 0.0008592296717384049
+3.9821860404422735 0.0008700893406268371
+4.0809697996599255 0.0008808151296096142
+4.179753558877578 0.0008914118713736983
+4.27853731809523 0.0009018841146747823
+4.377321077312882 0.0009122361471567948
+4.476104836530533 0.0009224720158661888
+4.5748885957481855 0.0009325955457394098
+4.673672354965838 0.0009426103563030404
+4.772456114183489 0.0009525198767933937
+4.871239873401141 0.0009623273598746214
+4.970023632618794 0.0009720358941109204
+5.068807391836446 0.0009816484153284074
+5.167591151054097 0.000991167716985138
+5.266374910271749 0.001000596459653085
+5.365158669489402 0.0010099371797032948
+5.463942428707053 0.0010191922972745634
+5.562726187924705 0.0010283641235965786
+5.661509947142358 0.0010374548677303107
+5.7602937063600095 0.001046466642781352
+5.859077465577661 0.001055401471635714
+5.957861224795312 0.0010642612922621907
+6.056644984012966 0.0010730479626206582
+6.155428743230617 0.001081763265211526
+6.254212502448269 0.0010904089112978945
+6.352996261665922 0.0010989865448287422
+6.451780020883573 0.0011074977460886204
+6.550563780101225 0.0011159440350968013
+6.649347539318876 0.0011243268747765877
+6.74813129853653 0.0011326476739134928
+6.846915057754181 0.0011409077899192392
+6.945698816971833 0.0011491085314169242
+7.044482576189486 0.0011572511606612963
+7.143266335407137 0.0011653368958068197
+7.242050094624789 0.0011733669130350624
+7.34083385384244 0.0011813423485519297
+7.4396176130600935 0.0011892643004643444
+7.538401372277745 0.0011971338305451498
+7.6371851314953965 0.0012049519658942677
+7.73596889071305 0.0012127197005034668
+7.834752649930701 0.0012204379967314912
+7.933536409148353 0.0012281077866957493
+8.032320168366004 0.0012357299735862562
+8.131103927583657 0.001243305432907074
+8.229887686801309 0.001250835013650083
+8.32867144601896 0.0012583195394055362
+8.427455205236612 0.0012657598094135071
+8.526238964454265 0.0012731565995600367
+8.625022723671917 0.0012805106633214862
+8.723806482889568 0.0012878227326603572
+8.822590242107221 0.0012950935188755857
+8.921374001324873 0.0013023237134101122
+9.020157760542524 0.0013095139886183198
+9.118941519760176 0.001316664998495752
+9.217725278977829 0.0013237773793733506
+9.31650903819548 0.0013308517505783027
+9.415292797413132 0.0013378887150634353
+9.514076556630783 0.00134488886000697
+9.612860315848437 0.0013518527573843258
+9.711644075066088 0.0013587809645135458
+9.81042783428374 0.0013656740245758204
+9.909211593501391 0.0013725324671124818
+10.007995352719044 0.0013793568084997563
+10.106779111936696 0.0013861475524024817
+10.205562871154347 0.0013929051902079148
+10.304346630372 0.0013996302014406894
+10.403130389589652 0.0014063230541599117
+10.501914148807304 0.0014129842053393305
+10.600697908024955 0.0014196141012314495
+10.699481667242608 0.0014262131777164077
+10.79826542646026 0.0014327818606363954
+10.897049185677911 0.0014393205661163355
+10.995832944895565 0.001445829700871512
+11.094616704113216 0.001452309662502788
+11.193400463330867 0.0014587608397800236
+11.292184222548519 0.0014651836129142574
+11.390967981766172 0.0014715783538192025
+11.489751740983824 0.0014779454263625538
+11.588535500201475 0.001484285186607597
+11.687319259419128 0.0014905979830455648
+11.78610301863678 0.0014968841568191783
+11.884886777854431 0.001503144041937771
+11.983670537072083 0.0015093779654843835
+12.082454296289736 0.0015155862478151926
+12.181238055507388 0.0015217692027516168
+12.280021814725039 0.0015279271377654263
+12.378805573942692 0.0015340603541571648
+12.477589333160344 0.0015401691472281748
+12.576373092377995 0.0015462538064465097
+12.675156851595647 0.00155231461560699
+12.7739406108133 0.0015583518529856584
+12.872724370030951 0.0015643657914888678
+12.971508129248603 0.0015703566987972349
+13.070291888466254 0.0015763248375046642
+13.169075647683908 0.0015822704652526584
+13.26785940690156 0.0015881938348600967
+13.36664316611921 0.0015940951944486811
+13.465426925336864 0.0015999747875642088
+13.564210684554515 0.0016058328532938578
+13.662994443772167 0.0016116696263796279
+13.761778202989818 0.0016174853373281026
+13.860561962207472 0.0016232802125166696
+13.959345721425123 0.001629054474296339
+14.058129480642775 0.0016348083410912969
+14.156913239860428 0.001640542027495314
+14.25569699907808 0.0016462557443651315
+14.35448075829573 0.0016519496989109415
+14.453264517513382 0.00165762409478407
+14.552048276731036 0.0016632791321619666
+14.650832035948687 0.001668915007830603
+14.749615795166338 0.001674531915264376
+14.848399554383992 0.0016801300447036045
+14.947183313601643 0.001685709583229713
+15.045967072819295 0.0016912707148381808
+15.144750832036946 0.0016968136205093378
+15.2435345912546 0.001702338478277092
+15.342318350472251 0.0017078454632956468
+15.441102109689902 0.0017133347479042964
+15.539885868907554 0.0017188065016903549
+15.638669628125207 0.0017242608915502878
+15.737453387342859 0.00172969808174911
+15.83623714656051 0.001735118233978108
+15.935020905778163 0.001740521507410944
+16.033804664995817 0.0017459080587581988
+16.132588424213466 0.001751278042320402
+16.23137218343112 0.0017566316100396055
+16.330155942648773 0.0017619689115495466
+16.428939701866422 0.0017672900942244459
+16.527723461084076 0.001772595303226489
+16.62650722030173 0.001777884681552031
+16.72529097951938 0.001783158370076568
+16.824074738737032 0.0017884165075985178
+16.92285849795468 0.001793659230881841
+17.021642257172335 0.0017988866746975456
+17.120426016389988 0.0018040989718641136
+17.219209775607638 0.0018092962532868708
+17.31799353482529 0.001814478647996351
+17.41677729404294 0.0018196462831856699
+17.515561053260594 0.0018247992842469498
+17.614344812478247 0.0018299377748068205
+17.713128571695897 0.0018350618767610247
+17.81191233091355 0.001840171710308158
+17.910696090131204 0.0018452673939825658
+18.009479849348853 0.0018503490446864252
+18.108263608566507 0.001855416777721039
+18.20704736778416 0.0018604707068173585
+18.30583112700181 0.0018655109441657633
+18.404614886219463 0.001870537600445122
+18.503398645437112 0.0018755507848511467
+18.602182404654766 0.001880550605124071
+18.70096616387242 0.0018855371675756663
+18.79974992309007 0.0018905105771156172
+18.898533682307722 0.001895470937277272
+18.997317441525375 0.001900418350242793
+19.096101200743025 0.0019053529168677112
+19.194884959960678 0.0019102747367049202
+19.29366871917833 0.0019151839080281063
+19.39245247839598 0.0019200805278546435
+19.491236237613634 0.0019249646919679653
+19.590019996831288 0.0019298364949394242
+19.688803756048937 0.0019346960301496558
+19.78758751526659 0.0019395433898094663
+19.88637127448424 0.001944378664980243
+19.985155033701894 0.0019492019455939166
+20.083938792919547 0.001954013320472475
+20.182722552137196 0.0019588128773470486
+20.28150631135485 0.0019636007028765753
+20.380290070572503 0.0019683768826660557
+20.479073829790153 0.00197314150128441
+20.577857589007806 0.0019778946422819525
+20.67664134822546 0.0019826363882074825
+20.77542510744311 0.0019873668206250115
+20.874208866660762 0.001992086020130136
+20.972992625878412 0.0019967940663660542
+21.071776385096065 0.002001491038039251
+21.17056014431372 0.00200617701293485
+21.269343903531368 0.00201085206793164
+21.36812766274902 0.002015516279016796
+21.466911421966675 0.0020201697213002843
+21.565695181184324 0.002024812469028978
+21.664478940401978 0.0020294445956004765
+21.76326269961963 0.0020340661735766463
+21.86204645883728 0.0020386772746968794
+21.960830218054934 0.00204327796989109
+22.059613977272587 0.0020478683292924405
+22.158397736490237 0.0020524484222498186
+22.25718149570789 0.0020570183173400586
+22.35596525492554 0.0020615780823799233
+22.454749014143193 0.0020661277844378455
+22.553532773360846 0.002070667489845436
+22.652316532578496 0.0020751972642087677
+22.75110029179615 0.0020797171724194403
+22.849884051013802 0.0020842272786654216
+22.948667810231452 0.0020887276464416865
+23.047451569449105 0.002093218338560644
+23.14623532866676 0.0020976994171623686
+23.24501908788441 0.002102170943724629
+23.34380284710206 0.0021066329790727324
+23.442586606319715 0.0021110855833891746
+23.541370365537365 0.0021155288162231136
+23.640154124755018 0.00211996273649966
+23.738937883972667 0.0021243874025289934
+23.83772164319032 0.002128802872015312
+23.936505402407974 0.0021332092020656104
+24.035289161625624 0.0021376064491982977
+24.134072920843277 0.0021419946693516565
+24.23285668006093 0.0021463739178921434
+24.33164043927858 0.002150744249622541
+24.430424198496233 0.0021551057187899586
+24.529207957713886 0.0021594583790936887
+24.627991716931536 0.0021638022836929205
+24.72677547614919 0.0021681374852143154
+24.82555923536684 0.0021724640357594443
+24.924342994584492 0.0021767819869120955
+25.023126753802146 0.0021810913897454473
+25.121910513019795 0.0021853922948291194
+25.22069427223745 0.0021896847522360936
+25.319478031455102 0.002193968811549517
+25.41826179067275 0.0021982445218693835
+25.517045549890405 0.0022025119318191022
+25.615829309108058 0.0022067710895519433
+25.714613068325708 0.0022110220427573823
+25.81339682754336 0.0022152648386673285
+25.912180586761014 0.0022194995240622474
+26.010964345978664 0.0022237261452771784
+26.109748105196317 0.0022279447482076516
+26.208531864413967 0.0022321553783155
+26.30731562363162 0.0022363580806345775
+26.406099382849273 0.0022405528997763765
+26.504883142066923 0.002244739879935554
+26.603666901284576 0.002248919064895365
+26.70245066050223 0.0022530904980330017
+26.80123441971988 0.0022572542223248484
+26.900018178937533 0.002261410280351647
+26.998801938155186 0.002265558714303576
+27.097585697372836 0.002269699565985249
+27.19636945659049 0.002273832876820631
+27.29515321580814 0.002277958687857869
+27.39393697502579 0.0022820770397740517
+27.492720734243445 0.0022861879728798894
+27.591504493461095 0.002290291527124312
+27.690288252678748 0.0022943877420990052
+27.7890720118964 0.0022984766570428618
+27.88785577111405 0.002302558310846369
+27.986639530331704 0.0023066327420559266
+28.085423289549357 0.002310699988878089
+28.184207048767007 0.002314760089183749
+28.28299080798466 0.002318813080512251
+28.381774567202314 0.00232285900007544
+28.480558326419963 0.0023268978847616477
+28.579342085637617 0.002330929771139617
+28.678125844855266 0.0023349546954623645
+28.77690960407292 0.0023389726936709843
+28.875693363290573 0.0023429838013983915
+28.974477122508222 0.0023469880539730096
+29.073260881725876 0.0023509854864224005
+29.17204464094353 0.0023549761334768406
+29.27082840016118 0.0023589600295728383
+29.369612159378832 0.0023629372088566055
+29.468395918596485 0.0023669077051874667
+29.567179677814135 0.0023708715521412287
+29.665963437031788 0.002374828783013486
+29.764747196249438 0.00237877943082289
+29.86353095546709 0.0023827235283143595
+29.962314714684744 0.0023866611079622485
+30.061098473902394 0.0023905922019734657
+30.159882233120047 0.0023945168422905487
+30.2586659923377 0.002398435060594691
+30.35744975155535 0.0024023468883087253
+30.456233510773004 0.0024062523566000665
+30.555017269990657 0.0024101514963836054
+30.653801029208307 0.002414044338324565
+30.75258478842596 0.002417930912841317
+30.851368547643613 0.0024218112501081506
+30.950152306861263 0.002425685380058007
+31.048936066078916 0.0024295533323851768
+31.147719825296566 0.002433415136547949
+31.24650358451422 0.0024372708217712345
+31.345287343731872 0.002441120417049144
+31.444071102949522 0.002444963951147531
+31.542854862167175 0.0024488014526064996
+31.64163862138483 0.00245263294974288
+31.740422380602478 0.002456458470652662
+31.83920613982013 0.0024602780432134035
+31.937989899037785 0.0024640916950865958
+32.036773658255434 0.0024678994537200025
+32.13555741747309 0.0024717013463499684
+32.23434117669074 0.0024754974000036844
+32.333124935908394 0.0024792876415014376
+32.43190869512605 0.0024830720974588147
+32.53069245434369 0.0024868507942888882
+32.62947621356135 0.002490623758204364
+32.728259972779 0.0024943910152197047
+32.82704373199665 0.0024981525911532197
+32.92582749121431 0.0025019085116291333
+33.02461125043196 0.0025056588020796167
+33.123395009649606 0.002509403487746803
+33.22217876886726 0.0025131425936847623
+33.32096252808491 0.0025168761447614645
+33.419746287302566 0.002520604165660703
+33.51853004652021 0.0025243266808840027
+33.617313805737865 0.0025280437147524966
+33.71609756495552 0.002531755291408781
+33.81488132417317 0.0025354614348187428
+33.913665083390825 0.0025391621687733683
+34.01244884260848 0.002542857516890522
+34.111232601826124 0.0025465475026167075
+34.21001636104378 0.0025502321492288003
+34.30880012026143 0.0025539114798357643
+34.407583879479084 0.0025575855173803398
+34.50636763869674 0.002561254284640715
+34.60515139791438 0.0025649178042321695
+34.70393515713204 0.002568576098608708
+34.80271891634969 0.0025722291900646586
+34.90150267556734 0.002575877100736261
+35.000286434785 0.002579519852603233
+35.09907019400265 0.0025831574674903116
+35.197853953220296 0.0025867899670687835
+35.29663771243795 0.0025904173728579873
+35.3954214716556 0.002594039706226802
+35.494205230873256 0.0025976569883951173
+35.59298899009091 0.0026012692404352817
+35.691772749308555 0.0026048764832735357
+35.79055650852621 0.002608478737691427
+35.88934026774386 0.0026120760243272052
+35.988124026961515 0.002615668363677203
+36.08690778617917 0.002619255776097198
+36.18569154539682 0.0026228382818037584
+36.28447530461447 0.002626415900875573
+36.38325906383212 0.0026299886532547634
+36.482042823049774 0.0026335565587481814
+36.58082658226743 0.0026371196370286883
+36.67961034148508 0.0026406779076364227
+36.77839410070273 0.002644231389980051
+36.87717785992038 0.0026477801033380002
+36.97596161913803 0.0026513240668596793
+37.074745378355686 0.0026548632995666848
+37.17352913757334 0.0026583978203539933
+37.27231289679099 0.0026619276479911357
+37.37109665600864 0.0026654528011233617
+37.46988041522629 0.0026689732982727895
+37.568664174443946 0.0026724891578395393
+37.6674479336616 0.0026760003981028567
+37.76623169287925 0.002679507037222221
+37.865015452096905 0.0026830090932384414
+37.96379921131455 0.0026865065840747386
+38.062582970532205 0.0026899995275378166
+38.16136672974986 0.00269348794131892
+38.26015048896751 0.0026969718429948786
+38.358934248185165 0.002700451250029141
+38.45771800740281 0.0027039261797727958
+38.556501766620464 0.002707396649465583
+38.65528552583812 0.0027108626762368877
+38.75406928505577 0.002714324277106731
+38.852853044273424 0.002717781468986742
+38.95163680349108 0.002721234268681124
+39.05042056270872 0.0027246826928876045
+39.149204321926376 0.002728126758198381
+39.24798808114403 0.0027315664811010483
+39.34677184036168 0.0027350018779795236
+39.445555599579336 0.002738432965114954
+39.54433935879698 0.002741859758686617
+39.643123118014636 0.0027452822747728134
+39.74190687723229 0.0027487005293517427
+39.84069063644994 0.002752114538302377
+39.939474395667595 0.0027555243174053217
+40.03825815488525 0.0027589298823436637
+40.137041914102895 0.0027623312487038147
+40.23582567332055 0.0027657284319763456
+40.3346094325382 0.002769121447556805
+40.433393191755854 0.0027725103107465354
+40.53217695097351 0.0027758950367534805
+40.630960710191154 0.002779275640692978
+40.72974446940881 0.002782652137588549
+40.82852822862646 0.0027860245423726756
+40.927311987844114 0.002789392869887574
+41.02609574706177 0.0027927571348859525
+41.12487950627942 0.002796117352031769
+41.223663265497066 0.0027994735359009753
+41.32244702471472 0.002802825700982254
+41.42123078393237 0.002806173861677751
+41.520014543150026 0.0028095180323037938
+41.61879830236768 0.002812858227091607
+41.71758206158533 0.0028161944601880202
+41.81636582080298 0.002819526745656166
+41.91514958002063 0.0028228550974761716
+42.013933339238285 0.0028261795295458437
+42.11271709845594 0.002829500055681343
+42.21150085767359 0.002832816689617858
+42.31028461689124 0.0028361294450102653
+42.40906837610889 0.0028394383354337868
+42.507852135326544 0.0028427433743846366
+42.6066358945442 0.0028460445752806663
+42.70541965376185 0.0028493419514619978
+42.804203412979504 0.0028526355161916537
+42.90298717219715 0.0028559252826561798
+43.001770931414804 0.00285921126396626
+43.10055469063246 0.0028624934731573265
+43.19933844985011 0.002865771923190164
+43.29812220906776 0.002869046626951505
+43.39690596828541 0.002872317597254622
+43.49568972750306 0.0028755848468399125
+43.594473486720716 0.0028788483883754766
+43.69325724593837 0.0028821082344576924
+43.79204100515602 0.002885364397611781
+43.890824764373676 0.002888616890292368
+43.98960852359132 0.002891865724884042
+44.088392282808975 0.0028951109137019026
+44.18717604202663 0.0028983524689921037
+44.28595980124428 0.0029015904029323952
+44.384743560461935 0.0029048247276326567
+44.48352731967958 0.0029080554551354234
+44.582311078897234 0.002911282597416412
+44.68109483811489 0.0029145061663850376
+44.77987859733254 0.0029177261738849254
+44.878662356550194 0.00292094263169442
+44.97744611576785 0.002924155551527087
+45.07622987498549 0.0029273649450322105
+45.17501363420315 0.0029305708237952885
+45.2737973934208 0.002933773199338516
+45.37258115263845 0.002936972083121273
+45.47136491185611 0.0029401674865405995
+45.57014867107376 0.0029433594209316715
+45.668932430291406 0.0029465478975682683
+45.76771618950906 0.0029497329276632384
+45.86649994872671 0.002952914522368959
+45.965283707944366 0.0029560926927777913
+46.06406746716202 0.0029592674499225326
+46.162851226379665 0.0029624388047768627
+46.26163498559732 0.0029656067682557853
+46.36041874481497 0.002968771351216068
+46.459202504032625 0.0029719325644566768
+46.55798626325028 0.002975090418719202
+46.65677002246793 0.002978244924688289
+46.75555378168558 0.0029813960929920584
+46.85433754090323 0.002984543934202522
+46.953121300120884 0.0029876884588359988
+47.05190505933854 0.0029908296773535235
+47.15068881855619 0.002993967600161254
+47.24947257777384 0.002997102237610872
+47.34825633699149 0.0030002335999999826
+47.44704009620914 0.0030033616975725067
+47.5458238554268 0.0030064865405190775
+47.64460761464445 0.0030096081389774194
+47.7433913738621 0.00301272650303274
+47.84217513307975 0.003015841642718105
+47.9409588922974 0.0030189535680148175
+48.039742651515056 0.0030220622888527883
+48.13852641073271 0.003025167815110909
+48.23731016995036 0.0030282701566174157
+48.33609392916801 0.0030313693231502534
+48.43487768838566 0.0030344653244374345
+48.533661447603315 0.0030375581701573948
+48.63244520682097 0.0030406478699393485
+48.73122896603862 0.003043734433363636
+48.830012725256275 0.003046817869962071
+48.92879648447392 0.003049898189218284
+49.027580243691574 0.003052975400568063
+49.12636400290923 0.0030560495133996903
+49.22514776212688 0.003059120537054276
+49.323931521344534 0.00306218848082609
+49.42271528056218 0.0030652533539628915
+49.52149903977983 0.0030683151656662505
+49.620282798997486 0.0030713739250918747
+49.71906655821514 0.0030744296413499246
+49.81785031743279 0.003077482323505333
+49.916634076650446 0.003080531980578118
+50.01541783586809 0.0030835786215436924
+50.114201595085746 0.0030866222553331745
+50.2129853543034 0.0030896628908336932
+50.31176911352105 0.003092700536888687
+50.410552872738705 0.003095735202298208
+50.50933663195636 0.0030987668958192198
+50.608120391174005 0.003101795626165889
+50.70690415039166 0.0031048214020098805
+50.80568790960931 0.0031078442319806437
+50.904471668826965 0.003110864124665703
+51.00325542804462 0.0031138810886109426
+51.102039187262264 0.0031168951323208845
+51.20082294647992 0.003119906264258974
+51.29960670569757 0.0031229144928478494
+51.398390464915224 0.0031259198264696267
+51.49717422413288 0.0031289222734661617
+51.59595798335053 0.0031319218421393294
+51.694741742568176 0.0031349185407512858
+51.79352550178583 0.0031379123775247338
+51.89230926100348 0.0031409033606431902
+51.991093020221136 0.003143891498251243
+52.08987677943879 0.003146876798454811
+52.188660538656436 0.0031498592693214016
+52.28744429787409 0.003152838918880366
+52.38622805709174 0.0031558157551231456
+52.485011816309395 0.0031587897860035304
+52.58379557552705 0.0031617610194378996
+52.6825793347447 0.003164729463305473
+52.78136309396235 0.003167695125448549
+52.88014685318 0.003170658013672754
+52.978930612397654 0.0031736181357472754
+53.07771437161531 0.003176575499405102
+53.17649813083296 0.003179530112343258
+53.27528189005061 0.003182481982223039
+53.37406564926826 0.003185431116670245
+53.472849408485914 0.0031883775232754044
+53.57163316770357 0.003191321209594007
+53.67041692692122 0.0031942621831467298
+53.76920068613887 0.0031972004514196593
+53.86798444535652 0.0032001360218645125
+53.96676820457417 0.0032030689018988623
+54.065551963791826 0.0032059990989063525
+54.16433572300948 0.0032089266202369134
+54.26311948222713 0.003211851473206982
+54.361903241444786 0.0032147736650997086
+54.46068700066243 0.003217693203165176
+54.559470759880085 0.0032206100946206026
+54.65825451909774 0.0032235243466505552
+54.75703827831539 0.00322643596640715
+54.855822037533045 0.003229344961010267
+54.95460579675069 0.0032322513375477404
+55.053389555968344 0.0032351551030755724
+55.152173315186 0.0032380562646181234
+55.25095707440365 0.003240954829168316
+55.349740833621304 0.003243850803687831
+55.44852459283896 0.003246744195107299
+55.547308352056604 0.003249635010326498
+55.64609211127426 0.0032525232562145437
+55.74487587049191 0.0032554089396100785
+55.84365962970956 0.003258292067321463
+55.94244338892722 0.003261172646126962
+56.04122714814486 0.0032640506827749296
+56.140010907362516 0.0032669261839839976
+56.23879466658017 0.0032697991564432523
+56.33757842579782 0.00327266960681242
+56.436362185015476 0.0032755375417220477
+56.53514594423313 0.0032784029677736803
+56.633929703450775 0.003281265891540036
+56.73271346266843 0.003284126319565188
+56.83149722188608 0.0032869842583647317
+56.930280981103735 0.0032898397144259634
+57.02906474032139 0.003292692694208049
+57.127848499539034 0.003295543204142197
+57.22663225875669 0.0032983912506318247
+57.32541601797434 0.003301236840052729
+57.424199777191994 0.0033040799787532513
+57.52298353640965 0.0033069206730544426
+57.6217672956273 0.0033097589292502257
+57.72055105484495 0.0033125947536075642
+57.8193348140626 0.0033154281523666163
+57.91811857328025 0.0033182591317409
+58.01690233249791 0.0033210876979174503
+58.11568609171556 0.0033239138570569766
+58.214469850933206 0.0033267376152940203
+58.31325361015086 0.0033295589787371094
+58.41203736936851 0.003332377953468913
+58.510821128586166 0.003335194545546394
+58.60960488780382 0.003338008761000962
+58.70838864702147 0.003340820605838621
+58.80717240623912 0.0033436300860401245
+58.90595616545677 0.003346437207561117
+59.004739924674425 0.003349241976332287
+59.10352368389208 0.0033520443982595093
+59.20230744310973 0.003354844479223995
+59.301091202327385 0.0033576422250824276
+59.39987496154503 0.0033604376416671135
+59.498658720762684 0.0033632307347861204
+59.59744247998034 0.003366021510223419
+59.69622623919799 0.003368809973739021
+59.795009998415644 0.00337159613106912
+59.89379375763329 0.0033743799879262294
+59.99257751685094 0.003377161549999315
+60.0913612760686 0.0033799408229539364
+60.19014503528625 0.003382717812432378
+60.2889287945039 0.0033854925240537816
+60.387712553721556 0.0033882649634142843
+60.4864963129392 0.0033910351360871447
+60.585280072156856 0.0033938030476228756
+60.68406383137451 0.003396568703549374
+60.78284759059216 0.0033993321093720497
+60.881631349809815 0.003402093270573955
+60.98041510902746 0.0034048521926159066
+61.079198868245115 0.003407608880936617
+61.17798262746277 0.0034103633409528172
+61.27676638668042 0.0034131155780593803
+61.375550145898075 0.0034158655976294465
+61.47433390511573 0.003418613405014544
+61.573117664333374 0.00342135900554471
+61.67190142355103 0.0034241024045286155
+61.77068518276868 0.003426843607253679
+61.869468941986334 0.003429582618986188
+61.96825270120399 0.0034323194449714205
+62.06703646042163 0.0034350540904337554
+62.165820219639286 0.003437786560576796
+62.26460397885694 0.003440516860583478
+62.36338773807459 0.0034432449956161917
+62.462171497292246 0.003445970970816891
+62.5609552565099 0.0034486947913072072
+62.659739015727546 0.003451416462188563
+62.7585227749452 0.003454135988542283
+62.85730653416285 0.0034568533754297036
+62.956090293380505 0.0034595686278922825
+63.05487405259816 0.003462281750951711
+63.15365781181581 0.0034649927496100195
+63.25244157103346 0.003467701628849685
+63.35122533025111 0.0034704083936337405
+63.450009089468765 0.003473113048905877
+63.54879284868642 0.0034758155995905527
+63.64757660790407 0.003478516050593096
+63.74636036712172 0.003481214406799809
+63.84514412633937 0.003483910673078072
+63.943927885557024 0.003486604854276444
+64.04271164477468 0.003489296955224766
+64.14149540399234 0.0034919869807342606
+64.24027916320999 0.0034946749355976355
+64.33906292242763 0.0034973608245891775
+64.43784668164528 0.003500044652464858
+64.53663044086294 0.003502726423962426
+64.63541420008059 0.0035054061438015084
+64.73419795929824 0.0035080838166837063
+64.8329817185159 0.0035107594472926907
+64.93176547773355 0.003513433040294298
+65.0305492369512 0.0035161046003366276
+65.12933299616886 0.003518774132050131
+65.22811675538651 0.00352144164004771
+65.32690051460416 0.0035241071289248095
+65.42568427382182 0.003526770603259507
+65.52446803303947 0.0035294320676126038
+65.62325179225712 0.0035320915265277223
+65.72203555147476 0.00353474898453139
+65.82081931069241 0.003537404446133132
+65.91960306991007 0.00354005791582556
+66.01838682912772 0.0035427093980844606
+66.11717058834537 0.003545358897368886
+66.21595434756303 0.003548006418121236
+66.31473810678068 0.003550651964767349
+66.41352186599833 0.0035532955417165897
+66.51230562521599 0.0035559371533619307
+66.61108938443364 0.00355857680408004
+66.7098731436513 0.003561214498231364
+66.80865690286893 0.003563850240160215
+66.90744066208659 0.003566484034194851
+67.00622442130424 0.0035691158846475604
+67.10500818052189 0.0035717457958147434
+67.20379193973955 0.0035743737719769954
+67.3025756989572 0.0035769998173991856
+67.40135945817485 0.0035796239363305423
+67.5001432173925 0.0035822461330047273
+67.59892697661016 0.0035848664116399204
+67.69771073582781 0.003587484776438897
+67.79649449504547 0.0035901012315891034
+67.8952782542631 0.003592715781262742
+67.99406201348076 0.003595328429616842
+68.09284577269841 0.0035979391807933418
+68.19162953191606 0.0036005480389191616
+68.29041329113372 0.0036031550081062824
+68.38919705035137 0.003605760092451817
+68.48798080956902 0.0036083632960380936
+68.58676456878668 0.003610964622932722
+68.68554832800433 0.003613564077188671
+68.78433208722198 0.0036161616628443438
+68.88311584643964 0.0036187573839236483
+68.98189960565728 0.003621351244436071
+69.08068336487493 0.0036239432483767507
+69.17946712409258 0.003626533399726548
+69.27825088331024 0.003629121702452117
+69.37703464252789 0.0036317081605059774
+69.47581840174554 0.003634292777826584
+69.5746021609632 0.0036368755583383967
+69.67338592018085 0.003639456505951951
+69.7721696793985 0.0036420356245639254
+69.87095343861616 0.0036446129180572107
+69.96973719783381 0.0036471883903009803
+70.06852095705145 0.0036497620451507533
+70.1673047162691 0.0036523338864484674
+70.26608847548675 0.003654903918022542
+70.36487223470441 0.0036574721436879436
+70.46365599392206 0.003660038567246258
+70.56243975313971 0.003662603192485748
+70.66122351235737 0.003665166023181426
+70.76000727157502 0.003667727063095114
+70.85879103079267 0.003670286315975508
+70.95757479001033 0.003672843785558246
+71.05635854922798 0.0036753994755659666
+71.15514230844562 0.003677953389708377
+71.25392606766327 0.003680505531682312
+71.35270982688093 0.0036830559051717984
+71.45149358609858 0.0036856045138481163
+71.55027734531623 0.003688151361369862
+71.64906110453389 0.003690696451383008
+71.74784486375154 0.003693239787520962
+71.84662862296919 0.0036957813734046336
+71.94541238218684 0.003698321212642487
+72.0441961414045 0.0037008593088306064
+72.14297990062215 0.003703395665552752
+72.24176365983979 0.0037059302863804203
+72.34054741905744 0.0037084631748729047
+72.4393311782751 0.003710994334577349
+72.53811493749275 0.0037135237690288105
+72.6368986967104 0.003716051481750313
+72.73568245592806 0.003718577476252909
+72.83446621514571 0.0037211017560357324
+72.93324997436336 0.0037236243245860573
+73.03203373358102 0.0037261451853793518
+73.13081749279867 0.0037286643418793387
+73.22960125201632 0.003731181797538046
+73.32838501123398 0.0037336975557958627
+73.42716877045162 0.0037362116200815977
+73.52595252966927 0.003738723993812529
+73.62473628888692 0.0037412346803944647
+73.72352004810458 0.0037437436832217863
+73.82230380732223 0.0037462510056775135
+73.92108756653988 0.0037487566511333515
+74.01987132575753 0.0037512606229497436
+74.11865508497519 0.003753762924475926
+74.21743884419284 0.0037562635590499788
+74.3162226034105 0.0037587625299988787
+74.41500636262815 0.00376125984063855
+74.51379012184579 0.003763755494273915
+74.61257388106344 0.0037662494941989497
+74.7113576402811 0.003768741843696726
+74.81014139949875 0.0037712325460394717
+74.9089251587164 0.003773721604488613
+75.00770891793405 0.003776209022294829
+75.1064926771517 0.0037786948026980994
+75.20527643636936 0.003781178948927753
+75.30406019558701 0.003783661464202518
+75.40284395480467 0.003786142351730571
+75.50162771402232 0.0037886216147095847
+75.60041147323996 0.003791099256326773
+75.69919523245761 0.003793575279758947
+75.79797899167527 0.003796049688172552
+75.89676275089292 0.003798522484723723
+75.99554651011057 0.0038009936725583275
+76.09433026932822 0.0038034632548120144
+76.19311402854588 0.0038059312346102572
+76.29189778776353 0.003808397615068405
+76.39068154698118 0.0038108623992917233
+76.48946530619884 0.003813325590375444
+76.58824906541649 0.0038157871914048075
+76.68703282463413 0.0038182472054551077
+76.78581658385178 0.0038207056355917418
+76.88460034306944 0.0038231624848702487
+76.98338410228709 0.003825617756336356
+77.08216786150474 0.0038280714530260235
+77.1809516207224 0.003830523577965489
+77.27973537994005 0.003832974134171308
+77.3785191391577 0.003835423124650401
+77.47730289837536 0.0038378705524000937
+77.57608665759301 0.003840316420408162
+77.67487041681066 0.003842760731652872
+77.7736541760283 0.0038452034891030243
+77.87243793524596 0.0038476446957179957
+77.97122169446361 0.0038500843544477807
+78.07000545368126 0.0038525224682330332
+78.16878921289891 0.0038549590400051075
+78.26757297211657 0.0038573940726861003
+78.36635673133422 0.00385982756918889
+78.46514049055187 0.0038622595324171796
+78.56392424976953 0.003864689965265536
+78.66270800898718 0.0038671188706194287
+78.76149176820483 0.0038695462513552727
+78.86027552742247 0.003871972110340466
+78.95905928664013 0.0038743964504334297
+79.05784304585778 0.0038768192744836473
+79.15662680507543 0.0038792405853317054
+79.25541056429309 0.003881660385809329
+79.35419432351074 0.003884078678739423
+79.4529780827284 0.0038864954669361115
+79.55176184194605 0.0038889107532047713
+79.6505456011637 0.003891324540342075
+79.74932936038135 0.0038937368311360255
+79.848113119599 0.0038961476283659955
+79.94689687881664 0.0038985569348027648
+80.0456806380343 0.0039009647532085557
+80.14446439725195 0.0039033710863370704
+80.2432481564696 0.003905775936933531
+80.34203191568726 0.0039081793077347105
+80.44081567490491 0.003910581201468973
+80.53959943412256 0.003912981620856309
+80.63838319334022 0.0039153805686083735
+80.73716695255787 0.003917778047428515
+80.83595071177552 0.003920174060011819
+80.93473447099318 0.003922568609045138
+81.03351823021082 0.003924961697207128
+81.13230198942847 0.003927353327168287
+81.23108574864612 0.003929743501590985
+81.32986950786378 0.003932132223129498
+81.42865326708143 0.003934519494430049
+81.52743702629908 0.003936905318130834
+81.62622078551674 0.003939289696862062
+81.72500454473439 0.003941672633245988
+81.82378830395204 0.003944054129896941
+81.9225720631697 0.003946434189421366
+82.02135582238735 0.003948812814417851
+82.120139581605 0.003951190007477164
+82.21892334082264 0.003953565771182281
+82.3177071000403 0.003955940108108426
+82.41649085925795 0.003958313020823096
+82.5152746184756 0.003960684511886098
+82.61405837769325 0.00396305458384958
+82.71284213691091 0.0039654232392580665
+82.81162589612856 0.003967790480648479
+82.91040965534621 0.0039701563105501835
+83.00919341456387 0.003972520731485011
+83.10797717378152 0.003974883745967291
+83.20676093299917 0.003977245356503885
+83.30554469221681 0.003979605565594218
+83.40432845143447 0.003981964375730304
+83.50311221065212 0.003984321789396784
+83.60189596986977 0.003986677809070949
+83.70067972908743 0.003989032437222779
+83.79946348830508 0.003991385676314964
+83.89824724752273 0.0039937375288029405
+83.99703100674039 0.0039960879971349195
+84.09581476595804 0.0039984370837519165
+84.19459852517569 0.00400078479108778
+84.29338228439335 0.004003131121569221
+84.39216604361098 0.0040054760776158434
+84.49094980282864 0.004007819661640174
+84.58973356204629 0.004010161876047689
+84.68851732126394 0.004012502723236842
+84.7873010804816 0.004014842205599098
+84.88608483969925 0.004017180325518957
+84.9848685989169 0.0040195170853739816
+85.08365235813456 0.0040218524875348305
+85.18243611735221 0.004024186534365282
+85.28121987656986 0.004026519228222265
+85.38000363578752 0.0040288505714558805
+85.47878739500516 0.00403118056640944
+85.57757115422281 0.004033509215419482
+85.67635491344046 0.004035836520815808
+85.77513867265812 0.004038162484921503
+85.87392243187577 0.004040487110052965
+85.97270619109342 0.004042810398519935
+86.07148995031108 0.00404513235262552
+86.17027370952873 0.00404745297466622
+86.26905746874638 0.004049772266931956
+86.36784122796404 0.004052090231706094
+86.46662498718169 0.004054406871265476
+86.56540874639933 0.004056722187880439
+86.66419250561698 0.00405903618381485
+86.76297626483463 0.00406134886132612
+86.86176002405229 0.004063660222665243
+86.96054378326994 0.00406597027007681
+87.0593275424876 0.004068279005799043
+87.15811130170525 0.004070586432063813
+87.2568950609229 0.004072892551096673
+87.35567882014055 0.004075197365116875
+87.45446257935821 0.0040775008763374015
+87.55324633857586 0.004079803086964986
+87.6520300977935 0.004082103999200141
+87.75081385701115 0.00408440361523718
+87.8495976162288 0.004086701937264242
+87.94838137544646 0.004088998967463316
+88.04716513466411 0.004091294708010267
+88.14594889388177 0.00409358916107486
+88.24473265309942 0.00409588232882078
+88.34351641231707 0.004098174213405659
+88.44230017153473 0.004100464816981101
+88.54108393075238 0.0041027541416927
+88.63986768997003 0.004105042189680073
+88.73865144918767 0.00410732896307687
+88.83743520840532 0.0041096144640108126
+88.93621896762298 0.004111898694603703
+89.03500272684063 0.004114181656971456
+89.13378648605828 0.004116463353224117
+89.23257024527594 0.004118743785465892
+89.33135400449359 0.0041210229557951585
+89.43013776371124 0.004123300866304498
+89.5289215229289 0.004125577519080713
+89.62770528214655 0.004127852916204856
+89.7264890413642 0.004130127059752241
+89.82527280058186 0.004132399951792475
+89.9240565597995 0.0041346715943894755
+90.02284031901715 0.0041369419896014935
+90.1216240782348 0.004139211139481135
+90.22040783745246 0.004141479046075385
+90.31919159667011 0.004143745711425622
+90.41797535588776 0.00414601113756765
+90.51675911510542 0.004148275326531708
+90.61554287432307 0.004150538280342504
+90.71432663354072 0.004152800001019224
+90.81311039275838 0.004155060490575561
+90.91189415197603 0.004157319751019734
+91.01067791119367 0.004159577784354505
+91.10946167041132 0.0041618345925772075
+91.20824542962897 0.004164090177679759
+91.30702918884663 0.004166344541648687
+91.40581294806428 0.004168597686465146
+91.50459670728193 0.0041708496141049396
+91.60338046649959 0.004173100326538541
+91.70216422571724 0.004175349825731114
+91.8009479849349 0.004177598113642526
+91.89973174415255 0.004179845192227381
+91.9985155033702 0.004182091063435026
+92.09729926258784 0.00418433572920958
+92.19608302180549 0.004186579191489947
+92.29486678102315 0.004188821452209843
+92.3936505402408 0.004191062513297808
+92.49243429945845 0.004193302376677229
+92.5912180586761 0.004195541044266359
+92.69000181789376 0.004197778517978338
+92.78878557711141 0.004200014799721206
+92.88756933632907 0.004202249891397932
+92.98635309554672 0.004204483794906419
+93.08513685476437 0.004206716512139538
+93.18392061398201 0.004208948044985135
+93.28270437319966 0.004211178395326058
+93.38148813241732 0.004213407565040167
+93.48027189163497 0.00421563555600036
+93.57905565085262 0.0042178623700745875
+93.67783941007028 0.004220088009125873
+93.77662316928793 0.004222312475012329
+93.87540692850558 0.004224535769587173
+93.97419068772324 0.004226757894698755
+94.07297444694089 0.0042289788521905625
+94.17175820615854 0.004231198643901249
+94.27054196537618 0.0042334172716646445
+94.36932572459384 0.0042356347373097795
+94.46810948381149 0.004237851042660896
+94.56689324302914 0.004240066189537469
+94.6656770022468 0.0042422801797542264
+94.76446076146445 0.004244493015121159
+94.8632445206821 0.004246704697443544
+94.96202827989976 0.004248915228521961
+95.06081203911741 0.004251124610152305
+95.15959579833506 0.004253332844125809
+95.25837955755271 0.004255539932229058
+95.35716331677035 0.004257745876244007
+95.455947075988 0.004259950677947998
+95.55473083520566 0.004262154339113773
+95.65351459442331 0.004264356861509497
+95.75229835364097 0.004266558246898767
+95.85108211285862 0.004268758497040637
+95.94986587207627 0.004270957613689627
+96.04864963129393 0.004273155598595744
+96.14743339051158 0.004275352453504496
+96.24621714972923 0.0042775481801569076
+96.34500090894689 0.004279742780289538
+96.44378466816453 0.004281936255634497
+96.54256842738218 0.004284128607919461
+96.64135218659983 0.004286319838867685
+96.74013594581749 0.004288509950198023
+96.83891970503514 0.004290698943624944
+96.93770346425279 0.004292886820858543
+97.03648722347044 0.004295073583604561
+97.1352709826881 0.004297259233564398
+97.23405474190575 0.0042994437724351315
+97.3328385011234 0.004301627201909529
+97.43162226034106 0.0043038095236760604
+97.5304060195587 0.004305990739418922
+97.62918977877635 0.004308170850818044
+97.727973537994 0.00431034985954911
+97.82675729721166 0.004312527767283567
+97.92554105642931 0.004314704575688646
+98.02432481564696 0.004316880286427375
+98.12310857486462 0.004319054901158592
+98.22189233408227 0.004321228421536961
+98.32067609329992 0.004323400849212986
+98.41945985251758 0.004325572185833029
+98.51824361173523 0.004327742433039319
+98.61702737095288 0.004329911592469971
+98.71581113017052 0.004332079665758998
+98.81459488938818 0.004334246654536328
+98.91337864860583 0.004336412560427815
+99.01216240782348 0.004338577385055252
+99.11094616704113 0.0043407411300363935
+99.20972992625879 0.00434290379698496
+99.30851368547644 0.004345065387510658
+99.4072974446941 0.004347225903219189
+99.50608120391175 0.004349385345712272
+99.6048649631294 0.0043515437165876445
+99.70364872234705 0.004353701017439091
+99.8024324815647 0.004355857249856442
+99.90121624078235 0.0043580124154256016
+100.0 0.00436016651572855
diff --git a/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/plotGraph b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/plotGraph
new file mode 100755
index 00000000000..4df5a7c3c84
--- /dev/null
+++ b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/plotGraph
@@ -0,0 +1,25 @@
+createGraphs()
+{
+    OF=$1
+    EXPT=$2
+
+    gnuplot<<EOF
+    set terminal postscript default
+    set output "OF_vs_Exact.eps"
+    set xlabel "t [sec]"
+    set ylabel "x [mm]"
+    set grid
+
+
+    plot \
+        "$EXPT" u 1:2 title "Exact", \
+        "$OF" u 1:2 title "OpenFOAM" with line lt -1 lw 1
+EOF
+}
+
+sed -e 's/[()]//g' "postProcessing/interfaceHeight1/1.36/position.dat" > "positionClean.dat"
+
+OF="positionClean.dat"
+EXPT="data.dat"
+
+createGraphs $OF $EXPT
diff --git a/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/system/blockMeshDict b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/system/blockMeshDict
new file mode 100755
index 00000000000..ae1a229613f
--- /dev/null
+++ b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/system/blockMeshDict
@@ -0,0 +1,63 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  plus                                  |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      blockMeshDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+convertToMeters 0.001;
+
+vertices
+(
+    (0 0 -0.0)
+    (10 0 -0.0)
+    (10 0.2 -0.0)
+    (0 0.2 -0.0)
+    (0 0 0.02)
+    (10 0 0.02)
+    (10 0.2 0.02)
+    (0 0.2 0.02)
+);
+
+blocks
+(
+    hex (0 1 2 3 4 5 6 7) (400 2 1)
+    simpleGrading (1 1 1)
+);
+
+patches
+(
+   /* wall sideWalls
+    (
+        (1 5 4 0)
+        (3 7 6 2)
+    )*/
+    wall faceWall
+    (
+      (0 4 7 3)
+    )
+
+    patch outlet
+    (
+      (2 6 5 1)
+    )
+    empty frontAndBack
+    (
+        (0 3 2 1)
+        (4 5 6 7)
+        (1 5 4 0)
+        (3 7 6 2)
+
+    )
+);
+
+// ************************************************************************* //
diff --git a/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/system/controlDict b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/system/controlDict
new file mode 100755
index 00000000000..8f295e54578
--- /dev/null
+++ b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/system/controlDict
@@ -0,0 +1,68 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  plus                                  |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      controlDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+application     interCondensatingEvaporatingFoam;
+
+startFrom       startTime;
+
+startTime       1.36;
+
+stopAt          endTime;
+
+endTime         5;
+
+deltaT          1e-5;
+
+writeControl    adjustableRunTime;
+
+writeInterval   0.5;
+
+purgeWrite      0;
+
+writeFormat     ascii;
+
+writePrecision  12;
+
+writeCompression off;
+
+timeFormat      general;
+
+timePrecision   10;
+
+runTimeModifiable yes;
+
+adjustTimeStep  yes;
+
+maxCo           0.01;
+maxAlphaCo      0.01;
+maxDeltaT       0.01;
+
+functions
+{
+    interfaceHeight1
+    {
+        type           interfaceHeight;
+        libs           ("libfieldFunctionObjects.so");
+        alpha          alpha.liquid;
+        locations      ((0 0 0));
+        direction       (1 0 0);
+        writeControl    timeStep;
+        writeInterval   3;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/system/fvSchemes b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/system/fvSchemes
new file mode 100755
index 00000000000..c8762d515b8
--- /dev/null
+++ b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/system/fvSchemes
@@ -0,0 +1,58 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  plus                                  |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      fvSchemes;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ddtSchemes
+{
+    default Euler;
+}
+
+gradSchemes
+{
+    default         Gauss linear;
+}
+
+divSchemes
+{
+    div(phi,alpha)  Gauss vanLeer;
+    div(phirb,alpha) Gauss linear;
+    div(rhoPhi,U)      Gauss vanLeerV;
+    div(((rho*nuEff)*dev2(T(grad(U))))) Gauss linear;
+    div(rhoCpPhi,T) Gauss vanLeer;
+    
+    div((interpolate(cp)*rhoPhi),T) Gauss linear;
+}
+
+laplacianSchemes
+{
+    default        Gauss linear uncorrected;
+}
+
+interpolationSchemes
+{
+    default         linear;
+}
+
+snGradSchemes
+{
+    default         uncorrected;
+}
+
+fluxRequired
+{
+    p_rgh;
+}
+
+// ************************************************************************* //
diff --git a/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/system/fvSolution b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/system/fvSolution
new file mode 100755
index 00000000000..693896016b2
--- /dev/null
+++ b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/system/fvSolution
@@ -0,0 +1,118 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  plus                                  |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      fvSolution;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+solvers
+{
+    alpha.liquid
+    {
+        nAlphaCorr      2;
+        nAlphaSubCycles 2;
+        cAlpha          1;
+
+        MULESCorr       no;
+        nLimiterIter    5;
+
+        //solver          smoothSolver;
+        //smoother        symGaussSeidel;
+        //tolerance       1e-8;
+        //relTol          0;
+    }
+
+    rho
+    {
+        solver           diagonal;
+        tolerance       1e-7;
+        relTol          0.1;
+    }
+
+    rhoFinal
+    {
+        $rho;
+        tolerance       1e-7;
+        relTol          0;
+    }
+
+    p_rgh
+    {
+        //solver           GAMG;
+        tolerance        1e-9;
+        solver          PCG;
+        preconditioner  DIC;
+        relTol           0.001;
+        smoother         DIC;
+    }
+
+    mDotSmearFinal
+    {
+        solver           PCG;
+        tolerance        1e-6;
+        preconditioner   DIC;
+        relTol           0.00;
+        smoother         DIC;
+    }
+
+    p_rghFinal
+    {
+        $p_rgh;
+        tolerance        1e-9;
+        relTol           0;
+        minIter 10;
+    }
+
+    pcorrFinal
+    {
+        $p_rgh;
+        tolerance        1e-9;
+        relTol           0;
+    }
+
+
+    "(U|h|T.*|k|epsilon|R)"
+    {
+        solver           smoothSolver; //PBiCGStab;
+        smoother        symGaussSeidel;
+        //preconditioner   DILU;
+        tolerance        1e-7;
+        relTol           0.;
+        minIter          15;
+        maxIter          50;
+    }
+
+    "(U|h|T.*|k|epsilon|R)Final"
+    {
+        $U;
+        tolerance        1e-7;
+        relTol           0;
+        maxIter          50;
+    }
+}
+
+PIMPLE
+{
+    momentumPredictor   yes;
+    nCorrectors         4;
+    nNonOrthogonalCorrectors 0;
+}
+
+relaxationFactors
+{
+    equations
+    {
+        ".*"           1;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/system/setAlphaFieldDict b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/system/setAlphaFieldDict
new file mode 100755
index 00000000000..d8f07547ed0
--- /dev/null
+++ b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/system/setAlphaFieldDict
@@ -0,0 +1,23 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  plus                                  |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system/fluid";
+    object      setFieldsDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+field "alpha.liquid";
+type plane;
+origin (0.503e-3 0 0);
+direction (-1 0 0);
+
+// ************************************************************************* //
-- 
GitLab


From 4abb2153a1bca42a842b8293c8ac440bfd25a589 Mon Sep 17 00:00:00 2001
From: sergio <s.ferraris@opencfd.co.uk>
Date: Tue, 4 Feb 2020 16:42:32 -0800
Subject: [PATCH 2/4] STY: Updating headers for tutorial

---
 .../stefanProblem/0.orig/T                         |  4 ++--
 .../stefanProblem/0.orig/U                         |  4 ++--
 .../stefanProblem/0.orig/alpha.gas                 |  4 ++--
 .../stefanProblem/0.orig/alpha.liquid              |  4 ++--
 .../stefanProblem/0.orig/p                         |  4 ++--
 .../stefanProblem/0.orig/p_rgh                     |  4 ++--
 .../stefanProblem/Allrun                           |  4 +++-
 .../stefanProblem/constant/g                       |  4 ++--
 .../stefanProblem/constant/phaseProperties         |  4 ++--
 .../constant/thermophysicalProperties.gas          |  4 ++--
 .../constant/thermophysicalProperties.liquid       |  4 ++--
 .../stefanProblem/constant/transportProperties     |  4 ++--
 .../stefanProblem/constant/turbulenceProperties    |  4 ++--
 .../stefanProblem/system/blockMeshDict             |  9 ++-------
 .../stefanProblem/system/controlDict               |  8 ++++----
 .../stefanProblem/system/fvSchemes                 |  4 ++--
 .../stefanProblem/system/fvSolution                |  4 ++--
 .../stefanProblem/system/setAlphaFieldDict         |  4 ++--
 .../stefanProblem/system/setAlphaFieldDict.gas     |  4 ++--
 .../stefanProblem/system/setAlphaFieldDict.liquid  |  4 ++--
 .../stefanProblem/0.orig/T                         |  4 ++--
 .../stefanProblem/0.orig/U                         |  4 ++--
 .../stefanProblem/0.orig/alpha.liquid              |  4 ++--
 .../stefanProblem/0.orig/p                         |  4 ++--
 .../stefanProblem/0.orig/p_rgh                     |  4 ++--
 .../stefanProblem/Allrun                           |  2 ++
 .../stefanProblem/constant/g                       |  4 ++--
 .../stefanProblem/constant/phaseChangeProperties   | 11 +++--------
 .../constant/thermophysicalProperties              |  4 ++--
 .../stefanProblem/constant/transportProperties     | 14 +++++++-------
 .../stefanProblem/constant/turbulenceProperties    |  4 ++--
 .../stefanProblem/system/blockMeshDict             |  4 ++--
 .../stefanProblem/system/controlDict               |  8 ++++----
 .../stefanProblem/system/fvSchemes                 |  4 ++--
 .../stefanProblem/system/fvSolution                | 12 +++---------
 .../stefanProblem/system/setAlphaFieldDict         |  4 ++--
 36 files changed, 84 insertions(+), 96 deletions(-)

diff --git a/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/0.orig/T b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/0.orig/T
index 552d6f52a7a..758e9c0726e 100755
--- a/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/0.orig/T
+++ b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/0.orig/T
@@ -1,8 +1,8 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  plus                                  |
-|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
 FoamFile
diff --git a/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/0.orig/U b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/0.orig/U
index cc77ed99d50..53f8be99d75 100755
--- a/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/0.orig/U
+++ b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/0.orig/U
@@ -1,8 +1,8 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  plus                                  |
-|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
 FoamFile
diff --git a/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/0.orig/alpha.gas b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/0.orig/alpha.gas
index e6181c6e812..4e623feb424 100755
--- a/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/0.orig/alpha.gas
+++ b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/0.orig/alpha.gas
@@ -1,8 +1,8 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  plus                                  |
-|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
 FoamFile
diff --git a/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/0.orig/alpha.liquid b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/0.orig/alpha.liquid
index c1a88243e90..9908be1fb51 100755
--- a/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/0.orig/alpha.liquid
+++ b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/0.orig/alpha.liquid
@@ -1,8 +1,8 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  plus                                  |
-|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
 FoamFile
diff --git a/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/0.orig/p b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/0.orig/p
index 94ea98497b8..0adf79043dd 100755
--- a/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/0.orig/p
+++ b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/0.orig/p
@@ -1,8 +1,8 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  plus                                  |
-|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
 FoamFile
diff --git a/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/0.orig/p_rgh b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/0.orig/p_rgh
index b35272aaf64..bf2fa5be7b6 100755
--- a/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/0.orig/p_rgh
+++ b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/0.orig/p_rgh
@@ -1,8 +1,8 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  plus                                  |
-|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
 FoamFile
diff --git a/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/Allrun b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/Allrun
index c7cdbed219d..ecd1f144026 100755
--- a/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/Allrun
+++ b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/Allrun
@@ -14,6 +14,8 @@ rm log.setAlphaField
 cp system/setAlphaFieldDict.gas system/setAlphaFieldDict
 runApplication setAlphaField
 
-#runApplication $(getApplication)
+runApplication $(getApplication)
+
+./plotGraph
 
 #------------------------------------------------------------------------------
diff --git a/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/constant/g b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/constant/g
index 4930967bdd6..2fe7d8e4dc0 100644
--- a/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/constant/g
+++ b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/constant/g
@@ -1,8 +1,8 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  v1906                                 |
-|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
 FoamFile
diff --git a/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/constant/phaseProperties b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/constant/phaseProperties
index 92421df57cf..3bed958d7b2 100755
--- a/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/constant/phaseProperties
+++ b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/constant/phaseProperties
@@ -1,8 +1,8 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  v1906                                 |
-|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
 FoamFile
diff --git a/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/constant/thermophysicalProperties.gas b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/constant/thermophysicalProperties.gas
index a17a753b7dd..3ee69e62048 100755
--- a/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/constant/thermophysicalProperties.gas
+++ b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/constant/thermophysicalProperties.gas
@@ -1,8 +1,8 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  v1906                                 |
-|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
 FoamFile
diff --git a/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/constant/thermophysicalProperties.liquid b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/constant/thermophysicalProperties.liquid
index 544aaa6c8b8..d293d9e1599 100755
--- a/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/constant/thermophysicalProperties.liquid
+++ b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/constant/thermophysicalProperties.liquid
@@ -1,8 +1,8 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  v1906                                 |
-|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
 FoamFile
diff --git a/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/constant/transportProperties b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/constant/transportProperties
index e7f0365ed22..85f51d78b5e 100644
--- a/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/constant/transportProperties
+++ b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/constant/transportProperties
@@ -1,8 +1,8 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  v1906                                 |
-|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
 FoamFile
diff --git a/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/constant/turbulenceProperties b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/constant/turbulenceProperties
index 5eec0426726..e35639d9fc9 100755
--- a/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/constant/turbulenceProperties
+++ b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/constant/turbulenceProperties
@@ -1,8 +1,8 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  plus                                  |
-|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
 FoamFile
diff --git a/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/system/blockMeshDict b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/system/blockMeshDict
index ae1a229613f..d5aa76dd21f 100755
--- a/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/system/blockMeshDict
+++ b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/system/blockMeshDict
@@ -1,8 +1,8 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  plus                                  |
-|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
 FoamFile
@@ -36,11 +36,6 @@ blocks
 
 patches
 (
-   /* wall sideWalls
-    (
-        (1 5 4 0)
-        (3 7 6 2)
-    )*/
     wall faceWall
     (
       (0 4 7 3)
diff --git a/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/system/controlDict b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/system/controlDict
index 28ec10d7217..b42e535d9ec 100755
--- a/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/system/controlDict
+++ b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/system/controlDict
@@ -1,8 +1,8 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  plus                                  |
-|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
 FoamFile
@@ -23,13 +23,13 @@ startTime       1.36;
 
 stopAt          endTime;
 
-endTime         40;
+endTime         50;
 
 deltaT          1e-5;
 
 writeControl    adjustableRunTime;
 
-writeInterval   4;
+writeInterval   5;
 
 purgeWrite      0;
 
diff --git a/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/system/fvSchemes b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/system/fvSchemes
index 124059f30d4..fa1829244d5 100755
--- a/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/system/fvSchemes
+++ b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/system/fvSchemes
@@ -1,8 +1,8 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  plus                                  |
-|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
 FoamFile
diff --git a/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/system/fvSolution b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/system/fvSolution
index b28aad30b3b..8c5cf3c07b0 100755
--- a/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/system/fvSolution
+++ b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/system/fvSolution
@@ -1,8 +1,8 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  plus                                  |
-|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
 FoamFile
diff --git a/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/system/setAlphaFieldDict b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/system/setAlphaFieldDict
index 9c5ecfe7e82..af8a43ae308 100755
--- a/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/system/setAlphaFieldDict
+++ b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/system/setAlphaFieldDict
@@ -1,8 +1,8 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  plus                                  |
-|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
 FoamFile
diff --git a/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/system/setAlphaFieldDict.gas b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/system/setAlphaFieldDict.gas
index 9c5ecfe7e82..af8a43ae308 100755
--- a/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/system/setAlphaFieldDict.gas
+++ b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/system/setAlphaFieldDict.gas
@@ -1,8 +1,8 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  plus                                  |
-|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
 FoamFile
diff --git a/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/system/setAlphaFieldDict.liquid b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/system/setAlphaFieldDict.liquid
index d8f07547ed0..b368552a9ed 100755
--- a/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/system/setAlphaFieldDict.liquid
+++ b/tutorials/verificationAndValidation/icoReactingMultiphaseInterFoam/stefanProblem/system/setAlphaFieldDict.liquid
@@ -1,8 +1,8 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  plus                                  |
-|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
 FoamFile
diff --git a/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/0.orig/T b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/0.orig/T
index 5fac80f7245..6c77adb7392 100755
--- a/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/0.orig/T
+++ b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/0.orig/T
@@ -1,8 +1,8 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  plus                                  |
-|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
 FoamFile
diff --git a/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/0.orig/U b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/0.orig/U
index cc77ed99d50..53f8be99d75 100755
--- a/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/0.orig/U
+++ b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/0.orig/U
@@ -1,8 +1,8 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  plus                                  |
-|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
 FoamFile
diff --git a/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/0.orig/alpha.liquid b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/0.orig/alpha.liquid
index 3141db82d52..529bfd1ba9c 100755
--- a/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/0.orig/alpha.liquid
+++ b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/0.orig/alpha.liquid
@@ -1,8 +1,8 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  plus                                  |
-|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
 FoamFile
diff --git a/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/0.orig/p b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/0.orig/p
index 94ea98497b8..0adf79043dd 100755
--- a/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/0.orig/p
+++ b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/0.orig/p
@@ -1,8 +1,8 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  plus                                  |
-|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
 FoamFile
diff --git a/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/0.orig/p_rgh b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/0.orig/p_rgh
index b35272aaf64..bf2fa5be7b6 100755
--- a/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/0.orig/p_rgh
+++ b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/0.orig/p_rgh
@@ -1,8 +1,8 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  plus                                  |
-|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
 FoamFile
diff --git a/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/Allrun b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/Allrun
index 2fbae4635b1..bf837174641 100755
--- a/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/Allrun
+++ b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/Allrun
@@ -11,4 +11,6 @@ runApplication setAlphaField
 
 runApplication $(getApplication)
 
+./plotGraph
+
 #------------------------------------------------------------------------------
diff --git a/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/constant/g b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/constant/g
index 4930967bdd6..2fe7d8e4dc0 100644
--- a/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/constant/g
+++ b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/constant/g
@@ -1,8 +1,8 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  v1906                                 |
-|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
 FoamFile
diff --git a/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/constant/phaseChangeProperties b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/constant/phaseChangeProperties
index 04d24b35f73..e7c5a75ed2a 100755
--- a/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/constant/phaseChangeProperties
+++ b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/constant/phaseChangeProperties
@@ -1,8 +1,8 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  v1906                                 |
-|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
 FoamFile
@@ -14,7 +14,7 @@ FoamFile
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-phaseChangeTwoPhaseModel constant;//interfaceHeatResistance;
+phaseChangeTwoPhaseModel interfaceHeatResistance;//constant;
 
 
 R               1e6;
@@ -25,9 +25,4 @@ spread          3;
 coeffC          0;
 coeffE          500;
 
-// interfacePhaseChangeCoeffs
-// {
-//     R_               1e6;
-// }
-
 // ************************************************************************* //
diff --git a/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/constant/thermophysicalProperties b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/constant/thermophysicalProperties
index 3215af0986c..17fb3a459c9 100755
--- a/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/constant/thermophysicalProperties
+++ b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/constant/thermophysicalProperties
@@ -1,8 +1,8 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  v1906                                 |
-|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
 FoamFile
diff --git a/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/constant/transportProperties b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/constant/transportProperties
index e7f0365ed22..d85110937c1 100644
--- a/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/constant/transportProperties
+++ b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/constant/transportProperties
@@ -1,8 +1,8 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  v1906                                 |
-|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
 FoamFile
@@ -23,22 +23,22 @@ liquid
     rho             958.4;
 
 
-    Cp              4216;  // irrelevant
-    Cv              4216;  // irrelevant
-    kappa           0.671; // irrelevant
+    Cp              4216;
+    Cv              4216;
+    kappa           0.671;
     hf              0;
 }
 
 vapour
 {
     transportModel  Newtonian;
-    nu              1e-5; // irrelevant
+    nu              1e-5;
     rho             0.581;
 
 
     Cp              2030;      // FC72 vapour
     Cv              2030;      // Cv = Cp - R/w
-    kappa           0.025;       // FC72 vapour // 0.01;
+    kappa           0.025;
     hf              2260.0e3;
 }
 
diff --git a/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/constant/turbulenceProperties b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/constant/turbulenceProperties
index 5eec0426726..e35639d9fc9 100755
--- a/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/constant/turbulenceProperties
+++ b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/constant/turbulenceProperties
@@ -1,8 +1,8 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  plus                                  |
-|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
 FoamFile
diff --git a/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/system/blockMeshDict b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/system/blockMeshDict
index ae1a229613f..15e86f6629d 100755
--- a/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/system/blockMeshDict
+++ b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/system/blockMeshDict
@@ -1,8 +1,8 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  plus                                  |
-|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
 FoamFile
diff --git a/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/system/controlDict b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/system/controlDict
index 8f295e54578..fe8f60ad27f 100755
--- a/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/system/controlDict
+++ b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/system/controlDict
@@ -1,8 +1,8 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  plus                                  |
-|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
 FoamFile
@@ -23,13 +23,13 @@ startTime       1.36;
 
 stopAt          endTime;
 
-endTime         5;
+endTime         50;
 
 deltaT          1e-5;
 
 writeControl    adjustableRunTime;
 
-writeInterval   0.5;
+writeInterval   5;
 
 purgeWrite      0;
 
diff --git a/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/system/fvSchemes b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/system/fvSchemes
index c8762d515b8..fba9626cc6d 100755
--- a/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/system/fvSchemes
+++ b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/system/fvSchemes
@@ -1,8 +1,8 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  plus                                  |
-|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
 FoamFile
diff --git a/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/system/fvSolution b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/system/fvSolution
index 693896016b2..eb3c45e5a77 100755
--- a/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/system/fvSolution
+++ b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/system/fvSolution
@@ -1,8 +1,8 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  plus                                  |
-|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
 FoamFile
@@ -24,11 +24,6 @@ solvers
 
         MULESCorr       no;
         nLimiterIter    5;
-
-        //solver          smoothSolver;
-        //smoother        symGaussSeidel;
-        //tolerance       1e-8;
-        //relTol          0;
     }
 
     rho
@@ -82,9 +77,8 @@ solvers
 
     "(U|h|T.*|k|epsilon|R)"
     {
-        solver           smoothSolver; //PBiCGStab;
+        solver           smoothSolver;
         smoother        symGaussSeidel;
-        //preconditioner   DILU;
         tolerance        1e-7;
         relTol           0.;
         minIter          15;
diff --git a/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/system/setAlphaFieldDict b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/system/setAlphaFieldDict
index d8f07547ed0..b368552a9ed 100755
--- a/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/system/setAlphaFieldDict
+++ b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/system/setAlphaFieldDict
@@ -1,8 +1,8 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  plus                                  |
-|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|  \\    /   O peration     | Version:  v1912                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
 FoamFile
-- 
GitLab


From 31eb7c61b563c489725205e1d89536a07f4645a2 Mon Sep 17 00:00:00 2001
From: mattijs <mattijs>
Date: Tue, 18 Feb 2020 12:32:16 +0000
Subject: [PATCH 3/4] ENH: interfaceHeight: avoid tracking to corner point

---
 .../stefanProblem/system/controlDict                            | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/system/controlDict b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/system/controlDict
index fe8f60ad27f..35f952a4b84 100755
--- a/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/system/controlDict
+++ b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/system/controlDict
@@ -58,7 +58,7 @@ functions
         type           interfaceHeight;
         libs           ("libfieldFunctionObjects.so");
         alpha          alpha.liquid;
-        locations      ((0 0 0));
+        locations      ((0 0.0001 1e-5));
         direction       (1 0 0);
         writeControl    timeStep;
         writeInterval   3;
-- 
GitLab


From 1319144a72effede439d56186363ac75b2b62b27 Mon Sep 17 00:00:00 2001
From: mattijs <mattijs>
Date: Tue, 18 Feb 2020 12:33:53 +0000
Subject: [PATCH 4/4] STYLE: stefanProblem: cleanup.

---
 .../interCondensatingEvaporatingFoam/stefanProblem/0.orig/T       | 0
 .../interCondensatingEvaporatingFoam/stefanProblem/0.orig/U       | 0
 .../stefanProblem/0.orig/alpha.liquid                             | 0
 .../interCondensatingEvaporatingFoam/stefanProblem/0.orig/p       | 0
 .../interCondensatingEvaporatingFoam/stefanProblem/0.orig/p_rgh   | 0
 .../stefanProblem/constant/phaseChangeProperties                  | 0
 .../stefanProblem/constant/thermophysicalProperties               | 0
 .../stefanProblem/constant/turbulenceProperties                   | 0
 .../stefanProblem/system/blockMeshDict                            | 0
 .../stefanProblem/system/controlDict                              | 0
 .../stefanProblem/system/fvSchemes                                | 0
 .../stefanProblem/system/fvSolution                               | 0
 .../stefanProblem/system/setAlphaFieldDict                        | 0
 13 files changed, 0 insertions(+), 0 deletions(-)
 mode change 100755 => 100644 tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/0.orig/T
 mode change 100755 => 100644 tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/0.orig/U
 mode change 100755 => 100644 tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/0.orig/alpha.liquid
 mode change 100755 => 100644 tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/0.orig/p
 mode change 100755 => 100644 tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/0.orig/p_rgh
 mode change 100755 => 100644 tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/constant/phaseChangeProperties
 mode change 100755 => 100644 tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/constant/thermophysicalProperties
 mode change 100755 => 100644 tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/constant/turbulenceProperties
 mode change 100755 => 100644 tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/system/blockMeshDict
 mode change 100755 => 100644 tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/system/controlDict
 mode change 100755 => 100644 tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/system/fvSchemes
 mode change 100755 => 100644 tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/system/fvSolution
 mode change 100755 => 100644 tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/system/setAlphaFieldDict

diff --git a/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/0.orig/T b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/0.orig/T
old mode 100755
new mode 100644
diff --git a/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/0.orig/U b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/0.orig/U
old mode 100755
new mode 100644
diff --git a/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/0.orig/alpha.liquid b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/0.orig/alpha.liquid
old mode 100755
new mode 100644
diff --git a/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/0.orig/p b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/0.orig/p
old mode 100755
new mode 100644
diff --git a/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/0.orig/p_rgh b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/0.orig/p_rgh
old mode 100755
new mode 100644
diff --git a/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/constant/phaseChangeProperties b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/constant/phaseChangeProperties
old mode 100755
new mode 100644
diff --git a/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/constant/thermophysicalProperties b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/constant/thermophysicalProperties
old mode 100755
new mode 100644
diff --git a/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/constant/turbulenceProperties b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/constant/turbulenceProperties
old mode 100755
new mode 100644
diff --git a/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/system/blockMeshDict b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/system/blockMeshDict
old mode 100755
new mode 100644
diff --git a/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/system/controlDict b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/system/controlDict
old mode 100755
new mode 100644
diff --git a/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/system/fvSchemes b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/system/fvSchemes
old mode 100755
new mode 100644
diff --git a/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/system/fvSolution b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/system/fvSolution
old mode 100755
new mode 100644
diff --git a/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/system/setAlphaFieldDict b/tutorials/verificationAndValidation/interCondensatingEvaporatingFoam/stefanProblem/system/setAlphaFieldDict
old mode 100755
new mode 100644
-- 
GitLab