From 9873774ee9dd7360e1d5761bdf6f70795f26f8dd Mon Sep 17 00:00:00 2001
From: Henry <Henry>
Date: Tue, 29 Apr 2014 14:16:41 +0100
Subject: [PATCH] VoF solvers: rationalize the relationship between VoF solvers
 Improve code reuse Add multiphaseInterDyMFoam Retire MRFinterFoam -> now
 handled by interFoam with fvOptions Update tutorials

---
 .../multiphase/cavitatingFoam/createFields.H  |    8 +-
 .../compressibleInterFoam/Make/options        |    1 +
 .../multiphase/compressibleInterFoam/TEqn.H   |    8 +-
 .../multiphase/compressibleInterFoam/UEqn.H   |    2 +-
 .../compressibleInterDyMFoam/Make/options     |    1 +
 .../compressibleInterDyMFoam/pEqn.H           |    2 +-
 .../compressibleInterFoam/createFields.H      |   24 +-
 .../multiphase/compressibleInterFoam/pEqn.H   |    2 +-
 .../twoPhaseMixtureThermo/Make/options        |    1 +
 .../Make/options                              |    2 +
 .../compressibleMultiphaseInterFoam/TEqn.H    |   10 +-
 .../compressibleMultiphaseInterFoam/UEqn.H    |    4 +-
 .../compressibleMultiphaseInterFoam.C         |    6 +-
 .../createFields.H                            |   14 +-
 .../multiphaseMixtureThermo/Make/options      |    1 +
 .../compressibleMultiphaseInterFoam/pEqn.H    |   20 +-
 .../solvers/multiphase/interFoam/Allwclean    |    1 -
 .../solvers/multiphase/interFoam/Allwmake     |    1 -
 .../interFoam/LTSInterFoam/LTSInterFoam.C     |    7 +-
 .../interFoam/LTSInterFoam/Make/options       |    6 +-
 .../interFoam/MRFInterFoam/Make/files         |    3 -
 .../multiphase/interFoam/MRFInterFoam/UEqn.H  |   38 -
 .../interFoam/MRFInterFoam/createMRFZones.H   |    2 -
 .../multiphase/interFoam/MRFInterFoam/pEqn.H  |   72 -
 .../interFoam/MRFInterFoam/zonePhaseVolumes.H |   21 -
 .../solvers/multiphase/interFoam/Make/options |   12 +-
 .../solvers/multiphase/interFoam/UEqn.H       |    8 +-
 .../multiphase/interFoam/alphaCourantNo.H     |    4 +-
 .../solvers/multiphase/interFoam/alphaEqn.H   |   10 +-
 .../multiphase/interFoam/createFields.H       |   18 +-
 .../interFoam/interDyMFoam/Make/options       |    6 +-
 .../interFoam/interDyMFoam/interDyMFoam.C     |   11 +-
 .../multiphase/interFoam/interDyMFoam/pEqn.H  |    2 +-
 .../solvers/multiphase/interFoam/interFoam.C  |   11 +-
 .../interFoam/interMixingFoam/Make/files      |    3 +-
 .../interFoam/interMixingFoam/Make/options    |    1 +
 .../interFoam/interMixingFoam/alphaEqns.H     |    2 +-
 .../interFoam/interMixingFoam/createFields.H  |   22 +-
 ...miscibleIncompressibleThreePhaseMixture.C} |   43 +-
 ...mmiscibleIncompressibleThreePhaseMixture.H |   92 +
 ...re.C => incompressibleThreePhaseMixture.C} |   19 +-
 ...re.H => incompressibleThreePhaseMixture.H} |   18 +-
 .../interMixingFoam/interMixingFoam.C         |    9 +-
 .../threePhaseInterfaceProperties.C           |   26 +-
 .../threePhaseInterfaceProperties.H           |   17 +-
 .../solvers/multiphase/interFoam/pEqn.H       |    6 +-
 .../interFoam/porousInterFoam/Make/options    |    5 +-
 .../interFoam/porousInterFoam/UEqn.H          |    6 +-
 .../porousInterFoam/porousInterFoam.C         |    9 +-
 .../multiphase/interPhaseChangeFoam/UEqn.H    |    2 +-
 .../interPhaseChangeFoam/alphaEqn.H           |    2 +-
 .../interPhaseChangeFoam/createFields.H       |   16 +-
 .../interPhaseChangeDyMFoam.C                 |    2 +-
 .../interPhaseChangeDyMFoam/pEqn.H            |    4 +-
 .../interPhaseChangeFoam.C                    |    2 +-
 .../multiphase/interPhaseChangeFoam/pEqn.H    |    4 +-
 .../multiphase/multiphaseInterFoam/Allwclean  |    1 +
 .../multiphase/multiphaseInterFoam/Allwmake   |    1 +
 .../multiphase/multiphaseInterFoam/UEqn.H     |   31 -
 .../multiphaseInterFoam/createFields.H        |    1 +
 .../multiphaseInterDyMFoam/Make/files         |    3 +
 .../multiphaseInterDyMFoam}/Make/options      |   16 +-
 .../multiphaseInterDyMFoam.C}                 |   83 +-
 .../multiphaseMixture/multiphaseMixture.C     |   12 +-
 .../multiphase/multiphaseInterFoam/pEqn.H     |   72 -
 .../alphaCourantNo.H                          |    8 +-
 .../twoLiquidMixingFoam/createFields.H        |   16 +-
 .../twoLiquidMixingFoam/twoLiquidMixingFoam.C |    4 +-
 src/transportModels/Allwmake                  |    2 +
 src/transportModels/compressible/Make/files   |    3 +
 src/transportModels/compressible/Make/options |    5 +
 .../compressibleTransportModel.C              |   47 +-
 .../compressibleTransportModel.H              |  104 +
 .../Make/files                                |    3 +
 .../Make/options                              |   13 +
 .../immiscibleIncompressibleTwoPhaseMixture.C |   43 +
 .../immiscibleIncompressibleTwoPhaseMixture.H |   92 +
 .../interfaceProperties/interfaceProperties.C |   18 +-
 .../interfaceProperties/interfaceProperties.H |    8 +-
 .../MRFInterFoam/mixerVessel2D/0/alpha.water  | 3119 -----------------
 .../multiphase/interFoam/laminar/Allclean     |    2 +-
 tutorials/multiphase/interFoam/laminar/Allrun |   11 +-
 .../interFoam/laminar/capillaryRise/Allrun    |   14 +
 .../capillaryRise/constant/polyMesh/boundary  |    3 +-
 .../laminar}/mixerVessel2D/0/U                |    2 +-
 .../laminar}/mixerVessel2D/0/alpha.water.org  |    2 +-
 .../laminar}/mixerVessel2D/0/p_rgh            |    2 +-
 .../laminar}/mixerVessel2D/Allrun             |    2 +
 .../mixerVessel2D/constant/MRFProperties      |    2 +-
 .../laminar}/mixerVessel2D/constant/g         |    2 +-
 .../constant/polyMesh/blockMeshDict.m4        |    2 +-
 .../mixerVessel2D/constant/polyMesh/boundary  |    4 +-
 .../constant/transportProperties              |    2 +-
 .../constant/turbulenceProperties             |    2 +-
 .../laminar}/mixerVessel2D/makeMesh           |    0
 .../laminar}/mixerVessel2D/system/controlDict |    4 +-
 .../laminar/mixerVessel2D/system/fvOptions    |   37 +
 .../laminar}/mixerVessel2D/system/fvSchemes   |    2 +-
 .../laminar}/mixerVessel2D/system/fvSolution  |    2 +-
 .../mixerVessel2D/system/setFieldsDict        |    2 +-
 .../laminar}/mixerVessel2D/system/topoSetDict |    2 +-
 .../ras/damBreakPorousBaffle/0/alpha.water    | 2276 +-----------
 .../laminar/mixerVesselAMI2D/0.org/U          |   60 +
 .../laminar/mixerVesselAMI2D/0.org/alpha.air  |   56 +
 .../mixerVesselAMI2D/0.org/alpha.mercury      |   56 +
 .../laminar/mixerVesselAMI2D/0.org/alpha.oil  |   56 +
 .../mixerVesselAMI2D/0.org/alpha.water        |   56 +
 .../laminar/mixerVesselAMI2D/0.org/p_rgh      |   56 +
 .../laminar/mixerVesselAMI2D/Allrun           |   20 +
 .../mixerVesselAMI2D/constant/RASProperties   |   25 +
 .../mixerVesselAMI2D/constant/dynamicMeshDict |   36 +
 .../laminar/mixerVesselAMI2D/constant/g       |   21 +
 .../constant/polyMesh/blockMeshDict.m4        |  924 +++++
 .../constant/polyMesh/boundary                |   70 +
 .../constant/transportProperties              |   60 +
 .../constant/triSurface/projectionSurface.stl | 1346 +++++++
 .../constant/turbulenceProperties             |   21 +
 .../laminar/mixerVesselAMI2D/makeMesh         |   13 +
 .../mixerVesselAMI2D/system/controlDict       |   55 +
 .../mixerVesselAMI2D/system/decomposeParDict  |   31 +
 .../laminar/mixerVesselAMI2D/system/fvSchemes |   60 +
 .../mixerVesselAMI2D/system/fvSolution        |   82 +
 .../mixerVesselAMI2D/system/setFieldsDict     |   64 +
 .../mixerVesselAMI2D/system/topoSetDict       |   35 +
 124 files changed, 3994 insertions(+), 5940 deletions(-)
 delete mode 100644 applications/solvers/multiphase/interFoam/MRFInterFoam/Make/files
 delete mode 100644 applications/solvers/multiphase/interFoam/MRFInterFoam/UEqn.H
 delete mode 100644 applications/solvers/multiphase/interFoam/MRFInterFoam/createMRFZones.H
 delete mode 100644 applications/solvers/multiphase/interFoam/MRFInterFoam/pEqn.H
 delete mode 100644 applications/solvers/multiphase/interFoam/MRFInterFoam/zonePhaseVolumes.H
 rename applications/solvers/multiphase/{compressibleMultiphaseInterFoam/alphaCourantNo.H => interFoam/interMixingFoam/immiscibleIncompressibleThreePhaseMixture/immiscibleIncompressibleThreePhaseMixture.C} (61%)
 create mode 100644 applications/solvers/multiphase/interFoam/interMixingFoam/immiscibleIncompressibleThreePhaseMixture/immiscibleIncompressibleThreePhaseMixture.H
 rename applications/solvers/multiphase/interFoam/interMixingFoam/incompressibleThreePhaseMixture/{threePhaseMixture.C => incompressibleThreePhaseMixture.C} (91%)
 rename applications/solvers/multiphase/interFoam/interMixingFoam/incompressibleThreePhaseMixture/{threePhaseMixture.H => incompressibleThreePhaseMixture.H} (93%)
 delete mode 100644 applications/solvers/multiphase/multiphaseInterFoam/UEqn.H
 create mode 100644 applications/solvers/multiphase/multiphaseInterFoam/multiphaseInterDyMFoam/Make/files
 rename applications/solvers/multiphase/{interFoam/MRFInterFoam => multiphaseInterFoam/multiphaseInterDyMFoam}/Make/options (70%)
 rename applications/solvers/multiphase/{interFoam/MRFInterFoam/MRFInterFoam.C => multiphaseInterFoam/multiphaseInterDyMFoam/multiphaseInterDyMFoam.C} (62%)
 delete mode 100644 applications/solvers/multiphase/multiphaseInterFoam/pEqn.H
 rename applications/solvers/multiphase/{multiphaseInterFoam => twoLiquidMixingFoam}/alphaCourantNo.H (90%)
 create mode 100644 src/transportModels/compressible/Make/files
 create mode 100644 src/transportModels/compressible/Make/options
 rename applications/solvers/multiphase/interFoam/interMixingFoam/alphaCourantNo.H => src/transportModels/compressible/compressibleTransportModel/compressibleTransportModel.C (59%)
 create mode 100644 src/transportModels/compressible/compressibleTransportModel/compressibleTransportModel.H
 create mode 100644 src/transportModels/immiscibleIncompressibleTwoPhaseMixture/Make/files
 create mode 100644 src/transportModels/immiscibleIncompressibleTwoPhaseMixture/Make/options
 create mode 100644 src/transportModels/immiscibleIncompressibleTwoPhaseMixture/immiscibleIncompressibleTwoPhaseMixture.C
 create mode 100644 src/transportModels/immiscibleIncompressibleTwoPhaseMixture/immiscibleIncompressibleTwoPhaseMixture.H
 delete mode 100644 tutorials/multiphase/MRFInterFoam/mixerVessel2D/0/alpha.water
 create mode 100755 tutorials/multiphase/interFoam/laminar/capillaryRise/Allrun
 rename tutorials/multiphase/{MRFInterFoam => interFoam/laminar}/mixerVessel2D/0/U (94%)
 rename tutorials/multiphase/{MRFInterFoam => interFoam/laminar}/mixerVessel2D/0/alpha.water.org (94%)
 rename tutorials/multiphase/{MRFInterFoam => interFoam/laminar}/mixerVessel2D/0/p_rgh (94%)
 rename tutorials/multiphase/{MRFInterFoam => interFoam/laminar}/mixerVessel2D/Allrun (83%)
 rename tutorials/multiphase/{MRFInterFoam => interFoam/laminar}/mixerVessel2D/constant/MRFProperties (94%)
 rename tutorials/multiphase/{MRFInterFoam => interFoam/laminar}/mixerVessel2D/constant/g (93%)
 rename tutorials/multiphase/{MRFInterFoam => interFoam/laminar}/mixerVessel2D/constant/polyMesh/blockMeshDict.m4 (99%)
 rename tutorials/multiphase/{MRFInterFoam => interFoam/laminar}/mixerVessel2D/constant/polyMesh/boundary (91%)
 rename tutorials/multiphase/{MRFInterFoam => interFoam/laminar}/mixerVessel2D/constant/transportProperties (94%)
 rename tutorials/multiphase/{MRFInterFoam => interFoam/laminar}/mixerVessel2D/constant/turbulenceProperties (92%)
 rename tutorials/multiphase/{MRFInterFoam => interFoam/laminar}/mixerVessel2D/makeMesh (100%)
 rename tutorials/multiphase/{MRFInterFoam => interFoam/laminar}/mixerVessel2D/system/controlDict (92%)
 create mode 100644 tutorials/multiphase/interFoam/laminar/mixerVessel2D/system/fvOptions
 rename tutorials/multiphase/{MRFInterFoam => interFoam/laminar}/mixerVessel2D/system/fvSchemes (95%)
 rename tutorials/multiphase/{MRFInterFoam => interFoam/laminar}/mixerVessel2D/system/fvSolution (96%)
 rename tutorials/multiphase/{MRFInterFoam => interFoam/laminar}/mixerVessel2D/system/setFieldsDict (94%)
 rename tutorials/multiphase/{MRFInterFoam => interFoam/laminar}/mixerVessel2D/system/topoSetDict (93%)
 create mode 100644 tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/0.org/U
 create mode 100644 tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/0.org/alpha.air
 create mode 100644 tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/0.org/alpha.mercury
 create mode 100644 tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/0.org/alpha.oil
 create mode 100644 tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/0.org/alpha.water
 create mode 100644 tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/0.org/p_rgh
 create mode 100755 tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/Allrun
 create mode 100644 tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/constant/RASProperties
 create mode 100644 tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/constant/dynamicMeshDict
 create mode 100644 tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/constant/g
 create mode 100644 tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/constant/polyMesh/blockMeshDict.m4
 create mode 100644 tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/constant/polyMesh/boundary
 create mode 100644 tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/constant/transportProperties
 create mode 100644 tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/constant/triSurface/projectionSurface.stl
 create mode 100644 tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/constant/turbulenceProperties
 create mode 100755 tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/makeMesh
 create mode 100644 tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/system/controlDict
 create mode 100644 tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/system/decomposeParDict
 create mode 100644 tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/system/fvSchemes
 create mode 100644 tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/system/fvSolution
 create mode 100644 tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/system/setFieldsDict
 create mode 100644 tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/system/topoSetDict

diff --git a/applications/solvers/multiphase/cavitatingFoam/createFields.H b/applications/solvers/multiphase/cavitatingFoam/createFields.H
index 2c834dc5118..3c28de16c5c 100644
--- a/applications/solvers/multiphase/cavitatingFoam/createFields.H
+++ b/applications/solvers/multiphase/cavitatingFoam/createFields.H
@@ -57,12 +57,12 @@
 
     Info<< "Reading transportProperties\n" << endl;
 
-    incompressibleTwoPhaseMixture twoPhaseProperties(U, phi);
+    incompressibleTwoPhaseMixture mixture(U, phi);
 
-    volScalarField& alphav(twoPhaseProperties.alpha1());
+    volScalarField& alphav(mixture.alpha1());
     alphav.oldTime();
 
-    volScalarField& alphal(twoPhaseProperties.alpha2());
+    volScalarField& alphal(mixture.alpha2());
 
     Info<< "Creating compressibilityModel\n" << endl;
     autoPtr<barotropicCompressibilityModel> psiModel =
@@ -85,5 +85,5 @@
     // Create incompressible turbulence model
     autoPtr<incompressible::turbulenceModel> turbulence
     (
-        incompressible::turbulenceModel::New(U, phi, twoPhaseProperties)
+        incompressible::turbulenceModel::New(U, phi, mixture)
     );
diff --git a/applications/solvers/multiphase/compressibleInterFoam/Make/options b/applications/solvers/multiphase/compressibleInterFoam/Make/options
index 035116d2d57..54e9f74e4af 100644
--- a/applications/solvers/multiphase/compressibleInterFoam/Make/options
+++ b/applications/solvers/multiphase/compressibleInterFoam/Make/options
@@ -1,5 +1,6 @@
 EXE_INC = \
     -ItwoPhaseMixtureThermo \
+    -I$(LIB_SRC)/transportModels/compressible/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
     -I$(LIB_SRC)/transportModels/twoPhaseMixture/lnInclude \
     -I$(LIB_SRC)/transportModels/interfaceProperties/lnInclude \
diff --git a/applications/solvers/multiphase/compressibleInterFoam/TEqn.H b/applications/solvers/multiphase/compressibleInterFoam/TEqn.H
index d97e8b2a354..a02b38a8d8c 100644
--- a/applications/solvers/multiphase/compressibleInterFoam/TEqn.H
+++ b/applications/solvers/multiphase/compressibleInterFoam/TEqn.H
@@ -3,19 +3,19 @@
     (
         fvm::ddt(rho, T)
       + fvm::div(rhoPhi, T)
-      - fvm::laplacian(twoPhaseProperties.alphaEff(turbulence->mut()), T)
+      - fvm::laplacian(mixture.alphaEff(turbulence->mut()), T)
       + (
             fvc::div(fvc::absolute(phi, U), p)
           + fvc::ddt(rho, K) + fvc::div(rhoPhi, K)
         )
        *(
-           alpha1/twoPhaseProperties.thermo1().Cv()
-         + alpha2/twoPhaseProperties.thermo2().Cv()
+           alpha1/mixture.thermo1().Cv()
+         + alpha2/mixture.thermo2().Cv()
         )
     );
 
     TEqn.relax();
     TEqn.solve();
 
-    twoPhaseProperties.correct();
+    mixture.correct();
 }
diff --git a/applications/solvers/multiphase/compressibleInterFoam/UEqn.H b/applications/solvers/multiphase/compressibleInterFoam/UEqn.H
index 8fc397e8020..44be32aac22 100644
--- a/applications/solvers/multiphase/compressibleInterFoam/UEqn.H
+++ b/applications/solvers/multiphase/compressibleInterFoam/UEqn.H
@@ -16,7 +16,7 @@
             fvc::reconstruct
             (
                 (
-                    fvc::interpolate(interface.sigmaK())*fvc::snGrad(alpha1)
+                    interface.surfaceTensionForce()
                   - ghf*fvc::snGrad(rho)
                   - fvc::snGrad(p_rgh)
                 ) * mesh.magSf()
diff --git a/applications/solvers/multiphase/compressibleInterFoam/compressibleInterDyMFoam/Make/options b/applications/solvers/multiphase/compressibleInterFoam/compressibleInterDyMFoam/Make/options
index cf9a1d85ecf..123645b4c36 100644
--- a/applications/solvers/multiphase/compressibleInterFoam/compressibleInterDyMFoam/Make/options
+++ b/applications/solvers/multiphase/compressibleInterFoam/compressibleInterDyMFoam/Make/options
@@ -1,6 +1,7 @@
 EXE_INC = \
     -I.. \
     -I../twoPhaseMixtureThermo \
+    -I$(LIB_SRC)/transportModels/compressible/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
     -I$(LIB_SRC)/transportModels/twoPhaseMixture/lnInclude \
     -I$(LIB_SRC)/transportModels/interfaceProperties/lnInclude \
diff --git a/applications/solvers/multiphase/compressibleInterFoam/compressibleInterDyMFoam/pEqn.H b/applications/solvers/multiphase/compressibleInterFoam/compressibleInterDyMFoam/pEqn.H
index e7fd7241db9..89089fe616f 100644
--- a/applications/solvers/multiphase/compressibleInterFoam/compressibleInterDyMFoam/pEqn.H
+++ b/applications/solvers/multiphase/compressibleInterFoam/compressibleInterDyMFoam/pEqn.H
@@ -15,7 +15,7 @@
     surfaceScalarField phig
     (
         (
-            fvc::interpolate(interface.sigmaK())*fvc::snGrad(alpha1)
+            interface.surfaceTensionForce()
           - ghf*fvc::snGrad(rho)
         )*rAUf*mesh.magSf()
     );
diff --git a/applications/solvers/multiphase/compressibleInterFoam/createFields.H b/applications/solvers/multiphase/compressibleInterFoam/createFields.H
index c4edc961d88..5f7b4dddadf 100644
--- a/applications/solvers/multiphase/compressibleInterFoam/createFields.H
+++ b/applications/solvers/multiphase/compressibleInterFoam/createFields.H
@@ -29,19 +29,19 @@
     #include "createPhi.H"
 
     Info<< "Constructing twoPhaseMixtureThermo\n" << endl;
-    twoPhaseMixtureThermo twoPhaseProperties(mesh);
+    twoPhaseMixtureThermo mixture(mesh);
 
-    volScalarField& alpha1(twoPhaseProperties.alpha1());
-    volScalarField& alpha2(twoPhaseProperties.alpha2());
+    volScalarField& alpha1(mixture.alpha1());
+    volScalarField& alpha2(mixture.alpha2());
 
     Info<< "Reading thermophysical properties\n" << endl;
 
-    volScalarField& p = twoPhaseProperties.p();
-    volScalarField& T = twoPhaseProperties.T();
-    volScalarField& rho1 = twoPhaseProperties.thermo1().rho();
-    const volScalarField& psi1 = twoPhaseProperties.thermo1().psi();
-    volScalarField& rho2 = twoPhaseProperties.thermo2().rho();
-    const volScalarField& psi2 = twoPhaseProperties.thermo2().psi();
+    volScalarField& p = mixture.p();
+    volScalarField& T = mixture.T();
+    volScalarField& rho1 = mixture.thermo1().rho();
+    const volScalarField& psi1 = mixture.thermo1().psi();
+    volScalarField& rho2 = mixture.thermo2().rho();
+    const volScalarField& psi2 = mixture.thermo2().psi();
 
     volScalarField rho
     (
@@ -57,7 +57,7 @@
     );
 
 
-    dimensionedScalar pMin(twoPhaseProperties.lookup("pMin"));
+    dimensionedScalar pMin(mixture.lookup("pMin"));
 
     Info<< "Calculating field g.h\n" << endl;
     volScalarField gh("gh", g & mesh.C());
@@ -85,12 +85,12 @@
     );
 
     // Construct interface from alpha1 distribution
-    interfaceProperties interface(alpha1, U, twoPhaseProperties);
+    interfaceProperties interface(alpha1, U, mixture);
 
     // Construct compressible turbulence model
     autoPtr<compressible::turbulenceModel> turbulence
     (
-        compressible::turbulenceModel::New(rho, U, rhoPhi, twoPhaseProperties)
+        compressible::turbulenceModel::New(rho, U, rhoPhi, mixture)
     );
 
     Info<< "Creating field kinetic energy K\n" << endl;
diff --git a/applications/solvers/multiphase/compressibleInterFoam/pEqn.H b/applications/solvers/multiphase/compressibleInterFoam/pEqn.H
index dbd859b954b..673f1c82710 100644
--- a/applications/solvers/multiphase/compressibleInterFoam/pEqn.H
+++ b/applications/solvers/multiphase/compressibleInterFoam/pEqn.H
@@ -15,7 +15,7 @@
     surfaceScalarField phig
     (
         (
-            fvc::interpolate(interface.sigmaK())*fvc::snGrad(alpha1)
+            interface.surfaceTensionForce()
           - ghf*fvc::snGrad(rho)
         )*rAUf*mesh.magSf()
     );
diff --git a/applications/solvers/multiphase/compressibleInterFoam/twoPhaseMixtureThermo/Make/options b/applications/solvers/multiphase/compressibleInterFoam/twoPhaseMixtureThermo/Make/options
index 8dbf02aa064..5c8c8df239b 100644
--- a/applications/solvers/multiphase/compressibleInterFoam/twoPhaseMixtureThermo/Make/options
+++ b/applications/solvers/multiphase/compressibleInterFoam/twoPhaseMixtureThermo/Make/options
@@ -1,4 +1,5 @@
 EXE_INC = \
+    -I$(LIB_SRC)/transportModels/compressible/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
     -I$(LIB_SRC)/transportModels/twoPhaseMixture/lnInclude \
     -I$(LIB_SRC)/finiteVolume/lnInclude
diff --git a/applications/solvers/multiphase/compressibleMultiphaseInterFoam/Make/options b/applications/solvers/multiphase/compressibleMultiphaseInterFoam/Make/options
index 0f47e6979ed..af7020f40f6 100644
--- a/applications/solvers/multiphase/compressibleMultiphaseInterFoam/Make/options
+++ b/applications/solvers/multiphase/compressibleMultiphaseInterFoam/Make/options
@@ -1,5 +1,7 @@
 EXE_INC = \
+    -I../interFoam \
     -ImultiphaseMixtureThermo/lnInclude \
+    -I$(LIB_SRC)/transportModels/compressible/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
     -I$(LIB_SRC)/transportModels/twoPhaseMixture/lnInclude \
     -I$(LIB_SRC)/transportModels/interfaceProperties/lnInclude \
diff --git a/applications/solvers/multiphase/compressibleMultiphaseInterFoam/TEqn.H b/applications/solvers/multiphase/compressibleMultiphaseInterFoam/TEqn.H
index a7ee3a7bb4b..66274441c3e 100644
--- a/applications/solvers/multiphase/compressibleMultiphaseInterFoam/TEqn.H
+++ b/applications/solvers/multiphase/compressibleMultiphaseInterFoam/TEqn.H
@@ -2,16 +2,16 @@
     fvScalarMatrix TEqn
     (
         fvm::ddt(rho, T)
-      + fvm::div(multiphaseProperties.rhoPhi(), T)
-      - fvm::laplacian(multiphaseProperties.alphaEff(turbulence->mut()), T)
+      + fvm::div(mixture.rhoPhi(), T)
+      - fvm::laplacian(mixture.alphaEff(turbulence->mut()), T)
       + (
             fvc::div(fvc::absolute(phi, U), p)
-          + fvc::ddt(rho, K) + fvc::div(multiphaseProperties.rhoPhi(), K)
-        )*multiphaseProperties.rCv()
+          + fvc::ddt(rho, K) + fvc::div(mixture.rhoPhi(), K)
+        )*mixture.rCv()
     );
 
     TEqn.relax();
     TEqn.solve();
 
-    multiphaseProperties.correct();
+    mixture.correct();
 }
diff --git a/applications/solvers/multiphase/compressibleMultiphaseInterFoam/UEqn.H b/applications/solvers/multiphase/compressibleMultiphaseInterFoam/UEqn.H
index 38cfebde6f3..436b74e8461 100644
--- a/applications/solvers/multiphase/compressibleMultiphaseInterFoam/UEqn.H
+++ b/applications/solvers/multiphase/compressibleMultiphaseInterFoam/UEqn.H
@@ -1,7 +1,7 @@
     fvVectorMatrix UEqn
     (
         fvm::ddt(rho, U)
-      + fvm::div(multiphaseProperties.rhoPhi(), U)
+      + fvm::div(mixture.rhoPhi(), U)
       + turbulence->divDevRhoReff(U)
     );
 
