diff --git a/src/finiteVolume/cfdTools/general/porosityModel/solidification/solidification.C b/src/finiteVolume/cfdTools/general/porosityModel/solidification/solidification.C
index ac60cf0d04c971bf3881dee843e96058da4f19e6..68d3edcf774cab5822d157e55284aa0218558c06 100644
--- a/src/finiteVolume/cfdTools/general/porosityModel/solidification/solidification.C
+++ b/src/finiteVolume/cfdTools/general/porosityModel/solidification/solidification.C
@@ -53,6 +53,7 @@ Foam::porosityModels::solidification::solidification
 :
     porosityModel(name, modelType, mesh, dict, cellZoneName),
     TName_(coeffs_.lookupOrDefault<word>("T", "T")),
+    alphaName_(coeffs_.lookupOrDefault<word>("alpha", "none")),
     rhoName_(coeffs_.lookupOrDefault<word>("rho", "rho")),
     D_(Function1<scalar>::New("D", coeffs_))
 {}
diff --git a/src/finiteVolume/cfdTools/general/porosityModel/solidification/solidification.H b/src/finiteVolume/cfdTools/general/porosityModel/solidification/solidification.H
index 7f86849f64d4fc1d8e8fc23a79be4d1f88f31f86..119ba5680533c16dfadd90b3d3e8c5d90ee46198 100644
--- a/src/finiteVolume/cfdTools/general/porosityModel/solidification/solidification.H
+++ b/src/finiteVolume/cfdTools/general/porosityModel/solidification/solidification.H
@@ -31,12 +31,13 @@ Description
     is represented as a porous blockage with the drag-coefficient evaluated from
 
         \f[
-            S = - \rho D(T) U
+            S = - \alpha \rho D(T) U
         \f]
 
     where
     \vartable
-        D(T) | User-defined drag-coefficient as function of temperature
+        \alpha  | Optional phase-fraction of solidifying phase
+        D(T)    | User-defined drag-coefficient as function of temperature
     \endvartable
 
     Note that the latent heat of solidification is not included and the
@@ -55,6 +56,9 @@ Description
                 (330.5     0)     // Liquid above 330.5K
             );
 
+            // Optional phase-fraction of solidifying phase
+            alpha alpha.liquid;
+
             // Solidification porosity is isotropic
             // use the global coordinate system
             coordinateSystem
@@ -103,6 +107,9 @@ class solidification
         //- Name of temperature field, default = "T"
         word TName_;
 
+        //- Name of optional phase-fraction field, default = "none"
+        word alphaName_;
+
         //- Name of density field, default = "rho"
         word rhoName_;
 
@@ -112,6 +119,27 @@ class solidification
 
     // Private Member Functions
 
+        //- Apply resistance
+        template<class AlphaFieldType, class RhoFieldType>
+        void apply
+        (
+            scalarField& Udiag,
+            const scalarField& V,
+            const AlphaFieldType& alpha,
+            const RhoFieldType& rho,
+            const volVectorField& U
+        ) const;
+
+        //- Apply resistance
+        template<class AlphaFieldType, class RhoFieldType>
+        void apply
+        (
+            tensorField& AU,
+            const AlphaFieldType& alpha,
+            const RhoFieldType& rho,
+            const volVectorField& U
+        ) const;
+
         //- Apply resistance
         template<class RhoFieldType>
         void apply
diff --git a/src/finiteVolume/cfdTools/general/porosityModel/solidification/solidificationTemplates.C b/src/finiteVolume/cfdTools/general/porosityModel/solidification/solidificationTemplates.C
index 71b290af17819ee85fbf1aa85e7fd5193bc84346..d9ea04d59eb99dcbed77a68179efad455eb17fd7 100644
--- a/src/finiteVolume/cfdTools/general/porosityModel/solidification/solidificationTemplates.C
+++ b/src/finiteVolume/cfdTools/general/porosityModel/solidification/solidificationTemplates.C
@@ -24,14 +24,16 @@ License
 \*---------------------------------------------------------------------------*/
 
 #include "volFields.H"
+#include "geometricOneField.H"
 
 // * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
 
-template<class RhoFieldType>
+template<class AlphaFieldType, class RhoFieldType>
 void Foam::porosityModels::solidification::apply
 (
     scalarField& Udiag,
     const scalarField& V,
+    const AlphaFieldType& alpha,
     const RhoFieldType& rho,
     const volVectorField& U
 ) const
@@ -48,16 +50,18 @@ void Foam::porosityModels::solidification::apply
         forAll(cells, i)
         {
             const label celli = cells[i];
-            Udiag[celli] += V[celli]*rho[celli]*D_->value(T[celli]);
+            Udiag[celli] +=
+                V[celli]*alpha[celli]*rho[celli]*D_->value(T[celli]);
         }
     }
 }
 
 
-template<class RhoFieldType>
+template<class AlphaFieldType, class RhoFieldType>
 void Foam::porosityModels::solidification::apply
 (
     tensorField& AU,
+    const AlphaFieldType& alpha,
     const RhoFieldType& rho,
     const volVectorField& U
 ) const
@@ -74,10 +78,60 @@ void Foam::porosityModels::solidification::apply
         forAll(cells, i)
         {
             const label celli = cells[i];
-            AU[celli] += tensor::I*rho[celli]*D_->value(T[celli]);
+            AU[celli] +=
+                tensor::I*alpha[celli]*rho[celli]*D_->value(T[celli]);
         }
     }
 }
 
 
+template<class RhoFieldType>
+void Foam::porosityModels::solidification::apply
+(
+    scalarField& Udiag,
+    const scalarField& V,
+    const RhoFieldType& rho,
+    const volVectorField& U
+) const
+{
+    if (alphaName_ == "none")
+    {
+        return apply(Udiag, V, geometricOneField(), rho, U);
+    }
+    else
+    {
+        const volScalarField& alpha = mesh_.lookupObject<volScalarField>
+        (
+            IOobject::groupName(alphaName_, U.group())
+        );
+
+        return apply(Udiag, V, alpha, rho, U);
+    }
+}
+
+
+template<class RhoFieldType>
+void Foam::porosityModels::solidification::apply
+(
+    tensorField& AU,
+    const RhoFieldType& rho,
+    const volVectorField& U
+) const
+{
+    if (alphaName_ == "none")
+    {
+        return apply(AU, geometricOneField(), rho, U);
+    }
+    else
+    {
+        const volScalarField& alpha = mesh_.lookupObject<volScalarField>
+        (
+            IOobject::groupName(alphaName_, U.group())
+        );
+
+        return apply(AU, alpha, rho, U);
+    }
+}
+
+
 // ************************************************************************* //