diff --git a/applications/solvers/multiphase/interCondensingEvaporatingFoam/Allwclean b/applications/solvers/multiphase/interCondensingEvaporatingFoam/Allwclean
new file mode 100755
index 0000000000000000000000000000000000000000..8717ef89533bc2aeb09e59273c62a296f7d210b2
--- /dev/null
+++ b/applications/solvers/multiphase/interCondensingEvaporatingFoam/Allwclean
@@ -0,0 +1,8 @@
+#!/bin/sh
+cd ${0%/*} || exit 1    # Run from this directory
+set -x
+
+wclean libso temperaturePhaseChangeTwoPhaseMixtures
+wclean
+
+#------------------------------------------------------------------------------
diff --git a/applications/solvers/multiphase/interCondensingEvaporatingFoam/Allwmake b/applications/solvers/multiphase/interCondensingEvaporatingFoam/Allwmake
new file mode 100755
index 0000000000000000000000000000000000000000..523c10c33cdc1cc42bce179473211f0da4907648
--- /dev/null
+++ b/applications/solvers/multiphase/interCondensingEvaporatingFoam/Allwmake
@@ -0,0 +1,12 @@
+#!/bin/sh
+cd ${0%/*} || exit 1    # Run from this directory
+
+# Parse arguments for library compilation
+targetType=libso
+. $WM_PROJECT_DIR/wmake/scripts/AllwmakeParseArguments
+set -x
+
+wmake $targetType temperaturePhaseChangeTwoPhaseMixtures
+wmake
+
+#------------------------------------------------------------------------------
diff --git a/applications/solvers/multiphase/interCondensingEvaporatingFoam/Make/files b/applications/solvers/multiphase/interCondensingEvaporatingFoam/Make/files
new file mode 100644
index 0000000000000000000000000000000000000000..7e0882ec641d86b01ae5f275a0cfa3c5f27e1f6d
--- /dev/null
+++ b/applications/solvers/multiphase/interCondensingEvaporatingFoam/Make/files
@@ -0,0 +1,3 @@
+interCondensatingEvaporatingFoam.C
+
+EXE = $(FOAM_APPBIN)/interCondensatingEvaporatingFoam
diff --git a/applications/solvers/multiphase/interCondensingEvaporatingFoam/Make/options b/applications/solvers/multiphase/interCondensingEvaporatingFoam/Make/options
new file mode 100644
index 0000000000000000000000000000000000000000..373084db4b8e80e55f8514db4f2888eb05ca7959
--- /dev/null
+++ b/applications/solvers/multiphase/interCondensingEvaporatingFoam/Make/options
@@ -0,0 +1,30 @@
+interPhaseChangePath = $(FOAM_SOLVERS)/multiphase/interPhaseChangeFoam
+
+EXE_INC = \
+    -ItemperaturePhaseChangeTwoPhaseMixtures/lnInclude \
+    -I$(interPhaseChangePath) \
+    -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
+    -I$(LIB_SRC)/transportModels/twoPhaseMixture/lnInclude \
+    -I$(LIB_SRC)/transportModels \
+    -I$(LIB_SRC)/transportModels/incompressible/lnInclude \
+    -I$(LIB_SRC)/transportModels/interfaceProperties/lnInclude \
+    -I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \
+    -I$(LIB_SRC)/TurbulenceModels/incompressible/lnInclude \
+    -I$(LIB_SRC)/finiteVolume/lnInclude \
+    -I$(LIB_SRC)/meshTools/lnInclude \
+    -I$(LIB_SRC)/fvOptions/lnInclude\
+    -I$(LIB_SRC)/sampling/lnInclude
+
+EXE_LIBS = \
+    -lphaseTemperatureChangeTwoPhaseMixtures \
+    -ltwoPhaseMixture \
+    -linterfaceProperties \
+    -ltwoPhaseProperties \
+    -lincompressibleTransportModels \
+    -lturbulenceModels \
+    -lincompressibleTurbulenceModels \
+    -lfiniteVolume \
+    -lmeshTools \
+    -lfvOptions \
+    -lsampling \
+    -lfluidThermophysicalModels
diff --git a/applications/solvers/multiphase/interCondensingEvaporatingFoam/UEqn.H b/applications/solvers/multiphase/interCondensingEvaporatingFoam/UEqn.H
new file mode 100644
index 0000000000000000000000000000000000000000..1e27597292e480808167b5a14fa0b15a5043ab29
--- /dev/null
+++ b/applications/solvers/multiphase/interCondensingEvaporatingFoam/UEqn.H
@@ -0,0 +1,26 @@
+    fvVectorMatrix UEqn
+    (
+        fvm::ddt(rho, U)
+      + fvm::div(rhoPhi, U)
+      - fvm::Sp(fvc::ddt(rho) + fvc::div(rhoPhi), U)
+      + turbulence->divDevRhoReff(rho, U)
+    );
+
+    UEqn.relax();
+
+    if (pimple.momentumPredictor())
+    {
+        solve
+        (
+            UEqn
+         ==
+            fvc::reconstruct
+            (
+                (
+                    interface.surfaceTensionForce()
+                  - ghf*fvc::snGrad(rho)
+                  - fvc::snGrad(p_rgh)
+                ) * mesh.magSf()
+            )
+        );
+    }
diff --git a/applications/solvers/multiphase/interCondensingEvaporatingFoam/continuityError.H b/applications/solvers/multiphase/interCondensingEvaporatingFoam/continuityError.H
new file mode 100644
index 0000000000000000000000000000000000000000..9a33fb896d48ea3afc2980f40b37e18380e2510f
--- /dev/null
+++ b/applications/solvers/multiphase/interCondensingEvaporatingFoam/continuityError.H
@@ -0,0 +1,12 @@
+volScalarField contErr(fvc::ddt(rho) + fvc::div(rhoPhi));
+
+scalar sumLocalContErr = runTime.deltaTValue()*
+    mag(contErr)().weightedAverage(mesh.V()).value();
+
+scalar globalContErr = runTime.deltaTValue()*
+    contErr.weightedAverage(mesh.V()).value();
+
+Info<< "time step continuity errors : sum local = " << sumLocalContErr
+    << ", global = " << globalContErr
+    << endl;
+
diff --git a/applications/solvers/multiphase/interCondensingEvaporatingFoam/createFields.H b/applications/solvers/multiphase/interCondensingEvaporatingFoam/createFields.H
new file mode 100644
index 0000000000000000000000000000000000000000..20d3677bfcc7a112d36d95eee4f80261ca04c655
--- /dev/null
+++ b/applications/solvers/multiphase/interCondensingEvaporatingFoam/createFields.H
@@ -0,0 +1,158 @@
+    Info<< "Reading field p_rgh\n" << endl;
+    volScalarField p_rgh
+    (
+        IOobject
+        (
+            "p_rgh",
+            runTime.timeName(),
+            mesh,
+            IOobject::MUST_READ,
+            IOobject::AUTO_WRITE
+        ),
+        mesh
+    );
+
+    Info<< "Reading field U\n" << endl;
+    volVectorField U
+    (
+        IOobject
+        (
+            "U",
+            runTime.timeName(),
+            mesh,
+            IOobject::MUST_READ,
+            IOobject::AUTO_WRITE
+        ),
+        mesh
+    );
+
+    #include "createPhi.H"
+
+    // Create p before the thermo
+    volScalarField p
+    (
+        IOobject
+        (
+            "p",
+            runTime.timeName(),
+            mesh,
+            IOobject::NO_READ,
+            IOobject::AUTO_WRITE
+        ),
+        p_rgh
+    );
+
+    // Creating e based thermo
+    autoPtr<twoPhaseMixtureEThermo> thermo;
+    thermo.set(new twoPhaseMixtureEThermo(U, phi));
+
+    // Create mixture and
+    Info<< "Creating temperaturePhaseChangeTwoPhaseMixture\n" << endl;
+    autoPtr<temperaturePhaseChangeTwoPhaseMixture> mixture =
+        temperaturePhaseChangeTwoPhaseMixture::New(thermo(), mesh);
+
+
+    volScalarField& T = thermo->T();
+    volScalarField& e = thermo->he();
+
+    // Correct e from T and alpha
+    thermo->correct();
+
+    volScalarField& alpha1(thermo->alpha1());
+    volScalarField& alpha2(thermo->alpha2());
+
+    const dimensionedScalar& rho1 = thermo->rho1();
+    const dimensionedScalar& rho2 = thermo->rho2();
+
+    // Need to store rho for ddt(rho, U)
+    volScalarField rho
+    (
+        IOobject
+        (
+            "rho",
+            runTime.timeName(),
+            mesh,
+            IOobject::READ_IF_PRESENT,
+            IOobject::AUTO_WRITE
+        ),
+        alpha1*rho1 + alpha2*rho2,
+        alpha1.boundaryField().types()
+    );
+    rho.oldTime();
+
+
+    // Construct interface from alpha1 distribution
+    interfaceProperties interface
+    (
+        alpha1,
+        U,
+        thermo->transportPropertiesDict()
+    );
+
+    // Construct incompressible turbulence model
+    autoPtr<incompressible::turbulenceModel> turbulence
+    (
+        incompressible::turbulenceModel::New(U, phi, thermo())
+    );
+
+
+    Info<< "Calculating field g.h\n" << endl;
+    volScalarField gh("gh", g & mesh.C());
+    surfaceScalarField ghf("ghf", g & mesh.Cf());
+
+    //Update p with rho
+    p = p_rgh + rho*gh;
+
+    label pRefCell = 0;
+    scalar pRefValue = 0.0;
+    setRefCell
+    (
+        p,
+        p_rgh,
+        pimple.dict(),
+        pRefCell,
+        pRefValue
+    );
+
+    if (p_rgh.needReference())
+    {
+        p += dimensionedScalar
+        (
+            "p",
+            p.dimensions(),
+            pRefValue - getRefCellValue(p, pRefCell)
+        );
+        p_rgh = p - rho*gh;
+    }
+
+    // Turbulent Prandtl number
+    dimensionedScalar Prt("Prt", dimless, thermo->transportPropertiesDict());
+
+    volScalarField kappaEff
+    (
+        IOobject
+        (
+            "kappaEff",
+            runTime.timeName(),
+            mesh,
+            IOobject::NO_READ,
+            IOobject::NO_WRITE
+        ),
+        thermo->kappa()
+    );
+
+    Info<< "Creating field kinetic energy K\n" << endl;
+    volScalarField K("K", 0.5*magSqr(U));
+
+    Info<< "Creating field pDivU\n" << endl;
+    volScalarField pDivU
+    (
+        IOobject
+        (
+            "pDivU",
+            runTime.timeName(),
+            mesh
+        ),
+        mesh,
+        dimensionedScalar("pDivU", p.dimensions()/dimTime, 0)
+    );
diff --git a/applications/solvers/multiphase/interCondensingEvaporatingFoam/eEqn.H b/applications/solvers/multiphase/interCondensingEvaporatingFoam/eEqn.H
new file mode 100644
index 0000000000000000000000000000000000000000..291d574d8aa23d298a6c0e24f20841506d87f326
--- /dev/null
+++ b/applications/solvers/multiphase/interCondensingEvaporatingFoam/eEqn.H
@@ -0,0 +1,31 @@
+{
+    tmp<volScalarField> tcp(thermo->Cp());
+    const volScalarField& cp = tcp();
+
+    kappaEff = thermo->kappa() + rho*cp*turbulence->nut()/Prt;
+
+    pDivU = dimensionedScalar("pDivU", p.dimensions()/dimTime, 0.0);
+
+    if (thermo->pDivU())
+    {
+        pDivU = (p*fvc::div(rhoPhi/fvc::interpolate(rho)));
+    }
+
+    fvScalarMatrix eEqn
+    (
+        fvm::ddt(rho, e)
+      + fvc::ddt(rho, K) + fvc::div(rhoPhi, K)
+      + fvm::div(rhoPhi, e)
+      - fvm::Sp(fvc::ddt(rho) + fvc::div(rhoPhi), e)
+      - fvm::laplacian(kappaEff/cp, e)
+      + pDivU
+    );
+
+    eEqn.relax();
+    eEqn.solve();
+
+    thermo->correct();
+
+    Info<< "min/max(T) = " << min(T).value() << ", "
+        << max(T).value() <<endl;
+}
diff --git a/applications/solvers/multiphase/interCondensingEvaporatingFoam/interCondensatingEvaporatingFoam.C b/applications/solvers/multiphase/interCondensingEvaporatingFoam/interCondensatingEvaporatingFoam.C
new file mode 100644
index 0000000000000000000000000000000000000000..b93539886685799a7cb8326817788c15304130e6
--- /dev/null
+++ b/applications/solvers/multiphase/interCondensingEvaporatingFoam/interCondensatingEvaporatingFoam.C
@@ -0,0 +1,137 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2016 OpenCFD Ltd
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more 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
+    interCondensatingEvaporatingFoam
+
+Group
+    grpMultiphaseSolvers
+
+Description
+    Solver for 2 incompressible, non-isothermal immiscible fluids with
+    phase-change (evaporation-condensation) between a fluid and its vapour.
+    Uses a VOF (volume of fluid) phase-fraction based interface capturing
+    approach.
+
+    The momentum, energy and other fluid properties are of the "mixture" and a
+    single momentum equation is solved.
+
+    Turbulence modelling is generic, i.e. laminar, RAS or LES may be selected.
+
+\*---------------------------------------------------------------------------*/
+
+#include "fvCFD.H"
+#include "CMULES.H"
+#include "subCycle.H"
+#include "interfaceProperties.H"
+#include "twoPhaseMixtureEThermo.H"
+#include "temperaturePhaseChangeTwoPhaseMixture.H"
+#include "turbulentTransportModel.H"
+#include "turbulenceModel.H"
+#include "pimpleControl.H"
+#include "fvOptions.H"
+#include "fixedFluxPressureFvPatchScalarField.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+int main(int argc, char *argv[])
+{
+    #include "setRootCase.H"
+    #include "createTime.H"
+    #include "createMesh.H"
+
+    pimpleControl pimple(mesh);
+
+    #include "readGravitationalAcceleration.H"
+    #include "initContinuityErrs.H"
+    #include "createFields.H"
+    #include "createFvOptions.H"
+    #include "createTimeControls.H"
+    #include "CourantNo.H"
+    #include "setInitialDeltaT.H"
+
+    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+    Info<< "\nStarting time loop\n" << endl;
+
+    while (runTime.run())
+    {
+        #include "readTimeControls.H"
+        #include "CourantNo.H"
+        #include "setDeltaT.H"
+
+        runTime++;
+
+        Info<< "Time = " << runTime.timeName() << nl << endl;
+
+        // --- Pressure-velocity PIMPLE corrector loop
+        while (pimple.loop())
+        {
+            #include "alphaControls.H"
+
+            surfaceScalarField rhoPhi
+            (
+                IOobject
+                (
+                    "rhoPhi",
+                    runTime.timeName(),
+                    mesh
+                ),
+                mesh,
+                dimensionedScalar("0", dimMass/dimTime, 0)
+            );
+
+            #include "alphaEqnSubCycle.H"
+            mixture->correct();
+
+            #include "UEqn.H"
+            #include "eEqn.H"
+
+            // --- Pressure corrector loop
+            while (pimple.correct())
+            {
+                #include "pEqn.H"
+            }
+
+            #include "continuityError.H"
+
+            if (pimple.turbCorr())
+            {
+                turbulence->correct();
+            }
+        }
+
+        runTime.write();
+
+        Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s"
+            << "  ClockTime = " << runTime.elapsedClockTime() << " s"
+            << nl << endl;
+    }
+
+    Info<< "End\n" << endl;
+
+    return 0;
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/interCondensingEvaporatingFoam/pEqn.H b/applications/solvers/multiphase/interCondensingEvaporatingFoam/pEqn.H
new file mode 100644
index 0000000000000000000000000000000000000000..c2b043c57b6812ae61d990af8f3e21566ca05453
--- /dev/null
+++ b/applications/solvers/multiphase/interCondensingEvaporatingFoam/pEqn.H
@@ -0,0 +1,69 @@
+{
+    volScalarField rAU("rAU", 1.0/UEqn.A());
+    surfaceScalarField rAUf("rAUf", fvc::interpolate(rAU));
+
+    volVectorField HbyA(constrainHbyA(rAU*UEqn.H(), U, p_rgh));
+
+    surfaceScalarField phiHbyA
+    (
+        "phiHbyA",
+        (fvc::interpolate(HbyA) & mesh.Sf())
+      + fvc::interpolate(rho*rAU)*fvc::ddtCorr(U, phi)
+    );
+    adjustPhi(phiHbyA, U, p_rgh);
+
+    surfaceScalarField phig
+    (
+        (
+            interface.surfaceTensionForce()
+          - ghf*fvc::snGrad(rho)
+        )*rAUf*mesh.magSf()
+    );
+
+    phiHbyA += phig;
+
+    // Update the pressure BCs to ensure flux consistency
+    constrainPressure(p_rgh, U, phiHbyA, rAUf);
+
+    Pair<tmp<volScalarField> > vDot = mixture->vDot();
+    const volScalarField& vDotc = vDot[0]();
+    const volScalarField& vDotv = vDot[1]();
+
+    while (pimple.correctNonOrthogonal())
+    {
+        fvScalarMatrix p_rghEqn
+        (
+            fvc::div(phiHbyA)
+          - fvm::laplacian(rAUf, p_rgh)
+          - (vDotc - vDotv)
+        );
+
+        p_rghEqn.setReference(pRefCell, pRefValue);
+
+        p_rghEqn.solve(mesh.solver(p_rgh.select(pimple.finalInnerIter())));
+
+        if (pimple.finalNonOrthogonalIter())
+        {
+            phi = phiHbyA + p_rghEqn.flux();
+
+            U = HbyA + rAU*fvc::reconstruct((phig + p_rghEqn.flux())/rAUf);
+            U.correctBoundaryConditions();
+            fvOptions.correct(U);
+            K = 0.5*magSqr(U);
+        }
+    }
+
+
+    p == p_rgh + rho*gh;
+
+    if (p_rgh.needReference())
+    {
+        p += dimensionedScalar
+        (
+            "p",
+            p.dimensions(),
+            pRefValue - getRefCellValue(p, pRefCell)
+        );
+        p_rgh = p - rho*gh;
+    }
+}
diff --git a/applications/solvers/multiphase/interCondensingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/Make/files b/applications/solvers/multiphase/interCondensingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/Make/files
new file mode 100644
index 0000000000000000000000000000000000000000..407c6046553aa2197b89c4dd301319cae6538cad
--- /dev/null
+++ b/applications/solvers/multiphase/interCondensingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/Make/files
@@ -0,0 +1,7 @@
+temperaturePhaseChangeTwoPhaseMixtures/newtemperaturePhaseChangeTwoPhaseMixture.C
+temperaturePhaseChangeTwoPhaseMixtures/temperaturePhaseChangeTwoPhaseMixture.C
+thermoIncompressibleTwoPhaseMixture/thermoIncompressibleTwoPhaseMixture.C
+twoPhaseMixtureEThermo/twoPhaseMixtureEThermo.C
+constant/constant.C
+
+LIB = $(FOAM_LIBBIN)/libphaseTemperatureChangeTwoPhaseMixtures
diff --git a/applications/solvers/multiphase/interCondensingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/Make/options b/applications/solvers/multiphase/interCondensingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/Make/options
new file mode 100644
index 0000000000000000000000000000000000000000..4a85a0ae9f3df278ee724f0e46e2e8025c8f6c82
--- /dev/null
+++ b/applications/solvers/multiphase/interCondensingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/Make/options
@@ -0,0 +1,16 @@
+
+EXE_INC = \
+    -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
+    -I$(LIB_SRC)/transportModels/twoPhaseMixture/lnInclude \
+    -I$(LIB_SRC)/transportModels \
+    -I$(LIB_SRC)/transportModels/interfaceProperties/lnInclude \
+    -I$(LIB_SRC)/transportModels/incompressible/lnInclude \
+    -I$(LIB_SRC)/finiteVolume/lnInclude
+
+LIB_LIBS = \
+    -ltwoPhaseMixture \
+    -linterfaceProperties \
+    -ltwoPhaseProperties \
+    -lincompressibleTransportModels \
+    -lfiniteVolume \
+    -lfluidThermophysicalModels
diff --git a/applications/solvers/multiphase/interCondensingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/constant/constant.C b/applications/solvers/multiphase/interCondensingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/constant/constant.C
new file mode 100644
index 0000000000000000000000000000000000000000..adc2598e8604077cc9ae8b6c2e52b4a0144794e2
--- /dev/null
+++ b/applications/solvers/multiphase/interCondensingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/constant/constant.C
@@ -0,0 +1,174 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2016 OpenCFD Ltd
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more 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 "constant.H"
+#include "addToRunTimeSelectionTable.H"
+#include "fvcGrad.H"
+#include "twoPhaseMixtureEThermo.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace temperaturePhaseChangeTwoPhaseMixtures
+{
+    defineTypeNameAndDebug(constant, 0);
+    addToRunTimeSelectionTable
+    (
+        temperaturePhaseChangeTwoPhaseMixture,
+        constant,
+        components
+    );
+}
+}
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::temperaturePhaseChangeTwoPhaseMixtures::constant::constant
+(
+    const thermoIncompressibleTwoPhaseMixture& mixture,
+    const fvMesh& mesh
+)
+:
+    temperaturePhaseChangeTwoPhaseMixture(mixture, mesh),
+    coeffC_(subDict(type() + "Coeffs").lookup("coeffC")),
+    coeffE_(subDict(type() + "Coeffs").lookup("coeffE"))
+{
+}
+
+
+// * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * * //
+
+Foam::Pair<Foam::tmp<Foam::volScalarField> >
+Foam::temperaturePhaseChangeTwoPhaseMixtures::constant::mDotAlphal() const
+{
+    const volScalarField& T = mesh_.lookupObject<volScalarField>("T");
+
+    const twoPhaseMixtureEThermo& thermo =
+        refCast<const twoPhaseMixtureEThermo>
+        (
+            mesh_.lookupObject<basicThermo>(basicThermo::dictName)
+        );
+
+    const  dimensionedScalar& TSat = thermo.TSat();
+
+    dimensionedScalar T0("0", dimTemperature, 0.0);
+
+    return Pair<tmp<volScalarField> >
+    (
+        coeffC_*mixture_.rho2()*max(TSat - T, T0),
+       -coeffE_*mixture_.rho1()*max(T - TSat, T0)
+    );
+}
+
+
+Foam::Pair<Foam::tmp<Foam::volScalarField> >
+Foam::temperaturePhaseChangeTwoPhaseMixtures::constant::mDot() const
+{
+
+    volScalarField limitedAlpha1
+    (
+        min(max(mixture_.alpha1(), scalar(0)), scalar(1))
+    );
+
+    volScalarField limitedAlpha2
+    (
+        min(max(mixture_.alpha2(), scalar(0)), scalar(1))
+    );
+
+    const volScalarField& T = mesh_.lookupObject<volScalarField>("T");
+
+    const twoPhaseMixtureEThermo& thermo =
+        refCast<const twoPhaseMixtureEThermo>
+        (
+            mesh_.lookupObject<basicThermo>(basicThermo::dictName)
+        );
+
+    const  dimensionedScalar& TSat = thermo.TSat();
+
+    dimensionedScalar T0("0", dimTemperature, 0.0);
+
+    return Pair<tmp<volScalarField> >
+    (
+        coeffC_*mixture_.rho2()*limitedAlpha2*max(TSat - T, T0),
+        coeffE_*mixture_.rho1()*limitedAlpha1*max(T - TSat, T0)
+    );
+}
+
+
+Foam::Pair<Foam::tmp<Foam::volScalarField> >
+Foam::temperaturePhaseChangeTwoPhaseMixtures::constant::mDotDeltaT() const
+{
+    volScalarField limitedAlpha1
+    (
+        min(max(mixture_.alpha1(), scalar(0)), scalar(1))
+    );
+
+    volScalarField limitedAlpha2
+    (
+        min(max(mixture_.alpha2(), scalar(0)), scalar(1))
+    );
+
+    const volScalarField& T = mesh_.lookupObject<volScalarField>("T");
+
+    const twoPhaseMixtureEThermo& thermo =
+        refCast<const twoPhaseMixtureEThermo>
+        (
+            mesh_.lookupObject<basicThermo>(basicThermo::dictName)
+        );
+
+    const  dimensionedScalar& TSat = thermo.TSat();
+
+
+    return Pair<tmp<volScalarField> >
+    (
+        coeffC_*mixture_.rho2()*limitedAlpha2*pos(TSat - T),
+        coeffE_*mixture_.rho1()*limitedAlpha1*pos(T - TSat)
+    );
+}
+
+
+void Foam::temperaturePhaseChangeTwoPhaseMixtures::constant::correct()
+{
+}
+
+
+bool Foam::temperaturePhaseChangeTwoPhaseMixtures::constant::read()
+{
+    if (temperaturePhaseChangeTwoPhaseMixture::read())
+    {
+        subDict(type() + "Coeffs").lookup("coeffC") >> coeffC_;
+        subDict(type() + "Coeffs").lookup("coeffE") >> coeffE_;
+
+        return true;
+    }
+    else
+    {
+        return false;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/interCondensingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/constant/constant.H b/applications/solvers/multiphase/interCondensingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/constant/constant.H
new file mode 100644
index 0000000000000000000000000000000000000000..424a8a7c2a3879fab6188ed0e9d0ec53770f5577
--- /dev/null
+++ b/applications/solvers/multiphase/interCondensingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/constant/constant.H
@@ -0,0 +1,118 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2016 OpenCFD Ltd
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::phaseChangeTwoPhaseMixtures::constant
+
+Description
+    constant condensation/saturation model.
+
+
+SourceFiles
+    constant.C
+
+\*--------------------------------------------------------------------*/
+
+#ifndef constant_H
+#define constant_H
+
+#include "temperaturePhaseChangeTwoPhaseMixture.H"
+
+// * * * * * * * * * * * * * * * * *  * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace temperaturePhaseChangeTwoPhaseMixtures
+{
+
+/*--------------------------------------------------------------------*\
+                              Class constant
+\*--------------------------------------------------------------------*/
+
+class constant
+:
+    public temperaturePhaseChangeTwoPhaseMixture
+{
+    // Private data
+
+        //- Condensation coefficient [1/s/K]
+        dimensionedScalar coeffC_;
+
+        //- Evaporation coefficient [1/s/K]
+        dimensionedScalar coeffE_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("constant");
+
+
+    // Constructors
+
+        //- Construct from components
+        constant
+        (
+            const thermoIncompressibleTwoPhaseMixture& mixture,
+            const fvMesh& mesh
+        );
+
+
+    //- Destructor
+    virtual ~constant()
+    {}
+
+
+    // Member Functions
+
+        //- Return the mass condensation and vaporisation rates as a
+        //  coefficient to multiply (1 - alphal) for the condensation rate
+        //  and a coefficient to multiply  alphal for the vaporisation rate
+        virtual Pair<tmp<volScalarField> > mDotAlphal() const;
+
+        //- Return the mass condensation and vaporisation rates as coefficients
+        virtual Pair<tmp<volScalarField> > mDot() const;
+
+        //- Return the mass condensation and vaporisation rates as a
+        //  coefficient to multiply (Tsat - T) for the condensation rate
+        //  and a coefficient to multiply  (T - Tsat) for the vaporisation rate
+        virtual Pair<tmp<volScalarField> > mDotDeltaT() const;
+
+        //- Correct the constant phaseChange model
+        virtual void correct();
+
+        //- Read the transportProperties dictionary and update
+        virtual bool read();
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace temperaturePhaseChangeTwoPhaseMixtures
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/interCondensingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/temperaturePhaseChangeTwoPhaseMixtures/newtemperaturePhaseChangeTwoPhaseMixture.C b/applications/solvers/multiphase/interCondensingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/temperaturePhaseChangeTwoPhaseMixtures/newtemperaturePhaseChangeTwoPhaseMixture.C
new file mode 100644
index 0000000000000000000000000000000000000000..8dbb7c038ce2d779bf4d748c02f0d50e06ca2c83
--- /dev/null
+++ b/applications/solvers/multiphase/interCondensingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/temperaturePhaseChangeTwoPhaseMixtures/newtemperaturePhaseChangeTwoPhaseMixture.C
@@ -0,0 +1,81 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2016 OpenCFD Ltd
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more 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 "temperaturePhaseChangeTwoPhaseMixture.H"
+#include "basicThermo.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+Foam::autoPtr<Foam::temperaturePhaseChangeTwoPhaseMixture>
+Foam::temperaturePhaseChangeTwoPhaseMixture::New
+(
+    const thermoIncompressibleTwoPhaseMixture& thermo,
+    const fvMesh& mesh
+)
+{
+    IOdictionary phaseChangePropertiesDict
+    (
+        IOobject
+        (
+            "phaseChangeProperties",
+            mesh.time().constant(),
+            mesh,
+            IOobject::MUST_READ,
+            IOobject::NO_WRITE,
+            false
+        )
+    );
+
+    word temperaturePhaseChangeTwoPhaseMixtureTypeName
+    (
+        phaseChangePropertiesDict.lookup
+        (
+            "phaseChangeTwoPhaseModel"
+        )
+    );
+
+    Info<< "Selecting phaseChange model "
+        << temperaturePhaseChangeTwoPhaseMixtureTypeName << endl;
+
+    componentsConstructorTable::iterator cstrIter =
+        componentsConstructorTablePtr_
+            ->find(temperaturePhaseChangeTwoPhaseMixtureTypeName);
+
+    if (cstrIter == componentsConstructorTablePtr_->end())
+    {
+        FatalErrorInFunction
+            << "Unknown temperaturePhaseChangeTwoPhaseMixture type "
+            << temperaturePhaseChangeTwoPhaseMixtureTypeName << endl << endl
+            << "Valid  temperaturePhaseChangeTwoPhaseMixtures are : " << endl
+            << componentsConstructorTablePtr_->sortedToc()
+            << exit(FatalError);
+    }
+
+    return autoPtr<temperaturePhaseChangeTwoPhaseMixture>
+        (cstrIter()(thermo, mesh));
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/interCondensingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/temperaturePhaseChangeTwoPhaseMixtures/temperaturePhaseChangeTwoPhaseMixture.C b/applications/solvers/multiphase/interCondensingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/temperaturePhaseChangeTwoPhaseMixtures/temperaturePhaseChangeTwoPhaseMixture.C
new file mode 100644
index 0000000000000000000000000000000000000000..9727f5978dc84cc5804f568b0a3601fb9078a42a
--- /dev/null
+++ b/applications/solvers/multiphase/interCondensingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/temperaturePhaseChangeTwoPhaseMixtures/temperaturePhaseChangeTwoPhaseMixture.C
@@ -0,0 +1,109 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2016 OpenCFD Ltd
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more 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 "temperaturePhaseChangeTwoPhaseMixture.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    defineTypeNameAndDebug(temperaturePhaseChangeTwoPhaseMixture, 0);
+    defineRunTimeSelectionTable
+    (
+        temperaturePhaseChangeTwoPhaseMixture,
+        components
+    );
+}
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::temperaturePhaseChangeTwoPhaseMixture::
+temperaturePhaseChangeTwoPhaseMixture
+(
+    const thermoIncompressibleTwoPhaseMixture& mixture,
+    const fvMesh& mesh
+)
+:
+    IOdictionary
+    (
+        IOobject
+        (
+            "phaseChangeProperties",
+            mesh.time().constant(),
+            mesh,
+            IOobject::MUST_READ_IF_MODIFIED,
+            IOobject::NO_WRITE
+        )
+    ),
+    mixture_(mixture),
+    mesh_(mesh)
+{}
+
+
+// * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * * //
+
+Foam::Pair<Foam::tmp<Foam::volScalarField> >
+Foam::temperaturePhaseChangeTwoPhaseMixture::vDotAlphal() const
+{
+    volScalarField alphalCoeff
+    (
+        1.0/mixture_.rho1() - mixture_.alpha1()
+       *(1.0/mixture_.rho1() - 1.0/mixture_.rho2())
+    );
+
+    Pair<tmp<volScalarField> > mDotAlphal = this->mDotAlphal();
+
+    return Pair<tmp<volScalarField> >
+    (
+        alphalCoeff*mDotAlphal[0],
+        alphalCoeff*mDotAlphal[1]
+    );
+}
+
+
+Foam::Pair<Foam::tmp<Foam::volScalarField> >
+Foam::temperaturePhaseChangeTwoPhaseMixture::vDot() const
+{
+    dimensionedScalar pCoeff(1.0/mixture_.rho1() - 1.0/mixture_.rho2());
+    Pair<tmp<volScalarField> > mDot = this->mDot();
+
+    return Pair<tmp<volScalarField> >(pCoeff*mDot[0], pCoeff*mDot[1]);
+}
+
+
+bool Foam::temperaturePhaseChangeTwoPhaseMixture::read()
+{
+    if (regIOobject::read())
+    {
+        return true;
+    }
+    else
+    {
+        return false;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/interCondensingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/temperaturePhaseChangeTwoPhaseMixtures/temperaturePhaseChangeTwoPhaseMixture.H b/applications/solvers/multiphase/interCondensingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/temperaturePhaseChangeTwoPhaseMixtures/temperaturePhaseChangeTwoPhaseMixture.H
new file mode 100644
index 0000000000000000000000000000000000000000..9ecd5a544db7f7ed50a861a60b865dbca507a949
--- /dev/null
+++ b/applications/solvers/multiphase/interCondensingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/temperaturePhaseChangeTwoPhaseMixtures/temperaturePhaseChangeTwoPhaseMixture.H
@@ -0,0 +1,168 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2016 OpenCFD Ltd
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more 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::temperaturePhaseChangeTwoPhaseMixture
+
+Description
+
+SourceFiles
+    temperaturePhaseChangeTwoPhaseMixture.C
+    newtemperaturePhaseChangeTwoPhaseMixture.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef temperaturePhaseChangeTwoPhaseMixture_H
+#define temperaturePhaseChangeTwoPhaseMixture_H
+
+#include "thermoIncompressibleTwoPhaseMixture.H"
+#include "typeInfo.H"
+#include "runTimeSelectionTables.H"
+#include "volFields.H"
+#include "dimensionedScalar.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+           Class temperaturePhaseChangeTwoPhaseMixture Declaration
+\*---------------------------------------------------------------------------*/
+
+class temperaturePhaseChangeTwoPhaseMixture
+:
+    public IOdictionary
+{
+
+protected:
+
+    // Protected data
+
+        //- Reference to the thermoIncompressibleTwoPhaseMixture
+        const thermoIncompressibleTwoPhaseMixture& mixture_;
+
+        //- Reference to fvMesh
+        const fvMesh& mesh_;
+
+
+    // Private Member Functions
+
+        //- Disallow copy construct
+        temperaturePhaseChangeTwoPhaseMixture
+        (
+            const temperaturePhaseChangeTwoPhaseMixture&
+        );
+
+        //- Disallow default bitwise assignment
+        void operator=(const temperaturePhaseChangeTwoPhaseMixture&);
+
+
+public:
+
+    //- Runtime type information
+    TypeName("temperaturePhaseChangeTwoPhaseMixture");
+
+
+    // Declare run-time constructor selection table
+
+        declareRunTimeSelectionTable
+        (
+            autoPtr,
+            temperaturePhaseChangeTwoPhaseMixture,
+            components,
+            (
+                const thermoIncompressibleTwoPhaseMixture& mixture,
+                const fvMesh& mesh
+            ),
+            (mixture, mesh)
+        );
+
+
+    // Selectors
+
+        //- Return a reference to the selected phaseChange model
+        static autoPtr<temperaturePhaseChangeTwoPhaseMixture> New
+        (
+            const thermoIncompressibleTwoPhaseMixture& mixture,
+            const fvMesh& mesh
+        );
+
+
+    // Constructors
+
+        //- Construct from components
+        temperaturePhaseChangeTwoPhaseMixture
+        (
+            const thermoIncompressibleTwoPhaseMixture& mixture,
+            const fvMesh& mesh
+        );
+
+
+    //- Destructor
+    virtual ~temperaturePhaseChangeTwoPhaseMixture()
+    {}
+
+
+    // Member Functions
+
+
+        //- Return the mass condensation and vaporisation rates as a
+        //  coefficient to multiply (1 - alphal) for the condensation rate
+        //  and a coefficient to multiply  alphal for the vaporisation rate
+        virtual Pair<tmp<volScalarField> > mDotAlphal() const = 0;
+
+        //- Return the mass condensation and vaporisation rates as coefficients
+        virtual Pair<tmp<volScalarField> > mDot() const = 0;
+
+        //- Return the mass condensation and vaporisation rates as a
+        //  coefficient to multiply (Tsat - T) for the condensation rate
+        //  and a coefficient to multiply  (T - Tsat) for the vaporisation rate
+        virtual Pair<tmp<volScalarField> > mDotDeltaT() const = 0;
+
+        //- Return the volumetric condensation and vaporisation rates as a
+        //  coefficient to multiply (1 - alphal) for the condensation rate
+        //  and a coefficient to multiply  alphal for the vaporisation rate
+        Pair<tmp<volScalarField> > vDotAlphal() const;
+
+        //- Return the volumetric condensation and vaporisation rates as
+        //  coefficients
+        Pair<tmp<volScalarField> > vDot() const;
+
+        //- Correct the phaseChange model
+        virtual void correct() = 0;
+
+        //- Read the transportProperties dictionary and update
+        virtual bool read();
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/interCondensingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/thermoIncompressibleTwoPhaseMixture/thermoIncompressibleTwoPhaseMixture.C b/applications/solvers/multiphase/interCondensingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/thermoIncompressibleTwoPhaseMixture/thermoIncompressibleTwoPhaseMixture.C
new file mode 100644
index 0000000000000000000000000000000000000000..6822e0bbc55a878eea4c6f608c19773f4e9d4122
--- /dev/null
+++ b/applications/solvers/multiphase/interCondensingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/thermoIncompressibleTwoPhaseMixture/thermoIncompressibleTwoPhaseMixture.C
@@ -0,0 +1,133 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2016 OpenCFD Ltd
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more 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 "thermoIncompressibleTwoPhaseMixture.H"
+
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    defineTypeNameAndDebug(thermoIncompressibleTwoPhaseMixture, 0);
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::thermoIncompressibleTwoPhaseMixture::thermoIncompressibleTwoPhaseMixture
+(
+    const volVectorField& U,
+    const surfaceScalarField& phi
+)
+:
+    incompressibleTwoPhaseMixture(U, phi),
+
+    kappa1_
+    (
+        "kappa1",
+        dimEnergy/dimTime/dimLength/dimTemperature,
+        subDict(phase1Name_).lookup("kappa")
+    ),
+    kappa2_
+    (
+        "kappa2",
+        kappa1_.dimensions(),
+        subDict(phase2Name_).lookup("kappa")
+    ),
+
+    Cp1_
+    (
+        "Cp1",
+        dimEnergy/dimTemperature/dimMass,
+        subDict(phase1Name_).lookup("Cp")
+    ),
+    Cp2_
+    (
+        "Cp2",
+        dimEnergy/dimTemperature/dimMass,
+        subDict(phase2Name_).lookup("Cp")
+    ),
+
+    Cv1_
+    (
+        "Cv1",
+        dimEnergy/dimTemperature/dimMass,
+        subDict(phase1Name_).lookup("Cv")
+    ),
+
+    Cv2_
+    (
+        "Cv2",
+        dimEnergy/dimTemperature/dimMass,
+        subDict(phase2Name_).lookup("Cv")
+    ),
+
+    Hf1_
+    (
+        "Hf1",
+        dimEnergy/dimMass,
+        subDict(phase1Name_).lookup("hf")
+    ),
+
+    Hf2_
+    (
+        "Hf2",
+        dimEnergy/dimMass,
+        subDict(phase2Name_).lookup("hf")
+    )
+{
+
+}
+
+
+// * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * * //
+
+
+bool Foam::thermoIncompressibleTwoPhaseMixture::read()
+{
+    if (incompressibleTwoPhaseMixture::read())
+    {
+        subDict(phase1Name_).lookup("kappa") >> kappa1_;
+        subDict(phase2Name_).lookup("kappa") >> kappa2_;
+
+        subDict(phase1Name_).lookup("Cp") >> Cp1_;
+        subDict(phase2Name_).lookup("Cp") >> Cp2_;
+
+        subDict(phase1Name_).lookup("Cv") >> Cv1_;
+        subDict(phase2Name_).lookup("Cv") >> Cv2_;
+
+        subDict(phase1Name_).lookup("hf") >> Hf1_;
+        subDict(phase2Name_).lookup("hf") >> Hf2_;
+
+        return true;
+    }
+    else
+    {
+        return false;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/interCondensingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/thermoIncompressibleTwoPhaseMixture/thermoIncompressibleTwoPhaseMixture.H b/applications/solvers/multiphase/interCondensingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/thermoIncompressibleTwoPhaseMixture/thermoIncompressibleTwoPhaseMixture.H
new file mode 100644
index 0000000000000000000000000000000000000000..ea2bec1b5d516159637dc1a6c7494c088ce4cc84
--- /dev/null
+++ b/applications/solvers/multiphase/interCondensingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/thermoIncompressibleTwoPhaseMixture/thermoIncompressibleTwoPhaseMixture.H
@@ -0,0 +1,156 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2016 OpenCFD Ltd
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more 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::thermoIncompressibleTwoPhaseMixture
+
+Description
+    A two-phase incompressible transportModel
+
+SourceFiles
+    thermoIncompressibleTwoPhaseMixture.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef thermoIncompressibleTwoPhaseMixture_H
+#define thermoIncompressibleTwoPhaseMixture_H
+
+#include "incompressibleTwoPhaseMixture.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+              Class thermoIncompressibleTwoPhaseMixture Declaration
+\*---------------------------------------------------------------------------*/
+
+class thermoIncompressibleTwoPhaseMixture
+:
+    public incompressibleTwoPhaseMixture
+{
+protected:
+
+    // Protected data
+
+
+        //- Thermal variables
+        dimensionedScalar kappa1_;
+        dimensionedScalar kappa2_;
+
+        dimensionedScalar Cp1_;
+        dimensionedScalar Cp2_;
+
+        dimensionedScalar Cv1_;
+        dimensionedScalar Cv2_;
+
+        dimensionedScalar Hf1_;
+        dimensionedScalar Hf2_;
+
+
+public:
+
+    TypeName("thermoIncompressibleTwoPhaseMixture");
+
+
+    // Constructors
+
+        //- Construct from U and phi
+        thermoIncompressibleTwoPhaseMixture
+        (
+            const volVectorField& U,
+            const surfaceScalarField& phi
+        );
+
+
+    //- Destructor
+    virtual ~thermoIncompressibleTwoPhaseMixture()
+    {}
+
+
+    // Access function
+
+        //- Return const-access to phase2 kappa
+        const dimensionedScalar& kappa2() const
+        {
+            return kappa2_;
+        };
+
+        //- Return const-access to phase1 kappa
+        const dimensionedScalar& kappa1() const
+        {
+            return kappa1_;
+        };
+
+        //- Return const-access to phase1 Cp
+        const dimensionedScalar& Cp1() const
+        {
+            return Cp1_;
+        };
+
+        //- Return const-access to phase1 Cp
+        const dimensionedScalar& Cp2() const
+        {
+            return Cp2_;
+        };
+
+        //- Return const-access to phase1 Cv
+        const dimensionedScalar& Cv1() const
+        {
+            return Cv1_;
+        };
+
+        //- Return const-access to phase1 Cv
+        const dimensionedScalar& Cv2() const
+        {
+            return Cv2_;
+        };
+
+        //- Return latent heat for phase 1
+        const dimensionedScalar& Hf1() const
+        {
+            return Hf1_;
+        };
+
+        //- Return latent heat for phase 2
+        const dimensionedScalar& Hf2() const
+        {
+            return Hf2_;
+        };
+
+        //- Read base transportProperties dictionary
+        virtual bool read();
+
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/interCondensingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/twoPhaseMixtureEThermo/twoPhaseMixtureEThermo.C b/applications/solvers/multiphase/interCondensingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/twoPhaseMixtureEThermo/twoPhaseMixtureEThermo.C
new file mode 100644
index 0000000000000000000000000000000000000000..19eb8ddca732e79cdaa8cbe4073f1c5b2667a680
--- /dev/null
+++ b/applications/solvers/multiphase/interCondensingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/twoPhaseMixtureEThermo/twoPhaseMixtureEThermo.C
@@ -0,0 +1,592 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2016 OpenCFD Ltd
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more 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 "twoPhaseMixtureEThermo.H"
+
+#include "zeroGradientFvPatchFields.H"
+#include "fixedEnergyFvPatchScalarField.H"
+#include "gradientEnergyFvPatchScalarField.H"
+#include "mixedEnergyFvPatchScalarField.H"
+#include "twoPhaseMixtureEThermo.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    defineTypeNameAndDebug(twoPhaseMixtureEThermo, 0);
+}
+
+// * * * * * * * * * * * * Protected Member Functions  * * * * * * * * * * * //
+
+void Foam::twoPhaseMixtureEThermo::eBoundaryCorrection(volScalarField& h)
+{
+    volScalarField::GeometricBoundaryField& hbf = h.boundaryField();
+
+    forAll(hbf, patchi)
+    {
+        if (isA<gradientEnergyFvPatchScalarField>(hbf[patchi]))
+        {
+            refCast<gradientEnergyFvPatchScalarField>(hbf[patchi]).gradient()
+                = hbf[patchi].fvPatchField::snGrad();
+        }
+        else if (isA<mixedEnergyFvPatchScalarField>(hbf[patchi]))
+        {
+            refCast<mixedEnergyFvPatchScalarField>(hbf[patchi]).refGrad()
+                = hbf[patchi].fvPatchField::snGrad();
+        }
+    }
+}
+
+void Foam::twoPhaseMixtureEThermo::init()
+{
+    const volScalarField alpha1Rho1(alpha1()*rho1());
+    const volScalarField alpha2Rho2(alpha2()*rho2());
+
+    e_ =
+        (
+            (T_ - TSat_)*(alpha1Rho1*Cv1() + alpha2Rho2*Cv2())
+          + (alpha1Rho1*Hf1() + alpha2Rho2*Hf2())
+        )
+       /(alpha1Rho1 + alpha2Rho2);
+
+    e_.correctBoundaryConditions();
+}
+
+// * * * * * * * * * * * * * * * * Constructor * * * * * * * * * * * * * * * //
+
+Foam::twoPhaseMixtureEThermo::twoPhaseMixtureEThermo
+(
+    const volVectorField& U,
+    const surfaceScalarField& phi
+)
+:
+    basicThermo(U.mesh(),  word::null),
+    thermoIncompressibleTwoPhaseMixture(U, phi),
+
+    e_
+    (
+        volScalarField
+        (
+            IOobject
+            (
+                "e",
+                U.mesh().time().timeName(),
+                U.mesh(),
+                IOobject::NO_READ,
+                IOobject::NO_WRITE
+            ),
+            U.mesh(),
+            dimensionedScalar("zero", dimEnergy/dimMass, 0.0),
+            heBoundaryTypes()
+        )
+    ),
+
+    TSat_
+    (
+        "TSat",
+        dimTemperature,
+        basicThermo::lookup("TSat")
+    ),
+
+    pDivU_(basicThermo::lookupOrDefault<Switch>("pDivU", true))
+
+{
+    // Initialise e
+    init();
+}
+
+// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
+
+Foam::twoPhaseMixtureEThermo::~twoPhaseMixtureEThermo()
+{}
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+void Foam::twoPhaseMixtureEThermo::correct()
+{
+    incompressibleTwoPhaseMixture::correct();
+
+    const volScalarField alpha1Rho1(alpha1()*rho1());
+    const volScalarField alpha2Rho2(alpha2()*rho2());
+
+    T_ =
+        (
+            (e_*(alpha1Rho1 + alpha2Rho2))
+         -  (alpha1Rho1*Hf1() + alpha2Rho2*Hf2())
+        )
+       /(alpha1Rho1*Cv1() + alpha2Rho2*Cv2())
+       + TSat_;
+
+    T().correctBoundaryConditions();
+}
+
+
+Foam::tmp<Foam::volScalarField> Foam::twoPhaseMixtureEThermo::he
+(
+    const volScalarField& p,
+    const volScalarField& T
+) const
+{
+    const volScalarField alpha1Rho1(alpha1()*rho1());
+    const volScalarField alpha2Rho2(alpha2()*rho2());
+
+    return
+    (
+        (T - TSat_)*(alpha1Rho1*Cv1() + alpha2Rho2*Cv2())
+        + (alpha1Rho1*Hf1() + alpha2Rho2*Hf2())
+    )
+    / (alpha1Rho1 + alpha2Rho2);
+}
+
+
+Foam::tmp<Foam::scalarField> Foam::twoPhaseMixtureEThermo::he
+(
+    const scalarField& p,
+    const scalarField& T,
+    const labelList& cells
+) const
+{
+    tmp<scalarField> the(new scalarField(T.size()));
+    scalarField& he = the.ref();
+
+    const volScalarField alpha1Rho1(alpha1()*rho1());
+    const volScalarField alpha2Rho2(alpha2()*rho2());
+
+    forAll(T, i)
+    {
+        label celli = cells[i];
+        he[i] =
+            (
+                (T[i] - TSat_.value())
+               *(
+                   alpha1Rho1[celli]*Cv1().value()
+                 + alpha2Rho2[celli]*Cv2().value()
+                )
+              + (
+                    alpha1Rho1[celli]*Hf1().value()
+                  + alpha2Rho2[celli]*Hf2().value()
+                )
+            )
+            / (alpha1Rho1[celli] + alpha2Rho2[celli]);
+    }
+
+    return the;
+}
+
+
+Foam::tmp<Foam::scalarField> Foam::twoPhaseMixtureEThermo::he
+(
+    const scalarField& p,
+    const scalarField& T,
+    const label patchI
+) const
+{
+    const scalarField& alpha1p = alpha1().boundaryField()[patchI];
+    const scalarField& alpha2p = alpha2().boundaryField()[patchI];
+
+    const scalarField& Tp = T_.boundaryField()[patchI];
+
+    return
+    (
+        (
+            (Tp - TSat_.value())
+           *(
+               alpha1p*rho1().value()*Cv1().value()
+             + alpha2p*rho2().value()*Cv2().value()
+            )
+          + (
+               alpha1p*rho1().value()*Hf1().value()
+             + alpha2p*rho2().value()*Hf2().value()
+            )
+        )
+        / (alpha1p*rho1().value() + alpha2p*rho2().value())
+    );
+}
+
+
+Foam::tmp<Foam::volScalarField>
+Foam::twoPhaseMixtureEThermo::hc() const
+{
+
+    const fvMesh& mesh = this->T_.mesh();
+
+    return tmp<volScalarField>
+    (
+        new volScalarField
+        (
+            IOobject
+            (
+                "hc",
+                mesh.time().timeName(),
+                mesh,
+                IOobject::NO_READ,
+                IOobject::AUTO_WRITE
+            ),
+            mesh,
+            dimensionedScalar("hc",Hf2() - Hf1())
+        )
+    );
+}
+
+
+Foam::tmp<Foam::scalarField> Foam::twoPhaseMixtureEThermo::THE
+(
+    const scalarField& h,
+    const scalarField& p,
+    const scalarField& T0,      // starting temperature
+    const labelList& cells
+) const
+{
+    NotImplemented;
+    return tmp<Foam::scalarField>();
+}
+
+
+Foam::tmp<Foam::scalarField> Foam::twoPhaseMixtureEThermo::THE
+(
+    const scalarField& h,
+    const scalarField& p,
+    const scalarField& T0,      // starting temperature
+    const label patchi
+) const
+{
+    NotImplemented;
+    return tmp<Foam::scalarField>();
+}
+
+
+Foam::tmp<Foam::volScalarField>
+Foam::twoPhaseMixtureEThermo::Cp() const
+{
+    const volScalarField limitedAlpha1
+    (
+        min(max(alpha1_, scalar(0)), scalar(1))
+    );
+
+    return tmp<volScalarField>
+    (
+        new volScalarField
+        (
+            "cp",
+            limitedAlpha1*Cp1() + (scalar(1) - limitedAlpha1)*Cp2()
+        )
+    );
+}
+
+
+Foam::tmp<Foam::scalarField> Foam::twoPhaseMixtureEThermo::Cp
+(
+    const scalarField& p,
+    const scalarField& T,
+    const label patchi
+) const
+{
+    const volScalarField limitedAlpha1
+    (
+        min(max(alpha1_, scalar(0)), scalar(1))
+    );
+
+    const scalarField& alpha1p = limitedAlpha1.boundaryField()[patchi];
+
+    return
+    (
+        alpha1p*Cp1().value() + (scalar(1) - alpha1p)*Cp2().value()
+    );
+}
+
+
+Foam::tmp<Foam::volScalarField>
+Foam::twoPhaseMixtureEThermo::rho() const
+{
+    const volScalarField limitedAlpha1
+    (
+        min(max(alpha1_, scalar(0)), scalar(1))
+    );
+
+    return tmp<volScalarField>
+    (
+        new volScalarField
+        (
+            "rho",
+            limitedAlpha1*rho1().value()
+          + (scalar(1) - limitedAlpha1)*rho2().value()
+        )
+    );
+}
+
+
+Foam::tmp<Foam::scalarField>
+Foam::twoPhaseMixtureEThermo::rho
+(
+    const label patchi
+) const
+{
+    const volScalarField limitedAlpha1
+    (
+        min(max(alpha1_, scalar(0)), scalar(1))
+    );
+
+    const scalarField& alpha1p = limitedAlpha1.boundaryField()[patchi];
+
+    return
+    (
+        alpha1p*rho1().value() + (scalar(1.0) - alpha1p)*rho2().value()
+    );
+}
+
+
+Foam::tmp<Foam::volScalarField>
+Foam::twoPhaseMixtureEThermo::Cv() const
+{
+    const volScalarField limitedAlpha1
+    (
+        min(max(alpha1_, scalar(0)), scalar(1))
+    );
+
+    return tmp<volScalarField>
+    (
+        new volScalarField
+        (
+            "cv",
+            limitedAlpha1*Cv1() + (scalar(1) - limitedAlpha1)*Cv2()
+        )
+    );
+}
+
+
+Foam::tmp<Foam::scalarField>
+Foam::twoPhaseMixtureEThermo::Cv
+(
+    const scalarField& p,
+    const scalarField& T,
+    const label patchi
+) const
+{
+    const volScalarField limitedAlpha1
+    (
+        min(max(alpha1_, scalar(0)), scalar(1))
+    );
+
+    const scalarField& alpha1p = limitedAlpha1.boundaryField()[patchi];
+
+    return
+    (
+        alpha1p*Cv1().value() + (scalar(1) - alpha1p)*Cv2().value()
+    );
+}
+
+
+Foam::tmp<Foam::volScalarField>
+Foam::twoPhaseMixtureEThermo::gamma() const
+{
+    return tmp<volScalarField>
+    (
+       (alpha1_*Cp1() + alpha2_*Cp2()) / (alpha1_*Cv1() + alpha2_*Cv2())
+    );
+}
+
+
+Foam::tmp<Foam::scalarField> Foam::twoPhaseMixtureEThermo::gamma
+(
+    const scalarField& p,
+    const scalarField& T,
+    const label patchi
+) const
+{
+    return
+    (
+        gamma()().boundaryField()[patchi]
+    );
+}
+
+
+Foam::tmp<Foam::volScalarField>
+Foam::twoPhaseMixtureEThermo::Cpv() const
+{
+     // This is an e thermo (Cpv = Cv)
+     return Cv();
+}
+
+
+Foam::tmp<Foam::scalarField> Foam::twoPhaseMixtureEThermo::Cpv
+(
+    const scalarField& p,
+    const scalarField& T,
+    const label patchI
+) const
+{
+    // This is a e thermo (Cpv = Cv)
+    return Cv(p, T, patchI);
+}
+
+
+Foam::tmp<Foam::volScalarField>
+Foam::twoPhaseMixtureEThermo::CpByCpv() const
+{
+     NotImplemented;
+     return tmp<Foam::volScalarField>();
+}
+
+
+Foam::tmp<Foam::scalarField>
+Foam::twoPhaseMixtureEThermo::CpByCpv
+(
+    const scalarField& p,
+    const scalarField& T,
+    const label patchi
+) const
+{
+     NotImplemented;
+     return tmp<Foam::scalarField>();
+}
+
+
+Foam::tmp<Foam::volScalarField>
+Foam::twoPhaseMixtureEThermo::kappa() const
+{
+    const volScalarField limitedAlpha1
+    (
+        min(max(alpha1_, scalar(0)), scalar(1))
+    );
+
+    return tmp<volScalarField>
+    (
+        new volScalarField
+        (
+            "kappa",
+            limitedAlpha1*kappa1() + (scalar(1) - limitedAlpha1)*kappa2()
+        )
+    );
+}
+
+
+Foam::tmp<Foam::scalarField>
+Foam::twoPhaseMixtureEThermo::kappa(const label patchi) const
+{
+    const volScalarField limitedAlpha1
+    (
+        min(max(alpha1_, scalar(0)), scalar(1))
+    );
+
+    const scalarField& alpha1p = limitedAlpha1.boundaryField()[patchi];
+
+    return (alpha1p*kappa1().value() + (1 - alpha1p)*kappa2().value());
+}
+
+
+Foam::tmp<Foam::volScalarField>
+Foam::twoPhaseMixtureEThermo::kappaEff
+(
+    const volScalarField& kappat
+) const
+{
+    tmp<Foam::volScalarField> kappaEff(kappa() + kappat);
+    kappaEff.ref().rename("kappaEff");
+    return kappaEff;
+}
+
+
+Foam::tmp<Foam::scalarField>
+Foam::twoPhaseMixtureEThermo::kappaEff
+(
+    const scalarField& kappat,
+    const label patchi
+) const
+{
+    const volScalarField limitedAlpha1
+    (
+        min(max(alpha1_, scalar(0)), scalar(1))
+    );
+
+    const scalarField& alpha1p = limitedAlpha1.boundaryField()[patchi];
+
+    return
+        (alpha1p*kappa1().value() + (1 - alpha1p)*kappa2().value()) + kappat;
+
+}
+
+
+Foam::tmp<Foam::volScalarField>
+Foam::twoPhaseMixtureEThermo::alphaEff
+(
+    const volScalarField& alphat
+) const
+{
+    const volScalarField rho
+    (
+        alpha1_*rho1() + (1.0 - alpha1_)*rho2()
+    );
+
+
+    return (kappa()/Cp()/rho + alphat);
+}
+
+Foam::tmp<Foam::scalarField>
+Foam::twoPhaseMixtureEThermo::alphaEff
+(
+    const scalarField& alphat,
+    const label patchi
+) const
+{
+    const volScalarField limitedAlpha1
+    (
+        min(max(alpha1_, scalar(0)), scalar(1))
+    );
+
+    const scalarField& alpha1p = limitedAlpha1.boundaryField()[patchi];
+
+    const scalarField rho
+    (
+        alpha1p*rho1().value() + (1.0 - alpha1p)*rho2().value()
+    );
+
+    const scalarField kappa
+    (
+        alpha1p*kappa1().value() + (1.0 - alpha1p)*kappa2().value()
+    );
+
+    const scalarField Cp
+    (
+        alpha1p*Cp1().value() + (1.0 - alpha1p)*Cp2().value()
+    );
+
+    return kappa/Cp/rho + alphat;
+}
+
+bool Foam::twoPhaseMixtureEThermo::read()
+{
+    if (basicThermo::read() && thermoIncompressibleTwoPhaseMixture::read())
+    {
+        basicThermo::lookup("pDivU") >> pDivU_;
+        basicThermo::lookup("TSat") >> TSat_;
+        return true;
+    }
+    else
+    {
+        return false;
+    }
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/applications/solvers/multiphase/interCondensingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/twoPhaseMixtureEThermo/twoPhaseMixtureEThermo.H b/applications/solvers/multiphase/interCondensingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/twoPhaseMixtureEThermo/twoPhaseMixtureEThermo.H
new file mode 100644
index 0000000000000000000000000000000000000000..8616713b19f3014d0d918d98a6b6cbc471fc3605
--- /dev/null
+++ b/applications/solvers/multiphase/interCondensingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/twoPhaseMixtureEThermo/twoPhaseMixtureEThermo.H
@@ -0,0 +1,313 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2016 OpenCFD Ltd
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more 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::twoPhaseMixtureEThermo
+
+Description
+    Two phases thermo Internal energy mixture Defined as:
+    e1 = Cv1(T - Tsat) + Hv1
+    e2 = Cv2(T - Tsat) + Hv2
+    e = (alpha1*rho1*e1 + alpha2*rho2*e2) / (alpha1*rho1 + alpha2*rho2)
+
+SourceFiles
+    twoPhaseMixtureEThermo.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef flashThermo_H
+#define flashThermo_H
+
+#include "volFields.H"
+
+#include "basicThermo.H"
+#include "thermoIncompressibleTwoPhaseMixture.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+                    Class twoPhaseMixtureEThermo Declaration
+\*---------------------------------------------------------------------------*/
+
+class twoPhaseMixtureEThermo
+:
+    public basicThermo,
+    public thermoIncompressibleTwoPhaseMixture
+{
+
+protected:
+
+    // Protected Data
+
+        //- Internal energy field [J]
+        volScalarField e_;
+
+        //- Saturation Temperature
+        dimensionedScalar TSat_;
+
+        //- Should the p*div(U) term be included in the energy equation
+        Switch pDivU_;
+
+
+    // Protected Member Functions
+
+        //- Correct boundary for e
+        void eBoundaryCorrection (volScalarField& h);
+
+        //- Initialize
+        void init();
+
+
+public:
+
+    TypeName("twoPhaseMixtureEThermo");
+
+    // Constructor
+    twoPhaseMixtureEThermo
+    (
+        const volVectorField& U,
+        const surfaceScalarField& phi
+    );
+
+
+    //- Destructor
+    virtual ~twoPhaseMixtureEThermo();
+
+
+    // Member Functions
+
+
+        //- Return access to the inernal energy field [J/Kg]
+        virtual volScalarField& he()
+        {
+            return e_;
+        }
+
+        //- Return access to the inernal energy field [J/Kg]
+        virtual const volScalarField& he() const
+        {
+            return e_;
+        }
+
+        //- Enthalpy/Internal energy
+        //  for given pressure and temperature [J/kg]
+        virtual tmp<volScalarField> he
+        (
+            const volScalarField& p,
+            const volScalarField& T
+        ) const;
+
+        //- Enthalpy/Internal energy for cell-set [J/kg]
+        virtual tmp<scalarField> he
+        (
+            const scalarField& p,
+            const scalarField& T,
+            const labelList& cells
+        ) const;
+
+        //- Enthalpy/Internal energy for patch [J/kg]
+        virtual tmp<scalarField> he
+        (
+            const scalarField& p,
+            const scalarField& T,
+            const label patchi
+        ) const;
+
+        //- Chemical enthalpy [J/kg]
+        virtual tmp<volScalarField> hc() const;
+
+        //- Temperature from enthalpy/internal energy for cell-set
+        virtual tmp<scalarField> THE
+        (
+            const scalarField& h,
+            const scalarField& p,
+            const scalarField& T0,      // starting temperature
+            const labelList& cells
+        ) const;
+
+        //- Temperature from enthalpy/internal energy for patch
+        virtual tmp<scalarField> THE
+        (
+            const scalarField& h,
+            const scalarField& p,
+            const scalarField& T0,      // starting temperature
+            const label patchi
+        ) const;
+
+
+        //- Return true if the equation of state is incompressible
+        //  i.e. rho != f(p)
+        bool incompressible() const
+        {
+            return (true);
+        }
+
+        //- Return true if the equation of state is isochoric
+        //  i.e. rho = const
+        bool isochoric() const
+        {
+            return (false);
+        }
+
+        //- Return rho of the mixture
+        virtual tmp<volScalarField> rho() const;
+
+        //- Return rho for patch
+        virtual tmp<scalarField> rho(const label patchi) const;
+
+        //- Return Cp of the mixture
+        virtual tmp<volScalarField> Cp() const;
+
+        //- Heat capacity at constant pressure for patch [J/kg/K]
+        virtual tmp<scalarField> Cp
+        (
+            const scalarField& p,
+            const scalarField& T,
+            const label patchi
+        ) const;
+
+         //- Return Cv of the mixture
+        virtual tmp<volScalarField> Cv() const;
+
+        //- Heat capacity at constant volume for patch [J/kg/K]
+        virtual tmp<scalarField> Cv
+        (
+            const scalarField& p,
+            const scalarField& T,
+            const label patchI
+        ) const;
+
+        //- Gamma = Cp/Cv []
+        virtual tmp<volScalarField> gamma() const;
+
+        //- Gamma = Cp/Cv for patch []
+        virtual tmp<scalarField> gamma
+        (
+            const scalarField& p,
+            const scalarField& T,
+            const label patchi
+        ) const;
+
+         //- Heat capacity at constant pressure/volume [J/kg/K]
+        virtual tmp<volScalarField> Cpv() const;
+
+        //- Heat capacity at constant pressure/volume for patch [J/kg/K]
+        virtual tmp<scalarField> Cpv
+        (
+            const scalarField& p,
+            const scalarField& T,
+            const label patchi
+        ) const;
+
+        //- Heat capacity ratio []
+        virtual tmp<volScalarField> CpByCpv() const;
+
+        //- Heat capacity ratio for patch []
+        virtual tmp<scalarField> CpByCpv
+        (
+            const scalarField& p,
+            const scalarField& T,
+            const label patchi
+        ) const;
+
+        //- Thermal diffusivity for temperature of mixture [J/m/s/K]
+        virtual tmp<volScalarField> kappa() const;
+
+        //- Thermal diffusivity for temperature
+        //  of mixture for patch [J/m/s/K]
+        virtual tmp<scalarField> kappa
+        (
+            const label patchi
+        ) const;
+
+        //- Effective thermal diffusivity for temperature
+        //  of mixture [J/m/s/K]
+        virtual tmp<volScalarField> kappaEff
+        (
+            const volScalarField&
+        ) const;
+
+        //- Effective thermal diffusivity for temperature
+        //  of mixture for patch [J/m/s/K]
+        virtual tmp<scalarField> kappaEff
+        (
+            const scalarField& alphat,
+            const label patchi
+        ) const;
+
+        //- Effective thermal diffusivity of mixture [kg/m/s]
+        virtual tmp<volScalarField> alphaEff
+        (
+            const volScalarField& alphat
+        ) const;
+
+        //- Effective thermal diffusivity of mixture for patch [kg/m/s]
+        virtual tmp<scalarField> alphaEff
+        (
+            const scalarField& alphat,
+            const label patchi
+        ) const;
+
+
+         //- Correct the thermo fields
+        virtual void correct();
+
+        //- Read properties
+        virtual bool read();
+
+
+        // Access to thermodynamic state variables
+
+            //- Return const-access to the saturation temperature
+            const dimensionedScalar& TSat() const
+            {
+                return TSat_;
+            }
+
+            //- Return transport properties dictionary
+            const incompressibleTwoPhaseMixture& transportPropertiesDict()
+            {
+                return *this;
+            }
+
+            //- Should the dpdt term be included in the enthalpy equation
+            Switch pDivU() const
+            {
+                return pDivU_;
+            }
+
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/temperatureCoupledBase/temperatureCoupledBase.C b/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/temperatureCoupledBase/temperatureCoupledBase.C
index 9ed2dd36484a7812bde2a3ef1138c82d2bc9ee29..89dfbbf9dbf09fed379f742e933540b5f3a1541b 100644
--- a/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/temperatureCoupledBase/temperatureCoupledBase.C
+++ b/src/TurbulenceModels/compressible/turbulentFluidThermoModels/derivedFvPatchFields/temperatureCoupledBase/temperatureCoupledBase.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -130,6 +130,13 @@ Foam::tmp<Foam::scalarField> Foam::temperatureCoupledBase::kappa
 
                 return thermo.kappa(patchI);
             }
+            else if (mesh.foundObject<basicThermo>(basicThermo::dictName))
+            {
+                const basicThermo& thermo =
+                    mesh.lookupObject<basicThermo>(basicThermo::dictName);
+
+                return thermo.kappa(patchI);
+            }
             else
             {
                 FatalErrorInFunction
diff --git a/tutorials/multiphase/interCondensingEvaporatingFoam/condensatingVessel/0/T b/tutorials/multiphase/interCondensingEvaporatingFoam/condensatingVessel/0/T
new file mode 100644
index 0000000000000000000000000000000000000000..1c3c7eb1b5fb85b6cd38a1ba0c539a76f616ae98
--- /dev/null
+++ b/tutorials/multiphase/interCondensingEvaporatingFoam/condensatingVessel/0/T
@@ -0,0 +1,53 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  plus                                  |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      Tair;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions          [0 0 0 1 0 0 0];
+
+internalField       uniform 368;
+
+boundaryField
+{
+    bottom
+    {
+        type            zeroGradient;
+    }
+    top
+    {
+        type            inletOutlet;
+        inletValue      $internalField;
+        value           $internalField;
+    }
+    left
+    {
+        type            compressible::turbulentHeatFluxTemperature;
+        heatSource      flux;
+        q               uniform -40e3;
+        kappa           fluidThermo;
+        kappaName       none;
+        value           $internalField;
+    }
+    right
+    {
+        type            zeroGradient;
+        value           $internalField;
+    }
+    frontAndBack
+    {
+        type            empty;
+    }
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/multiphase/interCondensingEvaporatingFoam/condensatingVessel/0/U b/tutorials/multiphase/interCondensingEvaporatingFoam/condensatingVessel/0/U
new file mode 100644
index 0000000000000000000000000000000000000000..5c8dd4ae382a59aea46f5da07f67d5a15e75612d
--- /dev/null
+++ b/tutorials/multiphase/interCondensingEvaporatingFoam/condensatingVessel/0/U
@@ -0,0 +1,49 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  plus                                  |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      binary;
+    class       volVectorField;
+    object      U.air;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -1 0 0 0 0];
+
+internalField   uniform (0 0 0);
+
+boundaryField
+{
+    bottom
+    {
+        type        fixedValue;
+        value       $internalField;
+    }
+    top
+    {
+        type        pressureInletOutletVelocity;
+        value       uniform (0 0 0);
+    }
+    left
+    {
+        type        fixedValue;
+        value       $internalField;
+    }
+    right
+    {
+        type        fixedValue;
+        value       $internalField;
+    }
+    frontAndBack
+    {
+        type            empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interCondensingEvaporatingFoam/condensatingVessel/0/alpha.liquid b/tutorials/multiphase/interCondensingEvaporatingFoam/condensatingVessel/0/alpha.liquid
new file mode 100644
index 0000000000000000000000000000000000000000..dd161e0e154fea76f511434bcad109710db9ffb1
--- /dev/null
+++ b/tutorials/multiphase/interCondensingEvaporatingFoam/condensatingVessel/0/alpha.liquid
@@ -0,0 +1,48 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  plus                                  |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      alpha.liquid;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    bottom
+    {
+        type            zeroGradient;
+    }
+    top
+    {
+        type            inletOutlet;
+        inletValue      $internalField;
+        value           $internalField;
+    }
+    left
+    {
+        type            zeroGradient;
+    }
+    right
+    {
+        type            zeroGradient;
+    }
+    frontAndBack
+    {
+        type            empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interCondensingEvaporatingFoam/condensatingVessel/0/k b/tutorials/multiphase/interCondensingEvaporatingFoam/condensatingVessel/0/k
new file mode 100644
index 0000000000000000000000000000000000000000..7d9331b84988195803acc7833980aa8afe683e30
--- /dev/null
+++ b/tutorials/multiphase/interCondensingEvaporatingFoam/condensatingVessel/0/k
@@ -0,0 +1,56 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  plus                                  |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      k;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [ 0 2 -2 0 0 0 0 ];
+
+internalField   uniform 2e-3;
+
+boundaryField
+{
+    bottom
+    {
+        type            kqRWallFunction;
+        value           $internalField;
+    }
+
+    top
+    {
+        type            inletOutlet;
+        inletValue      $internalField;
+        value           $internalField;
+    }
+
+    left
+    {
+        type            kqRWallFunction;
+        value           $internalField;
+    }
+
+    right
+    {
+        type            kqRWallFunction;
+        value           $internalField;
+    }
+
+    frontAndBack
+    {
+        type            empty;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interCondensingEvaporatingFoam/condensatingVessel/0/nut b/tutorials/multiphase/interCondensingEvaporatingFoam/condensatingVessel/0/nut
new file mode 100644
index 0000000000000000000000000000000000000000..b84e26897ab029566c541227748c235ad3625143
--- /dev/null
+++ b/tutorials/multiphase/interCondensingEvaporatingFoam/condensatingVessel/0/nut
@@ -0,0 +1,55 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  plus                                  |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      nut;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [ 0 2 -1 0 0 0 0 ];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    bottom
+    {
+        type            nutkWallFunction;
+        value           $internalField;
+    }
+
+    top
+    {
+        type            calculated;
+        value           $internalField;
+    }
+
+    left
+    {
+        type            nutkWallFunction;
+        value           $internalField;
+    }
+
+    right
+    {
+        type            nutkWallFunction;
+        value           $internalField;
+    }
+
+    frontAndBack
+    {
+        type            empty;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interCondensingEvaporatingFoam/condensatingVessel/0/omega b/tutorials/multiphase/interCondensingEvaporatingFoam/condensatingVessel/0/omega
new file mode 100644
index 0000000000000000000000000000000000000000..c040ee5282101c32916690e6e727e5a39d1347e3
--- /dev/null
+++ b/tutorials/multiphase/interCondensingEvaporatingFoam/condensatingVessel/0/omega
@@ -0,0 +1,56 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  plus                                  |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      omega;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [ 0 0 -1 0 0 0 0 ];
+
+internalField   uniform 1;
+
+boundaryField
+{
+    bottom
+    {
+        type            omegaWallFunction;
+        value           $internalField;
+    }
+
+    top
+    {
+        type            inletOutlet;
+        inletValue      $internalField;
+        value           $internalField;
+    }
+
+    left
+    {
+        type            omegaWallFunction;
+        value           $internalField;
+    }
+
+    right
+    {
+        type            omegaWallFunction;
+        value           $internalField;
+    }
+
+    frontAndBack
+    {
+        type            empty;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interCondensingEvaporatingFoam/condensatingVessel/0/p_rgh b/tutorials/multiphase/interCondensingEvaporatingFoam/condensatingVessel/0/p_rgh
new file mode 100644
index 0000000000000000000000000000000000000000..df33f57baba23aaaf43bdf18fc8b846d22104eea
--- /dev/null
+++ b/tutorials/multiphase/interCondensingEvaporatingFoam/condensatingVessel/0/p_rgh
@@ -0,0 +1,59 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  plus                                  |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      p_rgh;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions          [ 1 -1 -2 0 0 0 0 ];
+
+internalField       uniform 1e5;
+
+boundaryField
+{
+    bottom
+    {
+        type            fixedFluxPressure;
+        value           $internalField;
+    }
+
+    top
+    {
+        type                totalPressure;
+        p0                  $internalField;
+        U                   U;
+        phi                 phi;
+        rho                 rho;
+        psi                 none;
+        gamma               1;
+        value               $internalField;
+    }
+
+    left
+    {
+        type            fixedFluxPressure;
+        value           $internalField;
+    }
+
+    right
+    {
+        type            fixedFluxPressure;
+        value           $internalField;
+    }
+
+    frontAndBack
+    {
+        type            empty;
+    }
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/multiphase/interCondensingEvaporatingFoam/condensatingVessel/Allclean b/tutorials/multiphase/interCondensingEvaporatingFoam/condensatingVessel/Allclean
new file mode 100755
index 0000000000000000000000000000000000000000..6b45f82a41b0f9a0739a80a41a680be892e55243
--- /dev/null
+++ b/tutorials/multiphase/interCondensingEvaporatingFoam/condensatingVessel/Allclean
@@ -0,0 +1,9 @@
+#!/bin/sh
+cd ${0%/*} || exit 1    # Run from this directory
+
+# Source tutorial clean functions
+. $WM_PROJECT_DIR/bin/tools/CleanFunctions
+
+cleanCase
+
+#------------------------------------------------------------------------------
diff --git a/tutorials/multiphase/interCondensingEvaporatingFoam/condensatingVessel/Allrun b/tutorials/multiphase/interCondensingEvaporatingFoam/condensatingVessel/Allrun
new file mode 100755
index 0000000000000000000000000000000000000000..2d455d1fbce4041066fbb25494d9e84b6162fbb9
--- /dev/null
+++ b/tutorials/multiphase/interCondensingEvaporatingFoam/condensatingVessel/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 blockMesh
+runApplication $application
+
+#------------------------------------------------------------------------------
diff --git a/tutorials/multiphase/interCondensingEvaporatingFoam/condensatingVessel/constant/g b/tutorials/multiphase/interCondensingEvaporatingFoam/condensatingVessel/constant/g
new file mode 100644
index 0000000000000000000000000000000000000000..4702e33f63dacbb20139c0fd115011be321b4102
--- /dev/null
+++ b/tutorials/multiphase/interCondensingEvaporatingFoam/condensatingVessel/constant/g
@@ -0,0 +1,22 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  plus                                  |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       uniformDimensionedVectorField;
+    location    "constant";
+    object      g;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -2 0 0 0 0];
+value           (0 -9.81 0);
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interCondensingEvaporatingFoam/condensatingVessel/constant/phaseChangeProperties b/tutorials/multiphase/interCondensingEvaporatingFoam/condensatingVessel/constant/phaseChangeProperties
new file mode 100644
index 0000000000000000000000000000000000000000..df309ff74c8b2eb5a1aca4b021a570eb50e54e44
--- /dev/null
+++ b/tutorials/multiphase/interCondensingEvaporatingFoam/condensatingVessel/constant/phaseChangeProperties
@@ -0,0 +1,26 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  plus                                  |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      phaseChangeProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+phaseChangeTwoPhaseModel constant;
+
+constantCoeffs
+{
+    coeffC          coeffC [0 0 -1 -1 0 0 0] 250;
+    coeffE          coeffE [0 0 -1 -1 0 0 0] 250;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interCondensingEvaporatingFoam/condensatingVessel/constant/thermophysicalProperties b/tutorials/multiphase/interCondensingEvaporatingFoam/condensatingVessel/constant/thermophysicalProperties
new file mode 100644
index 0000000000000000000000000000000000000000..928e6bcdff5b32bcf39c8a383abf25065a96f2c0
--- /dev/null
+++ b/tutorials/multiphase/interCondensingEvaporatingFoam/condensatingVessel/constant/thermophysicalProperties
@@ -0,0 +1,21 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  plus                                  |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      transportProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+TSat             TSat       [0 0 0 1 0]    366;   // saturation temperature
+
+pDivU            true;
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interCondensingEvaporatingFoam/condensatingVessel/constant/transportProperties b/tutorials/multiphase/interCondensingEvaporatingFoam/condensatingVessel/constant/transportProperties
new file mode 100644
index 0000000000000000000000000000000000000000..7b11306833f6320985047cfbc7153a81a13f1983
--- /dev/null
+++ b/tutorials/multiphase/interCondensingEvaporatingFoam/condensatingVessel/constant/transportProperties
@@ -0,0 +1,50 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  plus                                  |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      transportProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+phases (liquid vapour);// FC-72
+
+
+sigma           sigma [1 0 -2 0 0 0 0] 0.07;
+
+liquid
+{
+    transportModel  Newtonian;
+    nu              nu [0 2 -1 0 0 0 0] 2.64e-7;
+    rho             rho [1 -3 0 0 0 0 0] 1583.4;
+
+
+    Cp              Cp [0 2 -2 -1 0 0 0] 1.1072e3;
+    Cv              cv [0 2 -2 -1 0 0 0] 1.1072e3; //assume Cp for liquid
+    kappa           kappa [1 1 -3 -1 0 0 0] 0.057;
+    hf              hf [0 2 -2 0 0 0 0] 0;
+}
+
+vapour
+{
+    transportModel  Newtonian;
+    nu              nu [0 2 -1 0 0 0 0]  5e-7;
+    rho             rho [1 -3 0 0 0 0 0] 14.9;
+
+
+    Cp              Cp [0 2 -2 -1 0 0 0] 895.2; //FC72 vapour
+    Cv              Cv [0 2 -2 -1 0 0 0] 870.4; // Cv = Cp - R/w
+    kappa           kappa [1 1 -3 -1 0 0 0] 0.01; //FC72 vapour
+    hf              hf [0 2 -2 0 0 0 0] 93.0e3;
+}
+
+Prt     0.7;
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interCondensingEvaporatingFoam/condensatingVessel/constant/turbulenceProperties b/tutorials/multiphase/interCondensingEvaporatingFoam/condensatingVessel/constant/turbulenceProperties
new file mode 100644
index 0000000000000000000000000000000000000000..9907248c087904f4fe97ee8c16e222555bb811e7
--- /dev/null
+++ b/tutorials/multiphase/interCondensingEvaporatingFoam/condensatingVessel/constant/turbulenceProperties
@@ -0,0 +1,29 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  plus                                  |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      turbulenceProperties.air;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+simulationType  RAS;
+
+RAS
+{
+    RASModel kOmega;
+
+    turbulence      on;
+    printCoeffs     on;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interCondensingEvaporatingFoam/condensatingVessel/system/blockMeshDict b/tutorials/multiphase/interCondensingEvaporatingFoam/condensatingVessel/system/blockMeshDict
new file mode 100644
index 0000000000000000000000000000000000000000..85ac05af58eb384c792e3116c79cdb855309abd8
--- /dev/null
+++ b/tutorials/multiphase/interCondensingEvaporatingFoam/condensatingVessel/system/blockMeshDict
@@ -0,0 +1,82 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  plus                                  |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      blockMeshDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+convertToMeters 1e-2;
+
+vertices
+(
+    (0 0 0)
+    (0.2 0 0)
+    (0.2 1 0)
+    (0 1 0)
+    (0 0 1)
+    (0.2 0 1)
+    (0.2 1 1)
+    (0 1 1)
+);
+
+blocks
+(
+    hex (0 1 2 3 4 5 6 7) (60 50 1) simpleGrading (3 1 1)
+);
+
+
+boundary
+(
+    bottom
+    {
+        type    wall;
+        faces
+        (
+            (1 5 4 0)
+        );
+    }
+    top
+    {
+        type    patch;
+        faces
+        (
+            (3 7 6 2)
+        );
+    }
+    left
+    {
+        type    wall;
+        faces
+        (
+            (0 4 7 3)
+        );
+    }
+    right
+    {
+        type    wall;
+        faces
+        (
+            (2 6 5 1)
+        );
+    }
+    frontAndBack
+    {
+        type    empty;
+        faces
+        (
+            (4 5 6 7)
+            (0 1 2 3)
+        );
+    }
+);
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interCondensingEvaporatingFoam/condensatingVessel/system/controlDict b/tutorials/multiphase/interCondensingEvaporatingFoam/condensatingVessel/system/controlDict
new file mode 100644
index 0000000000000000000000000000000000000000..108ca5fe8226b4f308fb6bb6913ec065e6b4d536
--- /dev/null
+++ b/tutorials/multiphase/interCondensingEvaporatingFoam/condensatingVessel/system/controlDict
@@ -0,0 +1,57 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  plus                                  |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      controlDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+application     interCondensatingEvaporatingFoam;
+
+startFrom       startTime;
+
+startTime       0;
+
+stopAt          endTime;
+
+endTime         4;
+
+deltaT          1e-5;
+
+writeControl    adjustableRunTime;
+
+writeInterval   1e-1;
+
+purgeWrite      0;
+
+writeFormat     ascii;
+
+writePrecision  6;
+
+writeCompression uncompressed;
+
+timeFormat      general;
+
+timePrecision   6;
+
+runTimeModifiable yes;
+
+adjustTimeStep  yes;
+
+maxCo           6.0;
+
+maxAlphaCo      6.0;
+
+maxDeltaT       1e-2;
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interCondensingEvaporatingFoam/condensatingVessel/system/fvSchemes b/tutorials/multiphase/interCondensingEvaporatingFoam/condensatingVessel/system/fvSchemes
new file mode 100644
index 0000000000000000000000000000000000000000..305d727946320217e95c37ddf9ed0b29c6827591
--- /dev/null
+++ b/tutorials/multiphase/interCondensingEvaporatingFoam/condensatingVessel/system/fvSchemes
@@ -0,0 +1,71 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  plus                                  |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      fvSchemes;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ddtSchemes
+{
+    default         Euler;
+}
+
+gradSchemes
+{
+    default         Gauss linear;
+}
+
+divSchemes
+{
+    default             none;
+
+    div(rhoPhi,U)       Gauss linear;
+    div(phi,omega)      Gauss linear;
+    div(phi,k)          Gauss linear;
+    div(rhoPhi,e)       Gauss linear;
+    div(rhoPhi,K)       Gauss upwind;
+    div(phi,alpha)      Gauss vanLeer;
+    div(phirb,alpha)    Gauss linear;
+    div(((rho*nuEff)*dev2(T(grad(U))))) Gauss linear;
+    div((muEff*dev(T(grad(U)))))  Gauss linear;
+}
+
+laplacianSchemes
+{
+    default         Gauss linear orthogonal;
+}
+
+interpolationSchemes
+{
+    default         linear;
+}
+
+snGradSchemes
+{
+    default         orthogonal;
+}
+
+wallDist
+{
+    method meshWave;
+}
+
+fluxRequired
+{
+    default             none;
+    p_rgh;
+    alpha.liquid;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interCondensingEvaporatingFoam/condensatingVessel/system/fvSolution b/tutorials/multiphase/interCondensingEvaporatingFoam/condensatingVessel/system/fvSolution
new file mode 100644
index 0000000000000000000000000000000000000000..52d1527ecc02def4cfceffbfe8ed80f3e1703345
--- /dev/null
+++ b/tutorials/multiphase/interCondensingEvaporatingFoam/condensatingVessel/system/fvSolution
@@ -0,0 +1,130 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  plus                                  |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      fvSolution;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+solvers
+{
+    "alpha.liquid.*"
+    {
+        cAlpha          1;
+        nAlphaCorr      2;
+        nAlphaSubCycles 2;
+
+        MULESCorr       yes;
+        nLimiterIter    1;
+
+        solver          smoothSolver;
+        smoother        symGaussSeidel;
+        tolerance       1e-8;
+        relTol          0;
+    }
+
+    "U.*"
+    {
+        solver          smoothSolver;
+        smoother        symGaussSeidel;
+        tolerance       1e-7;
+        relTol          0;
+    };
+
+    p_rgh
+    {
+        solver          GAMG;
+        tolerance       1e-8;
+        relTol          0.01;
+
+        smoother        DICGaussSeidel;
+        nPreSweeps      0;
+        nPostSweeps     2;
+
+        cacheAgglomeration true;
+
+        nCellsInCoarsestLevel 10;
+        agglomerator    faceAreaPair;
+        mergeLevels     1;
+    };
+
+    p_rghFinal
+    {
+        solver          PCG;
+        preconditioner
+        {
+            preconditioner  GAMG;
+
+            tolerance       1e-6;
+            relTol          0;
+
+            nVcycles        2;
+
+            smoother        DICGaussSeidel;
+            nPreSweeps      0;
+            nPostSweeps     2;
+            nFinestSweeps   2;
+
+            cacheAgglomeration true;
+            nCellsInCoarsestLevel 10;
+            agglomerator    faceAreaPair;
+            mergeLevels     1;
+        };
+        tolerance       1e-9;
+        relTol          0;
+        maxIter         300;
+    };
+
+    pcorr
+    {
+        $p_rgh;
+        relTol          0;
+    };
+
+    "e.*"
+    {
+        solver          smoothSolver;
+        smoother        symGaussSeidel;
+        tolerance       1e-7;
+        relTol          0.0;
+    }
+
+     "(k.*|omega.*|Theta.*).*"
+    {
+        solver          PBiCG;
+        preconditioner  DILU;
+        tolerance       1e-7;
+        relTol          0;
+    }
+}
+
+PIMPLE
+{
+    momentumPredictor   false;
+    nOuterCorrectors    1;
+    nCorrectors         3;
+    nNonOrthogonalCorrectors 0;
+}
+
+relaxationFactors
+{
+    fields
+    {
+    }
+    equations
+    {
+        ".*"            1;
+    }
+}
+
+
+// ************************************************************************* //