@@ -16,7 +16,7 @@
             fvc::reconstruct
             (
                 (
-                    multiphaseProperties.surfaceTensionForce()
+                    mixture.surfaceTensionForce()
                   - ghf*fvc::snGrad(rho)
                   - fvc::snGrad(p_rgh)
                 ) * mesh.magSf()
diff --git a/applications/solvers/multiphase/compressibleMultiphaseInterFoam/compressibleMultiphaseInterFoam.C b/applications/solvers/multiphase/compressibleMultiphaseInterFoam/compressibleMultiphaseInterFoam.C
index 09018b603f0..5648f2d3bd2 100644
--- a/applications/solvers/multiphase/compressibleMultiphaseInterFoam/compressibleMultiphaseInterFoam.C
+++ b/applications/solvers/multiphase/compressibleMultiphaseInterFoam/compressibleMultiphaseInterFoam.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2013-2014 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -76,9 +76,9 @@ int main(int argc, char *argv[])
         // --- Pressure-velocity PIMPLE corrector loop
         while (pimple.loop())
         {
-            multiphaseProperties.solve();
+            mixture.solve();
 
-            solve(fvm::ddt(rho) + fvc::div(multiphaseProperties.rhoPhi()));
+            solve(fvm::ddt(rho) + fvc::div(mixture.rhoPhi()));
 
             #include "UEqn.H"
             #include "TEqn.H"
diff --git a/applications/solvers/multiphase/compressibleMultiphaseInterFoam/createFields.H b/applications/solvers/multiphase/compressibleMultiphaseInterFoam/createFields.H
index 5c7f723a875..8ab0a9581a8 100644
--- a/applications/solvers/multiphase/compressibleMultiphaseInterFoam/createFields.H
+++ b/applications/solvers/multiphase/compressibleMultiphaseInterFoam/createFields.H
@@ -29,10 +29,10 @@
     #include "createPhi.H"
 
     Info<< "Constructing multiphaseMixtureThermo\n" << endl;
-    multiphaseMixtureThermo multiphaseProperties(U, phi);
+    multiphaseMixtureThermo mixture(U, phi);
 
-    volScalarField& p = multiphaseProperties.p();
-    volScalarField& T = multiphaseProperties.T();
+    volScalarField& p = mixture.p();
+    volScalarField& T = mixture.T();
 
     volScalarField rho
     (
@@ -43,12 +43,12 @@
             mesh,
             IOobject::READ_IF_PRESENT
         ),
-        multiphaseProperties.rho()
+        mixture.rho()
     );
 
     Info<< max(rho) << min(rho);
 
-    dimensionedScalar pMin(multiphaseProperties.lookup("pMin"));
+    dimensionedScalar pMin(mixture.lookup("pMin"));
 
 
     Info<< "Calculating field g.h\n" << endl;
@@ -62,8 +62,8 @@
         (
             rho,
             U,
-            multiphaseProperties.rhoPhi(),
-            multiphaseProperties
+            mixture.rhoPhi(),
+            mixture
         )
     );
 
diff --git a/applications/solvers/multiphase/compressibleMultiphaseInterFoam/multiphaseMixtureThermo/Make/options b/applications/solvers/multiphase/compressibleMultiphaseInterFoam/multiphaseMixtureThermo/Make/options
index eab8cce15dd..3740cf38fe9 100644
--- a/applications/solvers/multiphase/compressibleMultiphaseInterFoam/multiphaseMixtureThermo/Make/options
+++ b/applications/solvers/multiphase/compressibleMultiphaseInterFoam/multiphaseMixtureThermo/Make/options
@@ -1,4 +1,5 @@
 EXE_INC = \
+    -I$(LIB_SRC)/transportModels/compressible/lnInclude \
     -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
     -I$(LIB_SRC)/finiteVolume/lnInclude
 
diff --git a/applications/solvers/multiphase/compressibleMultiphaseInterFoam/pEqn.H b/applications/solvers/multiphase/compressibleMultiphaseInterFoam/pEqn.H
index e42a54aabda..a8f4bcb9f2b 100644
--- a/applications/solvers/multiphase/compressibleMultiphaseInterFoam/pEqn.H
+++ b/applications/solvers/multiphase/compressibleMultiphaseInterFoam/pEqn.H
@@ -15,7 +15,7 @@
     surfaceScalarField phig
     (
         (
-            multiphaseProperties.surfaceTensionForce()
+            mixture.surfaceTensionForce()
           - ghf*fvc::snGrad(rho)
         )*rAUf*mesh.magSf()
     );
@@ -32,13 +32,13 @@
         )/(mesh.magSf().boundaryField()*rAUf.boundaryField())
     );
 
-    PtrList<fvScalarMatrix> p_rghEqnComps(multiphaseProperties.phases().size());
+    PtrList<fvScalarMatrix> p_rghEqnComps(mixture.phases().size());
 
     label phasei = 0;
     forAllConstIter
     (
         PtrDictionary<phaseModel>,
-        multiphaseProperties.phases(),
+        mixture.phases(),
         phase
     )
     {
@@ -74,7 +74,7 @@
         forAllConstIter
         (
             PtrDictionary<phaseModel>,
-            multiphaseProperties.phases(),
+            mixture.phases(),
             phase
         )
         {
@@ -105,14 +105,14 @@
 
         if (pimple.finalNonOrthogonalIter())
         {
-            // p = max(p_rgh + multiphaseProperties.rho()*gh, pMin);
-            // p_rgh = p - multiphaseProperties.rho()*gh;
+            // p = max(p_rgh + mixture.rho()*gh, pMin);
+            // p_rgh = p - mixture.rho()*gh;
 
             phasei = 0;
             forAllIter
             (
                 PtrDictionary<phaseModel>,
-                multiphaseProperties.phases(),
+                mixture.phases(),
                 phase
             )
             {
@@ -129,11 +129,11 @@
         }
     }
 
-    p = max(p_rgh + multiphaseProperties.rho()*gh, pMin);
+    p = max(p_rgh + mixture.rho()*gh, pMin);
 
     // Update densities from change in p_rgh
-    multiphaseProperties.correctRho(p_rgh - p_rgh_0);
-    rho = multiphaseProperties.rho();
+    mixture.correctRho(p_rgh - p_rgh_0);
+    rho = mixture.rho();
 
     K = 0.5*magSqr(U);
 
diff --git a/applications/solvers/multiphase/interFoam/Allwclean b/applications/solvers/multiphase/interFoam/Allwclean
index 8b080006674..d91472696f7 100755
--- a/applications/solvers/multiphase/interFoam/Allwclean
+++ b/applications/solvers/multiphase/interFoam/Allwclean
@@ -4,7 +4,6 @@ set -x
 
 wclean
 wclean interDyMFoam
-wclean MRFInterFoam
 wclean porousInterFoam
 wclean LTSInterFoam
 wclean interMixingFoam
diff --git a/applications/solvers/multiphase/interFoam/Allwmake b/applications/solvers/multiphase/interFoam/Allwmake
index cc883614b89..035b0079344 100755
--- a/applications/solvers/multiphase/interFoam/Allwmake
+++ b/applications/solvers/multiphase/interFoam/Allwmake
@@ -4,7 +4,6 @@ set -x
 
 wmake
 wmake interDyMFoam
-wmake MRFInterFoam
 wmake porousInterFoam
 wmake LTSInterFoam
 wmake interMixingFoam
diff --git a/applications/solvers/multiphase/interFoam/LTSInterFoam/LTSInterFoam.C b/applications/solvers/multiphase/interFoam/LTSInterFoam/LTSInterFoam.C
index 33d83161ce0..1e870c42a93 100644
--- a/applications/solvers/multiphase/interFoam/LTSInterFoam/LTSInterFoam.C
+++ b/applications/solvers/multiphase/interFoam/LTSInterFoam/LTSInterFoam.C
@@ -40,8 +40,7 @@ Description
 #include "fvCFD.H"
 #include "CMULES.H"
 #include "subCycle.H"
-#include "interfaceProperties.H"
-#include "incompressibleTwoPhaseMixture.H"
+#include "immiscibleIncompressibleTwoPhaseMixture.H"
 #include "turbulenceModel.H"
 #include "fvcSmooth.H"
 #include "pimpleControl.H"
@@ -82,12 +81,12 @@ int main(int argc, char *argv[])
         {
             #include "alphaControls.H"
 
-            twoPhaseProperties.correct();
-
             #define LTSSOLVE
             #include "alphaEqnSubCycle.H"
             #undef LTSSOLVE
 
+            mixture.correct();
+
             turbulence->correct();
 
             #include "UEqn.H"
diff --git a/applications/solvers/multiphase/interFoam/LTSInterFoam/Make/options b/applications/solvers/multiphase/interFoam/LTSInterFoam/Make/options
index 33560b54e64..14861f2b880 100644
--- a/applications/solvers/multiphase/interFoam/LTSInterFoam/Make/options
+++ b/applications/solvers/multiphase/interFoam/LTSInterFoam/Make/options
@@ -5,16 +5,14 @@ EXE_INC = \
     -I$(LIB_SRC)/transportModels/incompressible/lnInclude \
     -I$(LIB_SRC)/transportModels/interfaceProperties/lnInclude \
     -I$(LIB_SRC)/turbulenceModels/incompressible/turbulenceModel \
+    -I$(LIB_SRC)/transportModels/immiscibleIncompressibleTwoPhaseMixture/lnInclude \
     -I$(LIB_SRC)/finiteVolume/lnInclude \
     -I$(LIB_SRC)/meshTools/lnInclude \
     -I$(LIB_SRC)/fvOptions/lnInclude \
     -I$(LIB_SRC)/sampling/lnInclude
 
 EXE_LIBS = \
-    -linterfaceProperties \
-    -ltwoPhaseMixture \
-    -ltwoPhaseProperties \
-    -lincompressibleTransportModels \
+    -limmiscibleIncompressibleTwoPhaseMixture \
     -lincompressibleTurbulenceModel \
     -lincompressibleRASModels \
     -lincompressibleLESModels \
diff --git a/applications/solvers/multiphase/interFoam/MRFInterFoam/Make/files b/applications/solvers/multiphase/interFoam/MRFInterFoam/Make/files
deleted file mode 100644
index 9610e63ee14..00000000000
--- a/applications/solvers/multiphase/interFoam/MRFInterFoam/Make/files
+++ /dev/null
@@ -1,3 +0,0 @@
-MRFInterFoam.C
-
-EXE = $(FOAM_APPBIN)/MRFInterFoam
diff --git a/applications/solvers/multiphase/interFoam/MRFInterFoam/UEqn.H b/applications/solvers/multiphase/interFoam/MRFInterFoam/UEqn.H
deleted file mode 100644
index c0a9b615a06..00000000000
--- a/applications/solvers/multiphase/interFoam/MRFInterFoam/UEqn.H
+++ /dev/null
@@ -1,38 +0,0 @@
-    surfaceScalarField muEff
-    (
-        "muEff",
-        twoPhaseProperties.muf()
-      + fvc::interpolate(rho*turbulence->nut())
-    );
-
-    fvVectorMatrix UEqn
-    (
-        fvm::ddt(rho, U)
-      + fvm::div(rhoPhi, U)
-      - fvm::laplacian(muEff, U)
-      - (fvc::grad(U) & fvc::grad(muEff))
-    //- fvc::div(muEff*(fvc::interpolate(dev(fvc::grad(U))) & mesh.Sf()))
-     ==
-        fvOptions(rho, U)
-    );
-
-    mrfZones.addCoriolis(rho, UEqn);
-    UEqn.relax();
-    fvOptions.constrain(UEqn);
-
-    if (pimple.momentumPredictor())
-    {
-        solve
-        (
-            UEqn
-         ==
-            fvc::reconstruct
-            (
-                (
-                    fvc::interpolate(interface.sigmaK())*fvc::snGrad(alpha1)
-                  - ghf*fvc::snGrad(rho)
-                  - fvc::snGrad(p_rgh)
-                ) * mesh.magSf()
-            )
-        );
-    }
diff --git a/applications/solvers/multiphase/interFoam/MRFInterFoam/createMRFZones.H b/applications/solvers/multiphase/interFoam/MRFInterFoam/createMRFZones.H
deleted file mode 100644
index dba2f7ae629..00000000000
--- a/applications/solvers/multiphase/interFoam/MRFInterFoam/createMRFZones.H
+++ /dev/null
@@ -1,2 +0,0 @@
-    IOMRFZoneList mrfZones(mesh);
-    mrfZones.correctBoundaryVelocity(U);
diff --git a/applications/solvers/multiphase/interFoam/MRFInterFoam/pEqn.H b/applications/solvers/multiphase/interFoam/MRFInterFoam/pEqn.H
deleted file mode 100644
index 6c315c8eb85..00000000000
--- a/applications/solvers/multiphase/interFoam/MRFInterFoam/pEqn.H
+++ /dev/null
@@ -1,72 +0,0 @@
-{
-    volScalarField rAU("rAU", 1.0/UEqn.A());
-    surfaceScalarField rAUf("rAUf", fvc::interpolate(rAU));
-
-    volVectorField HbyA("HbyA", U);
-    HbyA = rAU*UEqn.H();
-
-    surfaceScalarField phiHbyA
-    (
-        "phiHbyA",
-        (fvc::interpolate(HbyA) & mesh.Sf())
-      + fvc::interpolate(rho*rAU)*fvc::ddtCorr(U, phi)
-    );
-    adjustPhi(phiHbyA, U, p_rgh);
-    mrfZones.makeRelative(phiHbyA);
-
-    surfaceScalarField phig
-    (
-        (
-            fvc::interpolate(interface.sigmaK())*fvc::snGrad(alpha1)
-          - ghf*fvc::snGrad(rho)
-        )*rAUf*mesh.magSf()
-    );
-
-    phiHbyA += phig;
-
-    // Update the fixedFluxPressure BCs to ensure flux consistency
-    setSnGrad<fixedFluxPressureFvPatchScalarField>
-    (
-        p_rgh.boundaryField(),
-        (
-            phiHbyA.boundaryField()
-          - mrfZones.relative(mesh.Sf().boundaryField() & U.boundaryField())
-        )/(mesh.magSf().boundaryField()*rAUf.boundaryField())
-    );
-
-    while (pimple.correctNonOrthogonal())
-    {
-        fvScalarMatrix p_rghEqn
-        (
-            fvm::laplacian(rAUf, p_rgh) == fvc::div(phiHbyA)
-        );
-
-        p_rghEqn.setReference(pRefCell, getRefCellValue(p_rgh, pRefCell));
-
-        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);
-        }
-    }
-
-    #include "continuityErrs.H"
-
-    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/interFoam/MRFInterFoam/zonePhaseVolumes.H b/applications/solvers/multiphase/interFoam/MRFInterFoam/zonePhaseVolumes.H
deleted file mode 100644
index e0355fe4b14..00000000000
--- a/applications/solvers/multiphase/interFoam/MRFInterFoam/zonePhaseVolumes.H
+++ /dev/null
@@ -1,21 +0,0 @@
-{
-    const scalarField& V = mesh.V();
-
-    forAll(mesh.cellZones(), czi)
-    {
-        const labelList& cellLabels = mesh.cellZones()[czi];
-
-        scalar phaseVolume = 0;
-
-        forAll(cellLabels, cli)
-        {
-            label celli = cellLabels[cli];
-            phaseVolume += alpha1[celli]*V[celli];
-        }
-
-        reduce(phaseVolume, sumOp<scalar>());
-
-        Info<< "Phase volume in zone " << mesh.cellZones()[czi].name()
-            << " = " << phaseVolume*1e6 << " ml " << endl;
-    }
-}
diff --git a/applications/solvers/multiphase/interFoam/Make/options b/applications/solvers/multiphase/interFoam/Make/options
index 8811a53df65..207a796b1da 100644
--- a/applications/solvers/multiphase/interFoam/Make/options
+++ b/applications/solvers/multiphase/interFoam/Make/options
@@ -1,23 +1,21 @@
-EXE_INC = -ggdb3 \
+EXE_INC = \
     -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/incompressible/turbulenceModel \
+    -I$(LIB_SRC)/transportModels/immiscibleIncompressibleTwoPhaseMixture/lnInclude \
     -I$(LIB_SRC)/finiteVolume/lnInclude \
-    -I$(LIB_SRC)/meshTools/lnInclude \
     -I$(LIB_SRC)/fvOptions/lnInclude \
+    -I$(LIB_SRC)/meshTools/lnInclude \
     -I$(LIB_SRC)/sampling/lnInclude
 
 EXE_LIBS = \
-    -ltwoPhaseMixture \
-    -linterfaceProperties \
-    -ltwoPhaseProperties \
-    -lincompressibleTransportModels \
+    -limmiscibleIncompressibleTwoPhaseMixture \
     -lincompressibleTurbulenceModel \
     -lincompressibleRASModels \
     -lincompressibleLESModels \
     -lfiniteVolume \
-    -lmeshTools \
     -lfvOptions \
+    -lmeshTools \
     -lsampling
diff --git a/applications/solvers/multiphase/interFoam/UEqn.H b/applications/solvers/multiphase/interFoam/UEqn.H
index 7cc250a66a2..10bc0fac6f5 100644
--- a/applications/solvers/multiphase/interFoam/UEqn.H
+++ b/applications/solvers/multiphase/interFoam/UEqn.H
@@ -3,10 +3,14 @@
         fvm::ddt(rho, U)
       + fvm::div(rhoPhi, U)
       + turbulence->divDevRhoReff(rho, U)
+     ==
+        fvOptions(rho, U)
     );
 
     UEqn.relax();
 
+    fvOptions.constrain(UEqn);
+
     if (pimple.momentumPredictor())
     {
         solve
@@ -16,10 +20,12 @@
             fvc::reconstruct
             (
                 (
-                    fvc::interpolate(interface.sigmaK())*fvc::snGrad(alpha1)
+                    mixture.surfaceTensionForce()
                   - ghf*fvc::snGrad(rho)
                   - fvc::snGrad(p_rgh)
                 ) * mesh.magSf()
             )
         );
+
+        fvOptions.correct(U);
     }
diff --git a/applications/solvers/multiphase/interFoam/alphaCourantNo.H b/applications/solvers/multiphase/interFoam/alphaCourantNo.H
index c1f69ab802a..95ad609a510 100644
--- a/applications/solvers/multiphase/interFoam/alphaCourantNo.H
+++ b/applications/solvers/multiphase/interFoam/alphaCourantNo.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -41,7 +41,7 @@ if (mesh.nInternalFaces())
 {
     scalarField sumPhi
     (
-        pos(alpha1 - 0.01)*pos(0.99 - alpha1)
+        mixture.nearInterface()().internalField()
        *fvc::surfaceSum(mag(phi))().internalField()
     );
 
diff --git a/applications/solvers/multiphase/interFoam/alphaEqn.H b/applications/solvers/multiphase/interFoam/alphaEqn.H
index 764d2aee56d..b25d12511c4 100644
--- a/applications/solvers/multiphase/interFoam/alphaEqn.H
+++ b/applications/solvers/multiphase/interFoam/alphaEqn.H
@@ -3,13 +3,13 @@
     word alpharScheme("div(phirb,alpha)");
 
     // Standard face-flux compression coefficient
-    surfaceScalarField phic(interface.cAlpha()*mag(phi/mesh.magSf()));
+    surfaceScalarField phic(mixture.cAlpha()*mag(phi/mesh.magSf()));
 
     // Add the optional isotropic compression contribution
     if (icAlpha > 0)
     {
         phic *= (1.0 - icAlpha);
-        phic += (interface.cAlpha()*icAlpha)*fvc::interpolate(mag(U));
+        phic += (mixture.cAlpha()*icAlpha)*fvc::interpolate(mag(U));
     }
 
     // Do not compress interface at non-coupled boundary faces
@@ -74,12 +74,12 @@
 
         alpha2 = 1.0 - alpha1;
 
-        interface.correct();
+        mixture.correct();
     }
 
     for (int aCorr=0; aCorr<nAlphaCorr; aCorr++)
     {
-        surfaceScalarField phir(phic*interface.nHatf());
+        surfaceScalarField phir(phic*mixture.nHatf());
 
         tmp<surfaceScalarField> tphiAlphaUn
         (
@@ -132,7 +132,7 @@
 
         alpha2 = 1.0 - alpha1;
 
-        interface.correct();
+        mixture.correct();
     }
 
     rhoPhi = tphiAlpha()*(rho1 - rho2) + phi*rho2;
diff --git a/applications/solvers/multiphase/interFoam/createFields.H b/applications/solvers/multiphase/interFoam/createFields.H
index 1c91f280bc7..a87673b0f70 100644
--- a/applications/solvers/multiphase/interFoam/createFields.H
+++ b/applications/solvers/multiphase/interFoam/createFields.H
@@ -30,13 +30,13 @@
 
 
     Info<< "Reading transportProperties\n" << endl;
-    incompressibleTwoPhaseMixture twoPhaseProperties(U, phi);
+    immiscibleIncompressibleTwoPhaseMixture mixture(U, phi);
 
-    volScalarField& alpha1(twoPhaseProperties.alpha1());
-    volScalarField& alpha2(twoPhaseProperties.alpha2());
+    volScalarField& alpha1(mixture.alpha1());
+    volScalarField& alpha2(mixture.alpha2());
 
-    const dimensionedScalar& rho1 = twoPhaseProperties.rho1();
-    const dimensionedScalar& rho2 = twoPhaseProperties.rho2();
+    const dimensionedScalar& rho1 = mixture.rho1();
+    const dimensionedScalar& rho2 = mixture.rho2();
 
 
     // Need to store rho for ddt(rho, U)
@@ -70,14 +70,10 @@
     );
 
 
-    // Construct interface from alpha1 distribution
-    interfaceProperties interface(alpha1, U, twoPhaseProperties);
-
-
     // Construct incompressible turbulence model
     autoPtr<incompressible::turbulenceModel> turbulence
     (
-        incompressible::turbulenceModel::New(U, phi, twoPhaseProperties)
+        incompressible::turbulenceModel::New(U, phi, mixture)
     );
 
     #include "readGravitationalAcceleration.H"
@@ -131,7 +127,9 @@
         p_rgh = p - rho*gh;
     }
 
+
     fv::IOoptionList fvOptions(mesh);
 
 
+    // MULES Correction
     tmp<surfaceScalarField> tphiAlphaCorr0;
diff --git a/applications/solvers/multiphase/interFoam/interDyMFoam/Make/options b/applications/solvers/multiphase/interFoam/interDyMFoam/Make/options
index 2a5429f7a8a..b9638e612be 100644
--- a/applications/solvers/multiphase/interFoam/interDyMFoam/Make/options
+++ b/applications/solvers/multiphase/interFoam/interDyMFoam/Make/options
@@ -5,6 +5,7 @@ EXE_INC = \
     -I$(LIB_SRC)/transportModels/incompressible/lnInclude \
     -I$(LIB_SRC)/transportModels/interfaceProperties/lnInclude \
     -I$(LIB_SRC)/turbulenceModels/incompressible/turbulenceModel \
+    -I$(LIB_SRC)/transportModels/immiscibleIncompressibleTwoPhaseMixture/lnInclude \
     -I$(LIB_SRC)/finiteVolume/lnInclude \
     -I$(LIB_SRC)/dynamicMesh/lnInclude \
     -I$(LIB_SRC)/dynamicFvMesh/lnInclude \
@@ -13,10 +14,7 @@ EXE_INC = \
     -I$(LIB_SRC)/sampling/lnInclude
 
 EXE_LIBS = \
-    -ltwoPhaseMixture \
-    -linterfaceProperties \
-    -ltwoPhaseProperties \
-    -lincompressibleTransportModels \
+    -limmiscibleIncompressibleTwoPhaseMixture \
     -lincompressibleTurbulenceModel \
     -lincompressibleRASModels \
     -lincompressibleLESModels \
diff --git a/applications/solvers/multiphase/interFoam/interDyMFoam/interDyMFoam.C b/applications/solvers/multiphase/interFoam/interDyMFoam/interDyMFoam.C
index 32ee5aee06f..58d74a62550 100644
--- a/applications/solvers/multiphase/interFoam/interDyMFoam/interDyMFoam.C
+++ b/applications/solvers/multiphase/interFoam/interDyMFoam/interDyMFoam.C
@@ -36,8 +36,7 @@ Description
 #include "dynamicFvMesh.H"
 #include "CMULES.H"
 #include "subCycle.H"
-#include "interfaceProperties.H"
-#include "incompressibleTwoPhaseMixture.H"
+#include "immiscibleIncompressibleTwoPhaseMixture.H"
 #include "turbulenceModel.H"
 #include "pimpleControl.H"
 #include "fvIOoptionList.H"
@@ -121,7 +120,7 @@ int main(int argc, char *argv[])
                     // Make the flux relative to the mesh motion
                     fvc::makeRelative(phi, U);
 
-                    interface.correct();
+                    mixture.correct();
                 }
 
                 if (mesh.changing() && checkMeshCourantNo)
@@ -131,11 +130,9 @@ int main(int argc, char *argv[])
             }
 
             #include "alphaControls.H"
-
-            twoPhaseProperties.correct();
-
             #include "alphaEqnSubCycle.H"
-            interface.correct();
+
+            mixture.correct();
 
             #include "UEqn.H"
 
diff --git a/applications/solvers/multiphase/interFoam/interDyMFoam/pEqn.H b/applications/solvers/multiphase/interFoam/interDyMFoam/pEqn.H
index ec99a638838..2ef484b18e6 100644
--- a/applications/solvers/multiphase/interFoam/interDyMFoam/pEqn.H
+++ b/applications/solvers/multiphase/interFoam/interDyMFoam/pEqn.H
@@ -22,7 +22,7 @@
     surfaceScalarField phig
     (
         (
-            fvc::interpolate(interface.sigmaK())*fvc::snGrad(alpha1)
+            mixture.surfaceTensionForce()
           - ghf*fvc::snGrad(rho)
         )*rAUf*mesh.magSf()
     );
diff --git a/applications/solvers/multiphase/interFoam/interFoam.C b/applications/solvers/multiphase/interFoam/interFoam.C
index 8c59d0f9d4e..6b6168bf0e7 100644
--- a/applications/solvers/multiphase/interFoam/interFoam.C
+++ b/applications/solvers/multiphase/interFoam/interFoam.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -40,8 +40,7 @@ Description
 #include "fvCFD.H"
 #include "CMULES.H"
 #include "subCycle.H"
-#include "interfaceProperties.H"
-#include "incompressibleTwoPhaseMixture.H"
+#include "immiscibleIncompressibleTwoPhaseMixture.H"
 #include "turbulenceModel.H"
 #include "pimpleControl.H"
 #include "fvIOoptionList.H"
@@ -84,11 +83,9 @@ int main(int argc, char *argv[])
         while (pimple.loop())
         {
             #include "alphaControls.H"
-
-            twoPhaseProperties.correct();
-
             #include "alphaEqnSubCycle.H"
-            interface.correct();
+
+            mixture.correct();
 
             #include "UEqn.H"
 
diff --git a/applications/solvers/multiphase/interFoam/interMixingFoam/Make/files b/applications/solvers/multiphase/interFoam/interMixingFoam/Make/files
index f179f42761f..92e2916a74b 100644
--- a/applications/solvers/multiphase/interFoam/interMixingFoam/Make/files
+++ b/applications/solvers/multiphase/interFoam/interMixingFoam/Make/files
@@ -1,5 +1,6 @@
-incompressibleThreePhaseMixture/threePhaseMixture.C
+incompressibleThreePhaseMixture/incompressibleThreePhaseMixture.C
 threePhaseInterfaceProperties/threePhaseInterfaceProperties.C
+immiscibleIncompressibleThreePhaseMixture/immiscibleIncompressibleThreePhaseMixture.C
 interMixingFoam.C
 
 EXE = $(FOAM_APPBIN)/interMixingFoam
diff --git a/applications/solvers/multiphase/interFoam/interMixingFoam/Make/options b/applications/solvers/multiphase/interFoam/interMixingFoam/Make/options
index cc09aeb2f35..43456c90472 100644
--- a/applications/solvers/multiphase/interFoam/interMixingFoam/Make/options
+++ b/applications/solvers/multiphase/interFoam/interMixingFoam/Make/options
@@ -1,6 +1,7 @@
 EXE_INC = \
     -I.. \
     -I$(LIB_SRC)/transportModels/twoPhaseMixture/lnInclude \
+    -IimmiscibleIncompressibleThreePhaseMixture \
     -IincompressibleThreePhaseMixture \
     -IthreePhaseInterfaceProperties \
     -I$(LIB_SRC)/transportModels/interfaceProperties/lnInclude \
diff --git a/applications/solvers/multiphase/interFoam/interMixingFoam/alphaEqns.H b/applications/solvers/multiphase/interFoam/interMixingFoam/alphaEqns.H
index 970da9fc925..a3278090207 100644
--- a/applications/solvers/multiphase/interFoam/interMixingFoam/alphaEqns.H
+++ b/applications/solvers/multiphase/interFoam/interMixingFoam/alphaEqns.H
@@ -12,7 +12,7 @@
             IOobject::NO_READ,
             IOobject::NO_WRITE
         ),
-        interface.cAlpha()*mag(phi/mesh.magSf())*interface.nHatf()
+        mixture.cAlpha()*mag(phi/mesh.magSf())*mixture.nHatf()
     );
 
     for (int gCorr=0; gCorr<nAlphaCorr; gCorr++)
diff --git a/applications/solvers/multiphase/interFoam/interMixingFoam/createFields.H b/applications/solvers/multiphase/interFoam/interMixingFoam/createFields.H
index 3fd5874d5b4..16f3a213627 100644
--- a/applications/solvers/multiphase/interFoam/interMixingFoam/createFields.H
+++ b/applications/solvers/multiphase/interFoam/interMixingFoam/createFields.H
@@ -28,17 +28,17 @@
 
     #include "createPhi.H"
 
