diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/createFields.H b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/createFields.H
index 93c35ee1e1b3dba3983cf66d67843f3791103764..c773650be287ff98c19d6754a11702b6066742ec 100644
--- a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/createFields.H
+++ b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/createFields.H
@@ -310,14 +310,21 @@
 
     Info << "dispersedPhase is " << dispersedPhase << endl;
 
-    scalar minInterfaceAlpha
+    scalar residualPhaseFraction
     (
         readScalar
         (
-            interfacialProperties.lookup("minInterfaceAlpha")
+            interfacialProperties.lookup("residualPhaseFraction")
         )
     );
 
+    dimensionedScalar residualSlip
+    (
+        "residualSlip",
+        dimVelocity,
+        interfacialProperties.lookup("residualSlip")
+    );
+
     kineticTheoryModel kineticTheory
     (
         phase1,
diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/interfacialCoeffs.H b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/interfacialCoeffs.H
index 3b4d2be679d8fc11be453eff2ec45108d6428caa..d6ccf90289ad6891248e665609408a68d4e7c766 100644
--- a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/interfacialCoeffs.H
+++ b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/interfacialCoeffs.H
@@ -36,7 +36,7 @@ volScalarField heatTransferCoeff
 
 {
     volVectorField Ur(U1 - U2);
-    volScalarField magUr(mag(Ur));
+    volScalarField magUr(mag(Ur) + residualSlip);
 
     if (dispersedPhase == "1")
     {
@@ -69,12 +69,9 @@ volScalarField heatTransferCoeff
             << exit(FatalError);
     }
 
-    volScalarField alpha1Coeff
-    (
-        (alpha1 + minInterfaceAlpha)*(alpha2 + minInterfaceAlpha)
-    );
-    dragCoeff *= alpha1Coeff;
-    heatTransferCoeff *= alpha1Coeff;
+    volScalarField alphaCoeff(max(alpha1*alpha2, residualPhaseFraction));
+    dragCoeff *= alphaCoeff;
+    heatTransferCoeff *= alphaCoeff;
 
     liftForce = Cl*(alpha1*rho1 + alpha2*rho2)*(Ur ^ fvc::curl(U));
 
diff --git a/src/OpenFOAM/dimensionedTypes/dimensionedType/dimensionedType.C b/src/OpenFOAM/dimensionedTypes/dimensionedType/dimensionedType.C
index 1d65b22fd6680251f87acb27ae70ddedc9658fb8..acaed52ac95f85ab14ad6f08ebbb22bde9f93862 100644
--- a/src/OpenFOAM/dimensionedTypes/dimensionedType/dimensionedType.C
+++ b/src/OpenFOAM/dimensionedTypes/dimensionedType/dimensionedType.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -126,8 +126,32 @@ dimensioned<Type>::dimensioned
 :
     name_(name),
     dimensions_(dimSet),
-    value_(pTraits<Type>(is))
-{}
+    value_(pTraits<Type>::zero)
+{
+    Info<< "dimensioned<Type>::dimensioned" << endl;
+
+    token nextToken(is);
+    is.putBack(nextToken);
+
+    if (nextToken == token::BEGIN_SQR)
+    {
+        dimensionSet dims(is);
+
+        if (dims != dimensions_)
+        {
+            FatalErrorIn
+            (
+                "dimensioned<Type>::dimensioned"
+                "(const word&, const dimensionSet&, Istream&)"
+            ) << "The dimensions " << dims
+              << " provided do not match the required dimensions "
+              << dimensions_
+              << abort(FatalError);
+        }
+    }
+
+    is >> value_;
+}
 
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
diff --git a/src/finiteVolume/Make/files b/src/finiteVolume/Make/files
index a50e855520a2b9b8b4293bcf3ccd59c4d16243a6..c7e7453b1f5ad23fb696f3bf8dc1d2deaf3ff7df 100644
--- a/src/finiteVolume/Make/files
+++ b/src/finiteVolume/Make/files
@@ -173,6 +173,8 @@ $(derivedFvPatchFields)/cylindricalInletVelocity/cylindricalInletVelocityFvPatch
 $(derivedFvPatchFields)/outletMappedUniformInlet/outletMappedUniformInletFvPatchFields.C
 $(derivedFvPatchFields)/waveSurfacePressure/waveSurfacePressureFvPatchScalarField.C
 $(derivedFvPatchFields)/phaseHydrostaticPressure/phaseHydrostaticPressureFvPatchScalarField.C
+$(derivedFvPatchFields)/variableHeightFlowRate/variableHeightFlowRateFvPatchField.C
+$(derivedFvPatchFields)/variableHeightFlowRateInletVelocity/variableHeightFlowRateInletVelocityFvPatchVectorField.C
 
 fvsPatchFields = fields/fvsPatchFields
 $(fvsPatchFields)/fvsPatchField/fvsPatchFields.C
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/variableHeightFlowRate/variableHeightFlowRateFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/derived/variableHeightFlowRate/variableHeightFlowRateFvPatchField.C
new file mode 100644
index 0000000000000000000000000000000000000000..8c293d4a993d35a387a899d796a19911acaa8587
--- /dev/null
+++ b/src/finiteVolume/fields/fvPatchFields/derived/variableHeightFlowRate/variableHeightFlowRateFvPatchField.C
@@ -0,0 +1,196 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2012 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more 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 "variableHeightFlowRateFvPatchField.H"
+#include "fvPatchFieldMapper.H"
+#include "addToRunTimeSelectionTable.H"
+#include "volFields.H"
+#include "surfaceFields.H"
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::variableHeightFlowRateFvPatchScalarField
+::variableHeightFlowRateFvPatchScalarField
+(
+    const fvPatch& p,
+    const DimensionedField<scalar, volMesh>& iF
+)
+:
+    mixedFvPatchField<scalar>(p, iF),
+    phiName_("phi"),
+    lowerBound_(0.0),
+    upperBound_(1.0)
+{
+    this->refValue() = 0.0;
+    this->refGrad() = 0.0;
+    this->valueFraction() = 0.0;
+}
+
+
+Foam::variableHeightFlowRateFvPatchScalarField
+::variableHeightFlowRateFvPatchScalarField
+(
+    const variableHeightFlowRateFvPatchScalarField& ptf,
+    const fvPatch& p,
+    const DimensionedField<scalar, volMesh>& iF,
+    const fvPatchFieldMapper& mapper
+)
+:
+    mixedFvPatchScalarField(ptf, p, iF, mapper),
+    phiName_(ptf.phiName_),
+    lowerBound_(ptf.lowerBound_),
+    upperBound_(ptf.upperBound_)
+{}
+
+
+Foam::variableHeightFlowRateFvPatchScalarField
+::variableHeightFlowRateFvPatchScalarField
+(
+    const fvPatch& p,
+    const DimensionedField<scalar, volMesh>& iF,
+    const dictionary& dict
+)
+:
+    mixedFvPatchScalarField(p, iF),
+    phiName_(dict.lookupOrDefault<word>("phi", "phi")),
+    lowerBound_(readScalar(dict.lookup("lowerBound"))),
+    upperBound_(readScalar(dict.lookup("upperBound")))
+{
+    this->refValue() = 0.0;
+
+    if (dict.found("value"))
+    {
+        fvPatchScalarField::operator=
+        (
+            scalarField("value", dict, p.size())
+        );
+    }
+    else
+    {
+        fvPatchScalarField::operator=(this->patchInternalField());
+    }
+
+    this->refGrad() = 0.0;
+    this->valueFraction() = 0.0;
+}
+
+
+Foam::variableHeightFlowRateFvPatchScalarField
+    ::variableHeightFlowRateFvPatchScalarField
+(
+    const variableHeightFlowRateFvPatchScalarField& ptf
+)
+:
+    mixedFvPatchScalarField(ptf),
+    phiName_(ptf.phiName_),
+    lowerBound_(ptf.lowerBound_),
+    upperBound_(ptf.upperBound_)
+{}
+
+
+Foam::variableHeightFlowRateFvPatchScalarField
+    ::variableHeightFlowRateFvPatchScalarField
+(
+    const variableHeightFlowRateFvPatchScalarField& ptf,
+    const DimensionedField<scalar, volMesh>& iF
+)
+:
+    mixedFvPatchScalarField(ptf, iF),
+    phiName_(ptf.phiName_),
+    lowerBound_(ptf.lowerBound_),
+    upperBound_(ptf.upperBound_)
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+void Foam::variableHeightFlowRateFvPatchScalarField::updateCoeffs()
+{
+    if (this->updated())
+    {
+        return;
+    }
+
+    const fvsPatchField<scalar>& phip =
+        patch().lookupPatchField<surfaceScalarField, scalar>(phiName_);
+
+    scalarField alphap = this->patchInternalField();
+
+
+    forAll(phip, i)
+    {
+        if (phip[i] < -SMALL)
+        {
+            if (alphap[i] < lowerBound_)
+            {
+                this->refValue()[i] = 0.0;
+            }
+            else if (alphap[i] > upperBound_)
+            {
+                this->refValue()[i] = 1.0;
+            }
+            else
+            {
+                this->refValue()[i] = alphap[i];
+            }
+
+            this->valueFraction()[i] = 1.0;
+        }
+        else
+        {
+            this->refValue()[i] = 0.0;
+            this->valueFraction()[i] = 0.0;
+        }
+    }
+
+    mixedFvPatchScalarField::updateCoeffs();
+}
+
+
+void Foam::variableHeightFlowRateFvPatchScalarField::write(Ostream& os) const
+{
+    fvPatchScalarField::write(os);
+    if (phiName_ != "phi")
+    {
+        os.writeKeyword("phi") << phiName_ << token::END_STATEMENT << nl;
+    }
+    os.writeKeyword("lowerBound") << lowerBound_ << token::END_STATEMENT << nl;
+    os.writeKeyword("upperBound") << upperBound_ << token::END_STATEMENT << nl;
+    this->writeEntry("value", os);
+}
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    makePatchTypeField
+    (
+        fvPatchScalarField,
+        variableHeightFlowRateFvPatchScalarField
+    );
+}
+
+// ************************************************************************* //
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/variableHeightFlowRate/variableHeightFlowRateFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/derived/variableHeightFlowRate/variableHeightFlowRateFvPatchField.H
new file mode 100644
index 0000000000000000000000000000000000000000..51e8c878990995df0b653b7ef27e012fc4983bc3
--- /dev/null
+++ b/src/finiteVolume/fields/fvPatchFields/derived/variableHeightFlowRate/variableHeightFlowRateFvPatchField.H
@@ -0,0 +1,174 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2012 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more 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::variableHeightFlowRateFvPatchScalarField
+
+Description
+    This boundary condition uses zeroGradient within a specified range of
+    values for phase fraction alpha. The range is defined within the
+    boundary condition by the lowerBound and upperBound.
+
+    alpha > upperBound: fixedValue with uniform value of upperBound
+    lowerBound <= alpha <= upperBound: zeroGradient
+    alpha < lowerBound: fixedValue with uniform value of lowerBound
+
+    Example:
+    \verbatim
+        inlet
+        {
+            type            clippedZeroGradient;
+            lowerBound      0.0;
+            upperBound      0.9;
+            value           uniform 0;
+        }
+    \verbatim
+
+SourceFiles
+    variableHeightFlowRateFvPatchScalarField.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef variableHeightFlowRateFvPatchScalarField_H
+#define variableHeightFlowRateFvPatchScalarField_H
+
+#include "mixedFvPatchFields.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+                     Class variableHeightFlowRateFvPatchScalar Declaration
+\*---------------------------------------------------------------------------*/
+
+class variableHeightFlowRateFvPatchScalarField
+:
+    public mixedFvPatchScalarField
+{
+
+protected:
+
+    // Protected data
+
+        //- Name of flux field
+        word phiName_;
+
+        //- Lower bound for alpha1
+        scalar lowerBound_;
+
+        //- Upper bound for alpha1
+        scalar upperBound_;
+
+public:
+
+    //- Runtime scalar information
+    TypeName("variableHeightFlowRate");
+
+
+    // Constructors
+
+        //- Construct from patch and internal field
+        variableHeightFlowRateFvPatchScalarField
+        (
+            const fvPatch&,
+            const DimensionedField<scalar, volMesh>&
+        );
+
+        //- Construct from patch, internal field and dictionary
+        variableHeightFlowRateFvPatchScalarField
+        (
+            const fvPatch&,
+            const DimensionedField<scalar, volMesh>&,
+            const dictionary&
+        );
+
+        //- Construct by mapping given
+        //  variableHeightFlowRateFvPatchScalarField onto a new patch
+        variableHeightFlowRateFvPatchScalarField
+        (
+            const variableHeightFlowRateFvPatchScalarField&,
+            const fvPatch&,
+            const DimensionedField<scalar, volMesh>&,
+            const fvPatchFieldMapper&
+        );
+
+        //- Construct as copy
+        variableHeightFlowRateFvPatchScalarField
+        (
+            const variableHeightFlowRateFvPatchScalarField&
+        );
+
+        //- Construct and return a clone
+        virtual tmp<fvPatchField<scalar> > clone() const
+        {
+            return tmp<fvPatchField<scalar> >
+            (
+                new variableHeightFlowRateFvPatchScalarField(*this)
+            );
+        }
+
+        //- Construct as copy setting internal field reference
+        variableHeightFlowRateFvPatchScalarField
+        (
+            const variableHeightFlowRateFvPatchScalarField&,
+            const DimensionedField<scalar, volMesh>&
+        );
+
+        //- Construct and return a clone setting internal field reference
+        virtual tmp<fvPatchField<scalar> > clone
+        (
+            const DimensionedField<scalar, volMesh>& iF
+        ) const
+        {
+            return tmp<fvPatchField<scalar> >
+            (
+                new variableHeightFlowRateFvPatchScalarField(*this, iF)
+            );
+        }
+
+
+    // Member functions
+
+        //- Update the coefficients associated with the patch field
+        virtual void updateCoeffs();
+
+        //- Write
+        virtual void write(Ostream&) const;
+
+
+    // Member operators
+
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/variableHeightFlowRateInletVelocity/variableHeightFlowRateInletVelocityFvPatchVectorField.C b/src/finiteVolume/fields/fvPatchFields/derived/variableHeightFlowRateInletVelocity/variableHeightFlowRateInletVelocityFvPatchVectorField.C
new file mode 100644
index 0000000000000000000000000000000000000000..98d98f07bab1b46831c5e9ec2b3e6832bacb2c8f
--- /dev/null
+++ b/src/finiteVolume/fields/fvPatchFields/derived/variableHeightFlowRateInletVelocity/variableHeightFlowRateInletVelocityFvPatchVectorField.C
@@ -0,0 +1,147 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2012 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "variableHeightFlowRateInletVelocityFvPatchVectorField.H"
+#include "volFields.H"
+#include "addToRunTimeSelectionTable.H"
+#include "fvPatchFieldMapper.H"
+#include "surfaceFields.H"
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::variableHeightFlowRateInletVelocityFvPatchVectorField
+::variableHeightFlowRateInletVelocityFvPatchVectorField
+(
+    const fvPatch& p,
+    const DimensionedField<vector, volMesh>& iF
+)
+:
+    fixedValueFvPatchField<vector>(p, iF),
+    flowRate_(0)
+{}
+
+
+Foam::variableHeightFlowRateInletVelocityFvPatchVectorField
+::variableHeightFlowRateInletVelocityFvPatchVectorField
+(
+    const variableHeightFlowRateInletVelocityFvPatchVectorField& ptf,
+    const fvPatch& p,
+    const DimensionedField<vector, volMesh>& iF,
+    const fvPatchFieldMapper& mapper
+)
+:
+    fixedValueFvPatchField<vector>(ptf, p, iF, mapper),
+    flowRate_(ptf.flowRate_)
+{}
+
+
+Foam::variableHeightFlowRateInletVelocityFvPatchVectorField
+::variableHeightFlowRateInletVelocityFvPatchVectorField
+(
+    const fvPatch& p,
+    const DimensionedField<vector, volMesh>& iF,
+    const dictionary& dict
+)
+:
+    fixedValueFvPatchField<vector>(p, iF, dict),
+    flowRate_(readScalar(dict.lookup("flowRate")))
+{}
+
+
+Foam::variableHeightFlowRateInletVelocityFvPatchVectorField
+::variableHeightFlowRateInletVelocityFvPatchVectorField
+(
+    const variableHeightFlowRateInletVelocityFvPatchVectorField& ptf
+)
+:
+    fixedValueFvPatchField<vector>(ptf),
+    flowRate_(ptf.flowRate_)
+{}
+
+
+Foam::variableHeightFlowRateInletVelocityFvPatchVectorField
+::variableHeightFlowRateInletVelocityFvPatchVectorField
+(
+    const variableHeightFlowRateInletVelocityFvPatchVectorField& ptf,
+    const DimensionedField<vector, volMesh>& iF
+)
+:
+    fixedValueFvPatchField<vector>(ptf, iF),
+    flowRate_(ptf.flowRate_)
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+void Foam::variableHeightFlowRateInletVelocityFvPatchVectorField
+::updateCoeffs()
+{
+    if (updated())
+    {
+        return;
+    }
+
+    scalarField alphap =
+        patch().lookupPatchField<volScalarField, scalar>("alpha1");
+
+    alphap = max(alphap, 0.0);
+    alphap = min(alphap, 1.0);
+
+    // a simpler way of doing this would be nice
+    scalar avgU = -flowRate_/gSum(patch().magSf()*alphap);
+
+    vectorField n = patch().nf();
+
+    operator==(n*avgU*alphap);
+
+    fixedValueFvPatchField<vector>::updateCoeffs();
+}
+
+
+void Foam::variableHeightFlowRateInletVelocityFvPatchVectorField
+::write(Ostream& os) const
+{
+    fvPatchField<vector>::write(os);
+
+    os.writeKeyword("flowRate") << flowRate_
+        << token::END_STATEMENT << nl;
+    writeEntry("value", os);
+}
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+   makePatchTypeField
+   (
+       fvPatchVectorField,
+       variableHeightFlowRateInletVelocityFvPatchVectorField
+   );
+}
+
+
+// ************************************************************************* //
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/variableHeightFlowRateInletVelocity/variableHeightFlowRateInletVelocityFvPatchVectorField.H b/src/finiteVolume/fields/fvPatchFields/derived/variableHeightFlowRateInletVelocity/variableHeightFlowRateInletVelocityFvPatchVectorField.H
new file mode 100644
index 0000000000000000000000000000000000000000..d1bc1ac62f74b43f7fd245d6d5cc38b7483ef651
--- /dev/null
+++ b/src/finiteVolume/fields/fvPatchFields/derived/variableHeightFlowRateInletVelocity/variableHeightFlowRateInletVelocityFvPatchVectorField.H
@@ -0,0 +1,189 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2012 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    Foam::variableHeightFlowRateInletVelocityFvPatchVectorField
+
+Description
+    Describes a volumetric/mass flow normal vector boundary condition by its
+    magnitude as an integral over its area.
+
+    The basis of the patch (volumetric or mass) is determined by the
+    dimensions of the flux, phi.
+    The current density is used to correct the velocity when applying the
+    mass basis.
+
+    The flow rate is made proportional to the phase fraction alpha at each face
+    of the patch and alpha is ensured to be bound between 0 and 1.
+
+    Example of the boundary condition specification:
+    \verbatim
+    inlet
+    {
+        type            variableHeightFlowRateInletVelocity;
+        flowRate        0.2;        // Volumetric/mass flow rate [m3/s or kg/s]
+        value           uniform (0 0 0); // placeholder
+    }
+    \endverbatim
+
+Note
+    - The value is positive inwards
+    - May not work correctly for transonic inlets
+    - Strange behaviour with potentialFoam since the U equation is not solved
+
+SourceFiles
+    variableHeightFlowRateInletVelocityFvPatchVectorField.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef variableHeightFlowRateInletVelocityFvPatchVectorField_H
+#define variableHeightFlowRateInletVelocityFvPatchVectorField_H
+
+#include "fixedValueFvPatchFields.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+/*---------------------------------------------------------------------------*\
+          Class variableHeightFlowRateInletVelocityFvPatch Declaration
+\*---------------------------------------------------------------------------*/
+
+class variableHeightFlowRateInletVelocityFvPatchVectorField
+:
+    public fixedValueFvPatchVectorField
+{
+    // Private data
+
+        //- Inlet integral flow rate
+        scalar flowRate_;
+
+public:
+
+   //- Runtime type information
+   TypeName("variableHeightFlowRateInletVelocity");
+
+
+   // Constructors
+
+        //- Construct from patch and internal field
+        variableHeightFlowRateInletVelocityFvPatchVectorField
+        (
+            const fvPatch&,
+            const DimensionedField<vector, volMesh>&
+        );
+
+        //- Construct from patch, internal field and dictionary
+        variableHeightFlowRateInletVelocityFvPatchVectorField
+        (
+            const fvPatch&,
+            const DimensionedField<vector, volMesh>&,
+            const dictionary&
+        );
+
+        //- Construct by mapping given
+        //  variableHeightFlowRateInletVelocityFvPatchVectorField
+        //  onto a new patch
+        variableHeightFlowRateInletVelocityFvPatchVectorField
+        (
+            const variableHeightFlowRateInletVelocityFvPatchVectorField&,
+            const fvPatch&,
+            const DimensionedField<vector, volMesh>&,
+            const fvPatchFieldMapper&
+        );
+
+        //- Construct as copy
+        variableHeightFlowRateInletVelocityFvPatchVectorField
+        (
+            const variableHeightFlowRateInletVelocityFvPatchVectorField&
+        );
+
+        //- Construct and return a clone
+        virtual tmp<fvPatchVectorField> clone() const
+        {
+            return tmp<fvPatchVectorField>
+            (
+                new variableHeightFlowRateInletVelocityFvPatchVectorField(*this)
+            );
+        }
+
+        //- Construct as copy setting internal field reference
+        variableHeightFlowRateInletVelocityFvPatchVectorField
+        (
+            const variableHeightFlowRateInletVelocityFvPatchVectorField&,
+            const DimensionedField<vector, volMesh>&
+        );
+
+        //- Construct and return a clone setting internal field reference
+        virtual tmp<fvPatchVectorField> clone
+        (
+            const DimensionedField<vector, volMesh>& iF
+        ) const
+        {
+            return tmp<fvPatchVectorField>
+            (
+                new variableHeightFlowRateInletVelocityFvPatchVectorField
+                (
+                    *this,
+                    iF
+                )
+            );
+        }
+
+
+    // Member functions
+
+        // Access
+
+            //- Return the flux
+            scalar flowRate() const
+            {
+                return flowRate_;
+            }
+
+            //- Return reference to the flux to allow adjustment
+            scalar& flowRate()
+            {
+                return flowRate_;
+            }
+
+
+        //- Update the coefficients associated with the patch field
+        virtual void updateCoeffs();
+
+        //- Write
+        virtual void write(Ostream&) const;
+
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/bubbleColumn/constant/interfacialProperties b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/bubbleColumn/constant/interfacialProperties
index c48ea4b91f94c5803c6e4b7fb30721d74d2ec121..03a3a667a3d8c1ee3e013766f338b7928053cabc 100644
--- a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/bubbleColumn/constant/interfacialProperties
+++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/bubbleColumn/constant/interfacialProperties
@@ -23,6 +23,7 @@ heatTransferModel2  RanzMarshall;
 
 dispersedPhase      both;
 
-minInterfaceAlpha   1e-2;
+residualPhaseFraction   1e-3;
+residualSlip            1e-2;
 
 // ************************************************************************* //
diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/constant/interfacialProperties b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/constant/interfacialProperties
index a8f0a288a0aa14f3c7be5e4f13ef608ffa382610..63efa66a33df1344b571e8b25a15fc48880dd097 100644
--- a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/constant/interfacialProperties
+++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/constant/interfacialProperties
@@ -23,6 +23,7 @@ heatTransferModel2  RanzMarshall;
 
 dispersedPhase      "1";
 
-minInterfaceAlpha   1e-2;
+residualPhaseFraction   1e-3;
+residualSlip            1e-2;
 
 // ************************************************************************* //
diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/constant/interfacialProperties b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/constant/interfacialProperties
index 41159fe9def1d68030d4d4c65aacca7947e0610b..06b13a7b3c68ae7a87a4c2f40e232fef99502c7d 100644
--- a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/constant/interfacialProperties
+++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/constant/interfacialProperties
@@ -24,7 +24,7 @@ heatTransferModel2  RanzMarshall;
 dispersedPhase      both;
 dragPhase           blended;
 
-residualSlip        1e-2;
-minInterfaceAlpha   1e-3;
+residualPhaseFraction   1e-3;
+residualSlip            1e-2;
 
 // ************************************************************************* //
diff --git a/tutorials/multiphase/interFoam/ras/Allclean b/tutorials/multiphase/interFoam/ras/Allclean
index fdd2e7c83e0cb0d50c29713e65f2d8b1ac3948ea..bd5bed38568db41b9be00630aa8024cadc663f68 100755
--- a/tutorials/multiphase/interFoam/ras/Allclean
+++ b/tutorials/multiphase/interFoam/ras/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 damBreakPorousBaffle"
+keepCases="damBreak damBreakPorousBaffle weirOverflow"
 loseCases="damBreakFine"
 
 for case in $keepCases
diff --git a/tutorials/multiphase/interFoam/ras/Allrun b/tutorials/multiphase/interFoam/ras/Allrun
index c34b3608349e8852298bc5a08f729fdcfde11177..85cfa0fbfb1355189d2c6c23ae7fec241045daa2 100755
--- a/tutorials/multiphase/interFoam/ras/Allrun
+++ b/tutorials/multiphase/interFoam/ras/Allrun
@@ -49,4 +49,7 @@ cloneCase damBreak damBreakFine
 # Do damBreakPorousBaffle
 (cd damBreakPorousBaffle && foamRunTutorials)
 
+# Do weirOverflow
+(cd weirOverflow && foamRunTutorials)
+
 # ----------------------------------------------------------------- end-of-file
diff --git a/tutorials/multiphase/interFoam/ras/weirOverflow/0.org/U b/tutorials/multiphase/interFoam/ras/weirOverflow/0.org/U
new file mode 100644
index 0000000000000000000000000000000000000000..92b06fe0a614ad67e3ec0bc5eb8bf48b52d524b9
--- /dev/null
+++ b/tutorials/multiphase/interFoam/ras/weirOverflow/0.org/U
@@ -0,0 +1,56 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volVectorField;
+    object      U;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include        "include/initialConditions"
+
+dimensions      [0 1 -1 0 0 0 0];
+
+internalField   uniform (0 0 0);
+
+boundaryField
+{
+    inlet
+    {
+        type            variableHeightFlowRateInletVelocity;
+        flowRate        $inletFlowRate;
+        value           uniform (0 0 0);
+    }
+
+    outlet
+    {
+        type            zeroGradient;
+    }
+
+    lowerWall
+    {
+        type            fixedValue;
+        value           uniform (0 0 0);
+    }
+
+    atmosphere
+    {
+        type            pressureInletOutletVelocity;
+        phi             phi;
+        value           uniform (0 0 0);
+    }
+
+    defaultFaces
+    {
+        type            empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interFoam/ras/weirOverflow/0.org/alpha1.org b/tutorials/multiphase/interFoam/ras/weirOverflow/0.org/alpha1.org
new file mode 100644
index 0000000000000000000000000000000000000000..deeaf2f3dff70ccc44bee629d9085e3546cb7713
--- /dev/null
+++ b/tutorials/multiphase/interFoam/ras/weirOverflow/0.org/alpha1.org
@@ -0,0 +1,56 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      alpha1;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include        "include/initialConditions"
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    inlet
+    {
+        type            variableHeightFlowRate;
+        lowerBound      0.0;
+        upperBound      0.9;
+        value           uniform 0;
+    }
+
+    outlet
+    {
+        type            zeroGradient;
+    }
+
+    lowerWall
+    {
+        type            zeroGradient;
+    }
+
+    atmosphere
+    {
+        type            inletOutlet;
+        inletValue      uniform 0;
+        value           uniform 0;
+    }
+
+    defaultFaces
+    {
+        type            empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interFoam/ras/weirOverflow/0.org/epsilon b/tutorials/multiphase/interFoam/ras/weirOverflow/0.org/epsilon
new file mode 100644
index 0000000000000000000000000000000000000000..7d98d9ac02b9e8a5b09c4a5a5b4dbec2bd41d1d2
--- /dev/null
+++ b/tutorials/multiphase/interFoam/ras/weirOverflow/0.org/epsilon
@@ -0,0 +1,59 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      epsilon;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include        "include/initialConditions"
+
+dimensions      [0 2 -3 0 0 0 0];
+
+internalField   uniform $turbulentEpsilon;
+
+boundaryField
+{
+    inlet
+    {
+        type            fixedValue;
+        value           $internalField;
+    }
+
+    outlet
+    {
+        type            inletOutlet;
+        inletValue      $internalField;
+        value           $internalField;
+    }
+
+    lowerWall
+    {
+        type            epsilonWallFunction;
+        value           $internalField;
+    }
+
+    atmosphere
+    {
+        type            inletOutlet;
+        inletValue      $internalField;
+        value           $internalField;
+    }
+
+    defaultFaces
+    {
+        type            empty;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interFoam/ras/weirOverflow/0.org/include/initialConditions b/tutorials/multiphase/interFoam/ras/weirOverflow/0.org/include/initialConditions
new file mode 100644
index 0000000000000000000000000000000000000000..1d05333331873e6eaab17c218e348e99e9f278e3
--- /dev/null
+++ b/tutorials/multiphase/interFoam/ras/weirOverflow/0.org/include/initialConditions
@@ -0,0 +1,15 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+inletFlowRate        75;
+pressure             0;
+turbulentKE          4.14e-03;
+turbulentEpsilon     4.39e-05;
+#inputMode           merge
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interFoam/ras/weirOverflow/0.org/k b/tutorials/multiphase/interFoam/ras/weirOverflow/0.org/k
new file mode 100644
index 0000000000000000000000000000000000000000..18dafe0a9a9d6e547dc69ff3e78865e2854ddf82
--- /dev/null
+++ b/tutorials/multiphase/interFoam/ras/weirOverflow/0.org/k
@@ -0,0 +1,59 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      k;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include        "include/initialConditions"
+
+dimensions      [0 2 -2 0 0 0 0];
+
+internalField   uniform $turbulentKE;
+
+boundaryField
+{
+    inlet
+    {
+        type            fixedValue;
+        value           $internalField;
+    }
+
+    outlet
+    {
+        type            inletOutlet;
+        inletValue      $internalField;
+        value           $internalField;
+    }
+
+    lowerWall
+    {
+        type            kqRWallFunction;
+        value           $internalField;
+    }
+
+    atmosphere
+    {
+        type            inletOutlet;
+        inletValue      $internalField;
+        value           $internalField;
+    }
+
+    defaultFaces
+    {
+        type            empty;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interFoam/ras/weirOverflow/0.org/nut b/tutorials/multiphase/interFoam/ras/weirOverflow/0.org/nut
new file mode 100644
index 0000000000000000000000000000000000000000..2d6b6f0067ba0fa590c5a94aa6ed04985273f49c
--- /dev/null
+++ b/tutorials/multiphase/interFoam/ras/weirOverflow/0.org/nut
@@ -0,0 +1,52 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      nut;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 2 -1 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    inlet
+    {
+        type            calculated;
+        value           uniform 0;
+    }
+    outlet
+    {
+        type            calculated;
+        value           uniform 0;
+    }
+    lowerWall
+    {
+        type            nutkWallFunction;
+        value           uniform 0;
+    }
+    atmosphere
+    {
+        type            calculated;
+        value           uniform 0;
+    }
+
+    defaultFaces
+    {
+        type            empty;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interFoam/ras/weirOverflow/0.org/p_rgh b/tutorials/multiphase/interFoam/ras/weirOverflow/0.org/p_rgh
new file mode 100644
index 0000000000000000000000000000000000000000..026164723a181e39cb132e04a3a40d6333abb0b9
--- /dev/null
+++ b/tutorials/multiphase/interFoam/ras/weirOverflow/0.org/p_rgh
@@ -0,0 +1,58 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      p_rgh;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include        "include/initialConditions"
+
+dimensions      [1 -1 -2 0 0 0 0];
+
+internalField   uniform $pressure;
+
+boundaryField
+{
+    inlet
+    {
+        type            zeroGradient;
+    }
+
+    outlet
+    {
+        type            zeroGradient;
+    }
+
+    lowerWall
+    {
+        type            zeroGradient;
+    }
+
+    atmosphere
+    {
+        type            totalPressure;
+        p0              uniform 0;
+        U               U;
+        phi             phi;
+        rho             none;
+        psi             none;
+        gamma           1;
+        value           uniform $pressure;
+    }
+
+    defaultFaces
+    {
+        type            empty;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interFoam/ras/weirOverflow/Allclean b/tutorials/multiphase/interFoam/ras/weirOverflow/Allclean
new file mode 100755
index 0000000000000000000000000000000000000000..2c5a008802e8e91116267233274623cc5c062969
--- /dev/null
+++ b/tutorials/multiphase/interFoam/ras/weirOverflow/Allclean
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+# Source tutorial clean functions
+. $WM_PROJECT_DIR/bin/tools/CleanFunctions
+
+rm -rf 0 > /dev/null 2>&1
+
+cleanCase
diff --git a/tutorials/multiphase/interFoam/ras/weirOverflow/Allrun b/tutorials/multiphase/interFoam/ras/weirOverflow/Allrun
new file mode 100755
index 0000000000000000000000000000000000000000..da58c047f11167b7accb35d26053883de19febc6
--- /dev/null
+++ b/tutorials/multiphase/interFoam/ras/weirOverflow/Allrun
@@ -0,0 +1,14 @@
+#!/bin/bash
+
+# Source tutorial run functions
+. $WM_PROJECT_DIR/bin/tools/RunFunctions
+
+cp -r 0.org 0 > /dev/null 2>&1
+
+runApplication blockMesh
+
+cp 0/alpha1.org 0/alpha1
+
+runApplication setFields
+
+runApplication `getApplication`
diff --git a/tutorials/multiphase/interFoam/ras/weirOverflow/constant/RASProperties b/tutorials/multiphase/interFoam/ras/weirOverflow/constant/RASProperties
new file mode 100644
index 0000000000000000000000000000000000000000..a4937b503a46850b2626f0d301e4a07b9f691507
--- /dev/null
+++ b/tutorials/multiphase/interFoam/ras/weirOverflow/constant/RASProperties
@@ -0,0 +1,25 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      RASProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+RASModel        kEpsilon;
+
+turbulence      on;
+
+printCoeffs     on;
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interFoam/ras/weirOverflow/constant/g b/tutorials/multiphase/interFoam/ras/weirOverflow/constant/g
new file mode 100644
index 0000000000000000000000000000000000000000..e0ac2653b5b370ad62f6770588121d30cac51627
--- /dev/null
+++ b/tutorials/multiphase/interFoam/ras/weirOverflow/constant/g
@@ -0,0 +1,22 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       uniformDimensionedVectorField;
+    location    "constant";
+    object      g;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -2 0 0 0 0];
+value           ( 0 -9.81 0 );
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interFoam/ras/weirOverflow/constant/polyMesh/blockMeshDict b/tutorials/multiphase/interFoam/ras/weirOverflow/constant/polyMesh/blockMeshDict
new file mode 100644
index 0000000000000000000000000000000000000000..cc77285f11efa60e0fddb80e868a7ed3d1dfa865
--- /dev/null
+++ b/tutorials/multiphase/interFoam/ras/weirOverflow/constant/polyMesh/blockMeshDict
@@ -0,0 +1,93 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      blockMeshDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+convertToMeters 1;
+
+vertices
+(
+    (-18  0 -0.5)
+    (  0  0 -0.5)
+    ( 30  0 -0.5)
+    ( 90  0 -0.5)
+    (-18 30 -0.5)
+    (  0 30 -0.5)
+    ( 15 30 -0.5)
+    ( 90 30 -0.5)
+    (-18 54 -0.5)
+    (  0 54 -0.5)
+    ( 15 54 -0.5)
+    ( 90 54 -0.5)
+
+    (-18  0 0.5)
+    (  0  0 0.5)
+    ( 30  0 0.5)
+    ( 90  0 0.5)
+    (-18 30 0.5)
+    (  0 30 0.5)
+    ( 15 30 0.5)
+    ( 90 30 0.5)
+    (-18 54 0.5)
+    (  0 54 0.5)
+    ( 15 54 0.5)
+    ( 90 54 0.5)
+);
+
+blocks
+(
+    hex (0 1 5 4 12 13 17 16) (20 20 1) simpleGrading (1 0.5 1)
+    hex (2 3 7 6 14 15 19 18) (60 40 1) simpleGrading (1 2 1)
+    hex (4 5 9 8 16 17 21 20) (20 24 1) simpleGrading (1 1 1)
+    hex (5 6 10 9 17 18 22 21) (15 24 1) simpleGrading (1 1 1)
+    hex (6 7 11 10 18 19 23 22) (60 24 1) simpleGrading (1 1 1)
+);
+
+edges
+(
+);
+
+patches
+(
+    patch inlet
+    (
+        (0 12 16 4)
+        (4 16 20 8)
+    )
+    patch outlet
+    (
+        (7 19 15 3)
+        (11 23 19 7)
+    )
+    wall lowerWall
+    (
+        (0 1 13 12)
+        (1 5 17 13)
+        (5 6 18 17)
+        (2 14 18 6)
+        (2 3 15 14)
+    )
+    patch atmosphere
+    (
+        (8 20 21 9)
+        (9 21 22 10)
+        (10 22 23 11)
+    )
+);
+
+mergePatchPairs
+(
+);
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interFoam/ras/weirOverflow/constant/polyMesh/boundary b/tutorials/multiphase/interFoam/ras/weirOverflow/constant/polyMesh/boundary
new file mode 100644
index 0000000000000000000000000000000000000000..e7fe171353ef2ef89026649538494718c28d655c
--- /dev/null
+++ b/tutorials/multiphase/interFoam/ras/weirOverflow/constant/polyMesh/boundary
@@ -0,0 +1,52 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       polyBoundaryMesh;
+    location    "constant/polyMesh";
+    object      boundary;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+5
+(
+    inlet
+    {
+        type            patch;
+        nFaces          44;
+        startFace       9981;
+    }
+    outlet
+    {
+        type            patch;
+        nFaces          64;
+        startFace       10025;
+    }
+    lowerWall
+    {
+        type            wall;
+        nFaces          155;
+        startFace       10089;
+    }
+    atmosphere
+    {
+        type            patch;
+        nFaces          95;
+        startFace       10244;
+    }
+    defaultFaces
+    {
+        type            empty;
+        nFaces          10160;
+        startFace       10339;
+    }
+)
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interFoam/ras/weirOverflow/constant/transportProperties b/tutorials/multiphase/interFoam/ras/weirOverflow/constant/transportProperties
new file mode 100644
index 0000000000000000000000000000000000000000..ef3e8c7b4b6b6b1979253b534cc30d07c0f63826
--- /dev/null
+++ b/tutorials/multiphase/interFoam/ras/weirOverflow/constant/transportProperties
@@ -0,0 +1,72 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      transportProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+twoPhase
+{
+    transportModel  twoPhase;
+    phase1          phase1;
+    phase2          phase2;
+}
+
+phase1
+{
+    transportModel  Newtonian;
+    nu              nu [ 0 2 -1 0 0 0 0 ] 1e-06;
+    rho             rho [ 1 -3 0 0 0 0 0 ] 1000;
+    CrossPowerLawCoeffs
+    {
+        nu0             nu0 [ 0 2 -1 0 0 0 0 ] 1e-06;
+        nuInf           nuInf [ 0 2 -1 0 0 0 0 ] 1e-06;
+        m               m [ 0 0 1 0 0 0 0 ] 1;
+        n               n [ 0 0 0 0 0 0 0 ] 0;
+    }
+
+    BirdCarreauCoeffs
+    {
+        nu0             nu0 [ 0 2 -1 0 0 0 0 ] 0.0142515;
+        nuInf           nuInf [ 0 2 -1 0 0 0 0 ] 1e-06;
+        k               k [ 0 0 1 0 0 0 0 ] 99.6;
+        n               n [ 0 0 0 0 0 0 0 ] 0.1003;
+    }
+}
+
+phase2
+{
+    transportModel  Newtonian;
+    nu              nu [ 0 2 -1 0 0 0 0 ] 1.48e-05;
+    rho             rho [ 1 -3 0 0 0 0 0 ] 1;
+    CrossPowerLawCoeffs
+    {
+        nu0             nu0 [ 0 2 -1 0 0 0 0 ] 1e-06;
+        nuInf           nuInf [ 0 2 -1 0 0 0 0 ] 1e-06;
+        m               m [ 0 0 1 0 0 0 0 ] 1;
+        n               n [ 0 0 0 0 0 0 0 ] 0;
+    }
+
+    BirdCarreauCoeffs
+    {
+        nu0             nu0 [ 0 2 -1 0 0 0 0 ] 0.0142515;
+        nuInf           nuInf [ 0 2 -1 0 0 0 0 ] 1e-06;
+        k               k [ 0 0 1 0 0 0 0 ] 99.6;
+        n               n [ 0 0 0 0 0 0 0 ] 0.1003;
+    }
+}
+
+sigma           sigma [ 1 0 -2 0 0 0 0 ] 0.07;
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interFoam/ras/weirOverflow/constant/turbulenceProperties b/tutorials/multiphase/interFoam/ras/weirOverflow/constant/turbulenceProperties
new file mode 100644
index 0000000000000000000000000000000000000000..3721a46a2ead37eb2bf10434bcde59afa9fe9bf6
--- /dev/null
+++ b/tutorials/multiphase/interFoam/ras/weirOverflow/constant/turbulenceProperties
@@ -0,0 +1,21 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      turbulenceProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+simulationType  RASModel;
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interFoam/ras/weirOverflow/system/controlDict b/tutorials/multiphase/interFoam/ras/weirOverflow/system/controlDict
new file mode 100644
index 0000000000000000000000000000000000000000..85c6938c48b6625f8aeb251e8282cb213ec58c80
--- /dev/null
+++ b/tutorials/multiphase/interFoam/ras/weirOverflow/system/controlDict
@@ -0,0 +1,55 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      controlDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+application     interFoam;
+
+startFrom       latestTime;
+
+startTime       0;
+
+stopAt          endTime;
+
+endTime         60;
+
+deltaT          0.001;
+
+writeControl    adjustableRunTime;
+
+writeInterval   2;
+
+purgeWrite      0;
+
+writeFormat     ascii;
+
+writePrecision  6;
+
+writeCompression uncompressed;
+
+timeFormat      general;
+
+timePrecision   6;
+
+runTimeModifiable yes;
+
+adjustTimeStep  on;
+
+maxCo           0.2;
+maxAlphaCo      0.2;
+
+maxDeltaT       1;
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interFoam/ras/weirOverflow/system/fvSchemes b/tutorials/multiphase/interFoam/ras/weirOverflow/system/fvSchemes
new file mode 100644
index 0000000000000000000000000000000000000000..28b3d7d20aeb00f17348671a1a85ba2700c6f874
--- /dev/null
+++ b/tutorials/multiphase/interFoam/ras/weirOverflow/system/fvSchemes
@@ -0,0 +1,65 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      fvSchemes;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ddtSchemes
+{
+    default         Euler;
+}
+
+gradSchemes
+{
+    default         Gauss linear;
+}
+
+divSchemes
+{
+    div(rho*phi,U)  Gauss linear;
+    div(phi,alpha)  Gauss vanLeer;
+    div(phirb,alpha) Gauss interfaceCompression;
+    div(phi,k)      Gauss upwind;
+    div(phi,epsilon) Gauss upwind;
+    div(phi,R)      Gauss upwind;
+    div(R)          Gauss linear;
+    div(phi,nuTilda) Gauss upwind;
+    div((nuEff*dev(T(grad(U))))) Gauss linear;
+}
+
+laplacianSchemes
+{
+    default         Gauss linear corrected;
+}
+
+interpolationSchemes
+{
+    default         linear;
+}
+
+snGradSchemes
+{
+    default         corrected;
+}
+
+fluxRequired
+{
+    default         no;
+    p_rgh;
+    pcorr;
+    alpha;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interFoam/ras/weirOverflow/system/fvSolution b/tutorials/multiphase/interFoam/ras/weirOverflow/system/fvSolution
new file mode 100644
index 0000000000000000000000000000000000000000..b8d411303f41ffe1b2722fc28817c4470164f3b5
--- /dev/null
+++ b/tutorials/multiphase/interFoam/ras/weirOverflow/system/fvSolution
@@ -0,0 +1,67 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      fvSolution;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+solvers
+{
+    pcorr
+    {
+        solver          PCG;
+        preconditioner  DIC;
+        tolerance       1e-10;
+        relTol          0;
+    }
+
+    p_rgh
+    {
+        solver          PCG;
+        preconditioner  DIC;
+        tolerance       1e-07;
+        relTol          0.05;
+    }
+
+    p_rghFinal
+    {
+        $p_rgh;
+        relTol          0;
+    }
+
+    "(U|k|epsilon)"
+    {
+        solver          PBiCG;
+        preconditioner  DILU;
+        tolerance       1e-8;
+        relTol          0.1;
+    }
+
+    "(U|k|epsilon)Final"
+    {
+        $U;
+        relTol          0;
+    }
+}
+
+PIMPLE
+{
+    momentumPredictor no;
+    nCorrectors     3;
+    nNonOrthogonalCorrectors 0;
+    nAlphaCorr      1;
+    nAlphaSubCycles 2;
+    cAlpha          1;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interFoam/ras/weirOverflow/system/setFieldsDict b/tutorials/multiphase/interFoam/ras/weirOverflow/system/setFieldsDict
new file mode 100644
index 0000000000000000000000000000000000000000..26d6b7f2a6c7f2db74d61eb3caf13bdece363db9
--- /dev/null
+++ b/tutorials/multiphase/interFoam/ras/weirOverflow/system/setFieldsDict
@@ -0,0 +1,35 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      setFieldsDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+defaultFieldValues
+(
+    volScalarFieldValue alpha1 0
+);
+
+regions
+(
+    boxToCell
+    {
+        box (-100 0 -100) (0 20 100);
+
+        fieldValues
+        (
+            volScalarFieldValue alpha1 1
+        );
+    }
+);
+
+// ************************************************************************* //