diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/Allwclean b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/Allwclean
new file mode 100755
index 0000000000000000000000000000000000000000..ac1a48d1a8e04429798b107d93682def88ecfc3a
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/Allwclean
@@ -0,0 +1,11 @@
+#!/bin/sh
+cd ${0%/*} || exit 1    # Run from this directory
+set -x
+
+wclean libso phaseSystems
+wclean libso interfacialModels
+wclean libso interfacialCompositionModels
+wclean libso phaseCompressibleTurbulenceModels
+wclean
+
+# ----------------------------------------------------------------- end-of-file
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/Allwmake b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/Allwmake
new file mode 100755
index 0000000000000000000000000000000000000000..2566b5a1eb0c768e79d638cde3c1f3b22529fc72
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/Allwmake
@@ -0,0 +1,13 @@
+#!/bin/sh
+cd ${0%/*} || exit 1    # Run from this directory
+set -x
+
+wmakeLnInclude interfacialModels
+wmakeLnInclude interfacialCompositionModels
+wmake libso phaseSystems
+wmake libso interfacialModels
+wmake libso interfacialCompositionModels
+wmake libso phaseCompressibleTurbulenceModels
+wmake
+
+# ----------------------------------------------------------------- end-of-file
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/CourantNo.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/CourantNo.H
new file mode 100644
index 0000000000000000000000000000000000000000..b8a238ec9da37ac84ef067d05c81d12078f41159
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/CourantNo.H
@@ -0,0 +1,51 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Global
+    CourantNo
+
+Description
+    Calculates and outputs the mean and maximum Courant Numbers.
+
+\*---------------------------------------------------------------------------*/
+
+scalar CoNum = 0.0;
+scalar meanCoNum = 0.0;
+
+if (mesh.nInternalFaces())
+{
+    scalarField sumPhi
+    (
+        fvc::surfaceSum(mag(phi))().internalField()
+    );
+
+    CoNum = 0.5*gMax(sumPhi/mesh.V().field())*runTime.deltaTValue();
+
+    meanCoNum =
+        0.5*(gSum(sumPhi)/gSum(mesh.V().field()))*runTime.deltaTValue();
+}
+
+Info<< "Courant Number mean: " << meanCoNum
+    << " max: " << CoNum << endl;
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/CourantNos.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/CourantNos.H
new file mode 100644
index 0000000000000000000000000000000000000000..248f4c0602f62d6d273b62df33c41b322e90889d
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/CourantNos.H
@@ -0,0 +1,12 @@
+    #include "CourantNo.H"
+
+{
+    scalar UrCoNum = 0.5*gMax
+    (
+        fvc::surfaceSum(mag(phi1 - phi2))().internalField()/mesh.V().field()
+    )*runTime.deltaTValue();
+
+    Info<< "Max Ur Courant Number = " << UrCoNum << endl;
+
+    CoNum = max(CoNum, UrCoNum);
+}
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/EEqns.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/EEqns.H
new file mode 100644
index 0000000000000000000000000000000000000000..f8c6edce9d4617b5b816c21cdda6fbac1c58886b
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/EEqns.H
@@ -0,0 +1,47 @@
+{
+    autoPtr<phaseSystem::heatTransferTable>
+        heatTransferPtr(fluid.heatTransfer());
+
+    phaseSystem::heatTransferTable&
+        heatTransfer = heatTransferPtr();
+
+    {
+        tmp<fvScalarMatrix> he1Eqn(phase1.heEqn());
+
+        if (he1Eqn.valid())
+        {
+            he1Eqn =
+            (
+                he1Eqn
+             ==
+               *heatTransfer[phase1.name()]
+              + fvOptions(alpha1, rho1, phase1.thermo().he())
+            );
+
+            he1Eqn->relax();
+            fvOptions.constrain(he1Eqn());
+            he1Eqn->solve();
+        }
+    }
+
+    {
+        tmp<fvScalarMatrix> he2Eqn(phase2.heEqn());
+
+        if (he2Eqn.valid())
+        {
+            he2Eqn =
+            (
+                he2Eqn
+             ==
+               *heatTransfer[phase2.name()]
+              + fvOptions(alpha2, rho2, phase2.thermo().he())
+            );
+
+            he2Eqn->relax();
+            fvOptions.constrain(he2Eqn());
+            he2Eqn->solve();
+        }
+    }
+}
+
+fluid.correctThermo();
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/Make/files b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/Make/files
new file mode 100644
index 0000000000000000000000000000000000000000..66b068b0c38ac36f70dabbc46575d18e5ae59fe8
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/Make/files
@@ -0,0 +1,3 @@
+reactingTwoPhaseEulerFoam.C
+
+EXE = $(FOAM_APPBIN)/reactingTwoPhaseEulerFoam
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/Make/options b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/Make/options
new file mode 100644
index 0000000000000000000000000000000000000000..f1f3b8dc8e38fafd84d8f3241372780f644ec8ff
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/Make/options
@@ -0,0 +1,24 @@
+EXE_INC = \
+    -IphaseSystems/lnInclude \
+    -IinterfacialModels/lnInclude \
+    -IinterfacialCompositionModels/lnInclude \
+    -IphaseCompressibleTurbulenceModels/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
+    -I$(LIB_SRC)/transportModels/compressible/lnInclude \
+    -I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \
+    -I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude \
+    -I$(LIB_SRC)/TurbulenceModels/phaseCompressible/lnInclude \
+    -I$(LIB_SRC)/finiteVolume/lnInclude \
+    -I$(LIB_SRC)/fvOptions/lnInclude \
+    -I$(LIB_SRC)/meshTools/lnInclude \
+    -I$(LIB_SRC)/sampling/lnInclude
+
+EXE_LIBS = \
+    -lreactingTwoPhaseSystem \
+    -lreactingEulerianInterfacialModels \
+    -lreactingEulerianInterfacialCompositionModels \
+    -lphaseReactingTurbulenceModels \
+    -lfiniteVolume \
+    -lfvOptions \
+    -lmeshTools \
+    -lsampling
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/YEqns.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/YEqns.H
new file mode 100644
index 0000000000000000000000000000000000000000..176f491f372912615197bb9f1d23b6581598ac93
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/YEqns.H
@@ -0,0 +1,50 @@
+{
+    autoPtr<phaseSystem::massTransferTable>
+        massTransferPtr(fluid.massTransfer());
+
+    phaseSystem::massTransferTable&
+        massTransfer(massTransferPtr());
+
+    PtrList<volScalarField>& Y1 = phase1.Y();
+    PtrList<volScalarField>& Y2 = phase2.Y();
+
+    forAll(Y1, i)
+    {
+        tmp<fvScalarMatrix> Y1iEqn(phase1.YiEqn(Y1[i]));
+
+        if (Y1iEqn.valid())
+        {
+            Y1iEqn =
+            (
+                Y1iEqn
+             ==
+               *massTransfer[Y1[i].name()]
+              + fvOptions(alpha1, rho1, Y1[i])
+            );
+
+            Y1iEqn->relax();
+            Y1iEqn->solve(mesh.solver("Yi"));
+        }
+    }
+
+    forAll(Y2, i)
+    {
+        tmp<fvScalarMatrix> Y2iEqn(phase2.YiEqn(Y2[i]));
+
+        if (Y2iEqn.valid())
+        {
+            Y2iEqn =
+            (
+                Y2iEqn
+             ==
+               *massTransfer[Y2[i].name()]
+              + fvOptions(alpha2, rho2, Y2[i])
+            );
+
+            Y2iEqn->relax();
+            Y2iEqn->solve(mesh.solver("Yi"));
+        }
+    }
+
+    fluid.massTransfer(); // updates interfacial mass flow rates
+}
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/correctContErrs.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/correctContErrs.H
new file mode 100644
index 0000000000000000000000000000000000000000..6aeb5d024bfcfc48f5747caa6a7703012a14bba1
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/correctContErrs.H
@@ -0,0 +1,7 @@
+phase1.continuityError() =
+    fvc::ddt(alpha1, rho1) + fvc::div(alphaRhoPhi1)
+  - (fvOptions(alpha1, rho1)&rho1);
+
+phase2.continuityError() =
+    fvc::ddt(alpha2, rho2) + fvc::div(alphaRhoPhi2)
+  - (fvOptions(alpha2, rho2)&rho2);
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/createFields.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/createFields.H
new file mode 100644
index 0000000000000000000000000000000000000000..41eb6e0e746630f887b3405a05d500f1f04de1a7
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/createFields.H
@@ -0,0 +1,73 @@
+    #include "readGravitationalAcceleration.H"
+    #include "readhRef.H"
+
+    Info<< "Creating phaseSystem\n" << endl;
+
+    autoPtr<twoPhaseSystem> fluidPtr
+    (
+        twoPhaseSystem::New(mesh)
+    );
+    twoPhaseSystem& fluid = fluidPtr();
+
+    phaseModel& phase1 = fluid.phase1();
+    phaseModel& phase2 = fluid.phase2();
+
+    volScalarField& alpha1 = phase1;
+    volScalarField& alpha2 = phase2;
+
+    volVectorField& U1 = phase1.U();
+    surfaceScalarField& phi1 = phase1.phi();
+    surfaceScalarField& alphaPhi1 = phase1.alphaPhi();
+    surfaceScalarField& alphaRhoPhi1 = phase1.alphaRhoPhi();
+
+    volVectorField& U2 = phase2.U();
+    surfaceScalarField& phi2 = phase2.phi();
+    surfaceScalarField& alphaPhi2 = phase2.alphaPhi();
+    surfaceScalarField& alphaRhoPhi2 = phase2.alphaRhoPhi();
+
+    surfaceScalarField& phi = fluid.phi();
+
+    dimensionedScalar pMin
+    (
+        "pMin",
+        dimPressure,
+        fluid.lookup("pMin")
+    );
+
+    #include "gh.H"
+
+    rhoThermo& thermo1 = phase1.thermo();
+    rhoThermo& thermo2 = phase2.thermo();
+
+    volScalarField& p = thermo1.p();
+
+    volScalarField& rho1 = thermo1.rho();
+    const volScalarField& psi1 = thermo1.psi();
+
+    volScalarField& rho2 = thermo2.rho();
+    const volScalarField& psi2 = thermo2.psi();
+
+    Info<< "Reading field p_rgh\n" << endl;
+    volScalarField p_rgh
+    (
+        IOobject
+        (
+            "p_rgh",
+            runTime.timeName(),
+            mesh,
+            IOobject::MUST_READ,
+            IOobject::AUTO_WRITE
+        ),
+        mesh
+    );
+
+    label pRefCell = 0;
+    scalar pRefValue = 0.0;
+    setRefCell
+    (
+        p,
+        p_rgh,
+        pimple.dict(),
+        pRefCell,
+        pRefValue
+    );
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/createMRF.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/createMRF.H
new file mode 100644
index 0000000000000000000000000000000000000000..16c7667be5e0cdebbe9cb373f567f1ce877960e7
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/createMRF.H
@@ -0,0 +1,3 @@
+    IOMRFZoneList MRF(mesh);
+    MRF.correctBoundaryVelocity(U1);
+    MRF.correctBoundaryVelocity(U2);
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/generatePairsAndSubModels b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/generatePairsAndSubModels
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/Make/files b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/Make/files
new file mode 100644
index 0000000000000000000000000000000000000000..41ac32274eef6e3df8f52d65d48aa0962949ca21
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/Make/files
@@ -0,0 +1,20 @@
+massTransferModels/massTransferModel/massTransferModel.C
+massTransferModels/massTransferModel/newMassTransferModel.C
+massTransferModels/Frossling/Frossling.C
+massTransferModels/sphericalMassTransfer/sphericalMassTransfer.C
+
+surfaceTensionModels/surfaceTensionModel/surfaceTensionModel.C
+surfaceTensionModels/surfaceTensionModel/newSurfaceTensionModel.C
+surfaceTensionModels/constantSurfaceTensionCoefficient/constantSurfaceTensionCoefficient.C
+
+interfaceCompositionModels/interfaceCompositionModel/interfaceCompositionModel.C
+interfaceCompositionModels/interfaceCompositionModel/newInterfaceCompositionModel.C
+interfaceCompositionModels/InterfaceCompositionModel/InterfaceCompositionModels.C
+
+saturationPressureModels/saturationPressureModel/saturationPressureModel.C
+saturationPressureModels/saturationPressureModel/newSaturationPressureModel.C
+saturationPressureModels/Antoine/Antoine.C
+saturationPressureModels/AntoineExtended/AntoineExtended.C
+saturationPressureModels/ArdenBuck/ArdenBuck.C
+
+LIB = $(FOAM_LIBBIN)/libreactingEulerianInterfacialCompositionModels
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/Make/options b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/Make/options
new file mode 100644
index 0000000000000000000000000000000000000000..088d504706bbd4e2989e16e4bc6982ca225edffc
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/Make/options
@@ -0,0 +1,27 @@
+EXE_INC = \
+    -I../phaseSystems/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/properties/liquidProperties/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/properties/liquidMixtureProperties/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/properties/solidProperties/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/properties/solidMixtureProperties/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/thermophysicalFunctions/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/SLGThermo/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/chemistryModel/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/radiationModels/lnInclude \
+    -I$(LIB_SRC)/transportModels/incompressible/lnInclude \
+    -I$(LIB_SRC)/transportModels/compressible/lnInclude \
+    -I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \
+    -I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude \
+    -I$(LIB_SRC)/TurbulenceModels/phaseCompressible/lnInclude \
+    -I$(LIB_SRC)/finiteVolume/lnInclude \
+    -I$(LIB_SRC)/meshTools/lnInclude
+
+LIB_LIBS = \
+    -lreactingTwoPhaseSystem \
+    -lfluidThermophysicalModels \
+    -lreactionThermophysicalModels \
+    -lspecie
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Henry/Henry.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Henry/Henry.C
new file mode 100644
index 0000000000000000000000000000000000000000..06754e2f86b3629c82694654c0cc88d2b4b5ca86
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Henry/Henry.C
@@ -0,0 +1,144 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "Henry.H"
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+template<class Thermo, class OtherThermo>
+Foam::interfaceCompositionModels::Henry<Thermo, OtherThermo>::Henry
+(
+    const dictionary& dict,
+    const phasePair& pair
+)
+:
+    InterfaceCompositionModel<Thermo, OtherThermo>(dict, pair),
+    k_(dict.lookup("k")),
+    YSolvent_
+    (
+        IOobject
+        (
+            IOobject::groupName("YSolvent", pair.name()),
+            pair.phase1().mesh().time().timeName(),
+            pair.phase1().mesh()
+        ),
+        pair.phase1().mesh(),
+        dimensionedScalar("one", dimless, 1)
+    )
+{
+    if (k_.size() != this->speciesNames_.size())
+    {
+        FatalErrorIn
+        (
+            "template<class Thermo, class OtherThermo> "
+            "Foam::interfaceCompositionModels::Henry<Thermo, OtherThermo>:: "
+            "Henry "
+            "( "
+                "const dictionary& dict, "
+                "const phasePair& pair "
+            ")"
+        )   << "Differing number of species and solubilities"
+            << exit(FatalError);
+    }
+}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+template<class Thermo, class OtherThermo>
+Foam::interfaceCompositionModels::Henry<Thermo, OtherThermo>::~Henry()
+{}
+
+
+// * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * * //
+
+template<class Thermo, class OtherThermo>
+void Foam::interfaceCompositionModels::Henry<Thermo, OtherThermo>::update
+(
+    const volScalarField& Tf
+)
+{
+    YSolvent_ = scalar(1);
+
+    forAllConstIter(hashedWordList, this->speciesNames_, iter)
+    {
+        YSolvent_ -= Yf(*iter, Tf);
+    }
+}
+
+
+template<class Thermo, class OtherThermo>
+Foam::tmp<Foam::volScalarField>
+Foam::interfaceCompositionModels::Henry<Thermo, OtherThermo>::Yf
+(
+    const word& speciesName,
+    const volScalarField& Tf
+) const
+{
+    if (this->speciesNames_.contains(speciesName))
+    {
+        const label index = this->speciesNames_[speciesName];
+
+        return
+            k_[index]
+           *this->otherThermo_.composition().Y(speciesName)
+           *this->otherThermo_.rhoThermo::rho()
+           /this->thermo_.rhoThermo::rho();
+    }
+    else
+    {
+        return
+            YSolvent_
+           *this->thermo_.composition().Y(speciesName);
+    }
+}
+
+
+template<class Thermo, class OtherThermo>
+Foam::tmp<Foam::volScalarField>
+Foam::interfaceCompositionModels::Henry<Thermo, OtherThermo>::YfPrime
+(
+    const word& speciesName,
+    const volScalarField& Tf
+) const
+{
+    return tmp<volScalarField>
+    (
+        new volScalarField
+        (
+            IOobject
+            (
+                IOobject::groupName("YfPrime", this->pair_.name()),
+                this->pair_.phase1().mesh().time().timeName(),
+                this->pair_.phase1().mesh()
+            ),
+            this->pair_.phase1().mesh(),
+            dimensionedScalar("zero", dimless/dimTemperature, 0)
+        )
+    );
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Henry/Henry.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Henry/Henry.H
new file mode 100644
index 0000000000000000000000000000000000000000..8d9c6a73faf00a407a3eea5bf23131a9cc8e9cd8
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Henry/Henry.H
@@ -0,0 +1,129 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::Henry
+
+Description
+    Henry's law for gas solubiliy in liquid. The concentration of the dissolved
+    species in the liquid is proportional to its partial pressure in the gas.
+    The dimensionless constant of proportionality between concentrations on
+    each side of the interface is \f$k\f$, and is given for each species.
+    Mixing in the gas is assumed to be ideal.
+
+SourceFiles
+    Henry.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef Henry_H
+#define Henry_H
+
+#include "InterfaceCompositionModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+class phasePair;
+
+namespace interfaceCompositionModels
+{
+
+/*---------------------------------------------------------------------------*\
+                         Class Henry Declaration
+\*---------------------------------------------------------------------------*/
+
+template<class Thermo, class OtherThermo>
+class Henry
+:
+    public InterfaceCompositionModel<Thermo, OtherThermo>
+{
+private:
+
+    // Private data
+
+        //- Solubility coefficients
+        const scalarList k_;
+
+        //- The remaining solvent species fraction
+        volScalarField YSolvent_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("Henry");
+
+    // Constructors
+
+        //- Construct from components
+        Henry
+        (
+            const dictionary& dict,
+            const phasePair& pair
+        );
+
+
+    //- Destructor
+    virtual ~Henry();
+
+
+    // Member Functions
+
+        //- Update the composition
+        virtual void update(const volScalarField& Tf);
+
+        //- The interface species fraction
+        virtual tmp<volScalarField> Yf
+        (
+            const word& speciesName,
+            const volScalarField& Tf
+        ) const;
+
+        //- The interface species fraction derivative w.r.t. temperature
+        virtual tmp<volScalarField> YfPrime
+        (
+            const word& speciesName,
+            const volScalarField& Tf
+        ) const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace interfaceCompositionModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#ifdef NoRepository
+#   include "Henry.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/InterfaceCompositionModel/InterfaceCompositionModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/InterfaceCompositionModel/InterfaceCompositionModel.C
new file mode 100644
index 0000000000000000000000000000000000000000..1bfcd4de0c0aa2b63e3b332724ec56ee929966e1
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/InterfaceCompositionModel/InterfaceCompositionModel.C
@@ -0,0 +1,248 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "InterfaceCompositionModel.H"
+#include "phaseModel.H"
+#include "phasePair.H"
+#include "pureMixture.H"
+#include "multiComponentMixture.H"
+#include "rhoThermo.H"
+
+// * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
+
+template<class Thermo, class OtherThermo>
+template<class ThermoType>
+const typename Foam::multiComponentMixture<ThermoType>::thermoType&
+Foam::InterfaceCompositionModel<Thermo, OtherThermo>::getLocalThermo
+(
+    const word& speciesName,
+    const multiComponentMixture<ThermoType>& globalThermo
+) const
+{
+    return
+        globalThermo.getLocalThermo
+        (
+            globalThermo.species()
+            [
+                speciesName
+            ]
+        );
+}
+
+
+template<class Thermo, class OtherThermo>
+template<class ThermoType>
+const typename Foam::pureMixture<ThermoType>::thermoType&
+Foam::InterfaceCompositionModel<Thermo, OtherThermo>::getLocalThermo
+(
+    const word& speciesName,
+    const pureMixture<ThermoType>& globalThermo
+) const
+{
+    return globalThermo.cellMixture(0);
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+template<class Thermo, class OtherThermo>
+Foam::InterfaceCompositionModel<Thermo, OtherThermo>::InterfaceCompositionModel
+(
+    const dictionary& dict,
+    const phasePair& pair
+)
+:
+    interfaceCompositionModel(dict, pair),
+    thermo_
+    (
+        pair.phase1().mesh().lookupObject<Thermo>
+        (
+            IOobject::groupName(basicThermo::dictName, pair.phase1().name())
+        )
+    ),
+    otherThermo_
+    (
+        pair.phase2().mesh().lookupObject<OtherThermo>
+        (
+            IOobject::groupName(basicThermo::dictName, pair.phase2().name())
+        )
+    ),
+    Le_("Le", dimless, dict.lookup("Le"))
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+template<class Thermo, class OtherThermo>
+Foam::InterfaceCompositionModel<Thermo, OtherThermo>::
+~InterfaceCompositionModel()
+{}
+
+
+// * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * * //
+
+template<class Thermo, class OtherThermo>
+Foam::tmp<Foam::volScalarField>
+Foam::InterfaceCompositionModel<Thermo, OtherThermo>::dY
+(
+    const word& speciesName,
+    const volScalarField& Tf
+) const
+{
+    return
+        Yf(speciesName, Tf)
+      - thermo_.composition().Y()
+        [
+            thermo_.composition().species()[speciesName]
+        ];
+}
+
+
+template<class Thermo, class OtherThermo>
+Foam::tmp<Foam::volScalarField>
+Foam::InterfaceCompositionModel<Thermo, OtherThermo>::D
+(
+    const word& speciesName
+) const
+{
+    const typename Thermo::thermoType& localThermo =
+        getLocalThermo
+        (
+            speciesName,
+            thermo_
+        );
+
+    const volScalarField& p(thermo_.p());
+
+    const volScalarField& T(thermo_.T());
+
+    tmp<volScalarField> tmpD
+    (
+        new volScalarField
+        (
+            IOobject
+            (
+                IOobject::groupName("D", pair_.name()),
+                p.time().timeName(),
+                p.mesh()
+            ),
+            p.mesh(),
+            dimensionedScalar("zero", dimArea/dimTime, 0)
+        )
+    );
+
+    volScalarField& D(tmpD());
+
+    forAll(p, cellI)
+    {
+        D[cellI] =
+            localThermo.alphah(p[cellI], T[cellI])
+           /localThermo.rho(p[cellI], T[cellI]);
+    }
+
+    D /= Le_;
+
+    return tmpD;
+}
+
+
+template<class Thermo, class OtherThermo>
+Foam::tmp<Foam::volScalarField>
+Foam::InterfaceCompositionModel<Thermo, OtherThermo>::L
+(
+    const word& speciesName,
+    const volScalarField& Tf
+) const
+{
+    const typename Thermo::thermoType& localThermo =
+        getLocalThermo
+        (
+            speciesName,
+            thermo_
+        );
+    const typename OtherThermo::thermoType& otherLocalThermo =
+        getLocalThermo
+        (
+            speciesName,
+            otherThermo_
+        );
+
+    const volScalarField& p(thermo_.p());
+    const volScalarField& otherP(otherThermo_.p());
+
+    tmp<volScalarField> tmpL
+    (
+        new volScalarField
+        (
+            IOobject
+            (
+                IOobject::groupName("L", pair_.name()),
+                p.time().timeName(),
+                p.mesh()
+            ),
+            p.mesh(),
+            dimensionedScalar("zero", dimEnergy/dimMass, 0)
+        )
+    );
+
+    volScalarField& L(tmpL());
+
+    forAll(p, cellI)
+    {
+        L[cellI] =
+            localThermo.Ha(p[cellI], Tf[cellI])
+          - otherLocalThermo.Ha(otherP[cellI], Tf[cellI]);
+    }
+
+    return tmpL;
+}
+
+
+template<class Thermo, class OtherThermo>
+void Foam::InterfaceCompositionModel<Thermo, OtherThermo>::addMDotL
+(
+    const volScalarField& K,
+    const volScalarField& Tf,
+    volScalarField& mDotL,
+    volScalarField& mDotLPrime
+) const
+{
+    forAllConstIter(hashedWordList, this->speciesNames_, iter)
+    {
+        volScalarField rhoKDL
+        (
+            thermo_.rhoThermo::rho()
+           *K
+           *D(*iter)
+           *L(*iter, Tf)
+        );
+
+        mDotL += rhoKDL*dY(*iter, Tf);
+        mDotLPrime += rhoKDL*YfPrime(*iter, Tf);
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/InterfaceCompositionModel/InterfaceCompositionModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/InterfaceCompositionModel/InterfaceCompositionModel.H
new file mode 100644
index 0000000000000000000000000000000000000000..4c2c4ad3de92c1cc5b0b7c1ea5a017825c0f974f
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/InterfaceCompositionModel/InterfaceCompositionModel.H
@@ -0,0 +1,216 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::InterfaceCompositionModel
+
+Description
+    Base class for interface composition models, templated on the two
+    thermodynamic models either side of the interface.
+
+SourceFiles
+    InterfaceCompositionModel.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef InterfaceCompositionModel_H
+#define InterfaceCompositionModel_H
+
+#include "interfaceCompositionModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+class phaseModel;
+class phasePair;
+template <class ThermoType> class pureMixture;
+template <class ThermoType> class multiComponentMixture;
+
+/*---------------------------------------------------------------------------*\
+                         Class InterfaceCompositionModel Declaration
+\*---------------------------------------------------------------------------*/
+
+template<class Thermo, class OtherThermo>
+class InterfaceCompositionModel
+:
+    public interfaceCompositionModel
+{
+protected:
+
+    // Private data
+
+        //- Thermo
+        const Thermo& thermo_;
+
+        //- Other Thermo
+        const OtherThermo& otherThermo_;
+
+        //- Lewis number
+        const dimensionedScalar Le_;
+
+
+    // Private member functions
+
+        //- Get a reference to the local thermo for a pure mixture
+        template<class ThermoType>
+        const typename pureMixture<ThermoType>::thermoType&
+        getLocalThermo
+        (
+            const word& speciesName,
+            const pureMixture<ThermoType>& globalThermo
+        ) const;
+
+        //- Get a reference to the local thermo for a multi component mixture
+        template<class ThermoType>
+        const typename multiComponentMixture<ThermoType>::thermoType&
+        getLocalThermo
+        (
+            const word& speciesName,
+            const multiComponentMixture<ThermoType>& globalThermo
+        ) const;
+
+
+public:
+
+    // Constructors
+
+        //- Construct from components
+        InterfaceCompositionModel
+        (
+            const dictionary& dict,
+            const phasePair& pair
+        );
+
+
+    //- Destructor
+    ~InterfaceCompositionModel();
+
+
+    // Member Functions
+
+        //- Mass fraction difference between the interface and the field
+        virtual tmp<volScalarField> dY
+        (
+            const word& speciesName,
+            const volScalarField& Tf
+        ) const;
+
+        //- Mass diffusivity
+        virtual tmp<volScalarField> D
+        (
+            const word& speciesName
+        ) const;
+
+        //- Latent heat
+        virtual tmp<volScalarField> L
+        (
+            const word& speciesName,
+            const volScalarField& Tf
+        ) const;
+
+        //- Add latent heat flow rate to total
+        virtual void addMDotL
+        (
+            const volScalarField& K,
+            const volScalarField& Tf,
+            volScalarField& mDotL,
+            volScalarField& mDotLPrime
+        ) const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+// Instantiation for multi-component-multi-component pairs
+#define makeInterfaceCompositionType(Type, Thermo, Comp, Mix, Phys, OtherThermo, OtherComp, OtherMix, OtherPhys)\
+                                                                               \
+    typedef Thermo<Comp, SpecieMixture<Mix<Phys> > >                           \
+        Type##Thermo##Comp##Mix##Phys;                                         \
+                                                                               \
+    typedef OtherThermo<OtherComp, OtherMix<OtherPhys> >                       \
+        Type##Other##OtherThermo##OtherComp##OtherMix##OtherPhys;              \
+                                                                               \
+    addInterfaceCompositionToRunTimeSelectionTable                             \
+    (                                                                          \
+        Type,                                                                  \
+        Type##Thermo##Comp##Mix##Phys,                                         \
+        Type##Other##OtherThermo##OtherComp##OtherMix##OtherPhys               \
+    )
+
+// Instantiation for multi-component-single-component pairs
+#define makeSpecieInterfaceCompositionType(Type, Thermo, Comp, Mix, Phys, OtherThermo, OtherComp, OtherMix, OtherPhys)\
+                                                                               \
+    typedef Thermo<Comp, SpecieMixture<Mix<Phys> > >                           \
+        Type##Thermo##Comp##Mix##Phys;                                         \
+                                                                               \
+    typedef OtherThermo<OtherComp, SpecieMixture<OtherMix<OtherPhys> > >       \
+        Type##Other##OtherThermo##OtherComp##OtherMix##OtherPhys;              \
+                                                                               \
+    addInterfaceCompositionToRunTimeSelectionTable                             \
+    (                                                                          \
+        Type,                                                                  \
+        Type##Thermo##Comp##Mix##Phys,                                         \
+        Type##Other##OtherThermo##OtherComp##OtherMix##OtherPhys               \
+    )
+
+// Addition to the run-time selection table
+#define addInterfaceCompositionToRunTimeSelectionTable(Type, Thermo, OtherThermo)\
+                                                                               \
+    typedef Type<Thermo, OtherThermo>                                          \
+        Type##Thermo##OtherThermo;                                             \
+                                                                               \
+    defineTemplateTypeNameAndDebugWithName                                     \
+    (                                                                          \
+        Type##Thermo##OtherThermo,                                             \
+        (                                                                      \
+            word(Type##Thermo##OtherThermo::typeName_()) + "<"                 \
+          + word(Thermo::typeName) + ","                                       \
+          + word(OtherThermo::typeName) + ">"                                  \
+        ).c_str(),                                                             \
+        0                                                                      \
+    );                                                                         \
+                                                                               \
+    addToRunTimeSelectionTable                                                 \
+    (                                                                          \
+        interfaceCompositionModel,                                             \
+        Type##Thermo##OtherThermo,                                             \
+        dictionary                                                             \
+    )
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#ifdef NoRepository
+#   include "InterfaceCompositionModel.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/InterfaceCompositionModel/InterfaceCompositionModels.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/InterfaceCompositionModel/InterfaceCompositionModels.C
new file mode 100644
index 0000000000000000000000000000000000000000..c413e0c524a2b7bd8361e89371905c0d5ee3e47f
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/InterfaceCompositionModel/InterfaceCompositionModels.C
@@ -0,0 +1,155 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include "interfaceCompositionModel.H"
+#include "InterfaceCompositionModel.H"
+#include "Henry.H"
+#include "NonRandomTwoLiquid.H"
+#include "Raoult.H"
+#include "Saturated.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include "makeReactionThermo.H"
+
+#include "thermoPhysicsTypes.H"
+
+#include "rhoConst.H"
+#include "perfectFluid.H"
+
+#include "pureMixture.H"
+#include "multiComponentMixture.H"
+#include "reactingMixture.H"
+#include "SpecieMixture.H"
+
+#include "rhoThermo.H"
+#include "rhoReactionThermo.H"
+#include "heRhoThermo.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    typedef
+        constTransport
+        <
+            species::thermo
+            <
+                hConstThermo
+                <
+                    perfectFluid<specie>
+                >,
+                sensibleInternalEnergy
+            >
+        > constFluidEThermoPhysics;
+};
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    // multi-component liquid
+    makeReactionThermo
+    (
+        rhoThermo,
+        rhoReactionThermo,
+        heRhoThermo,
+        multiComponentMixture,
+        constTransport,
+        sensibleInternalEnergy,
+        hConstThermo,
+        perfectFluid,
+        specie
+    );
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    using namespace interfaceCompositionModels;
+
+    // multi-component gas in the presence of a pure liquid
+    makeInterfaceCompositionType
+    (
+        Saturated,
+        heRhoThermo,
+        rhoReactionThermo,
+        multiComponentMixture,
+        gasEThermoPhysics,
+        heRhoThermo,
+        rhoThermo,
+        pureMixture,
+        constFluidEThermoPhysics
+    );
+
+    // reacting gas in the presence of a pure liquid
+    makeInterfaceCompositionType
+    (
+        Saturated,
+        heRhoThermo,
+        rhoReactionThermo,
+        reactingMixture,
+        gasEThermoPhysics,
+        heRhoThermo,
+        rhoThermo,
+        pureMixture,
+        constFluidEThermoPhysics
+    );
+
+    // multi-component gas in the presence of a multi-component liquid
+    makeSpecieInterfaceCompositionType
+    (
+        Saturated,
+        heRhoThermo,
+        rhoReactionThermo,
+        multiComponentMixture,
+        constGasEThermoPhysics,
+        heRhoThermo,
+        rhoReactionThermo,
+        multiComponentMixture,
+        constFluidEThermoPhysics
+    );
+
+    // multi-component liquid in the presence of a multi-component gas
+    makeSpecieInterfaceCompositionType
+    (
+        Henry,
+        heRhoThermo,
+        rhoReactionThermo,
+        multiComponentMixture,
+        constFluidEThermoPhysics,
+        heRhoThermo,
+        rhoReactionThermo,
+        multiComponentMixture,
+        constGasEThermoPhysics
+    );
+}
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/NonRandomTwoLiquid/NonRandomTwoLiquid.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/NonRandomTwoLiquid/NonRandomTwoLiquid.C
new file mode 100644
index 0000000000000000000000000000000000000000..99783706f31665b3e1023ee6049bd686c122e3c9
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/NonRandomTwoLiquid/NonRandomTwoLiquid.C
@@ -0,0 +1,274 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "NonRandomTwoLiquid.H"
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+template<class Thermo, class OtherThermo>
+Foam::interfaceCompositionModels::NonRandomTwoLiquid<Thermo, OtherThermo>::
+NonRandomTwoLiquid
+(
+    const dictionary& dict,
+    const phasePair& pair
+)
+:
+    InterfaceCompositionModel<Thermo, OtherThermo>(dict, pair),
+    gamma1_
+    (
+        IOobject
+        (
+            IOobject::groupName("gamma1", pair.name()),
+            pair.phase1().mesh().time().timeName(),
+            pair.phase1().mesh()
+        ),
+        pair.phase1().mesh(),
+        dimensionedScalar("one", dimless, 1)
+    ),
+    gamma2_
+    (
+        IOobject
+        (
+            IOobject::groupName("gamma2", pair.name()),
+            pair.phase1().mesh().time().timeName(),
+            pair.phase1().mesh()
+        ),
+        pair.phase1().mesh(),
+        dimensionedScalar("one", dimless, 1)
+    ),
+    beta12_("", dimless/dimTemperature, 0),
+    beta21_("", dimless/dimTemperature, 0)
+{
+    if (this->speciesNames_.size() != 2)
+    {
+        FatalErrorIn
+        (
+            "template<class Thermo, class OtherThermo>"
+            "Foam::interfaceCompositionModels::"
+            "NonRandomTwoLiquid<Thermo, OtherThermo>::"
+            "NonRandomTwoLiquid"
+            "( "
+                "const dictionary& dict, "
+                "const phasePair& pair "
+            ")"
+        )   << "NonRandomTwoLiquid model is suitable for two species only."
+            << exit(FatalError);
+    }
+
+    species1Name_ = this->speciesNames_[0];
+    species2Name_ = this->speciesNames_[1];
+
+    species1Index_ = this->thermo_.composition().species()[species1Name_];
+    species2Index_ = this->thermo_.composition().species()[species2Name_];
+
+    alpha12_ = dimensionedScalar
+    (
+        "alpha12",
+        dimless,
+        dict.subDict(species1Name_).lookup("alpha")
+    );
+    alpha21_ = dimensionedScalar
+    (
+        "alpha21",
+        dimless,
+        dict.subDict(species2Name_).lookup("alpha")
+    );
+
+    beta12_ = dimensionedScalar
+    (
+        "beta12",
+        dimless/dimTemperature,
+        dict.subDict(species1Name_).lookup("beta")
+    );
+    beta21_ = dimensionedScalar
+    (
+        "beta21",
+        dimless/dimTemperature,
+        dict.subDict(species2Name_).lookup("beta")
+    );
+
+    saturationPressureModel12_.reset
+    (
+        saturationPressureModel::New
+        (
+            dict.subDict(species1Name_).subDict("interaction")
+        ).ptr()
+    );
+    saturationPressureModel21_.reset
+    (
+        saturationPressureModel::New
+        (
+            dict.subDict(species2Name_).subDict("interaction")
+        ).ptr()
+    );
+
+    speciesModel1_.reset
+    (
+        interfaceCompositionModel::New
+        (
+            dict.subDict(species1Name_),
+            pair
+        ).ptr()
+    );
+
+    speciesModel2_.reset
+    (
+        interfaceCompositionModel::New
+        (
+            dict.subDict(species2Name_),
+            pair
+        ).ptr()
+    );
+}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+template<class Thermo, class OtherThermo>
+Foam::interfaceCompositionModels::NonRandomTwoLiquid<Thermo, OtherThermo>::
+~NonRandomTwoLiquid()
+{}
+
+
+// * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * * //
+
+template<class Thermo, class OtherThermo>
+void
+Foam::interfaceCompositionModels::NonRandomTwoLiquid<Thermo, OtherThermo>::
+update
+(
+    const volScalarField& Tf
+)
+{
+    volScalarField W(this->thermo_.composition().W());
+
+    volScalarField X1
+    (
+        this->thermo_.composition().Y(species1Index_)
+       *W
+       /this->thermo_.composition().W(species1Index_)
+    );
+
+    volScalarField X2
+    (
+        this->thermo_.composition().Y(species2Index_)
+       *W
+       /this->thermo_.composition().W(species2Index_)
+    );
+
+    volScalarField alpha12(alpha12_ + Tf*beta12_);
+    volScalarField alpha21(alpha21_ + Tf*beta21_);
+
+    volScalarField tau12(saturationPressureModel12_->lnPSat(Tf));
+    volScalarField tau21(saturationPressureModel21_->lnPSat(Tf));
+
+    volScalarField G12(exp(- alpha12*tau12));
+    volScalarField G21(exp(- alpha21*tau21));
+
+    gamma1_ =
+        exp
+        (
+            sqr(X2)
+           *(
+                tau21*sqr(G21)/max(sqr(X1 + X2*G21), SMALL)
+              + tau12*G12/max(sqr(X2 + X1*G12), SMALL)
+            )
+        );
+    gamma2_ =
+        exp
+        (
+            sqr(X1)
+           *(
+                tau12*sqr(G12)/max(sqr(X2 + X1*G12), SMALL)
+              + tau21*G21/max(sqr(X1 + X2*G21), SMALL)
+            )
+        );
+}
+
+
+template<class Thermo, class OtherThermo>
+Foam::tmp<Foam::volScalarField>
+Foam::interfaceCompositionModels::NonRandomTwoLiquid<Thermo, OtherThermo>::Yf
+(
+    const word& speciesName,
+    const volScalarField& Tf
+) const
+{
+    if (speciesName == species1Name_)
+    {
+        return
+            this->otherThermo_.composition().Y(speciesName)
+           *speciesModel1_->Yf(speciesName, Tf)
+           *gamma1_;
+    }
+    else if(speciesName == species2Name_)
+    {
+        return
+            this->otherThermo_.composition().Y(speciesName)
+           *speciesModel2_->Yf(speciesName, Tf)
+           *gamma2_;
+    }
+    else
+    {
+        return
+            this->thermo_.composition().Y(speciesName)
+           *(scalar(1) - Yf(species1Name_, Tf) - Yf(species2Name_, Tf));
+    }
+}
+
+
+template<class Thermo, class OtherThermo>
+Foam::tmp<Foam::volScalarField>
+Foam::interfaceCompositionModels::NonRandomTwoLiquid<Thermo, OtherThermo>::
+YfPrime
+(
+    const word& speciesName,
+    const volScalarField& Tf
+) const
+{
+    if (speciesName == species1Name_)
+    {
+        return
+            this->otherThermo_.composition().Y(speciesName)
+           *speciesModel1_->YfPrime(speciesName, Tf)
+           *gamma1_;
+    }
+    else if(speciesName == species2Name_)
+    {
+        return
+            this->otherThermo_.composition().Y(speciesName)
+           *speciesModel2_->YfPrime(speciesName, Tf)
+           *gamma2_;
+    }
+    else
+    {
+        return
+          - this->thermo_.composition().Y(speciesName)
+           *(YfPrime(species1Name_, Tf) + YfPrime(species2Name_, Tf));
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/NonRandomTwoLiquid/NonRandomTwoLiquid.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/NonRandomTwoLiquid/NonRandomTwoLiquid.H
new file mode 100644
index 0000000000000000000000000000000000000000..d35829c77d15bbb39e184fb7b4d8a422fafd820f
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/NonRandomTwoLiquid/NonRandomTwoLiquid.H
@@ -0,0 +1,167 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::NonRandomTwoLiquid
+
+Description
+    Non ideal law for the mixing of two species. A separate composition model
+    is given for each species. The composition of a species is equal to the
+    value given by the model, scaled by the species fraction in the bulk of the
+    other phase, and multiplied by the activity coefficient for that species.
+    The gas behaviour is assumed ideal; i.e. the fugacity coefficient is taken
+    as equal to 1.
+
+SourceFiles
+    NonRandomTwoLiquid.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef NonRandomTwoLiquid_H
+#define NonRandomTwoLiquid_H
+
+#include "InterfaceCompositionModel.H"
+#include "saturationPressureModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+class phasePair;
+
+namespace interfaceCompositionModels
+{
+
+/*---------------------------------------------------------------------------*\
+                         Class NonRandomTwoLiquid Declaration
+\*---------------------------------------------------------------------------*/
+
+template<class Thermo, class OtherThermo>
+class NonRandomTwoLiquid
+:
+    public InterfaceCompositionModel<Thermo, OtherThermo>
+{
+private:
+
+    // Private data
+
+        //- Activity coefficient for species 1
+        volScalarField gamma1_;
+
+        //- Activity coefficient for species 2
+        volScalarField gamma2_;
+
+        //- Name of species 1
+        word species1Name_;
+
+        //- Name of species 2
+        word species2Name_;
+
+        //- Indiex of species 1 within this thermo
+        label species1Index_;
+
+        //- Indiex of species 2 within this thermo
+        label species2Index_;
+
+        //- Non-randomness constant parameter for species 1
+        dimensionedScalar alpha12_;
+
+        //- Non-randomness constant parameter for species 2
+        dimensionedScalar alpha21_;
+
+        //- Non-randomness linear paramater for species 1
+        dimensionedScalar beta12_;
+
+        //- Non-randomness linear paramater for species 2
+        dimensionedScalar beta21_;
+
+        //- Interaction parameter model for species 1
+        autoPtr<saturationPressureModel> saturationPressureModel12_;
+
+        //- Interaction parameter model for species 2
+        autoPtr<saturationPressureModel> saturationPressureModel21_;
+
+        //- Composition model for species 1
+        autoPtr<interfaceCompositionModel> speciesModel1_;
+
+        //- Composition model for species 2
+        autoPtr<interfaceCompositionModel> speciesModel2_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("NonRandomTwoLiquid");
+
+    // Constructors
+
+        //- Construct from components
+        NonRandomTwoLiquid
+        (
+            const dictionary& dict,
+            const phasePair& pair
+        );
+
+
+    //- Destructor
+    virtual ~NonRandomTwoLiquid();
+
+
+    // Member Functions
+
+        //- Update the composition
+        virtual void update(const volScalarField& Tf);
+
+        //- The interface species fraction
+        virtual tmp<volScalarField> Yf
+        (
+            const word& speciesName,
+            const volScalarField& Tf
+        ) const;
+
+        //- The interface species fraction derivative w.r.t. temperature
+        virtual tmp<volScalarField> YfPrime
+        (
+            const word& speciesName,
+            const volScalarField& Tf
+        ) const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace interfaceCompositionModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#ifdef NoRepository
+#   include "NonRandomTwoLiquid.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Raoult/Raoult.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Raoult/Raoult.C
new file mode 100644
index 0000000000000000000000000000000000000000..e8f16ee9aefc9b3d52ef1ded167dd6a54cf15442
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Raoult/Raoult.C
@@ -0,0 +1,162 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "Raoult.H"
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+template<class Thermo, class OtherThermo>
+Foam::interfaceCompositionModels::Raoult<Thermo, OtherThermo>::Raoult
+(
+    const dictionary& dict,
+    const phasePair& pair
+)
+:
+    InterfaceCompositionModel<Thermo, OtherThermo>(dict, pair),
+    YNonVapour_
+    (
+        IOobject
+        (
+            IOobject::groupName("YNonVapour", pair.name()),
+            pair.phase1().mesh().time().timeName(),
+            pair.phase1().mesh()
+        ),
+        pair.phase1().mesh(),
+        dimensionedScalar("one", dimless, 1)
+    ),
+    YNonVapourPrime_
+    (
+        IOobject
+        (
+            IOobject::groupName("YNonVapourPrime", pair.name()),
+            pair.phase1().mesh().time().timeName(),
+            pair.phase1().mesh()
+        ),
+        pair.phase1().mesh(),
+        dimensionedScalar("zero", dimless/dimTemperature, 0)
+    )
+{
+    forAllConstIter(hashedWordList, this->speciesNames_, iter)
+    {
+        speciesModels_.insert
+        (
+            *iter,
+            autoPtr<interfaceCompositionModel>
+            (
+                interfaceCompositionModel::New
+                (
+                    dict.subDict(*iter),
+                    pair
+                )
+            )
+        );
+    }
+}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+template<class Thermo, class OtherThermo>
+Foam::interfaceCompositionModels::Raoult<Thermo, OtherThermo>::~Raoult()
+{}
+
+
+// * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * * //
+
+template<class Thermo, class OtherThermo>
+void Foam::interfaceCompositionModels::Raoult<Thermo, OtherThermo>::update
+(
+    const volScalarField& Tf
+)
+{
+    YNonVapour_ = scalar(1);
+
+    forAllIter
+    (
+        HashTable<autoPtr<interfaceCompositionModel> >,
+        speciesModels_,
+        iter
+    )
+    {
+        iter()->update(Tf);
+
+        YNonVapour_ -=
+            this->otherThermo_.composition().Y(iter.key())
+           *iter()->Yf(iter.key(), Tf);
+
+        YNonVapourPrime_ -=
+            this->otherThermo_.composition().Y(iter.key())
+           *iter()->YfPrime(iter.key(), Tf);
+    }
+}
+
+
+template<class Thermo, class OtherThermo>
+Foam::tmp<Foam::volScalarField>
+Foam::interfaceCompositionModels::Raoult<Thermo, OtherThermo>::Yf
+(
+    const word& speciesName,
+    const volScalarField& Tf
+) const
+{
+    if (this->speciesNames_.contains(speciesName))
+    {
+        return
+             this->otherThermo_.composition().Y(speciesName)
+            *speciesModels_[speciesName]->Yf(speciesName, Tf);
+    }
+    else
+    {
+        return
+             this->thermo_.composition().Y(speciesName)
+            *YNonVapour_;
+    }
+}
+
+
+template<class Thermo, class OtherThermo>
+Foam::tmp<Foam::volScalarField>
+Foam::interfaceCompositionModels::Raoult<Thermo, OtherThermo>::YfPrime
+(
+    const word& speciesName,
+    const volScalarField& Tf
+) const
+{
+    if (this->speciesNames_.contains(speciesName))
+    {
+        return
+             this->otherThermo_.composition().Y(speciesName)
+            *speciesModels_[speciesName]->YfPrime(speciesName, Tf);
+    }
+    else
+    {
+        return
+            this->otherThermo_.composition().Y(speciesName)
+           *YNonVapourPrime_;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Raoult/Raoult.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Raoult/Raoult.H
new file mode 100644
index 0000000000000000000000000000000000000000..103c8d048c3860f4440f2d2d87aef527e245fa9d
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Raoult/Raoult.H
@@ -0,0 +1,130 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::Raoult
+
+Description
+    Raoult's law of ideal mixing. A separate composition model is given for
+    each species. The composition of a species is equal to the value given by
+    the model scaled by the species fraction in the bulk of the other phase.
+
+SourceFiles
+    Raoult.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef Raoult_H
+#define Raoult_H
+
+#include "InterfaceCompositionModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+class phasePair;
+
+namespace interfaceCompositionModels
+{
+
+/*---------------------------------------------------------------------------*\
+                         Class Raoult Declaration
+\*---------------------------------------------------------------------------*/
+
+template<class Thermo, class OtherThermo>
+class Raoult
+:
+    public InterfaceCompositionModel<Thermo, OtherThermo>
+{
+private:
+
+    // Private data
+
+        //- Non-vapour species fraction
+        volScalarField YNonVapour_;
+
+        //- Non-vapour species fraction derivative w.r.t. temperature
+        volScalarField YNonVapourPrime_;
+
+        //- Species' individual composition models
+        HashTable<autoPtr<interfaceCompositionModel> > speciesModels_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("Raoult");
+
+    // Constructors
+
+        //- Construct from components
+        Raoult
+        (
+            const dictionary& dict,
+            const phasePair& pair
+        );
+
+
+    //- Destructor
+    virtual ~Raoult();
+
+
+    // Member Functions
+
+        //- Update the composition
+        virtual void update(const volScalarField& Tf);
+
+        //- The interface species fraction
+        virtual tmp<volScalarField> Yf
+        (
+            const word& speciesName,
+            const volScalarField& Tf
+        ) const;
+
+        //- The interface species fraction derivative w.r.t. temperature
+        virtual tmp<volScalarField> YfPrime
+        (
+            const word& speciesName,
+            const volScalarField& Tf
+        ) const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace interfaceCompositionModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#ifdef NoRepository
+#   include "Raoult.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Saturated/Saturated.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Saturated/Saturated.C
new file mode 100644
index 0000000000000000000000000000000000000000..f0f1b5d622d246edac8cf41be498553bbf6964fe
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Saturated/Saturated.C
@@ -0,0 +1,156 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "Saturated.H"
+
+// * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
+
+template<class Thermo, class OtherThermo>
+Foam::tmp<Foam::volScalarField>
+Foam::interfaceCompositionModels::Saturated<Thermo, OtherThermo>::
+wRatioByP() const
+{
+    return
+        this->thermo_.composition().W(saturatedIndex_)
+       /this->thermo_.composition().W()
+       /this->thermo_.p();
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+template<class Thermo, class OtherThermo>
+Foam::interfaceCompositionModels::Saturated<Thermo, OtherThermo>::Saturated
+(
+    const dictionary& dict,
+    const phasePair& pair
+)
+:
+    InterfaceCompositionModel<Thermo, OtherThermo>(dict, pair),
+    saturatedName_(this->speciesNames_[0]),
+    saturatedIndex_
+    (
+        this->thermo_.composition().species()[saturatedName_]
+    ),
+    saturationPressureModel_
+    (
+        saturationPressureModel::New
+        (
+            dict.subDict("saturationPressure")
+        )
+    )
+{
+    if (this->speciesNames_.size() != 1)
+    {
+        FatalErrorIn
+        (
+            "template<class Thermo, class OtherThermo>"
+            "Foam::interfaceCompositionModels::Saturated<Thermo, OtherThermo>::"
+            "Saturated"
+            "( "
+                "const dictionary& dict, "
+                "const phasePair& pair "
+            ")"
+        )   << "Saturated model is suitable for one species only."
+            << exit(FatalError);
+    }
+}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+template<class Thermo, class OtherThermo>
+Foam::interfaceCompositionModels::Saturated<Thermo, OtherThermo>::~Saturated()
+{}
+
+
+// * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * * //
+
+template<class Thermo, class OtherThermo>
+void
+Foam::interfaceCompositionModels::Saturated<Thermo, OtherThermo>::update
+(
+    const volScalarField& Tf
+)
+{
+    // do nothing
+}
+
+
+template<class Thermo, class OtherThermo>
+Foam::tmp<Foam::volScalarField>
+Foam::interfaceCompositionModels::Saturated<Thermo, OtherThermo>::Yf
+(
+    const word& speciesName,
+    const volScalarField& Tf
+) const
+{
+    if (saturatedName_ == speciesName)
+    {
+        return wRatioByP()*saturationPressureModel_->pSat(Tf);
+    }
+    else
+    {
+        const label speciesIndex
+        (
+            this->thermo_.composition().species()[speciesName]
+        );
+
+        return
+            this->thermo_.Y()[speciesIndex]
+           *(scalar(1) - wRatioByP()*saturationPressureModel_->pSat(Tf))
+           /max(scalar(1) - this->thermo_.Y()[saturatedIndex_], SMALL);
+    }
+}
+
+
+template<class Thermo, class OtherThermo>
+Foam::tmp<Foam::volScalarField>
+Foam::interfaceCompositionModels::Saturated<Thermo, OtherThermo>::YfPrime
+(
+    const word& speciesName,
+    const volScalarField& Tf
+) const
+{
+    if (saturatedName_ == speciesName)
+    {
+        return wRatioByP()*saturationPressureModel_->pSatPrime(Tf);
+    }
+    else
+    {
+        const label speciesIndex
+        (
+            this->thermo_.composition().species()[speciesName]
+        );
+
+        return
+          - this->thermo_.Y()[speciesIndex]
+           *wRatioByP()*saturationPressureModel_->pSatPrime(Tf)
+           /max(scalar(1) - this->thermo_.Y()[saturatedIndex_], SMALL);
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Saturated/Saturated.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Saturated/Saturated.H
new file mode 100644
index 0000000000000000000000000000000000000000..3ffdda86c2b8ec3ca705cdeab30332b27398fb4c
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Saturated/Saturated.H
@@ -0,0 +1,137 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::Saturated
+
+Description
+    Model which uses a saturation pressure model for a single species to
+    calculate the interface composition.
+
+SourceFiles
+    Saturated.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef Saturated_H
+#define Saturated_H
+
+#include "InterfaceCompositionModel.H"
+#include "saturationPressureModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+class phasePair;
+
+namespace interfaceCompositionModels
+{
+
+/*---------------------------------------------------------------------------*\
+                         Class Saturated Declaration
+\*---------------------------------------------------------------------------*/
+
+template<class Thermo, class OtherThermo>
+class Saturated
+:
+    public InterfaceCompositionModel<Thermo, OtherThermo>
+{
+protected:
+
+    // Private data
+
+        //- Saturated species name
+        word saturatedName_;
+
+        //- Saturated species index
+        label saturatedIndex_;
+
+        //- Saturation pressure model
+        autoPtr<saturationPressureModel> saturationPressureModel_;
+
+
+    // Private Member Functions
+
+        //- Constant of propotionality between partial pressure and mass
+        //  fraction
+        tmp<volScalarField> wRatioByP() const;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("Saturated");
+
+    // Constructors
+
+        //- Construct from components
+        Saturated
+        (
+            const dictionary& dict,
+            const phasePair& pair
+        );
+
+
+    //- Destructor
+    virtual ~Saturated();
+
+
+    // Member Functions
+
+        //- Update the composition
+        virtual void update(const volScalarField& Tf);
+
+        //- The interface species fraction
+        virtual tmp<volScalarField> Yf
+        (
+            const word& speciesName,
+            const volScalarField& Tf
+        ) const;
+
+        //- The interface species fraction derivative w.r.t. temperature
+        virtual tmp<volScalarField> YfPrime
+        (
+            const word& speciesName,
+            const volScalarField& Tf
+        ) const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace interfaceCompositionModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#ifdef NoRepository
+#   include "Saturated.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/interfaceCompositionModel/interfaceCompositionModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/interfaceCompositionModel/interfaceCompositionModel.C
new file mode 100644
index 0000000000000000000000000000000000000000..383171ab5e276a031b6d58d6ad207ee246892ac1
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/interfaceCompositionModel/interfaceCompositionModel.C
@@ -0,0 +1,80 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "interfaceCompositionModel.H"
+#include "phaseModel.H"
+#include "phasePair.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    defineTypeNameAndDebug(interfaceCompositionModel, 0);
+    defineRunTimeSelectionTable(interfaceCompositionModel, dictionary);
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::interfaceCompositionModel::interfaceCompositionModel
+(
+    const dictionary& dict,
+    const phasePair& pair
+)
+:
+    pair_(pair),
+    speciesNames_(dict.lookup("species"))
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::interfaceCompositionModel::~interfaceCompositionModel()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+const Foam::hashedWordList& Foam::interfaceCompositionModel::species() const
+{
+    return speciesNames_;
+}
+
+
+bool Foam::interfaceCompositionModel::transports
+(
+    word& speciesName
+) const
+{
+    if (this->speciesNames_.contains(speciesName))
+    {
+        return true;
+    }
+
+    return false;
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/interfaceCompositionModel/interfaceCompositionModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/interfaceCompositionModel/interfaceCompositionModel.H
new file mode 100644
index 0000000000000000000000000000000000000000..bfbdee52b69f1c2389850fa574867334218b4d22
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/interfaceCompositionModel/interfaceCompositionModel.H
@@ -0,0 +1,182 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::interfaceCompositionModel
+
+Description
+    Generic base class for interface composition models. These models describe
+    the composition in phase 1 of the supplied pair at the interface with phase
+    2.
+
+SourceFiles
+    interfaceCompositionModel.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef interfaceCompositionModel_H
+#define interfaceCompositionModel_H
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include "volFields.H"
+#include "dictionary.H"
+#include "hashedWordList.H"
+#include "runTimeSelectionTables.H"
+
+namespace Foam
+{
+
+class phaseModel;
+class phasePair;
+
+/*---------------------------------------------------------------------------*\
+                        Class interfaceCompositionModel Declaration
+\*---------------------------------------------------------------------------*/
+
+class interfaceCompositionModel
+{
+protected:
+
+    // Protected data
+
+        //- Phase pair
+        const phasePair& pair_;
+
+        //- Names of the transferring species
+        const hashedWordList speciesNames_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("interfaceCompositionModel");
+
+
+    // Declare runtime construction
+
+        declareRunTimeSelectionTable
+        (
+            autoPtr,
+            interfaceCompositionModel,
+            dictionary,
+            (
+                const dictionary& dict,
+                const phasePair& pair
+            ),
+            (dict, pair)
+        );
+
+
+    // Constructors
+
+        //- Construct from a dictionary and a phase pair
+        interfaceCompositionModel
+        (
+            const dictionary& dict,
+            const phasePair& pair
+        );
+
+
+    //- Destructor
+    virtual ~interfaceCompositionModel();
+
+
+    // Selectors
+
+        static autoPtr<interfaceCompositionModel> New
+        (
+            const dictionary& dict,
+            const phasePair& pair
+        );
+
+
+    // Member Functions
+
+        //- Update the composition
+        virtual void update(const volScalarField& Tf) = 0;
+
+        //- Return the transferring species names
+        const hashedWordList& species() const;
+
+        //- Returns whether the species is transported by the model and
+        //  provides the name of the diffused species
+        bool transports
+        (
+            word& speciesName
+        ) const;
+
+        //- Interface mass fraction
+        virtual tmp<volScalarField> Yf
+        (
+            const word& speciesName,
+            const volScalarField& Tf
+        ) const = 0;
+
+        //- The interface mass fraction derivative w.r.t. temperature
+        virtual tmp<volScalarField> YfPrime
+        (
+            const word& speciesName,
+            const volScalarField& Tf
+        ) const = 0;
+
+        //- Mass fraction difference between the interface and the field
+        virtual tmp<volScalarField> dY
+        (
+            const word& speciesName,
+            const volScalarField& Tf
+        ) const = 0;
+
+        //- Mass diffusivity
+        virtual tmp<volScalarField> D
+        (
+            const word& speciesName
+        ) const = 0;
+
+        //- Latent heat
+        virtual tmp<volScalarField> L
+        (
+            const word& speciesName,
+            const volScalarField& Tf
+        ) const = 0;
+
+        //- Add latent heat flow rate to total
+        virtual void addMDotL
+        (
+            const volScalarField& K,
+            const volScalarField& Tf,
+            volScalarField& mDotL,
+            volScalarField& mDotLPrime
+        ) const = 0;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/interfaceCompositionModel/newInterfaceCompositionModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/interfaceCompositionModel/newInterfaceCompositionModel.C
new file mode 100644
index 0000000000000000000000000000000000000000..8b04d8f5f1efe9658c6e45ac361e22cc163bd1fe
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/interfaceCompositionModel/newInterfaceCompositionModel.C
@@ -0,0 +1,69 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "interfaceCompositionModel.H"
+#include "phasePair.H"
+#include "rhoThermo.H"
+
+// * * * * * * * * * * * * * * * * Selector  * * * * * * * * * * * * * * * * //
+
+Foam::autoPtr<Foam::interfaceCompositionModel>
+Foam::interfaceCompositionModel::New
+(
+    const dictionary& dict,
+    const phasePair& pair
+)
+{
+    word interfaceCompositionModelType
+    (
+        word(dict.lookup("type"))
+      + "<"
+      + pair.phase1().thermo().type()
+      + ","
+      + pair.phase2().thermo().type()
+      + ">"
+    );
+
+    Info<< "Selecting interfaceCompositionModel for "
+        << pair << ": " << interfaceCompositionModelType << endl;
+
+    dictionaryConstructorTable::iterator cstrIter =
+        dictionaryConstructorTablePtr_->find(interfaceCompositionModelType);
+
+    if (cstrIter == dictionaryConstructorTablePtr_->end())
+    {
+        FatalErrorIn("interfaceCompositionModel::New")
+            << "Unknown interfaceCompositionModelType type "
+            << interfaceCompositionModelType << endl << endl
+            << "Valid interfaceCompositionModel types are : " << endl
+            << dictionaryConstructorTablePtr_->sortedToc()
+            << exit(FatalError);
+    }
+
+    return cstrIter()(dict, pair);
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/Frossling/Frossling.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/Frossling/Frossling.C
new file mode 100644
index 0000000000000000000000000000000000000000..6398caa0e3d59689fe2b1b2e8b845368d038ff33
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/Frossling/Frossling.C
@@ -0,0 +1,72 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "Frossling.H"
+#include "phasePair.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace massTransferModels
+{
+    defineTypeNameAndDebug(Frossling, 0);
+    addToRunTimeSelectionTable(massTransferModel, Frossling, dictionary);
+}
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::massTransferModels::Frossling::Frossling
+(
+    const dictionary& dict,
+    const phasePair& pair
+)
+:
+    massTransferModel(dict, pair),
+    Le_("Le", dimless, dict.lookup("Le"))
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::massTransferModels::Frossling::~Frossling()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volScalarField>
+Foam::massTransferModels::Frossling::K() const
+{
+    volScalarField Sh(scalar(2) + 0.552*sqrt(pair_.Re())*cbrt(Le_*pair_.Pr()));
+
+    return 6.0*pair_.dispersed()*Sh/sqr(pair_.dispersed().d());
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/Frossling/Frossling.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/Frossling/Frossling.H
new file mode 100644
index 0000000000000000000000000000000000000000..d5190a67653ab9bdb7d4ba67d2664bf09e569065
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/Frossling/Frossling.H
@@ -0,0 +1,103 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::massTransferModels::Frossling
+
+Description
+    Frossling correlation for turbulent mass transfer from the surface of a
+    sphere to the surrounding fluid.
+
+SourceFiles
+    Frossling.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef Frossling_H
+#define Frossling_H
+
+#include "massTransferModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+class phasePair;
+
+namespace massTransferModels
+{
+
+/*---------------------------------------------------------------------------*\
+                          Class Frossling Declaration
+\*---------------------------------------------------------------------------*/
+
+class Frossling
+:
+    public massTransferModel
+{
+private:
+
+    // Private data
+
+        //- Lewis number
+        const dimensionedScalar Le_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("Frossling");
+
+
+    // Constructors
+
+        //- Construct from components
+        Frossling
+        (
+            const dictionary& dict,
+            const phasePair& pair
+        );
+
+
+    //- Destructor
+    virtual ~Frossling();
+
+
+    // Member Functions
+
+        //- The implicit mass transfer coefficient
+        virtual tmp<volScalarField> K() const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace massTransferModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/massTransferModel/massTransferModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/massTransferModel/massTransferModel.C
new file mode 100644
index 0000000000000000000000000000000000000000..da38c966c96ac8ada98402520f16adfb5ce24304
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/massTransferModel/massTransferModel.C
@@ -0,0 +1,58 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "massTransferModel.H"
+#include "phasePair.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    defineTypeNameAndDebug(massTransferModel, 0);
+    defineRunTimeSelectionTable(massTransferModel, dictionary);
+}
+
+const Foam::dimensionSet Foam::massTransferModel::dimK(0, -2, 0, 0, 0);
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::massTransferModel::massTransferModel
+(
+    const dictionary& dict,
+    const phasePair& pair
+)
+:
+    pair_(pair)
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::massTransferModel::~massTransferModel()
+{}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/massTransferModel/massTransferModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/massTransferModel/massTransferModel.H
new file mode 100644
index 0000000000000000000000000000000000000000..53d12a549325f7b6d7c9585c0aa0d1e56ce395ca
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/massTransferModel/massTransferModel.H
@@ -0,0 +1,128 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::massTransferModel
+
+Description
+
+SourceFiles
+    massTransferModel.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef massTransferModel_H
+#define massTransferModel_H
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include "volFields.H"
+#include "dictionary.H"
+#include "runTimeSelectionTables.H"
+
+namespace Foam
+{
+
+class phasePair;
+
+/*---------------------------------------------------------------------------*\
+                        Class massTransferModel Declaration
+\*---------------------------------------------------------------------------*/
+
+class massTransferModel
+{
+protected:
+
+    // Protected data
+
+        //- Phase pair
+        const phasePair& pair_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("massTransferModel");
+
+
+    // Declare runtime construction
+
+        declareRunTimeSelectionTable
+        (
+            autoPtr,
+            massTransferModel,
+            dictionary,
+            (
+                const dictionary& dict,
+                const phasePair& pair
+            ),
+            (dict, pair)
+        );
+
+
+    // Static data members
+
+        //- Coefficient dimensions
+        static const dimensionSet dimK;
+
+
+    // Constructors
+
+        //- Construct from a dictionary and a phase pair
+        massTransferModel
+        (
+            const dictionary& dict,
+            const phasePair& pair
+        );
+
+
+    //- Destructor
+    virtual ~massTransferModel();
+
+
+    // Selectors
+
+        static autoPtr<massTransferModel> New
+        (
+            const dictionary& dict,
+            const phasePair& pair
+        );
+
+
+    // Member Functions
+
+        //- The implicit mass transfer coefficient
+        //  Note: this has had the species mass diffusivity factored out
+        virtual tmp<volScalarField> K() const = 0;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/massTransferModel/newMassTransferModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/massTransferModel/newMassTransferModel.C
new file mode 100644
index 0000000000000000000000000000000000000000..d8ee288ef08404687906ee0b5502509c5f6eb48e
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/massTransferModel/newMassTransferModel.C
@@ -0,0 +1,59 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "massTransferModel.H"
+#include "phasePair.H"
+
+// * * * * * * * * * * * * * * * * Selector  * * * * * * * * * * * * * * * * //
+
+Foam::autoPtr<Foam::massTransferModel> Foam::massTransferModel::New
+(
+    const dictionary& dict,
+    const phasePair& pair
+)
+{
+    word massTransferModelType(dict.lookup("type"));
+
+    Info<< "Selecting massTransferModel for "
+        << pair << ": " << massTransferModelType << endl;
+
+    dictionaryConstructorTable::iterator cstrIter =
+        dictionaryConstructorTablePtr_->find(massTransferModelType);
+
+    if (cstrIter == dictionaryConstructorTablePtr_->end())
+    {
+        FatalErrorIn("massTransferModel::New")
+            << "Unknown massTransferModelType type "
+            << massTransferModelType << endl << endl
+            << "Valid massTransferModel types are : " << endl
+            << dictionaryConstructorTablePtr_->sortedToc()
+            << exit(FatalError);
+    }
+
+    return cstrIter()(dict, pair);
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/sphericalMassTransfer/sphericalMassTransfer.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/sphericalMassTransfer/sphericalMassTransfer.C
new file mode 100644
index 0000000000000000000000000000000000000000..e9ba5ccb2d04cc788cfeec624d5232654f1a89eb
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/sphericalMassTransfer/sphericalMassTransfer.C
@@ -0,0 +1,75 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "sphericalMassTransfer.H"
+#include "phasePair.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace massTransferModels
+{
+    defineTypeNameAndDebug(sphericalMassTransfer, 0);
+    addToRunTimeSelectionTable
+    (
+        massTransferModel,
+        sphericalMassTransfer,
+        dictionary
+    );
+}
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::massTransferModels::sphericalMassTransfer::sphericalMassTransfer
+(
+    const dictionary& dict,
+    const phasePair& pair
+)
+:
+    massTransferModel(dict, pair),
+    Le_("Le", dimless, dict.lookup("Le"))
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::massTransferModels::sphericalMassTransfer::~sphericalMassTransfer()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volScalarField>
+Foam::massTransferModels::sphericalMassTransfer::K() const
+{
+    return 60.0*pair_.dispersed()/sqr(pair_.dispersed().d());
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/sphericalMassTransfer/sphericalMassTransfer.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/sphericalMassTransfer/sphericalMassTransfer.H
new file mode 100644
index 0000000000000000000000000000000000000000..f688b3cf14e1d410643252b6cad13d5789cbda76
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/sphericalMassTransfer/sphericalMassTransfer.H
@@ -0,0 +1,103 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::massTransferModels::sphericalMassTransfer
+
+Description
+    Model which applies an analytical solution for mass transfer from the
+    surface of a sphere to the fluid within the sphere.
+
+SourceFiles
+    sphericalMassTransfer.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef sphericalMassTransfer_H
+#define sphericalMassTransfer_H
+
+#include "massTransferModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+class phasePair;
+
+namespace massTransferModels
+{
+
+/*---------------------------------------------------------------------------*\
+                          Class sphericalMassTransfer Declaration
+\*---------------------------------------------------------------------------*/
+
+class sphericalMassTransfer
+:
+    public massTransferModel
+{
+private:
+
+    // Private data
+
+        //- Lewis number
+        const dimensionedScalar Le_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("spherical");
+
+
+    // Constructors
+
+        //- Construct from components
+        sphericalMassTransfer
+        (
+            const dictionary& dict,
+            const phasePair& pair
+        );
+
+
+    //- Destructor
+    virtual ~sphericalMassTransfer();
+
+
+    // Member Functions
+
+        //- The implicit mass transfer coefficient
+        virtual tmp<volScalarField> K() const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace massTransferModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/Antoine/Antoine.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/Antoine/Antoine.C
new file mode 100644
index 0000000000000000000000000000000000000000..f77216b79af3555aa6106ac765c1e0fd5fca35d0
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/Antoine/Antoine.C
@@ -0,0 +1,92 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "Antoine.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace saturationPressureModels
+{
+    defineTypeNameAndDebug(Antoine, 0);
+    addToRunTimeSelectionTable(saturationPressureModel, Antoine, dictionary);
+}
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::saturationPressureModels::Antoine::Antoine(const dictionary& dict)
+:
+    saturationPressureModel(),
+    A_("A", dimless, dict.lookup("A")),
+    B_("B", dimTemperature, dict.lookup("B")),
+    C_("C", dimTemperature, dict.lookup("C"))
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::saturationPressureModels::Antoine::~Antoine()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volScalarField>
+Foam::saturationPressureModels::Antoine::pSat
+(
+    const volScalarField& T
+) const
+{
+    return
+        dimensionedScalar("one", dimPressure, 1)
+       *exp(A_ + B_/(C_ + T));
+}
+
+
+Foam::tmp<Foam::volScalarField>
+Foam::saturationPressureModels::Antoine::pSatPrime
+(
+    const volScalarField& T
+) const
+{
+    return - pSat(T)*B_/sqr(C_ + T);
+}
+
+
+Foam::tmp<Foam::volScalarField>
+Foam::saturationPressureModels::Antoine::lnPSat
+(
+    const volScalarField& T
+) const
+{
+    return A_ + B_/(C_ + T);
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/Antoine/Antoine.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/Antoine/Antoine.H
new file mode 100644
index 0000000000000000000000000000000000000000..4c48c36d837e0bfebff2dc9c1e5e71d1470979fa
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/Antoine/Antoine.H
@@ -0,0 +1,113 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::saturationPressureModels::Antoine
+
+Description
+    Antoine equation for the vapour pressure.
+
+    \f[
+        \log p = A + \frac{B}{C + T}
+    \f]
+
+    Coefficients \f$A\f$, \f$B\f$ and \f$C\f$ are to be supplied and should be
+    suitable for natural logarithms and temperatures in Kelvin.
+
+SourceFiles
+    Antoine.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef Antoine_H
+#define Antoine_H
+
+#include "saturationPressureModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace saturationPressureModels
+{
+
+/*---------------------------------------------------------------------------*\
+                         Class Antoine Declaration
+\*---------------------------------------------------------------------------*/
+
+class Antoine
+:
+    public saturationPressureModel
+{
+protected:
+
+    // Private data
+
+        //- Constant A
+        dimensionedScalar A_;
+
+        //- Constant B
+        dimensionedScalar B_;
+
+        //- Constant C
+        dimensionedScalar C_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("Antoine");
+
+    // Constructors
+
+        //- Construct from a dictionary
+        Antoine(const dictionary& dict);
+
+
+    //- Destructor
+    virtual ~Antoine();
+
+
+    // Member Functions
+
+        //- Saturation pressure
+        virtual tmp<volScalarField> pSat(const volScalarField& T) const;
+
+        //- Saturation pressure derivetive w.r.t. temperature
+        virtual tmp<volScalarField> pSatPrime(const volScalarField& T) const;
+
+        //- Natural log of the saturation pressure
+        virtual tmp<volScalarField> lnPSat(const volScalarField& T) const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace saturationPressureModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/AntoineExtended/AntoineExtended.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/AntoineExtended/AntoineExtended.C
new file mode 100644
index 0000000000000000000000000000000000000000..ea6065140bc5812b6a53ce988b6e9294faf287e1
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/AntoineExtended/AntoineExtended.C
@@ -0,0 +1,105 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "AntoineExtended.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace saturationPressureModels
+{
+    defineTypeNameAndDebug(AntoineExtended, 0);
+    addToRunTimeSelectionTable
+    (
+        saturationPressureModel,
+        AntoineExtended,
+        dictionary
+    );
+}
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::saturationPressureModels::AntoineExtended::AntoineExtended
+(
+    const dictionary& dict
+)
+:
+    Antoine(dict),
+    D_("D", dimless, dict.lookup("D")),
+    F_("F", dimless, dict.lookup("F")),
+    E_("E", dimless/pow(dimTemperature, F_), dict.lookup("E"))
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::saturationPressureModels::AntoineExtended::~AntoineExtended()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volScalarField>
+Foam::saturationPressureModels::AntoineExtended::pSat
+(
+    const volScalarField& T
+) const
+{
+    return
+        dimensionedScalar("one", dimPressure/pow(dimTemperature, D_), 1)
+       *exp(A_ + B_/(C_ + T) + E_*pow(T, F_))
+       *pow(T, D_);
+}
+
+
+Foam::tmp<Foam::volScalarField>
+Foam::saturationPressureModels::AntoineExtended::pSatPrime
+(
+    const volScalarField& T
+) const
+{
+    return pSat(T)*((D_ + E_*F_*pow(T, F_))/T - B_/sqr(C_ + T));
+}
+
+
+Foam::tmp<Foam::volScalarField>
+Foam::saturationPressureModels::AntoineExtended::lnPSat
+(
+    const volScalarField& T
+) const
+{
+    return
+        A_
+      + B_/(C_ + T)
+      + D_*log(T*dimensionedScalar("one", dimless/dimTemperature, 1))
+      + E_*pow(T, F_);
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/AntoineExtended/AntoineExtended.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/AntoineExtended/AntoineExtended.H
new file mode 100644
index 0000000000000000000000000000000000000000..8221c4c85645f9fd4bc532b99457c75085689e02
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/AntoineExtended/AntoineExtended.H
@@ -0,0 +1,115 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::saturationPressureModels::AntoineExtended
+
+Description
+    Extended Antoine equation for the vapour pressure.
+
+    \f[
+        \log (p) = A + \frac{B}{C + T} + D \log (T) + E T^F
+    \f]
+
+    Coefficients \f$A\f$, \f$B\f$, \f$C\f$, \f$D\f$, \f$E\f$ and \f$F\f$ are
+    to be supplied and should be suitable for natural logarithms and
+    temperatures in Kelvin.
+
+SourceFiles
+    AntoineExtended.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef AntoineExtended_H
+#define AntoineExtended_H
+
+#include "Antoine.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace saturationPressureModels
+{
+
+/*---------------------------------------------------------------------------*\
+                         Class AntoineExtended Declaration
+\*---------------------------------------------------------------------------*/
+
+class AntoineExtended
+:
+    public Antoine
+{
+private:
+
+    // Private data
+
+        //- Constant D
+        dimensionedScalar D_;
+
+        //- Constant F
+        dimensionedScalar F_;
+
+        //- Constant E
+        //  (after F so F's dimensions can be used in the construction)
+        dimensionedScalar E_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("AntoineExtended");
+
+    // Constructors
+
+        //- Construct from a dictionary
+        AntoineExtended(const dictionary& dict);
+
+
+    //- Destructor
+    virtual ~AntoineExtended();
+
+
+    // Member Functions
+
+        //- Saturation pressure
+        virtual tmp<volScalarField> pSat(const volScalarField& T) const;
+
+        //- Saturation pressure derivetive w.r.t. temperature
+        virtual tmp<volScalarField> pSatPrime(const volScalarField& T) const;
+
+        //- Natural log of the saturation pressure
+        virtual tmp<volScalarField> lnPSat(const volScalarField& T) const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace saturationPressureModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/ArdenBuck/ArdenBuck.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/ArdenBuck/ArdenBuck.C
new file mode 100644
index 0000000000000000000000000000000000000000..6b54b6a9b30962a9dc16af8d18e4d00f3ca48b82
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/ArdenBuck/ArdenBuck.C
@@ -0,0 +1,112 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "ArdenBuck.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace saturationPressureModels
+{
+    defineTypeNameAndDebug(ArdenBuck, 0);
+    addToRunTimeSelectionTable(saturationPressureModel, ArdenBuck, dictionary);
+}
+}
+
+static const Foam::dimensionedScalar zeroC("", Foam::dimTemperature, 273.15);
+static const Foam::dimensionedScalar A("", Foam::dimPressure, 611.21);
+static const Foam::dimensionedScalar B("", Foam::dimless, 18.678);
+static const Foam::dimensionedScalar C("", Foam::dimTemperature, 234.5);
+static const Foam::dimensionedScalar D("", Foam::dimTemperature, 257.14);
+
+// * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
+
+Foam::tmp<Foam::volScalarField>
+Foam::saturationPressureModels::ArdenBuck::xByTC
+(
+    const volScalarField& TC
+) const
+{
+    return (B - TC/C)/(D + TC);
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::saturationPressureModels::ArdenBuck::ArdenBuck(const dictionary& dict)
+:
+    saturationPressureModel()
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::saturationPressureModels::ArdenBuck::~ArdenBuck()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volScalarField>
+Foam::saturationPressureModels::ArdenBuck::pSat
+(
+    const volScalarField& T
+) const
+{
+    volScalarField TC(T - zeroC);
+
+    return A*exp(TC*xByTC(TC));
+}
+
+
+Foam::tmp<Foam::volScalarField>
+Foam::saturationPressureModels::ArdenBuck::pSatPrime
+(
+    const volScalarField& T
+) const
+{
+    volScalarField TC(T - zeroC);
+
+    volScalarField x(xByTC(TC));
+
+    return A*exp(TC*x)*(D*x - TC/C)/(D + TC);
+}
+
+
+Foam::tmp<Foam::volScalarField>
+Foam::saturationPressureModels::ArdenBuck::lnPSat
+(
+    const volScalarField& T
+) const
+{
+    volScalarField TC(T - zeroC);
+
+    return log(A.value()) + TC*xByTC(TC);
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/ArdenBuck/ArdenBuck.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/ArdenBuck/ArdenBuck.H
new file mode 100644
index 0000000000000000000000000000000000000000..c0bb59d721aeb531116ba4b63bfc84153011dd1a
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/ArdenBuck/ArdenBuck.H
@@ -0,0 +1,100 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::saturationPressureModels::ArdenBuck
+
+Description
+    ArdenBuck equation for the vapour pressure of steam.
+
+SourceFiles
+    ArdenBuck.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef ArdenBuck_H
+#define ArdenBuck_H
+
+#include "saturationPressureModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace saturationPressureModels
+{
+
+/*---------------------------------------------------------------------------*\
+                         Class ArdenBuck Declaration
+\*---------------------------------------------------------------------------*/
+
+class ArdenBuck
+:
+    public saturationPressureModel
+{
+private:
+
+    // Private Member Functions
+
+        //- Exponent divided by the temperature
+        tmp<volScalarField> xByTC(const volScalarField& TC) const;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("ArdenBuck");
+
+    // Constructors
+
+        //- Construct from a dictionary
+        ArdenBuck(const dictionary& dict);
+
+
+    //- Destructor
+    virtual ~ArdenBuck();
+
+
+    // Member Functions
+
+        //- Saturation pressure
+        virtual tmp<volScalarField> pSat(const volScalarField& T) const;
+
+        //- Saturation pressure derivetive w.r.t. temperature
+        virtual tmp<volScalarField> pSatPrime(const volScalarField& T) const;
+
+        //- Natural log of the saturation pressure
+        virtual tmp<volScalarField> lnPSat(const volScalarField& T) const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace saturationPressureModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/saturationPressureModel/newSaturationPressureModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/saturationPressureModel/newSaturationPressureModel.C
new file mode 100644
index 0000000000000000000000000000000000000000..713d0a6d8a1e2e5790c7dc11ae71b9ad5ae366bc
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/saturationPressureModel/newSaturationPressureModel.C
@@ -0,0 +1,57 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "saturationPressureModel.H"
+
+// * * * * * * * * * * * * * * * * Selector  * * * * * * * * * * * * * * * * //
+
+Foam::autoPtr<Foam::saturationPressureModel> Foam::saturationPressureModel::New
+(
+    const dictionary& dict
+)
+{
+    word saturationPressureModelType(dict.lookup("type"));
+
+    Info<< "Selecting saturationPressureModel: "
+        << saturationPressureModelType << endl;
+
+    dictionaryConstructorTable::iterator cstrIter =
+        dictionaryConstructorTablePtr_->find(saturationPressureModelType);
+
+    if (cstrIter == dictionaryConstructorTablePtr_->end())
+    {
+        FatalErrorIn("saturationPressureModel::New")
+            << "Unknown saturationPressureModelType type "
+            << saturationPressureModelType << endl << endl
+            << "Valid saturationPressureModel types are : " << endl
+            << dictionaryConstructorTablePtr_->sortedToc()
+            << exit(FatalError);
+    }
+
+    return cstrIter()(dict);
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/saturationPressureModel/saturationPressureModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/saturationPressureModel/saturationPressureModel.C
new file mode 100644
index 0000000000000000000000000000000000000000..08cf3239560af7a8e84f0b5010544753deba2bd3
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/saturationPressureModel/saturationPressureModel.C
@@ -0,0 +1,49 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "saturationPressureModel.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    defineTypeNameAndDebug(saturationPressureModel, 0);
+    defineRunTimeSelectionTable(saturationPressureModel, dictionary);
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::saturationPressureModel::saturationPressureModel()
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::saturationPressureModel::~saturationPressureModel()
+{}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/saturationPressureModel/saturationPressureModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/saturationPressureModel/saturationPressureModel.H
new file mode 100644
index 0000000000000000000000000000000000000000..2b7d4cccc1725cc3a9dcdad7bfa09e8db98e1524
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/saturationPressureModel/saturationPressureModel.H
@@ -0,0 +1,127 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::saturationPressureModel
+
+Description
+
+SourceFiles
+    saturationPressureModel.C
+    newSaturationPressureModel.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef saturationPressureModel_H
+#define saturationPressureModel_H
+
+#include "volFields.H"
+#include "dictionary.H"
+#include "runTimeSelectionTables.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+                         Class saturationPressureModel Declaration
+\*---------------------------------------------------------------------------*/
+
+class saturationPressureModel
+{
+    // Private Member Functions
+
+        //- Disallow default bitwise copy construct
+        saturationPressureModel(const saturationPressureModel&);
+
+        //- Disallow default bitwise assignment
+        void operator=(const saturationPressureModel&);
+
+
+public:
+
+    //- Runtime type information
+    TypeName("saturationPressureModel");
+
+
+    //- Declare runtime construction
+    declareRunTimeSelectionTable
+    (
+        autoPtr,
+        saturationPressureModel,
+        dictionary,
+        (
+            const dictionary& dict
+        ),
+        (dict)
+    );
+
+
+    // Constructors
+
+        //- Construct null
+        saturationPressureModel();
+
+
+    // Selectors
+
+        //- Select null constructed
+        static autoPtr<saturationPressureModel> New(const dictionary& dict);
+
+
+    //- Destructor
+    virtual ~saturationPressureModel();
+
+
+    // Member Functions
+
+        //- Saturation pressure
+        virtual tmp<volScalarField> pSat
+        (
+            const volScalarField& T
+        ) const = 0;
+
+        //- Saturation pressure derivetive w.r.t. temperature
+        virtual tmp<volScalarField> pSatPrime
+        (
+            const volScalarField& T
+        ) const = 0;
+
+        //- Natural log of the saturation pressure
+        virtual tmp<volScalarField> lnPSat
+        (
+            const volScalarField& T
+        ) const = 0;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/surfaceTensionModels/constantSurfaceTensionCoefficient/constantSurfaceTensionCoefficient.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/surfaceTensionModels/constantSurfaceTensionCoefficient/constantSurfaceTensionCoefficient.C
new file mode 100644
index 0000000000000000000000000000000000000000..99044f4cef5cf3450086c1c38f69ceabd9c4a055
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/surfaceTensionModels/constantSurfaceTensionCoefficient/constantSurfaceTensionCoefficient.C
@@ -0,0 +1,96 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "constantSurfaceTensionCoefficient.H"
+#include "phasePair.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace surfaceTensionModels
+{
+    defineTypeNameAndDebug(constantSurfaceTensionCoefficient, 0);
+    addToRunTimeSelectionTable
+    (
+        surfaceTensionModel,
+        constantSurfaceTensionCoefficient,
+        dictionary
+    );
+}
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::surfaceTensionModels::constantSurfaceTensionCoefficient::
+constantSurfaceTensionCoefficient
+(
+    const dictionary& dict,
+    const phasePair& pair,
+    const bool registerObject
+)
+:
+    surfaceTensionModel(dict, pair, registerObject),
+    sigma_("sigma", dimSigma, dict.lookup("sigma"))
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::surfaceTensionModels::constantSurfaceTensionCoefficient::
+~constantSurfaceTensionCoefficient()
+{}
+
+
+// * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volScalarField>
+Foam::surfaceTensionModels::constantSurfaceTensionCoefficient::sigma() const
+{
+    const fvMesh& mesh(this->pair_.phase1().mesh());
+
+    return tmp<volScalarField>
+    (
+        new volScalarField
+        (
+            IOobject
+            (
+                "sigma",
+                mesh.time().timeName(),
+                mesh,
+                IOobject::NO_READ,
+                IOobject::NO_WRITE,
+                false
+            ),
+            mesh,
+            sigma_
+        )
+    );
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/surfaceTensionModels/constantSurfaceTensionCoefficient/constantSurfaceTensionCoefficient.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/surfaceTensionModels/constantSurfaceTensionCoefficient/constantSurfaceTensionCoefficient.H
new file mode 100644
index 0000000000000000000000000000000000000000..636dc572932795d2e618db7d30d6e1dda3bb1540
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/surfaceTensionModels/constantSurfaceTensionCoefficient/constantSurfaceTensionCoefficient.H
@@ -0,0 +1,98 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::constantSurfaceTensionCoefficient
+
+Description
+    Constant value surface tension model.
+
+SourceFiles
+    constantSurfaceTensionCoefficient.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef constantSurfaceTensionCoefficient_H
+#define constantSurfaceTensionCoefficient_H
+
+#include "surfaceTensionModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace surfaceTensionModels
+{
+
+/*---------------------------------------------------------------------------*\
+              Class constantSurfaceTensionCoefficient Declaration
+\*---------------------------------------------------------------------------*/
+
+class constantSurfaceTensionCoefficient
+:
+    public surfaceTensionModel
+{
+    // Private data
+
+        //- Constant surface tension value
+        const dimensionedScalar sigma_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("constant");
+
+
+    // Constructors
+
+        //- Construct from a dictionary and a phase pair
+        constantSurfaceTensionCoefficient
+        (
+            const dictionary& dict,
+            const phasePair& pair,
+            const bool registerObject
+        );
+
+
+    //- Destructor
+    virtual ~constantSurfaceTensionCoefficient();
+
+
+    // Member Functions
+
+        //- Aspect ratio
+        virtual tmp<volScalarField> sigma() const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace surfaceTensionModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/surfaceTensionModels/surfaceTensionModel/newSurfaceTensionModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/surfaceTensionModels/surfaceTensionModel/newSurfaceTensionModel.C
new file mode 100644
index 0000000000000000000000000000000000000000..0b01665863925b3e0f538c50460cdfabf8ed2a54
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/surfaceTensionModels/surfaceTensionModel/newSurfaceTensionModel.C
@@ -0,0 +1,60 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "surfaceTensionModel.H"
+#include "phasePair.H"
+
+// * * * * * * * * * * * * * * * * Selector  * * * * * * * * * * * * * * * * //
+
+Foam::autoPtr<Foam::surfaceTensionModel >
+Foam::surfaceTensionModel::New
+(
+    const dictionary& dict,
+    const phasePair& pair
+)
+{
+    word surfaceTensionModelType(dict.lookup("type"));
+
+    Info<< "Selecting surfaceTensionModel for "
+        << pair << ": " << surfaceTensionModelType << endl;
+
+    dictionaryConstructorTable::iterator cstrIter =
+        dictionaryConstructorTablePtr_->find(surfaceTensionModelType);
+
+    if (cstrIter == dictionaryConstructorTablePtr_->end())
+    {
+        FatalErrorIn("surfaceTensionModel::New")
+            << "Unknown surfaceTensionModelType type "
+            << surfaceTensionModelType << endl << endl
+            << "Valid surfaceTensionModel types are : " << endl
+            << dictionaryConstructorTablePtr_->sortedToc()
+            << exit(FatalError);
+    }
+
+    return cstrIter()(dict, pair, true);
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/surfaceTensionModels/surfaceTensionModel/surfaceTensionModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/surfaceTensionModels/surfaceTensionModel/surfaceTensionModel.C
new file mode 100644
index 0000000000000000000000000000000000000000..8d7a487495a787ef32fa17cadc5da186fa5b3793
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/surfaceTensionModels/surfaceTensionModel/surfaceTensionModel.C
@@ -0,0 +1,79 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "surfaceTensionModel.H"
+#include "phasePair.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    defineTypeNameAndDebug(surfaceTensionModel, 0);
+    defineRunTimeSelectionTable(surfaceTensionModel, dictionary);
+}
+
+const Foam::dimensionSet Foam::surfaceTensionModel::dimSigma(1, 0, -2, 0, 0);
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::surfaceTensionModel::surfaceTensionModel
+(
+    const dictionary& dict,
+    const phasePair& pair,
+    const bool registerObject
+)
+:
+    regIOobject
+    (
+        IOobject
+        (
+            IOobject::groupName(typeName, pair.name()),
+            pair.phase1().mesh().time().timeName(),
+            pair.phase1().mesh(),
+            IOobject::NO_READ,
+            IOobject::NO_WRITE,
+            registerObject
+        )
+    ),
+    pair_(pair)
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::surfaceTensionModel::~surfaceTensionModel()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+bool Foam::surfaceTensionModel::writeData(Ostream& os) const
+{
+    return os.good();
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/surfaceTensionModels/surfaceTensionModel/surfaceTensionModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/surfaceTensionModels/surfaceTensionModel/surfaceTensionModel.H
new file mode 100644
index 0000000000000000000000000000000000000000..8fb8877d5ca45b7fbedf97a443ca0e8d3947d040
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/surfaceTensionModels/surfaceTensionModel/surfaceTensionModel.H
@@ -0,0 +1,134 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::surfaceTensionModel
+
+Description
+
+SourceFiles
+    surfaceTensionModel.C
+    newAspectRatioModel.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef surfaceTensionModel_H
+#define surfaceTensionModel_H
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include "volFields.H"
+#include "dictionary.H"
+#include "runTimeSelectionTables.H"
+
+namespace Foam
+{
+
+class phasePair;
+
+/*---------------------------------------------------------------------------*\
+                           Class surfaceTensionModel Declaration
+\*---------------------------------------------------------------------------*/
+
+class surfaceTensionModel
+:
+    public regIOobject
+{
+protected:
+
+    // Protected data
+
+        //- Phase pair
+        const phasePair& pair_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("surfaceTensionModel");
+
+
+    // Declare runtime construction
+    declareRunTimeSelectionTable
+    (
+        autoPtr,
+        surfaceTensionModel,
+        dictionary,
+        (
+            const dictionary& dict,
+            const phasePair& pair,
+            const bool registerObject
+        ),
+        (dict, pair, registerObject)
+    );
+
+
+    // Static data members
+
+        //- Coefficient dimensions
+        static const dimensionSet dimSigma;
+
+
+    // Constructors
+
+        //- Construct from a dictionary and a phase pair
+        surfaceTensionModel
+        (
+            const dictionary& dict,
+            const phasePair& pair,
+            const bool registerObject
+        );
+
+
+    //- Destructor
+    virtual ~surfaceTensionModel();
+
+
+    // Selectors
+
+        static autoPtr<surfaceTensionModel> New
+        (
+            const dictionary& dict,
+            const phasePair& pair
+        );
+
+
+    // Member Functions
+
+        //- Aspect ratio
+        virtual tmp<volScalarField> sigma() const = 0;
+
+        //- Dummy write for regIOobject
+        bool writeData(Ostream& os) const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/Make/files b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/Make/files
new file mode 100644
index 0000000000000000000000000000000000000000..9a526d3625edad0cc6936dfef85c4ad7f0e854f5
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/Make/files
@@ -0,0 +1,64 @@
+dragModels/dragModel/dragModel.C
+dragModels/dragModel/newDragModel.C
+dragModels/segregated/segregated.C
+dragModels/Ergun/Ergun.C
+dragModels/Gibilaro/Gibilaro.C
+dragModels/GidaspowErgunWenYu/GidaspowErgunWenYu.C
+dragModels/GidaspowSchillerNaumann/GidaspowSchillerNaumann.C
+dragModels/Lain/Lain.C
+dragModels/SchillerNaumann/SchillerNaumann.C
+dragModels/SyamlalOBrien/SyamlalOBrien.C
+dragModels/TomiyamaCorrelated/TomiyamaCorrelated.C
+dragModels/TomiyamaAnalytic/TomiyamaAnalytic.C
+dragModels/WenYu/WenYu.C
+dragModels/IshiiZuber/IshiiZuber.C
+
+swarmCorrections/swarmCorrection/swarmCorrection.C
+swarmCorrections/swarmCorrection/newSwarmCorrection.C
+swarmCorrections/noSwarm/noSwarm.C
+swarmCorrections/TomiyamaSwarm/TomiyamaSwarm.C
+
+liftModels/liftModel/liftModel.C
+liftModels/liftModel/newLiftModel.C
+liftModels/noLift/noLift.C
+liftModels/constantLiftCoefficient/constantLiftCoefficient.C
+liftModels/Moraga/Moraga.C
+liftModels/LegendreMagnaudet/LegendreMagnaudet.C
+liftModels/TomiyamaLift/TomiyamaLift.C
+
+heatTransferModels/heatTransferModel/heatTransferModel.C
+heatTransferModels/heatTransferModel/newHeatTransferModel.C
+heatTransferModels/RanzMarshall/RanzMarshall.C
+heatTransferModels/sphericalHeatTransfer/sphericalHeatTransfer.C
+
+virtualMassModels/virtualMassModel/virtualMassModel.C
+virtualMassModels/virtualMassModel/newVirtualMassModel.C
+virtualMassModels/noVirtualMass/noVirtualMass.C
+virtualMassModels/constantVirtualMassCoefficient/constantVirtualMassCoefficient.C
+virtualMassModels/Lamb/Lamb.C
+
+wallLubricationModels/wallLubricationModel/wallLubricationModel.C
+wallLubricationModels/wallLubricationModel/newWallLubricationModel.C
+wallLubricationModels/noWallLubrication/noWallLubrication.C
+wallLubricationModels/Antal/Antal.C
+wallLubricationModels/Frank/Frank.C
+wallLubricationModels/TomiyamaWallLubrication/TomiyamaWallLubrication.C
+
+turbulentDispersionModels/turbulentDispersionModel/turbulentDispersionModel.C
+turbulentDispersionModels/turbulentDispersionModel/newTurbulentDispersionModel.C
+turbulentDispersionModels/noTurbulentDispersion/noTurbulentDispersion.C
+turbulentDispersionModels/constantTurbulentDispersionCoefficient/constantTurbulentDispersionCoefficient.C
+turbulentDispersionModels/Burns/Burns.C
+turbulentDispersionModels/Gosman/Gosman.C
+turbulentDispersionModels/LopezDeBertodano/LopezDeBertodano.C
+
+aspectRatioModels/aspectRatioModel/aspectRatioModel.C
+aspectRatioModels/aspectRatioModel/newAspectRatioModel.C
+aspectRatioModels/constantAspectRatio/constantAspectRatio.C
+aspectRatioModels/TomiyamaAspectRatio/TomiyamaAspectRatio.C
+aspectRatioModels/VakhrushevEfremov/VakhrushevEfremov.C
+aspectRatioModels/Wellek/Wellek.C
+
+wallDependentModel/wallDependentModel.C
+
+LIB = $(FOAM_LIBBIN)/libreactingEulerianInterfacialModels
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/Make/options b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/Make/options
new file mode 100644
index 0000000000000000000000000000000000000000..ba5bb85f9930a4c9504525e4941d938b31d701c7
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/Make/options
@@ -0,0 +1,16 @@
+EXE_INC = \
+    -I../phaseSystems/lnInclude \
+    -I$(LIB_SRC)/transportModels/compressible/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
+    -I$(LIB_SRC)/transportModels/incompressible/transportModel \
+    -I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \
+    -I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude \
+    -I$(LIB_SRC)/TurbulenceModels/phaseCompressible/lnInclude \
+    -I$(LIB_SRC)/finiteVolume/lnInclude \
+    -I$(LIB_SRC)/meshTools/lnInclude
+
+LIB_LIBS = \
+    -lreactingTwoPhaseSystem \
+    -lcompressibleTransportModels \
+    -lfluidThermophysicalModels \
+    -lspecie
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/TomiyamaAspectRatio/TomiyamaAspectRatio.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/TomiyamaAspectRatio/TomiyamaAspectRatio.C
new file mode 100644
index 0000000000000000000000000000000000000000..f390ed9015173140eec1ecceddd619e099612797
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/TomiyamaAspectRatio/TomiyamaAspectRatio.C
@@ -0,0 +1,81 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "TomiyamaAspectRatio.H"
+#include "phasePair.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace aspectRatioModels
+{
+    defineTypeNameAndDebug(TomiyamaAspectRatio, 0);
+    addToRunTimeSelectionTable
+    (
+        aspectRatioModel,
+        TomiyamaAspectRatio,
+        dictionary
+    );
+}
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::aspectRatioModels::TomiyamaAspectRatio::TomiyamaAspectRatio
+(
+    const dictionary& dict,
+    const phasePair& pair
+)
+:
+    VakhrushevEfremov(dict, pair),
+    wallDependentModel(pair.phase1().mesh())
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::aspectRatioModels::TomiyamaAspectRatio::~TomiyamaAspectRatio()
+{}
+
+
+// * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volScalarField>
+Foam::aspectRatioModels::TomiyamaAspectRatio::E() const
+{
+    return
+        VakhrushevEfremov::E()
+       *max
+       (
+           scalar(1) - 0.35*yWall()/pair_.dispersed().d(),
+           scalar(0.65)
+       );
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/TomiyamaAspectRatio/TomiyamaAspectRatio.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/TomiyamaAspectRatio/TomiyamaAspectRatio.H
new file mode 100644
index 0000000000000000000000000000000000000000..7adf90e552f5fb8dd23496cc0cdb672c33b7c0e1
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/TomiyamaAspectRatio/TomiyamaAspectRatio.H
@@ -0,0 +1,101 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::aspectRatioModels::TomiyamaAspectRatio
+
+Description
+    Aspect ratio model of Tomiyama.
+
+    Reference:
+    \verbatim
+        "Implementation and Comparison of Correlations for interfacial Forces
+        in a Gas-Liquid System within an Euler-Euler Framework"
+        Otromke, M.,
+        PhD Thesis, April 2013
+    \endverbatim
+
+SourceFiles
+    TomiyamaAspectRatio.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef TomiyamaAspectRatio_H
+#define TomiyamaAspectRatio_H
+
+#include "VakhrushevEfremov.H"
+#include "wallDependentModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace aspectRatioModels
+{
+
+/*---------------------------------------------------------------------------*\
+                       Class TomiyamaAspectRatio Declaration
+\*---------------------------------------------------------------------------*/
+
+class TomiyamaAspectRatio
+:
+    public VakhrushevEfremov,
+    public wallDependentModel
+{
+public:
+
+    //- Runtime type information
+    TypeName("Tomiyama");
+
+
+    // Constructors
+
+        //- Construct from a dictionary and an ordered phase pair
+        TomiyamaAspectRatio
+        (
+            const dictionary& dict,
+            const phasePair& pair
+        );
+
+
+    //- Destructor
+    virtual ~TomiyamaAspectRatio();
+
+
+    // Member Functions
+
+        //- Aspect ratio
+        virtual tmp<volScalarField> E() const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace aspectRatioModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/VakhrushevEfremov/VakhrushevEfremov.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/VakhrushevEfremov/VakhrushevEfremov.C
new file mode 100644
index 0000000000000000000000000000000000000000..270419c5b42faa4866894cfb7d7ddd687498645e
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/VakhrushevEfremov/VakhrushevEfremov.C
@@ -0,0 +1,80 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "VakhrushevEfremov.H"
+#include "phasePair.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace aspectRatioModels
+{
+    defineTypeNameAndDebug(VakhrushevEfremov, 0);
+    addToRunTimeSelectionTable
+    (
+        aspectRatioModel,
+        VakhrushevEfremov,
+        dictionary
+    );
+}
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::aspectRatioModels::VakhrushevEfremov::VakhrushevEfremov
+(
+    const dictionary& dict,
+    const phasePair& pair
+)
+:
+    aspectRatioModel(dict, pair)
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::aspectRatioModels::VakhrushevEfremov::~VakhrushevEfremov()
+{}
+
+
+// * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volScalarField>
+Foam::aspectRatioModels::VakhrushevEfremov::E() const
+{
+    volScalarField Ta(pair_.Ta());
+
+    return
+        neg(Ta - scalar(1))*scalar(1)
+      + pos(Ta - scalar(1))*neg(Ta - scalar(39.8))
+       *pow3(0.81 + 0.206*tanh(1.6 - 2*log10(max(Ta, scalar(1)))))
+      + pos(Ta - scalar(39.8))*0.24;
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/VakhrushevEfremov/VakhrushevEfremov.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/VakhrushevEfremov/VakhrushevEfremov.H
new file mode 100644
index 0000000000000000000000000000000000000000..e0e1215c614e715f96f4303c35ba650866d60111
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/VakhrushevEfremov/VakhrushevEfremov.H
@@ -0,0 +1,100 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::VakhrushevEfremov
+
+Description
+    Aspect ratio model of Vakhrushev and Efremov.
+
+    Reference:
+    \verbatim
+        "Interpolation formula for computing the velocities of single gas
+         bubbles in liquids"
+        Vakhrushev, I.A. and Efremov, G.I.,
+        Chemistry and Technology of Fuels and Oils
+        Volume 6, Issue 5, May 1970, pp. 376-379,
+    \endverbatim
+
+SourceFiles
+    VakhrushevEfremov.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef VakhrushevEfremov_H
+#define VakhrushevEfremov_H
+
+#include "aspectRatioModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace aspectRatioModels
+{
+
+/*---------------------------------------------------------------------------*\
+                       Class VakhrushevEfremov Declaration
+\*---------------------------------------------------------------------------*/
+
+class VakhrushevEfremov
+:
+    public aspectRatioModel
+{
+public:
+
+    //- Runtime type information
+    TypeName("VakhrushevEfremov");
+
+
+    // Constructors
+
+        //- Construct from a dictionary and an ordered phase pair
+        VakhrushevEfremov
+        (
+            const dictionary& dict,
+            const phasePair& pair
+        );
+
+
+    //- Destructor
+    virtual ~VakhrushevEfremov();
+
+
+    // Member Functions
+
+        //- Aspect ratio
+        virtual tmp<volScalarField> E() const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace aspectRatioModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/Wellek/Wellek.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/Wellek/Wellek.C
new file mode 100644
index 0000000000000000000000000000000000000000..1bc610ae9c42f3ba10666fe6cd735b8e3cc66982
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/Wellek/Wellek.C
@@ -0,0 +1,74 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "Wellek.H"
+#include "phasePair.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace aspectRatioModels
+{
+    defineTypeNameAndDebug(Wellek, 0);
+    addToRunTimeSelectionTable
+    (
+        aspectRatioModel,
+        Wellek,
+        dictionary
+    );
+}
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::aspectRatioModels::Wellek::Wellek
+(
+    const dictionary& dict,
+    const phasePair& pair
+)
+:
+    aspectRatioModel(dict, pair)
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::aspectRatioModels::Wellek::~Wellek()
+{}
+
+
+// * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volScalarField>
+Foam::aspectRatioModels::Wellek::E() const
+{
+    return scalar(1)/(scalar(1) + 0.163*pow(pair_.Eo(), 0.757));
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/Wellek/Wellek.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/Wellek/Wellek.H
new file mode 100644
index 0000000000000000000000000000000000000000..9ab8f0ddc6b3b02b771f3072ba77e0267ee3d395
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/Wellek/Wellek.H
@@ -0,0 +1,106 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::aspectRatioModels::Wellek
+
+Description
+    Aspect ratio model of Wellek et al.
+
+    References:
+    \verbatim
+        "Implementation and Comparison of Correlations for interfacial Forces
+         in a Gas-Liquid System within an Euler-Euler Framework"
+        Otromke, M.,
+        PhD Thesis, April 2013
+    \endverbatim
+
+    \verbatim
+        "Shape of liquid drops moving in liquid media"
+        Wellek, R.M., Agrawal, A.K., Skelland, A.H.P.,
+        International Journal of Multiphase Flow
+        Volume 12, Issue 5, September 1966, pp. 854-862
+    \endverbatim
+
+SourceFiles
+    Wellek.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef Wellek_H
+#define Wellek_H
+
+#include "aspectRatioModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace aspectRatioModels
+{
+
+/*---------------------------------------------------------------------------*\
+                       Class Wellek Declaration
+\*---------------------------------------------------------------------------*/
+
+class Wellek
+:
+    public aspectRatioModel
+{
+public:
+
+    //- Runtime type information
+    TypeName("Wellek");
+
+
+    // Constructors
+
+        //- Construct from a dictionary and an ordered phase pair
+        Wellek
+        (
+            const dictionary& dict,
+            const phasePair& pair
+        );
+
+
+    //- Destructor
+    virtual ~Wellek();
+
+
+    // Member Functions
+
+        //- Aspect ratio
+        virtual tmp<volScalarField> E() const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace aspectRatioModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/aspectRatioModel/aspectRatioModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/aspectRatioModel/aspectRatioModel.C
new file mode 100644
index 0000000000000000000000000000000000000000..956159fccef7480e37b5af1007c4b9ef9146851a
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/aspectRatioModel/aspectRatioModel.C
@@ -0,0 +1,56 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "aspectRatioModel.H"
+#include "phasePair.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    defineTypeNameAndDebug(aspectRatioModel, 0);
+    defineRunTimeSelectionTable(aspectRatioModel, dictionary);
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::aspectRatioModel::aspectRatioModel
+(
+    const dictionary& dict,
+    const phasePair& pair
+)
+:
+    pair_(pair)
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::aspectRatioModel::~aspectRatioModel()
+{}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/aspectRatioModel/aspectRatioModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/aspectRatioModel/aspectRatioModel.H
new file mode 100644
index 0000000000000000000000000000000000000000..04732aa81b9fa613f199159225b769053dec016f
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/aspectRatioModel/aspectRatioModel.H
@@ -0,0 +1,121 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::aspectRatioModel
+
+Description
+
+SourceFiles
+    aspectRatioModel.C
+    newAspectRatioModel.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef aspectRatioModel_H
+#define aspectRatioModel_H
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include "volFields.H"
+#include "dictionary.H"
+#include "runTimeSelectionTables.H"
+
+namespace Foam
+{
+
+class phasePair;
+
+/*---------------------------------------------------------------------------*\
+                           Class aspectRatioModel Declaration
+\*---------------------------------------------------------------------------*/
+
+class aspectRatioModel
+{
+protected:
+
+    // Protected data
+
+        //- Phase pair
+        const phasePair& pair_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("aspectRatioModel");
+
+
+    // Declare runtime construction
+    declareRunTimeSelectionTable
+    (
+        autoPtr,
+        aspectRatioModel,
+        dictionary,
+        (
+            const dictionary& dict,
+            const phasePair& pair
+        ),
+        (dict, pair)
+    );
+
+
+    // Constructors
+
+        //- Construct from a dictionary and an ordered phase pair
+        aspectRatioModel
+        (
+            const dictionary& dict,
+            const phasePair& pair
+        );
+
+
+    //- Destructor
+    virtual ~aspectRatioModel();
+
+
+    // Selectors
+
+        static autoPtr<aspectRatioModel> New
+        (
+            const dictionary& dict,
+            const phasePair& pair
+        );
+
+
+    // Member Functions
+
+        //- Aspect ratio
+        virtual tmp<volScalarField> E() const = 0;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/aspectRatioModel/newAspectRatioModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/aspectRatioModel/newAspectRatioModel.C
new file mode 100644
index 0000000000000000000000000000000000000000..ff4cb63441f5d297c29ad8f8922dfcf44361b445
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/aspectRatioModel/newAspectRatioModel.C
@@ -0,0 +1,60 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "aspectRatioModel.H"
+#include "phasePair.H"
+
+// * * * * * * * * * * * * * * * * Selector  * * * * * * * * * * * * * * * * //
+
+Foam::autoPtr<Foam::aspectRatioModel>
+Foam::aspectRatioModel::New
+(
+    const dictionary& dict,
+    const phasePair& pair
+)
+{
+    word aspectRatioModelType(dict.lookup("type"));
+
+    Info<< "Selecting aspectRatioModel for "
+        << pair << ": " << aspectRatioModelType << endl;
+
+    dictionaryConstructorTable::iterator cstrIter =
+        dictionaryConstructorTablePtr_->find(aspectRatioModelType);
+
+    if (cstrIter == dictionaryConstructorTablePtr_->end())
+    {
+        FatalErrorIn("aspectRatioModel::New")
+            << "Unknown aspectRatioModelType type "
+            << aspectRatioModelType << endl << endl
+            << "Valid aspectRatioModel types are : " << endl
+            << dictionaryConstructorTablePtr_->sortedToc()
+            << exit(FatalError);
+    }
+
+    return cstrIter()(dict, pair);
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/constantAspectRatio/constantAspectRatio.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/constantAspectRatio/constantAspectRatio.C
new file mode 100644
index 0000000000000000000000000000000000000000..e89646382230569dff8369374ed78b2ac02b4542
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/constantAspectRatio/constantAspectRatio.C
@@ -0,0 +1,91 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "constantAspectRatio.H"
+#include "phasePair.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace aspectRatioModels
+{
+    defineTypeNameAndDebug(constantAspectRatio, 0);
+    addToRunTimeSelectionTable
+    (
+        aspectRatioModel,
+        constantAspectRatio,
+        dictionary
+    );
+}
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::aspectRatioModels::constantAspectRatio::constantAspectRatio
+(
+    const dictionary& dict,
+    const phasePair& pair
+)
+:
+    aspectRatioModel(dict, pair),
+    E0_("E0", dimless, dict.lookup("E0"))
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::aspectRatioModels::constantAspectRatio::~constantAspectRatio()
+{}
+
+
+// * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volScalarField>
+Foam::aspectRatioModels::constantAspectRatio::E() const
+{
+    const fvMesh& mesh(this->pair_.phase1().mesh());
+
+    return
+        tmp<volScalarField>
+        (
+            new volScalarField
+            (
+                IOobject
+                (
+                    "zero",
+                    mesh.time().timeName(),
+                    mesh
+                ),
+                mesh,
+                E0_
+            )
+        );
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/constantAspectRatio/constantAspectRatio.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/constantAspectRatio/constantAspectRatio.H
new file mode 100644
index 0000000000000000000000000000000000000000..4ca36a0a965e7cf25f9f44061693ed982ee0fc79
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/constantAspectRatio/constantAspectRatio.H
@@ -0,0 +1,97 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::constantAspectRatio
+
+Description
+    Constant value aspect ratio model.
+
+SourceFiles
+    constantAspectRatio.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef constantAspectRatio_H
+#define constantAspectRatio_H
+
+#include "aspectRatioModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace aspectRatioModels
+{
+
+/*---------------------------------------------------------------------------*\
+                         Class constantAspectRatio Declaration
+\*---------------------------------------------------------------------------*/
+
+class constantAspectRatio
+:
+    public aspectRatioModel
+{
+    // Private data
+
+        //- Constant aspect ratio value
+        const dimensionedScalar E0_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("constant");
+
+
+    // Constructors
+
+        //- Construct from a dictionary and an ordered phase pair
+        constantAspectRatio
+        (
+            const dictionary& dict,
+            const phasePair& pair
+        );
+
+
+    //- Destructor
+    virtual ~constantAspectRatio();
+
+
+    // Member Functions
+
+        //- Aspect ratio
+        virtual tmp<volScalarField> E() const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace aspectRatioModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/Ergun/Ergun.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/Ergun/Ergun.C
new file mode 100644
index 0000000000000000000000000000000000000000..2bc5d377de989db355cb865ab3ee430762419818
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/Ergun/Ergun.C
@@ -0,0 +1,80 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "Ergun.H"
+#include "phasePair.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace dragModels
+{
+    defineTypeNameAndDebug(Ergun, 0);
+    addToRunTimeSelectionTable(dragModel, Ergun, dictionary);
+}
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::dragModels::Ergun::Ergun
+(
+    const dictionary& dict,
+    const phasePair& pair,
+    const bool registerObject
+)
+:
+    dragModel(dict, pair, registerObject)
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::dragModels::Ergun::~Ergun()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volScalarField> Foam::dragModels::Ergun::CdRe() const
+{
+    return
+        (4/3)
+       *(
+            150
+           *max
+            (
+                scalar(1) - pair_.continuous(),
+                pair_.continuous().residualAlpha()
+            )/max(pair_.continuous(), pair_.continuous().residualAlpha())
+          + 1.75
+           *pair_.Re()
+        );
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/Ergun/Ergun.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/Ergun/Ergun.H
new file mode 100644
index 0000000000000000000000000000000000000000..63e77c2f2a1763145bfdaa387eb72348c3e4ca0c
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/Ergun/Ergun.H
@@ -0,0 +1,98 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::dragModels::Ergun
+
+Description
+    H, Enwald, E. Peirano, A-E Almstedt
+    'Eulerian Two-Phase Flow Theory Applied to Fluidization'
+    Int. J. Multiphase Flow, Vol. 22, Suppl, pp. 21-66 (1996)
+    Eq. 104, p. 42
+
+SourceFiles
+    Ergun.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef Ergun_H
+#define Ergun_H
+
+#include "dragModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+class phasePair;
+
+namespace dragModels
+{
+
+/*---------------------------------------------------------------------------*\
+                           Class Ergun Declaration
+\*---------------------------------------------------------------------------*/
+
+class Ergun
+:
+    public dragModel
+{
+public:
+
+    //- Runtime type information
+    TypeName("Ergun");
+
+
+    // Constructors
+
+        //- Construct from a dictionary and a phase pair
+        Ergun
+        (
+            const dictionary& dict,
+            const phasePair& pair,
+            const bool registerObject
+        );
+
+
+    //- Destructor
+    virtual ~Ergun();
+
+
+    // Member Functions
+
+        //- Drag coefficient
+        virtual tmp<volScalarField> CdRe() const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace dragModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/Gibilaro/Gibilaro.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/Gibilaro/Gibilaro.C
new file mode 100644
index 0000000000000000000000000000000000000000..ca378985ea568e1cf05c9c5b39d701e2ae52a2c5
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/Gibilaro/Gibilaro.C
@@ -0,0 +1,78 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "Gibilaro.H"
+#include "phasePair.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace dragModels
+{
+    defineTypeNameAndDebug(Gibilaro, 0);
+    addToRunTimeSelectionTable(dragModel, Gibilaro, dictionary);
+}
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::dragModels::Gibilaro::Gibilaro
+(
+    const dictionary& dict,
+    const phasePair& pair,
+    const bool registerObject
+)
+:
+    dragModel(dict, pair, registerObject)
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::dragModels::Gibilaro::~Gibilaro()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volScalarField> Foam::dragModels::Gibilaro::CdRe() const
+{
+    volScalarField alpha2
+    (
+        max(scalar(1) - pair_.dispersed(), pair_.continuous().residualAlpha())
+    );
+
+    return
+        (4/3)
+       *(17.3/alpha2 + 0.336*pair_.Re())
+       *max(pair_.continuous(), pair_.continuous().residualAlpha())
+       *pow(alpha2, -2.8);
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/Gibilaro/Gibilaro.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/Gibilaro/Gibilaro.H
new file mode 100644
index 0000000000000000000000000000000000000000..f1a976e61d9a43157aaf16eed758ff4647f08dc5
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/Gibilaro/Gibilaro.H
@@ -0,0 +1,98 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::dragModels::Gibilaro
+
+Description
+    H, Enwald, E. Peirano, A-E Almstedt
+    'Eulerian Two-Phase Flow Theory Applied to Fluidization'
+    Int. J. Multiphase Flow, Vol. 22, Suppl, pp. 21-66 (1996)
+    Eq. 106, p. 43
+
+SourceFiles
+    Gibilaro.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef Gibilaro_H
+#define Gibilaro_H
+
+#include "dragModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+class phasePair;
+
+namespace dragModels
+{
+
+/*---------------------------------------------------------------------------*\
+                           Class Gibilaro Declaration
+\*---------------------------------------------------------------------------*/
+
+class Gibilaro
+:
+    public dragModel
+{
+public:
+
+    //- Runtime type information
+    TypeName("Gibilaro");
+
+
+    // Constructors
+
+        //- Construct from a dictionary and a phase pair
+        Gibilaro
+        (
+            const dictionary& dict,
+            const phasePair& pair,
+            const bool registerObject
+        );
+
+
+    //- Destructor
+    virtual ~Gibilaro();
+
+
+    // Member Functions
+
+        //- Drag coefficient
+        virtual tmp<volScalarField> CdRe() const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace dragModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/GidaspowErgunWenYu/GidaspowErgunWenYu.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/GidaspowErgunWenYu/GidaspowErgunWenYu.C
new file mode 100644
index 0000000000000000000000000000000000000000..7649f217c8781b2fbd07a9364fe31efd21e06c6b
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/GidaspowErgunWenYu/GidaspowErgunWenYu.C
@@ -0,0 +1,92 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "GidaspowErgunWenYu.H"
+#include "phasePair.H"
+#include "Ergun.H"
+#include "WenYu.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace dragModels
+{
+    defineTypeNameAndDebug(GidaspowErgunWenYu, 0);
+    addToRunTimeSelectionTable(dragModel, GidaspowErgunWenYu, dictionary);
+}
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::dragModels::GidaspowErgunWenYu::GidaspowErgunWenYu
+(
+    const dictionary& dict,
+    const phasePair& pair,
+    const bool registerObject
+)
+:
+    dragModel(dict, pair, registerObject),
+    Ergun_
+    (
+        new Ergun
+        (
+            dict,
+            pair,
+            false
+        )
+    ),
+    WenYu_
+    (
+        new WenYu
+        (
+            dict,
+            pair,
+            false
+        )
+    )
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::dragModels::GidaspowErgunWenYu::~GidaspowErgunWenYu()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volScalarField>
+Foam::dragModels::GidaspowErgunWenYu::CdRe() const
+{
+    return
+        pos(pair_.continuous() - 0.8)*WenYu_->CdRe()
+      + neg(pair_.continuous() - 0.8)*Ergun_->CdRe();
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/GidaspowErgunWenYu/GidaspowErgunWenYu.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/GidaspowErgunWenYu/GidaspowErgunWenYu.H
new file mode 100644
index 0000000000000000000000000000000000000000..4f6f9c45581334a4ff47fc4ea9a8f0abf79c5e28
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/GidaspowErgunWenYu/GidaspowErgunWenYu.H
@@ -0,0 +1,114 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::dragModels::GidaspowErgunWenYu
+
+Description
+    Gidaspow, Ergun, Wen and Yu drag model
+
+    Reference:
+    \verbatim
+        "Multiphase flow and fluidization",
+        Gidaspow, D.,
+        Academic Press, New York, 1994.
+    \endverbatim
+
+SourceFiles
+    GidaspowErgunWenYu.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef GidaspowErgunWenYu_H
+#define GidaspowErgunWenYu_H
+
+#include "dragModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+class phasePair;
+
+namespace dragModels
+{
+
+class Ergun;
+class WenYu;
+
+/*---------------------------------------------------------------------------*\
+                           Class GidaspowErgunWenYu Declaration
+\*---------------------------------------------------------------------------*/
+
+class GidaspowErgunWenYu
+:
+    public dragModel
+{
+    // Private data
+
+        //- Ergun drag model
+        autoPtr<Ergun> Ergun_;
+
+        //- Wen Yu drag model
+        autoPtr<WenYu> WenYu_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("GidaspowErgunWenYu");
+
+
+    // Constructors
+
+        //- Construct from a dictionary and an ordered phase pair
+        GidaspowErgunWenYu
+        (
+            const dictionary& interfaceDict,
+            const phasePair& pair,
+            const bool registerObject
+        );
+
+
+    //- Destructor
+    virtual ~GidaspowErgunWenYu();
+
+
+    // Member Functions
+
+        //- Drag coefficient
+        virtual tmp<volScalarField> CdRe() const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace dragModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/GidaspowSchillerNaumann/GidaspowSchillerNaumann.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/GidaspowSchillerNaumann/GidaspowSchillerNaumann.C
new file mode 100644
index 0000000000000000000000000000000000000000..c637c3bb354a4e23afb748b835caf36a13b0858d
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/GidaspowSchillerNaumann/GidaspowSchillerNaumann.C
@@ -0,0 +1,87 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "GidaspowSchillerNaumann.H"
+#include "phasePair.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace dragModels
+{
+    defineTypeNameAndDebug(GidaspowSchillerNaumann, 0);
+    addToRunTimeSelectionTable(dragModel, GidaspowSchillerNaumann, dictionary);
+}
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::dragModels::GidaspowSchillerNaumann::GidaspowSchillerNaumann
+(
+    const dictionary& dict,
+    const phasePair& pair,
+    const bool registerObject
+)
+:
+    dragModel(dict, pair, registerObject),
+    residualRe_("residualRe", dimless, dict.lookup("residualRe"))
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::dragModels::GidaspowSchillerNaumann::~GidaspowSchillerNaumann()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volScalarField>
+Foam::dragModels::GidaspowSchillerNaumann::CdRe() const
+{
+    volScalarField alpha2
+    (
+        max(scalar(1) - pair_.dispersed(), pair_.continuous().residualAlpha())
+    );
+
+    volScalarField Re(alpha2*pair_.Re());
+
+    volScalarField CdsRe
+    (
+        neg(Re - 1000)*24.0*(1.0 + 0.15*pow(Re, 0.687))/alpha2
+      + pos(Re - 1000)*0.44*max(Re, residualRe_)
+    );
+
+    return
+        CdsRe
+       *pow(alpha2, -2.65)
+       *max(pair_.continuous(), pair_.continuous().residualAlpha());
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/GidaspowSchillerNaumann/GidaspowSchillerNaumann.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/GidaspowSchillerNaumann/GidaspowSchillerNaumann.H
new file mode 100644
index 0000000000000000000000000000000000000000..c25f910c1b4797d62879c538d522cf57421bcdbe
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/GidaspowSchillerNaumann/GidaspowSchillerNaumann.H
@@ -0,0 +1,115 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::dragModels::GidaspowSchillerNaumann
+
+Description
+    Gidaspow, Schiller and Naumann drag model
+
+    References:
+    \verbatim
+        "Eulerian Two-Phase Flow Theory Applied to Fluidization"
+        Enwald, H., Peirano, E., Almstedt, A-E.,
+        Int. J. Multiphase Flow, Vol. 22, Suppl, 1996, pp. 21-66
+        Eq. 86-87, p. 40
+
+        This is identical to the Wen and Yu, Rowe model Table 3.6 p.56  in
+        "Derivation, Implementation and Validation of Computer Simulation Models
+         for Gas-Solid Fluidized Beds",
+        Berend van Wachem
+        Ph.D. thesis.
+    \endverbatim
+
+SourceFiles
+    GidaspowSchillerNaumann.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef GidaspowSchillerNaumann_H
+#define GidaspowSchillerNaumann_H
+
+#include "dragModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+class phasePair;
+
+namespace dragModels
+{
+
+/*---------------------------------------------------------------------------*\
+                           Class GidaspowSchillerNaumann Declaration
+\*---------------------------------------------------------------------------*/
+
+class GidaspowSchillerNaumann
+:
+    public dragModel
+{
+    // Private data
+
+        //- Residual Reynolds Number
+        const dimensionedScalar residualRe_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("GidaspowSchillerNaumann");
+
+
+    // Constructors
+
+        //- Construct from a dictionary and a phase pair
+        GidaspowSchillerNaumann
+        (
+            const dictionary& dict,
+            const phasePair& pair,
+            const bool registerObject
+        );
+
+
+    //- Destructor
+    virtual ~GidaspowSchillerNaumann();
+
+
+    // Member Functions
+
+        //- Drag coefficient
+        virtual tmp<volScalarField> CdRe() const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace dragModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/IshiiZuber/IshiiZuber.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/IshiiZuber/IshiiZuber.C
new file mode 100644
index 0000000000000000000000000000000000000000..8f6b115bbc6ae6f3dca210821615cc0bae62ee88
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/IshiiZuber/IshiiZuber.C
@@ -0,0 +1,101 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "IshiiZuber.H"
+#include "phasePair.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace dragModels
+{
+    defineTypeNameAndDebug(IshiiZuber, 0);
+    addToRunTimeSelectionTable(dragModel, IshiiZuber, dictionary);
+}
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::dragModels::IshiiZuber::IshiiZuber
+(
+    const dictionary& dict,
+    const phasePair& pair,
+    const bool registerObject
+)
+:
+    dragModel(dict, pair, registerObject)
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::dragModels::IshiiZuber::~IshiiZuber()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volScalarField>
+Foam::dragModels::IshiiZuber::CdRe() const
+{
+    volScalarField Re(pair_.Re());
+    volScalarField Eo(pair_.Eo());
+
+    volScalarField mud(pair_.dispersed().mu());
+    volScalarField muc(pair_.continuous().mu());
+
+    volScalarField muStar((mud + 0.4*muc)/(mud + muc));
+
+    volScalarField muMix
+    (
+        muc
+       *pow(max(1 - pair_.dispersed(), scalar(1e-3)), -2.5*muStar)
+    );
+
+    volScalarField ReM(Re*muc/muMix);
+    volScalarField CdRe
+    (
+        pos(1000 - ReM)*24.0*(scalar(1) + 0.15*pow(ReM, 0.687))
+      + neg(1000 - ReM)*0.44*ReM
+    );
+
+    volScalarField F((muc/muMix)*sqrt(1 - pair_.dispersed()));
+    F.max(1e-3);
+
+    volScalarField Ealpha((1 + 17.67*pow(F, 0.8571428))/(18.67*F));
+
+    volScalarField CdReEllipse(Ealpha*0.6666*sqrt(Eo)*Re);
+
+    return
+        pos(CdReEllipse - CdRe)
+       *min(CdReEllipse, Re*sqr(1 - pair_.dispersed())*2.66667)
+      + neg(CdReEllipse - CdRe)*CdRe;
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/IshiiZuber/IshiiZuber.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/IshiiZuber/IshiiZuber.H
new file mode 100644
index 0000000000000000000000000000000000000000..0212b08f0539bac51d8cebd21057b01082140649
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/IshiiZuber/IshiiZuber.H
@@ -0,0 +1,105 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::dragModels::IshiiZuber
+
+Description
+    Ishii and Zuber (1979) drag model for dense dispersed bubbly flows.
+
+    Reference:
+    \verbatim
+        "Drag Coefficient and relative velocity in bubbly, droplet and
+         particulate flows",
+        Ishii, M., Zuber, N.,
+        AIChE Journal 5, Vol. 25, 1979, pp. 843-855.
+    \endverbatim
+
+SourceFiles
+    IshiiZuber.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef IshiiZuber_H
+#define IshiiZuber_H
+
+#include "dragModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+class phasePair;
+
+namespace dragModels
+{
+
+/*---------------------------------------------------------------------------*\
+                           Class IshiiZuber Declaration
+\*---------------------------------------------------------------------------*/
+
+class IshiiZuber
+:
+    public dragModel
+{
+
+public:
+
+    //- Runtime type information
+    TypeName("IshiiZuber");
+
+
+    // Constructors
+
+        //- Construct from a dictionary and a phase pair
+        IshiiZuber
+        (
+            const dictionary& dict,
+            const phasePair& pair,
+            const bool registerObject
+        );
+
+
+    //- Destructor
+    virtual ~IshiiZuber();
+
+
+    // Member Functions
+
+        //- Drag coefficient
+        virtual tmp<volScalarField> CdRe() const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace dragModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/Lain/Lain.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/Lain/Lain.C
new file mode 100644
index 0000000000000000000000000000000000000000..2093120190a8e95f7af1adcf0e6c44287811dfb5
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/Lain/Lain.C
@@ -0,0 +1,75 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "Lain.H"
+#include "phasePair.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace dragModels
+{
+    defineTypeNameAndDebug(Lain, 0);
+    addToRunTimeSelectionTable(dragModel, Lain, dictionary);
+}
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::dragModels::Lain::Lain
+(
+    const dictionary& dict,
+    const phasePair& pair,
+    const bool registerObject
+)
+:
+    dragModel(dict, pair, registerObject)
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::dragModels::Lain::~Lain()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volScalarField> Foam::dragModels::Lain::CdRe() const
+{
+    volScalarField Re(pair_.Re());
+
+    return
+        neg(Re - 1.5)*16.0
+      + pos(Re - 1.5)*neg(Re - 80.0)*14.9*pow(Re, 0.22)
+      + pos(Re - 80.0)*neg(Re - 1500.0)*48*(1.0 - 2.21/sqrt(max(Re, SMALL)))
+      + pos(Re - 1500.0)*2.61*Re;
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/Lain/Lain.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/Lain/Lain.H
new file mode 100644
index 0000000000000000000000000000000000000000..95c4c49cc8a1f6065731ddb4d2c3ab727d55c9bd
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/Lain/Lain.H
@@ -0,0 +1,111 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::dragModels::Lain
+
+Description
+    Drag model of Lain et al.
+
+    References:
+    \verbatim
+        "Implementation and Comparison of Correlations for interfacial Forces
+         in a Gas-Liquid System within an Euler-Euler Framework"
+        Otromke, M.,
+        PhD Thesis, April 2013
+    \endverbatim
+
+    \verbatim
+        "Modelling hydrodynamics and turbulence in a bubble column using the
+         Euler-Lagrange procedure"
+        Lain, S., Brodera, D., Sommerfelda, M., Goza, M.F.,
+        International Journal of Multiphase Flow
+        Volume 28, Issue 8, August 2002, pp. 1381-1407
+    \endverbatim
+
+SourceFiles
+    Lain.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef Lain_H
+#define Lain_H
+
+#include "dragModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+class phasePair;
+
+namespace dragModels
+{
+
+/*---------------------------------------------------------------------------*\
+                           Class Lain Declaration
+\*---------------------------------------------------------------------------*/
+
+class Lain
+:
+    public dragModel
+{
+public:
+
+    //- Runtime type information
+    TypeName("Lain");
+
+
+    // Constructors
+
+        //- Construct from a dictionary and a phase pair
+        Lain
+        (
+            const dictionary& dict,
+            const phasePair& pair,
+            const bool registerObject
+        );
+
+
+    //- Destructor
+    virtual ~Lain();
+
+
+    // Member Functions
+
+        //- Drag coefficient
+        virtual tmp<volScalarField> CdRe() const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace dragModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/SchillerNaumann/SchillerNaumann.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/SchillerNaumann/SchillerNaumann.C
new file mode 100644
index 0000000000000000000000000000000000000000..ee1471ac55e795c2464575865d4364e98a893d89
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/SchillerNaumann/SchillerNaumann.C
@@ -0,0 +1,74 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "SchillerNaumann.H"
+#include "phasePair.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace dragModels
+{
+    defineTypeNameAndDebug(SchillerNaumann, 0);
+    addToRunTimeSelectionTable(dragModel, SchillerNaumann, dictionary);
+}
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::dragModels::SchillerNaumann::SchillerNaumann
+(
+    const dictionary& dict,
+    const phasePair& pair,
+    const bool registerObject
+)
+:
+    dragModel(dict, pair, registerObject),
+    residualRe_("residualRe", dimless, dict.lookup("residualRe"))
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::dragModels::SchillerNaumann::~SchillerNaumann()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volScalarField> Foam::dragModels::SchillerNaumann::CdRe() const
+{
+    volScalarField Re(pair_.Re());
+
+    return
+        neg(Re - 1000)*24.0*(1.0 + 0.15*pow(Re, 0.687))
+      + pos(Re - 1000)*0.44*max(Re, residualRe_);
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/SchillerNaumann/SchillerNaumann.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/SchillerNaumann/SchillerNaumann.H
new file mode 100644
index 0000000000000000000000000000000000000000..e74cd28d110f52b48e55e6b75a506ff6d2472ddf
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/SchillerNaumann/SchillerNaumann.H
@@ -0,0 +1,101 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::dragModels::SchillerNaumann
+
+Description
+    Schiller and Naumann drag model for dispersed bubbly flows.
+
+SourceFiles
+    SchillerNaumann.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef SchillerNaumann_H
+#define SchillerNaumann_H
+
+#include "dragModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+class phasePair;
+
+namespace dragModels
+{
+
+/*---------------------------------------------------------------------------*\
+                           Class SchillerNaumann Declaration
+\*---------------------------------------------------------------------------*/
+
+class SchillerNaumann
+:
+    public dragModel
+{
+    // Private data
+
+        //- Residual Reynolds Number
+        const dimensionedScalar residualRe_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("SchillerNaumann");
+
+
+    // Constructors
+
+        //- Construct from a dictionary and a phase pair
+        SchillerNaumann
+        (
+            const dictionary& dict,
+            const phasePair& pair,
+            const bool registerObject
+        );
+
+
+    //- Destructor
+    virtual ~SchillerNaumann();
+
+
+    // Member Functions
+
+        //- Drag coefficient
+        virtual tmp<volScalarField> CdRe() const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace dragModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/SyamlalOBrien/SyamlalOBrien.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/SyamlalOBrien/SyamlalOBrien.C
new file mode 100644
index 0000000000000000000000000000000000000000..b722736b60117ffefaaeb4d8dc444f93d146386b
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/SyamlalOBrien/SyamlalOBrien.C
@@ -0,0 +1,93 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "SyamlalOBrien.H"
+#include "phasePair.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace dragModels
+{
+    defineTypeNameAndDebug(SyamlalOBrien, 0);
+    addToRunTimeSelectionTable(dragModel, SyamlalOBrien, dictionary);
+}
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::dragModels::SyamlalOBrien::SyamlalOBrien
+(
+    const dictionary& dict,
+    const phasePair& pair,
+    const bool registerObject
+)
+:
+    dragModel(dict, pair, registerObject)
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::dragModels::SyamlalOBrien::~SyamlalOBrien()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volScalarField> Foam::dragModels::SyamlalOBrien::CdRe() const
+{
+    volScalarField alpha2
+    (
+        max(scalar(1) - pair_.dispersed(), pair_.continuous().residualAlpha())
+    );
+
+    volScalarField A(pow(alpha2, 4.14));
+    volScalarField B
+    (
+        neg(alpha2 - 0.85)*(0.8*pow(alpha2, 1.28))
+      + pos(alpha2 - 0.85)*(pow(alpha2, 2.65))
+    );
+    volScalarField Re(pair_.Re());
+    volScalarField Vr
+    (
+        0.5
+       *(
+            A - 0.06*Re + sqrt(sqr(0.06*Re) + 0.12*Re*(2.0*B - A) + sqr(A))
+        )
+    );
+    volScalarField CdsRe(sqr(0.63*sqrt(Re) + 4.8*sqrt(Vr)));
+
+    return
+        CdsRe
+       *max(pair_.continuous(), pair_.continuous().residualAlpha())
+       /sqr(Vr);
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/SyamlalOBrien/SyamlalOBrien.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/SyamlalOBrien/SyamlalOBrien.H
new file mode 100644
index 0000000000000000000000000000000000000000..ac7811837834d7036808dbc382e33e14017e9b28
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/SyamlalOBrien/SyamlalOBrien.H
@@ -0,0 +1,97 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::dragModels::SyamlalOBrien
+
+Description
+    Syamlal, M., Rogers, W. and O'Brien, T. J. (1993) MFIX documentation,
+    Theory Guide. Technical Note DOE/METC-94/1004. Morgantown, West Virginia,
+    USA.
+
+SourceFiles
+    SyamlalOBrien.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef SyamlalOBrien_H
+#define SyamlalOBrien_H
+
+#include "dragModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+class phasePair;
+
+namespace dragModels
+{
+
+/*---------------------------------------------------------------------------*\
+                           Class SyamlalOBrien Declaration
+\*---------------------------------------------------------------------------*/
+
+class SyamlalOBrien
+:
+    public dragModel
+{
+public:
+
+    //- Runtime type information
+    TypeName("SyamlalOBrien");
+
+
+    // Constructors
+
+        //- Construct from a dictionary and a phase pair
+        SyamlalOBrien
+        (
+            const dictionary& dict,
+            const phasePair& pair,
+            const bool registerObject
+        );
+
+
+    //- Destructor
+    virtual ~SyamlalOBrien();
+
+
+    // Member Functions
+
+        //- Drag coefficient
+        virtual tmp<volScalarField> CdRe() const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace dragModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/TomiyamaAnalytic/TomiyamaAnalytic.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/TomiyamaAnalytic/TomiyamaAnalytic.C
new file mode 100644
index 0000000000000000000000000000000000000000..343cd9a897f440609f26ded7dfd665882456c213
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/TomiyamaAnalytic/TomiyamaAnalytic.C
@@ -0,0 +1,89 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "TomiyamaAnalytic.H"
+#include "phasePair.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace dragModels
+{
+    defineTypeNameAndDebug(TomiyamaAnalytic, 0);
+    addToRunTimeSelectionTable(dragModel, TomiyamaAnalytic, dictionary);
+}
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::dragModels::TomiyamaAnalytic::TomiyamaAnalytic
+(
+    const dictionary& dict,
+    const phasePair& pair,
+    const bool registerObject
+)
+:
+    dragModel(dict, pair, registerObject),
+    residualRe_("residualRe", dimless, dict.lookup("residualRe")),
+    residualEo_("residualEo", dimless, dict.lookup("residualEo")),
+    residualE_("residualE", dimless, dict.lookup("residualE"))
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::dragModels::TomiyamaAnalytic::~TomiyamaAnalytic()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volScalarField>
+Foam::dragModels::TomiyamaAnalytic::CdRe() const
+{
+    volScalarField Eo(max(pair_.Eo(), residualEo_));
+    volScalarField E(max(pair_.E(), residualE_));
+
+    volScalarField OmEsq(max(scalar(1) - sqr(E), sqr(residualE_)));
+    volScalarField rtOmEsq(sqrt(OmEsq));
+
+    volScalarField F(max(asin(rtOmEsq) - E*rtOmEsq, residualE_)/OmEsq);
+
+    return
+        (8.0/3.0)
+       *Eo
+       /(
+            Eo*pow(E, 2.0/3.0)/OmEsq
+          + 16*pow(E, 4.0/3.0)
+        )
+       /sqr(F)
+       *max(pair_.Re(), residualRe_);
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/TomiyamaAnalytic/TomiyamaAnalytic.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/TomiyamaAnalytic/TomiyamaAnalytic.H
new file mode 100644
index 0000000000000000000000000000000000000000..2babedd2168ef5b2a455f2869fd92ffe73c5a0f5
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/TomiyamaAnalytic/TomiyamaAnalytic.H
@@ -0,0 +1,116 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::dragModels::TomiyamaAnalytic
+
+Description
+    Analytical drag model of Tomiyama et al.
+
+    Reference:
+    \verbatim
+        "Drag Coefficients of Bubbles. 1st Report. Drag Coefficients of a
+         Single Bubble in a Stagnant Liquid."
+        Tomiyama, A., Kataoka, I., and Sakaguchi, T.,
+        Nippon Kikai Gakkai Ronbunshu
+        Volume 61, Issue 587, 1995, pp. 2357-2364
+    \endverbatim
+
+SourceFiles
+    TomiyamaAnalytic.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef TomiyamaAnalytic_H
+#define TomiyamaAnalytic_H
+
+#include "dragModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+class phasePair;
+
+namespace dragModels
+{
+
+/*---------------------------------------------------------------------------*\
+                           Class TomiyamaAnalytic Declaration
+\*---------------------------------------------------------------------------*/
+
+class TomiyamaAnalytic
+:
+    public dragModel
+{
+    // Private data
+
+        //- Residual Reynolds Number
+        const dimensionedScalar residualRe_;
+
+        //- Residual Eotvos number
+        const dimensionedScalar residualEo_;
+
+        //- Residual aspect ratio
+        const dimensionedScalar residualE_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("TomiyamaAnalytic");
+
+
+    // Constructors
+
+        //- Construct from a dictionary and a phase pair
+        TomiyamaAnalytic
+        (
+            const dictionary& dict,
+            const phasePair& pair,
+            const bool registerObject
+        );
+
+
+    //- Destructor
+    virtual ~TomiyamaAnalytic();
+
+
+    // Member Functions
+
+        // Drag coefficient
+        virtual tmp<volScalarField> CdRe() const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace dragModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/TomiyamaCorrelated/TomiyamaCorrelated.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/TomiyamaCorrelated/TomiyamaCorrelated.C
new file mode 100644
index 0000000000000000000000000000000000000000..af34864f0c22e6b799973fcd3b7179c66a3b1c7c
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/TomiyamaCorrelated/TomiyamaCorrelated.C
@@ -0,0 +1,85 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "TomiyamaCorrelated.H"
+#include "phasePair.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace dragModels
+{
+    defineTypeNameAndDebug(TomiyamaCorrelated, 0);
+    addToRunTimeSelectionTable(dragModel, TomiyamaCorrelated, dictionary);
+}
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::dragModels::TomiyamaCorrelated::TomiyamaCorrelated
+(
+    const dictionary& dict,
+    const phasePair& pair,
+    const bool registerObject
+)
+:
+    dragModel(dict, pair, registerObject),
+    A_("A", dimless, dict.lookup("A"))
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::dragModels::TomiyamaCorrelated::~TomiyamaCorrelated()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volScalarField>
+Foam::dragModels::TomiyamaCorrelated::CdRe() const
+{
+    volScalarField Re(pair_.Re());
+    volScalarField Eo(pair_.Eo());
+
+    return
+        max
+        (
+            A_
+           *min
+            (
+                (1 + 0.15*pow(Re, 0.687)),
+                scalar(3)
+            ),
+            8*Eo*Re/(3*Eo + 12)
+        );
+
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/TomiyamaCorrelated/TomiyamaCorrelated.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/TomiyamaCorrelated/TomiyamaCorrelated.H
new file mode 100644
index 0000000000000000000000000000000000000000..80ffe0646ad6e46202d971ee20f0906518114cc4
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/TomiyamaCorrelated/TomiyamaCorrelated.H
@@ -0,0 +1,110 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::dragModels::TomiyamaCorrelated
+
+Description
+    Correlation of Tomiyama et al.
+
+    Reference:
+    \verbatim
+        "Terminal velocity of single bubbles in surface tension force dominant
+         regime"
+        Tomiyama, T., Celata, G.P., Hosokawa, S., Yoshida, S.,
+        International Journal of Multiphase Flow
+        Volume 28, Issue 9, September 2002, pp. 1497-1519
+    \endverbatim
+
+SourceFiles
+    TomiyamaCorrelated.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef TomiyamaCorrelated_H
+#define TomiyamaCorrelated_H
+
+#include "dragModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+class phasePair;
+
+namespace dragModels
+{
+
+/*---------------------------------------------------------------------------*\
+                           Class TomiyamaCorrelated Declaration
+\*---------------------------------------------------------------------------*/
+
+class TomiyamaCorrelated
+:
+    public dragModel
+{
+    // Private data
+
+        //- Coefficient
+        const dimensionedScalar A_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("TomiyamaCorrelated");
+
+
+    // Constructors
+
+        //- Construct from a dictionary and a phase pair
+        TomiyamaCorrelated
+        (
+            const dictionary& dict,
+            const phasePair& pair,
+            const bool registerObject
+        );
+
+
+    //- Destructor
+    virtual ~TomiyamaCorrelated();
+
+
+    // Member Functions
+
+        //- Drag coefficient
+        virtual tmp<volScalarField> CdRe() const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace dragModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/WenYu/WenYu.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/WenYu/WenYu.C
new file mode 100644
index 0000000000000000000000000000000000000000..bf1e1da4a770fb2cb9278fc790d06c29573f94fe
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/WenYu/WenYu.C
@@ -0,0 +1,85 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "WenYu.H"
+#include "phasePair.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace dragModels
+{
+    defineTypeNameAndDebug(WenYu, 0);
+    addToRunTimeSelectionTable(dragModel, WenYu, dictionary);
+}
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::dragModels::WenYu::WenYu
+(
+    const dictionary& dict,
+    const phasePair& pair,
+    const bool registerObject
+)
+:
+    dragModel(dict, pair, registerObject),
+    residualRe_("residualRe", dimless, dict.lookup("residualRe"))
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::dragModels::WenYu::~WenYu()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volScalarField> Foam::dragModels::WenYu::CdRe() const
+{
+    volScalarField alpha2
+    (
+        max(scalar(1) - pair_.dispersed(), pair_.continuous().residualAlpha())
+    );
+
+    volScalarField Re(pair_.Re());
+    volScalarField CdsRe
+    (
+        neg(Re - 1000)*24.0*(1.0 + 0.15*pow(Re, 0.687))
+      + pos(Re - 1000)*0.44*max(Re, residualRe_)
+    );
+
+    return
+        CdsRe
+       *pow(alpha2, -2.65)
+       *max(pair_.continuous(), pair_.continuous().residualAlpha());
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/WenYu/WenYu.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/WenYu/WenYu.H
new file mode 100644
index 0000000000000000000000000000000000000000..4787bfec18e21c74408168a4e236e22bb3709dc3
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/WenYu/WenYu.H
@@ -0,0 +1,109 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::dragModels::WenYu
+
+Description
+    Wen and Yu drag model
+
+    Reference:
+    \verbatim
+        "Eulerian Two-Phase Flow Theory Applied to Fluidization"
+        Enwald, H., Peirano, E., Almstedt, A-E.,
+        Int. J. Multiphase Flow, Vol. 22, Suppl, 1996, pp. 21-66
+        Eq. 86-87, p. 40
+    \endverbatim
+
+SourceFiles
+    WenYu.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef WenYu_H
+#define WenYu_H
+
+#include "dragModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+class phasePair;
+
+namespace dragModels
+{
+
+/*---------------------------------------------------------------------------*\
+                           Class WenYu Declaration
+\*---------------------------------------------------------------------------*/
+
+class WenYu
+:
+    public dragModel
+{
+    // Private data
+
+        //- Residual Reynolds Number
+        const dimensionedScalar residualRe_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("WenYu");
+
+
+    // Constructors
+
+        //- Construct from a dictionary and a phase pair
+        WenYu
+        (
+            const dictionary& dict,
+            const phasePair& pair,
+            const bool registerObject
+        );
+
+
+    //- Destructor
+    virtual ~WenYu();
+
+
+    // Member Functions
+
+        //- Drag coefficient
+        virtual tmp<volScalarField> CdRe() const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace dragModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/dragModel/dragModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/dragModel/dragModel.C
new file mode 100644
index 0000000000000000000000000000000000000000..29a7bdf884128e1fe978e8cfabfb5a930e6900f5
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/dragModel/dragModel.C
@@ -0,0 +1,140 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "dragModel.H"
+#include "phasePair.H"
+#include "swarmCorrection.H"
+#include "surfaceInterpolate.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    defineTypeNameAndDebug(dragModel, 0);
+    defineRunTimeSelectionTable(dragModel, dictionary);
+}
+
+const Foam::dimensionSet Foam::dragModel::dimK(1, -3, -1, 0, 0);
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::dragModel::dragModel
+(
+    const phasePair& pair,
+    const bool registerObject
+)
+:
+    regIOobject
+    (
+        IOobject
+        (
+            IOobject::groupName(typeName, pair.name()),
+            pair.phase1().mesh().time().timeName(),
+            pair.phase1().mesh(),
+            IOobject::NO_READ,
+            IOobject::NO_WRITE,
+            registerObject
+        )
+    ),
+    pair_(pair)
+{}
+
+
+Foam::dragModel::dragModel
+(
+    const dictionary& dict,
+    const phasePair& pair,
+    const bool registerObject
+)
+:
+    regIOobject
+    (
+        IOobject
+        (
+            IOobject::groupName(typeName, pair.name()),
+            pair.phase1().mesh().time().timeName(),
+            pair.phase1().mesh(),
+            IOobject::NO_READ,
+            IOobject::NO_WRITE,
+            registerObject
+        )
+    ),
+    pair_(pair),
+    swarmCorrection_
+    (
+        swarmCorrection::New
+        (
+            dict.subDict("swarmCorrection"),
+            pair
+        )
+    )
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::dragModel::~dragModel()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volScalarField> Foam::dragModel::Ki() const
+{
+    return
+        0.75
+       *CdRe()
+       *swarmCorrection_->Cs()
+       *pair_.continuous().rho()
+       *pair_.continuous().nu()
+       /sqr(pair_.dispersed().d());
+}
+
+
+Foam::tmp<Foam::volScalarField> Foam::dragModel::K() const
+{
+    return max(pair_.dispersed(), pair_.dispersed().residualAlpha())*Ki();
+}
+
+
+Foam::tmp<Foam::surfaceScalarField> Foam::dragModel::Kf() const
+{
+    return
+        max
+        (
+            fvc::interpolate(pair_.dispersed()),
+            pair_.dispersed().residualAlpha()
+        )*fvc::interpolate(Ki());
+}
+
+
+bool Foam::dragModel::writeData(Ostream& os) const
+{
+    return os.good();
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/dragModel/dragModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/dragModel/dragModel.H
new file mode 100644
index 0000000000000000000000000000000000000000..733393cca51e9a46d26b4072b7de39b6a582b2c2
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/dragModel/dragModel.H
@@ -0,0 +1,162 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::dragModel
+
+Description
+
+SourceFiles
+    dragModel.C
+    newDragModel.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef dragModel_H
+#define dragModel_H
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include "volFields.H"
+#include "dictionary.H"
+#include "runTimeSelectionTables.H"
+
+namespace Foam
+{
+
+class phasePair;
+class swarmCorrection;
+
+/*---------------------------------------------------------------------------*\
+                           Class dragModel Declaration
+\*---------------------------------------------------------------------------*/
+
+class dragModel
+:
+    public regIOobject
+{
+protected:
+
+    // Protected data
+
+        //- Phase pair
+        const phasePair& pair_;
+
+        //- Swarm correction
+        autoPtr<swarmCorrection> swarmCorrection_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("dragModel");
+
+
+    // Declare runtime construction
+
+        declareRunTimeSelectionTable
+        (
+            autoPtr,
+            dragModel,
+            dictionary,
+            (
+                const dictionary& dict,
+                const phasePair& pair,
+                const bool registerObject
+            ),
+            (dict, pair, registerObject)
+        );
+
+
+    // Static data members
+
+        //- Coefficient dimensions
+        static const dimensionSet dimK;
+
+
+    // Constructors
+
+        // Construct without residual constants
+        dragModel
+        (
+            const phasePair& pair,
+            const bool registerObject
+        );
+
+        // Construct with residual constants
+        dragModel
+        (
+            const dictionary& dict,
+            const phasePair& pair,
+            const bool registerObject
+        );
+
+
+    //- Destructor
+    virtual ~dragModel();
+
+
+    // Selectors
+
+        static autoPtr<dragModel> New
+        (
+            const dictionary& dict,
+            const phasePair& pair
+        );
+
+
+    // Member Functions
+
+        //- Drag coefficient
+        virtual tmp<volScalarField> CdRe() const = 0;
+
+        //- Return the phase-intensive drag coefficient Ki
+        //  used in the momentum equations
+        //    ddt(alpha1*rho1*U1) + ... = ... alphad*K*(U1-U2)
+        //    ddt(alpha2*rho2*U2) + ... = ... alphad*K*(U2-U1)
+        virtual tmp<volScalarField> Ki() const;
+
+        //- Return the drag coefficient K
+        //  used in the momentum equations
+        //    ddt(alpha1*rho1*U1) + ... = ... K*(U1-U2)
+        //    ddt(alpha2*rho2*U2) + ... = ... K*(U2-U1)
+        virtual tmp<volScalarField> K() const;
+
+        //- Return the drag coefficient Kf
+        //  used in the face-momentum equations
+        virtual tmp<surfaceScalarField> Kf() const;
+
+        //- Dummy write for regIOobject
+        bool writeData(Ostream& os) const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/dragModel/newDragModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/dragModel/newDragModel.C
new file mode 100644
index 0000000000000000000000000000000000000000..041468a15b3989bf5984cc72ba4f37bc42e13520
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/dragModel/newDragModel.C
@@ -0,0 +1,59 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "dragModel.H"
+#include "phasePair.H"
+
+// * * * * * * * * * * * * * * * * Selector  * * * * * * * * * * * * * * * * //
+
+Foam::autoPtr<Foam::dragModel> Foam::dragModel::New
+(
+    const dictionary& dict,
+    const phasePair& pair
+)
+{
+    word dragModelType(dict.lookup("type"));
+
+    Info<< "Selecting dragModel for "
+        << pair << ": " << dragModelType << endl;
+
+    dictionaryConstructorTable::iterator cstrIter =
+        dictionaryConstructorTablePtr_->find(dragModelType);
+
+    if (cstrIter == dictionaryConstructorTablePtr_->end())
+    {
+        FatalErrorIn("dragModel::New")
+            << "Unknown dragModelType type "
+            << dragModelType << endl << endl
+            << "Valid dragModel types are : " << endl
+            << dictionaryConstructorTablePtr_->sortedToc()
+            << exit(FatalError);
+    }
+
+    return cstrIter()(dict, pair, true);
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/segregated/segregated.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/segregated/segregated.C
new file mode 100644
index 0000000000000000000000000000000000000000..b50a711c77fd349f4459a357d842e91d319c4df5
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/segregated/segregated.C
@@ -0,0 +1,157 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "segregated.H"
+#include "phasePair.H"
+#include "fvcGrad.H"
+#include "surfaceInterpolate.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace dragModels
+{
+    defineTypeNameAndDebug(segregated, 0);
+    addToRunTimeSelectionTable(dragModel, segregated, dictionary);
+}
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::dragModels::segregated::segregated
+(
+    const dictionary& dict,
+    const phasePair& pair,
+    const bool registerObject
+)
+:
+    dragModel(dict, pair, registerObject),
+    m_("m", dimless, dict.lookup("m")),
+    n_("n", dimless, dict.lookup("n"))
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::dragModels::segregated::~segregated()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volScalarField> Foam::dragModels::segregated::CdRe() const
+{
+    FatalErrorIn("Foam::dragModels::segregated::CdRe() const")
+        << "Not implemented."
+        << "Drag coefficient not defined for the segregated model."
+        << exit(FatalError);
+
+    return pair_.phase1();
+}
+
+
+Foam::tmp<Foam::volScalarField> Foam::dragModels::segregated::K() const
+{
+    const fvMesh& mesh(pair_.phase1().mesh());
+
+    const volScalarField& alpha1(pair_.phase1());
+    const volScalarField& alpha2(pair_.phase2());
+
+    const volScalarField& rho1(pair_.phase1().rho());
+    const volScalarField& rho2(pair_.phase2().rho());
+
+    tmp<volScalarField> tnu1(pair_.phase1().nu());
+    tmp<volScalarField> tnu2(pair_.phase2().nu());
+
+    const volScalarField& nu1(tnu1());
+    const volScalarField& nu2(tnu2());
+
+    volScalarField L
+    (
+        IOobject
+        (
+            "L",
+            mesh.time().timeName(),
+            mesh
+        ),
+        mesh,
+        dimensionedScalar("L", dimLength, 0),
+        zeroGradientFvPatchField<scalar>::typeName
+    );
+    L.internalField() = cbrt(mesh.V());
+    L.correctBoundaryConditions();
+
+    volScalarField I
+    (
+        alpha1
+       /max
+        (
+            alpha1 + alpha2,
+            pair_.phase1().residualAlpha() + pair_.phase2().residualAlpha()
+        )
+    );
+    volScalarField magGradI
+    (
+        max
+        (
+            mag(fvc::grad(I)),
+            (pair_.phase1().residualAlpha() + pair_.phase2().residualAlpha())/L
+        )
+    );
+
+    volScalarField muI
+    (
+        rho1*nu1*rho2*nu2
+       /(rho1*nu1 + rho2*nu2)
+    );
+    volScalarField muAlphaI
+    (
+        alpha1*rho1*nu1*alpha2*rho2*nu2
+       /(alpha1*rho1*nu1 + alpha2*rho2*nu2)
+    );
+
+    volScalarField ReI
+    (
+        pair_.rho()
+       *pair_.magUr()
+       /(magGradI*muI)
+    );
+
+    volScalarField lambda(m_*ReI + n_*muAlphaI/muI);
+
+    return lambda*sqr(magGradI)*muI;
+}
+
+
+Foam::tmp<Foam::surfaceScalarField> Foam::dragModels::segregated::Kf() const
+{
+    return fvc::interpolate(K());
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/segregated/segregated.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/segregated/segregated.H
new file mode 100644
index 0000000000000000000000000000000000000000..3379c02103f3a92c4141e999e2ac860f1f3eff15
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/segregated/segregated.H
@@ -0,0 +1,117 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::dragModels::segregated
+
+Description
+    Segregated drag model for use in regions with no obvious dispersed phase.
+
+    Reference:
+    \verbatim
+        "Towards the Numerical Simulation of Multi-scale Two-phase Flows",
+        Marschall, H.,
+        PhD Thesis, TU München, 2011
+    \endverbatim
+
+SourceFiles
+    segregated.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef segregated_H
+#define segregated_H
+
+#include "dragModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+class phasePair;
+
+namespace dragModels
+{
+
+/*---------------------------------------------------------------------------*\
+                           Class segregated Declaration
+\*---------------------------------------------------------------------------*/
+
+class segregated
+:
+    public dragModel
+{
+    // Private data
+
+        //- M coefficient
+        const dimensionedScalar m_;
+
+        //- N coefficient
+        const dimensionedScalar n_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("segregated");
+
+
+    // Constructors
+
+        //- Construct from components
+        segregated
+        (
+            const dictionary& dict,
+            const phasePair& pair,
+            const bool registerObject
+        );
+
+
+    //- Destructor
+    virtual ~segregated();
+
+
+    // Member Functions
+
+        //- Drag coefficient
+        virtual tmp<volScalarField> CdRe() const;
+
+        //- The drag function used in the momentum equation
+        virtual tmp<volScalarField> K() const;
+
+        //- The drag function Kf used in the face-momentum equations
+        virtual tmp<surfaceScalarField> Kf() const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace dragModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/RanzMarshall/RanzMarshall.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/RanzMarshall/RanzMarshall.C
new file mode 100644
index 0000000000000000000000000000000000000000..7e1693dfed28aea4c31021fbbb78c482773feb5c
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/RanzMarshall/RanzMarshall.C
@@ -0,0 +1,76 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "RanzMarshall.H"
+#include "phasePair.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace heatTransferModels
+{
+    defineTypeNameAndDebug(RanzMarshall, 0);
+    addToRunTimeSelectionTable(heatTransferModel, RanzMarshall, dictionary);
+}
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::heatTransferModels::RanzMarshall::RanzMarshall
+(
+    const dictionary& dict,
+    const phasePair& pair
+)
+:
+    heatTransferModel(dict, pair)
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::heatTransferModels::RanzMarshall::~RanzMarshall()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volScalarField>
+Foam::heatTransferModels::RanzMarshall::K() const
+{
+    volScalarField Nu(scalar(2) + 0.6*sqrt(pair_.Re())*cbrt(pair_.Pr()));
+
+    return
+        6.0
+       *max(pair_.dispersed(), residualAlpha_)
+       *pair_.continuous().kappa()
+       *Nu
+       /sqr(pair_.dispersed().d());
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/RanzMarshall/RanzMarshall.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/RanzMarshall/RanzMarshall.H
new file mode 100644
index 0000000000000000000000000000000000000000..c02126528a03c8ddd8c503120b0263a03cb17492
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/RanzMarshall/RanzMarshall.H
@@ -0,0 +1,95 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::heatTransferModels::RanzMarshall
+
+Description
+    Ranz-Marshall correlation for turbulent heat transfer from the surface of a
+    sphere to the surrounding fluid.
+
+SourceFiles
+    RanzMarshall.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef RanzMarshall_H
+#define RanzMarshall_H
+
+#include "heatTransferModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+class phasePair;
+
+namespace heatTransferModels
+{
+
+/*---------------------------------------------------------------------------*\
+                          Class RanzMarshall Declaration
+\*---------------------------------------------------------------------------*/
+
+class RanzMarshall
+:
+    public heatTransferModel
+{
+public:
+
+    //- Runtime type information
+    TypeName("RanzMarshall");
+
+
+    // Constructors
+
+        //- Construct from components
+        RanzMarshall
+        (
+            const dictionary& dict,
+            const phasePair& pair
+        );
+
+
+    //- Destructor
+    virtual ~RanzMarshall();
+
+
+    // Member Functions
+
+        //- The heat transfer function K used in the enthalpy equation
+        tmp<volScalarField> K() const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace heatTransferModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/heatTransferModel/heatTransferModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/heatTransferModel/heatTransferModel.C
new file mode 100644
index 0000000000000000000000000000000000000000..1621b6be19dbeb3fdcaee31f379d0569c8a201cd
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/heatTransferModel/heatTransferModel.C
@@ -0,0 +1,68 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "heatTransferModel.H"
+#include "phasePair.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    defineTypeNameAndDebug(heatTransferModel, 0);
+    defineRunTimeSelectionTable(heatTransferModel, dictionary);
+}
+
+const Foam::dimensionSet Foam::heatTransferModel::dimK(1, -1, -3, -1, 0);
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::heatTransferModel::heatTransferModel
+(
+    const dictionary& dict,
+    const phasePair& pair
+)
+:
+    pair_(pair),
+    residualAlpha_
+    (
+        "residualAlpha",
+        dimless,
+        dict.lookupOrDefault<scalar>
+        (
+            "residualAlpha",
+            pair_.dispersed().residualAlpha().value()
+        )
+    )
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::heatTransferModel::~heatTransferModel()
+{}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/heatTransferModel/heatTransferModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/heatTransferModel/heatTransferModel.H
new file mode 100644
index 0000000000000000000000000000000000000000..6276e8aee14661d8c789eca3872ec45833a7540a
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/heatTransferModel/heatTransferModel.H
@@ -0,0 +1,132 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::heatTransferModel
+
+Description
+
+SourceFiles
+    heatTransferModel.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef heatTransferModel_H
+#define heatTransferModel_H
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include "volFields.H"
+#include "dictionary.H"
+#include "runTimeSelectionTables.H"
+
+namespace Foam
+{
+
+class phasePair;
+
+/*---------------------------------------------------------------------------*\
+                        Class heatTransferModel Declaration
+\*---------------------------------------------------------------------------*/
+
+class heatTransferModel
+{
+protected:
+
+    // Protected data
+
+        //- Phase pair
+        const phasePair& pair_;
+
+        //- Residual phase fraction
+        const dimensionedScalar residualAlpha_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("heatTransferModel");
+
+
+    // Declare runtime construction
+
+        declareRunTimeSelectionTable
+        (
+            autoPtr,
+            heatTransferModel,
+            dictionary,
+            (
+                const dictionary& dict,
+                const phasePair& pair
+            ),
+            (dict, pair)
+        );
+
+
+    // Static data members
+
+        //- Coefficient dimensions
+        static const dimensionSet dimK;
+
+
+    // Constructors
+
+        //- Construct froma dictionary and a phase pair
+        heatTransferModel
+        (
+            const dictionary& dict,
+            const phasePair& pair
+        );
+
+
+    //- Destructor
+    virtual ~heatTransferModel();
+
+
+    // Selectors
+
+        static autoPtr<heatTransferModel> New
+        (
+            const dictionary& dict,
+            const phasePair& pair
+        );
+
+
+    // Member Functions
+
+        //- The heat transfer function K used in the enthalpy equation
+        //    ddt(alpha1*rho1*ha) + ... = ... K*(Ta - Tb)
+        //    ddt(alpha2*rho2*hb) + ... = ... K*(Tb - Ta)
+        virtual tmp<volScalarField> K() const = 0;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/heatTransferModel/newHeatTransferModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/heatTransferModel/newHeatTransferModel.C
new file mode 100644
index 0000000000000000000000000000000000000000..24f02b69b48c480b1f45f45fdf1b683d2a091bff
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/heatTransferModel/newHeatTransferModel.C
@@ -0,0 +1,59 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "heatTransferModel.H"
+#include "phasePair.H"
+
+// * * * * * * * * * * * * * * * * Selector  * * * * * * * * * * * * * * * * //
+
+Foam::autoPtr<Foam::heatTransferModel> Foam::heatTransferModel::New
+(
+    const dictionary& dict,
+    const phasePair& pair
+)
+{
+    word heatTransferModelType(dict.lookup("type"));
+
+    Info<< "Selecting heatTransferModel for "
+        << pair << ": " << heatTransferModelType << endl;
+
+    dictionaryConstructorTable::iterator cstrIter =
+        dictionaryConstructorTablePtr_->find(heatTransferModelType);
+
+    if (cstrIter == dictionaryConstructorTablePtr_->end())
+    {
+        FatalErrorIn("heatTransferModel::New")
+            << "Unknown heatTransferModelType type "
+            << heatTransferModelType << endl << endl
+            << "Valid heatTransferModel types are : " << endl
+            << dictionaryConstructorTablePtr_->sortedToc()
+            << exit(FatalError);
+    }
+
+    return cstrIter()(dict, pair);
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/sphericalHeatTransfer/sphericalHeatTransfer.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/sphericalHeatTransfer/sphericalHeatTransfer.C
new file mode 100644
index 0000000000000000000000000000000000000000..4eec6de0283456fdf08fa62eab746a36275b8fe5
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/sphericalHeatTransfer/sphericalHeatTransfer.C
@@ -0,0 +1,78 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "sphericalHeatTransfer.H"
+#include "phasePair.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace heatTransferModels
+{
+    defineTypeNameAndDebug(sphericalHeatTransfer, 0);
+    addToRunTimeSelectionTable
+    (
+        heatTransferModel,
+        sphericalHeatTransfer,
+        dictionary
+    );
+}
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::heatTransferModels::sphericalHeatTransfer::sphericalHeatTransfer
+(
+    const dictionary& dict,
+    const phasePair& pair
+)
+:
+    heatTransferModel(dict, pair)
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::heatTransferModels::sphericalHeatTransfer::~sphericalHeatTransfer()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volScalarField>
+Foam::heatTransferModels::sphericalHeatTransfer::K() const
+{
+    return
+        60.0
+       *max(pair_.dispersed(), residualAlpha_)
+       *pair_.continuous().kappa()
+       /sqr(pair_.dispersed().d());
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/sphericalHeatTransfer/sphericalHeatTransfer.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/sphericalHeatTransfer/sphericalHeatTransfer.H
new file mode 100644
index 0000000000000000000000000000000000000000..88d098668fa581edb0add1c704e187b590565282
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/sphericalHeatTransfer/sphericalHeatTransfer.H
@@ -0,0 +1,95 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::heatTransferModels::sphericalHeatTransfer
+
+Description
+    Model which applies an analytical solution for heat transfer from the
+    surface of a sphere to the fluid within the sphere.
+
+SourceFiles
+    sphericalHeatTransfer.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef sphericalHeatTransfer_H
+#define sphericalHeatTransfer_H
+
+#include "heatTransferModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+class phasePair;
+
+namespace heatTransferModels
+{
+
+/*---------------------------------------------------------------------------*\
+                          Class sphericalHeatTransfer Declaration
+\*---------------------------------------------------------------------------*/
+
+class sphericalHeatTransfer
+:
+    public heatTransferModel
+{
+public:
+
+    //- Runtime type information
+    TypeName("spherical");
+
+
+    // Constructors
+
+        //- Construct from components
+        sphericalHeatTransfer
+        (
+            const dictionary& dict,
+            const phasePair& pair
+        );
+
+
+    //- Destructor
+    virtual ~sphericalHeatTransfer();
+
+
+    // Member Functions
+
+        //- The heat transfer function K used in the enthalpy equation
+        tmp<volScalarField> K() const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace heatTransferModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/LegendreMagnaudet/LegendreMagnaudet.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/LegendreMagnaudet/LegendreMagnaudet.C
new file mode 100644
index 0000000000000000000000000000000000000000..244853634bd1f770044c9bf260d37c551714fd26
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/LegendreMagnaudet/LegendreMagnaudet.C
@@ -0,0 +1,98 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "LegendreMagnaudet.H"
+#include "phasePair.H"
+#include "fvcGrad.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace liftModels
+{
+    defineTypeNameAndDebug(LegendreMagnaudet, 0);
+    addToRunTimeSelectionTable(liftModel, LegendreMagnaudet, dictionary);
+}
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::liftModels::LegendreMagnaudet::LegendreMagnaudet
+(
+    const dictionary& dict,
+    const phasePair& pair
+)
+:
+    liftModel(dict, pair),
+    residualRe_("residualRe", dimless, dict.lookup("residualRe"))
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::liftModels::LegendreMagnaudet::~LegendreMagnaudet()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volScalarField> Foam::liftModels::LegendreMagnaudet::Cl() const
+{
+    volScalarField Re(max(pair_.Re(), residualRe_));
+
+    volScalarField Sr
+    (
+        sqr(pair_.dispersed().d())
+       /(
+            Re
+           *pair_.continuous().nu()
+        )
+       *mag(fvc::grad(pair_.continuous().U()))
+    );
+
+    volScalarField ClLowSqr
+    (
+        sqr(6.0*2.255)
+       *sqr(Sr)
+       /(
+            pow4(constant::mathematical::pi)
+           *Re
+           *pow3(Sr + 0.2*Re)
+        )
+    );
+
+    volScalarField ClHighSqr
+    (
+        sqr(0.5*(Re + 16.0)/(Re + 29.0))
+    );
+
+    return sqrt(ClLowSqr + ClHighSqr);
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/LegendreMagnaudet/LegendreMagnaudet.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/LegendreMagnaudet/LegendreMagnaudet.H
new file mode 100644
index 0000000000000000000000000000000000000000..10de30e6262299092cb4615d72e751bf7fd9c727
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/LegendreMagnaudet/LegendreMagnaudet.H
@@ -0,0 +1,116 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::liftModels::LegendreMagnaudet
+
+Description
+    Lift model of Legendre and Magnaudet.
+
+    References:
+    \verbatim
+        "Implementation and Comparison of Correlations for interfacial Forces
+        in a Gas-Liquid System within an Euler-Euler Framework"
+        Otromke, M.
+        PhD Thesis
+        April 2013
+    \endverbatim
+
+    \verbatim
+        "The lift force on a spherical bubble in a viscous linear shear flow"
+        Legendre, D., Magnaudet, J.,
+        Journal of Fluid Mechanics
+        Volume 368, August 1998, pp. 81-126
+    \endverbatim
+
+SourceFiles
+    LegendreMagnaudet.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef LegendreMagnaudet_H
+#define LegendreMagnaudet_H
+
+#include "liftModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+class phasePair;
+
+namespace liftModels
+{
+
+/*---------------------------------------------------------------------------*\
+                           Class LegendreMagnaudet Declaration
+\*---------------------------------------------------------------------------*/
+
+class LegendreMagnaudet
+:
+    public liftModel
+{
+    // Private data
+
+        //- Residual Reynold's number
+        const dimensionedScalar residualRe_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("LegendreMagnaudet");
+
+
+    // Constructors
+
+        //- Construct from a dictionary and a phase pair
+        LegendreMagnaudet
+        (
+            const dictionary& dict,
+            const phasePair& pair
+        );
+
+
+    //- Destructor
+    virtual ~LegendreMagnaudet();
+
+
+    // Member Functions
+
+        //- Lift coefficient
+        virtual tmp<volScalarField> Cl() const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace liftModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/Moraga/Moraga.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/Moraga/Moraga.C
new file mode 100644
index 0000000000000000000000000000000000000000..5548dfd70af3ae89483a3563b4298cf72d694f18
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/Moraga/Moraga.C
@@ -0,0 +1,101 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "Moraga.H"
+#include "phasePair.H"
+#include "fvcGrad.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace liftModels
+{
+    defineTypeNameAndDebug(Moraga, 0);
+    addToRunTimeSelectionTable(liftModel, Moraga, dictionary);
+}
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::liftModels::Moraga::Moraga
+(
+    const dictionary& dict,
+    const phasePair& pair
+)
+:
+    liftModel(dict, pair)
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::liftModels::Moraga::~Moraga()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volScalarField> Foam::liftModels::Moraga::Cl() const
+{
+    volScalarField Re(pair_.Re());
+
+    volScalarField sqrSr
+    (
+        sqr(pair_.dispersed().d())
+       /pair_.continuous().nu()
+       *mag(fvc::grad(pair_.continuous().U()))
+    );
+
+    if
+    (
+        min(Re).value() < 1200.0
+     || max(Re).value() > 18800.0
+     || min(sqrSr).value() < 0.0016
+     || max(sqrSr).value() > 0.04
+    )
+    {
+        WarningIn
+        (
+            "Foam::tmp<Foam::volScalarField> "
+            "Foam::liftModels::Moraga::Cl() const"
+        )   << "Re and/or Sr are out of the range of applicability of the "
+            << "Moraga model. Clamping to range bounds"
+            << endl;
+    }
+
+    Re.min(1200.0);
+    Re.max(18800.0);
+
+    sqrSr.min(0.0016);
+    sqrSr.max(0.04);
+
+    return 0.2*exp(- Re*sqrSr/3.6e5 - 0.12)*exp(Re*sqrSr/3.0e7);
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/Moraga/Moraga.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/Moraga/Moraga.H
new file mode 100644
index 0000000000000000000000000000000000000000..d1adbd8ea02871ce23c814df6aa57c29f016656b
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/Moraga/Moraga.H
@@ -0,0 +1,109 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::liftModels::Moraga
+
+Description
+    Lift model of Moraga et al.
+
+    References:
+    \verbatim
+        "Implementation and Comparison of Correlations for interfacial Forces
+         in a Gas-Liquid System within an Euler-Euler Framework"
+        Otromke, M.,
+        PhD Thesis, April 2013
+    \endverbatim
+
+    \verbatim
+        "Lateral forces on spheres in turbulent uniform shear flow"
+        Moraga, F.J., Bonetto, F.J., Lahey, R.T.,
+        International Journal of Multiphase Flow
+        Volume 25, Issues 6-7, September 1999, pp. 1321-1372
+    \endverbatim
+
+SourceFiles
+    Moraga.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef Moraga_H
+#define Moraga_H
+
+#include "liftModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+class phasePair;
+
+namespace liftModels
+{
+
+/*---------------------------------------------------------------------------*\
+                           Class Moraga Declaration
+\*---------------------------------------------------------------------------*/
+
+class Moraga
+:
+    public liftModel
+{
+public:
+
+    //- Runtime type information
+    TypeName("Moraga");
+
+
+    // Constructors
+
+        //- Construct from a dictionary and a phase pair
+        Moraga
+        (
+            const dictionary& dict,
+            const phasePair& pair
+        );
+
+
+    //- Destructor
+    virtual ~Moraga();
+
+
+    // Member Functions
+
+        //- Lift coefficient
+        virtual tmp<volScalarField> Cl() const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace liftModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/TomiyamaLift/TomiyamaLift.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/TomiyamaLift/TomiyamaLift.C
new file mode 100644
index 0000000000000000000000000000000000000000..d4a4dfd17e534c7ee2382f669dbf506bcb8dfabc
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/TomiyamaLift/TomiyamaLift.C
@@ -0,0 +1,78 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "TomiyamaLift.H"
+#include "phasePair.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace liftModels
+{
+    defineTypeNameAndDebug(TomiyamaLift, 0);
+    addToRunTimeSelectionTable(liftModel, TomiyamaLift, dictionary);
+}
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::liftModels::TomiyamaLift::TomiyamaLift
+(
+    const dictionary& dict,
+    const phasePair& pair
+)
+:
+    liftModel(dict, pair)
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::liftModels::TomiyamaLift::~TomiyamaLift()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volScalarField> Foam::liftModels::TomiyamaLift::Cl() const
+{
+    volScalarField EoH(pair_.EoH2());
+
+    volScalarField f
+    (
+        0.0010422*pow3(EoH) - 0.0159*sqr(EoH) - 0.0204*EoH + 0.474
+    );
+
+    return
+        neg(EoH - scalar(4))*min(0.288*tanh(0.121*pair_.Re()), f)
+      + pos(EoH - scalar(4))*neg(EoH - scalar(10.7))*f
+      + pos(EoH - scalar(10.7))*(-0.288);
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/TomiyamaLift/TomiyamaLift.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/TomiyamaLift/TomiyamaLift.H
new file mode 100644
index 0000000000000000000000000000000000000000..c179558dde99c05384eb99023dcbbf7e50bc5187
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/TomiyamaLift/TomiyamaLift.H
@@ -0,0 +1,106 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::liftModels::TomiyamaLift
+
+Description
+    Lift model of Tomiyama et al.
+
+    Reference:
+    \verbatim
+        "Transverse migration of single bubbles in simple shear flows"
+        Tomiyama, A., Tamai, H., Zun, I., Hosokawa, S.,
+        Chemical Engineering Science
+        Volume 57, Issue 11, June 2002, pp. 1849-1858
+    \endverbatim
+
+    The coefficient for pow3(EoH) proposed by Tomiyama (2002) has been modified
+    to make the model continuous at EoH = 10.7 while maintaining the
+    lift coefficient proposed by Tomiyama (2002) when EoH >= 10.7.
+
+SourceFiles
+    TomiyamaLift.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef TomiyamaLift_H
+#define TomiyamaLift_H
+
+#include "liftModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+class phasePair;
+
+namespace liftModels
+{
+
+/*---------------------------------------------------------------------------*\
+                           Class TomiyamaLift Declaration
+\*---------------------------------------------------------------------------*/
+
+class TomiyamaLift
+:
+    public liftModel
+{
+public:
+
+    //- Runtime type information
+    TypeName("Tomiyama");
+
+
+    // Constructors
+
+        //- Construct from a dictionary and a phase pair
+        TomiyamaLift
+        (
+            const dictionary& dict,
+            const phasePair& pair
+        );
+
+
+    //- Destructor
+    virtual ~TomiyamaLift();
+
+
+    // Member Functions
+
+        //- Lift coefficient
+        virtual tmp<volScalarField> Cl() const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace liftModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/constantLiftCoefficient/constantLiftCoefficient.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/constantLiftCoefficient/constantLiftCoefficient.C
new file mode 100644
index 0000000000000000000000000000000000000000..efba0d332a53cb397a69ffcb1fc67034408553f4
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/constantLiftCoefficient/constantLiftCoefficient.C
@@ -0,0 +1,86 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "constantLiftCoefficient.H"
+#include "phasePair.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace liftModels
+{
+    defineTypeNameAndDebug(constantLiftCoefficient, 0);
+    addToRunTimeSelectionTable(liftModel, constantLiftCoefficient, dictionary);
+}
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::liftModels::constantLiftCoefficient::constantLiftCoefficient
+(
+    const dictionary& dict,
+    const phasePair& pair
+)
+:
+    liftModel(dict, pair),
+    Cl_("Cl", dimless, dict.lookup("Cl"))
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::liftModels::constantLiftCoefficient::~constantLiftCoefficient()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volScalarField>
+Foam::liftModels::constantLiftCoefficient::Cl() const
+{
+    const fvMesh& mesh(this->pair_.phase1().mesh());
+
+    return
+        tmp<volScalarField>
+        (
+            new volScalarField
+            (
+                IOobject
+                (
+                    "zero",
+                    mesh.time().timeName(),
+                    mesh
+                ),
+                mesh,
+                Cl_
+            )
+        );
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/constantLiftCoefficient/constantLiftCoefficient.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/constantLiftCoefficient/constantLiftCoefficient.H
new file mode 100644
index 0000000000000000000000000000000000000000..4e13218222225084a70cc467e92eb8426f0b8be5
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/constantLiftCoefficient/constantLiftCoefficient.H
@@ -0,0 +1,100 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::liftModels::constantLiftCoefficient
+
+Description
+    Constant coefficient lift model.
+
+SourceFiles
+    constantLiftCoefficient.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef constantLiftCoefficient_H
+#define constantLiftCoefficient_H
+
+#include "liftModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+class phasePair;
+
+namespace liftModels
+{
+
+/*---------------------------------------------------------------------------*\
+                           Class constantLiftCoefficient Declaration
+\*---------------------------------------------------------------------------*/
+
+class constantLiftCoefficient
+:
+    public liftModel
+{
+    // Private data
+
+        //- Constant lift coefficient
+        const dimensionedScalar Cl_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("constantCoefficient");
+
+
+    // Constructors
+
+        //- Construct from a dictionary and a phase pair
+        constantLiftCoefficient
+        (
+            const dictionary& dict,
+            const phasePair& pair
+        );
+
+
+    //- Destructor
+    virtual ~constantLiftCoefficient();
+
+
+    // Member Functions
+
+        //- Lift coefficient
+        virtual tmp<volScalarField> Cl() const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace liftModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/liftModel/liftModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/liftModel/liftModel.C
new file mode 100644
index 0000000000000000000000000000000000000000..79e52a2856a73b68857a05cd65e69f26a55190cd
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/liftModel/liftModel.C
@@ -0,0 +1,89 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "liftModel.H"
+#include "phasePair.H"
+#include "fvcCurl.H"
+#include "surfaceInterpolate.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    defineTypeNameAndDebug(liftModel, 0);
+    defineRunTimeSelectionTable(liftModel, dictionary);
+}
+
+const Foam::dimensionSet Foam::liftModel::dimF(1, -2, -2, 0, 0);
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::liftModel::liftModel
+(
+    const dictionary& dict,
+    const phasePair& pair
+)
+:
+    pair_(pair)
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::liftModel::~liftModel()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volVectorField> Foam::liftModel::Fi() const
+{
+    return
+        Cl()
+       *pair_.continuous().rho()
+       *(
+            pair_.Ur() ^ fvc::curl(pair_.continuous().U())
+        );
+}
+
+
+Foam::tmp<Foam::volVectorField> Foam::liftModel::F() const
+{
+    return pair_.dispersed()*Fi();
+}
+
+
+Foam::tmp<Foam::surfaceScalarField> Foam::liftModel::Ff() const
+{
+    const fvMesh& mesh(this->pair_.phase1().mesh());
+
+    return
+        fvc::interpolate(pair_.dispersed())
+       *(fvc::interpolate(Fi()) & mesh.Sf());
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/liftModel/liftModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/liftModel/liftModel.H
new file mode 100644
index 0000000000000000000000000000000000000000..665c95dc3892f4497d69cd71a1004afe60400483
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/liftModel/liftModel.H
@@ -0,0 +1,137 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::liftModel
+
+Description
+
+SourceFiles
+    liftModel.C
+    newLiftModel.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef liftModel_H
+#define liftModel_H
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include "volFields.H"
+#include "dictionary.H"
+#include "runTimeSelectionTables.H"
+
+namespace Foam
+{
+
+class phasePair;
+
+/*---------------------------------------------------------------------------*\
+                           Class liftModel Declaration
+\*---------------------------------------------------------------------------*/
+
+class liftModel
+{
+protected:
+
+    // Protected data
+
+        //- Phase pair
+        const phasePair& pair_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("liftModel");
+
+
+    // Declare runtime construction
+
+        declareRunTimeSelectionTable
+        (
+            autoPtr,
+            liftModel,
+            dictionary,
+            (
+                const dictionary& dict,
+                const phasePair& pair
+            ),
+            (dict, pair)
+        );
+
+
+    // Static data members
+
+        //- Force dimensions
+        static const dimensionSet dimF;
+
+
+    // Constructors
+
+        //- Construct from a dictionary and a phase pair
+        liftModel
+        (
+            const dictionary& dict,
+            const phasePair& pair
+        );
+
+
+    //- Destructor
+    virtual ~liftModel();
+
+
+    // Selectors
+
+        static autoPtr<liftModel> New
+        (
+            const dictionary& dict,
+            const phasePair& pair
+        );
+
+
+    // Member Functions
+
+        //- Return lift coefficient
+        virtual tmp<volScalarField> Cl() const = 0;
+
+        //- Return phase-intensive lift force
+        virtual tmp<volVectorField> Fi() const;
+
+        //- Return lift force
+        virtual tmp<volVectorField> F() const;
+
+        //- Return face lift force
+        virtual tmp<surfaceScalarField> Ff() const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/liftModel/newLiftModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/liftModel/newLiftModel.C
new file mode 100644
index 0000000000000000000000000000000000000000..c53ff96e3d30c46c119cb1f98a1f49bcff635b24
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/liftModel/newLiftModel.C
@@ -0,0 +1,59 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "liftModel.H"
+#include "phasePair.H"
+
+// * * * * * * * * * * * * * * * * Selector  * * * * * * * * * * * * * * * * //
+
+Foam::autoPtr<Foam::liftModel> Foam::liftModel::New
+(
+    const dictionary& dict,
+    const phasePair& pair
+)
+{
+    word liftModelType(dict.lookup("type"));
+
+    Info<< "Selecting liftModel for "
+        << pair << ": " << liftModelType << endl;
+
+    dictionaryConstructorTable::iterator cstrIter =
+        dictionaryConstructorTablePtr_->find(liftModelType);
+
+    if (cstrIter == dictionaryConstructorTablePtr_->end())
+    {
+        FatalErrorIn("liftModel::New")
+            << "Unknown liftModelType type "
+            << liftModelType << endl << endl
+            << "Valid liftModel types are : " << endl
+            << dictionaryConstructorTablePtr_->sortedToc()
+            << exit(FatalError);
+    }
+
+    return cstrIter()(dict, pair);
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/noLift/noLift.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/noLift/noLift.C
new file mode 100644
index 0000000000000000000000000000000000000000..d4e13d5c7f644bde99ea653bd899ef7055868bae
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/noLift/noLift.C
@@ -0,0 +1,134 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "noLift.H"
+#include "phasePair.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace liftModels
+{
+    defineTypeNameAndDebug(noLift, 0);
+    addToRunTimeSelectionTable(liftModel, noLift, dictionary);
+}
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::liftModels::noLift::noLift
+(
+    const dictionary& dict,
+    const phasePair& pair
+)
+:
+    liftModel(dict, pair)
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::liftModels::noLift::~noLift()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volScalarField> Foam::liftModels::noLift::Cl() const
+{
+    const fvMesh& mesh(this->pair_.phase1().mesh());
+
+    return tmp<volScalarField>
+    (
+        new volScalarField
+        (
+            IOobject
+            (
+                "Cl",
+                mesh.time().timeName(),
+                mesh,
+                IOobject::NO_READ,
+                IOobject::NO_WRITE,
+                false
+            ),
+            mesh,
+            dimensionedScalar("Cl", dimless, 0)
+        )
+    );
+}
+
+
+Foam::tmp<Foam::volVectorField> Foam::liftModels::noLift::F() const
+{
+    const fvMesh& mesh(this->pair_.phase1().mesh());
+
+    return tmp<volVectorField>
+    (
+        new volVectorField
+        (
+            IOobject
+            (
+                "noLift:F",
+                mesh.time().timeName(),
+                mesh,
+                IOobject::NO_READ,
+                IOobject::NO_WRITE,
+                false
+            ),
+            mesh,
+            dimensionedVector("zero", dimF, vector::zero)
+        )
+    );
+}
+
+
+Foam::tmp<Foam::surfaceScalarField> Foam::liftModels::noLift::Ff() const
+{
+    const fvMesh& mesh(this->pair_.phase1().mesh());
+
+    return tmp<surfaceScalarField>
+    (
+        new surfaceScalarField
+        (
+            IOobject
+            (
+                "noLift:Ff",
+                mesh.time().timeName(),
+                mesh,
+                IOobject::NO_READ,
+                IOobject::NO_WRITE,
+                false
+            ),
+            mesh,
+            dimensionedScalar("zero", dimF*dimArea, 0)
+        )
+    );
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/noLift/noLift.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/noLift/noLift.H
new file mode 100644
index 0000000000000000000000000000000000000000..db3a90cb1358eaa66d770ac249e1fa7e80ac2eac
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/noLift/noLift.H
@@ -0,0 +1,99 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::liftModels::noLift
+
+Description
+
+SourceFiles
+    noLift.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef noLift_H
+#define noLift_H
+
+#include "liftModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+class phasePair;
+
+namespace liftModels
+{
+
+/*---------------------------------------------------------------------------*\
+                           Class noLift Declaration
+\*---------------------------------------------------------------------------*/
+
+class noLift
+:
+    public liftModel
+{
+public:
+
+    //- Runtime type information
+    TypeName("none");
+
+
+    // Constructors
+
+        //- Construct from a dictionary and a phase pair
+        noLift
+        (
+            const dictionary& dict,
+            const phasePair& pair
+        );
+
+
+    //- Destructor
+    virtual ~noLift();
+
+
+    // Member Functions
+
+        //- Lift coefficient
+        virtual tmp<volScalarField> Cl() const;
+
+        //- Lift force
+        virtual tmp<volVectorField> F() const;
+
+        //- Lift force on faces
+        virtual tmp<surfaceScalarField> Ff() const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace liftModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/TomiyamaSwarm/TomiyamaSwarm.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/TomiyamaSwarm/TomiyamaSwarm.C
new file mode 100644
index 0000000000000000000000000000000000000000..38c0cf6db69ae387e1bbd25c48627da51fd7b552
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/TomiyamaSwarm/TomiyamaSwarm.C
@@ -0,0 +1,86 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "TomiyamaSwarm.H"
+#include "phasePair.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace swarmCorrections
+{
+    defineTypeNameAndDebug(TomiyamaSwarm, 0);
+    addToRunTimeSelectionTable
+    (
+        swarmCorrection,
+        TomiyamaSwarm,
+        dictionary
+    );
+}
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::swarmCorrections::TomiyamaSwarm::TomiyamaSwarm
+(
+    const dictionary& dict,
+    const phasePair& pair
+)
+:
+    swarmCorrection(dict, pair),
+    residualAlpha_
+    (
+        "residualAlpha",
+        dimless,
+        dict.lookupOrDefault<scalar>
+        (
+            "residualAlpha",
+            pair_.dispersed().residualAlpha().value()
+        )
+    ),
+    l_("l", dimless, dict.lookup("l"))
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::swarmCorrections::TomiyamaSwarm::~TomiyamaSwarm()
+{}
+
+
+// * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volScalarField>
+Foam::swarmCorrections::TomiyamaSwarm::Cs() const
+{
+    return
+        pow(max(this->pair_.continuous(), residualAlpha_), scalar(3) - 2*l_);
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/TomiyamaSwarm/TomiyamaSwarm.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/TomiyamaSwarm/TomiyamaSwarm.H
new file mode 100644
index 0000000000000000000000000000000000000000..736c7735896b7722d17cdf26198b84b9292aa090
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/TomiyamaSwarm/TomiyamaSwarm.H
@@ -0,0 +1,109 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::TomiyamaSwarm
+
+Description
+    Swarm correction of Tomiyama et al.
+
+    Reference:
+    \verbatim
+        "Drag Coefficients of Bubbles. 2nd Report. Drag Coefficient for a Swarm
+         of Bubbles and its Applicability to Transient Flow."
+        Tomiyama, A., Kataoka, I., Fukuda, T., and Sakaguchi, T.,
+        Nippon Kikai Gakkai Ronbunshu
+        Volume 61, Issue 588, 1995, pp. 2810-2817
+    \endverbatim
+
+SourceFiles
+    TomiyamaSwarm.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef TomiyamaSwarm_H
+#define TomiyamaSwarm_H
+
+#include "swarmCorrection.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace swarmCorrections
+{
+
+/*---------------------------------------------------------------------------*\
+                         Class TomiyamaSwarm Declaration
+\*---------------------------------------------------------------------------*/
+
+class TomiyamaSwarm
+:
+    public swarmCorrection
+{
+    // Private data
+
+        //- Residual phase fraction
+        const dimensionedScalar residualAlpha_;
+
+        //- Constant exponent
+        const dimensionedScalar l_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("Tomiyama");
+
+
+    // Constructors
+
+        //- Construct from a dictionary and a phase pair
+        TomiyamaSwarm
+        (
+            const dictionary& dict,
+            const phasePair& pair
+        );
+
+
+    //- Destructor
+    virtual ~TomiyamaSwarm();
+
+
+    // Member Functions
+
+        //- Swarm correction coefficient
+        virtual tmp<volScalarField> Cs() const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace swarmCorrections
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/noSwarm/noSwarm.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/noSwarm/noSwarm.C
new file mode 100644
index 0000000000000000000000000000000000000000..fc7244c6b76eca5d7f4f8169d79e8ad036b3afb4
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/noSwarm/noSwarm.C
@@ -0,0 +1,84 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "noSwarm.H"
+#include "phasePair.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace swarmCorrections
+{
+    defineTypeNameAndDebug(noSwarm, 0);
+    addToRunTimeSelectionTable(swarmCorrection, noSwarm, dictionary);
+}
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::swarmCorrections::noSwarm::noSwarm
+(
+    const dictionary& dict,
+    const phasePair& pair
+)
+:
+    swarmCorrection(dict, pair)
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::swarmCorrections::noSwarm::~noSwarm()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volScalarField> Foam::swarmCorrections::noSwarm::Cs() const
+{
+    const fvMesh& mesh(this->pair_.phase1().mesh());
+
+    return
+        tmp<volScalarField>
+        (
+            new volScalarField
+            (
+                IOobject
+                (
+                    "one",
+                    mesh.time().timeName(),
+                    mesh
+                ),
+                mesh,
+                dimensionedScalar("one", dimless, 1)
+            )
+        );
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/noSwarm/noSwarm.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/noSwarm/noSwarm.H
new file mode 100644
index 0000000000000000000000000000000000000000..9a6097361eb52e3b5166c97f29e6e6edc50f3d26
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/noSwarm/noSwarm.H
@@ -0,0 +1,93 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::swarmCorrections::noSwarm
+
+Description
+
+SourceFiles
+    noSwarm.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef noSwarm_H
+#define noSwarm_H
+
+#include "swarmCorrection.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+class phasePair;
+
+namespace swarmCorrections
+{
+
+/*---------------------------------------------------------------------------*\
+                           Class noSwarm Declaration
+\*---------------------------------------------------------------------------*/
+
+class noSwarm
+:
+    public swarmCorrection
+{
+public:
+
+    //- Runtime type information
+    TypeName("none");
+
+
+    // Constructors
+
+        //- Construct from a dictionary and a phase pair
+        noSwarm
+        (
+            const dictionary& dict,
+            const phasePair& pair
+        );
+
+
+    //- Destructor
+    virtual ~noSwarm();
+
+
+    // Member Functions
+
+        //- Swarm correction coefficient
+        tmp<volScalarField> Cs() const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace swarmCorrections
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/swarmCorrection/newSwarmCorrection.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/swarmCorrection/newSwarmCorrection.C
new file mode 100644
index 0000000000000000000000000000000000000000..651286c3ee0ea01e3cafdb772a6a4b2c1a2853c7
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/swarmCorrection/newSwarmCorrection.C
@@ -0,0 +1,60 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "swarmCorrection.H"
+#include "phasePair.H"
+
+// * * * * * * * * * * * * * * * * Selector  * * * * * * * * * * * * * * * * //
+
+Foam::autoPtr<Foam::swarmCorrection>
+Foam::swarmCorrection::New
+(
+    const dictionary& dict,
+    const phasePair& pair
+)
+{
+    word swarmCorrectionType(dict.lookup("type"));
+
+    Info<< "Selecting swarmCorrection for "
+        << pair << ": " << swarmCorrectionType << endl;
+
+    dictionaryConstructorTable::iterator cstrIter =
+        dictionaryConstructorTablePtr_->find(swarmCorrectionType);
+
+    if (cstrIter == dictionaryConstructorTablePtr_->end())
+    {
+        FatalErrorIn("swarmCorrection::New")
+            << "Unknown swarmCorrectionType type "
+            << swarmCorrectionType << endl << endl
+            << "Valid swarmCorrection types are : " << endl
+            << dictionaryConstructorTablePtr_->sortedToc()
+            << exit(FatalError);
+    }
+
+    return cstrIter()(dict, pair);
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/swarmCorrection/swarmCorrection.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/swarmCorrection/swarmCorrection.C
new file mode 100644
index 0000000000000000000000000000000000000000..5c4edc45ede1e6cf537efce044be02388c275f58
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/swarmCorrection/swarmCorrection.C
@@ -0,0 +1,56 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "swarmCorrection.H"
+#include "phasePair.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    defineTypeNameAndDebug(swarmCorrection, 0);
+    defineRunTimeSelectionTable(swarmCorrection, dictionary);
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::swarmCorrection::swarmCorrection
+(
+    const dictionary& dict,
+    const phasePair& pair
+)
+:
+    pair_(pair)
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::swarmCorrection::~swarmCorrection()
+{}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/swarmCorrection/swarmCorrection.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/swarmCorrection/swarmCorrection.H
new file mode 100644
index 0000000000000000000000000000000000000000..23531b3cc56359eb3cb29cc6c4b84dbbe01636c6
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/swarmCorrection/swarmCorrection.H
@@ -0,0 +1,121 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::swarmCorrection
+
+Description
+
+SourceFiles
+    swarmCorrection.C
+    newSwarmCorrection.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef swarmCorrection_H
+#define swarmCorrection_H
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include "volFields.H"
+#include "dictionary.H"
+#include "runTimeSelectionTables.H"
+
+namespace Foam
+{
+
+class phasePair;
+
+/*---------------------------------------------------------------------------*\
+                           Class swarmCorrection Declaration
+\*---------------------------------------------------------------------------*/
+
+class swarmCorrection
+{
+protected:
+
+    // Protected data
+
+        //- Phase pair
+        const phasePair& pair_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("swarmCorrection");
+
+
+    // Declare runtime construction
+    declareRunTimeSelectionTable
+    (
+        autoPtr,
+        swarmCorrection,
+        dictionary,
+        (
+            const dictionary& dict,
+            const phasePair& pair
+        ),
+        (dict, pair)
+    );
+
+
+    // Constructors
+
+        //- Construct from a dictionary and a phase pair
+        swarmCorrection
+        (
+            const dictionary& dict,
+            const phasePair& pair
+        );
+
+
+    //- Destructor
+    virtual ~swarmCorrection();
+
+
+    // Selectors
+
+        static autoPtr<swarmCorrection> New
+        (
+            const dictionary& dict,
+            const phasePair& pair
+        );
+
+
+    // Member Functions
+
+        //- Swarm correction coefficient
+        virtual tmp<volScalarField> Cs() const = 0;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/Burns/Burns.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/Burns/Burns.C
new file mode 100644
index 0000000000000000000000000000000000000000..c51b716340a930a01de142f51f63d5d19f666586
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/Burns/Burns.C
@@ -0,0 +1,108 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "Burns.H"
+#include "phasePair.H"
+#include "PhaseCompressibleTurbulenceModel.H"
+#include "addToRunTimeSelectionTable.H"
+
+#include "dragModel.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace turbulentDispersionModels
+{
+    defineTypeNameAndDebug(Burns, 0);
+    addToRunTimeSelectionTable
+    (
+        turbulentDispersionModel,
+        Burns,
+        dictionary
+    );
+}
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::turbulentDispersionModels::Burns::Burns
+(
+    const dictionary& dict,
+    const phasePair& pair
+)
+:
+    turbulentDispersionModel(dict, pair),
+    sigma_("sigma", dimless, dict.lookup("sigma")),
+    residualAlpha_
+    (
+        "residualAlpha",
+        dimless,
+        dict.lookupOrDefault<scalar>
+        (
+            "residualAlpha",
+            pair_.dispersed().residualAlpha().value()
+        )
+    )
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::turbulentDispersionModels::Burns::~Burns()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volScalarField>
+Foam::turbulentDispersionModels::Burns::D() const
+{
+    const fvMesh& mesh(pair_.phase1().mesh());
+    const dragModel&
+        drag
+        (
+            mesh.lookupObject<dragModel>
+            (
+                IOobject::groupName(dragModel::typeName, pair_.name())
+            )
+        );
+
+    return
+        0.75
+       *drag.CdRe()
+       *pair_.continuous().nu()
+       *pair_.continuous().turbulence().nut()
+       /(
+            sigma_
+           *sqr(pair_.dispersed().d())
+        )
+       *pair_.continuous().rho()
+       *(1.0 + pair_.dispersed()/max(pair_.continuous(), residualAlpha_));
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/Burns/Burns.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/Burns/Burns.H
new file mode 100644
index 0000000000000000000000000000000000000000..9a0491ebe9e7dec1392e9eba37fb2dafd8673ea7
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/Burns/Burns.H
@@ -0,0 +1,121 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::turbulentDispersionModels::Burns
+
+Description
+    Turbulent dispersion model of Burns et al.
+
+    References:
+    \verbatim
+        "Implementation and Comparison of Correlations for interfacial Forces
+        in a Gas-Liquid System within an Euler-Euler Framework"
+        Otromke, M.,
+        PhD Thesis
+        April 2013
+    \endverbatim
+
+    \verbatim
+        "The Favre averaged drag model for turbulent dispersion in Eulerian
+         multi-phase flows"
+        Burns, A.D., Frank, T., Hamill, I., Shi, J.M.,
+        5th international conference on multiphase flow
+        Volume 4, Paper 392, May 2004
+    \endverbatim
+
+SourceFiles
+    Burns.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef Burns_H
+#define Burns_H
+
+#include "turbulentDispersionModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+class phasePair;
+
+namespace turbulentDispersionModels
+{
+
+/*---------------------------------------------------------------------------*\
+                             Class Burns Declaration
+\*---------------------------------------------------------------------------*/
+
+class Burns
+:
+    public turbulentDispersionModel
+{
+    // Private data
+
+        //- Schmidt number
+        const dimensionedScalar sigma_;
+
+        //- Residual phase fraction
+        const dimensionedScalar residualAlpha_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("Burns");
+
+
+    // Constructors
+
+        //- Construct from a dictionary and a phase pair
+        Burns
+        (
+            const dictionary& dict,
+            const phasePair& pair
+        );
+
+
+    //- Destructor
+    virtual ~Burns();
+
+
+    // Member Functions
+
+        //- Turbulent diffusivity
+        //  multiplying the gradient of the phase-fraction
+        virtual tmp<volScalarField> D() const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace turbulentDispersionModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/Gosman/Gosman.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/Gosman/Gosman.C
new file mode 100644
index 0000000000000000000000000000000000000000..a40dbf07703b4bc11010e2c167b29039ba9e1298
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/Gosman/Gosman.C
@@ -0,0 +1,98 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "Gosman.H"
+#include "phasePair.H"
+#include "PhaseCompressibleTurbulenceModel.H"
+#include "addToRunTimeSelectionTable.H"
+
+#include "dragModel.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace turbulentDispersionModels
+{
+    defineTypeNameAndDebug(Gosman, 0);
+    addToRunTimeSelectionTable
+    (
+        turbulentDispersionModel,
+        Gosman,
+        dictionary
+    );
+}
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::turbulentDispersionModels::Gosman::Gosman
+(
+    const dictionary& dict,
+    const phasePair& pair
+)
+:
+    turbulentDispersionModel(dict, pair),
+    sigma_("sigma", dimless, dict.lookup("sigma"))
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::turbulentDispersionModels::Gosman::~Gosman()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volScalarField>
+Foam::turbulentDispersionModels::Gosman::D() const
+{
+    const fvMesh& mesh(pair_.phase1().mesh());
+    const dragModel&
+        drag
+        (
+            mesh.lookupObject<dragModel>
+            (
+                IOobject::groupName(dragModel::typeName, pair_.name())
+            )
+        );
+
+    return
+        0.75
+       *drag.CdRe()
+       *pair_.dispersed()
+       *pair_.continuous().nu()
+       *pair_.continuous().turbulence().nut()
+       /(
+            sigma_
+           *sqr(pair_.dispersed().d())
+        )
+       *pair_.continuous().rho();
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/Gosman/Gosman.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/Gosman/Gosman.H
new file mode 100644
index 0000000000000000000000000000000000000000..49c48e6b1227697b2d821cbf971a1a932dbdd7dc
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/Gosman/Gosman.H
@@ -0,0 +1,110 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::turbulentDispersionModels::Gosman
+
+Description
+    Turbulent dispersion model of Gosman et al.
+
+    Reference:
+    \verbatim
+        "Multidimensional modeling of turbulent two-phase flows in stirred
+         vessels"
+        Gosman, A.D., Lekakou, C., Politis, S., Issa, R.I., and Looney, M.K.,
+        AIChE Journal
+        Volume 38, Issue 12, 1992, pp. 1946-1956
+     \endverbatim
+
+SourceFiles
+    Gosman.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef Gosman_H
+#define Gosman_H
+
+#include "turbulentDispersionModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+class phasePair;
+
+namespace turbulentDispersionModels
+{
+
+/*---------------------------------------------------------------------------*\
+                             Class Gosman Declaration
+\*---------------------------------------------------------------------------*/
+
+class Gosman
+:
+    public turbulentDispersionModel
+{
+    // Private data
+
+        //- Schmidt number
+        const dimensionedScalar sigma_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("Gosman");
+
+
+    // Constructors
+
+        //- Construct from a dictionary and a phase pair
+        Gosman
+        (
+            const dictionary& dict,
+            const phasePair& pair
+        );
+
+
+    //- Destructor
+    virtual ~Gosman();
+
+
+    // Member Functions
+
+        //- Turbulent diffusivity
+        //  multiplying the gradient of the phase-fraction
+        virtual tmp<volScalarField> D() const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace turbulentDispersionModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/LopezDeBertodano/LopezDeBertodano.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/LopezDeBertodano/LopezDeBertodano.C
new file mode 100644
index 0000000000000000000000000000000000000000..52adccb9b44858ff623bca83c4c361a10be66d93
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/LopezDeBertodano/LopezDeBertodano.C
@@ -0,0 +1,79 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "LopezDeBertodano.H"
+#include "phasePair.H"
+#include "PhaseCompressibleTurbulenceModel.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace turbulentDispersionModels
+{
+    defineTypeNameAndDebug(LopezDeBertodano, 0);
+    addToRunTimeSelectionTable
+    (
+        turbulentDispersionModel,
+        LopezDeBertodano,
+        dictionary
+    );
+}
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::turbulentDispersionModels::LopezDeBertodano::LopezDeBertodano
+(
+    const dictionary& dict,
+    const phasePair& pair
+)
+:
+    turbulentDispersionModel(dict, pair),
+    Ctd_("Ctd", dimless, dict.lookup("Ctd"))
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::turbulentDispersionModels::LopezDeBertodano::~LopezDeBertodano()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volScalarField>
+Foam::turbulentDispersionModels::LopezDeBertodano::D() const
+{
+    return
+        Ctd_
+       *pair_.continuous().rho()
+       *pair_.continuous().turbulence().k();
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/LopezDeBertodano/LopezDeBertodano.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/LopezDeBertodano/LopezDeBertodano.H
new file mode 100644
index 0000000000000000000000000000000000000000..ce3c9996a0632b7ea30d01d7b664a4a0687fb110
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/LopezDeBertodano/LopezDeBertodano.H
@@ -0,0 +1,116 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::turbulentDispersionModels::LopezDeBertodano
+
+Description
+    Lopez de Bertodano (1992) turbulent dispersion model.
+
+    \verbatim
+        "Turbulent bubbly two-phase flow in a triangular
+         duct"
+        Lopez de Bertodano, M.
+        Ph.D. Thesis, Rensselaer Polytechnic Institution, New York, USA, 1992.
+    \endverbatim
+
+    \verbatim
+        "The Favre averaged drag model for turbulent dispersion in Eulerian
+         multi-phase flows"
+        Burns, A.D., Frank, T., Hamill, I., Shi, J.M.,
+        5th international conference on multiphase flow
+        Volume 4, Paper 392, May 2004
+    \endverbatim
+
+SourceFiles
+    LopezDeBertodano.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef LopezDeBertodano_H
+#define LopezDeBertodano_H
+
+#include "turbulentDispersionModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+class phasePair;
+
+namespace turbulentDispersionModels
+{
+
+/*---------------------------------------------------------------------------*\
+              Class LopezDeBertodano Declaration
+\*---------------------------------------------------------------------------*/
+
+class LopezDeBertodano
+:
+    public turbulentDispersionModel
+{
+    // Private data
+
+        //- Constant turbulent dispersion coefficient
+        const dimensionedScalar Ctd_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("LopezDeBertodano");
+
+
+    // Constructors
+
+        //- Construct from a dictionary and a phase pair
+        LopezDeBertodano
+        (
+            const dictionary& dict,
+            const phasePair& pair
+        );
+
+
+    //- Destructor
+    virtual ~LopezDeBertodano();
+
+
+    // Member Functions
+
+        //- Turbulent diffusivity
+        //  multiplying the gradient of the phase-fraction
+        virtual tmp<volScalarField> D() const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace turbulentDispersionModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/constantTurbulentDispersionCoefficient/constantTurbulentDispersionCoefficient.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/constantTurbulentDispersionCoefficient/constantTurbulentDispersionCoefficient.C
new file mode 100644
index 0000000000000000000000000000000000000000..67566b9f885fb09358340b1b215ac119f4d4c7c6
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/constantTurbulentDispersionCoefficient/constantTurbulentDispersionCoefficient.C
@@ -0,0 +1,83 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "constantTurbulentDispersionCoefficient.H"
+#include "phasePair.H"
+#include "PhaseCompressibleTurbulenceModel.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace turbulentDispersionModels
+{
+    defineTypeNameAndDebug(constantTurbulentDispersionCoefficient, 0);
+    addToRunTimeSelectionTable
+    (
+        turbulentDispersionModel,
+        constantTurbulentDispersionCoefficient,
+        dictionary
+    );
+}
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::turbulentDispersionModels::constantTurbulentDispersionCoefficient::
+constantTurbulentDispersionCoefficient
+(
+    const dictionary& dict,
+    const phasePair& pair
+)
+:
+    turbulentDispersionModel(dict, pair),
+    Ctd_("Ctd", dimless, dict.lookup("Ctd"))
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::turbulentDispersionModels::constantTurbulentDispersionCoefficient::
+~constantTurbulentDispersionCoefficient()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volScalarField>
+Foam::turbulentDispersionModels::constantTurbulentDispersionCoefficient::
+D() const
+{
+    return
+        Ctd_
+       *pair_.dispersed()
+       *pair_.continuous().rho()
+       *pair_.continuous().turbulence().k();
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/constantTurbulentDispersionCoefficient/constantTurbulentDispersionCoefficient.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/constantTurbulentDispersionCoefficient/constantTurbulentDispersionCoefficient.H
new file mode 100644
index 0000000000000000000000000000000000000000..eb6385670cdec39dd2e4166320198403318fd435
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/constantTurbulentDispersionCoefficient/constantTurbulentDispersionCoefficient.H
@@ -0,0 +1,101 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::turbulentDispersionModels::constantTurbulentDispersionCoefficient
+
+Description
+    Constant coefficient turbulent dispersion model.
+
+SourceFiles
+    constantTurbulentDispersionCoefficient.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef constantTurbulentDispersionCoefficient_H
+#define constantTurbulentDispersionCoefficient_H
+
+#include "turbulentDispersionModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+class phasePair;
+
+namespace turbulentDispersionModels
+{
+
+/*---------------------------------------------------------------------------*\
+              Class constantTurbulentDispersionCoefficient Declaration
+\*---------------------------------------------------------------------------*/
+
+class constantTurbulentDispersionCoefficient
+:
+    public turbulentDispersionModel
+{
+    // Private data
+
+        //- Constant turbulent dispersion coefficient
+        const dimensionedScalar Ctd_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("constantCoefficient");
+
+
+    // Constructors
+
+        //- Construct from a dictionary and a phase pair
+        constantTurbulentDispersionCoefficient
+        (
+            const dictionary& dict,
+            const phasePair& pair
+        );
+
+
+    //- Destructor
+    virtual ~constantTurbulentDispersionCoefficient();
+
+
+    // Member Functions
+
+        //- Turbulent diffusivity
+        //  multiplying the gradient of the phase-fraction
+        virtual tmp<volScalarField> D() const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace turbulentDispersionModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/noTurbulentDispersion/noTurbulentDispersion.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/noTurbulentDispersion/noTurbulentDispersion.C
new file mode 100644
index 0000000000000000000000000000000000000000..5845e3569a6e4e947247a870c6d4afb4e74115cd
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/noTurbulentDispersion/noTurbulentDispersion.C
@@ -0,0 +1,116 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "noTurbulentDispersion.H"
+#include "phasePair.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace turbulentDispersionModels
+{
+    defineTypeNameAndDebug(noTurbulentDispersion, 0);
+    addToRunTimeSelectionTable
+    (
+        turbulentDispersionModel,
+        noTurbulentDispersion,
+        dictionary
+    );
+}
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::turbulentDispersionModels::noTurbulentDispersion::noTurbulentDispersion
+(
+    const dictionary& dict,
+    const phasePair& pair
+)
+:
+    turbulentDispersionModel(dict, pair)
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::turbulentDispersionModels::noTurbulentDispersion::
+~noTurbulentDispersion()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volScalarField>
+Foam::turbulentDispersionModels::noTurbulentDispersion::D() const
+{
+    const fvMesh& mesh(this->pair_.phase1().mesh());
+
+    return tmp<volScalarField>
+    (
+        new volScalarField
+        (
+            IOobject
+            (
+                "zero",
+                mesh.time().timeName(),
+                mesh,
+                IOobject::NO_READ,
+                IOobject::NO_WRITE,
+                false
+            ),
+            mesh,
+            dimensionedScalar("zero", dimD, 0)
+        )
+    );
+}
+
+
+Foam::tmp<Foam::volVectorField>
+Foam::turbulentDispersionModels::noTurbulentDispersion::F() const
+{
+    const fvMesh& mesh(this->pair_.phase1().mesh());
+
+    return
+        tmp<volVectorField>
+        (
+            new volVectorField
+            (
+                IOobject
+                (
+                    "zero",
+                    mesh.time().timeName(),
+                    mesh
+                ),
+                mesh,
+                dimensionedVector("zero", dimF, vector::zero)
+            )
+        );
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/noTurbulentDispersion/noTurbulentDispersion.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/noTurbulentDispersion/noTurbulentDispersion.H
new file mode 100644
index 0000000000000000000000000000000000000000..8bca7fd04bbb41f10a61c82f890efcf34d1dae92
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/noTurbulentDispersion/noTurbulentDispersion.H
@@ -0,0 +1,97 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::turbulentDispersionModels::noTurbulentDispersion
+
+Description
+
+SourceFiles
+    noTurbulentDispersion.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef noTurbulentDispersion_H
+#define noTurbulentDispersion_H
+
+#include "turbulentDispersionModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+class phasePair;
+
+namespace turbulentDispersionModels
+{
+
+/*---------------------------------------------------------------------------*\
+                      Class noTurbulentDispersion Declaration
+\*---------------------------------------------------------------------------*/
+
+class noTurbulentDispersion
+:
+    public turbulentDispersionModel
+{
+public:
+
+    //- Runtime type information
+    TypeName("none");
+
+
+    // Constructors
+
+        //- Construct from a dictionary and a phase pair
+        noTurbulentDispersion
+        (
+            const dictionary& dict,
+            const phasePair& pair
+        );
+
+
+    //- Destructor
+    virtual ~noTurbulentDispersion();
+
+
+    // Member Functions
+
+        //- Turbulent diffusivity
+        //  multiplying the gradient of the phase-fraction
+        virtual tmp<volScalarField> D() const;
+
+        //- Turbulent dispersion force
+        virtual tmp<volVectorField> F() const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace turbulentDispersionModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/turbulentDispersionModel/newTurbulentDispersionModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/turbulentDispersionModel/newTurbulentDispersionModel.C
new file mode 100644
index 0000000000000000000000000000000000000000..14d560969bda804816f1f2584c1fa575be2c7ebf
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/turbulentDispersionModel/newTurbulentDispersionModel.C
@@ -0,0 +1,60 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "turbulentDispersionModel.H"
+#include "phasePair.H"
+
+// * * * * * * * * * * * * * * * * Selector  * * * * * * * * * * * * * * * * //
+
+Foam::autoPtr<Foam::turbulentDispersionModel>
+Foam::turbulentDispersionModel::New
+(
+    const dictionary& dict,
+    const phasePair& pair
+)
+{
+    word turbulentDispersionModelType(dict.lookup("type"));
+
+    Info<< "Selecting turbulentDispersionModel for "
+        << pair << ": " << turbulentDispersionModelType << endl;
+
+    dictionaryConstructorTable::iterator cstrIter =
+        dictionaryConstructorTablePtr_->find(turbulentDispersionModelType);
+
+    if (cstrIter == dictionaryConstructorTablePtr_->end())
+    {
+        FatalErrorIn("turbulentDispersionModel::New")
+            << "Unknown turbulentDispersionModelType type "
+            << turbulentDispersionModelType << endl << endl
+            << "Valid turbulentDispersionModel types are : " << endl
+            << dictionaryConstructorTablePtr_->sortedToc()
+            << exit(FatalError);
+    }
+
+    return cstrIter()(dict, pair);
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/turbulentDispersionModel/turbulentDispersionModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/turbulentDispersionModel/turbulentDispersionModel.C
new file mode 100644
index 0000000000000000000000000000000000000000..d5d805c08511d4a44431b0b4ffee006f08eeceb6
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/turbulentDispersionModel/turbulentDispersionModel.C
@@ -0,0 +1,69 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "turbulentDispersionModel.H"
+#include "phasePair.H"
+#include "fvcGrad.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    defineTypeNameAndDebug(turbulentDispersionModel, 0);
+    defineRunTimeSelectionTable(turbulentDispersionModel, dictionary);
+}
+
+const Foam::dimensionSet Foam::turbulentDispersionModel::dimD(1, -1, -2, 0, 0);
+const Foam::dimensionSet Foam::turbulentDispersionModel::dimF(1, -2, -2, 0, 0);
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::turbulentDispersionModel::turbulentDispersionModel
+(
+    const dictionary& dict,
+    const phasePair& pair
+)
+:
+    pair_(pair)
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::turbulentDispersionModel::~turbulentDispersionModel()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volVectorField>
+Foam::turbulentDispersionModel::F() const
+{
+    return D()*fvc::grad(pair_.dispersed());
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/turbulentDispersionModel/turbulentDispersionModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/turbulentDispersionModel/turbulentDispersionModel.H
new file mode 100644
index 0000000000000000000000000000000000000000..932fdb3801c3017939ff20fa2fed3d0d9e430bc0
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/turbulentDispersionModel/turbulentDispersionModel.H
@@ -0,0 +1,134 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::turbulentDispersionModel
+
+Description
+
+SourceFiles
+    turbulentDispersionModel.C
+    newTurbulentDispersionModel.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef turbulentDispersionModel_H
+#define turbulentDispersionModel_H
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include "volFields.H"
+#include "dictionary.H"
+#include "runTimeSelectionTables.H"
+
+namespace Foam
+{
+
+class phasePair;
+
+/*---------------------------------------------------------------------------*\
+                    Class turbulentDispersionModel Declaration
+\*---------------------------------------------------------------------------*/
+
+class turbulentDispersionModel
+{
+protected:
+
+    // Protected data
+
+        //- Phase pair
+        const phasePair& pair_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("turbulentDispersionModel");
+
+
+    // Declare runtime construction
+
+        declareRunTimeSelectionTable
+        (
+            autoPtr,
+            turbulentDispersionModel,
+            dictionary,
+            (
+                const dictionary& dict,
+                const phasePair& pair
+            ),
+            (dict, pair)
+        );
+
+    // Static data members
+
+        //- Diffusivity dimensions
+        static const dimensionSet dimD;
+
+        //- Force dimensions
+        static const dimensionSet dimF;
+
+
+    // Constructors
+
+        //- Construct from a dictionary and a phase pair
+        turbulentDispersionModel
+        (
+            const dictionary& dict,
+            const phasePair& pair
+        );
+
+
+    //- Destructor
+    virtual ~turbulentDispersionModel();
+
+
+    // Selectors
+
+        static autoPtr<turbulentDispersionModel> New
+        (
+            const dictionary& dict,
+            const phasePair& pair
+        );
+
+
+    // Member Functions
+
+        //- Turbulent diffusivity
+        //  multiplying the gradient of the phase-fraction
+        virtual tmp<volScalarField> D() const = 0;
+
+        //- Turbulent dispersion force
+        virtual tmp<volVectorField> F() const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/Lamb/Lamb.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/Lamb/Lamb.C
new file mode 100644
index 0000000000000000000000000000000000000000..616949c6beac33f4119d109c426782b65b850855
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/Lamb/Lamb.C
@@ -0,0 +1,79 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "Lamb.H"
+#include "phasePair.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace virtualMassModels
+{
+    defineTypeNameAndDebug(Lamb, 0);
+    addToRunTimeSelectionTable
+    (
+        virtualMassModel,
+        Lamb,
+        dictionary
+    );
+}
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::virtualMassModels::Lamb::Lamb
+(
+    const dictionary& dict,
+    const phasePair& pair,
+    const bool registerObject
+)
+:
+    virtualMassModel(dict, pair, registerObject)
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::virtualMassModels::Lamb::~Lamb()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volScalarField> Foam::virtualMassModels::Lamb::Cvm() const
+{
+    volScalarField E(min(max(pair_.E(), SMALL), 1 - SMALL));
+    volScalarField rtOmEsq(sqrt(1 - sqr(E)));
+
+    return
+        (rtOmEsq - E*acos(E))
+       /(E*acos(E) - sqr(E)*rtOmEsq);
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/Lamb/Lamb.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/Lamb/Lamb.H
new file mode 100644
index 0000000000000000000000000000000000000000..3a99c2ee2c1caac7d55efccd73cfc59d72b5cd3d
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/Lamb/Lamb.H
@@ -0,0 +1,102 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::virtualMassModels::Lamb
+
+Description
+    Virtual mass model of Lamb.
+
+    Reference:
+    \verbatim
+        "Hydrodynamics"
+        Lamb, H.,
+        Cambridge University Press, 1895
+    \endverbatim
+
+SourceFiles
+    Lamb.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef Lamb_H
+#define Lamb_H
+
+#include "virtualMassModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+class phasePair;
+
+namespace virtualMassModels
+{
+
+/*---------------------------------------------------------------------------*\
+                           Class Lamb Declaration
+\*---------------------------------------------------------------------------*/
+
+class Lamb
+:
+    public virtualMassModel
+{
+public:
+
+    //- Runtime type information
+    TypeName("Lamb");
+
+
+    // Constructors
+
+        //- Construct from a dictionary and a phase pair
+        Lamb
+        (
+            const dictionary& dict,
+            const phasePair& pair,
+            const bool registerObject
+        );
+
+
+    //- Destructor
+    virtual ~Lamb();
+
+
+    // Member Functions
+
+        //- Virtual mass coefficient
+        virtual tmp<volScalarField> Cvm() const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace virtualMassModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/constantVirtualMassCoefficient/constantVirtualMassCoefficient.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/constantVirtualMassCoefficient/constantVirtualMassCoefficient.C
new file mode 100644
index 0000000000000000000000000000000000000000..2fa5f493050d66580da2fbf6083c5fc6153d29db
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/constantVirtualMassCoefficient/constantVirtualMassCoefficient.C
@@ -0,0 +1,96 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "constantVirtualMassCoefficient.H"
+#include "phasePair.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace virtualMassModels
+{
+    defineTypeNameAndDebug(constantVirtualMassCoefficient, 0);
+    addToRunTimeSelectionTable
+    (
+        virtualMassModel,
+        constantVirtualMassCoefficient,
+        dictionary
+    );
+}
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::virtualMassModels::constantVirtualMassCoefficient::
+constantVirtualMassCoefficient
+(
+    const dictionary& dict,
+    const phasePair& pair,
+    const bool registerObject
+)
+:
+    virtualMassModel(dict, pair, registerObject),
+    Cvm_("Cvm", dimless, dict.lookup("Cvm"))
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::virtualMassModels::constantVirtualMassCoefficient::
+~constantVirtualMassCoefficient()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volScalarField>
+Foam::virtualMassModels::constantVirtualMassCoefficient::Cvm() const
+{
+    const fvMesh& mesh(this->pair_.phase1().mesh());
+
+    return tmp<volScalarField>
+    (
+        new volScalarField
+        (
+            IOobject
+            (
+                "Cvm",
+                mesh.time().timeName(),
+                mesh,
+                IOobject::NO_READ,
+                IOobject::NO_WRITE,
+                false
+            ),
+            mesh,
+            Cvm_
+        )
+    );
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/constantVirtualMassCoefficient/constantVirtualMassCoefficient.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/constantVirtualMassCoefficient/constantVirtualMassCoefficient.H
new file mode 100644
index 0000000000000000000000000000000000000000..c1f7e702ac743af13541d2198262ca38fed43dd0
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/constantVirtualMassCoefficient/constantVirtualMassCoefficient.H
@@ -0,0 +1,101 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::virtualMassModels::constantVirtualMassCoefficient
+
+Description
+    Constant coefficient virtual mass model.
+
+SourceFiles
+    constantVirtualMassCoefficient.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef constantVirtualMassCoefficient_H
+#define constantVirtualMassCoefficient_H
+
+#include "virtualMassModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+class phasePair;
+
+namespace virtualMassModels
+{
+
+/*---------------------------------------------------------------------------*\
+                 Class constantVirtualMassCoefficient Declaration
+\*---------------------------------------------------------------------------*/
+
+class constantVirtualMassCoefficient
+:
+    public virtualMassModel
+{
+    // Private data
+
+        //- Constant virtual mass coefficient
+        const dimensionedScalar Cvm_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("constantCoefficient");
+
+
+    // Constructors
+
+        //- Construct from a dictionary and a phase pair
+        constantVirtualMassCoefficient
+        (
+            const dictionary& dict,
+            const phasePair& pair,
+            const bool registerObject
+        );
+
+
+    //- Destructor
+    virtual ~constantVirtualMassCoefficient();
+
+
+    // Member Functions
+
+        //- Virtual mass coefficient
+        virtual tmp<volScalarField> Cvm() const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace virtualMassModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/noVirtualMass/noVirtualMass.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/noVirtualMass/noVirtualMass.C
new file mode 100644
index 0000000000000000000000000000000000000000..20378a0ad100d533a94e96499df9d134b95f8929
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/noVirtualMass/noVirtualMass.C
@@ -0,0 +1,93 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "noVirtualMass.H"
+#include "phasePair.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace virtualMassModels
+{
+    defineTypeNameAndDebug(noVirtualMass, 0);
+    addToRunTimeSelectionTable(virtualMassModel, noVirtualMass, dictionary);
+}
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::virtualMassModels::noVirtualMass::noVirtualMass
+(
+    const dictionary& dict,
+    const phasePair& pair,
+    const bool registerObject
+)
+:
+    virtualMassModel(dict, pair, registerObject)
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::virtualMassModels::noVirtualMass::~noVirtualMass()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volScalarField>
+Foam::virtualMassModels::noVirtualMass::Cvm() const
+{
+    const fvMesh& mesh(this->pair_.phase1().mesh());
+
+    return
+        tmp<volScalarField>
+        (
+            new volScalarField
+            (
+                IOobject
+                (
+                    "zero",
+                    mesh.time().timeName(),
+                    mesh
+                ),
+                mesh,
+                dimensionedScalar("zero", dimless, 0)
+            )
+        );
+}
+
+
+Foam::tmp<Foam::volScalarField>
+Foam::virtualMassModels::noVirtualMass::K() const
+{
+    return Cvm()*dimensionedScalar("zero", dimDensity, 0);
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/noVirtualMass/noVirtualMass.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/noVirtualMass/noVirtualMass.H
new file mode 100644
index 0000000000000000000000000000000000000000..fc611aafd1a7974fb545c2c3ef2a91e1dbfe64cf
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/noVirtualMass/noVirtualMass.H
@@ -0,0 +1,97 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::virtualMassModels::noVirtualMass
+
+Description
+
+SourceFiles
+    noVirtualMass.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef noVirtualMass_H
+#define noVirtualMass_H
+
+#include "virtualMassModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+class phasePair;
+
+namespace virtualMassModels
+{
+
+/*---------------------------------------------------------------------------*\
+                         Class noVirtualMass Declaration
+\*---------------------------------------------------------------------------*/
+
+class noVirtualMass
+:
+    public virtualMassModel
+{
+public:
+
+    //- Runtime type information
+    TypeName("none");
+
+
+    // Constructors
+
+        //- Construct from a dictionary and a phase pair
+        noVirtualMass
+        (
+            const dictionary& dict,
+            const phasePair& pair,
+            const bool registerObject
+        );
+
+
+    //- Destructor
+    virtual ~noVirtualMass();
+
+
+    // Member Functions
+
+        //- Virtual mass coefficient
+        virtual tmp<volScalarField> Cvm() const;
+
+        //- The virtual mass function K used in the momentum equation
+        virtual tmp<volScalarField> K() const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace virtualMassModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/virtualMassModel/newVirtualMassModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/virtualMassModel/newVirtualMassModel.C
new file mode 100644
index 0000000000000000000000000000000000000000..72f620a424b8735e90f987db00ede94470f854d5
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/virtualMassModel/newVirtualMassModel.C
@@ -0,0 +1,59 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "virtualMassModel.H"
+#include "phasePair.H"
+
+// * * * * * * * * * * * * * * * * Selector  * * * * * * * * * * * * * * * * //
+
+Foam::autoPtr<Foam::virtualMassModel> Foam::virtualMassModel::New
+(
+    const dictionary& dict,
+    const phasePair& pair
+)
+{
+    word virtualMassModelType(dict.lookup("type"));
+
+    Info<< "Selecting virtualMassModel for "
+        << pair << ": " << virtualMassModelType << endl;
+
+    dictionaryConstructorTable::iterator cstrIter =
+        dictionaryConstructorTablePtr_->find(virtualMassModelType);
+
+    if (cstrIter == dictionaryConstructorTablePtr_->end())
+    {
+        FatalErrorIn("virtualMassModel::New")
+            << "Unknown virtualMassModelType type "
+            << virtualMassModelType << endl << endl
+            << "Valid virtualMassModel types are : " << endl
+            << dictionaryConstructorTablePtr_->sortedToc()
+            << exit(FatalError);
+    }
+
+    return cstrIter()(dict, pair, true);
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/virtualMassModel/virtualMassModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/virtualMassModel/virtualMassModel.C
new file mode 100644
index 0000000000000000000000000000000000000000..a2ece4192d535d9b6614fc24dc2909fb96c02648
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/virtualMassModel/virtualMassModel.C
@@ -0,0 +1,99 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "virtualMassModel.H"
+#include "phasePair.H"
+#include "surfaceInterpolate.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    defineTypeNameAndDebug(virtualMassModel, 0);
+    defineRunTimeSelectionTable(virtualMassModel, dictionary);
+}
+
+const Foam::dimensionSet Foam::virtualMassModel::dimK(dimDensity);
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::virtualMassModel::virtualMassModel
+(
+    const dictionary& dict,
+    const phasePair& pair,
+    const bool registerObject
+)
+:
+    regIOobject
+    (
+        IOobject
+        (
+            IOobject::groupName(typeName, pair.name()),
+            pair.phase1().mesh().time().timeName(),
+            pair.phase1().mesh(),
+            IOobject::NO_READ,
+            IOobject::NO_WRITE,
+            registerObject
+        )
+    ),
+    pair_(pair)
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::virtualMassModel::~virtualMassModel()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volScalarField> Foam::virtualMassModel::Ki() const
+{
+    return Cvm()*pair_.continuous().rho();
+}
+
+
+Foam::tmp<Foam::volScalarField> Foam::virtualMassModel::K() const
+{
+    return pair_.dispersed()*Ki();
+}
+
+
+Foam::tmp<Foam::surfaceScalarField> Foam::virtualMassModel::Kf() const
+{
+    return
+        fvc::interpolate(pair_.dispersed())*fvc::interpolate(Ki());
+}
+
+
+bool Foam::virtualMassModel::writeData(Ostream& os) const
+{
+    return os.good();
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/virtualMassModel/virtualMassModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/virtualMassModel/virtualMassModel.H
new file mode 100644
index 0000000000000000000000000000000000000000..0af7097cf904f5c1ad8ba655275fb653e3505b9b
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/virtualMassModel/virtualMassModel.H
@@ -0,0 +1,151 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::virtualMassModel
+
+Description
+
+SourceFiles
+    virtualMassModel.C
+    newVirtualMassModel.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef virtualMassModel_H
+#define virtualMassModel_H
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include "volFields.H"
+#include "dictionary.H"
+#include "runTimeSelectionTables.H"
+
+namespace Foam
+{
+
+class phasePair;
+
+/*---------------------------------------------------------------------------*\
+                         Class virtualMassModel Declaration
+\*---------------------------------------------------------------------------*/
+
+class virtualMassModel
+:
+    public regIOobject
+{
+protected:
+
+    // Protected data
+
+        //- Phase pair
+        const phasePair& pair_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("virtualMassModel");
+
+
+    // Declare runtime construction
+
+        declareRunTimeSelectionTable
+        (
+            autoPtr,
+            virtualMassModel,
+            dictionary,
+            (
+                const dictionary& dict,
+                const phasePair& pair,
+                const bool registerObject
+            ),
+            (dict, pair, registerObject)
+        );
+
+
+    // Static data members
+
+        //- Coefficient dimensions
+        static const dimensionSet dimK;
+
+
+    // Constructors
+
+        //- Construct from a dictionary and a phase pair
+        virtualMassModel
+        (
+            const dictionary& dict,
+            const phasePair& pair,
+            const bool registerObject
+        );
+
+
+    //- Destructor
+    virtual ~virtualMassModel();
+
+
+    // Selectors
+
+        static autoPtr<virtualMassModel> New
+        (
+            const dictionary& dict,
+            const phasePair& pair
+        );
+
+
+    // Member Functions
+
+        //- Return the virtual mass coefficient
+        virtual tmp<volScalarField> Cvm() const = 0;
+
+        //- Return the phase-intensive virtual mass coefficient Ki
+        //  used in the momentum equation
+        //    ddt(alpha1*rho1*U1) + ... = ... alphad*K*(DU1_Dt - DU2_Dt)
+        //    ddt(alpha2*rho2*U2) + ... = ... alphad*K*(DU1_Dt - DU2_Dt)
+        virtual tmp<volScalarField> Ki() const;
+
+        //- Return the virtual mass coefficient K
+        //  used in the momentum equation
+        //    ddt(alpha1*rho1*U1) + ... = ... K*(DU1_Dt - DU2_Dt)
+        //    ddt(alpha2*rho2*U2) + ... = ... K*(DU1_Dt - DU2_Dt)
+        virtual tmp<volScalarField> K() const;
+
+        //- Return the virtual mass coefficient Kf
+        //  used in the face-momentum equations
+        virtual tmp<surfaceScalarField> Kf() const;
+
+        // Dummy write for regIOobject
+        bool writeData(Ostream& os) const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallDependentModel/wallDependentModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallDependentModel/wallDependentModel.C
new file mode 100644
index 0000000000000000000000000000000000000000..93b2bb3f70c91445960395c1fcfbbf3ab916da33
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallDependentModel/wallDependentModel.C
@@ -0,0 +1,57 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "wallDependentModel.H"
+#include "wallDist.H"
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::wallDependentModel::wallDependentModel(const fvMesh& mesh)
+:
+    mesh_(mesh)
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::wallDependentModel::~wallDependentModel()
+{}
+
+
+// * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * * //
+
+const Foam::volScalarField& Foam::wallDependentModel::yWall() const
+{
+    return wallDist::New(mesh_).y();
+}
+
+
+const Foam::volVectorField& Foam::wallDependentModel::nWall() const
+{
+    return wallDist::New(mesh_).n();
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallDependentModel/wallDependentModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallDependentModel/wallDependentModel.H
new file mode 100644
index 0000000000000000000000000000000000000000..8f23f6881e1791a4ee99c895b14ed92bd4b2395a
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallDependentModel/wallDependentModel.H
@@ -0,0 +1,97 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::wallDependentModel
+
+Description
+    A class which provides on-demand creation and caching of wall distance and
+    wall normal fields for use by multiple models.
+
+SourceFiles
+    wallDependentModel.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef wallDependentModel_H
+#define wallDependentModel_H
+
+#include "fvMesh.H"
+#include "volFields.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+                         Class wallDependentModel Declaration
+\*---------------------------------------------------------------------------*/
+
+class wallDependentModel
+{
+    // Private data
+
+        //- Reference to the mesh
+        const fvMesh& mesh_;
+
+
+    // Private Member Functions
+
+        //- Disallow default bitwise copy construct
+        wallDependentModel(const wallDependentModel&);
+
+        //- Disallow default bitwise assignment
+        void operator=(const wallDependentModel&);
+
+
+public:
+
+    // Constructors
+
+        //- Construct from a mesh
+        wallDependentModel(const fvMesh& mesh);
+
+
+    //- Destructor
+    virtual ~wallDependentModel();
+
+    // Member Functions
+
+        // Return the wall distance, creating and storing it if necessary
+        const volScalarField& yWall() const;
+
+        // Return the wall normal, creating and storing it if necessary
+        const volVectorField& nWall() const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/Antal/Antal.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/Antal/Antal.C
new file mode 100644
index 0000000000000000000000000000000000000000..fa9b2749f047d79a00b250bbd19906477c87e222
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/Antal/Antal.C
@@ -0,0 +1,87 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "Antal.H"
+#include "phasePair.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace wallLubricationModels
+{
+    defineTypeNameAndDebug(Antal, 0);
+    addToRunTimeSelectionTable
+    (
+        wallLubricationModel,
+        Antal,
+        dictionary
+    );
+}
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::wallLubricationModels::Antal::Antal
+(
+    const dictionary& dict,
+    const phasePair& pair
+)
+:
+    wallLubricationModel(dict, pair),
+    Cw1_("Cw1", dimless, dict.lookup("Cw1")),
+    Cw2_("Cw2", dimless, dict.lookup("Cw2"))
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::wallLubricationModels::Antal::~Antal()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volVectorField> Foam::wallLubricationModels::Antal::Fi() const
+{
+    volVectorField Ur(pair_.Ur());
+
+    const volVectorField& n(nWall());
+
+    return
+        max
+        (
+            dimensionedScalar("zero", dimless/dimLength, 0),
+            Cw1_/pair_.dispersed().d() + Cw2_/yWall()
+        )
+       *pair_.continuous().rho()
+       *magSqr(Ur - (Ur & n)*n)
+       *n;
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/Antal/Antal.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/Antal/Antal.H
new file mode 100644
index 0000000000000000000000000000000000000000..7639712417c5c54846df9c8f53eb5c59f478b662
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/Antal/Antal.H
@@ -0,0 +1,112 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::wallLubricationModels::Antal
+
+Description
+    Wall lubrication model of Antal et al.
+
+    Reference:
+    \verbatim
+        "Analysis of phase distribution in fully developed laminar bubbly
+         two-phase flow"
+        Antal, S.P., Lahey Jr, R.T., and Flaherty, J.E.
+        International Journal of Multiphase Flow
+        Volume 17, Issue 5, September 1991, pp. 635-652
+    \endverbatim
+
+SourceFiles
+    Antal.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef Antal_H
+#define Antal_H
+
+#include "wallLubricationModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+class phasePair;
+
+namespace wallLubricationModels
+{
+
+/*---------------------------------------------------------------------------*\
+                            Class Antal Declaration
+\*---------------------------------------------------------------------------*/
+
+class Antal
+:
+    public wallLubricationModel
+{
+    // Private data
+
+        //- Coefficient 1
+        const dimensionedScalar Cw1_;
+
+        //- Coefficient 2
+        const dimensionedScalar Cw2_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("Antal");
+
+
+    // Constructors
+
+        //- Construct from components
+        Antal
+        (
+            const dictionary& dict,
+            const phasePair& pair
+        );
+
+
+    //- Destructor
+    virtual ~Antal();
+
+
+    // Member Functions
+
+        //- Return phase-intensive wall lubrication force
+        tmp<volVectorField> Fi() const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace wallLubricationModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/Frank/Frank.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/Frank/Frank.C
new file mode 100644
index 0000000000000000000000000000000000000000..f1b11a32cc04fed09cc87d768526fc5cab2d4b75
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/Frank/Frank.C
@@ -0,0 +1,97 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "Frank.H"
+#include "phasePair.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace wallLubricationModels
+{
+    defineTypeNameAndDebug(Frank, 0);
+    addToRunTimeSelectionTable
+    (
+        wallLubricationModel,
+        Frank,
+        dictionary
+    );
+}
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::wallLubricationModels::Frank::Frank
+(
+    const dictionary& dict,
+    const phasePair& pair
+)
+:
+    wallLubricationModel(dict, pair),
+    Cwd_("Cwd", dimless, dict.lookup("Cwd")),
+    Cwc_("Cwc", dimless, dict.lookup("Cwc")),
+    p_(readScalar(dict.lookup("p")))
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::wallLubricationModels::Frank::~Frank()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volVectorField> Foam::wallLubricationModels::Frank::Fi() const
+{
+    volVectorField Ur(pair_.Ur());
+
+    const volVectorField& n(nWall());
+    const volScalarField& y(yWall());
+
+    volScalarField Eo(pair_.Eo());
+    volScalarField yTilde(y/(Cwc_*pair_.dispersed().d()));
+
+    return
+        (
+            pos(Eo - 1.0)*neg(Eo - 5.0)*exp(-0.933*Eo + 0.179)
+          + pos(Eo - 5.0)*neg(Eo - 33.0)*(0.00599*Eo - 0.0187)
+          + pos(Eo - 33.0)*0.179
+        )
+       *max
+        (
+            dimensionedScalar("zero", dimless/dimLength, 0.0),
+            (1.0 - yTilde)/(Cwd_*y*pow(yTilde, p_ - 1.0))
+        )
+       *pair_.continuous().rho()
+       *magSqr(Ur - (Ur & n)*n)
+       *n;
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/Frank/Frank.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/Frank/Frank.H
new file mode 100644
index 0000000000000000000000000000000000000000..51527fd80b149a321ee341409876b0d0f1c48f67
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/Frank/Frank.H
@@ -0,0 +1,122 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::wallLubricationModels::Frank
+
+Description
+    Wall lubrication model of Frank.
+
+    References:
+    \verbatim
+        "Implementation and Comparison of Correlations for interfacial Forces
+         in a Gas-Liquid System within an Euler-Euler Framework"
+        Otromke, M.
+        PhD Thesis
+        April 2013
+    \endverbatim
+
+    \verbatim
+        "Advances in Computational Fluid Dynamics (CFD) of 3-dimensional Gas-
+         Liquid Multiphase Flows"
+        Frank, T.
+        NAFEMS Seminar: Simulation of Complex Flows (CFD), April 2005, pp. 1-18
+    \endverbatim
+
+SourceFiles
+    Frank.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef Frank_H
+#define Frank_H
+
+#include "wallLubricationModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+class phasePair;
+
+namespace wallLubricationModels
+{
+
+/*---------------------------------------------------------------------------*\
+                            Class Frank Declaration
+\*---------------------------------------------------------------------------*/
+
+class Frank
+:
+    public wallLubricationModel
+{
+    // Private data
+
+        //- Coefficient d
+        const dimensionedScalar Cwd_;
+
+        //- Coefficient c
+        const dimensionedScalar Cwc_;
+
+        //- Power p
+        const scalar p_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("Frank");
+
+
+    // Constructors
+
+        //- Construct from components
+        Frank
+        (
+            const dictionary& dict,
+            const phasePair& pair
+        );
+
+
+    //- Destructor
+    virtual ~Frank();
+
+
+    // Member Functions
+
+        //- Return phase-intensive wall lubrication force
+        tmp<volVectorField> Fi() const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace wallLubricationModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/TomiyamaWallLubrication/TomiyamaWallLubrication.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/TomiyamaWallLubrication/TomiyamaWallLubrication.C
new file mode 100644
index 0000000000000000000000000000000000000000..c3db3597af63310b661b599004163f8f2a8753fe
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/TomiyamaWallLubrication/TomiyamaWallLubrication.C
@@ -0,0 +1,96 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "TomiyamaWallLubrication.H"
+#include "phasePair.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace wallLubricationModels
+{
+    defineTypeNameAndDebug(TomiyamaWallLubrication, 0);
+    addToRunTimeSelectionTable
+    (
+        wallLubricationModel,
+        TomiyamaWallLubrication,
+        dictionary
+    );
+}
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::wallLubricationModels::TomiyamaWallLubrication::TomiyamaWallLubrication
+(
+    const dictionary& dict,
+    const phasePair& pair
+)
+:
+    wallLubricationModel(dict, pair),
+    D_("Cwd", dimLength, dict.lookup("D"))
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::wallLubricationModels::TomiyamaWallLubrication::~TomiyamaWallLubrication()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volVectorField>
+Foam::wallLubricationModels::TomiyamaWallLubrication::Fi() const
+{
+    volVectorField Ur(pair_.Ur());
+
+    const volVectorField& n(nWall());
+    const volScalarField& y(yWall());
+
+    volScalarField Eo(pair_.Eo());
+
+    return
+        (
+            pos(Eo - 1.0)*neg(Eo - 5.0)*exp(-0.933*Eo + 0.179)
+          + pos(Eo - 5.0)*neg(Eo - 33.0)*(0.00599*Eo - 0.0187)
+          + pos(Eo - 33.0)*0.179
+        )
+       *0.5
+       *pair_.dispersed().d()
+       *(
+            1/sqr(y)
+          - 1/sqr(D_ - y)
+        )
+       *pair_.continuous().rho()
+       *magSqr(Ur - (Ur & n)*n)
+       *n;
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/TomiyamaWallLubrication/TomiyamaWallLubrication.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/TomiyamaWallLubrication/TomiyamaWallLubrication.H
new file mode 100644
index 0000000000000000000000000000000000000000..9d37bbbd176f3badbb1c25708ce49a3c7b7410d2
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/TomiyamaWallLubrication/TomiyamaWallLubrication.H
@@ -0,0 +1,115 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::wallLubricationModels::TomiyamaWallLubrication
+
+Description
+    Wall lubrication model of Tomiyama.
+
+    References:
+    \verbatim
+        "Implementation and Comparison of Correlations for interfacial Forces
+         in a Gas-Liquid System within an Euler-Euler Framework"
+        Otromke, M.
+        PhD Thesis, April 2013
+    \endverbatim
+
+    \verbatim
+        "Struggle with Computational Bubble Dynamics"
+        Tomiyama, A.,
+        Multiphase Science and Technology
+        Volume 10, Issue 4, 1998, pp. 369-405
+    \endverbatim
+
+SourceFiles
+    TomiyamaWallLubrication.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef TomiyamaWallLubrication_H
+#define TomiyamaWallLubrication_H
+
+#include "wallLubricationModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+class phasePair;
+
+namespace wallLubricationModels
+{
+
+/*---------------------------------------------------------------------------*\
+                            Class TomiyamaWallLubrication Declaration
+\*---------------------------------------------------------------------------*/
+
+class TomiyamaWallLubrication
+:
+    public wallLubricationModel
+{
+    // Private data
+
+        //- Characteristic channel dimension
+        const dimensionedScalar D_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("Tomiyama");
+
+
+    // Constructors
+
+        //- Construct from components
+        TomiyamaWallLubrication
+        (
+            const dictionary& dict,
+            const phasePair& pair
+        );
+
+
+    //- Destructor
+    virtual ~TomiyamaWallLubrication();
+
+
+    // Member Functions
+
+        //- Return phase-intensive wall lubrication force
+        tmp<volVectorField> Fi() const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace wallLubricationModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/noWallLubrication/noWallLubrication.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/noWallLubrication/noWallLubrication.C
new file mode 100644
index 0000000000000000000000000000000000000000..8de7e302608272b3db1b4faa769d54125acfb188
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/noWallLubrication/noWallLubrication.C
@@ -0,0 +1,117 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "noWallLubrication.H"
+#include "phasePair.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace wallLubricationModels
+{
+    defineTypeNameAndDebug(noWallLubrication, 0);
+    addToRunTimeSelectionTable
+    (
+        wallLubricationModel,
+        noWallLubrication,
+        dictionary
+    );
+}
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::wallLubricationModels::noWallLubrication::noWallLubrication
+(
+    const dictionary& dict,
+    const phasePair& pair
+)
+:
+    wallLubricationModel(dict, pair)
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::wallLubricationModels::noWallLubrication::~noWallLubrication()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volVectorField>
+Foam::wallLubricationModels::noWallLubrication::Fi() const
+{
+    const fvMesh& mesh(this->pair_.phase1().mesh());
+
+    return tmp<volVectorField>
+    (
+        new volVectorField
+        (
+            IOobject
+            (
+                "noWallLubrication:Fi",
+                mesh.time().timeName(),
+                mesh,
+                IOobject::NO_READ,
+                IOobject::NO_WRITE,
+                false
+            ),
+            mesh,
+            dimensionedVector("zero", dimF, vector::zero)
+        )
+    );
+}
+
+
+Foam::tmp<Foam::volVectorField>
+Foam::wallLubricationModels::noWallLubrication::F() const
+{
+    const fvMesh& mesh(this->pair_.phase1().mesh());
+
+    return tmp<volVectorField>
+    (
+        new volVectorField
+        (
+            IOobject
+            (
+                "noWallLubrication:F",
+                mesh.time().timeName(),
+                mesh,
+                IOobject::NO_READ,
+                IOobject::NO_WRITE,
+                false
+            ),
+            mesh,
+            dimensionedVector("zero", dimF, vector::zero)
+        )
+    );
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/noWallLubrication/noWallLubrication.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/noWallLubrication/noWallLubrication.H
new file mode 100644
index 0000000000000000000000000000000000000000..81a2c0327e3ff664cac6d5f470a498f81605967c
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/noWallLubrication/noWallLubrication.H
@@ -0,0 +1,96 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::wallLubricationModels::noWallLubrication
+
+Description
+
+SourceFiles
+    noWallLubrication.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef noWallLubrication_H
+#define noWallLubrication_H
+
+#include "wallLubricationModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+class phasePair;
+
+namespace wallLubricationModels
+{
+
+/*---------------------------------------------------------------------------*\
+                           Class noWallLubrication Declaration
+\*---------------------------------------------------------------------------*/
+
+class noWallLubrication
+:
+    public wallLubricationModel
+{
+public:
+
+    //- Runtime type information
+    TypeName("none");
+
+
+    // Constructors
+
+        //- Construct from components
+        noWallLubrication
+        (
+            const dictionary& dict,
+            const phasePair& pair
+        );
+
+
+    //- Destructor
+    virtual ~noWallLubrication();
+
+
+    // Member Functions
+
+        //- Return phase-intensive wall lubrication force
+        tmp<volVectorField> Fi() const;
+
+        //- Wall lubrication force
+        tmp<volVectorField> F() const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace wallLubricationModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/wallLubricationModel/newWallLubricationModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/wallLubricationModel/newWallLubricationModel.C
new file mode 100644
index 0000000000000000000000000000000000000000..9f7d905c1970b6fa5a54281be4635eb3e7811d41
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/wallLubricationModel/newWallLubricationModel.C
@@ -0,0 +1,59 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "wallLubricationModel.H"
+#include "phasePair.H"
+
+// * * * * * * * * * * * * * * * * Selector  * * * * * * * * * * * * * * * * //
+
+Foam::autoPtr<Foam::wallLubricationModel> Foam::wallLubricationModel::New
+(
+    const dictionary& dict,
+    const phasePair& pair
+)
+{
+    word wallLubricationModelType(dict.lookup("type"));
+
+    Info<< "Selecting wallLubricationModel for "
+        << pair << ": " << wallLubricationModelType << endl;
+
+    dictionaryConstructorTable::iterator cstrIter =
+        dictionaryConstructorTablePtr_->find(wallLubricationModelType);
+
+    if (cstrIter == dictionaryConstructorTablePtr_->end())
+    {
+        FatalErrorIn("wallLubricationModel::New")
+            << "Unknown wallLubricationModelType type "
+            << wallLubricationModelType << endl << endl
+            << "Valid wallLubricationModel types are : " << endl
+            << dictionaryConstructorTablePtr_->sortedToc()
+            << exit(FatalError);
+    }
+
+    return cstrIter()(dict, pair);
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/wallLubricationModel/wallLubricationModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/wallLubricationModel/wallLubricationModel.C
new file mode 100644
index 0000000000000000000000000000000000000000..2f3cb1aaa032019aba8a4278fe2e973e7f7b8c85
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/wallLubricationModel/wallLubricationModel.C
@@ -0,0 +1,78 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "wallLubricationModel.H"
+#include "phasePair.H"
+#include "surfaceInterpolate.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    defineTypeNameAndDebug(wallLubricationModel, 0);
+    defineRunTimeSelectionTable(wallLubricationModel, dictionary);
+}
+
+const Foam::dimensionSet Foam::wallLubricationModel::dimF(1, -2, -2, 0, 0);
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::wallLubricationModel::wallLubricationModel
+(
+    const dictionary& dict,
+    const phasePair& pair
+)
+:
+    wallDependentModel(pair.phase1().mesh()),
+    pair_(pair)
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::wallLubricationModel::~wallLubricationModel()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volVectorField> Foam::wallLubricationModel::F() const
+{
+    return pair_.dispersed()*Fi();
+}
+
+
+Foam::tmp<Foam::surfaceScalarField> Foam::wallLubricationModel::Ff() const
+{
+    const fvMesh& mesh(this->pair_.phase1().mesh());
+
+    return
+        fvc::interpolate(pair_.dispersed())
+       *(fvc::interpolate(Fi()) & mesh.Sf());
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/wallLubricationModel/wallLubricationModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/wallLubricationModel/wallLubricationModel.H
new file mode 100644
index 0000000000000000000000000000000000000000..b55415aeb62e6f930ee95d31ce87b7f75d85427a
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/wallLubricationModel/wallLubricationModel.H
@@ -0,0 +1,137 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::wallLubricationModel
+
+Description
+
+SourceFiles
+    wallLubricationModel.C
+    newWallLubricationModel.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef wallLubricationModel_H
+#define wallLubricationModel_H
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include "wallDependentModel.H"
+#include "volFields.H"
+#include "dictionary.H"
+#include "runTimeSelectionTables.H"
+
+namespace Foam
+{
+
+class phasePair;
+
+/*---------------------------------------------------------------------------*\
+                      Class wallLubricationModel Declaration
+\*---------------------------------------------------------------------------*/
+
+class wallLubricationModel
+:
+    public wallDependentModel
+{
+protected:
+
+    // Protected data
+
+        //- Phase pair
+        const phasePair& pair_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("wallLubricationModel");
+
+
+    // Declare runtime construction
+
+        declareRunTimeSelectionTable
+        (
+            autoPtr,
+            wallLubricationModel,
+            dictionary,
+            (
+                const dictionary& dict,
+                const phasePair& pair
+            ),
+            (dict, pair)
+        );
+
+
+    // Static data members
+
+        //- Coefficient dimensions
+        static const dimensionSet dimF;
+
+
+    // Constructors
+
+        //- Construct from components
+        wallLubricationModel
+        (
+            const dictionary& dict,
+            const phasePair& pair
+        );
+
+
+    //- Destructor
+    virtual ~wallLubricationModel();
+
+
+    // Selectors
+
+        static autoPtr<wallLubricationModel> New
+        (
+            const dictionary& dict,
+            const phasePair& pair
+        );
+
+
+    // Member Functions
+
+        //- Return phase-intensive wall lubrication force
+        virtual tmp<volVectorField> Fi() const = 0;
+
+        //- Return wall lubrication force
+        virtual tmp<volVectorField> F() const;
+
+        //- Return face wall lubrication force
+        virtual tmp<surfaceScalarField> Ff() const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/pU/UEqns.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/pU/UEqns.H
new file mode 100644
index 0000000000000000000000000000000000000000..424182f859cce5628cc9875ac27f3f9a473f1b28
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/pU/UEqns.H
@@ -0,0 +1,63 @@
+Info<< "Constructing momentum equations" << endl;
+
+MRF.correctBoundaryVelocity(U1);
+MRF.correctBoundaryVelocity(U2);
+
+fvVectorMatrix U1Eqn(U1, rho1.dimensions()*U1.dimensions()*dimVol/dimTime);
+fvVectorMatrix U2Eqn(U2, rho2.dimensions()*U2.dimensions()*dimVol/dimTime);
+
+volScalarField Kd(fluid.Kd());
+
+{
+    volScalarField Vm(fluid.Vm());
+
+    {
+        U1Eqn =
+        (
+            fvm::ddt(alpha1, rho1, U1) + fvm::div(alphaRhoPhi1, U1)
+          - fvm::Sp(phase1.continuityError(), U1)
+          + MRF.DDt(alpha1*rho1, U1)
+          + phase1.turbulence().divDevRhoReff(U1)
+         ==
+          - Vm
+           *(
+                fvm::ddt(U1)
+              + fvm::div(phi1, U1)
+              - fvm::Sp(fvc::div(phi1), U1)
+              - phase2.DUDt()
+            )
+          - MRF.DDt(Vm, U1 - U2)
+          + fvOptions(alpha1, rho1, U1)
+        );
+        U1Eqn.relax();
+        U1Eqn += fvm::Sp(Kd, U1);
+        fvOptions.constrain(U1Eqn);
+        U1.correctBoundaryConditions();
+        fvOptions.correct(U1);
+    }
+
+    {
+        U2Eqn =
+        (
+            fvm::ddt(alpha2, rho2, U2) + fvm::div(alphaRhoPhi2, U2)
+          - fvm::Sp(phase2.continuityError(), U2)
+          + MRF.DDt(alpha2*rho2, U2)
+          + phase2.turbulence().divDevRhoReff(U2)
+         ==
+          - Vm
+           *(
+                fvm::ddt(U2)
+              + fvm::div(phi2, U2)
+              - fvm::Sp(fvc::div(phi2), U2)
+              - phase1.DUDt()
+            )
+          - MRF.DDt(Vm, U2 - U1)
+          + fvOptions(alpha2, rho2, U2)
+        );
+        U2Eqn.relax();
+        U2Eqn += fvm::Sp(Kd, U2);
+        fvOptions.constrain(U2Eqn);
+        U2.correctBoundaryConditions();
+        fvOptions.correct(U2);
+    }
+}
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/pU/pEqn.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/pU/pEqn.H
new file mode 100644
index 0000000000000000000000000000000000000000..30ce7b221f3084ce391135271c292dd750056bdd
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/pU/pEqn.H
@@ -0,0 +1,398 @@
+surfaceScalarField alphaf1("alphaf1", fvc::interpolate(alpha1));
+surfaceScalarField alphaf2("alphaf2", scalar(1) - alphaf1);
+
+volScalarField rAU1
+(
+    IOobject::groupName("rAU", phase1.name()),
+    1.0
+   /(
+        U1Eqn.A()
+      + max(phase1.residualAlpha() - alpha1, scalar(0))
+       *rho1/runTime.deltaT()
+    )
+);
+volScalarField rAU2
+(
+    IOobject::groupName("rAU", phase2.name()),
+    1.0
+   /(
+        U2Eqn.A()
+      + max(phase2.residualAlpha() - alpha2, scalar(0))
+       *rho2/runTime.deltaT()
+    )
+);
+
+surfaceScalarField alpharAUf1
+(
+    fvc::interpolate(max(alpha1, phase1.residualAlpha())*rAU1)
+);
+surfaceScalarField alpharAUf2
+(
+    fvc::interpolate(max(alpha2, phase2.residualAlpha())*rAU2)
+);
+
+// Turbulent diffusion, particle-pressure, lift and wall-lubrication fluxes
+tmp<surfaceScalarField> phiF1;
+tmp<surfaceScalarField> phiF2;
+{
+    // Turbulent-dispersion diffusivity
+    volScalarField D(fluid.D());
+
+    // Phase-1 turbulent dispersion and particle-pressure flux
+    surfaceScalarField Df1
+    (
+        fvc::interpolate
+        (
+            rAU1*(D + phase1.turbulence().pPrime())
+        )
+    );
+
+    // Phase-2 turbulent dispersion and particle-pressure flux
+    surfaceScalarField Df2
+    (
+        fvc::interpolate
+        (
+            rAU2*(D + phase2.turbulence().pPrime())
+        )
+    );
+
+    // Cache the net diffusivity for implicit diffusion treatment in the
+    // phase-fraction equation
+    if (implicitPhasePressure)
+    {
+        fluid.pPrimeByA() = Df1 + Df2;
+    }
+
+    // Lift and wall-lubrication forces
+    volVectorField F(fluid.F());
+
+    // Phase-fraction face-gradient
+    surfaceScalarField snGradAlpha1(fvc::snGrad(alpha1)*mesh.magSf());
+
+    // Phase-1 dispersion, lift and wall-lubrication flux
+    phiF1 =
+    (
+        Df1*snGradAlpha1
+      + (fvc::interpolate(rAU1*F) & mesh.Sf())
+    );
+
+    // Phase-1 dispersion, lift and wall-lubrication flux
+    phiF2 =
+    (
+      - Df2*snGradAlpha1
+      - (fvc::interpolate(rAU2*F) & mesh.Sf())
+    );
+}
+
+
+// --- Pressure corrector loop
+while (pimple.correct())
+{
+    // Update continuity errors due to temperature changes
+    #include "correctContErrs.H"
+
+    // Correct fixed-flux BCs to be consistent with the velocity BCs
+    MRF.correctBoundaryFlux(U1, phi1);
+    MRF.correctBoundaryFlux(U2, phi2);
+
+    volVectorField HbyA1
+    (
+        IOobject::groupName("HbyA", phase1.name()),
+        U1
+    );
+    HbyA1 =
+        rAU1
+       *(
+            U1Eqn.H()
+          + max(phase1.residualAlpha() - alpha1, scalar(0))
+           *rho1*U1.oldTime()/runTime.deltaT()
+        );
+
+    volVectorField HbyA2
+    (
+        IOobject::groupName("HbyA", phase2.name()),
+        U2
+    );
+    HbyA2 =
+        rAU2
+       *(
+            U2Eqn.H()
+         +  max(phase2.residualAlpha() - alpha2, scalar(0))
+           *rho2*U2.oldTime()/runTime.deltaT()
+        );
+
+    // Mean density for buoyancy force and p_rgh -> p
+    volScalarField rho("rho", fluid.rho());
+
+    surfaceScalarField ghSnGradRho
+    (
+        "ghSnGradRho",
+        ghf*fvc::snGrad(rho)*mesh.magSf()
+    );
+
+    surfaceScalarField phig1
+    (
+        alpharAUf1
+       *(
+           ghSnGradRho
+         - alphaf2*fvc::interpolate(rho1 - rho2)*(g & mesh.Sf())
+        )
+    );
+
+    surfaceScalarField phig2
+    (
+        alpharAUf2
+       *(
+           ghSnGradRho
+         - alphaf1*fvc::interpolate(rho2 - rho1)*(g & mesh.Sf())
+        )
+    );
+
+
+    // ddtPhiCorr filter -- only apply in pure(ish) phases
+    surfaceScalarField alphaf1Bar(fvc::interpolate(fvc::average(alphaf1)));
+    surfaceScalarField phiCorrCoeff1(pos(alphaf1Bar - 0.99));
+    surfaceScalarField phiCorrCoeff2(pos(0.01 - alphaf1Bar));
+
+    forAll(mesh.boundary(), patchi)
+    {
+        // Set ddtPhiCorr to 0 on non-coupled boundaries
+        if
+        (
+            !mesh.boundary()[patchi].coupled()
+         || isA<cyclicAMIFvPatch>(mesh.boundary()[patchi])
+        )
+        {
+            phiCorrCoeff1.boundaryField()[patchi] = 0;
+            phiCorrCoeff2.boundaryField()[patchi] = 0;
+        }
+    }
+
+    // Phase-1 predicted flux
+    surfaceScalarField phiHbyA1
+    (
+        IOobject::groupName("phiHbyA", phase1.name()),
+        (fvc::interpolate(HbyA1) & mesh.Sf())
+      + phiCorrCoeff1*fvc::interpolate(alpha1.oldTime()*rho1.oldTime()*rAU1)
+       *(
+            MRF.absolute(phi1.oldTime())
+          - (fvc::interpolate(U1.oldTime()) & mesh.Sf())
+        )/runTime.deltaT()
+      - phiF1()
+      - phig1
+    );
+
+    // Phase-2 predicted flux
+    surfaceScalarField phiHbyA2
+    (
+        IOobject::groupName("phiHbyA", phase2.name()),
+        (fvc::interpolate(HbyA2) & mesh.Sf())
+      + phiCorrCoeff2*fvc::interpolate(alpha2.oldTime()*rho2.oldTime()*rAU2)
+       *(
+            MRF.absolute(phi2.oldTime())
+          - (fvc::interpolate(U2.oldTime()) & mesh.Sf())
+        )/runTime.deltaT()
+      - phiF2()
+      - phig2
+    );
+
+    // Face-drag coefficients
+    surfaceScalarField rAUKd1(fvc::interpolate(rAU1*Kd));
+    surfaceScalarField rAUKd2(fvc::interpolate(rAU2*Kd));
+
+    // Construct the mean predicted flux
+    // including explicit drag contributions based on absolute fluxes
+    surfaceScalarField phiHbyA
+    (
+        "phiHbyA",
+        alphaf1*(phiHbyA1 + rAUKd1*MRF.absolute(phi2))
+      + alphaf2*(phiHbyA2 + rAUKd2*MRF.absolute(phi1))
+    );
+    MRF.makeRelative(phiHbyA);
+
+    // Construct pressure "diffusivity"
+    surfaceScalarField rAUf
+    (
+        "rAUf",
+        mag(alphaf1*alpharAUf1 + alphaf2*alpharAUf2)
+    );
+
+    // Update the fixedFluxPressure BCs to ensure flux consistency
+    setSnGrad<fixedFluxPressureFvPatchScalarField>
+    (
+        p_rgh.boundaryField(),
+        (
+            phiHbyA.boundaryField()
+          - (
+                alphaf1.boundaryField()*phi1.boundaryField()
+              + alphaf2.boundaryField()*phi2.boundaryField()
+            )
+        )/(mesh.magSf().boundaryField()*rAUf.boundaryField())
+    );
+
+    tmp<fvScalarMatrix> pEqnComp1;
+    tmp<fvScalarMatrix> pEqnComp2;
+
+    // Construct the compressibility parts of the pressure equation
+    if (pimple.transonic())
+    {
+        surfaceScalarField phid1
+        (
+            IOobject::groupName("phid", phase1.name()),
+            fvc::interpolate(psi1)*phi1
+        );
+        surfaceScalarField phid2
+        (
+            IOobject::groupName("phid", phase2.name()),
+            fvc::interpolate(psi2)*phi2
+        );
+
+        pEqnComp1 =
+            (
+                phase1.continuityError() - fluid.dmdt()
+              - fvc::Sp(fvc::ddt(alpha1) + fvc::div(alphaPhi1), rho1)
+            )/rho1
+          + (alpha1/rho1)*correction
+            (
+                psi1*fvm::ddt(p_rgh)
+              + fvm::div(phid1, p_rgh) - fvm::Sp(fvc::div(phid1), p_rgh)
+            );
+        deleteDemandDrivenData(pEqnComp1().faceFluxCorrectionPtr());
+        pEqnComp1().relax();
+
+        pEqnComp2 =
+            (
+                phase2.continuityError() + fluid.dmdt()
+              - fvc::Sp(fvc::ddt(alpha2) + fvc::div(alphaPhi2), rho2)
+            )/rho2
+          + (alpha2/rho2)*correction
+            (
+                psi2*fvm::ddt(p_rgh)
+              + fvm::div(phid2, p_rgh) - fvm::Sp(fvc::div(phid2), p_rgh)
+            );
+        deleteDemandDrivenData(pEqnComp2().faceFluxCorrectionPtr());
+        pEqnComp2().relax();
+    }
+    else
+    {
+        pEqnComp1 =
+            (
+                phase1.continuityError()
+              - fvc::Sp(fvc::ddt(alpha1) + fvc::div(alphaPhi1), rho1)
+            )/rho1
+          + (alpha1*psi1/rho1)*correction(fvm::ddt(p_rgh));
+
+        pEqnComp2 =
+            (
+                phase2.continuityError()
+              - fvc::Sp(fvc::ddt(alpha2) + fvc::div(alphaPhi2), rho2)
+            )/rho2
+          + (alpha2*psi2/rho2)*correction(fvm::ddt(p_rgh));
+    }
+
+    // Cache p prior to solve for density update
+    volScalarField p_rgh_0(p_rgh);
+
+    // Iterate over the pressure equation to correct for non-orthogonality
+    while (pimple.correctNonOrthogonal())
+    {
+        // Construct the transport part of the pressure equation
+        fvScalarMatrix pEqnIncomp
+        (
+            fvc::div(phiHbyA)
+          - fvm::laplacian(rAUf, p_rgh)
+        );
+
+        solve
+        (
+            pEqnComp1() + pEqnComp2() + pEqnIncomp,
+            mesh.solver(p_rgh.select(pimple.finalInnerIter()))
+        );
+
+        // Correct fluxes and velocities on last non-orthogonal iteration
+        if (pimple.finalNonOrthogonalIter())
+        {
+            phi = phiHbyA + pEqnIncomp.flux();
+
+            surfaceScalarField mSfGradp("mSfGradp", pEqnIncomp.flux()/rAUf);
+
+            // Partial-elimination phase-flux corrector
+            {
+                surfaceScalarField phi1s
+                (
+                    phiHbyA1 + alpharAUf1*mSfGradp
+                );
+
+                surfaceScalarField phi2s
+                (
+                    phiHbyA2 + alpharAUf2*mSfGradp
+                );
+
+                surfaceScalarField phir
+                (
+                    ((phi1s + rAUKd1*phi2s) - (phi2s + rAUKd2*phi1s))
+                   /(1 - rAUKd1*rAUKd2)
+                );
+
+                phi1 = phi + alphaf2*phir;
+                phi2 = phi - alphaf1*phir;
+            }
+
+            // Compressibility correction for phase-fraction equations
+            fluid.dgdt() =
+            (
+                alpha1*(pEqnComp2 & p_rgh)
+              - alpha2*(pEqnComp1 & p_rgh)
+            );
+
+            // Optionally relax pressure for velocity correction
+            p_rgh.relax();
+
+            mSfGradp = pEqnIncomp.flux()/rAUf;
+
+            // Partial-elimination phase-velocity corrector
+            {
+                volVectorField Us1
+                (
+                    HbyA1
+                  + fvc::reconstruct(alpharAUf1*mSfGradp - phiF1() - phig1)
+                );
+
+                volVectorField Us2
+                (
+                    HbyA2
+                  + fvc::reconstruct(alpharAUf2*mSfGradp - phiF2() - phig2)
+                );
+
+                volScalarField D1(rAU1*Kd);
+                volScalarField D2(rAU2*Kd);
+
+                volVectorField U(alpha1*(Us1 + D1*U2) + alpha2*(Us2 + D2*U1));
+                volVectorField Ur(((1 - D2)*Us1 - (1 - D1)*Us2)/(1 - D1*D2));
+
+                U1 = U + alpha2*Ur;
+                U1.correctBoundaryConditions();
+                fvOptions.correct(U1);
+
+                U2 = U - alpha1*Ur;
+                U2.correctBoundaryConditions();
+                fvOptions.correct(U2);
+            }
+        }
+    }
+
+    // Update and limit the static pressure
+    p = max(p_rgh + rho*gh, pMin);
+
+    // Limit p_rgh
+    p_rgh = p - rho*gh;
+
+    // Update densities from change in p_rgh
+    rho1 += psi1*(p_rgh - p_rgh_0);
+    rho2 += psi2*(p_rgh - p_rgh_0);
+
+    // Correct p_rgh for consistency with p and the updated densities
+    rho = fluid.rho();
+    p_rgh = p - rho*gh;
+    p_rgh.correctBoundaryConditions();
+}
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/pUf/DDtU.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/pUf/DDtU.H
new file mode 100644
index 0000000000000000000000000000000000000000..63b61cd61a73ad944fafeeced01737665c90b1ed
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/pUf/DDtU.H
@@ -0,0 +1,9 @@
+    ddtPhi1 =
+    (
+        (phi1 - phi1.oldTime())/runTime.deltaT()
+    );
+
+    ddtPhi2 =
+    (
+        (phi2 - phi2.oldTime())/runTime.deltaT()
+    );
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/pUf/UEqns.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/pUf/UEqns.H
new file mode 100644
index 0000000000000000000000000000000000000000..0303eea106f21bb45481c552c95ed45aea392291
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/pUf/UEqns.H
@@ -0,0 +1,51 @@
+Info<< "Constructing face momentum equations" << endl;
+
+MRF.correctBoundaryVelocity(U1);
+MRF.correctBoundaryVelocity(U2);
+
+fvVectorMatrix U1Eqn(U1, rho1.dimensions()*U1.dimensions()*dimVol/dimTime);
+fvVectorMatrix U2Eqn(U2, rho2.dimensions()*U2.dimensions()*dimVol/dimTime);
+
+{
+    volScalarField Vm(fluid.Vm());
+
+    fvVectorMatrix UgradU1
+    (
+        fvm::div(phi1, U1) - fvm::Sp(fvc::div(phi1), U1)
+      + MRF.DDt(U1)
+    );
+
+    fvVectorMatrix UgradU2
+    (
+        fvm::div(phi2, U2) - fvm::Sp(fvc::div(phi2), U2)
+      + MRF.DDt(U2)
+    );
+
+    {
+        U1Eqn =
+        (
+            fvm::div(alphaRhoPhi1, U1) - fvm::Sp(fvc::div(alphaRhoPhi1), U1)
+          + MRF.DDt(alpha1*rho1, U1)
+          + phase1.turbulence().divDevRhoReff(U1)
+          + Vm*(UgradU1 - (UgradU2 & U2))
+        );
+        U1Eqn.relax();
+        fvOptions.constrain(U1Eqn);
+        U1.correctBoundaryConditions();
+        fvOptions.correct(U1);
+    }
+
+    {
+        U2Eqn =
+        (
+            fvm::div(alphaRhoPhi2, U2) - fvm::Sp(fvc::div(alphaRhoPhi2), U2)
+          + MRF.DDt(alpha2*rho2, U2)
+          + phase2.turbulence().divDevRhoReff(U2)
+          + Vm*(UgradU2 - (UgradU1 & U1))
+        );
+        U2Eqn.relax();
+        fvOptions.constrain(U2Eqn);
+        U2.correctBoundaryConditions();
+        fvOptions.correct(U2);
+    }
+}
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/pUf/createDDtU.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/pUf/createDDtU.H
new file mode 100644
index 0000000000000000000000000000000000000000..7445d4af23f5d5c63485052c0a7217e668c65717
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/pUf/createDDtU.H
@@ -0,0 +1,9 @@
+    surfaceScalarField ddtPhi1
+    (
+        (phi1 - phi1.oldTime())/runTime.deltaT()
+    );
+
+    surfaceScalarField ddtPhi2
+    (
+        (phi2 - phi2.oldTime())/runTime.deltaT()
+    );
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/pUf/pEqn.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/pUf/pEqn.H
new file mode 100644
index 0000000000000000000000000000000000000000..c48f0b07c7ebf6c3d300492eca21709660b38088
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/pUf/pEqn.H
@@ -0,0 +1,348 @@
+surfaceScalarField alphaf1("alphaf1", fvc::interpolate(alpha1));
+surfaceScalarField alphaf2("alphaf2", scalar(1) - alphaf1);
+
+surfaceScalarField alphaRhof10
+(
+    "alphaRhof10",
+    fvc::interpolate
+    (
+        max(alpha1.oldTime(), phase1.residualAlpha())
+       *rho1.oldTime()
+    )
+);
+
+surfaceScalarField alphaRhof20
+(
+    "alphaRhof20",
+    fvc::interpolate
+    (
+        max(alpha2.oldTime(), phase2.residualAlpha())
+       *rho2.oldTime()
+    )
+);
+
+// Drag coefficient
+surfaceScalarField Kdf("Kdf", fluid.Kdf());
+
+// Virtual-mass coefficient
+surfaceScalarField Vmf("Vmf", fluid.Vmf());
+
+surfaceScalarField rAUf1
+(
+    IOobject::groupName("rAUf", phase1.name()),
+    1.0
+   /(
+        (alphaRhof10 + Vmf)/runTime.deltaT()
+      + fvc::interpolate(U1Eqn.A())
+      + Kdf
+   )
+);
+
+surfaceScalarField rAUf2
+(
+    IOobject::groupName("rAUf", phase2.name()),
+    1.0
+   /(
+        (alphaRhof20 + Vmf)/runTime.deltaT()
+      + fvc::interpolate(U2Eqn.A())
+      + Kdf
+   )
+);
+
+
+// Turbulent dispersion, particle-pressure, lift and wall-lubrication forces
+tmp<surfaceScalarField> Ff1;
+tmp<surfaceScalarField> Ff2;
+{
+    // Turbulent-dispersion diffusivity
+    volScalarField D(fluid.D());
+
+    // Phase-1 turbulent dispersion and particle-pressure diffusivity
+    surfaceScalarField Df1
+    (
+        fvc::interpolate(D + phase1.turbulence().pPrime())
+    );
+
+    // Phase-2 turbulent dispersion and particle-pressure diffusivity
+    surfaceScalarField Df2
+    (
+        fvc::interpolate(D + phase2.turbulence().pPrime())
+    );
+
+    // Cache the net diffusivity for implicit diffusion treatment in the
+    // phase-fraction equation
+    if (implicitPhasePressure)
+    {
+        fluid.pPrimeByA() = rAUf1*Df1 + rAUf2*Df2;
+    }
+
+    // Lift and wall-lubrication forces
+    surfaceScalarField Ff(fluid.Ff());
+
+    // Phase-fraction face-gradient
+    surfaceScalarField snGradAlpha1(fvc::snGrad(alpha1)*mesh.magSf());
+
+    // Phase-1 dispersion, lift and wall-lubrication force
+    Ff1 = Df1*snGradAlpha1 + Ff;
+
+    // Phase-2 dispersion, lift and wall-lubrication force
+    Ff2 = -Df2*snGradAlpha1 - Ff;
+}
+
+
+while (pimple.correct())
+{
+    // Update continuity errors due to temperature changes
+    #include "correctContErrs.H"
+
+    surfaceScalarField rhof1(fvc::interpolate(rho1));
+    surfaceScalarField rhof2(fvc::interpolate(rho2));
+
+    // Correct fixed-flux BCs to be consistent with the velocity BCs
+    MRF.correctBoundaryFlux(U1, phi1);
+    MRF.correctBoundaryFlux(U2, phi2);
+
+    surfaceScalarField alpharAUf1
+    (
+        IOobject::groupName("alpharAUf", phase1.name()),
+        max(alphaf1, phase1.residualAlpha())*rAUf1
+    );
+
+    surfaceScalarField alpharAUf2
+    (
+        IOobject::groupName("alpharAUf", phase2.name()),
+        max(alphaf2, phase2.residualAlpha())*rAUf2
+    );
+
+    volScalarField rho("rho", fluid.rho());
+    surfaceScalarField ghSnGradRho
+    (
+        "ghSnGradRho",
+        ghf*fvc::snGrad(rho)*mesh.magSf()
+    );
+
+    // Phase-1 buoyancy flux
+    surfaceScalarField phig1
+    (
+        IOobject::groupName("phig", phase1.name()),
+        alpharAUf1
+       *(
+            ghSnGradRho
+          - alphaf2*(rhof1 - rhof2)*(g & mesh.Sf())
+        )
+    );
+
+    // Phase-2 buoyancy flux
+    surfaceScalarField phig2
+    (
+        IOobject::groupName("phig", phase2.name()),
+        alpharAUf2
+       *(
+            ghSnGradRho
+          - alphaf1*(rhof2 - rhof1)*(g & mesh.Sf())
+        )
+    );
+
+
+    // Phase-1 predicted flux
+    surfaceScalarField phiHbyA1
+    (
+        IOobject::groupName("phiHbyA", phase1.name()),
+        phi1
+    );
+
+    phiHbyA1 =
+        rAUf1
+       *(
+            (alphaRhof10 + Vmf)
+           *MRF.absolute(phi1.oldTime())/runTime.deltaT()
+          + (fvc::interpolate(U1Eqn.H()) & mesh.Sf())
+          + Vmf*ddtPhi2
+          + Kdf*MRF.absolute(phi2)
+          - Ff1()
+        );
+
+    // Phase-2 predicted flux
+    surfaceScalarField phiHbyA2
+    (
+        IOobject::groupName("phiHbyA", phase2.name()),
+        phi2
+    );
+
+    phiHbyA2 =
+        rAUf2
+       *(
+            (alphaRhof20 + Vmf)
+           *MRF.absolute(phi2.oldTime())/runTime.deltaT()
+          + (fvc::interpolate(U2Eqn.H()) & mesh.Sf())
+          + Vmf*ddtPhi1
+          + Kdf*MRF.absolute(phi1)
+          - Ff2()
+       );
+
+
+    surfaceScalarField phiHbyA
+    (
+        "phiHbyA",
+        alphaf1*(phiHbyA1 - phig1) + alphaf2*(phiHbyA2 - phig2)
+    );
+    MRF.makeRelative(phiHbyA);
+
+    phiHbyA1 -= phig1;
+    phiHbyA2 -= phig2;
+
+    surfaceScalarField rAUf
+    (
+        "rAUf",
+        mag(alphaf1*alpharAUf1 + alphaf2*alpharAUf2)
+    );
+
+    // Update the fixedFluxPressure BCs to ensure flux consistency
+    setSnGrad<fixedFluxPressureFvPatchScalarField>
+    (
+        p_rgh.boundaryField(),
+        (
+            phiHbyA.boundaryField()
+          - (
+                alphaf1.boundaryField()*phi1.boundaryField()
+              + alphaf2.boundaryField()*phi2.boundaryField()
+            )
+        )/(mesh.magSf().boundaryField()*rAUf.boundaryField())
+    );
+
+    tmp<fvScalarMatrix> pEqnComp1;
+    tmp<fvScalarMatrix> pEqnComp2;
+
+    if (pimple.transonic())
+    {
+        surfaceScalarField phid1
+        (
+            IOobject::groupName("phid", phase1.name()),
+            fvc::interpolate(psi1)*phi1
+        );
+        surfaceScalarField phid2
+        (
+            IOobject::groupName("phid", phase2.name()),
+            fvc::interpolate(psi2)*phi2
+        );
+
+        pEqnComp1 =
+            (
+                phase1.continuityError() - fluid.dmdt()
+              - fvc::Sp(fvc::ddt(alpha1) + fvc::div(alphaPhi1), rho1)
+            )/rho1
+          + (alpha1/rho1)*correction
+            (
+                psi1*fvm::ddt(p_rgh)
+              + fvm::div(phid1, p_rgh) - fvm::Sp(fvc::div(phid1), p_rgh)
+            );
+        deleteDemandDrivenData(pEqnComp1().faceFluxCorrectionPtr());
+        pEqnComp1().relax();
+
+        pEqnComp2 =
+            (
+                phase2.continuityError() + fluid.dmdt()
+              - fvc::Sp(fvc::ddt(alpha2) + fvc::div(alphaPhi2), rho2)
+            )/rho2
+          + (alpha2/rho2)*correction
+            (
+                psi2*fvm::ddt(p_rgh)
+              + fvm::div(phid2, p_rgh) - fvm::Sp(fvc::div(phid2), p_rgh)
+            );
+        deleteDemandDrivenData(pEqnComp2().faceFluxCorrectionPtr());
+        pEqnComp2().relax();
+    }
+    else
+    {
+        pEqnComp1 =
+            (
+                phase1.continuityError() - fluid.dmdt()
+              - fvc::Sp(fvc::ddt(alpha1) + fvc::div(alphaPhi1), rho1)
+            )/rho1
+          + (alpha1*psi1/rho1)*correction(fvm::ddt(p_rgh));
+
+        pEqnComp2 =
+            (
+                phase2.continuityError() + fluid.dmdt()
+              - fvc::Sp(fvc::ddt(alpha2) + fvc::div(alphaPhi2), rho2)
+            )/rho2
+          + (alpha2*psi2/rho2)*correction(fvm::ddt(p_rgh));
+    }
+
+    // Cache p prior to solve for density update
+    volScalarField p_rgh_0("p_rgh_0", p_rgh);
+
+    while (pimple.correctNonOrthogonal())
+    {
+        fvScalarMatrix pEqnIncomp
+        (
+            fvc::div(phiHbyA)
+          - fvm::laplacian(rAUf, p_rgh)
+        );
+
+        solve
+        (
+            pEqnComp1() + pEqnComp2() + pEqnIncomp,
+            mesh.solver(p_rgh.select(pimple.finalInnerIter()))
+        );
+
+        if (pimple.finalNonOrthogonalIter())
+        {
+            surfaceScalarField mSfGradp("mSfGradp", pEqnIncomp.flux()/rAUf);
+
+            phi = phiHbyA + pEqnIncomp.flux();
+
+            surfaceScalarField phi1s
+            (
+                phiHbyA1
+              + alpharAUf1*mSfGradp
+              - rAUf1*Kdf*MRF.absolute(phi2)
+            );
+
+            surfaceScalarField phi2s
+            (
+                phiHbyA2
+              + alpharAUf2*mSfGradp
+              - rAUf2*Kdf*MRF.absolute(phi1)
+            );
+
+            surfaceScalarField phir
+            (
+                ((phi2s + rAUf2*Kdf*phi1s) - (phi1s + rAUf1*Kdf*phi2s))
+               /(1.0 - rAUf1*rAUf2*sqr(Kdf))
+            );
+
+            phi1 = phi - alphaf2*phir;
+            phi2 = phi + alphaf1*phir;
+
+            U1 = fvc::reconstruct(MRF.absolute(phi1));
+            U1.correctBoundaryConditions();
+            fvOptions.correct(U1);
+
+            U2 = fvc::reconstruct(MRF.absolute(phi2));
+            U2.correctBoundaryConditions();
+            fvOptions.correct(U2);
+
+            fluid.dgdt() =
+            (
+                alpha1*(pEqnComp2 & p_rgh)
+              - alpha2*(pEqnComp1 & p_rgh)
+            );
+        }
+    }
+
+    // Update and limit the static pressure
+    p = max(p_rgh + rho*gh, pMin);
+
+    // Limit p_rgh
+    p_rgh = p - rho*gh;
+
+    // Update densities from change in p_rgh
+    rho1 += psi1*(p_rgh - p_rgh_0);
+    rho2 += psi2*(p_rgh - p_rgh_0);
+
+    // Correct p_rgh for consistency with p and the updated densities
+    rho = fluid.rho();
+    p_rgh = p - rho*gh;
+    p_rgh.correctBoundaryConditions();
+}
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/Make/files b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/Make/files
new file mode 100644
index 0000000000000000000000000000000000000000..eccde529bd8f3522f85224517c6ee8630c363d40
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/Make/files
@@ -0,0 +1,38 @@
+phaseCompressibleTurbulenceModels.C
+phasePressureModel/phasePressureModel.C
+
+kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.C
+
+kineticTheoryModels/viscosityModel/viscosityModel/viscosityModel.C
+kineticTheoryModels/viscosityModel/viscosityModel/newViscosityModel.C
+kineticTheoryModels/viscosityModel/Gidaspow/GidaspowViscosity.C
+kineticTheoryModels/viscosityModel/Syamlal/SyamlalViscosity.C
+kineticTheoryModels/viscosityModel/HrenyaSinclair/HrenyaSinclairViscosity.C
+kineticTheoryModels/viscosityModel/none/noneViscosity.C
+
+kineticTheoryModels/conductivityModel/conductivityModel/conductivityModel.C
+kineticTheoryModels/conductivityModel/conductivityModel/newConductivityModel.C
+kineticTheoryModels/conductivityModel/Gidaspow/GidaspowConductivity.C
+kineticTheoryModels/conductivityModel/Syamlal/SyamlalConductivity.C
+kineticTheoryModels/conductivityModel/HrenyaSinclair/HrenyaSinclairConductivity.C
+
+kineticTheoryModels/radialModel/radialModel/radialModel.C
+kineticTheoryModels/radialModel/radialModel/newRadialModel.C
+kineticTheoryModels/radialModel/CarnahanStarling/CarnahanStarlingRadial.C
+kineticTheoryModels/radialModel/LunSavage/LunSavageRadial.C
+kineticTheoryModels/radialModel/SinclairJackson/SinclairJacksonRadial.C
+
+kineticTheoryModels/granularPressureModel/granularPressureModel/granularPressureModel.C
+kineticTheoryModels/granularPressureModel/granularPressureModel/newGranularPressureModel.C
+kineticTheoryModels/granularPressureModel/Lun/LunPressure.C
+kineticTheoryModels/granularPressureModel/SyamlalRogersOBrien/SyamlalRogersOBrienPressure.C
+
+kineticTheoryModels/frictionalStressModel/frictionalStressModel/frictionalStressModel.C
+kineticTheoryModels/frictionalStressModel/frictionalStressModel/newFrictionalStressModel.C
+kineticTheoryModels/frictionalStressModel/JohnsonJackson/JohnsonJacksonFrictionalStress.C
+kineticTheoryModels/frictionalStressModel/Schaeffer/SchaefferFrictionalStress.C
+
+kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleTheta/JohnsonJacksonParticleThetaFvPatchScalarField.C
+kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleSlip/JohnsonJacksonParticleSlipFvPatchVectorField.C
+
+LIB = $(FOAM_LIBBIN)/libphaseReactingTurbulenceModels
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/Make/options b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/Make/options
new file mode 100644
index 0000000000000000000000000000000000000000..96fecff16d3bca387ae2ef4ec058413d5b64cadb
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/Make/options
@@ -0,0 +1,11 @@
+EXE_INC = \
+    -I../phaseSystems/lnInclude \
+    -I../interfacialModels/lnInclude\
+    -I$(LIB_SRC)/transportModels/compressible/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
+    -I$(LIB_SRC)/transportModels/incompressible/transportModel \
+    -I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \
+    -I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude \
+    -I$(LIB_SRC)/TurbulenceModels/phaseCompressible/lnInclude \
+    -I$(LIB_SRC)/finiteVolume/lnInclude \
+    -I$(LIB_SRC)/meshTools/lnInclude
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kOmegaSSTSato/kOmegaSSTSato.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kOmegaSSTSato/kOmegaSSTSato.C
new file mode 100644
index 0000000000000000000000000000000000000000..7a454304631a883aa8008e943e07805068e0aea6
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kOmegaSSTSato/kOmegaSSTSato.C
@@ -0,0 +1,172 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "kOmegaSSTSato.H"
+#include "addToRunTimeSelectionTable.H"
+#include "twoPhaseSystem.H"
+#include "dragModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace RASModels
+{
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+template<class BasicTurbulenceModel>
+kOmegaSSTSato<BasicTurbulenceModel>::kOmegaSSTSato
+(
+    const alphaField& alpha,
+    const rhoField& rho,
+    const volVectorField& U,
+    const surfaceScalarField& alphaRhoPhi,
+    const surfaceScalarField& phi,
+    const transportModel& transport,
+    const word& propertiesName,
+    const word& type
+)
+:
+    kOmegaSST<BasicTurbulenceModel>
+    (
+        alpha,
+        rho,
+        U,
+        alphaRhoPhi,
+        phi,
+        transport,
+        propertiesName,
+        type
+    ),
+
+    gasTurbulencePtr_(NULL),
+
+    Cmub_
+    (
+        dimensioned<scalar>::lookupOrAddToDict
+        (
+            "Cmub",
+            this->coeffDict_,
+            0.6
+        )
+    )
+{
+    if (type == typeName)
+    {
+        correctNut();
+        this->printCoeffs(type);
+    }
+}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+template<class BasicTurbulenceModel>
+bool kOmegaSSTSato<BasicTurbulenceModel>::read()
+{
+    if (kOmegaSST<BasicTurbulenceModel>::read())
+    {
+        Cmub_.readIfPresent(this->coeffDict());
+
+        return true;
+    }
+    else
+    {
+        return false;
+    }
+}
+
+template<class BasicTurbulenceModel>
+const PhaseCompressibleTurbulenceModel
+<
+    typename BasicTurbulenceModel::transportModel
+>&
+kOmegaSSTSato<BasicTurbulenceModel>::gasTurbulence() const
+{
+    if (!gasTurbulencePtr_)
+    {
+        const volVectorField& U = this->U_;
+
+        const transportModel& liquid = this->transport();
+        const twoPhaseSystem& fluid =
+            refCast<const twoPhaseSystem>(liquid.fluid());
+        const transportModel& gas = fluid.otherPhase(liquid);
+
+        gasTurbulencePtr_ =
+           &U.db()
+           .lookupObject<PhaseCompressibleTurbulenceModel<transportModel> >
+            (
+                IOobject::groupName
+                (
+                    turbulenceModel::propertiesName,
+                    gas.name()
+                )
+            );
+    }
+
+    return *gasTurbulencePtr_;
+}
+
+
+template<class BasicTurbulenceModel>
+void kOmegaSSTSato<BasicTurbulenceModel>::correctNut()
+{
+    const PhaseCompressibleTurbulenceModel<transportModel>& gasTurbulence =
+        this->gasTurbulence();
+
+    volScalarField yPlus
+    (
+        pow(this->betaStar_, 0.25)*this->y_*sqrt(this->k_)/this->nu()
+    );
+
+    this->nut_ =
+        this->a1_*this->k_
+       /max
+        (
+            this->a1_*this->omega_,
+            this->F23()*sqrt(2.0)*mag(symm(fvc::grad(this->U_)))
+        )
+      + sqr(1 - exp(-yPlus/16.0))
+       *Cmub_*gasTurbulence.transport().d()*gasTurbulence.alpha()
+       *(mag(this->U_ - gasTurbulence.U()));
+
+    this->nut_.correctBoundaryConditions();
+}
+
+
+template<class BasicTurbulenceModel>
+void kOmegaSSTSato<BasicTurbulenceModel>::correct()
+{
+    kOmegaSST<BasicTurbulenceModel>::correct();
+}
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace RASModels
+} // End namespace Foam
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kOmegaSSTSato/kOmegaSSTSato.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kOmegaSSTSato/kOmegaSSTSato.H
new file mode 100644
index 0000000000000000000000000000000000000000..6d0f720b7dfadc52f001ac56475d42a1fffabb7d
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kOmegaSSTSato/kOmegaSSTSato.H
@@ -0,0 +1,217 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::RASModels::kOmegaSSTSato
+
+Group
+    grpRASTurbulence
+
+Description
+    Implementation of the k-omega-SST turbulence model for dispersed bubbly
+    flows with Sato (1981) bubble induced turbulent viscosity model.
+
+    Bubble induced turbulent viscosity model described in:
+    \verbatim
+        Sato, Y., Sadatomi, M.
+        "Momentum and heat transfer in two-phase bubble flow - I, Theory"
+        International Journal of Multiphase FLow 7, pp. 167-177, 1981.
+    \endverbatim
+
+    Turbulence model described in:
+    \verbatim
+        Menter, F., Esch, T.
+        "Elements of Industrial Heat Transfer Prediction"
+        16th Brazilian Congress of Mechanical Engineering (COBEM),
+        Nov. 2001
+    \endverbatim
+
+    with the addition of the optional F3 term for rough walls from
+    \verbatim
+        Hellsten, A.
+        "Some Improvements in Menter’s k-omega-SST turbulence model"
+        29th AIAA Fluid Dynamics Conference,
+        AIAA-98-2554,
+        June 1998.
+    \endverbatim
+
+    Note that this implementation is written in terms of alpha diffusion
+    coefficients rather than the more traditional sigma (alpha = 1/sigma) so
+    that the blending can be applied to all coefficuients in a consistent
+    manner.  The paper suggests that sigma is blended but this would not be
+    consistent with the blending of the k-epsilon and k-omega models.
+
+    Also note that the error in the last term of equation (2) relating to
+    sigma has been corrected.
+
+    Wall-functions are applied in this implementation by using equations (14)
+    to specify the near-wall omega as appropriate.
+
+    The blending functions (15) and (16) are not currently used because of the
+    uncertainty in their origin, range of applicability and that is y+ becomes
+    sufficiently small blending u_tau in this manner clearly becomes nonsense.
+
+    The default model coefficients correspond to the following:
+    \verbatim
+        kOmegaSSTCoeffs
+        {
+            alphaK1     0.85034;
+            alphaK2     1.0;
+            alphaOmega1 0.5;
+            alphaOmega2 0.85616;
+            Prt         1.0;    // only for compressible
+            beta1       0.075;
+            beta2       0.0828;
+            betaStar    0.09;
+            gamma1      0.5532;
+            gamma2      0.4403;
+            a1          0.31;
+            b1          1.0;
+            c1          10.0;
+            F3          no;
+            Cmub        0.6;
+        }
+    \endverbatim
+
+SourceFiles
+    kOmegaSST.C
+
+SourceFiles
+    kOmegaSSTSato.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef kOmegaSSTSato_H
+#define kOmegaSSTSato_H
+
+#include "kOmegaSST.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace RASModels
+{
+
+/*---------------------------------------------------------------------------*\
+                           Class kOmegaSSTSato Declaration
+\*---------------------------------------------------------------------------*/
+
+template<class BasicTurbulenceModel>
+class kOmegaSSTSato
+:
+    public kOmegaSST<BasicTurbulenceModel>
+{
+    // Private data
+
+        mutable const PhaseCompressibleTurbulenceModel
+        <
+            typename BasicTurbulenceModel::transportModel
+        > *gasTurbulencePtr_;
+
+
+    // Private Member Functions
+
+        //- Return the turbulence model for the gas phase
+        const PhaseCompressibleTurbulenceModel
+        <
+            typename BasicTurbulenceModel::transportModel
+        >&
+        gasTurbulence() const;
+
+
+        // Disallow default bitwise copy construct and assignment
+        kOmegaSSTSato(const kOmegaSSTSato&);
+        kOmegaSSTSato& operator=(const kOmegaSSTSato&);
+
+
+protected:
+
+    // Protected data
+
+        // Model coefficients
+            dimensionedScalar Cmub_;
+
+
+    // Protected Member Functions
+
+        virtual void correctNut();
+
+public:
+
+    typedef typename BasicTurbulenceModel::alphaField alphaField;
+    typedef typename BasicTurbulenceModel::rhoField rhoField;
+    typedef typename BasicTurbulenceModel::transportModel transportModel;
+
+
+    //- Runtime type information
+    TypeName("kOmegaSSTSato");
+
+
+    // Constructors
+
+        //- Construct from components
+        kOmegaSSTSato
+        (
+            const alphaField& alpha,
+            const rhoField& rho,
+            const volVectorField& U,
+            const surfaceScalarField& alphaRhoPhi,
+            const surfaceScalarField& phi,
+            const transportModel& transport,
+            const word& propertiesName = turbulenceModel::propertiesName,
+            const word& type = typeName
+        );
+
+
+    //- Destructor
+    virtual ~kOmegaSSTSato()
+    {}
+
+
+    // Member Functions
+
+        //- Read model coefficients if they have changed
+        virtual bool read();
+
+        //- Solve the turbulence equations and correct the turbulence viscosity
+        virtual void correct();
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace RASModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#ifdef NoRepository
+    #include "kOmegaSSTSato.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Gidaspow/GidaspowConductivity.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Gidaspow/GidaspowConductivity.C
new file mode 100644
index 0000000000000000000000000000000000000000..6ef7f1ec83eb6f2089d72ee0a2f53f69f0383d44
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Gidaspow/GidaspowConductivity.C
@@ -0,0 +1,93 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "GidaspowConductivity.H"
+#include "mathematicalConstants.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace kineticTheoryModels
+{
+namespace conductivityModels
+{
+    defineTypeNameAndDebug(Gidaspow, 0);
+
+    addToRunTimeSelectionTable
+    (
+        conductivityModel,
+        Gidaspow,
+        dictionary
+    );
+}
+}
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::kineticTheoryModels::conductivityModels::Gidaspow::Gidaspow
+(
+    const dictionary& dict
+)
+:
+    conductivityModel(dict)
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::kineticTheoryModels::conductivityModels::Gidaspow::~Gidaspow()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volScalarField>
+Foam::kineticTheoryModels::conductivityModels::Gidaspow::kappa
+(
+    const volScalarField& alpha1,
+    const volScalarField& Theta,
+    const volScalarField& g0,
+    const volScalarField& rho1,
+    const volScalarField& da,
+    const dimensionedScalar& e
+) const
+{
+    const scalar sqrtPi = sqrt(constant::mathematical::pi);
+
+    return rho1*da*sqrt(Theta)*
+    (
+        2.0*sqr(alpha1)*g0*(1.0 + e)/sqrtPi
+      + (9.0/8.0)*sqrtPi*g0*0.5*(1.0 + e)*sqr(alpha1)
+      + (15.0/16.0)*sqrtPi*alpha1
+      + (25.0/64.0)*sqrtPi/((1.0 + e)*g0)
+    );
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Gidaspow/GidaspowConductivity.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Gidaspow/GidaspowConductivity.H
new file mode 100644
index 0000000000000000000000000000000000000000..f8987ce13d94b73458273a9ac7b97221bfe7ad4a
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Gidaspow/GidaspowConductivity.H
@@ -0,0 +1,97 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::kineticTheoryModels::conductivityModels::Gidaspow
+
+Description
+
+SourceFiles
+    Gidaspow.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef Gidaspow_H
+#define Gidaspow_H
+
+#include "conductivityModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace kineticTheoryModels
+{
+namespace conductivityModels
+{
+
+/*---------------------------------------------------------------------------*\
+                           Class Gidaspow Declaration
+\*---------------------------------------------------------------------------*/
+
+class Gidaspow
+:
+    public conductivityModel
+{
+
+public:
+
+        //- Runtime type information
+        TypeName("Gidaspow");
+
+
+    // Constructors
+
+        //- Construct from components
+        Gidaspow(const dictionary& dict);
+
+
+    //- Destructor
+    virtual ~Gidaspow();
+
+
+    // Member Functions
+
+        tmp<volScalarField> kappa
+        (
+            const volScalarField& alpha1,
+            const volScalarField& Theta,
+            const volScalarField& g0,
+            const volScalarField& rho1,
+            const volScalarField& da,
+            const dimensionedScalar& e
+        ) const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace conductivityModels
+} // End namespace kineticTheoryModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/HrenyaSinclair/HrenyaSinclairConductivity.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/HrenyaSinclair/HrenyaSinclairConductivity.C
new file mode 100644
index 0000000000000000000000000000000000000000..55541ac8fabfa228a30825ca89c94f6b08476d8e
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/HrenyaSinclair/HrenyaSinclairConductivity.C
@@ -0,0 +1,114 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "HrenyaSinclairConductivity.H"
+#include "mathematicalConstants.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace kineticTheoryModels
+{
+namespace conductivityModels
+{
+    defineTypeNameAndDebug(HrenyaSinclair, 0);
+
+    addToRunTimeSelectionTable
+    (
+        conductivityModel,
+        HrenyaSinclair,
+        dictionary
+    );
+}
+}
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::kineticTheoryModels::conductivityModels::HrenyaSinclair::HrenyaSinclair
+(
+    const dictionary& dict
+)
+:
+    conductivityModel(dict),
+    coeffDict_(dict.subDict(typeName + "Coeffs")),
+    L_("L", dimensionSet(0, 1, 0, 0, 0), coeffDict_.lookup("L"))
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::kineticTheoryModels::conductivityModels::HrenyaSinclair::
+~HrenyaSinclair()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volScalarField>
+Foam::kineticTheoryModels::conductivityModels::HrenyaSinclair::kappa
+(
+    const volScalarField& alpha1,
+    const volScalarField& Theta,
+    const volScalarField& g0,
+    const volScalarField& rho1,
+    const volScalarField& da,
+    const dimensionedScalar& e
+) const
+{
+    const scalar sqrtPi = sqrt(constant::mathematical::pi);
+
+    volScalarField lamda
+    (
+        scalar(1) + da/(6.0*sqrt(2.0)*(alpha1 + scalar(1.0e-5)))/L_
+    );
+
+    return rho1*da*sqrt(Theta)*
+    (
+        2.0*sqr(alpha1)*g0*(1.0 + e)/sqrtPi
+      + (9.0/8.0)*sqrtPi*g0*0.25*sqr(1.0 + e)*(2.0*e - 1.0)*sqr(alpha1)
+       /(49.0/16.0 - 33.0*e/16.0)
+      + (15.0/16.0)*sqrtPi*alpha1*(0.5*sqr(e) + 0.25*e - 0.75 + lamda)
+       /((49.0/16.0 - 33.0*e/16.0)*lamda)
+      + (25.0/64.0)*sqrtPi
+       /((1.0 + e)*(49.0/16.0 - 33.0*e/16.0)*lamda*g0)
+    );
+}
+
+
+bool Foam::kineticTheoryModels::conductivityModels::HrenyaSinclair::read()
+{
+    coeffDict_ <<= dict_.subDict(typeName + "Coeffs");
+
+    L_.readIfPresent(coeffDict_);
+
+    return true;
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/HrenyaSinclair/HrenyaSinclairConductivity.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/HrenyaSinclair/HrenyaSinclairConductivity.H
new file mode 100644
index 0000000000000000000000000000000000000000..14ff59acee7220e349e9aaa1325c0b6698377d75
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/HrenyaSinclair/HrenyaSinclairConductivity.H
@@ -0,0 +1,104 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::kineticTheoryModels::conductivityModels::HrenyaSinclair
+
+Description
+
+SourceFiles
+    HrenyaSinclair.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef HrenyaSinclair_H
+#define HrenyaSinclair_H
+
+#include "conductivityModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace kineticTheoryModels
+{
+namespace conductivityModels
+{
+
+/*---------------------------------------------------------------------------*\
+                           Class HrenyaSinclair Declaration
+\*---------------------------------------------------------------------------*/
+
+class HrenyaSinclair
+:
+    public conductivityModel
+{
+        dictionary coeffDict_;
+
+        //- Characteristic length of geometry
+        dimensionedScalar L_;
+
+
+public:
+
+        //- Runtime type information
+        TypeName("HrenyaSinclair");
+
+
+    // Constructors
+
+        //- Construct from components
+        HrenyaSinclair(const dictionary& dict);
+
+
+    //- Destructor
+    virtual ~HrenyaSinclair();
+
+
+    // Member Functions
+
+        tmp<volScalarField> kappa
+        (
+            const volScalarField& alpha1,
+            const volScalarField& Theta,
+            const volScalarField& g0,
+            const volScalarField& rho1,
+            const volScalarField& da,
+            const dimensionedScalar& e
+        ) const;
+
+        virtual bool read();
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace conductivityModels
+} // End namespace kineticTheoryModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Syamlal/SyamlalConductivity.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Syamlal/SyamlalConductivity.C
new file mode 100644
index 0000000000000000000000000000000000000000..2bd6c25f79bd3944539b4c2ceeb702cca2a6c350
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Syamlal/SyamlalConductivity.C
@@ -0,0 +1,93 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "SyamlalConductivity.H"
+#include "mathematicalConstants.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace kineticTheoryModels
+{
+namespace conductivityModels
+{
+    defineTypeNameAndDebug(Syamlal, 0);
+
+    addToRunTimeSelectionTable
+    (
+        conductivityModel,
+        Syamlal,
+        dictionary
+    );
+}
+}
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::kineticTheoryModels::conductivityModels::Syamlal::Syamlal
+(
+    const dictionary& dict
+)
+:
+    conductivityModel(dict)
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::kineticTheoryModels::conductivityModels::Syamlal::~Syamlal()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volScalarField>
+Foam::kineticTheoryModels::conductivityModels::Syamlal::kappa
+(
+    const volScalarField& alpha1,
+    const volScalarField& Theta,
+    const volScalarField& g0,
+    const volScalarField& rho1,
+    const volScalarField& da,
+    const dimensionedScalar& e
+) const
+{
+    const scalar sqrtPi = sqrt(constant::mathematical::pi);
+
+    return rho1*da*sqrt(Theta)*
+    (
+        2.0*sqr(alpha1)*g0*(1.0 + e)/sqrtPi
+      + (9.0/8.0)*sqrtPi*g0*0.25*sqr(1.0 + e)*(2.0*e - 1.0)*sqr(alpha1)
+       /(49.0/16.0 - 33.0*e/16.0)
+      + (15.0/32.0)*sqrtPi*alpha1/(49.0/16.0 - 33.0*e/16.0)
+    );
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Syamlal/SyamlalConductivity.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Syamlal/SyamlalConductivity.H
new file mode 100644
index 0000000000000000000000000000000000000000..dbc6b8f60a6d1fa23e70cd1f022ca02876cf3836
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Syamlal/SyamlalConductivity.H
@@ -0,0 +1,97 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::kineticTheoryModels::conductivityModels::Syamlal
+
+Description
+
+SourceFiles
+    Syamlal.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef Syamlal_H
+#define Syamlal_H
+
+#include "conductivityModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace kineticTheoryModels
+{
+namespace conductivityModels
+{
+
+/*---------------------------------------------------------------------------*\
+                           Class Syamlal Declaration
+\*---------------------------------------------------------------------------*/
+
+class Syamlal
+:
+    public conductivityModel
+{
+
+public:
+
+    //- Runtime type information
+    TypeName("Syamlal");
+
+
+    // Constructors
+
+        //- Construct from components
+        Syamlal(const dictionary& dict);
+
+
+    //- Destructor
+    virtual ~Syamlal();
+
+
+    // Member Functions
+
+        tmp<volScalarField> kappa
+        (
+            const volScalarField& alpha1,
+            const volScalarField& Theta,
+            const volScalarField& g0,
+            const volScalarField& rho1,
+            const volScalarField& da,
+            const dimensionedScalar& e
+        ) const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace conductivityModels
+} // End namespace kineticTheoryModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/conductivityModel/conductivityModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/conductivityModel/conductivityModel.C
new file mode 100644
index 0000000000000000000000000000000000000000..4cd6368943dbbfca3fee155784d5268fc47f9de2
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/conductivityModel/conductivityModel.C
@@ -0,0 +1,58 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "conductivityModel.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace kineticTheoryModels
+{
+    defineTypeNameAndDebug(conductivityModel, 0);
+
+    defineRunTimeSelectionTable(conductivityModel, dictionary);
+}
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::kineticTheoryModels::conductivityModel::conductivityModel
+(
+    const dictionary& dict
+)
+:
+    dict_(dict)
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::kineticTheoryModels::conductivityModel::~conductivityModel()
+{}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/conductivityModel/conductivityModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/conductivityModel/conductivityModel.H
new file mode 100644
index 0000000000000000000000000000000000000000..6e44f6457a0ac9280d06333b7ecc1dc67ed1a16f
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/conductivityModel/conductivityModel.H
@@ -0,0 +1,133 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::kineticTheoryModels::conductivityModel
+
+SourceFiles
+    conductivityModel.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef conductivityModel_H
+#define conductivityModel_H
+
+#include "dictionary.H"
+#include "volFields.H"
+#include "dimensionedTypes.H"
+#include "runTimeSelectionTables.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace kineticTheoryModels
+{
+
+/*---------------------------------------------------------------------------*\
+                    Class conductivityModel Declaration
+\*---------------------------------------------------------------------------*/
+
+class conductivityModel
+{
+    // Private member functions
+
+        //- Disallow default bitwise copy construct
+        conductivityModel(const conductivityModel&);
+
+        //- Disallow default bitwise assignment
+        void operator=(const conductivityModel&);
+
+
+protected:
+
+    // Protected data
+
+        const dictionary& dict_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("conductivityModel");
+
+    // Declare runtime constructor selection table
+    declareRunTimeSelectionTable
+    (
+        autoPtr,
+        conductivityModel,
+        dictionary,
+        (
+            const dictionary& dict
+        ),
+        (dict)
+    );
+
+
+    // Constructors
+
+        //- Construct from components
+        conductivityModel(const dictionary& dict);
+
+
+    // Selectors
+
+        static autoPtr<conductivityModel> New
+        (
+            const dictionary& dict
+        );
+
+
+    //- Destructor
+    virtual ~conductivityModel();
+
+
+    // Member Functions
+
+        virtual tmp<volScalarField> kappa
+        (
+            const volScalarField& alpha1,
+            const volScalarField& Theta,
+            const volScalarField& g0,
+            const volScalarField& rho1,
+            const volScalarField& da,
+            const dimensionedScalar& e
+        ) const = 0;
+
+        virtual bool read()
+        {
+            return true;
+        }
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace kineticTheoryModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/conductivityModel/newConductivityModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/conductivityModel/newConductivityModel.C
new file mode 100644
index 0000000000000000000000000000000000000000..a878a0977319a96c1bc0ca2311da364045fec4be
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/conductivityModel/newConductivityModel.C
@@ -0,0 +1,59 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "conductivityModel.H"
+
+// * * * * * * * * * * * * * * * * Selectors * * * * * * * * * * * * * * * * //
+
+Foam::autoPtr<Foam::kineticTheoryModels::conductivityModel>
+Foam::kineticTheoryModels::conductivityModel::New
+(
+    const dictionary& dict
+)
+{
+    word conductivityModelType(dict.lookup("conductivityModel"));
+
+    Info<< "Selecting conductivityModel "
+        << conductivityModelType << endl;
+
+    dictionaryConstructorTable::iterator cstrIter =
+        dictionaryConstructorTablePtr_->find(conductivityModelType);
+
+    if (cstrIter == dictionaryConstructorTablePtr_->end())
+    {
+        FatalError
+            << "conductivityModel::New(const dictionary&) : " << endl
+            << "    unknown conductivityModelType type "
+            << conductivityModelType
+            << ", constructor not in hash table" << endl << endl
+            << "    Valid conductivityModelType types are :" << endl;
+        Info<< dictionaryConstructorTablePtr_->sortedToc() << abort(FatalError);
+    }
+
+    return autoPtr<conductivityModel>(cstrIter()(dict));
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleSlip/JohnsonJacksonParticleSlipFvPatchVectorField.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleSlip/JohnsonJacksonParticleSlipFvPatchVectorField.C
new file mode 100644
index 0000000000000000000000000000000000000000..ea28dd01b512d30195d0e43bb8178ed5185dc5fd
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleSlip/JohnsonJacksonParticleSlipFvPatchVectorField.C
@@ -0,0 +1,254 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "JohnsonJacksonParticleSlipFvPatchVectorField.H"
+#include "addToRunTimeSelectionTable.H"
+#include "twoPhaseSystem.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    makePatchTypeField
+    (
+        fvPatchVectorField,
+        JohnsonJacksonParticleSlipFvPatchVectorField
+    );
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::JohnsonJacksonParticleSlipFvPatchVectorField::
+JohnsonJacksonParticleSlipFvPatchVectorField
+(
+    const fvPatch& p,
+    const DimensionedField<vector, volMesh>& iF
+)
+:
+    partialSlipFvPatchVectorField(p, iF),
+    specularityCoefficient_(p.size())
+{}
+
+
+Foam::JohnsonJacksonParticleSlipFvPatchVectorField::
+JohnsonJacksonParticleSlipFvPatchVectorField
+(
+    const JohnsonJacksonParticleSlipFvPatchVectorField& ptf,
+    const fvPatch& p,
+    const DimensionedField<vector, volMesh>& iF,
+    const fvPatchFieldMapper& mapper
+)
+:
+    partialSlipFvPatchVectorField(ptf, p, iF, mapper),
+    specularityCoefficient_(ptf.specularityCoefficient_)
+{}
+
+
+Foam::JohnsonJacksonParticleSlipFvPatchVectorField::
+JohnsonJacksonParticleSlipFvPatchVectorField
+(
+    const fvPatch& p,
+    const DimensionedField<vector, volMesh>& iF,
+    const dictionary& dict
+)
+:
+    partialSlipFvPatchVectorField(p, iF),
+    specularityCoefficient_
+    (
+        "specularityCoefficient",
+        dimless,
+        dict.lookup("specularityCoefficient")
+    )
+{
+    if
+    (
+        (specularityCoefficient_.value() < 0)
+     || (specularityCoefficient_.value() > 1)
+    )
+    {
+        FatalErrorIn
+        (
+            "("
+                "Foam::JohnsonJacksonParticleSlipFvPatchVectorField::"
+                "JohnsonJacksonParticleSlipFvPatchVectorField"
+                "const fvPatch& p,"
+                "const DimensionedField<scalar, volMesh>& iF,"
+                "const dictionary& dict"
+            ")"
+        )   << "The specularity coefficient has to be between 0 and 1"
+            << abort(FatalError);
+    }
+
+    fvPatchVectorField::operator=
+    (
+        vectorField("value", dict, p.size())
+    );
+}
+
+
+Foam::JohnsonJacksonParticleSlipFvPatchVectorField::
+JohnsonJacksonParticleSlipFvPatchVectorField
+(
+    const JohnsonJacksonParticleSlipFvPatchVectorField& ptf
+)
+:
+    partialSlipFvPatchVectorField(ptf),
+    specularityCoefficient_(ptf.specularityCoefficient_)
+{}
+
+
+Foam::JohnsonJacksonParticleSlipFvPatchVectorField::
+JohnsonJacksonParticleSlipFvPatchVectorField
+(
+    const JohnsonJacksonParticleSlipFvPatchVectorField& ptf,
+    const DimensionedField<vector, volMesh>& iF
+)
+:
+    partialSlipFvPatchVectorField(ptf, iF),
+    specularityCoefficient_(ptf.specularityCoefficient_)
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+void Foam::JohnsonJacksonParticleSlipFvPatchVectorField::autoMap
+(
+    const fvPatchFieldMapper& m
+)
+{
+    partialSlipFvPatchVectorField::autoMap(m);
+}
+
+
+void Foam::JohnsonJacksonParticleSlipFvPatchVectorField::rmap
+(
+    const fvPatchVectorField& ptf,
+    const labelList& addr
+)
+{
+    partialSlipFvPatchVectorField::rmap(ptf, addr);
+}
+
+
+void Foam::JohnsonJacksonParticleSlipFvPatchVectorField::updateCoeffs()
+{
+    if (updated())
+    {
+        return;
+    }
+
+    // lookup the fluid model and the phase
+    const twoPhaseSystem& fluid = db().lookupObject<twoPhaseSystem>
+    (
+        "phaseProperties"
+    );
+
+    const phaseModel& phased
+    (
+        fluid.phase1().name() == dimensionedInternalField().group()
+      ? fluid.phase1()
+      : fluid.phase2()
+    );
+
+    // lookup all the fields on this patch
+    const fvPatchScalarField& alpha
+    (
+        patch().lookupPatchField<volScalarField, scalar>
+        (
+            phased.volScalarField::name()
+        )
+    );
+
+    const fvPatchScalarField& gs0
+    (
+        patch().lookupPatchField<volScalarField, scalar>
+        (
+            IOobject::groupName("gs0", phased.name())
+        )
+    );
+
+    const scalarField nu
+    (
+        patch().lookupPatchField<volScalarField, scalar>
+        (
+            IOobject::groupName("nut", phased.name())
+        )
+    );
+
+    word ThetaName(IOobject::groupName("Theta", phased.name()));
+
+    const fvPatchScalarField& Theta
+    (
+        db().foundObject<volScalarField>(ThetaName)
+      ? patch().lookupPatchField<volScalarField, scalar>(ThetaName)
+      : alpha
+    );
+
+    // lookup the packed volume fraction
+    dimensionedScalar alphaMax
+    (
+        "alphaMax",
+        dimless,
+        db()
+       .lookupObject<IOdictionary>
+        (
+            IOobject::groupName("turbulenceProperties", phased.name())
+        )
+       .subDict("RAS")
+       .subDict("kineticTheoryCoeffs")
+       .lookup("alphaMax")
+    );
+
+    // calculate the slip value fraction
+    scalarField c
+    (
+        constant::mathematical::pi
+       *alpha
+       *gs0
+       *specularityCoefficient_.value()
+       *sqrt(3.0*Theta)
+       /max(6.0*nu*alphaMax.value(), SMALL)
+    );
+
+    this->valueFraction() = c/(c + patch().deltaCoeffs());
+
+    partialSlipFvPatchVectorField::updateCoeffs();
+}
+
+
+void Foam::JohnsonJacksonParticleSlipFvPatchVectorField::write
+(
+    Ostream& os
+) const
+{
+    fvPatchVectorField::write(os);
+    os.writeKeyword("specularityCoefficient")
+        << specularityCoefficient_ << token::END_STATEMENT << nl;
+    writeEntry("value", os);
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleSlip/JohnsonJacksonParticleSlipFvPatchVectorField.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleSlip/JohnsonJacksonParticleSlipFvPatchVectorField.H
new file mode 100644
index 0000000000000000000000000000000000000000..1aaa801f0f8cebc7184b5b70f622aaf826ad26c3
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleSlip/JohnsonJacksonParticleSlipFvPatchVectorField.H
@@ -0,0 +1,177 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::JohnsonJacksonParticleSlipFvPatchVectorField
+
+Description
+    Partial slip boundary condition for the particulate velocity.
+
+    References:
+    \verbatim
+        "Multifluid Eulerian modeling of dense gas–solids fluidized bed
+         hydrodynamics: Influence of the dissipation parameters"
+        Reuge, N.,
+        Chemical Engineering Science
+        Volume 63, Issue 22, November 2008, pp. 5540-5551
+    \endverbatim
+
+    \verbatim
+        "Frictional-collisional constitutive relations for granular materials,
+         with application to plane shearing"
+        Johnson, P.C., and Jackson, R.,
+        Journal of Fluid Mechanics
+        Volume 176, March 1987, pp. 67-93
+    \endverbatim
+
+SourceFiles
+    JohnsonJacksonParticleSlipFvPatchVectorField.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef JohnsonJacksonParticleSlipFvPatchVectorField_H
+#define JohnsonJacksonParticleSlipFvPatchVectorField_H
+
+#include "partialSlipFvPatchFields.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+        Class JohnsonJacksonParticleSlipFvPatchVectorField Declaration
+\*---------------------------------------------------------------------------*/
+
+class JohnsonJacksonParticleSlipFvPatchVectorField
+:
+    public partialSlipFvPatchVectorField
+{
+    // Private data
+
+        //- Specularity coefficient
+        dimensionedScalar specularityCoefficient_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("JohnsonJacksonParticleSlip");
+
+
+    // Constructors
+
+        //- Construct from patch and internal field
+        JohnsonJacksonParticleSlipFvPatchVectorField
+        (
+            const fvPatch&,
+            const DimensionedField<vector, volMesh>&
+        );
+
+        //- Construct from patch, internal field and dictionary
+        JohnsonJacksonParticleSlipFvPatchVectorField
+        (
+            const fvPatch&,
+            const DimensionedField<vector, volMesh>&,
+            const dictionary&
+        );
+
+        //- Construct by mapping onto a new patch
+        JohnsonJacksonParticleSlipFvPatchVectorField
+        (
+            const JohnsonJacksonParticleSlipFvPatchVectorField&,
+            const fvPatch&,
+            const DimensionedField<vector, volMesh>&,
+            const fvPatchFieldMapper&
+        );
+
+        //- Construct as copy
+        JohnsonJacksonParticleSlipFvPatchVectorField
+        (
+            const JohnsonJacksonParticleSlipFvPatchVectorField&
+        );
+
+        //- Construct and return a clone
+        virtual tmp<fvPatchVectorField> clone() const
+        {
+            return tmp<fvPatchVectorField>
+            (
+                new JohnsonJacksonParticleSlipFvPatchVectorField(*this)
+            );
+        }
+
+        //- Construct as copy setting internal field reference
+        JohnsonJacksonParticleSlipFvPatchVectorField
+        (
+            const JohnsonJacksonParticleSlipFvPatchVectorField&,
+            const DimensionedField<vector, volMesh>&
+        );
+
+        //- Construct and return a clone setting internal field reference
+        virtual tmp<fvPatchVectorField> clone
+        (
+            const DimensionedField<vector, volMesh>& iF
+        ) const
+        {
+            return tmp<fvPatchVectorField>
+            (
+                new JohnsonJacksonParticleSlipFvPatchVectorField(*this, iF)
+            );
+        }
+
+
+    // Member functions
+
+        // Mapping functions
+
+            //- Map (and resize as needed) from self given a mapping object
+            virtual void autoMap
+            (
+                const fvPatchFieldMapper&
+            );
+
+            //- Reverse map the given fvPatchField onto this fvPatchField
+            virtual void rmap
+            (
+                const fvPatchVectorField&,
+                const labelList&
+            );
+
+        //- Update the coefficients
+        virtual void updateCoeffs();
+
+        //- Write
+        virtual void write(Ostream&) const;
+
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleTheta/JohnsonJacksonParticleThetaFvPatchScalarField.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleTheta/JohnsonJacksonParticleThetaFvPatchScalarField.C
new file mode 100644
index 0000000000000000000000000000000000000000..93d97c650c77b3fecdfe929c3a975d87124661ac
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleTheta/JohnsonJacksonParticleThetaFvPatchScalarField.C
@@ -0,0 +1,316 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "JohnsonJacksonParticleThetaFvPatchScalarField.H"
+#include "addToRunTimeSelectionTable.H"
+#include "twoPhaseSystem.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    makePatchTypeField
+    (
+        fvPatchScalarField,
+        JohnsonJacksonParticleThetaFvPatchScalarField
+    );
+}
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+Foam::JohnsonJacksonParticleThetaFvPatchScalarField::
+JohnsonJacksonParticleThetaFvPatchScalarField
+(
+    const fvPatch& p,
+    const DimensionedField<scalar, volMesh>& iF
+)
+:
+    mixedFvPatchScalarField(p, iF),
+    restitutionCoefficient_(p.size()),
+    specularityCoefficient_(p.size())
+{}
+
+
+Foam::JohnsonJacksonParticleThetaFvPatchScalarField::
+JohnsonJacksonParticleThetaFvPatchScalarField
+(
+    const JohnsonJacksonParticleThetaFvPatchScalarField& ptf,
+    const fvPatch& p,
+    const DimensionedField<scalar, volMesh>& iF,
+    const fvPatchFieldMapper& mapper
+)
+:
+    mixedFvPatchScalarField(ptf, p, iF, mapper),
+    restitutionCoefficient_(ptf.restitutionCoefficient_),
+    specularityCoefficient_(ptf.specularityCoefficient_)
+{
+}
+
+
+Foam::JohnsonJacksonParticleThetaFvPatchScalarField::
+JohnsonJacksonParticleThetaFvPatchScalarField
+(
+    const fvPatch& p,
+    const DimensionedField<scalar, volMesh>& iF,
+    const dictionary& dict
+)
+:
+    mixedFvPatchScalarField(p, iF),
+    restitutionCoefficient_
+    (
+        "restitutionCoefficient",
+        dimless,
+        dict.lookup("restitutionCoefficient")
+    ),
+    specularityCoefficient_
+    (
+        "specularityCoefficient",
+        dimless,
+        dict.lookup("specularityCoefficient")
+    )
+{
+    if
+    (
+        (restitutionCoefficient_.value() < 0)
+     || (restitutionCoefficient_.value() > 1)
+    )
+    {
+        FatalErrorIn
+        (
+            "Foam::JohnsonJacksonParticleThetaFvPatchScalarField::"
+            "JohnsonJacksonParticleThetaFvPatchScalarField"
+            "("
+                "const fvPatch& p,"
+                "const DimensionedField<scalar, volMesh>& iF,"
+                "const dictionary& dict"
+            ")"
+        )   << "The restitution coefficient has to be between 0 and 1"
+            << abort(FatalError);
+    }
+
+    if
+    (
+        (specularityCoefficient_.value() < 0)
+     || (specularityCoefficient_.value() > 1)
+    )
+    {
+        FatalErrorIn
+        (
+            "Foam::JohnsonJacksonParticleThetaFvPatchScalarField::"
+            "JohnsonJacksonParticleThetaFvPatchScalarField"
+            "("
+                "const fvPatch& p,"
+                "const DimensionedField<scalar, volMesh>& iF,"
+                "const dictionary& dict"
+            ")"
+        )   << "The specularity coefficient has to be between 0 and 1"
+            << abort(FatalError);
+    }
+
+    fvPatchScalarField::operator=
+    (
+        scalarField("value", dict, p.size())
+    );
+}
+
+
+Foam::JohnsonJacksonParticleThetaFvPatchScalarField::
+JohnsonJacksonParticleThetaFvPatchScalarField
+(
+    const JohnsonJacksonParticleThetaFvPatchScalarField& ptf
+)
+:
+    mixedFvPatchScalarField(ptf),
+    restitutionCoefficient_(ptf.restitutionCoefficient_),
+    specularityCoefficient_(ptf.specularityCoefficient_)
+{}
+
+
+Foam::JohnsonJacksonParticleThetaFvPatchScalarField::
+JohnsonJacksonParticleThetaFvPatchScalarField
+(
+    const JohnsonJacksonParticleThetaFvPatchScalarField& ptf,
+    const DimensionedField<scalar, volMesh>& iF
+)
+:
+    mixedFvPatchScalarField(ptf, iF),
+    restitutionCoefficient_(ptf.restitutionCoefficient_),
+    specularityCoefficient_(ptf.specularityCoefficient_)
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+void Foam::JohnsonJacksonParticleThetaFvPatchScalarField::autoMap
+(
+    const fvPatchFieldMapper& m
+)
+{
+    mixedFvPatchScalarField::autoMap(m);
+}
+
+
+void Foam::JohnsonJacksonParticleThetaFvPatchScalarField::rmap
+(
+    const fvPatchScalarField& ptf,
+    const labelList& addr
+)
+{
+    mixedFvPatchScalarField::rmap(ptf, addr);
+}
+
+
+void Foam::JohnsonJacksonParticleThetaFvPatchScalarField::updateCoeffs()
+{
+    if (updated())
+    {
+        return;
+    }
+
+    // lookup the fluid model and the phase
+    const twoPhaseSystem& fluid = db().lookupObject<twoPhaseSystem>
+    (
+        "phaseProperties"
+    );
+
+    const phaseModel& phased
+    (
+        fluid.phase1().name() == dimensionedInternalField().group()
+      ? fluid.phase1()
+      : fluid.phase2()
+    );
+
+    // lookup all the fields on this patch
+    const fvPatchScalarField& alpha
+    (
+        patch().lookupPatchField<volScalarField, scalar>
+        (
+            phased.volScalarField::name()
+        )
+    );
+
+    const fvPatchVectorField& U
+    (
+        patch().lookupPatchField<volVectorField, vector>
+        (
+            IOobject::groupName("U", phased.name())
+        )
+    );
+
+    const fvPatchScalarField& gs0
+    (
+        patch().lookupPatchField<volScalarField, scalar>
+        (
+            IOobject::groupName("gs0", phased.name())
+        )
+    );
+
+    const fvPatchScalarField& kappa
+    (
+        patch().lookupPatchField<volScalarField, scalar>
+        (
+            IOobject::groupName("kappa", phased.name())
+        )
+    );
+
+    const scalarField Theta(patchInternalField());
+
+    // lookup the packed volume fraction
+    dimensionedScalar alphaMax
+    (
+        "alphaMax",
+        dimless,
+        db()
+       .lookupObject<IOdictionary>
+        (
+            IOobject::groupName("turbulenceProperties", phased.name())
+        )
+       .subDict("RAS")
+       .subDict("kineticTheoryCoeffs")
+       .lookup("alphaMax")
+    );
+
+    // calculate the reference value and the value fraction
+    if (restitutionCoefficient_.value() != 1.0)
+    {
+        this->refValue() =
+            (2.0/3.0)
+           *specularityCoefficient_.value()
+           *magSqr(U)
+           /(scalar(1) - sqr(restitutionCoefficient_.value()));
+
+        this->refGrad() = 0.0;
+
+        scalarField c
+        (
+             constant::mathematical::pi
+            *alpha
+            *gs0
+            *(scalar(1) - sqr(restitutionCoefficient_.value()))
+            *sqrt(3.0*Theta)
+            /max(4.0*kappa*alphaMax.value(), SMALL)
+        );
+
+        this->valueFraction() = c/(c + patch().deltaCoeffs());
+    }
+
+    // for a restitution coefficient of 1, the boundary degenerates to a fixed
+    // gradient condition
+    else
+    {
+        this->refValue() = 0.0;
+
+        this->refGrad() =
+            pos(alpha - SMALL)
+           *constant::mathematical::pi
+           *specularityCoefficient_.value()
+           *alpha
+           *gs0
+           *sqrt(3.0*Theta)
+           *magSqr(U)
+           /max(6.0*kappa*alphaMax.value(), SMALL);
+
+        this->valueFraction() = 0.0;
+    }
+
+    mixedFvPatchScalarField::updateCoeffs();
+}
+
+
+void Foam::JohnsonJacksonParticleThetaFvPatchScalarField::write
+(
+    Ostream& os
+) const
+{
+    fvPatchScalarField::write(os);
+    os.writeKeyword("restitutionCoefficient")
+        << restitutionCoefficient_ << token::END_STATEMENT << nl;
+    os.writeKeyword("specularityCoefficient")
+        << specularityCoefficient_ << token::END_STATEMENT << nl;
+    writeEntry("value", os);
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleTheta/JohnsonJacksonParticleThetaFvPatchScalarField.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleTheta/JohnsonJacksonParticleThetaFvPatchScalarField.H
new file mode 100644
index 0000000000000000000000000000000000000000..5391e8c27d66326296b8fe3b2dda69cba9987dac
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleTheta/JohnsonJacksonParticleThetaFvPatchScalarField.H
@@ -0,0 +1,179 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::JohnsonJacksonParticleThetaFvPatchScalarField
+
+Description
+    Robin condition for the particulate granular temperature.
+
+    References:
+    \verbatim
+        "Multifluid Eulerian modeling of dense gas–solids fluidized bed
+         hydrodynamics: Influence of the dissipation parameters"
+        Reuge, N.,
+        Chemical Engineering Science
+        Volume 63, Issue 22, November 2008, pp. 5540-5551
+    \endverbatim
+
+    \verbatim
+        "Frictional-collisional constitutive relations for granular materials,
+         with application to plane shearing"
+        Johnson, P.C., and Jackson, R.,
+        Journal of Fluid Mechanics
+        Volume 176, March 1987, pp. 67-93
+    \endverbatim
+
+SourceFiles
+    JohnsonJacksonParticleThetaFvPatchScalarField.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef JohnsonJacksonParticleThetaFvPatchScalarField_H
+#define JohnsonJacksonParticleThetaFvPatchScalarField_H
+
+#include "mixedFvPatchFields.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+        Class JohnsonJacksonParticleThetaFvPatchScalarField Declaration
+\*---------------------------------------------------------------------------*/
+
+class JohnsonJacksonParticleThetaFvPatchScalarField
+:
+    public mixedFvPatchScalarField
+{
+    // Private data
+
+        //- Particle-wall restitution coefficient
+        dimensionedScalar restitutionCoefficient_;
+
+        //- Specularity coefficient
+        dimensionedScalar specularityCoefficient_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("JohnsonJacksonParticleTheta");
+
+
+    // Constructors
+
+        //- Construct from patch and internal field
+        JohnsonJacksonParticleThetaFvPatchScalarField
+        (
+            const fvPatch&,
+            const DimensionedField<scalar, volMesh>&
+        );
+
+        //- Construct from patch, internal field and dictionary
+        JohnsonJacksonParticleThetaFvPatchScalarField
+        (
+            const fvPatch&,
+            const DimensionedField<scalar, volMesh>&,
+            const dictionary&
+        );
+
+        //- Construct by mapping onto a new patch
+        JohnsonJacksonParticleThetaFvPatchScalarField
+        (
+            const JohnsonJacksonParticleThetaFvPatchScalarField&,
+            const fvPatch&,
+            const DimensionedField<scalar, volMesh>&,
+            const fvPatchFieldMapper&
+        );
+
+        //- Construct as copy
+        JohnsonJacksonParticleThetaFvPatchScalarField
+        (
+            const JohnsonJacksonParticleThetaFvPatchScalarField&
+        );
+
+        //- Construct and return a clone
+        virtual tmp<fvPatchScalarField> clone() const
+        {
+            return tmp<fvPatchScalarField>
+            (
+                new JohnsonJacksonParticleThetaFvPatchScalarField(*this)
+            );
+        }
+
+        //- Construct as copy setting internal field reference
+        JohnsonJacksonParticleThetaFvPatchScalarField
+        (
+            const JohnsonJacksonParticleThetaFvPatchScalarField&,
+            const DimensionedField<scalar, volMesh>&
+        );
+
+        //- Construct and return a clone setting internal field reference
+        virtual tmp<fvPatchScalarField> clone
+        (
+            const DimensionedField<scalar, volMesh>& iF
+        ) const
+        {
+            return tmp<fvPatchScalarField>
+            (
+                new JohnsonJacksonParticleThetaFvPatchScalarField(*this, iF)
+            );
+        }
+
+
+    // Member functions
+
+        // Mapping functions
+
+            //- Map (and resize as needed) from self given a mapping object
+            virtual void autoMap
+            (
+                const fvPatchFieldMapper&
+            );
+
+            //- Reverse map the given fvPatchField onto this fvPatchField
+            virtual void rmap
+            (
+                const fvPatchScalarField&,
+                const labelList&
+            );
+
+        //- Update the coefficients
+        virtual void updateCoeffs();
+
+        //- Write
+        virtual void write(Ostream&) const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/JohnsonJackson/JohnsonJacksonFrictionalStress.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/JohnsonJackson/JohnsonJacksonFrictionalStress.C
new file mode 100644
index 0000000000000000000000000000000000000000..9f2be1a235ff6bff0467523fd0a22872e8556f66
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/JohnsonJackson/JohnsonJacksonFrictionalStress.C
@@ -0,0 +1,144 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "JohnsonJacksonFrictionalStress.H"
+#include "addToRunTimeSelectionTable.H"
+#include "mathematicalConstants.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace kineticTheoryModels
+{
+namespace frictionalStressModels
+{
+    defineTypeNameAndDebug(JohnsonJackson, 0);
+
+    addToRunTimeSelectionTable
+    (
+        frictionalStressModel,
+        JohnsonJackson,
+        dictionary
+    );
+}
+}
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::kineticTheoryModels::frictionalStressModels::JohnsonJackson::
+JohnsonJackson
+(
+    const dictionary& dict
+)
+:
+    frictionalStressModel(dict),
+    coeffDict_(dict.subDict(typeName + "Coeffs")),
+    Fr_("Fr", dimensionSet(1, -1, -2, 0, 0), coeffDict_.lookup("Fr")),
+    eta_("eta", dimless, coeffDict_.lookup("eta")),
+    p_("p", dimless, coeffDict_.lookup("p")),
+    phi_("phi", dimless, coeffDict_.lookup("phi")),
+    alphaDeltaMin_("alphaDeltaMin", dimless, coeffDict_.lookup("alphaDeltaMin"))
+{
+    phi_ *= constant::mathematical::pi/180.0;
+}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::kineticTheoryModels::frictionalStressModels::JohnsonJackson::
+~JohnsonJackson()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volScalarField>
+Foam::kineticTheoryModels::frictionalStressModels::JohnsonJackson::
+frictionalPressure
+(
+    const volScalarField& alpha1,
+    const dimensionedScalar& alphaMinFriction,
+    const dimensionedScalar& alphaMax
+) const
+{
+
+    return
+        Fr_*pow(max(alpha1 - alphaMinFriction, scalar(0)), eta_)
+       /pow(max(alphaMax - alpha1, alphaDeltaMin_), p_);
+}
+
+
+Foam::tmp<Foam::volScalarField>
+Foam::kineticTheoryModels::frictionalStressModels::JohnsonJackson::
+frictionalPressurePrime
+(
+    const volScalarField& alpha1,
+    const dimensionedScalar& alphaMinFriction,
+    const dimensionedScalar& alphaMax
+) const
+{
+    return Fr_*
+    (
+        eta_*pow(max(alpha1 - alphaMinFriction, scalar(0)), eta_ - 1.0)
+       *(alphaMax-alpha1)
+      + p_*pow(max(alpha1 - alphaMinFriction, scalar(0)), eta_)
+    )/pow(max(alphaMax - alpha1, alphaDeltaMin_), p_ + 1.0);
+}
+
+
+Foam::tmp<Foam::volScalarField>
+Foam::kineticTheoryModels::frictionalStressModels::JohnsonJackson::nu
+(
+    const volScalarField& alpha1,
+    const dimensionedScalar& alphaMax,
+    const volScalarField& pf,
+    const volSymmTensorField& D
+) const
+{
+    return dimensionedScalar("0.5", dimTime, 0.5)*pf*sin(phi_);
+}
+
+
+bool Foam::kineticTheoryModels::frictionalStressModels::JohnsonJackson::read()
+{
+    coeffDict_ <<= dict_.subDict(typeName + "Coeffs");
+
+    Fr_.read(coeffDict_);
+    eta_.read(coeffDict_);
+    p_.read(coeffDict_);
+
+    phi_.read(coeffDict_);
+    phi_ *= constant::mathematical::pi/180.0;
+
+    alphaDeltaMin_.read(coeffDict_);
+
+    return true;
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/JohnsonJackson/JohnsonJacksonFrictionalStress.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/JohnsonJackson/JohnsonJacksonFrictionalStress.H
new file mode 100644
index 0000000000000000000000000000000000000000..cc5a9dc5ea143e13dc480c137b7d403f5d35b59c
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/JohnsonJackson/JohnsonJacksonFrictionalStress.H
@@ -0,0 +1,130 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::kineticTheoryModels::frictionalStressModels::JohnsonJackson
+
+Description
+
+SourceFiles
+    JohnsonJacksonFrictionalStress.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef JohnsonJackson_H
+#define JohnsonJackson_H
+
+#include "frictionalStressModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace kineticTheoryModels
+{
+namespace frictionalStressModels
+{
+
+/*---------------------------------------------------------------------------*\
+               Class JohnsonJackson Declaration
+\*---------------------------------------------------------------------------*/
+
+class JohnsonJackson
+:
+    public frictionalStressModel
+{
+    // Private data
+
+        dictionary coeffDict_;
+
+        //- Material constant for frictional normal stress
+        dimensionedScalar Fr_;
+
+        //- Material constant for frictional normal stress
+        dimensionedScalar eta_;
+
+        //- Material constant for frictional normal stress
+        dimensionedScalar p_;
+
+        //- Angle of internal friction
+        dimensionedScalar phi_;
+
+        //- Lower limit for (alphaMax - alpha1)
+        dimensionedScalar alphaDeltaMin_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("JohnsonJackson");
+
+
+    // Constructors
+
+        //- Construct from components
+        JohnsonJackson(const dictionary& dict);
+
+
+    //- Destructor
+    virtual ~JohnsonJackson();
+
+
+    // Member functions
+
+        virtual tmp<volScalarField> frictionalPressure
+        (
+            const volScalarField& alpha1,
+            const dimensionedScalar& alphaMinFriction,
+            const dimensionedScalar& alphaMax
+        ) const;
+
+        virtual tmp<volScalarField> frictionalPressurePrime
+        (
+            const volScalarField& alpha1,
+            const dimensionedScalar& alphaMinFriction,
+            const dimensionedScalar& alphaMax
+        ) const;
+
+        virtual tmp<volScalarField> nu
+        (
+            const volScalarField& alpha1,
+            const dimensionedScalar& alphaMax,
+            const volScalarField& pf,
+            const volSymmTensorField& D
+        ) const;
+
+        virtual bool read();
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace frictionalStressModels
+} // End namespace kineticTheoryModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/Schaeffer/SchaefferFrictionalStress.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/Schaeffer/SchaefferFrictionalStress.C
new file mode 100644
index 0000000000000000000000000000000000000000..7d0a4decd069b863b7cfc079d59c65e0d57e0bd8
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/Schaeffer/SchaefferFrictionalStress.C
@@ -0,0 +1,170 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "SchaefferFrictionalStress.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace kineticTheoryModels
+{
+namespace frictionalStressModels
+{
+    defineTypeNameAndDebug(Schaeffer, 0);
+
+    addToRunTimeSelectionTable
+    (
+        frictionalStressModel,
+        Schaeffer,
+        dictionary
+    );
+}
+}
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::kineticTheoryModels::frictionalStressModels::Schaeffer::Schaeffer
+(
+    const dictionary& dict
+)
+:
+    frictionalStressModel(dict),
+    coeffDict_(dict.subDict(typeName + "Coeffs")),
+    phi_("phi", dimless, coeffDict_.lookup("phi"))
+{
+    phi_ *= constant::mathematical::pi/180.0;
+}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::kineticTheoryModels::frictionalStressModels::Schaeffer::~Schaeffer()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volScalarField>
+Foam::kineticTheoryModels::frictionalStressModels::Schaeffer::
+frictionalPressure
+(
+    const volScalarField& alpha1,
+    const dimensionedScalar& alphaMinFriction,
+    const dimensionedScalar& alphaMax
+) const
+{
+    return
+        dimensionedScalar("1e24", dimensionSet(1, -1, -2, 0, 0), 1e24)
+       *pow(Foam::max(alpha1 - alphaMinFriction, scalar(0)), 10.0);
+}
+
+
+Foam::tmp<Foam::volScalarField>
+Foam::kineticTheoryModels::frictionalStressModels::Schaeffer::
+frictionalPressurePrime
+(
+    const volScalarField& alpha1,
+    const dimensionedScalar& alphaMinFriction,
+    const dimensionedScalar& alphaMax
+) const
+{
+    return
+        dimensionedScalar("1e25", dimensionSet(1, -1, -2, 0, 0), 1e25)
+       *pow(Foam::max(alpha1 - alphaMinFriction, scalar(0)), 9.0);
+}
+
+
+Foam::tmp<Foam::volScalarField>
+Foam::kineticTheoryModels::frictionalStressModels::Schaeffer::nu
+(
+    const volScalarField& alpha1,
+    const dimensionedScalar& alphaMax,
+    const volScalarField& pf,
+    const volSymmTensorField& D
+) const
+{
+    const scalar I2Dsmall = 1.0e-15;
+
+    // Creating nu assuming it should be 0 on the boundary which may not be
+    // true
+    tmp<volScalarField> tnu
+    (
+        new volScalarField
+        (
+            IOobject
+            (
+                "Schaeffer:nu",
+                alpha1.mesh().time().timeName(),
+                alpha1.mesh(),
+                IOobject::NO_READ,
+                IOobject::NO_WRITE,
+                false
+            ),
+            alpha1.mesh(),
+            dimensionedScalar("nu", dimensionSet(0, 2, -1, 0, 0), 0.0)
+        )
+    );
+
+    volScalarField& nuf = tnu();
+
+    forAll (D, celli)
+    {
+        if (alpha1[celli] > alphaMax.value() - 5e-2)
+        {
+            nuf[celli] =
+                0.5*pf[celli]*sin(phi_.value())
+               /(
+                    sqrt(1.0/6.0*(sqr(D[celli].xx() - D[celli].yy())
+                  + sqr(D[celli].yy() - D[celli].zz())
+                  + sqr(D[celli].zz() - D[celli].xx()))
+                  + sqr(D[celli].xy()) + sqr(D[celli].xz())
+                  + sqr(D[celli].yz())) + I2Dsmall
+                );
+        }
+    }
+
+    // Correct coupled BCs
+    nuf.correctBoundaryConditions();
+
+    return tnu;
+}
+
+
+bool Foam::kineticTheoryModels::frictionalStressModels::Schaeffer::read()
+{
+    coeffDict_ <<= dict_.subDict(typeName + "Coeffs");
+
+    phi_.read(coeffDict_);
+    phi_ *= constant::mathematical::pi/180.0;
+
+    return true;
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/Schaeffer/SchaefferFrictionalStress.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/Schaeffer/SchaefferFrictionalStress.H
new file mode 100644
index 0000000000000000000000000000000000000000..7ff4862348aea50bc0157ee6f26e361675cb66ad
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/Schaeffer/SchaefferFrictionalStress.H
@@ -0,0 +1,118 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::kineticTheoryModels::frictionalStressModels::Schaeffer
+
+Description
+
+SourceFiles
+    SchaefferFrictionalStress.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef Schaeffer_H
+#define Schaeffer_H
+
+#include "frictionalStressModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace kineticTheoryModels
+{
+namespace frictionalStressModels
+{
+
+/*---------------------------------------------------------------------------*\
+                           Class Schaeffer Declaration
+\*---------------------------------------------------------------------------*/
+
+class Schaeffer
+:
+    public frictionalStressModel
+{
+    // Private data
+
+        dictionary coeffDict_;
+
+        //- Angle of internal friction
+        dimensionedScalar phi_;
+
+
+public:
+
+        //- Runtime type information
+        TypeName("Schaeffer");
+
+
+    // Constructors
+
+        //- Construct from components
+        Schaeffer(const dictionary& dict);
+
+
+    //- Destructor
+    virtual ~Schaeffer();
+
+
+    // Member functions
+
+        virtual tmp<volScalarField> frictionalPressure
+        (
+            const volScalarField& alpha1,
+            const dimensionedScalar& alphaMinFriction,
+            const dimensionedScalar& alphaMax
+        ) const;
+
+        virtual tmp<volScalarField> frictionalPressurePrime
+        (
+            const volScalarField& alpha1,
+            const dimensionedScalar& alphaMinFriction,
+            const dimensionedScalar& alphaMax
+        ) const;
+
+        virtual tmp<volScalarField> nu
+        (
+            const volScalarField& alpha1,
+            const dimensionedScalar& alphaMax,
+            const volScalarField& pf,
+            const volSymmTensorField& D
+        ) const;
+
+        virtual bool read();
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace frictionalStressModels
+} // End namespace kineticTheoryModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/frictionalStressModel/frictionalStressModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/frictionalStressModel/frictionalStressModel.C
new file mode 100644
index 0000000000000000000000000000000000000000..3a764313a7bb6e2b3c8ca37795c5cd7a97795ab0
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/frictionalStressModel/frictionalStressModel.C
@@ -0,0 +1,58 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "frictionalStressModel.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace kineticTheoryModels
+{
+    defineTypeNameAndDebug(frictionalStressModel, 0);
+
+    defineRunTimeSelectionTable(frictionalStressModel, dictionary);
+}
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::kineticTheoryModels::frictionalStressModel::frictionalStressModel
+(
+    const dictionary& dict
+)
+:
+    dict_(dict)
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::kineticTheoryModels::frictionalStressModel::~frictionalStressModel()
+{}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/frictionalStressModel/frictionalStressModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/frictionalStressModel/frictionalStressModel.H
new file mode 100644
index 0000000000000000000000000000000000000000..0e08f7ec8c885c20e983bce95328f0f1cbad33aa
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/frictionalStressModel/frictionalStressModel.H
@@ -0,0 +1,143 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::kineticTheoryModels::frictionalStressModel
+
+SourceFiles
+    frictionalStressModel.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef frictionalStressModel_H
+#define frictionalStressModel_H
+
+#include "dictionary.H"
+#include "volFields.H"
+#include "dimensionedTypes.H"
+#include "runTimeSelectionTables.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace kineticTheoryModels
+{
+
+/*---------------------------------------------------------------------------*\
+                           Class frictionalStressModel Declaration
+\*---------------------------------------------------------------------------*/
+
+class frictionalStressModel
+{
+    // Private member functions
+
+        //- Disallow default bitwise copy construct
+        frictionalStressModel(const frictionalStressModel&);
+
+        //- Disallow default bitwise assignment
+        void operator=(const frictionalStressModel&);
+
+
+protected:
+
+    // Protected data
+
+        //- Reference to higher-level dictionary for re-read
+        const dictionary& dict_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("frictionalStressModel");
+
+    // Declare runtime constructor selection table
+    declareRunTimeSelectionTable
+    (
+        autoPtr,
+        frictionalStressModel,
+        dictionary,
+        (
+            const dictionary& dict
+        ),
+        (dict)
+    );
+
+
+    // Constructors
+
+        //- Construct from components
+        frictionalStressModel(const dictionary& dict);
+
+
+    // Selectors
+
+        static autoPtr<frictionalStressModel> New
+        (
+            const dictionary& dict
+        );
+
+
+    //- Destructor
+    virtual ~frictionalStressModel();
+
+
+    // Member Functions
+
+        virtual tmp<volScalarField> frictionalPressure
+        (
+            const volScalarField& alpha1,
+            const dimensionedScalar& alphaMinFriction,
+            const dimensionedScalar& alphaMax
+        ) const = 0;
+
+        virtual tmp<volScalarField> frictionalPressurePrime
+        (
+            const volScalarField& alpha1f,
+            const dimensionedScalar& alphaMinFriction,
+            const dimensionedScalar& alphaMax
+        ) const = 0;
+
+        virtual tmp<volScalarField> nu
+        (
+            const volScalarField& alpha1,
+            const dimensionedScalar& alphaMax,
+            const volScalarField& pf,
+            const volSymmTensorField& D
+        ) const = 0;
+
+        virtual bool read() = 0;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace kineticTheoryModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/frictionalStressModel/newFrictionalStressModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/frictionalStressModel/newFrictionalStressModel.C
new file mode 100644
index 0000000000000000000000000000000000000000..db6102174a24a098fa7087969f67acbca719369b
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/frictionalStressModel/newFrictionalStressModel.C
@@ -0,0 +1,60 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "frictionalStressModel.H"
+
+// * * * * * * * * * * * * * * * * Selectors * * * * * * * * * * * * * * * * //
+
+Foam::autoPtr<Foam::kineticTheoryModels::frictionalStressModel>
+Foam::kineticTheoryModels::frictionalStressModel::New
+(
+    const dictionary& dict
+)
+{
+    word frictionalStressModelType(dict.lookup("frictionalStressModel"));
+
+    Info<< "Selecting frictionalStressModel "
+        << frictionalStressModelType << endl;
+
+    dictionaryConstructorTable::iterator cstrIter =
+        dictionaryConstructorTablePtr_->find(frictionalStressModelType);
+
+    if (cstrIter == dictionaryConstructorTablePtr_->end())
+    {
+        FatalError
+            << "frictionalStressModel::New(const dictionary&) : " << endl
+            << "    unknown frictionalStressModelType type "
+            << frictionalStressModelType
+            << ", constructor not in hash table" << endl << endl
+            << "    Valid frictionalStressModelType types are :" << endl;
+        Info<< dictionaryConstructorTablePtr_->sortedToc()
+            << abort(FatalError);
+    }
+
+    return autoPtr<frictionalStressModel>(cstrIter()(dict));
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/Lun/LunPressure.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/Lun/LunPressure.C
new file mode 100644
index 0000000000000000000000000000000000000000..3a94ea5734777e8ce390f52691a59da466f39fef
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/Lun/LunPressure.C
@@ -0,0 +1,98 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "LunPressure.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace kineticTheoryModels
+{
+namespace granularPressureModels
+{
+    defineTypeNameAndDebug(Lun, 0);
+
+    addToRunTimeSelectionTable
+    (
+        granularPressureModel,
+        Lun,
+        dictionary
+    );
+}
+}
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::kineticTheoryModels::granularPressureModels::Lun::Lun
+(
+    const dictionary& dict
+)
+:
+    granularPressureModel(dict)
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::kineticTheoryModels::granularPressureModels::Lun::~Lun()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volScalarField>
+Foam::kineticTheoryModels::granularPressureModels::Lun::granularPressureCoeff
+(
+    const volScalarField& alpha1,
+    const volScalarField& g0,
+    const volScalarField& rho1,
+    const dimensionedScalar& e
+) const
+{
+
+    return rho1*alpha1*(1.0 + 2.0*(1.0 + e)*alpha1*g0);
+}
+
+
+Foam::tmp<Foam::volScalarField>
+Foam::kineticTheoryModels::granularPressureModels::Lun::
+granularPressureCoeffPrime
+(
+    const volScalarField& alpha1,
+    const volScalarField& g0,
+    const volScalarField& g0prime,
+    const volScalarField& rho1,
+    const dimensionedScalar& e
+) const
+{
+    return rho1*(1.0 + alpha1*(1.0 + e)*(4.0*g0 + 2.0*g0prime*alpha1));
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/Lun/LunPressure.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/Lun/LunPressure.H
new file mode 100644
index 0000000000000000000000000000000000000000..d82ba47d5b375e2ebda2b0cc6580929c2003d9e3
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/Lun/LunPressure.H
@@ -0,0 +1,104 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::Lun
+
+Description
+
+SourceFiles
+    LunPressure.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef Lun_H
+#define Lun_H
+
+#include "granularPressureModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace kineticTheoryModels
+{
+namespace granularPressureModels
+{
+
+/*---------------------------------------------------------------------------*\
+                           Class Lun Declaration
+\*---------------------------------------------------------------------------*/
+
+class Lun
+:
+    public granularPressureModel
+{
+
+public:
+
+    //- Runtime type information
+    TypeName("Lun");
+
+
+    // Constructors
+
+        //- Construct from components
+        Lun(const dictionary& dict);
+
+
+    //- Destructor
+    virtual ~Lun();
+
+
+    // Member Functions
+
+        tmp<volScalarField> granularPressureCoeff
+        (
+            const volScalarField& alpha1,
+            const volScalarField& g0,
+            const volScalarField& rho1,
+            const dimensionedScalar& e
+        ) const;
+
+        tmp<volScalarField> granularPressureCoeffPrime
+        (
+            const volScalarField& alpha1,
+            const volScalarField& g0,
+            const volScalarField& g0prime,
+            const volScalarField& rho1,
+            const dimensionedScalar& e
+        ) const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace granularPressureModels
+} // End namespace kineticTheoryModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/SyamlalRogersOBrien/SyamlalRogersOBrienPressure.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/SyamlalRogersOBrien/SyamlalRogersOBrienPressure.C
new file mode 100644
index 0000000000000000000000000000000000000000..8e45c45e21ba66c165c7b014d811b6bc13f4727d
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/SyamlalRogersOBrien/SyamlalRogersOBrienPressure.C
@@ -0,0 +1,101 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "SyamlalRogersOBrienPressure.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace kineticTheoryModels
+{
+namespace granularPressureModels
+{
+    defineTypeNameAndDebug(SyamlalRogersOBrien, 0);
+
+    addToRunTimeSelectionTable
+    (
+        granularPressureModel,
+        SyamlalRogersOBrien,
+        dictionary
+    );
+}
+}
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::kineticTheoryModels::granularPressureModels::SyamlalRogersOBrien::
+SyamlalRogersOBrien
+(
+    const dictionary& dict
+)
+:
+    granularPressureModel(dict)
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::kineticTheoryModels::granularPressureModels::SyamlalRogersOBrien::
+~SyamlalRogersOBrien()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volScalarField>
+Foam::kineticTheoryModels::granularPressureModels::SyamlalRogersOBrien::
+granularPressureCoeff
+(
+    const volScalarField& alpha1,
+    const volScalarField& g0,
+    const volScalarField& rho1,
+    const dimensionedScalar& e
+) const
+{
+
+    return 2.0*rho1*(1.0 + e)*sqr(alpha1)*g0;
+}
+
+
+Foam::tmp<Foam::volScalarField>
+Foam::kineticTheoryModels::granularPressureModels::SyamlalRogersOBrien::
+granularPressureCoeffPrime
+(
+    const volScalarField& alpha1,
+    const volScalarField& g0,
+    const volScalarField& g0prime,
+    const volScalarField& rho1,
+    const dimensionedScalar& e
+) const
+{
+    return rho1*alpha1*(1.0 + e)*(4.0*g0 + 2.0*g0prime*alpha1);
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/SyamlalRogersOBrien/SyamlalRogersOBrienPressure.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/SyamlalRogersOBrien/SyamlalRogersOBrienPressure.H
new file mode 100644
index 0000000000000000000000000000000000000000..3f420538f1fafcd5ee0ce4996989de8cae59339a
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/SyamlalRogersOBrien/SyamlalRogersOBrienPressure.H
@@ -0,0 +1,104 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::SyamlalRogersOBrien
+
+Description
+
+SourceFiles
+    SyamlalRogersOBrienPressure.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef SyamlalRogersOBrien_H
+#define SyamlalRogersOBrien_H
+
+#include "granularPressureModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace kineticTheoryModels
+{
+namespace granularPressureModels
+{
+
+/*---------------------------------------------------------------------------*\
+                           Class SyamlalRogersOBrien Declaration
+\*---------------------------------------------------------------------------*/
+
+class SyamlalRogersOBrien
+:
+    public granularPressureModel
+{
+
+public:
+
+    //- Runtime type information
+    TypeName("SyamlalRogersOBrien");
+
+
+    // Constructors
+
+        //- Construct from components
+        SyamlalRogersOBrien(const dictionary& dict);
+
+
+    //- Destructor
+    virtual ~SyamlalRogersOBrien();
+
+
+    // Member Functions
+
+        tmp<volScalarField> granularPressureCoeff
+        (
+            const volScalarField& alpha1,
+            const volScalarField& g0,
+            const volScalarField& rho1,
+            const dimensionedScalar& e
+        ) const;
+
+        tmp<volScalarField> granularPressureCoeffPrime
+        (
+            const volScalarField& alpha1,
+            const volScalarField& g0,
+            const volScalarField& g0prime,
+            const volScalarField& rho1,
+            const dimensionedScalar& e
+        ) const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace granularPressureModels
+} // End namespace kineticTheoryModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/granularPressureModel/granularPressureModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/granularPressureModel/granularPressureModel.C
new file mode 100644
index 0000000000000000000000000000000000000000..3a2214e9e63cdfd385f92ce3db441b2443ea4a68
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/granularPressureModel/granularPressureModel.C
@@ -0,0 +1,58 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "granularPressureModel.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace kineticTheoryModels
+{
+    defineTypeNameAndDebug(granularPressureModel, 0);
+
+    defineRunTimeSelectionTable(granularPressureModel, dictionary);
+}
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::kineticTheoryModels::granularPressureModel::granularPressureModel
+(
+    const dictionary& dict
+)
+:
+    dict_(dict)
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::kineticTheoryModels::granularPressureModel::~granularPressureModel()
+{}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/granularPressureModel/granularPressureModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/granularPressureModel/granularPressureModel.H
new file mode 100644
index 0000000000000000000000000000000000000000..06160f6c0ac834330d49642d07e247b178ffcca1
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/granularPressureModel/granularPressureModel.H
@@ -0,0 +1,142 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::kineticTheoryModels::granularPressureModel
+
+SourceFiles
+    granularPressureModel.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef granularPressureModel_H
+#define granularPressureModel_H
+
+#include "dictionary.H"
+#include "volFields.H"
+#include "dimensionedTypes.H"
+#include "runTimeSelectionTables.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace kineticTheoryModels
+{
+
+/*---------------------------------------------------------------------------*\
+                           Class granularPressureModel Declaration
+\*---------------------------------------------------------------------------*/
+
+class granularPressureModel
+{
+    // Private member functions
+
+        //- Disallow default bitwise copy construct
+        granularPressureModel(const granularPressureModel&);
+
+        //- Disallow default bitwise assignment
+        void operator=(const granularPressureModel&);
+
+
+protected:
+
+    // Protected data
+
+        const dictionary& dict_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("granularPressureModel");
+
+    // Declare runtime constructor selection table
+    declareRunTimeSelectionTable
+    (
+        autoPtr,
+        granularPressureModel,
+        dictionary,
+        (
+            const dictionary& dict
+        ),
+        (dict)
+    );
+
+
+    // Constructors
+
+        //- Construct from components
+        granularPressureModel(const dictionary& dict);
+
+
+    // Selectors
+
+        static autoPtr<granularPressureModel> New
+        (
+            const dictionary& dict
+        );
+
+
+    //- Destructor
+    virtual ~granularPressureModel();
+
+
+    // Member Functions
+
+        //- Granular pressure coefficient
+        virtual tmp<volScalarField> granularPressureCoeff
+        (
+            const volScalarField& alpha1,
+            const volScalarField& g0,
+            const volScalarField& rho1,
+            const dimensionedScalar& e
+        ) const = 0;
+
+        //- Derivative of the granular pressure coefficient
+        virtual tmp<volScalarField> granularPressureCoeffPrime
+        (
+            const volScalarField& alpha1,
+            const volScalarField& g0,
+            const volScalarField& g0prime,
+            const volScalarField& rho1,
+            const dimensionedScalar& e
+        ) const = 0;
+
+        virtual bool read()
+        {
+            return true;
+        }
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace kineticTheoryModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/granularPressureModel/newGranularPressureModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/granularPressureModel/newGranularPressureModel.C
new file mode 100644
index 0000000000000000000000000000000000000000..36b2c2b175ec15007558a51bea19fec6960175de
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/granularPressureModel/newGranularPressureModel.C
@@ -0,0 +1,60 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "granularPressureModel.H"
+
+// * * * * * * * * * * * * * * * * Selectors * * * * * * * * * * * * * * * * //
+
+Foam::autoPtr<Foam::kineticTheoryModels::granularPressureModel>
+Foam::kineticTheoryModels::granularPressureModel::New
+(
+    const dictionary& dict
+)
+{
+    word granularPressureModelType(dict.lookup("granularPressureModel"));
+
+    Info<< "Selecting granularPressureModel "
+        << granularPressureModelType << endl;
+
+    dictionaryConstructorTable::iterator cstrIter =
+        dictionaryConstructorTablePtr_->find(granularPressureModelType);
+
+    if (cstrIter == dictionaryConstructorTablePtr_->end())
+    {
+        FatalError
+            << "granularPressureModel::New(const dictionary&) : " << endl
+            << "    unknown granularPressureModelType type "
+            << granularPressureModelType
+            << ", constructor not in hash table" << endl << endl
+            << "    Valid granularPressureModelType types are :" << endl;
+        Info<< dictionaryConstructorTablePtr_->sortedToc()
+            << abort(FatalError);
+    }
+
+    return autoPtr<granularPressureModel>(cstrIter()(dict));
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.C
new file mode 100644
index 0000000000000000000000000000000000000000..8de1fdc9e11b6ac99540eda2602b597027bb655a
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.C
@@ -0,0 +1,540 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "kineticTheoryModel.H"
+#include "mathematicalConstants.H"
+#include "twoPhaseSystem.H"
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::RASModels::kineticTheoryModel::kineticTheoryModel
+(
+    const volScalarField& alpha,
+    const volScalarField& rho,
+    const volVectorField& U,
+    const surfaceScalarField& alphaRhoPhi,
+    const surfaceScalarField& phi,
+    const transportModel& phase,
+    const word& propertiesName,
+    const word& type
+)
+:
+    eddyViscosity<RASModel<PhaseCompressibleTurbulenceModel<phaseModel> > >
+    (
+        type,
+        alpha,
+        rho,
+        U,
+        alphaRhoPhi,
+        phi,
+        phase,
+        propertiesName
+    ),
+
+    phase_(phase),
+
+    viscosityModel_
+    (
+        kineticTheoryModels::viscosityModel::New
+        (
+            coeffDict_
+        )
+    ),
+    conductivityModel_
+    (
+        kineticTheoryModels::conductivityModel::New
+        (
+            coeffDict_
+        )
+    ),
+    radialModel_
+    (
+        kineticTheoryModels::radialModel::New
+        (
+            coeffDict_
+        )
+    ),
+    granularPressureModel_
+    (
+        kineticTheoryModels::granularPressureModel::New
+        (
+            coeffDict_
+        )
+    ),
+    frictionalStressModel_
+    (
+        kineticTheoryModels::frictionalStressModel::New
+        (
+            coeffDict_
+        )
+    ),
+
+    equilibrium_(coeffDict_.lookup("equilibrium")),
+    e_("e", dimless, coeffDict_.lookup("e")),
+    alphaMax_("alphaMax", dimless, coeffDict_.lookup("alphaMax")),
+    alphaMinFriction_
+    (
+        "alphaMinFriction",
+        dimless,
+        coeffDict_.lookup("alphaMinFriction")
+    ),
+    residualAlpha_
+    (
+        "residualAlpha",
+        dimless,
+        coeffDict_.lookup("residualAlpha")
+    ),
+
+    Theta_
+    (
+        IOobject
+        (
+            IOobject::groupName("Theta", phase.name()),
+            U.time().timeName(),
+            U.mesh(),
+            IOobject::MUST_READ,
+            IOobject::AUTO_WRITE
+        ),
+        U.mesh()
+    ),
+
+    lambda_
+    (
+        IOobject
+        (
+            IOobject::groupName("lambda", phase.name()),
+            U.time().timeName(),
+            U.mesh(),
+            IOobject::NO_READ,
+            IOobject::NO_WRITE
+        ),
+        U.mesh(),
+        dimensionedScalar("zero", dimensionSet(0, 2, -1, 0, 0), 0.0)
+    ),
+
+    gs0_
+    (
+        IOobject
+        (
+            IOobject::groupName("gs0", phase.name()),
+            U.time().timeName(),
+            U.mesh(),
+            IOobject::NO_READ,
+            IOobject::NO_WRITE
+        ),
+        U.mesh(),
+        dimensionedScalar("zero", dimensionSet(0, 0, 0, 0, 0), 0.0)
+    ),
+
+    kappa_
+    (
+        IOobject
+        (
+            IOobject::groupName("kappa", phase.name()),
+            U.time().timeName(),
+            U.mesh(),
+            IOobject::NO_READ,
+            IOobject::NO_WRITE
+        ),
+        U.mesh(),
+        dimensionedScalar("zero", dimensionSet(1, -1, -1, 0, 0), 0.0)
+    )
+{
+    if (type == typeName)
+    {
+        printCoeffs(type);
+    }
+}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::RASModels::kineticTheoryModel::~kineticTheoryModel()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+bool Foam::RASModels::kineticTheoryModel::read()
+{
+    if
+    (
+        eddyViscosity
+        <
+            RASModel<PhaseCompressibleTurbulenceModel<phaseModel> >
+        >::read()
+    )
+    {
+        coeffDict().lookup("equilibrium") >> equilibrium_;
+        e_.readIfPresent(coeffDict());
+        alphaMax_.readIfPresent(coeffDict());
+        alphaMinFriction_.readIfPresent(coeffDict());
+
+        viscosityModel_->read();
+        conductivityModel_->read();
+        radialModel_->read();
+        granularPressureModel_->read();
+        frictionalStressModel_->read();
+
+        return true;
+    }
+    else
+    {
+        return false;
+    }
+}
+
+
+Foam::tmp<Foam::volScalarField>
+Foam::RASModels::kineticTheoryModel::k() const
+{
+    notImplemented("kineticTheoryModel::k()");
+    return nut_;
+}
+
+
+Foam::tmp<Foam::volScalarField>
+Foam::RASModels::kineticTheoryModel::epsilon() const
+{
+    notImplemented("kineticTheoryModel::epsilon()");
+    return nut_;
+}
+
+
+Foam::tmp<Foam::volSymmTensorField>
+Foam::RASModels::kineticTheoryModel::R() const
+{
+    return tmp<volSymmTensorField>
+    (
+        new volSymmTensorField
+        (
+            IOobject
+            (
+                IOobject::groupName("R", U_.group()),
+                runTime_.timeName(),
+                mesh_,
+                IOobject::NO_READ,
+                IOobject::NO_WRITE
+            ),
+          - (nut_)*dev(twoSymm(fvc::grad(U_)))
+          - (lambda_*fvc::div(phi_))*symmTensor::I
+        )
+    );
+}
+
+
+Foam::tmp<Foam::volScalarField>
+Foam::RASModels::kineticTheoryModel::pPrime() const
+{
+    const volScalarField& rho = phase_.rho();
+
+    tmp<volScalarField> tpPrime
+    (
+        Theta_
+       *granularPressureModel_->granularPressureCoeffPrime
+        (
+            alpha_,
+            radialModel_->g0(alpha_, alphaMinFriction_, alphaMax_),
+            radialModel_->g0prime(alpha_, alphaMinFriction_, alphaMax_),
+            rho,
+            e_
+        )
+     +  frictionalStressModel_->frictionalPressurePrime
+        (
+            alpha_,
+            alphaMinFriction_,
+            alphaMax_
+        )
+    );
+
+    volScalarField::GeometricBoundaryField& bpPrime = tpPrime().boundaryField();
+
+    forAll(bpPrime, patchi)
+    {
+        if (!bpPrime[patchi].coupled())
+        {
+            bpPrime[patchi] == 0;
+        }
+    }
+
+    return tpPrime;
+}
+
+
+Foam::tmp<Foam::surfaceScalarField>
+Foam::RASModels::kineticTheoryModel::pPrimef() const
+{
+    return fvc::interpolate(pPrime());
+}
+
+
+Foam::tmp<Foam::volSymmTensorField>
+Foam::RASModels::kineticTheoryModel::devRhoReff() const
+{
+    return tmp<volSymmTensorField>
+    (
+        new volSymmTensorField
+        (
+            IOobject
+            (
+                IOobject::groupName("devRhoReff", U_.group()),
+                runTime_.timeName(),
+                mesh_,
+                IOobject::NO_READ,
+                IOobject::NO_WRITE
+            ),
+          - (rho_*nut_)
+           *dev(twoSymm(fvc::grad(U_)))
+          - ((rho_*lambda_)*fvc::div(phi_))*symmTensor::I
+        )
+    );
+}
+
+
+Foam::tmp<Foam::fvVectorMatrix>
+Foam::RASModels::kineticTheoryModel::divDevRhoReff
+(
+    volVectorField& U
+) const
+{
+    return
+    (
+      - fvm::laplacian(rho_*nut_, U)
+      - fvc::div
+        (
+            (rho_*nut_)*dev2(T(fvc::grad(U)))
+          + ((rho_*lambda_)*fvc::div(phi_))
+           *dimensioned<symmTensor>("I", dimless, symmTensor::I)
+        )
+    );
+}
+
+
+void Foam::RASModels::kineticTheoryModel::correct()
+{
+    // Local references
+    volScalarField alpha(max(alpha_, scalar(0)));
+    const volScalarField& rho = phase_.rho();
+    const surfaceScalarField& alphaRhoPhi = alphaRhoPhi_;
+    const volVectorField& U = U_;
+    const volVectorField& Uc_ =
+        refCast<const twoPhaseSystem>(phase_.fluid()).otherPhase(phase_).U();
+
+    const scalar sqrtPi = sqrt(constant::mathematical::pi);
+    dimensionedScalar ThetaSmall("ThetaSmall", Theta_.dimensions(), 1.0e-6);
+    dimensionedScalar ThetaSmallSqrt(sqrt(ThetaSmall));
+
+    tmp<volScalarField> tda(phase_.d());
+    const volScalarField& da = tda();
+
+    tmp<volTensorField> tgradU(fvc::grad(U_));
+    const volTensorField& gradU(tgradU());
+    volSymmTensorField D(symm(gradU));
+
+    // Calculating the radial distribution function
+    gs0_ = radialModel_->g0(alpha, alphaMinFriction_, alphaMax_);
+
+    if (!equilibrium_)
+    {
+        // Particle viscosity (Table 3.2, p.47)
+        nut_ = viscosityModel_->nu(alpha, Theta_, gs0_, rho, da, e_);
+
+        volScalarField ThetaSqrt("sqrtTheta", sqrt(Theta_));
+
+        // Bulk viscosity  p. 45 (Lun et al. 1984).
+        lambda_ = (4.0/3.0)*sqr(alpha)*da*gs0_*(1.0 + e_)*ThetaSqrt/sqrtPi;
+
+        // Stress tensor, Definitions, Table 3.1, p. 43
+        volSymmTensorField tau
+        (
+            rho*(2.0*nut_*D + (lambda_ - (2.0/3.0)*nut_)*tr(D)*I)
+        );
+
+        // Dissipation (Eq. 3.24, p.50)
+        volScalarField gammaCoeff
+        (
+            "gammaCoeff",
+            12.0*(1.0 - sqr(e_))
+           *max(sqr(alpha), residualAlpha_)
+           *rho*gs0_*(1.0/da)*ThetaSqrt/sqrtPi
+        );
+
+        // Drag
+        volScalarField beta
+        (
+            refCast<const twoPhaseSystem>(phase_.fluid()).drag(phase_).K()
+        );
+
+        // Eq. 3.25, p. 50 Js = J1 - J2
+        volScalarField J1("J1", 3.0*beta);
+        volScalarField J2
+        (
+            "J2",
+            0.25*sqr(beta)*da*magSqr(U - Uc_)
+           /(
+               max(alpha, residualAlpha_)*rho
+              *sqrtPi*(ThetaSqrt + ThetaSmallSqrt)
+            )
+        );
+
+        // particle pressure - coefficient in front of Theta (Eq. 3.22, p. 45)
+        volScalarField PsCoeff
+        (
+            granularPressureModel_->granularPressureCoeff
+            (
+                alpha,
+                gs0_,
+                rho,
+                e_
+            )
+        );
+
+        // 'thermal' conductivity (Table 3.3, p. 49)
+        kappa_ = conductivityModel_->kappa(alpha, Theta_, gs0_, rho, da, e_);
+
+        // Construct the granular temperature equation (Eq. 3.20, p. 44)
+        // NB. note that there are two typos in Eq. 3.20:
+        //     Ps should be without grad
+        //     the laplacian has the wrong sign
+        fvScalarMatrix ThetaEqn
+        (
+            1.5*
+            (
+                fvm::ddt(alpha, rho, Theta_)
+              + fvm::div(alphaRhoPhi, Theta_)
+              - fvc::Sp(fvc::ddt(alpha, rho) + fvc::div(alphaRhoPhi), Theta_)
+            )
+          - fvm::laplacian(kappa_, Theta_, "laplacian(kappa,Theta)")
+         ==
+            fvm::SuSp(-((PsCoeff*I) && gradU), Theta_)
+          + (tau && gradU)
+          + fvm::Sp(-gammaCoeff, Theta_)
+          + fvm::Sp(-J1, Theta_)
+          + fvm::Sp(J2/(Theta_ + ThetaSmall), Theta_)
+        );
+
+        ThetaEqn.relax();
+        ThetaEqn.solve();
+    }
+    else
+    {
+        // Equilibrium => dissipation == production
+        // Eq. 4.14, p.82
+        volScalarField K1("K1", 2.0*(1.0 + e_)*rho*gs0_);
+        volScalarField K3
+        (
+            "K3",
+            0.5*da*rho*
+            (
+                (sqrtPi/(3.0*(3.0 - e_)))
+               *(1.0 + 0.4*(1.0 + e_)*(3.0*e_ - 1.0)*alpha*gs0_)
+               +1.6*alpha*gs0_*(1.0 + e_)/sqrtPi
+            )
+        );
+
+        volScalarField K2
+        (
+            "K2",
+            4.0*da*rho*(1.0 + e_)*alpha*gs0_/(3.0*sqrtPi) - 2.0*K3/3.0
+        );
+
+        volScalarField K4("K4", 12.0*(1.0 - sqr(e_))*rho*gs0_/(da*sqrtPi));
+
+        volScalarField trD
+        (
+            "trD",
+            alpha/(alpha + residualAlpha_)
+           *fvc::div(phi_)
+        );
+        volScalarField tr2D("tr2D", sqr(trD));
+        volScalarField trD2("trD2", tr(D & D));
+
+        volScalarField t1("t1", K1*alpha + rho);
+        volScalarField l1("l1", -t1*trD);
+        volScalarField l2("l2", sqr(t1)*tr2D);
+        volScalarField l3
+        (
+            "l3",
+            4.0
+           *K4
+           *alpha
+           *(2.0*K3*trD2 + K2*tr2D)
+        );
+
+        Theta_ = sqr
+        (
+            (l1 + sqrt(l2 + l3))
+           /(2.0*max(alpha, residualAlpha_)*K4)
+        );
+
+        kappa_ = conductivityModel_->kappa(alpha, Theta_, gs0_, rho, da, e_);
+    }
+
+    Theta_.max(0);
+    Theta_.min(100);
+
+    {
+        // particle viscosity (Table 3.2, p.47)
+        nut_ = viscosityModel_->nu(alpha, Theta_, gs0_, rho, da, e_);
+
+        volScalarField ThetaSqrt("sqrtTheta", sqrt(Theta_));
+
+        // Bulk viscosity  p. 45 (Lun et al. 1984).
+        lambda_ = (4.0/3.0)*sqr(alpha)*da*gs0_*(1.0 + e_)*ThetaSqrt/sqrtPi;
+
+        // Frictional pressure
+        volScalarField pf
+        (
+            frictionalStressModel_->frictionalPressure
+            (
+                alpha,
+                alphaMinFriction_,
+                alphaMax_
+            )
+        );
+
+        // Add frictional shear viscosity, Eq. 3.30, p. 52
+        nut_ += frictionalStressModel_->nu
+        (
+            alpha,
+            alphaMax_,
+            pf/rho,
+            D
+        );
+
+        // Limit viscosity
+        nut_.min(100);
+    }
+
+    if (debug)
+    {
+        Info<< typeName << ':' << nl
+            << "    max(Theta) = " << max(Theta_).value() << nl
+            << "    max(nut) = " << max(nut_).value() << endl;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.H
new file mode 100644
index 0000000000000000000000000000000000000000..bfa1f872cb877ecdfd0e15e5e2d0faf8cbc5ef25
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.H
@@ -0,0 +1,230 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::kineticTheoryModel
+
+Description
+    Kinetic theory particle phase RAS model
+
+    Reference:
+    \verbatim
+        "Derivation, implementation, and validation of computer simulation
+         models for gas-solid fluidized beds",
+        van Wachem, B.G.M.,
+        Ph.D. Thesis, Delft University of Technology, Amsterdam, 2000.
+    \endverbatim
+
+    There are no default model coefficients.
+
+SourceFiles
+    kineticTheoryModel.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef kineticTheoryModel_H
+#define kineticTheoryModel_H
+
+#include "RASModel.H"
+#include "eddyViscosity.H"
+#include "PhaseCompressibleTurbulenceModel.H"
+#include "phaseModel.H"
+#include "dragModel.H"
+#include "viscosityModel.H"
+#include "conductivityModel.H"
+#include "radialModel.H"
+#include "granularPressureModel.H"
+#include "frictionalStressModel.H"
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace RASModels
+{
+
+/*---------------------------------------------------------------------------*\
+                           Class kineticTheoryModel Declaration
+\*---------------------------------------------------------------------------*/
+
+class kineticTheoryModel
+:
+    public eddyViscosity
+    <
+        RASModel<PhaseCompressibleTurbulenceModel<phaseModel> >
+    >
+{
+    // Private data
+
+        // Input Fields
+
+            const phaseModel& phase_;
+
+
+        // Sub-models
+
+            //- Run-time selected viscosity model
+            autoPtr<kineticTheoryModels::viscosityModel> viscosityModel_;
+
+            //- Run-time selected conductivity model
+            autoPtr<kineticTheoryModels::conductivityModel> conductivityModel_;
+
+            //- Run-time selected radial distribution model
+            autoPtr<kineticTheoryModels::radialModel> radialModel_;
+
+            //- Run-time selected granular pressure model
+            autoPtr<kineticTheoryModels::granularPressureModel>
+                granularPressureModel_;
+
+            //- Run-time selected frictional stress model
+            autoPtr<kineticTheoryModels::frictionalStressModel>
+                frictionalStressModel_;
+
+
+        // Kinetic Theory Model coefficients
+
+            //- Use equilibrium approximation: generation == dissipation
+            Switch equilibrium_;
+
+            //- Coefficient of restitution
+            dimensionedScalar e_;
+
+            //- Maximum packing phase-fraction
+            dimensionedScalar alphaMax_;
+
+            //- Min value for which the frictional stresses are zero
+            dimensionedScalar alphaMinFriction_;
+
+            //- Residual phase fraction
+            dimensionedScalar residualAlpha_;
+
+
+        // Kinetic Theory Model Fields
+
+            //- The granular energy/temperature
+            volScalarField Theta_;
+
+            //- The granular bulk viscosity
+            volScalarField lambda_;
+
+            //- The granular radial distribution
+            volScalarField gs0_;
+
+            //- The granular "thermal" conductivity
+            volScalarField kappa_;
+
+
+    // Private Member Functions
+
+        void correctNut()
+        {}
+
+        //- Disallow default bitwise copy construct
+        kineticTheoryModel(const kineticTheoryModel&);
+
+        //- Disallow default bitwise assignment
+        void operator=(const kineticTheoryModel&);
+
+
+public:
+
+    //- Runtime type information
+    TypeName("kineticTheory");
+
+
+    // Constructors
+
+        //- Construct from components
+        kineticTheoryModel
+        (
+            const volScalarField& alpha,
+            const volScalarField& rho,
+            const volVectorField& U,
+            const surfaceScalarField& alphaRhoPhi,
+            const surfaceScalarField& phi,
+            const phaseModel& transport,
+            const word& propertiesName = turbulenceModel::propertiesName,
+            const word& type = typeName
+        );
+
+
+    //- Destructor
+    virtual ~kineticTheoryModel();
+
+
+    // Member Functions
+
+        //- Re-read model coefficients if they have changed
+        virtual bool read();
+
+        //- Return the effective viscosity
+        virtual tmp<volScalarField> nuEff() const
+        {
+            return this->nut();
+        }
+
+        //- Return the effective viscosity on patch
+        virtual tmp<scalarField> nuEff(const label patchi) const
+        {
+            return this->nut(patchi);
+        }
+
+        //- Return the turbulence kinetic energy
+        virtual tmp<volScalarField> k() const;
+
+        //- Return the turbulence kinetic energy dissipation rate
+        virtual tmp<volScalarField> epsilon() const;
+
+        //- Return the Reynolds stress tensor
+        virtual tmp<volSymmTensorField> R() const;
+
+        //- Return the phase-pressure'
+        // (derivative of phase-pressure w.r.t. phase-fraction)
+        virtual tmp<volScalarField> pPrime() const;
+
+        //- Return the face-phase-pressure'
+        // (derivative of phase-pressure w.r.t. phase-fraction)
+        virtual tmp<surfaceScalarField> pPrimef() const;
+
+        //- Return the effective stress tensor
+        virtual tmp<volSymmTensorField> devRhoReff() const;
+
+        //- Return the source term for the momentum equation
+        virtual tmp<fvVectorMatrix> divDevRhoReff(volVectorField& U) const;
+
+        //- Solve the kinetic theory equations and correct the viscosity
+        virtual void correct();
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace RASModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/CarnahanStarling/CarnahanStarlingRadial.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/CarnahanStarling/CarnahanStarlingRadial.C
new file mode 100644
index 0000000000000000000000000000000000000000..abc364979c56c56473fc76421dae0ce5d265fddb
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/CarnahanStarling/CarnahanStarlingRadial.C
@@ -0,0 +1,100 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "CarnahanStarlingRadial.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace kineticTheoryModels
+{
+namespace radialModels
+{
+    defineTypeNameAndDebug(CarnahanStarling, 0);
+
+    addToRunTimeSelectionTable
+    (
+        radialModel,
+        CarnahanStarling,
+        dictionary
+    );
+}
+}
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::kineticTheoryModels::radialModels::CarnahanStarling::CarnahanStarling
+(
+    const dictionary& dict
+)
+:
+    radialModel(dict)
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::kineticTheoryModels::radialModels::CarnahanStarling::~CarnahanStarling()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volScalarField>
+Foam::kineticTheoryModels::radialModels::CarnahanStarling::g0
+(
+    const volScalarField& alpha,
+    const dimensionedScalar& alphaMinFriction,
+    const dimensionedScalar& alphaMax
+) const
+{
+
+    return
+        1.0/(1.0 - alpha)
+      + 3.0*alpha/(2.0*sqr(1.0 - alpha))
+      + sqr(alpha)/(2.0*pow3(1.0 - alpha));
+}
+
+
+Foam::tmp<Foam::volScalarField>
+Foam::kineticTheoryModels::radialModels::CarnahanStarling::g0prime
+(
+    const volScalarField& alpha,
+    const dimensionedScalar& alphaMinFriction,
+    const dimensionedScalar& alphaMax
+) const
+{
+    return
+        2.5/sqr(1.0 - alpha)
+      + 4.0*alpha/pow3(1.0 - alpha)
+      + 1.5*sqr(alpha)/pow4(1.0 - alpha);
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/CarnahanStarling/CarnahanStarlingRadial.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/CarnahanStarling/CarnahanStarlingRadial.H
new file mode 100644
index 0000000000000000000000000000000000000000..a4082d5326c1d2bf81929dca9383b3919e65f977
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/CarnahanStarling/CarnahanStarlingRadial.H
@@ -0,0 +1,102 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::kineticTheoryModels::radialModels::CarnahanStarling
+
+Description
+
+SourceFiles
+    CarnahanStarlingRadial.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef CarnahanStarling_H
+#define CarnahanStarling_H
+
+#include "radialModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace kineticTheoryModels
+{
+namespace radialModels
+{
+
+/*---------------------------------------------------------------------------*\
+                           Class CarnahanStarling Declaration
+\*---------------------------------------------------------------------------*/
+
+class CarnahanStarling
+:
+    public radialModel
+{
+
+public:
+
+    //- Runtime type information
+    TypeName("CarnahanStarling");
+
+
+    // Constructors
+
+        //- Construct from components
+        CarnahanStarling(const dictionary& dict);
+
+
+    //- Destructor
+    virtual ~CarnahanStarling();
+
+
+    // Member Functions
+
+
+        tmp<volScalarField> g0
+        (
+            const volScalarField& alpha,
+            const dimensionedScalar& alphaMinFriction,
+            const dimensionedScalar& alphaMax
+        ) const;
+
+        tmp<volScalarField> g0prime
+        (
+            const volScalarField& alpha,
+            const dimensionedScalar& alphaMinFriction,
+            const dimensionedScalar& alphaMax
+        ) const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace radialModels
+} // End namespace kineticTheoryModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/LunSavage/LunSavageRadial.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/LunSavage/LunSavageRadial.C
new file mode 100644
index 0000000000000000000000000000000000000000..df931c8752866b2f0d08536e412af2034963f90a
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/LunSavage/LunSavageRadial.C
@@ -0,0 +1,94 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "LunSavageRadial.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace kineticTheoryModels
+{
+namespace radialModels
+{
+    defineTypeNameAndDebug(LunSavage, 0);
+
+    addToRunTimeSelectionTable
+    (
+        radialModel,
+        LunSavage,
+        dictionary
+    );
+}
+}
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::kineticTheoryModels::radialModels::LunSavage::LunSavage
+(
+    const dictionary& dict
+)
+:
+    radialModel(dict)
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::kineticTheoryModels::radialModels::LunSavage::~LunSavage()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volScalarField>
+Foam::kineticTheoryModels::radialModels::LunSavage::g0
+(
+    const volScalarField& alpha,
+    const dimensionedScalar& alphaMinFriction,
+    const dimensionedScalar& alphaMax
+) const
+{
+
+    return pow(1.0 - alpha/alphaMax, -2.5*alphaMax);
+}
+
+
+Foam::tmp<Foam::volScalarField>
+Foam::kineticTheoryModels::radialModels::LunSavage::g0prime
+(
+    const volScalarField& alpha,
+    const dimensionedScalar& alphaMinFriction,
+    const dimensionedScalar& alphaMax
+) const
+{
+    return 2.5*pow(1.0 - alpha/alphaMax, -2.5*alphaMax - 1);
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/LunSavage/LunSavageRadial.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/LunSavage/LunSavageRadial.H
new file mode 100644
index 0000000000000000000000000000000000000000..17cd8e5907bee083fcef6cf249a2151d5f309239
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/LunSavage/LunSavageRadial.H
@@ -0,0 +1,101 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::kineticTheoryModels::radialModels::LunSavage
+
+Description
+
+SourceFiles
+    LunSavage.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef LunSavage_H
+#define LunSavage_H
+
+#include "radialModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace kineticTheoryModels
+{
+namespace radialModels
+{
+
+/*---------------------------------------------------------------------------*\
+                           Class LunSavage Declaration
+\*---------------------------------------------------------------------------*/
+
+class LunSavage
+:
+    public radialModel
+{
+
+public:
+
+    //- Runtime type information
+    TypeName("LunSavage");
+
+
+    // Constructors
+
+        //- Construct from components
+        LunSavage(const dictionary& dict);
+
+
+    //- Destructor
+    virtual ~LunSavage();
+
+
+    // Member Functions
+
+        tmp<volScalarField> g0
+        (
+            const volScalarField& alpha,
+            const dimensionedScalar& alphaMinFriction,
+            const dimensionedScalar& alphaMax
+        ) const;
+
+        tmp<volScalarField> g0prime
+        (
+            const volScalarField& alpha,
+            const dimensionedScalar& alphaMinFriction,
+            const dimensionedScalar& alphaMax
+        ) const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace radialModels
+} // End namespace kineticTheoryModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/SinclairJackson/SinclairJacksonRadial.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/SinclairJackson/SinclairJacksonRadial.C
new file mode 100644
index 0000000000000000000000000000000000000000..bc74ce177a7babce2484a87a8eb59616feaa6b4d
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/SinclairJackson/SinclairJacksonRadial.C
@@ -0,0 +1,98 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "SinclairJacksonRadial.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace kineticTheoryModels
+{
+namespace radialModels
+{
+    defineTypeNameAndDebug(SinclairJackson, 0);
+
+    addToRunTimeSelectionTable
+    (
+        radialModel,
+        SinclairJackson,
+        dictionary
+    );
+}
+}
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::kineticTheoryModels::radialModels::SinclairJackson::SinclairJackson
+(
+    const dictionary& dict
+)
+:
+    radialModel(dict)
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::kineticTheoryModels::radialModels::SinclairJackson::~SinclairJackson()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volScalarField>
+Foam::kineticTheoryModels::radialModels::SinclairJackson::g0
+(
+    const volScalarField& alpha,
+    const dimensionedScalar& alphaMinFriction,
+    const dimensionedScalar& alphaMax
+) const
+{
+    return 1.0/(1.0 - cbrt(min(alpha, alphaMinFriction)/alphaMax));
+}
+
+
+Foam::tmp<Foam::volScalarField>
+Foam::kineticTheoryModels::radialModels::SinclairJackson::g0prime
+(
+    const volScalarField& alpha,
+    const dimensionedScalar& alphaMinFriction,
+    const dimensionedScalar& alphaMax
+) const
+{
+    volScalarField aByaMax
+    (
+        cbrt(min(max(alpha, scalar(1e-3)), alphaMinFriction)/alphaMax)
+    );
+
+    return (1.0/(3*alphaMax))/sqr(aByaMax - sqr(aByaMax));
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/SinclairJackson/SinclairJacksonRadial.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/SinclairJackson/SinclairJacksonRadial.H
new file mode 100644
index 0000000000000000000000000000000000000000..37545343a9c99f8eb4613def6e075e45c6a276be
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/SinclairJackson/SinclairJacksonRadial.H
@@ -0,0 +1,101 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::SinclairJackson
+
+Description
+
+SourceFiles
+    SinclairJacksonRadial.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef SinclairJackson_H
+#define SinclairJackson_H
+
+#include "radialModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace kineticTheoryModels
+{
+namespace radialModels
+{
+
+/*---------------------------------------------------------------------------*\
+                           Class SinclairJackson Declaration
+\*---------------------------------------------------------------------------*/
+
+class SinclairJackson
+:
+    public radialModel
+{
+
+public:
+
+    //- Runtime type information
+    TypeName("SinclairJackson");
+
+
+    // Constructors
+
+        //- Construct from components
+        SinclairJackson(const dictionary& dict);
+
+
+    //- Destructor
+    virtual ~SinclairJackson();
+
+
+    // Member Functions
+
+        tmp<volScalarField> g0
+        (
+            const volScalarField& alpha,
+            const dimensionedScalar& alphaMinFriction,
+            const dimensionedScalar& alphaMax
+        ) const;
+
+        tmp<volScalarField> g0prime
+        (
+            const volScalarField& alpha,
+            const dimensionedScalar& alphaMinFriction,
+            const dimensionedScalar& alphaMax
+        ) const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace radialModels
+} // End namespace kineticTheoryModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/radialModel/newRadialModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/radialModel/newRadialModel.C
new file mode 100644
index 0000000000000000000000000000000000000000..65f6c9ebb83c109055334cd0184beaa751fc143c
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/radialModel/newRadialModel.C
@@ -0,0 +1,60 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "radialModel.H"
+
+// * * * * * * * * * * * * * * * * Selectors * * * * * * * * * * * * * * * * //
+
+Foam::autoPtr<Foam::kineticTheoryModels::radialModel>
+Foam::kineticTheoryModels::radialModel::New
+(
+    const dictionary& dict
+)
+{
+    word radialModelType(dict.lookup("radialModel"));
+
+    Info<< "Selecting radialModel "
+        << radialModelType << endl;
+
+    dictionaryConstructorTable::iterator cstrIter =
+        dictionaryConstructorTablePtr_->find(radialModelType);
+
+    if (cstrIter == dictionaryConstructorTablePtr_->end())
+    {
+        FatalError
+            << "radialModel::New(const dictionary&) : " << endl
+            << "    unknown radialModelType type "
+            << radialModelType
+            << ", constructor not in hash table" << endl << endl
+            << "    Valid radialModelType types are :" << endl;
+        Info<< dictionaryConstructorTablePtr_->sortedToc()
+            << abort(FatalError);
+    }
+
+    return autoPtr<radialModel>(cstrIter()(dict));
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/radialModel/radialModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/radialModel/radialModel.C
new file mode 100644
index 0000000000000000000000000000000000000000..821e9e6ec72973d10d2663908d69321bb6e8f71b
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/radialModel/radialModel.C
@@ -0,0 +1,58 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "radialModel.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace kineticTheoryModels
+{
+    defineTypeNameAndDebug(radialModel, 0);
+
+    defineRunTimeSelectionTable(radialModel, dictionary);
+}
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::kineticTheoryModels::radialModel::radialModel
+(
+    const dictionary& dict
+)
+:
+    dict_(dict)
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::kineticTheoryModels::radialModel::~radialModel()
+{}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/radialModel/radialModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/radialModel/radialModel.H
new file mode 100644
index 0000000000000000000000000000000000000000..de73a227474e37d1a414459b0c74ed1b7eaf823d
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/radialModel/radialModel.H
@@ -0,0 +1,139 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::kineticTheoryModels::radialModel
+
+SourceFiles
+    radialModel.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef radialModel_H
+#define radialModel_H
+
+#include "dictionary.H"
+#include "volFields.H"
+#include "dimensionedTypes.H"
+#include "runTimeSelectionTables.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace kineticTheoryModels
+{
+
+/*---------------------------------------------------------------------------*\
+                           Class radialModel Declaration
+\*---------------------------------------------------------------------------*/
+
+class radialModel
+{
+    // Private member functions
+
+        //- Disallow default bitwise copy construct
+        radialModel(const radialModel&);
+
+        //- Disallow default bitwise assignment
+        void operator=(const radialModel&);
+
+
+protected:
+
+    // Protected data
+
+        const dictionary& dict_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("radialModel");
+
+    // Declare runtime constructor selection table
+    declareRunTimeSelectionTable
+    (
+        autoPtr,
+        radialModel,
+        dictionary,
+        (
+            const dictionary& dict
+        ),
+        (dict)
+    );
+
+
+    // Constructors
+
+        //- Construct from components
+        radialModel(const dictionary& dict);
+
+
+    // Selectors
+
+        static autoPtr<radialModel> New
+        (
+            const dictionary& dict
+        );
+
+
+    //- Destructor
+    virtual ~radialModel();
+
+
+    // Member Functions
+
+        //- Radial distribution function
+        virtual tmp<volScalarField> g0
+        (
+            const volScalarField& alpha,
+            const dimensionedScalar& alphaMinFriction,
+            const dimensionedScalar& alphaMax
+        ) const = 0;
+
+        //- Derivative of the radial distribution function
+        virtual tmp<volScalarField> g0prime
+        (
+            const volScalarField& alpha,
+            const dimensionedScalar& alphaMinFriction,
+            const dimensionedScalar& alphaMax
+        ) const = 0;
+
+        virtual bool read()
+        {
+            return true;
+        }
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace kineticTheoryModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Gidaspow/GidaspowViscosity.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Gidaspow/GidaspowViscosity.C
new file mode 100644
index 0000000000000000000000000000000000000000..98cf0c90efb92ad4e956cb3295b75239e8d74436
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Gidaspow/GidaspowViscosity.C
@@ -0,0 +1,87 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "GidaspowViscosity.H"
+#include "mathematicalConstants.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace kineticTheoryModels
+{
+namespace viscosityModels
+{
+    defineTypeNameAndDebug(Gidaspow, 0);
+    addToRunTimeSelectionTable(viscosityModel, Gidaspow, dictionary);
+}
+}
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::kineticTheoryModels::viscosityModels::Gidaspow::Gidaspow
+(
+    const dictionary& dict
+)
+:
+    viscosityModel(dict)
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::kineticTheoryModels::viscosityModels::Gidaspow::~Gidaspow()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volScalarField>
+Foam::kineticTheoryModels::viscosityModels::Gidaspow::nu
+(
+    const volScalarField& alpha1,
+    const volScalarField& Theta,
+    const volScalarField& g0,
+    const volScalarField& rho1,
+    const volScalarField& da,
+    const dimensionedScalar& e
+) const
+{
+    const scalar sqrtPi = sqrt(constant::mathematical::pi);
+
+    return da*sqrt(Theta)*
+    (
+        (4.0/5.0)*sqr(alpha1)*g0*(1.0 + e)/sqrtPi
+      + (1.0/15.0)*sqrtPi*g0*(1.0 + e)*sqr(alpha1)
+      + (1.0/6.0)*sqrtPi*alpha1
+      + (10.0/96.0)*sqrtPi/((1.0 + e)*g0)
+    );
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Gidaspow/GidaspowViscosity.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Gidaspow/GidaspowViscosity.H
new file mode 100644
index 0000000000000000000000000000000000000000..e309ed988a1a0a8523b0cde1ee695e7b94eb0c7e
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Gidaspow/GidaspowViscosity.H
@@ -0,0 +1,96 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::kineticTheoryModels::viscosityModels::Gidaspow
+
+Description
+
+SourceFiles
+    GidaspowViscosity.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef Gidaspow_H
+#define Gidaspow_H
+
+#include "viscosityModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace kineticTheoryModels
+{
+namespace viscosityModels
+{
+
+/*---------------------------------------------------------------------------*\
+                           Class Gidaspow Declaration
+\*---------------------------------------------------------------------------*/
+
+class Gidaspow
+:
+    public viscosityModel
+{
+
+public:
+
+    //- Runtime type information
+    TypeName("Gidaspow");
+
+    // Constructors
+
+        //- Construct from components
+        Gidaspow(const dictionary& dict);
+
+
+    //- Destructor
+    virtual ~Gidaspow();
+
+
+    // Member functions
+
+        tmp<volScalarField> nu
+        (
+            const volScalarField& alpha1,
+            const volScalarField& Theta,
+            const volScalarField& g0,
+            const volScalarField& rho1,
+            const volScalarField& da,
+            const dimensionedScalar& e
+        ) const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace viscosityModels
+} // End namespace kineticTheoryModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/HrenyaSinclair/HrenyaSinclairViscosity.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/HrenyaSinclair/HrenyaSinclairViscosity.C
new file mode 100644
index 0000000000000000000000000000000000000000..bd95013d0ab95bacab95b8909343cba6e59fef42
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/HrenyaSinclair/HrenyaSinclairViscosity.C
@@ -0,0 +1,111 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "HrenyaSinclairViscosity.H"
+#include "mathematicalConstants.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace kineticTheoryModels
+{
+namespace viscosityModels
+{
+    defineTypeNameAndDebug(HrenyaSinclair, 0);
+
+    addToRunTimeSelectionTable
+    (
+        viscosityModel,
+        HrenyaSinclair,
+        dictionary
+    );
+}
+}
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::kineticTheoryModels::viscosityModels::HrenyaSinclair::HrenyaSinclair
+(
+    const dictionary& dict
+)
+:
+    viscosityModel(dict),
+    coeffDict_(dict.subDict(typeName + "Coeffs")),
+    L_("L", dimensionSet(0, 1, 0, 0, 0), coeffDict_.lookup("L"))
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::kineticTheoryModels::viscosityModels::HrenyaSinclair::~HrenyaSinclair()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volScalarField>
+Foam::kineticTheoryModels::viscosityModels::HrenyaSinclair::nu
+(
+    const volScalarField& alpha1,
+    const volScalarField& Theta,
+    const volScalarField& g0,
+    const volScalarField& rho1,
+    const volScalarField& da,
+    const dimensionedScalar& e
+) const
+{
+    const scalar sqrtPi = sqrt(constant::mathematical::pi);
+
+    volScalarField lamda
+    (
+        scalar(1) + da/(6.0*sqrt(2.0)*(alpha1 + scalar(1.0e-5)))/L_
+    );
+
+    return da*sqrt(Theta)*
+    (
+        (4.0/5.0)*sqr(alpha1)*g0*(1.0 + e)/sqrtPi
+      + (1.0/15.0)*sqrtPi*g0*(1.0 + e)*(3.0*e - 1)*sqr(alpha1)/(3.0-e)
+      + (1.0/6.0)*sqrtPi*alpha1*(0.5*lamda + 0.25*(3.0*e - 1.0))
+       /(0.5*(3.0 - e)*lamda)
+      + (10/96.0)*sqrtPi/((1.0 + e)*0.5*(3.0 - e)*g0*lamda)
+    );
+}
+
+
+bool Foam::kineticTheoryModels::viscosityModels::HrenyaSinclair::read()
+{
+    coeffDict_ <<= dict_.subDict(typeName + "Coeffs");
+
+    L_.readIfPresent(coeffDict_);
+
+    return true;
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/HrenyaSinclair/HrenyaSinclairViscosity.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/HrenyaSinclair/HrenyaSinclairViscosity.H
new file mode 100644
index 0000000000000000000000000000000000000000..0a280ba3699a8923b34ce258253fd07ad059f11e
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/HrenyaSinclair/HrenyaSinclairViscosity.H
@@ -0,0 +1,106 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::kineticTheoryModels::viscosityModels::HrenyaSinclair
+
+Description
+
+SourceFiles
+    HrenyaSinclairViscosity.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef HrenyaSinclair_H
+#define HrenyaSinclair_H
+
+#include "viscosityModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace kineticTheoryModels
+{
+namespace viscosityModels
+{
+
+/*---------------------------------------------------------------------------*\
+                           Class HrenyaSinclair Declaration
+\*---------------------------------------------------------------------------*/
+
+class HrenyaSinclair
+:
+    public viscosityModel
+{
+    // Private data
+
+        dictionary coeffDict_;
+
+        //- Characteristic length of geometry
+        dimensionedScalar L_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("HrenyaSinclair");
+
+
+    // Constructors
+
+        //- Construct from components
+        HrenyaSinclair(const dictionary& dict);
+
+
+    //- Destructor
+    virtual ~HrenyaSinclair();
+
+
+    // Member functions
+
+        tmp<volScalarField> nu
+        (
+            const volScalarField& alpha1,
+            const volScalarField& Theta,
+            const volScalarField& g0,
+            const volScalarField& rho1,
+            const volScalarField& da,
+            const dimensionedScalar& e
+        ) const;
+
+        virtual bool read();
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace viscosityModels
+} // End namespace kineticTheoryModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Syamlal/SyamlalViscosity.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Syamlal/SyamlalViscosity.C
new file mode 100644
index 0000000000000000000000000000000000000000..215d3608164e50552e7c3c1e759b48882ede0694
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Syamlal/SyamlalViscosity.C
@@ -0,0 +1,86 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "SyamlalViscosity.H"
+#include "mathematicalConstants.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace kineticTheoryModels
+{
+namespace viscosityModels
+{
+    defineTypeNameAndDebug(Syamlal, 0);
+    addToRunTimeSelectionTable(viscosityModel, Syamlal, dictionary);
+}
+}
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::kineticTheoryModels::viscosityModels::Syamlal::Syamlal
+(
+    const dictionary& dict
+)
+:
+    viscosityModel(dict)
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::kineticTheoryModels::viscosityModels::Syamlal::~Syamlal()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volScalarField>
+Foam::kineticTheoryModels::viscosityModels::Syamlal::nu
+(
+    const volScalarField& alpha1,
+    const volScalarField& Theta,
+    const volScalarField& g0,
+    const volScalarField& rho1,
+    const volScalarField& da,
+    const dimensionedScalar& e
+) const
+{
+    const scalar sqrtPi = sqrt(constant::mathematical::pi);
+
+    return da*sqrt(Theta)*
+    (
+        (4.0/5.0)*sqr(alpha1)*g0*(1.0 + e)/sqrtPi
+      + (1.0/15.0)*sqrtPi*g0*(1.0 + e)*(3.0*e - 1.0)*sqr(alpha1)/(3.0 - e)
+      + (1.0/6.0)*alpha1*sqrtPi/(3.0 - e)
+    );
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Syamlal/SyamlalViscosity.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Syamlal/SyamlalViscosity.H
new file mode 100644
index 0000000000000000000000000000000000000000..844bf21b0da66edaff1bf8914fbdad89ca322273
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Syamlal/SyamlalViscosity.H
@@ -0,0 +1,97 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::kineticTheoryModels::viscosityModels::Syamlal
+
+Description
+
+SourceFiles
+    SyamlalViscosity.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef Syamlal_H
+#define Syamlal_H
+
+#include "viscosityModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace kineticTheoryModels
+{
+namespace viscosityModels
+{
+
+/*---------------------------------------------------------------------------*\
+                           Class Syamlal Declaration
+\*---------------------------------------------------------------------------*/
+
+class Syamlal
+:
+    public viscosityModel
+{
+
+public:
+
+    //- Runtime type information
+    TypeName("Syamlal");
+
+
+    // Constructors
+
+        //- Construct from components
+        Syamlal(const dictionary& dict);
+
+
+    //- Destructor
+    virtual ~Syamlal();
+
+
+    // Member functions
+
+        tmp<volScalarField> nu
+        (
+            const volScalarField& alpha1,
+            const volScalarField& Theta,
+            const volScalarField& g0,
+            const volScalarField& rho1,
+            const volScalarField& da,
+            const dimensionedScalar& e
+        ) const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace viscosityModels
+} // End namespace kineticTheoryModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/none/noneViscosity.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/none/noneViscosity.C
new file mode 100644
index 0000000000000000000000000000000000000000..4b3c97d69a4274f15b29c2465c7b02826d1cf033
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/none/noneViscosity.C
@@ -0,0 +1,75 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "noneViscosity.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace kineticTheoryModels
+{
+    defineTypeNameAndDebug(noneViscosity, 0);
+    addToRunTimeSelectionTable(viscosityModel, noneViscosity, dictionary);
+}
+}
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::kineticTheoryModels::noneViscosity::noneViscosity(const dictionary& dict)
+:
+    viscosityModel(dict)
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::kineticTheoryModels::noneViscosity::~noneViscosity()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volScalarField> Foam::kineticTheoryModels::noneViscosity::nu
+(
+    const volScalarField& alpha1,
+    const volScalarField& Theta,
+    const volScalarField& g0,
+    const volScalarField& rho1,
+    const volScalarField& da,
+    const dimensionedScalar& e
+) const
+{
+    return dimensionedScalar
+    (
+        "0",
+        dimensionSet(0, 2, -1, 0, 0, 0, 0),
+        0.0
+    )*alpha1;
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/none/noneViscosity.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/none/noneViscosity.H
new file mode 100644
index 0000000000000000000000000000000000000000..f5d74f0e96561578219bcb6070134547fc1bba57
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/none/noneViscosity.H
@@ -0,0 +1,94 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::noneViscosity
+
+Description
+
+SourceFiles
+    noneViscosity.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef noneViscosity_H
+#define noneViscosity_H
+
+#include "viscosityModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace kineticTheoryModels
+{
+
+/*---------------------------------------------------------------------------*\
+                           Class noneViscosity Declaration
+\*---------------------------------------------------------------------------*/
+
+class noneViscosity
+:
+    public viscosityModel
+{
+
+public:
+
+    //- Runtime type information
+    TypeName("none");
+
+
+    // Constructors
+
+        //- Construct from components
+        noneViscosity(const dictionary& dict);
+
+
+    //- Destructor
+    virtual ~noneViscosity();
+
+
+    // Member functions
+
+        tmp<volScalarField> nu
+        (
+            const volScalarField& alpha1,
+            const volScalarField& Theta,
+            const volScalarField& g0,
+            const volScalarField& rho1,
+            const volScalarField& da,
+            const dimensionedScalar& e
+        ) const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace kineticTheoryModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/viscosityModel/newViscosityModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/viscosityModel/newViscosityModel.C
new file mode 100644
index 0000000000000000000000000000000000000000..e79cbde0c17848e9969143745a3aebb51457b7e3
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/viscosityModel/newViscosityModel.C
@@ -0,0 +1,59 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "viscosityModel.H"
+
+// * * * * * * * * * * * * * * * * Selectors * * * * * * * * * * * * * * * * //
+
+Foam::autoPtr<Foam::kineticTheoryModels::viscosityModel>
+Foam::kineticTheoryModels::viscosityModel::New
+(
+    const dictionary& dict
+)
+{
+    word viscosityModelType(dict.lookup("viscosityModel"));
+
+    Info<< "Selecting viscosityModel "
+        << viscosityModelType << endl;
+
+    dictionaryConstructorTable::iterator cstrIter =
+        dictionaryConstructorTablePtr_->find(viscosityModelType);
+
+    if (cstrIter == dictionaryConstructorTablePtr_->end())
+    {
+        FatalError
+            << "viscosityModel::New(const dictionary&) : " << endl
+            << "    unknown viscosityModelType type "
+            << viscosityModelType
+            << ", constructor not in hash table" << endl << endl
+            << "    Valid viscosityModelType types are :" << endl;
+        Info<< dictionaryConstructorTablePtr_->sortedToc() << abort(FatalError);
+    }
+
+    return autoPtr<viscosityModel>(cstrIter()(dict));
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/viscosityModel/viscosityModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/viscosityModel/viscosityModel.C
new file mode 100644
index 0000000000000000000000000000000000000000..dae23e2b31023febb26d6d143c178d8bd0aa7d8c
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/viscosityModel/viscosityModel.C
@@ -0,0 +1,57 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "viscosityModel.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace kineticTheoryModels
+{
+    defineTypeNameAndDebug(viscosityModel, 0);
+    defineRunTimeSelectionTable(viscosityModel, dictionary);
+}
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::kineticTheoryModels::viscosityModel::viscosityModel
+(
+    const dictionary& dict
+)
+:
+    dict_(dict)
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::kineticTheoryModels::viscosityModel::~viscosityModel()
+{}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/viscosityModel/viscosityModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/viscosityModel/viscosityModel.H
new file mode 100644
index 0000000000000000000000000000000000000000..e0bc93cc79617a8cdf01a12b4de3ba7c57d222e9
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/viscosityModel/viscosityModel.H
@@ -0,0 +1,135 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::viscosityModel
+
+Description
+
+SourceFiles
+    viscosityModel.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef viscosityModel_H
+#define viscosityModel_H
+
+#include "dictionary.H"
+#include "volFields.H"
+#include "dimensionedTypes.H"
+#include "runTimeSelectionTables.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace kineticTheoryModels
+{
+
+/*---------------------------------------------------------------------------*\
+                           Class viscosityModel Declaration
+\*---------------------------------------------------------------------------*/
+
+class viscosityModel
+{
+    // Private member functions
+
+        //- Disallow default bitwise copy construct
+        viscosityModel(const viscosityModel&);
+
+        //- Disallow default bitwise assignment
+        void operator=(const viscosityModel&);
+
+
+protected:
+
+    // Protected data
+
+        const dictionary& dict_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("viscosityModel");
+
+    // Declare runtime constructor selection table
+    declareRunTimeSelectionTable
+    (
+        autoPtr,
+        viscosityModel,
+        dictionary,
+        (
+            const dictionary& dict
+        ),
+        (dict)
+    );
+
+
+    // Constructors
+
+        //- Construct from components
+        viscosityModel(const dictionary& dict);
+
+
+    // Selectors
+
+        static autoPtr<viscosityModel> New
+        (
+            const dictionary& dict
+        );
+
+
+    //- Destructor
+    virtual ~viscosityModel();
+
+
+    // Member Functions
+
+        virtual tmp<volScalarField> nu
+        (
+            const volScalarField& alpha1,
+            const volScalarField& Theta,
+            const volScalarField& g0,
+            const volScalarField& rho1,
+            const volScalarField& da,
+            const dimensionedScalar& e
+        ) const = 0;
+
+        virtual bool read()
+        {
+            return true;
+        }
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace kineticTheoryModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/phaseCompressibleTurbulenceModels.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/phaseCompressibleTurbulenceModels.C
new file mode 100644
index 0000000000000000000000000000000000000000..65d857d9c842f58f147769165d86a13685ddcfc2
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/phaseCompressibleTurbulenceModels.C
@@ -0,0 +1,94 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "PhaseCompressibleTurbulenceModel.H"
+#include "phaseModel.H"
+#include "twoPhaseSystem.H"
+#include "addToRunTimeSelectionTable.H"
+#include "makeTurbulenceModel.H"
+
+#include "laminar.H"
+#include "RASModel.H"
+#include "LESModel.H"
+
+makeBaseTurbulenceModel
+(
+    volScalarField,
+    volScalarField,
+    compressibleTurbulenceModel,
+    PhaseCompressibleTurbulenceModel,
+    phaseModel
+);
+
+#define makeRASModel(Type)                                                     \
+    makeTemplatedTurbulenceModel                                               \
+    (phaseModelPhaseCompressibleTurbulenceModel, RAS, Type)
+
+#define makeLESModel(Type)                                                     \
+    makeTemplatedTurbulenceModel                                               \
+    (phaseModelPhaseCompressibleTurbulenceModel, LES, Type)
+
+#include "kEpsilon.H"
+makeRASModel(kEpsilon);
+
+#include "kOmegaSST.H"
+makeRASModel(kOmegaSST);
+
+#include "kOmegaSSTSato.H"
+makeRASModel(kOmegaSSTSato);
+
+#include "mixtureKEpsilon.H"
+makeRASModel(mixtureKEpsilon);
+
+#include "LaheyKEpsilon.H"
+makeRASModel(LaheyKEpsilon);
+
+#include "continuousGasKEpsilon.H"
+makeRASModel(continuousGasKEpsilon);
+
+#include "Smagorinsky.H"
+makeLESModel(Smagorinsky);
+
+#include "kEqn.H"
+makeLESModel(kEqn);
+
+#include "SmagorinskyZhang.H"
+makeLESModel(SmagorinskyZhang);
+
+#include "NicenoKEqn.H"
+makeLESModel(NicenoKEqn);
+
+#include "continuousGasKEqn.H"
+makeLESModel(continuousGasKEqn);
+
+#include "kineticTheoryModel.H"
+makeTurbulenceModel
+(phaseModelPhaseCompressibleTurbulenceModel, RAS, kineticTheoryModel);
+
+#include "phasePressureModel.H"
+makeTurbulenceModel
+(phaseModelPhaseCompressibleTurbulenceModel, RAS, phasePressureModel);
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/phasePressureModel/phasePressureModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/phasePressureModel/phasePressureModel.C
new file mode 100644
index 0000000000000000000000000000000000000000..8cca6f493f098cf93b841a128ff96286df2dbb46
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/phasePressureModel/phasePressureModel.C
@@ -0,0 +1,254 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2013-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "phasePressureModel.H"
+#include "twoPhaseSystem.H"
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::RASModels::phasePressureModel::phasePressureModel
+(
+    const volScalarField& alpha,
+    const volScalarField& rho,
+    const volVectorField& U,
+    const surfaceScalarField& alphaRhoPhi,
+    const surfaceScalarField& phi,
+    const transportModel& phase,
+    const word& propertiesName,
+    const word& type
+)
+:
+    eddyViscosity<RASModel<PhaseCompressibleTurbulenceModel<phaseModel> > >
+    (
+        type,
+        alpha,
+        rho,
+        U,
+        alphaRhoPhi,
+        phi,
+        phase,
+        propertiesName
+    ),
+
+    phase_(phase),
+
+    alphaMax_(readScalar(coeffDict_.lookup("alphaMax"))),
+    preAlphaExp_(readScalar(coeffDict_.lookup("preAlphaExp"))),
+    expMax_(readScalar(coeffDict_.lookup("expMax"))),
+    g0_
+    (
+        "g0",
+        dimensionSet(1, -1, -2, 0, 0),
+        coeffDict_.lookup("g0")
+    )
+{
+    nut_ == dimensionedScalar("zero", nut_.dimensions(), 0.0);
+
+    if (type == typeName)
+    {
+        printCoeffs(type);
+    }
+}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::RASModels::phasePressureModel::~phasePressureModel()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+bool Foam::RASModels::phasePressureModel::read()
+{
+    if
+    (
+        eddyViscosity
+        <
+            RASModel<PhaseCompressibleTurbulenceModel<phaseModel> >
+        >::read()
+    )
+    {
+        coeffDict().lookup("alphaMax") >> alphaMax_;
+        coeffDict().lookup("preAlphaExp") >> preAlphaExp_;
+        coeffDict().lookup("expMax") >> expMax_;
+        g0_.readIfPresent(coeffDict());
+
+        return true;
+    }
+    else
+    {
+        return false;
+    }
+}
+
+
+Foam::tmp<Foam::volScalarField>
+Foam::RASModels::phasePressureModel::k() const
+{
+    notImplemented("phasePressureModel::k()");
+    return nut_;
+}
+
+
+Foam::tmp<Foam::volScalarField>
+Foam::RASModels::phasePressureModel::epsilon() const
+{
+    notImplemented("phasePressureModel::epsilon()");
+    return nut_;
+}
+
+
+Foam::tmp<Foam::volSymmTensorField>
+Foam::RASModels::phasePressureModel::R() const
+{
+    return tmp<volSymmTensorField>
+    (
+        new volSymmTensorField
+        (
+            IOobject
+            (
+                IOobject::groupName("R", U_.group()),
+                runTime_.timeName(),
+                mesh_,
+                IOobject::NO_READ,
+                IOobject::NO_WRITE
+            ),
+            mesh_,
+            dimensioned<symmTensor>
+            (
+                "R",
+                dimensionSet(0, 2, -2, 0, 0),
+                symmTensor::zero
+            )
+        )
+    );
+}
+
+
+Foam::tmp<Foam::volScalarField>
+Foam::RASModels::phasePressureModel::pPrime() const
+{
+    tmp<volScalarField> tpPrime
+    (
+        g0_
+       *min
+        (
+            exp(preAlphaExp_*(alpha_ - alphaMax_)),
+            expMax_
+        )
+    );
+
+    volScalarField::GeometricBoundaryField& bpPrime = tpPrime().boundaryField();
+
+    forAll(bpPrime, patchi)
+    {
+        if (!bpPrime[patchi].coupled())
+        {
+            bpPrime[patchi] == 0;
+        }
+    }
+
+    return tpPrime;
+}
+
+
+Foam::tmp<Foam::surfaceScalarField>
+Foam::RASModels::phasePressureModel::pPrimef() const
+{
+    tmp<surfaceScalarField> tpPrime
+    (
+        g0_
+       *min
+        (
+            exp(preAlphaExp_*(fvc::interpolate(alpha_) - alphaMax_)),
+            expMax_
+        )
+    );
+
+   surfaceScalarField::GeometricBoundaryField& bpPrime =
+       tpPrime().boundaryField();
+
+    forAll(bpPrime, patchi)
+    {
+        if (!bpPrime[patchi].coupled())
+        {
+            bpPrime[patchi] == 0;
+        }
+    }
+
+    return tpPrime;
+}
+
+
+Foam::tmp<Foam::volSymmTensorField>
+Foam::RASModels::phasePressureModel::devRhoReff() const
+{
+    return tmp<volSymmTensorField>
+    (
+        new volSymmTensorField
+        (
+            IOobject
+            (
+                IOobject::groupName("devRhoReff", U_.group()),
+                runTime_.timeName(),
+                mesh_,
+                IOobject::NO_READ,
+                IOobject::NO_WRITE
+            ),
+            mesh_,
+            dimensioned<symmTensor>
+            (
+                "R",
+                rho_.dimensions()*dimensionSet(0, 2, -2, 0, 0),
+                symmTensor::zero
+            )
+        )
+    );
+}
+
+
+Foam::tmp<Foam::fvVectorMatrix>
+Foam::RASModels::phasePressureModel::divDevRhoReff
+(
+    volVectorField& U
+) const
+{
+    return tmp<fvVectorMatrix>
+    (
+        new fvVectorMatrix
+        (
+            U,
+            rho_.dimensions()*dimensionSet(0, 4, -2, 0, 0)
+        )
+    );
+}
+
+
+void Foam::RASModels::phasePressureModel::correct()
+{}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/phasePressureModel/phasePressureModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/phasePressureModel/phasePressureModel.H
new file mode 100644
index 0000000000000000000000000000000000000000..a2b17dc1c7660edd7cd938faa83167d8d8b79fa2
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/phasePressureModel/phasePressureModel.H
@@ -0,0 +1,191 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2013-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::phasePressureModel
+
+Description
+    Particle-particle phase-pressure RAS model
+
+    The derivative of the phase-pressure with respect to the phase-fraction
+    is evaluated as
+
+        g0*min(exp(preAlphaExp*(alpha - alphaMax)), expMax)
+
+    The default model coefficients correspond to the following:
+    \verbatim
+        phasePressureCoeffs
+        {
+            preAlphaExp     500;
+            expMax          1000;
+            alphaMax        0.62;
+            g0              1000;
+        }
+    \endverbatim
+
+SourceFiles
+    phasePressureModel.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef phasePressureModel_H
+#define phasePressureModel_H
+
+#include "RASModel.H"
+#include "eddyViscosity.H"
+#include "PhaseCompressibleTurbulenceModel.H"
+#include "phaseModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace RASModels
+{
+
+/*---------------------------------------------------------------------------*\
+                           Class phasePressureModel Declaration
+\*---------------------------------------------------------------------------*/
+
+class phasePressureModel
+:
+    public eddyViscosity
+    <
+        RASModel<PhaseCompressibleTurbulenceModel<phaseModel> >
+    >
+{
+    // Private data
+
+        // Input Fields
+
+            const phaseModel& phase_;
+
+
+        // Kinetic Theory Model coefficients
+
+            //- Maximum packing phase-fraction
+            scalar alphaMax_;
+
+            //- Pre-exponential factor
+            scalar preAlphaExp_;
+
+            //- Maximum limit of the exponential
+            scalar expMax_;
+
+            //- g0
+            dimensionedScalar g0_;
+
+
+    // Private Member Functions
+
+        void correctNut()
+        {}
+
+        //- Disallow default bitwise copy construct
+        phasePressureModel(const phasePressureModel&);
+
+        //- Disallow default bitwise assignment
+        void operator=(const phasePressureModel&);
+
+
+public:
+
+    //- Runtime type information
+    TypeName("phasePressure");
+
+
+    // Constructors
+
+        //- Construct from components
+        phasePressureModel
+        (
+            const volScalarField& alpha,
+            const volScalarField& rho,
+            const volVectorField& U,
+            const surfaceScalarField& alphaRhoPhi,
+            const surfaceScalarField& phi,
+            const phaseModel& transport,
+            const word& propertiesName = turbulenceModel::propertiesName,
+            const word& type = typeName
+        );
+
+
+    //- Destructor
+    virtual ~phasePressureModel();
+
+
+    // Member Functions
+
+        //- Re-read model coefficients if they have changed
+        virtual bool read();
+
+        //- Return the effective viscosity
+        virtual tmp<volScalarField> nuEff() const
+        {
+            return this->nut();
+        }
+
+        //- Return the effective viscosity on patch
+        virtual tmp<scalarField> nuEff(const label patchi) const
+        {
+            return this->nut(patchi);
+        }
+
+        //- Return the turbulence kinetic energy
+        virtual tmp<volScalarField> k() const;
+
+        //- Return the turbulence kinetic energy dissipation rate
+        virtual tmp<volScalarField> epsilon() const;
+
+        //- Return the Reynolds stress tensor
+        virtual tmp<volSymmTensorField> R() const;
+
+        //- Return the phase-pressure'
+        // (derivative of phase-pressure w.r.t. phase-fraction)
+        virtual tmp<volScalarField> pPrime() const;
+
+        //- Return the face-phase-pressure'
+        // (derivative of phase-pressure w.r.t. phase-fraction)
+        virtual tmp<surfaceScalarField> pPrimef() const;
+
+        //- Return the effective stress tensor
+        virtual tmp<volSymmTensorField> devRhoReff() const;
+
+        //- Return the source term for the momentum equation
+        virtual tmp<fvVectorMatrix> divDevRhoReff(volVectorField& U) const;
+
+        //- Solve the kinetic theory equations and correct the viscosity
+        virtual void correct();
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace RASModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/BlendedInterfacialModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/BlendedInterfacialModel.C
new file mode 100644
index 0000000000000000000000000000000000000000..da6c62ade5912aa6ac5c89fc4e2eb73722f9778b
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/BlendedInterfacialModel.C
@@ -0,0 +1,485 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "BlendedInterfacialModel.H"
+#include "fixedValueFvsPatchFields.H"
+#include "surfaceInterpolate.H"
+
+// * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
+
+template<class ModelType>
+template<class GeometricField>
+void Foam::BlendedInterfacialModel<ModelType>::correctFixedFluxBCs
+(
+    GeometricField& field
+) const
+{
+    forAll(phase1_.phi()->boundaryField(), patchI)
+    {
+        if
+        (
+            isA<fixedValueFvsPatchScalarField>
+            (
+                phase1_.phi()->boundaryField()[patchI]
+            )
+        )
+        {
+            field.boundaryField()[patchI]
+              = pTraits<typename GeometricField::value_type>::zero;
+        }
+    }
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+template<class ModelType>
+Foam::BlendedInterfacialModel<ModelType>::BlendedInterfacialModel
+(
+    const phaseModel& phase1,
+    const phaseModel& phase2,
+    const blendingMethod& blending,
+    autoPtr<ModelType> model,
+    autoPtr<ModelType> model1In2,
+    autoPtr<ModelType> model2In1,
+    const bool correctFixedFluxBCs
+)
+:
+    phase1_(phase1),
+    phase2_(phase2),
+    blending_(blending),
+    model_(model),
+    model1In2_(model1In2),
+    model2In1_(model2In1),
+    correctFixedFluxBCs_(correctFixedFluxBCs)
+{}
+
+
+template<class ModelType>
+Foam::BlendedInterfacialModel<ModelType>::BlendedInterfacialModel
+(
+    const phasePair::dictTable& modelTable,
+    const blendingMethod& blending,
+    const phasePair& pair,
+    const orderedPhasePair& pair1In2,
+    const orderedPhasePair& pair2In1,
+    const bool correctFixedFluxBCs
+)
+:
+    phase1_(pair.phase1()),
+    phase2_(pair.phase2()),
+    blending_(blending),
+    correctFixedFluxBCs_(correctFixedFluxBCs)
+{
+    if (modelTable.found(pair))
+    {
+        model_.set
+        (
+            ModelType::New
+            (
+                modelTable[pair],
+                pair
+            ).ptr()
+        );
+    }
+
+    if (modelTable.found(pair1In2))
+    {
+        model1In2_.set
+        (
+            ModelType::New
+            (
+                modelTable[pair1In2],
+                pair1In2
+            ).ptr()
+        );
+    }
+
+    if (modelTable.found(pair2In1))
+    {
+        model2In1_.set
+        (
+            ModelType::New
+            (
+                modelTable[pair2In1],
+                pair2In1
+            ).ptr()
+        );
+    }
+}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+template<class ModelType>
+Foam::BlendedInterfacialModel<ModelType>::~BlendedInterfacialModel()
+{}
+
+
+// * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * * //
+
+template<class ModelType>
+bool Foam::BlendedInterfacialModel<ModelType>::hasModel
+(
+    const class phaseModel& phase
+) const
+{
+    return
+       &phase == &(phase1_)
+      ? model1In2_.valid()
+      : model2In1_.valid();
+}
+
+
+template<class ModelType>
+const ModelType& Foam::BlendedInterfacialModel<ModelType>::model
+(
+    const class phaseModel& phase
+) const
+{
+    return &phase == &(phase1_) ? model1In2_ : model2In1_;
+}
+
+
+template<class ModelType>
+Foam::tmp<Foam::volScalarField>
+Foam::BlendedInterfacialModel<ModelType>::K() const
+{
+    tmp<volScalarField> f1, f2;
+
+    if (model_.valid() || model1In2_.valid())
+    {
+        f1 = blending_.f1(phase1_, phase2_);
+    }
+
+    if (model_.valid() || model2In1_.valid())
+    {
+        f2 = blending_.f2(phase1_, phase2_);
+    }
+
+    tmp<volScalarField> x
+    (
+        new volScalarField
+        (
+            IOobject
+            (
+                ModelType::typeName + ":K",
+                phase1_.mesh().time().timeName(),
+                phase1_.mesh(),
+                IOobject::NO_READ,
+                IOobject::NO_WRITE,
+                false
+            ),
+            phase1_.mesh(),
+            dimensionedScalar("zero", ModelType::dimK, 0)
+        )
+    );
+
+    if (model_.valid())
+    {
+        x() += model_->K()*(scalar(1) - f1() - f2());
+    }
+    if (model1In2_.valid())
+    {
+        x() += model1In2_->K()*f1;
+    }
+    if (model2In1_.valid())
+    {
+        x() += model2In1_->K()*f2;
+    }
+
+    if
+    (
+        correctFixedFluxBCs_
+     && (model_.valid() || model1In2_.valid() || model2In1_.valid())
+    )
+    {
+        correctFixedFluxBCs(x());
+    }
+
+    return x;
+}
+
+
+template<class ModelType>
+Foam::tmp<Foam::surfaceScalarField>
+Foam::BlendedInterfacialModel<ModelType>::Kf() const
+{
+    tmp<surfaceScalarField> f1, f2;
+
+    if (model_.valid() || model1In2_.valid())
+    {
+        f1 = fvc::interpolate
+        (
+            blending_.f1(phase1_, phase2_)
+        );
+    }
+
+    if (model_.valid() || model2In1_.valid())
+    {
+        f2 = fvc::interpolate
+        (
+            blending_.f2(phase1_, phase2_)
+        );
+    }
+
+    tmp<surfaceScalarField> x
+    (
+        new surfaceScalarField
+        (
+            IOobject
+            (
+                ModelType::typeName + ":Kf",
+                phase1_.mesh().time().timeName(),
+                phase1_.mesh(),
+                IOobject::NO_READ,
+                IOobject::NO_WRITE,
+                false
+            ),
+            phase1_.mesh(),
+            dimensionedScalar("zero", ModelType::dimK, 0)
+        )
+    );
+
+    if (model_.valid())
+    {
+        x() += model_->Kf()*(scalar(1) - f1() - f2());
+    }
+
+    if (model1In2_.valid())
+    {
+        x() += model1In2_->Kf()*f1;
+    }
+
+    if (model2In1_.valid())
+    {
+        x() += model2In1_->Kf()*f2;
+    }
+
+    if
+    (
+        correctFixedFluxBCs_
+     && (model_.valid() || model1In2_.valid() || model2In1_.valid())
+    )
+    {
+        correctFixedFluxBCs(x());
+    }
+
+    return x;
+}
+
+
+template<class ModelType>
+template<class Type>
+Foam::tmp<Foam::GeometricField<Type, Foam::fvPatchField, Foam::volMesh> >
+Foam::BlendedInterfacialModel<ModelType>::F() const
+{
+    tmp<volScalarField> f1, f2;
+
+    if (model_.valid() || model1In2_.valid())
+    {
+        f1 = blending_.f1(phase1_, phase2_);
+    }
+
+    if (model_.valid() || model2In1_.valid())
+    {
+        f2 = blending_.f2(phase1_, phase2_);
+    }
+
+    tmp<GeometricField<Type, fvPatchField, volMesh> > x
+    (
+        new GeometricField<Type, fvPatchField, volMesh>
+        (
+            IOobject
+            (
+                ModelType::typeName + ":F",
+                phase1_.mesh().time().timeName(),
+                phase1_.mesh(),
+                IOobject::NO_READ,
+                IOobject::NO_WRITE,
+                false
+            ),
+            phase1_.mesh(),
+            dimensioned<Type>("zero", ModelType::dimF, pTraits<Type>::zero)
+        )
+    );
+
+    if (model_.valid())
+    {
+        x() += model_->F()*(scalar(1) - f1() - f2());
+    }
+
+    if (model1In2_.valid())
+    {
+        x() += model1In2_->F()*f1;
+    }
+
+    if (model2In1_.valid())
+    {
+        x() -= model2In1_->F()*f2; // note : subtraction
+    }
+
+    if
+    (
+        correctFixedFluxBCs_
+     && (model_.valid() || model1In2_.valid() || model2In1_.valid())
+    )
+    {
+        correctFixedFluxBCs(x());
+    }
+
+    return x;
+}
+
+
+template<class ModelType>
+Foam::tmp<Foam::surfaceScalarField>
+Foam::BlendedInterfacialModel<ModelType>::Ff() const
+{
+    tmp<surfaceScalarField> f1, f2;
+
+    if (model_.valid() || model1In2_.valid())
+    {
+        f1 = fvc::interpolate
+        (
+            blending_.f1(phase1_, phase2_)
+        );
+    }
+
+    if (model_.valid() || model2In1_.valid())
+    {
+        f2 = fvc::interpolate
+        (
+            blending_.f2(phase1_, phase2_)
+        );
+    }
+
+    tmp<surfaceScalarField> x
+    (
+        new surfaceScalarField
+        (
+            IOobject
+            (
+                ModelType::typeName + ":Ff",
+                phase1_.mesh().time().timeName(),
+                phase1_.mesh(),
+                IOobject::NO_READ,
+                IOobject::NO_WRITE,
+                false
+            ),
+            phase1_.mesh(),
+            dimensionedScalar("zero", ModelType::dimF*dimArea, 0)
+        )
+    );
+
+    if (model_.valid())
+    {
+        x() += model_->Ff()*(scalar(1) - f1() - f2());
+    }
+
+    if (model1In2_.valid())
+    {
+        x() += model1In2_->Ff()*f1;
+    }
+
+    if (model2In1_.valid())
+    {
+        x() -= model2In1_->Ff()*f2; // note : subtraction
+    }
+
+    if
+    (
+        correctFixedFluxBCs_
+     && (model_.valid() || model1In2_.valid() || model2In1_.valid())
+    )
+    {
+        correctFixedFluxBCs(x());
+    }
+
+    return x;
+}
+
+
+template<class ModelType>
+Foam::tmp<Foam::volScalarField>
+Foam::BlendedInterfacialModel<ModelType>::D() const
+{
+    tmp<volScalarField> f1, f2;
+
+    if (model_.valid() || model1In2_.valid())
+    {
+        f1 = blending_.f1(phase1_, phase2_);
+    }
+
+    if (model_.valid() || model2In1_.valid())
+    {
+        f2 = blending_.f2(phase1_, phase2_);
+    }
+
+    tmp<volScalarField> x
+    (
+        new volScalarField
+        (
+            IOobject
+            (
+                ModelType::typeName + ":D",
+                phase1_.mesh().time().timeName(),
+                phase1_.mesh(),
+                IOobject::NO_READ,
+                IOobject::NO_WRITE,
+                false
+            ),
+            phase1_.mesh(),
+            dimensionedScalar("zero", ModelType::dimD, 0)
+        )
+    );
+
+    if (model_.valid())
+    {
+        x() += model_->D()*(scalar(1) - f1() - f2());
+    }
+    if (model1In2_.valid())
+    {
+        x() += model1In2_->D()*f1;
+    }
+    if (model2In1_.valid())
+    {
+        x() += model2In1_->D()*f2;
+    }
+
+    if
+    (
+        correctFixedFluxBCs_
+     && (model_.valid() || model1In2_.valid() || model2In1_.valid())
+    )
+    {
+        correctFixedFluxBCs(x());
+    }
+
+    return x;
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/BlendedInterfacialModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/BlendedInterfacialModel.H
new file mode 100644
index 0000000000000000000000000000000000000000..bd2ec60235624af8b37d191120ab2a0278e5863b
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/BlendedInterfacialModel.H
@@ -0,0 +1,168 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::BlendedInterfacialModel
+
+Description
+
+SourceFiles
+    BlendedInterfacialModel.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef BlendedInterfacialModel_H
+#define BlendedInterfacialModel_H
+
+#include "blendingMethod.H"
+#include "phasePair.H"
+#include "orderedPhasePair.H"
+
+#include "geometricZeroField.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+                         Class BlendedInterfacialModel Declaration
+\*---------------------------------------------------------------------------*/
+
+template<class ModelType>
+class BlendedInterfacialModel
+{
+    // Private data
+
+        //- Reference to phase 1
+        const phaseModel& phase1_;
+
+        //- Reference to phase 2
+        const phaseModel& phase2_;
+
+        //- Blending model
+        const blendingMethod& blending_;
+
+        //- Model for region with no obvious dispersed phase
+        autoPtr<ModelType> model_;
+
+        //- Model for dispersed phase 1 in continuous phase 2
+        autoPtr<ModelType> model1In2_;
+
+        //- Model for dispersed phase 2 in continuous phase 1
+        autoPtr<ModelType> model2In1_;
+
+        //- If true set coefficients and forces to 0 at fixed-flux BCs
+        bool correctFixedFluxBCs_;
+
+
+    // Private Member Functions
+
+        //- Disallow default bitwise copy construct
+        BlendedInterfacialModel(const BlendedInterfacialModel<ModelType>&);
+
+        //- Disallow default bitwise assignment
+        void operator=(const BlendedInterfacialModel<ModelType>&);
+
+        //- Correct coeff/value on fixed flux boundary conditions
+        template<class GeometricField>
+        void correctFixedFluxBCs(GeometricField& field) const;
+
+
+public:
+
+    // Constructors
+
+        //- Construct from two phases, blending method and three models
+        BlendedInterfacialModel
+        (
+            const phaseModel& phase1,
+            const phaseModel& phase2,
+            const blendingMethod& blending,
+            autoPtr<ModelType> model,
+            autoPtr<ModelType> model1In2,
+            autoPtr<ModelType> model2In1,
+            const bool correctFixedFluxBCs = true
+        );
+
+
+        //- Construct from the model table, dictionary and pairs
+        BlendedInterfacialModel
+        (
+            const phasePair::dictTable& modelTable,
+            const blendingMethod& blending,
+            const phasePair& pair,
+            const orderedPhasePair& pair1In2,
+            const orderedPhasePair& pair2In1,
+            const bool correctFixedFluxBCs = true
+        );
+
+
+    //- Destructor
+    ~BlendedInterfacialModel();
+
+
+    // Member Functions
+
+        //- Return true if a model is specified for the supplied phase
+        bool hasModel(const phaseModel& phase) const;
+
+        //- Return the model for the supplied phase
+        const ModelType& model(const phaseModel& phase) const;
+
+        //- Return the sign of the explicit value for the supplied phase
+        scalar sign(const phaseModel& phase) const;
+
+        //- Return the blended force coefficient
+        tmp<volScalarField> K() const;
+
+        //- Return the face blended force coefficient
+        tmp<surfaceScalarField> Kf() const;
+
+        //- Return the blended force
+        template<class Type>
+        tmp<GeometricField<Type, fvPatchField, volMesh> > F() const;
+
+        //- Return the face blended force
+        tmp<surfaceScalarField> Ff() const;
+
+        //- Return the blended diffusivity
+        tmp<volScalarField> D() const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#ifdef NoRepository
+    #include "BlendedInterfacialModel.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/blendingMethod/blendingMethod.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/blendingMethod/blendingMethod.C
new file mode 100644
index 0000000000000000000000000000000000000000..ed0745b7840fc9db52e12d2da23e6d5d63ff7b61
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/blendingMethod/blendingMethod.C
@@ -0,0 +1,52 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "blendingMethod.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    defineTypeNameAndDebug(blendingMethod, 0);
+    defineRunTimeSelectionTable(blendingMethod, dictionary);
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::blendingMethod::blendingMethod
+(
+    const dictionary& dict
+)
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::blendingMethod::~blendingMethod()
+{}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/blendingMethod/blendingMethod.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/blendingMethod/blendingMethod.H
new file mode 100644
index 0000000000000000000000000000000000000000..ec52bd04e6f9fb43226b79597acf7b5d9b6252a7
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/blendingMethod/blendingMethod.H
@@ -0,0 +1,120 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::blendingMethod
+
+Description
+
+SourceFiles
+    blendingMethod.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef blendingMethod_H
+#define blendingMethod_H
+
+#include "dictionary.H"
+#include "runTimeSelectionTables.H"
+#include "phaseModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+                         Class blendingMethod Declaration
+\*---------------------------------------------------------------------------*/
+
+class blendingMethod
+{
+public:
+
+    //- Runtime type information
+    TypeName("blendingMethod");
+
+
+    // Declare runtime construction
+    declareRunTimeSelectionTable
+    (
+        autoPtr,
+        blendingMethod,
+        dictionary,
+        (
+            const dictionary& dict,
+            const wordList& phaseNames
+        ),
+        (dict, phaseNames)
+    );
+
+
+    // Constructors
+
+        //- Construct from a dictionary
+        blendingMethod
+        (
+            const dictionary& dict
+        );
+
+
+    // Selector
+
+        static autoPtr<blendingMethod> New
+        (
+            const dictionary& dict,
+            const wordList& phaseNames
+        );
+
+
+    //- Destructor
+    virtual ~blendingMethod();
+
+
+    // Member Functions
+
+        //- Factor for first phase
+        virtual tmp<volScalarField> f1
+        (
+            const phaseModel& phase1,
+            const phaseModel& phase2
+        ) const = 0;
+
+        //- Factor for second phase
+        virtual tmp<volScalarField> f2
+        (
+            const phaseModel& phase1,
+            const phaseModel& phase2
+        ) const = 0;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/blendingMethod/newBlendingMethod.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/blendingMethod/newBlendingMethod.C
new file mode 100644
index 0000000000000000000000000000000000000000..2dcc6d0a5e86c7763dbbb793b385bc7103c33dfb
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/blendingMethod/newBlendingMethod.C
@@ -0,0 +1,58 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "blendingMethod.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+Foam::autoPtr<Foam::blendingMethod> Foam::blendingMethod::New
+(
+    const dictionary& dict,
+    const wordList& phaseNames
+)
+{
+    word blendingMethodType(dict.lookup("type"));
+
+    Info<< "Selecting " << dict.dictName() << " blending method: "
+        << blendingMethodType << endl;
+
+    dictionaryConstructorTable::iterator cstrIter =
+        dictionaryConstructorTablePtr_->find(blendingMethodType);
+
+    if (cstrIter == dictionaryConstructorTablePtr_->end())
+    {
+        FatalErrorIn("blendingMethod::New")
+            << "Unknown blendingMethodType type "
+            << blendingMethodType << endl << endl
+            << "Valid blendingMethod types are : " << endl
+            << dictionaryConstructorTablePtr_->sortedToc()
+            << exit(FatalError);
+    }
+
+    return cstrIter()(dict, phaseNames);
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/hyperbolic/hyperbolic.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/hyperbolic/hyperbolic.C
new file mode 100644
index 0000000000000000000000000000000000000000..664841d08282013a4a31d2f58d03b363da1a823f
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/hyperbolic/hyperbolic.C
@@ -0,0 +1,124 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "hyperbolic.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace blendingMethods
+{
+    defineTypeNameAndDebug(hyperbolic, 0);
+
+    addToRunTimeSelectionTable
+    (
+        blendingMethod,
+        hyperbolic,
+        dictionary
+    );
+}
+}
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::blendingMethods::hyperbolic::hyperbolic
+(
+    const dictionary& dict,
+    const wordList& phaseNames
+)
+:
+    blendingMethod(dict),
+    transitionAlphaScale_
+    (
+        "transitionAlphaScale",
+        dimless,
+        dict.lookup("transitionAlphaScale")
+    )
+{
+    forAllConstIter(wordList, phaseNames, iter)
+    {
+        const word name(IOobject::groupName("minContinuousAlpha", *iter));
+
+        minContinuousAlpha_.insert
+        (
+            *iter,
+            dimensionedScalar
+            (
+                name,
+                dimless,
+                dict.lookup(name)
+            )
+        );
+    }
+}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::blendingMethods::hyperbolic::~hyperbolic()
+{}
+
+
+// * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volScalarField> Foam::blendingMethods::hyperbolic::f1
+(
+    const phaseModel& phase1,
+    const phaseModel& phase2
+) const
+{
+    return
+        (
+            1
+          + tanh
+            (
+                (4/transitionAlphaScale_)
+               *(phase2 - minContinuousAlpha_[phase2.name()])
+            )
+        )/2;
+}
+
+
+Foam::tmp<Foam::volScalarField> Foam::blendingMethods::hyperbolic::f2
+(
+    const phaseModel& phase1,
+    const phaseModel& phase2
+) const
+{
+    return
+        (
+            1
+          + tanh
+            (
+                (4/transitionAlphaScale_)
+               *(phase1 - minContinuousAlpha_[phase1.name()])
+            )
+        )/2;
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/hyperbolic/hyperbolic.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/hyperbolic/hyperbolic.H
new file mode 100644
index 0000000000000000000000000000000000000000..c6d71c9dca48fb633029a99b0b83677817b06341
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/hyperbolic/hyperbolic.H
@@ -0,0 +1,110 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::hyperbolic
+
+Description
+
+SourceFiles
+    hyperbolic.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef hyperbolic_H
+#define hyperbolic_H
+
+#include "blendingMethod.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace blendingMethods
+{
+
+/*---------------------------------------------------------------------------*\
+                         Class hyperbolic Declaration
+\*---------------------------------------------------------------------------*/
+
+class hyperbolic
+:
+    public blendingMethod
+{
+    // Private data
+
+        //- Minimum fraction of phases which can be considered continuous
+        HashTable<dimensionedScalar, word, word::hash> minContinuousAlpha_;
+
+        //- Width of the transition
+        const dimensionedScalar transitionAlphaScale_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("hyperbolic");
+
+
+    // Constructors
+
+        //- Construct from a dictionary and a list of phase names
+        hyperbolic
+        (
+            const dictionary& dict,
+            const wordList& phaseNames
+        );
+
+
+    //- Destructor
+    ~hyperbolic();
+
+
+    // Member Functions
+
+        //- Factor for first phase
+        virtual tmp<volScalarField> f1
+        (
+            const phaseModel& phase1,
+            const phaseModel& phase2
+        ) const;
+
+        //- Factor for second phase
+        virtual tmp<volScalarField> f2
+        (
+            const phaseModel& phase1,
+            const phaseModel& phase2
+        ) const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace blendingMethods
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/linear/linear.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/linear/linear.C
new file mode 100644
index 0000000000000000000000000000000000000000..d9bfe2b5985405296b0cf0763c0cebaadc8940c9
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/linear/linear.C
@@ -0,0 +1,170 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "linear.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace blendingMethods
+{
+    defineTypeNameAndDebug(linear, 0);
+
+    addToRunTimeSelectionTable
+    (
+        blendingMethod,
+        linear,
+        dictionary
+    );
+}
+}
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::blendingMethods::linear::linear
+(
+    const dictionary& dict,
+    const wordList& phaseNames
+)
+:
+    blendingMethod(dict)
+{
+    forAllConstIter(wordList, phaseNames, iter)
+    {
+        const word nameFull
+        (
+            IOobject::groupName("minFullyContinuousAlpha", *iter)
+        );
+
+        minFullyContinuousAlpha_.insert
+        (
+            *iter,
+            dimensionedScalar
+            (
+                nameFull,
+                dimless,
+                dict.lookup(nameFull)
+            )
+        );
+
+        const word namePart
+        (
+            IOobject::groupName("minPartlyContinuousAlpha", *iter)
+        );
+
+        minPartlyContinuousAlpha_.insert
+        (
+            *iter,
+            dimensionedScalar
+            (
+                namePart,
+                dimless,
+                dict.lookup(namePart)
+            )
+        );
+
+        if
+        (
+            minFullyContinuousAlpha_[*iter]
+          < minPartlyContinuousAlpha_[*iter]
+        )
+        {
+            FatalErrorIn
+            (
+                "Foam::blendingMethods::linear::linear"
+                "("
+                    "const dictionary& dict,"
+                    "const wordList& phaseNames"
+                ")"
+            )   << "The supplied fully continuous volume fraction for "
+                << *iter
+                << " is less than the partly continuous value."
+                << endl << exit(FatalError);
+        }
+    }
+}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::blendingMethods::linear::~linear()
+{}
+
+
+// * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volScalarField> Foam::blendingMethods::linear::f1
+(
+    const phaseModel& phase1,
+    const phaseModel& phase2
+) const
+{
+    const dimensionedScalar
+        minFullAlpha(minFullyContinuousAlpha_[phase2.name()]);
+    const dimensionedScalar
+        minPartAlpha(minPartlyContinuousAlpha_[phase2.name()]);
+
+    return
+        min
+        (
+            max
+            (
+                (phase2 - minPartAlpha)
+               /(minFullAlpha - minPartAlpha + SMALL),
+                scalar(0)
+            ),
+            scalar(1)
+        );
+}
+
+
+Foam::tmp<Foam::volScalarField> Foam::blendingMethods::linear::f2
+(
+    const phaseModel& phase1,
+    const phaseModel& phase2
+) const
+{
+    const dimensionedScalar
+        minFullAlpha(minFullyContinuousAlpha_[phase1.name()]);
+    const dimensionedScalar
+        minPartAlpha(minPartlyContinuousAlpha_[phase1.name()]);
+
+    return
+        min
+        (
+            max
+            (
+                (phase1 - minPartAlpha)
+               /(minFullAlpha - minPartAlpha + SMALL),
+                scalar(0)
+            ),
+            scalar(1)
+        );
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/linear/linear.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/linear/linear.H
new file mode 100644
index 0000000000000000000000000000000000000000..16b22a7bb4869b540c1bb1b56247e67e23382cc6
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/linear/linear.H
@@ -0,0 +1,112 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::linear
+
+Description
+
+SourceFiles
+    linear.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef linear_H
+#define linear_H
+
+#include "blendingMethod.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace blendingMethods
+{
+
+/*---------------------------------------------------------------------------*\
+                         Class linear Declaration
+\*---------------------------------------------------------------------------*/
+
+class linear
+:
+    public blendingMethod
+{
+    // Private data
+
+        //- Minimum fraction of phases which can be considered fully continuous
+        HashTable<dimensionedScalar, word, word::hash>
+            minFullyContinuousAlpha_;
+
+        //- Minimum fraction of phases which can be considered partly continuous
+        HashTable<dimensionedScalar, word, word::hash>
+            minPartlyContinuousAlpha_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("linear");
+
+
+    // Constructors
+
+        //- Construct from a dictionary and two phases
+        linear
+        (
+            const dictionary& dict,
+            const wordList& phaseNames
+        );
+
+
+    //- Destructor
+    ~linear();
+
+
+    // Member Functions
+
+        //- Factor for primary phase
+        virtual tmp<volScalarField> f1
+        (
+            const phaseModel& phase1,
+            const phaseModel& phase2
+        ) const;
+
+        //- Factor for secondary phase
+        virtual tmp<volScalarField> f2
+        (
+            const phaseModel& phase1,
+            const phaseModel& phase2
+        ) const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace blendingMethods
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/noBlending/noBlending.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/noBlending/noBlending.C
new file mode 100644
index 0000000000000000000000000000000000000000..b07795598d3b4367bbd7108472aae4ad4ca5df19
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/noBlending/noBlending.C
@@ -0,0 +1,129 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "noBlending.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace blendingMethods
+{
+    defineTypeNameAndDebug(noBlending, 0);
+
+    addToRunTimeSelectionTable
+    (
+        blendingMethod,
+        noBlending,
+        dictionary
+    );
+}
+}
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::blendingMethods::noBlending::noBlending
+(
+    const dictionary& dict,
+    const wordList& phaseNames
+)
+:
+    blendingMethod(dict),
+    continuousPhase_(dict.lookup("continuousPhase"))
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::blendingMethods::noBlending::~noBlending()
+{}
+
+
+// * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volScalarField> Foam::blendingMethods::noBlending::f1
+(
+    const phaseModel& phase1,
+    const phaseModel& phase2
+) const
+{
+    const fvMesh& mesh(phase1.mesh());
+
+    return
+        tmp<volScalarField>
+        (
+            new volScalarField
+            (
+                IOobject
+                (
+                    "f",
+                    mesh.time().timeName(),
+                    mesh
+                ),
+                mesh,
+                dimensionedScalar
+                (
+                    "f",
+                    dimless,
+                    phase2.name() == continuousPhase_
+                )
+            )
+        );
+}
+
+
+Foam::tmp<Foam::volScalarField> Foam::blendingMethods::noBlending::f2
+(
+    const phaseModel& phase1,
+    const phaseModel& phase2
+) const
+{
+    const fvMesh& mesh(phase1.mesh());
+
+    return
+        tmp<volScalarField>
+        (
+            new volScalarField
+            (
+                IOobject
+                (
+                    "f",
+                    mesh.time().timeName(),
+                    mesh
+                ),
+                mesh,
+                dimensionedScalar
+                (
+                    "f",
+                    dimless,
+                    phase1.name() == continuousPhase_
+                )
+            )
+        );
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/noBlending/noBlending.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/noBlending/noBlending.H
new file mode 100644
index 0000000000000000000000000000000000000000..a777caef33860ce11b2d77025c1b316b3fd093e5
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/noBlending/noBlending.H
@@ -0,0 +1,107 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::noBlending
+
+Description
+
+SourceFiles
+    noBlending.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef noBlending_H
+#define noBlending_H
+
+#include "blendingMethod.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace blendingMethods
+{
+
+/*---------------------------------------------------------------------------*\
+                         Class noBlending Declaration
+\*---------------------------------------------------------------------------*/
+
+class noBlending
+:
+    public blendingMethod
+{
+    // Private data
+
+        //- Name of the continuous phase
+        const word continuousPhase_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("none");
+
+
+    // Constructors
+
+        //- Construct from a dictionary and two phases
+        noBlending
+        (
+            const dictionary& dict,
+            const wordList& phaseNames
+        );
+
+
+    //- Destructor
+    ~noBlending();
+
+
+    // Member Functions
+
+        //- Factor for primary phase
+        virtual tmp<volScalarField> f1
+        (
+            const phaseModel& phase1,
+            const phaseModel& phase2
+        ) const;
+
+        //- Factor for secondary phase
+        virtual tmp<volScalarField> f2
+        (
+            const phaseModel& phase1,
+            const phaseModel& phase2
+        ) const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace blendingMethods
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/Make/files b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/Make/files
new file mode 100644
index 0000000000000000000000000000000000000000..538bd7d63712f1a3b809a33767310e28931e5264
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/Make/files
@@ -0,0 +1,32 @@
+phaseModel/phaseModel/phaseModel.C
+phaseModel/phaseModel/newPhaseModel.C
+phaseModel/phaseModel/phaseModels.C
+
+phasePair/phasePairKey/phasePairKey.C
+phasePair/phasePair/phasePair.C
+phasePair/orderedPhasePair/orderedPhasePair.C
+
+phaseSystem/phaseSystem.C
+
+diameterModels/diameterModel/diameterModel.C
+diameterModels/diameterModel/newDiameterModel.C
+diameterModels/constantDiameter/constantDiameter.C
+diameterModels/isothermalDiameter/isothermalDiameter.C
+
+diameterModels/IATE/IATE.C
+diameterModels/IATE/IATEsources/IATEsource/IATEsource.C
+diameterModels/IATE/IATEsources/wakeEntrainmentCoalescence/wakeEntrainmentCoalescence.C
+diameterModels/IATE/IATEsources/turbulentBreakUp/turbulentBreakUp.C
+diameterModels/IATE/IATEsources/randomCoalescence/randomCoalescence.C
+
+BlendedInterfacialModel/blendingMethods/blendingMethod/blendingMethod.C
+BlendedInterfacialModel/blendingMethods/blendingMethod/newBlendingMethod.C
+BlendedInterfacialModel/blendingMethods/noBlending/noBlending.C
+BlendedInterfacialModel/blendingMethods/linear/linear.C
+BlendedInterfacialModel/blendingMethods/hyperbolic/hyperbolic.C
+
+twoPhaseSystem/twoPhaseSystem.C
+twoPhaseSystem/newTwoPhaseSystem.C
+twoPhaseSystem/twoPhaseSystems.C
+
+LIB = $(FOAM_LIBBIN)/libreactingTwoPhaseSystem
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/Make/options b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/Make/options
new file mode 100644
index 0000000000000000000000000000000000000000..db17065417e84a7c60fa5f7d2e23e1f34db8f3a0
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/Make/options
@@ -0,0 +1,18 @@
+EXE_INC = \
+    -I../interfacialModels/lnInclude \
+    -I../interfacialCompositionModels/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude \
+    -I$(LIB_SRC)/transportModels/compressible/lnInclude \
+    -I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \
+    -I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude \
+    -I$(LIB_SRC)/TurbulenceModels/phaseCompressible/lnInclude \
+    -I$(LIB_SRC)/combustionModels/lnInclude \
+    -I$(LIB_SRC)/finiteVolume/lnInclude \
+    -I$(LIB_SRC)/fvOptions/lnInclude \
+    -I$(LIB_SRC)/meshTools/lnInclude \
+    -I$(LIB_SRC)/sampling/lnInclude
+
+LIB_LIBS = \
+    -lcombustionModels
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/HeatAndMassTransferPhaseSystem/HeatAndMassTransferPhaseSystem.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/HeatAndMassTransferPhaseSystem/HeatAndMassTransferPhaseSystem.C
new file mode 100644
index 0000000000000000000000000000000000000000..f003d92b983455e3c7db3db69e3d39e4c29cddd3
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/HeatAndMassTransferPhaseSystem/HeatAndMassTransferPhaseSystem.C
@@ -0,0 +1,571 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "HeatAndMassTransferPhaseSystem.H"
+
+#include "BlendedInterfacialModel.H"
+#include "heatTransferModel.H"
+#include "massTransferModel.H"
+#include "interfaceCompositionModel.H"
+
+#include "HashPtrTable.H"
+
+#include "fvcDiv.H"
+#include "fvmSup.H"
+#include "fvMatrix.H"
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+template<class BasePhaseSystem>
+Foam::HeatAndMassTransferPhaseSystem<BasePhaseSystem>::
+HeatAndMassTransferPhaseSystem
+(
+    const fvMesh& mesh
+)
+:
+    BasePhaseSystem(mesh)
+{
+    this->generatePairsAndSubModels
+    (
+        "heatTransfer",
+        heatTransferModels_
+    );
+
+    this->generatePairsAndSubModels
+    (
+        "massTransfer",
+        massTransferModels_
+    );
+
+    this->generatePairsAndSubModels
+    (
+        "interfaceComposition",
+        interfaceCompositionModels_
+    );
+
+    forAllConstIter
+    (
+        phaseSystem::phasePairTable,
+        this->phasePairs_,
+        phasePairIter
+    )
+    {
+        const phasePair& pair(phasePairIter());
+
+        if (pair.ordered())
+        {
+            continue;
+        }
+
+        // Initialy assume no mass transfer
+
+        dmdt_.insert
+        (
+            pair,
+            new volScalarField
+            (
+                IOobject
+                (
+                    IOobject::groupName("dmdt", pair.name()),
+                    this->mesh().time().timeName(),
+                    this->mesh(),
+                    IOobject::NO_READ,
+                    IOobject::AUTO_WRITE
+                ),
+                this->mesh(),
+                dimensionedScalar("zero", dimDensity/dimTime, 0)
+            )
+        );
+
+        dmdtExplicit_.insert
+        (
+            pair,
+            new volScalarField
+            (
+                IOobject
+                (
+                    IOobject::groupName("dmdtExplicit", pair.name()),
+                    this->mesh().time().timeName(),
+                    this->mesh()
+                ),
+                this->mesh(),
+                dimensionedScalar("zero", dimDensity/dimTime, 0)
+            )
+        );
+
+        volScalarField H1(heatTransferModels_[pair][pair.first()]->K());
+        volScalarField H2(heatTransferModels_[pair][pair.second()]->K());
+
+        Tf_.insert
+        (
+            pair,
+            new volScalarField
+            (
+                IOobject
+                (
+                    IOobject::groupName("Tf", pair.name()),
+                    this->mesh().time().timeName(),
+                    this->mesh(),
+                    IOobject::NO_READ,
+                    IOobject::AUTO_WRITE
+                ),
+                (
+                    H1*pair.phase1().thermo().T()
+                  + H2*pair.phase2().thermo().T()
+                )
+               /max
+                (
+                    H1 + H2,
+                    dimensionedScalar("small", heatTransferModel::dimK, SMALL)
+                )
+            )
+        );
+    }
+}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+template<class BasePhaseSystem>
+Foam::HeatAndMassTransferPhaseSystem<BasePhaseSystem>::
+~HeatAndMassTransferPhaseSystem()
+{}
+
+
+// * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * * //
+
+template<class BasePhaseSystem>
+Foam::tmp<Foam::volScalarField>
+Foam::HeatAndMassTransferPhaseSystem<BasePhaseSystem>::dmdt
+(
+    const phasePairKey& key
+) const
+{
+    const scalar dmdtSign(Pair<word>::compare(dmdt_.find(key).key(), key));
+
+    return dmdtSign**dmdt_[key];
+}
+
+
+template<class BasePhaseSystem>
+Foam::autoPtr<Foam::phaseSystem::momentumTransferTable>
+Foam::HeatAndMassTransferPhaseSystem<BasePhaseSystem>::momentumTransfer
+(
+    IOMRFZoneList& MRF
+) const
+{
+    autoPtr<phaseSystem::momentumTransferTable>
+        eqnsPtr(BasePhaseSystem::momentumTransfer(MRF));
+
+    phaseSystem::momentumTransferTable& eqns = eqnsPtr();
+
+    // Source term due to mass trasfer
+    forAllConstIter
+    (
+        phaseSystem::phasePairTable,
+        this->phasePairs_,
+        phasePairIter
+    )
+    {
+        const phasePair& pair(phasePairIter());
+
+        if (pair.ordered())
+        {
+            continue;
+        }
+
+        const volVectorField& U1(pair.phase1().U());
+        const volVectorField& U2(pair.phase2().U());
+
+        const volScalarField dmdt(this->dmdt(pair));
+        const volScalarField dmdt12(dmdt*pos(dmdt));
+        const volScalarField dmdt21(dmdt*neg(dmdt));
+
+        *eqns[pair.phase1().name()] += fvm::Sp(dmdt21, U1) - dmdt21*U2;
+        *eqns[pair.phase2().name()] += dmdt12*U1 - fvm::Sp(dmdt12, U2);
+    }
+
+    return eqnsPtr;
+}
+
+
+template<class BasePhaseSystem>
+Foam::autoPtr<Foam::phaseSystem::heatTransferTable>
+Foam::HeatAndMassTransferPhaseSystem<BasePhaseSystem>::heatTransfer() const
+{
+    autoPtr<phaseSystem::heatTransferTable> eqnsPtr
+    (
+        new phaseSystem::heatTransferTable()
+    );
+
+    phaseSystem::heatTransferTable& eqns = eqnsPtr();
+
+    forAllConstIter
+    (
+        phaseSystem::phaseModelTable,
+        this->phaseModels_,
+        phaseModelIter
+    )
+    {
+        const phaseModel& phase(phaseModelIter());
+
+        eqns.insert
+        (
+            phase.name(),
+            new fvScalarMatrix(phase.thermo().he(), dimEnergy/dimTime)
+        );
+    }
+
+    // Heat transfer with the interface
+    forAllConstIter
+    (
+        heatTransferModelTable,
+        heatTransferModels_,
+        heatTransferModelIter
+    )
+    {
+        const phasePair& pair
+        (
+            this->phasePairs_[heatTransferModelIter.key()]
+        );
+
+        const phaseModel* phase = &pair.phase1();
+        const phaseModel* otherPhase = &pair.phase2();
+
+        const volScalarField& Tf(*Tf_[pair]);
+
+        const volScalarField K1
+        (
+            heatTransferModelIter()[pair.first()]->K()
+        );
+        const volScalarField K2
+        (
+            heatTransferModelIter()[pair.second()]->K()
+        );
+        const volScalarField KEff
+        (
+            K1*K2
+           /max
+            (
+                K1 + K2,
+                dimensionedScalar("small", heatTransferModel::dimK, SMALL)
+            )
+        );
+
+        const volScalarField* K = &K1;
+        const volScalarField* otherK = &K2;
+
+        forAllConstIter(phasePair, pair, iter)
+        {
+            const volScalarField& he(phase->thermo().he());
+            volScalarField Cpv(phase->thermo().Cpv());
+
+            *eqns[phase->name()] +=
+                (*K)*(Tf - phase->thermo().T())
+              + KEff/Cpv*he - fvm::Sp(KEff/Cpv, he);
+
+            Swap(phase, otherPhase);
+            Swap(K, otherK);
+        }
+    }
+
+    return eqnsPtr;
+}
+
+
+template<class BasePhaseSystem>
+Foam::autoPtr<Foam::phaseSystem::massTransferTable>
+Foam::HeatAndMassTransferPhaseSystem<BasePhaseSystem>::massTransfer() const
+{
+    // Create a mass transfer matrix for each species of each phase
+    autoPtr<phaseSystem::massTransferTable> eqnsPtr
+    (
+        new phaseSystem::massTransferTable()
+    );
+
+    phaseSystem::massTransferTable& eqns = eqnsPtr();
+
+    forAllConstIter
+    (
+        phaseSystem::phaseModelTable,
+        this->phaseModels_,
+        phaseModelIter
+    )
+    {
+        const phaseModel& phase(phaseModelIter());
+
+        const PtrList<volScalarField>& Yi = phase.Y();
+
+        forAll(Yi, i)
+        {
+            eqns.insert
+            (
+                Yi[i].name(),
+                new fvScalarMatrix(Yi[i], dimMass/dimTime)
+            );
+        }
+    }
+
+    // Reset the interfacial mass flow rates
+    forAllConstIter
+    (
+        phaseSystem::phasePairTable,
+        this->phasePairs_,
+        phasePairIter
+    )
+    {
+        const phasePair& pair(phasePairIter());
+
+        if (pair.ordered())
+        {
+            continue;
+        }
+
+        *dmdt_[pair] =
+            *dmdtExplicit_[pair];
+
+        *dmdtExplicit_[pair] =
+            dimensionedScalar("zero", dimDensity/dimTime, 0);
+    }
+
+    // Sum up the contribution from each interface composition model
+    forAllConstIter
+    (
+        interfaceCompositionModelTable,
+        interfaceCompositionModels_,
+        interfaceCompositionModelIter
+    )
+    {
+        const interfaceCompositionModel& compositionModel
+        (
+            interfaceCompositionModelIter()
+        );
+
+        const phasePair& pair
+        (
+            this->phasePairs_[interfaceCompositionModelIter.key()]
+        );
+        const phaseModel& phase = pair.phase1();
+        const phaseModel& otherPhase = pair.phase2();
+        const phasePairKey key(phase.name(), otherPhase.name());
+
+        const volScalarField& Tf(*Tf_[key]);
+
+        volScalarField& dmdtExplicit(*dmdtExplicit_[key]);
+        volScalarField& dmdt(*dmdt_[key]);
+
+        scalar dmdtSign(Pair<word>::compare(dmdt_.find(key).key(), key));
+
+        const volScalarField K
+        (
+            massTransferModels_[key][phase.name()]->K()
+        );
+
+        forAllConstIter
+        (
+            hashedWordList,
+            compositionModel.species(),
+            memberIter
+        )
+        {
+            const word& member = *memberIter;
+
+            const word name
+            (
+                IOobject::groupName(member, phase.name())
+            );
+
+            const word otherName
+            (
+                IOobject::groupName(member, otherPhase.name())
+            );
+
+            const volScalarField KD
+            (
+                K*compositionModel.D(member)
+            );
+
+            const volScalarField Yf
+            (
+                compositionModel.Yf(member, Tf)
+            );
+
+            // Implicit transport through the phase
+            *eqns[name] +=
+                phase.rho()*KD*Yf
+              - fvm::Sp(phase.rho()*KD, eqns[name]->psi());
+
+            // Sum the mass transfer rate
+            dmdtExplicit += dmdtSign*phase.rho()*KD*Yf;
+            dmdt -= dmdtSign*phase.rho()*KD*eqns[name]->psi();
+
+            // Explicit transport out of the other phase
+            if (eqns.found(otherName))
+            {
+                *eqns[otherName] -=
+                    otherPhase.rho()*KD*compositionModel.dY(member, Tf);
+            }
+        }
+    }
+
+    return eqnsPtr;
+}
+
+
+template<class BasePhaseSystem>
+void Foam::HeatAndMassTransferPhaseSystem<BasePhaseSystem>::correctThermo()
+{
+    BasePhaseSystem::correctThermo();
+
+    // This loop solves for the interface temperatures, Tf, and updates the
+    // interface composition models.
+    //
+    // The rate of heat transfer to the interface must equal the latent heat
+    // consumed at the interface, i.e.:
+    //
+    // H1*(T1 - Tf) + H2*(T2 - Tf) == mDotL
+    //                             == K*rho*(Yfi - Yi)*Li
+    //
+    // Yfi is likely to be a strong non-linear (typically exponential) function
+    // of Tf, so the solution for the temperature is newton-accelerated
+
+    forAllConstIter
+    (
+        phaseSystem::phasePairTable,
+        this->phasePairs_,
+        phasePairIter
+    )
+    {
+        const phasePair& pair(phasePairIter());
+
+        if (pair.ordered())
+        {
+            continue;
+        }
+
+        const phasePairKey key12(pair.first(), pair.second(), true);
+        const phasePairKey key21(pair.second(), pair.first(), true);
+
+        volScalarField H1(heatTransferModels_[pair][pair.first()]->K());
+        volScalarField H2(heatTransferModels_[pair][pair.second()]->K());
+        dimensionedScalar HSmall("small", heatTransferModel::dimK, SMALL);
+
+        volScalarField mDotL
+        (
+            IOobject
+            (
+                "mDotL",
+                this->mesh().time().timeName(),
+                this->mesh()
+            ),
+            this->mesh(),
+            dimensionedScalar("zero", dimEnergy/dimVolume/dimTime, 0)
+        );
+        volScalarField mDotLPrime
+        (
+            IOobject
+            (
+                "mDotLPrime",
+                this->mesh().time().timeName(),
+                this->mesh()
+            ),
+            this->mesh(),
+            dimensionedScalar("zero", mDotL.dimensions()/dimTemperature, 0)
+        );
+
+        volScalarField& Tf = *Tf_[pair];
+
+        // Add latent heats from forward and backward models
+        if (interfaceCompositionModels_.found(key12))
+        {
+            interfaceCompositionModels_[key12]->addMDotL
+            (
+                massTransferModels_[pair][pair.first()]->K(),
+                Tf,
+                mDotL,
+                mDotLPrime
+            );
+        }
+        if (interfaceCompositionModels_.found(key21))
+        {
+            interfaceCompositionModels_[key21]->addMDotL
+            (
+                massTransferModels_[pair][pair.second()]->K(),
+                Tf,
+                mDotL,
+                mDotLPrime
+            );
+        }
+
+        // Update the interface temperature by applying one step of newton's
+        // method to the interface relation
+        Tf -=
+            (
+                H1*(Tf - pair.phase1().thermo().T())
+              + H2*(Tf - pair.phase2().thermo().T())
+              + mDotL
+            )
+           /(
+                max(H1 + H2 + mDotLPrime, HSmall)
+            );
+
+        // Update the interface compositions
+        if (interfaceCompositionModels_.found(key12))
+        {
+            interfaceCompositionModels_[key12]->update(Tf);
+        }
+        if (interfaceCompositionModels_.found(key21))
+        {
+            interfaceCompositionModels_[key21]->update(Tf);
+        }
+
+        Info<< "Tf." << pair.name()
+            << ": min = " << min(Tf.internalField())
+            << ", mean = " << average(Tf.internalField())
+            << ", max = " << max(Tf.internalField())
+            << endl;
+    }
+}
+
+
+template<class BasePhaseSystem>
+bool Foam::HeatAndMassTransferPhaseSystem<BasePhaseSystem>::read()
+{
+    if (BasePhaseSystem::read())
+    {
+        bool readOK = true;
+
+        // Models ...
+
+        return readOK;
+    }
+    else
+    {
+        return false;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/HeatAndMassTransferPhaseSystem/HeatAndMassTransferPhaseSystem.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/HeatAndMassTransferPhaseSystem/HeatAndMassTransferPhaseSystem.H
new file mode 100644
index 0000000000000000000000000000000000000000..02ec28e08db57e222cdfaae62616ed6d45d29b06
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/HeatAndMassTransferPhaseSystem/HeatAndMassTransferPhaseSystem.H
@@ -0,0 +1,180 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::HeatAndMassTransferPhaseSystem
+
+Description
+    Class which models interfacial heat and mass transfer between a number of
+    phases. Mass is transferred to or from a phase according to a composition
+    model at the surface of another phase. Heat is transferred from a phase to
+    an interfacial temperature. The interface temperature is calculated such
+    that the net rate at which the heat is transferred to the interface is
+    equal to the latent heat consumed by the mass transfer.
+
+SourceFiles
+    HeatAndMassTransferPhaseSystem.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef HeatAndMassTransferPhaseSystem_H
+#define HeatAndMassTransferPhaseSystem_H
+
+#include "phaseSystem.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+template <class modelType>
+class BlendedInterfacialModel;
+
+class blendingMethod;
+class heatTransferModel;
+class massTransferModel;
+class interfaceCompositionModel;
+
+/*---------------------------------------------------------------------------*\
+                 Class HeatAndMassTransferPhaseSystem Declaration
+\*---------------------------------------------------------------------------*/
+
+template<class BasePhaseSystem>
+class HeatAndMassTransferPhaseSystem
+:
+    public BasePhaseSystem
+{
+protected:
+
+    // Protected typedefs
+
+        typedef HashTable
+        <
+            HashTable
+            <
+                autoPtr<BlendedInterfacialModel<heatTransferModel> >
+            >,
+            phasePairKey,
+            phasePairKey::hash
+        > heatTransferModelTable;
+
+        typedef HashTable
+        <
+            HashTable
+            <
+                autoPtr<BlendedInterfacialModel<massTransferModel> >
+            >,
+            phasePairKey,
+            phasePairKey::hash
+        > massTransferModelTable;
+
+        typedef HashTable
+        <
+            autoPtr<interfaceCompositionModel>,
+            phasePairKey,
+            phasePairKey::hash
+        > interfaceCompositionModelTable;
+
+
+    // Protected data
+
+        //- Mass transfer rate
+        HashPtrTable<volScalarField, phasePairKey, phasePairKey::hash>
+            dmdt_;
+
+        //- Explicit part of the mass transfer rate
+        HashPtrTable<volScalarField, phasePairKey, phasePairKey::hash>
+            dmdtExplicit_;
+
+        //- Interface temperatures
+        HashPtrTable<volScalarField, phasePairKey, phasePairKey::hash> Tf_;
+
+        // Sub Models
+
+            //- Heat transfer models
+            heatTransferModelTable heatTransferModels_;
+
+            //- Mass transfer models
+            massTransferModelTable massTransferModels_;
+
+            //- Interface composition models
+            interfaceCompositionModelTable interfaceCompositionModels_;
+
+
+public:
+
+    // Constructors
+
+        //- Construct from fvMesh
+        HeatAndMassTransferPhaseSystem(const fvMesh&);
+
+
+    //- Destructor
+    virtual ~HeatAndMassTransferPhaseSystem();
+
+
+    // Member Functions
+
+        //- Return the interfacial mass flow rate
+        virtual tmp<volScalarField> dmdt
+        (
+            const phasePairKey& key
+        ) const;
+
+        //- Return the momentum transfer matrices
+        virtual autoPtr<phaseSystem::momentumTransferTable> momentumTransfer
+        (
+            IOMRFZoneList& mrfZones
+        ) const;
+
+        //- Return the heat transfer matrices
+        virtual autoPtr<phaseSystem::heatTransferTable>
+            heatTransfer() const;
+
+        //- Return the mass transfer matrices
+        virtual autoPtr<phaseSystem::massTransferTable>
+            massTransfer() const;
+
+        //- Correct the thermodynamics
+        virtual void correctThermo();
+
+        //- Read base phaseProperties dictionary
+        virtual bool read();
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#ifdef NoRepository
+#   include "HeatAndMassTransferPhaseSystem.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/HeatTransferPhaseSystem/HeatTransferPhaseSystem.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/HeatTransferPhaseSystem/HeatTransferPhaseSystem.C
new file mode 100644
index 0000000000000000000000000000000000000000..0a5d8a7060b2afd5a16173fb70ea27a7d4ed291d
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/HeatTransferPhaseSystem/HeatTransferPhaseSystem.C
@@ -0,0 +1,177 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "HeatTransferPhaseSystem.H"
+
+#include "BlendedInterfacialModel.H"
+#include "heatTransferModel.H"
+
+#include "HashPtrTable.H"
+
+#include "fvcDiv.H"
+#include "fvmSup.H"
+#include "fvMatrix.H"
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+template<class BasePhaseSystem>
+Foam::HeatTransferPhaseSystem<BasePhaseSystem>::HeatTransferPhaseSystem
+(
+    const fvMesh& mesh
+)
+:
+    BasePhaseSystem(mesh)
+{
+    this->generatePairsAndSubModels("heatTransfer", heatTransferModels_);
+}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+template<class BasePhaseSystem>
+Foam::HeatTransferPhaseSystem<BasePhaseSystem>::~HeatTransferPhaseSystem()
+{}
+
+
+// * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * * //
+
+template<class BasePhaseSystem>
+Foam::tmp<Foam::volScalarField>
+Foam::HeatTransferPhaseSystem<BasePhaseSystem>::dmdt
+(
+    const phasePairKey& key
+) const
+{
+    return tmp<volScalarField>
+    (
+        new volScalarField
+        (
+            IOobject
+            (
+                IOobject::groupName
+                (
+                    "dmdt",
+                    this->phasePairs_[key]->name()
+                ),
+                this->mesh().time().timeName(),
+                this->mesh().time()
+            ),
+            this->mesh(),
+            dimensionedScalar("zero", dimDensity/dimTime, 0)
+        )
+    );
+}
+
+
+template<class BasePhaseSystem>
+Foam::autoPtr<Foam::phaseSystem::heatTransferTable>
+Foam::HeatTransferPhaseSystem<BasePhaseSystem>::heatTransfer() const
+{
+    autoPtr<phaseSystem::heatTransferTable> eqnsPtr
+    (
+        new phaseSystem::heatTransferTable()
+    );
+
+    phaseSystem::heatTransferTable& eqns = eqnsPtr();
+
+    forAllConstIter
+    (
+        phaseSystem::phaseModelTable,
+        this->phaseModels_,
+        phaseModelIter
+    )
+    {
+        const phaseModel& phase(phaseModelIter());
+
+        eqns.insert
+        (
+            phase.name(),
+            new fvScalarMatrix(phase.thermo().he(), dimEnergy/dimTime)
+        );
+    }
+
+    forAllConstIter
+    (
+        heatTransferModelTable,
+        heatTransferModels_,
+        heatTransferModelIter
+    )
+    {
+        const volScalarField K(heatTransferModelIter()->K());
+
+        const phasePair& pair(this->phasePairs_[heatTransferModelIter.key()]);
+
+        const phaseModel* phase = &pair.phase1();
+        const phaseModel* otherPhase = &pair.phase2();
+
+        forAllConstIter(phasePair, pair, iter)
+        {
+            const volScalarField& he(phase->thermo().he());
+            volScalarField Cpv(phase->thermo().Cpv());
+
+            *eqns[phase->name()] +=
+                K*(otherPhase->thermo().T() - phase->thermo().T() + he/Cpv)
+              - fvm::Sp(K/Cpv, he);
+
+            Swap(phase, otherPhase);
+        }
+    }
+
+    return eqnsPtr;
+}
+
+
+template<class BasePhaseSystem>
+Foam::autoPtr<Foam::phaseSystem::massTransferTable>
+Foam::HeatTransferPhaseSystem<BasePhaseSystem>::massTransfer() const
+{
+    autoPtr<phaseSystem::massTransferTable> eqnsPtr
+    (
+        new phaseSystem::massTransferTable()
+    );
+
+    return eqnsPtr;
+}
+
+
+template<class BasePhaseSystem>
+bool Foam::HeatTransferPhaseSystem<BasePhaseSystem>::read()
+{
+    if (BasePhaseSystem::read())
+    {
+        bool readOK = true;
+
+        // Models ...
+
+        return readOK;
+    }
+    else
+    {
+        return false;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/HeatTransferPhaseSystem/HeatTransferPhaseSystem.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/HeatTransferPhaseSystem/HeatTransferPhaseSystem.H
new file mode 100644
index 0000000000000000000000000000000000000000..6bb96c90baeacb80ae3ed46d15168a899258fbfd
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/HeatTransferPhaseSystem/HeatTransferPhaseSystem.H
@@ -0,0 +1,125 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::HeatTransferPhaseSystem
+
+Description
+    Class which models interfacial heat transfer between a number of phases.
+
+SourceFiles
+    HeatTransferPhaseSystem.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef HeatTransferPhaseSystem_H
+#define HeatTransferPhaseSystem_H
+
+#include "phaseSystem.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+class blendingMethod;
+template <class modelType> class BlendedInterfacialModel;
+class heatTransferModel;
+
+/*---------------------------------------------------------------------------*\
+                    Class HeatTransferPhaseSystem Declaration
+\*---------------------------------------------------------------------------*/
+
+template<class BasePhaseSystem>
+class HeatTransferPhaseSystem
+:
+    public BasePhaseSystem
+{
+protected:
+
+    // Protected typedefs
+
+        typedef HashTable
+        <
+            autoPtr<BlendedInterfacialModel<heatTransferModel> >,
+            phasePairKey,
+            phasePairKey::hash
+        > heatTransferModelTable;
+
+
+    // Protected data
+
+        // Sub Models
+
+            //- Heat transfer models
+            heatTransferModelTable heatTransferModels_;
+
+
+public:
+
+    // Constructors
+
+        //- Construct from fvMesh
+        HeatTransferPhaseSystem(const fvMesh&);
+
+
+    //- Destructor
+    virtual ~HeatTransferPhaseSystem();
+
+
+    // Member Functions
+
+        //- Return the interfacial mass flow rate
+        virtual tmp<volScalarField> dmdt
+        (
+            const phasePairKey& key
+        ) const;
+
+        //- Return the heat transfer matrices
+        virtual autoPtr<phaseSystem::heatTransferTable>
+            heatTransfer() const;
+
+        //- Return the mass transfer matrices
+        virtual autoPtr<phaseSystem::massTransferTable>
+            massTransfer() const;
+
+        //- Read base phaseProperties dictionary
+        virtual bool read();
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#ifdef NoRepository
+#   include "HeatTransferPhaseSystem.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/MomentumTransferPhaseSystem/MomentumTransferPhaseSystem.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/MomentumTransferPhaseSystem/MomentumTransferPhaseSystem.C
new file mode 100644
index 0000000000000000000000000000000000000000..083af1fed552174735248a709111aa64c398d391
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/MomentumTransferPhaseSystem/MomentumTransferPhaseSystem.C
@@ -0,0 +1,533 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "MomentumTransferPhaseSystem.H"
+
+#include "BlendedInterfacialModel.H"
+#include "dragModel.H"
+#include "virtualMassModel.H"
+#include "liftModel.H"
+#include "wallLubricationModel.H"
+#include "turbulentDispersionModel.H"
+
+#include "IOMRFZoneList.H"
+#include "HashPtrTable.H"
+
+#include "fvmDdt.H"
+#include "fvmDiv.H"
+#include "fvmSup.H"
+#include "fvcDiv.H"
+#include "fvMatrix.H"
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+template<class BasePhaseSystem>
+Foam::MomentumTransferPhaseSystem<BasePhaseSystem>::
+MomentumTransferPhaseSystem
+(
+    const fvMesh& mesh
+)
+:
+    BasePhaseSystem(mesh)
+{
+    this->generatePairsAndSubModels
+    (
+        "drag",
+        dragModels_
+    );
+
+    this->generatePairsAndSubModels
+    (
+        "virtualMass",
+        virtualMassModels_
+    );
+
+    this->generatePairsAndSubModels
+    (
+        "lift",
+        liftModels_
+    );
+
+    this->generatePairsAndSubModels
+    (
+        "wallLubrication",
+        wallLubricationModels_
+    );
+
+    this->generatePairsAndSubModels
+    (
+        "turbulentDispersion",
+        turbulentDispersionModels_
+    );
+
+    forAllConstIter
+    (
+        dragModelTable,
+        dragModels_,
+        dragModelIter
+    )
+    {
+        const phasePair& pair(this->phasePairs_[dragModelIter.key()]);
+
+        Kds_.insert
+        (
+            pair,
+            new volScalarField
+            (
+                IOobject::groupName("Kd", pair.name()),
+                dragModelIter()->K()
+            )
+        );
+    }
+
+    forAllConstIter
+    (
+        virtualMassModelTable,
+        virtualMassModels_,
+        virtualMassModelIter
+    )
+    {
+        const phasePair& pair(this->phasePairs_[virtualMassModelIter.key()]);
+
+        Vms_.insert
+        (
+            pair,
+            new volScalarField
+            (
+                IOobject::groupName("Vm", pair.name()),
+                virtualMassModelIter()->K()
+            )
+        );
+    }
+}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+template<class BasePhaseSystem>
+Foam::MomentumTransferPhaseSystem<BasePhaseSystem>::
+~MomentumTransferPhaseSystem()
+{}
+
+
+// * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * * //
+
+template<class BasePhaseSystem>
+Foam::tmp<Foam::volScalarField>
+Foam::MomentumTransferPhaseSystem<BasePhaseSystem>::Kd
+(
+    const phasePairKey& key
+) const
+{
+    return dragModels_[key]->K();
+}
+
+
+template<class BasePhaseSystem>
+Foam::tmp<Foam::surfaceScalarField>
+Foam::MomentumTransferPhaseSystem<BasePhaseSystem>::Kdf
+(
+    const phasePairKey& key
+) const
+{
+    return dragModels_[key]->Kf();
+}
+
+
+template<class BasePhaseSystem>
+Foam::tmp<Foam::volScalarField>
+Foam::MomentumTransferPhaseSystem<BasePhaseSystem>::Vm
+(
+    const phasePairKey& key
+) const
+{
+    if (virtualMassModels_.found(key))
+    {
+        return virtualMassModels_[key]->K();
+    }
+    else
+    {
+        return tmp<volScalarField>
+        (
+            new volScalarField
+            (
+                IOobject
+                (
+                    virtualMassModel::typeName + ":K",
+                    this->mesh_.time().timeName(),
+                    this->mesh_,
+                    IOobject::NO_READ,
+                    IOobject::NO_WRITE,
+                    false
+                ),
+                this->mesh_,
+                dimensionedScalar("zero", virtualMassModel::dimK, 0)
+            )
+        );
+    }
+}
+
+
+template<class BasePhaseSystem>
+Foam::tmp<Foam::surfaceScalarField>
+Foam::MomentumTransferPhaseSystem<BasePhaseSystem>::Vmf
+(
+    const phasePairKey& key
+) const
+{
+    if (virtualMassModels_.found(key))
+    {
+        return virtualMassModels_[key]->Kf();
+    }
+    else
+    {
+        return tmp<surfaceScalarField>
+        (
+            new surfaceScalarField
+            (
+                IOobject
+                (
+                    virtualMassModel::typeName + ":Kf",
+                    this->mesh_.time().timeName(),
+                    this->mesh_,
+                    IOobject::NO_READ,
+                    IOobject::NO_WRITE,
+                    false
+                ),
+                this->mesh_,
+                dimensionedScalar("zero", virtualMassModel::dimK, 0)
+            )
+        );
+    }
+}
+
+
+template<class BasePhaseSystem>
+Foam::tmp<Foam::volVectorField>
+Foam::MomentumTransferPhaseSystem<BasePhaseSystem>::F
+(
+    const phasePairKey& key
+) const
+{
+    if (liftModels_.found(key) && wallLubricationModels_.found(key))
+    {
+        return
+            liftModels_[key]->template F<vector>()
+          + wallLubricationModels_[key]->template F<vector>();
+    }
+    else if (liftModels_.found(key))
+    {
+        return liftModels_[key]->template F<vector>();
+    }
+    else if (wallLubricationModels_.found(key))
+    {
+        return wallLubricationModels_[key]->template F<vector>();
+    }
+    else
+    {
+        return tmp<volVectorField>
+        (
+            new volVectorField
+            (
+                IOobject
+                (
+                    liftModel::typeName + ":F",
+                    this->mesh_.time().timeName(),
+                    this->mesh_,
+                    IOobject::NO_READ,
+                    IOobject::NO_WRITE,
+                    false
+                ),
+                this->mesh_,
+                dimensionedVector("zero", liftModel::dimF, vector::zero)
+            )
+        );
+    }
+}
+
+
+template<class BasePhaseSystem>
+Foam::tmp<Foam::surfaceScalarField>
+Foam::MomentumTransferPhaseSystem<BasePhaseSystem>::Ff
+(
+    const phasePairKey& key
+) const
+{
+    if (liftModels_.found(key) && wallLubricationModels_.found(key))
+    {
+        return
+            liftModels_[key]->Ff()
+          + wallLubricationModels_[key]->Ff();
+    }
+    else if (liftModels_.found(key))
+    {
+        return liftModels_[key]->Ff();
+    }
+    else if (wallLubricationModels_.found(key))
+    {
+        return wallLubricationModels_[key]->Ff();
+    }
+    else
+    {
+        return tmp<surfaceScalarField>
+        (
+            new surfaceScalarField
+            (
+                IOobject
+                (
+                    liftModel::typeName + ":Ff",
+                    this->mesh_.time().timeName(),
+                    this->mesh_,
+                    IOobject::NO_READ,
+                    IOobject::NO_WRITE,
+                    false
+                ),
+                this->mesh_,
+                dimensionedScalar("zero", liftModel::dimF*dimArea, 0)
+            )
+        );
+    }
+}
+
+
+template<class BasePhaseSystem>
+Foam::tmp<Foam::volScalarField>
+Foam::MomentumTransferPhaseSystem<BasePhaseSystem>::D
+(
+    const phasePairKey& key
+) const
+{
+    if (turbulentDispersionModels_.found(key))
+    {
+        return turbulentDispersionModels_[key]->D();
+    }
+    else
+    {
+        return tmp<volScalarField>
+        (
+            new volScalarField
+            (
+                IOobject
+                (
+                    turbulentDispersionModel::typeName + ":D",
+                    this->mesh_.time().timeName(),
+                    this->mesh_,
+                    IOobject::NO_READ,
+                    IOobject::NO_WRITE,
+                    false
+                ),
+                this->mesh_,
+                dimensionedScalar("zero", turbulentDispersionModel::dimD, 0)
+            )
+        );
+    }
+}
+
+
+template<class BasePhaseSystem>
+Foam::autoPtr<Foam::phaseSystem::momentumTransferTable>
+Foam::MomentumTransferPhaseSystem<BasePhaseSystem>::momentumTransfer
+(
+    IOMRFZoneList& MRF
+) const
+{
+    // Create a momentum transfer matrix for each phase
+    autoPtr<phaseSystem::momentumTransferTable> eqnsPtr
+    (
+        new phaseSystem::momentumTransferTable()
+    );
+
+    phaseSystem::momentumTransferTable& eqns = eqnsPtr();
+
+    forAllConstIter
+    (
+        phaseSystem::phaseModelTable,
+        this->phaseModels_,
+        phaseModelIter
+    )
+    {
+        const phaseModel& phase(phaseModelIter());
+
+        eqns.insert
+        (
+            phase.name(),
+            new fvVectorMatrix(phase.U(), dimMass*dimVelocity/dimTime)
+        );
+    }
+
+    // Update the drag coefficients
+    forAllConstIter
+    (
+        dragModelTable,
+        dragModels_,
+        dragModelIter
+    )
+    {
+        *Kds_[dragModelIter.key()] = dragModelIter()->K();
+    }
+
+    // Add the implicit part of the drag force
+    forAllConstIter
+    (
+        phaseSystem::KdTable,
+        Kds_,
+        KdIter
+    )
+    {
+        const volScalarField& K(*KdIter());
+
+        const phasePair& pair(this->phasePairs_[KdIter.key()]);
+
+        const phaseModel* phase = &pair.phase1();
+        const phaseModel* otherPhase = &pair.phase2();
+
+        forAllConstIter(phasePair, pair, iter)
+        {
+            const volVectorField& U(phase->U());
+
+            *eqns[phase->name()] -= fvm::Sp(K, U);
+
+            Swap(phase, otherPhase);
+        }
+    }
+
+    // Update the virtual mass coefficients
+    forAllConstIter
+    (
+        virtualMassModelTable,
+        virtualMassModels_,
+        virtualMassModelIter
+    )
+    {
+        *Vms_[virtualMassModelIter.key()] = virtualMassModelIter()->K();
+    }
+
+    // Add the virtual mass force
+    forAllConstIter
+    (
+        phaseSystem::VmTable,
+        Vms_,
+        VmIter
+    )
+    {
+        const volScalarField& Vm(*VmIter());
+
+        const phasePair& pair(this->phasePairs_[VmIter.key()]);
+
+        const phaseModel* phase = &pair.phase1();
+        const phaseModel* otherPhase = &pair.phase2();
+
+        forAllConstIter(phasePair, pair, iter)
+        {
+            const volVectorField& U(phase->U());
+            const surfaceScalarField& phi(phase->phi());
+
+            *eqns[phase->name()] +=
+              - Vm
+               *(
+                    fvm::ddt(U)
+                  + fvm::div(phi, U)
+                  - fvm::Sp(fvc::div(phi), U)
+                  - otherPhase->DUDt()
+                )
+              - MRF.DDt(Vm, U - otherPhase->U());
+
+            Swap(phase, otherPhase);
+        }
+    }
+
+    // Add the lift force
+    forAllConstIter
+    (
+        liftModelTable,
+        liftModels_,
+        liftModelIter
+    )
+    {
+        const volVectorField F(liftModelIter()->F<vector>());
+
+        const phasePair& pair(this->phasePairs_[liftModelIter.key()]);
+
+        *eqns[pair.phase1().name()] += F;
+        *eqns[pair.phase2().name()] -= F;
+    }
+
+    // Add the wall lubrication force
+    forAllConstIter
+    (
+        wallLubricationModelTable,
+        wallLubricationModels_,
+        wallLubricationModelIter
+    )
+    {
+        const volVectorField F(wallLubricationModelIter()->F<vector>());
+
+        const phasePair&
+            pair(this->phasePairs_[wallLubricationModelIter.key()]);
+
+        *eqns[pair.phase1().name()] += F;
+        *eqns[pair.phase2().name()] -= F;
+    }
+
+    // Add the turbulent dispersion force
+    forAllConstIter
+    (
+        turbulentDispersionModelTable,
+        turbulentDispersionModels_,
+        turbulentDispersionModelIter
+    )
+    {
+        const volVectorField F(turbulentDispersionModelIter()->F<vector>());
+
+        const phasePair&
+            pair(this->phasePairs_[turbulentDispersionModelIter.key()]);
+
+        *eqns[pair.phase1().name()] += F;
+        *eqns[pair.phase2().name()] -= F;
+    }
+
+    return eqnsPtr;
+}
+
+
+template<class BasePhaseSystem>
+bool Foam::MomentumTransferPhaseSystem<BasePhaseSystem>::read()
+{
+    if (BasePhaseSystem::read())
+    {
+        bool readOK = true;
+
+        // Read models ...
+
+        return readOK;
+    }
+    else
+    {
+        return false;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/MomentumTransferPhaseSystem/MomentumTransferPhaseSystem.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/MomentumTransferPhaseSystem/MomentumTransferPhaseSystem.H
new file mode 100644
index 0000000000000000000000000000000000000000..87e180cb4ac0a6009391638ee7ecea89e006c962
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/MomentumTransferPhaseSystem/MomentumTransferPhaseSystem.H
@@ -0,0 +1,198 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::MomentumTransferPhaseSystem
+
+Description
+    Class which models interfacial momenum transfer between a number of phases.
+    Drag, virtual mass, lift, wall lubrication and turbulent dispersion are all
+    modelled. The explicit contribution from the drag is omitted from the
+    transfer matrices, as this forms part of the solution of the pressure
+    equation.
+
+SourceFiles
+    MomentumTransferPhaseSystem.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef MomentumTransferPhaseSystem_H
+#define MomentumTransferPhaseSystem_H
+
+#include "phaseSystem.H"
+#include "HashPtrTable.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+template <class modelType>
+class BlendedInterfacialModel;
+
+class blendingMethod;
+class dragModel;
+class virtualMassModel;
+class liftModel;
+class wallLubricationModel;
+class turbulentDispersionModel;
+
+/*---------------------------------------------------------------------------*\
+                  Class MomentumTransferPhaseSystem Declaration
+\*---------------------------------------------------------------------------*/
+
+template<class BasePhaseSystem>
+class MomentumTransferPhaseSystem
+:
+    public BasePhaseSystem
+{
+protected:
+
+    // Protected typedefs
+
+        typedef HashTable
+        <
+            autoPtr<BlendedInterfacialModel<dragModel> >,
+            phasePairKey,
+            phasePairKey::hash
+        > dragModelTable;
+
+        typedef HashTable
+        <
+            autoPtr<BlendedInterfacialModel<virtualMassModel> >,
+            phasePairKey,
+            phasePairKey::hash
+        > virtualMassModelTable;
+
+        typedef HashTable
+        <
+            autoPtr<BlendedInterfacialModel<liftModel> >,
+            phasePairKey,
+            phasePairKey::hash
+        > liftModelTable;
+
+        typedef HashTable
+        <
+            autoPtr<BlendedInterfacialModel<wallLubricationModel> >,
+            phasePairKey,
+            phasePairKey::hash
+        > wallLubricationModelTable;
+
+        typedef HashTable
+        <
+            autoPtr<BlendedInterfacialModel<turbulentDispersionModel> >,
+            phasePairKey,
+            phasePairKey::hash
+        > turbulentDispersionModelTable;
+
+
+private:
+
+    // Private data
+
+        //- Drag coefficients
+        phaseSystem::KdTable Kds_;
+
+        //- Virtual mass coefficients
+        phaseSystem::VmTable Vms_;
+
+        // Sub Models
+
+            //- Drag models
+            dragModelTable dragModels_;
+
+            //- Virtual mass models
+            virtualMassModelTable virtualMassModels_;
+
+            //- Lift models
+            liftModelTable liftModels_;
+
+            //- Wall lubrication models
+            wallLubricationModelTable wallLubricationModels_;
+
+            //- Turbulent dispersion models
+            turbulentDispersionModelTable turbulentDispersionModels_;
+
+
+public:
+
+    // Constructors
+
+        //- Construct from fvMesh
+        MomentumTransferPhaseSystem(const fvMesh&);
+
+
+    //- Destructor
+    virtual ~MomentumTransferPhaseSystem();
+
+
+    // Member Functions
+
+        //- Return the drag coefficient
+        virtual tmp<volScalarField> Kd(const phasePairKey& key) const;
+
+        //- Return the face drag coefficient
+        virtual tmp<surfaceScalarField> Kdf(const phasePairKey& key) const;
+
+        //- Return the virtual mass coefficient
+        virtual tmp<volScalarField> Vm(const phasePairKey& key) const;
+
+        //- Return the face virtual mass coefficient
+        virtual tmp<surfaceScalarField> Vmf(const phasePairKey& key) const;
+
+        //- Return the combined force (lift + wall-lubrication)
+        virtual tmp<volVectorField> F(const phasePairKey& key) const;
+
+        //- Return the combined face-force (lift + wall-lubrication)
+        virtual tmp<surfaceScalarField> Ff(const phasePairKey& key) const;
+
+        //- Return the turbulent diffusivity
+        //  Multiplies the phase-fraction gradient
+        virtual tmp<volScalarField> D(const phasePairKey& key) const;
+
+        //- Return the momentum transfer matrices
+        virtual autoPtr<phaseSystem::momentumTransferTable> momentumTransfer
+        (
+            IOMRFZoneList& mrfZones
+        ) const;
+
+        //- Read base phaseProperties dictionary
+        virtual bool read();
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#ifdef NoRepository
+#   include "MomentumTransferPhaseSystem.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATE.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATE.C
new file mode 100644
index 0000000000000000000000000000000000000000..4d51d8c43d4850255fd3ad2dd61b449e5fcd4a8e
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATE.C
@@ -0,0 +1,205 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2013-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "IATE.H"
+#include "IATEsource.H"
+#include "fvmDdt.H"
+#include "fvmDiv.H"
+#include "fvmSup.H"
+#include "fvcDdt.H"
+#include "fvcDiv.H"
+#include "fvcAverage.H"
+#include "fvOptionList.H"
+#include "mathematicalConstants.H"
+#include "fundamentalConstants.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace diameterModels
+{
+    defineTypeNameAndDebug(IATE, 0);
+
+    addToRunTimeSelectionTable
+    (
+        diameterModel,
+        IATE,
+        dictionary
+    );
+}
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::diameterModels::IATE::IATE
+(
+    const dictionary& diameterProperties,
+    const phaseModel& phase
+)
+:
+    diameterModel(diameterProperties, phase),
+    kappai_
+    (
+        IOobject
+        (
+            IOobject::groupName("kappai", phase.name()),
+            phase_.time().timeName(),
+            phase_.mesh(),
+            IOobject::MUST_READ,
+            IOobject::AUTO_WRITE
+        ),
+        phase_.mesh()
+    ),
+    dMax_("dMax", dimLength, diameterProperties_.lookup("dMax")),
+    dMin_("dMin", dimLength, diameterProperties_.lookup("dMin")),
+    residualAlpha_
+    (
+        "residualAlpha",
+        dimless,
+        diameterProperties_.lookup("residualAlpha")
+    ),
+    d_
+    (
+        IOobject
+        (
+            IOobject::groupName("d", phase.name()),
+            phase_.time().timeName(),
+            phase_.mesh(),
+            IOobject::NO_READ,
+            IOobject::AUTO_WRITE
+        ),
+        dsm()
+    ),
+    sources_
+    (
+        diameterProperties_.lookup("sources"),
+        IATEsource::iNew(*this)
+    )
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::diameterModels::IATE::~IATE()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volScalarField> Foam::diameterModels::IATE::dsm() const
+{
+    return max(6/max(kappai_, 6/dMax_), dMin_);
+}
+
+// Placeholder for the nucleation/condensation model
+// Foam::tmp<Foam::volScalarField> Foam::diameterModels::IATE::Rph() const
+// {
+//     const volScalarField& T = phase_thermo().T();
+//     const volScalarField& p = phase_.p();
+//
+//     scalar A, B, C, sigma, vm, Rph;
+//
+//     volScalarField ps(1e5*pow(10, A - B/(T + C)));
+//     volScalarField Dbc
+//     (
+//         4*sigma*vm/(constant::physicoChemical::k*T*log(p/ps))
+//     );
+//
+//     return constant::mathematical::pi*sqr(Dbc)*Rph;
+// }
+
+void Foam::diameterModels::IATE::correct()
+{
+    // Initialise the accumulated source term to the dilatation effect
+    volScalarField R
+    (
+        (
+            (1.0/3.0)
+           /max
+            (
+                fvc::average(phase_ + phase_.oldTime()),
+                residualAlpha_
+            )
+        )
+       *(fvc::ddt(phase_) + fvc::div(phase_.alphaPhi()))
+    );
+
+    // Accumulate the run-time selectable sources
+    forAll(sources_, j)
+    {
+        R -= sources_[j].R();
+    }
+
+    // const_cast needed because the operators and functions of fvOptions
+    // are currently non-const.
+    fv::optionList& fvOptions = const_cast<fv::optionList&>
+    (
+        phase_.mesh().lookupObject<fv::optionList>("fvOptions")
+    );
+
+    // Construct the interfacial curvature equation
+    fvScalarMatrix kappaiEqn
+    (
+        fvm::ddt(kappai_) + fvm::div(phase_.phi(), kappai_)
+      - fvm::Sp(fvc::div(phase_.phi()), kappai_)
+     ==
+      - fvm::SuSp(R, kappai_)
+    //+ Rph() // Omit the nucleation/condensation term
+      + fvOptions(kappai_)
+    );
+
+    kappaiEqn.relax();
+
+    fvOptions.constrain(kappaiEqn);
+
+    kappaiEqn.solve();
+
+    // Update the Sauter-mean diameter
+    d_ = dsm();
+}
+
+
+bool Foam::diameterModels::IATE::read(const dictionary& phaseProperties)
+{
+    diameterModel::read(phaseProperties);
+
+    diameterProperties_.lookup("dMax") >> dMax_;
+    diameterProperties_.lookup("dMin") >> dMin_;
+
+    // Re-create all the sources updating number, type and coefficients
+    PtrList<IATEsource>
+    (
+        diameterProperties_.lookup("sources"),
+        IATEsource::iNew(*this)
+    ).transfer(sources_);
+
+    return true;
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATE.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATE.H
new file mode 100644
index 0000000000000000000000000000000000000000..5ad850e3f6b66b188beb42bb4fb16882fc2e7d2b
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATE.H
@@ -0,0 +1,155 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2013-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::diameterModels::IATE
+
+Description
+    IATE (Interfacial Area Transport Equation) bubble diameter model.
+
+    Solves for the interfacial curvature per unit volume of the phase rather
+    than interfacial area per unit volume to avoid stability issues relating to
+    the consistency requirements between the phase fraction and interfacial area
+    per unit volume.  In every other respect this model is as presented in the
+    paper:
+
+    \verbatim
+        "Development of Interfacial Area Transport Equation"
+        Ishii, M., Kim, S. and Kelly, J.,
+        Nuclear Engineering and Technology, Vol.37 No.6 December 2005
+    \endverbatim
+
+SourceFiles
+    IATE.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef IATE_H
+#define IATE_H
+
+#include "diameterModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace diameterModels
+{
+
+// Forward declaration of classes
+class IATEsource;
+
+/*---------------------------------------------------------------------------*\
+                           Class IATE Declaration
+\*---------------------------------------------------------------------------*/
+
+class IATE
+:
+    public diameterModel
+{
+    // Private data
+
+        //- Interfacial curvature (alpha*interfacial area)
+        volScalarField kappai_;
+
+        //- Maximum diameter used for stabilisation in the limit kappai->0
+        dimensionedScalar dMax_;
+
+        //- Minimum diameter used for stabilisation in the limit kappai->inf
+        dimensionedScalar dMin_;
+
+        //- Residual phase fraction
+        dimensionedScalar residualAlpha_;
+
+        //- The Sauter-mean diameter of the phase
+        volScalarField d_;
+
+        //- IATE sources
+        PtrList<IATEsource> sources_;
+
+
+    // Private member functions
+
+        tmp<volScalarField> dsm() const;
+
+
+public:
+
+    friend class IATEsource;
+
+    //- Runtime type information
+    TypeName("IATE");
+
+
+    // Constructors
+
+        //- Construct from components
+        IATE
+        (
+            const dictionary& diameterProperties,
+            const phaseModel& phase
+        );
+
+
+    //- Destructor
+    virtual ~IATE();
+
+
+    // Member Functions
+
+        //- Return the interfacial curvature
+        const volScalarField& kappai() const
+        {
+            return kappai_;
+        }
+
+        //- Return the interfacial area
+        tmp<volScalarField> a() const
+        {
+            return phase_*kappai_;
+        }
+
+        //- Return the Sauter-mean diameter
+        virtual tmp<volScalarField> d() const
+        {
+            return d_;
+        }
+
+        //- Correct the diameter field
+        virtual void correct();
+
+        //- Read phaseProperties dictionary
+        virtual bool read(const dictionary& phaseProperties);
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace diameterModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/IATEsource/IATEsource.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/IATEsource/IATEsource.C
new file mode 100644
index 0000000000000000000000000000000000000000..59bf824f56ad4647c7bbb86dcf3494cd3543d130
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/IATEsource/IATEsource.C
@@ -0,0 +1,148 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "IATEsource.H"
+#include "twoPhaseSystem.H"
+#include "fvMatrix.H"
+#include "PhaseCompressibleTurbulenceModel.H"
+#include "uniformDimensionedFields.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace diameterModels
+{
+    defineTypeNameAndDebug(IATEsource, 0);
+    defineRunTimeSelectionTable(IATEsource, dictionary);
+}
+}
+
+
+// * * * * * * * * * * * * * * * * * Selectors * * * * * * * * * * * * * * * //
+
+Foam::autoPtr<Foam::diameterModels::IATEsource>
+Foam::diameterModels::IATEsource::New
+(
+    const word& type,
+    const IATE& iate,
+    const dictionary& dict
+)
+{
+    dictionaryConstructorTable::iterator cstrIter =
+        dictionaryConstructorTablePtr_->find(type);
+
+    if (cstrIter == dictionaryConstructorTablePtr_->end())
+    {
+        FatalErrorIn
+        (
+            "IATEsource::New"
+            "(const word& type, const IATE&, const dictionary&)"
+        )   << "Unknown IATE source type "
+            << type << nl << nl
+            << "Valid IATE source types : " << endl
+            << dictionaryConstructorTablePtr_->sortedToc()
+            << exit(FatalError);
+    }
+
+    return autoPtr<IATEsource>(cstrIter()(iate, dict));
+}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volScalarField> Foam::diameterModels::IATEsource::Ur() const
+{
+    const uniformDimensionedVectorField& g =
+        phase().db().lookupObject<uniformDimensionedVectorField>("g");
+
+    return
+        sqrt(2.0)
+       *pow025
+        (
+            fluid().sigma()*mag(g)
+           *(otherPhase().rho() - phase().rho())
+           /sqr(otherPhase().rho())
+        )
+       *pow(max(1 - phase(), scalar(0)), 1.75);
+}
+
+Foam::tmp<Foam::volScalarField> Foam::diameterModels::IATEsource::Ut() const
+{
+    return sqrt(2*otherPhase().turbulence().k());
+}
+
+Foam::tmp<Foam::volScalarField> Foam::diameterModels::IATEsource::Re() const
+{
+    return max(Ur()*phase().d()/otherPhase().nu(), scalar(1.0e-3));
+}
+
+Foam::tmp<Foam::volScalarField> Foam::diameterModels::IATEsource::CD() const
+{
+    const volScalarField Eo(this->Eo());
+    const volScalarField Re(this->Re());
+
+    return
+        max
+        (
+            min
+            (
+                (16/Re)*(1 + 0.15*pow(Re, 0.687)),
+                48/Re
+            ),
+            8*Eo/(3*(Eo + 4))
+        );
+}
+
+Foam::tmp<Foam::volScalarField> Foam::diameterModels::IATEsource::Mo() const
+{
+    const uniformDimensionedVectorField& g =
+        phase().db().lookupObject<uniformDimensionedVectorField>("g");
+
+    return
+        mag(g)*pow4(otherPhase().nu())*sqr(otherPhase().rho())
+       *(otherPhase().rho() - phase().rho())
+       /pow3(fluid().sigma());
+}
+
+Foam::tmp<Foam::volScalarField> Foam::diameterModels::IATEsource::Eo() const
+{
+    const uniformDimensionedVectorField& g =
+        phase().db().lookupObject<uniformDimensionedVectorField>("g");
+
+    return
+        mag(g)*sqr(phase().d())
+       *(otherPhase().rho() - phase().rho())
+       /fluid().sigma();
+}
+
+Foam::tmp<Foam::volScalarField> Foam::diameterModels::IATEsource::We() const
+{
+    return
+        otherPhase().rho()*sqr(Ur())*phase().d()/fluid().sigma();
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/IATEsource/IATEsource.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/IATEsource/IATEsource.H
new file mode 100644
index 0000000000000000000000000000000000000000..8c8a68ef638fe447af8c4f62bf1eef75f824663a
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/IATEsource/IATEsource.H
@@ -0,0 +1,193 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2013-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::diameterModels::IATEsource
+
+Description
+    IATE (Interfacial Area Transport Equation) bubble diameter model
+    run-time selectable sources.
+
+SourceFiles
+    IATEsource.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef IATEsource_H
+#define IATEsource_H
+
+#include "IATE.H"
+#include "twoPhaseSystem.H"
+#include "mathematicalConstants.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace diameterModels
+{
+
+/*---------------------------------------------------------------------------*\
+                           Class IATEsource Declaration
+\*---------------------------------------------------------------------------*/
+
+class IATEsource
+{
+
+protected:
+
+    // Protected data
+
+        //- Reference to the IATE this source applies to
+        const IATE& iate_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("IATEsource");
+
+
+    // Declare run-time constructor selection table
+
+        declareRunTimeSelectionTable
+        (
+            autoPtr,
+            IATEsource,
+            dictionary,
+            (
+                const IATE& iate,
+                const dictionary& dict
+            ),
+            (iate, dict)
+        );
+
+
+    //- Class used for the read-construction of
+    //  PtrLists of IATE sources
+    class iNew
+    {
+        const IATE& iate_;
+
+    public:
+
+        iNew(const IATE& iate)
+        :
+            iate_(iate)
+        {}
+
+        autoPtr<IATEsource> operator()(Istream& is) const
+        {
+            word type(is);
+            dictionary dict(is);
+            return IATEsource::New(type, iate_, dict);
+        }
+    };
+
+
+    // Constructors
+
+        IATEsource(const IATE& iate)
+        :
+            iate_(iate)
+        {}
+
+        autoPtr<IATEsource> clone() const
+        {
+            notImplemented("autoPtr<IATEsource> clone() const");
+            return autoPtr<IATEsource>(NULL);
+        }
+
+
+    // Selectors
+
+        static autoPtr<IATEsource> New
+        (
+            const word& type,
+            const IATE& iate,
+            const dictionary& dict
+        );
+
+
+    //- Destructor
+    virtual ~IATEsource()
+    {}
+
+
+    // Member Functions
+
+        const phaseModel& phase() const
+        {
+            return iate_.phase();
+        }
+
+        const twoPhaseSystem& fluid() const
+        {
+            return refCast<const twoPhaseSystem>(iate_.phase().fluid());
+        }
+
+        const phaseModel& otherPhase() const
+        {
+            return fluid().otherPhase(phase());
+        }
+
+        scalar phi() const
+        {
+            return 1.0/(36*constant::mathematical::pi);
+        }
+
+        //- Return the bubble relative velocity
+        tmp<volScalarField> Ur() const;
+
+        //- Return the bubble turbulent velocity
+        tmp<volScalarField> Ut() const;
+
+        //- Return the bubble Reynolds number
+        tmp<volScalarField> Re() const;
+
+        //- Return the bubble drag coefficient
+        tmp<volScalarField> CD() const;
+
+        //- Return the bubble Morton number
+        tmp<volScalarField> Mo() const;
+
+        //- Return the bubble Eotvos number
+        tmp<volScalarField> Eo() const;
+
+        //- Return the bubble Webber number
+        tmp<volScalarField> We() const;
+
+        virtual tmp<volScalarField> R() const = 0;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace diameterModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/dummy/dummy.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/dummy/dummy.C
new file mode 100644
index 0000000000000000000000000000000000000000..d7244b14d4d3c80b29178ccce30d32af6a449e16
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/dummy/dummy.C
@@ -0,0 +1,66 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2013-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "dummy.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace diameterModels
+{
+namespace IATEsources
+{
+    defineTypeNameAndDebug(dummy, 0);
+    addToRunTimeSelectionTable(IATEsource, dummy, word);
+}
+}
+}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volScalarField>
+Foam::diameterModels::IATEsources::dummy::R() const
+{
+    return tmp<volScalarField>
+    (
+        new volScalarField
+        (
+            IOobject
+            (
+                "R",
+                iate_.phase().U().time().timeName(),
+                iate_.phase().mesh()
+            ),
+            iate_.phase().U().mesh(),
+            dimensionedScalar("R", dimless/dimTime, 0)
+        )
+    );
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/dummy/dummy.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/dummy/dummy.H
new file mode 100644
index 0000000000000000000000000000000000000000..e9c6529a97d643a92cc1391d65f86e09c24c49b4
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/dummy/dummy.H
@@ -0,0 +1,96 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2013-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::diameterModels::IATEsources::dummy
+
+Description
+
+SourceFiles
+    dummy.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef dummy_H
+#define dummy_H
+
+#include "IATEsource.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace diameterModels
+{
+namespace IATEsources
+{
+
+/*---------------------------------------------------------------------------*\
+                           Class dummy Declaration
+\*---------------------------------------------------------------------------*/
+
+class dummy
+:
+    public IATEsource
+{
+
+public:
+
+    //- Runtime type information
+    TypeName("dummy");
+
+    // Constructors
+
+        dummy
+        (
+            const word& name,
+            const IATE& iate,
+            const dictionary& dict
+        )
+        :
+            IATEsource(iate)
+        {}
+
+
+    //- Destructor
+    virtual ~dummy()
+    {}
+
+
+    // Member Functions
+
+        virtual tmp<volScalarField> R() const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace IATEsources
+} // End namespace diameterModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/randomCoalescence/randomCoalescence.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/randomCoalescence/randomCoalescence.C
new file mode 100644
index 0000000000000000000000000000000000000000..8fde0b702022bb19fcc5b59f7f214d796ab12495
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/randomCoalescence/randomCoalescence.C
@@ -0,0 +1,109 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2013-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "randomCoalescence.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace diameterModels
+{
+namespace IATEsources
+{
+    defineTypeNameAndDebug(randomCoalescence, 0);
+    addToRunTimeSelectionTable(IATEsource, randomCoalescence, dictionary);
+}
+}
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::diameterModels::IATEsources::randomCoalescence::
+randomCoalescence
+(
+    const IATE& iate,
+    const dictionary& dict
+)
+:
+    IATEsource(iate),
+    Crc_("Crc", dimless, dict.lookup("Crc")),
+    C_("C", dimless, dict.lookup("C")),
+    alphaMax_("alphaMax", dimless, dict.lookup("alphaMax"))
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volScalarField>
+Foam::diameterModels::IATEsources::randomCoalescence::R() const
+{
+    tmp<volScalarField> tR
+    (
+        new volScalarField
+        (
+            IOobject
+            (
+                "R",
+                iate_.phase().time().timeName(),
+                iate_.phase().mesh()
+            ),
+            iate_.phase().mesh(),
+            dimensionedScalar("R", dimless/dimTime, 0)
+        )
+    );
+
+    volScalarField R = tR();
+
+    scalar Crc = Crc_.value();
+    scalar C = C_.value();
+    scalar alphaMax = alphaMax_.value();
+    volScalarField Ut(this->Ut());
+    const volScalarField& alpha = phase();
+    const volScalarField& kappai = iate_.kappai();
+    scalar cbrtAlphaMax = cbrt(alphaMax);
+
+    forAll(R, celli)
+    {
+        if (alpha[celli] < alphaMax - SMALL)
+        {
+            scalar cbrtAlphaMaxMAlpha = cbrtAlphaMax - cbrt(alpha[celli]);
+
+            R[celli] =
+                (-12)*phi()*kappai[celli]*alpha[celli]
+               *Crc
+               *Ut[celli]
+               *(1 - exp(-C*cbrt(alpha[celli]*alphaMax)/cbrtAlphaMaxMAlpha))
+               /(cbrtAlphaMax*cbrtAlphaMaxMAlpha);
+        }
+    }
+
+    return tR;
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/randomCoalescence/randomCoalescence.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/randomCoalescence/randomCoalescence.H
new file mode 100644
index 0000000000000000000000000000000000000000..42dad81250152fa932f6815f210a4e8f5043fb15
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/randomCoalescence/randomCoalescence.H
@@ -0,0 +1,106 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2013-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::diameterModels::IATEsources::randomCoalescence
+
+Description
+    Random coalescence IATE source as defined in paper:
+
+    \verbatim
+        "Development of Interfacial Area Transport Equation"
+        Ishii, M., Kim, S. and Kelly, J.,
+        Nuclear Engineering and Technology, Vol.37 No.6 December 2005
+    \endverbatim
+
+
+SourceFiles
+    randomCoalescence.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef randomCoalescence_H
+#define randomCoalescence_H
+
+#include "IATEsource.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace diameterModels
+{
+namespace IATEsources
+{
+
+/*---------------------------------------------------------------------------*\
+                           Class randomCoalescence Declaration
+\*---------------------------------------------------------------------------*/
+
+class randomCoalescence
+:
+    public IATEsource
+{
+    // Private data
+
+        dimensionedScalar Crc_;
+        dimensionedScalar C_;
+        dimensionedScalar alphaMax_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("randomCoalescence");
+
+    // Constructors
+
+        randomCoalescence
+        (
+            const IATE& iate,
+            const dictionary& dict
+        );
+
+
+    //- Destructor
+    virtual ~randomCoalescence()
+    {}
+
+
+    // Member Functions
+
+        virtual tmp<volScalarField> R() const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace IATEsources
+} // End namespace diameterModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/turbulentBreakUp/turbulentBreakUp.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/turbulentBreakUp/turbulentBreakUp.C
new file mode 100644
index 0000000000000000000000000000000000000000..334369f40f1d152b03cf6d469b3bd4c0370d4cfb
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/turbulentBreakUp/turbulentBreakUp.C
@@ -0,0 +1,104 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2013-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "turbulentBreakUp.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace diameterModels
+{
+namespace IATEsources
+{
+    defineTypeNameAndDebug(turbulentBreakUp, 0);
+    addToRunTimeSelectionTable(IATEsource, turbulentBreakUp, dictionary);
+}
+}
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::diameterModels::IATEsources::turbulentBreakUp::
+turbulentBreakUp
+(
+    const IATE& iate,
+    const dictionary& dict
+)
+:
+    IATEsource(iate),
+    Cti_("Cti", dimless, dict.lookup("Cti")),
+    WeCr_("WeCr", dimless, dict.lookup("WeCr"))
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volScalarField>
+Foam::diameterModels::IATEsources::turbulentBreakUp::R() const
+{
+    tmp<volScalarField> tR
+    (
+        new volScalarField
+        (
+            IOobject
+            (
+                "R",
+                iate_.phase().time().timeName(),
+                iate_.phase().mesh()
+            ),
+            iate_.phase().mesh(),
+            dimensionedScalar("R", dimless/dimTime, 0)
+        )
+    );
+
+    volScalarField R = tR();
+
+    scalar Cti = Cti_.value();
+    scalar WeCr = WeCr_.value();
+    volScalarField Ut(this->Ut());
+    volScalarField We(this->We());
+    const volScalarField& d(iate_.d()());
+
+    forAll(R, celli)
+    {
+        if (We[celli] > WeCr)
+        {
+            R[celli] =
+                (1.0/3.0)
+               *Cti/d[celli]
+               *Ut[celli]
+               *sqrt(1 - WeCr/We[celli])
+               *exp(-WeCr/We[celli]);
+        }
+    }
+
+    return tR;
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/turbulentBreakUp/turbulentBreakUp.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/turbulentBreakUp/turbulentBreakUp.H
new file mode 100644
index 0000000000000000000000000000000000000000..d2040379c3bc24eae6261f96f5b7d77eeca57811
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/turbulentBreakUp/turbulentBreakUp.H
@@ -0,0 +1,104 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2013-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::diameterModels::IATEsources::turbulentBreakUp
+
+Description
+    Turbulence-induced break-up IATE source as defined in paper:
+
+    \verbatim
+        "Development of Interfacial Area Transport Equation"
+        Ishii, M., Kim, S. and Kelly, J.,
+        Nuclear Engineering and Technology, Vol.37 No.6 December 2005
+    \endverbatim
+
+SourceFiles
+    turbulentBreakUp.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef turbulentBreakUp_H
+#define turbulentBreakUp_H
+
+#include "IATEsource.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace diameterModels
+{
+namespace IATEsources
+{
+
+/*---------------------------------------------------------------------------*\
+                           Class turbulentBreakUp Declaration
+\*---------------------------------------------------------------------------*/
+
+class turbulentBreakUp
+:
+    public IATEsource
+{
+    // Private data
+
+        dimensionedScalar Cti_;
+        dimensionedScalar WeCr_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("turbulentBreakUp");
+
+    // Constructors
+
+        turbulentBreakUp
+        (
+            const IATE& iate,
+            const dictionary& dict
+        );
+
+
+    //- Destructor
+    virtual ~turbulentBreakUp()
+    {}
+
+
+    // Member Functions
+
+        virtual tmp<volScalarField> R() const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace IATEsources
+} // End namespace diameterModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/wakeEntrainmentCoalescence/wakeEntrainmentCoalescence.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/wakeEntrainmentCoalescence/wakeEntrainmentCoalescence.C
new file mode 100644
index 0000000000000000000000000000000000000000..a015be5f76a46b7dc6eea5d8b877e269c6277029
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/wakeEntrainmentCoalescence/wakeEntrainmentCoalescence.C
@@ -0,0 +1,72 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2013-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "wakeEntrainmentCoalescence.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace diameterModels
+{
+namespace IATEsources
+{
+    defineTypeNameAndDebug(wakeEntrainmentCoalescence, 0);
+    addToRunTimeSelectionTable
+    (
+        IATEsource,
+        wakeEntrainmentCoalescence,
+        dictionary
+    );
+}
+}
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::diameterModels::IATEsources::wakeEntrainmentCoalescence::
+wakeEntrainmentCoalescence
+(
+    const IATE& iate,
+    const dictionary& dict
+)
+:
+    IATEsource(iate),
+    Cwe_("Cwe", dimless, dict.lookup("Cwe"))
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volScalarField>
+Foam::diameterModels::IATEsources::wakeEntrainmentCoalescence::R() const
+{
+    return (-12)*phi()*Cwe_*cbrt(CD())*iate_.a()*Ur();
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/wakeEntrainmentCoalescence/wakeEntrainmentCoalescence.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/wakeEntrainmentCoalescence/wakeEntrainmentCoalescence.H
new file mode 100644
index 0000000000000000000000000000000000000000..ed18bbc9b3c391e11befb3923964c711a02d446a
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/wakeEntrainmentCoalescence/wakeEntrainmentCoalescence.H
@@ -0,0 +1,103 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2013-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::diameterModels::IATEsources::wakeEntrainmentCoalescence
+
+Description
+    Bubble coalescence due to wake entrainment IATE source as defined in paper:
+
+    \verbatim
+        "Development of Interfacial Area Transport Equation"
+        Ishii, M., Kim, S. and Kelly, J.,
+        Nuclear Engineering and Technology, Vol.37 No.6 December 2005
+    \endverbatim
+
+SourceFiles
+    wakeEntrainmentCoalescence.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef wakeEntrainmentCoalescence_H
+#define wakeEntrainmentCoalescence_H
+
+#include "IATEsource.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace diameterModels
+{
+namespace IATEsources
+{
+
+/*---------------------------------------------------------------------------*\
+                           Class wakeEntrainmentCoalescence Declaration
+\*---------------------------------------------------------------------------*/
+
+class wakeEntrainmentCoalescence
+:
+    public IATEsource
+{
+    // Private data
+
+        dimensionedScalar Cwe_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("wakeEntrainmentCoalescence");
+
+    // Constructors
+
+        wakeEntrainmentCoalescence
+        (
+            const IATE& iate,
+            const dictionary& dict
+        );
+
+
+    //- Destructor
+    virtual ~wakeEntrainmentCoalescence()
+    {}
+
+
+    // Member Functions
+
+        virtual tmp<volScalarField> R() const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace IATEsources
+} // End namespace diameterModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/constantDiameter/constantDiameter.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/constantDiameter/constantDiameter.C
new file mode 100644
index 0000000000000000000000000000000000000000..4cd500fa36db4e3ec55aa4f2ff8476ce2e6b3692
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/constantDiameter/constantDiameter.C
@@ -0,0 +1,97 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "constantDiameter.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace diameterModels
+{
+    defineTypeNameAndDebug(constant, 0);
+
+    addToRunTimeSelectionTable
+    (
+        diameterModel,
+        constant,
+        dictionary
+    );
+}
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::diameterModels::constant::constant
+(
+    const dictionary& diameterProperties,
+    const phaseModel& phase
+)
+:
+    diameterModel(diameterProperties, phase),
+    d_("d", dimLength, diameterProperties_.lookup("d"))
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::diameterModels::constant::~constant()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volScalarField> Foam::diameterModels::constant::d() const
+{
+    return tmp<Foam::volScalarField>
+    (
+        new volScalarField
+        (
+            IOobject
+            (
+                "d",
+                phase_.time().timeName(),
+                phase_.mesh()
+            ),
+            phase_.mesh(),
+            d_
+        )
+    );
+}
+
+
+bool Foam::diameterModels::constant::read(const dictionary& phaseProperties)
+{
+    diameterModel::read(phaseProperties);
+
+    diameterProperties_.lookup("d") >> d_;
+
+    return true;
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/constantDiameter/constantDiameter.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/constantDiameter/constantDiameter.H
new file mode 100644
index 0000000000000000000000000000000000000000..239c8c1fee8024f15687d172c0bfa0ef11d892f6
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/constantDiameter/constantDiameter.H
@@ -0,0 +1,100 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::diameterModels::constant
+
+Description
+    Constant dispersed-phase particle diameter model.
+
+SourceFiles
+    constant.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef constant_H
+#define constant_H
+
+#include "diameterModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace diameterModels
+{
+
+/*---------------------------------------------------------------------------*\
+                           Class constant Declaration
+\*---------------------------------------------------------------------------*/
+
+class constant
+:
+    public diameterModel
+{
+    // Private data
+
+        //- The constant diameter of the phase
+        dimensionedScalar d_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("constant");
+
+
+    // Constructors
+
+        //- Construct from components
+        constant
+        (
+            const dictionary& diameterProperties,
+            const phaseModel& phase
+        );
+
+
+    //- Destructor
+    virtual ~constant();
+
+
+    // Member Functions
+
+        //- Return the diameter as a field
+        virtual tmp<volScalarField> d() const;
+
+        //- Read diameterProperties dictionary
+        virtual bool read(const dictionary& diameterProperties);
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace diameterModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/diameterModel/diameterModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/diameterModel/diameterModel.C
new file mode 100644
index 0000000000000000000000000000000000000000..a956565b4710a10ba4d594cc0e386a0ae7b2eb2f
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/diameterModel/diameterModel.C
@@ -0,0 +1,70 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "diameterModel.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    defineTypeNameAndDebug(diameterModel, 0);
+    defineRunTimeSelectionTable(diameterModel, dictionary);
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::diameterModel::diameterModel
+(
+    const dictionary& diameterProperties,
+    const phaseModel& phase
+)
+:
+    diameterProperties_(diameterProperties),
+    phase_(phase)
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::diameterModel::~diameterModel()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+void Foam::diameterModel::correct()
+{}
+
+
+bool Foam::diameterModel::read(const dictionary& phaseProperties)
+{
+    diameterProperties_ = phaseProperties.subDict(type() + "Coeffs");
+
+    return true;
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/diameterModel/diameterModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/diameterModel/diameterModel.H
new file mode 100644
index 0000000000000000000000000000000000000000..19551f2d3c37c630cdae937ba2df681249fa0882
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/diameterModel/diameterModel.H
@@ -0,0 +1,139 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::diameterModel
+
+Description
+    A2stract base-class for dispersed-phase particle diameter models.
+
+SourceFiles
+    diameterModel.C
+    newDiameterModel.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef diameterModel_H
+#define diameterModel_H
+
+#include "dictionary.H"
+#include "phaseModel.H"
+#include "runTimeSelectionTables.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+                       Class diameterModel Declaration
+\*---------------------------------------------------------------------------*/
+
+class diameterModel
+{
+
+protected:
+
+    // Protected data
+
+        dictionary diameterProperties_;
+        const phaseModel& phase_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("diameterModel");
+
+
+    // Declare runtime construction
+
+        declareRunTimeSelectionTable
+        (
+            autoPtr,
+            diameterModel,
+            dictionary,
+            (
+                const dictionary& diameterProperties,
+                const phaseModel& phase
+            ),
+            (diameterProperties, phase)
+        );
+
+
+    // Constructors
+
+        diameterModel
+        (
+            const dictionary& diameterProperties,
+            const phaseModel& phase
+        );
+
+
+    //- Destructor
+    virtual ~diameterModel();
+
+
+    // Selectors
+
+        static autoPtr<diameterModel> New
+        (
+            const dictionary& diameterProperties,
+            const phaseModel& phase
+        );
+
+
+    // Member Functions
+
+        //- Return the phase diameter properties dictionary
+        const dictionary& diameterProperties() const
+        {
+            return diameterProperties_;
+        }
+
+        //- Return the phase
+        const phaseModel& phase() const
+        {
+            return phase_;
+        }
+
+        //- Return the phase mean diameter field
+        virtual tmp<volScalarField> d() const = 0;
+
+        //- Correct the diameter field
+        virtual void correct();
+
+        //- Read phaseProperties dictionary
+        virtual bool read(const dictionary& phaseProperties) = 0;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/diameterModel/newDiameterModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/diameterModel/newDiameterModel.C
new file mode 100644
index 0000000000000000000000000000000000000000..8db37d2bf024bb85a08e6a373ecc737937e20a46
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/diameterModel/newDiameterModel.C
@@ -0,0 +1,63 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "diameterModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+Foam::autoPtr<Foam::diameterModel> Foam::diameterModel::New
+(
+    const dictionary& dict,
+    const phaseModel& phase
+)
+{
+    word diameterModelType
+    (
+        dict.lookup("diameterModel")
+    );
+
+    Info << "Selecting diameterModel for phase "
+        << phase.name()
+        << ": "
+        << diameterModelType << endl;
+
+    dictionaryConstructorTable::iterator cstrIter =
+        dictionaryConstructorTablePtr_->find(diameterModelType);
+
+    if (cstrIter == dictionaryConstructorTablePtr_->end())
+    {
+        FatalErrorIn("diameterModel::New")
+           << "Unknown diameterModelType type "
+           << diameterModelType << endl << endl
+           << "Valid diameterModel types are : " << endl
+           << dictionaryConstructorTablePtr_->sortedToc()
+           << exit(FatalError);
+    }
+
+    return cstrIter()(dict.subDict(diameterModelType + "Coeffs"), phase);
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/isothermalDiameter/isothermalDiameter.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/isothermalDiameter/isothermalDiameter.C
new file mode 100644
index 0000000000000000000000000000000000000000..9fc5a48874f17968f47c58b0cd2e8454f3e4dad2
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/isothermalDiameter/isothermalDiameter.C
@@ -0,0 +1,91 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "isothermalDiameter.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace diameterModels
+{
+    defineTypeNameAndDebug(isothermal, 0);
+
+    addToRunTimeSelectionTable
+    (
+        diameterModel,
+        isothermal,
+        dictionary
+    );
+}
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::diameterModels::isothermal::isothermal
+(
+    const dictionary& diameterProperties,
+    const phaseModel& phase
+)
+:
+    diameterModel(diameterProperties, phase),
+    d0_("d0", dimLength, diameterProperties_.lookup("d0")),
+    p0_("p0", dimPressure, diameterProperties_.lookup("p0"))
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::diameterModels::isothermal::~isothermal()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volScalarField> Foam::diameterModels::isothermal::d() const
+{
+    const volScalarField& p = phase_.db().lookupObject<volScalarField>
+    (
+        "p"
+    );
+
+    return d0_*pow(p0_/p, 1.0/3.0);
+}
+
+
+bool Foam::diameterModels::isothermal::read(const dictionary& phaseProperties)
+{
+    diameterModel::read(phaseProperties);
+
+    diameterProperties_.lookup("d0") >> d0_;
+    diameterProperties_.lookup("p0") >> p0_;
+
+    return true;
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/isothermalDiameter/isothermalDiameter.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/isothermalDiameter/isothermalDiameter.H
new file mode 100644
index 0000000000000000000000000000000000000000..96e718e827c1031e9e8461fcbeccf4435f3150e9
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/isothermalDiameter/isothermalDiameter.H
@@ -0,0 +1,103 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::diameterModels::isothermal
+
+Description
+    Isothermal dispersed-phase particle diameter model.
+
+SourceFiles
+    isothermal.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef isothermal_H
+#define isothermal_H
+
+#include "diameterModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace diameterModels
+{
+
+/*---------------------------------------------------------------------------*\
+                           Class isothermal Declaration
+\*---------------------------------------------------------------------------*/
+
+class isothermal
+:
+    public diameterModel
+{
+    // Private data
+
+        //- Reference diameter for the isothermal expansion
+        dimensionedScalar d0_;
+
+        //- Reference pressure for the isothermal expansion
+        dimensionedScalar p0_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("isothermal");
+
+
+    // Constructors
+
+        //- Construct from components
+        isothermal
+        (
+            const dictionary& diameterProperties,
+            const phaseModel& phase
+        );
+
+
+    //- Destructor
+    virtual ~isothermal();
+
+
+    // Member Functions
+
+        //- Return the diameter field
+        virtual tmp<volScalarField> d() const;
+
+        //- Read phaseProperties dictionary
+        virtual bool read(const dictionary& phaseProperties);
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace diameterModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/AnisothermalPhaseModel/AnisothermalPhaseModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/AnisothermalPhaseModel/AnisothermalPhaseModel.C
new file mode 100644
index 0000000000000000000000000000000000000000..d62af01b53940703013ee81719186933b2c63e5c
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/AnisothermalPhaseModel/AnisothermalPhaseModel.C
@@ -0,0 +1,123 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "AnisothermalPhaseModel.H"
+#include "phaseSystem.H"
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+template<class BasePhaseModel>
+Foam::AnisothermalPhaseModel<BasePhaseModel>::AnisothermalPhaseModel
+(
+    const phaseSystem& fluid,
+    const word& phaseName
+)
+:
+    BasePhaseModel(fluid, phaseName),
+    K_
+    (
+        IOobject
+        (
+            IOobject::groupName("K", this->name()),
+            fluid.mesh().time().timeName(),
+            fluid.mesh()
+        ),
+        fluid.mesh(),
+        dimensionedScalar("K", sqr(dimVelocity), scalar(0))
+    )
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+template<class BasePhaseModel>
+Foam::AnisothermalPhaseModel<BasePhaseModel>::~AnisothermalPhaseModel()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+template<class BasePhaseModel>
+void Foam::AnisothermalPhaseModel<BasePhaseModel>::correctKinematics()
+{
+    BasePhaseModel::correctKinematics();
+    K_ = 0.5*magSqr(this->U());
+}
+
+
+template<class BasePhaseModel>
+void Foam::AnisothermalPhaseModel<BasePhaseModel>::correctThermo()
+{
+    BasePhaseModel::correctThermo();
+
+    this->thermo_->correct();
+}
+
+
+template<class BasePhaseModel>
+Foam::tmp<Foam::fvScalarMatrix>
+Foam::AnisothermalPhaseModel<BasePhaseModel>::heEqn()
+{
+    const volScalarField& alpha = *this;
+    const surfaceScalarField& alphaPhi = this->alphaPhi();
+    const surfaceScalarField& alphaRhoPhi = this->alphaRhoPhi();
+
+    const volScalarField& contErr(this->continuityError());
+
+    const volScalarField alphaEff
+    (
+        this->thermo_->alphaEff(this->turbulence().mut())
+    );
+
+    volScalarField& he = this->thermo_->he();
+
+    return
+    (
+        fvm::ddt(alpha, this->rho(), he) + fvm::div(alphaRhoPhi, he)
+      - fvm::Sp(contErr, he)
+
+      + fvc::ddt(alpha, this->rho(), K_) + fvc::div(alphaRhoPhi, K_)
+      - contErr*K_
+
+      - fvm::laplacian
+        (
+            fvc::interpolate(alpha)
+           *fvc::interpolate(alphaEff),
+            he
+        )
+
+      + (
+            he.name() == this->thermo_->phasePropertyName("e")
+          ? fvc::ddt(alpha)*this->thermo().p()
+          + fvc::div(alphaPhi, this->thermo().p())
+          : -alpha*this->fluid().dpdt()
+        )
+     ==
+        this->Sh()
+    );
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/AnisothermalPhaseModel/AnisothermalPhaseModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/AnisothermalPhaseModel/AnisothermalPhaseModel.H
new file mode 100644
index 0000000000000000000000000000000000000000..a9c3953543704b9f39cc0440435208a6d798b36d
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/AnisothermalPhaseModel/AnisothermalPhaseModel.H
@@ -0,0 +1,99 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::AnisothermalPhaseModel
+
+Description
+    Class which represents a phase for which the temperature (strictly energy)
+    varies. Returns the energy equation and corrects the thermodynamic model.
+
+SourceFiles
+    AnisothermalPhaseModel.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef AnisothermalPhaseModel_H
+#define AnisothermalPhaseModel_H
+
+#include "phaseModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+                           Class phaseModel Declaration
+\*---------------------------------------------------------------------------*/
+
+template<class BasePhaseModel>
+class AnisothermalPhaseModel
+:
+    public BasePhaseModel
+{
+    // Private data
+
+        //- Kinetic energy
+        volScalarField K_;
+
+
+public:
+
+    // Constructors
+
+        AnisothermalPhaseModel(const phaseSystem& fluid, const word& phaseName);
+
+
+    //- Destructor
+    virtual ~AnisothermalPhaseModel();
+
+
+    // Member Functions
+
+        //- Correct the kinematics
+        virtual void correctKinematics();
+
+        //- Correct the thermodynamics
+        virtual void correctThermo();
+
+        //- Return the enthalpy equation
+        virtual tmp<fvScalarMatrix> heEqn();
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#ifdef NoRepository
+#   include "AnisothermalPhaseModel.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/InertPhaseModel/InertPhaseModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/InertPhaseModel/InertPhaseModel.C
new file mode 100644
index 0000000000000000000000000000000000000000..909a5418b92ca77c9154671dab4334810244e493
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/InertPhaseModel/InertPhaseModel.C
@@ -0,0 +1,87 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "InertPhaseModel.H"
+#include "phaseSystem.H"
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+template<class BasePhaseModel>
+Foam::InertPhaseModel<BasePhaseModel>::InertPhaseModel
+(
+    const phaseSystem& fluid,
+    const word& phaseName
+)
+:
+    BasePhaseModel(fluid, phaseName)
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+template<class BasePhaseModel>
+Foam::InertPhaseModel<BasePhaseModel>::~InertPhaseModel()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+template<class BasePhaseModel>
+Foam::tmp<Foam::fvScalarMatrix>
+Foam::InertPhaseModel<BasePhaseModel>::R
+(
+    volScalarField& Yi
+) const
+{
+    return tmp<fvScalarMatrix>
+    (
+        new fvScalarMatrix(Yi, dimMass/dimTime)
+    );
+}
+
+
+template<class BasePhaseModel>
+Foam::tmp<Foam::volScalarField>
+Foam::InertPhaseModel<BasePhaseModel>::Sh() const
+{
+    return tmp<volScalarField>
+    (
+        new volScalarField
+        (
+            IOobject
+            (
+                IOobject::groupName("Sh", this->name()),
+                this->mesh().time().timeName(),
+                this->mesh()
+            ),
+            this->mesh(),
+            dimensionedScalar("zero", dimEnergy/dimTime/dimVolume, 0),
+            zeroGradientFvPatchScalarField::typeName
+        )
+    );
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/InertPhaseModel/InertPhaseModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/InertPhaseModel/InertPhaseModel.H
new file mode 100644
index 0000000000000000000000000000000000000000..c74088eaa505413fa79731e47dc6834b708f3bdd
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/InertPhaseModel/InertPhaseModel.H
@@ -0,0 +1,95 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::InertPhaseModel
+
+Description
+    Class which represents an inert phase, with no reactions. Returns zero
+    reaction rate and heat.
+
+SourceFiles
+    InertPhaseModel.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef InertPhaseModel_H
+#define InertPhaseModel_H
+
+#include "phaseModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+                           Class phaseModel Declaration
+\*---------------------------------------------------------------------------*/
+
+template<class BasePhaseModel>
+class InertPhaseModel
+:
+    public BasePhaseModel
+{
+public:
+
+    // Constructors
+
+        InertPhaseModel(const phaseSystem& fluid, const word& phaseName);
+
+
+    //- Destructor
+    virtual ~InertPhaseModel();
+
+
+    // Member Functions
+
+        // Thermo
+
+            //- Return the fuel consumption rate matrix
+            virtual tmp<fvScalarMatrix> R
+            (
+                volScalarField& Yi
+            ) const;
+
+            //- Return the reaction heat source
+            virtual tmp<volScalarField> Sh() const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#ifdef NoRepository
+#   include "InertPhaseModel.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/IsothermalPhaseModel/IsothermalPhaseModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/IsothermalPhaseModel/IsothermalPhaseModel.C
new file mode 100644
index 0000000000000000000000000000000000000000..07f99c5a5d23dc2d5cf315705a72e127f44b5bd2
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/IsothermalPhaseModel/IsothermalPhaseModel.C
@@ -0,0 +1,64 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "IsothermalPhaseModel.H"
+#include "phaseSystem.H"
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+template<class BasePhaseModel>
+Foam::IsothermalPhaseModel<BasePhaseModel>::IsothermalPhaseModel
+(
+    const phaseSystem& fluid,
+    const word& phaseName
+)
+:
+    BasePhaseModel(fluid, phaseName)
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+template<class BasePhaseModel>
+Foam::IsothermalPhaseModel<BasePhaseModel>::~IsothermalPhaseModel()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+template<class BasePhaseModel>
+void Foam::IsothermalPhaseModel<BasePhaseModel>::correctThermo()
+{}
+
+
+template<class BasePhaseModel>
+Foam::tmp<Foam::fvScalarMatrix>
+Foam::IsothermalPhaseModel<BasePhaseModel>::heEqn()
+{
+    return tmp<fvScalarMatrix>();
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/IsothermalPhaseModel/IsothermalPhaseModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/IsothermalPhaseModel/IsothermalPhaseModel.H
new file mode 100644
index 0000000000000000000000000000000000000000..d43a1a6119b6efbcb8148e620074e04850454cc2
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/IsothermalPhaseModel/IsothermalPhaseModel.H
@@ -0,0 +1,91 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::IsothermalPhaseModel
+
+Description
+    Class which represents a phase for which the temperature (strictly energy)
+    remains constant. Returns an empty energy equation and does nothing when
+    correctThermo is called.
+
+SourceFiles
+    IsothermalPhaseModel.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef IsothermalPhaseModel_H
+#define IsothermalPhaseModel_H
+
+#include "phaseModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+                           Class phaseModel Declaration
+\*---------------------------------------------------------------------------*/
+
+template<class BasePhaseModel>
+class IsothermalPhaseModel
+:
+    public BasePhaseModel
+{
+public:
+
+    // Constructors
+
+        IsothermalPhaseModel(const phaseSystem& fluid, const word& phaseName);
+
+
+    //- Destructor
+    virtual ~IsothermalPhaseModel();
+
+
+    // Member Functions
+
+        //- Correct the thermodynamics
+        virtual void correctThermo();
+
+        //- Return the enthalpy equation
+        virtual tmp<fvScalarMatrix> heEqn();
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#ifdef NoRepository
+#   include "IsothermalPhaseModel.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/MovingPhaseModel/MovingPhaseModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/MovingPhaseModel/MovingPhaseModel.C
new file mode 100644
index 0000000000000000000000000000000000000000..61658e249caf8791af5c55c2f4b154e2092243cf
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/MovingPhaseModel/MovingPhaseModel.C
@@ -0,0 +1,361 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "MovingPhaseModel.H"
+#include "phaseSystem.H"
+#include "PhaseCompressibleTurbulenceModel.H"
+#include "fixedValueFvPatchFields.H"
+#include "slipFvPatchFields.H"
+#include "partialSlipFvPatchFields.H"
+
+#include "fvmDdt.H"
+#include "fvmDiv.H"
+#include "fvmSup.H"
+#include "fvcDdt.H"
+#include "fvcDiv.H"
+#include "surfaceInterpolate.H"
+#include "fvMatrix.H"
+
+// * * * * * * * * * * * * * Static Member Functions * * * * * * * * * * * * //
+
+template<class BasePhaseModel>
+Foam::tmp<Foam::surfaceScalarField>
+Foam::MovingPhaseModel<BasePhaseModel>::generatePhi
+(
+    const word& phiName,
+    const volVectorField& U
+) const
+{
+    IOobject phiHeader
+    (
+        phiName,
+        U.mesh().time().timeName(),
+        U.mesh(),
+        IOobject::NO_READ
+    );
+
+    if (phiHeader.headerOk())
+    {
+        Info<< "Reading face flux field " << phiName << endl;
+
+        return
+            tmp<surfaceScalarField>
+            (
+                new surfaceScalarField
+                (
+                    IOobject
+                    (
+                        phiName,
+                        U.mesh().time().timeName(),
+                        U.mesh(),
+                        IOobject::MUST_READ,
+                        IOobject::AUTO_WRITE
+                    ),
+                    U.mesh()
+                )
+            );
+    }
+    else
+    {
+        Info<< "Calculating face flux field " << phiName << endl;
+
+        wordList phiTypes
+        (
+            U.boundaryField().size(),
+            calculatedFvPatchScalarField::typeName
+        );
+
+        forAll(U.boundaryField(), i)
+        {
+            if
+            (
+                isA<fixedValueFvPatchVectorField>(U.boundaryField()[i])
+             || isA<slipFvPatchVectorField>(U.boundaryField()[i])
+             || isA<partialSlipFvPatchVectorField>(U.boundaryField()[i])
+            )
+            {
+                phiTypes[i] = fixedValueFvPatchScalarField::typeName;
+            }
+        }
+
+        return tmp<surfaceScalarField>
+        (
+            new surfaceScalarField
+            (
+                IOobject
+                (
+                    phiName,
+                    U.mesh().time().timeName(),
+                    U.mesh(),
+                    IOobject::NO_READ,
+                    IOobject::AUTO_WRITE
+                ),
+                fvc::interpolate(U) & U.mesh().Sf(),
+                phiTypes
+            )
+        );
+    }
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+template<class BasePhaseModel>
+Foam::MovingPhaseModel<BasePhaseModel>::MovingPhaseModel
+(
+    const phaseSystem& fluid,
+    const word& phaseName
+)
+:
+    BasePhaseModel(fluid, phaseName),
+    U_
+    (
+        IOobject
+        (
+            IOobject::groupName("U", this->name()),
+            fluid.mesh().time().timeName(),
+            fluid.mesh(),
+            IOobject::MUST_READ,
+            IOobject::AUTO_WRITE
+        ),
+        fluid.mesh()
+    ),
+    phi_
+    (
+        generatePhi
+        (
+            IOobject::groupName("phi", this->name()),
+            U_
+        )
+    ),
+    alphaPhi_
+    (
+        IOobject
+        (
+            IOobject::groupName("alphaPhi", this->name()),
+            fluid.mesh().time().timeName(),
+            fluid.mesh()
+        ),
+        fluid.mesh(),
+        dimensionedScalar("0", dimensionSet(0, 3, -1, 0, 0), 0)
+    ),
+    alphaRhoPhi_
+    (
+        IOobject
+        (
+            IOobject::groupName("alphaRhoPhi", this->name()),
+            fluid.mesh().time().timeName(),
+            fluid.mesh()
+        ),
+        fluid.mesh(),
+        dimensionedScalar("0", dimensionSet(1, 0, -1, 0, 0), 0)
+    ),
+    DUDt_
+    (
+        IOobject
+        (
+            IOobject::groupName("DUDt", this->name()),
+            fluid.mesh().time().timeName(),
+            fluid.mesh()
+        ),
+        fluid.mesh(),
+        dimensionedVector("0", dimAcceleration, vector::zero)
+    ),
+    turbulence_
+    (
+        PhaseCompressibleTurbulenceModel<phaseModel>::New
+        (
+            *this,
+            this->thermo().rho(),
+            U_,
+            alphaRhoPhi_,
+            phi_,
+            *this
+        )
+    ),
+    continuityError_
+    (
+        IOobject
+        (
+            IOobject::groupName("continuityError", this->name()),
+            fluid.mesh().time().timeName(),
+            fluid.mesh()
+        ),
+        fluid.mesh(),
+        dimensionedScalar("0", dimDensity/dimTime, 0)
+    )
+{
+    correctKinematics();
+}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+template<class BasePhaseModel>
+Foam::MovingPhaseModel<BasePhaseModel>::~MovingPhaseModel()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+template<class BasePhaseModel>
+void Foam::MovingPhaseModel<BasePhaseModel>::correct()
+{
+    BasePhaseModel::correct();
+
+    continuityError_ =
+        fvc::ddt(*this, this->thermo().rho()) + fvc::div(alphaRhoPhi_);
+}
+
+
+template<class BasePhaseModel>
+void Foam::MovingPhaseModel<BasePhaseModel>::correctKinematics()
+{
+    BasePhaseModel::correctKinematics();
+
+    DUDt_ = fvc::ddt(U_) + fvc::div(phi_, U_) - fvc::div(phi_)*U_;
+}
+
+
+template<class BasePhaseModel>
+void Foam::MovingPhaseModel<BasePhaseModel>::correctTurbulence()
+{
+    BasePhaseModel::correctTurbulence();
+
+    turbulence_->correct();
+}
+
+
+template<class BasePhaseModel>
+Foam::tmp<Foam::fvVectorMatrix>
+Foam::MovingPhaseModel<BasePhaseModel>::UEqn()
+{
+    return
+    (
+        fvm::ddt(*this, this->thermo().rho(), U_)
+      + fvm::div(alphaRhoPhi_, U_)
+      - fvm::Sp(continuityError_, U_)
+      + turbulence_->divDevRhoReff(U_)
+    );
+}
+
+
+template<class BasePhaseModel>
+Foam::tmp<Foam::volVectorField>
+Foam::MovingPhaseModel<BasePhaseModel>::U() const
+{
+    return U_;
+}
+
+
+template<class BasePhaseModel>
+Foam::volVectorField&
+Foam::MovingPhaseModel<BasePhaseModel>::U()
+{
+    return U_;
+}
+
+
+template<class BasePhaseModel>
+Foam::tmp<Foam::volVectorField>
+Foam::MovingPhaseModel<BasePhaseModel>::DUDt() const
+{
+    return DUDt_;
+}
+
+
+template<class BasePhaseModel>
+Foam::tmp<Foam::volScalarField>
+Foam::MovingPhaseModel<BasePhaseModel>::continuityError() const
+{
+    return continuityError_;
+}
+
+
+template<class BasePhaseModel>
+Foam::volScalarField&
+Foam::MovingPhaseModel<BasePhaseModel>::continuityError()
+{
+    return continuityError_;
+}
+
+
+template<class BasePhaseModel>
+Foam::tmp<Foam::surfaceScalarField>
+Foam::MovingPhaseModel<BasePhaseModel>::phi() const
+{
+    return phi_;
+}
+
+
+template<class BasePhaseModel>
+Foam::surfaceScalarField&
+Foam::MovingPhaseModel<BasePhaseModel>::phi()
+{
+    return phi_;
+}
+
+
+template<class BasePhaseModel>
+Foam::tmp<Foam::surfaceScalarField>
+Foam::MovingPhaseModel<BasePhaseModel>::alphaPhi() const
+{
+    return alphaPhi_;
+}
+
+
+template<class BasePhaseModel>
+Foam::surfaceScalarField&
+Foam::MovingPhaseModel<BasePhaseModel>::alphaPhi()
+{
+    return alphaPhi_;
+}
+
+
+template<class BasePhaseModel>
+Foam::tmp<Foam::surfaceScalarField>
+Foam::MovingPhaseModel<BasePhaseModel>::alphaRhoPhi() const
+{
+    return alphaRhoPhi_;
+}
+
+
+template<class BasePhaseModel>
+Foam::surfaceScalarField&
+Foam::MovingPhaseModel<BasePhaseModel>::alphaRhoPhi()
+{
+    return alphaRhoPhi_;
+}
+
+
+template<class BasePhaseModel>
+const Foam::PhaseCompressibleTurbulenceModel<Foam::phaseModel>&
+Foam::MovingPhaseModel<BasePhaseModel>::turbulence() const
+{
+    return turbulence_;
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/MovingPhaseModel/MovingPhaseModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/MovingPhaseModel/MovingPhaseModel.H
new file mode 100644
index 0000000000000000000000000000000000000000..b92f2599356b41d6f1ea8a9df0d81d229e6f0255
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/MovingPhaseModel/MovingPhaseModel.H
@@ -0,0 +1,189 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::MovingPhaseModel
+
+Description
+    Class which represents a moving fluid phase. Holds the velocity, fluxes and
+    turbulence model. Provides access to the turbulent quantities.
+
+    Possible future extensions include separating the turbulent fuctionality
+    into another layer. It should also be possible to replace this layer with a
+    stationary phase model, in order to model packed beds or simple porous
+    media. This would probably require extra functionality, such as returning
+    the inputs into the general pressure equation (A, HbyA, etc ...).
+
+    Note that this class does not return the turbulence model, it just provides
+    indirect access to the turbulent data. This is so a layer without
+    turbulence modelling (such as a stationary model) could be substituted.
+
+SourceFiles
+    MovingPhaseModel.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef MovingPhaseModel_H
+#define MovingPhaseModel_H
+
+#include "phaseModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+template<class TransportModel>
+class PhaseCompressibleTurbulenceModel;
+
+/*---------------------------------------------------------------------------*\
+                           Class phaseModel Declaration
+\*---------------------------------------------------------------------------*/
+
+template<class BasePhaseModel>
+class MovingPhaseModel
+:
+    public BasePhaseModel
+{
+    // Private data
+
+        //- Velocity field
+        volVectorField U_;
+
+        //- Flux
+        surfaceScalarField phi_;
+
+        //- Volumetric flux
+        surfaceScalarField alphaPhi_;
+
+        //- Mass flux
+        surfaceScalarField alphaRhoPhi_;
+
+        //- Lagrangian acceleration field (needed for virtual-mass)
+        volVectorField DUDt_;
+
+        //- Turbulence model
+        autoPtr<PhaseCompressibleTurbulenceModel<phaseModel> > turbulence_;
+
+        //- Continuity error
+        volScalarField continuityError_;
+
+
+    // Private static member functions
+
+        //- Generate the flux field
+        tmp<surfaceScalarField> generatePhi
+        (
+            const word& phiName,
+            const volVectorField& U
+        ) const;
+
+
+public:
+
+    // Constructors
+
+        MovingPhaseModel
+        (
+            const phaseSystem& fluid,
+            const word& phaseName
+        );
+
+
+    //- Destructor
+    virtual ~MovingPhaseModel();
+
+
+    // Member Functions
+
+        //- Correct the phase properties other than the thermo and turbulence
+        virtual void correct();
+
+        //- Correct the kinematics
+        virtual void correctKinematics();
+
+        //- Correct the turbulence
+        virtual void correctTurbulence();
+
+        //- Return the momentum equation
+        virtual tmp<fvVectorMatrix> UEqn();
+
+        // Momentum
+
+            //- Constant access the velocity
+            virtual tmp<volVectorField> U() const;
+
+            //- Access the velocity
+            virtual volVectorField& U();
+
+            //- Return the substantive acceleration
+            virtual tmp<volVectorField> DUDt() const;
+
+            //- Constant access the continuity error
+            virtual tmp<volScalarField> continuityError() const;
+
+            //- Access the continuity error
+            virtual volScalarField& continuityError();
+
+            //- Constant access the volumetric flux
+            virtual tmp<surfaceScalarField> phi() const;
+
+            //- Access the volumetric flux
+            virtual surfaceScalarField& phi();
+
+            //- Constant access the volumetric flux of the phase
+            virtual tmp<surfaceScalarField> alphaPhi() const;
+
+            //- Access the volumetric flux of the phase
+            virtual surfaceScalarField& alphaPhi();
+
+            //- Constant access the mass flux of the phase
+            virtual tmp<surfaceScalarField> alphaRhoPhi() const;
+
+            //- Access the mass flux of the phase
+            virtual surfaceScalarField& alphaRhoPhi();
+
+
+        // Turbulence
+
+            //- Return the turbulence model
+            virtual const PhaseCompressibleTurbulenceModel<phaseModel>&
+                turbulence() const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#ifdef NoRepository
+#   include "MovingPhaseModel.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/MultiComponentPhaseModel/MultiComponentPhaseModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/MultiComponentPhaseModel/MultiComponentPhaseModel.C
new file mode 100644
index 0000000000000000000000000000000000000000..3d34d8cfe0fd461d3e887a4bf93ceb7cfea1a1ed
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/MultiComponentPhaseModel/MultiComponentPhaseModel.C
@@ -0,0 +1,190 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "MultiComponentPhaseModel.H"
+
+#include "phaseSystem.H"
+
+#include "fvmDdt.H"
+#include "fvmDiv.H"
+#include "fvmSup.H"
+#include "fvmLaplacian.H"
+#include "fvcDdt.H"
+#include "fvcDiv.H"
+#include "fvMatrix.H"
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+template<class BasePhaseModel>
+Foam::MultiComponentPhaseModel<BasePhaseModel>::MultiComponentPhaseModel
+(
+    const phaseSystem& fluid,
+    const word& phaseName
+)
+:
+    BasePhaseModel(fluid, phaseName),
+    Sc_
+    (
+        "Sc",
+        dimless,
+        fluid.subDict(phaseName).lookup("Sc")
+    ),
+    residualAlpha_
+    (
+        "residualAlpha",
+        dimless,
+        fluid.mesh().solverDict("Yi").lookup("residualAlpha")
+    ),
+    inertIndex_(-1)
+{
+    const word inertSpecie
+    (
+        this->thermo_->lookupOrDefault("inertSpecie", word::null)
+    );
+
+    if (inertSpecie != word::null)
+    {
+        inertIndex_ = this->thermo_->composition().species()[inertSpecie];
+    }
+}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+template<class BasePhaseModel>
+Foam::MultiComponentPhaseModel<BasePhaseModel>::~MultiComponentPhaseModel()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+template<class BasePhaseModel>
+void Foam::MultiComponentPhaseModel<BasePhaseModel>::correctThermo()
+{
+    volScalarField Yt
+    (
+        IOobject
+        (
+            IOobject::groupName("Yt", this->name()),
+            this->fluid().mesh().time().timeName(),
+            this->fluid().mesh()
+        ),
+        this->fluid().mesh(),
+        dimensionedScalar("zero", dimless, 0)
+    );
+
+    PtrList<volScalarField>& Yi = Y();
+
+    forAll(Yi, i)
+    {
+        if (i != inertIndex_)
+        {
+            Yt += Yi[i];
+        }
+    }
+
+    if (inertIndex_ != -1)
+    {
+        Yi[inertIndex_] = scalar(1) - Yt;
+        Yi[inertIndex_].max(0);
+    }
+    else
+    {
+        forAll(Yi, i)
+        {
+            Yi[i] /= Yt;
+            Yi[i].max(0);
+        }
+    }
+
+    BasePhaseModel::correctThermo();
+}
+
+
+template<class BasePhaseModel>
+Foam::tmp<Foam::fvScalarMatrix>
+Foam::MultiComponentPhaseModel<BasePhaseModel>::YiEqn
+(
+    volScalarField& Yi
+)
+{
+    if
+    (
+        (inertIndex_ != -1)
+     && (
+            Yi.name()
+         == IOobject::groupName
+            (
+                this->thermo_->composition().species()[inertIndex_],
+                this->name()
+            )
+        )
+    )
+    {
+        return tmp<fvScalarMatrix>();
+    }
+
+    const volScalarField& alpha = *this;
+    const surfaceScalarField& alphaRhoPhi = this->alphaRhoPhi();
+    const volScalarField& rho = this->rho();
+
+    return
+    (
+        fvm::ddt(alpha, rho, Yi)
+      + fvm::div(alphaRhoPhi, Yi, "div(" + alphaRhoPhi.name() + ",Yi)")
+      - fvm::Sp(this->continuityError(), Yi)
+
+      - fvm::laplacian
+        (
+            fvc::interpolate(alpha)
+           *fvc::interpolate(this->turbulence().nut()*rho/Sc_),
+            Yi
+        )
+     ==
+        this->R(Yi)
+
+      + fvc::ddt(residualAlpha_*rho, Yi)
+      - fvm::ddt(residualAlpha_*rho, Yi)
+    );
+}
+
+
+template<class BasePhaseModel>
+const Foam::PtrList<Foam::volScalarField>&
+Foam::MultiComponentPhaseModel<BasePhaseModel>::Y() const
+{
+    return this->thermo_->composition().Y();
+}
+
+
+template<class BasePhaseModel>
+Foam::PtrList<Foam::volScalarField>&
+Foam::MultiComponentPhaseModel<BasePhaseModel>::Y()
+{
+    return this->thermo_->composition().Y();
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/MultiComponentPhaseModel/MultiComponentPhaseModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/MultiComponentPhaseModel/MultiComponentPhaseModel.H
new file mode 100644
index 0000000000000000000000000000000000000000..272e520eeb311d2196e09438e3a5b912d49d16a1
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/MultiComponentPhaseModel/MultiComponentPhaseModel.H
@@ -0,0 +1,117 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::MultiComponentPhaseModel
+
+Description
+    Class which represents a phase with multiple species. Returns the species'
+    mass fractions, and their governing equations.
+
+SourceFiles
+    MultiComponentPhaseModel.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef MultiComponentPhaseModel_H
+#define MultiComponentPhaseModel_H
+
+#include "phaseModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+                           Class phaseModel Declaration
+\*---------------------------------------------------------------------------*/
+
+template<class BasePhaseModel>
+class MultiComponentPhaseModel
+:
+    public BasePhaseModel
+{
+protected:
+
+    // Protected data
+
+        //- Schmidt number
+        dimensionedScalar Sc_;
+
+        //- Residual phase fraction
+        dimensionedScalar residualAlpha_;
+
+        //- Inert species index
+        label inertIndex_;
+
+
+public:
+
+    // Constructors
+
+        MultiComponentPhaseModel
+        (
+            const phaseSystem& fluid,
+            const word& phaseName
+        );
+
+
+    //- Destructor
+    virtual ~MultiComponentPhaseModel();
+
+
+    // Member Functions
+
+        //- Correct the thermodynamics
+        virtual void correctThermo();
+
+        //- Return the species fraction equation
+        virtual tmp<fvScalarMatrix> YiEqn
+        (
+            volScalarField& Yi
+        );
+
+        //- Constant access the species mass fractions
+        virtual const PtrList<volScalarField>& Y() const;
+
+        //- Access the species mass fractions
+        virtual PtrList<volScalarField>& Y();
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#ifdef NoRepository
+#   include "MultiComponentPhaseModel.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/PurePhaseModel/PurePhaseModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/PurePhaseModel/PurePhaseModel.C
new file mode 100644
index 0000000000000000000000000000000000000000..c3e1831158af975200e8b012ebf99415198f89f4
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/PurePhaseModel/PurePhaseModel.C
@@ -0,0 +1,86 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "PurePhaseModel.H"
+#include "phaseSystem.H"
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+template<class BasePhaseModel>
+Foam::PurePhaseModel<BasePhaseModel>::PurePhaseModel
+(
+    const phaseSystem& fluid,
+    const word& phaseName
+)
+:
+    BasePhaseModel(fluid, phaseName)
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+template<class BasePhaseModel>
+Foam::PurePhaseModel<BasePhaseModel>::~PurePhaseModel()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+template<class BasePhaseModel>
+Foam::tmp<Foam::fvScalarMatrix>
+Foam::PurePhaseModel<BasePhaseModel>::YiEqn
+(
+    volScalarField& Yi
+)
+{
+    notImplemented
+    (
+        "template<class BasePhaseModel> "
+        "Foam::tmp<Foam::fvScalarMatrix> "
+        "Foam::PurePhaseModel<BasePhaseModel>::YiEqn"
+        "(volScalarField& Yi) const"
+    );
+
+    return tmp<fvScalarMatrix>();
+}
+
+
+template<class BasePhaseModel>
+const Foam::PtrList<Foam::volScalarField>&
+Foam::PurePhaseModel<BasePhaseModel>::Y() const
+{
+    return Y_;
+}
+
+
+template<class BasePhaseModel>
+Foam::PtrList<Foam::volScalarField>&
+Foam::PurePhaseModel<BasePhaseModel>::Y()
+{
+    return Y_;
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/PurePhaseModel/PurePhaseModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/PurePhaseModel/PurePhaseModel.H
new file mode 100644
index 0000000000000000000000000000000000000000..f17c60cb6f8c91b9f7aacac25341390a2b84f525
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/PurePhaseModel/PurePhaseModel.H
@@ -0,0 +1,104 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::PurePhaseModel
+
+Description
+    Class which represents pure phases, i.e. without any species. Returns an
+    empty list of mass fractions.
+
+SourceFiles
+    PurePhaseModel.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef PurePhaseModel_H
+#define PurePhaseModel_H
+
+#include "phaseModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+                           Class phaseModel Declaration
+\*---------------------------------------------------------------------------*/
+
+template<class BasePhaseModel>
+class PurePhaseModel
+:
+    public BasePhaseModel
+{
+protected:
+
+    // Protected data
+
+        //- Empty mass fraction field list
+        PtrList<volScalarField> Y_;
+
+
+public:
+
+    // Constructors
+
+        PurePhaseModel(const phaseSystem& fluid, const word& phaseName);
+
+
+    //- Destructor
+    virtual ~PurePhaseModel();
+
+
+    // Member Functions
+
+        //- Return the species fraction equation
+        virtual tmp<fvScalarMatrix> YiEqn(volScalarField& Yi);
+
+
+        // Thermo
+
+            //- Return the species mass fractions
+            virtual const PtrList<volScalarField>& Y() const;
+
+            //- Access the species mass fractions
+            virtual PtrList<volScalarField>& Y();
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#ifdef NoRepository
+#   include "PurePhaseModel.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/ReactingPhaseModel/ReactingPhaseModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/ReactingPhaseModel/ReactingPhaseModel.C
new file mode 100644
index 0000000000000000000000000000000000000000..a6ab32d2fcb8c0c91daef702360400c87eb6b86d
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/ReactingPhaseModel/ReactingPhaseModel.C
@@ -0,0 +1,108 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "ReactingPhaseModel.H"
+#include "phaseSystem.H"
+#include "fvMatrix.H"
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+template<class BasePhaseModel, class ReactionType>
+Foam::ReactingPhaseModel<BasePhaseModel, ReactionType>::ReactingPhaseModel
+(
+    const phaseSystem& fluid,
+    const word& phaseName
+)
+:
+    BasePhaseModel(fluid, phaseName, false),
+    reaction_
+    (
+        ReactionType::New(fluid.mesh(), phaseName)
+    )
+{
+    this->thermo_ = &reaction_->thermo();
+
+    this->thermo_->validate
+    (
+        IOobject::groupName(phaseModel::typeName, this->name()),
+        "h",
+        "e"
+    );
+}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+template<class BasePhaseModel, class ReactionType>
+Foam::ReactingPhaseModel<BasePhaseModel, ReactionType>::~ReactingPhaseModel()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+template<class BasePhaseModel, class ReactionType>
+void Foam::ReactingPhaseModel<BasePhaseModel, ReactionType>::correctThermo()
+{
+    reaction_->setTurbulence
+    (
+        const_cast<compressibleTurbulenceModel&>
+        (
+            this->mesh().template lookupObject<compressibleTurbulenceModel>
+            (
+                IOobject::groupName
+                (
+                    turbulenceModel::propertiesName,
+                    this->name()
+                )
+            )
+        )
+    );
+
+    BasePhaseModel::correctThermo();
+
+    reaction_->correct();
+}
+
+
+template<class BasePhaseModel, class ReactionType>
+Foam::tmp<Foam::fvScalarMatrix>
+Foam::ReactingPhaseModel<BasePhaseModel, ReactionType>::R
+(
+    volScalarField& Yi
+) const
+{
+    return reaction_->R(Yi);
+}
+
+
+template<class BasePhaseModel, class ReactionType>
+Foam::tmp<Foam::volScalarField>
+Foam::ReactingPhaseModel<BasePhaseModel, ReactionType>::Sh() const
+{
+    return reaction_->Sh();
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/ReactingPhaseModel/ReactingPhaseModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/ReactingPhaseModel/ReactingPhaseModel.H
new file mode 100644
index 0000000000000000000000000000000000000000..988674d55c8fa8010fbae34e6b2b0a12c294692c
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/ReactingPhaseModel/ReactingPhaseModel.H
@@ -0,0 +1,108 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::ReactingPhaseModel
+
+Description
+    Class which represents phases with volumetric reactions. Returns the
+    reaction rate and heat.
+
+SourceFiles
+    ReactingPhaseModel.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef ReactingPhaseModel_H
+#define ReactingPhaseModel_H
+
+#include "phaseModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+                           Class phaseModel Declaration
+\*---------------------------------------------------------------------------*/
+
+template<class BasePhaseModel, class ReactionType>
+class ReactingPhaseModel
+:
+    public BasePhaseModel
+{
+protected:
+
+    // Protected data
+
+        //- Reaction model
+        autoPtr<ReactionType> reaction_;
+
+
+public:
+
+    // Constructors
+
+        ReactingPhaseModel
+        (
+            const phaseSystem& fluid,
+            const word& phaseName
+        );
+
+
+    //- Destructor
+    virtual ~ReactingPhaseModel();
+
+
+    // Member Functions
+
+        //- Correct the thermodynamics
+        virtual void correctThermo();
+
+        //- Return the species fraction equation
+        virtual tmp<fvScalarMatrix> R
+        (
+            volScalarField& Yi
+        ) const;
+
+        //- Return the reacton heat source
+        virtual tmp<volScalarField> Sh() const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#ifdef NoRepository
+#   include "ReactingPhaseModel.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/ThermoPhaseModel/ThermoPhaseModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/ThermoPhaseModel/ThermoPhaseModel.C
new file mode 100644
index 0000000000000000000000000000000000000000..2befe1585afb66487fcd56f38a52c895cbed32ce
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/ThermoPhaseModel/ThermoPhaseModel.C
@@ -0,0 +1,158 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "ThermoPhaseModel.H"
+
+#include "phaseSystem.H"
+
+#include "fvmDdt.H"
+#include "fvmDiv.H"
+#include "fvmSup.H"
+#include "fvmLaplacian.H"
+#include "fvcDdt.H"
+#include "fvcDiv.H"
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+template<class BasePhaseModel, class ThermoType>
+Foam::ThermoPhaseModel<BasePhaseModel, ThermoType>::ThermoPhaseModel
+(
+    const phaseSystem& fluid,
+    const word& phaseName,
+    const bool createThermo
+)
+:
+    BasePhaseModel(fluid, phaseName)
+{
+    if (createThermo)
+    {
+        thermoPtr_.set
+        (
+            ThermoType::New(fluid.mesh(), phaseName).ptr()
+        );
+
+        thermo_ = thermoPtr_.ptr();
+
+        thermo_->validate
+        (
+            IOobject::groupName(phaseModel::typeName, this->name()),
+            "h",
+            "e"
+        );
+    }
+}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+template<class BasePhaseModel, class ThermoType>
+Foam::ThermoPhaseModel<BasePhaseModel, ThermoType>::~ThermoPhaseModel()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+template<class BasePhaseModel, class ThermoType>
+const Foam::rhoThermo&
+Foam::ThermoPhaseModel<BasePhaseModel, ThermoType>::thermo() const
+{
+    return *thermo_;
+}
+
+
+template<class BasePhaseModel, class ThermoType>
+Foam::rhoThermo&
+Foam::ThermoPhaseModel<BasePhaseModel, ThermoType>::thermo()
+{
+    return *thermo_;
+}
+
+
+template<class BasePhaseModel, class ThermoType>
+Foam::tmp<Foam::volScalarField>
+Foam::ThermoPhaseModel<BasePhaseModel, ThermoType>::rho() const
+{
+    return thermo_->rho();
+}
+
+
+template<class BasePhaseModel, class ThermoType>
+Foam::tmp<Foam::volScalarField>
+Foam::ThermoPhaseModel<BasePhaseModel, ThermoType>::mu() const
+{
+    return thermo_->mu();
+}
+
+
+template<class BasePhaseModel, class ThermoType>
+Foam::tmp<Foam::scalarField>
+Foam::ThermoPhaseModel<BasePhaseModel, ThermoType>::mu
+(
+    const label patchI
+) const
+{
+    return thermo_->mu(patchI);
+}
+
+
+template<class BasePhaseModel, class ThermoType>
+Foam::tmp<Foam::volScalarField>
+Foam::ThermoPhaseModel<BasePhaseModel, ThermoType>::nu() const
+{
+    return thermo_->nu();
+}
+
+
+template<class BasePhaseModel, class ThermoType>
+Foam::tmp<Foam::scalarField>
+Foam::ThermoPhaseModel<BasePhaseModel, ThermoType>::nu
+(
+    const label patchI
+) const
+{
+    return thermo_->nu(patchI);
+}
+
+
+template<class BasePhaseModel, class ThermoType>
+Foam::tmp<Foam::volScalarField>
+Foam::ThermoPhaseModel<BasePhaseModel, ThermoType>::kappa() const
+{
+    return thermo_->kappa();
+}
+
+
+template<class BasePhaseModel, class ThermoType>
+Foam::tmp<Foam::scalarField>
+Foam::ThermoPhaseModel<BasePhaseModel, ThermoType>::kappa
+(
+    const label patchI
+) const
+{
+    return thermo_->kappa(patchI);
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/ThermoPhaseModel/ThermoPhaseModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/ThermoPhaseModel/ThermoPhaseModel.H
new file mode 100644
index 0000000000000000000000000000000000000000..0c2b243a83c2d7e2613ceded67c82cf479194e1c
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/ThermoPhaseModel/ThermoPhaseModel.H
@@ -0,0 +1,138 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::ThermoPhaseModel
+
+Description
+    Class which represents a phase with a thermodynamic model. Provides access
+    to the thermodynamic variables. Note that the thermo model itself is not
+    returned as this class could be substituted in the hierarcy for one which
+    mirrors the functionality, but does not include a thermo model; an
+    incompressible phase model, for example.
+
+SourceFiles
+    ThermoPhaseModel.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef ThermoPhaseModel_H
+#define ThermoPhaseModel_H
+
+#include "phaseModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+class rhoThermo;
+
+/*---------------------------------------------------------------------------*\
+                           Class phaseModel Declaration
+\*---------------------------------------------------------------------------*/
+
+template<class BasePhaseModel, class ThermoType>
+class ThermoPhaseModel
+:
+    public BasePhaseModel
+{
+protected:
+
+    // Protected data
+
+        //- Thermophysical model
+        autoPtr<ThermoType> thermoPtr_;
+
+        //- Thermophysical model
+        ThermoType* thermo_;
+
+
+public:
+
+    // Constructors
+
+        ThermoPhaseModel
+        (
+            const phaseSystem& fluid,
+            const word& phaseName,
+            const bool createThermo = true
+        );
+
+
+    //- Destructor
+    virtual ~ThermoPhaseModel();
+
+
+    // Member Functions
+
+        // Thermo
+
+            //- Return const access to the thermophysical model
+            virtual const rhoThermo& thermo() const;
+
+            //- Return non-const access to the thermophysical model
+            //  for correction
+            virtual rhoThermo& thermo();
+
+            //- Return the density field
+            virtual tmp<volScalarField> rho() const;
+
+
+        // Transport
+
+            //- Return the laminar dynamic viscosity
+            virtual tmp<volScalarField> mu() const;
+
+            //- Access the laminar dynamic viscosity
+            virtual tmp<scalarField> mu(const label patchI) const;
+
+            //- Return the laminar kinematic viscosity
+            virtual tmp<volScalarField> nu() const;
+
+            //- Access the laminar kinematic viscosity
+            virtual tmp<scalarField> nu(const label patchI) const;
+
+            //- Return the laminar thermal conductivity
+            virtual tmp<volScalarField> kappa() const;
+
+            //- Access the laminar thermal conductivity
+            virtual tmp<scalarField> kappa(const label patchI) const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#ifdef NoRepository
+#   include "ThermoPhaseModel.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/phaseModel/newPhaseModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/phaseModel/newPhaseModel.C
new file mode 100644
index 0000000000000000000000000000000000000000..f2686cedb5c764f55f286cba302b0b6df697a279
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/phaseModel/newPhaseModel.C
@@ -0,0 +1,58 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "phaseModel.H"
+#include "phaseSystem.H"
+
+// * * * * * * * * * * * * * * * * Selector  * * * * * * * * * * * * * * * * //
+
+Foam::autoPtr<Foam::phaseModel> Foam::phaseModel::New
+(
+    const phaseSystem& fluid,
+    const word& phaseName
+)
+{
+    word phaseModelType(fluid.subDict(phaseName).lookup("type"));
+
+    Info<< "Selecting phaseModel for "
+        << phaseName << ": " << phaseModelType << endl;
+
+    phaseSystemConstructorTable::iterator cstrIter =
+        phaseSystemConstructorTablePtr_->find(phaseModelType);
+
+    if (cstrIter == phaseSystemConstructorTablePtr_->end())
+    {
+        FatalErrorIn("phaseModel::New")
+            << "Unknown phaseModelType type "
+            << phaseModelType << endl << endl
+            << "Valid phaseModel types are : " << endl
+            << phaseSystemConstructorTablePtr_->sortedToc()
+            << exit(FatalError);
+    }
+
+    return cstrIter()(fluid, phaseName);
+}
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/phaseModel/phaseModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/phaseModel/phaseModel.C
new file mode 100644
index 0000000000000000000000000000000000000000..3518650190401af7f7d8e1af4c70c2319457a016
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/phaseModel/phaseModel.C
@@ -0,0 +1,137 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "phaseModel.H"
+#include "phaseSystem.H"
+#include "diameterModel.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    defineTypeNameAndDebug(phaseModel, 0);
+    defineRunTimeSelectionTable(phaseModel, phaseSystem);
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::phaseModel::phaseModel
+(
+    const phaseSystem& fluid,
+    const word& phaseName
+)
+:
+    volScalarField
+    (
+        IOobject
+        (
+            IOobject::groupName("alpha", phaseName),
+            fluid.mesh().time().timeName(),
+            fluid.mesh(),
+            IOobject::READ_IF_PRESENT,
+            IOobject::AUTO_WRITE
+        ),
+        fluid.mesh(),
+        dimensionedScalar("alpha", dimless, 0)
+    ),
+
+    fluid_(fluid),
+    name_(phaseName),
+    residualAlpha_
+    (
+        "residualAlpha",
+        dimless,
+        fluid.subDict(phaseName).lookup("residualAlpha")
+    ),
+    alphaMax_(fluid.subDict(phaseName).lookupOrDefault("alphaMax", 1.0))
+{
+    diameterModel_ = diameterModel::New(fluid.subDict(phaseName), *this);
+}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::phaseModel::~phaseModel()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+const Foam::word& Foam::phaseModel::name() const
+{
+    return name_;
+}
+
+
+const Foam::phaseSystem& Foam::phaseModel::fluid() const
+{
+    return fluid_;
+}
+
+
+const Foam::dimensionedScalar& Foam::phaseModel::residualAlpha() const
+{
+    return residualAlpha_;
+}
+
+
+Foam::scalar Foam::phaseModel::alphaMax() const
+{
+    return alphaMax_;
+}
+
+
+Foam::tmp<Foam::volScalarField> Foam::phaseModel::d() const
+{
+    return diameterModel_().d();
+}
+
+
+void Foam::phaseModel::correct()
+{
+    diameterModel_->correct();
+}
+
+
+void Foam::phaseModel::correctKinematics()
+{}
+
+
+void Foam::phaseModel::correctThermo()
+{}
+
+
+void Foam::phaseModel::correctTurbulence()
+{}
+
+
+bool Foam::phaseModel::read()
+{
+    return diameterModel_->read(fluid_.subDict(name_));
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/phaseModel/phaseModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/phaseModel/phaseModel.H
new file mode 100644
index 0000000000000000000000000000000000000000..0afb9f7855073a7383d0cc6850898cd75aadc447
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/phaseModel/phaseModel.H
@@ -0,0 +1,258 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::phaseModel
+
+SourceFiles
+    phaseModel.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef phaseModel_H
+#define phaseModel_H
+
+#include "dictionary.H"
+#include "dimensionedScalar.H"
+#include "volFields.H"
+#include "surfaceFields.H"
+#include "fvMatricesFwd.H"
+#include "rhoThermo.H"
+#include "runTimeSelectionTables.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+class phaseSystem;
+class diameterModel;
+
+template<class TransportModel>
+class PhaseCompressibleTurbulenceModel;
+
+/*---------------------------------------------------------------------------*\
+                           Class phaseModel Declaration
+\*---------------------------------------------------------------------------*/
+
+class phaseModel
+:
+    public volScalarField
+{
+    // Private data
+
+        //- Reference to the phaseSystem to which this phase belongs
+        const phaseSystem& fluid_;
+
+        //- Name of phase
+        word name_;
+
+        //- Return the residual phase-fraction for given phase
+        //  Used to stabilize the phase momentum as the phase-fraction -> 0
+        dimensionedScalar residualAlpha_;
+
+        //- Optional maximum phase-fraction (e.g. packing limit)
+        scalar alphaMax_;
+
+        //- Diameter model
+        autoPtr<diameterModel> diameterModel_;
+
+
+public:
+
+    //- Runtime type information
+    ClassName("phaseModel");
+
+    // Declare runtime construction
+
+        declareRunTimeSelectionTable
+        (
+            autoPtr,
+            phaseModel,
+            phaseSystem,
+            (
+                const phaseSystem& fluid,
+                const word& phaseName
+            ),
+            (fluid, phaseName)
+        );
+
+
+    // Constructors
+
+        phaseModel
+        (
+            const phaseSystem& fluid,
+            const word& phaseName
+        );
+
+
+    //- Destructor
+    virtual ~phaseModel();
+
+
+    // Selectors
+
+        static autoPtr<phaseModel> New
+        (
+            const phaseSystem& fluid,
+            const word& phaseName
+        );
+
+
+    // Member Functions
+
+        //- Return the name of this phase
+        const word& name() const;
+
+        //- Return the system to which this phase belongs
+        const phaseSystem& fluid() const;
+
+        //- Return the residual phase-fraction for given phase
+        //  Used to stabilize the phase momentum as the phase-fraction -> 0
+        const dimensionedScalar& residualAlpha() const;
+
+        //- Return the maximum phase-fraction (e.g. packing limit)
+        scalar alphaMax() const;
+
+        //- Return the Sauter-mean diameter
+        tmp<volScalarField> d() const;
+
+        //- Correct the phase properties
+        virtual void correct();
+
+        //- Correct the kinematics
+        virtual void correctKinematics();
+
+        //- Correct the thermodynamics
+        virtual void correctThermo();
+
+        //- Correct the turbulence
+        virtual void correctTurbulence();
+
+        //- Return the momentum equation
+        virtual tmp<fvVectorMatrix> UEqn() = 0;
+
+        //- Return the enthalpy equation
+        virtual tmp<fvScalarMatrix> heEqn() = 0;
+
+        //- Return the species fraction equation
+        virtual tmp<fvScalarMatrix> YiEqn(volScalarField& Yi) = 0;
+
+        //- Read phase properties dictionary
+        virtual bool read();
+
+
+        // Thermo
+
+            //- Return const access to the thermophysical model
+            virtual const rhoThermo& thermo() const = 0;
+
+            //- Return non-const access to the thermophysical model
+            //  for correction
+            virtual rhoThermo& thermo() = 0;
+
+            //- Return the density field
+            virtual tmp<volScalarField> rho() const = 0;
+
+            //- Constant access the species mass fractions
+            virtual const PtrList<volScalarField>& Y() const = 0;
+
+            //- Access the species mass fractions
+            virtual PtrList<volScalarField>& Y() = 0;
+
+
+        // Momentum
+
+            //- Constant access the velocity
+            virtual tmp<volVectorField> U() const = 0;
+
+            //- Access the velocity
+            virtual volVectorField& U() = 0;
+
+            //- Return the substantive acceleration
+            virtual tmp<volVectorField> DUDt() const = 0;
+
+            //- Constant access the continuity error
+            virtual tmp<volScalarField> continuityError() const = 0;
+
+            //- Access the continuity error
+            virtual volScalarField& continuityError() = 0;
+
+            //- Constant access the volumetric flux
+            virtual tmp<surfaceScalarField> phi() const = 0;
+
+            //- Access the volumetric flux
+            virtual surfaceScalarField& phi() = 0;
+
+            //- Constant access the volumetric flux of the phase
+            virtual tmp<surfaceScalarField> alphaPhi() const = 0;
+
+            //- Access the volumetric flux of the phase
+            virtual surfaceScalarField& alphaPhi() = 0;
+
+            //- Constant access the mass flux of the phase
+            virtual tmp<surfaceScalarField> alphaRhoPhi() const = 0;
+
+            //- Access the mass flux of the phase
+            virtual surfaceScalarField& alphaRhoPhi() = 0;
+
+
+        // Transport
+
+            //- Return the laminar dynamic viscosity
+            virtual tmp<volScalarField> mu() const = 0;
+
+            //- Return the laminar dynamic viscosity on a patch
+            virtual tmp<scalarField> mu(const label patchI) const = 0;
+
+            //- Return the laminar kinematic viscosity
+            virtual tmp<volScalarField> nu() const = 0;
+
+            //- Return the laminar kinematic viscosity on a patch
+            virtual tmp<scalarField> nu(const label patchI) const = 0;
+
+            //- Return the laminar thermal conductivity
+            virtual tmp<volScalarField> kappa() const = 0;
+
+            //- Return the laminar thermal conductivity on a patch
+            virtual tmp<scalarField> kappa(const label patchI) const = 0;
+
+
+        // Turbulence
+
+            //- Return the turbulence model
+            virtual const PhaseCompressibleTurbulenceModel<phaseModel>&
+                turbulence() const = 0;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/phaseModel/phaseModels.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/phaseModel/phaseModels.C
new file mode 100644
index 0000000000000000000000000000000000000000..45fe19295c0cde5837e3310699eac56cd1d93988
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/phaseModel/phaseModels.C
@@ -0,0 +1,145 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "addToRunTimeSelectionTable.H"
+
+#include "rhoThermo.H"
+#include "rhoReactionThermo.H"
+
+#include "rhoCombustionModel.H"
+
+#include "phaseModel.H"
+#include "ThermoPhaseModel.H"
+#include "IsothermalPhaseModel.H"
+#include "AnisothermalPhaseModel.H"
+#include "PurePhaseModel.H"
+#include "MultiComponentPhaseModel.H"
+#include "InertPhaseModel.H"
+#include "ReactingPhaseModel.H"
+#include "MovingPhaseModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    typedef
+        MovingPhaseModel
+        <
+            AnisothermalPhaseModel
+            <
+                PurePhaseModel
+                <
+                    InertPhaseModel
+                    <
+                        ThermoPhaseModel<phaseModel, rhoThermo>
+                    >
+                >
+            >
+        >
+        purePhaseModel;
+
+    addNamedToRunTimeSelectionTable
+    (
+        phaseModel,
+        purePhaseModel,
+        phaseSystem,
+        purePhaseModel
+    );
+
+    typedef
+        MovingPhaseModel
+        <
+            IsothermalPhaseModel
+            <
+                PurePhaseModel
+                <
+                    InertPhaseModel
+                    <
+                        ThermoPhaseModel<phaseModel, rhoThermo>
+                    >
+                >
+            >
+        >
+        pureIsothermalPhaseModel;
+
+    addNamedToRunTimeSelectionTable
+    (
+        phaseModel,
+        pureIsothermalPhaseModel,
+        phaseSystem,
+        pureIsothermalPhaseModel
+    );
+
+    typedef
+        MovingPhaseModel
+        <
+            AnisothermalPhaseModel
+            <
+                MultiComponentPhaseModel
+                <
+                    InertPhaseModel
+                    <
+                        ThermoPhaseModel<phaseModel, rhoReactionThermo>
+                    >
+                >
+            >
+        >
+        multiComponentPhaseModel;
+
+    addNamedToRunTimeSelectionTable
+    (
+        phaseModel,
+        multiComponentPhaseModel,
+        phaseSystem,
+        multiComponentPhaseModel
+    );
+
+    typedef
+        MovingPhaseModel
+        <
+            AnisothermalPhaseModel
+            <
+                MultiComponentPhaseModel
+                <
+                    ReactingPhaseModel
+                    <
+                        ThermoPhaseModel<phaseModel, rhoReactionThermo>,
+                        combustionModels::rhoCombustionModel
+                    >
+                >
+            >
+        >
+        reactingPhaseModel;
+
+    addNamedToRunTimeSelectionTable
+    (
+        phaseModel,
+        reactingPhaseModel,
+        phaseSystem,
+        reactingPhaseModel
+    );
+}
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/orderedPhasePair/orderedPhasePair.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/orderedPhasePair/orderedPhasePair.C
new file mode 100644
index 0000000000000000000000000000000000000000..8c2bb470add4d7eb1e116bf96126ea054e295b9c
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/orderedPhasePair/orderedPhasePair.C
@@ -0,0 +1,88 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "orderedPhasePair.H"
+#include "aspectRatioModel.H"
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::orderedPhasePair::orderedPhasePair
+(
+    const phaseModel& dispersed,
+    const phaseModel& continuous
+)
+:
+    phasePair
+    (
+        dispersed,
+        continuous,
+        true
+    )
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::orderedPhasePair::~orderedPhasePair()
+{}
+
+
+// * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * * //
+
+const Foam::phaseModel& Foam::orderedPhasePair::dispersed() const
+{
+    return phase1();
+}
+
+
+const Foam::phaseModel& Foam::orderedPhasePair::continuous() const
+{
+    return phase2();
+}
+
+
+Foam::word Foam::orderedPhasePair::name() const
+{
+    word namec(second());
+    namec[0] = toupper(namec[0]);
+    return first() + "In" + namec;
+}
+
+
+Foam::tmp<Foam::volScalarField> Foam::orderedPhasePair::E() const
+{
+    return
+        phase1().mesh().lookupObject<aspectRatioModel>
+        (
+            IOobject::groupName
+            (
+                aspectRatioModel::typeName,
+                orderedPhasePair::name()
+            )
+        ).E();
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/orderedPhasePair/orderedPhasePair.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/orderedPhasePair/orderedPhasePair.H
new file mode 100644
index 0000000000000000000000000000000000000000..4779fd333d2a94c75bd446a6eb5ce6e9be9d480c
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/orderedPhasePair/orderedPhasePair.H
@@ -0,0 +1,106 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::orderedPhasePair
+
+Description
+
+SourceFiles
+    orderedPhasePair.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef orderedPhasePair_H
+#define orderedPhasePair_H
+
+#include "phasePair.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+class aspectRatioModel;
+
+/*---------------------------------------------------------------------------*\
+                         Class orderedPhasePair Declaration
+\*---------------------------------------------------------------------------*/
+
+class orderedPhasePair
+:
+    public phasePair
+{
+    // Private data
+
+        //- Aspect ratio model
+        autoPtr<aspectRatioModel> aspectRatio_;
+
+
+    // Private member functions
+
+        //- Set the aspect ratio model, if there is one
+        void setAspectRatioModel(const dictTable aspectRatioTable);
+
+
+public:
+
+    // Constructors
+
+        //- Construct from two phases and gravity
+        orderedPhasePair
+        (
+            const phaseModel& dispersed,
+            const phaseModel& continuous
+        );
+
+
+    //- Destructor
+    virtual ~orderedPhasePair();
+
+
+    // Member Functions
+
+        //- Dispersed phase
+        virtual const phaseModel& dispersed() const;
+
+        //- Continuous phase
+        virtual const phaseModel& continuous() const;
+
+        //- Pair name
+        virtual word name() const;
+
+        //- Aspect ratio
+        virtual tmp<volScalarField> E() const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/phasePair/phasePair.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/phasePair/phasePair.C
new file mode 100644
index 0000000000000000000000000000000000000000..16478646d7df40c892d41852a40108d8ae7f2a32
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/phasePair/phasePair.C
@@ -0,0 +1,202 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "phasePair.H"
+#include "surfaceTensionModel.H"
+
+// * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
+
+Foam::tmp<Foam::volScalarField> Foam::phasePair::EoH
+(
+    const volScalarField& d
+) const
+{
+    return
+        mag(dispersed().rho() - continuous().rho())
+       *mag(g())
+       *sqr(d)
+       /sigma();
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::phasePair::phasePair
+(
+    const phaseModel& phase1,
+    const phaseModel& phase2,
+    const bool ordered
+)
+:
+    phasePairKey(phase1.name(), phase2.name(), ordered),
+    phase1_(phase1),
+    phase2_(phase2),
+    g_(phase1.mesh().lookupObject<uniformDimensionedVectorField>("g"))
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::phasePair::~phasePair()
+{}
+
+
+// * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * * //
+
+const Foam::phaseModel& Foam::phasePair::dispersed() const
+{
+    FatalErrorIn("Foam::phasePair::dispersed() const")
+        << "Requested dispersed phase from an unordered pair."
+        << exit(FatalError);
+
+    return phase1_;
+}
+
+
+const Foam::phaseModel& Foam::phasePair::continuous() const
+{
+    FatalErrorIn("Foam::phasePair::dispersed() const")
+        << "Requested continuous phase from an unordered pair."
+        << exit(FatalError);
+
+    return phase1_;
+}
+
+
+Foam::word Foam::phasePair::name() const
+{
+    word name2(second());
+    name2[0] = toupper(name2[0]);
+    return first() + "And" + name2;
+}
+
+
+Foam::tmp<Foam::volScalarField> Foam::phasePair::rho() const
+{
+    return phase1()*phase1().rho() + phase2()*phase2().rho();
+}
+
+
+Foam::tmp<Foam::volScalarField> Foam::phasePair::magUr() const
+{
+    return mag(phase1().U() - phase2().U());
+}
+
+
+Foam::tmp<Foam::volVectorField> Foam::phasePair::Ur() const
+{
+    return dispersed().U() - continuous().U();
+}
+
+
+Foam::tmp<Foam::volScalarField> Foam::phasePair::Re() const
+{
+    return magUr()*dispersed().d()/continuous().nu();
+}
+
+
+Foam::tmp<Foam::volScalarField> Foam::phasePair::Pr() const
+{
+    return
+         continuous().nu()
+        *continuous().thermo().Cpv()
+        *continuous().rho()
+        /continuous().kappa();
+}
+
+
+Foam::tmp<Foam::volScalarField> Foam::phasePair::Eo() const
+{
+    return EoH(dispersed().d());
+}
+
+
+Foam::tmp<Foam::volScalarField> Foam::phasePair::EoH1() const
+{
+    return
+        EoH
+        (
+            dispersed().d()
+           *cbrt(1 + 0.163*pow(Eo(), 0.757))
+        );
+}
+
+
+Foam::tmp<Foam::volScalarField> Foam::phasePair::EoH2() const
+{
+    return
+        EoH
+        (
+            dispersed().d()
+           /cbrt(E())
+        );
+}
+
+
+Foam::tmp<Foam::volScalarField> Foam::phasePair::sigma() const
+{
+    return
+        phase1().mesh().lookupObject<surfaceTensionModel>
+        (
+            IOobject::groupName
+            (
+                surfaceTensionModel::typeName,
+                phasePair::name()
+            )
+        ).sigma();
+}
+
+
+Foam::tmp<Foam::volScalarField> Foam::phasePair::Mo() const
+{
+    return
+        mag(g())
+       *continuous().nu()
+       *pow3
+        (
+            continuous().nu()
+           *continuous().rho()
+           /sigma()
+        );
+}
+
+
+Foam::tmp<Foam::volScalarField> Foam::phasePair::Ta() const
+{
+    return Re()*pow(Mo(), 0.23);
+}
+
+
+Foam::tmp<Foam::volScalarField> Foam::phasePair::E() const
+{
+    FatalErrorIn("Foam::phasePair::E() const")
+        << "Requested aspect ratio of the dispersed phase in an unordered pair"
+        << exit(FatalError);
+
+    return phase1();
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/phasePair/phasePair.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/phasePair/phasePair.H
new file mode 100644
index 0000000000000000000000000000000000000000..4ee9eefbc198621ddb9a1034c7efdfd3772f54b2
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/phasePair/phasePair.H
@@ -0,0 +1,176 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::phasePair
+
+Description
+
+SourceFiles
+    phasePair.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef phasePair_H
+#define phasePair_H
+
+#include "phaseModel.H"
+#include "phasePairKey.H"
+#include "uniformDimensionedFields.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+                         Class phasePair Declaration
+\*---------------------------------------------------------------------------*/
+
+class phasePair
+:
+    public phasePairKey
+{
+public:
+
+    // Hash table types
+
+        //- Dictionary hash table
+        typedef HashTable<dictionary, phasePairKey, phasePairKey::hash>
+            dictTable;
+
+        //- Scalar hash table
+        typedef HashTable<scalar, phasePairKey, phasePairKey::hash>
+            scalarTable;
+
+
+private:
+
+    // Private data
+
+        //- Phase 1
+        const phaseModel& phase1_;
+
+        //- Phase 2
+        const phaseModel& phase2_;
+
+        //- Gravitational acceleration
+        const uniformDimensionedVectorField& g_;
+
+
+    // Private member functions
+
+        // Etvos number for given diameter
+        tmp<volScalarField> EoH(const volScalarField& d) const;
+
+
+public:
+
+    // Constructors
+
+        //- Construct from two phases and gravity
+        phasePair
+        (
+            const phaseModel& phase1,
+            const phaseModel& phase2,
+            const bool ordered = false
+        );
+
+
+    //- Destructor
+    virtual ~phasePair();
+
+
+    // Member Functions
+
+        //- Dispersed phase
+        virtual const phaseModel& dispersed() const;
+
+        //- Continuous phase
+        virtual const phaseModel& continuous() const;
+
+        //- Pair name
+        virtual word name() const;
+
+        //- Average density
+        tmp<volScalarField> rho() const;
+
+        //- Relative velocity magnitude
+        tmp<volScalarField> magUr() const;
+
+        //- Relative velocity
+        tmp<volVectorField> Ur() const;
+
+        //- Reynolds number
+        tmp<volScalarField> Re() const;
+
+        //- Prandtl number
+        tmp<volScalarField> Pr() const;
+
+        //- Eotvos number
+        tmp<volScalarField> Eo() const;
+
+        //- Eotvos number based on hydraulic diameter type 1
+        tmp<volScalarField> EoH1() const;
+
+        //- Eotvos number based on hydraulic diameter type 2
+        tmp<volScalarField> EoH2() const;
+
+        //- Surface tension coefficient
+        tmp<volScalarField> sigma() const;
+
+        //- Morton Number
+        tmp<volScalarField> Mo() const;
+
+        //- Takahashi Number
+        tmp<volScalarField> Ta() const;
+
+        //- Aspect ratio
+        virtual tmp<volScalarField> E() const;
+
+        // Access
+
+            // Phase 1
+            inline const phaseModel& phase1() const;
+
+            // Phase 2
+            inline const phaseModel& phase2() const;
+
+            // Gravitation acceleration
+            inline const uniformDimensionedVectorField& g() const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include "phasePairI.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/phasePair/phasePairI.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/phasePair/phasePairI.H
new file mode 100644
index 0000000000000000000000000000000000000000..c461b7d9182a1a6d3ac07f950815654149afba2c
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/phasePair/phasePairI.H
@@ -0,0 +1,46 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+inline const Foam::phaseModel& Foam::phasePair::phase1() const
+{
+    return phase1_;
+}
+
+
+inline const Foam::phaseModel& Foam::phasePair::phase2() const
+{
+    return phase2_;
+}
+
+
+inline const Foam::uniformDimensionedVectorField& Foam::phasePair::g() const
+{
+    return g_;
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/phasePairKey/phasePairKey.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/phasePairKey/phasePairKey.C
new file mode 100644
index 0000000000000000000000000000000000000000..13ae288f089045048bef2560a4dcbba4f81ff12a
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/phasePairKey/phasePairKey.C
@@ -0,0 +1,172 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "phasePairKey.H"
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::phasePairKey::hash::hash()
+{}
+
+
+Foam::phasePairKey::phasePairKey()
+{}
+
+
+Foam::phasePairKey::phasePairKey
+(
+    const word& name1,
+    const word& name2,
+    const bool ordered
+)
+:
+    Pair<word>(name1, name2),
+    ordered_(ordered)
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::phasePairKey::~phasePairKey()
+{}
+
+
+// * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * * //
+
+bool Foam::phasePairKey::ordered() const
+{
+    return ordered_;
+}
+
+
+// * * * * * * * * * * * * * * Member Operators  * * * * * * * * * * * * * * //
+
+Foam::label Foam::phasePairKey::hash::operator()
+(
+    const phasePairKey& key
+) const
+{
+    if (key.ordered_)
+    {
+        return
+            word::hash()
+            (
+                key.first(),
+                word::hash()(key.second())
+            );
+    }
+    else
+    {
+        return
+            word::hash()(key.first())
+          + word::hash()(key.second());
+    }
+}
+
+
+// * * * * * * * * * * * * * * Friend Operators  * * * * * * * * * * * * * * //
+
+bool Foam::operator==
+(
+    const phasePairKey& a,
+    const phasePairKey& b
+)
+{
+    const label c = Pair<word>::compare(a,b);
+
+    return
+        (a.ordered_ == b.ordered_)
+     && (
+            (a.ordered_ && (c == 1))
+         || (!a.ordered_ && (c != 0))
+        );
+}
+
+
+bool Foam::operator!=
+(
+    const phasePairKey& a,
+    const phasePairKey& b
+)
+{
+    return !(a == b);
+}
+
+
+// * * * * * * * * * * * * * * Istream Operator  * * * * * * * * * * * * * * //
+
+Foam::Istream& Foam::operator>>(Istream& is, phasePairKey& key)
+{
+    const FixedList<word, 3> temp(is);
+
+    key.first() = temp[0];
+
+    if (temp[1] == "and")
+    {
+        key.ordered_ = false;
+    }
+    else if(temp[1] == "in")
+    {
+        key.ordered_ = true;
+    }
+    else
+    {
+        FatalErrorIn
+        (
+            "friend Istream& operator>>"
+            "("
+                "Istream& is, "
+                "phasePairKey& key"
+            ")"
+        )   << "Phase pair type is not recognised. "
+            << temp
+            << "Use (phaseDispersed in phaseContinuous) for an ordered"
+            << "pair, or (phase1 and pase2) for an unordered pair."
+            << exit(FatalError);
+    }
+
+    key.second() = temp[2];
+
+    return is;
+}
+
+
+// * * * * * * * * * * * * * * Ostream Operator  * * * * * * * * * * * * * * //
+
+Foam::Ostream& Foam::operator<<(Ostream& os, const phasePairKey& key)
+{
+    os  << token::BEGIN_LIST
+        << key.first()
+        << token::SPACE
+        << (key.ordered_ ? "in" : "and")
+        << token::SPACE
+        << key.second()
+        << token::END_LIST;
+
+    return os;
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/phasePairKey/phasePairKey.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/phasePairKey/phasePairKey.H
new file mode 100644
index 0000000000000000000000000000000000000000..b5d6acf07be75549b2869df71902c217479d1649
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/phasePairKey/phasePairKey.H
@@ -0,0 +1,130 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::phasePairKey
+
+Description
+
+SourceFiles
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef phasePairKey_H
+#define phasePairKey_H
+
+#include "Pair.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+                         Class phasePairKey Declaration
+\*---------------------------------------------------------------------------*/
+
+class phasePairKey
+:
+    public Pair<word>
+{
+public:
+
+        class hash
+        :
+            public Hash<phasePairKey>
+        {
+        public:
+
+            // Constructors
+
+                // Construct null
+                hash();
+
+
+            // Member operators
+
+                // Generate a hash from a phase pair key
+                label operator()(const phasePairKey& key) const;
+        };
+
+
+private:
+
+    // Private data
+
+        //- Flag to indicate whether ordering is important
+        bool ordered_;
+
+
+public:
+
+    // Constructors
+
+        //- Construct null
+        phasePairKey();
+
+        //- Construct from names and the ordering flag
+        phasePairKey
+        (
+            const word& name1,
+            const word& name2,
+            const bool ordered = false
+        );
+
+
+    // Destructor
+    virtual ~phasePairKey();
+
+
+    // Access
+
+        //- Return the ordered flag
+        bool ordered() const;
+
+
+    // Friend Operators
+
+        //- Test if keys are equal
+        friend bool operator==(const phasePairKey& a, const phasePairKey& b);
+
+        //- Test if keys are unequal
+        friend bool operator!=(const phasePairKey& a, const phasePairKey& b);
+
+        //- Read from stdin
+        friend Istream& operator>>(Istream& is, phasePairKey& key);
+
+        //- Write to stdout
+        friend Ostream& operator<<(Ostream& os, const phasePairKey& key);
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseSystem/phaseSystem.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseSystem/phaseSystem.C
new file mode 100644
index 0000000000000000000000000000000000000000..9144093db5a9784454e6717e077b1ee8e5ed4ff6
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseSystem/phaseSystem.C
@@ -0,0 +1,370 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "phaseSystem.H"
+#include "surfaceTensionModel.H"
+#include "aspectRatioModel.H"
+#include "surfaceInterpolate.H"
+#include "fvcDdt.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    defineTypeNameAndDebug(phaseSystem, 0);
+}
+
+const Foam::word Foam::phaseSystem::propertiesName("phaseProperties");
+
+
+// * * * * * * * * * * * * Protected Member Functions  * * * * * * * * * * * //
+
+Foam::phaseSystem::phaseModelTable
+Foam::phaseSystem::generatePhaseModels(const wordList& phaseNames) const
+{
+    phaseModelTable phaseModels;
+
+    forAllConstIter(wordList, phaseNames, phaseNameIter)
+    {
+        phaseModels.insert
+        (
+            *phaseNameIter,
+            phaseModel::New
+            (
+                *this,
+                *phaseNameIter
+            )
+        );
+    }
+
+    // normalise ?
+
+    return phaseModels;
+}
+
+
+Foam::tmp<Foam::surfaceScalarField> Foam::phaseSystem::generatePhi
+(
+    const phaseModelTable& phaseModels
+) const
+{
+    phaseModelTable::const_iterator phaseModelIter = phaseModels.begin();
+
+    tmp<surfaceScalarField> tmpPhi
+    (
+        new surfaceScalarField
+        (
+            "phi",
+            fvc::interpolate(phaseModelIter()())*phaseModelIter()->phi()
+        )
+    );
+
+    ++phaseModelIter;
+
+    for (; phaseModelIter != phaseModels.end(); ++ phaseModelIter)
+    {
+        tmpPhi() +=
+            fvc::interpolate(phaseModelIter()())
+           *phaseModelIter()->phi();
+    }
+
+    return tmpPhi;
+}
+
+
+void Foam::phaseSystem::generatePairs
+(
+    const dictTable& modelDicts
+)
+{
+    forAllConstIter(dictTable, modelDicts, iter)
+    {
+        const phasePairKey& key = iter.key();
+
+        // pair already exists
+        if (phasePairs_.found(key))
+        {
+            // do nothing ...
+        }
+
+        // new ordered pair
+        else if (key.ordered())
+        {
+            phasePairs_.insert
+            (
+                key,
+                autoPtr<phasePair>
+                (
+                    new orderedPhasePair
+                    (
+                        phaseModels_[key.first()],
+                        phaseModels_[key.second()]
+                    )
+                )
+            );
+        }
+
+        // new unordered pair
+        else
+        {
+            phasePairs_.insert
+            (
+                key,
+                autoPtr<phasePair>
+                (
+                    new phasePair
+                    (
+                        phaseModels_[key.first()],
+                        phaseModels_[key.second()]
+                    )
+                )
+            );
+        }
+    }
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::phaseSystem::phaseSystem
+(
+    const fvMesh& mesh
+)
+:
+    IOdictionary
+    (
+        IOobject
+        (
+            "phaseProperties",
+            mesh.time().constant(),
+            mesh,
+            IOobject::MUST_READ_IF_MODIFIED,
+            IOobject::NO_WRITE
+        )
+    ),
+
+    mesh_(mesh),
+
+    phaseNames_(lookup("phases")),
+
+    phaseModels_(generatePhaseModels(phaseNames_)),
+
+    phi_(generatePhi(phaseModels_)),
+
+    dpdt_
+    (
+        IOobject
+        (
+            "dpdt",
+            mesh.time().timeName(),
+            mesh
+        ),
+        mesh,
+        dimensionedScalar("dpdt", dimPressure/dimTime, 0)
+    ),
+
+    dgdt_
+    (
+        IOobject
+        (
+            "dgdt",
+            mesh.time().timeName(),
+            mesh,
+            IOobject::READ_IF_PRESENT,
+            IOobject::AUTO_WRITE
+        ),
+        mesh,
+        dimensionedScalar("dgdt", dimless/dimTime, 0)
+    )
+{
+    // Blending methods
+    forAllConstIter(dictionary, subDict("blending"), iter)
+    {
+        blendingMethods_.insert
+        (
+            iter().dict().dictName(),
+            blendingMethod::New
+            (
+                iter().dict(),
+                wordList(lookup("phases"))
+            )
+        );
+    }
+
+    // Sub-models
+    generatePairsAndSubModels("surfaceTension", surfaceTensionModels_);
+    generatePairsAndSubModels("aspectRatio", aspectRatioModels_);
+
+    correctKinematics();
+}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::phaseSystem::~phaseSystem()
+{}
+
+
+// * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volScalarField> Foam::phaseSystem::rho() const
+{
+    phaseModelTable::const_iterator phaseModelIter = phaseModels_.begin();
+
+    tmp<volScalarField> tmpRho
+    (
+        phaseModelIter()()*phaseModelIter()->rho()
+    );
+
+    for (; phaseModelIter != phaseModels_.end(); ++ phaseModelIter)
+    {
+        tmpRho() += phaseModelIter()()*phaseModelIter()->rho();
+    }
+
+    return tmpRho;
+}
+
+
+Foam::tmp<Foam::volVectorField> Foam::phaseSystem::U() const
+{
+    phaseModelTable::const_iterator phaseModelIter = phaseModels_.begin();
+
+    tmp<volVectorField> tmpU
+    (
+        phaseModelIter()()*phaseModelIter()->U()
+    );
+
+    for (; phaseModelIter != phaseModels_.end(); ++ phaseModelIter)
+    {
+        tmpU() += phaseModelIter()()*phaseModelIter()->U();
+    }
+
+    return tmpU;
+}
+
+
+Foam::tmp<Foam::volScalarField>
+Foam::phaseSystem::sigma(const phasePairKey& key) const
+{
+    if (surfaceTensionModels_.found(key))
+    {
+        return surfaceTensionModels_[key]->sigma();
+    }
+    else
+    {
+        return tmp<volScalarField>
+        (
+            new volScalarField
+            (
+                IOobject
+                (
+                    surfaceTensionModel::typeName + ":sigma",
+                    this->mesh_.time().timeName(),
+                    this->mesh_,
+                    IOobject::NO_READ,
+                    IOobject::NO_WRITE,
+                    false
+                ),
+                this->mesh_,
+                dimensionedScalar("zero", surfaceTensionModel::dimSigma, 0)
+            )
+        );
+    }
+}
+
+
+void Foam::phaseSystem::solve()
+{}
+
+
+void Foam::phaseSystem::correct()
+{
+    forAllIter(phaseModelTable, phaseModels_, phaseModelIter)
+    {
+        phaseModelIter()->correct();
+    }
+}
+
+
+void Foam::phaseSystem::correctKinematics()
+{
+    bool updateDpdt = false;
+
+    forAllIter(phaseModelTable, phaseModels_, phaseModelIter)
+    {
+        phaseModelIter()->correctKinematics();
+
+        updateDpdt = updateDpdt || phaseModelIter()->thermo().dpdt();
+    }
+
+    // Update the pressure time-derivative if required
+    if (updateDpdt)
+    {
+        dpdt_ = fvc::ddt(phaseModels_.begin()()().thermo().p());
+    }
+}
+
+
+void Foam::phaseSystem::correctThermo()
+{
+    forAllIter(phaseModelTable, phaseModels_, phaseModelIter)
+    {
+        phaseModelIter()->correctThermo();
+    }
+}
+
+
+void Foam::phaseSystem::correctTurbulence()
+{
+    forAllIter(phaseModelTable, phaseModels_, phaseModelIter)
+    {
+        phaseModelIter()->correctTurbulence();
+    }
+}
+
+
+bool Foam::phaseSystem::read()
+{
+    if (regIOobject::read())
+    {
+        bool readOK = true;
+
+        forAllIter(phaseModelTable, phaseModels_, phaseModelIter)
+        {
+            readOK &= phaseModelIter()->read();
+        }
+
+        // models ...
+
+        return readOK;
+    }
+    else
+    {
+        return false;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseSystem/phaseSystem.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseSystem/phaseSystem.H
new file mode 100644
index 0000000000000000000000000000000000000000..d7d21c430de267b01eb9fcf77394e59983212859
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseSystem/phaseSystem.H
@@ -0,0 +1,407 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::phaseSystem
+
+Description
+    Class to represent a system of phases and model interfacial transfers
+    between them.
+
+SourceFiles
+    phaseSystem.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef phaseSystem_H
+#define phaseSystem_H
+
+#include "IOdictionary.H"
+
+#include "phaseModel.H"
+#include "phasePair.H"
+#include "orderedPhasePair.H"
+
+#include "volFields.H"
+#include "surfaceFields.H"
+#include "fvMatricesFwd.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+class blendingMethod;
+template <class modelType> class BlendedInterfacialModel;
+class surfaceTensionModel;
+class aspectRatioModel;
+class IOMRFZoneList;
+
+/*---------------------------------------------------------------------------*\
+                         Class phaseSystem Declaration
+\*---------------------------------------------------------------------------*/
+
+class phaseSystem
+:
+    public IOdictionary
+{
+public:
+
+    // Public typedefs
+
+        typedef
+            HashPtrTable
+            <
+                volScalarField,
+                phasePairKey,
+                phasePairKey::hash
+            >
+            KdTable;
+
+        typedef
+            HashPtrTable
+            <
+                volScalarField,
+                phasePairKey,
+                phasePairKey::hash
+            >
+            VmTable;
+
+        typedef
+            HashPtrTable
+            <
+                fvVectorMatrix,
+                word,
+                string::hash
+            >
+            momentumTransferTable;
+
+        typedef
+            HashPtrTable
+            <
+                fvScalarMatrix,
+                word,
+                string::hash
+            >
+            heatTransferTable;
+
+        typedef
+            HashPtrTable
+            <
+                fvScalarMatrix,
+                word,
+                string::hash
+            >
+            massTransferTable;
+
+
+protected:
+
+    // Protected typedefs
+
+        typedef
+            HashTable<autoPtr<phaseModel>, word, word::hash>
+            phaseModelTable;
+
+        typedef
+            HashTable<dictionary, phasePairKey, phasePairKey::hash>
+            dictTable;
+
+        typedef
+            HashTable<autoPtr<phasePair>, phasePairKey, phasePairKey::hash>
+            phasePairTable;
+
+        typedef
+            HashTable<autoPtr<blendingMethod>, word, word::hash>
+            blendingMethodTable;
+
+        typedef
+            HashTable
+            <
+                autoPtr<surfaceTensionModel>,
+                phasePairKey,
+                phasePairKey::hash
+            >
+            surfaceTensionModelTable;
+
+        typedef
+            HashTable
+            <
+                autoPtr<aspectRatioModel>,
+                phasePairKey,
+                phasePairKey::hash
+            >
+            aspectRatioModelTable;
+
+
+    // Protected data
+
+        //- Reference to the mesh
+        const fvMesh& mesh_;
+
+        //- Phase names
+        wordList phaseNames_;
+
+        //- Phase models
+        phaseModelTable phaseModels_;
+
+        //- Phase pairs
+        phasePairTable phasePairs_;
+
+        //- Total volumetric flux
+        surfaceScalarField phi_;
+
+        //- Rate of change of pressure
+        volScalarField dpdt_;
+
+        //- Dilatation
+        volScalarField dgdt_;
+
+        //- Blending methods
+        blendingMethodTable blendingMethods_;
+
+
+        // Sub Models
+
+            //- Surface tension models
+            surfaceTensionModelTable surfaceTensionModels_;
+
+            //- Aspect ratio models
+            aspectRatioModelTable aspectRatioModels_;
+
+
+    // Protected member functions
+
+        //- Generate the phases
+        HashTable<autoPtr<phaseModel> > generatePhaseModels
+        (
+            const wordList& names
+        ) const;
+
+        //- Generate the mixture flux
+        tmp<surfaceScalarField> generatePhi
+        (
+            const HashTable<autoPtr<phaseModel> >& phaseModels
+        ) const;
+
+        //- Generate pairs
+        void generatePairs
+        (
+            const dictTable& modelDicts
+        );
+
+        //- Generate pairs and sub-model tables
+        template<class modelType>
+        void createSubModels
+        (
+            const dictTable& modelDicts,
+            HashTable
+            <
+                autoPtr<modelType>,
+                phasePairKey,
+                phasePairKey::hash
+            >& models
+        );
+
+        //- Generate pairs and sub-model tables
+        template<class modelType>
+        void generatePairsAndSubModels
+        (
+            const word& modelName,
+            HashTable
+            <
+                autoPtr<modelType>,
+                phasePairKey,
+                phasePairKey::hash
+            >& models
+        );
+
+        //- Generate pairs and blended sub-model tables
+        template<class modelType>
+        void generatePairsAndSubModels
+        (
+            const word& modelName,
+            HashTable
+            <
+                autoPtr<BlendedInterfacialModel<modelType> >,
+                phasePairKey,
+                phasePairKey::hash
+            >& models
+        );
+
+        //- Generate pairs and per-phase sub-model tables
+        template<class modelType>
+        void generatePairsAndSubModels
+        (
+            const word& modelName,
+            HashTable
+            <
+                HashTable<autoPtr<modelType> >,
+                phasePairKey,
+                phasePairKey::hash
+            >& models
+        );
+
+
+public:
+
+    //- Runtime type information
+    TypeName("phaseSystem");
+
+    //- Default name of the phase properties dictionary
+    static const word propertiesName;
+
+
+    // Constructors
+
+        //- Construct from fvMesh
+        phaseSystem(const fvMesh& mesh);
+
+
+    //- Destructor
+    virtual ~phaseSystem();
+
+
+    // Member Functions
+
+        //- Return the mixture density
+        tmp<volScalarField> rho() const;
+
+        //- Return the mixture velocity
+        tmp<volVectorField> U() const;
+
+        //- Return the surface tension coefficient
+        tmp<volScalarField> sigma(const phasePairKey& key) const;
+
+        //- Return the drag coefficient
+        virtual tmp<volScalarField> Kd(const phasePairKey& key) const = 0;
+
+        //- Return the face drag coefficient
+        virtual tmp<surfaceScalarField> Kdf(const phasePairKey& key) const = 0;
+
+        //- Return the virtual mass coefficient
+        virtual tmp<volScalarField> Vm(const phasePairKey& key) const = 0;
+
+        //- Return the face virtual mass coefficient
+        virtual tmp<surfaceScalarField> Vmf(const phasePairKey& key) const = 0;
+
+        //- Return the combined force (lift + wall-lubrication)
+        virtual tmp<volVectorField> F(const phasePairKey& key) const = 0;
+
+        //- Return the combined face-force (lift + wall-lubrication)
+        virtual tmp<surfaceScalarField> Ff(const phasePairKey& key) const = 0;
+
+        //- Return the turbulent diffusivity
+        //  Multiplies the phase-fraction gradient
+        virtual tmp<volScalarField> D(const phasePairKey& key) const = 0;
+
+        //- Return the interfacial mass flow rate
+        virtual tmp<volScalarField> dmdt(const phasePairKey& key) const = 0;
+
+        //- Return the momentum transfer matrices
+        virtual autoPtr<momentumTransferTable> momentumTransfer
+        (
+            IOMRFZoneList& MRF
+        ) const = 0;
+
+        //- Return the heat transfer matrices
+        virtual autoPtr<heatTransferTable> heatTransfer() const = 0;
+
+        //- Return the mass transfer matrices
+        virtual autoPtr<massTransferTable> massTransfer() const = 0;
+
+        //- Solve for the phase fractions
+        virtual void solve();
+
+        //- Correct the fluid properties other than the thermo and turbulence
+        virtual void correct();
+
+        //- Correct the kinematics
+        virtual void correctKinematics();
+
+        //- Correct the thermodynamics
+        virtual void correctThermo();
+
+        //- Correct the turbulence
+        virtual void correctTurbulence();
+
+        //- Read base phaseProperties dictionary
+        virtual bool read();
+
+
+        // Access
+
+            //- Constant access the mesh
+            inline const fvMesh& mesh() const;
+
+            //- Constant access the mixture flux
+            inline const surfaceScalarField& phi() const;
+
+            //- Access the mixture flux
+            inline surfaceScalarField& phi();
+
+            //- Constant access the rate of change of the pressure
+            inline const volScalarField& dpdt() const;
+
+            //- Access the rate of change of the pressure
+            inline volScalarField& dpdt();
+
+            //- Constant access the dilatation parameter
+            inline const volScalarField& dgdt() const;
+
+            //- Access the dilatation parameter
+            inline volScalarField& dgdt();
+
+            //- Access a sub model between a phase pair
+            template <class modelType>
+            const modelType& lookupSubModel(const phasePair& key) const;
+
+            //- Access a sub model between two phases
+            template <class modelType>
+            const modelType& lookupSubModel
+            (
+                const phaseModel& dispersed,
+                const phaseModel& continuous
+            ) const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include "phaseSystemI.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#ifdef NoRepository
+#   include "phaseSystemTemplates.H"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseSystem/phaseSystemI.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseSystem/phaseSystemI.H
new file mode 100644
index 0000000000000000000000000000000000000000..4095e3739f9337209ffdf78fe2630d9f00371864
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseSystem/phaseSystemI.H
@@ -0,0 +1,70 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+inline const Foam::fvMesh& Foam::phaseSystem::mesh() const
+{
+    return mesh_;
+}
+
+
+inline const Foam::surfaceScalarField& Foam::phaseSystem::phi() const
+{
+    return phi_;
+}
+
+
+inline Foam::surfaceScalarField& Foam::phaseSystem::phi()
+{
+    return phi_;
+}
+
+
+inline const Foam::volScalarField& Foam::phaseSystem::dpdt() const
+{
+    return dpdt_;
+}
+
+
+inline Foam::volScalarField& Foam::phaseSystem::dpdt()
+{
+    return dpdt_;
+}
+
+inline const Foam::volScalarField& Foam::phaseSystem::dgdt() const
+{
+    return dgdt_;
+}
+
+
+inline Foam::volScalarField& Foam::phaseSystem::dgdt()
+{
+    return dgdt_;
+}
+
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseSystem/phaseSystemTemplates.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseSystem/phaseSystemTemplates.H
new file mode 100644
index 0000000000000000000000000000000000000000..2f3185b9d1e8621fde93b6cc53ead8926c3c51e2
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseSystem/phaseSystemTemplates.H
@@ -0,0 +1,210 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "BlendedInterfacialModel.H"
+
+// * * * * * * * * * * * * Protected Member Functions  * * * * * * * * * * * //
+
+template<class modelType>
+void Foam::phaseSystem::createSubModels
+(
+    const dictTable& modelDicts,
+    HashTable
+    <
+        autoPtr<modelType>,
+        phasePairKey,
+        phasePairKey::hash
+    >& models
+)
+{
+    forAllConstIter(dictTable, modelDicts, iter)
+    {
+        const phasePairKey& key = iter.key();
+
+        models.insert
+        (
+            key,
+            modelType::New
+            (
+               *iter,
+                phasePairs_[key]
+            )
+        );
+    }
+}
+
+
+template<class modelType>
+void Foam::phaseSystem::generatePairsAndSubModels
+(
+    const word& modelName,
+    HashTable
+    <
+        autoPtr<modelType>,
+        phasePairKey,
+        phasePairKey::hash
+    >& models
+)
+{
+    dictTable modelDicts(lookup(modelName));
+
+    generatePairs(modelDicts);
+
+    createSubModels(modelDicts, models);
+}
+
+
+template<class modelType>
+void Foam::phaseSystem::generatePairsAndSubModels
+(
+    const word& modelName,
+    HashTable
+    <
+        autoPtr<BlendedInterfacialModel<modelType> >,
+        phasePairKey,
+        phasePairKey::hash
+    >& models
+)
+{
+    typedef
+        HashTable<autoPtr<modelType>, phasePairKey, phasePairKey::hash>
+        modelTypeTable;
+
+    modelTypeTable tempModels;
+    generatePairsAndSubModels(modelName, tempModels);
+
+    const blendingMethod& blending
+    (
+        blendingMethods_.found(modelName)
+      ? blendingMethods_[modelName]
+      : blendingMethods_["default"]
+    );
+
+    autoPtr<modelType> noModel(NULL);
+
+    forAllConstIter(typename modelTypeTable, tempModels, iter)
+    {
+        if (!iter().valid())
+        {
+            continue;
+        }
+
+        Info<< "iter.key() " << iter.key() << endl;
+        const phasePairKey key(iter.key().first(), iter.key().second());
+        const phasePairKey key1In2(key.first(), key.second(), true);
+        const phasePairKey key2In1(key.second(), key.first(), true);
+
+        Info<< "key " << key << endl;
+
+        models.insert
+        (
+            key,
+            autoPtr<BlendedInterfacialModel<modelType> >
+            (
+                new BlendedInterfacialModel<modelType>
+                (
+                    phaseModels_[key.first()],
+                    phaseModels_[key.second()],
+                    blending,
+                    tempModels.found(key    ) ? tempModels[key    ] : noModel,
+                    tempModels.found(key1In2) ? tempModels[key1In2] : noModel,
+                    tempModels.found(key2In1) ? tempModels[key2In1] : noModel
+                )
+            )
+        );
+    }
+}
+
+
+template<class modelType>
+void Foam::phaseSystem::generatePairsAndSubModels
+(
+    const word& modelName,
+    HashTable
+    <
+        HashTable<autoPtr<modelType> >,
+        phasePairKey,
+        phasePairKey::hash
+    >& models
+)
+{
+    typedef
+        HashTable<autoPtr<modelType>, phasePairKey, phasePairKey::hash>
+        modelTypeTable;
+
+    forAllConstIter(wordList, phaseNames_, phaseNameIter)
+    {
+        modelTypeTable tempModels;
+        generatePairsAndSubModels
+        (
+            IOobject::groupName(modelName, *phaseNameIter),
+            tempModels
+        );
+
+        forAllConstIter(typename modelTypeTable, tempModels, tempModelIter)
+        {
+            const phasePairKey key(tempModelIter.key());
+
+            if (!models.found(key))
+            {
+                models.insert
+                (
+                    key,
+                    HashTable<autoPtr<modelType> >()
+                );
+            }
+
+            models[tempModelIter.key()].insert
+            (
+                *phaseNameIter,
+                *tempModelIter
+            );
+        }
+    }
+}
+
+template <class modelType>
+const modelType& Foam::phaseSystem::lookupSubModel(const phasePair& key) const
+{
+    return
+        mesh().lookupObject<modelType>
+        (
+            IOobject::groupName(modelType::typeName, key.name())
+        );
+}
+
+
+template <class modelType>
+const modelType& Foam::phaseSystem::lookupSubModel
+(
+    const phaseModel& dispersed,
+    const phaseModel& continuous
+) const
+{
+    return lookupSubModel<modelType>(orderedPhasePair(dispersed, continuous));
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/twoPhaseSystem/newTwoPhaseSystem.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/twoPhaseSystem/newTwoPhaseSystem.C
new file mode 100644
index 0000000000000000000000000000000000000000..0324fb2f565254656674baeb7edb86741dfeea18
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/twoPhaseSystem/newTwoPhaseSystem.C
@@ -0,0 +1,70 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "twoPhaseSystem.H"
+
+// * * * * * * * * * * * * * * * * Selector  * * * * * * * * * * * * * * * * //
+
+Foam::autoPtr<Foam::twoPhaseSystem> Foam::twoPhaseSystem::New
+(
+    const fvMesh& mesh
+)
+{
+    const word twoPhaseSystemType
+    (
+        IOdictionary
+        (
+            IOobject
+            (
+                propertiesName,
+                mesh.time().constant(),
+                mesh,
+                IOobject::MUST_READ_IF_MODIFIED,
+                IOobject::NO_WRITE,
+                false
+            )
+        ).lookup("type")
+    );
+
+    Info<< "Selecting twoPhaseSystem "
+        << twoPhaseSystemType << endl;
+
+    dictionaryConstructorTable::iterator cstrIter =
+        dictionaryConstructorTablePtr_->find(twoPhaseSystemType);
+
+    if (cstrIter == dictionaryConstructorTablePtr_->end())
+    {
+        FatalErrorIn("twoPhaseSystem::New")
+            << "Unknown twoPhaseSystemType type "
+            << twoPhaseSystemType << endl << endl
+            << "Valid twoPhaseSystem types are : " << endl
+            << dictionaryConstructorTablePtr_->sortedToc()
+            << exit(FatalError);
+    }
+
+    return cstrIter()(mesh);
+}
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/twoPhaseSystem/twoPhaseSystem.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/twoPhaseSystem/twoPhaseSystem.C
new file mode 100644
index 0000000000000000000000000000000000000000..114f7416331008b040772396d48b9b5d461f9d67
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/twoPhaseSystem/twoPhaseSystem.C
@@ -0,0 +1,378 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2013-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "twoPhaseSystem.H"
+#include "dragModel.H"
+#include "virtualMassModel.H"
+
+#include "MULES.H"
+#include "subCycle.H"
+
+#include "fvcDdt.H"
+#include "fvcDiv.H"
+#include "fvcSnGrad.H"
+#include "fvcFlux.H"
+#include "fvcSup.H"
+
+#include "fvmDdt.H"
+#include "fvmLaplacian.H"
+#include "fvmSup.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    defineTypeNameAndDebug(twoPhaseSystem, 0);
+    defineRunTimeSelectionTable(twoPhaseSystem, dictionary);
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::twoPhaseSystem::twoPhaseSystem
+(
+    const fvMesh& mesh
+)
+:
+    phaseSystem(mesh),
+    phase1_(phaseModels_[phaseNames_[0]]()),
+    phase2_(phaseModels_[phaseNames_[1]]())
+{
+    phase2_.volScalarField::operator=(scalar(1) - phase1_);
+}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::twoPhaseSystem::~twoPhaseSystem()
+{}
+
+
+// * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::volScalarField>
+Foam::twoPhaseSystem::sigma() const
+{
+    return sigma
+    (
+        phasePairKey(phase1().name(), phase2().name())
+    );
+}
+
+
+Foam::tmp<Foam::volScalarField>
+Foam::twoPhaseSystem::Kd() const
+{
+    return Kd
+    (
+        phasePairKey(phase1().name(), phase2().name())
+    );
+}
+
+
+Foam::tmp<Foam::surfaceScalarField>
+Foam::twoPhaseSystem::Kdf() const
+{
+    return Kdf
+    (
+        phasePairKey(phase1().name(), phase2().name())
+    );
+}
+
+
+Foam::tmp<Foam::volScalarField>
+Foam::twoPhaseSystem::Vm() const
+{
+    return Vm
+    (
+        phasePairKey(phase1().name(), phase2().name())
+    );
+}
+
+
+Foam::tmp<Foam::surfaceScalarField>
+Foam::twoPhaseSystem::Vmf() const
+{
+    return Vmf
+    (
+        phasePairKey(phase1().name(), phase2().name())
+    );
+}
+
+
+Foam::tmp<Foam::volVectorField>
+Foam::twoPhaseSystem::F() const
+{
+    return F
+    (
+        phasePairKey(phase1().name(), phase2().name())
+    );
+}
+
+
+Foam::tmp<Foam::surfaceScalarField>
+Foam::twoPhaseSystem::Ff() const
+{
+    return Ff
+    (
+        phasePairKey(phase1().name(), phase2().name())
+    );
+}
+
+
+Foam::tmp<Foam::volScalarField>
+Foam::twoPhaseSystem::D() const
+{
+    return D
+    (
+        phasePairKey(phase1().name(), phase2().name())
+    );
+}
+
+
+Foam::tmp<Foam::volScalarField>
+Foam::twoPhaseSystem::dmdt() const
+{
+    return dmdt
+    (
+        phasePairKey(phase1().name(), phase2().name())
+    );
+}
+
+
+void Foam::twoPhaseSystem::solve()
+{
+    const fvMesh& mesh = this->mesh();
+    const Time& runTime = mesh.time();
+
+    volScalarField& alpha1 = phase1_;
+    volScalarField& alpha2 = phase2_;
+
+    const surfaceScalarField& phi = this->phi();
+    const surfaceScalarField& phi1 = phase1_.phi();
+    const surfaceScalarField& phi2 = phase2_.phi();
+
+    const volScalarField& dgdt = this->dgdt();
+
+    const dictionary& alphaControls = mesh.solverDict(alpha1.name());
+
+    label nAlphaSubCycles(readLabel(alphaControls.lookup("nAlphaSubCycles")));
+    label nAlphaCorr(readLabel(alphaControls.lookup("nAlphaCorr")));
+
+    word alphaScheme("div(phi," + alpha1.name() + ')');
+    word alpharScheme("div(phir," + alpha1.name() + ')');
+
+    alpha1.correctBoundaryConditions();
+
+
+    surfaceScalarField phic("phic", phi);
+    surfaceScalarField phir("phir", phi1 - phi2);
+
+    surfaceScalarField alpha1f(fvc::interpolate(max(alpha1, scalar(0))));
+
+    if (pPrimeByA_.valid())
+    {
+        surfaceScalarField phiP
+        (
+            pPrimeByA_()*fvc::snGrad(alpha1, "bounded")*mesh_.magSf()
+        );
+
+        phic += alpha1f*phiP;
+        phir += phiP;
+    }
+
+    for (int acorr=0; acorr<nAlphaCorr; acorr++)
+    {
+        volScalarField::DimensionedInternalField Sp
+        (
+            IOobject
+            (
+                "Sp",
+                runTime.timeName(),
+                mesh
+            ),
+            mesh,
+            dimensionedScalar("Sp", dgdt.dimensions(), 0.0)
+        );
+
+        volScalarField::DimensionedInternalField Su
+        (
+            IOobject
+            (
+                "Su",
+                runTime.timeName(),
+                mesh
+            ),
+            // Divergence term is handled explicitly to be
+            // consistent with the explicit transport solution
+            fvc::div(phi)*min(alpha1, scalar(1))
+        );
+
+        forAll(dgdt, celli)
+        {
+            if (dgdt[celli] > 0.0)
+            {
+                Sp[celli] -= dgdt[celli]/max(1.0 - alpha1[celli], 1e-4);
+                Su[celli] += dgdt[celli]/max(1.0 - alpha1[celli], 1e-4);
+            }
+            else if (dgdt[celli] < 0.0)
+            {
+                Sp[celli] += dgdt[celli]/max(alpha1[celli], 1e-4);
+            }
+        }
+
+        surfaceScalarField alphaPhic1
+        (
+            fvc::flux
+            (
+                phic,
+                alpha1,
+                alphaScheme
+            )
+          + fvc::flux
+            (
+               -fvc::flux(-phir, scalar(1) - alpha1, alpharScheme),
+                alpha1,
+                alpharScheme
+            )
+        );
+
+        // Ensure that the flux at inflow BCs is preserved
+        forAll(alphaPhic1.boundaryField(), patchi)
+        {
+            fvsPatchScalarField& alphaPhic1p =
+                alphaPhic1.boundaryField()[patchi];
+
+            if (!alphaPhic1p.coupled())
+            {
+                const scalarField& phi1p = phi1.boundaryField()[patchi];
+                const scalarField& alpha1p = alpha1.boundaryField()[patchi];
+
+                forAll(alphaPhic1p, facei)
+                {
+                    if (phi1p[facei] < 0)
+                    {
+                        alphaPhic1p[facei] = alpha1p[facei]*phi1p[facei];
+                    }
+                }
+            }
+        }
+
+        if (nAlphaSubCycles > 1)
+        {
+            for
+            (
+                subCycle<volScalarField> alphaSubCycle(alpha1, nAlphaSubCycles);
+                !(++alphaSubCycle).end();
+            )
+            {
+                surfaceScalarField alphaPhic10(alphaPhic1);
+
+                MULES::explicitSolve
+                (
+                    geometricOneField(),
+                    alpha1,
+                    phi,
+                    alphaPhic10,
+                    (alphaSubCycle.index()*Sp)(),
+                    (Su - (alphaSubCycle.index() - 1)*Sp*alpha1)(),
+                    phase1_.alphaMax(),
+                    0
+                );
+
+                if (alphaSubCycle.index() == 1)
+                {
+                    phase1_.alphaPhi() = alphaPhic10;
+                }
+                else
+                {
+                    phase1_.alphaPhi() += alphaPhic10;
+                }
+            }
+
+            phase1_.alphaPhi() /= nAlphaSubCycles;
+        }
+        else
+        {
+            MULES::explicitSolve
+            (
+                geometricOneField(),
+                alpha1,
+                phi,
+                alphaPhic1,
+                Sp,
+                Su,
+                phase1_.alphaMax(),
+                0
+            );
+
+            phase1_.alphaPhi() = alphaPhic1;
+        }
+
+        if (pPrimeByA_.valid())
+        {
+            fvScalarMatrix alpha1Eqn
+            (
+                fvm::ddt(alpha1) - fvc::ddt(alpha1)
+              - fvm::laplacian(alpha1f*pPrimeByA_(), alpha1, "bounded")
+            );
+
+            alpha1Eqn.relax();
+            alpha1Eqn.solve();
+
+            phase1_.alphaPhi() += alpha1Eqn.flux();
+        }
+
+        phase1_.alphaRhoPhi() =
+            fvc::interpolate(phase1_.rho())*phase1_.alphaPhi();
+
+        phase2_.alphaPhi() = phi - phase1_.alphaPhi();
+        alpha2 = scalar(1) - alpha1;
+        phase2_.alphaRhoPhi() =
+            fvc::interpolate(phase2_.rho())*phase2_.alphaPhi();
+
+        Info<< alpha1.name() << " volume fraction = "
+            << alpha1.weightedAverage(mesh.V()).value()
+            << "  Min(alpha1) = " << min(alpha1).value()
+            << "  Max(alpha1) = " << max(alpha1).value()
+            << endl;
+    }
+}
+
+
+const Foam::dragModel& Foam::twoPhaseSystem::drag(const phaseModel& phase) const
+{
+    return lookupSubModel<dragModel>(phase, otherPhase(phase));
+}
+
+
+const Foam::virtualMassModel&
+Foam::twoPhaseSystem::virtualMass(const phaseModel& phase) const
+{
+    return lookupSubModel<virtualMassModel>(phase, otherPhase(phase));
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/twoPhaseSystem/twoPhaseSystem.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/twoPhaseSystem/twoPhaseSystem.H
new file mode 100644
index 0000000000000000000000000000000000000000..55b7378f4bce8ff78e10f8dd8c11c86500b6a1ea
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/twoPhaseSystem/twoPhaseSystem.H
@@ -0,0 +1,194 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2013-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::twoPhaseSystem
+
+Description
+    Class which solves the volume fraction equations for two phases.
+
+SourceFiles
+    twoPhaseSystem.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef twoPhaseSystem_H
+#define twoPhaseSystem_H
+
+#include "phaseSystem.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+class dragModel;
+class virtualMassModel;
+
+/*---------------------------------------------------------------------------*\
+                         Class twoPhaseSystem Declaration
+\*---------------------------------------------------------------------------*/
+
+class twoPhaseSystem
+:
+    public phaseSystem
+{
+protected:
+
+    // Protected data
+
+        //- Phase model 1
+        phaseModel& phase1_;
+
+        //- Phase model 2
+        phaseModel& phase2_;
+
+        //- Optional dispersion diffusivity
+        tmp<surfaceScalarField> pPrimeByA_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("twoPhaseSystem");
+
+    // Declare runtime construction
+
+        declareRunTimeSelectionTable
+        (
+            autoPtr,
+            twoPhaseSystem,
+            dictionary,
+            (
+                const fvMesh& mesh
+            ),
+            (mesh)
+        );
+
+
+    // Constructors
+
+        //- Construct from fvMesh
+        twoPhaseSystem(const fvMesh&);
+
+
+    //- Destructor
+    virtual ~twoPhaseSystem();
+
+
+    // Selectors
+
+        static autoPtr<twoPhaseSystem> New
+        (
+            const fvMesh& mesh
+        );
+
+
+    // Member Functions
+
+        //- Solve for the phase fractions
+        virtual void solve();
+
+        using phaseSystem::sigma;
+        using phaseSystem::Kd;
+        using phaseSystem::Kdf;
+        using phaseSystem::Vm;
+        using phaseSystem::Vmf;
+        using phaseSystem::F;
+        using phaseSystem::Ff;
+        using phaseSystem::D;
+        using phaseSystem::dmdt;
+
+        //- Return the surface tension coefficient
+        tmp<volScalarField> sigma() const;
+
+        //- Return the drag coefficient
+        tmp<volScalarField> Kd() const;
+
+        //- Return the face drag coefficient
+        tmp<surfaceScalarField> Kdf() const;
+
+        //- Return the virtual mass coefficient
+        tmp<volScalarField> Vm() const;
+
+        //- Return the face virtual mass coefficient
+        tmp<surfaceScalarField> Vmf() const;
+
+        //- Return the combined force (lift + wall-lubrication)
+        tmp<volVectorField> F() const;
+
+        //- Return the combined face-force (lift + wall-lubrication)
+        tmp<surfaceScalarField> Ff() const;
+
+        //- Return the turbulent diffusivity
+        //  Multiplies the phase-fraction gradient
+        tmp<volScalarField> D() const;
+
+        //- Return the interfacial mass flow rate
+        tmp<volScalarField> dmdt() const;
+
+
+        // Access
+
+            //- Constant access phase model 1
+            const phaseModel& phase1() const;
+
+            //- Access phase model 1
+            phaseModel& phase1();
+
+            //- Constant access phase model 2
+            const phaseModel& phase2() const;
+
+            //- Access phase model 2
+            phaseModel& phase2();
+
+            //- Constant access the phase not given as an argument
+            const phaseModel& otherPhase
+            (
+                const phaseModel& phase
+            ) const;
+
+            //- Return the drag model for the given phase
+            const dragModel& drag(const phaseModel& phase) const;
+
+            //- Return the virtual mass model for the given phase
+            const virtualMassModel& virtualMass(const phaseModel& phase) const;
+
+            //- Return non-const access to the dispersion diffusivity
+            inline tmp<surfaceScalarField>& pPrimeByA();
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include "twoPhaseSystemI.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/twoPhaseSystem/twoPhaseSystemI.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/twoPhaseSystem/twoPhaseSystemI.H
new file mode 100644
index 0000000000000000000000000000000000000000..6a30bc73a38b2f1eb152a165cabfa19309e841cc
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/twoPhaseSystem/twoPhaseSystemI.H
@@ -0,0 +1,74 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+inline const Foam::phaseModel& Foam::twoPhaseSystem::phase1() const
+{
+    return phase1_;
+}
+
+
+inline Foam::phaseModel& Foam::twoPhaseSystem::phase1()
+{
+    return phase1_;
+}
+
+
+inline const Foam::phaseModel& Foam::twoPhaseSystem::phase2() const
+{
+    return phase2_;
+}
+
+
+inline Foam::phaseModel& Foam::twoPhaseSystem::phase2()
+{
+    return phase2_;
+}
+
+
+inline const Foam::phaseModel& Foam::twoPhaseSystem::otherPhase
+(
+    const phaseModel& phase
+) const
+{
+    if (&phase == &phase1_)
+    {
+        return phase2_;
+    }
+    else
+    {
+        return phase1_;
+    }
+}
+
+
+inline Foam::tmp<Foam::surfaceScalarField>& Foam::twoPhaseSystem::pPrimeByA()
+{
+    return pPrimeByA_;
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/twoPhaseSystem/twoPhaseSystems.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/twoPhaseSystem/twoPhaseSystems.C
new file mode 100644
index 0000000000000000000000000000000000000000..6b649afb6410a077c24217622632de4ecdcc7d27
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/twoPhaseSystem/twoPhaseSystems.C
@@ -0,0 +1,69 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "addToRunTimeSelectionTable.H"
+
+#include "phaseSystem.H"
+#include "twoPhaseSystem.H"
+#include "MomentumTransferPhaseSystem.H"
+#include "HeatTransferPhaseSystem.H"
+#include "HeatAndMassTransferPhaseSystem.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    typedef
+        HeatTransferPhaseSystem
+        <
+            MomentumTransferPhaseSystem<twoPhaseSystem>
+        >
+        heatAndMomentumTransferTwoPhaseSystem;
+
+    addNamedToRunTimeSelectionTable
+    (
+        twoPhaseSystem,
+        heatAndMomentumTransferTwoPhaseSystem,
+        dictionary,
+        heatAndMomentumTransferTwoPhaseSystem
+    );
+
+    typedef
+        HeatAndMassTransferPhaseSystem
+        <
+            MomentumTransferPhaseSystem<twoPhaseSystem>
+        >
+        heatMassAndMomentumTransferTwoPhaseSystem;
+
+    addNamedToRunTimeSelectionTable
+    (
+        twoPhaseSystem,
+        heatMassAndMomentumTransferTwoPhaseSystem,
+        dictionary,
+        heatMassAndMomentumTransferTwoPhaseSystem
+    );
+}
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/reactingTwoPhaseEulerFoam.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/reactingTwoPhaseEulerFoam.C
new file mode 100644
index 0000000000000000000000000000000000000000..5925fc4e24c568045c79f8f85a82ae7e07bc38b4
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/reactingTwoPhaseEulerFoam.C
@@ -0,0 +1,136 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Application
+    twoPhaseEulerFoam
+
+Description
+    Solver for a system of 2 compressible fluid phases with a common pressure,
+    but otherwise separate properties. The type of phase model is run time
+    selectable and can optionally represent multiple species and in-phase
+    reactions. The phase system is also run time selectable and can optionally
+    represent different types of momentun, heat and mass transfer.
+
+\*---------------------------------------------------------------------------*/
+
+#include "fvCFD.H"
+#include "twoPhaseSystem.H"
+#include "PhaseCompressibleTurbulenceModel.H"
+#include "pimpleControl.H"
+#include "fvIOoptionList.H"
+#include "fixedFluxPressureFvPatchScalarField.H"
+#include "HashPtrTable.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+int main(int argc, char *argv[])
+{
+    #include "setRootCase.H"
+
+    #include "createTime.H"
+    #include "createMesh.H"
+
+    pimpleControl pimple(mesh);
+
+    #include "createFields.H"
+    #include "createMRF.H"
+    #include "createFvOptions.H"
+    #include "initContinuityErrs.H"
+    #include "readTimeControls.H"
+    #include "CourantNos.H"
+    #include "setInitialDeltaT.H"
+
+    Switch faceMomentum
+    (
+        pimple.dict().lookupOrDefault<Switch>("faceMomentum", false)
+    );
+
+    Switch implicitPhasePressure
+    (
+        mesh.solverDict(alpha1.name()).lookupOrDefault<Switch>
+        (
+            "implicitPhasePressure", false
+        )
+    );
+
+    #include "pUf/createDDtU.H"
+
+    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+    Info<< "\nStarting time loop\n" << endl;
+
+    while (runTime.run())
+    {
+        #include "readTimeControls.H"
+        #include "CourantNos.H"
+        #include "setDeltaT.H"
+
+        runTime++;
+        Info<< "Time = " << runTime.timeName() << nl << endl;
+
+        // --- Pressure-velocity PIMPLE corrector loop
+        while (pimple.loop())
+        {
+            fluid.solve();
+            fluid.correct();
+
+            #include "correctContErrs.H"
+
+            #include "YEqns.H"
+
+            if (faceMomentum)
+            {
+                #include "pUf/UEqns.H"
+                #include "EEqns.H"
+                #include "pUf/pEqn.H"
+                #include "pUf/DDtU.H"
+            }
+            else
+            {
+                #include "pU/UEqns.H"
+                #include "EEqns.H"
+                #include "pU/pEqn.H"
+            }
+
+            fluid.correctKinematics();
+
+            if (pimple.turbCorr())
+            {
+                fluid.correctTurbulence();
+            }
+        }
+
+        #include "write.H"
+
+        Info<< "ExecutionTime = "
+            << runTime.elapsedCpuTime()
+            << " s\n\n" << endl;
+    }
+
+    Info<< "End\n" << endl;
+
+    return 0;
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/write.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/write.H
new file mode 100644
index 0000000000000000000000000000000000000000..303661beb6492a7e608f6d5e2385c824bf8dc55f
--- /dev/null
+++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/write.H
@@ -0,0 +1,17 @@
+    if (runTime.outputTime())
+    {
+        volVectorField Ur
+        (
+            IOobject
+            (
+                "Ur",
+                runTime.timeName(),
+                mesh,
+                IOobject::NO_READ,
+                IOobject::AUTO_WRITE
+            ),
+            U1 - U2
+        );
+
+        runTime.write();
+    }
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/T.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/T.air
new file mode 100644
index 0000000000000000000000000000000000000000..f704d27aa32633b83ada97b2dc1370c6eeb5fe7d
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/T.air
@@ -0,0 +1,45 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      T.air;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions          [0 0 0 1 0 0 0];
+
+internalField       uniform 300;
+
+boundaryField
+{
+    walls
+    {
+        type               zeroGradient;
+    }
+    outlet
+    {
+        type               inletOutlet;
+        phi                phi.air;
+        inletValue         $internalField;
+        value              $internalField;
+    }
+    inlet
+    {
+        type               fixedValue;
+        value              $internalField;
+    }
+    frontAndBackPlanes
+    {
+        type               empty;
+    }
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/T.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/T.water
new file mode 100644
index 0000000000000000000000000000000000000000..3c62df75d0c74e8881ad13181e97f7757382d0bf
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/T.water
@@ -0,0 +1,45 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      T.water;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions          [0 0 0 1 0 0 0];
+
+internalField       uniform 350;
+
+boundaryField
+{
+    walls
+    {
+        type               zeroGradient;
+    }
+    outlet
+    {
+        type               inletOutlet;
+        phi                phi.water;
+        inletValue         $internalField;
+        value              $internalField;
+    }
+    inlet
+    {
+        type               fixedValue;
+        value              $internalField;
+    }
+    frontAndBackPlanes
+    {
+        type               empty;
+    }
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/Theta b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/Theta
new file mode 100644
index 0000000000000000000000000000000000000000..e45304b83464ea6a9568531b35b570abae0d768f
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/Theta
@@ -0,0 +1,47 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      Theta;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions          [ 0 2 -2 0 0 0 0 ];
+
+internalField   uniform 0.0;
+
+boundaryField
+{
+    inlet
+    {
+        type            fixedValue;
+        value           uniform 1.0e-7;
+    }
+
+    outlet
+    {
+        type            inletOutlet;
+        inletValue      uniform 1.0e-7;
+        value           uniform 1.0e-7;
+    }
+
+    walls
+    {
+        type            zeroGradient;
+    }
+
+    defaultFaces
+    {
+        type            empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/U.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/U.air
new file mode 100644
index 0000000000000000000000000000000000000000..e81fffac0612e0a20d26f1cb9be4211ba4be9a16
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/U.air
@@ -0,0 +1,41 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      binary;
+    class       volVectorField;
+    object      U.air;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -1 0 0 0 0];
+
+internalField   uniform (0 0.1 0);
+
+boundaryField
+{
+    inlet
+    {
+        type               fixedValue;
+        value              $internalField;
+    }
+    outlet
+    {
+        type               pressureInletOutletVelocity;
+        phi                phi.air;
+        value              $internalField;
+    }
+    walls
+    {
+        type               fixedValue;
+        value              uniform (0 0 0);
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/U.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/U.water
new file mode 100644
index 0000000000000000000000000000000000000000..aab00fd78bb2a097604737fb5b1b77d2ae159967
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/U.water
@@ -0,0 +1,41 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      binary;
+    class       volVectorField;
+    object      U.water;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -1 0 0 0 0];
+
+internalField   uniform (0 0 0);
+
+boundaryField
+{
+    inlet
+    {
+        type               fixedValue;
+        value              $internalField;
+    }
+    outlet
+    {
+        type               pressureInletOutletVelocity;
+        phi                phi.water;
+        value              $internalField;
+    }
+    walls
+    {
+        type               fixedValue;
+        value              uniform (0 0 0);
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/alpha.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/alpha.air
new file mode 100644
index 0000000000000000000000000000000000000000..1b1a35684a06787a1eb3cb75f388563aad1443a1
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/alpha.air
@@ -0,0 +1,1926 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      alpha.air;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   nonuniform List<scalar>
+1875
+(
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+)
+;
+
+boundaryField
+{
+    inlet
+    {
+        type            fixedValue;
+        value           uniform 0.5;
+    }
+    outlet
+    {
+        type            inletOutlet;
+        phi             phi.air;
+        inletValue      uniform 1;
+        value           uniform 1;
+    }
+    walls
+    {
+        type            zeroGradient;
+    }
+    defaultFaces
+    {
+        type            empty;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/alpha.air.org b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/alpha.air.org
new file mode 100644
index 0000000000000000000000000000000000000000..4472b0c63598b7f95acf8d79fac10b3e9a08ebf7
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/alpha.air.org
@@ -0,0 +1,42 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      alpha.air;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    inlet
+    {
+        type            fixedValue;
+        value           uniform 0.5;
+    }
+    outlet
+    {
+        type            inletOutlet;
+        phi             phi.air;
+        inletValue      uniform 1;
+        value           uniform 1;
+    }
+    walls
+    {
+        type            zeroGradient;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/epsilon.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/epsilon.air
new file mode 100644
index 0000000000000000000000000000000000000000..ed94c59d53a9495e41cc6911c3618799ad0daff1
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/epsilon.air
@@ -0,0 +1,49 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      epsilon;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 2 -3 0 0 0 0];
+
+internalField   uniform 1.5e-4;
+
+boundaryField
+{
+    inlet
+    {
+        type            fixedValue;
+        value           $internalField;
+    }
+
+    outlet
+    {
+        type            inletOutlet;
+        phi             phi.air;
+        inletValue      $internalField;
+        value           $internalField;
+    }
+
+    walls
+    {
+        type            epsilonWallFunction;
+        value           $internalField;
+    }
+
+    defaultFaces
+    {
+        type            empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/epsilon.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/epsilon.water
new file mode 100644
index 0000000000000000000000000000000000000000..1cd27e448b42cb846648d2fb9e609e6d44c25b78
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/epsilon.water
@@ -0,0 +1,49 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      epsilon;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 2 -3 0 0 0 0];
+
+internalField   uniform 1.5e-4;
+
+boundaryField
+{
+    inlet
+    {
+        type            fixedValue;
+        value           $internalField;
+    }
+
+    outlet
+    {
+        type            inletOutlet;
+        phi             phi.water;
+        inletValue      $internalField;
+        value           $internalField;
+    }
+
+    walls
+    {
+        type            epsilonWallFunction;
+        value           $internalField;
+    }
+
+    defaultFaces
+    {
+        type            empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/k.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/k.air
new file mode 100644
index 0000000000000000000000000000000000000000..b4dd7631087bbf4acdc15b118acf9d03ac9ae048
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/k.air
@@ -0,0 +1,49 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      k;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 2 -2 0 0 0 0];
+
+internalField   uniform 3.75e-5;
+
+boundaryField
+{
+    inlet
+    {
+        type            fixedValue;
+        value           $internalField;
+    }
+
+    outlet
+    {
+        type            inletOutlet;
+        phi             phi.air;
+        inletValue      $internalField;
+        value           $internalField;
+    }
+
+    walls
+    {
+        type            kqRWallFunction;
+        value           $internalField;
+    }
+
+    defaultFaces
+    {
+        type            empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/k.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/k.water
new file mode 100644
index 0000000000000000000000000000000000000000..3381282f9ca36cd142af029eacdd2189886c1b52
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/k.water
@@ -0,0 +1,49 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      k;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 2 -2 0 0 0 0];
+
+internalField   uniform 3.75e-5;
+
+boundaryField
+{
+    inlet
+    {
+        type            fixedValue;
+        value           $internalField;
+    }
+
+    outlet
+    {
+        type            inletOutlet;
+        phi             phi.water;
+        inletValue      $internalField;
+        value           $internalField;
+    }
+
+    walls
+    {
+        type            kqRWallFunction;
+        value           $internalField;
+    }
+
+    defaultFaces
+    {
+        type            empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/nut.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/nut.air
new file mode 100644
index 0000000000000000000000000000000000000000..475091edaa9d00eaef74cb5e5f0031b7381d4a56
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/nut.air
@@ -0,0 +1,47 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      k;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 2 -1 0 0 0 0];
+
+internalField   uniform 1e-8;
+
+boundaryField
+{
+    inlet
+    {
+        type            calculated;
+        value           $internalField;
+    }
+
+    outlet
+    {
+        type            calculated;
+        value           $internalField;
+    }
+
+    walls
+    {
+        type            nutkWallFunction;
+        value           $internalField;
+    }
+
+    defaultFaces
+    {
+        type            empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/nut.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/nut.water
new file mode 100644
index 0000000000000000000000000000000000000000..475091edaa9d00eaef74cb5e5f0031b7381d4a56
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/nut.water
@@ -0,0 +1,47 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      k;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 2 -1 0 0 0 0];
+
+internalField   uniform 1e-8;
+
+boundaryField
+{
+    inlet
+    {
+        type            calculated;
+        value           $internalField;
+    }
+
+    outlet
+    {
+        type            calculated;
+        value           $internalField;
+    }
+
+    walls
+    {
+        type            nutkWallFunction;
+        value           $internalField;
+    }
+
+    defaultFaces
+    {
+        type            empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/p b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/p
new file mode 100644
index 0000000000000000000000000000000000000000..961771c727970e5d5259b913d2531a44f025a70f
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/p
@@ -0,0 +1,40 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      p;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions          [ 1 -1 -2 0 0 0 0 ];
+
+internalField       uniform 1e5;
+
+boundaryField
+{
+    inlet
+    {
+        type               calculated;
+        value              $internalField;
+    }
+    outlet
+    {
+        type               calculated;
+        value              $internalField;
+    }
+    walls
+    {
+        type               calculated;
+        value              $internalField;
+    }
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/p_rgh b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/p_rgh
new file mode 100644
index 0000000000000000000000000000000000000000..c816028aaf34844b1f6bd2ec1e3460f9dac8ac29
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/p_rgh
@@ -0,0 +1,40 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      p_rgh;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions          [ 1 -1 -2 0 0 0 0 ];
+
+internalField       uniform 1e5;
+
+boundaryField
+{
+    inlet
+    {
+        type               fixedFluxPressure;
+        value              $internalField;
+    }
+    outlet
+    {
+        type               fixedValue;
+        value              $internalField;
+    }
+    walls
+    {
+        type               fixedFluxPressure;
+        value              $internalField;
+    }
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/g b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/g
new file mode 100644
index 0000000000000000000000000000000000000000..0cc222ca3457ed24bf9753d0926fbee84359e624
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/g
@@ -0,0 +1,22 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       uniformDimensionedVectorField;
+    location    "constant";
+    object      g;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -2 0 0 0 0];
+value           (0 -9.81 0);
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/phaseProperties b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/phaseProperties
new file mode 100644
index 0000000000000000000000000000000000000000..db138464eda3edda4d6ebbb7b99f1aa173a01d77
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/phaseProperties
@@ -0,0 +1,163 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      phaseProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+type    heatAndMomentumTransferTwoPhaseSystem;
+
+phases (air water);
+
+air
+{
+    type            purePhaseModel;
+    diameterModel   isothermal;
+    isothermalCoeffs
+    {
+        d0              3e-3;
+        p0              1e5;
+    }
+
+    residualAlpha   1e-6;
+}
+
+water
+{
+    type            purePhaseModel;
+    diameterModel   constant;
+    constantCoeffs
+    {
+        d               1e-4;
+    }
+
+    residualAlpha   1e-6;
+}
+
+blending
+{
+    default
+    {
+        type            linear;
+        minFullyContinuousAlpha.air 0.7;
+        minPartlyContinuousAlpha.air 0.5;
+        minFullyContinuousAlpha.water 0.7;
+        minPartlyContinuousAlpha.water 0.5;
+    }
+}
+
+surfaceTension
+(
+    (air and water)
+    {
+        type            constant;
+        sigma           0.07;
+    }
+);
+
+aspectRatio
+(
+    (air in water)
+    {
+        type            constant;
+        E0              1.0;
+    }
+
+    (water in air)
+    {
+        type            constant;
+        E0              1.0;
+    }
+);
+
+drag
+(
+    (air in water)
+    {
+        type            SchillerNaumann;
+        residualRe      1e-3;
+        swarmCorrection
+        {
+            type        none;
+        }
+    }
+
+    (water in air)
+    {
+        type            SchillerNaumann;
+        residualRe      1e-3;
+        swarmCorrection
+        {
+            type        none;
+        }
+    }
+
+    (air and water)
+    {
+        type            segregated;
+        m               0.5;
+        n               8;
+        swarmCorrection
+        {
+            type        none;
+        }
+    }
+);
+
+virtualMass
+(
+    (air in water)
+    {
+        type            constantCoefficient;
+        Cvm             0.5;
+    }
+
+    (water in air)
+    {
+        type            constantCoefficient;
+        Cvm             0.5;
+    }
+);
+
+heatTransfer
+(
+    (air in water)
+    {
+        type            RanzMarshall;
+        residualAlpha   1e-4;
+    }
+
+    (water in air)
+    {
+        type            RanzMarshall;
+        residualAlpha   1e-4;
+    }
+);
+
+lift
+(
+);
+
+wallLubrication
+(
+);
+
+turbulentDispersion
+(
+);
+
+// Minimum allowable pressure
+pMin            10000;
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/polyMesh/boundary b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/polyMesh/boundary
new file mode 100644
index 0000000000000000000000000000000000000000..4564ccc46a64685c98cc53274688263dee85086a
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/polyMesh/boundary
@@ -0,0 +1,48 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       polyBoundaryMesh;
+    location    "constant/polyMesh";
+    object      boundary;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+4
+(
+    inlet
+    {
+        type            patch;
+        nFaces          25;
+        startFace       3650;
+    }
+    outlet
+    {
+        type            patch;
+        nFaces          25;
+        startFace       3675;
+    }
+    walls
+    {
+        type            wall;
+        inGroups        1(wall);
+        nFaces          150;
+        startFace       3700;
+    }
+    defaultFaces
+    {
+        type            empty;
+        inGroups        1(empty);
+        nFaces          3750;
+        startFace       3850;
+    }
+)
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/thermophysicalProperties.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/thermophysicalProperties.air
new file mode 100644
index 0000000000000000000000000000000000000000..befc0aeae449cccc50a24e955083b88b914aba67
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/thermophysicalProperties.air
@@ -0,0 +1,49 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      thermophysicalProperties.air;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+thermoType
+{
+    type            heRhoThermo;
+    mixture         pureMixture;
+    transport       const;
+    thermo          hConst;
+    equationOfState perfectGas;
+    specie          specie;
+    energy          sensibleInternalEnergy;
+}
+
+mixture
+{
+    specie
+    {
+        nMoles      1;
+        molWeight   28.9;
+    }
+    thermodynamics
+    {
+        Cp          1007;
+        Hf          0;
+    }
+    transport
+    {
+        mu          1.84e-05;
+        Pr          0.7;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/thermophysicalProperties.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/thermophysicalProperties.water
new file mode 100644
index 0000000000000000000000000000000000000000..c44c005d3b17561dc32c9e32262b37dc348aecc3
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/thermophysicalProperties.water
@@ -0,0 +1,54 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      thermophysicalProperties.water;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+thermoType
+{
+    type            heRhoThermo;
+    mixture         pureMixture;
+    transport       const;
+    thermo          hConst;
+    equationOfState perfectFluid;
+    specie          specie;
+    energy          sensibleInternalEnergy;
+}
+
+mixture
+{
+    specie
+    {
+        nMoles      1;
+        molWeight   18;
+    }
+    equationOfState
+    {
+        R           3000;
+        rho0        1027;
+    }
+    thermodynamics
+    {
+        Cp          4195;
+        Hf          0;
+    }
+    transport
+    {
+        mu          3.645e-4;
+        Pr          2.289;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/turbulenceProperties.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/turbulenceProperties.air
new file mode 100644
index 0000000000000000000000000000000000000000..93118858651234224d3055333322d9f76089ca02
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/turbulenceProperties.air
@@ -0,0 +1,34 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      turbulenceProperties.air;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+simulationType  LES;
+
+LES
+{
+    LESModel continuousGasKEqn; //Smagorinsky;
+
+    turbulence      on;
+    printCoeffs     on;
+
+    delta           cubeRootVol;
+
+    cubeRootVolCoeffs
+    {
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/turbulenceProperties.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/turbulenceProperties.water
new file mode 100644
index 0000000000000000000000000000000000000000..9ca26ce033fd977aaca9c1fd9769105394316716
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/turbulenceProperties.water
@@ -0,0 +1,34 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      turbulenceProperties.water;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+simulationType  LES;
+
+LES
+{
+    LESModel NicenoKEqn; //SmagorinskyZhang;
+
+    turbulence      on;
+    printCoeffs     on;
+
+    delta           cubeRootVol;
+
+    cubeRootVolCoeffs
+    {
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/system/blockMeshDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/system/blockMeshDict
new file mode 100644
index 0000000000000000000000000000000000000000..d03967afdc2ccf7afbecdf32d50159c309a475e3
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/system/blockMeshDict
@@ -0,0 +1,61 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      blockMeshDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+convertToMeters 1;
+
+vertices
+(
+    (0 0 0)
+    (0.15 0 0)
+    (0.15 1 0)
+    (0 1 0)
+    (0 0 0.1)
+    (0.15 0 0.1)
+    (0.15 1 0.1)
+    (0 1 0.1)
+);
+
+blocks
+(
+    hex (0 1 2 3 4 5 6 7) (25 75 1) simpleGrading (1 1 1)
+);
+
+edges
+(
+);
+
+patches
+(
+    patch inlet
+    (
+        (1 5 4 0)
+    )
+    patch outlet
+    (
+        (3 7 6 2)
+    )
+    wall walls
+    (
+        (0 4 7 3)
+        (2 6 5 1)
+    )
+);
+
+mergePatchPairs
+(
+);
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/system/controlDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/system/controlDict
new file mode 100644
index 0000000000000000000000000000000000000000..26877364f246abe22650b7f6e479cb60e83cd144
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/system/controlDict
@@ -0,0 +1,95 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      controlDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+application     reactingTwoPhaseEulerFoam;
+
+startFrom       startTime;
+
+startTime       0;
+
+stopAt          endTime;
+
+endTime         100;
+
+deltaT          0.005;
+
+writeControl    runTime;
+
+writeInterval   1;
+
+purgeWrite      0;
+
+writeFormat     ascii;
+
+writePrecision  6;
+
+writeCompression uncompressed;
+
+timeFormat      general;
+
+timePrecision   6;
+
+runTimeModifiable yes;
+
+adjustTimeStep  no;
+
+maxCo           0.5;
+
+maxDeltaT       1;
+
+functions
+{
+    fieldAverage1
+    {
+        type            fieldAverage;
+        functionObjectLibs ( "libfieldFunctionObjects.so" );
+        outputControl   outputTime;
+        fields
+        (
+            U.air
+            {
+                 mean        on;
+                 prime2Mean  off;
+                 base        time;
+            }
+
+            U.water
+            {
+                 mean        on;
+                 prime2Mean  off;
+                 base        time;
+            }
+
+            alpha.air
+            {
+                 mean        on;
+                 prime2Mean  off;
+                 base        time;
+            }
+
+            p
+            {
+                 mean        on;
+                 prime2Mean  off;
+                 base        time;
+            }
+        );
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/system/fvSchemes b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/system/fvSchemes
new file mode 100644
index 0000000000000000000000000000000000000000..09bfa9fabf450be46e89ff6c633f0243379c2de3
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/system/fvSchemes
@@ -0,0 +1,68 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      fvSchemes;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ddtSchemes
+{
+    default         Euler;
+}
+
+gradSchemes
+{
+    default         Gauss linear;
+}
+
+divSchemes
+{
+    default                         none;
+
+    div(phi,alpha.air)              Gauss vanLeer;
+    div(phir,alpha.air)             Gauss vanLeer;
+
+    "div\(alphaRhoPhi.*,U.*\)"      Gauss limitedLinearV 1;
+    "div\(phi.*,U.*\)"              Gauss limitedLinearV 1;
+
+    "div\(alphaRhoPhi.*,(h|e).*\)"  Gauss limitedLinear 1;
+    "div\(alphaRhoPhi.*,K.*\)"      Gauss limitedLinear 1;
+    "div\(alphaPhi.*,p\)"           Gauss limitedLinear 1;
+    "div\(alphaRhoPhi.*,k.*\)"      Gauss limitedLinear 1;
+
+    "div\(\(\(\(alpha.*\*thermo:rho.*\)\*nuEff.*\)\*dev2\(T\(grad\(U.*\)\)\)\)\)" Gauss linear;
+}
+
+laplacianSchemes
+{
+    default         Gauss linear uncorrected;
+}
+
+interpolationSchemes
+{
+    default         linear;
+}
+
+snGradSchemes
+{
+    default         uncorrected;
+}
+
+fluxRequired
+{
+    default         no;
+    p_rgh;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/system/fvSolution b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/system/fvSolution
new file mode 100644
index 0000000000000000000000000000000000000000..de1aecacf9335bb46447421cd5a486c4b85d685d
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/system/fvSolution
@@ -0,0 +1,91 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      fvSolution;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+solvers
+{
+    alpha.air
+    {
+        nAlphaCorr      1;
+        nAlphaSubCycles 2;
+    }
+
+    p_rgh
+    {
+        solver          GAMG;
+        smoother        DIC;
+        nPreSweeps      0;
+        nPostSweeps     2;
+        nFinestSweeps   2;
+        cacheAgglomeration true;
+        nCellsInCoarsestLevel 10;
+        agglomerator    faceAreaPair;
+        mergeLevels     1;
+        tolerance       1e-8;
+        relTol          0;
+    }
+
+    p_rghFinal
+    {
+        $p_rgh;
+        relTol          0;
+    }
+
+    "U.*"
+    {
+        solver          smoothSolver;
+        smoother        symGaussSeidel;
+        tolerance       1e-5;
+        relTol          0;
+        minIter         1;
+    }
+
+    "e.*"
+    {
+        solver          smoothSolver;
+        smoother        symGaussSeidel;
+        tolerance       1e-8;
+        relTol          0;
+        minIter         1;
+    }
+
+    "(k|epsilon|Theta).*"
+    {
+        solver          smoothSolver;
+        smoother        symGaussSeidel;
+        tolerance       1e-7;
+        relTol          0;
+        minIter         1;
+    }
+}
+
+PIMPLE
+{
+    nOuterCorrectors 3;
+    nCorrectors      1;
+    nNonOrthogonalCorrectors 0;
+}
+
+relaxationFactors
+{
+    equations
+    {
+        ".*"            1;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/system/setFieldsDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/system/setFieldsDict
new file mode 100644
index 0000000000000000000000000000000000000000..93d742ba74a2424f861b51d1c5d2d8211a625715
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/system/setFieldsDict
@@ -0,0 +1,36 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      setFieldsDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+defaultFieldValues
+(
+    volScalarFieldValue alpha.air 1
+);
+
+regions
+(
+    boxToCell
+    {
+        box (0 0 -0.1) (0.15 0.701 0.1);
+        fieldValues
+        (
+            volScalarFieldValue alpha.air 0
+        );
+    }
+);
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/T.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/T.air
new file mode 100644
index 0000000000000000000000000000000000000000..f704d27aa32633b83ada97b2dc1370c6eeb5fe7d
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/T.air
@@ -0,0 +1,45 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      T.air;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions          [0 0 0 1 0 0 0];
+
+internalField       uniform 300;
+
+boundaryField
+{
+    walls
+    {
+        type               zeroGradient;
+    }
+    outlet
+    {
+        type               inletOutlet;
+        phi                phi.air;
+        inletValue         $internalField;
+        value              $internalField;
+    }
+    inlet
+    {
+        type               fixedValue;
+        value              $internalField;
+    }
+    frontAndBackPlanes
+    {
+        type               empty;
+    }
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/T.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/T.water
new file mode 100644
index 0000000000000000000000000000000000000000..3c62df75d0c74e8881ad13181e97f7757382d0bf
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/T.water
@@ -0,0 +1,45 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      T.water;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions          [0 0 0 1 0 0 0];
+
+internalField       uniform 350;
+
+boundaryField
+{
+    walls
+    {
+        type               zeroGradient;
+    }
+    outlet
+    {
+        type               inletOutlet;
+        phi                phi.water;
+        inletValue         $internalField;
+        value              $internalField;
+    }
+    inlet
+    {
+        type               fixedValue;
+        value              $internalField;
+    }
+    frontAndBackPlanes
+    {
+        type               empty;
+    }
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/Theta b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/Theta
new file mode 100644
index 0000000000000000000000000000000000000000..e45304b83464ea6a9568531b35b570abae0d768f
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/Theta
@@ -0,0 +1,47 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      Theta;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions          [ 0 2 -2 0 0 0 0 ];
+
+internalField   uniform 0.0;
+
+boundaryField
+{
+    inlet
+    {
+        type            fixedValue;
+        value           uniform 1.0e-7;
+    }
+
+    outlet
+    {
+        type            inletOutlet;
+        inletValue      uniform 1.0e-7;
+        value           uniform 1.0e-7;
+    }
+
+    walls
+    {
+        type            zeroGradient;
+    }
+
+    defaultFaces
+    {
+        type            empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/U.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/U.air
new file mode 100644
index 0000000000000000000000000000000000000000..e81fffac0612e0a20d26f1cb9be4211ba4be9a16
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/U.air
@@ -0,0 +1,41 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      binary;
+    class       volVectorField;
+    object      U.air;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -1 0 0 0 0];
+
+internalField   uniform (0 0.1 0);
+
+boundaryField
+{
+    inlet
+    {
+        type               fixedValue;
+        value              $internalField;
+    }
+    outlet
+    {
+        type               pressureInletOutletVelocity;
+        phi                phi.air;
+        value              $internalField;
+    }
+    walls
+    {
+        type               fixedValue;
+        value              uniform (0 0 0);
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/U.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/U.water
new file mode 100644
index 0000000000000000000000000000000000000000..aab00fd78bb2a097604737fb5b1b77d2ae159967
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/U.water
@@ -0,0 +1,41 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      binary;
+    class       volVectorField;
+    object      U.water;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -1 0 0 0 0];
+
+internalField   uniform (0 0 0);
+
+boundaryField
+{
+    inlet
+    {
+        type               fixedValue;
+        value              $internalField;
+    }
+    outlet
+    {
+        type               pressureInletOutletVelocity;
+        phi                phi.water;
+        value              $internalField;
+    }
+    walls
+    {
+        type               fixedValue;
+        value              uniform (0 0 0);
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/alpha.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/alpha.air
new file mode 100644
index 0000000000000000000000000000000000000000..1b1a35684a06787a1eb3cb75f388563aad1443a1
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/alpha.air
@@ -0,0 +1,1926 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      alpha.air;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   nonuniform List<scalar>
+1875
+(
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+)
+;
+
+boundaryField
+{
+    inlet
+    {
+        type            fixedValue;
+        value           uniform 0.5;
+    }
+    outlet
+    {
+        type            inletOutlet;
+        phi             phi.air;
+        inletValue      uniform 1;
+        value           uniform 1;
+    }
+    walls
+    {
+        type            zeroGradient;
+    }
+    defaultFaces
+    {
+        type            empty;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/alpha.air.org b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/alpha.air.org
new file mode 100644
index 0000000000000000000000000000000000000000..4472b0c63598b7f95acf8d79fac10b3e9a08ebf7
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/alpha.air.org
@@ -0,0 +1,42 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      alpha.air;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    inlet
+    {
+        type            fixedValue;
+        value           uniform 0.5;
+    }
+    outlet
+    {
+        type            inletOutlet;
+        phi             phi.air;
+        inletValue      uniform 1;
+        value           uniform 1;
+    }
+    walls
+    {
+        type            zeroGradient;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/epsilon.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/epsilon.air
new file mode 100644
index 0000000000000000000000000000000000000000..ee103be57f575366de287cd8e45081bf774c1eed
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/epsilon.air
@@ -0,0 +1,49 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      epsilon.air;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 2 -3 0 0 0 0];
+
+internalField   uniform 1.5e-4;
+
+boundaryField
+{
+    inlet
+    {
+        type            fixedValue;
+        value           $internalField;
+    }
+
+    outlet
+    {
+        type            inletOutlet;
+        phi             phi.air;
+        inletValue      $internalField;
+        value           $internalField;
+    }
+
+    walls
+    {
+        type            epsilonWallFunction;
+        value           $internalField;
+    }
+
+    defaultFaces
+    {
+        type            empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/epsilon.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/epsilon.water
new file mode 100644
index 0000000000000000000000000000000000000000..cf8ea7bda761d577f46a68ec014d0613df6b2e5b
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/epsilon.water
@@ -0,0 +1,49 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      epsilon.water;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 2 -3 0 0 0 0];
+
+internalField   uniform 1.5e-4;
+
+boundaryField
+{
+    inlet
+    {
+        type            fixedValue;
+        value           $internalField;
+    }
+
+    outlet
+    {
+        type            inletOutlet;
+        phi             phi.water;
+        inletValue      $internalField;
+        value           $internalField;
+    }
+
+    walls
+    {
+        type            epsilonWallFunction;
+        value           $internalField;
+    }
+
+    defaultFaces
+    {
+        type            empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/epsilonm b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/epsilonm
new file mode 100644
index 0000000000000000000000000000000000000000..a3139ddbc1f7d66e002ce44dd4f7d5f86e49df41
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/epsilonm
@@ -0,0 +1,49 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      epsilonm;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 2 -3 0 0 0 0];
+
+internalField   uniform 1.5e-4;
+
+boundaryField
+{
+    inlet
+    {
+        type            fixedValue;
+        value           $internalField;
+    }
+
+    outlet
+    {
+        type            inletOutlet;
+        phi             phim;
+        inletValue      $internalField;
+        value           $internalField;
+    }
+
+    walls
+    {
+        type            zeroGradient;
+        value           $internalField;
+    }
+
+    defaultFaces
+    {
+        type            empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/k.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/k.air
new file mode 100644
index 0000000000000000000000000000000000000000..3b5244d4a3c1a91c58df7959586894e503c9a88d
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/k.air
@@ -0,0 +1,49 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      k.air;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 2 -2 0 0 0 0];
+
+internalField   uniform 3.75e-5;
+
+boundaryField
+{
+    inlet
+    {
+        type            fixedValue;
+        value           $internalField;
+    }
+
+    outlet
+    {
+        type            inletOutlet;
+        phi             phi.air;
+        inletValue      $internalField;
+        value           $internalField;
+    }
+
+    walls
+    {
+        type            kqRWallFunction;
+        value           $internalField;
+    }
+
+    defaultFaces
+    {
+        type            empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/k.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/k.water
new file mode 100644
index 0000000000000000000000000000000000000000..7cec6e66d0c19a763956ff75d7152a78ae2c5183
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/k.water
@@ -0,0 +1,49 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      k.water;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 2 -2 0 0 0 0];
+
+internalField   uniform 3.75e-5;
+
+boundaryField
+{
+    inlet
+    {
+        type            fixedValue;
+        value           $internalField;
+    }
+
+    outlet
+    {
+        type            inletOutlet;
+        phi             phi.water;
+        inletValue      $internalField;
+        value           $internalField;
+    }
+
+    walls
+    {
+        type            kqRWallFunction;
+        value           $internalField;
+    }
+
+    defaultFaces
+    {
+        type            empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/km b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/km
new file mode 100644
index 0000000000000000000000000000000000000000..f6f89f41672230cfa35131a612276d8a0c0ace7d
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/km
@@ -0,0 +1,49 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      km;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 2 -2 0 0 0 0];
+
+internalField   uniform 3.75e-5;
+
+boundaryField
+{
+    inlet
+    {
+        type            fixedValue;
+        value           $internalField;
+    }
+
+    outlet
+    {
+        type            inletOutlet;
+        phi             phim;
+        inletValue      $internalField;
+        value           $internalField;
+    }
+
+    walls
+    {
+        type            zeroGradient;
+        value           $internalField;
+    }
+
+    defaultFaces
+    {
+        type            empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/nut.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/nut.air
new file mode 100644
index 0000000000000000000000000000000000000000..e3ce09a2cb1e17fbe965cff657096f38e8f43899
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/nut.air
@@ -0,0 +1,47 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      nut.air;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 2 -1 0 0 0 0];
+
+internalField   uniform 1e-8;
+
+boundaryField
+{
+    inlet
+    {
+        type            calculated;
+        value           $internalField;
+    }
+
+    outlet
+    {
+        type            calculated;
+        value           $internalField;
+    }
+
+    walls
+    {
+        type            nutkWallFunction;
+        value           $internalField;
+    }
+
+    defaultFaces
+    {
+        type            empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/nut.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/nut.water
new file mode 100644
index 0000000000000000000000000000000000000000..376ed3f7943b15d031ec855ec1bd81a5b011d577
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/nut.water
@@ -0,0 +1,47 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      nut.water;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 2 -1 0 0 0 0];
+
+internalField   uniform 1e-8;
+
+boundaryField
+{
+    inlet
+    {
+        type            calculated;
+        value           $internalField;
+    }
+
+    outlet
+    {
+        type            calculated;
+        value           $internalField;
+    }
+
+    walls
+    {
+        type            nutkWallFunction;
+        value           $internalField;
+    }
+
+    defaultFaces
+    {
+        type            empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/p b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/p
new file mode 100644
index 0000000000000000000000000000000000000000..961771c727970e5d5259b913d2531a44f025a70f
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/p
@@ -0,0 +1,40 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      p;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions          [ 1 -1 -2 0 0 0 0 ];
+
+internalField       uniform 1e5;
+
+boundaryField
+{
+    inlet
+    {
+        type               calculated;
+        value              $internalField;
+    }
+    outlet
+    {
+        type               calculated;
+        value              $internalField;
+    }
+    walls
+    {
+        type               calculated;
+        value              $internalField;
+    }
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/p_rgh b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/p_rgh
new file mode 100644
index 0000000000000000000000000000000000000000..c816028aaf34844b1f6bd2ec1e3460f9dac8ac29
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/p_rgh
@@ -0,0 +1,40 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      p_rgh;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions          [ 1 -1 -2 0 0 0 0 ];
+
+internalField       uniform 1e5;
+
+boundaryField
+{
+    inlet
+    {
+        type               fixedFluxPressure;
+        value              $internalField;
+    }
+    outlet
+    {
+        type               fixedValue;
+        value              $internalField;
+    }
+    walls
+    {
+        type               fixedFluxPressure;
+        value              $internalField;
+    }
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/g b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/g
new file mode 100644
index 0000000000000000000000000000000000000000..0cc222ca3457ed24bf9753d0926fbee84359e624
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/g
@@ -0,0 +1,22 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       uniformDimensionedVectorField;
+    location    "constant";
+    object      g;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -2 0 0 0 0];
+value           (0 -9.81 0);
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/phaseProperties b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/phaseProperties
new file mode 100644
index 0000000000000000000000000000000000000000..db138464eda3edda4d6ebbb7b99f1aa173a01d77
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/phaseProperties
@@ -0,0 +1,163 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      phaseProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+type    heatAndMomentumTransferTwoPhaseSystem;
+
+phases (air water);
+
+air
+{
+    type            purePhaseModel;
+    diameterModel   isothermal;
+    isothermalCoeffs
+    {
+        d0              3e-3;
+        p0              1e5;
+    }
+
+    residualAlpha   1e-6;
+}
+
+water
+{
+    type            purePhaseModel;
+    diameterModel   constant;
+    constantCoeffs
+    {
+        d               1e-4;
+    }
+
+    residualAlpha   1e-6;
+}
+
+blending
+{
+    default
+    {
+        type            linear;
+        minFullyContinuousAlpha.air 0.7;
+        minPartlyContinuousAlpha.air 0.5;
+        minFullyContinuousAlpha.water 0.7;
+        minPartlyContinuousAlpha.water 0.5;
+    }
+}
+
+surfaceTension
+(
+    (air and water)
+    {
+        type            constant;
+        sigma           0.07;
+    }
+);
+
+aspectRatio
+(
+    (air in water)
+    {
+        type            constant;
+        E0              1.0;
+    }
+
+    (water in air)
+    {
+        type            constant;
+        E0              1.0;
+    }
+);
+
+drag
+(
+    (air in water)
+    {
+        type            SchillerNaumann;
+        residualRe      1e-3;
+        swarmCorrection
+        {
+            type        none;
+        }
+    }
+
+    (water in air)
+    {
+        type            SchillerNaumann;
+        residualRe      1e-3;
+        swarmCorrection
+        {
+            type        none;
+        }
+    }
+
+    (air and water)
+    {
+        type            segregated;
+        m               0.5;
+        n               8;
+        swarmCorrection
+        {
+            type        none;
+        }
+    }
+);
+
+virtualMass
+(
+    (air in water)
+    {
+        type            constantCoefficient;
+        Cvm             0.5;
+    }
+
+    (water in air)
+    {
+        type            constantCoefficient;
+        Cvm             0.5;
+    }
+);
+
+heatTransfer
+(
+    (air in water)
+    {
+        type            RanzMarshall;
+        residualAlpha   1e-4;
+    }
+
+    (water in air)
+    {
+        type            RanzMarshall;
+        residualAlpha   1e-4;
+    }
+);
+
+lift
+(
+);
+
+wallLubrication
+(
+);
+
+turbulentDispersion
+(
+);
+
+// Minimum allowable pressure
+pMin            10000;
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/polyMesh/boundary b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/polyMesh/boundary
new file mode 100644
index 0000000000000000000000000000000000000000..4564ccc46a64685c98cc53274688263dee85086a
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/polyMesh/boundary
@@ -0,0 +1,48 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       polyBoundaryMesh;
+    location    "constant/polyMesh";
+    object      boundary;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+4
+(
+    inlet
+    {
+        type            patch;
+        nFaces          25;
+        startFace       3650;
+    }
+    outlet
+    {
+        type            patch;
+        nFaces          25;
+        startFace       3675;
+    }
+    walls
+    {
+        type            wall;
+        inGroups        1(wall);
+        nFaces          150;
+        startFace       3700;
+    }
+    defaultFaces
+    {
+        type            empty;
+        inGroups        1(empty);
+        nFaces          3750;
+        startFace       3850;
+    }
+)
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/thermophysicalProperties.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/thermophysicalProperties.air
new file mode 100644
index 0000000000000000000000000000000000000000..befc0aeae449cccc50a24e955083b88b914aba67
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/thermophysicalProperties.air
@@ -0,0 +1,49 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      thermophysicalProperties.air;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+thermoType
+{
+    type            heRhoThermo;
+    mixture         pureMixture;
+    transport       const;
+    thermo          hConst;
+    equationOfState perfectGas;
+    specie          specie;
+    energy          sensibleInternalEnergy;
+}
+
+mixture
+{
+    specie
+    {
+        nMoles      1;
+        molWeight   28.9;
+    }
+    thermodynamics
+    {
+        Cp          1007;
+        Hf          0;
+    }
+    transport
+    {
+        mu          1.84e-05;
+        Pr          0.7;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/thermophysicalProperties.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/thermophysicalProperties.water
new file mode 100644
index 0000000000000000000000000000000000000000..c44c005d3b17561dc32c9e32262b37dc348aecc3
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/thermophysicalProperties.water
@@ -0,0 +1,54 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      thermophysicalProperties.water;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+thermoType
+{
+    type            heRhoThermo;
+    mixture         pureMixture;
+    transport       const;
+    thermo          hConst;
+    equationOfState perfectFluid;
+    specie          specie;
+    energy          sensibleInternalEnergy;
+}
+
+mixture
+{
+    specie
+    {
+        nMoles      1;
+        molWeight   18;
+    }
+    equationOfState
+    {
+        R           3000;
+        rho0        1027;
+    }
+    thermodynamics
+    {
+        Cp          4195;
+        Hf          0;
+    }
+    transport
+    {
+        mu          3.645e-4;
+        Pr          2.289;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/turbulenceProperties.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/turbulenceProperties.air
new file mode 100644
index 0000000000000000000000000000000000000000..fe69aba1eadb947bda4d8ec9e6f4ea1ba2fd0a4e
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/turbulenceProperties.air
@@ -0,0 +1,34 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      turbulenceProperties.air;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+simulationType  RAS;
+
+RAS
+{
+    RASModel mixtureKEpsilon; //continuousGasKEpsilon;
+
+    turbulence      on;
+    printCoeffs     on;
+
+    // mixtureKEpsilonCoeffs
+    // {
+    //     Cp  1;
+    //     C3  1;
+    // }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/turbulenceProperties.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/turbulenceProperties.water
new file mode 100644
index 0000000000000000000000000000000000000000..b82e81c0cbc5e7ad5bd681eaa9bcbed6118de4ef
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/turbulenceProperties.water
@@ -0,0 +1,28 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      turbulenceProperties.water;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+simulationType  RAS;
+
+RAS
+{
+    RASModel mixtureKEpsilon; //LaheyKEpsilon;
+
+    turbulence      on;
+    printCoeffs     on;
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/system/blockMeshDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/system/blockMeshDict
new file mode 100644
index 0000000000000000000000000000000000000000..d03967afdc2ccf7afbecdf32d50159c309a475e3
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/system/blockMeshDict
@@ -0,0 +1,61 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      blockMeshDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+convertToMeters 1;
+
+vertices
+(
+    (0 0 0)
+    (0.15 0 0)
+    (0.15 1 0)
+    (0 1 0)
+    (0 0 0.1)
+    (0.15 0 0.1)
+    (0.15 1 0.1)
+    (0 1 0.1)
+);
+
+blocks
+(
+    hex (0 1 2 3 4 5 6 7) (25 75 1) simpleGrading (1 1 1)
+);
+
+edges
+(
+);
+
+patches
+(
+    patch inlet
+    (
+        (1 5 4 0)
+    )
+    patch outlet
+    (
+        (3 7 6 2)
+    )
+    wall walls
+    (
+        (0 4 7 3)
+        (2 6 5 1)
+    )
+);
+
+mergePatchPairs
+(
+);
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/system/controlDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/system/controlDict
new file mode 100644
index 0000000000000000000000000000000000000000..26877364f246abe22650b7f6e479cb60e83cd144
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/system/controlDict
@@ -0,0 +1,95 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      controlDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+application     reactingTwoPhaseEulerFoam;
+
+startFrom       startTime;
+
+startTime       0;
+
+stopAt          endTime;
+
+endTime         100;
+
+deltaT          0.005;
+
+writeControl    runTime;
+
+writeInterval   1;
+
+purgeWrite      0;
+
+writeFormat     ascii;
+
+writePrecision  6;
+
+writeCompression uncompressed;
+
+timeFormat      general;
+
+timePrecision   6;
+
+runTimeModifiable yes;
+
+adjustTimeStep  no;
+
+maxCo           0.5;
+
+maxDeltaT       1;
+
+functions
+{
+    fieldAverage1
+    {
+        type            fieldAverage;
+        functionObjectLibs ( "libfieldFunctionObjects.so" );
+        outputControl   outputTime;
+        fields
+        (
+            U.air
+            {
+                 mean        on;
+                 prime2Mean  off;
+                 base        time;
+            }
+
+            U.water
+            {
+                 mean        on;
+                 prime2Mean  off;
+                 base        time;
+            }
+
+            alpha.air
+            {
+                 mean        on;
+                 prime2Mean  off;
+                 base        time;
+            }
+
+            p
+            {
+                 mean        on;
+                 prime2Mean  off;
+                 base        time;
+            }
+        );
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/system/fvSchemes b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/system/fvSchemes
new file mode 100644
index 0000000000000000000000000000000000000000..ad383605624f147f8fbe17c13656e07f7c1cea17
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/system/fvSchemes
@@ -0,0 +1,70 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      fvSchemes;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ddtSchemes
+{
+    default         Euler;
+}
+
+gradSchemes
+{
+    default         Gauss linear;
+}
+
+divSchemes
+{
+    default                         none;
+
+    div(phi,alpha.air)              Gauss vanLeer;
+    div(phir,alpha.air)             Gauss vanLeer;
+
+    "div\(alphaRhoPhi.*,U.*\)"      Gauss limitedLinearV 1;
+    "div\(phi.*,U.*\)"              Gauss limitedLinearV 1;
+
+    "div\(alphaRhoPhi.*,(h|e).*\)"  Gauss limitedLinear 1;
+    "div\(alphaRhoPhi.*,K.*\)"      Gauss limitedLinear 1;
+    "div\(alphaPhi.*,p\)"           Gauss limitedLinear 1;
+
+    "div\(alphaRhoPhi.*,(k|epsilon).*\)"  Gauss limitedLinear 1;
+    "div\(phim,(k|epsilon)m\)"      Gauss limitedLinear 1;
+
+    "div\(\(\(\(alpha.*\*thermo:rho.*\)\*nuEff.*\)\*dev2\(T\(grad\(U.*\)\)\)\)\)" Gauss linear;
+}
+
+laplacianSchemes
+{
+    default         Gauss linear uncorrected;
+}
+
+interpolationSchemes
+{
+    default         linear;
+}
+
+snGradSchemes
+{
+    default         uncorrected;
+}
+
+fluxRequired
+{
+    default         no;
+    p_rgh;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/system/fvSolution b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/system/fvSolution
new file mode 100644
index 0000000000000000000000000000000000000000..f6f72076f0b473028b810467e708c8e0ba79002f
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/system/fvSolution
@@ -0,0 +1,91 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      fvSolution;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+solvers
+{
+    alpha.air
+    {
+        nAlphaCorr      1;
+        nAlphaSubCycles 2;
+    }
+
+    p_rgh
+    {
+        solver          GAMG;
+        smoother        DIC;
+        nPreSweeps      0;
+        nPostSweeps     2;
+        nFinestSweeps   2;
+        cacheAgglomeration true;
+        nCellsInCoarsestLevel 10;
+        agglomerator    faceAreaPair;
+        mergeLevels     1;
+        tolerance       1e-8;
+        relTol          0;
+    }
+
+    p_rghFinal
+    {
+        $p_rgh;
+        relTol          0;
+    }
+
+    "U.*"
+    {
+        solver          smoothSolver;
+        smoother        symGaussSeidel;
+        tolerance       1e-7;
+        relTol          0;
+        minIter         1;
+    }
+
+    "e.*"
+    {
+        solver          smoothSolver;
+        smoother        symGaussSeidel;
+        tolerance       1e-7;
+        relTol          0;
+        minIter         1;
+    }
+
+    "(k|epsilon|Theta).*"
+    {
+        solver          smoothSolver;
+        smoother        symGaussSeidel;
+        tolerance       1e-7;
+        relTol          0;
+        minIter         1;
+    }
+}
+
+PIMPLE
+{
+    nOuterCorrectors 3;
+    nCorrectors      1;
+    nNonOrthogonalCorrectors 0;
+}
+
+relaxationFactors
+{
+    equations
+    {
+        ".*"            1;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/system/setFieldsDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/system/setFieldsDict
new file mode 100644
index 0000000000000000000000000000000000000000..93d742ba74a2424f861b51d1c5d2d8211a625715
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/system/setFieldsDict
@@ -0,0 +1,36 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      setFieldsDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+defaultFieldValues
+(
+    volScalarFieldValue alpha.air 1
+);
+
+regions
+(
+    boxToCell
+    {
+        box (0 0 -0.1) (0.15 0.701 0.1);
+        fieldValues
+        (
+            volScalarFieldValue alpha.air 0
+        );
+    }
+);
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/AIR.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/AIR.gas
new file mode 100644
index 0000000000000000000000000000000000000000..50dd609bc096c48ea49d7c62b58e74c4bc7e0ac3
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/AIR.gas
@@ -0,0 +1,42 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      AIR.gas;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   uniform 1;
+
+boundaryField
+{
+    inlet
+    {
+        type            fixedValue;
+        value           uniform 0.9;
+    }
+    outlet
+    {
+        type            inletOutlet;
+        phi             phi.gas;
+        inletValue      $internalField;
+        value           $internalField;
+    }
+    walls
+    {
+        type            zeroGradient;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/AIR.liquid b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/AIR.liquid
new file mode 100644
index 0000000000000000000000000000000000000000..21d6b06a4265435ed4f7383aaa80098f924ff93c
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/AIR.liquid
@@ -0,0 +1,42 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      AIR.liquid;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    inlet
+    {
+        type            fixedValue;
+        value           $internalField;
+    }
+    outlet
+    {
+        type            inletOutlet;
+        phi             phi.liquid;
+        inletValue      $internalField;
+        value           $internalField;
+    }
+    walls
+    {
+        type            zeroGradient;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/CO.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/CO.gas
new file mode 100644
index 0000000000000000000000000000000000000000..3241a1ab52a28dc4b11fac8c2538eae5bd0c5fe3
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/CO.gas
@@ -0,0 +1,42 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      CO.gas;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    inlet
+    {
+        type            fixedValue;
+        value           uniform 0.1;
+    }
+    outlet
+    {
+        type            inletOutlet;
+        phi             phi.gas;
+        inletValue      $internalField;
+        value           $internalField;
+    }
+    walls
+    {
+        type            zeroGradient;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/H2O.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/H2O.gas
new file mode 100644
index 0000000000000000000000000000000000000000..4c75b369281eec82daa4a4ca5265279552ab5527
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/H2O.gas
@@ -0,0 +1,42 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      H2O.gas;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    inlet
+    {
+        type            fixedValue;
+        value           $internalField;
+    }
+    outlet
+    {
+        type            inletOutlet;
+        phi             phi.gas;
+        inletValue      $internalField;
+        value           $internalField;
+    }
+    walls
+    {
+        type            zeroGradient;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/H2O.liquid b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/H2O.liquid
new file mode 100644
index 0000000000000000000000000000000000000000..c7ad1c1c75e91e4338531daeb1a0a775d9f79fbc
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/H2O.liquid
@@ -0,0 +1,42 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      H2O.liquid;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   uniform 1;
+
+boundaryField
+{
+    inlet
+    {
+        type            fixedValue;
+        value           $internalField;
+    }
+    outlet
+    {
+        type            inletOutlet;
+        phi             phi.liquid;
+        inletValue      $internalField;
+        value           $internalField;
+    }
+    walls
+    {
+        type            zeroGradient;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/T.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/T.gas
new file mode 100644
index 0000000000000000000000000000000000000000..7c14c5ec5f5339f502eed20b981df6af93355664
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/T.gas
@@ -0,0 +1,42 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      T.gas;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions          [0 0 0 1 0 0 0];
+
+internalField       uniform 400;
+
+boundaryField
+{
+    walls
+    {
+        type            zeroGradient;
+    }
+    outlet
+    {
+        type            inletOutlet;
+        phi             phi.gas;
+        inletValue      $internalField;
+        value           $internalField;
+    }
+    inlet
+    {
+        type            fixedValue;
+        value           $internalField;
+    }
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/T.liquid b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/T.liquid
new file mode 100644
index 0000000000000000000000000000000000000000..6f27c82d32805638ea15cf1ea297308b24a63d63
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/T.liquid
@@ -0,0 +1,41 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      T.liquid;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions          [0 0 0 1 0 0 0];
+
+internalField       uniform 400;
+
+boundaryField
+{
+    walls
+    {
+        type            zeroGradient;
+    }
+    outlet
+    {
+        type            inletOutlet;
+        phi             phi.liquid;
+        inletValue      $internalField;
+        value           $internalField;
+    }
+    inlet
+    {
+        type             zeroGradient;
+    }
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/U.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/U.gas
new file mode 100644
index 0000000000000000000000000000000000000000..48fc136a2df7e7eeb0b88f1624140aa8811a0e5e
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/U.gas
@@ -0,0 +1,42 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      binary;
+    class       volVectorField;
+    location    "0";
+    object      U.gas;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -1 0 0 0 0];
+
+internalField   uniform (0 0.1 0);
+
+boundaryField
+{
+    inlet
+    {
+        type            fixedValue;
+        value           $internalField;
+    }
+    outlet
+    {
+        type            pressureInletOutletVelocity;
+        phi             phi.gas;
+        value           $internalField;
+    }
+    walls
+    {
+        type            fixedValue;
+        value           uniform (0 0 0);
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/U.liquid b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/U.liquid
new file mode 100644
index 0000000000000000000000000000000000000000..b041afd007809c48630dc781c7f00d266f9e172f
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/U.liquid
@@ -0,0 +1,42 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      binary;
+    class       volVectorField;
+    location    "0";
+    object      U.liquid;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -1 0 0 0 0];
+
+internalField   uniform (0 0 0);
+
+boundaryField
+{
+    inlet
+    {
+        type            fixedValue;
+        value           $internalField;
+    }
+    outlet
+    {
+        type            pressureInletOutletVelocity;
+        phi             phi.liquid;
+        value           $internalField;
+    }
+    walls
+    {
+        type            fixedValue;
+        value           uniform (0 0 0);
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/Ydefault b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/Ydefault
new file mode 100644
index 0000000000000000000000000000000000000000..cc22bdff91c3af591c8546b1b4f58690d24df275
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/Ydefault
@@ -0,0 +1,42 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      Ydefault;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    inlet
+    {
+        type            fixedValue;
+        value           $internalField;
+    }
+    outlet
+    {
+        type            inletOutlet;
+        phi             phi.gas;
+        inletValue      $internalField;
+        value           $internalField;
+    }
+    walls
+    {
+        type            zeroGradient;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/alpha.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/alpha.gas
new file mode 100644
index 0000000000000000000000000000000000000000..2d4796c4338b76ce4dd78d7865e676577ce70eb6
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/alpha.gas
@@ -0,0 +1,1926 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      alpha.gas;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   nonuniform List<scalar>
+1875
+(
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+)
+;
+
+boundaryField
+{
+    inlet
+    {
+        type            fixedValue;
+        value           uniform 0.5;
+    }
+    outlet
+    {
+        type            inletOutlet;
+        phi             phi.gas;
+        inletValue      uniform 1;
+        value           uniform 1;
+    }
+    walls
+    {
+        type            zeroGradient;
+    }
+    defaultFaces
+    {
+        type            empty;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/alpha.gas.org b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/alpha.gas.org
new file mode 100644
index 0000000000000000000000000000000000000000..093bcdab07308b3a9d204b1212b6eacdcb261ce5
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/alpha.gas.org
@@ -0,0 +1,42 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      alpha.gas;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   uniform 1;
+
+boundaryField
+{
+    inlet
+    {
+        type            fixedValue;
+        value           uniform 0.5;
+    }
+    outlet
+    {
+        type            inletOutlet;
+        phi             phi.gas;
+        inletValue      uniform 1;
+        value           uniform 1;
+    }
+    walls
+    {
+        type            zeroGradient;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/alpha.liquid b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/alpha.liquid
new file mode 100644
index 0000000000000000000000000000000000000000..60143dd5336b6b12bf086d20e7703d86359a21a7
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/alpha.liquid
@@ -0,0 +1,1926 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      alpha.liquid;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   nonuniform List<scalar>
+1875
+(
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+)
+;
+
+boundaryField
+{
+    inlet
+    {
+        type            fixedValue;
+        value           uniform 0.5;
+    }
+    outlet
+    {
+        type            inletOutlet;
+        phi             phi.liquid;
+        inletValue      uniform 0;
+        value           uniform 0;
+    }
+    walls
+    {
+        type            zeroGradient;
+    }
+    defaultFaces
+    {
+        type            empty;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/alpha.liquid.org b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/alpha.liquid.org
new file mode 100644
index 0000000000000000000000000000000000000000..4ba98f325e8ef05c0660936b6f2008e1dd14b8f0
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/alpha.liquid.org
@@ -0,0 +1,42 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      alpha.liquid;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    inlet
+    {
+        type            fixedValue;
+        value           uniform 0.5;
+    }
+    outlet
+    {
+        type            inletOutlet;
+        phi             phi.liquid;
+        inletValue      uniform 0;
+        value           uniform 0;
+    }
+    walls
+    {
+        type            zeroGradient;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/epsilon.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/epsilon.gas
new file mode 100644
index 0000000000000000000000000000000000000000..c85600904b9a72f0ad56349031e8f2e7f140639d
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/epsilon.gas
@@ -0,0 +1,43 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      epsilon;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 2 -3 0 0 0 0];
+
+internalField   uniform 1.5e-4;
+
+boundaryField
+{
+    inlet
+    {
+        type            fixedValue;
+        value           $internalField;
+    }
+    outlet
+    {
+        type            inletOutlet;
+        phi             phi.gas;
+        inletValue      $internalField;
+        value           $internalField;
+    }
+    walls
+    {
+        type            epsilonWallFunction;
+        value           $internalField;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/k.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/k.gas
new file mode 100644
index 0000000000000000000000000000000000000000..a2a79829f33b28561481906cb9643c1191603d27
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/k.gas
@@ -0,0 +1,43 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      k;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 2 -2 0 0 0 0];
+
+internalField   uniform 3.75e-5;
+
+boundaryField
+{
+    inlet
+    {
+        type            fixedValue;
+        value           $internalField;
+    }
+    outlet
+    {
+        type            inletOutlet;
+        phi             phi.gas;
+        inletValue      $internalField;
+        value           $internalField;
+    }
+    walls
+    {
+        type            kqRWallFunction;
+        value           $internalField;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/nut.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/nut.gas
new file mode 100644
index 0000000000000000000000000000000000000000..634a29a38b52f4f3c7cb531a1294caea3057c86a
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/nut.gas
@@ -0,0 +1,41 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      nut;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 2 -1 0 0 0 0];
+
+internalField   uniform 1e-8;
+
+boundaryField
+{
+    inlet
+    {
+        type            calculated;
+        value           $internalField;
+    }
+    outlet
+    {
+        type            calculated;
+        value           $internalField;
+    }
+    walls
+    {
+        type            nutkWallFunction;
+        value           $internalField;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/p b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/p
new file mode 100644
index 0000000000000000000000000000000000000000..961771c727970e5d5259b913d2531a44f025a70f
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/p
@@ -0,0 +1,40 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      p;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions          [ 1 -1 -2 0 0 0 0 ];
+
+internalField       uniform 1e5;
+
+boundaryField
+{
+    inlet
+    {
+        type               calculated;
+        value              $internalField;
+    }
+    outlet
+    {
+        type               calculated;
+        value              $internalField;
+    }
+    walls
+    {
+        type               calculated;
+        value              $internalField;
+    }
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/p_rgh b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/p_rgh
new file mode 100644
index 0000000000000000000000000000000000000000..c816028aaf34844b1f6bd2ec1e3460f9dac8ac29
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/p_rgh
@@ -0,0 +1,40 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      p_rgh;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions          [ 1 -1 -2 0 0 0 0 ];
+
+internalField       uniform 1e5;
+
+boundaryField
+{
+    inlet
+    {
+        type               fixedFluxPressure;
+        value              $internalField;
+    }
+    outlet
+    {
+        type               fixedValue;
+        value              $internalField;
+    }
+    walls
+    {
+        type               fixedFluxPressure;
+        value              $internalField;
+    }
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/chemistryProperties.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/chemistryProperties.gas
new file mode 100644
index 0000000000000000000000000000000000000000..0e9eb6b63b92601dc5082292ae73442e3f15c49a
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/chemistryProperties.gas
@@ -0,0 +1,41 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      chemistryProperties.gas;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+chemistryType
+{
+    chemistrySolver   EulerImplicit;
+    chemistryThermo   rho;
+}
+
+chemistry           on;
+
+initialChemicalTimeStep 1e-07;
+
+EulerImplicitCoeffs
+{
+    cTauChem        1;
+    equilibriumRateLimiter off;
+}
+
+odeCoeffs
+{
+    solver          Rosenbrock43;
+    absTol          1e-12;
+    relTol          0.01;
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/combustionProperties.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/combustionProperties.gas
new file mode 100644
index 0000000000000000000000000000000000000000..94555a9a7b2f16f4ef2ceebb306257d6c21701a2
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/combustionProperties.gas
@@ -0,0 +1,37 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      combustionProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+combustionModel    PaSR<rhoChemistryCombustion>;
+
+active  true;
+
+laminarCoeffs
+{
+}
+
+noCombustionCoeffs
+{
+}
+
+PaSRCoeffs
+{
+    Cmix                1.0;
+    turbulentReaction   yes;
+    useReactionRate     true;
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/g b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/g
new file mode 100644
index 0000000000000000000000000000000000000000..0cc222ca3457ed24bf9753d0926fbee84359e624
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/g
@@ -0,0 +1,22 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       uniformDimensionedVectorField;
+    location    "constant";
+    object      g;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -2 0 0 0 0];
+value           (0 -9.81 0);
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/phaseProperties b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/phaseProperties
new file mode 100644
index 0000000000000000000000000000000000000000..80179162ba1e658ca5dbe2d582f2459a0e18df44
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/phaseProperties
@@ -0,0 +1,219 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      phaseProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+type    heatMassAndMomentumTransferTwoPhaseSystem;
+
+phases (gas liquid);
+
+gas
+{
+    type            reactingPhaseModel;
+    diameterModel   isothermal;
+    isothermalCoeffs
+    {
+        d0              3e-3;
+        p0              1e5;
+    }
+    Sc              0.7;
+
+    residualAlpha   1e-6;
+}
+
+liquid
+{
+    type            purePhaseModel;
+    diameterModel   constant;
+    constantCoeffs
+    {
+        d               1e-4;
+    }
+
+    residualAlpha   1e-6;
+}
+
+blending
+{
+    default
+    {
+        type            linear;
+        minFullyContinuousAlpha.gas 0.7;
+        minPartlyContinuousAlpha.gas 0.5;
+        minFullyContinuousAlpha.liquid 0.7;
+        minPartlyContinuousAlpha.liquid 0.5;
+    }
+
+    heatTransfer
+    {
+        type            linear;
+        minFullyContinuousAlpha.gas 1;
+        minPartlyContinuousAlpha.gas 0;
+        minFullyContinuousAlpha.liquid 1;
+        minPartlyContinuousAlpha.liquid 0;
+    }
+
+    massTransfer
+    {
+        type            linear;
+        minFullyContinuousAlpha.gas 1;
+        minPartlyContinuousAlpha.gas 0;
+        minFullyContinuousAlpha.liquid 1;
+        minPartlyContinuousAlpha.liquid 0;
+    }
+}
+
+surfaceTension
+(
+    (gas and liquid)
+    {
+        type            constant;
+        sigma           0.07;
+    }
+);
+
+aspectRatio
+(
+    (gas in liquid)
+    {
+        type            constant;
+        E0              1.0;
+    }
+
+    (liquid in gas)
+    {
+        type            constant;
+        E0              1.0;
+    }
+);
+
+drag
+(
+    (gas in liquid)
+    {
+        type            SchillerNaumann;
+        residualRe      1e-3;
+        swarmCorrection
+        {
+            type        none;
+        }
+    }
+
+    (liquid in gas)
+    {
+        type            SchillerNaumann;
+        residualRe      1e-3;
+        swarmCorrection
+        {
+            type        none;
+        }
+    }
+);
+
+virtualMass
+(
+    (gas in liquid)
+    {
+        type            constantCoefficient;
+        Cvm             0.5;
+    }
+
+    (liquid in gas)
+    {
+        type            constantCoefficient;
+        Cvm             0.5;
+    }
+);
+
+interfaceComposition
+(
+    (gas in liquid)
+    {
+        type Saturated;
+        species ( H2O );
+        Le 1.0;
+        saturationPressure
+        {
+            type ArdenBuck;
+        }
+    }
+);
+
+heatTransfer.gas
+(
+    (gas in liquid)
+    {
+        type spherical;
+        residualAlpha 1e-4;
+    }
+
+    (liquid in gas)
+    {
+        type RanzMarshall;
+        residualAlpha 1e-4;
+    }
+);
+
+heatTransfer.liquid
+(
+    (gas in liquid)
+    {
+        type RanzMarshall;
+        residualAlpha 1e-4;
+    }
+
+    (liquid in gas)
+    {
+        type spherical;
+        residualAlpha 1e-4;
+    }
+);
+
+massTransfer.gas
+(
+    (gas in liquid)
+    {
+        type spherical;
+        Le 1.0;
+    }
+
+    (liquid in gas)
+    {
+        type Frossling;
+        Le 1.0;
+    }
+);
+
+massTransfer.liquid
+(
+);
+
+lift
+(
+);
+
+wallLubrication
+(
+);
+
+turbulentDispersion
+(
+);
+
+// Minimum allowable pressure
+pMin            10000;
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/polyMesh/boundary b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/polyMesh/boundary
new file mode 100644
index 0000000000000000000000000000000000000000..4564ccc46a64685c98cc53274688263dee85086a
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/polyMesh/boundary
@@ -0,0 +1,48 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       polyBoundaryMesh;
+    location    "constant/polyMesh";
+    object      boundary;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+4
+(
+    inlet
+    {
+        type            patch;
+        nFaces          25;
+        startFace       3650;
+    }
+    outlet
+    {
+        type            patch;
+        nFaces          25;
+        startFace       3675;
+    }
+    walls
+    {
+        type            wall;
+        inGroups        1(wall);
+        nFaces          150;
+        startFace       3700;
+    }
+    defaultFaces
+    {
+        type            empty;
+        inGroups        1(empty);
+        nFaces          3750;
+        startFace       3850;
+    }
+)
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/reactions.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/reactions.gas
new file mode 100644
index 0000000000000000000000000000000000000000..a99cb12d887daf1f4e10d7c8d2f4e207b58d40bb
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/reactions.gas
@@ -0,0 +1,22 @@
+species
+(
+    CO
+    CO2
+    H2
+    H2O
+    AIR
+);
+
+reactions
+{
+    waterGasShift
+    {
+        type        reversibleArrheniusReaction;
+
+        reaction    "CO^0.93 + H2O^0.24 = CO2^0.69 + H2^1";
+
+        A           1e8;
+        beta        0.86;
+        Ta          1e4;
+    }
+}
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/thermo.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/thermo.gas
new file mode 100644
index 0000000000000000000000000000000000000000..dde77f08718b9e92919be8d3f2afa4f233dd7a03
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/thermo.gas
@@ -0,0 +1,109 @@
+CO
+{
+    specie
+    {
+        nMoles          1;
+        molWeight       28.0106;
+    }
+    thermodynamics
+    {
+        Tlow            200;
+        Thigh           3500;
+        Tcommon         1000;
+        highCpCoeffs    ( 2.71519 0.00206253 -9.98826e-07 2.30053e-10 -2.03648e-14 -14151.9 7.81869 );
+        lowCpCoeffs     ( 3.57953 -0.000610354 1.01681e-06 9.07006e-10 -9.04424e-13 -14344.1 3.50841 );
+    }
+    transport
+    {
+        As              1.67212e-06;
+        Ts              170.672;
+    }
+}
+
+CO2
+{
+    specie
+    {
+        nMoles          1;
+        molWeight       44.01;
+    }
+    thermodynamics
+    {
+        Tlow            200;
+        Thigh           3500;
+        Tcommon         1000;
+        highCpCoeffs    ( 3.85746 0.00441437 -2.21481e-06 5.2349e-10 -4.72084e-14 -48759.2 2.27164 );
+        lowCpCoeffs     ( 2.35677 0.0089846 -7.12356e-06 2.45919e-09 -1.437e-13 -48372 9.90105 );
+    }
+    transport
+    {
+        As              1.67212e-06;
+        Ts              170.672;
+    }
+}
+
+H2
+{
+    specie
+    {
+        nMoles          1;
+        molWeight       2.01594;
+    }
+    thermodynamics
+    {
+        Tlow            200;
+        Thigh           3500;
+        Tcommon         1000;
+        highCpCoeffs    ( 3.33728 -4.94025e-05 4.99457e-07 -1.79566e-10 2.00255e-14 -950.159 -3.20502 );
+        lowCpCoeffs     ( 2.34433 0.00798052 -1.94782e-05 2.01572e-08 -7.37612e-12 -917.935 0.68301 );
+    }
+    transport
+    {
+        As              1.67212e-06;
+        Ts              170.672;
+    }
+}
+
+H2O
+{
+    specie
+    {
+        nMoles          1;
+        molWeight       18.0153;
+    }
+    thermodynamics
+    {
+        Tlow            200;
+        Thigh           3500;
+        Tcommon         1000;
+        highCpCoeffs    ( 3.03399 0.00217692 -1.64073e-07 -9.7042e-11 1.68201e-14 -30004.3 4.96677 );
+        lowCpCoeffs     ( 4.19864 -0.00203643 6.5204e-06 -5.48797e-09 1.77198e-12 -30293.7 -0.849032 );
+    }
+    transport
+    {
+        As              1.67212e-06;
+        Ts              170.672;
+    }
+}
+
+AIR
+{
+    specie
+    {
+        nMoles          1;
+        molWeight       28.9596;
+    }
+    thermodynamics
+    {
+        Tlow            200;
+        Thigh           3500;
+        Tcommon         1000;
+        highCpCoeffs    ( 3.57304 -7.24383e-04 1.67022e-06 -1.26501e-10 -4.20580e-13 -1047.41 3.12431 );
+        lowCpCoeffs     ( 3.09589 1.22835e-03 -4.14267e-07 6.56910e-11 -3.87021e-15 -983.191 5.34161 );
+    }
+    transport
+    {
+        As              1.67212e-06;
+        Ts              170.672;
+    }
+}
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/thermophysicalProperties.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/thermophysicalProperties.gas
new file mode 100644
index 0000000000000000000000000000000000000000..a06d0f8ddb5cc5043be6ce00d713b15ed5e640b9
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/thermophysicalProperties.gas
@@ -0,0 +1,38 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      thermophysicalProperties.gas;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+thermoType
+{
+    type            heRhoThermo;
+    mixture         reactingMixture;
+    transport       sutherland;
+    thermo          janaf;
+    equationOfState perfectGas;
+    specie          specie;
+    energy          sensibleInternalEnergy;
+}
+
+inertSpecie AIR;
+
+chemistryReader foamChemistryReader;
+
+foamChemistryFile "$FOAM_CASE/constant/reactions.gas";
+
+foamChemistryThermoFile "$FOAM_CASE/constant/thermo.gas";
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/thermophysicalProperties.liquid b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/thermophysicalProperties.liquid
new file mode 100644
index 0000000000000000000000000000000000000000..90073f75ef8b6546f2eddc9643dd6717531bc017
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/thermophysicalProperties.liquid
@@ -0,0 +1,86 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      thermophysicalProperties.liquid;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+thermoType
+{
+    type            heRhoThermo;
+    mixture         pureMixture;
+    transport       const;
+    thermo          hConst;
+    equationOfState perfectFluid;
+    specie          specie;
+    energy          sensibleInternalEnergy;
+}
+
+species
+(
+    AIR
+    H2O
+);
+
+inertSpecie H2O;
+
+"(mixture|H2O)"
+{
+    specie
+    {
+        nMoles          1;
+        molWeight       18.0153;
+    }
+    equationOfState
+    {
+        R           3000;
+        rho0        1027;
+    }
+    thermodynamics
+    {
+        Hf          -1.5879e+07;
+        Cp          4195;
+    }
+    transport
+    {
+        mu          3.645e-4;
+        Pr          2.289;
+    }
+}
+
+AIR
+{
+    specie
+    {
+        nMoles      1;
+        molWeight   28.9;
+    }
+    equationOfState
+    {
+        R           3000;
+        rho0        1027;
+    }
+    thermodynamics
+    {
+        Hf          0;
+        Cp          4195;
+    }
+    transport
+    {
+        mu          3.645e-4;
+        Pr          2.289;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/turbulenceProperties.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/turbulenceProperties.gas
new file mode 100644
index 0000000000000000000000000000000000000000..fc0ab32ee84188b3647c95bdf1cee524481d2878
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/turbulenceProperties.gas
@@ -0,0 +1,28 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      turbulenceProperties.gas;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+simulationType  RAS;
+
+RAS
+{
+    RASModel kEpsilon;
+
+    turbulence on;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/turbulenceProperties.liquid b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/turbulenceProperties.liquid
new file mode 100644
index 0000000000000000000000000000000000000000..8a2a00b53a88aa00c567160859e6a016a98457b8
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/turbulenceProperties.liquid
@@ -0,0 +1,20 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      turbulenceProperties.liquid;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+simulationType  laminar;
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/system/blockMeshDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/system/blockMeshDict
new file mode 100644
index 0000000000000000000000000000000000000000..d03967afdc2ccf7afbecdf32d50159c309a475e3
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/system/blockMeshDict
@@ -0,0 +1,61 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      blockMeshDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+convertToMeters 1;
+
+vertices
+(
+    (0 0 0)
+    (0.15 0 0)
+    (0.15 1 0)
+    (0 1 0)
+    (0 0 0.1)
+    (0.15 0 0.1)
+    (0.15 1 0.1)
+    (0 1 0.1)
+);
+
+blocks
+(
+    hex (0 1 2 3 4 5 6 7) (25 75 1) simpleGrading (1 1 1)
+);
+
+edges
+(
+);
+
+patches
+(
+    patch inlet
+    (
+        (1 5 4 0)
+    )
+    patch outlet
+    (
+        (3 7 6 2)
+    )
+    wall walls
+    (
+        (0 4 7 3)
+        (2 6 5 1)
+    )
+);
+
+mergePatchPairs
+(
+);
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/system/controlDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/system/controlDict
new file mode 100644
index 0000000000000000000000000000000000000000..3414324b79e1df863da8615df36aac297bbc7fc1
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/system/controlDict
@@ -0,0 +1,55 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      controlDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+application     reactingTwoPhaseEulerFoam;
+
+startFrom       startTime;
+
+startTime       0;
+
+stopAt          endTime;
+
+endTime         100;
+
+deltaT          0.001;
+
+writeControl    runTime;
+
+writeInterval   1;
+
+purgeWrite      0;
+
+writeFormat     ascii;
+
+writePrecision  10;
+
+writeCompression uncompressed;
+
+timeFormat      general;
+
+timePrecision   6;
+
+runTimeModifiable yes;
+
+adjustTimeStep  no;
+
+maxCo           0.5;
+
+maxDeltaT       1;
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/system/decomposeParDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/system/decomposeParDict
new file mode 100644
index 0000000000000000000000000000000000000000..c98c387d4e61a201cae6268349ee3aefb08e66e7
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/system/decomposeParDict
@@ -0,0 +1,29 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    note        "mesh decomposition control dictionary";
+    object      decomposeParDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+numberOfSubdomains  6;
+
+method          hierarchical;
+
+hierarchicalCoeffs
+{
+    n           (1 6 1);
+    delta       0.001;
+    order       xyz;
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/system/fvSchemes b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/system/fvSchemes
new file mode 100644
index 0000000000000000000000000000000000000000..295452d60010d6eb1c5a442a5be6ff423a2fbad3
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/system/fvSchemes
@@ -0,0 +1,76 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      fvSchemes;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ddtSchemes
+{
+    default         Euler;
+}
+
+gradSchemes
+{
+    default         Gauss linear;
+}
+
+divSchemes
+{
+    default                         none;
+
+    "div\(phi,alpha.*\)"            Gauss vanLeer;
+    "div\(phir,alpha.*\)"           Gauss vanLeer;
+
+    "div\(alphaRhoPhi.*,U.*\)"      Gauss limitedLinearV 1;
+    "div\(phi.*,U.*\)"              Gauss limitedLinearV 1;
+
+    "div\(alphaRhoPhi.*,Yi\)"       Gauss limitedLinear 1;
+    "div\(alphaRhoPhi.*,(h|e).*\)"  Gauss limitedLinear 1;
+    "div\(alphaRhoPhi.*,K.*\)"      Gauss limitedLinear 1;
+    "div\(alphaPhi.*,p\)"           Gauss limitedLinear 1;
+
+    "div\(alphaRhoPhi.*,(k|epsilon).*\)"  Gauss limitedLinear 1;
+    "div\(phim,(k|epsilon)m\)"      Gauss limitedLinear 1;
+
+    "div\(\(\(\(alpha.*\*thermo:rho.*\)\*nuEff.*\)\*dev2\(T\(grad\(U.*\)\)\)\)\)" Gauss linear;
+}
+
+laplacianSchemes
+{
+    default         Gauss linear uncorrected;
+}
+
+interpolationSchemes
+{
+    default         linear;
+}
+
+snGradSchemes
+{
+    default         uncorrected;
+}
+
+fluxRequired
+{
+    default         no;
+    p_rgh;
+}
+
+wallDist
+{
+    method          meshWave;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/system/fvSolution b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/system/fvSolution
new file mode 100644
index 0000000000000000000000000000000000000000..a629762abaf72cda6e99779b1ee1e9351b114d24
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/system/fvSolution
@@ -0,0 +1,101 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      fvSolution;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+solvers
+{
+    "alpha.*"
+    {
+        nAlphaCorr      1;
+        nAlphaSubCycles 3;
+    }
+
+    p_rgh
+    {
+        solver          GAMG;
+        smoother        DIC;
+        nPreSweeps      0;
+        nPostSweeps     2;
+        nFinestSweeps   2;
+        cacheAgglomeration true;
+        nCellsInCoarsestLevel 10;
+        agglomerator    faceAreaPair;
+        mergeLevels     1;
+        tolerance       1e-11;
+        relTol          0.001;
+    }
+
+    p_rghFinal
+    {
+        $p_rgh;
+        relTol          0;
+    }
+
+    "U.*"
+    {
+        solver          smoothSolver;
+        smoother        symGaussSeidel;
+        tolerance       1e-12;
+        relTol          0;
+        minIter         1;
+    }
+
+    "(e|h).*"
+    {
+        solver          smoothSolver;
+        smoother        symGaussSeidel;
+        tolerance       1e-12;
+        relTol          0;
+        minIter         1;
+    }
+
+    "(k|epsilon|Theta).*"
+    {
+        solver          smoothSolver;
+        smoother        symGaussSeidel;
+        tolerance       1e-12;
+        relTol          0;
+        minIter         1;
+    }
+
+    Yi
+    {
+        solver          smoothSolver;
+        smoother        symGaussSeidel;
+        tolerance       1e-12;
+        relTol          0;
+        minIter         1;
+        residualAlpha   1e-8;
+    }
+}
+
+PIMPLE
+{
+    nOuterCorrectors 5;
+    nCorrectors      1;
+    nNonOrthogonalCorrectors 0;
+}
+
+relaxationFactors
+{
+    equations
+    {
+        ".*"            1;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/system/setFieldsDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/system/setFieldsDict
new file mode 100644
index 0000000000000000000000000000000000000000..8afdc29c84e91a4befec79469440bab19940af46
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/system/setFieldsDict
@@ -0,0 +1,38 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      setFieldsDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+defaultFieldValues
+(
+    volScalarFieldValue alpha.gas 1
+    volScalarFieldValue alpha.liquid 0
+);
+
+regions
+(
+    boxToCell
+    {
+        box (0 0 0) (0.15 0.501 0.1);
+        fieldValues
+        (
+            volScalarFieldValue alpha.gas 0.01
+            volScalarFieldValue alpha.liquid 0.99
+        );
+    }
+);
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/T.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/T.air
new file mode 100644
index 0000000000000000000000000000000000000000..de0ac66f78009070f3e2aaba4c8b5a4b79bc9f6b
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/T.air
@@ -0,0 +1,48 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      T.air;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions          [0 0 0 1 0 0 0];
+
+internalField       uniform 600;
+
+boundaryField
+{
+    inlet
+    {
+        type               fixedValue;
+        value              uniform 300;
+    }
+
+    outlet
+    {
+        type               inletOutlet;
+        phi                phi.air;
+        inletValue         uniform 300;
+        value              uniform 300;
+    }
+
+    walls
+    {
+        type               zeroGradient;
+    }
+
+    frontAndBackPlanes
+    {
+        type               empty;
+    }
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/T.particles b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/T.particles
new file mode 100644
index 0000000000000000000000000000000000000000..58313dfb2b5c6f5d87e45ee056240033c9e61406
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/T.particles
@@ -0,0 +1,44 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      T.particles;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions          [0 0 0 1 0 0 0];
+
+internalField       uniform 600;
+
+boundaryField
+{
+    inlet
+    {
+        type               zeroGradient;
+    }
+
+    outlet
+    {
+        type               zeroGradient;
+    }
+
+    walls
+    {
+        type               zeroGradient;
+    }
+
+    frontAndBackPlanes
+    {
+        type               empty;
+    }
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/Theta.particles b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/Theta.particles
new file mode 100644
index 0000000000000000000000000000000000000000..c9b385ccd8b7ceba80aa3332b0c25b85d8328566
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/Theta.particles
@@ -0,0 +1,47 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      Theta.particles;
+}
+// ************************************************************************* //
+
+dimensions          [ 0 2 -2 0 0 0 0 ];
+
+internalField       uniform 0;
+
+referenceLevel      1e-4;
+
+boundaryField
+{
+    inlet
+    {
+        type               fixedValue;
+        value              uniform 1e-4;
+    }
+
+    outlet
+    {
+        type               zeroGradient;
+    }
+
+    walls
+    {
+        type               zeroGradient;
+    }
+
+    frontAndBackPlanes
+    {
+        type               empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/U.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/U.air
new file mode 100644
index 0000000000000000000000000000000000000000..a9af55993e23ff26e112eb927135b6667f7d6f45
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/U.air
@@ -0,0 +1,50 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volVectorField;
+    object      U.air;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -1 0 0 0 0];
+
+internalField   uniform (0 0.25 0);
+
+boundaryField
+{
+    inlet
+    {
+        type               interstitialInletVelocity;
+        inletVelocity      uniform (0 0.25 0);
+        alpha              alpha.air;
+        value              $internalField;
+    }
+
+    outlet
+    {
+        type               pressureInletOutletVelocity;
+        phi                phi.air;
+        value              $internalField;
+    }
+
+    walls
+    {
+        type            fixedValue;
+        value           uniform (0 0 0);
+    }
+
+    frontAndBackPlanes
+    {
+        type               empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/U.particles b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/U.particles
new file mode 100644
index 0000000000000000000000000000000000000000..fa0397ae355df01d3b11bdd17eda31f4c5ed636a
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/U.particles
@@ -0,0 +1,47 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volVectorField;
+    object      U.particles;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -1 0 0 0 0];
+
+internalField   uniform (0 0 0);
+
+boundaryField
+{
+    inlet
+    {
+        type               fixedValue;
+        value              uniform (0 0 0);
+    }
+
+    outlet
+    {
+        type               fixedValue;
+        value              uniform (0 0 0);
+    }
+
+    walls
+    {
+        type               fixedValue;
+        value              uniform (0 0 0);
+    }
+
+    frontAndBackPlanes
+    {
+        type               empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/alpha.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/alpha.air
new file mode 100644
index 0000000000000000000000000000000000000000..288160cdf0cb17779eea8e5a9edaf82b5724b03d
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/alpha.air
@@ -0,0 +1,6047 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      alpha.air;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   nonuniform List<scalar>
+6000
+(
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+0.45
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+)
+;
+
+boundaryField
+{
+    inlet
+    {
+        type            zeroGradient;
+    }
+    outlet
+    {
+        type            zeroGradient;
+    }
+    walls
+    {
+        type            zeroGradient;
+    }
+    frontAndBackPlanes
+    {
+        type            empty;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/alpha.air.org b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/alpha.air.org
new file mode 100644
index 0000000000000000000000000000000000000000..6292e5ffc082798b8a816da47d97b8c41b755c61
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/alpha.air.org
@@ -0,0 +1,44 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      alpha.air;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    inlet
+    {
+        type            zeroGradient;
+    }
+
+    outlet
+    {
+        type            zeroGradient;
+    }
+
+    walls
+    {
+        type            zeroGradient;
+    }
+
+    frontAndBackPlanes
+    {
+        type            empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/alpha.particles b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/alpha.particles
new file mode 100644
index 0000000000000000000000000000000000000000..cf55161b4a5c380ee0bd2ce31687f4af99e2cd5d
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/alpha.particles
@@ -0,0 +1,6047 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      alpha.particles;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   nonuniform List<scalar>
+6000
+(
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+)
+;
+
+boundaryField
+{
+    inlet
+    {
+        type            zeroGradient;
+    }
+    outlet
+    {
+        type            zeroGradient;
+    }
+    walls
+    {
+        type            zeroGradient;
+    }
+    frontAndBackPlanes
+    {
+        type            empty;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/alpha.particles.org b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/alpha.particles.org
new file mode 100644
index 0000000000000000000000000000000000000000..b28a5a97d9b1034a39925ead65f04cd371860b89
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/alpha.particles.org
@@ -0,0 +1,44 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      alpha.particles;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    inlet
+    {
+        type            zeroGradient;
+    }
+
+    outlet
+    {
+        type            zeroGradient;
+    }
+
+    walls
+    {
+        type            zeroGradient;
+    }
+
+    frontAndBackPlanes
+    {
+        type            empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/epsilon.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/epsilon.air
new file mode 100644
index 0000000000000000000000000000000000000000..0b5f62a356b3f5a9ce5db5401e0b4f29bc1e4fc9
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/epsilon.air
@@ -0,0 +1,49 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      epsilon.air;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions          [0 2 -3 0 0 0 0];
+
+internalField       uniform 10;
+
+boundaryField
+{
+    inlet
+    {
+        type               fixedValue;
+        value              $internalField;
+    }
+
+    outlet
+    {
+        type               inletOutlet;
+        phi                phi.air;
+        inletValue         $internalField;
+        value              $internalField;
+    }
+
+    walls
+    {
+        type               epsilonWallFunction;
+        value              $internalField;
+    }
+
+    frontAndBackPlanes
+    {
+        type               empty;
+    }
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/k.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/k.air
new file mode 100644
index 0000000000000000000000000000000000000000..307a3495c9352c23273259a2af606fb730e96d63
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/k.air
@@ -0,0 +1,49 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      k.air;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions          [0 2 -2 0 0 0 0];
+
+internalField       uniform 1;
+
+boundaryField
+{
+    inlet
+    {
+        type               fixedValue;
+        value              $internalField;
+    }
+
+    outlet
+    {
+        type               inletOutlet;
+        phi                phi.air;
+        inletValue         $internalField;
+        value              $internalField;
+    }
+
+    walls
+    {
+        type               kqRWallFunction;
+        value              $internalField;
+    }
+
+    frontAndBackPlanes
+    {
+        type               empty;
+    }
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/nut.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/nut.air
new file mode 100644
index 0000000000000000000000000000000000000000..dcb65148ae4e0675d7368e0bea77ff0db7f72e60
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/nut.air
@@ -0,0 +1,47 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      nut.air;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions          [0 2 -1 0 0 0 0];
+
+internalField       uniform 0;
+
+boundaryField
+{
+    inlet
+    {
+        type               calculated;
+        value              $internalField;
+    }
+
+    outlet
+    {
+        type               calculated;
+        value              $internalField;
+    }
+
+    walls
+    {
+        type               nutkWallFunction;
+        value              $internalField;
+    }
+
+    frontAndBackPlanes
+    {
+        type               empty;
+    }
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/nut.particles b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/nut.particles
new file mode 100644
index 0000000000000000000000000000000000000000..6264a273f79124da66e26f9f2edf102259ac0874
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/nut.particles
@@ -0,0 +1,47 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      nut.particles;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions          [0 2 -1 0 0 0 0];
+
+internalField       uniform 0;
+
+boundaryField
+{
+    inlet
+    {
+        type               calculated;
+        value              $internalField;
+    }
+
+    outlet
+    {
+        type               calculated;
+        value              $internalField;
+    }
+
+    walls
+    {
+        type               calculated;
+        value              $internalField;
+    }
+
+    frontAndBackPlanes
+    {
+        type               empty;
+    }
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/p b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/p
new file mode 100644
index 0000000000000000000000000000000000000000..b318305599bff814b53f4675657a19c68bde0061
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/p
@@ -0,0 +1,47 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      p;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions          [1 -1 -2 0 0 0 0];
+
+internalField       uniform 1e5;
+
+boundaryField
+{
+    inlet
+    {
+        type               calculated;
+        value              $internalField;
+    }
+
+    outlet
+    {
+        type               calculated;
+        value              $internalField;
+    }
+
+    walls
+    {
+        type               calculated;
+        value              $internalField;
+    }
+
+    frontAndBackPlanes
+    {
+        type               empty;
+    }
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/p_rgh b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/p_rgh
new file mode 100644
index 0000000000000000000000000000000000000000..383649e640bcc4e8c6b3b877e4415a79ef0a36d5
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/p_rgh
@@ -0,0 +1,47 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      p_rgh;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions          [1 -1 -2 0 0 0 0];
+
+internalField       uniform 1e5;
+
+boundaryField
+{
+    inlet
+    {
+        type               fixedFluxPressure;
+        value              $internalField;
+    }
+
+    outlet
+    {
+        type               fixedValue;
+        value              $internalField;
+    }
+
+    walls
+    {
+        type               fixedFluxPressure;
+        value              $internalField;
+    }
+
+    frontAndBackPlanes
+    {
+        type               empty;
+    }
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/g b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/g
new file mode 100644
index 0000000000000000000000000000000000000000..e0ac2653b5b370ad62f6770588121d30cac51627
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/g
@@ -0,0 +1,22 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       uniformDimensionedVectorField;
+    location    "constant";
+    object      g;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -2 0 0 0 0];
+value           ( 0 -9.81 0 );
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/phaseProperties b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/phaseProperties
new file mode 100644
index 0000000000000000000000000000000000000000..39a5e3d5df64b62367f5abf219b54a9d8d52ea84
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/phaseProperties
@@ -0,0 +1,114 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      phaseProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+type    heatAndMomentumTransferTwoPhaseSystem;
+
+phases (particles air);
+
+particles
+{
+    type          purePhaseModel;
+
+    diameterModel constant;
+    constantCoeffs
+    {
+        d               3e-4;
+    }
+
+    alphaMax        0.62;
+    residualAlpha   1e-6;
+}
+
+air
+{
+    type          purePhaseModel;
+
+    diameterModel constant;
+    constantCoeffs
+    {
+        d               1;
+    }
+
+    residualAlpha   0;
+}
+
+blending
+{
+    default
+    {
+        type            none;
+        continuousPhase air;
+    }
+}
+
+surfaceTension
+(
+    (air and particles)
+    {
+        type            constant;
+        sigma           0;
+    }
+);
+
+
+aspectRatio
+(
+);
+
+drag
+(
+    (particles in air)
+    {
+        type            GidaspowErgunWenYu;
+        residualRe      1e-3;
+        swarmCorrection
+        {
+            type        none;
+        }
+    }
+);
+
+virtualMass
+(
+);
+
+heatTransfer
+(
+    (particles in air)
+    {
+        type            RanzMarshall;
+        residualAlpha   1e-4;
+    }
+);
+
+lift
+(
+);
+
+wallLubrication
+(
+);
+
+turbulentDispersion
+(
+);
+
+// Minimum allowable pressure
+pMin            10000;
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/polyMesh/boundary b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/polyMesh/boundary
new file mode 100644
index 0000000000000000000000000000000000000000..cda7f49514ca6f2afe27dc960bcbf3ee35d53cb5
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/polyMesh/boundary
@@ -0,0 +1,48 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       polyBoundaryMesh;
+    location    "constant/polyMesh";
+    object      boundary;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+4
+(
+    inlet
+    {
+        type            patch;
+        nFaces          30;
+        startFace       11770;
+    }
+    outlet
+    {
+        type            patch;
+        nFaces          30;
+        startFace       11800;
+    }
+    walls
+    {
+        type            wall;
+        inGroups        1(wall);
+        nFaces          400;
+        startFace       11830;
+    }
+    frontAndBackPlanes
+    {
+        type            empty;
+        inGroups        1(empty);
+        nFaces          12000;
+        startFace       12230;
+    }
+)
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/thermophysicalProperties.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/thermophysicalProperties.air
new file mode 100644
index 0000000000000000000000000000000000000000..befc0aeae449cccc50a24e955083b88b914aba67
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/thermophysicalProperties.air
@@ -0,0 +1,49 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      thermophysicalProperties.air;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+thermoType
+{
+    type            heRhoThermo;
+    mixture         pureMixture;
+    transport       const;
+    thermo          hConst;
+    equationOfState perfectGas;
+    specie          specie;
+    energy          sensibleInternalEnergy;
+}
+
+mixture
+{
+    specie
+    {
+        nMoles      1;
+        molWeight   28.9;
+    }
+    thermodynamics
+    {
+        Cp          1007;
+        Hf          0;
+    }
+    transport
+    {
+        mu          1.84e-05;
+        Pr          0.7;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/thermophysicalProperties.particles b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/thermophysicalProperties.particles
new file mode 100644
index 0000000000000000000000000000000000000000..7508b70aa3194312b37a36e71753f74b9cf76166
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/thermophysicalProperties.particles
@@ -0,0 +1,53 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      thermophysicalProperties.particles;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+thermoType
+{
+    type            heRhoThermo;
+    mixture         pureMixture;
+    transport       const;
+    thermo          hConst;
+    equationOfState rhoConst;
+    specie          specie;
+    energy          sensibleInternalEnergy;
+}
+
+mixture
+{
+    specie
+    {
+        nMoles      1;
+        molWeight   100;
+    }
+    equationOfState
+    {
+        rho         2500;
+    }
+    thermodynamics
+    {
+        Cp          6000;
+        Hf          0;
+    }
+    transport
+    {
+        mu          0;
+        Pr          1;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/turbulenceProperties.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/turbulenceProperties.air
new file mode 100644
index 0000000000000000000000000000000000000000..d702f90d3b0338160b0d74e1675fc3661e73bf7d
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/turbulenceProperties.air
@@ -0,0 +1,44 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      turbulenceProperties.air;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+simulationType  RAS;
+
+RAS
+{
+    RASModel kEpsilon;
+
+    turbulence      on;
+    printCoeffs     on;
+}
+
+LES
+{
+    LESModel Smagorinsky;
+
+    turbulence      on;
+    printCoeffs     on;
+
+    delta cubeRootVol;
+
+    cubeRootVolCoeffs
+    {
+        deltaCoeff 1;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/turbulenceProperties.particles b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/turbulenceProperties.particles
new file mode 100644
index 0000000000000000000000000000000000000000..6a26e64e58677d6a44754a4fd4a724d55fd2c5c1
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/turbulenceProperties.particles
@@ -0,0 +1,62 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      turbulenceProperties.particles;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+simulationType  RAS;
+
+RAS
+{
+    RASModel kineticTheory;
+
+    turbulence      on;
+    printCoeffs     on;
+
+    kineticTheoryCoeffs
+    {
+        equilibrium             off;
+
+        e                       0.8;
+        alphaMax                0.62;
+        alphaMinFriction        0.5;
+        residualAlpha           1e-4;
+
+        viscosityModel          Gidaspow;
+        conductivityModel       Gidaspow;
+        granularPressureModel   Lun;
+        frictionalStressModel   JohnsonJackson;
+        radialModel             SinclairJackson;
+
+        JohnsonJacksonCoeffs
+        {
+            Fr                      0.05;
+            eta                     2;
+            p                       5;
+            phi                     28.5;
+            alphaDeltaMin           0.05;
+        }
+    }
+
+    phasePressureCoeffs
+    {
+        preAlphaExp     500;
+        expMax          1000;
+        alphaMax        0.62;
+        g0              1000;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/system/blockMeshDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/system/blockMeshDict
new file mode 100644
index 0000000000000000000000000000000000000000..900f5a585b8a3abd2fd564c7b949035e390640ea
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/system/blockMeshDict
@@ -0,0 +1,66 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      blockMeshDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+convertToMeters 1;
+
+vertices
+(
+    (0 0 -0.01)
+    (0.15 0 -0.01)
+    (0.15 1 -0.01)
+    (0 1 -0.01)
+    (0 0 0.01)
+    (0.15 0 0.01)
+    (0.15 1 0.01)
+    (0 1 0.01)
+);
+
+blocks
+(
+    hex (0 1 2 3 4 5 6 7) (30 200 1) simpleGrading (1 1 1)
+);
+
+edges
+(
+);
+
+patches
+(
+    patch inlet
+    (
+        (1 5 4 0)
+    )
+    patch outlet
+    (
+        (3 7 6 2)
+    )
+    wall walls
+    (
+        (0 4 7 3)
+        (2 6 5 1)
+    )
+    empty frontAndBackPlanes
+    (
+        (0 3 2 1)
+        (4 5 6 7)
+    )
+);
+
+mergePatchPairs
+(
+);
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/system/controlDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/system/controlDict
new file mode 100644
index 0000000000000000000000000000000000000000..fbbdb761cad4164f446cdf35f845d9611743ef65
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/system/controlDict
@@ -0,0 +1,95 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      controlDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+application     reactingTwoPhaseEulerFoam;
+
+startFrom       startTime;
+
+startTime       0;
+
+stopAt          endTime;
+
+endTime         2;
+
+deltaT          0.0002;
+
+writeControl    runTime;
+
+writeInterval   0.01;
+
+purgeWrite      0;
+
+writeFormat     ascii;
+
+writePrecision  6;
+
+writeCompression uncompressed;
+
+timeFormat      general;
+
+timePrecision   6;
+
+runTimeModifiable on;
+
+adjustTimeStep  no;
+
+maxCo           0.9;
+
+maxDeltaT       1e-05;
+
+functions
+{
+    fieldAverage1
+    {
+        type            fieldAverage;
+        functionObjectLibs ( "libfieldFunctionObjects.so" );
+        outputControl   outputTime;
+        fields
+        (
+            U.particles
+            {
+                 mean        on;
+                 prime2Mean  off;
+                 base        time;
+            }
+
+            U.air
+            {
+                 mean        on;
+                 prime2Mean  off;
+                 base        time;
+            }
+
+            alpha.particles
+            {
+                 mean        on;
+                 prime2Mean  off;
+                 base        time;
+            }
+
+            p
+            {
+                 mean        on;
+                 prime2Mean  off;
+                 base        time;
+            }
+        );
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/system/fvSchemes b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/system/fvSchemes
new file mode 100644
index 0000000000000000000000000000000000000000..e859411a19e49261a3d56fba819bc2289b32af0e
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/system/fvSchemes
@@ -0,0 +1,81 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      fvSchemes;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ddtSchemes
+{
+    default     Euler;
+}
+
+gradSchemes
+{
+    default     Gauss linear;
+}
+
+divSchemes
+{
+    default                         none;
+
+    "div\(phi,alpha.*\)"            Gauss vanLeer;
+    "div\(phir,alpha.*\)"           Gauss vanLeer;
+
+    "div\(alphaRhoPhi.*,U.*\)"      Gauss limitedLinearV 1;
+    "div\(phi.*,U.*\)"              Gauss limitedLinearV 1;
+
+    "div\(alphaRhoPhi.*,(h|e).*\)"  Gauss limitedLinear 1;
+    "div\(alphaRhoPhi.*,K.*\)"      Gauss limitedLinear 1;
+    "div\(alphaPhi.*,p\)"           Gauss limitedLinear 1;
+
+    div(alphaRhoPhi.particles,Theta.particles) Gauss limitedLinear 1;
+
+    "div\(alphaRhoPhi.*,(k|epsilon).*\)"  Gauss limitedLinear 1;
+
+    div((((alpha.air*thermo:rho.air)*nuEff.air)*dev2(T(grad(U.air))))) Gauss linear;
+
+    div((((thermo:rho.particles*nut.particles)*dev2(T(grad(U.particles))))+(((thermo:rho.particles*lambda.particles)*div(phi.particles))*I)))  Gauss linear;
+}
+
+laplacianSchemes
+{
+    default     Gauss linear uncorrected;
+    bounded     Gauss linear uncorrected;
+}
+
+interpolationSchemes
+{
+    default     linear;
+}
+
+snGradSchemes
+{
+    default     uncorrected;
+    bounded     uncorrected;
+}
+
+fluxRequired
+{
+    default     no;
+    p_rgh       ;
+    alpha.particles;
+}
+
+wallDist
+{
+    method      meshWave;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/system/fvSolution b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/system/fvSolution
new file mode 100644
index 0000000000000000000000000000000000000000..0965029f85a161e283e702aedaf24f3d33a6eae2
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/system/fvSolution
@@ -0,0 +1,108 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      fvSolution;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+solvers
+{
+    "alpha.*"
+    {
+        nAlphaCorr      1;
+        nAlphaSubCycles 2;
+        implicitPhasePressure yes;
+
+        solver          smoothSolver;
+        smoother        symGaussSeidel;
+        tolerance       1e-9;
+        relTol          0;
+        minIter         1;
+    }
+
+    p_rgh
+    {
+        solver          GAMG;
+        smoother        DIC;
+        nPreSweeps      0;
+        nPostSweeps     2;
+        nFinestSweeps   2;
+        cacheAgglomeration true;
+        nCellsInCoarsestLevel 10;
+        agglomerator    faceAreaPair;
+        mergeLevels     1;
+        tolerance       1e-8;
+        relTol          0.01;
+    }
+
+    p_rghFinal
+    {
+        $p_rgh;
+        relTol          0;
+    }
+
+    "U.*"
+    {
+        solver          smoothSolver;
+        smoother        symGaussSeidel;
+        tolerance       1e-5;
+        relTol          0;
+        minIter         1;
+    }
+
+    "(h|e).*"
+    {
+        solver          smoothSolver;
+        smoother        symGaussSeidel;
+        tolerance       1e-6;
+        relTol          0;
+        minIter         1;
+    }
+
+    "Theta.*"
+    {
+        solver          smoothSolver;
+        smoother        symGaussSeidel;
+        tolerance       1e-6;
+        relTol          0;
+        minIter         1;
+    }
+
+    "(k|epsilon).*"
+    {
+        solver          smoothSolver;
+        smoother        symGaussSeidel;
+        tolerance       1e-5;
+        relTol          0;
+        minIter         1;
+    }
+}
+
+PIMPLE
+{
+    nOuterCorrectors 3;
+    nCorrectors      1;
+    nNonOrthogonalCorrectors 0;
+    faceMomentum     yes;
+}
+
+relaxationFactors
+{
+    equations
+    {
+        ".*"            1;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/system/setFieldsDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/system/setFieldsDict
new file mode 100644
index 0000000000000000000000000000000000000000..da4c6ee6f2b05ccee47aa322a096b2cacad742a0
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/system/setFieldsDict
@@ -0,0 +1,38 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      setFieldsDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+defaultFieldValues
+(
+    volScalarFieldValue alpha.air 1
+    volScalarFieldValue alpha.particles 0
+);
+
+regions
+(
+    boxToCell
+    {
+        box ( 0 0 -0.1 ) ( 0.15 0.5 0.1 );
+        fieldValues
+        (
+            volScalarFieldValue alpha.air 0.45
+            volScalarFieldValue alpha.particles 0.55
+        );
+    }
+);
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/T.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/T.air
new file mode 100644
index 0000000000000000000000000000000000000000..9c0fd4206c19f34a05d8c05da28254b22882ebcf
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/T.air
@@ -0,0 +1,45 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      Tair;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions          [0 0 0 1 0 0 0];
+
+internalField       uniform 300;
+
+boundaryField
+{
+    walls
+    {
+        type               zeroGradient;
+    }
+    outlet
+    {
+        type               inletOutlet;
+        phi                phi.air;
+        inletValue         $internalField;
+        value              $internalField;
+    }
+    inlet
+    {
+        type               fixedValue;
+        value              $internalField;
+    }
+    frontAndBackPlanes
+    {
+        type               empty;
+    }
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/T.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/T.water
new file mode 100644
index 0000000000000000000000000000000000000000..e592c501d54f0421cc5df1b3ed3954cfb6969b1d
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/T.water
@@ -0,0 +1,45 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      Twater;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions          [0 0 0 1 0 0 0];
+
+internalField       uniform 350;
+
+boundaryField
+{
+    walls
+    {
+        type               zeroGradient;
+    }
+    outlet
+    {
+        type               inletOutlet;
+        phi                phi.water;
+        inletValue         $internalField;
+        value              $internalField;
+    }
+    inlet
+    {
+        type               fixedValue;
+        value              $internalField;
+    }
+    frontAndBackPlanes
+    {
+        type               empty;
+    }
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/Theta b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/Theta
new file mode 100644
index 0000000000000000000000000000000000000000..e45304b83464ea6a9568531b35b570abae0d768f
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/Theta
@@ -0,0 +1,47 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      Theta;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions          [ 0 2 -2 0 0 0 0 ];
+
+internalField   uniform 0.0;
+
+boundaryField
+{
+    inlet
+    {
+        type            fixedValue;
+        value           uniform 1.0e-7;
+    }
+
+    outlet
+    {
+        type            inletOutlet;
+        inletValue      uniform 1.0e-7;
+        value           uniform 1.0e-7;
+    }
+
+    walls
+    {
+        type            zeroGradient;
+    }
+
+    defaultFaces
+    {
+        type            empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/U.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/U.air
new file mode 100644
index 0000000000000000000000000000000000000000..e81fffac0612e0a20d26f1cb9be4211ba4be9a16
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/U.air
@@ -0,0 +1,41 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      binary;
+    class       volVectorField;
+    object      U.air;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -1 0 0 0 0];
+
+internalField   uniform (0 0.1 0);
+
+boundaryField
+{
+    inlet
+    {
+        type               fixedValue;
+        value              $internalField;
+    }
+    outlet
+    {
+        type               pressureInletOutletVelocity;
+        phi                phi.air;
+        value              $internalField;
+    }
+    walls
+    {
+        type               fixedValue;
+        value              uniform (0 0 0);
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/U.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/U.water
new file mode 100644
index 0000000000000000000000000000000000000000..aab00fd78bb2a097604737fb5b1b77d2ae159967
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/U.water
@@ -0,0 +1,41 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      binary;
+    class       volVectorField;
+    object      U.water;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -1 0 0 0 0];
+
+internalField   uniform (0 0 0);
+
+boundaryField
+{
+    inlet
+    {
+        type               fixedValue;
+        value              $internalField;
+    }
+    outlet
+    {
+        type               pressureInletOutletVelocity;
+        phi                phi.water;
+        value              $internalField;
+    }
+    walls
+    {
+        type               fixedValue;
+        value              uniform (0 0 0);
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/alpha.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/alpha.air
new file mode 100644
index 0000000000000000000000000000000000000000..1b1a35684a06787a1eb3cb75f388563aad1443a1
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/alpha.air
@@ -0,0 +1,1926 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      alpha.air;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   nonuniform List<scalar>
+1875
+(
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+)
+;
+
+boundaryField
+{
+    inlet
+    {
+        type            fixedValue;
+        value           uniform 0.5;
+    }
+    outlet
+    {
+        type            inletOutlet;
+        phi             phi.air;
+        inletValue      uniform 1;
+        value           uniform 1;
+    }
+    walls
+    {
+        type            zeroGradient;
+    }
+    defaultFaces
+    {
+        type            empty;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/alpha.air.org b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/alpha.air.org
new file mode 100644
index 0000000000000000000000000000000000000000..4472b0c63598b7f95acf8d79fac10b3e9a08ebf7
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/alpha.air.org
@@ -0,0 +1,42 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      alpha.air;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    inlet
+    {
+        type            fixedValue;
+        value           uniform 0.5;
+    }
+    outlet
+    {
+        type            inletOutlet;
+        phi             phi.air;
+        inletValue      uniform 1;
+        value           uniform 1;
+    }
+    walls
+    {
+        type            zeroGradient;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/p b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/p
new file mode 100644
index 0000000000000000000000000000000000000000..961771c727970e5d5259b913d2531a44f025a70f
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/p
@@ -0,0 +1,40 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      p;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions          [ 1 -1 -2 0 0 0 0 ];
+
+internalField       uniform 1e5;
+
+boundaryField
+{
+    inlet
+    {
+        type               calculated;
+        value              $internalField;
+    }
+    outlet
+    {
+        type               calculated;
+        value              $internalField;
+    }
+    walls
+    {
+        type               calculated;
+        value              $internalField;
+    }
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/p_rgh b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/p_rgh
new file mode 100644
index 0000000000000000000000000000000000000000..c816028aaf34844b1f6bd2ec1e3460f9dac8ac29
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/p_rgh
@@ -0,0 +1,40 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      p_rgh;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions          [ 1 -1 -2 0 0 0 0 ];
+
+internalField       uniform 1e5;
+
+boundaryField
+{
+    inlet
+    {
+        type               fixedFluxPressure;
+        value              $internalField;
+    }
+    outlet
+    {
+        type               fixedValue;
+        value              $internalField;
+    }
+    walls
+    {
+        type               fixedFluxPressure;
+        value              $internalField;
+    }
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/constant/g b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/constant/g
new file mode 100644
index 0000000000000000000000000000000000000000..0cc222ca3457ed24bf9753d0926fbee84359e624
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/constant/g
@@ -0,0 +1,22 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       uniformDimensionedVectorField;
+    location    "constant";
+    object      g;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -2 0 0 0 0];
+value           (0 -9.81 0);
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/constant/phaseProperties b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/constant/phaseProperties
new file mode 100644
index 0000000000000000000000000000000000000000..3f7a06fbc5be0b79a89405222abfb4bf4d0970a4
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/constant/phaseProperties
@@ -0,0 +1,166 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      phaseProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+type heatAndMomentumTransferTwoPhaseSystem;
+
+phases (air water);
+
+air
+{
+    type            purePhaseModel;
+    diameterModel   isothermal;
+    isothermalCoeffs
+    {
+        d0              3e-3;
+        p0              1e5;
+    }
+
+    residualAlpha   1e-6;
+}
+
+water
+{
+    type            purePhaseModel;
+    diameterModel   constant;
+    constantCoeffs
+    {
+        d               1e-4;
+    }
+
+    residualAlpha   1e-6;
+}
+
+blending
+{
+    default
+    {
+        type            linear;
+        minFullyContinuousAlpha.air 0.7;
+        minPartlyContinuousAlpha.air 0.5;
+        minFullyContinuousAlpha.water 0.7;
+        minPartlyContinuousAlpha.water 0.5;
+    }
+}
+
+surfaceTension
+(
+    (air and water)
+    {
+        type            constant;
+        sigma           0.07;
+    }
+);
+
+aspectRatio
+(
+    (air in water)
+    {
+        type            constant;
+        E0              1.0;
+    }
+
+    (water in air)
+    {
+        type            constant;
+        E0              1.0;
+    }
+);
+
+drag
+(
+    (air in water)
+    {
+        type            SchillerNaumann;
+
+        residualRe      1e-3;
+        swarmCorrection
+        {
+            type        none;
+        }
+    }
+
+    (water in air)
+    {
+        type            SchillerNaumann;
+
+        residualRe      1e-3;
+        swarmCorrection
+        {
+            type        none;
+        }
+    }
+
+    (air and water)
+    {
+        type            segregated;
+
+        m               0.5;
+        n               8;
+        swarmCorrection
+        {
+            type        none;
+        }
+    }
+);
+
+virtualMass
+(
+    (air in water)
+    {
+        type            constantCoefficient;
+        Cvm             0.5;
+    }
+
+    (water in air)
+    {
+        type            constantCoefficient;
+        Cvm             0.5;
+    }
+);
+
+heatTransfer
+(
+    (air in water)
+    {
+        type            RanzMarshall;
+        residualAlpha   1e-4;
+    }
+
+    (water in air)
+    {
+        type            RanzMarshall;
+        residualAlpha   1e-4;
+    }
+);
+
+lift
+(
+);
+
+wallLubrication
+(
+);
+
+turbulentDispersion
+(
+);
+
+// Minimum allowable pressure
+pMin            10000;
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/constant/polyMesh/boundary b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/constant/polyMesh/boundary
new file mode 100644
index 0000000000000000000000000000000000000000..4564ccc46a64685c98cc53274688263dee85086a
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/constant/polyMesh/boundary
@@ -0,0 +1,48 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       polyBoundaryMesh;
+    location    "constant/polyMesh";
+    object      boundary;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+4
+(
+    inlet
+    {
+        type            patch;
+        nFaces          25;
+        startFace       3650;
+    }
+    outlet
+    {
+        type            patch;
+        nFaces          25;
+        startFace       3675;
+    }
+    walls
+    {
+        type            wall;
+        inGroups        1(wall);
+        nFaces          150;
+        startFace       3700;
+    }
+    defaultFaces
+    {
+        type            empty;
+        inGroups        1(empty);
+        nFaces          3750;
+        startFace       3850;
+    }
+)
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/constant/thermophysicalProperties.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/constant/thermophysicalProperties.air
new file mode 100644
index 0000000000000000000000000000000000000000..befc0aeae449cccc50a24e955083b88b914aba67
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/constant/thermophysicalProperties.air
@@ -0,0 +1,49 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      thermophysicalProperties.air;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+thermoType
+{
+    type            heRhoThermo;
+    mixture         pureMixture;
+    transport       const;
+    thermo          hConst;
+    equationOfState perfectGas;
+    specie          specie;
+    energy          sensibleInternalEnergy;
+}
+
+mixture
+{
+    specie
+    {
+        nMoles      1;
+        molWeight   28.9;
+    }
+    thermodynamics
+    {
+        Cp          1007;
+        Hf          0;
+    }
+    transport
+    {
+        mu          1.84e-05;
+        Pr          0.7;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/constant/thermophysicalProperties.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/constant/thermophysicalProperties.water
new file mode 100644
index 0000000000000000000000000000000000000000..c44c005d3b17561dc32c9e32262b37dc348aecc3
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/constant/thermophysicalProperties.water
@@ -0,0 +1,54 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      thermophysicalProperties.water;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+thermoType
+{
+    type            heRhoThermo;
+    mixture         pureMixture;
+    transport       const;
+    thermo          hConst;
+    equationOfState perfectFluid;
+    specie          specie;
+    energy          sensibleInternalEnergy;
+}
+
+mixture
+{
+    specie
+    {
+        nMoles      1;
+        molWeight   18;
+    }
+    equationOfState
+    {
+        R           3000;
+        rho0        1027;
+    }
+    thermodynamics
+    {
+        Cp          4195;
+        Hf          0;
+    }
+    transport
+    {
+        mu          3.645e-4;
+        Pr          2.289;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/constant/turbulenceProperties.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/constant/turbulenceProperties.air
new file mode 100644
index 0000000000000000000000000000000000000000..1296429b72a21953def920b08774aa75e1d048b1
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/constant/turbulenceProperties.air
@@ -0,0 +1,20 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      turbulenceProperties.air;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+simulationType  laminar;
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/constant/turbulenceProperties.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/constant/turbulenceProperties.water
new file mode 100644
index 0000000000000000000000000000000000000000..7f0d75a82fcdc99677fa0be8a4111cfe91e4a82c
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/constant/turbulenceProperties.water
@@ -0,0 +1,20 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      turbulenceProperties.water;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+simulationType  laminar;
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/system/blockMeshDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/system/blockMeshDict
new file mode 100644
index 0000000000000000000000000000000000000000..d03967afdc2ccf7afbecdf32d50159c309a475e3
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/system/blockMeshDict
@@ -0,0 +1,61 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      blockMeshDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+convertToMeters 1;
+
+vertices
+(
+    (0 0 0)
+    (0.15 0 0)
+    (0.15 1 0)
+    (0 1 0)
+    (0 0 0.1)
+    (0.15 0 0.1)
+    (0.15 1 0.1)
+    (0 1 0.1)
+);
+
+blocks
+(
+    hex (0 1 2 3 4 5 6 7) (25 75 1) simpleGrading (1 1 1)
+);
+
+edges
+(
+);
+
+patches
+(
+    patch inlet
+    (
+        (1 5 4 0)
+    )
+    patch outlet
+    (
+        (3 7 6 2)
+    )
+    wall walls
+    (
+        (0 4 7 3)
+        (2 6 5 1)
+    )
+);
+
+mergePatchPairs
+(
+);
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/system/controlDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/system/controlDict
new file mode 100644
index 0000000000000000000000000000000000000000..26877364f246abe22650b7f6e479cb60e83cd144
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/system/controlDict
@@ -0,0 +1,95 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      controlDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+application     reactingTwoPhaseEulerFoam;
+
+startFrom       startTime;
+
+startTime       0;
+
+stopAt          endTime;
+
+endTime         100;
+
+deltaT          0.005;
+
+writeControl    runTime;
+
+writeInterval   1;
+
+purgeWrite      0;
+
+writeFormat     ascii;
+
+writePrecision  6;
+
+writeCompression uncompressed;
+
+timeFormat      general;
+
+timePrecision   6;
+
+runTimeModifiable yes;
+
+adjustTimeStep  no;
+
+maxCo           0.5;
+
+maxDeltaT       1;
+
+functions
+{
+    fieldAverage1
+    {
+        type            fieldAverage;
+        functionObjectLibs ( "libfieldFunctionObjects.so" );
+        outputControl   outputTime;
+        fields
+        (
+            U.air
+            {
+                 mean        on;
+                 prime2Mean  off;
+                 base        time;
+            }
+
+            U.water
+            {
+                 mean        on;
+                 prime2Mean  off;
+                 base        time;
+            }
+
+            alpha.air
+            {
+                 mean        on;
+                 prime2Mean  off;
+                 base        time;
+            }
+
+            p
+            {
+                 mean        on;
+                 prime2Mean  off;
+                 base        time;
+            }
+        );
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/system/fvSchemes b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/system/fvSchemes
new file mode 100644
index 0000000000000000000000000000000000000000..2c05f079b6251693175313fd48a99e12e92ab7e9
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/system/fvSchemes
@@ -0,0 +1,67 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      fvSchemes;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ddtSchemes
+{
+    default         Euler;
+}
+
+gradSchemes
+{
+    default         Gauss linear;
+}
+
+divSchemes
+{
+    default                         none;
+
+    div(phi,alpha.air)              Gauss vanLeer;
+    div(phir,alpha.air)             Gauss vanLeer;
+
+    "div\(alphaRhoPhi.*,U.*\)"      Gauss limitedLinearV 1;
+    "div\(phi.*,U.*\)"              Gauss limitedLinearV 1;
+
+    "div\(alphaRhoPhi.*,(h|e).*\)"  Gauss limitedLinear 1;
+    "div\(alphaRhoPhi.*,K.*\)"      Gauss limitedLinear 1;
+    "div\(alphaPhi.*,p\)"           Gauss limitedLinear 1;
+
+    "div\(\(\(\(alpha.*\*thermo:rho.*\)*nuEff.*\)\*dev2\(T\(grad\(U.*\)\)\)\)\)" Gauss linear;
+}
+
+laplacianSchemes
+{
+    default         Gauss linear uncorrected;
+}
+
+interpolationSchemes
+{
+    default         linear;
+}
+
+snGradSchemes
+{
+    default         uncorrected;
+}
+
+fluxRequired
+{
+    default         no;
+    p_rgh;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/system/fvSolution b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/system/fvSolution
new file mode 100644
index 0000000000000000000000000000000000000000..350b0c0c1fe42f2d87699003d0b6b2532edda2ed
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/system/fvSolution
@@ -0,0 +1,82 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      fvSolution;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+solvers
+{
+    alpha.air
+    {
+        nAlphaCorr      1;
+        nAlphaSubCycles 2;
+    }
+
+    p_rgh
+    {
+        solver          GAMG;
+        smoother        DIC;
+        nPreSweeps      0;
+        nPostSweeps     2;
+        nFinestSweeps   2;
+        cacheAgglomeration true;
+        nCellsInCoarsestLevel 10;
+        agglomerator    faceAreaPair;
+        mergeLevels     1;
+        tolerance       1e-8;
+        relTol          0;
+    }
+
+    p_rghFinal
+    {
+        $p_rgh;
+        relTol          0;
+    }
+
+    "U.*"
+    {
+        solver          smoothSolver;
+        smoother        symGaussSeidel;
+        tolerance       1e-5;
+        relTol          0;
+        minIter         1;
+    }
+
+    "e.*"
+    {
+        solver          smoothSolver;
+        smoother        symGaussSeidel;
+        tolerance       1e-8;
+        relTol          0;
+        minIter         1;
+    }
+}
+
+PIMPLE
+{
+    nOuterCorrectors 3;
+    nCorrectors      1;
+    nNonOrthogonalCorrectors 0;
+}
+
+relaxationFactors
+{
+    equations
+    {
+        ".*"            1;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/system/setFieldsDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/system/setFieldsDict
new file mode 100644
index 0000000000000000000000000000000000000000..93d742ba74a2424f861b51d1c5d2d8211a625715
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/system/setFieldsDict
@@ -0,0 +1,36 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      setFieldsDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+defaultFieldValues
+(
+    volScalarFieldValue alpha.air 1
+);
+
+regions
+(
+    boxToCell
+    {
+        box (0 0 -0.1) (0.15 0.701 0.1);
+        fieldValues
+        (
+            volScalarFieldValue alpha.air 0
+        );
+    }
+);
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/CO.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/CO.gas
new file mode 100644
index 0000000000000000000000000000000000000000..3241a1ab52a28dc4b11fac8c2538eae5bd0c5fe3
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/CO.gas
@@ -0,0 +1,42 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      CO.gas;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    inlet
+    {
+        type            fixedValue;
+        value           uniform 0.1;
+    }
+    outlet
+    {
+        type            inletOutlet;
+        phi             phi.gas;
+        inletValue      $internalField;
+        value           $internalField;
+    }
+    walls
+    {
+        type            zeroGradient;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/H2O.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/H2O.gas
new file mode 100644
index 0000000000000000000000000000000000000000..4c75b369281eec82daa4a4ca5265279552ab5527
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/H2O.gas
@@ -0,0 +1,42 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      H2O.gas;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    inlet
+    {
+        type            fixedValue;
+        value           $internalField;
+    }
+    outlet
+    {
+        type            inletOutlet;
+        phi             phi.gas;
+        inletValue      $internalField;
+        value           $internalField;
+    }
+    walls
+    {
+        type            zeroGradient;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/H2O.liquid b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/H2O.liquid
new file mode 100644
index 0000000000000000000000000000000000000000..c7ad1c1c75e91e4338531daeb1a0a775d9f79fbc
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/H2O.liquid
@@ -0,0 +1,42 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      H2O.liquid;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   uniform 1;
+
+boundaryField
+{
+    inlet
+    {
+        type            fixedValue;
+        value           $internalField;
+    }
+    outlet
+    {
+        type            inletOutlet;
+        phi             phi.liquid;
+        inletValue      $internalField;
+        value           $internalField;
+    }
+    walls
+    {
+        type            zeroGradient;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/T.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/T.gas
new file mode 100644
index 0000000000000000000000000000000000000000..db51372765d2805710582d48fa2318e5a8ce45d7
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/T.gas
@@ -0,0 +1,42 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      T.gas;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions          [0 0 0 1 0 0 0];
+
+internalField       uniform 350;
+
+boundaryField
+{
+    walls
+    {
+        type            zeroGradient;
+    }
+    outlet
+    {
+        type            inletOutlet;
+        phi             phi.gas;
+        inletValue      $internalField;
+        value           $internalField;
+    }
+    inlet
+    {
+        type            fixedValue;
+        value           $internalField;
+    }
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/T.liquid b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/T.liquid
new file mode 100644
index 0000000000000000000000000000000000000000..1e5699a4cd04e86f169a7c747891625edad0b607
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/T.liquid
@@ -0,0 +1,41 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      T.liquid;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions          [0 0 0 1 0 0 0];
+
+internalField       uniform 350;
+
+boundaryField
+{
+    walls
+    {
+        type            zeroGradient;
+    }
+    outlet
+    {
+        type            inletOutlet;
+        phi             phi.liquid;
+        inletValue      $internalField;
+        value           $internalField;
+    }
+    inlet
+    {
+        type            zeroGradient;
+    }
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/U.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/U.gas
new file mode 100644
index 0000000000000000000000000000000000000000..48fc136a2df7e7eeb0b88f1624140aa8811a0e5e
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/U.gas
@@ -0,0 +1,42 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      binary;
+    class       volVectorField;
+    location    "0";
+    object      U.gas;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -1 0 0 0 0];
+
+internalField   uniform (0 0.1 0);
+
+boundaryField
+{
+    inlet
+    {
+        type            fixedValue;
+        value           $internalField;
+    }
+    outlet
+    {
+        type            pressureInletOutletVelocity;
+        phi             phi.gas;
+        value           $internalField;
+    }
+    walls
+    {
+        type            fixedValue;
+        value           uniform (0 0 0);
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/U.liquid b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/U.liquid
new file mode 100644
index 0000000000000000000000000000000000000000..b041afd007809c48630dc781c7f00d266f9e172f
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/U.liquid
@@ -0,0 +1,42 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      binary;
+    class       volVectorField;
+    location    "0";
+    object      U.liquid;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -1 0 0 0 0];
+
+internalField   uniform (0 0 0);
+
+boundaryField
+{
+    inlet
+    {
+        type            fixedValue;
+        value           $internalField;
+    }
+    outlet
+    {
+        type            pressureInletOutletVelocity;
+        phi             phi.liquid;
+        value           $internalField;
+    }
+    walls
+    {
+        type            fixedValue;
+        value           uniform (0 0 0);
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/Ydefault b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/Ydefault
new file mode 100644
index 0000000000000000000000000000000000000000..cc22bdff91c3af591c8546b1b4f58690d24df275
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/Ydefault
@@ -0,0 +1,42 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      Ydefault;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    inlet
+    {
+        type            fixedValue;
+        value           $internalField;
+    }
+    outlet
+    {
+        type            inletOutlet;
+        phi             phi.gas;
+        inletValue      $internalField;
+        value           $internalField;
+    }
+    walls
+    {
+        type            zeroGradient;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/air.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/air.gas
new file mode 100644
index 0000000000000000000000000000000000000000..a97658d602c2df4edc8202363726ce3289a15c11
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/air.gas
@@ -0,0 +1,42 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      air.gas;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   uniform 1;
+
+boundaryField
+{
+    inlet
+    {
+        type            fixedValue;
+        value           uniform 0.9;
+    }
+    outlet
+    {
+        type            inletOutlet;
+        phi             phi.gas;
+        inletValue      $internalField;
+        value           $internalField;
+    }
+    walls
+    {
+        type            zeroGradient;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/air.liquid b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/air.liquid
new file mode 100644
index 0000000000000000000000000000000000000000..dc181ed87a7080d2d8084c94da39b5403e4ad3d5
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/air.liquid
@@ -0,0 +1,42 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      air.liquid;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    inlet
+    {
+        type            fixedValue;
+        value           $internalField;
+    }
+    outlet
+    {
+        type            inletOutlet;
+        phi             phi.liquid;
+        inletValue      $internalField;
+        value           $internalField;
+    }
+    walls
+    {
+        type            zeroGradient;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/alpha.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/alpha.gas
new file mode 100644
index 0000000000000000000000000000000000000000..2d4796c4338b76ce4dd78d7865e676577ce70eb6
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/alpha.gas
@@ -0,0 +1,1926 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      alpha.gas;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   nonuniform List<scalar>
+1875
+(
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+0.01
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+)
+;
+
+boundaryField
+{
+    inlet
+    {
+        type            fixedValue;
+        value           uniform 0.5;
+    }
+    outlet
+    {
+        type            inletOutlet;
+        phi             phi.gas;
+        inletValue      uniform 1;
+        value           uniform 1;
+    }
+    walls
+    {
+        type            zeroGradient;
+    }
+    defaultFaces
+    {
+        type            empty;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/alpha.gas.org b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/alpha.gas.org
new file mode 100644
index 0000000000000000000000000000000000000000..093bcdab07308b3a9d204b1212b6eacdcb261ce5
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/alpha.gas.org
@@ -0,0 +1,42 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      alpha.gas;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   uniform 1;
+
+boundaryField
+{
+    inlet
+    {
+        type            fixedValue;
+        value           uniform 0.5;
+    }
+    outlet
+    {
+        type            inletOutlet;
+        phi             phi.gas;
+        inletValue      uniform 1;
+        value           uniform 1;
+    }
+    walls
+    {
+        type            zeroGradient;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/alpha.liquid b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/alpha.liquid
new file mode 100644
index 0000000000000000000000000000000000000000..60143dd5336b6b12bf086d20e7703d86359a21a7
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/alpha.liquid
@@ -0,0 +1,1926 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      alpha.liquid;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   nonuniform List<scalar>
+1875
+(
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0.99
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+)
+;
+
+boundaryField
+{
+    inlet
+    {
+        type            fixedValue;
+        value           uniform 0.5;
+    }
+    outlet
+    {
+        type            inletOutlet;
+        phi             phi.liquid;
+        inletValue      uniform 0;
+        value           uniform 0;
+    }
+    walls
+    {
+        type            zeroGradient;
+    }
+    defaultFaces
+    {
+        type            empty;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/alpha.liquid.org b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/alpha.liquid.org
new file mode 100644
index 0000000000000000000000000000000000000000..4ba98f325e8ef05c0660936b6f2008e1dd14b8f0
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/alpha.liquid.org
@@ -0,0 +1,42 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      alpha.liquid;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    inlet
+    {
+        type            fixedValue;
+        value           uniform 0.5;
+    }
+    outlet
+    {
+        type            inletOutlet;
+        phi             phi.liquid;
+        inletValue      uniform 0;
+        value           uniform 0;
+    }
+    walls
+    {
+        type            zeroGradient;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/p b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/p
new file mode 100644
index 0000000000000000000000000000000000000000..961771c727970e5d5259b913d2531a44f025a70f
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/p
@@ -0,0 +1,40 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      p;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions          [ 1 -1 -2 0 0 0 0 ];
+
+internalField       uniform 1e5;
+
+boundaryField
+{
+    inlet
+    {
+        type               calculated;
+        value              $internalField;
+    }
+    outlet
+    {
+        type               calculated;
+        value              $internalField;
+    }
+    walls
+    {
+        type               calculated;
+        value              $internalField;
+    }
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/p_rgh b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/p_rgh
new file mode 100644
index 0000000000000000000000000000000000000000..c816028aaf34844b1f6bd2ec1e3460f9dac8ac29
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/p_rgh
@@ -0,0 +1,40 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      p_rgh;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions          [ 1 -1 -2 0 0 0 0 ];
+
+internalField       uniform 1e5;
+
+boundaryField
+{
+    inlet
+    {
+        type               fixedFluxPressure;
+        value              $internalField;
+    }
+    outlet
+    {
+        type               fixedValue;
+        value              $internalField;
+    }
+    walls
+    {
+        type               fixedFluxPressure;
+        value              $internalField;
+    }
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/g b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/g
new file mode 100644
index 0000000000000000000000000000000000000000..0cc222ca3457ed24bf9753d0926fbee84359e624
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/g
@@ -0,0 +1,22 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       uniformDimensionedVectorField;
+    location    "constant";
+    object      g;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -2 0 0 0 0];
+value           (0 -9.81 0);
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/phaseProperties b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/phaseProperties
new file mode 100644
index 0000000000000000000000000000000000000000..7fd6f0c6c2e37d449ff6c700b0bbd1e463bd10ab
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/phaseProperties
@@ -0,0 +1,230 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      phaseProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+type    heatMassAndMomentumTransferTwoPhaseSystem;
+
+phases (gas liquid);
+
+gas
+{
+    type            multiComponentPhaseModel;
+    diameterModel   isothermal;
+    isothermalCoeffs
+    {
+        d0              3e-3;
+        p0              1e5;
+    }
+    Sc              0.7;
+
+    residualAlpha   1e-6;
+}
+
+liquid
+{
+    type            purePhaseModel;
+    diameterModel   constant;
+    constantCoeffs
+    {
+        d               1e-4;
+    }
+
+    residualAlpha   1e-6;
+}
+
+blending
+{
+    default
+    {
+        type            linear;
+        minPartlyContinuousAlpha.gas 0.5;
+        minFullyContinuousAlpha.gas 0.7;
+        minPartlyContinuousAlpha.liquid 0.5;
+        minFullyContinuousAlpha.liquid 0.7;
+    }
+
+    heatTransferModel
+    {
+        type            linear;
+        minPartlyContinuousAlpha.gas 0;
+        minFullyContinuousAlpha.gas 1;
+        minPartlyContinuousAlpha.liquid 0;
+        minFullyContinuousAlpha.liquid 1;
+    }
+
+    massTransferModel
+    {
+        type            linear;
+        minPartlyContinuousAlpha.gas 0;
+        minFullyContinuousAlpha.gas 1;
+        minPartlyContinuousAlpha.liquid 0;
+        minFullyContinuousAlpha.liquid 1;
+    }
+}
+
+surfaceTension
+(
+    (gas and liquid)
+    {
+        type            constant;
+        sigma           0.07;
+    }
+);
+
+aspectRatio
+(
+    (gas in liquid)
+    {
+        type            constant;
+        E0              1.0;
+    }
+
+    (liquid in gas)
+    {
+        type            constant;
+        E0              1.0;
+    }
+);
+
+drag
+(
+    (gas in liquid)
+    {
+        type            SchillerNaumann;
+        residualRe      1e-3;
+        swarmCorrection
+        {
+            type        none;
+        }
+    }
+
+    (liquid in gas)
+    {
+        type            SchillerNaumann;
+        residualRe      1e-3;
+        swarmCorrection
+        {
+            type        none;
+        }
+    }
+);
+
+virtualMass
+(
+    (gas in liquid)
+    {
+        type            constantCoefficient;
+        Cvm             0.5;
+    }
+
+    (liquid in gas)
+    {
+        type            constantCoefficient;
+        Cvm             0.5;
+    }
+);
+
+interfaceComposition
+(
+    (gas in liquid)
+    {
+        type Saturated;
+        species ( H2O );
+        Le 1.0;
+        saturationPressure
+        {
+            type ArdenBuck;
+        }
+    }
+);
+
+heatTransfer.gas
+(
+    (gas in liquid)
+    {
+        type spherical;
+        residualAlpha 1e-4;
+    }
+
+    (liquid in gas)
+    {
+        type RanzMarshall;
+        residualAlpha 1e-4;
+    }
+);
+
+heatTransfer.liquid
+(
+    (gas in liquid)
+    {
+        type RanzMarshall;
+        residualAlpha 1e-4;
+    }
+
+    (liquid in gas)
+    {
+        type spherical;
+        residualAlpha 1e-4;
+    }
+);
+
+massTransfer.gas
+(
+    (gas in liquid)
+    {
+        type spherical;
+        Le 1.0;
+    }
+
+    (liquid in gas)
+    {
+        type Frossling;
+        Le 1.0;
+    }
+);
+
+massTransfer.liquid
+(
+    (gas in liquid)
+    {
+        type Frossling;
+        Le 1.0;
+    }
+
+    (liquid in gas)
+    {
+        type spherical;
+        Le 1.0;
+    }
+);
+
+lift
+(
+);
+
+wallLubrication
+(
+);
+
+turbulentDispersion
+(
+);
+
+// Minimum allowable pressure
+pMin            10000;
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/polyMesh/boundary b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/polyMesh/boundary
new file mode 100644
index 0000000000000000000000000000000000000000..4564ccc46a64685c98cc53274688263dee85086a
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/polyMesh/boundary
@@ -0,0 +1,48 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       polyBoundaryMesh;
+    location    "constant/polyMesh";
+    object      boundary;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+4
+(
+    inlet
+    {
+        type            patch;
+        nFaces          25;
+        startFace       3650;
+    }
+    outlet
+    {
+        type            patch;
+        nFaces          25;
+        startFace       3675;
+    }
+    walls
+    {
+        type            wall;
+        inGroups        1(wall);
+        nFaces          150;
+        startFace       3700;
+    }
+    defaultFaces
+    {
+        type            empty;
+        inGroups        1(empty);
+        nFaces          3750;
+        startFace       3850;
+    }
+)
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/thermophysicalProperties.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/thermophysicalProperties.gas
new file mode 100644
index 0000000000000000000000000000000000000000..0bfc34018d2a9ecfe57d71bb88e74d616ffc9dc3
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/thermophysicalProperties.gas
@@ -0,0 +1,82 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      thermophysicalProperties.gas;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+thermoType
+{
+    type            heRhoThermo;
+    mixture         multiComponentMixture;
+    transport       sutherland;
+    thermo          janaf;
+    equationOfState perfectGas;
+    specie          specie;
+    energy          sensibleInternalEnergy;
+}
+
+inertSpecie air;
+
+species
+(
+    air
+    H2O
+);
+
+H2O
+{
+    specie
+    {
+        nMoles          1;
+        molWeight       18.0153;
+    }
+    thermodynamics
+    {
+        Tlow            200;
+        Thigh           3500;
+        Tcommon         1000;
+        highCpCoeffs    ( 3.03399 0.00217692 -1.64073e-07 -9.7042e-11 1.68201e-14 -30004.3 4.96677 );
+        lowCpCoeffs     ( 4.19864 -0.00203643 6.5204e-06 -5.48797e-09 1.77198e-12 -30293.7 -0.849032 );
+    }
+    transport
+    {
+        As              1.67212e-06;
+        Ts              170.672;
+    }
+}
+
+air
+{
+    specie
+    {
+        nMoles          1;
+        molWeight       28.9596;
+    }
+    thermodynamics
+    {
+        Tlow            200;
+        Thigh           3500;
+        Tcommon         1000;
+        highCpCoeffs    ( 3.57304 -7.24383e-04 1.67022e-06 -1.26501e-10 -4.20580e-13 -1047.41 3.12431 );
+        lowCpCoeffs     ( 3.09589 1.22835e-03 -4.14267e-07 6.56910e-11 -3.87021e-15 -983.191 5.34161 );
+    }
+    transport
+    {
+        As              1.67212e-06;
+        Ts              170.672;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/thermophysicalProperties.liquid b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/thermophysicalProperties.liquid
new file mode 100644
index 0000000000000000000000000000000000000000..2f486f8bea8485ddaa6f0af952c9c7684080ed16
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/thermophysicalProperties.liquid
@@ -0,0 +1,86 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      thermophysicalProperties.liquid;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+thermoType
+{
+    type            heRhoThermo;
+    mixture         pureMixture;
+    transport       const;
+    thermo          hConst;
+    equationOfState perfectFluid;
+    specie          specie;
+    energy          sensibleInternalEnergy;
+}
+
+species
+(
+    air
+    H2O
+);
+
+inertSpecie H2O;
+
+"(mixture|H2O)"
+{
+    specie
+    {
+        nMoles          1;
+        molWeight       18.0153;
+    }
+    equationOfState
+    {
+        R           3000;
+        rho0        1027;
+    }
+    thermodynamics
+    {
+        Hf          -1.5879e+07;
+        Cp          4195;
+    }
+    transport
+    {
+        mu          3.645e-4;
+        Pr          2.289;
+    }
+}
+
+air
+{
+    specie
+    {
+        nMoles      1;
+        molWeight   28.9;
+    }
+    equationOfState
+    {
+        R           3000;
+        rho0        1027;
+    }
+    thermodynamics
+    {
+        Hf          0;
+        Cp          4195;
+    }
+    transport
+    {
+        mu          3.645e-4;
+        Pr          2.289;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/turbulenceProperties.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/turbulenceProperties.gas
new file mode 100644
index 0000000000000000000000000000000000000000..1db1a26701655056fe19426b3e2cf045bf9abd86
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/turbulenceProperties.gas
@@ -0,0 +1,20 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      turbulenceProperties.gas;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+simulationType  laminar;
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/turbulenceProperties.liquid b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/turbulenceProperties.liquid
new file mode 100644
index 0000000000000000000000000000000000000000..8a2a00b53a88aa00c567160859e6a016a98457b8
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/turbulenceProperties.liquid
@@ -0,0 +1,20 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      turbulenceProperties.liquid;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+simulationType  laminar;
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/system/blockMeshDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/system/blockMeshDict
new file mode 100644
index 0000000000000000000000000000000000000000..d03967afdc2ccf7afbecdf32d50159c309a475e3
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/system/blockMeshDict
@@ -0,0 +1,61 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      blockMeshDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+convertToMeters 1;
+
+vertices
+(
+    (0 0 0)
+    (0.15 0 0)
+    (0.15 1 0)
+    (0 1 0)
+    (0 0 0.1)
+    (0.15 0 0.1)
+    (0.15 1 0.1)
+    (0 1 0.1)
+);
+
+blocks
+(
+    hex (0 1 2 3 4 5 6 7) (25 75 1) simpleGrading (1 1 1)
+);
+
+edges
+(
+);
+
+patches
+(
+    patch inlet
+    (
+        (1 5 4 0)
+    )
+    patch outlet
+    (
+        (3 7 6 2)
+    )
+    wall walls
+    (
+        (0 4 7 3)
+        (2 6 5 1)
+    )
+);
+
+mergePatchPairs
+(
+);
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/system/continuityFunctions b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/system/continuityFunctions
new file mode 100644
index 0000000000000000000000000000000000000000..04b7acab203b7e5ff5d953e30330f4dc1c4b3060
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/system/continuityFunctions
@@ -0,0 +1,89 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+inletMassFlowRate
+{
+    type            faceSource;
+    functionObjectLibs ("libfieldFunctionObjects.so");
+
+    fields
+    (
+        alphaRhoPhi.gas
+        alphaRhoPhi.liquid
+    );
+
+    valueOutput     false;
+    log             true;
+    surfaceFormat   null;
+
+    source          patch;
+    sourceName      inlet;
+
+    operation       sum;
+
+    outputControl   timeStep;
+}
+
+outletMassFlowRate
+{
+    type            faceSource;
+    functionObjectLibs ("libfieldFunctionObjects.so");
+
+    fields
+    (
+        alphaRhoPhi.gas
+        alphaRhoPhi.liquid
+    );
+
+    valueOutput     false;
+    log             true;
+    surfaceFormat   null;
+
+    source          patch;
+    sourceName      outlet;
+
+    operation       sum;
+
+    outputControl   timeStep;
+}
+
+totalMass
+{
+    type            coded;
+    functionObjectLibs ("libutilityFunctionObjects.so");
+    redirectType    error;
+
+    code
+    #{
+        const volScalarField& alphaGas =
+            mesh().lookupObject<volScalarField>("alpha.gas");
+        const volScalarField& alphaLiquid =
+            mesh().lookupObject<volScalarField>("alpha.liquid");
+
+        const volScalarField& rhoGas =
+            mesh().lookupObject<volScalarField>("thermo:rho.gas");
+        const volScalarField& rhoLiquid =
+            mesh().lookupObject<volScalarField>("thermo:rho.liquid");
+
+        const volScalarField& dmdt =
+            mesh().lookupObject<volScalarField>("dmdt.gasAndLiquid");
+
+        const scalarField& v = mesh().V();
+
+        Info<< "coded totalMass output:" << endl
+            << "    volIntegrate(all) for alpha.gas*rho.gas = "
+            << gSum(alphaGas*rhoGas*v) << endl
+            << "    volIntegrate(all) for alpha.liquid*rho.liquid = "
+            << gSum(alphaLiquid*rhoLiquid*v) << endl
+            << "    volIntegrate(all) for dmdt = "
+            << gSum(dmdt*v) << endl
+            << endl;
+    #};
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/system/controlDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/system/controlDict
new file mode 100644
index 0000000000000000000000000000000000000000..b6cb44bf8374feb59d87d5ef225a31097ef2c17c
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/system/controlDict
@@ -0,0 +1,59 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      controlDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+application     reactingTwoPhaseEulerFoam;
+
+startFrom       startTime;
+
+startTime       0;
+
+stopAt          endTime;
+
+endTime         100;
+
+deltaT          0.0025;
+
+writeControl    runTime;
+
+writeInterval   1;
+
+purgeWrite      0;
+
+writeFormat     ascii;
+
+writePrecision  10;
+
+writeCompression uncompressed;
+
+timeFormat      general;
+
+timePrecision   6;
+
+runTimeModifiable yes;
+
+adjustTimeStep  no;
+
+maxCo           0.5;
+
+maxDeltaT       1;
+
+functions
+{
+    //#include "continuityFunctions"
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/system/decomposeParDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/system/decomposeParDict
new file mode 100644
index 0000000000000000000000000000000000000000..c98c387d4e61a201cae6268349ee3aefb08e66e7
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/system/decomposeParDict
@@ -0,0 +1,29 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    note        "mesh decomposition control dictionary";
+    object      decomposeParDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+numberOfSubdomains  6;
+
+method          hierarchical;
+
+hierarchicalCoeffs
+{
+    n           (1 6 1);
+    delta       0.001;
+    order       xyz;
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/system/fvSchemes b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/system/fvSchemes
new file mode 100644
index 0000000000000000000000000000000000000000..2eb455d3e03d7313b6b838cb9746ab51feb8c12f
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/system/fvSchemes
@@ -0,0 +1,68 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      fvSchemes;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ddtSchemes
+{
+    default         Euler;
+}
+
+gradSchemes
+{
+    default         Gauss linear;
+}
+
+divSchemes
+{
+    default                         none;
+
+    "div\(phi,alpha.*\)"            Gauss vanLeer;
+    "div\(phir,alpha.*\)"           Gauss vanLeer;
+
+    "div\(alphaRhoPhi.*,U.*\)"      Gauss limitedLinearV 1;
+    "div\(phi.*,U.*\)"              Gauss limitedLinearV 1;
+
+    "div\(alphaRhoPhi.*,Yi\)"       Gauss limitedLinear 1;
+    "div\(alphaRhoPhi.*,(h|e).*\)"  Gauss limitedLinear 1;
+    "div\(alphaRhoPhi.*,K.*\)"      Gauss limitedLinear 1;
+    "div\(alphaPhi.*,p\)"           Gauss limitedLinear 1;
+
+    "div\(\(\(\(alpha.*\*thermo:rho.*\)*nuEff.*\)\*dev2\(T\(grad\(U.*\)\)\)\)\)" Gauss linear;
+}
+
+laplacianSchemes
+{
+    default         Gauss linear uncorrected;
+}
+
+interpolationSchemes
+{
+    default         linear;
+}
+
+snGradSchemes
+{
+    default         uncorrected;
+}
+
+fluxRequired
+{
+    default         no;
+    p_rgh;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/system/fvSolution b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/system/fvSolution
new file mode 100644
index 0000000000000000000000000000000000000000..323c361051cf202a21c95b08ccf2a2aed90db301
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/system/fvSolution
@@ -0,0 +1,92 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      fvSolution;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+solvers
+{
+    "alpha.*"
+    {
+        nAlphaCorr      1;
+        nAlphaSubCycles 3;
+    }
+
+    p_rgh
+    {
+        solver          GAMG;
+        smoother        DIC;
+        nPreSweeps      0;
+        nPostSweeps     2;
+        nFinestSweeps   2;
+        cacheAgglomeration true;
+        nCellsInCoarsestLevel 10;
+        agglomerator    faceAreaPair;
+        mergeLevels     1;
+        tolerance       1e-11;
+        relTol          0.001;
+    }
+
+    p_rghFinal
+    {
+        $p_rgh;
+        relTol          0;
+    }
+
+    "U.*"
+    {
+        solver          smoothSolver;
+        smoother        symGaussSeidel;
+        tolerance       1e-12;
+        relTol          0;
+        minIter         1;
+    }
+
+    "(e|h).*"
+    {
+        solver          smoothSolver;
+        smoother        symGaussSeidel;
+        tolerance       1e-12;
+        relTol          0;
+        minIter         1;
+    }
+
+    Yi
+    {
+        solver          smoothSolver;
+        smoother        symGaussSeidel;
+        tolerance       1e-12;
+        relTol          0;
+        minIter         1;
+        residualAlpha   1e-8;
+    }
+}
+
+PIMPLE
+{
+    nOuterCorrectors 5;
+    nCorrectors      1;
+    nNonOrthogonalCorrectors 0;
+}
+
+relaxationFactors
+{
+    equations
+    {
+        ".*"            1;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/system/setFieldsDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/system/setFieldsDict
new file mode 100644
index 0000000000000000000000000000000000000000..8afdc29c84e91a4befec79469440bab19940af46
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/system/setFieldsDict
@@ -0,0 +1,38 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      setFieldsDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+defaultFieldValues
+(
+    volScalarFieldValue alpha.gas 1
+    volScalarFieldValue alpha.liquid 0
+);
+
+regions
+(
+    boxToCell
+    {
+        box (0 0 0) (0.15 0.501 0.1);
+        fieldValues
+        (
+            volScalarFieldValue alpha.gas 0.01
+            volScalarFieldValue alpha.liquid 0.99
+        );
+    }
+);
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/T.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/T.gas
new file mode 100644
index 0000000000000000000000000000000000000000..1da050a2b20ac28c7889656af470eae44146018a
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/T.gas
@@ -0,0 +1,41 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      T.gas;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions          [0 0 0 1 0 0 0];
+
+internalField       uniform 350;
+
+boundaryField
+{
+    walls
+    {
+        type               zeroGradient;
+    }
+    outlet
+    {
+        type               inletOutlet;
+        phi                phi.gas;
+        inletValue         $internalField;
+        value              $internalField;
+    }
+    inlet
+    {
+        type               fixedValue;
+        value              $internalField;
+    }
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/T.liquid b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/T.liquid
new file mode 100644
index 0000000000000000000000000000000000000000..8a681a590b278a1947ab97622dbd1d45b1ea1847
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/T.liquid
@@ -0,0 +1,40 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      T.liquid;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions          [0 0 0 1 0 0 0];
+
+internalField       uniform 350;
+
+boundaryField
+{
+    walls
+    {
+        type               zeroGradient;
+    }
+    outlet
+    {
+        type               inletOutlet;
+        phi                phi.liquid;
+        inletValue         $internalField;
+        value              $internalField;
+    }
+    inlet
+    {
+        type                zeroGradient;
+    }
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/U.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/U.gas
new file mode 100644
index 0000000000000000000000000000000000000000..4f37ea90bf2ad6ef686f9d6622ec30ff5419b18b
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/U.gas
@@ -0,0 +1,41 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      binary;
+    class       volVectorField;
+    object      U.gas;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -1 0 0 0 0];
+
+internalField   uniform (0 0.1 0);
+
+boundaryField
+{
+    inlet
+    {
+        type               fixedValue;
+        value              $internalField;
+    }
+    outlet
+    {
+        type               pressureInletOutletVelocity;
+        phi                phi.gas;
+        value              $internalField;
+    }
+    walls
+    {
+        type               fixedValue;
+        value              uniform (0 0 0);
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/U.liquid b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/U.liquid
new file mode 100644
index 0000000000000000000000000000000000000000..c70b49719c753ac2329244b12202e06362e45f71
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/U.liquid
@@ -0,0 +1,41 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      binary;
+    class       volVectorField;
+    object      U.liquid;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -1 0 0 0 0];
+
+internalField   uniform (0 0 0);
+
+boundaryField
+{
+    inlet
+    {
+        type               fixedValue;
+        value              $internalField;
+    }
+    outlet
+    {
+        type               pressureInletOutletVelocity;
+        phi                phi.liquid;
+        value              $internalField;
+    }
+    walls
+    {
+        type               fixedValue;
+        value              uniform (0 0 0);
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/air.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/air.gas
new file mode 100644
index 0000000000000000000000000000000000000000..2e6c5de3ba8693f769ab4a9a135190600bd135f2
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/air.gas
@@ -0,0 +1,42 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      air.gas;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   uniform 1;
+
+boundaryField
+{
+    inlet
+    {
+        type            fixedValue;
+        value           $internalField;
+    }
+    outlet
+    {
+        type            inletOutlet;
+        phi             phi.gas;
+        inletValue      $internalField;
+        value           $internalField;
+    }
+    walls
+    {
+        type            zeroGradient;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/air.liquid b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/air.liquid
new file mode 100644
index 0000000000000000000000000000000000000000..dc181ed87a7080d2d8084c94da39b5403e4ad3d5
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/air.liquid
@@ -0,0 +1,42 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      air.liquid;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    inlet
+    {
+        type            fixedValue;
+        value           $internalField;
+    }
+    outlet
+    {
+        type            inletOutlet;
+        phi             phi.liquid;
+        inletValue      $internalField;
+        value           $internalField;
+    }
+    walls
+    {
+        type            zeroGradient;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/alpha.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/alpha.gas
new file mode 100644
index 0000000000000000000000000000000000000000..5169dec6f86a6e852ea9669912040477b5cc2458
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/alpha.gas
@@ -0,0 +1,1926 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      alpha.gas;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   nonuniform List<scalar>
+1875
+(
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+)
+;
+
+boundaryField
+{
+    inlet
+    {
+        type            fixedValue;
+        value           uniform 0.5;
+    }
+    outlet
+    {
+        type            inletOutlet;
+        phi             phi.gas;
+        inletValue      uniform 1;
+        value           uniform 1;
+    }
+    walls
+    {
+        type            zeroGradient;
+    }
+    defaultFaces
+    {
+        type            empty;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/alpha.liquid b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/alpha.liquid
new file mode 100644
index 0000000000000000000000000000000000000000..2fc0873d4f4eb92ff41d818210ba76e7fe899dab
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/alpha.liquid
@@ -0,0 +1,1926 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      alpha.liquid;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   nonuniform List<scalar>
+1875
+(
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+)
+;
+
+boundaryField
+{
+    inlet
+    {
+        type            fixedValue;
+        value           uniform 0.5;
+    }
+    outlet
+    {
+        type            inletOutlet;
+        phi             phi.liquid;
+        inletValue      uniform 0;
+        value           uniform 0;
+    }
+    walls
+    {
+        type            zeroGradient;
+    }
+    defaultFaces
+    {
+        type            empty;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/p b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/p
new file mode 100644
index 0000000000000000000000000000000000000000..961771c727970e5d5259b913d2531a44f025a70f
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/p
@@ -0,0 +1,40 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      p;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions          [ 1 -1 -2 0 0 0 0 ];
+
+internalField       uniform 1e5;
+
+boundaryField
+{
+    inlet
+    {
+        type               calculated;
+        value              $internalField;
+    }
+    outlet
+    {
+        type               calculated;
+        value              $internalField;
+    }
+    walls
+    {
+        type               calculated;
+        value              $internalField;
+    }
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/p_rgh b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/p_rgh
new file mode 100644
index 0000000000000000000000000000000000000000..c816028aaf34844b1f6bd2ec1e3460f9dac8ac29
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/p_rgh
@@ -0,0 +1,40 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      p_rgh;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions          [ 1 -1 -2 0 0 0 0 ];
+
+internalField       uniform 1e5;
+
+boundaryField
+{
+    inlet
+    {
+        type               fixedFluxPressure;
+        value              $internalField;
+    }
+    outlet
+    {
+        type               fixedValue;
+        value              $internalField;
+    }
+    walls
+    {
+        type               fixedFluxPressure;
+        value              $internalField;
+    }
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/water.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/water.gas
new file mode 100644
index 0000000000000000000000000000000000000000..4bb3d7f79b2c2dfc41bb8973bd9c095d8525b315
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/water.gas
@@ -0,0 +1,42 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      water.gas;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    inlet
+    {
+        type            fixedValue;
+        value           $internalField;
+    }
+    outlet
+    {
+        type            inletOutlet;
+        phi             phi.gas;
+        inletValue      $internalField;
+        value           $internalField;
+    }
+    walls
+    {
+        type            zeroGradient;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/water.liquid b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/water.liquid
new file mode 100644
index 0000000000000000000000000000000000000000..51e7d02eb1bcf6481ec779533a3cd52b620e22ff
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/water.liquid
@@ -0,0 +1,42 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      water.liquid;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   uniform 1;
+
+boundaryField
+{
+    inlet
+    {
+        type            fixedValue;
+        value           $internalField;
+    }
+    outlet
+    {
+        type            inletOutlet;
+        phi             phi.liquid;
+        inletValue      $internalField;
+        value           $internalField;
+    }
+    walls
+    {
+        type            zeroGradient;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/g b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/g
new file mode 100644
index 0000000000000000000000000000000000000000..0cc222ca3457ed24bf9753d0926fbee84359e624
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/g
@@ -0,0 +1,22 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       uniformDimensionedVectorField;
+    location    "constant";
+    object      g;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -2 0 0 0 0];
+value           (0 -9.81 0);
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/phaseProperties b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/phaseProperties
new file mode 100644
index 0000000000000000000000000000000000000000..9ac25e45131fa5d1e7e7c62053e0cb54e7673bfb
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/phaseProperties
@@ -0,0 +1,238 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      phaseProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+type    heatMassAndMomentumTransferTwoPhaseSystem;
+
+phases (gas liquid);
+
+gas
+{
+    type            multiComponentPhaseModel;
+    diameterModel   isothermal;
+    isothermalCoeffs
+    {
+        d0              3e-3;
+        p0              1e5;
+    }
+    Sc              0.7;
+
+    residualAlpha   1e-6;
+}
+
+liquid
+{
+    type            multiComponentPhaseModel;
+    diameterModel constant;
+    constantCoeffs
+    {
+        d               1e-4;
+    }
+    Sc              0.7;
+
+    residualAlpha   1e-6;
+}
+
+blending
+{
+    default
+    {
+        type            linear;
+        minFullyContinuousAlpha.gas 0.7;
+        minPartlyContinuousAlpha.gas 0.5;
+        minFullyContinuousAlpha.liquid 0.7;
+        minPartlyContinuousAlpha.liquid 0.5;
+    }
+
+    heatTransferModel
+    {
+        type            linear;
+        minFullyContinuousAlpha.gas 1;
+        minPartlyContinuousAlpha.gas 0;
+        minFullyContinuousAlpha.liquid 1;
+        minPartlyContinuousAlpha.liquid 0;
+    }
+
+    massTransferModel
+    {
+        type            linear;
+        minFullyContinuousAlpha.gas 1;
+        minPartlyContinuousAlpha.gas 0;
+        minFullyContinuousAlpha.liquid 1;
+        minPartlyContinuousAlpha.liquid 0;
+    }
+}
+
+surfaceTension
+(
+    (gas and liquid)
+    {
+        type            constant;
+        sigma           0.07;
+    }
+);
+
+aspectRatio
+(
+    (gas in liquid)
+    {
+        type            constant;
+        E0              1.0;
+    }
+
+    (liquid in gas)
+    {
+        type            constant;
+        E0              1.0;
+    }
+);
+
+drag
+(
+    (gas in liquid)
+    {
+        type            SchillerNaumann;
+        residualRe      1e-3;
+        swarmCorrection
+        {
+            type        none;
+        }
+    }
+
+    (liquid in gas)
+    {
+        type            SchillerNaumann;
+        residualRe      1e-3;
+        swarmCorrection
+        {
+            type        none;
+        }
+    }
+);
+
+virtualMass
+(
+    (gas in liquid)
+    {
+        type            constantCoefficient;
+        Cvm             0.5;
+    }
+
+    (liquid in gas)
+    {
+        type            constantCoefficient;
+        Cvm             0.5;
+    }
+);
+
+interfaceComposition
+(
+    (gas in liquid)
+    {
+        type Saturated;
+        species ( water );
+        Le 1.0;
+        saturationPressure
+        {
+            type ArdenBuck;
+        }
+    }
+
+    (liquid in gas)
+    {
+        type Henry;
+        species ( air );
+        k ( 1.492e-2 );
+        Le 1.0;
+    }
+);
+
+heatTransfer.gas
+(
+    (gas in liquid)
+    {
+        type spherical;
+        residualAlpha 1e-4;
+    }
+
+    (liquid in gas)
+    {
+        type RanzMarshall;
+        residualAlpha 1e-4;
+    }
+);
+
+heatTransfer.liquid
+(
+    (gas in liquid)
+    {
+        type RanzMarshall;
+        residualAlpha 1e-4;
+    }
+
+    (liquid in gas)
+    {
+        type spherical;
+        residualAlpha 1e-4;
+    }
+);
+
+massTransfer.gas
+(
+    (gas in liquid)
+    {
+        type spherical;
+        Le 1.0;
+    }
+
+    (liquid in gas)
+    {
+        type Frossling;
+        Le 1.0;
+    }
+);
+
+massTransfer.liquid
+(
+    (gas in liquid)
+    {
+        type Frossling;
+        Le 1.0;
+    }
+
+    (liquid in gas)
+    {
+        type spherical;
+        Le 1.0;
+    }
+);
+
+lift
+(
+);
+
+wallLubrication
+(
+);
+
+turbulentDispersion
+(
+);
+
+// Minimum allowable pressure
+pMin            10000;
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/polyMesh/boundary b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/polyMesh/boundary
new file mode 100644
index 0000000000000000000000000000000000000000..4564ccc46a64685c98cc53274688263dee85086a
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/polyMesh/boundary
@@ -0,0 +1,48 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       polyBoundaryMesh;
+    location    "constant/polyMesh";
+    object      boundary;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+4
+(
+    inlet
+    {
+        type            patch;
+        nFaces          25;
+        startFace       3650;
+    }
+    outlet
+    {
+        type            patch;
+        nFaces          25;
+        startFace       3675;
+    }
+    walls
+    {
+        type            wall;
+        inGroups        1(wall);
+        nFaces          150;
+        startFace       3700;
+    }
+    defaultFaces
+    {
+        type            empty;
+        inGroups        1(empty);
+        nFaces          3750;
+        startFace       3850;
+    }
+)
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/thermophysicalProperties.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/thermophysicalProperties.gas
new file mode 100644
index 0000000000000000000000000000000000000000..8b8132932860b9c9eda4657c887da7d5bb17c25e
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/thermophysicalProperties.gas
@@ -0,0 +1,76 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      thermophysicalProperties.gas;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+thermoType
+{
+    type            heRhoThermo;
+    mixture         multiComponentMixture;
+    transport       const;
+    thermo          hConst;
+    equationOfState perfectGas;
+    specie          specie;
+    energy          sensibleInternalEnergy;
+}
+
+species
+(
+    air
+    water
+);
+
+inertSpecie air;
+
+"(mixture|air)"
+{
+    specie
+    {
+        nMoles      1;
+        molWeight   28.9;
+    }
+    thermodynamics
+    {
+        Hf          0;
+        Cp          1012.5;
+    }
+    transport
+    {
+        mu          1.84e-05;
+        Pr          0.7;
+    }
+}
+
+water
+{
+    specie
+    {
+        nMoles      1;
+        molWeight   18.0153;
+    }
+    thermodynamics
+    {
+        Hf          -1.3435e+07;
+        Cp          1857.8;
+    }
+    transport
+    {
+        mu          1.84e-05;
+        Pr          0.7;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/thermophysicalProperties.liquid b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/thermophysicalProperties.liquid
new file mode 100644
index 0000000000000000000000000000000000000000..22a48eded3b2d2c2893d46c9f0198f070da7b6ed
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/thermophysicalProperties.liquid
@@ -0,0 +1,86 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      thermophysicalProperties.liquid;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+thermoType
+{
+    type            heRhoThermo;
+    mixture         multiComponentMixture;
+    transport       const;
+    thermo          hConst;
+    equationOfState perfectFluid;
+    specie          specie;
+    energy          sensibleInternalEnergy;
+}
+
+species
+(
+    air
+    water
+);
+
+inertSpecie water;
+
+"(mixture|water)"
+{
+    specie
+    {
+        nMoles      1;
+        molWeight   18.0153;
+    }
+    equationOfState
+    {
+        R           3000;
+        rho0        1027;
+    }
+    thermodynamics
+    {
+        Hf          -1.5879e+07;
+        Cp          4195;
+    }
+    transport
+    {
+        mu          3.645e-4;
+        Pr          2.289;
+    }
+}
+
+air
+{
+    specie
+    {
+        nMoles      1;
+        molWeight   28.9;
+    }
+    equationOfState
+    {
+        R           3000;
+        rho0        1027;
+    }
+    thermodynamics
+    {
+        Hf          0;
+        Cp          4195;
+    }
+    transport
+    {
+        mu          3.645e-4;
+        Pr          2.289;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/turbulenceProperties.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/turbulenceProperties.gas
new file mode 100644
index 0000000000000000000000000000000000000000..1db1a26701655056fe19426b3e2cf045bf9abd86
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/turbulenceProperties.gas
@@ -0,0 +1,20 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      turbulenceProperties.gas;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+simulationType  laminar;
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/turbulenceProperties.liquid b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/turbulenceProperties.liquid
new file mode 100644
index 0000000000000000000000000000000000000000..8a2a00b53a88aa00c567160859e6a016a98457b8
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/turbulenceProperties.liquid
@@ -0,0 +1,20 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      turbulenceProperties.liquid;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+simulationType  laminar;
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/system/blockMeshDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/system/blockMeshDict
new file mode 100644
index 0000000000000000000000000000000000000000..d03967afdc2ccf7afbecdf32d50159c309a475e3
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/system/blockMeshDict
@@ -0,0 +1,61 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      blockMeshDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+convertToMeters 1;
+
+vertices
+(
+    (0 0 0)
+    (0.15 0 0)
+    (0.15 1 0)
+    (0 1 0)
+    (0 0 0.1)
+    (0.15 0 0.1)
+    (0.15 1 0.1)
+    (0 1 0.1)
+);
+
+blocks
+(
+    hex (0 1 2 3 4 5 6 7) (25 75 1) simpleGrading (1 1 1)
+);
+
+edges
+(
+);
+
+patches
+(
+    patch inlet
+    (
+        (1 5 4 0)
+    )
+    patch outlet
+    (
+        (3 7 6 2)
+    )
+    wall walls
+    (
+        (0 4 7 3)
+        (2 6 5 1)
+    )
+);
+
+mergePatchPairs
+(
+);
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/system/controlDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/system/controlDict
new file mode 100644
index 0000000000000000000000000000000000000000..d24ddcc3662413cc476aa5ae29772fe4b47bf2a6
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/system/controlDict
@@ -0,0 +1,55 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      controlDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+application     reactingTwoPhaseEulerFoam;
+
+startFrom       startTime;
+
+startTime       0;
+
+stopAt          endTime;
+
+endTime         100;
+
+deltaT          0.0025;
+
+writeControl    runTime;
+
+writeInterval   1;
+
+purgeWrite      0;
+
+writeFormat     ascii;
+
+writePrecision  10;
+
+writeCompression uncompressed;
+
+timeFormat      general;
+
+timePrecision   6;
+
+runTimeModifiable yes;
+
+adjustTimeStep  no;
+
+maxCo           0.5;
+
+maxDeltaT       1;
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/system/fvSchemes b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/system/fvSchemes
new file mode 100644
index 0000000000000000000000000000000000000000..fd4e48c43da170209f5e2203a3d0f830925dea21
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/system/fvSchemes
@@ -0,0 +1,68 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      fvSchemes;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ddtSchemes
+{
+    default         Euler;
+}
+
+gradSchemes
+{
+    default         Gauss linear;
+}
+
+divSchemes
+{
+    default                         none;
+
+    "div\(phi,alpha.*\)"            Gauss vanLeer;
+    "div\(phir,alpha.*\)"           Gauss vanLeer;
+
+    "div\(alphaRhoPhi.*,U.*\)"      Gauss limitedLinearV 1;
+    "div\(phi.*,U.*\)"              Gauss limitedLinearV 1;
+
+    "div\(alphaRhoPhi.*,Yi\)"       Gauss limitedLinear 1;
+    "div\(alphaRhoPhi.*,(h|e).*\)"  Gauss limitedLinear 1;
+    "div\(alphaRhoPhi.*,K.*\)"      Gauss limitedLinear 1;
+    "div\(alphaPhi.*,p\)"           Gauss limitedLinear 1;
+
+    "div\(\(\(\(alpha.**thermo:rho.*\)*nuEff.*\)*dev2\(T\(grad\(U.*\)\)\)\)\)" Gauss linear;
+}
+
+laplacianSchemes
+{
+    default         Gauss linear uncorrected;
+}
+
+interpolationSchemes
+{
+    default         linear;
+}
+
+snGradSchemes
+{
+    default         uncorrected;
+}
+
+fluxRequired
+{
+    default         no;
+    p_rgh;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/system/fvSolution b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/system/fvSolution
new file mode 100644
index 0000000000000000000000000000000000000000..8f0f1704581f1e2704ed4212dbba1499334d9948
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/system/fvSolution
@@ -0,0 +1,92 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      fvSolution;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+solvers
+{
+    "alpha.*"
+    {
+        nAlphaCorr      1;
+        nAlphaSubCycles 3;
+    }
+
+    p_rgh
+    {
+        solver          GAMG;
+        smoother        DIC;
+        nPreSweeps      0;
+        nPostSweeps     2;
+        nFinestSweeps   2;
+        cacheAgglomeration true;
+        nCellsInCoarsestLevel 10;
+        agglomerator    faceAreaPair;
+        mergeLevels     1;
+        tolerance       1e-12;
+        relTol          0.001;
+    }
+
+    p_rghFinal
+    {
+        $p_rgh;
+        relTol          0;
+    }
+
+    "U.*"
+    {
+        solver          smoothSolver;
+        smoother        symGaussSeidel;
+        tolerance       1e-12;
+        relTol          0;
+        minIter         1;
+    }
+
+    "(e|h).*"
+    {
+        solver          smoothSolver;
+        smoother        symGaussSeidel;
+        tolerance       1e-12;
+        relTol          0;
+        minIter         1;
+    }
+
+    Yi
+    {
+        solver          smoothSolver;
+        smoother        symGaussSeidel;
+        tolerance       1e-12;
+        relTol          0;
+        minIter         1;
+        residualAlpha   1e-8;
+    }
+}
+
+PIMPLE
+{
+    nOuterCorrectors 5;
+    nCorrectors      1;
+    nNonOrthogonalCorrectors 0;
+}
+
+relaxationFactors
+{
+    equations
+    {
+        ".*"            1;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/system/setFieldsDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/system/setFieldsDict
new file mode 100644
index 0000000000000000000000000000000000000000..facd52f351b499a4dcb9cfc2b34db5cb63058e4d
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/system/setFieldsDict
@@ -0,0 +1,38 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      setFieldsDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+defaultFieldValues
+(
+    volScalarFieldValue alpha.gas 1
+    volScalarFieldValue alpha.liquid 0
+);
+
+regions
+(
+    boxToCell
+    {
+        box (0 0 0) (0.15 0.501 0.1);
+        fieldValues
+        (
+            volScalarFieldValue alpha.gas 0
+            volScalarFieldValue alpha.liquid 1
+        );
+    }
+);
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/T.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/T.air
new file mode 100644
index 0000000000000000000000000000000000000000..9c0fd4206c19f34a05d8c05da28254b22882ebcf
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/T.air
@@ -0,0 +1,45 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      Tair;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions          [0 0 0 1 0 0 0];
+
+internalField       uniform 300;
+
+boundaryField
+{
+    walls
+    {
+        type               zeroGradient;
+    }
+    outlet
+    {
+        type               inletOutlet;
+        phi                phi.air;
+        inletValue         $internalField;
+        value              $internalField;
+    }
+    inlet
+    {
+        type               fixedValue;
+        value              $internalField;
+    }
+    frontAndBackPlanes
+    {
+        type               empty;
+    }
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/T.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/T.water
new file mode 100644
index 0000000000000000000000000000000000000000..1cfd38f926516878085292090cf2e55699fef0cb
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/T.water
@@ -0,0 +1,45 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      Twater;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions          [0 0 0 1 0 0 0];
+
+internalField       uniform 350;
+
+boundaryField
+{
+    walls
+    {
+        type               zeroGradient;
+    }
+    outlet
+    {
+        type               inletOutlet;
+        phi                phi.water;
+        inletValue         uniform 300;
+        value              $internalField;
+    }
+    inlet
+    {
+        type               fixedValue;
+        value              $internalField;
+    }
+    frontAndBackPlanes
+    {
+        type               empty;
+    }
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/Theta b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/Theta
new file mode 100644
index 0000000000000000000000000000000000000000..e45304b83464ea6a9568531b35b570abae0d768f
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/Theta
@@ -0,0 +1,47 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      Theta;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions          [ 0 2 -2 0 0 0 0 ];
+
+internalField   uniform 0.0;
+
+boundaryField
+{
+    inlet
+    {
+        type            fixedValue;
+        value           uniform 1.0e-7;
+    }
+
+    outlet
+    {
+        type            inletOutlet;
+        inletValue      uniform 1.0e-7;
+        value           uniform 1.0e-7;
+    }
+
+    walls
+    {
+        type            zeroGradient;
+    }
+
+    defaultFaces
+    {
+        type            empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/U.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/U.air
new file mode 100644
index 0000000000000000000000000000000000000000..e81fffac0612e0a20d26f1cb9be4211ba4be9a16
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/U.air
@@ -0,0 +1,41 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      binary;
+    class       volVectorField;
+    object      U.air;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -1 0 0 0 0];
+
+internalField   uniform (0 0.1 0);
+
+boundaryField
+{
+    inlet
+    {
+        type               fixedValue;
+        value              $internalField;
+    }
+    outlet
+    {
+        type               pressureInletOutletVelocity;
+        phi                phi.air;
+        value              $internalField;
+    }
+    walls
+    {
+        type               fixedValue;
+        value              uniform (0 0 0);
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/U.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/U.water
new file mode 100644
index 0000000000000000000000000000000000000000..aab00fd78bb2a097604737fb5b1b77d2ae159967
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/U.water
@@ -0,0 +1,41 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      binary;
+    class       volVectorField;
+    object      U.water;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -1 0 0 0 0];
+
+internalField   uniform (0 0 0);
+
+boundaryField
+{
+    inlet
+    {
+        type               fixedValue;
+        value              $internalField;
+    }
+    outlet
+    {
+        type               pressureInletOutletVelocity;
+        phi                phi.water;
+        value              $internalField;
+    }
+    walls
+    {
+        type               fixedValue;
+        value              uniform (0 0 0);
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/alpha.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/alpha.air
new file mode 100644
index 0000000000000000000000000000000000000000..1b1a35684a06787a1eb3cb75f388563aad1443a1
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/alpha.air
@@ -0,0 +1,1926 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      alpha.air;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   nonuniform List<scalar>
+1875
+(
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+)
+;
+
+boundaryField
+{
+    inlet
+    {
+        type            fixedValue;
+        value           uniform 0.5;
+    }
+    outlet
+    {
+        type            inletOutlet;
+        phi             phi.air;
+        inletValue      uniform 1;
+        value           uniform 1;
+    }
+    walls
+    {
+        type            zeroGradient;
+    }
+    defaultFaces
+    {
+        type            empty;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/alpha.air.org b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/alpha.air.org
new file mode 100644
index 0000000000000000000000000000000000000000..4472b0c63598b7f95acf8d79fac10b3e9a08ebf7
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/alpha.air.org
@@ -0,0 +1,42 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      alpha.air;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    inlet
+    {
+        type            fixedValue;
+        value           uniform 0.5;
+    }
+    outlet
+    {
+        type            inletOutlet;
+        phi             phi.air;
+        inletValue      uniform 1;
+        value           uniform 1;
+    }
+    walls
+    {
+        type            zeroGradient;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/kappai.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/kappai.air
new file mode 100644
index 0000000000000000000000000000000000000000..cd5560fb91c54e17ae70b91f32c52ef8fde3aa56
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/kappai.air
@@ -0,0 +1,45 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      kappai.air;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions          [0 -1 0 0 0 0 0];
+
+internalField       uniform 2000;
+
+boundaryField
+{
+    walls
+    {
+        type               zeroGradient;
+    }
+    outlet
+    {
+        type               inletOutlet;
+        phi                phi.air;
+        inletValue         $internalField;
+        value              $internalField;
+    }
+    inlet
+    {
+        type               fixedValue;
+        value              $internalField;
+    }
+    frontAndBackPlanes
+    {
+        type               empty;
+    }
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/p b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/p
new file mode 100644
index 0000000000000000000000000000000000000000..961771c727970e5d5259b913d2531a44f025a70f
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/p
@@ -0,0 +1,40 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      p;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions          [ 1 -1 -2 0 0 0 0 ];
+
+internalField       uniform 1e5;
+
+boundaryField
+{
+    inlet
+    {
+        type               calculated;
+        value              $internalField;
+    }
+    outlet
+    {
+        type               calculated;
+        value              $internalField;
+    }
+    walls
+    {
+        type               calculated;
+        value              $internalField;
+    }
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/p_rgh b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/p_rgh
new file mode 100644
index 0000000000000000000000000000000000000000..c816028aaf34844b1f6bd2ec1e3460f9dac8ac29
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/p_rgh
@@ -0,0 +1,40 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      p_rgh;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions          [ 1 -1 -2 0 0 0 0 ];
+
+internalField       uniform 1e5;
+
+boundaryField
+{
+    inlet
+    {
+        type               fixedFluxPressure;
+        value              $internalField;
+    }
+    outlet
+    {
+        type               fixedValue;
+        value              $internalField;
+    }
+    walls
+    {
+        type               fixedFluxPressure;
+        value              $internalField;
+    }
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/g b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/g
new file mode 100644
index 0000000000000000000000000000000000000000..0cc222ca3457ed24bf9753d0926fbee84359e624
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/g
@@ -0,0 +1,22 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       uniformDimensionedVectorField;
+    location    "constant";
+    object      g;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -2 0 0 0 0];
+value           (0 -9.81 0);
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/phaseProperties b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/phaseProperties
new file mode 100644
index 0000000000000000000000000000000000000000..e46eefe31725c340be28636af3535333a0febd04
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/phaseProperties
@@ -0,0 +1,186 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      phaseProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+type heatAndMomentumTransferTwoPhaseSystem;
+
+phases (air water);
+
+air
+{
+    type            purePhaseModel;
+
+    diameterModel   IATE;
+
+    IATECoeffs
+    {
+        dMax 1e-2;
+        dMin 1e-4;
+        residualAlpha 1e-6;
+
+        sources
+        (
+            wakeEntrainmentCoalescence
+            {
+                Cwe         0.002;
+            }
+            randomCoalescence
+            {
+                Crc         0.04;
+                C           3;
+                alphaMax    0.75;
+            }
+            turbulentBreakUp
+            {
+                Cti         0.085;
+                WeCr        6;
+            }
+        );
+    }
+
+    residualAlpha   1e-6;
+}
+
+water
+{
+    type          purePhaseModel;
+    diameterModel constant;
+    constantCoeffs
+    {
+        d               1e-4;
+    }
+
+    residualAlpha   1e-6;
+}
+
+blending
+{
+    default
+    {
+        type            linear;
+        minFullyContinuousAlpha.air 0.7;
+        minPartlyContinuousAlpha.air 0.5;
+        minFullyContinuousAlpha.water 0.7;
+        minPartlyContinuousAlpha.water 0.5;
+    }
+}
+
+surfaceTension
+(
+    (air and water)
+    {
+        type            constant;
+        sigma           0.07;
+    }
+);
+
+aspectRatio
+(
+    (air in water)
+    {
+        type            constant;
+        E0              1.0;
+    }
+
+    (water in air)
+    {
+        type            constant;
+        E0              1.0;
+    }
+);
+
+drag
+(
+    (air in water)
+    {
+        type            SchillerNaumann;
+        residualRe      1e-3;
+        swarmCorrection
+        {
+            type        none;
+        }
+    }
+
+    (water in air)
+    {
+        type            SchillerNaumann;
+        residualRe      1e-3;
+        swarmCorrection
+        {
+            type        none;
+        }
+    }
+
+    (air and water)
+    {
+        type            segregated;
+        residualAlpha   1e-6;
+        m               0.5;
+        n               8;
+        swarmCorrection
+        {
+            type        none;
+        }
+    }
+);
+
+virtualMass
+(
+    (air in water)
+    {
+        type            constantCoefficient;
+        Cvm             0.5;
+    }
+
+    (water in air)
+    {
+        type            constantCoefficient;
+        Cvm             0.5;
+    }
+);
+
+heatTransfer
+(
+    (air in water)
+    {
+        type            RanzMarshall;
+        residualAlpha   1e-4;
+    }
+
+    (water in air)
+    {
+        type            RanzMarshall;
+        residualAlpha   1e-4;
+    }
+);
+
+lift
+(
+);
+
+wallLubrication
+(
+);
+
+turbulentDispersion
+(
+);
+
+// Minimum allowable pressure
+pMin            10000;
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/polyMesh/boundary b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/polyMesh/boundary
new file mode 100644
index 0000000000000000000000000000000000000000..4564ccc46a64685c98cc53274688263dee85086a
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/polyMesh/boundary
@@ -0,0 +1,48 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       polyBoundaryMesh;
+    location    "constant/polyMesh";
+    object      boundary;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+4
+(
+    inlet
+    {
+        type            patch;
+        nFaces          25;
+        startFace       3650;
+    }
+    outlet
+    {
+        type            patch;
+        nFaces          25;
+        startFace       3675;
+    }
+    walls
+    {
+        type            wall;
+        inGroups        1(wall);
+        nFaces          150;
+        startFace       3700;
+    }
+    defaultFaces
+    {
+        type            empty;
+        inGroups        1(empty);
+        nFaces          3750;
+        startFace       3850;
+    }
+)
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/thermophysicalProperties.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/thermophysicalProperties.air
new file mode 100644
index 0000000000000000000000000000000000000000..befc0aeae449cccc50a24e955083b88b914aba67
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/thermophysicalProperties.air
@@ -0,0 +1,49 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      thermophysicalProperties.air;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+thermoType
+{
+    type            heRhoThermo;
+    mixture         pureMixture;
+    transport       const;
+    thermo          hConst;
+    equationOfState perfectGas;
+    specie          specie;
+    energy          sensibleInternalEnergy;
+}
+
+mixture
+{
+    specie
+    {
+        nMoles      1;
+        molWeight   28.9;
+    }
+    thermodynamics
+    {
+        Cp          1007;
+        Hf          0;
+    }
+    transport
+    {
+        mu          1.84e-05;
+        Pr          0.7;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/thermophysicalProperties.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/thermophysicalProperties.water
new file mode 100644
index 0000000000000000000000000000000000000000..c44c005d3b17561dc32c9e32262b37dc348aecc3
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/thermophysicalProperties.water
@@ -0,0 +1,54 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      thermophysicalProperties.water;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+thermoType
+{
+    type            heRhoThermo;
+    mixture         pureMixture;
+    transport       const;
+    thermo          hConst;
+    equationOfState perfectFluid;
+    specie          specie;
+    energy          sensibleInternalEnergy;
+}
+
+mixture
+{
+    specie
+    {
+        nMoles      1;
+        molWeight   18;
+    }
+    equationOfState
+    {
+        R           3000;
+        rho0        1027;
+    }
+    thermodynamics
+    {
+        Cp          4195;
+        Hf          0;
+    }
+    transport
+    {
+        mu          3.645e-4;
+        Pr          2.289;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/turbulenceProperties.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/turbulenceProperties.air
new file mode 100644
index 0000000000000000000000000000000000000000..1296429b72a21953def920b08774aa75e1d048b1
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/turbulenceProperties.air
@@ -0,0 +1,20 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      turbulenceProperties.air;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+simulationType  laminar;
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/turbulenceProperties.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/turbulenceProperties.water
new file mode 100644
index 0000000000000000000000000000000000000000..7f0d75a82fcdc99677fa0be8a4111cfe91e4a82c
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/turbulenceProperties.water
@@ -0,0 +1,20 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      turbulenceProperties.water;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+simulationType  laminar;
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/system/blockMeshDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/system/blockMeshDict
new file mode 100644
index 0000000000000000000000000000000000000000..d03967afdc2ccf7afbecdf32d50159c309a475e3
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/system/blockMeshDict
@@ -0,0 +1,61 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      blockMeshDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+convertToMeters 1;
+
+vertices
+(
+    (0 0 0)
+    (0.15 0 0)
+    (0.15 1 0)
+    (0 1 0)
+    (0 0 0.1)
+    (0.15 0 0.1)
+    (0.15 1 0.1)
+    (0 1 0.1)
+);
+
+blocks
+(
+    hex (0 1 2 3 4 5 6 7) (25 75 1) simpleGrading (1 1 1)
+);
+
+edges
+(
+);
+
+patches
+(
+    patch inlet
+    (
+        (1 5 4 0)
+    )
+    patch outlet
+    (
+        (3 7 6 2)
+    )
+    wall walls
+    (
+        (0 4 7 3)
+        (2 6 5 1)
+    )
+);
+
+mergePatchPairs
+(
+);
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/system/controlDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/system/controlDict
new file mode 100644
index 0000000000000000000000000000000000000000..26877364f246abe22650b7f6e479cb60e83cd144
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/system/controlDict
@@ -0,0 +1,95 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      controlDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+application     reactingTwoPhaseEulerFoam;
+
+startFrom       startTime;
+
+startTime       0;
+
+stopAt          endTime;
+
+endTime         100;
+
+deltaT          0.005;
+
+writeControl    runTime;
+
+writeInterval   1;
+
+purgeWrite      0;
+
+writeFormat     ascii;
+
+writePrecision  6;
+
+writeCompression uncompressed;
+
+timeFormat      general;
+
+timePrecision   6;
+
+runTimeModifiable yes;
+
+adjustTimeStep  no;
+
+maxCo           0.5;
+
+maxDeltaT       1;
+
+functions
+{
+    fieldAverage1
+    {
+        type            fieldAverage;
+        functionObjectLibs ( "libfieldFunctionObjects.so" );
+        outputControl   outputTime;
+        fields
+        (
+            U.air
+            {
+                 mean        on;
+                 prime2Mean  off;
+                 base        time;
+            }
+
+            U.water
+            {
+                 mean        on;
+                 prime2Mean  off;
+                 base        time;
+            }
+
+            alpha.air
+            {
+                 mean        on;
+                 prime2Mean  off;
+                 base        time;
+            }
+
+            p
+            {
+                 mean        on;
+                 prime2Mean  off;
+                 base        time;
+            }
+        );
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/system/fvSchemes b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/system/fvSchemes
new file mode 100644
index 0000000000000000000000000000000000000000..e17b4cee5264b88b332fc8e27de7b2eac03f4c9a
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/system/fvSchemes
@@ -0,0 +1,69 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      fvSchemes;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ddtSchemes
+{
+    default         Euler;
+}
+
+gradSchemes
+{
+    default         Gauss linear;
+}
+
+divSchemes
+{
+    default                         none;
+
+    div(phi,alpha.air)              Gauss vanLeer;
+    div(phir,alpha.air)             Gauss vanLeer;
+
+    "div\(alphaRhoPhi.*,U.*\)"      Gauss limitedLinearV 1;
+    "div\(phi.*,U.*\)"              Gauss limitedLinearV 1;
+
+    div(phi.air,kappai.air)         Gauss vanLeer;
+
+    "div\(alphaRhoPhi.*,(h|e).*\)"  Gauss limitedLinear 1;
+    "div\(alphaRhoPhi.*,K.*\)"      Gauss limitedLinear 1;
+    "div\(alphaPhi.*,p\)"           Gauss limitedLinear 1;
+
+    "div\(\(\(\(alpha.**thermo:rho.*\)*nuEff.*\)*dev2\(T\(grad\(U.*\)\)\)\)\)" Gauss linear;
+}
+
+laplacianSchemes
+{
+    default         Gauss linear uncorrected;
+}
+
+interpolationSchemes
+{
+    default         linear;
+}
+
+snGradSchemes
+{
+    default         uncorrected;
+}
+
+fluxRequired
+{
+    default         no;
+    p_rgh;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/system/fvSolution b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/system/fvSolution
new file mode 100644
index 0000000000000000000000000000000000000000..171537ad3172756755c138b73845168d27b50805
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/system/fvSolution
@@ -0,0 +1,82 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      fvSolution;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+solvers
+{
+    alpha.air
+    {
+        nAlphaCorr      1;
+        nAlphaSubCycles 2;
+    }
+
+    p_rgh
+    {
+        solver          GAMG;
+        smoother        DIC;
+        nPreSweeps      0;
+        nPostSweeps     2;
+        nFinestSweeps   2;
+        cacheAgglomeration true;
+        nCellsInCoarsestLevel 10;
+        agglomerator    faceAreaPair;
+        mergeLevels     1;
+        tolerance       1e-8;
+        relTol          0.01;
+    }
+
+    p_rghFinal
+    {
+        $p_rgh;
+        relTol          0;
+    }
+
+    "(U|kappai).*"
+    {
+        solver          smoothSolver;
+        smoother        symGaussSeidel;
+        tolerance       1e-5;
+        relTol          0;
+        minIter         1;
+    }
+
+    "e.*"
+    {
+        solver          smoothSolver;
+        smoother        symGaussSeidel;
+        tolerance       1e-8;
+        relTol          0;
+        minIter         1;
+    }
+}
+
+PIMPLE
+{
+    nOuterCorrectors 3;
+    nCorrectors      1;
+    nNonOrthogonalCorrectors 0;
+}
+
+relaxationFactors
+{
+    equations
+    {
+        ".*"            1;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/system/setFieldsDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/system/setFieldsDict
new file mode 100644
index 0000000000000000000000000000000000000000..85996cf966762c6ca3a7c37a1eaa8ae462ecdb19
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/system/setFieldsDict
@@ -0,0 +1,36 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      setFieldsDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+defaultFieldValues
+(
+    volScalarFieldValue alpha1 1
+);
+
+regions
+(
+    boxToCell
+    {
+        box (0 0 -0.1) (0.15 0.701 0.1);
+        fieldValues
+        (
+            volScalarFieldValue alphaair 0
+        );
+    }
+);
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/T.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/T.air
new file mode 100644
index 0000000000000000000000000000000000000000..de0ac66f78009070f3e2aaba4c8b5a4b79bc9f6b
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/T.air
@@ -0,0 +1,48 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      T.air;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions          [0 0 0 1 0 0 0];
+
+internalField       uniform 600;
+
+boundaryField
+{
+    inlet
+    {
+        type               fixedValue;
+        value              uniform 300;
+    }
+
+    outlet
+    {
+        type               inletOutlet;
+        phi                phi.air;
+        inletValue         uniform 300;
+        value              uniform 300;
+    }
+
+    walls
+    {
+        type               zeroGradient;
+    }
+
+    frontAndBackPlanes
+    {
+        type               empty;
+    }
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/T.particles b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/T.particles
new file mode 100644
index 0000000000000000000000000000000000000000..5762b51bd8e92a7a48f6b3f63a39d7192a0b8e0c
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/T.particles
@@ -0,0 +1,47 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      T.particles;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions          [0 0 0 1 0 0 0];
+
+internalField       uniform 600;
+
+boundaryField
+{
+    inlet
+    {
+        type               zeroGradient;
+    }
+
+    outlet
+    {
+        type               inletOutlet;
+        phi                phi.particles;
+        inletValue         uniform 300;
+        value              uniform 300;
+    }
+
+    walls
+    {
+        type               zeroGradient;
+    }
+
+    frontAndBackPlanes
+    {
+        type               empty;
+    }
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/Theta.particles b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/Theta.particles
new file mode 100644
index 0000000000000000000000000000000000000000..c9b385ccd8b7ceba80aa3332b0c25b85d8328566
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/Theta.particles
@@ -0,0 +1,47 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      Theta.particles;
+}
+// ************************************************************************* //
+
+dimensions          [ 0 2 -2 0 0 0 0 ];
+
+internalField       uniform 0;
+
+referenceLevel      1e-4;
+
+boundaryField
+{
+    inlet
+    {
+        type               fixedValue;
+        value              uniform 1e-4;
+    }
+
+    outlet
+    {
+        type               zeroGradient;
+    }
+
+    walls
+    {
+        type               zeroGradient;
+    }
+
+    frontAndBackPlanes
+    {
+        type               empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/U.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/U.air
new file mode 100644
index 0000000000000000000000000000000000000000..a9af55993e23ff26e112eb927135b6667f7d6f45
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/U.air
@@ -0,0 +1,50 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volVectorField;
+    object      U.air;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -1 0 0 0 0];
+
+internalField   uniform (0 0.25 0);
+
+boundaryField
+{
+    inlet
+    {
+        type               interstitialInletVelocity;
+        inletVelocity      uniform (0 0.25 0);
+        alpha              alpha.air;
+        value              $internalField;
+    }
+
+    outlet
+    {
+        type               pressureInletOutletVelocity;
+        phi                phi.air;
+        value              $internalField;
+    }
+
+    walls
+    {
+        type            fixedValue;
+        value           uniform (0 0 0);
+    }
+
+    frontAndBackPlanes
+    {
+        type               empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/U.particles b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/U.particles
new file mode 100644
index 0000000000000000000000000000000000000000..fa0397ae355df01d3b11bdd17eda31f4c5ed636a
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/U.particles
@@ -0,0 +1,47 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volVectorField;
+    object      U.particles;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -1 0 0 0 0];
+
+internalField   uniform (0 0 0);
+
+boundaryField
+{
+    inlet
+    {
+        type               fixedValue;
+        value              uniform (0 0 0);
+    }
+
+    outlet
+    {
+        type               fixedValue;
+        value              uniform (0 0 0);
+    }
+
+    walls
+    {
+        type               fixedValue;
+        value              uniform (0 0 0);
+    }
+
+    frontAndBackPlanes
+    {
+        type               empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/alpha.particles b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/alpha.particles
new file mode 100644
index 0000000000000000000000000000000000000000..cf55161b4a5c380ee0bd2ce31687f4af99e2cd5d
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/alpha.particles
@@ -0,0 +1,6047 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      alpha.particles;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   nonuniform List<scalar>
+6000
+(
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0.55
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+)
+;
+
+boundaryField
+{
+    inlet
+    {
+        type            zeroGradient;
+    }
+    outlet
+    {
+        type            zeroGradient;
+    }
+    walls
+    {
+        type            zeroGradient;
+    }
+    frontAndBackPlanes
+    {
+        type            empty;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/alpha.particles.org b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/alpha.particles.org
new file mode 100644
index 0000000000000000000000000000000000000000..b28a5a97d9b1034a39925ead65f04cd371860b89
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/alpha.particles.org
@@ -0,0 +1,44 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      alpha.particles;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    inlet
+    {
+        type            zeroGradient;
+    }
+
+    outlet
+    {
+        type            zeroGradient;
+    }
+
+    walls
+    {
+        type            zeroGradient;
+    }
+
+    frontAndBackPlanes
+    {
+        type            empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/epsilon.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/epsilon.air
new file mode 100644
index 0000000000000000000000000000000000000000..0b5f62a356b3f5a9ce5db5401e0b4f29bc1e4fc9
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/epsilon.air
@@ -0,0 +1,49 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      epsilon.air;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions          [0 2 -3 0 0 0 0];
+
+internalField       uniform 10;
+
+boundaryField
+{
+    inlet
+    {
+        type               fixedValue;
+        value              $internalField;
+    }
+
+    outlet
+    {
+        type               inletOutlet;
+        phi                phi.air;
+        inletValue         $internalField;
+        value              $internalField;
+    }
+
+    walls
+    {
+        type               epsilonWallFunction;
+        value              $internalField;
+    }
+
+    frontAndBackPlanes
+    {
+        type               empty;
+    }
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/k.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/k.air
new file mode 100644
index 0000000000000000000000000000000000000000..307a3495c9352c23273259a2af606fb730e96d63
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/k.air
@@ -0,0 +1,49 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      k.air;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions          [0 2 -2 0 0 0 0];
+
+internalField       uniform 1;
+
+boundaryField
+{
+    inlet
+    {
+        type               fixedValue;
+        value              $internalField;
+    }
+
+    outlet
+    {
+        type               inletOutlet;
+        phi                phi.air;
+        inletValue         $internalField;
+        value              $internalField;
+    }
+
+    walls
+    {
+        type               kqRWallFunction;
+        value              $internalField;
+    }
+
+    frontAndBackPlanes
+    {
+        type               empty;
+    }
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/nut.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/nut.air
new file mode 100644
index 0000000000000000000000000000000000000000..dcb65148ae4e0675d7368e0bea77ff0db7f72e60
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/nut.air
@@ -0,0 +1,47 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      nut.air;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions          [0 2 -1 0 0 0 0];
+
+internalField       uniform 0;
+
+boundaryField
+{
+    inlet
+    {
+        type               calculated;
+        value              $internalField;
+    }
+
+    outlet
+    {
+        type               calculated;
+        value              $internalField;
+    }
+
+    walls
+    {
+        type               nutkWallFunction;
+        value              $internalField;
+    }
+
+    frontAndBackPlanes
+    {
+        type               empty;
+    }
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/nut.particles b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/nut.particles
new file mode 100644
index 0000000000000000000000000000000000000000..6264a273f79124da66e26f9f2edf102259ac0874
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/nut.particles
@@ -0,0 +1,47 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      nut.particles;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions          [0 2 -1 0 0 0 0];
+
+internalField       uniform 0;
+
+boundaryField
+{
+    inlet
+    {
+        type               calculated;
+        value              $internalField;
+    }
+
+    outlet
+    {
+        type               calculated;
+        value              $internalField;
+    }
+
+    walls
+    {
+        type               calculated;
+        value              $internalField;
+    }
+
+    frontAndBackPlanes
+    {
+        type               empty;
+    }
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/p b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/p
new file mode 100644
index 0000000000000000000000000000000000000000..b318305599bff814b53f4675657a19c68bde0061
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/p
@@ -0,0 +1,47 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      p;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions          [1 -1 -2 0 0 0 0];
+
+internalField       uniform 1e5;
+
+boundaryField
+{
+    inlet
+    {
+        type               calculated;
+        value              $internalField;
+    }
+
+    outlet
+    {
+        type               calculated;
+        value              $internalField;
+    }
+
+    walls
+    {
+        type               calculated;
+        value              $internalField;
+    }
+
+    frontAndBackPlanes
+    {
+        type               empty;
+    }
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/p_rgh b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/p_rgh
new file mode 100644
index 0000000000000000000000000000000000000000..383649e640bcc4e8c6b3b877e4415a79ef0a36d5
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/p_rgh
@@ -0,0 +1,47 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      p_rgh;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions          [1 -1 -2 0 0 0 0];
+
+internalField       uniform 1e5;
+
+boundaryField
+{
+    inlet
+    {
+        type               fixedFluxPressure;
+        value              $internalField;
+    }
+
+    outlet
+    {
+        type               fixedValue;
+        value              $internalField;
+    }
+
+    walls
+    {
+        type               fixedFluxPressure;
+        value              $internalField;
+    }
+
+    frontAndBackPlanes
+    {
+        type               empty;
+    }
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/constant/g b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/constant/g
new file mode 100644
index 0000000000000000000000000000000000000000..e0ac2653b5b370ad62f6770588121d30cac51627
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/constant/g
@@ -0,0 +1,22 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       uniformDimensionedVectorField;
+    location    "constant";
+    object      g;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -2 0 0 0 0];
+value           ( 0 -9.81 0 );
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/constant/phaseProperties b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/constant/phaseProperties
new file mode 100644
index 0000000000000000000000000000000000000000..140b966aee2d724c03ea39a748d9f5dbfdc0bf41
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/constant/phaseProperties
@@ -0,0 +1,116 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      phaseProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+type heatAndMomentumTransferTwoPhaseSystem;
+
+phases (particles air);
+
+particles
+{
+    type          purePhaseModel;
+    diameterModel constant;
+    constantCoeffs
+    {
+        d               3e-4;
+    }
+
+    alphaMax        0.62;
+    residualAlpha   1e-6;
+}
+
+air
+{
+    type          purePhaseModel;
+    diameterModel constant;
+    constantCoeffs
+    {
+        d               1;
+    }
+
+    residualAlpha   0;
+}
+
+blending
+{
+    default
+    {
+        type            none;
+        continuousPhase air;
+    }
+}
+
+surfaceTension
+(
+    (particles and air)
+    {
+        type            constant;
+        sigma           0;
+    }
+);
+
+aspectRatio
+(
+);
+
+drag
+(
+    (particles in air)
+    {
+        type            GidaspowErgunWenYu;
+        residualRe      1e-3;
+        swarmCorrection
+        {
+            type        none;
+        }
+    }
+);
+
+virtualMass
+(
+    (particles in air)
+    {
+        type            constantCoefficient;
+        Cvm             0.5;
+    }
+);
+
+heatTransfer
+(
+    (particles in air)
+    {
+        type            RanzMarshall;
+        residualAlpha   1e-3;
+    }
+);
+
+lift
+(
+);
+
+wallLubrication
+(
+);
+
+turbulentDispersion
+(
+);
+
+// Minimum allowable pressure
+pMin            10000;
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/constant/polyMesh/boundary b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/constant/polyMesh/boundary
new file mode 100644
index 0000000000000000000000000000000000000000..cda7f49514ca6f2afe27dc960bcbf3ee35d53cb5
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/constant/polyMesh/boundary
@@ -0,0 +1,48 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       polyBoundaryMesh;
+    location    "constant/polyMesh";
+    object      boundary;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+4
+(
+    inlet
+    {
+        type            patch;
+        nFaces          30;
+        startFace       11770;
+    }
+    outlet
+    {
+        type            patch;
+        nFaces          30;
+        startFace       11800;
+    }
+    walls
+    {
+        type            wall;
+        inGroups        1(wall);
+        nFaces          400;
+        startFace       11830;
+    }
+    frontAndBackPlanes
+    {
+        type            empty;
+        inGroups        1(empty);
+        nFaces          12000;
+        startFace       12230;
+    }
+)
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/constant/thermophysicalProperties.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/constant/thermophysicalProperties.air
new file mode 100644
index 0000000000000000000000000000000000000000..befc0aeae449cccc50a24e955083b88b914aba67
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/constant/thermophysicalProperties.air
@@ -0,0 +1,49 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      thermophysicalProperties.air;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+thermoType
+{
+    type            heRhoThermo;
+    mixture         pureMixture;
+    transport       const;
+    thermo          hConst;
+    equationOfState perfectGas;
+    specie          specie;
+    energy          sensibleInternalEnergy;
+}
+
+mixture
+{
+    specie
+    {
+        nMoles      1;
+        molWeight   28.9;
+    }
+    thermodynamics
+    {
+        Cp          1007;
+        Hf          0;
+    }
+    transport
+    {
+        mu          1.84e-05;
+        Pr          0.7;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/constant/thermophysicalProperties.particles b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/constant/thermophysicalProperties.particles
new file mode 100644
index 0000000000000000000000000000000000000000..7508b70aa3194312b37a36e71753f74b9cf76166
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/constant/thermophysicalProperties.particles
@@ -0,0 +1,53 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      thermophysicalProperties.particles;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+thermoType
+{
+    type            heRhoThermo;
+    mixture         pureMixture;
+    transport       const;
+    thermo          hConst;
+    equationOfState rhoConst;
+    specie          specie;
+    energy          sensibleInternalEnergy;
+}
+
+mixture
+{
+    specie
+    {
+        nMoles      1;
+        molWeight   100;
+    }
+    equationOfState
+    {
+        rho         2500;
+    }
+    thermodynamics
+    {
+        Cp          6000;
+        Hf          0;
+    }
+    transport
+    {
+        mu          0;
+        Pr          1;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/constant/turbulenceProperties.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/constant/turbulenceProperties.air
new file mode 100644
index 0000000000000000000000000000000000000000..1296429b72a21953def920b08774aa75e1d048b1
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/constant/turbulenceProperties.air
@@ -0,0 +1,20 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      turbulenceProperties.air;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+simulationType  laminar;
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/constant/turbulenceProperties.particles b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/constant/turbulenceProperties.particles
new file mode 100644
index 0000000000000000000000000000000000000000..08671cc51ea166f57533dc054f713c4ec40cbd71
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/constant/turbulenceProperties.particles
@@ -0,0 +1,61 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      turbulenceProperties.particles;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+simulationType  RAS;
+
+RAS
+{
+    RASModel phasePressure;
+
+    turbulence      on;
+    printCoeffs     on;
+
+    kineticTheoryCoeffs
+    {
+        equilibrium             on;
+
+        e                       0.8;
+        alphaMax                0.62;
+        alphaMinFriction        0.5;
+
+        viscosityModel          Gidaspow;
+        conductivityModel       Gidaspow;
+        granularPressureModel   Lun;
+        frictionalStressModel   JohnsonJackson;
+        radialModel             SinclairJackson;
+
+        JohnsonJacksonCoeffs
+        {
+            Fr                      0.05;
+            eta                     2;
+            p                       5;
+            phi                     28.5;
+            alphaDeltaMin           0.05;
+        }
+    }
+
+    phasePressureCoeffs
+    {
+        preAlphaExp     500;
+        expMax          1000;
+        alphaMax        0.62;
+        g0              1000;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/system/blockMeshDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/system/blockMeshDict
new file mode 100644
index 0000000000000000000000000000000000000000..900f5a585b8a3abd2fd564c7b949035e390640ea
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/system/blockMeshDict
@@ -0,0 +1,66 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      blockMeshDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+convertToMeters 1;
+
+vertices
+(
+    (0 0 -0.01)
+    (0.15 0 -0.01)
+    (0.15 1 -0.01)
+    (0 1 -0.01)
+    (0 0 0.01)
+    (0.15 0 0.01)
+    (0.15 1 0.01)
+    (0 1 0.01)
+);
+
+blocks
+(
+    hex (0 1 2 3 4 5 6 7) (30 200 1) simpleGrading (1 1 1)
+);
+
+edges
+(
+);
+
+patches
+(
+    patch inlet
+    (
+        (1 5 4 0)
+    )
+    patch outlet
+    (
+        (3 7 6 2)
+    )
+    wall walls
+    (
+        (0 4 7 3)
+        (2 6 5 1)
+    )
+    empty frontAndBackPlanes
+    (
+        (0 3 2 1)
+        (4 5 6 7)
+    )
+);
+
+mergePatchPairs
+(
+);
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/system/controlDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/system/controlDict
new file mode 100644
index 0000000000000000000000000000000000000000..9718ec32348ad1bc167af031bbfc9f4d77b33cc2
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/system/controlDict
@@ -0,0 +1,95 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      controlDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+application     reactingTwoPhaseEulerFoam;
+
+startFrom       startTime;
+
+startTime       0;
+
+stopAt          endTime;
+
+endTime         2;
+
+deltaT          2e-4;
+
+writeControl    runTime;
+
+writeInterval   0.01;
+
+purgeWrite      0;
+
+writeFormat     ascii;
+
+writePrecision  6;
+
+writeCompression uncompressed;
+
+timeFormat      general;
+
+timePrecision   6;
+
+runTimeModifiable on;
+
+adjustTimeStep  no;
+
+maxCo           0.9;
+
+maxDeltaT       1e-05;
+
+functions
+{
+    fieldAverage1
+    {
+        type            fieldAverage;
+        functionObjectLibs ( "libfieldFunctionObjects.so" );
+        outputControl   outputTime;
+        fields
+        (
+            U.particles
+            {
+                 mean        on;
+                 prime2Mean  off;
+                 base        time;
+            }
+
+            U.air
+            {
+                 mean        on;
+                 prime2Mean  off;
+                 base        time;
+            }
+
+            alpha.particles
+            {
+                 mean        on;
+                 prime2Mean  off;
+                 base        time;
+            }
+
+            p
+            {
+                 mean        on;
+                 prime2Mean  off;
+                 base        time;
+            }
+        );
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/system/fvSchemes b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/system/fvSchemes
new file mode 100644
index 0000000000000000000000000000000000000000..62ff44d8e74f83effa4c19e2d2eedc9906c575e5
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/system/fvSchemes
@@ -0,0 +1,70 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      fvSchemes;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ddtSchemes
+{
+    default     Euler;
+}
+
+gradSchemes
+{
+    default     Gauss linear;
+}
+
+divSchemes
+{
+    default                         none;
+
+    "div\(phi,alpha.*\)"            Gauss vanLeer;
+    "div\(phir,alpha.*\)"           Gauss vanLeer;
+
+    "div\(alphaRhoPhi.*,U.*\)"      Gauss limitedLinearV 1;
+    "div\(phi.*,U.*\)"              Gauss limitedLinearV 1;
+
+    "div\(alphaRhoPhi.*,(h|e).*\)"  Gauss limitedLinear 1;
+    "div\(alphaRhoPhi.*,K.*\)"      Gauss limitedLinear 1;
+    "div\(alphaPhi.*,p\)"           Gauss limitedLinear 1;
+
+    div((((alpha.air*thermo:rho.air)*nuEff.air)*dev2(T(grad(U.air))))) Gauss linear;
+}
+
+laplacianSchemes
+{
+    default     Gauss linear uncorrected;
+    bounded     Gauss linear uncorrected;
+}
+
+interpolationSchemes
+{
+    default     linear;
+}
+
+snGradSchemes
+{
+    default     uncorrected;
+    bounded     uncorrected;
+}
+
+fluxRequired
+{
+    default     no;
+    p_rgh;
+    alpha.particles;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/system/fvSolution b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/system/fvSolution
new file mode 100644
index 0000000000000000000000000000000000000000..0081c93776b3a05522db964a8e0bf401d63bdc7e
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/system/fvSolution
@@ -0,0 +1,109 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      fvSolution;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+solvers
+{
+    "alpha.*"
+    {
+        nAlphaCorr      1;
+        nAlphaSubCycles 2;
+
+        smoothLimiter   0.1;
+
+        implicitPhasePressure yes;
+        solver          smoothSolver;
+        smoother        symGaussSeidel;
+        tolerance       1e-9;
+        relTol          0;
+        minIter         1;
+    }
+
+    p_rgh
+    {
+        solver          GAMG;
+        smoother        DIC;
+        nPreSweeps      0;
+        nPostSweeps     2;
+        nFinestSweeps   2;
+        cacheAgglomeration true;
+        nCellsInCoarsestLevel 10;
+        agglomerator    faceAreaPair;
+        mergeLevels     1;
+        tolerance       1e-8;
+        relTol          0;
+    }
+
+    p_rghFinal
+    {
+        $p_rgh;
+        relTol          0;
+    }
+
+    "U.*"
+    {
+        solver          smoothSolver;
+        smoother        symGaussSeidel;
+        tolerance       1e-5;
+        relTol          0;
+        minIter         1;
+    }
+
+    "(h|e).*"
+    {
+        solver          smoothSolver;
+        smoother        symGaussSeidel;
+        tolerance       1e-6;
+        relTol          0;
+        minIter         1;
+    }
+
+    "Theta.*"
+    {
+        solver          smoothSolver;
+        smoother        symGaussSeidel;
+        tolerance       1e-6;
+        relTol          0;
+        minIter         1;
+    }
+
+    "(k|epsilon).*"
+    {
+        solver          smoothSolver;
+        smoother        symGaussSeidel;
+        tolerance       1e-5;
+        relTol          0;
+        minIter         1;
+    }
+}
+
+PIMPLE
+{
+    nOuterCorrectors    3;
+    nCorrectors         1;
+    nNonOrthogonalCorrectors 0;
+}
+
+relaxationFactors
+{
+    equations
+    {
+        ".*"            1;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/system/setFieldsDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/system/setFieldsDict
new file mode 100644
index 0000000000000000000000000000000000000000..da4c6ee6f2b05ccee47aa322a096b2cacad742a0
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/system/setFieldsDict
@@ -0,0 +1,38 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      setFieldsDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+defaultFieldValues
+(
+    volScalarFieldValue alpha.air 1
+    volScalarFieldValue alpha.particles 0
+);
+
+regions
+(
+    boxToCell
+    {
+        box ( 0 0 -0.1 ) ( 0.15 0.5 0.1 );
+        fieldValues
+        (
+            volScalarFieldValue alpha.air 0.45
+            volScalarFieldValue alpha.particles 0.55
+        );
+    }
+);
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/T.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/T.air
new file mode 100644
index 0000000000000000000000000000000000000000..94edcc5942793917c36c8784ca94357a3f4908cc
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/T.air
@@ -0,0 +1,36 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      T.air;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions          [0 0 0 1 0 0 0];
+
+internalField       uniform 300;
+
+boundaryField
+{
+    outlet
+    {
+        type               inletOutlet;
+        phi                phi.air;
+        inletValue         $internalField;
+        value              $internalField;
+    }
+    walls
+    {
+        type               zeroGradient;
+    }
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/T.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/T.water
new file mode 100644
index 0000000000000000000000000000000000000000..36476e1e298e769fee6112a48246d23e38ef7751
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/T.water
@@ -0,0 +1,36 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      T.water;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions          [0 0 0 1 0 0 0];
+
+internalField       uniform 300;
+
+boundaryField
+{
+    outlet
+    {
+        type               inletOutlet;
+        phi                phi.water;
+        inletValue         uniform 300;
+        value              $internalField;
+    }
+    walls
+    {
+        type               zeroGradient;
+    }
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/U.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/U.air
new file mode 100644
index 0000000000000000000000000000000000000000..2a2f95b7409ec78de91d9f418ebe94672379b193
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/U.air
@@ -0,0 +1,36 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      binary;
+    class       volVectorField;
+    object      U.air;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -1 0 0 0 0];
+
+internalField   uniform (0 0 0);
+
+boundaryField
+{
+    outlet
+    {
+        type               pressureInletOutletVelocity;
+        phi                phi.air;
+        value              $internalField;
+    }
+    walls
+    {
+        type               fixedValue;
+        value              uniform (0 0 0);
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/U.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/U.water
new file mode 100644
index 0000000000000000000000000000000000000000..407b341dbe3a55c2aab4e7b4cad0d0ab2845a964
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/U.water
@@ -0,0 +1,36 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      binary;
+    class       volVectorField;
+    object      U.water;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -1 0 0 0 0];
+
+internalField   uniform (0 0 0);
+
+boundaryField
+{
+    outlet
+    {
+        type               pressureInletOutletVelocity;
+        phi                phi.water;
+        value              $internalField;
+    }
+    walls
+    {
+        type               fixedValue;
+        value              uniform (0 0 0);
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/alpha.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/alpha.air
new file mode 100644
index 0000000000000000000000000000000000000000..1b1a35684a06787a1eb3cb75f388563aad1443a1
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/alpha.air
@@ -0,0 +1,1926 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      alpha.air;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   nonuniform List<scalar>
+1875
+(
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+)
+;
+
+boundaryField
+{
+    inlet
+    {
+        type            fixedValue;
+        value           uniform 0.5;
+    }
+    outlet
+    {
+        type            inletOutlet;
+        phi             phi.air;
+        inletValue      uniform 1;
+        value           uniform 1;
+    }
+    walls
+    {
+        type            zeroGradient;
+    }
+    defaultFaces
+    {
+        type            empty;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/alpha.air.org b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/alpha.air.org
new file mode 100644
index 0000000000000000000000000000000000000000..6832d99db233720d69cfbae7ebe2b46fdc0396b4
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/alpha.air.org
@@ -0,0 +1,37 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      alpha.air;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    outlet
+    {
+        type            inletOutlet;
+        phi             phi.air;
+        inletValue      uniform 1;
+        value           uniform 1;
+    }
+    walls
+    {
+        type            zeroGradient;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/p b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/p
new file mode 100644
index 0000000000000000000000000000000000000000..ae586321875e3dc411075af2f1dbcc32e24e10c3
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/p
@@ -0,0 +1,35 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      p;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions          [ 1 -1 -2 0 0 0 0 ];
+
+internalField       uniform 1e5;
+
+boundaryField
+{
+    outlet
+    {
+        type               calculated;
+        value              $internalField;
+    }
+    walls
+    {
+        type               calculated;
+        value              $internalField;
+    }
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/p_rgh b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/p_rgh
new file mode 100644
index 0000000000000000000000000000000000000000..0d154f2bd87ba648870e2f93a11df96e7ce51d69
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/p_rgh
@@ -0,0 +1,37 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      p_rgh;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions          [ 1 -1 -2 0 0 0 0 ];
+
+internalField       uniform 1e5;
+
+boundaryField
+{
+    outlet
+    {
+        type            prghPressure;
+        p               $internalField;
+        value           $internalField;
+    }
+
+    walls
+    {
+        type               fixedFluxPressure;
+        value              $internalField;
+    }
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/fvOptions b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/fvOptions
new file mode 100644
index 0000000000000000000000000000000000000000..5bc7e7ef8736b4aeb07d5f51bf4fb88db27c81a3
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/fvOptions
@@ -0,0 +1,81 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      fvOptions;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+injector1
+{
+    timeStart       0.1;
+    duration        5;
+    selectionMode   points;
+    points
+    (
+        (0.075 0.2 0.05)
+    );
+}
+
+options
+{
+    massSource1
+    {
+        type            scalarSemiImplicitSource;
+
+        scalarSemiImplicitSourceCoeffs
+        {
+            $injector1;
+
+            volumeMode      absolute;
+            injectionRateSuSp
+            {
+                thermo:rho.air     (1e-3 0); // kg/s
+            }
+        }
+    }
+
+    momentumSource1
+    {
+        type            vectorSemiImplicitSource;
+
+        vectorSemiImplicitSourceCoeffs
+        {
+            $injector1;
+
+            volumeMode      absolute;
+            injectionRateSuSp
+            {
+                U.air           ((0 -1e-2 0) 0); // kg*m/s^2
+            }
+        }
+    }
+
+    energySource1
+    {
+        type            scalarSemiImplicitSource;
+
+        scalarSemiImplicitSourceCoeffs
+        {
+            $injector1;
+
+            volumeMode      absolute;
+            injectionRateSuSp
+            {
+                e.air      (500 0); // kg*m^2/s^3
+            }
+        }
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/g b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/g
new file mode 100644
index 0000000000000000000000000000000000000000..0cc222ca3457ed24bf9753d0926fbee84359e624
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/g
@@ -0,0 +1,22 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       uniformDimensionedVectorField;
+    location    "constant";
+    object      g;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -2 0 0 0 0];
+value           (0 -9.81 0);
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/phaseProperties b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/phaseProperties
new file mode 100644
index 0000000000000000000000000000000000000000..efcc993537fa9da5d2263ac5cfd9b59dff97a4fb
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/phaseProperties
@@ -0,0 +1,164 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      phaseProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+type heatAndMomentumTransferTwoPhaseSystem;
+
+phases (air water);
+
+air
+{
+    type            purePhaseModel;
+    diameterModel   isothermal;
+    isothermalCoeffs
+    {
+        d0              3e-3;
+        p0              1e5;
+    }
+
+    residualAlpha   1e-4;
+}
+
+water
+{
+    type            purePhaseModel;
+    diameterModel   constant;
+    constantCoeffs
+    {
+        d               1e-4;
+    }
+
+    residualAlpha   1e-4;
+}
+
+blending
+{
+    default
+    {
+        type            linear;
+        minFullyContinuousAlpha.air 0.7;
+        minPartlyContinuousAlpha.air 0.5;
+        minFullyContinuousAlpha.water 0.7;
+        minPartlyContinuousAlpha.water 0.5;
+    }
+}
+
+surfaceTension
+(
+    (air and water)
+    {
+        type            constant;
+        sigma           0.07;
+    }
+);
+
+aspectRatio
+(
+    (air in water)
+    {
+        type            constant;
+        E0              1.0;
+    }
+
+    (water in air)
+    {
+        type            constant;
+        E0              1.0;
+    }
+);
+
+drag
+(
+    (air in water)
+    {
+        type            SchillerNaumann;
+        residualRe      1e-3;
+        swarmCorrection
+        {
+            type        none;
+        }
+    }
+
+    (water in air)
+    {
+        type            SchillerNaumann;
+        residualRe      1e-3;
+        swarmCorrection
+        {
+            type        none;
+        }
+    }
+
+    (air and water)
+    {
+        type            segregated;
+        residualAlpha   1e-4;
+        m               0.5;
+        n               8;
+        swarmCorrection
+        {
+            type        none;
+        }
+    }
+);
+
+virtualMass
+(
+    (air in water)
+    {
+        type            constantCoefficient;
+        Cvm             0.5;
+    }
+
+    (water in air)
+    {
+        type            constantCoefficient;
+        Cvm             0.5;
+    }
+);
+
+heatTransfer
+(
+    (air in water)
+    {
+        type            RanzMarshall;
+        residualAlpha   1e-3;
+    }
+
+    (water in air)
+    {
+        type            RanzMarshall;
+        residualAlpha   1e-3;
+    }
+);
+
+lift
+(
+);
+
+wallLubrication
+(
+);
+
+turbulentDispersion
+(
+);
+
+// Minimum allowable pressure
+pMin            10000;
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/polyMesh/boundary b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/polyMesh/boundary
new file mode 100644
index 0000000000000000000000000000000000000000..47889c5cc1a0ad0d690f39d0ecbfdaa7d6144658
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/polyMesh/boundary
@@ -0,0 +1,42 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       polyBoundaryMesh;
+    location    "constant/polyMesh";
+    object      boundary;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+3
+(
+    outlet
+    {
+        type            patch;
+        nFaces          25;
+        startFace       3650;
+    }
+    walls
+    {
+        type            wall;
+        inGroups        1(wall);
+        nFaces          175;
+        startFace       3675;
+    }
+    defaultFaces
+    {
+        type            empty;
+        inGroups        1(empty);
+        nFaces          3750;
+        startFace       3850;
+    }
+)
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/thermophysicalProperties.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/thermophysicalProperties.air
new file mode 100644
index 0000000000000000000000000000000000000000..befc0aeae449cccc50a24e955083b88b914aba67
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/thermophysicalProperties.air
@@ -0,0 +1,49 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      thermophysicalProperties.air;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+thermoType
+{
+    type            heRhoThermo;
+    mixture         pureMixture;
+    transport       const;
+    thermo          hConst;
+    equationOfState perfectGas;
+    specie          specie;
+    energy          sensibleInternalEnergy;
+}
+
+mixture
+{
+    specie
+    {
+        nMoles      1;
+        molWeight   28.9;
+    }
+    thermodynamics
+    {
+        Cp          1007;
+        Hf          0;
+    }
+    transport
+    {
+        mu          1.84e-05;
+        Pr          0.7;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/thermophysicalProperties.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/thermophysicalProperties.water
new file mode 100644
index 0000000000000000000000000000000000000000..c44c005d3b17561dc32c9e32262b37dc348aecc3
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/thermophysicalProperties.water
@@ -0,0 +1,54 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      thermophysicalProperties.water;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+thermoType
+{
+    type            heRhoThermo;
+    mixture         pureMixture;
+    transport       const;
+    thermo          hConst;
+    equationOfState perfectFluid;
+    specie          specie;
+    energy          sensibleInternalEnergy;
+}
+
+mixture
+{
+    specie
+    {
+        nMoles      1;
+        molWeight   18;
+    }
+    equationOfState
+    {
+        R           3000;
+        rho0        1027;
+    }
+    thermodynamics
+    {
+        Cp          4195;
+        Hf          0;
+    }
+    transport
+    {
+        mu          3.645e-4;
+        Pr          2.289;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/turbulenceProperties.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/turbulenceProperties.air
new file mode 100644
index 0000000000000000000000000000000000000000..1296429b72a21953def920b08774aa75e1d048b1
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/turbulenceProperties.air
@@ -0,0 +1,20 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      turbulenceProperties.air;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+simulationType  laminar;
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/turbulenceProperties.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/turbulenceProperties.water
new file mode 100644
index 0000000000000000000000000000000000000000..7f0d75a82fcdc99677fa0be8a4111cfe91e4a82c
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/turbulenceProperties.water
@@ -0,0 +1,20 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      turbulenceProperties.water;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+simulationType  laminar;
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/system/blockMeshDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/system/blockMeshDict
new file mode 100644
index 0000000000000000000000000000000000000000..7d811b77b316a363aff67e4a1576c6cd11b8eff6
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/system/blockMeshDict
@@ -0,0 +1,58 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      blockMeshDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+convertToMeters 1;
+
+vertices
+(
+    (0 0 0)
+    (0.15 0 0)
+    (0.15 1 0)
+    (0 1 0)
+    (0 0 0.1)
+    (0.15 0 0.1)
+    (0.15 1 0.1)
+    (0 1 0.1)
+);
+
+blocks
+(
+    hex (0 1 2 3 4 5 6 7) (25 75 1) simpleGrading (1 1 1)
+);
+
+edges
+(
+);
+
+patches
+(
+    patch outlet
+    (
+        (3 7 6 2)
+    )
+    wall walls
+    (
+        (1 5 4 0)
+        (0 4 7 3)
+        (2 6 5 1)
+    )
+);
+
+mergePatchPairs
+(
+);
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/system/controlDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/system/controlDict
new file mode 100644
index 0000000000000000000000000000000000000000..9855241d1121eb55363575434cc086deb538039e
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/system/controlDict
@@ -0,0 +1,55 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      controlDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+application     reactingTwoPhaseEulerFoam;
+
+startFrom       startTime;
+
+startTime       0;
+
+stopAt          endTime;
+
+endTime         10;
+
+deltaT          0.005;
+
+writeControl    runTime;
+
+writeInterval   0.1;
+
+purgeWrite      0;
+
+writeFormat     ascii;
+
+writePrecision  6;
+
+writeCompression uncompressed;
+
+timeFormat      general;
+
+timePrecision   6;
+
+runTimeModifiable yes;
+
+adjustTimeStep  no;
+
+maxCo           0.5;
+
+maxDeltaT       1;
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/system/fvSchemes b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/system/fvSchemes
new file mode 100644
index 0000000000000000000000000000000000000000..ad0ccde96fd7e34ab1e7598706cf57be2a55d6cd
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/system/fvSchemes
@@ -0,0 +1,67 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      fvSchemes;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ddtSchemes
+{
+    default         Euler;
+}
+
+gradSchemes
+{
+    default         Gauss linear;
+}
+
+divSchemes
+{
+    default                         none;
+
+    div(phi,alpha.air)              Gauss vanLeer;
+    div(phir,alpha.air)             Gauss vanLeer;
+
+    "div\(alphaRhoPhi.*,U.*\)"      Gauss limitedLinearV 1;
+    "div\(phi.*,U.*\)"              Gauss limitedLinearV 1;
+
+    "div\(alphaRhoPhi.*,(h|e).*\)"  Gauss limitedLinear 1;
+    "div\(alphaRhoPhi.*,K.*\)"      Gauss limitedLinear 1;
+    "div\(alphaPhi.*,p\)"           Gauss limitedLinear 1;
+
+    "div\(\(\(\(alpha.*\*thermo:rho.*\)\*nuEff.*\)\*dev2\(T\(grad\(U.*\)\)\)\)\)" Gauss linear;
+}
+
+laplacianSchemes
+{
+    default         Gauss linear uncorrected;
+}
+
+interpolationSchemes
+{
+    default         linear;
+}
+
+snGradSchemes
+{
+    default         uncorrected;
+}
+
+fluxRequired
+{
+    default         no;
+    p_rgh;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/system/fvSolution b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/system/fvSolution
new file mode 100644
index 0000000000000000000000000000000000000000..350b0c0c1fe42f2d87699003d0b6b2532edda2ed
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/system/fvSolution
@@ -0,0 +1,82 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      fvSolution;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+solvers
+{
+    alpha.air
+    {
+        nAlphaCorr      1;
+        nAlphaSubCycles 2;
+    }
+
+    p_rgh
+    {
+        solver          GAMG;
+        smoother        DIC;
+        nPreSweeps      0;
+        nPostSweeps     2;
+        nFinestSweeps   2;
+        cacheAgglomeration true;
+        nCellsInCoarsestLevel 10;
+        agglomerator    faceAreaPair;
+        mergeLevels     1;
+        tolerance       1e-8;
+        relTol          0;
+    }
+
+    p_rghFinal
+    {
+        $p_rgh;
+        relTol          0;
+    }
+
+    "U.*"
+    {
+        solver          smoothSolver;
+        smoother        symGaussSeidel;
+        tolerance       1e-5;
+        relTol          0;
+        minIter         1;
+    }
+
+    "e.*"
+    {
+        solver          smoothSolver;
+        smoother        symGaussSeidel;
+        tolerance       1e-8;
+        relTol          0;
+        minIter         1;
+    }
+}
+
+PIMPLE
+{
+    nOuterCorrectors 3;
+    nCorrectors      1;
+    nNonOrthogonalCorrectors 0;
+}
+
+relaxationFactors
+{
+    equations
+    {
+        ".*"            1;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/system/setFieldsDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/system/setFieldsDict
new file mode 100644
index 0000000000000000000000000000000000000000..93d742ba74a2424f861b51d1c5d2d8211a625715
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/system/setFieldsDict
@@ -0,0 +1,36 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      setFieldsDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+defaultFieldValues
+(
+    volScalarFieldValue alpha.air 1
+);
+
+regions
+(
+    boxToCell
+    {
+        box (0 0 -0.1) (0.15 0.701 0.1);
+        fieldValues
+        (
+            volScalarFieldValue alpha.air 0
+        );
+    }
+);
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/T.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/T.air
new file mode 100644
index 0000000000000000000000000000000000000000..610cfff17ec8d396b7ce0d1198bae5f83616e7cd
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/T.air
@@ -0,0 +1,44 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      T1;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 1 0 0 0];
+
+internalField   uniform 300;
+
+boundaryField
+{
+    rotor
+    {
+        type            zeroGradient;
+    }
+
+    stator
+    {
+        type            zeroGradient;
+    }
+
+    front
+    {
+        type            empty;
+    }
+
+    back
+    {
+        type            empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/T.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/T.water
new file mode 100644
index 0000000000000000000000000000000000000000..c2ea64d776b6233c2bf5f0dbbc2769d6d6eab9e2
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/T.water
@@ -0,0 +1,44 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      T2;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 1 0 0 0];
+
+internalField   uniform 500;
+
+boundaryField
+{
+    rotor
+    {
+        type            zeroGradient;
+    }
+
+    stator
+    {
+        type            zeroGradient;
+    }
+
+    front
+    {
+        type            empty;
+    }
+
+    back
+    {
+        type            empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/Theta b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/Theta
new file mode 100644
index 0000000000000000000000000000000000000000..b18d202df894c0276dd7f546fd3820cd154623e4
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/Theta
@@ -0,0 +1,44 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      Theta;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 2 -2 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    rotor
+    {
+        type            zeroGradient;
+    }
+
+    stator
+    {
+        type            zeroGradient;
+    }
+
+    front
+    {
+        type            empty;
+    }
+
+    back
+    {
+        type            empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/U.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/U.air
new file mode 100644
index 0000000000000000000000000000000000000000..7a88b384782d81444c1dbc8643f955a4720536da
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/U.air
@@ -0,0 +1,46 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volVectorField;
+    object      U1;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -1 0 0 0 0];
+
+internalField   uniform (0 0 0);
+
+boundaryField
+{
+    rotor
+    {
+        type            fixedValue;
+        value           uniform (0 0 0);
+    }
+
+    stator
+    {
+        type            fixedValue;
+        value           uniform (0 0 0);
+    }
+
+    front
+    {
+        type            empty;
+    }
+
+    back
+    {
+        type            empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/U.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/U.water
new file mode 100644
index 0000000000000000000000000000000000000000..b93b8d870de47ad7c0f257b0301895c8c8ed05d9
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/U.water
@@ -0,0 +1,46 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volVectorField;
+    object      U2;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -1 0 0 0 0];
+
+internalField   uniform (0 0 0);
+
+boundaryField
+{
+    rotor
+    {
+        type            fixedValue;
+        value           uniform (0 0 0);
+    }
+
+    stator
+    {
+        type            fixedValue;
+        value           uniform (0 0 0);
+    }
+
+    front
+    {
+        type            empty;
+    }
+
+    back
+    {
+        type            empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/alpha.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/alpha.air
new file mode 100644
index 0000000000000000000000000000000000000000..b995d77c1687f8ba93cc24503dd72b1355ef7b90
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/alpha.air
@@ -0,0 +1,44 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      alpha.air;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   uniform 0.5;
+
+boundaryField
+{
+    rotor
+    {
+        type            zeroGradient;
+    }
+
+    stator
+    {
+        type            zeroGradient;
+    }
+
+    front
+    {
+        type            empty;
+    }
+
+    back
+    {
+        type            empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/p b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/p
new file mode 100644
index 0000000000000000000000000000000000000000..f8b3deba004c2c4faa3b934ca21a88e85e2dcd35
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/p
@@ -0,0 +1,46 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      p;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 -1 -2 0 0 0 0];
+
+internalField   uniform 1e5;
+
+boundaryField
+{
+    rotor
+    {
+        type            calculated;
+        value           $internalField;
+    }
+
+    stator
+    {
+        type            calculated;
+        value           $internalField;
+    }
+
+    front
+    {
+        type            empty;
+    }
+
+    back
+    {
+        type            empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/p_rgh b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/p_rgh
new file mode 100644
index 0000000000000000000000000000000000000000..3267f0a6f35ce0ba62a997ceb356ed75cca29bbc
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/p_rgh
@@ -0,0 +1,46 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      p_rgh;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 -1 -2 0 0 0 0];
+
+internalField   uniform 1e5;
+
+boundaryField
+{
+    rotor
+    {
+        type            fixedFluxPressure;
+        value           $internalField;
+    }
+
+    stator
+    {
+        type            fixedFluxPressure;
+        value           $internalField;
+    }
+
+    front
+    {
+        type            empty;
+    }
+
+    back
+    {
+        type            empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/Allrun b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/Allrun
new file mode 100755
index 0000000000000000000000000000000000000000..349ea685ea56c4967077cdb6bb6963a6b61c7c63
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/Allrun
@@ -0,0 +1,12 @@
+#!/bin/sh
+cd ${0%/*} || exit 1    # Run from this directory
+
+# Source tutorial run functions
+. $WM_PROJECT_DIR/bin/tools/RunFunctions
+
+application=`getApplication`
+
+runApplication ./makeMesh
+runApplication $application
+
+# ----------------------------------------------------------------- end-of-file
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/MRFProperties b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/MRFProperties
new file mode 100644
index 0000000000000000000000000000000000000000..c604aa7e2c4631238b2e0535d4786c4245c2dd5b
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/MRFProperties
@@ -0,0 +1,31 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      MRFProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+MRF1
+{
+    cellZone    rotor;
+    active      yes;
+
+    // Fixed patches (by default they 'move' with the MRF zone)
+    nonRotatingPatches ();
+
+    origin    (0 0 0);
+    axis      (0 0 1);
+    omega     constant 10.472;
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/g b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/g
new file mode 100644
index 0000000000000000000000000000000000000000..508d65849430f8e5abf4b12d7baa53d70521a1c3
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/g
@@ -0,0 +1,22 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       uniformDimensionedVectorField;
+    location    "constant";
+    object      g;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -2 0 0 0 0];
+value           (0 0 0);
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/phaseProperties b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/phaseProperties
new file mode 100644
index 0000000000000000000000000000000000000000..e374b02851dda0771b29948ac03871b8d5917467
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/phaseProperties
@@ -0,0 +1,163 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      phaseProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+type heatAndMomentumTransferTwoPhaseSystem;
+
+phases (air water);
+
+air
+{
+    type            purePhaseModel;
+    diameterModel   isothermal;
+    isothermalCoeffs
+    {
+        d0              3e-3;
+        p0              1e5;
+    }
+
+    residualAlpha   1e-4;
+}
+
+water
+{
+    type            purePhaseModel;
+    diameterModel   constant;
+    constantCoeffs
+    {
+        d               1e-4;
+    }
+
+    residualAlpha   1e-4;
+}
+
+blending
+{
+    default
+    {
+        type            linear;
+        minFullyContinuousAlpha.air 0.7;
+        minPartlyContinuousAlpha.air 0.5;
+        minFullyContinuousAlpha.water 0.7;
+        minPartlyContinuousAlpha.water 0.5;
+    }
+}
+
+surfaceTension
+(
+    (air and water)
+    {
+        type            constant;
+        sigma           0.07;
+    }
+);
+
+aspectRatio
+(
+    (air in water)
+    {
+        type            constant;
+        E0              1.0;
+    }
+
+    (water in air)
+    {
+        type            constant;
+        E0              1.0;
+    }
+);
+
+drag
+(
+    (air in water)
+    {
+        type            SchillerNaumann;
+        residualRe      1e-3;
+        swarmCorrection
+        {
+            type        none;
+        }
+    }
+
+    (water in air)
+    {
+        type            SchillerNaumann;
+        residualRe      1e-3;
+        swarmCorrection
+        {
+            type        none;
+        }
+    }
+
+    (air and water)
+    {
+        type            segregated;
+        m               0.5;
+        n               8;
+        swarmCorrection
+        {
+            type        none;
+        }
+    }
+);
+
+virtualMass
+(
+    (air in water)
+    {
+        type            constantCoefficient;
+        Cvm             0.5;
+    }
+
+    (water in air)
+    {
+        type            constantCoefficient;
+        Cvm             0.5;
+    }
+);
+
+heatTransfer
+(
+    (air in water)
+    {
+        type            RanzMarshall;
+        residualAlpha   1e-3;
+    }
+
+    (water in air)
+    {
+        type            RanzMarshall;
+        residualAlpha   1e-3;
+    }
+);
+
+lift
+(
+);
+
+wallLubrication
+(
+);
+
+turbulentDispersion
+(
+);
+
+// Minimum allowable pressure
+pMin            10000;
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/polyMesh/boundary b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/polyMesh/boundary
new file mode 100644
index 0000000000000000000000000000000000000000..5c2a6cf99c517b8361b84403c7ca9833023efacd
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/polyMesh/boundary
@@ -0,0 +1,50 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       polyBoundaryMesh;
+    location    "constant/polyMesh";
+    object      boundary;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+4
+(
+    rotor
+    {
+        type            wall;
+        inGroups        1(wall);
+        nFaces          192;
+        startFace       5952;
+    }
+    stator
+    {
+        type            wall;
+        inGroups        1(wall);
+        nFaces          192;
+        startFace       6144;
+    }
+    front
+    {
+        type            empty;
+        inGroups        1(empty);
+        nFaces          3072;
+        startFace       6336;
+    }
+    back
+    {
+        type            empty;
+        inGroups        1(empty);
+        nFaces          3072;
+        startFace       9408;
+    }
+)
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/thermophysicalProperties.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/thermophysicalProperties.air
new file mode 100644
index 0000000000000000000000000000000000000000..befc0aeae449cccc50a24e955083b88b914aba67
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/thermophysicalProperties.air
@@ -0,0 +1,49 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      thermophysicalProperties.air;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+thermoType
+{
+    type            heRhoThermo;
+    mixture         pureMixture;
+    transport       const;
+    thermo          hConst;
+    equationOfState perfectGas;
+    specie          specie;
+    energy          sensibleInternalEnergy;
+}
+
+mixture
+{
+    specie
+    {
+        nMoles      1;
+        molWeight   28.9;
+    }
+    thermodynamics
+    {
+        Cp          1007;
+        Hf          0;
+    }
+    transport
+    {
+        mu          1.84e-05;
+        Pr          0.7;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/thermophysicalProperties.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/thermophysicalProperties.water
new file mode 100644
index 0000000000000000000000000000000000000000..c44c005d3b17561dc32c9e32262b37dc348aecc3
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/thermophysicalProperties.water
@@ -0,0 +1,54 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      thermophysicalProperties.water;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+thermoType
+{
+    type            heRhoThermo;
+    mixture         pureMixture;
+    transport       const;
+    thermo          hConst;
+    equationOfState perfectFluid;
+    specie          specie;
+    energy          sensibleInternalEnergy;
+}
+
+mixture
+{
+    specie
+    {
+        nMoles      1;
+        molWeight   18;
+    }
+    equationOfState
+    {
+        R           3000;
+        rho0        1027;
+    }
+    thermodynamics
+    {
+        Cp          4195;
+        Hf          0;
+    }
+    transport
+    {
+        mu          3.645e-4;
+        Pr          2.289;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/turbulenceProperties.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/turbulenceProperties.air
new file mode 100644
index 0000000000000000000000000000000000000000..1296429b72a21953def920b08774aa75e1d048b1
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/turbulenceProperties.air
@@ -0,0 +1,20 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      turbulenceProperties.air;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+simulationType  laminar;
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/turbulenceProperties.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/turbulenceProperties.water
new file mode 100644
index 0000000000000000000000000000000000000000..7f0d75a82fcdc99677fa0be8a4111cfe91e4a82c
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/turbulenceProperties.water
@@ -0,0 +1,20 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      turbulenceProperties.water;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+simulationType  laminar;
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/makeMesh b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/makeMesh
new file mode 100755
index 0000000000000000000000000000000000000000..4d667956a0a85573c003797a5e2385cba6296964
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/makeMesh
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+m4 < system/blockMeshDict.m4 > system/blockMeshDict
+blockMesh
+topoSet
+setsToZones -noFlipMap
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/system/blockMeshDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/system/blockMeshDict
new file mode 100644
index 0000000000000000000000000000000000000000..0c15d76614265f0bd56f90e53e981d36295ccbc4
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/system/blockMeshDict
@@ -0,0 +1,818 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      blockMeshDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// General macros to create 2D/extruded-2D meshes
+
+
+
+
+
+
+
+
+
+
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+convertToMeters 0.1;
+
+// Hub radius
+
+
+// Impeller-tip radius
+
+
+// Baffle-tip radius
+
+
+// Tank radius
+
+
+// MRF region radius
+
+
+// Thickness of 2D slab
+
+
+// Base z
+
+
+// Top z
+
+
+// Number of cells radially between hub and impeller tip
+
+
+// Number of cells radially in each of the two regions between
+// impeller and baffle tips
+
+
+// Number of cells radially between baffle tip and tank
+
+
+// Number of cells azimuthally in each of the 8 blocks
+
+
+// Number of cells in the thickness of the slab
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+vertices
+(
+    (0.2 0 0) // Vertex r0b = 0
+    (0.2 0 0) // Vertex r0sb = 1
+    (0.141421356364228 -0.141421356110391 0) // Vertex r1b = 2
+    (3.58979347393082e-10 -0.2 0) // Vertex r2b = 3
+    (3.58979347393082e-10 -0.2 0) // Vertex r2sb = 4
+    (-0.141421355856554 -0.141421356618065 0) // Vertex r3b = 5
+    (-0.2 7.17958694786164e-10 0) // Vertex r4b = 6
+    (-0.2 7.17958694786164e-10 0) // Vertex r4sb = 7
+    (-0.141421355856554 0.141421356618065 0) // Vertex r5b = 8
+    (3.58979347393082e-10 0.2 0) // Vertex r6b = 9
+    (3.58979347393082e-10 0.2 0) // Vertex r6sb = 10
+    (0.141421356364228 0.141421356110391 0) // Vertex r7b = 11
+
+    (0.5 0 0) // Vertex rb0b = 12
+    (0.353553390910569 -0.353553390275978 0) // Vertex rb1b = 13
+    (8.97448368482705e-10 -0.5 0) // Vertex rb2b = 14
+    (-0.353553389641386 -0.353553391545162 0) // Vertex rb3b = 15
+    (-0.5 1.79489673696541e-09 0) // Vertex rb4b = 16
+    (-0.353553389641386 0.353553391545162 0) // Vertex rb5b = 17
+    (8.97448368482705e-10 0.5 0) // Vertex rb6b = 18
+    (0.353553390910569 0.353553390275978 0) // Vertex rb7b = 19
+
+    (0.6 0 0) // Vertex ri0b = 20
+    (0.424264069092683 -0.424264068331174 0) // Vertex ri1b = 21
+    (1.07693804217925e-09 -0.6 0) // Vertex ri2b = 22
+    (-0.424264067569663 -0.424264069854194 0) // Vertex ri3b = 23
+    (-0.6 2.15387608435849e-09 0) // Vertex ri4b = 24
+    (-0.424264067569663 0.424264069854194 0) // Vertex ri5b = 25
+    (1.07693804217925e-09 0.6 0) // Vertex ri6b = 26
+    (0.424264069092683 0.424264068331174 0) // Vertex ri7b = 27
+
+    (0.7 0 0) // Vertex Rb0b = 28
+    (0.494974747274797 -0.494974746386369 0) // Vertex Rb1b = 29
+    (1.25642771587579e-09 -0.7 0) // Vertex Rb2b = 30
+    (-0.49497474549794 -0.494974748163226 0) // Vertex Rb3b = 31
+    (-0.7 2.51285543175157e-09 0) // Vertex Rb4b = 32
+    (-0.49497474549794 0.494974748163226 0) // Vertex Rb5b = 33
+    (1.25642771587579e-09 0.7 0) // Vertex Rb6b = 34
+    (0.494974747274797 0.494974746386369 0) // Vertex Rb7b = 35
+
+    (1 0 0) // Vertex R0b = 36
+    (0.707106781821139 -0.707106780551956 0) // Vertex R1b = 37
+    (0.707106781821139 -0.707106780551956 0) // Vertex R1sb = 38
+    (1.79489673696541e-09 -1 0) // Vertex R2b = 39
+    (-0.707106779282772 -0.707106783090323 0) // Vertex R3b = 40
+    (-0.707106779282772 -0.707106783090323 0) // Vertex R3sb = 41
+    (-1 3.58979347393082e-09 0) // Vertex R4b = 42
+    (-0.707106779282772 0.707106783090323 0) // Vertex R5b = 43
+    (-0.707106779282772 0.707106783090323 0) // Vertex R5sb = 44
+    (1.79489673696541e-09 1 0) // Vertex R6b = 45
+    (0.707106781821139 0.707106780551956 0) // Vertex R7b = 46
+    (0.707106781821139 0.707106780551956 0) // Vertex R7sb = 47
+
+    (0.2 0 0.1) // Vertex r0t = 48
+    (0.2 0 0.1) // Vertex r0st = 49
+    (0.141421356364228 -0.141421356110391 0.1) // Vertex r1t = 50
+    (3.58979347393082e-10 -0.2 0.1) // Vertex r2t = 51
+    (3.58979347393082e-10 -0.2 0.1) // Vertex r2st = 52
+    (-0.141421355856554 -0.141421356618065 0.1) // Vertex r3t = 53
+    (-0.2 7.17958694786164e-10 0.1) // Vertex r4t = 54
+    (-0.2 7.17958694786164e-10 0.1) // Vertex r4st = 55
+    (-0.141421355856554 0.141421356618065 0.1) // Vertex r5t = 56
+    (3.58979347393082e-10 0.2 0.1) // Vertex r6t = 57
+    (3.58979347393082e-10 0.2 0.1) // Vertex r6st = 58
+    (0.141421356364228 0.141421356110391 0.1) // Vertex r7t = 59
+
+    (0.5 0 0.1) // Vertex rb0t = 60
+    (0.353553390910569 -0.353553390275978 0.1) // Vertex rb1t = 61
+    (8.97448368482705e-10 -0.5 0.1) // Vertex rb2t = 62
+    (-0.353553389641386 -0.353553391545162 0.1) // Vertex rb3t = 63
+    (-0.5 1.79489673696541e-09 0.1) // Vertex rb4t = 64
+    (-0.353553389641386 0.353553391545162 0.1) // Vertex rb5t = 65
+    (8.97448368482705e-10 0.5 0.1) // Vertex rb6t = 66
+    (0.353553390910569 0.353553390275978 0.1) // Vertex rb7t = 67
+
+    (0.6 0 0.1) // Vertex ri0t = 68
+    (0.424264069092683 -0.424264068331174 0.1) // Vertex ri1t = 69
+    (1.07693804217925e-09 -0.6 0.1) // Vertex ri2t = 70
+    (-0.424264067569663 -0.424264069854194 0.1) // Vertex ri3t = 71
+    (-0.6 2.15387608435849e-09 0.1) // Vertex ri4t = 72
+    (-0.424264067569663 0.424264069854194 0.1) // Vertex ri5t = 73
+    (1.07693804217925e-09 0.6 0.1) // Vertex ri6t = 74
+    (0.424264069092683 0.424264068331174 0.1) // Vertex ri7t = 75
+
+    (0.7 0 0.1) // Vertex Rb0t = 76
+    (0.494974747274797 -0.494974746386369 0.1) // Vertex Rb1t = 77
+    (1.25642771587579e-09 -0.7 0.1) // Vertex Rb2t = 78
+    (-0.49497474549794 -0.494974748163226 0.1) // Vertex Rb3t = 79
+    (-0.7 2.51285543175157e-09 0.1) // Vertex Rb4t = 80
+    (-0.49497474549794 0.494974748163226 0.1) // Vertex Rb5t = 81
+    (1.25642771587579e-09 0.7 0.1) // Vertex Rb6t = 82
+    (0.494974747274797 0.494974746386369 0.1) // Vertex Rb7t = 83
+
+    (1 0 0.1) // Vertex R0t = 84
+    (0.707106781821139 -0.707106780551956 0.1) // Vertex R1t = 85
+    (0.707106781821139 -0.707106780551956 0.1) // Vertex R1st = 86
+    (1.79489673696541e-09 -1 0.1) // Vertex R2t = 87
+    (-0.707106779282772 -0.707106783090323 0.1) // Vertex R3t = 88
+    (-0.707106779282772 -0.707106783090323 0.1) // Vertex R3st = 89
+    (-1 3.58979347393082e-09 0.1) // Vertex R4t = 90
+    (-0.707106779282772 0.707106783090323 0.1) // Vertex R5t = 91
+    (-0.707106779282772 0.707106783090323 0.1) // Vertex R5st = 92
+    (1.79489673696541e-09 1 0.1) // Vertex R6t = 93
+    (0.707106781821139 0.707106780551956 0.1) // Vertex R7t = 94
+    (0.707106781821139 0.707106780551956 0.1) // Vertex R7st = 95
+);
+
+blocks
+(
+    // block0
+    hex (0 2 13 12 48 50 61 60)
+    rotor
+    (12 12 1)
+    simpleGrading (1 1 1)
+
+    // block1
+    hex (2 4 14 13 50 52 62 61)
+    rotor
+    (12 12 1)
+    simpleGrading (1 1 1)
+
+    // block2
+    hex (3 5 15 14 51 53 63 62)
+    rotor
+    (12 12 1)
+    simpleGrading (1 1 1)
+
+    // block3
+    hex (5 7 16 15 53 55 64 63)
+    rotor
+    (12 12 1)
+    simpleGrading (1 1 1)
+
+    // block4
+    hex (6 8 17 16 54 56 65 64)
+    rotor
+    (12 12 1)
+    simpleGrading (1 1 1)
+
+    // block5
+    hex (8 10 18 17 56 58 66 65)
+    rotor
+    (12 12 1)
+    simpleGrading (1 1 1)
+
+    // block6
+    hex (9 11 19 18 57 59 67 66)
+    rotor
+    (12 12 1)
+    simpleGrading (1 1 1)
+
+    // block7
+    hex (11 1 12 19 59 49 60 67)
+    rotor
+    (12 12 1)
+    simpleGrading (1 1 1)
+
+    // block0
+    hex (12 13 21 20 60 61 69 68)
+    rotor
+    (12 4 1)
+    simpleGrading (1 1 1)
+
+    // block1
+    hex (13 14 22 21 61 62 70 69)
+    rotor
+    (12 4 1)
+    simpleGrading (1 1 1)
+
+    // block2
+    hex (14 15 23 22 62 63 71 70)
+    rotor
+    (12 4 1)
+    simpleGrading (1 1 1)
+
+    // block3
+    hex (15 16 24 23 63 64 72 71)
+    rotor
+    (12 4 1)
+    simpleGrading (1 1 1)
+
+    // block4
+    hex (16 17 25 24 64 65 73 72)
+    rotor
+    (12 4 1)
+    simpleGrading (1 1 1)
+
+    // block5
+    hex (17 18 26 25 65 66 74 73)
+    rotor
+    (12 4 1)
+    simpleGrading (1 1 1)
+
+    // block6
+    hex (18 19 27 26 66 67 75 74)
+    rotor
+    (12 4 1)
+    simpleGrading (1 1 1)
+
+    // block7
+    hex (19 12 20 27 67 60 68 75)
+    rotor
+    (12 4 1)
+    simpleGrading (1 1 1)
+
+    // block0
+    hex (20 21 29 28 68 69 77 76)
+    (12 4 1)
+    simpleGrading (1 1 1)
+
+    // block1
+    hex (21 22 30 29 69 70 78 77)
+    (12 4 1)
+    simpleGrading (1 1 1)
+
+    // block2
+    hex (22 23 31 30 70 71 79 78)
+    (12 4 1)
+    simpleGrading (1 1 1)
+
+    // block3
+    hex (23 24 32 31 71 72 80 79)
+    (12 4 1)
+    simpleGrading (1 1 1)
+
+    // block4
+    hex (24 25 33 32 72 73 81 80)
+    (12 4 1)
+    simpleGrading (1 1 1)
+
+    // block5
+    hex (25 26 34 33 73 74 82 81)
+    (12 4 1)
+    simpleGrading (1 1 1)
+
+    // block6
+    hex (26 27 35 34 74 75 83 82)
+    (12 4 1)
+    simpleGrading (1 1 1)
+
+    // block7
+    hex (27 20 28 35 75 68 76 83)
+    (12 4 1)
+    simpleGrading (1 1 1)
+
+    // block0
+    hex (28 29 38 36 76 77 86 84)
+    (12 12 1)
+    simpleGrading (1 1 1)
+
+    // block1
+    hex (29 30 39 37 77 78 87 85)
+    (12 12 1)
+    simpleGrading (1 1 1)
+
+    // block2
+    hex (30 31 41 39 78 79 89 87)
+    (12 12 1)
+    simpleGrading (1 1 1)
+
+    // block3
+    hex (31 32 42 40 79 80 90 88)
+    (12 12 1)
+    simpleGrading (1 1 1)
+
+    // block4
+    hex (32 33 44 42 80 81 92 90)
+    (12 12 1)
+    simpleGrading (1 1 1)
+
+    // block5
+    hex (33 34 45 43 81 82 93 91)
+    (12 12 1)
+    simpleGrading (1 1 1)
+
+    // block6
+    hex (34 35 47 45 82 83 95 93)
+    (12 12 1)
+    simpleGrading (1 1 1)
+
+    // block7
+    hex (35 28 36 46 83 76 84 94)
+    (12 12 1)
+    simpleGrading (1 1 1)
+);
+
+edges
+(
+    arc 0 2 (0.184775906536601 -0.0765366863901046 0)
+    arc 2 4 (0.0765366867217582 -0.184775906399226 0)
+    arc 3 5 (-0.0765366860584508 -0.184775906673977 0)
+    arc 5 7 (-0.18477590626185 -0.0765366870534118 0)
+    arc 6 8 (-0.18477590626185 0.0765366870534118 0)
+    arc 8 10 (-0.0765366860584508 0.184775906673977 0)
+    arc 9 11 (0.0765366867217582 0.184775906399226 0)
+    arc 11 1 (0.184775906536601 0.0765366863901046 0)
+
+    arc 12 13 (0.461939766341503 -0.191341715975262 0)
+    arc 13 14 (0.191341716804395 -0.461939765998065 0)
+    arc 14 15 (-0.191341715146127 -0.461939766684942 0)
+    arc 15 16 (-0.461939765654626 -0.19134171763353 0)
+    arc 16 17 (-0.461939765654626 0.19134171763353 0)
+    arc 17 18 (-0.191341715146127 0.461939766684942 0)
+    arc 18 19 (0.191341716804395 0.461939765998065 0)
+    arc 19 12 (0.461939766341503 0.191341715975262 0)
+
+    arc 20 21 (0.554327719609804 -0.229610059170314 0)
+    arc 21 22 (0.229610060165275 -0.554327719197677 0)
+    arc 22 23 (-0.229610058175352 -0.55432772002193 0)
+    arc 23 24 (-0.554327718785551 -0.229610061160235 0)
+    arc 24 25 (-0.554327718785551 0.229610061160235 0)
+    arc 25 26 (-0.229610058175352 0.55432772002193 0)
+    arc 26 27 (0.229610060165275 0.554327719197677 0)
+    arc 27 20 (0.554327719609804 0.229610059170314 0)
+
+    arc 28 29 (0.646715672878104 -0.267878402365366 0)
+    arc 29 30 (0.267878403526154 -0.64671567239729 0)
+    arc 30 31 (-0.267878401204578 -0.646715673358918 0)
+    arc 31 32 (-0.646715671916476 -0.267878404686941 0)
+    arc 32 33 (-0.646715671916476 0.267878404686941 0)
+    arc 33 34 (-0.267878401204578 0.646715673358918 0)
+    arc 34 35 (0.267878403526154 0.64671567239729 0)
+    arc 35 28 (0.646715672878104 0.267878402365366 0)
+
+    arc 36 38 (0.923879532683006 -0.382683431950523 0)
+    arc 37 39 (0.382683433608791 -0.923879531996129 0)
+    arc 39 41 (-0.382683430292254 -0.923879533369883 0)
+    arc 40 42 (-0.923879531309252 -0.382683435267059 0)
+    arc 42 44 (-0.923879531309252 0.382683435267059 0)
+    arc 43 45 (-0.382683430292254 0.923879533369883 0)
+    arc 45 47 (0.382683433608791 0.923879531996129 0)
+    arc 46 36 (0.923879532683006 0.382683431950523 0)
+
+    arc 48 50 (0.184775906536601 -0.0765366863901046 0.1)
+    arc 50 52 (0.0765366867217582 -0.184775906399226 0.1)
+    arc 51 53 (-0.0765366860584508 -0.184775906673977 0.1)
+    arc 53 55 (-0.18477590626185 -0.0765366870534118 0.1)
+    arc 54 56 (-0.18477590626185 0.0765366870534118 0.1)
+    arc 56 58 (-0.0765366860584508 0.184775906673977 0.1)
+    arc 57 59 (0.0765366867217582 0.184775906399226 0.1)
+    arc 59 49 (0.184775906536601 0.0765366863901046 0.1)
+
+    arc 60 61 (0.461939766341503 -0.191341715975262 0.1)
+    arc 61 62 (0.191341716804395 -0.461939765998065 0.1)
+    arc 62 63 (-0.191341715146127 -0.461939766684942 0.1)
+    arc 63 64 (-0.461939765654626 -0.19134171763353 0.1)
+    arc 64 65 (-0.461939765654626 0.19134171763353 0.1)
+    arc 65 66 (-0.191341715146127 0.461939766684942 0.1)
+    arc 66 67 (0.191341716804395 0.461939765998065 0.1)
+    arc 67 60 (0.461939766341503 0.191341715975262 0.1)
+
+    arc 68 69 (0.554327719609804 -0.229610059170314 0.1)
+    arc 69 70 (0.229610060165275 -0.554327719197677 0.1)
+    arc 70 71 (-0.229610058175352 -0.55432772002193 0.1)
+    arc 71 72 (-0.554327718785551 -0.229610061160235 0.1)
+    arc 72 73 (-0.554327718785551 0.229610061160235 0.1)
+    arc 73 74 (-0.229610058175352 0.55432772002193 0.1)
+    arc 74 75 (0.229610060165275 0.554327719197677 0.1)
+    arc 75 68 (0.554327719609804 0.229610059170314 0.1)
+
+    arc 76 77 (0.646715672878104 -0.267878402365366 0.1)
+    arc 77 78 (0.267878403526154 -0.64671567239729 0.1)
+    arc 78 79 (-0.267878401204578 -0.646715673358918 0.1)
+    arc 79 80 (-0.646715671916476 -0.267878404686941 0.1)
+    arc 80 81 (-0.646715671916476 0.267878404686941 0.1)
+    arc 81 82 (-0.267878401204578 0.646715673358918 0.1)
+    arc 82 83 (0.267878403526154 0.64671567239729 0.1)
+    arc 83 76 (0.646715672878104 0.267878402365366 0.1)
+
+    arc 84 86 (0.923879532683006 -0.382683431950523 0.1)
+    arc 85 87 (0.382683433608791 -0.923879531996129 0.1)
+    arc 87 89 (-0.382683430292254 -0.923879533369883 0.1)
+    arc 88 90 (-0.923879531309252 -0.382683435267059 0.1)
+    arc 90 92 (-0.923879531309252 0.382683435267059 0.1)
+    arc 91 93 (-0.382683430292254 0.923879533369883 0.1)
+    arc 93 95 (0.382683433608791 0.923879531996129 0.1)
+    arc 94 84 (0.923879532683006 0.382683431950523 0.1)
+);
+
+patches
+(
+    wall rotor
+    (
+        (0 2 50 48)
+        (2 4 52 50)
+        (3 5 53 51)
+        (5 7 55 53)
+        (6 8 56 54)
+        (8 10 58 56)
+        (9 11 59 57)
+        (11 1 49 59)
+
+        (0 12 60 48)
+        (1 12 60 49)
+
+        (3 14 62 51)
+        (4 14 62 52)
+
+        (6 16 64 54)
+        (7 16 64 55)
+
+        (9 18 66 57)
+        (10 18 66 58)
+    )
+
+    wall stator
+    (
+        (36 38 86 84)
+        (37 39 87 85)
+        (39 41 89 87)
+        (40 42 90 88)
+        (42 44 92 90)
+        (43 45 93 91)
+        (45 47 95 93)
+        (46 36 84 94)
+
+        (37 29 77 85)
+        (38 29 77 86)
+
+        (40 31 79 88)
+        (41 31 79 89)
+
+        (43 33 81 91)
+        (44 33 81 92)
+
+        (46 35 83 94)
+        (47 35 83 95)
+    )
+
+    empty front
+    (
+        (48 50 61 60)
+        (50 52 62 61)
+        (51 53 63 62)
+        (53 55 64 63)
+        (54 56 65 64)
+        (56 58 66 65)
+        (57 59 67 66)
+        (59 49 60 67)
+        (60 61 69 68)
+        (61 62 70 69)
+        (62 63 71 70)
+        (63 64 72 71)
+        (64 65 73 72)
+        (65 66 74 73)
+        (66 67 75 74)
+        (67 60 68 75)
+        (68 69 77 76)
+        (69 70 78 77)
+        (70 71 79 78)
+        (71 72 80 79)
+        (72 73 81 80)
+        (73 74 82 81)
+        (74 75 83 82)
+        (75 68 76 83)
+        (76 77 86 84)
+        (77 78 87 85)
+        (78 79 89 87)
+        (79 80 90 88)
+        (80 81 92 90)
+        (81 82 93 91)
+        (82 83 95 93)
+        (83 76 84 94)
+    )
+
+    empty back
+    (
+        (0 12 13 2)
+        (2 13 14 4)
+        (3 14 15 5)
+        (5 15 16 7)
+        (6 16 17 8)
+        (8 17 18 10)
+        (9 18 19 11)
+        (11 19 12 1)
+        (12 20 21 13)
+        (13 21 22 14)
+        (14 22 23 15)
+        (15 23 24 16)
+        (16 24 25 17)
+        (17 25 26 18)
+        (18 26 27 19)
+        (19 27 20 12)
+        (20 28 29 21)
+        (21 29 30 22)
+        (22 30 31 23)
+        (23 31 32 24)
+        (24 32 33 25)
+        (25 33 34 26)
+        (26 34 35 27)
+        (27 35 28 20)
+        (28 36 38 29)
+        (29 37 39 30)
+        (30 39 41 31)
+        (31 40 42 32)
+        (32 42 44 33)
+        (33 43 45 34)
+        (34 45 47 35)
+        (35 46 36 28)
+    )
+);
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/system/blockMeshDict.m4 b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/system/blockMeshDict.m4
new file mode 100644
index 0000000000000000000000000000000000000000..a93868498ba68d11b25b0875ff69205f62f822ed
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/system/blockMeshDict.m4
@@ -0,0 +1,818 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    `format'      ascii;
+    class       dictionary;
+    object      blockMeshDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// General macros to create 2D/extruded-2D meshes
+
+changecom(//)changequote([,])
+define(calc, [esyscmd(perl -e 'print ($1)')])
+define(VCOUNT, 0)
+define(vlabel, [[// ]Vertex $1 = VCOUNT define($1, VCOUNT)define([VCOUNT], incr(VCOUNT))])
+define(pi, 3.14159265)
+
+define(hex2D, hex ($1b $2b $3b $4b $1t $2t $3t $4t))
+define(quad2D, ($1b $2b $2t $1t))
+define(frontQuad, ($1t $2t $3t $4t))
+define(backQuad, ($1b $4b $3b $2b))
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+convertToMeters 0.1;
+
+// Hub radius
+define(r, 0.2)
+
+// Impeller-tip radius
+define(rb, 0.5)
+
+// Baffle-tip radius
+define(Rb, 0.7)
+
+// Tank radius
+define(R, 1)
+
+// MRF region radius
+define(ri, calc(0.5*(rb + Rb)))
+
+// Thickness of 2D slab
+define(z, 0.1)
+
+// Base z
+define(Zb, 0)
+
+// Top z
+define(Zt, calc(Zb + z))
+
+// Number of cells radially between hub and impeller tip
+define(Nr, 12)
+
+// Number of cells radially in each of the two regions between
+// impeller and baffle tips
+define(Ni, 4)
+
+// Number of cells radially between baffle tip and tank
+define(NR, 12)
+
+// Number of cells azimuthally in each of the 8 blocks
+define(Na, 12)
+
+// Number of cells in the thickness of the slab
+define(Nz, 1)
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+define(vert, (x$1$2 y$1$2 $3))
+define(evert, (ex$1$2 ey$1$2 $3))
+
+define(a0, 0)
+define(a1, -45)
+define(a2, -90)
+define(a3, -135)
+define(a4, 180)
+define(a5, 135)
+define(a6, 90)
+define(a7, 45)
+
+define(ea0, -22.5)
+define(ea1, -67.5)
+define(ea2, -112.5)
+define(ea3, -157.5)
+define(ea4, 157.5)
+define(ea5, 112.5)
+define(ea6, 67.5)
+define(ea7, 22.5)
+
+define(ca0, calc(cos((pi/180)*a0)))
+define(ca1, calc(cos((pi/180)*a1)))
+define(ca2, calc(cos((pi/180)*a2)))
+define(ca3, calc(cos((pi/180)*a3)))
+define(ca4, calc(cos((pi/180)*a4)))
+define(ca5, calc(cos((pi/180)*a5)))
+define(ca6, calc(cos((pi/180)*a6)))
+define(ca7, calc(cos((pi/180)*a7)))
+
+define(sa0, calc(sin((pi/180)*a0)))
+define(sa1, calc(sin((pi/180)*a1)))
+define(sa2, calc(sin((pi/180)*a2)))
+define(sa3, calc(sin((pi/180)*a3)))
+define(sa4, calc(sin((pi/180)*a4)))
+define(sa5, calc(sin((pi/180)*a5)))
+define(sa6, calc(sin((pi/180)*a6)))
+define(sa7, calc(sin((pi/180)*a7)))
+
+define(cea0, calc(cos((pi/180)*ea0)))
+define(cea1, calc(cos((pi/180)*ea1)))
+define(cea2, calc(cos((pi/180)*ea2)))
+define(cea3, calc(cos((pi/180)*ea3)))
+define(cea4, calc(cos((pi/180)*ea4)))
+define(cea5, calc(cos((pi/180)*ea5)))
+define(cea6, calc(cos((pi/180)*ea6)))
+define(cea7, calc(cos((pi/180)*ea7)))
+
+define(sea0, calc(sin((pi/180)*ea0)))
+define(sea1, calc(sin((pi/180)*ea1)))
+define(sea2, calc(sin((pi/180)*ea2)))
+define(sea3, calc(sin((pi/180)*ea3)))
+define(sea4, calc(sin((pi/180)*ea4)))
+define(sea5, calc(sin((pi/180)*ea5)))
+define(sea6, calc(sin((pi/180)*ea6)))
+define(sea7, calc(sin((pi/180)*ea7)))
+
+define(x00, calc(r*ca0))
+define(x01, calc(r*ca1))
+define(x02, calc(r*ca2))
+define(x03, calc(r*ca3))
+define(x04, calc(r*ca4))
+define(x05, calc(r*ca5))
+define(x06, calc(r*ca6))
+define(x07, calc(r*ca7))
+
+define(x10, calc(rb*ca0))
+define(x11, calc(rb*ca1))
+define(x12, calc(rb*ca2))
+define(x13, calc(rb*ca3))
+define(x14, calc(rb*ca4))
+define(x15, calc(rb*ca5))
+define(x16, calc(rb*ca6))
+define(x17, calc(rb*ca7))
+
+define(x20, calc(ri*ca0))
+define(x21, calc(ri*ca1))
+define(x22, calc(ri*ca2))
+define(x23, calc(ri*ca3))
+define(x24, calc(ri*ca4))
+define(x25, calc(ri*ca5))
+define(x26, calc(ri*ca6))
+define(x27, calc(ri*ca7))
+
+define(x30, calc(Rb*ca0))
+define(x31, calc(Rb*ca1))
+define(x32, calc(Rb*ca2))
+define(x33, calc(Rb*ca3))
+define(x34, calc(Rb*ca4))
+define(x35, calc(Rb*ca5))
+define(x36, calc(Rb*ca6))
+define(x37, calc(Rb*ca7))
+
+define(x40, calc(R*ca0))
+define(x41, calc(R*ca1))
+define(x42, calc(R*ca2))
+define(x43, calc(R*ca3))
+define(x44, calc(R*ca4))
+define(x45, calc(R*ca5))
+define(x46, calc(R*ca6))
+define(x47, calc(R*ca7))
+
+define(y00, calc(r*sa0))
+define(y01, calc(r*sa1))
+define(y02, calc(r*sa2))
+define(y03, calc(r*sa3))
+define(y04, calc(r*sa4))
+define(y05, calc(r*sa5))
+define(y06, calc(r*sa6))
+define(y07, calc(r*sa7))
+
+define(y10, calc(rb*sa0))
+define(y11, calc(rb*sa1))
+define(y12, calc(rb*sa2))
+define(y13, calc(rb*sa3))
+define(y14, calc(rb*sa4))
+define(y15, calc(rb*sa5))
+define(y16, calc(rb*sa6))
+define(y17, calc(rb*sa7))
+
+define(y20, calc(ri*sa0))
+define(y21, calc(ri*sa1))
+define(y22, calc(ri*sa2))
+define(y23, calc(ri*sa3))
+define(y24, calc(ri*sa4))
+define(y25, calc(ri*sa5))
+define(y26, calc(ri*sa6))
+define(y27, calc(ri*sa7))
+
+define(y30, calc(Rb*sa0))
+define(y31, calc(Rb*sa1))
+define(y32, calc(Rb*sa2))
+define(y33, calc(Rb*sa3))
+define(y34, calc(Rb*sa4))
+define(y35, calc(Rb*sa5))
+define(y36, calc(Rb*sa6))
+define(y37, calc(Rb*sa7))
+
+define(y40, calc(R*sa0))
+define(y41, calc(R*sa1))
+define(y42, calc(R*sa2))
+define(y43, calc(R*sa3))
+define(y44, calc(R*sa4))
+define(y45, calc(R*sa5))
+define(y46, calc(R*sa6))
+define(y47, calc(R*sa7))
+
+define(ex00, calc(r*cea0))
+define(ex01, calc(r*cea1))
+define(ex02, calc(r*cea2))
+define(ex03, calc(r*cea3))
+define(ex04, calc(r*cea4))
+define(ex05, calc(r*cea5))
+define(ex06, calc(r*cea6))
+define(ex07, calc(r*cea7))
+
+define(ex10, calc(rb*cea0))
+define(ex11, calc(rb*cea1))
+define(ex12, calc(rb*cea2))
+define(ex13, calc(rb*cea3))
+define(ex14, calc(rb*cea4))
+define(ex15, calc(rb*cea5))
+define(ex16, calc(rb*cea6))
+define(ex17, calc(rb*cea7))
+
+define(ex20, calc(ri*cea0))
+define(ex21, calc(ri*cea1))
+define(ex22, calc(ri*cea2))
+define(ex23, calc(ri*cea3))
+define(ex24, calc(ri*cea4))
+define(ex25, calc(ri*cea5))
+define(ex26, calc(ri*cea6))
+define(ex27, calc(ri*cea7))
+
+define(ex30, calc(Rb*cea0))
+define(ex31, calc(Rb*cea1))
+define(ex32, calc(Rb*cea2))
+define(ex33, calc(Rb*cea3))
+define(ex34, calc(Rb*cea4))
+define(ex35, calc(Rb*cea5))
+define(ex36, calc(Rb*cea6))
+define(ex37, calc(Rb*cea7))
+
+define(ex40, calc(R*cea0))
+define(ex41, calc(R*cea1))
+define(ex42, calc(R*cea2))
+define(ex43, calc(R*cea3))
+define(ex44, calc(R*cea4))
+define(ex45, calc(R*cea5))
+define(ex46, calc(R*cea6))
+define(ex47, calc(R*cea7))
+
+define(ey00, calc(r*sea0))
+define(ey01, calc(r*sea1))
+define(ey02, calc(r*sea2))
+define(ey03, calc(r*sea3))
+define(ey04, calc(r*sea4))
+define(ey05, calc(r*sea5))
+define(ey06, calc(r*sea6))
+define(ey07, calc(r*sea7))
+
+define(ey10, calc(rb*sea0))
+define(ey11, calc(rb*sea1))
+define(ey12, calc(rb*sea2))
+define(ey13, calc(rb*sea3))
+define(ey14, calc(rb*sea4))
+define(ey15, calc(rb*sea5))
+define(ey16, calc(rb*sea6))
+define(ey17, calc(rb*sea7))
+
+define(ey20, calc(ri*sea0))
+define(ey21, calc(ri*sea1))
+define(ey22, calc(ri*sea2))
+define(ey23, calc(ri*sea3))
+define(ey24, calc(ri*sea4))
+define(ey25, calc(ri*sea5))
+define(ey26, calc(ri*sea6))
+define(ey27, calc(ri*sea7))
+
+define(ey30, calc(Rb*sea0))
+define(ey31, calc(Rb*sea1))
+define(ey32, calc(Rb*sea2))
+define(ey33, calc(Rb*sea3))
+define(ey34, calc(Rb*sea4))
+define(ey35, calc(Rb*sea5))
+define(ey36, calc(Rb*sea6))
+define(ey37, calc(Rb*sea7))
+
+define(ey40, calc(R*sea0))
+define(ey41, calc(R*sea1))
+define(ey42, calc(R*sea2))
+define(ey43, calc(R*sea3))
+define(ey44, calc(R*sea4))
+define(ey45, calc(R*sea5))
+define(ey46, calc(R*sea6))
+define(ey47, calc(R*sea7))
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+vertices
+(
+    vert(0, 0, Zb) vlabel(r0b)
+    vert(0, 0, Zb) vlabel(r0sb)
+    vert(0, 1, Zb) vlabel(r1b)
+    vert(0, 2, Zb) vlabel(r2b)
+    vert(0, 2, Zb) vlabel(r2sb)
+    vert(0, 3, Zb) vlabel(r3b)
+    vert(0, 4, Zb) vlabel(r4b)
+    vert(0, 4, Zb) vlabel(r4sb)
+    vert(0, 5, Zb) vlabel(r5b)
+    vert(0, 6, Zb) vlabel(r6b)
+    vert(0, 6, Zb) vlabel(r6sb)
+    vert(0, 7, Zb) vlabel(r7b)
+
+    vert(1, 0, Zb) vlabel(rb0b)
+    vert(1, 1, Zb) vlabel(rb1b)
+    vert(1, 2, Zb) vlabel(rb2b)
+    vert(1, 3, Zb) vlabel(rb3b)
+    vert(1, 4, Zb) vlabel(rb4b)
+    vert(1, 5, Zb) vlabel(rb5b)
+    vert(1, 6, Zb) vlabel(rb6b)
+    vert(1, 7, Zb) vlabel(rb7b)
+
+    vert(2, 0, Zb) vlabel(ri0b)
+    vert(2, 1, Zb) vlabel(ri1b)
+    vert(2, 2, Zb) vlabel(ri2b)
+    vert(2, 3, Zb) vlabel(ri3b)
+    vert(2, 4, Zb) vlabel(ri4b)
+    vert(2, 5, Zb) vlabel(ri5b)
+    vert(2, 6, Zb) vlabel(ri6b)
+    vert(2, 7, Zb) vlabel(ri7b)
+
+    vert(3, 0, Zb) vlabel(Rb0b)
+    vert(3, 1, Zb) vlabel(Rb1b)
+    vert(3, 2, Zb) vlabel(Rb2b)
+    vert(3, 3, Zb) vlabel(Rb3b)
+    vert(3, 4, Zb) vlabel(Rb4b)
+    vert(3, 5, Zb) vlabel(Rb5b)
+    vert(3, 6, Zb) vlabel(Rb6b)
+    vert(3, 7, Zb) vlabel(Rb7b)
+
+    vert(4, 0, Zb) vlabel(R0b)
+    vert(4, 1, Zb) vlabel(R1b)
+    vert(4, 1, Zb) vlabel(R1sb)
+    vert(4, 2, Zb) vlabel(R2b)
+    vert(4, 3, Zb) vlabel(R3b)
+    vert(4, 3, Zb) vlabel(R3sb)
+    vert(4, 4, Zb) vlabel(R4b)
+    vert(4, 5, Zb) vlabel(R5b)
+    vert(4, 5, Zb) vlabel(R5sb)
+    vert(4, 6, Zb) vlabel(R6b)
+    vert(4, 7, Zb) vlabel(R7b)
+    vert(4, 7, Zb) vlabel(R7sb)
+
+    vert(0, 0, Zt) vlabel(r0t)
+    vert(0, 0, Zt) vlabel(r0st)
+    vert(0, 1, Zt) vlabel(r1t)
+    vert(0, 2, Zt) vlabel(r2t)
+    vert(0, 2, Zt) vlabel(r2st)
+    vert(0, 3, Zt) vlabel(r3t)
+    vert(0, 4, Zt) vlabel(r4t)
+    vert(0, 4, Zt) vlabel(r4st)
+    vert(0, 5, Zt) vlabel(r5t)
+    vert(0, 6, Zt) vlabel(r6t)
+    vert(0, 6, Zt) vlabel(r6st)
+    vert(0, 7, Zt) vlabel(r7t)
+
+    vert(1, 0, Zt) vlabel(rb0t)
+    vert(1, 1, Zt) vlabel(rb1t)
+    vert(1, 2, Zt) vlabel(rb2t)
+    vert(1, 3, Zt) vlabel(rb3t)
+    vert(1, 4, Zt) vlabel(rb4t)
+    vert(1, 5, Zt) vlabel(rb5t)
+    vert(1, 6, Zt) vlabel(rb6t)
+    vert(1, 7, Zt) vlabel(rb7t)
+
+    vert(2, 0, Zt) vlabel(ri0t)
+    vert(2, 1, Zt) vlabel(ri1t)
+    vert(2, 2, Zt) vlabel(ri2t)
+    vert(2, 3, Zt) vlabel(ri3t)
+    vert(2, 4, Zt) vlabel(ri4t)
+    vert(2, 5, Zt) vlabel(ri5t)
+    vert(2, 6, Zt) vlabel(ri6t)
+    vert(2, 7, Zt) vlabel(ri7t)
+
+    vert(3, 0, Zt) vlabel(Rb0t)
+    vert(3, 1, Zt) vlabel(Rb1t)
+    vert(3, 2, Zt) vlabel(Rb2t)
+    vert(3, 3, Zt) vlabel(Rb3t)
+    vert(3, 4, Zt) vlabel(Rb4t)
+    vert(3, 5, Zt) vlabel(Rb5t)
+    vert(3, 6, Zt) vlabel(Rb6t)
+    vert(3, 7, Zt) vlabel(Rb7t)
+
+    vert(4, 0, Zt) vlabel(R0t)
+    vert(4, 1, Zt) vlabel(R1t)
+    vert(4, 1, Zt) vlabel(R1st)
+    vert(4, 2, Zt) vlabel(R2t)
+    vert(4, 3, Zt) vlabel(R3t)
+    vert(4, 3, Zt) vlabel(R3st)
+    vert(4, 4, Zt) vlabel(R4t)
+    vert(4, 5, Zt) vlabel(R5t)
+    vert(4, 5, Zt) vlabel(R5st)
+    vert(4, 6, Zt) vlabel(R6t)
+    vert(4, 7, Zt) vlabel(R7t)
+    vert(4, 7, Zt) vlabel(R7st)
+);
+
+blocks
+(
+    // block0
+    hex2D(r0, r1, rb1, rb0)
+    rotor
+    (Na Nr Nz)
+    simpleGrading (1 1 1)
+
+    // block1
+    hex2D(r1, r2s, rb2, rb1)
+    rotor
+    (Na Nr Nz)
+    simpleGrading (1 1 1)
+
+    // block2
+    hex2D(r2, r3, rb3, rb2)
+    rotor
+    (Na Nr Nz)
+    simpleGrading (1 1 1)
+
+    // block3
+    hex2D(r3, r4s, rb4, rb3)
+    rotor
+    (Na Nr Nz)
+    simpleGrading (1 1 1)
+
+    // block4
+    hex2D(r4, r5, rb5, rb4)
+    rotor
+    (Na Nr Nz)
+    simpleGrading (1 1 1)
+
+    // block5
+    hex2D(r5, r6s, rb6, rb5)
+    rotor
+    (Na Nr Nz)
+    simpleGrading (1 1 1)
+
+    // block6
+    hex2D(r6, r7, rb7, rb6)
+    rotor
+    (Na Nr Nz)
+    simpleGrading (1 1 1)
+
+    // block7
+    hex2D(r7, r0s, rb0, rb7)
+    rotor
+    (Na Nr Nz)
+    simpleGrading (1 1 1)
+
+    // block0
+    hex2D(rb0, rb1, ri1, ri0)
+    rotor
+    (Na Ni Nz)
+    simpleGrading (1 1 1)
+
+    // block1
+    hex2D(rb1, rb2, ri2, ri1)
+    rotor
+    (Na Ni Nz)
+    simpleGrading (1 1 1)
+
+    // block2
+    hex2D(rb2, rb3, ri3, ri2)
+    rotor
+    (Na Ni Nz)
+    simpleGrading (1 1 1)
+
+    // block3
+    hex2D(rb3, rb4, ri4, ri3)
+    rotor
+    (Na Ni Nz)
+    simpleGrading (1 1 1)
+
+    // block4
+    hex2D(rb4, rb5, ri5, ri4)
+    rotor
+    (Na Ni Nz)
+    simpleGrading (1 1 1)
+
+    // block5
+    hex2D(rb5, rb6, ri6, ri5)
+    rotor
+    (Na Ni Nz)
+    simpleGrading (1 1 1)
+
+    // block6
+    hex2D(rb6, rb7, ri7, ri6)
+    rotor
+    (Na Ni Nz)
+    simpleGrading (1 1 1)
+
+    // block7
+    hex2D(rb7, rb0, ri0, ri7)
+    rotor
+    (Na Ni Nz)
+    simpleGrading (1 1 1)
+
+    // block0
+    hex2D(ri0, ri1, Rb1, Rb0)
+    (Na Ni Nz)
+    simpleGrading (1 1 1)
+
+    // block1
+    hex2D(ri1, ri2, Rb2, Rb1)
+    (Na Ni Nz)
+    simpleGrading (1 1 1)
+
+    // block2
+    hex2D(ri2, ri3, Rb3, Rb2)
+    (Na Ni Nz)
+    simpleGrading (1 1 1)
+
+    // block3
+    hex2D(ri3, ri4, Rb4, Rb3)
+    (Na Ni Nz)
+    simpleGrading (1 1 1)
+
+    // block4
+    hex2D(ri4, ri5, Rb5, Rb4)
+    (Na Ni Nz)
+    simpleGrading (1 1 1)
+
+    // block5
+    hex2D(ri5, ri6, Rb6, Rb5)
+    (Na Ni Nz)
+    simpleGrading (1 1 1)
+
+    // block6
+    hex2D(ri6, ri7, Rb7, Rb6)
+    (Na Ni Nz)
+    simpleGrading (1 1 1)
+
+    // block7
+    hex2D(ri7, ri0, Rb0, Rb7)
+    (Na Ni Nz)
+    simpleGrading (1 1 1)
+
+    // block0
+    hex2D(Rb0, Rb1, R1s, R0)
+    (Na NR Nz)
+    simpleGrading (1 1 1)
+
+    // block1
+    hex2D(Rb1, Rb2, R2, R1)
+    (Na NR Nz)
+    simpleGrading (1 1 1)
+
+    // block2
+    hex2D(Rb2, Rb3, R3s, R2)
+    (Na NR Nz)
+    simpleGrading (1 1 1)
+
+    // block3
+    hex2D(Rb3, Rb4, R4, R3)
+    (Na NR Nz)
+    simpleGrading (1 1 1)
+
+    // block4
+    hex2D(Rb4, Rb5, R5s, R4)
+    (Na NR Nz)
+    simpleGrading (1 1 1)
+
+    // block5
+    hex2D(Rb5, Rb6, R6, R5)
+    (Na NR Nz)
+    simpleGrading (1 1 1)
+
+    // block6
+    hex2D(Rb6, Rb7, R7s, R6)
+    (Na NR Nz)
+    simpleGrading (1 1 1)
+
+    // block7
+    hex2D(Rb7, Rb0, R0, R7)
+    (Na NR Nz)
+    simpleGrading (1 1 1)
+);
+
+edges
+(
+    arc r0b r1b evert(0, 0, Zb)
+    arc r1b r2sb evert(0, 1, Zb)
+    arc r2b r3b evert(0, 2, Zb)
+    arc r3b r4sb evert(0, 3, Zb)
+    arc r4b r5b evert(0, 4, Zb)
+    arc r5b r6sb evert(0, 5, Zb)
+    arc r6b r7b evert(0, 6, Zb)
+    arc r7b r0sb evert(0, 7, Zb)
+
+    arc rb0b rb1b evert(1, 0, Zb)
+    arc rb1b rb2b evert(1, 1, Zb)
+    arc rb2b rb3b evert(1, 2, Zb)
+    arc rb3b rb4b evert(1, 3, Zb)
+    arc rb4b rb5b evert(1, 4, Zb)
+    arc rb5b rb6b evert(1, 5, Zb)
+    arc rb6b rb7b evert(1, 6, Zb)
+    arc rb7b rb0b evert(1, 7, Zb)
+
+    arc ri0b ri1b evert(2, 0, Zb)
+    arc ri1b ri2b evert(2, 1, Zb)
+    arc ri2b ri3b evert(2, 2, Zb)
+    arc ri3b ri4b evert(2, 3, Zb)
+    arc ri4b ri5b evert(2, 4, Zb)
+    arc ri5b ri6b evert(2, 5, Zb)
+    arc ri6b ri7b evert(2, 6, Zb)
+    arc ri7b ri0b evert(2, 7, Zb)
+
+    arc Rb0b Rb1b evert(3, 0, Zb)
+    arc Rb1b Rb2b evert(3, 1, Zb)
+    arc Rb2b Rb3b evert(3, 2, Zb)
+    arc Rb3b Rb4b evert(3, 3, Zb)
+    arc Rb4b Rb5b evert(3, 4, Zb)
+    arc Rb5b Rb6b evert(3, 5, Zb)
+    arc Rb6b Rb7b evert(3, 6, Zb)
+    arc Rb7b Rb0b evert(3, 7, Zb)
+
+    arc R0b R1sb evert(4, 0, Zb)
+    arc R1b R2b evert(4, 1, Zb)
+    arc R2b R3sb evert(4, 2, Zb)
+    arc R3b R4b evert(4, 3, Zb)
+    arc R4b R5sb evert(4, 4, Zb)
+    arc R5b R6b evert(4, 5, Zb)
+    arc R6b R7sb evert(4, 6, Zb)
+    arc R7b R0b evert(4, 7, Zb)
+
+    arc r0t r1t evert(0, 0, Zt)
+    arc r1t r2st evert(0, 1, Zt)
+    arc r2t r3t evert(0, 2, Zt)
+    arc r3t r4st evert(0, 3, Zt)
+    arc r4t r5t evert(0, 4, Zt)
+    arc r5t r6st evert(0, 5, Zt)
+    arc r6t r7t evert(0, 6, Zt)
+    arc r7t r0st evert(0, 7, Zt)
+
+    arc rb0t rb1t evert(1, 0, Zt)
+    arc rb1t rb2t evert(1, 1, Zt)
+    arc rb2t rb3t evert(1, 2, Zt)
+    arc rb3t rb4t evert(1, 3, Zt)
+    arc rb4t rb5t evert(1, 4, Zt)
+    arc rb5t rb6t evert(1, 5, Zt)
+    arc rb6t rb7t evert(1, 6, Zt)
+    arc rb7t rb0t evert(1, 7, Zt)
+
+    arc ri0t ri1t evert(2, 0, Zt)
+    arc ri1t ri2t evert(2, 1, Zt)
+    arc ri2t ri3t evert(2, 2, Zt)
+    arc ri3t ri4t evert(2, 3, Zt)
+    arc ri4t ri5t evert(2, 4, Zt)
+    arc ri5t ri6t evert(2, 5, Zt)
+    arc ri6t ri7t evert(2, 6, Zt)
+    arc ri7t ri0t evert(2, 7, Zt)
+
+    arc Rb0t Rb1t evert(3, 0, Zt)
+    arc Rb1t Rb2t evert(3, 1, Zt)
+    arc Rb2t Rb3t evert(3, 2, Zt)
+    arc Rb3t Rb4t evert(3, 3, Zt)
+    arc Rb4t Rb5t evert(3, 4, Zt)
+    arc Rb5t Rb6t evert(3, 5, Zt)
+    arc Rb6t Rb7t evert(3, 6, Zt)
+    arc Rb7t Rb0t evert(3, 7, Zt)
+
+    arc R0t R1st evert(4, 0, Zt)
+    arc R1t R2t evert(4, 1, Zt)
+    arc R2t R3st evert(4, 2, Zt)
+    arc R3t R4t evert(4, 3, Zt)
+    arc R4t R5st evert(4, 4, Zt)
+    arc R5t R6t evert(4, 5, Zt)
+    arc R6t R7st evert(4, 6, Zt)
+    arc R7t R0t evert(4, 7, Zt)
+);
+
+patches
+(
+    wall rotor
+    (
+        quad2D(r0, r1)
+        quad2D(r1, r2s)
+        quad2D(r2, r3)
+        quad2D(r3, r4s)
+        quad2D(r4, r5)
+        quad2D(r5, r6s)
+        quad2D(r6, r7)
+        quad2D(r7, r0s)
+
+        quad2D(r0, rb0)
+        quad2D(r0s, rb0)
+
+        quad2D(r2, rb2)
+        quad2D(r2s, rb2)
+
+        quad2D(r4, rb4)
+        quad2D(r4s, rb4)
+
+        quad2D(r6, rb6)
+        quad2D(r6s, rb6)
+    )
+
+    wall stator
+    (
+        quad2D(R0, R1s)
+        quad2D(R1, R2)
+        quad2D(R2, R3s)
+        quad2D(R3, R4)
+        quad2D(R4, R5s)
+        quad2D(R5, R6)
+        quad2D(R6, R7s)
+        quad2D(R7, R0)
+
+        quad2D(R1, Rb1)
+        quad2D(R1s, Rb1)
+
+        quad2D(R3, Rb3)
+        quad2D(R3s, Rb3)
+
+        quad2D(R5, Rb5)
+        quad2D(R5s, Rb5)
+
+        quad2D(R7, Rb7)
+        quad2D(R7s, Rb7)
+    )
+
+    empty front
+    (
+        frontQuad(r0, r1, rb1, rb0)
+        frontQuad(r1, r2s, rb2, rb1)
+        frontQuad(r2, r3, rb3, rb2)
+        frontQuad(r3, r4s, rb4, rb3)
+        frontQuad(r4, r5, rb5, rb4)
+        frontQuad(r5, r6s, rb6, rb5)
+        frontQuad(r6, r7, rb7, rb6)
+        frontQuad(r7, r0s, rb0, rb7)
+        frontQuad(rb0, rb1, ri1, ri0)
+        frontQuad(rb1, rb2, ri2, ri1)
+        frontQuad(rb2, rb3, ri3, ri2)
+        frontQuad(rb3, rb4, ri4, ri3)
+        frontQuad(rb4, rb5, ri5, ri4)
+        frontQuad(rb5, rb6, ri6, ri5)
+        frontQuad(rb6, rb7, ri7, ri6)
+        frontQuad(rb7, rb0, ri0, ri7)
+        frontQuad(ri0, ri1, Rb1, Rb0)
+        frontQuad(ri1, ri2, Rb2, Rb1)
+        frontQuad(ri2, ri3, Rb3, Rb2)
+        frontQuad(ri3, ri4, Rb4, Rb3)
+        frontQuad(ri4, ri5, Rb5, Rb4)
+        frontQuad(ri5, ri6, Rb6, Rb5)
+        frontQuad(ri6, ri7, Rb7, Rb6)
+        frontQuad(ri7, ri0, Rb0, Rb7)
+        frontQuad(Rb0, Rb1, R1s, R0)
+        frontQuad(Rb1, Rb2, R2, R1)
+        frontQuad(Rb2, Rb3, R3s, R2)
+        frontQuad(Rb3, Rb4, R4, R3)
+        frontQuad(Rb4, Rb5, R5s, R4)
+        frontQuad(Rb5, Rb6, R6, R5)
+        frontQuad(Rb6, Rb7, R7s, R6)
+        frontQuad(Rb7, Rb0, R0, R7)
+    )
+
+    empty back
+    (
+        backQuad(r0, r1, rb1, rb0)
+        backQuad(r1, r2s, rb2, rb1)
+        backQuad(r2, r3, rb3, rb2)
+        backQuad(r3, r4s, rb4, rb3)
+        backQuad(r4, r5, rb5, rb4)
+        backQuad(r5, r6s, rb6, rb5)
+        backQuad(r6, r7, rb7, rb6)
+        backQuad(r7, r0s, rb0, rb7)
+        backQuad(rb0, rb1, ri1, ri0)
+        backQuad(rb1, rb2, ri2, ri1)
+        backQuad(rb2, rb3, ri3, ri2)
+        backQuad(rb3, rb4, ri4, ri3)
+        backQuad(rb4, rb5, ri5, ri4)
+        backQuad(rb5, rb6, ri6, ri5)
+        backQuad(rb6, rb7, ri7, ri6)
+        backQuad(rb7, rb0, ri0, ri7)
+        backQuad(ri0, ri1, Rb1, Rb0)
+        backQuad(ri1, ri2, Rb2, Rb1)
+        backQuad(ri2, ri3, Rb3, Rb2)
+        backQuad(ri3, ri4, Rb4, Rb3)
+        backQuad(ri4, ri5, Rb5, Rb4)
+        backQuad(ri5, ri6, Rb6, Rb5)
+        backQuad(ri6, ri7, Rb7, Rb6)
+        backQuad(ri7, ri0, Rb0, Rb7)
+        backQuad(Rb0, Rb1, R1s, R0)
+        backQuad(Rb1, Rb2, R2, R1)
+        backQuad(Rb2, Rb3, R3s, R2)
+        backQuad(Rb3, Rb4, R4, R3)
+        backQuad(Rb4, Rb5, R5s, R4)
+        backQuad(Rb5, Rb6, R6, R5)
+        backQuad(Rb6, Rb7, R7s, R6)
+        backQuad(Rb7, Rb0, R0, R7)
+    )
+);
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/system/controlDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/system/controlDict
new file mode 100644
index 0000000000000000000000000000000000000000..7b2296286eea43d3e3c64622e2f6ae01f510d485
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/system/controlDict
@@ -0,0 +1,55 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      controlDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+application     reactingTwoPhaseEulerFoam;
+
+startFrom       startTime;
+
+startTime       0;
+
+stopAt          endTime;
+
+endTime         20;
+
+deltaT          1e-4;
+
+writeControl    adjustableRunTime;
+
+writeInterval   0.1;
+
+purgeWrite      0;
+
+writeFormat     ascii;
+
+writePrecision  6;
+
+writeCompression uncompressed;
+
+timeFormat      general;
+
+timePrecision   6;
+
+runTimeModifiable yes;
+
+adjustTimeStep  yes;
+
+maxCo           0.2;
+
+maxDeltaT       1;
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/system/fvSchemes b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/system/fvSchemes
new file mode 100644
index 0000000000000000000000000000000000000000..5b2fc02c45d98c90bba85d83f090b644ef6d4870
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/system/fvSchemes
@@ -0,0 +1,67 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      fvSchemes;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ddtSchemes
+{
+    default         Euler;
+}
+
+gradSchemes
+{
+    default         Gauss linear;
+}
+
+divSchemes
+{
+    default                         none;
+
+    div(phi,alpha.air)              Gauss vanLeer;
+    div(phir,alpha.air)             Gauss vanLeer;
+
+    "div\(alphaRhoPhi.*,U.*\)"      Gauss limitedLinearV 1;
+    "div\(phi.*,U.*\)"              Gauss limitedLinearV 1;
+
+    "div\(alphaRhoPhi.*,(h|e).*\)"  Gauss limitedLinear 1;
+    "div\(alphaRhoPhi.*,K.*\)"      Gauss limitedLinear 1;
+    "div\(alphaPhi.*,p\)"           Gauss limitedLinear 1;
+
+    "div\(\(\(\(alpha.*\*thermo:rho.*\)*nuEff.*\)\*dev2\(T\(grad\(U.*\)\)\)\)\)" Gauss linear;
+}
+
+laplacianSchemes
+{
+    default         Gauss linear corrected;
+}
+
+interpolationSchemes
+{
+    default         linear;
+}
+
+snGradSchemes
+{
+    default         corrected;
+}
+
+fluxRequired
+{
+    default         no;
+    p_rgh;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/system/fvSolution b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/system/fvSolution
new file mode 100644
index 0000000000000000000000000000000000000000..a95a952401d428b3c8a83b229763258d70aff7dc
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/system/fvSolution
@@ -0,0 +1,89 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      fvSolution;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+solvers
+{
+    alpha.air
+    {
+        nAlphaCorr      1;
+        nAlphaSubCycles 2;
+    }
+
+    p_rgh
+    {
+        solver          PCG;
+        preconditioner
+        {
+            preconditioner  GAMG;
+            smoother        GaussSeidel;
+            nPreSweeps      0;
+            nPostSweeps     2;
+            nFinestSweeps   2;
+            cacheAgglomeration true;
+            nCellsInCoarsestLevel 10;
+            agglomerator    faceAreaPair;
+            mergeLevels     1;
+        }
+        tolerance       1e-6;
+        relTol          0;
+    }
+
+    p_rghFinal
+    {
+        $p_rgh;
+        relTol          0;
+    }
+
+    "U.*"
+    {
+        solver          smoothSolver;
+        smoother        symGaussSeidel;
+        tolerance       1e-5;
+        relTol          0;
+        minIter         1;
+    }
+
+    "(h|e).*"
+    {
+        solver          smoothSolver;
+        smoother        symGaussSeidel;
+        tolerance       1e-8;
+        relTol          0;
+        minIter         1;
+    }
+}
+
+PIMPLE
+{
+    nOuterCorrectors 3;
+    nCorrectors      1;
+    nNonOrthogonalCorrectors 0;
+
+    pRefCell        0;
+    pRefValue       0;
+}
+
+relaxationFactors
+{
+    equations
+    {
+        ".*"            1;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/system/topoSetDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/system/topoSetDict
new file mode 100644
index 0000000000000000000000000000000000000000..bf749449bfe3a53cee9b2d709eb66a9b2aff4bfe
--- /dev/null
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/system/topoSetDict
@@ -0,0 +1,32 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      topoSetDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+actions
+(
+    {
+        name    rotor;
+        type    cellSet;
+        action  new;
+        source  zoneToCell;
+        sourceInfo
+        {
+            name rotor;
+        }
+    }
+);
+
+// ************************************************************************* //