-    threePhaseMixture threePhaseProperties(U, phi);
+    immiscibleIncompressibleThreePhaseMixture mixture(U, phi);
 
-    volScalarField& alpha1(threePhaseProperties.alpha1());
-    volScalarField& alpha2(threePhaseProperties.alpha2());
-    volScalarField& alpha3(threePhaseProperties.alpha3());
+    volScalarField& alpha1(mixture.alpha1());
+    volScalarField& alpha2(mixture.alpha2());
+    volScalarField& alpha3(mixture.alpha3());
 
-    const dimensionedScalar& rho1 = threePhaseProperties.rho1();
-    const dimensionedScalar& rho2 = threePhaseProperties.rho2();
-    const dimensionedScalar& rho3 = threePhaseProperties.rho3();
+    const dimensionedScalar& rho1 = mixture.rho1();
+    const dimensionedScalar& rho2 = mixture.rho2();
+    const dimensionedScalar& rho3 = mixture.rho3();
 
-    dimensionedScalar D23(threePhaseProperties.lookup("D23"));
+    dimensionedScalar D23(mixture.lookup("D23"));
 
     // Need to store rho for ddt(rho, U)
     volScalarField rho
@@ -73,14 +73,10 @@
     );
 
 
-    // Construct interface from alpha distribution
-    threePhaseInterfaceProperties interface(threePhaseProperties);
-
-
     // Construct incompressible turbulence model
     autoPtr<incompressible::turbulenceModel> turbulence
     (
-        incompressible::turbulenceModel::New(U, phi, threePhaseProperties)
+        incompressible::turbulenceModel::New(U, phi, mixture)
     );
 
 
diff --git a/applications/solvers/multiphase/compressibleMultiphaseInterFoam/alphaCourantNo.H b/applications/solvers/multiphase/interFoam/interMixingFoam/immiscibleIncompressibleThreePhaseMixture/immiscibleIncompressibleThreePhaseMixture.C
similarity index 61%
rename from applications/solvers/multiphase/compressibleMultiphaseInterFoam/alphaCourantNo.H
rename to applications/solvers/multiphase/interFoam/interMixingFoam/immiscibleIncompressibleThreePhaseMixture/immiscibleIncompressibleThreePhaseMixture.C
index 1fd68ffb790..2dcc2a09eca 100644
--- a/applications/solvers/multiphase/compressibleMultiphaseInterFoam/alphaCourantNo.H
+++ b/applications/solvers/multiphase/interFoam/interMixingFoam/immiscibleIncompressibleThreePhaseMixture/immiscibleIncompressibleThreePhaseMixture.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2014 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -21,37 +21,26 @@ License
     You should have received a copy of the GNU General Public License
     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
 
-Global
-    CourantNo
-
-Description
-    Calculates and outputs the mean and maximum Courant Numbers.
-
 \*---------------------------------------------------------------------------*/
 
-scalar maxAlphaCo
-(
-    readScalar(runTime.controlDict().lookup("maxAlphaCo"))
-);
+#include "immiscibleIncompressibleThreePhaseMixture.H"
 
-scalar alphaCoNum = 0.0;
-scalar meanAlphaCoNum = 0.0;
 
-if (mesh.nInternalFaces())
-{
-    scalarField sumPhi
-    (
-        multiphaseProperties.nearInterface()().internalField()
-      * fvc::surfaceSum(mag(phi))().internalField()
-    );
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-    alphaCoNum = 0.5*gMax(sumPhi/mesh.V().field())*runTime.deltaTValue();
-
-    meanAlphaCoNum =
-        0.5*(gSum(sumPhi)/gSum(mesh.V().field()))*runTime.deltaTValue();
-}
+Foam::immiscibleIncompressibleThreePhaseMixture::
+immiscibleIncompressibleThreePhaseMixture
+(
+    const volVectorField& U,
+    const surfaceScalarField& phi
+)
+:
+    incompressibleThreePhaseMixture(U, phi),
+    threePhaseInterfaceProperties
+    (
+        static_cast<incompressibleThreePhaseMixture&>(*this)
+    )
+{}
 
-Info<< "Interface Courant Number mean: " << meanAlphaCoNum
-    << " max: " << alphaCoNum << endl;
 
 // ************************************************************************* //
diff --git a/applications/solvers/multiphase/interFoam/interMixingFoam/immiscibleIncompressibleThreePhaseMixture/immiscibleIncompressibleThreePhaseMixture.H b/applications/solvers/multiphase/interFoam/interMixingFoam/immiscibleIncompressibleThreePhaseMixture/immiscibleIncompressibleThreePhaseMixture.H
new file mode 100644
index 00000000000..43352753aca
--- /dev/null
+++ b/applications/solvers/multiphase/interFoam/interMixingFoam/immiscibleIncompressibleThreePhaseMixture/immiscibleIncompressibleThreePhaseMixture.H
@@ -0,0 +1,92 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more 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::immiscibleIncompressibleThreePhaseMixture
+
+Description
+    An immiscible incompressible two-phase mixture transport model
+
+SourceFiles
+    immiscibleIncompressibleThreePhaseMixture.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef immiscibleIncompressibleThreePhaseMixture_H
+#define immiscibleIncompressibleThreePhaseMixture_H
+
+#include "incompressibleThreePhaseMixture.H"
+#include "threePhaseInterfaceProperties.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+          Class immiscibleIncompressibleThreePhaseMixture Declaration
+\*---------------------------------------------------------------------------*/
+
+class immiscibleIncompressibleThreePhaseMixture
+:
+    public incompressibleThreePhaseMixture,
+    public threePhaseInterfaceProperties
+{
+
+public:
+
+    // Constructors
+
+        //- Construct from components
+        immiscibleIncompressibleThreePhaseMixture
+        (
+            const volVectorField& U,
+            const surfaceScalarField& phi
+        );
+
+
+    //- Destructor
+    virtual ~immiscibleIncompressibleThreePhaseMixture()
+    {}
+
+
+    // Member Functions
+
+        //- Correct the transport and interface properties
+        virtual void correct()
+        {
+            incompressibleThreePhaseMixture::correct();
+            threePhaseInterfaceProperties::correct();
+        }
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/interFoam/interMixingFoam/incompressibleThreePhaseMixture/threePhaseMixture.C b/applications/solvers/multiphase/interFoam/interMixingFoam/incompressibleThreePhaseMixture/incompressibleThreePhaseMixture.C
similarity index 91%
rename from applications/solvers/multiphase/interFoam/interMixingFoam/incompressibleThreePhaseMixture/threePhaseMixture.C
rename to applications/solvers/multiphase/interFoam/interMixingFoam/incompressibleThreePhaseMixture/incompressibleThreePhaseMixture.C
index 50494062d5c..0894f3c6f36 100644
--- a/applications/solvers/multiphase/interFoam/interMixingFoam/incompressibleThreePhaseMixture/threePhaseMixture.C
+++ b/applications/solvers/multiphase/interFoam/interMixingFoam/incompressibleThreePhaseMixture/incompressibleThreePhaseMixture.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -23,7 +23,7 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "threePhaseMixture.H"
+#include "incompressibleThreePhaseMixture.H"
 #include "addToRunTimeSelectionTable.H"
 #include "surfaceFields.H"
 #include "fvc.H"
@@ -31,7 +31,7 @@ License
 // * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * * //
 
 //- Calculate and return the laminar viscosity
-void Foam::threePhaseMixture::calcNu()
+void Foam::incompressibleThreePhaseMixture::calcNu()
 {
     nuModel1_->correct();
     nuModel2_->correct();
@@ -44,7 +44,7 @@ void Foam::threePhaseMixture::calcNu()
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::threePhaseMixture::threePhaseMixture
+Foam::incompressibleThreePhaseMixture::incompressibleThreePhaseMixture
 (
     const volVectorField& U,
     const surfaceScalarField& phi
@@ -163,7 +163,8 @@ Foam::threePhaseMixture::threePhaseMixture
 
 // * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * * //
 
-Foam::tmp<Foam::volScalarField> Foam::threePhaseMixture::mu() const
+Foam::tmp<Foam::volScalarField>
+Foam::incompressibleThreePhaseMixture::mu() const
 {
     return tmp<volScalarField>
     (
@@ -178,7 +179,8 @@ Foam::tmp<Foam::volScalarField> Foam::threePhaseMixture::mu() const
 }
 
 
-Foam::tmp<Foam::surfaceScalarField> Foam::threePhaseMixture::muf() const
+Foam::tmp<Foam::surfaceScalarField>
+Foam::incompressibleThreePhaseMixture::muf() const
 {
     surfaceScalarField alpha1f(fvc::interpolate(alpha1_));
     surfaceScalarField alpha2f(fvc::interpolate(alpha2_));
@@ -197,7 +199,8 @@ Foam::tmp<Foam::surfaceScalarField> Foam::threePhaseMixture::muf() const
 }
 
 
-Foam::tmp<Foam::surfaceScalarField> Foam::threePhaseMixture::nuf() const
+Foam::tmp<Foam::surfaceScalarField>
+Foam::incompressibleThreePhaseMixture::nuf() const
 {
     surfaceScalarField alpha1f(fvc::interpolate(alpha1_));
     surfaceScalarField alpha2f(fvc::interpolate(alpha2_));
@@ -218,7 +221,7 @@ Foam::tmp<Foam::surfaceScalarField> Foam::threePhaseMixture::nuf() const
 }
 
 
-bool Foam::threePhaseMixture::read()
+bool Foam::incompressibleThreePhaseMixture::read()
 {
     if (transportModel::read())
     {
diff --git a/applications/solvers/multiphase/interFoam/interMixingFoam/incompressibleThreePhaseMixture/threePhaseMixture.H b/applications/solvers/multiphase/interFoam/interMixingFoam/incompressibleThreePhaseMixture/incompressibleThreePhaseMixture.H
similarity index 93%
rename from applications/solvers/multiphase/interFoam/interMixingFoam/incompressibleThreePhaseMixture/threePhaseMixture.H
rename to applications/solvers/multiphase/interFoam/interMixingFoam/incompressibleThreePhaseMixture/incompressibleThreePhaseMixture.H
index 16337521d3b..766e06215ef 100644
--- a/applications/solvers/multiphase/interFoam/interMixingFoam/incompressibleThreePhaseMixture/threePhaseMixture.H
+++ b/applications/solvers/multiphase/interFoam/interMixingFoam/incompressibleThreePhaseMixture/incompressibleThreePhaseMixture.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -22,17 +22,17 @@ License
     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
 
 Class
-    threePhaseMixture
+    incompressibleThreePhaseMixture
 
 Description
 
 SourceFiles
-    threePhaseMixture.C
+    incompressibleThreePhaseMixture.C
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef threePhaseMixture_H
-#define threePhaseMixture_H
+#ifndef incompressibleThreePhaseMixture_H
+#define incompressibleThreePhaseMixture_H
 
 #include "incompressible/transportModel/transportModel.H"
 #include "IOdictionary.H"
@@ -46,10 +46,10 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-                           Class threePhaseMixture Declaration
+                           Class incompressibleThreePhaseMixture Declaration
 \*---------------------------------------------------------------------------*/
 
-class threePhaseMixture
+class incompressibleThreePhaseMixture
 :
     public IOdictionary,
     public transportModel
@@ -89,7 +89,7 @@ public:
     // Constructors
 
         //- Construct from components
-        threePhaseMixture
+        incompressibleThreePhaseMixture
         (
             const volVectorField& U,
             const surfaceScalarField& phi
@@ -97,7 +97,7 @@ public:
 
 
     //- Destructor
-    ~threePhaseMixture()
+    ~incompressibleThreePhaseMixture()
     {}
 
 
diff --git a/applications/solvers/multiphase/interFoam/interMixingFoam/interMixingFoam.C b/applications/solvers/multiphase/interFoam/interMixingFoam/interMixingFoam.C
index edeab9ac703..09cb7f1c7eb 100644
--- a/applications/solvers/multiphase/interFoam/interMixingFoam/interMixingFoam.C
+++ b/applications/solvers/multiphase/interFoam/interMixingFoam/interMixingFoam.C
@@ -33,8 +33,7 @@ Description
 #include "fvCFD.H"
 #include "CMULES.H"
 #include "subCycle.H"
-#include "threePhaseMixture.H"
-#include "threePhaseInterfaceProperties.H"
+#include "immiscibleIncompressibleThreePhaseMixture.H"
 #include "turbulenceModel.H"
 #include "pimpleControl.H"
 #include "fvIOoptionList.H"
@@ -78,13 +77,9 @@ int main(int argc, char *argv[])
         while (pimple.loop())
         {
             #include "alphaControls.H"
-
-            threePhaseProperties.correct();
-
             #include "alphaEqnsSubCycle.H"
-            interface.correct();
 
-            #define twoPhaseProperties threePhaseProperties
+            mixture.correct();
 
             #include "UEqn.H"
 
diff --git a/applications/solvers/multiphase/interFoam/interMixingFoam/threePhaseInterfaceProperties/threePhaseInterfaceProperties.C b/applications/solvers/multiphase/interFoam/interMixingFoam/threePhaseInterfaceProperties/threePhaseInterfaceProperties.C
index f812b472e08..486e442982d 100644
--- a/applications/solvers/multiphase/interFoam/interMixingFoam/threePhaseInterfaceProperties/threePhaseInterfaceProperties.C
+++ b/applications/solvers/multiphase/interFoam/interMixingFoam/threePhaseInterfaceProperties/threePhaseInterfaceProperties.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -37,6 +37,7 @@ Description
 #include "surfaceInterpolate.H"
 #include "fvcDiv.H"
 #include "fvcGrad.H"
+#include "fvcSnGrad.H"
 
 // * * * * * * * * * * * * * * * Static Member Data  * * * * * * * * * * * * //
 
@@ -166,7 +167,7 @@ void Foam::threePhaseInterfaceProperties::calculateK()
 
 Foam::threePhaseInterfaceProperties::threePhaseInterfaceProperties
 (
-    const threePhaseMixture& mixture
+    const incompressibleThreePhaseMixture& mixture
 )
 :
     mixture_(mixture),
@@ -212,4 +213,25 @@ Foam::threePhaseInterfaceProperties::threePhaseInterfaceProperties
 }
 
 
+// * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::surfaceScalarField>
+Foam::threePhaseInterfaceProperties::surfaceTensionForce() const
+{
+    return fvc::interpolate(sigmaK())*fvc::snGrad(mixture_.alpha1());
+}
+
+
+Foam::tmp<Foam::volScalarField>
+Foam::threePhaseInterfaceProperties::nearInterface() const
+{
+    return max
+    (
+        pos(mixture_.alpha1() - 0.01)*pos(0.99 - mixture_.alpha1()),
+        pos(mixture_.alpha2() - 0.01)*pos(0.99 - mixture_.alpha2())
+    );
+}
+
+
+
 // ************************************************************************* //
diff --git a/applications/solvers/multiphase/interFoam/interMixingFoam/threePhaseInterfaceProperties/threePhaseInterfaceProperties.H b/applications/solvers/multiphase/interFoam/interMixingFoam/threePhaseInterfaceProperties/threePhaseInterfaceProperties.H
index 0653ab0a206..266bedb470a 100644
--- a/applications/solvers/multiphase/interFoam/interMixingFoam/threePhaseInterfaceProperties/threePhaseInterfaceProperties.H
+++ b/applications/solvers/multiphase/interFoam/interMixingFoam/threePhaseInterfaceProperties/threePhaseInterfaceProperties.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -37,7 +37,7 @@ SourceFiles
 #ifndef threePhaseInterfaceProperties_H
 #define threePhaseInterfaceProperties_H
 
-#include "threePhaseMixture.H"
+#include "incompressibleThreePhaseMixture.H"
 #include "surfaceFields.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -53,7 +53,7 @@ class threePhaseInterfaceProperties
 {
     // Private data
 
-        const threePhaseMixture& mixture_;
+        const incompressibleThreePhaseMixture& mixture_;
 
         //- Compression coefficient
         scalar cAlpha_;
@@ -98,7 +98,10 @@ public:
     // Constructors
 
         //- Construct from volume fraction field alpha and IOdictionary
-        threePhaseInterfaceProperties(const threePhaseMixture& mixture);
+        threePhaseInterfaceProperties
+        (
+            const incompressibleThreePhaseMixture& mixture
+        );
 
 
     // Member Functions
@@ -138,6 +141,12 @@ public:
             return sigma()*K_;
         }
 
+        tmp<surfaceScalarField> surfaceTensionForce() const;
+
+        //- Indicator of the proximity of the interface
+        //  Field values are 1 near and 0 away for the interface.
+        tmp<volScalarField> nearInterface() const;
+
         void correct()
         {
             calculateK();
diff --git a/applications/solvers/multiphase/interFoam/pEqn.H b/applications/solvers/multiphase/interFoam/pEqn.H
index 227c075fa27..81a0391d6de 100644
--- a/applications/solvers/multiphase/interFoam/pEqn.H
+++ b/applications/solvers/multiphase/interFoam/pEqn.H
@@ -11,13 +11,13 @@
         (fvc::interpolate(HbyA) & mesh.Sf())
       + fvc::interpolate(rho*rAU)*fvc::ddtCorr(U, phi)
     );
-
     adjustPhi(phiHbyA, U, p_rgh);
+    fvOptions.makeRelative(phiHbyA);
 
     surfaceScalarField phig
     (
         (
-            fvc::interpolate(interface.sigmaK())*fvc::snGrad(alpha1)
+            mixture.surfaceTensionForce()
           - ghf*fvc::snGrad(rho)
         )*rAUf*mesh.magSf()
     );
@@ -30,7 +30,7 @@
         p_rgh.boundaryField(),
         (
             phiHbyA.boundaryField()
-          - (mesh.Sf().boundaryField() & U.boundaryField())
+          - fvOptions.relative(mesh.Sf().boundaryField() & U.boundaryField())
         )/(mesh.magSf().boundaryField()*rAUf.boundaryField())
     );
 
diff --git a/applications/solvers/multiphase/interFoam/porousInterFoam/Make/options b/applications/solvers/multiphase/interFoam/porousInterFoam/Make/options
index db2e1736ee2..fffa41da94c 100644
--- a/applications/solvers/multiphase/interFoam/porousInterFoam/Make/options
+++ b/applications/solvers/multiphase/interFoam/porousInterFoam/Make/options
@@ -4,6 +4,7 @@ EXE_INC = \
     -I$(LIB_SRC)/transportModels \
     -I$(LIB_SRC)/transportModels/incompressible/lnInclude \
     -I$(LIB_SRC)/transportModels/interfaceProperties/lnInclude \
+    -I$(LIB_SRC)/transportModels/immiscibleIncompressibleTwoPhaseMixture/lnInclude \
     -I$(LIB_SRC)/turbulenceModels/incompressible/turbulenceModel \
     -I$(LIB_SRC)/finiteVolume/lnInclude \
     -I$(LIB_SRC)/meshTools/lnInclude \
@@ -11,9 +12,7 @@ EXE_INC = \
     -I$(LIB_SRC)/sampling/lnInclude
 
 EXE_LIBS = \
-    -ltwoPhaseMixture \
-    -linterfaceProperties \
-    -ltwoPhaseProperties \
+    -limmiscibleIncompressibleTwoPhaseMixture \
     -lincompressibleTransportModels \
     -lincompressibleTurbulenceModel \
     -lincompressibleRASModels \
diff --git a/applications/solvers/multiphase/interFoam/porousInterFoam/UEqn.H b/applications/solvers/multiphase/interFoam/porousInterFoam/UEqn.H
index f8dcecf6acf..e175dcb92c4 100644
--- a/applications/solvers/multiphase/interFoam/porousInterFoam/UEqn.H
+++ b/applications/solvers/multiphase/interFoam/porousInterFoam/UEqn.H
@@ -1,12 +1,12 @@
     surfaceScalarField muEff
     (
         "muEff",
-        twoPhaseProperties.muf()
+        mixture.muf()
       + fvc::interpolate(rho*turbulence->nut())
     );
 
     // Calculate and cache mu for the porous media
-    volScalarField mu(twoPhaseProperties.mu());
+    volScalarField mu(mixture.mu());
 
     fvVectorMatrix UEqn
     (
@@ -33,7 +33,7 @@
             fvc::reconstruct
             (
                 (
-                    fvc::interpolate(interface.sigmaK())*fvc::snGrad(alpha1)
+                    mixture.surfaceTensionForce()
                   - ghf*fvc::snGrad(rho)
                   - fvc::snGrad(p_rgh)
                 ) * mesh.magSf()
diff --git a/applications/solvers/multiphase/interFoam/porousInterFoam/porousInterFoam.C b/applications/solvers/multiphase/interFoam/porousInterFoam/porousInterFoam.C
index c3018878441..c17847bd3da 100644
--- a/applications/solvers/multiphase/interFoam/porousInterFoam/porousInterFoam.C
+++ b/applications/solvers/multiphase/interFoam/porousInterFoam/porousInterFoam.C
@@ -41,8 +41,7 @@ Description
 #include "fvCFD.H"
 #include "CMULES.H"
 #include "subCycle.H"
-#include "interfaceProperties.H"
-#include "incompressibleTwoPhaseMixture.H"
+#include "immiscibleIncompressibleTwoPhaseMixture.H"
 #include "turbulenceModel.H"
 #include "IOporosityModelList.H"
 #include "pimpleControl.H"
@@ -87,11 +86,9 @@ int main(int argc, char *argv[])
         while (pimple.loop())
         {
             #include "alphaControls.H"
-
-            twoPhaseProperties.correct();
-
             #include "alphaEqnSubCycle.H"
-            interface.correct();
+
+            mixture.correct();
 
             #include "UEqn.H"
 
diff --git a/applications/solvers/multiphase/interPhaseChangeFoam/UEqn.H b/applications/solvers/multiphase/interPhaseChangeFoam/UEqn.H
index 062c5523c9d..1e27597292e 100644
--- a/applications/solvers/multiphase/interPhaseChangeFoam/UEqn.H
+++ b/applications/solvers/multiphase/interPhaseChangeFoam/UEqn.H
@@ -17,7 +17,7 @@
             fvc::reconstruct
             (
                 (
-                    fvc::interpolate(interface.sigmaK())*fvc::snGrad(alpha1)
+                    interface.surfaceTensionForce()
                   - ghf*fvc::snGrad(rho)
                   - fvc::snGrad(p_rgh)
                 ) * mesh.magSf()
diff --git a/applications/solvers/multiphase/interPhaseChangeFoam/alphaEqn.H b/applications/solvers/multiphase/interPhaseChangeFoam/alphaEqn.H
index 1172cf07071..5d915ecc14a 100644
--- a/applications/solvers/multiphase/interPhaseChangeFoam/alphaEqn.H
+++ b/applications/solvers/multiphase/interPhaseChangeFoam/alphaEqn.H
@@ -5,7 +5,7 @@
     surfaceScalarField phir("phir", phic*interface.nHatf());
 
     Pair<tmp<volScalarField> > vDotAlphal =
-        twoPhaseProperties->vDotAlphal();
+        mixture->vDotAlphal();
     const volScalarField& vDotcAlphal = vDotAlphal[0]();
     const volScalarField& vDotvAlphal = vDotAlphal[1]();
     const volScalarField vDotvmcAlphal(vDotvAlphal - vDotcAlphal);
diff --git a/applications/solvers/multiphase/interPhaseChangeFoam/createFields.H b/applications/solvers/multiphase/interPhaseChangeFoam/createFields.H
index 0e45fa495e8..79fc0a1405d 100644
--- a/applications/solvers/multiphase/interPhaseChangeFoam/createFields.H
+++ b/applications/solvers/multiphase/interPhaseChangeFoam/createFields.H
@@ -30,15 +30,15 @@
 
 
     Info<< "Creating phaseChangeTwoPhaseMixture\n" << endl;
-    autoPtr<phaseChangeTwoPhaseMixture> twoPhaseProperties =
+    autoPtr<phaseChangeTwoPhaseMixture> mixture =
         phaseChangeTwoPhaseMixture::New(U, phi);
 
-    volScalarField& alpha1(twoPhaseProperties->alpha1());
-    volScalarField& alpha2(twoPhaseProperties->alpha2());
+    volScalarField& alpha1(mixture->alpha1());
+    volScalarField& alpha2(mixture->alpha2());
 
-    const dimensionedScalar& rho1 = twoPhaseProperties->rho1();
-    const dimensionedScalar& rho2 = twoPhaseProperties->rho2();
-    const dimensionedScalar& pSat = twoPhaseProperties->pSat();
+    const dimensionedScalar& rho1 = mixture->rho1();
+    const dimensionedScalar& rho2 = mixture->rho2();
+    const dimensionedScalar& pSat = mixture->pSat();
 
 
     // Need to store rho for ddt(rho, U)
@@ -58,12 +58,12 @@
 
 
     // Construct interface from alpha1 distribution
-    interfaceProperties interface(alpha1, U, twoPhaseProperties());
+    interfaceProperties interface(alpha1, U, mixture());
 
     // Construct incompressible turbulence model
     autoPtr<incompressible::turbulenceModel> turbulence
     (
-        incompressible::turbulenceModel::New(U, phi, twoPhaseProperties())
+        incompressible::turbulenceModel::New(U, phi, mixture())
     );
 
 
diff --git a/applications/solvers/multiphase/interPhaseChangeFoam/interPhaseChangeDyMFoam/interPhaseChangeDyMFoam.C b/applications/solvers/multiphase/interPhaseChangeFoam/interPhaseChangeDyMFoam/interPhaseChangeDyMFoam.C
index 86b19912cff..e336e4a0c3d 100644
--- a/applications/solvers/multiphase/interPhaseChangeFoam/interPhaseChangeDyMFoam/interPhaseChangeDyMFoam.C
+++ b/applications/solvers/multiphase/interPhaseChangeFoam/interPhaseChangeDyMFoam/interPhaseChangeDyMFoam.C
@@ -154,7 +154,7 @@ int main(int argc, char *argv[])
                 dimensionedScalar("0", dimMass/dimTime, 0)
             );
 
-            twoPhaseProperties->correct();
+            mixture->correct();
 
             #include "alphaEqnSubCycle.H"
             interface.correct();
diff --git a/applications/solvers/multiphase/interPhaseChangeFoam/interPhaseChangeDyMFoam/pEqn.H b/applications/solvers/multiphase/interPhaseChangeFoam/interPhaseChangeDyMFoam/pEqn.H
index 5915b680359..b759081eeae 100644
--- a/applications/solvers/multiphase/interPhaseChangeFoam/interPhaseChangeDyMFoam/pEqn.H
+++ b/applications/solvers/multiphase/interPhaseChangeFoam/interPhaseChangeDyMFoam/pEqn.H
@@ -22,7 +22,7 @@
     surfaceScalarField phig
     (
         (
-            fvc::interpolate(interface.sigmaK())*fvc::snGrad(alpha1)
+            interface.surfaceTensionForce()
           - ghf*fvc::snGrad(rho)
         )*rAUf*mesh.magSf()
     );
@@ -39,7 +39,7 @@
         )/(mesh.magSf().boundaryField()*rAUf.boundaryField())
     );
 
-    Pair<tmp<volScalarField> > vDotP = twoPhaseProperties->vDotP();
+    Pair<tmp<volScalarField> > vDotP = mixture->vDotP();
     const volScalarField& vDotcP = vDotP[0]();
     const volScalarField& vDotvP = vDotP[1]();
 
diff --git a/applications/solvers/multiphase/interPhaseChangeFoam/interPhaseChangeFoam.C b/applications/solvers/multiphase/interPhaseChangeFoam/interPhaseChangeFoam.C
index bea114da804..3296d0f0fb1 100644
--- a/applications/solvers/multiphase/interPhaseChangeFoam/interPhaseChangeFoam.C
+++ b/applications/solvers/multiphase/interPhaseChangeFoam/interPhaseChangeFoam.C
@@ -100,7 +100,7 @@ int main(int argc, char *argv[])
                 dimensionedScalar("0", dimMass/dimTime, 0)
             );
 
-            twoPhaseProperties->correct();
+            mixture->correct();
 
             #include "alphaEqnSubCycle.H"
             interface.correct();
diff --git a/applications/solvers/multiphase/interPhaseChangeFoam/pEqn.H b/applications/solvers/multiphase/interPhaseChangeFoam/pEqn.H
index 6714fce91c1..4a174eb980f 100644
--- a/applications/solvers/multiphase/interPhaseChangeFoam/pEqn.H
+++ b/applications/solvers/multiphase/interPhaseChangeFoam/pEqn.H
@@ -16,7 +16,7 @@
     surfaceScalarField phig
     (
         (
-            fvc::interpolate(interface.sigmaK())*fvc::snGrad(alpha1)
+            interface.surfaceTensionForce()
           - ghf*fvc::snGrad(rho)
         )*rAUf*mesh.magSf()
     );
@@ -33,7 +33,7 @@
         )/(mesh.magSf().boundaryField()*rAUf.boundaryField())
     );
 
-    Pair<tmp<volScalarField> > vDotP = twoPhaseProperties->vDotP();
+    Pair<tmp<volScalarField> > vDotP = mixture->vDotP();
     const volScalarField& vDotcP = vDotP[0]();
     const volScalarField& vDotvP = vDotP[1]();
 
diff --git a/applications/solvers/multiphase/multiphaseInterFoam/Allwclean b/applications/solvers/multiphase/multiphaseInterFoam/Allwclean
index 6b5dc2e5c65..7edca3f5d1c 100755
--- a/applications/solvers/multiphase/multiphaseInterFoam/Allwclean
+++ b/applications/solvers/multiphase/multiphaseInterFoam/Allwclean
@@ -4,5 +4,6 @@ set -x
 
 wclean libso multiphaseMixture
 wclean
+wclean multiphaseInterDyMFoam
 
 # ----------------------------------------------------------------- end-of-file
diff --git a/applications/solvers/multiphase/multiphaseInterFoam/Allwmake b/applications/solvers/multiphase/multiphaseInterFoam/Allwmake
index 6ceded9c1a9..2a03ac9b6cb 100755
--- a/applications/solvers/multiphase/multiphaseInterFoam/Allwmake
+++ b/applications/solvers/multiphase/multiphaseInterFoam/Allwmake
@@ -4,5 +4,6 @@ set -x
 
 wmake libso multiphaseMixture
 wmake
+wmake multiphaseInterDyMFoam
 
 # ----------------------------------------------------------------- end-of-file
diff --git a/applications/solvers/multiphase/multiphaseInterFoam/UEqn.H b/applications/solvers/multiphase/multiphaseInterFoam/UEqn.H
deleted file mode 100644
index 5dd13a4ecf5..00000000000
--- a/applications/solvers/multiphase/multiphaseInterFoam/UEqn.H
+++ /dev/null
@@ -1,31 +0,0 @@
-    fvVectorMatrix UEqn
-    (
-        fvm::ddt(rho, U)
-      + fvm::div(mixture.rhoPhi(), U)
-      + turbulence->divDevRhoReff(rho, U)
-     ==
-        fvOptions(rho, U)
-    );
-
-    UEqn.relax();
-
-    fvOptions.constrain(UEqn);
-
-    if (pimple.momentumPredictor())
-    {
-        solve
-        (
-            UEqn
-         ==
-            fvc::reconstruct
-            (
-                (
-                    mixture.surfaceTensionForce()
-                  - ghf*fvc::snGrad(rho)
-                  - fvc::snGrad(p_rgh)
-                ) * mesh.magSf()
-            )
-        );
-
-        fvOptions.correct(U);
-    }
diff --git a/applications/solvers/multiphase/multiphaseInterFoam/createFields.H b/applications/solvers/multiphase/multiphaseInterFoam/createFields.H
index c19f9ea9e3e..a3550dbdb7a 100644
--- a/applications/solvers/multiphase/multiphaseInterFoam/createFields.H
+++ b/applications/solvers/multiphase/multiphaseInterFoam/createFields.H
@@ -44,6 +44,7 @@
     );
     rho.oldTime();
 
+    const surfaceScalarField& rhoPhi(mixture.rhoPhi());
 
     // Construct incompressible turbulence model
     autoPtr<incompressible::turbulenceModel> turbulence
diff --git a/applications/solvers/multiphase/multiphaseInterFoam/multiphaseInterDyMFoam/Make/files b/applications/solvers/multiphase/multiphaseInterFoam/multiphaseInterDyMFoam/Make/files
new file mode 100644
index 00000000000..3fb8d0245ff
--- /dev/null
+++ b/applications/solvers/multiphase/multiphaseInterFoam/multiphaseInterDyMFoam/Make/files
@@ -0,0 +1,3 @@
+multiphaseInterDyMFoam.C
+
+EXE = $(FOAM_APPBIN)/multiphaseInterDyMFoam
diff --git a/applications/solvers/multiphase/interFoam/MRFInterFoam/Make/options b/applications/solvers/multiphase/multiphaseInterFoam/multiphaseInterDyMFoam/Make/options
similarity index 70%
rename from applications/solvers/multiphase/interFoam/MRFInterFoam/Make/options
rename to applications/solvers/multiphase/multiphaseInterFoam/multiphaseInterDyMFoam/Make/options
index db2e1736ee2..83653482210 100644
--- a/applications/solvers/multiphase/interFoam/MRFInterFoam/Make/options
+++ b/applications/solvers/multiphase/multiphaseInterFoam/multiphaseInterDyMFoam/Make/options
@@ -1,24 +1,30 @@
 EXE_INC = \
     -I.. \
-    -I$(LIB_SRC)/transportModels/twoPhaseMixture/lnInclude \
+    -I../../interFoam/interDyMFoam \
+    -I../../interFoam \
+    -I../multiphaseMixture/lnInclude \
     -I$(LIB_SRC)/transportModels \
     -I$(LIB_SRC)/transportModels/incompressible/lnInclude \
     -I$(LIB_SRC)/transportModels/interfaceProperties/lnInclude \
     -I$(LIB_SRC)/turbulenceModels/incompressible/turbulenceModel \
     -I$(LIB_SRC)/finiteVolume/lnInclude \
-    -I$(LIB_SRC)/meshTools/lnInclude \
+    -I$(LIB_SRC)/dynamicMesh/lnInclude \
+    -I$(LIB_SRC)/dynamicFvMesh/lnInclude \
     -I$(LIB_SRC)/fvOptions/lnInclude \
+    -I$(LIB_SRC)/meshTools/lnInclude \
     -I$(LIB_SRC)/sampling/lnInclude
 
 EXE_LIBS = \
-    -ltwoPhaseMixture \
+    -lmultiphaseInterFoam \
     -linterfaceProperties \
-    -ltwoPhaseProperties \
     -lincompressibleTransportModels \
     -lincompressibleTurbulenceModel \
     -lincompressibleRASModels \
     -lincompressibleLESModels \
     -lfiniteVolume \
-    -lmeshTools \
+    -ldynamicMesh \
+    -ldynamicFvMesh \
+    -ltopoChangerFvMesh \
     -lfvOptions \
+    -lmeshTools \
     -lsampling
diff --git a/applications/solvers/multiphase/interFoam/MRFInterFoam/MRFInterFoam.C b/applications/solvers/multiphase/multiphaseInterFoam/multiphaseInterDyMFoam/multiphaseInterDyMFoam.C
similarity index 62%
rename from applications/solvers/multiphase/interFoam/MRFInterFoam/MRFInterFoam.C
rename to applications/solvers/multiphase/multiphaseInterFoam/multiphaseInterDyMFoam/multiphaseInterDyMFoam.C
index f6386bde485..acfa7eb3eea 100644
--- a/applications/solvers/multiphase/interFoam/MRFInterFoam/MRFInterFoam.C
+++ b/applications/solvers/multiphase/multiphaseInterFoam/multiphaseInterDyMFoam/multiphaseInterDyMFoam.C
@@ -22,27 +22,20 @@ License
     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
 
 Application
-    MRFInterFoam
+    multiphaseInterFoam
 
 Description
-    Solver for 2 incompressible, isothermal immiscible fluids using a VOF
-    (volume of fluid) phase-fraction based interface capturing approach.
-    The momentum and other fluid properties are of the "mixture" and a single
-    momentum equation is solved.
+    Solver for n incompressible fluids which captures the interfaces and
+    includes surface-tension and contact-angle effects for each phase.
 
     Turbulence modelling is generic, i.e. laminar, RAS or LES may be selected.
 
-    For a two-fluid approach see twoPhaseEulerFoam.
-
 \*---------------------------------------------------------------------------*/
 
 #include "fvCFD.H"
-#include "CMULES.H"
-#include "subCycle.H"
-#include "interfaceProperties.H"
-#include "incompressibleTwoPhaseMixture.H"
+#include "dynamicFvMesh.H"
+#include "multiphaseMixture.H"
 #include "turbulenceModel.H"
-#include "IOMRFZoneList.H"
 #include "pimpleControl.H"
 #include "fvIOoptionList.H"
 #include "fixedFluxPressureFvPatchScalarField.H"
@@ -53,16 +46,31 @@ int main(int argc, char *argv[])
 {
     #include "setRootCase.H"
     #include "createTime.H"
-    #include "createMesh.H"
+    #include "createDynamicFvMesh.H"
     #include "initContinuityErrs.H"
-    #include "createFields.H"
-    #include "createMRFZones.H"
-    #include "readTimeControls.H"
 
     pimpleControl pimple(mesh);
 
+    #include "createFields.H"
+    #include "readTimeControls.H"
     #include "createPrghCorrTypes.H"
+
+    volScalarField rAU
+    (
+        IOobject
+        (
+            "rAU",
+            runTime.timeName(),
+            mesh,
+            IOobject::READ_IF_PRESENT,
+            IOobject::AUTO_WRITE
+        ),
+        mesh,
+        dimensionedScalar("rAUf", dimTime/rho.dimensions(), 1.0)
+    );
+
     #include "correctPhi.H"
+    #include "createUf.H"
     #include "CourantNo.H"
     #include "setInitialDeltaT.H"
 
@@ -72,9 +80,10 @@ int main(int argc, char *argv[])
 
     while (runTime.run())
     {
-        #include "readTimeControls.H"
+        #include "readControls.H"
         #include "CourantNo.H"
         #include "alphaCourantNo.H"
+
         #include "setDeltaT.H"
 
         runTime++;
@@ -84,13 +93,43 @@ int main(int argc, char *argv[])
         // --- Pressure-velocity PIMPLE corrector loop
         while (pimple.loop())
         {
-            #include "alphaControls.H"
+            if (pimple.firstIter() || moveMeshOuterCorrectors)
+            {
+                scalar timeBeforeMeshUpdate = runTime.elapsedCpuTime();
 
-            twoPhaseProperties.correct();
+                mesh.update();
+
+                if (mesh.changing())
+                {
+                    Info<< "Execution time for mesh.update() = "
+                        << runTime.elapsedCpuTime() - timeBeforeMeshUpdate
+                        << " s" << endl;
+
+                    gh = g & mesh.C();
+                    ghf = g & mesh.Cf();
+                }
+
+                if (mesh.changing() && correctPhi)
+                {
+                    // Calculate absolute flux from the mapped surface velocity
+                    phi = mesh.Sf() & Uf;
+
+                    #include "correctPhi.H"
+
+                    // Make the flux relative to the mesh motion
+                    fvc::makeRelative(phi, U);
+
+                    mixture.correct();
+                }
+
+                if (mesh.changing() && checkMeshCourantNo)
+                {
+                    #include "meshCourantNo.H"
+                }
+            }
 
-            #include "alphaEqnSubCycle.H"
-            interface.correct();
-            #include "zonePhaseVolumes.H"
+            mixture.solve();
+            rho = mixture.rho();
 
             #include "UEqn.H"
 
diff --git a/applications/solvers/multiphase/multiphaseInterFoam/multiphaseMixture/multiphaseMixture.C b/applications/solvers/multiphase/multiphaseInterFoam/multiphaseMixture/multiphaseMixture.C
index b7ba2bc9c92..9edc7a78b30 100644
--- a/applications/solvers/multiphase/multiphaseInterFoam/multiphaseMixture/multiphaseMixture.C
+++ b/applications/solvers/multiphase/multiphaseInterFoam/multiphaseMixture/multiphaseMixture.C
@@ -298,10 +298,7 @@ Foam::multiphaseMixture::surfaceTensionForce() const
 
 void Foam::multiphaseMixture::solve()
 {
-    forAllIter(PtrDictionary<phase>, phases_, iter)
-    {
-        iter().correct();
-    }
+    correct();
 
     const Time& runTime = mesh_.time();
 
@@ -347,7 +344,12 @@ void Foam::multiphaseMixture::solve()
 
 
 void Foam::multiphaseMixture::correct()
-{}
+{
+    forAllIter(PtrDictionary<phase>, phases_, iter)
+    {
+        iter().correct();
+    }
+}
 
 
 Foam::tmp<Foam::surfaceVectorField> Foam::multiphaseMixture::nHatfv
diff --git a/applications/solvers/multiphase/multiphaseInterFoam/pEqn.H b/applications/solvers/multiphase/multiphaseInterFoam/pEqn.H
deleted file mode 100644
index 8ce663528d1..00000000000
--- a/applications/solvers/multiphase/multiphaseInterFoam/pEqn.H
+++ /dev/null
@@ -1,72 +0,0 @@
-{
-    volScalarField rAU("rAU", 1.0/UEqn.A());
-    surfaceScalarField rAUf("rAUf", fvc::interpolate(rAU));
-
-    volVectorField HbyA("HbyA", U);
-    HbyA = rAU*UEqn.H();
-
-    surfaceScalarField phiHbyA
-    (
-        "phiHbyA",
-        (fvc::interpolate(HbyA) & mesh.Sf())
-      + fvc::interpolate(rho*rAU)*fvc::ddtCorr(U, phi)
-    );
-    adjustPhi(phiHbyA, U, p_rgh);
-    fvOptions.makeRelative(phiHbyA);
-
-    surfaceScalarField phig
-    (
-        (
-            mixture.surfaceTensionForce()
-          - ghf*fvc::snGrad(rho)
-        )*rAUf*mesh.magSf()
-    );
-
-    phiHbyA += phig;
-
-    // Update the fixedFluxPressure BCs to ensure flux consistency
-    setSnGrad<fixedFluxPressureFvPatchScalarField>
-    (
-        p_rgh.boundaryField(),
-        (
-            phiHbyA.boundaryField()
-          - fvOptions.relative(mesh.Sf().boundaryField() & U.boundaryField())
-        )/(mesh.magSf().boundaryField()*rAUf.boundaryField())
-    );
-
-    while (pimple.correctNonOrthogonal())
-    {
-        fvScalarMatrix p_rghEqn
-        (
-            fvm::laplacian(rAUf, p_rgh) == fvc::div(phiHbyA)
-        );
-
-        p_rghEqn.setReference(pRefCell, getRefCellValue(p_rgh, pRefCell));
-
-        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);
-        }
-    }
-
-    #include "continuityErrs.H"
-
-    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/multiphaseInterFoam/alphaCourantNo.H b/applications/solvers/multiphase/twoLiquidMixingFoam/alphaCourantNo.H
similarity index 90%
rename from applications/solvers/multiphase/multiphaseInterFoam/alphaCourantNo.H
rename to applications/solvers/multiphase/twoLiquidMixingFoam/alphaCourantNo.H
index 98444a065f6..6ea204b00b1 100644
--- a/applications/solvers/multiphase/multiphaseInterFoam/alphaCourantNo.H
+++ b/applications/solvers/multiphase/twoLiquidMixingFoam/alphaCourantNo.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -22,7 +22,7 @@ License
     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
 
 Global
-    CourantNo
+    alphaCourantNo
 
 Description
     Calculates and outputs the mean and maximum Courant Numbers.
@@ -41,8 +41,8 @@ if (mesh.nInternalFaces())
 {
     scalarField sumPhi
     (
-        mixture.nearInterface()().internalField()
-      * fvc::surfaceSum(mag(phi))().internalField()
+        pos(alpha1 - 0.01)*pos(0.99 - alpha1)
+       *fvc::surfaceSum(mag(phi))().internalField()
     );
 
     alphaCoNum = 0.5*gMax(sumPhi/mesh.V().field())*runTime.deltaTValue();
diff --git a/applications/solvers/multiphase/twoLiquidMixingFoam/createFields.H b/applications/solvers/multiphase/twoLiquidMixingFoam/createFields.H
index 31e1e61d5d3..dc6325d0af6 100644
--- a/applications/solvers/multiphase/twoLiquidMixingFoam/createFields.H
+++ b/applications/solvers/multiphase/twoLiquidMixingFoam/createFields.H
@@ -29,18 +29,18 @@
     #include "createPhi.H"
 
     Info<< "Reading transportProperties\n" << endl;
-    incompressibleTwoPhaseMixture twoPhaseProperties(U, phi);
+    incompressibleTwoPhaseMixture mixture(U, phi);
 
-    volScalarField& alpha1(twoPhaseProperties.alpha1());
-    volScalarField& alpha2(twoPhaseProperties.alpha2());
+    volScalarField& alpha1(mixture.alpha1());
+    volScalarField& alpha2(mixture.alpha2());
 
-    const dimensionedScalar& rho1 = twoPhaseProperties.rho1();
-    const dimensionedScalar& rho2 = twoPhaseProperties.rho2();
+    const dimensionedScalar& rho1 = mixture.rho1();
+    const dimensionedScalar& rho2 = mixture.rho2();
 
-    dimensionedScalar Dab(twoPhaseProperties.lookup("Dab"));
+    dimensionedScalar Dab(mixture.lookup("Dab"));
 
     // Read the reciprocal of the turbulent Schmidt number
-    dimensionedScalar alphatab(twoPhaseProperties.lookup("alphatab"));
+    dimensionedScalar alphatab(mixture.lookup("alphatab"));
 
     // Need to store rho for ddt(rho, U)
     volScalarField rho("rho", alpha1*rho1 + alpha2*rho2);
@@ -66,7 +66,7 @@
     // Construct incompressible turbulence model
     autoPtr<incompressible::turbulenceModel> turbulence
     (
-        incompressible::turbulenceModel::New(U, phi, twoPhaseProperties)
+        incompressible::turbulenceModel::New(U, phi, mixture)
     );
 
     Info<< "Calculating field g.h\n" << endl;
diff --git a/applications/solvers/multiphase/twoLiquidMixingFoam/twoLiquidMixingFoam.C b/applications/solvers/multiphase/twoLiquidMixingFoam/twoLiquidMixingFoam.C
index 247c12a8b50..7593aeab113 100644
--- a/applications/solvers/multiphase/twoLiquidMixingFoam/twoLiquidMixingFoam.C
+++ b/applications/solvers/multiphase/twoLiquidMixingFoam/twoLiquidMixingFoam.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -70,7 +70,7 @@ int main(int argc, char *argv[])
 
         Info<< "Time = " << runTime.timeName() << nl << endl;
 
-        twoPhaseProperties.correct();
+        mixture.correct();
 
         #include "alphaEqnSubCycle.H"
         #include "alphaDiffusionEqn.H"
diff --git a/src/transportModels/Allwmake b/src/transportModels/Allwmake
index 120dfae74a9..07272706a69 100755
--- a/src/transportModels/Allwmake
+++ b/src/transportModels/Allwmake
@@ -7,5 +7,7 @@ wmake $makeType twoPhaseMixture
 wmake $makeType interfaceProperties
 wmake $makeType twoPhaseProperties
 wmake $makeType incompressible
+wmake $makeType compressible
+wmake $makeType immiscibleIncompressibleTwoPhaseMixture
 
 # ----------------------------------------------------------------- end-of-file
diff --git a/src/transportModels/compressible/Make/files b/src/transportModels/compressible/Make/files
new file mode 100644
index 00000000000..136b8b7a939
--- /dev/null
+++ b/src/transportModels/compressible/Make/files
@@ -0,0 +1,3 @@
+compressibleTransportModel/compressibleTransportModel.C
+
+LIB = $(FOAM_LIBBIN)/libcompressibleTransportModels
diff --git a/src/transportModels/compressible/Make/options b/src/transportModels/compressible/Make/options
new file mode 100644
index 00000000000..71b7873964d
--- /dev/null
+++ b/src/transportModels/compressible/Make/options
@@ -0,0 +1,5 @@
+EXE_INC = \
+    -I$(LIB_SRC)/finiteVolume/lnInclude
+
+LIB_LIBS = \
+    -lfiniteVolume
diff --git a/applications/solvers/multiphase/interFoam/interMixingFoam/alphaCourantNo.H b/src/transportModels/compressible/compressibleTransportModel/compressibleTransportModel.C
similarity index 59%
rename from applications/solvers/multiphase/interFoam/interMixingFoam/alphaCourantNo.H
rename to src/transportModels/compressible/compressibleTransportModel/compressibleTransportModel.C
index 06e1da1ae49..f59261cc0cb 100644
--- a/applications/solvers/multiphase/interFoam/interMixingFoam/alphaCourantNo.H
+++ b/src/transportModels/compressible/compressibleTransportModel/compressibleTransportModel.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2014 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -21,40 +21,29 @@ License
     You should have received a copy of the GNU General Public License
     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
 
-Global
-    CourantNo
-
-Description
-    Calculates and outputs the mean and maximum Courant Numbers.
-
 \*---------------------------------------------------------------------------*/
 
-scalar maxAlphaCo
-(
-    readScalar(runTime.controlDict().lookup("maxAlphaCo"))
-);
+#include "compressibleTransportModel.H"
 
-scalar alphaCoNum = 0.0;
-scalar meanAlphaCoNum = 0.0;
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
-if (mesh.nInternalFaces())
+namespace Foam
 {
-    scalarField sumPhi
-    (
-        max
-        (
-            pos(alpha1 - 0.01)*pos(0.99 - alpha1),
-            pos(alpha2 - 0.01)*pos(0.99 - alpha2)
-        )*fvc::surfaceSum(mag(phi))().internalField()
-    );
-
-    alphaCoNum = 0.5*gMax(sumPhi/mesh.V().field())*runTime.deltaTValue();
-
-    meanAlphaCoNum =
-        0.5*(gSum(sumPhi)/gSum(mesh.V().field()))*runTime.deltaTValue();
+    defineTypeNameAndDebug(compressibleTransportModel, 0);
 }
 
-Info<< "Interface Courant Number mean: " << meanAlphaCoNum
-    << " max: " << alphaCoNum << endl;
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::compressibleTransportModel::compressibleTransportModel
+()
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructors * * * * * * * * * * * * * * * //
+
+Foam::compressibleTransportModel::~compressibleTransportModel()
+{}
+
 
 // ************************************************************************* //
diff --git a/src/transportModels/compressible/compressibleTransportModel/compressibleTransportModel.H b/src/transportModels/compressible/compressibleTransportModel/compressibleTransportModel.H
new file mode 100644
index 00000000000..6b89ac6978c
--- /dev/null
+++ b/src/transportModels/compressible/compressibleTransportModel/compressibleTransportModel.H
@@ -0,0 +1,104 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more 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::compressibleTransportModel
+
+Description
+    Base-class for all transport models used by the compressible turbulence
+    models.
+
+SourceFiles
+    compressibleTransportModel.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef compressibleTransportModel_H
+#define compressibleTransportModel_H
+
+#include "primitiveFieldsFwd.H"
+#include "volFieldsFwd.H"
+#include "surfaceFieldsFwd.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+                Class compressibleTransportModel Declaration
+\*---------------------------------------------------------------------------*/
+
+class compressibleTransportModel
+{
+    // Private Member Functions
+
+        //- Disallow copy construct
+        compressibleTransportModel(const compressibleTransportModel&);
+
+        //- Disallow default bitwise assignment
+        void operator=(const compressibleTransportModel&);
+
+
+public:
+
+    //- Runtime type information
+    TypeName("compressibleTransportModel");
+
+
+    // Constructors
+
+        //- Construct from components
+        compressibleTransportModel
+        ();
+
+
+    //- Destructor
+    virtual ~compressibleTransportModel();
+
+
+    // Member Functions
+
+        //- Return the dynamic laminar viscosity
+        virtual tmp<volScalarField> mu() const = 0;
+
+        //- Return the dynamic laminar viscosity for patch
+        virtual tmp<scalarField> mu(const label patchi) const = 0;
+
+        //- Return the laminar viscosity
+        virtual tmp<volScalarField> nu() const = 0;
+
+        //- Return the laminar viscosity for patch
+        virtual tmp<scalarField> nu(const label patchi) const = 0;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/transportModels/immiscibleIncompressibleTwoPhaseMixture/Make/files b/src/transportModels/immiscibleIncompressibleTwoPhaseMixture/Make/files
new file mode 100644
index 00000000000..1ad9d911170
--- /dev/null
+++ b/src/transportModels/immiscibleIncompressibleTwoPhaseMixture/Make/files
@@ -0,0 +1,3 @@
+immiscibleIncompressibleTwoPhaseMixture.C
+
+LIB = $(FOAM_LIBBIN)/libimmiscibleIncompressibleTwoPhaseMixture
diff --git a/src/transportModels/immiscibleIncompressibleTwoPhaseMixture/Make/options b/src/transportModels/immiscibleIncompressibleTwoPhaseMixture/Make/options
new file mode 100644
index 00000000000..4ae2fbf9664
--- /dev/null
+++ b/src/transportModels/immiscibleIncompressibleTwoPhaseMixture/Make/options
@@ -0,0 +1,13 @@
+EXE_INC = \
+    -I.. \
+    -I../incompressible/lnInclude \
+    -I../interfaceProperties/lnInclude \
+    -I../twoPhaseMixture/lnInclude \
+    -I$(LIB_SRC)/finiteVolume/lnInclude
+
+LIB_LIBS = \
+    -ltwoPhaseMixture \
+    -lincompressibleTransportModels \
+    -linterfaceProperties \
+    -ltwoPhaseProperties \
+    -lfiniteVolume
diff --git a/src/transportModels/immiscibleIncompressibleTwoPhaseMixture/immiscibleIncompressibleTwoPhaseMixture.C b/src/transportModels/immiscibleIncompressibleTwoPhaseMixture/immiscibleIncompressibleTwoPhaseMixture.C
new file mode 100644
index 00000000000..532a9af34fb
--- /dev/null
+++ b/src/transportModels/immiscibleIncompressibleTwoPhaseMixture/immiscibleIncompressibleTwoPhaseMixture.C
@@ -0,0 +1,43 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more 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 "immiscibleIncompressibleTwoPhaseMixture.H"
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::immiscibleIncompressibleTwoPhaseMixture::
+immiscibleIncompressibleTwoPhaseMixture
+(
+    const volVectorField& U,
+    const surfaceScalarField& phi
+)
+:
+    incompressibleTwoPhaseMixture(U, phi),
+    interfaceProperties(alpha1(), U, *this)
+{}
+
+
+// ************************************************************************* //
diff --git a/src/transportModels/immiscibleIncompressibleTwoPhaseMixture/immiscibleIncompressibleTwoPhaseMixture.H b/src/transportModels/immiscibleIncompressibleTwoPhaseMixture/immiscibleIncompressibleTwoPhaseMixture.H
new file mode 100644
index 00000000000..84140229f52
--- /dev/null
+++ b/src/transportModels/immiscibleIncompressibleTwoPhaseMixture/immiscibleIncompressibleTwoPhaseMixture.H
@@ -0,0 +1,92 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2014 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more 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::immiscibleIncompressibleTwoPhaseMixture
+
+Description
+    An immiscible incompressible two-phase mixture transport model
+
+SourceFiles
+    immiscibleIncompressibleTwoPhaseMixture.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef immiscibleIncompressibleTwoPhaseMixture_H
+#define immiscibleIncompressibleTwoPhaseMixture_H
+
+#include "incompressibleTwoPhaseMixture.H"
+#include "interfaceProperties.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+                      Class immiscibleIncompressibleTwoPhaseMixture Declaration
+\*---------------------------------------------------------------------------*/
+
+class immiscibleIncompressibleTwoPhaseMixture
+:
+    public incompressibleTwoPhaseMixture,
+    public interfaceProperties
+{
+
+public:
+
+    // Constructors
+
+        //- Construct from components
+        immiscibleIncompressibleTwoPhaseMixture
+        (
+            const volVectorField& U,
+            const surfaceScalarField& phi
+        );
+
+
+    //- Destructor
+    virtual ~immiscibleIncompressibleTwoPhaseMixture()
+    {}
+
+
+    // Member Functions
+
+        //- Correct the transport and interface properties
+        virtual void correct()
+        {
+            incompressibleTwoPhaseMixture::correct();
+            interfaceProperties::correct();
+        }
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/transportModels/interfaceProperties/interfaceProperties.C b/src/transportModels/interfaceProperties/interfaceProperties.C
index 9387769caee..1750a59df51 100644
--- a/src/transportModels/interfaceProperties/interfaceProperties.C
+++ b/src/transportModels/interfaceProperties/interfaceProperties.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -206,4 +206,20 @@ Foam::interfaceProperties::interfaceProperties
 }
 
 
+// * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::surfaceScalarField>
+Foam::interfaceProperties::surfaceTensionForce() const
+{
+    return fvc::interpolate(sigmaK())*fvc::snGrad(alpha1_);
+}
+
+
+Foam::tmp<Foam::volScalarField>
+Foam::interfaceProperties::nearInterface() const
+{
+    return pos(alpha1_ - 0.01)*pos(0.99 - alpha1_);
+}
+
+
 // ************************************************************************* //
diff --git a/src/transportModels/interfaceProperties/interfaceProperties.H b/src/transportModels/interfaceProperties/interfaceProperties.H
index fd296db689f..b14f118ac51 100644
--- a/src/transportModels/interfaceProperties/interfaceProperties.H
+++ b/src/transportModels/interfaceProperties/interfaceProperties.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -142,6 +142,12 @@ public:
             return sigma_*K_;
         }
 
+        tmp<surfaceScalarField> surfaceTensionForce() const;
+
+        //- Indicator of the proximity of the interface
+        //  Field values are 1 near and 0 away for the interface.
+        tmp<volScalarField> nearInterface() const;
+
         void correct()
         {
             calculateK();
diff --git a/tutorials/multiphase/MRFInterFoam/mixerVessel2D/0/alpha.water b/tutorials/multiphase/MRFInterFoam/mixerVessel2D/0/alpha.water
deleted file mode 100644
index 10bf5279e5d..00000000000
--- a/tutorials/multiphase/MRFInterFoam/mixerVessel2D/0/alpha.water
+++ /dev/null
@@ -1,3119 +0,0 @@
-/*--------------------------------*- C++ -*----------------------------------*\
-| =========                 |                                                 |
-| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
-|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
-|    \\/     M anipulation  |                                                 |
-\*---------------------------------------------------------------------------*/
-FoamFile
-{
-    version     2.0;
-    format      ascii;
-    class       volScalarField;
-    location    "0";
-    object      alpha.water;
-}
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-dimensions      [0 0 0 0 0 0 0];
-
-internalField   nonuniform List<scalar>
-3072
-(
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-)
-;
-
-boundaryField
-{
-    rotor
-    {
-        type            zeroGradient;
-    }
-    stator
-    {
-        type            zeroGradient;
-    }
-    front
-    {
-        type            empty;
-    }
-    back
-    {
-        type            empty;
-    }
-}
-
-
-// ************************************************************************* //
diff --git a/tutorials/multiphase/interFoam/laminar/Allclean b/tutorials/multiphase/interFoam/laminar/Allclean
index d5d1e50d10f..df028ca46d6 100755
--- a/tutorials/multiphase/interFoam/laminar/Allclean
+++ b/tutorials/multiphase/interFoam/laminar/Allclean
@@ -4,7 +4,7 @@ cd ${0%/*} || exit 1    # run from this directory
 # Source tutorial clean functions
 . $WM_PROJECT_DIR/bin/tools/CleanFunctions
 
-keepCases="damBreak capillaryRise"
+keepCases="damBreak capillaryRise mixerVessel2D"
 loseCases="damBreakFine"
 
 for case in $keepCases
diff --git a/tutorials/multiphase/interFoam/laminar/Allrun b/tutorials/multiphase/interFoam/laminar/Allrun
index c0e6661c4b4..909399dc9f4 100755
--- a/tutorials/multiphase/interFoam/laminar/Allrun
+++ b/tutorials/multiphase/interFoam/laminar/Allrun
@@ -52,13 +52,10 @@ cloneCase damBreak damBreakFine
 )
 
 # Do capillaryRise
-(
-    cd capillaryRise || exit
+(cd capillaryRise && foamRunTutorials)
+
+# Do mixerVessel2D
+(cd mixerVessel2D && foamRunTutorials)
 
-    runApplication blockMesh
-    cp 0/alpha.water.org 0/alpha.water
-    runApplication setFields
-    runApplication `getApplication`
-)
 
 # ----------------------------------------------------------------- end-of-file
diff --git a/tutorials/multiphase/interFoam/laminar/capillaryRise/Allrun b/tutorials/multiphase/interFoam/laminar/capillaryRise/Allrun
new file mode 100755
index 00000000000..664a02ae5e4
--- /dev/null
+++ b/tutorials/multiphase/interFoam/laminar/capillaryRise/Allrun
@@ -0,0 +1,14 @@
+#!/bin/sh
+cd ${0%/*} || exit 1    # run from this directory
+
+# Source tutorial run functions
+. $WM_PROJECT_DIR/bin/tools/RunFunctions
+
+application=`getApplication`
+
+runApplication blockMesh
+cp 0/alpha.water.org 0/alpha.water
+runApplication setFields
+runApplication $application
+
+# ----------------------------------------------------------------- end-of-file
diff --git a/tutorials/multiphase/interFoam/laminar/capillaryRise/constant/polyMesh/boundary b/tutorials/multiphase/interFoam/laminar/capillaryRise/constant/polyMesh/boundary
index 837f47df2a9..a0a9db56d9c 100644
--- a/tutorials/multiphase/interFoam/laminar/capillaryRise/constant/polyMesh/boundary
+++ b/tutorials/multiphase/interFoam/laminar/capillaryRise/constant/polyMesh/boundary
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
@@ -32,6 +32,7 @@ FoamFile
     walls
     {
         type            wall;
+        inGroups        1(wall);
         nFaces          800;
         startFace       15620;
     }
diff --git a/tutorials/multiphase/MRFInterFoam/mixerVessel2D/0/U b/tutorials/multiphase/interFoam/laminar/mixerVessel2D/0/U
similarity index 94%
rename from tutorials/multiphase/MRFInterFoam/mixerVessel2D/0/U
rename to tutorials/multiphase/interFoam/laminar/mixerVessel2D/0/U
index b2024d5b773..b13f9a2d8cb 100644
--- a/tutorials/multiphase/MRFInterFoam/mixerVessel2D/0/U
+++ b/tutorials/multiphase/interFoam/laminar/mixerVessel2D/0/U
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/multiphase/MRFInterFoam/mixerVessel2D/0/alpha.water.org b/tutorials/multiphase/interFoam/laminar/mixerVessel2D/0/alpha.water.org
similarity index 94%
rename from tutorials/multiphase/MRFInterFoam/mixerVessel2D/0/alpha.water.org
rename to tutorials/multiphase/interFoam/laminar/mixerVessel2D/0/alpha.water.org
index 613e7cf1e90..cfa5d44c55d 100644
--- a/tutorials/multiphase/MRFInterFoam/mixerVessel2D/0/alpha.water.org
+++ b/tutorials/multiphase/interFoam/laminar/mixerVessel2D/0/alpha.water.org
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/multiphase/MRFInterFoam/mixerVessel2D/0/p_rgh b/tutorials/multiphase/interFoam/laminar/mixerVessel2D/0/p_rgh
similarity index 94%
rename from tutorials/multiphase/MRFInterFoam/mixerVessel2D/0/p_rgh
rename to tutorials/multiphase/interFoam/laminar/mixerVessel2D/0/p_rgh
index 3ea5cd88c81..7b7a6e046b2 100644
--- a/tutorials/multiphase/MRFInterFoam/mixerVessel2D/0/p_rgh
+++ b/tutorials/multiphase/interFoam/laminar/mixerVessel2D/0/p_rgh
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/multiphase/MRFInterFoam/mixerVessel2D/Allrun b/tutorials/multiphase/interFoam/laminar/mixerVessel2D/Allrun
similarity index 83%
rename from tutorials/multiphase/MRFInterFoam/mixerVessel2D/Allrun
rename to tutorials/multiphase/interFoam/laminar/mixerVessel2D/Allrun
index a718eaf7e66..500455cc515 100755
--- a/tutorials/multiphase/MRFInterFoam/mixerVessel2D/Allrun
+++ b/tutorials/multiphase/interFoam/laminar/mixerVessel2D/Allrun
@@ -7,6 +7,8 @@ cd ${0%/*} || exit 1    # run from this directory
 application=`getApplication`
 
 runApplication ./makeMesh
+cp 0/alpha.water.org 0/alpha.water
+runApplication setFields
 runApplication $application
 
 # ----------------------------------------------------------------- end-of-file
diff --git a/tutorials/multiphase/MRFInterFoam/mixerVessel2D/constant/MRFProperties b/tutorials/multiphase/interFoam/laminar/mixerVessel2D/constant/MRFProperties
similarity index 94%
rename from tutorials/multiphase/MRFInterFoam/mixerVessel2D/constant/MRFProperties
rename to tutorials/multiphase/interFoam/laminar/mixerVessel2D/constant/MRFProperties
index c9bc352a738..75bfead7573 100644
--- a/tutorials/multiphase/MRFInterFoam/mixerVessel2D/constant/MRFProperties
+++ b/tutorials/multiphase/interFoam/laminar/mixerVessel2D/constant/MRFProperties
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/multiphase/MRFInterFoam/mixerVessel2D/constant/g b/tutorials/multiphase/interFoam/laminar/mixerVessel2D/constant/g
similarity index 93%
rename from tutorials/multiphase/MRFInterFoam/mixerVessel2D/constant/g
rename to tutorials/multiphase/interFoam/laminar/mixerVessel2D/constant/g
index 36eafd9d27f..099c2ee8a62 100644
--- a/tutorials/multiphase/MRFInterFoam/mixerVessel2D/constant/g
+++ b/tutorials/multiphase/interFoam/laminar/mixerVessel2D/constant/g
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/multiphase/MRFInterFoam/mixerVessel2D/constant/polyMesh/blockMeshDict.m4 b/tutorials/multiphase/interFoam/laminar/mixerVessel2D/constant/polyMesh/blockMeshDict.m4
similarity index 99%
rename from tutorials/multiphase/MRFInterFoam/mixerVessel2D/constant/polyMesh/blockMeshDict.m4
rename to tutorials/multiphase/interFoam/laminar/mixerVessel2D/constant/polyMesh/blockMeshDict.m4
index baeabd14140..2b215888a71 100644
--- a/tutorials/multiphase/MRFInterFoam/mixerVessel2D/constant/polyMesh/blockMeshDict.m4
+++ b/tutorials/multiphase/interFoam/laminar/mixerVessel2D/constant/polyMesh/blockMeshDict.m4
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/multiphase/MRFInterFoam/mixerVessel2D/constant/polyMesh/boundary b/tutorials/multiphase/interFoam/laminar/mixerVessel2D/constant/polyMesh/boundary
similarity index 91%
rename from tutorials/multiphase/MRFInterFoam/mixerVessel2D/constant/polyMesh/boundary
rename to tutorials/multiphase/interFoam/laminar/mixerVessel2D/constant/polyMesh/boundary
index 7ee4864d8bb..e1125126de8 100644
--- a/tutorials/multiphase/MRFInterFoam/mixerVessel2D/constant/polyMesh/boundary
+++ b/tutorials/multiphase/interFoam/laminar/mixerVessel2D/constant/polyMesh/boundary
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
@@ -20,12 +20,14 @@ FoamFile
     rotor
     {
         type            wall;
+        inGroups        1(wall);
         nFaces          192;
         startFace       5952;
     }
     stator
     {
         type            wall;
+        inGroups        1(wall);
         nFaces          192;
         startFace       6144;
     }
diff --git a/tutorials/multiphase/MRFInterFoam/mixerVessel2D/constant/transportProperties b/tutorials/multiphase/interFoam/laminar/mixerVessel2D/constant/transportProperties
similarity index 94%
rename from tutorials/multiphase/MRFInterFoam/mixerVessel2D/constant/transportProperties
rename to tutorials/multiphase/interFoam/laminar/mixerVessel2D/constant/transportProperties
index c18d754f0be..f6088e38475 100644
--- a/tutorials/multiphase/MRFInterFoam/mixerVessel2D/constant/transportProperties
+++ b/tutorials/multiphase/interFoam/laminar/mixerVessel2D/constant/transportProperties
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/multiphase/MRFInterFoam/mixerVessel2D/constant/turbulenceProperties b/tutorials/multiphase/interFoam/laminar/mixerVessel2D/constant/turbulenceProperties
similarity index 92%
rename from tutorials/multiphase/MRFInterFoam/mixerVessel2D/constant/turbulenceProperties
rename to tutorials/multiphase/interFoam/laminar/mixerVessel2D/constant/turbulenceProperties
index b2fc0a43429..8e0954f7116 100644
--- a/tutorials/multiphase/MRFInterFoam/mixerVessel2D/constant/turbulenceProperties
+++ b/tutorials/multiphase/interFoam/laminar/mixerVessel2D/constant/turbulenceProperties
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/multiphase/MRFInterFoam/mixerVessel2D/makeMesh b/tutorials/multiphase/interFoam/laminar/mixerVessel2D/makeMesh
similarity index 100%
rename from tutorials/multiphase/MRFInterFoam/mixerVessel2D/makeMesh
rename to tutorials/multiphase/interFoam/laminar/mixerVessel2D/makeMesh
diff --git a/tutorials/multiphase/MRFInterFoam/mixerVessel2D/system/controlDict b/tutorials/multiphase/interFoam/laminar/mixerVessel2D/system/controlDict
similarity index 92%
rename from tutorials/multiphase/MRFInterFoam/mixerVessel2D/system/controlDict
rename to tutorials/multiphase/interFoam/laminar/mixerVessel2D/system/controlDict
index 5cba6c5db81..01591d95542 100644
--- a/tutorials/multiphase/MRFInterFoam/mixerVessel2D/system/controlDict
+++ b/tutorials/multiphase/interFoam/laminar/mixerVessel2D/system/controlDict
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
@@ -15,7 +15,7 @@ FoamFile
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-application     MRFInterFoam;
+application     interFoam;
 
 startFrom       startTime;
 
diff --git a/tutorials/multiphase/interFoam/laminar/mixerVessel2D/system/fvOptions b/tutorials/multiphase/interFoam/laminar/mixerVessel2D/system/fvOptions
new file mode 100644
index 00000000000..6cc02ab9a77
--- /dev/null
+++ b/tutorials/multiphase/interFoam/laminar/mixerVessel2D/system/fvOptions
@@ -0,0 +1,37 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  2.3.x                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      fvOptions;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+MRF1
+{
+    type            MRFSource;
+    active          yes;
+    selectionMode   cellZone;
+    cellZone        rotor;
+
+    MRFSourceCoeffs
+    {
+        // Fixed patches (by default they 'move' with the MRF zone)
+        nonRotatingPatches ();
+
+        origin    (0 0 0);
+        axis      (0 0 1);
+        omega     constant 6.2831853;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/MRFInterFoam/mixerVessel2D/system/fvSchemes b/tutorials/multiphase/interFoam/laminar/mixerVessel2D/system/fvSchemes
similarity index 95%
rename from tutorials/multiphase/MRFInterFoam/mixerVessel2D/system/fvSchemes
rename to tutorials/multiphase/interFoam/laminar/mixerVessel2D/system/fvSchemes
index 54c05f04fdb..46f7af5d2b2 100644
--- a/tutorials/multiphase/MRFInterFoam/mixerVessel2D/system/fvSchemes
+++ b/tutorials/multiphase/interFoam/laminar/mixerVessel2D/system/fvSchemes
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/multiphase/MRFInterFoam/mixerVessel2D/system/fvSolution b/tutorials/multiphase/interFoam/laminar/mixerVessel2D/system/fvSolution
similarity index 96%
rename from tutorials/multiphase/MRFInterFoam/mixerVessel2D/system/fvSolution
rename to tutorials/multiphase/interFoam/laminar/mixerVessel2D/system/fvSolution
index a125dad16da..995f86cf48d 100644
--- a/tutorials/multiphase/MRFInterFoam/mixerVessel2D/system/fvSolution
+++ b/tutorials/multiphase/interFoam/laminar/mixerVessel2D/system/fvSolution
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/multiphase/MRFInterFoam/mixerVessel2D/system/setFieldsDict b/tutorials/multiphase/interFoam/laminar/mixerVessel2D/system/setFieldsDict
similarity index 94%
rename from tutorials/multiphase/MRFInterFoam/mixerVessel2D/system/setFieldsDict
rename to tutorials/multiphase/interFoam/laminar/mixerVessel2D/system/setFieldsDict
index 2163936c1df..12179b37240 100644
--- a/tutorials/multiphase/MRFInterFoam/mixerVessel2D/system/setFieldsDict
+++ b/tutorials/multiphase/interFoam/laminar/mixerVessel2D/system/setFieldsDict
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/multiphase/MRFInterFoam/mixerVessel2D/system/topoSetDict b/tutorials/multiphase/interFoam/laminar/mixerVessel2D/system/topoSetDict
similarity index 93%
rename from tutorials/multiphase/MRFInterFoam/mixerVessel2D/system/topoSetDict
rename to tutorials/multiphase/interFoam/laminar/mixerVessel2D/system/topoSetDict
index 439171e72f2..8aa466295f7 100644
--- a/tutorials/multiphase/MRFInterFoam/mixerVessel2D/system/topoSetDict
+++ b/tutorials/multiphase/interFoam/laminar/mixerVessel2D/system/topoSetDict
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/multiphase/interFoam/ras/damBreakPorousBaffle/0/alpha.water b/tutorials/multiphase/interFoam/ras/damBreakPorousBaffle/0/alpha.water
index de2d1f50be4..3baa5ab1b9c 100644
--- a/tutorials/multiphase/interFoam/ras/damBreakPorousBaffle/0/alpha.water
+++ b/tutorials/multiphase/interFoam/ras/damBreakPorousBaffle/0/alpha.water
@@ -11,2285 +11,13 @@ FoamFile
     format      ascii;
     class       volScalarField;
     location    "0";
-    object      alpha.water;
+    object      alpha.water.org;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 dimensions      [0 0 0 0 0 0 0];
 
-internalField   nonuniform List<scalar>
-2268
-(
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-)
-;
+internalField   uniform 0;
 
 boundaryField
 {
diff --git a/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/0.org/U b/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/0.org/U
new file mode 100644
index 00000000000..74f1880f7c6
--- /dev/null
+++ b/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/0.org/U
@@ -0,0 +1,60 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  2.3.x                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volVectorField;
+    location    "0";
+    object      U;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -1 0 0 0 0];
+
+internalField   uniform (0 0 0);
+
+boundaryField
+{
+    rotor
+    {
+        type            movingWallVelocity;
+        value           uniform (0 0 0);
+    }
+
+    stator
+    {
+        type            fixedValue;
+        value           uniform (0 0 0);
+    }
+
+    front
+    {
+        type            empty;
+    }
+
+    back
+    {
+        type            empty;
+    }
+
+    AMI1
+    {
+        type            cyclicAMI;
+        value           $internalField;
+    }
+
+    AMI2
+    {
+        type            cyclicAMI;
+        value           $internalField;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/0.org/alpha.air b/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/0.org/alpha.air
new file mode 100644
index 00000000000..71c9e3523f0
--- /dev/null
+++ b/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/0.org/alpha.air
@@ -0,0 +1,56 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  2.3.x                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      alpha.air;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    rotor
+    {
+        type            zeroGradient;
+    }
+
+    stator
+    {
+        type            zeroGradient;
+    }
+
+    front
+    {
+        type            empty;
+    }
+
+    back
+    {
+        type            empty;
+    }
+
+    AMI1
+    {
+        type            cyclicAMI;
+        value           $internalField;
+    }
+
+    AMI2
+    {
+        type            cyclicAMI;
+        value           $internalField;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/0.org/alpha.mercury b/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/0.org/alpha.mercury
new file mode 100644
index 00000000000..ac2bcc21b76
--- /dev/null
+++ b/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/0.org/alpha.mercury
@@ -0,0 +1,56 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  2.3.x                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      alpha.mercury;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    rotor
+    {
+        type            zeroGradient;
+    }
+
+    stator
+    {
+        type            zeroGradient;
+    }
+
+    front
+    {
+        type            empty;
+    }
+
+    back
+    {
+        type            empty;
+    }
+
+    AMI1
+    {
+        type            cyclicAMI;
+        value           $internalField;
+    }
+
+    AMI2
+    {
+        type            cyclicAMI;
+        value           $internalField;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/0.org/alpha.oil b/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/0.org/alpha.oil
new file mode 100644
index 00000000000..ce5a044db20
--- /dev/null
+++ b/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/0.org/alpha.oil
@@ -0,0 +1,56 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  2.3.x                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      alpha.oil;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    rotor
+    {
+        type            zeroGradient;
+    }
+
+    stator
+    {
+        type            zeroGradient;
+    }
+
+    front
+    {
+        type            empty;
+    }
+
+    back
+    {
+        type            empty;
+    }
+
+    AMI1
+    {
+        type            cyclicAMI;
+        value           $internalField;
+    }
+
+    AMI2
+    {
+        type            cyclicAMI;
+        value           $internalField;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/0.org/alpha.water b/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/0.org/alpha.water
new file mode 100644
index 00000000000..87dd05c4bd3
--- /dev/null
+++ b/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/0.org/alpha.water
@@ -0,0 +1,56 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  2.3.x                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      alpha.water;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    rotor
+    {
+        type            zeroGradient;
+    }
+
+    stator
+    {
+        type            zeroGradient;
+    }
+
+    front
+    {
+        type            empty;
+    }
+
+    back
+    {
+        type            empty;
+    }
+
+    AMI1
+    {
+        type            cyclicAMI;
+        value           $internalField;
+    }
+
+    AMI2
+    {
+        type            cyclicAMI;
+        value           $internalField;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/0.org/p_rgh b/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/0.org/p_rgh
new file mode 100644
index 00000000000..b3f5f4df9ca
--- /dev/null
+++ b/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/0.org/p_rgh
@@ -0,0 +1,56 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  2.3.x                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      p_rgh;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 -1 -2 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    rotor
+    {
+        type            fixedFluxPressure;
+    }
+
+    stator
+    {
+        type            fixedFluxPressure;
+    }
+
+    front
+    {
+        type            empty;
+    }
+
+    back
+    {
+        type            empty;
+    }
+
+    AMI1
+    {
+        type            cyclicAMI;
+        value           $internalField;
+    }
+
+    AMI2
+    {
+        type            cyclicAMI;
+        value           $internalField;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/Allrun b/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/Allrun
new file mode 100755
index 00000000000..98d1164778a
--- /dev/null
+++ b/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/Allrun
@@ -0,0 +1,20 @@
+#!/bin/sh
+cd ${0%/*} || exit 1    # run from this directory
+
+# Source tutorial run functions
+. $WM_PROJECT_DIR/bin/tools/RunFunctions
+
+application=`getApplication`
+
+./makeMesh
+
+rm -rf 0
+cp -r 0.org 0
+setFields
+
+#runApplication $application
+#runApplication decomposePar
+#runParallel $application 4
+#runApplication reconstructPar
+
+# ----------------------------------------------------------------- end-of-file
diff --git a/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/constant/RASProperties b/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/constant/RASProperties
new file mode 100644
index 00000000000..d964d3c8627
--- /dev/null
+++ b/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/constant/RASProperties
@@ -0,0 +1,25 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  2.3.x                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      RASProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+RASModel        kEpsilon;
+
+turbulence      on;
+
+printCoeffs     on;
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/constant/dynamicMeshDict b/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/constant/dynamicMeshDict
new file mode 100644
index 00000000000..daa58cd741b
--- /dev/null
+++ b/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/constant/dynamicMeshDict
@@ -0,0 +1,36 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  2.3.x                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      dynamicMeshDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dynamicFvMesh   solidBodyMotionFvMesh;
+
+motionSolverLibs ( "libfvMotionSolvers.so" );
+
+solidBodyMotionFvMeshCoeffs
+{
+    cellZone        rotor;
+
+    solidBodyMotionFunction  rotatingMotion;
+    rotatingMotionCoeffs
+    {
+        origin        (0 0 0);
+        axis          (0 0 1);
+        omega         6.2832; // rad/s
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/constant/g b/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/constant/g
new file mode 100644
index 00000000000..099c2ee8a62
--- /dev/null
+++ b/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/constant/g
@@ -0,0 +1,21 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  2.3.x                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       uniformDimensionedVectorField;
+    location    "constant";
+    object      g;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -2 0 0 0 0];
+value           (0 0 0);
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/constant/polyMesh/blockMeshDict.m4 b/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/constant/polyMesh/blockMeshDict.m4
new file mode 100644
index 00000000000..1095ba9a193
--- /dev/null
+++ b/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/constant/polyMesh/blockMeshDict.m4
@@ -0,0 +1,924 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  2.3.x                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    `format'      ascii;
+    class       dictionary;
+    object      blockMeshDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// General macros to create 2D/extruded-2D meshes
+
+changecom(//)changequote([,])
+define(calc, [esyscmd(perl -e 'print ($1)')])
+define(VCOUNT, 0)
+define(vlabel, [[// ]Vertex $1 = VCOUNT define($1, VCOUNT)define([VCOUNT], incr(VCOUNT))])
+define(pi, 3.14159265)
+
+define(hex2D, hex ($1b $2b $3b $4b $1t $2t $3t $4t))
+define(quad2D, ($1b $2b $2t $1t))
+define(frontQuad, ($1t $2t $3t $4t))
+define(backQuad, ($1b $4b $3b $2b))
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+convertToMeters 0.1;
+
+// Hub radius
+define(r, 0.2)
+
+// Impeller-tip radius
+define(rb, 0.5)
+
+// Baffle-tip radius
+define(Rb, 0.7)
+
+// Tank radius
+define(R, 1)
+
+// MRF region radius
+define(ri, calc(0.5*(rb + Rb)))
+
+// Thickness of 2D slab
+define(z, 0.1)
+
+// Base z
+define(Zb, 0)
+
+// Top z
+define(Zt, calc(Zb + z))
+
+// Number of cells radially between hub and impeller tip
+define(Nr, 12)
+
+// Number of cells radially in each of the two regions between
+// impeller and baffle tips
+define(Ni, 4)
+
+// Number of cells radially between baffle tip and tank
+define(NR, 12)
+
+// Number of cells azimuthally in each of the 8 blocks
+define(Na, 12)
+
+// Number of cells in the thickness of the slab
+define(Nz, 1)
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+define(vert, (x$1$2 y$1$2 $3))
+define(evert, (ex$1$2 ey$1$2 $3))
+
+define(a0, 0)
+define(a1, -45)
+define(a2, -90)
+define(a3, -135)
+define(a4, 180)
+define(a5, 135)
+define(a6, 90)
+define(a7, 45)
+
+define(ea0, -22.5)
+define(ea1, -67.5)
+define(ea2, -112.5)
+define(ea3, -157.5)
+define(ea4, 157.5)
+define(ea5, 112.5)
+define(ea6, 67.5)
+define(ea7, 22.5)
+
+define(ca0, calc(cos((pi/180)*a0)))
+define(ca1, calc(cos((pi/180)*a1)))
+define(ca2, calc(cos((pi/180)*a2)))
+define(ca3, calc(cos((pi/180)*a3)))
+define(ca4, calc(cos((pi/180)*a4)))
+define(ca5, calc(cos((pi/180)*a5)))
+define(ca6, calc(cos((pi/180)*a6)))
+define(ca7, calc(cos((pi/180)*a7)))
+
+define(sa0, calc(sin((pi/180)*a0)))
+define(sa1, calc(sin((pi/180)*a1)))
+define(sa2, calc(sin((pi/180)*a2)))
+define(sa3, calc(sin((pi/180)*a3)))
+define(sa4, calc(sin((pi/180)*a4)))
+define(sa5, calc(sin((pi/180)*a5)))
+define(sa6, calc(sin((pi/180)*a6)))
+define(sa7, calc(sin((pi/180)*a7)))
+
+define(cea0, calc(cos((pi/180)*ea0)))
+define(cea1, calc(cos((pi/180)*ea1)))
+define(cea2, calc(cos((pi/180)*ea2)))
+define(cea3, calc(cos((pi/180)*ea3)))
+define(cea4, calc(cos((pi/180)*ea4)))
+define(cea5, calc(cos((pi/180)*ea5)))
+define(cea6, calc(cos((pi/180)*ea6)))
+define(cea7, calc(cos((pi/180)*ea7)))
+
+define(sea0, calc(sin((pi/180)*ea0)))
+define(sea1, calc(sin((pi/180)*ea1)))
+define(sea2, calc(sin((pi/180)*ea2)))
+define(sea3, calc(sin((pi/180)*ea3)))
+define(sea4, calc(sin((pi/180)*ea4)))
+define(sea5, calc(sin((pi/180)*ea5)))
+define(sea6, calc(sin((pi/180)*ea6)))
+define(sea7, calc(sin((pi/180)*ea7)))
+
+define(x00, calc(r*ca0))
+define(x01, calc(r*ca1))
+define(x02, calc(r*ca2))
+define(x03, calc(r*ca3))
+define(x04, calc(r*ca4))
+define(x05, calc(r*ca5))
+define(x06, calc(r*ca6))
+define(x07, calc(r*ca7))
+
+define(x10, calc(rb*ca0))
+define(x11, calc(rb*ca1))
+define(x12, calc(rb*ca2))
+define(x13, calc(rb*ca3))
+define(x14, calc(rb*ca4))
+define(x15, calc(rb*ca5))
+define(x16, calc(rb*ca6))
+define(x17, calc(rb*ca7))
+
+define(x20, calc(ri*ca0))
+define(x21, calc(ri*ca1))
+define(x22, calc(ri*ca2))
+define(x23, calc(ri*ca3))
+define(x24, calc(ri*ca4))
+define(x25, calc(ri*ca5))
+define(x26, calc(ri*ca6))
+define(x27, calc(ri*ca7))
+
+define(x30, calc(Rb*ca0))
+define(x31, calc(Rb*ca1))
+define(x32, calc(Rb*ca2))
+define(x33, calc(Rb*ca3))
+define(x34, calc(Rb*ca4))
+define(x35, calc(Rb*ca5))
+define(x36, calc(Rb*ca6))
+define(x37, calc(Rb*ca7))
+
+define(x40, calc(R*ca0))
+define(x41, calc(R*ca1))
+define(x42, calc(R*ca2))
+define(x43, calc(R*ca3))
+define(x44, calc(R*ca4))
+define(x45, calc(R*ca5))
+define(x46, calc(R*ca6))
+define(x47, calc(R*ca7))
+
+define(y00, calc(r*sa0))
+define(y01, calc(r*sa1))
+define(y02, calc(r*sa2))
+define(y03, calc(r*sa3))
+define(y04, calc(r*sa4))
+define(y05, calc(r*sa5))
+define(y06, calc(r*sa6))
+define(y07, calc(r*sa7))
+
+define(y10, calc(rb*sa0))
+define(y11, calc(rb*sa1))
+define(y12, calc(rb*sa2))
+define(y13, calc(rb*sa3))
+define(y14, calc(rb*sa4))
+define(y15, calc(rb*sa5))
+define(y16, calc(rb*sa6))
+define(y17, calc(rb*sa7))
+
+define(y20, calc(ri*sa0))
+define(y21, calc(ri*sa1))
+define(y22, calc(ri*sa2))
+define(y23, calc(ri*sa3))
+define(y24, calc(ri*sa4))
+define(y25, calc(ri*sa5))
+define(y26, calc(ri*sa6))
+define(y27, calc(ri*sa7))
+
+define(y30, calc(Rb*sa0))
+define(y31, calc(Rb*sa1))
+define(y32, calc(Rb*sa2))
+define(y33, calc(Rb*sa3))
+define(y34, calc(Rb*sa4))
+define(y35, calc(Rb*sa5))
+define(y36, calc(Rb*sa6))
+define(y37, calc(Rb*sa7))
+
+define(y40, calc(R*sa0))
+define(y41, calc(R*sa1))
+define(y42, calc(R*sa2))
+define(y43, calc(R*sa3))
+define(y44, calc(R*sa4))
+define(y45, calc(R*sa5))
+define(y46, calc(R*sa6))
+define(y47, calc(R*sa7))
+
+define(ex00, calc(r*cea0))
+define(ex01, calc(r*cea1))
+define(ex02, calc(r*cea2))
+define(ex03, calc(r*cea3))
+define(ex04, calc(r*cea4))
+define(ex05, calc(r*cea5))
+define(ex06, calc(r*cea6))
+define(ex07, calc(r*cea7))
+
+define(ex10, calc(rb*cea0))
+define(ex11, calc(rb*cea1))
+define(ex12, calc(rb*cea2))
+define(ex13, calc(rb*cea3))
+define(ex14, calc(rb*cea4))
+define(ex15, calc(rb*cea5))
+define(ex16, calc(rb*cea6))
+define(ex17, calc(rb*cea7))
+
+define(ex20, calc(ri*cea0))
+define(ex21, calc(ri*cea1))
+define(ex22, calc(ri*cea2))
+define(ex23, calc(ri*cea3))
+define(ex24, calc(ri*cea4))
+define(ex25, calc(ri*cea5))
+define(ex26, calc(ri*cea6))
+define(ex27, calc(ri*cea7))
+
+define(ex30, calc(Rb*cea0))
+define(ex31, calc(Rb*cea1))
+define(ex32, calc(Rb*cea2))
+define(ex33, calc(Rb*cea3))
+define(ex34, calc(Rb*cea4))
+define(ex35, calc(Rb*cea5))
+define(ex36, calc(Rb*cea6))
+define(ex37, calc(Rb*cea7))
+
+define(ex40, calc(R*cea0))
+define(ex41, calc(R*cea1))
+define(ex42, calc(R*cea2))
+define(ex43, calc(R*cea3))
+define(ex44, calc(R*cea4))
+define(ex45, calc(R*cea5))
+define(ex46, calc(R*cea6))
+define(ex47, calc(R*cea7))
+
+define(ey00, calc(r*sea0))
+define(ey01, calc(r*sea1))
+define(ey02, calc(r*sea2))
+define(ey03, calc(r*sea3))
+define(ey04, calc(r*sea4))
+define(ey05, calc(r*sea5))
+define(ey06, calc(r*sea6))
+define(ey07, calc(r*sea7))
+
+define(ey10, calc(rb*sea0))
+define(ey11, calc(rb*sea1))
+define(ey12, calc(rb*sea2))
+define(ey13, calc(rb*sea3))
+define(ey14, calc(rb*sea4))
+define(ey15, calc(rb*sea5))
+define(ey16, calc(rb*sea6))
+define(ey17, calc(rb*sea7))
+
+define(ey20, calc(ri*sea0))
+define(ey21, calc(ri*sea1))
+define(ey22, calc(ri*sea2))
+define(ey23, calc(ri*sea3))
+define(ey24, calc(ri*sea4))
+define(ey25, calc(ri*sea5))
+define(ey26, calc(ri*sea6))
+define(ey27, calc(ri*sea7))
+
+define(ey30, calc(Rb*sea0))
+define(ey31, calc(Rb*sea1))
+define(ey32, calc(Rb*sea2))
+define(ey33, calc(Rb*sea3))
+define(ey34, calc(Rb*sea4))
+define(ey35, calc(Rb*sea5))
+define(ey36, calc(Rb*sea6))
+define(ey37, calc(Rb*sea7))
+
+define(ey40, calc(R*sea0))
+define(ey41, calc(R*sea1))
+define(ey42, calc(R*sea2))
+define(ey43, calc(R*sea3))
+define(ey44, calc(R*sea4))
+define(ey45, calc(R*sea5))
+define(ey46, calc(R*sea6))
+define(ey47, calc(R*sea7))
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+vertices
+(
+    vert(0, 0, Zb) vlabel(r0b)
+    vert(0, 0, Zb) vlabel(r0sb)
+    vert(0, 1, Zb) vlabel(r1b)
+    vert(0, 2, Zb) vlabel(r2b)
+    vert(0, 2, Zb) vlabel(r2sb)
+    vert(0, 3, Zb) vlabel(r3b)
+    vert(0, 4, Zb) vlabel(r4b)
+    vert(0, 4, Zb) vlabel(r4sb)
+    vert(0, 5, Zb) vlabel(r5b)
+    vert(0, 6, Zb) vlabel(r6b)
+    vert(0, 6, Zb) vlabel(r6sb)
+    vert(0, 7, Zb) vlabel(r7b)
+
+    vert(1, 0, Zb) vlabel(rb0b)
+    vert(1, 1, Zb) vlabel(rb1b)
+    vert(1, 2, Zb) vlabel(rb2b)
+    vert(1, 3, Zb) vlabel(rb3b)
+    vert(1, 4, Zb) vlabel(rb4b)
+    vert(1, 5, Zb) vlabel(rb5b)
+    vert(1, 6, Zb) vlabel(rb6b)
+    vert(1, 7, Zb) vlabel(rb7b)
+
+    vert(2, 0, Zb) vlabel(ri0b)
+    vert(2, 1, Zb) vlabel(ri1b)
+    vert(2, 2, Zb) vlabel(ri2b)
+    vert(2, 3, Zb) vlabel(ri3b)
+    vert(2, 4, Zb) vlabel(ri4b)
+    vert(2, 5, Zb) vlabel(ri5b)
+    vert(2, 6, Zb) vlabel(ri6b)
+    vert(2, 7, Zb) vlabel(ri7b)
+
+    vert(2, 0, Zb) vlabel(ris0b)
+    vert(2, 1, Zb) vlabel(ris1b)
+    vert(2, 2, Zb) vlabel(ris2b)
+    vert(2, 3, Zb) vlabel(ris3b)
+    vert(2, 4, Zb) vlabel(ris4b)
+    vert(2, 5, Zb) vlabel(ris5b)
+    vert(2, 6, Zb) vlabel(ris6b)
+    vert(2, 7, Zb) vlabel(ris7b)
+
+    vert(3, 0, Zb) vlabel(Rb0b)
+    vert(3, 1, Zb) vlabel(Rb1b)
+    vert(3, 2, Zb) vlabel(Rb2b)
+    vert(3, 3, Zb) vlabel(Rb3b)
+    vert(3, 4, Zb) vlabel(Rb4b)
+    vert(3, 5, Zb) vlabel(Rb5b)
+    vert(3, 6, Zb) vlabel(Rb6b)
+    vert(3, 7, Zb) vlabel(Rb7b)
+
+    vert(4, 0, Zb) vlabel(R0b)
+    vert(4, 1, Zb) vlabel(R1b)
+    vert(4, 1, Zb) vlabel(R1sb)
+    vert(4, 2, Zb) vlabel(R2b)
+    vert(4, 3, Zb) vlabel(R3b)
+    vert(4, 3, Zb) vlabel(R3sb)
+    vert(4, 4, Zb) vlabel(R4b)
+    vert(4, 5, Zb) vlabel(R5b)
+    vert(4, 5, Zb) vlabel(R5sb)
+    vert(4, 6, Zb) vlabel(R6b)
+    vert(4, 7, Zb) vlabel(R7b)
+    vert(4, 7, Zb) vlabel(R7sb)
+
+    vert(0, 0, Zt) vlabel(r0t)
+    vert(0, 0, Zt) vlabel(r0st)
+    vert(0, 1, Zt) vlabel(r1t)
+    vert(0, 2, Zt) vlabel(r2t)
+    vert(0, 2, Zt) vlabel(r2st)
+    vert(0, 3, Zt) vlabel(r3t)
+    vert(0, 4, Zt) vlabel(r4t)
+    vert(0, 4, Zt) vlabel(r4st)
+    vert(0, 5, Zt) vlabel(r5t)
+    vert(0, 6, Zt) vlabel(r6t)
+    vert(0, 6, Zt) vlabel(r6st)
+    vert(0, 7, Zt) vlabel(r7t)
+
+    vert(1, 0, Zt) vlabel(rb0t)
+    vert(1, 1, Zt) vlabel(rb1t)
+    vert(1, 2, Zt) vlabel(rb2t)
+    vert(1, 3, Zt) vlabel(rb3t)
+    vert(1, 4, Zt) vlabel(rb4t)
+    vert(1, 5, Zt) vlabel(rb5t)
+    vert(1, 6, Zt) vlabel(rb6t)
+    vert(1, 7, Zt) vlabel(rb7t)
+
+    vert(2, 0, Zt) vlabel(ri0t)
+    vert(2, 1, Zt) vlabel(ri1t)
+    vert(2, 2, Zt) vlabel(ri2t)
+    vert(2, 3, Zt) vlabel(ri3t)
+    vert(2, 4, Zt) vlabel(ri4t)
+    vert(2, 5, Zt) vlabel(ri5t)
+    vert(2, 6, Zt) vlabel(ri6t)
+    vert(2, 7, Zt) vlabel(ri7t)
+
+    vert(2, 0, Zt) vlabel(ris0t)
+    vert(2, 1, Zt) vlabel(ris1t)
+    vert(2, 2, Zt) vlabel(ris2t)
+    vert(2, 3, Zt) vlabel(ris3t)
+    vert(2, 4, Zt) vlabel(ris4t)
+    vert(2, 5, Zt) vlabel(ris5t)
+    vert(2, 6, Zt) vlabel(ris6t)
+    vert(2, 7, Zt) vlabel(ris7t)
+
+    vert(3, 0, Zt) vlabel(Rb0t)
+    vert(3, 1, Zt) vlabel(Rb1t)
+    vert(3, 2, Zt) vlabel(Rb2t)
+    vert(3, 3, Zt) vlabel(Rb3t)
+    vert(3, 4, Zt) vlabel(Rb4t)
+    vert(3, 5, Zt) vlabel(Rb5t)
+    vert(3, 6, Zt) vlabel(Rb6t)
+    vert(3, 7, Zt) vlabel(Rb7t)
+
+    vert(4, 0, Zt) vlabel(R0t)
+    vert(4, 1, Zt) vlabel(R1t)
+    vert(4, 1, Zt) vlabel(R1st)
+    vert(4, 2, Zt) vlabel(R2t)
+    vert(4, 3, Zt) vlabel(R3t)
+    vert(4, 3, Zt) vlabel(R3st)
+    vert(4, 4, Zt) vlabel(R4t)
+    vert(4, 5, Zt) vlabel(R5t)
+    vert(4, 5, Zt) vlabel(R5st)
+    vert(4, 6, Zt) vlabel(R6t)
+    vert(4, 7, Zt) vlabel(R7t)
+    vert(4, 7, Zt) vlabel(R7st)
+);
+
+blocks
+(
+    // block0
+    hex2D(r0, r1, rb1, rb0)
+    rotor
+    (Na Nr Nz)
+    simpleGrading (1 1 1)
+
+    // block1
+    hex2D(r1, r2s, rb2, rb1)
+    rotor
+    (Na Nr Nz)
+    simpleGrading (1 1 1)
+
+    // block2
+    hex2D(r2, r3, rb3, rb2)
+    rotor
+    (Na Nr Nz)
+    simpleGrading (1 1 1)
+
+    // block3
+    hex2D(r3, r4s, rb4, rb3)
+    rotor
+    (Na Nr Nz)
+    simpleGrading (1 1 1)
+
+    // block4
+    hex2D(r4, r5, rb5, rb4)
+    rotor
+    (Na Nr Nz)
+    simpleGrading (1 1 1)
+
+    // block5
+    hex2D(r5, r6s, rb6, rb5)
+    rotor
+    (Na Nr Nz)
+    simpleGrading (1 1 1)
+
+    // block6
+    hex2D(r6, r7, rb7, rb6)
+    rotor
+    (Na Nr Nz)
+    simpleGrading (1 1 1)
+
+    // block7
+    hex2D(r7, r0s, rb0, rb7)
+    rotor
+    (Na Nr Nz)
+    simpleGrading (1 1 1)
+
+    // block0
+    hex2D(rb0, rb1, ri1, ri0)
+    rotor
+    (Na Ni Nz)
+    simpleGrading (1 1 1)
+
+    // block1
+    hex2D(rb1, rb2, ri2, ri1)
+    rotor
+    (Na Ni Nz)
+    simpleGrading (1 1 1)
+
+    // block2
+    hex2D(rb2, rb3, ri3, ri2)
+    rotor
+    (Na Ni Nz)
+    simpleGrading (1 1 1)
+
+    // block3
+    hex2D(rb3, rb4, ri4, ri3)
+    rotor
+    (Na Ni Nz)
+    simpleGrading (1 1 1)
+
+    // block4
+    hex2D(rb4, rb5, ri5, ri4)
+    rotor
+    (Na Ni Nz)
+    simpleGrading (1 1 1)
+
+    // block5
+    hex2D(rb5, rb6, ri6, ri5)
+    rotor
+    (Na Ni Nz)
+    simpleGrading (1 1 1)
+
+    // block6
+    hex2D(rb6, rb7, ri7, ri6)
+    rotor
+    (Na Ni Nz)
+    simpleGrading (1 1 1)
+
+    // block7
+    hex2D(rb7, rb0, ri0, ri7)
+    rotor
+    (Na Ni Nz)
+    simpleGrading (1 1 1)
+
+    // block0
+    hex2D(ris0, ris1, Rb1, Rb0)
+    (Na Ni Nz)
+    simpleGrading (1 1 1)
+
+    // block1
+    hex2D(ris1, ris2, Rb2, Rb1)
+    (Na Ni Nz)
+    simpleGrading (1 1 1)
+
+    // block2
+    hex2D(ris2, ris3, Rb3, Rb2)
+    (Na Ni Nz)
+    simpleGrading (1 1 1)
+
+    // block3
+    hex2D(ris3, ris4, Rb4, Rb3)
+    (Na Ni Nz)
+    simpleGrading (1 1 1)
+
+    // block4
+    hex2D(ris4, ris5, Rb5, Rb4)
+    (Na Ni Nz)
+    simpleGrading (1 1 1)
+
+    // block5
+    hex2D(ris5, ris6, Rb6, Rb5)
+    (Na Ni Nz)
+    simpleGrading (1 1 1)
+
+    // block6
+    hex2D(ris6, ris7, Rb7, Rb6)
+    (Na Ni Nz)
+    simpleGrading (1 1 1)
+
+    // block7
+    hex2D(ris7, ris0, Rb0, Rb7)
+    (Na Ni Nz)
+    simpleGrading (1 1 1)
+
+    // block0
+    hex2D(Rb0, Rb1, R1s, R0)
+    (Na NR Nz)
+    simpleGrading (1 1 1)
+
+    // block1
+    hex2D(Rb1, Rb2, R2, R1)
+    (Na NR Nz)
+    simpleGrading (1 1 1)
+
+    // block2
+    hex2D(Rb2, Rb3, R3s, R2)
+    (Na NR Nz)
+    simpleGrading (1 1 1)
+
+    // block3
+    hex2D(Rb3, Rb4, R4, R3)
+    (Na NR Nz)
+    simpleGrading (1 1 1)
+
+    // block4
+    hex2D(Rb4, Rb5, R5s, R4)
+    (Na NR Nz)
+    simpleGrading (1 1 1)
+
+    // block5
+    hex2D(Rb5, Rb6, R6, R5)
+    (Na NR Nz)
+    simpleGrading (1 1 1)
+
+    // block6
+    hex2D(Rb6, Rb7, R7s, R6)
+    (Na NR Nz)
+    simpleGrading (1 1 1)
+
+    // block7
+    hex2D(Rb7, Rb0, R0, R7)
+    (Na NR Nz)
+    simpleGrading (1 1 1)
+);
+
+edges
+(
+    arc r0b r1b evert(0, 0, Zb)
+    arc r1b r2sb evert(0, 1, Zb)
+    arc r2b r3b evert(0, 2, Zb)
+    arc r3b r4sb evert(0, 3, Zb)
+    arc r4b r5b evert(0, 4, Zb)
+    arc r5b r6sb evert(0, 5, Zb)
+    arc r6b r7b evert(0, 6, Zb)
+    arc r7b r0sb evert(0, 7, Zb)
+
+    arc rb0b rb1b evert(1, 0, Zb)
+    arc rb1b rb2b evert(1, 1, Zb)
+    arc rb2b rb3b evert(1, 2, Zb)
+    arc rb3b rb4b evert(1, 3, Zb)
+    arc rb4b rb5b evert(1, 4, Zb)
+    arc rb5b rb6b evert(1, 5, Zb)
+    arc rb6b rb7b evert(1, 6, Zb)
+    arc rb7b rb0b evert(1, 7, Zb)
+
+    arc ri0b ri1b evert(2, 0, Zb)
+    arc ri1b ri2b evert(2, 1, Zb)
+    arc ri2b ri3b evert(2, 2, Zb)
+    arc ri3b ri4b evert(2, 3, Zb)
+    arc ri4b ri5b evert(2, 4, Zb)
+    arc ri5b ri6b evert(2, 5, Zb)
+    arc ri6b ri7b evert(2, 6, Zb)
+    arc ri7b ri0b evert(2, 7, Zb)
+
+    arc ris0b ris1b evert(2, 0, Zb)
+    arc ris1b ris2b evert(2, 1, Zb)
+    arc ris2b ris3b evert(2, 2, Zb)
+    arc ris3b ris4b evert(2, 3, Zb)
+    arc ris4b ris5b evert(2, 4, Zb)
+    arc ris5b ris6b evert(2, 5, Zb)
+    arc ris6b ris7b evert(2, 6, Zb)
+    arc ris7b ris0b evert(2, 7, Zb)
+
+    arc Rb0b Rb1b evert(3, 0, Zb)
+    arc Rb1b Rb2b evert(3, 1, Zb)
+    arc Rb2b Rb3b evert(3, 2, Zb)
+    arc Rb3b Rb4b evert(3, 3, Zb)
+    arc Rb4b Rb5b evert(3, 4, Zb)
+    arc Rb5b Rb6b evert(3, 5, Zb)
+    arc Rb6b Rb7b evert(3, 6, Zb)
+    arc Rb7b Rb0b evert(3, 7, Zb)
+
+    arc R0b R1sb evert(4, 0, Zb)
+    arc R1b R2b evert(4, 1, Zb)
+    arc R2b R3sb evert(4, 2, Zb)
+    arc R3b R4b evert(4, 3, Zb)
+    arc R4b R5sb evert(4, 4, Zb)
+    arc R5b R6b evert(4, 5, Zb)
+    arc R6b R7sb evert(4, 6, Zb)
+    arc R7b R0b evert(4, 7, Zb)
+
+    arc r0t r1t evert(0, 0, Zt)
+    arc r1t r2st evert(0, 1, Zt)
+    arc r2t r3t evert(0, 2, Zt)
+    arc r3t r4st evert(0, 3, Zt)
+    arc r4t r5t evert(0, 4, Zt)
+    arc r5t r6st evert(0, 5, Zt)
+    arc r6t r7t evert(0, 6, Zt)
+    arc r7t r0st evert(0, 7, Zt)
+
+    arc rb0t rb1t evert(1, 0, Zt)
+    arc rb1t rb2t evert(1, 1, Zt)
+    arc rb2t rb3t evert(1, 2, Zt)
+    arc rb3t rb4t evert(1, 3, Zt)
+    arc rb4t rb5t evert(1, 4, Zt)
+    arc rb5t rb6t evert(1, 5, Zt)
+    arc rb6t rb7t evert(1, 6, Zt)
+    arc rb7t rb0t evert(1, 7, Zt)
+
+    arc ri0t ri1t evert(2, 0, Zt)
+    arc ri1t ri2t evert(2, 1, Zt)
+    arc ri2t ri3t evert(2, 2, Zt)
+    arc ri3t ri4t evert(2, 3, Zt)
+    arc ri4t ri5t evert(2, 4, Zt)
+    arc ri5t ri6t evert(2, 5, Zt)
+    arc ri6t ri7t evert(2, 6, Zt)
+    arc ri7t ri0t evert(2, 7, Zt)
+
+    arc ris0t ris1t evert(2, 0, Zt)
+    arc ris1t ris2t evert(2, 1, Zt)
+    arc ris2t ris3t evert(2, 2, Zt)
+    arc ris3t ris4t evert(2, 3, Zt)
+    arc ris4t ris5t evert(2, 4, Zt)
+    arc ris5t ris6t evert(2, 5, Zt)
+    arc ris6t ris7t evert(2, 6, Zt)
+    arc ris7t ris0t evert(2, 7, Zt)
+
+    arc Rb0t Rb1t evert(3, 0, Zt)
+    arc Rb1t Rb2t evert(3, 1, Zt)
+    arc Rb2t Rb3t evert(3, 2, Zt)
+    arc Rb3t Rb4t evert(3, 3, Zt)
+    arc Rb4t Rb5t evert(3, 4, Zt)
+    arc Rb5t Rb6t evert(3, 5, Zt)
+    arc Rb6t Rb7t evert(3, 6, Zt)
+    arc Rb7t Rb0t evert(3, 7, Zt)
+
+    arc R0t R1st evert(4, 0, Zt)
+    arc R1t R2t evert(4, 1, Zt)
+    arc R2t R3st evert(4, 2, Zt)
+    arc R3t R4t evert(4, 3, Zt)
+    arc R4t R5st evert(4, 4, Zt)
+    arc R5t R6t evert(4, 5, Zt)
+    arc R6t R7st evert(4, 6, Zt)
+    arc R7t R0t evert(4, 7, Zt)
+);
+
+boundary
+(
+    rotor
+    {
+        type            wall;
+        faces
+        (
+            quad2D(r0, r1)
+            quad2D(r1, r2s)
+            quad2D(r2, r3)
+            quad2D(r3, r4s)
+            quad2D(r4, r5)
+            quad2D(r5, r6s)
+            quad2D(r6, r7)
+            quad2D(r7, r0s)
+
+            quad2D(r0, rb0)
+            quad2D(r0s, rb0)
+
+            quad2D(r2, rb2)
+            quad2D(r2s, rb2)
+
+            quad2D(r4, rb4)
+            quad2D(r4s, rb4)
+
+            quad2D(r6, rb6)
+            quad2D(r6s, rb6)
+        );
+    }
+
+    stator
+    {
+        type            wall;
+        faces
+        (
+            quad2D(R0, R1s)
+            quad2D(R1, R2)
+            quad2D(R2, R3s)
+            quad2D(R3, R4)
+            quad2D(R4, R5s)
+            quad2D(R5, R6)
+            quad2D(R6, R7s)
+            quad2D(R7, R0)
+
+            quad2D(R1, Rb1)
+            quad2D(R1s, Rb1)
+
+            quad2D(R3, Rb3)
+            quad2D(R3s, Rb3)
+
+            quad2D(R5, Rb5)
+            quad2D(R5s, Rb5)
+
+            quad2D(R7, Rb7)
+            quad2D(R7s, Rb7)
+        );
+    }
+
+    AMI1
+    {
+        type            cyclicAMI;
+        neighbourPatch  AMI2;
+        transform       noOrdering;
+/* optional
+        surface
+        {
+            type            searchableCylinder; // none
+            point1          (0 0 -1);
+            point2          (0 0 1);
+            radius          0.5;
+        }
+*/
+        faces
+        (
+            quad2D(ri1, ri0)
+            quad2D(ri2, ri1)
+            quad2D(ri3, ri2)
+            quad2D(ri4, ri3)
+            quad2D(ri5, ri4)
+            quad2D(ri6, ri5)
+            quad2D(ri7, ri6)
+            quad2D(ri0, ri7)
+        );
+    }
+
+    AMI2
+    {
+        type            cyclicAMI;
+        neighbourPatch  AMI1;
+        transform       noOrdering;
+/* optional
+        surface
+        {
+            type            searchableCylinder; // none
+            point1          (0 0 -1);
+            point2          (0 0 1);
+            radius          0.5;
+        }
+*/
+        faces
+        (
+            quad2D(ris1, ris0)
+            quad2D(ris2, ris1)
+            quad2D(ris3, ris2)
+            quad2D(ris4, ris3)
+            quad2D(ris5, ris4)
+            quad2D(ris6, ris5)
+            quad2D(ris7, ris6)
+            quad2D(ris0, ris7)
+        );
+    }
+
+    front
+    {
+        type            empty;
+        faces
+        (
+            frontQuad(r0, r1, rb1, rb0)
+            frontQuad(r1, r2s, rb2, rb1)
+            frontQuad(r2, r3, rb3, rb2)
+            frontQuad(r3, r4s, rb4, rb3)
+            frontQuad(r4, r5, rb5, rb4)
+            frontQuad(r5, r6s, rb6, rb5)
+            frontQuad(r6, r7, rb7, rb6)
+            frontQuad(r7, r0s, rb0, rb7)
+            frontQuad(rb0, rb1, ri1, ri0)
+            frontQuad(rb1, rb2, ri2, ri1)
+            frontQuad(rb2, rb3, ri3, ri2)
+            frontQuad(rb3, rb4, ri4, ri3)
+            frontQuad(rb4, rb5, ri5, ri4)
+            frontQuad(rb5, rb6, ri6, ri5)
+            frontQuad(rb6, rb7, ri7, ri6)
+            frontQuad(rb7, rb0, ri0, ri7)
+            frontQuad(ris0, ris1, Rb1, Rb0)
+            frontQuad(ris1, ris2, Rb2, Rb1)
+            frontQuad(ris2, ris3, Rb3, Rb2)
+            frontQuad(ris3, ris4, Rb4, Rb3)
+            frontQuad(ris4, ris5, Rb5, Rb4)
+            frontQuad(ris5, ris6, Rb6, Rb5)
+            frontQuad(ris6, ris7, Rb7, Rb6)
+            frontQuad(ris7, ris0, Rb0, Rb7)
+            frontQuad(Rb0, Rb1, R1s, R0)
+            frontQuad(Rb1, Rb2, R2, R1)
+            frontQuad(Rb2, Rb3, R3s, R2)
+            frontQuad(Rb3, Rb4, R4, R3)
+            frontQuad(Rb4, Rb5, R5s, R4)
+            frontQuad(Rb5, Rb6, R6, R5)
+            frontQuad(Rb6, Rb7, R7s, R6)
+            frontQuad(Rb7, Rb0, R0, R7)
+        );
+    }
+
+    back
+    {
+        type            empty;
+        faces
+        (
+            backQuad(r0, r1, rb1, rb0)
+            backQuad(r1, r2s, rb2, rb1)
+            backQuad(r2, r3, rb3, rb2)
+            backQuad(r3, r4s, rb4, rb3)
+            backQuad(r4, r5, rb5, rb4)
+            backQuad(r5, r6s, rb6, rb5)
+            backQuad(r6, r7, rb7, rb6)
+            backQuad(r7, r0s, rb0, rb7)
+            backQuad(rb0, rb1, ri1, ri0)
+            backQuad(rb1, rb2, ri2, ri1)
+            backQuad(rb2, rb3, ri3, ri2)
+            backQuad(rb3, rb4, ri4, ri3)
+            backQuad(rb4, rb5, ri5, ri4)
+            backQuad(rb5, rb6, ri6, ri5)
+            backQuad(rb6, rb7, ri7, ri6)
+            backQuad(rb7, rb0, ri0, ri7)
+            backQuad(ris0, ris1, Rb1, Rb0)
+            backQuad(ris1, ris2, Rb2, Rb1)
+            backQuad(ris2, ris3, Rb3, Rb2)
+            backQuad(ris3, ris4, Rb4, Rb3)
+            backQuad(ris4, ris5, Rb5, Rb4)
+            backQuad(ris5, ris6, Rb6, Rb5)
+            backQuad(ris6, ris7, Rb7, Rb6)
+            backQuad(ris7, ris0, Rb0, Rb7)
+            backQuad(Rb0, Rb1, R1s, R0)
+            backQuad(Rb1, Rb2, R2, R1)
+            backQuad(Rb2, Rb3, R3s, R2)
+            backQuad(Rb3, Rb4, R4, R3)
+            backQuad(Rb4, Rb5, R5s, R4)
+            backQuad(Rb5, Rb6, R6, R5)
+            backQuad(Rb6, Rb7, R7s, R6)
+            backQuad(Rb7, Rb0, R0, R7)
+        );
+    }
+);
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/constant/polyMesh/boundary b/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/constant/polyMesh/boundary
new file mode 100644
index 00000000000..baf50c92d09
--- /dev/null
+++ b/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/constant/polyMesh/boundary
@@ -0,0 +1,70 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  2.3.x                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       polyBoundaryMesh;
+    location    "constant/polyMesh";
+    object      boundary;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+6
+(
+    rotor
+    {
+        type            wall;
+        inGroups        1(wall);
+        nFaces          192;
+        startFace       5856;
+    }
+    stator
+    {
+        type            wall;
+        inGroups        1(wall);
+        nFaces          192;
+        startFace       6048;
+    }
+    AMI1
+    {
+        type            cyclicAMI;
+        inGroups        1(cyclicAMI);
+        nFaces          96;
+        startFace       6240;
+        matchTolerance  0.0001;
+        transform       noOrdering;
+        neighbourPatch  AMI2;
+    }
+    AMI2
+    {
+        type            cyclicAMI;
+        inGroups        1(cyclicAMI);
+        nFaces          96;
+        startFace       6336;
+        matchTolerance  0.0001;
+        transform       noOrdering;
+        neighbourPatch  AMI1;
+    }
+    front
+    {
+        type            empty;
+        inGroups        1(empty);
+        nFaces          3072;
+        startFace       6432;
+    }
+    back
+    {
+        type            empty;
+        inGroups        1(empty);
+        nFaces          3072;
+        startFace       9504;
+    }
+)
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/constant/transportProperties b/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/constant/transportProperties
new file mode 100644
index 00000000000..79b59a2cbbd
--- /dev/null
+++ b/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/constant/transportProperties
@@ -0,0 +1,60 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  2.3.x                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      transportProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+phases
+(
+     water
+     {
+         transportModel Newtonian;
+         nu nu [ 0 2 -1 0 0 0 0 ] 1e-06;
+         rho rho [ 1 -3 0 0 0 0 0 ] 1000;
+     }
+
+     oil
+     {
+         transportModel Newtonian;
+         nu nu [ 0 2 -1 0 0 0 0 ] 1e-06;
+         rho rho [ 1 -3 0 0 0 0 0 ] 500;
+     }
+
+     mercury
+     {
+         transportModel Newtonian;
+         nu nu [ 0 2 -1 0 0 0 0 ] 1.125e-07;
+         rho rho [ 1 -3 0 0 0 0 0 ] 13529;
+     }
+
+     air
+     {
+         transportModel Newtonian;
+         nu nu [ 0 2 -1 0 0 0 0 ] 1.48e-05;
+         rho rho [ 1 -3 0 0 0 0 0 ] 1;
+     }
+);
+
+sigmas
+(
+    (air water) 0.07
+    (air oil) 0.07
+    (air mercury) 0.07
+    (water oil) 0.07
+    (water mercury) 0.07
+    (oil mercury) 0.07
+);
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/constant/triSurface/projectionSurface.stl b/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/constant/triSurface/projectionSurface.stl
new file mode 100644
index 00000000000..94883275879
--- /dev/null
+++ b/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/constant/triSurface/projectionSurface.stl
@@ -0,0 +1,1346 @@
+solid AMI1
+  facet normal 0.999464 -0.0327281 0
+    outer loop
+       vertex 0.06 0 0
+       vertex 0.06 0 0.01
+       vertex 0.0598715 -0.00392419 0.01
+    endloop
+  endfacet
+  facet normal 0.999464 -0.0327281 0
+    outer loop
+       vertex 0.0598715 -0.00392419 0.01
+       vertex 0.0598715 -0.00392419 0
+       vertex 0.06 0 0
+    endloop
+  endfacet
+  facet normal 0.995186 -0.0980062 0
+    outer loop
+       vertex 0.0598715 -0.00392419 0
+       vertex 0.0598715 -0.00392419 0.01
+       vertex 0.0594867 -0.00783157 0.01
+    endloop
+  endfacet
+  facet normal 0.995186 -0.0980062 0
+    outer loop
+       vertex 0.0594867 -0.00783157 0.01
+       vertex 0.0594867 -0.00783157 0
+       vertex 0.0598715 -0.00392419 0
+    endloop
+  endfacet
+  facet normal 0.986642 -0.162902 0
+    outer loop
+       vertex 0.0594867 -0.00783157 0
+       vertex 0.0594867 -0.00783157 0.01
+       vertex 0.0588471 -0.0117054 0.01
+    endloop
+  endfacet
+  facet normal 0.986642 -0.162902 0
+    outer loop
+       vertex 0.0588471 -0.0117054 0.01
+       vertex 0.0588471 -0.0117054 0
+       vertex 0.0594867 -0.00783157 0
+    endloop
+  endfacet
+  facet normal 0.973875 -0.227085 0
+    outer loop
+       vertex 0.0588471 -0.0117054 0
+       vertex 0.0588471 -0.0117054 0.01
+       vertex 0.0579555 -0.0155291 0.01
+    endloop
+  endfacet
+  facet normal 0.973875 -0.227085 0
+    outer loop
+       vertex 0.0579555 -0.0155291 0.01
+       vertex 0.0579555 -0.0155291 0
+       vertex 0.0588471 -0.0117054 0
+    endloop
+  endfacet
+  facet normal 0.956945 -0.29027 0
+    outer loop
+       vertex 0.0579555 -0.0155291 0
+       vertex 0.0579555 -0.0155291 0.01
+       vertex 0.0568158 -0.0192864 0.01
+    endloop
+  endfacet
+  facet normal 0.956945 -0.29027 0
+    outer loop
+       vertex 0.0568158 -0.0192864 0.01
+       vertex 0.0568158 -0.0192864 0
+       vertex 0.0579555 -0.0155291 0
+    endloop
+  endfacet
+  facet normal 0.935908 -0.352245 0
+    outer loop
+       vertex 0.0568158 -0.0192864 0
+       vertex 0.0568158 -0.0192864 0.01
+       vertex 0.0554328 -0.022961 0.01
+    endloop
+  endfacet
+  facet normal 0.935908 -0.352245 0
+    outer loop
+       vertex 0.0554328 -0.022961 0.01
+       vertex 0.0554328 -0.022961 0
+       vertex 0.0568158 -0.0192864 0
+    endloop
+  endfacet
+  facet normal 0.910864 -0.412707 0
+    outer loop
+       vertex 0.0554328 -0.022961 0
+       vertex 0.0554328 -0.022961 0.01
+       vertex 0.0538124 -0.0265373 0.01
+    endloop
+  endfacet
+  facet normal 0.910864 -0.412707 0
+    outer loop
+       vertex 0.0538124 -0.0265373 0.01
+       vertex 0.0538124 -0.0265373 0
+       vertex 0.0554328 -0.022961 0
+    endloop
+  endfacet
+  facet normal 0.881916 -0.471406 0
+    outer loop
+       vertex 0.0538124 -0.0265373 0
+       vertex 0.0538124 -0.0265373 0.01
+       vertex 0.0519615 -0.03 0.01
+    endloop
+  endfacet
+  facet normal 0.881916 -0.471406 0
+    outer loop
+       vertex 0.0519615 -0.03 0.01
+       vertex 0.0519615 -0.03 0
+       vertex 0.0538124 -0.0265373 0
+    endloop
+  endfacet
+  facet normal 0.849207 -0.528061 0
+    outer loop
+       vertex 0.0519615 -0.03 0
+       vertex 0.0519615 -0.03 0.01
+       vertex 0.0498882 -0.0333342 0.01
+    endloop
+  endfacet
+  facet normal 0.849207 -0.528061 0
+    outer loop
+       vertex 0.0498882 -0.0333342 0.01
+       vertex 0.0498882 -0.0333342 0
+       vertex 0.0519615 -0.03 0
+    endloop
+  endfacet
+  facet normal 0.812846 -0.582478 0
+    outer loop
+       vertex 0.0498882 -0.0333342 0
+       vertex 0.0498882 -0.0333342 0.01
+       vertex 0.0476012 -0.0365257 0.01
+    endloop
+  endfacet
+  facet normal 0.812846 -0.582478 0
+    outer loop
+       vertex 0.0476012 -0.0365257 0.01
+       vertex 0.0476012 -0.0365257 0
+       vertex 0.0498882 -0.0333342 0
+    endloop
+  endfacet
+  facet normal 0.773005 -0.634399 0
+    outer loop
+       vertex 0.0476012 -0.0365257 0
+       vertex 0.0476012 -0.0365257 0.01
+       vertex 0.0451104 -0.0395607 0.01
+    endloop
+  endfacet
+  facet normal 0.773005 -0.634399 0
+    outer loop
+       vertex 0.0451104 -0.0395607 0.01
+       vertex 0.0451104 -0.0395607 0
+       vertex 0.0476012 -0.0365257 0
+    endloop
+  endfacet
+  facet normal 0.729867 -0.683589 0
+    outer loop
+       vertex 0.0451104 -0.0395607 0
+       vertex 0.0451104 -0.0395607 0.01
+       vertex 0.0424264 -0.0424264 0.01
+    endloop
+  endfacet
+  facet normal 0.729867 -0.683589 0
+    outer loop
+       vertex 0.0424264 -0.0424264 0.01
+       vertex 0.0424264 -0.0424264 0
+       vertex 0.0451104 -0.0395607 0
+    endloop
+  endfacet
+  facet normal 0.683589 -0.729867 0
+    outer loop
+       vertex 0.0424264 -0.0424264 0
+       vertex 0.0424264 -0.0424264 0.01
+       vertex 0.0395607 -0.0451104 0.01
+    endloop
+  endfacet
+  facet normal 0.683589 -0.729867 0
+    outer loop
+       vertex 0.0395607 -0.0451104 0.01
+       vertex 0.0395607 -0.0451104 0
+       vertex 0.0424264 -0.0424264 0
+    endloop
+  endfacet
+  facet normal 0.634399 -0.773005 0
+    outer loop
+       vertex 0.0395607 -0.0451104 0
+       vertex 0.0395607 -0.0451104 0.01
+       vertex 0.0365257 -0.0476012 0.01
+    endloop
+  endfacet
+  facet normal 0.634399 -0.773005 0
+    outer loop
+       vertex 0.0365257 -0.0476012 0.01
+       vertex 0.0365257 -0.0476012 0
+       vertex 0.0395607 -0.0451104 0
+    endloop
+  endfacet
+  facet normal 0.582478 -0.812846 0
+    outer loop
+       vertex 0.0365257 -0.0476012 0
+       vertex 0.0365257 -0.0476012 0.01
+       vertex 0.0333342 -0.0498882 0.01
+    endloop
+  endfacet
+  facet normal 0.582478 -0.812846 0
+    outer loop
+       vertex 0.0333342 -0.0498882 0.01
+       vertex 0.0333342 -0.0498882 0
+       vertex 0.0365257 -0.0476012 0
+    endloop
+  endfacet
+  facet normal 0.528061 -0.849207 0
+    outer loop
+       vertex 0.0333342 -0.0498882 0
+       vertex 0.0333342 -0.0498882 0.01
+       vertex 0.03 -0.0519615 0.01
+    endloop
+  endfacet
+  facet normal 0.528061 -0.849207 0
+    outer loop
+       vertex 0.03 -0.0519615 0.01
+       vertex 0.03 -0.0519615 0
+       vertex 0.0333342 -0.0498882 0
+    endloop
+  endfacet
+  facet normal 0.471406 -0.881916 0
+    outer loop
+       vertex 0.03 -0.0519615 0
+       vertex 0.03 -0.0519615 0.01
+       vertex 0.0265373 -0.0538124 0.01
+    endloop
+  endfacet
+  facet normal 0.471406 -0.881916 0
+    outer loop
+       vertex 0.0265373 -0.0538124 0.01
+       vertex 0.0265373 -0.0538124 0
+       vertex 0.03 -0.0519615 0
+    endloop
+  endfacet
+  facet normal 0.412707 -0.910864 0
+    outer loop
+       vertex 0.0265373 -0.0538124 0
+       vertex 0.0265373 -0.0538124 0.01
+       vertex 0.022961 -0.0554328 0.01
+    endloop
+  endfacet
+  facet normal 0.412707 -0.910864 0
+    outer loop
+       vertex 0.022961 -0.0554328 0.01
+       vertex 0.022961 -0.0554328 0
+       vertex 0.0265373 -0.0538124 0
+    endloop
+  endfacet
+  facet normal 0.352245 -0.935908 0
+    outer loop
+       vertex 0.022961 -0.0554328 0
+       vertex 0.022961 -0.0554328 0.01
+       vertex 0.0192864 -0.0568158 0.01
+    endloop
+  endfacet
+  facet normal 0.352245 -0.935908 0
+    outer loop
+       vertex 0.0192864 -0.0568158 0.01
+       vertex 0.0192864 -0.0568158 0
+       vertex 0.022961 -0.0554328 0
+    endloop
+  endfacet
+  facet normal 0.29027 -0.956945 0
+    outer loop
+       vertex 0.0192864 -0.0568158 0
+       vertex 0.0192864 -0.0568158 0.01
+       vertex 0.0155291 -0.0579555 0.01
+    endloop
+  endfacet
+  facet normal 0.29027 -0.956945 0
+    outer loop
+       vertex 0.0155291 -0.0579555 0.01
+       vertex 0.0155291 -0.0579555 0
+       vertex 0.0192864 -0.0568158 0
+    endloop
+  endfacet
+  facet normal 0.227085 -0.973875 0
+    outer loop
+       vertex 0.0155291 -0.0579555 0
+       vertex 0.0155291 -0.0579555 0.01
+       vertex 0.0117054 -0.0588471 0.01
+    endloop
+  endfacet
+  facet normal 0.227085 -0.973875 0
+    outer loop
+       vertex 0.0117054 -0.0588471 0.01
+       vertex 0.0117054 -0.0588471 0
+       vertex 0.0155291 -0.0579555 0
+    endloop
+  endfacet
+  facet normal 0.162902 -0.986642 0
+    outer loop
+       vertex 0.0117054 -0.0588471 0
+       vertex 0.0117054 -0.0588471 0.01
+       vertex 0.00783157 -0.0594867 0.01
+    endloop
+  endfacet
+  facet normal 0.162902 -0.986642 0
+    outer loop
+       vertex 0.00783157 -0.0594867 0.01
+       vertex 0.00783157 -0.0594867 0
+       vertex 0.0117054 -0.0588471 0
+    endloop
+  endfacet
+  facet normal 0.0980062 -0.995186 0
+    outer loop
+       vertex 0.00783157 -0.0594867 0
+       vertex 0.00783157 -0.0594867 0.01
+       vertex 0.00392419 -0.0598715 0.01
+    endloop
+  endfacet
+  facet normal 0.0980062 -0.995186 0
+    outer loop
+       vertex 0.00392419 -0.0598715 0.01
+       vertex 0.00392419 -0.0598715 0
+       vertex 0.00783157 -0.0594867 0
+    endloop
+  endfacet
+  facet normal 0.0327281 -0.999464 0
+    outer loop
+       vertex 0.00392419 -0.0598715 0
+       vertex 0.00392419 -0.0598715 0.01
+       vertex 1.07694e-10 -0.06 0.01
+    endloop
+  endfacet
+  facet normal 0.0327281 -0.999464 0
+    outer loop
+       vertex 1.07694e-10 -0.06 0.01
+       vertex 1.07694e-10 -0.06 0
+       vertex 0.00392419 -0.0598715 0
+    endloop
+  endfacet
+  facet normal -0.0327281 -0.999464 0
+    outer loop
+       vertex 1.07694e-10 -0.06 0
+       vertex 1.07694e-10 -0.06 0.01
+       vertex -0.00392419 -0.0598715 0.01
+    endloop
+  endfacet
+  facet normal -0.0327281 -0.999464 -0
+    outer loop
+       vertex -0.00392419 -0.0598715 0.01
+       vertex -0.00392419 -0.0598715 0
+       vertex 1.07694e-10 -0.06 0
+    endloop
+  endfacet
+  facet normal -0.0980062 -0.995186 0
+    outer loop
+       vertex -0.00392419 -0.0598715 0
+       vertex -0.00392419 -0.0598715 0.01
+       vertex -0.00783157 -0.0594867 0.01
+    endloop
+  endfacet
+  facet normal -0.0980062 -0.995186 -0
+    outer loop
+       vertex -0.00783157 -0.0594867 0.01
+       vertex -0.00783157 -0.0594867 0
+       vertex -0.00392419 -0.0598715 0
+    endloop
+  endfacet
+  facet normal -0.162902 -0.986642 0
+    outer loop
+       vertex -0.00783157 -0.0594867 0
+       vertex -0.00783157 -0.0594867 0.01
+       vertex -0.0117054 -0.0588471 0.01
+    endloop
+  endfacet
+  facet normal -0.162902 -0.986642 -0
+    outer loop
+       vertex -0.0117054 -0.0588471 0.01
+       vertex -0.0117054 -0.0588471 0
+       vertex -0.00783157 -0.0594867 0
+    endloop
+  endfacet
+  facet normal -0.227085 -0.973875 0
+    outer loop
+       vertex -0.0117054 -0.0588471 0
+       vertex -0.0117054 -0.0588471 0.01
+       vertex -0.0155291 -0.0579555 0.01
+    endloop
+  endfacet
+  facet normal -0.227085 -0.973875 -0
+    outer loop
+       vertex -0.0155291 -0.0579555 0.01
+       vertex -0.0155291 -0.0579555 0
+       vertex -0.0117054 -0.0588471 0
+    endloop
+  endfacet
+  facet normal -0.29027 -0.956945 0
+    outer loop
+       vertex -0.0155291 -0.0579555 0
+       vertex -0.0155291 -0.0579555 0.01
+       vertex -0.0192864 -0.0568158 0.01
+    endloop
+  endfacet
+  facet normal -0.29027 -0.956945 -0
+    outer loop
+       vertex -0.0192864 -0.0568158 0.01
+       vertex -0.0192864 -0.0568158 0
+       vertex -0.0155291 -0.0579555 0
+    endloop
+  endfacet
+  facet normal -0.352245 -0.935908 0
+    outer loop
+       vertex -0.0192864 -0.0568158 0
+       vertex -0.0192864 -0.0568158 0.01
+       vertex -0.022961 -0.0554328 0.01
+    endloop
+  endfacet
+  facet normal -0.352245 -0.935908 -0
+    outer loop
+       vertex -0.022961 -0.0554328 0.01
+       vertex -0.022961 -0.0554328 0
+       vertex -0.0192864 -0.0568158 0
+    endloop
+  endfacet
+  facet normal -0.412707 -0.910864 0
+    outer loop
+       vertex -0.022961 -0.0554328 0
+       vertex -0.022961 -0.0554328 0.01
+       vertex -0.0265373 -0.0538124 0.01
+    endloop
+  endfacet
+  facet normal -0.412707 -0.910864 -0
+    outer loop
+       vertex -0.0265373 -0.0538124 0.01
+       vertex -0.0265373 -0.0538124 0
+       vertex -0.022961 -0.0554328 0
+    endloop
+  endfacet
+  facet normal -0.471406 -0.881916 0
+    outer loop
+       vertex -0.0265373 -0.0538124 0
+       vertex -0.0265373 -0.0538124 0.01
+       vertex -0.03 -0.0519615 0.01
+    endloop
+  endfacet
+  facet normal -0.471406 -0.881916 -0
+    outer loop
+       vertex -0.03 -0.0519615 0.01
+       vertex -0.03 -0.0519615 0
+       vertex -0.0265373 -0.0538124 0
+    endloop
+  endfacet
+  facet normal -0.528061 -0.849207 0
+    outer loop
+       vertex -0.03 -0.0519615 0
+       vertex -0.03 -0.0519615 0.01
+       vertex -0.0333342 -0.0498882 0.01
+    endloop
+  endfacet
+  facet normal -0.528061 -0.849207 -0
+    outer loop
+       vertex -0.0333342 -0.0498882 0.01
+       vertex -0.0333342 -0.0498882 0
+       vertex -0.03 -0.0519615 0
+    endloop
+  endfacet
+  facet normal -0.582478 -0.812846 0
+    outer loop
+       vertex -0.0333342 -0.0498882 0
+       vertex -0.0333342 -0.0498882 0.01
+       vertex -0.0365257 -0.0476012 0.01
+    endloop
+  endfacet
+  facet normal -0.582478 -0.812846 -0
+    outer loop
+       vertex -0.0365257 -0.0476012 0.01
+       vertex -0.0365257 -0.0476012 0
+       vertex -0.0333342 -0.0498882 0
+    endloop
+  endfacet
+  facet normal -0.634399 -0.773005 0
+    outer loop
+       vertex -0.0365257 -0.0476012 0
+       vertex -0.0365257 -0.0476012 0.01
+       vertex -0.0395607 -0.0451104 0.01
+    endloop
+  endfacet
+  facet normal -0.634399 -0.773005 -0
+    outer loop
+       vertex -0.0395607 -0.0451104 0.01
+       vertex -0.0395607 -0.0451104 0
+       vertex -0.0365257 -0.0476012 0
+    endloop
+  endfacet
+  facet normal -0.683589 -0.729867 0
+    outer loop
+       vertex -0.0395607 -0.0451104 0
+       vertex -0.0395607 -0.0451104 0.01
+       vertex -0.0424264 -0.0424264 0.01
+    endloop
+  endfacet
+  facet normal -0.683589 -0.729867 -0
+    outer loop
+       vertex -0.0424264 -0.0424264 0.01
+       vertex -0.0424264 -0.0424264 0
+       vertex -0.0395607 -0.0451104 0
+    endloop
+  endfacet
+  facet normal -0.729867 -0.683589 0
+    outer loop
+       vertex -0.0424264 -0.0424264 0
+       vertex -0.0424264 -0.0424264 0.01
+       vertex -0.0451104 -0.0395607 0.01
+    endloop
+  endfacet
+  facet normal -0.729867 -0.683589 -0
+    outer loop
+       vertex -0.0451104 -0.0395607 0.01
+       vertex -0.0451104 -0.0395607 0
+       vertex -0.0424264 -0.0424264 0
+    endloop
+  endfacet
+  facet normal -0.773005 -0.634399 0
+    outer loop
+       vertex -0.0451104 -0.0395607 0
+       vertex -0.0451104 -0.0395607 0.01
+       vertex -0.0476012 -0.0365257 0.01
+    endloop
+  endfacet
+  facet normal -0.773005 -0.634399 -0
+    outer loop
+       vertex -0.0476012 -0.0365257 0.01
+       vertex -0.0476012 -0.0365257 0
+       vertex -0.0451104 -0.0395607 0
+    endloop
+  endfacet
+  facet normal -0.812846 -0.582478 0
+    outer loop
+       vertex -0.0476012 -0.0365257 0
+       vertex -0.0476012 -0.0365257 0.01
+       vertex -0.0498882 -0.0333342 0.01
+    endloop
+  endfacet
+  facet normal -0.812846 -0.582478 -0
+    outer loop
+       vertex -0.0498882 -0.0333342 0.01
+       vertex -0.0498882 -0.0333342 0
+       vertex -0.0476012 -0.0365257 0
+    endloop
+  endfacet
+  facet normal -0.849207 -0.528061 0
+    outer loop
+       vertex -0.0498882 -0.0333342 0
+       vertex -0.0498882 -0.0333342 0.01
+       vertex -0.0519615 -0.03 0.01
+    endloop
+  endfacet
+  facet normal -0.849207 -0.528061 -0
+    outer loop
+       vertex -0.0519615 -0.03 0.01
+       vertex -0.0519615 -0.03 0
+       vertex -0.0498882 -0.0333342 0
+    endloop
+  endfacet
+  facet normal -0.881916 -0.471406 0
+    outer loop
+       vertex -0.0519615 -0.03 0
+       vertex -0.0519615 -0.03 0.01
+       vertex -0.0538124 -0.0265373 0.01
+    endloop
+  endfacet
+  facet normal -0.881916 -0.471406 -0
+    outer loop
+       vertex -0.0538124 -0.0265373 0.01
+       vertex -0.0538124 -0.0265373 0
+       vertex -0.0519615 -0.03 0
+    endloop
+  endfacet
+  facet normal -0.910864 -0.412707 0
+    outer loop
+       vertex -0.0538124 -0.0265373 0
+       vertex -0.0538124 -0.0265373 0.01
+       vertex -0.0554328 -0.022961 0.01
+    endloop
+  endfacet
+  facet normal -0.910864 -0.412707 -0
+    outer loop
+       vertex -0.0554328 -0.022961 0.01
+       vertex -0.0554328 -0.022961 0
+       vertex -0.0538124 -0.0265373 0
+    endloop
+  endfacet
+  facet normal -0.935908 -0.352245 0
+    outer loop
+       vertex -0.0554328 -0.022961 0
+       vertex -0.0554328 -0.022961 0.01
+       vertex -0.0568158 -0.0192864 0.01
+    endloop
+  endfacet
+  facet normal -0.935908 -0.352245 -0
+    outer loop
+       vertex -0.0568158 -0.0192864 0.01
+       vertex -0.0568158 -0.0192864 0
+       vertex -0.0554328 -0.022961 0
+    endloop
+  endfacet
+  facet normal -0.956945 -0.29027 0
+    outer loop
+       vertex -0.0568158 -0.0192864 0
+       vertex -0.0568158 -0.0192864 0.01
+       vertex -0.0579555 -0.0155291 0.01
+    endloop
+  endfacet
+  facet normal -0.956945 -0.29027 -0
+    outer loop
+       vertex -0.0579555 -0.0155291 0.01
+       vertex -0.0579555 -0.0155291 0
+       vertex -0.0568158 -0.0192864 0
+    endloop
+  endfacet
+  facet normal -0.973875 -0.227085 0
+    outer loop
+       vertex -0.0579555 -0.0155291 0
+       vertex -0.0579555 -0.0155291 0.01
+       vertex -0.0588471 -0.0117054 0.01
+    endloop
+  endfacet
+  facet normal -0.973875 -0.227085 -0
+    outer loop
+       vertex -0.0588471 -0.0117054 0.01
+       vertex -0.0588471 -0.0117054 0
+       vertex -0.0579555 -0.0155291 0
+    endloop
+  endfacet
+  facet normal -0.986642 -0.162902 0
+    outer loop
+       vertex -0.0588471 -0.0117054 0
+       vertex -0.0588471 -0.0117054 0.01
+       vertex -0.0594867 -0.00783157 0.01
+    endloop
+  endfacet
+  facet normal -0.986642 -0.162902 -0
+    outer loop
+       vertex -0.0594867 -0.00783157 0.01
+       vertex -0.0594867 -0.00783157 0
+       vertex -0.0588471 -0.0117054 0
+    endloop
+  endfacet
+  facet normal -0.995186 -0.0980062 0
+    outer loop
+       vertex -0.0594867 -0.00783157 0
+       vertex -0.0594867 -0.00783157 0.01
+       vertex -0.0598715 -0.00392419 0.01
+    endloop
+  endfacet
+  facet normal -0.995186 -0.0980062 -0
+    outer loop
+       vertex -0.0598715 -0.00392419 0.01
+       vertex -0.0598715 -0.00392419 0
+       vertex -0.0594867 -0.00783157 0
+    endloop
+  endfacet
+  facet normal -0.999464 -0.0327281 0
+    outer loop
+       vertex -0.0598715 -0.00392419 0
+       vertex -0.0598715 -0.00392419 0.01
+       vertex -0.06 2.15388e-10 0.01
+    endloop
+  endfacet
+  facet normal -0.999464 -0.0327281 -0
+    outer loop
+       vertex -0.06 2.15388e-10 0.01
+       vertex -0.06 2.15388e-10 0
+       vertex -0.0598715 -0.00392419 0
+    endloop
+  endfacet
+  facet normal -0.999464 0.0327281 0
+    outer loop
+       vertex -0.06 2.15388e-10 0
+       vertex -0.06 2.15388e-10 0.01
+       vertex -0.0598715 0.00392419 0.01
+    endloop
+  endfacet
+  facet normal -0.999464 0.0327281 0
+    outer loop
+       vertex -0.0598715 0.00392419 0.01
+       vertex -0.0598715 0.00392419 0
+       vertex -0.06 2.15388e-10 0
+    endloop
+  endfacet
+  facet normal -0.995186 0.0980062 0
+    outer loop
+       vertex -0.0598715 0.00392419 0
+       vertex -0.0598715 0.00392419 0.01
+       vertex -0.0594867 0.00783157 0.01
+    endloop
+  endfacet
+  facet normal -0.995186 0.0980062 0
+    outer loop
+       vertex -0.0594867 0.00783157 0.01
+       vertex -0.0594867 0.00783157 0
+       vertex -0.0598715 0.00392419 0
+    endloop
+  endfacet
+  facet normal -0.986642 0.162902 0
+    outer loop
+       vertex -0.0594867 0.00783157 0
+       vertex -0.0594867 0.00783157 0.01
+       vertex -0.0588471 0.0117054 0.01
+    endloop
+  endfacet
+  facet normal -0.986642 0.162902 0
+    outer loop
+       vertex -0.0588471 0.0117054 0.01
+       vertex -0.0588471 0.0117054 0
+       vertex -0.0594867 0.00783157 0
+    endloop
+  endfacet
+  facet normal -0.973875 0.227085 0
+    outer loop
+       vertex -0.0588471 0.0117054 0
+       vertex -0.0588471 0.0117054 0.01
+       vertex -0.0579555 0.0155291 0.01
+    endloop
+  endfacet
+  facet normal -0.973875 0.227085 0
+    outer loop
+       vertex -0.0579555 0.0155291 0.01
+       vertex -0.0579555 0.0155291 0
+       vertex -0.0588471 0.0117054 0
+    endloop
+  endfacet
+  facet normal -0.956945 0.29027 0
+    outer loop
+       vertex -0.0579555 0.0155291 0
+       vertex -0.0579555 0.0155291 0.01
+       vertex -0.0568158 0.0192864 0.01
+    endloop
+  endfacet
+  facet normal -0.956945 0.29027 0
+    outer loop
+       vertex -0.0568158 0.0192864 0.01
+       vertex -0.0568158 0.0192864 0
+       vertex -0.0579555 0.0155291 0
+    endloop
+  endfacet
+  facet normal -0.935908 0.352245 0
+    outer loop
+       vertex -0.0568158 0.0192864 0
+       vertex -0.0568158 0.0192864 0.01
+       vertex -0.0554328 0.022961 0.01
+    endloop
+  endfacet
+  facet normal -0.935908 0.352245 0
+    outer loop
+       vertex -0.0554328 0.022961 0.01
+       vertex -0.0554328 0.022961 0
+       vertex -0.0568158 0.0192864 0
+    endloop
+  endfacet
+  facet normal -0.910864 0.412707 0
+    outer loop
+       vertex -0.0554328 0.022961 0
+       vertex -0.0554328 0.022961 0.01
+       vertex -0.0538124 0.0265373 0.01
+    endloop
+  endfacet
+  facet normal -0.910864 0.412707 0
+    outer loop
+       vertex -0.0538124 0.0265373 0.01
+       vertex -0.0538124 0.0265373 0
+       vertex -0.0554328 0.022961 0
+    endloop
+  endfacet
+  facet normal -0.881916 0.471406 0
+    outer loop
+       vertex -0.0538124 0.0265373 0
+       vertex -0.0538124 0.0265373 0.01
+       vertex -0.0519615 0.03 0.01
+    endloop
+  endfacet
+  facet normal -0.881916 0.471406 0
+    outer loop
+       vertex -0.0519615 0.03 0.01
+       vertex -0.0519615 0.03 0
+       vertex -0.0538124 0.0265373 0
+    endloop
+  endfacet
+  facet normal -0.849207 0.528061 0
+    outer loop
+       vertex -0.0519615 0.03 0
+       vertex -0.0519615 0.03 0.01
+       vertex -0.0498882 0.0333342 0.01
+    endloop
+  endfacet
+  facet normal -0.849207 0.528061 0
+    outer loop
+       vertex -0.0498882 0.0333342 0.01
+       vertex -0.0498882 0.0333342 0
+       vertex -0.0519615 0.03 0
+    endloop
+  endfacet
+  facet normal -0.812846 0.582478 0
+    outer loop
+       vertex -0.0498882 0.0333342 0
+       vertex -0.0498882 0.0333342 0.01
+       vertex -0.0476012 0.0365257 0.01
+    endloop
+  endfacet
+  facet normal -0.812846 0.582478 0
+    outer loop
+       vertex -0.0476012 0.0365257 0.01
+       vertex -0.0476012 0.0365257 0
+       vertex -0.0498882 0.0333342 0
+    endloop
+  endfacet
+  facet normal -0.773005 0.634399 0
+    outer loop
+       vertex -0.0476012 0.0365257 0
+       vertex -0.0476012 0.0365257 0.01
+       vertex -0.0451104 0.0395607 0.01
+    endloop
+  endfacet
+  facet normal -0.773005 0.634399 0
+    outer loop
+       vertex -0.0451104 0.0395607 0.01
+       vertex -0.0451104 0.0395607 0
+       vertex -0.0476012 0.0365257 0
+    endloop
+  endfacet
+  facet normal -0.729867 0.683589 0
+    outer loop
+       vertex -0.0451104 0.0395607 0
+       vertex -0.0451104 0.0395607 0.01
+       vertex -0.0424264 0.0424264 0.01
+    endloop
+  endfacet
+  facet normal -0.729867 0.683589 0
+    outer loop
+       vertex -0.0424264 0.0424264 0.01
+       vertex -0.0424264 0.0424264 0
+       vertex -0.0451104 0.0395607 0
+    endloop
+  endfacet
+  facet normal -0.683589 0.729867 0
+    outer loop
+       vertex -0.0424264 0.0424264 0
+       vertex -0.0424264 0.0424264 0.01
+       vertex -0.0395607 0.0451104 0.01
+    endloop
+  endfacet
+  facet normal -0.683589 0.729867 0
+    outer loop
+       vertex -0.0395607 0.0451104 0.01
+       vertex -0.0395607 0.0451104 0
+       vertex -0.0424264 0.0424264 0
+    endloop
+  endfacet
+  facet normal -0.634399 0.773005 0
+    outer loop
+       vertex -0.0395607 0.0451104 0
+       vertex -0.0395607 0.0451104 0.01
+       vertex -0.0365257 0.0476012 0.01
+    endloop
+  endfacet
+  facet normal -0.634399 0.773005 0
+    outer loop
+       vertex -0.0365257 0.0476012 0.01
+       vertex -0.0365257 0.0476012 0
+       vertex -0.0395607 0.0451104 0
+    endloop
+  endfacet
+  facet normal -0.582478 0.812846 0
+    outer loop
+       vertex -0.0365257 0.0476012 0
+       vertex -0.0365257 0.0476012 0.01
+       vertex -0.0333342 0.0498882 0.01
+    endloop
+  endfacet
+  facet normal -0.582478 0.812846 0
+    outer loop
+       vertex -0.0333342 0.0498882 0.01
+       vertex -0.0333342 0.0498882 0
+       vertex -0.0365257 0.0476012 0
+    endloop
+  endfacet
+  facet normal -0.528061 0.849207 0
+    outer loop
+       vertex -0.0333342 0.0498882 0
+       vertex -0.0333342 0.0498882 0.01
+       vertex -0.03 0.0519615 0.01
+    endloop
+  endfacet
+  facet normal -0.528061 0.849207 0
+    outer loop
+       vertex -0.03 0.0519615 0.01
+       vertex -0.03 0.0519615 0
+       vertex -0.0333342 0.0498882 0
+    endloop
+  endfacet
+  facet normal -0.471406 0.881916 0
+    outer loop
+       vertex -0.03 0.0519615 0
+       vertex -0.03 0.0519615 0.01
+       vertex -0.0265373 0.0538124 0.01
+    endloop
+  endfacet
+  facet normal -0.471406 0.881916 0
+    outer loop
+       vertex -0.0265373 0.0538124 0.01
+       vertex -0.0265373 0.0538124 0
+       vertex -0.03 0.0519615 0
+    endloop
+  endfacet
+  facet normal -0.412707 0.910864 0
+    outer loop
+       vertex -0.0265373 0.0538124 0
+       vertex -0.0265373 0.0538124 0.01
+       vertex -0.022961 0.0554328 0.01
+    endloop
+  endfacet
+  facet normal -0.412707 0.910864 0
+    outer loop
+       vertex -0.022961 0.0554328 0.01
+       vertex -0.022961 0.0554328 0
+       vertex -0.0265373 0.0538124 0
+    endloop
+  endfacet
+  facet normal -0.352245 0.935908 0
+    outer loop
+       vertex -0.022961 0.0554328 0
+       vertex -0.022961 0.0554328 0.01
+       vertex -0.0192864 0.0568158 0.01
+    endloop
+  endfacet
+  facet normal -0.352245 0.935908 0
+    outer loop
+       vertex -0.0192864 0.0568158 0.01
+       vertex -0.0192864 0.0568158 0
+       vertex -0.022961 0.0554328 0
+    endloop
+  endfacet
+  facet normal -0.29027 0.956945 0
+    outer loop
+       vertex -0.0192864 0.0568158 0
+       vertex -0.0192864 0.0568158 0.01
+       vertex -0.0155291 0.0579555 0.01
+    endloop
+  endfacet
+  facet normal -0.29027 0.956945 0
+    outer loop
+       vertex -0.0155291 0.0579555 0.01
+       vertex -0.0155291 0.0579555 0
+       vertex -0.0192864 0.0568158 0
+    endloop
+  endfacet
+  facet normal -0.227085 0.973875 0
+    outer loop
+       vertex -0.0155291 0.0579555 0
+       vertex -0.0155291 0.0579555 0.01
+       vertex -0.0117054 0.0588471 0.01
+    endloop
+  endfacet
+  facet normal -0.227085 0.973875 0
+    outer loop
+       vertex -0.0117054 0.0588471 0.01
+       vertex -0.0117054 0.0588471 0
+       vertex -0.0155291 0.0579555 0
+    endloop
+  endfacet
+  facet normal -0.162902 0.986642 0
+    outer loop
+       vertex -0.0117054 0.0588471 0
+       vertex -0.0117054 0.0588471 0.01
+       vertex -0.00783157 0.0594867 0.01
+    endloop
+  endfacet
+  facet normal -0.162902 0.986642 0
+    outer loop
+       vertex -0.00783157 0.0594867 0.01
+       vertex -0.00783157 0.0594867 0
+       vertex -0.0117054 0.0588471 0
+    endloop
+  endfacet
+  facet normal -0.0980062 0.995186 0
+    outer loop
+       vertex -0.00783157 0.0594867 0
+       vertex -0.00783157 0.0594867 0.01
+       vertex -0.00392419 0.0598715 0.01
+    endloop
+  endfacet
+  facet normal -0.0980062 0.995186 0
+    outer loop
+       vertex -0.00392419 0.0598715 0.01
+       vertex -0.00392419 0.0598715 0
+       vertex -0.00783157 0.0594867 0
+    endloop
+  endfacet
+  facet normal -0.0327281 0.999464 0
+    outer loop
+       vertex -0.00392419 0.0598715 0
+       vertex -0.00392419 0.0598715 0.01
+       vertex 1.07694e-10 0.06 0.01
+    endloop
+  endfacet
+  facet normal -0.0327281 0.999464 0
+    outer loop
+       vertex 1.07694e-10 0.06 0.01
+       vertex 1.07694e-10 0.06 0
+       vertex -0.00392419 0.0598715 0
+    endloop
+  endfacet
+  facet normal 0.0327281 0.999464 -0
+    outer loop
+       vertex 1.07694e-10 0.06 0
+       vertex 1.07694e-10 0.06 0.01
+       vertex 0.00392419 0.0598715 0.01
+    endloop
+  endfacet
+  facet normal 0.0327281 0.999464 0
+    outer loop
+       vertex 0.00392419 0.0598715 0.01
+       vertex 0.00392419 0.0598715 0
+       vertex 1.07694e-10 0.06 0
+    endloop
+  endfacet
+  facet normal 0.0980062 0.995186 -0
+    outer loop
+       vertex 0.00392419 0.0598715 0
+       vertex 0.00392419 0.0598715 0.01
+       vertex 0.00783157 0.0594867 0.01
+    endloop
+  endfacet
+  facet normal 0.0980062 0.995186 0
+    outer loop
+       vertex 0.00783157 0.0594867 0.01
+       vertex 0.00783157 0.0594867 0
+       vertex 0.00392419 0.0598715 0
+    endloop
+  endfacet
+  facet normal 0.162902 0.986642 -0
+    outer loop
+       vertex 0.00783157 0.0594867 0
+       vertex 0.00783157 0.0594867 0.01
+       vertex 0.0117054 0.0588471 0.01
+    endloop
+  endfacet
+  facet normal 0.162902 0.986642 0
+    outer loop
+       vertex 0.0117054 0.0588471 0.01
+       vertex 0.0117054 0.0588471 0
+       vertex 0.00783157 0.0594867 0
+    endloop
+  endfacet
+  facet normal 0.227085 0.973875 -0
+    outer loop
+       vertex 0.0117054 0.0588471 0
+       vertex 0.0117054 0.0588471 0.01
+       vertex 0.0155291 0.0579555 0.01
+    endloop
+  endfacet
+  facet normal 0.227085 0.973875 0
+    outer loop
+       vertex 0.0155291 0.0579555 0.01
+       vertex 0.0155291 0.0579555 0
+       vertex 0.0117054 0.0588471 0
+    endloop
+  endfacet
+  facet normal 0.29027 0.956945 -0
+    outer loop
+       vertex 0.0155291 0.0579555 0
+       vertex 0.0155291 0.0579555 0.01
+       vertex 0.0192864 0.0568158 0.01
+    endloop
+  endfacet
+  facet normal 0.29027 0.956945 0
+    outer loop
+       vertex 0.0192864 0.0568158 0.01
+       vertex 0.0192864 0.0568158 0
+       vertex 0.0155291 0.0579555 0
+    endloop
+  endfacet
+  facet normal 0.352245 0.935908 -0
+    outer loop
+       vertex 0.0192864 0.0568158 0
+       vertex 0.0192864 0.0568158 0.01
+       vertex 0.022961 0.0554328 0.01
+    endloop
+  endfacet
+  facet normal 0.352245 0.935908 0
+    outer loop
+       vertex 0.022961 0.0554328 0.01
+       vertex 0.022961 0.0554328 0
+       vertex 0.0192864 0.0568158 0
+    endloop
+  endfacet
+  facet normal 0.412707 0.910864 -0
+    outer loop
+       vertex 0.022961 0.0554328 0
+       vertex 0.022961 0.0554328 0.01
+       vertex 0.0265373 0.0538124 0.01
+    endloop
+  endfacet
+  facet normal 0.412707 0.910864 0
+    outer loop
+       vertex 0.0265373 0.0538124 0.01
+       vertex 0.0265373 0.0538124 0
+       vertex 0.022961 0.0554328 0
+    endloop
+  endfacet
+  facet normal 0.471406 0.881916 -0
+    outer loop
+       vertex 0.0265373 0.0538124 0
+       vertex 0.0265373 0.0538124 0.01
+       vertex 0.03 0.0519615 0.01
+    endloop
+  endfacet
+  facet normal 0.471406 0.881916 0
+    outer loop
+       vertex 0.03 0.0519615 0.01
+       vertex 0.03 0.0519615 0
+       vertex 0.0265373 0.0538124 0
+    endloop
+  endfacet
+  facet normal 0.528061 0.849207 -0
+    outer loop
+       vertex 0.03 0.0519615 0
+       vertex 0.03 0.0519615 0.01
+       vertex 0.0333342 0.0498882 0.01
+    endloop
+  endfacet
+  facet normal 0.528061 0.849207 0
+    outer loop
+       vertex 0.0333342 0.0498882 0.01
+       vertex 0.0333342 0.0498882 0
+       vertex 0.03 0.0519615 0
+    endloop
+  endfacet
+  facet normal 0.582478 0.812846 -0
+    outer loop
+       vertex 0.0333342 0.0498882 0
+       vertex 0.0333342 0.0498882 0.01
+       vertex 0.0365257 0.0476012 0.01
+    endloop
+  endfacet
+  facet normal 0.582478 0.812846 0
+    outer loop
+       vertex 0.0365257 0.0476012 0.01
+       vertex 0.0365257 0.0476012 0
+       vertex 0.0333342 0.0498882 0
+    endloop
+  endfacet
+  facet normal 0.634399 0.773005 -0
+    outer loop
+       vertex 0.0365257 0.0476012 0
+       vertex 0.0365257 0.0476012 0.01
+       vertex 0.0395607 0.0451104 0.01
+    endloop
+  endfacet
+  facet normal 0.634399 0.773005 0
+    outer loop
+       vertex 0.0395607 0.0451104 0.01
+       vertex 0.0395607 0.0451104 0
+       vertex 0.0365257 0.0476012 0
+    endloop
+  endfacet
+  facet normal 0.683589 0.729867 -0
+    outer loop
+       vertex 0.0395607 0.0451104 0
+       vertex 0.0395607 0.0451104 0.01
+       vertex 0.0424264 0.0424264 0.01
+    endloop
+  endfacet
+  facet normal 0.683589 0.729867 0
+    outer loop
+       vertex 0.0424264 0.0424264 0.01
+       vertex 0.0424264 0.0424264 0
+       vertex 0.0395607 0.0451104 0
+    endloop
+  endfacet
+  facet normal 0.729867 0.683589 -0
+    outer loop
+       vertex 0.0424264 0.0424264 0
+       vertex 0.0424264 0.0424264 0.01
+       vertex 0.0451104 0.0395607 0.01
+    endloop
+  endfacet
+  facet normal 0.729867 0.683589 0
+    outer loop
+       vertex 0.0451104 0.0395607 0.01
+       vertex 0.0451104 0.0395607 0
+       vertex 0.0424264 0.0424264 0
+    endloop
+  endfacet
+  facet normal 0.773005 0.634399 -0
+    outer loop
+       vertex 0.0451104 0.0395607 0
+       vertex 0.0451104 0.0395607 0.01
+       vertex 0.0476012 0.0365257 0.01
+    endloop
+  endfacet
+  facet normal 0.773005 0.634399 0
+    outer loop
+       vertex 0.0476012 0.0365257 0.01
+       vertex 0.0476012 0.0365257 0
+       vertex 0.0451104 0.0395607 0
+    endloop
+  endfacet
+  facet normal 0.812846 0.582478 -0
+    outer loop
+       vertex 0.0476012 0.0365257 0
+       vertex 0.0476012 0.0365257 0.01
+       vertex 0.0498882 0.0333342 0.01
+    endloop
+  endfacet
+  facet normal 0.812846 0.582478 0
+    outer loop
+       vertex 0.0498882 0.0333342 0.01
+       vertex 0.0498882 0.0333342 0
+       vertex 0.0476012 0.0365257 0
+    endloop
+  endfacet
+  facet normal 0.849207 0.528061 -0
+    outer loop
+       vertex 0.0498882 0.0333342 0
+       vertex 0.0498882 0.0333342 0.01
+       vertex 0.0519615 0.03 0.01
+    endloop
+  endfacet
+  facet normal 0.849207 0.528061 0
+    outer loop
+       vertex 0.0519615 0.03 0.01
+       vertex 0.0519615 0.03 0
+       vertex 0.0498882 0.0333342 0
+    endloop
+  endfacet
+  facet normal 0.881916 0.471406 -0
+    outer loop
+       vertex 0.0519615 0.03 0
+       vertex 0.0519615 0.03 0.01
+       vertex 0.0538124 0.0265373 0.01
+    endloop
+  endfacet
+  facet normal 0.881916 0.471406 0
+    outer loop
+       vertex 0.0538124 0.0265373 0.01
+       vertex 0.0538124 0.0265373 0
+       vertex 0.0519615 0.03 0
+    endloop
+  endfacet
+  facet normal 0.910864 0.412707 -0
+    outer loop
+       vertex 0.0538124 0.0265373 0
+       vertex 0.0538124 0.0265373 0.01
+       vertex 0.0554328 0.022961 0.01
+    endloop
+  endfacet
+  facet normal 0.910864 0.412707 0
+    outer loop
+       vertex 0.0554328 0.022961 0.01
+       vertex 0.0554328 0.022961 0
+       vertex 0.0538124 0.0265373 0
+    endloop
+  endfacet
+  facet normal 0.935908 0.352245 -0
+    outer loop
+       vertex 0.0554328 0.022961 0
+       vertex 0.0554328 0.022961 0.01
+       vertex 0.0568158 0.0192864 0.01
+    endloop
+  endfacet
+  facet normal 0.935908 0.352245 0
+    outer loop
+       vertex 0.0568158 0.0192864 0.01
+       vertex 0.0568158 0.0192864 0
+       vertex 0.0554328 0.022961 0
+    endloop
+  endfacet
+  facet normal 0.956945 0.29027 -0
+    outer loop
+       vertex 0.0568158 0.0192864 0
+       vertex 0.0568158 0.0192864 0.01
+       vertex 0.0579555 0.0155291 0.01
+    endloop
+  endfacet
+  facet normal 0.956945 0.29027 0
+    outer loop
+       vertex 0.0579555 0.0155291 0.01
+       vertex 0.0579555 0.0155291 0
+       vertex 0.0568158 0.0192864 0
+    endloop
+  endfacet
+  facet normal 0.973875 0.227085 -0
+    outer loop
+       vertex 0.0579555 0.0155291 0
+       vertex 0.0579555 0.0155291 0.01
+       vertex 0.0588471 0.0117054 0.01
+    endloop
+  endfacet
+  facet normal 0.973875 0.227085 0
+    outer loop
+       vertex 0.0588471 0.0117054 0.01
+       vertex 0.0588471 0.0117054 0
+       vertex 0.0579555 0.0155291 0
+    endloop
+  endfacet
+  facet normal 0.986642 0.162902 -0
+    outer loop
+       vertex 0.0588471 0.0117054 0
+       vertex 0.0588471 0.0117054 0.01
+       vertex 0.0594867 0.00783157 0.01
+    endloop
+  endfacet
+  facet normal 0.986642 0.162902 0
+    outer loop
+       vertex 0.0594867 0.00783157 0.01
+       vertex 0.0594867 0.00783157 0
+       vertex 0.0588471 0.0117054 0
+    endloop
+  endfacet
+  facet normal 0.995186 0.0980062 -0
+    outer loop
+       vertex 0.0594867 0.00783157 0
+       vertex 0.0594867 0.00783157 0.01
+       vertex 0.0598715 0.00392419 0.01
+    endloop
+  endfacet
+  facet normal 0.995186 0.0980062 0
+    outer loop
+       vertex 0.0598715 0.00392419 0.01
+       vertex 0.0598715 0.00392419 0
+       vertex 0.0594867 0.00783157 0
+    endloop
+  endfacet
+  facet normal 0.999464 0.0327281 -0
+    outer loop
+       vertex 0.0598715 0.00392419 0
+       vertex 0.0598715 0.00392419 0.01
+       vertex 0.06 0 0.01
+    endloop
+  endfacet
+  facet normal 0.999464 0.0327281 0
+    outer loop
+       vertex 0.06 0 0.01
+       vertex 0.06 0 0
+       vertex 0.0598715 0.00392419 0
+    endloop
+  endfacet
+endsolid AMI1
diff --git a/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/constant/turbulenceProperties b/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/constant/turbulenceProperties
new file mode 100644
index 00000000000..8e0954f7116
--- /dev/null
+++ b/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/constant/turbulenceProperties
@@ -0,0 +1,21 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  2.3.x                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      turbulenceProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+simulationType  laminar;
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/makeMesh b/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/makeMesh
new file mode 100755
index 00000000000..937765f7cb7
--- /dev/null
+++ b/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/makeMesh
@@ -0,0 +1,13 @@
+#!/bin/sh
+cd ${0%/*} || exit 1    # run from this directory
+
+# Source tutorial run functions
+. $WM_PROJECT_DIR/bin/tools/RunFunctions
+
+m4 < constant/polyMesh/blockMeshDict.m4 > constant/polyMesh/blockMeshDict
+
+runApplication blockMesh
+
+runApplication topoSet
+
+# ----------------------------------------------------------------- end-of-file
diff --git a/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/system/controlDict b/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/system/controlDict
new file mode 100644
index 00000000000..940e361d363
--- /dev/null
+++ b/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/system/controlDict
@@ -0,0 +1,55 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  2.3.x                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      controlDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+application     multiphaseInterDyMFoam;
+
+startFrom       startTime;
+
+startTime       0;
+
+stopAt          endTime;
+
+endTime         5;
+
+deltaT          1e-6;
+
+writeControl    adjustableRunTime;
+
+writeInterval   0.05;
+
+purgeWrite      0;
+
+writeFormat     ascii;
+
+writePrecision  6;
+
+writeCompression off;
+
+timeFormat      general;
+
+timePrecision   6;
+
+runTimeModifiable true;
+
+adjustTimeStep  yes;
+
+maxCo           0.1;
+maxAlphaCo      0.1;
+
+maxDeltaT       1;
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/system/decomposeParDict b/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/system/decomposeParDict
new file mode 100644
index 00000000000..e043204bfb3
--- /dev/null
+++ b/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/system/decomposeParDict
@@ -0,0 +1,31 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  2.3.x                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      decomposeParDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+//- Force AMI to be on single processor. Can cause imbalance with some
+//  decomposers.
+//singleProcessorFaceSets ((AMI -1));
+
+numberOfSubdomains 4;
+
+method          scotch;
+
+distributed     no;
+
+roots           ( );
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/system/fvSchemes b/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/system/fvSchemes
new file mode 100644
index 00000000000..1d6bf988557
--- /dev/null
+++ b/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/system/fvSchemes
@@ -0,0 +1,60 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  2.3.x                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      fvSchemes;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ddtSchemes
+{
+    default         Euler;
+}
+
+gradSchemes
+{
+    default         Gauss linear;
+}
+
+divSchemes
+{
+    div(rhoPhi,U)       Gauss limitedLinearV 1;
+    div(phi,alpha)      Gauss vanLeer;
+    div(phirb,alpha)    Gauss linear;
+    div((muEff*dev(T(grad(U))))) Gauss linear;
+}
+
+laplacianSchemes
+{
+    default         Gauss linear corrected;
+}
+
+interpolationSchemes
+{
+    default         linear;
+}
+
+snGradSchemes
+{
+    default         corrected;
+}
+
+fluxRequired
+{
+    default         no;
+    pcorr;
+    p_rgh;
+    "alpha.*";
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/system/fvSolution b/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/system/fvSolution
new file mode 100644
index 00000000000..454667421f2
--- /dev/null
+++ b/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/system/fvSolution
@@ -0,0 +1,82 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  2.3.x                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      fvSolution;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+solvers
+{
+    alpha
+    {
+        nAlphaSubCycles 1;
+        cAlpha          1;
+    }
+
+    "pcorr.*"
+    {
+        solver          PCG;
+        preconditioner  DIC;
+        tolerance       1e-3;
+        relTol          0;
+    }
+
+    p_rgh
+    {
+        solver          PCG;
+        preconditioner  DIC;
+        tolerance       1e-07;
+        relTol          0.05;
+    }
+
+    p_rghFinal
+    {
+        solver          PCG;
+        preconditioner  DIC;
+        tolerance       1e-07;
+        relTol          0;
+    }
+
+    "(U|alpha)"
+    {
+        solver          smoothSolver;
+        smoother        symGaussSeidel;
+        tolerance       1e-06;
+        relTol          0;
+    }
+}
+
+PIMPLE
+{
+    correctPhi          yes;
+    momentumPredictor   no;
+    nOuterCorrectors    1;
+    nCorrectors     4;
+    nNonOrthogonalCorrectors 0;
+
+    pRefCell        0;
+    pRefValue       0;
+}
+
+relaxationFactors
+{
+    fields
+    {
+    }
+    equations
+    {
+        "U.*"           1;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/system/setFieldsDict b/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/system/setFieldsDict
new file mode 100644
index 00000000000..6e8f2f034c8
--- /dev/null
+++ b/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/system/setFieldsDict
@@ -0,0 +1,64 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  2.3.x                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      setFieldsDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+defaultFieldValues
+(
+    volScalarFieldValue alpha.air 1
+    volScalarFieldValue alpha.water 0
+    volScalarFieldValue alpha.oil 0
+    volScalarFieldValue alpha.mercury 0
+);
+
+regions
+(
+    boxToCell
+    {
+        box (0 0 -1) (1 1 1);
+        fieldValues
+        (
+            volScalarFieldValue alpha.water 1
+            volScalarFieldValue alpha.oil 0
+            volScalarFieldValue alpha.mercury 0
+            volScalarFieldValue alpha.air 0
+        );
+    }
+    boxToCell
+    {
+        box (0 -1 -1) (1 0 1);
+        fieldValues
+        (
+            volScalarFieldValue alpha.water 0
+            volScalarFieldValue alpha.oil 1
+            volScalarFieldValue alpha.mercury 0
+            volScalarFieldValue alpha.air 0
+        );
+    }
+    boxToCell
+    {
+        box (-1 -1 -1) (0 0 1);
+        fieldValues
+        (
+            volScalarFieldValue alpha.water 0
+            volScalarFieldValue alpha.oil 0
+            volScalarFieldValue alpha.mercury 1
+            volScalarFieldValue alpha.air 0
+        );
+    }
+);
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/system/topoSetDict b/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/system/topoSetDict
new file mode 100644
index 00000000000..07786ad6b03
--- /dev/null
+++ b/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/system/topoSetDict
@@ -0,0 +1,35 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  2.3.x                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      topoSetDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+actions
+(
+    // Get both sides of ami
+    // ~~~~~~~~~~~~~~~~~~~~~
+
+    // Get all faces in cellSet
+    {
+        name    AMI;
+        type    faceSet;
+        action  new;
+        source  patchToFace;
+        sourceInfo
+        {
+            name "AMI.*";
+        }
+    }
+);
+
+// ************************************************************************* //
-- 
GitLab