interfaceCompression: New run-time selectable VoF interface compression scheme

A new run-time selectable interface compression scheme framework has been added
to the two-phase VoF solvers to provide greater flexibility, extensibility and
more consistent user-interface.  The previously built-in interface compression
is now in the standard run-time selectable surfaceInterpolationScheme
interfaceCompression:

Class
    Foam::interfaceCompression

Description
    Interface compression corrected scheme, based on counter-gradient
    transport, to maintain sharp interfaces during VoF simulations.

    The interface compression is applied to the face interpolated field from a
    suitable 2nd-order shape-preserving NVD or TVD scheme, e.g.  vanLeer or
    vanAlbada.  A coefficient is supplied to control the degree of compression,
    with a value of 1 suitable for most VoF cases to ensure interface integrity.
    A value larger than 1 can be used but the additional compression can bias
    the interface to follow the mesh more closely while a value smaller than 1
    can lead to interface smearing.

    Example:
    \verbatim
    divSchemes
    {
        .
        .
        div(phi,alpha)     Gauss interfaceCompression vanLeer 1;
        .
        .
    }
    \endverbatim

The separate scheme for the interface compression term "div(phirb,alpha)" is no
longer required or used nor is the compression coefficient cAlpha in fvSolution
as this is now part of the "div(phi,alpha)" scheme specification as shown above.

Backward-compatibility is provided by checking the specified "div(phi,alpha)"
scheme against the known interface compression schemes and if it is not one of
those the new interfaceCompression scheme is used with the cAlpha value
specified in fvSolution.

More details can be found here:
https://cfd.direct/openfoam/free-software/multiphase-interface-capturing

Henry G. Weller
CFD Direct Ltd.
This commit is contained in:
Henry Weller
2020-07-02 10:13:15 +01:00
parent 70cfa1a47c
commit fa79bab863
77 changed files with 325 additions and 290 deletions

View File

@ -30,8 +30,7 @@ divSchemes
div(rhoPhi,U) Gauss linearUpwindV grad(U);
div(rhoPhi,T) Gauss linearUpwind grad(T);
div(phi,alpha) Gauss vanLeer;
div(phirb,alpha) Gauss linear;
div(phi,alpha) Gauss interfaceCompression vanLeer 1;
div(phi,p) Gauss upwind;
div(rhoPhi,K) Gauss upwind;

View File

@ -21,7 +21,6 @@ solvers
{
nAlphaCorr 2;
nAlphaSubCycles 1;
cAlpha 1;
MULESCorr yes;
nLimiterIter 5;

View File

@ -27,8 +27,7 @@ gradSchemes
divSchemes
{
div(phi,alpha) Gauss vanLeer;
div(phirb,alpha) Gauss linear;
div(phi,alpha) Gauss interfaceCompression vanLeer 1;
div(rhoPhi,U) Gauss upwind;
div(rhoPhi,T) Gauss upwind;

View File

@ -21,7 +21,6 @@ solvers
{
nAlphaCorr 1;
nAlphaSubCycles 2;
cAlpha 1;
MULESCorr no;
nLimiterIter 5;

View File

@ -27,8 +27,7 @@ gradSchemes
divSchemes
{
div(phi,alpha) Gauss vanLeer;
div(phirb,alpha) Gauss linear;
div(phi,alpha) Gauss interfaceCompression vanLeer 1;
div(rhoPhi,U) Gauss upwind;
div(rhoPhi,T) Gauss upwind;

View File

@ -21,7 +21,6 @@ solvers
{
nAlphaCorr 1;
nAlphaSubCycles 2;
cAlpha 1;
MULESCorr no;
nLimiterIter 5;

View File

@ -27,8 +27,7 @@ gradSchemes
divSchemes
{
div(phi,alpha) Gauss vanLeer;
div(phirb,alpha) Gauss linear;
div(phi,alpha) Gauss interfaceCompression vanLeer 1;
div(rhoPhi,U) Gauss vanLeerV;
div(rhoPhi,T) Gauss vanLeer;

View File

@ -21,7 +21,6 @@ solvers
{
nAlphaCorr 1;
nAlphaSubCycles 3;
cAlpha 1.5;
}
".*(rho|rhoFinal)"

View File

@ -28,8 +28,7 @@ gradSchemes
divSchemes
{
div(rhoPhi,U) Gauss linear;
div(phi,alpha) Gauss vanLeer;
div(phirb,alpha) Gauss linear;
div(phi,alpha) Gauss interfaceCompression vanLeer 1;
div(phi,k) Gauss limitedLinear 1;
div(phi,B) Gauss limitedLinear 1;
div(B) Gauss linear;

View File

@ -21,7 +21,6 @@ solvers
{
nAlphaCorr 1;
nAlphaSubCycles 4;
cAlpha 1;
}
"pcorr.*"

View File

@ -29,8 +29,7 @@ gradSchemes
divSchemes
{
div(rhoPhi,U) Gauss linearUpwind grad(U);
div(phi,alpha) Gauss vanLeer;
div(phirb,alpha) Gauss linear;
div(phi,alpha) Gauss interfaceCompression vanLeer 1;
div(phi,k) Gauss linearUpwind limitedGrad;
div(phi,omega) Gauss linearUpwind limitedGrad;
div(((rho*nuEff)*dev2(T(grad(U))))) Gauss linear;

View File

@ -21,7 +21,6 @@ solvers
{
nAlphaCorr 2;
nAlphaSubCycles 1;
cAlpha 1;
MULESCorr yes;
nLimiterIter 10;

View File

@ -29,8 +29,7 @@ gradSchemes
divSchemes
{
div(rhoPhi,U) Gauss linearUpwind grad(U);
div(phi,alpha) Gauss vanLeer;
div(phirb,alpha) Gauss linear;
div(phi,alpha) Gauss interfaceCompression vanLeer 1;
div(phi,k) Gauss linearUpwind limitedGrad;
div(phi,omega) Gauss linearUpwind limitedGrad;
div(((rho*nuEff)*dev2(T(grad(U))))) Gauss linear;

View File

@ -21,7 +21,6 @@ solvers
{
nAlphaCorr 3;
nAlphaSubCycles 1;
cAlpha 1;
MULESCorr yes;
nLimiterIter 15;

View File

@ -29,8 +29,7 @@ gradSchemes
divSchemes
{
div(rhoPhi,U) Gauss linearUpwind grad(U);
div(phi,alpha) Gauss vanLeer;
div(phirb,alpha) Gauss linear;
div(phi,alpha) Gauss interfaceCompression vanLeer 1;
div(phi,k) Gauss linearUpwind limitedGrad;
div(phi,omega) Gauss linearUpwind limitedGrad;
div(((rho*nuEff)*dev2(T(grad(U))))) Gauss linear;

View File

@ -21,7 +21,6 @@ solvers
{
nAlphaCorr 3;
nAlphaSubCycles 1;
cAlpha 1;
MULESCorr yes;
nLimiterIter 15;

View File

@ -28,8 +28,7 @@ gradSchemes
divSchemes
{
div(rhoPhi,U) Gauss upwind;
div(phi,alpha) Gauss vanLeer;
div(phirb,alpha) Gauss linear;
div(phi,alpha) Gauss interfaceCompression vanLeer 1;
div(phi,k) Gauss upwind;
div(phi,epsilon) Gauss upwind;
div(((rho*nuEff)*dev2(T(grad(U))))) Gauss linear;

View File

@ -21,7 +21,6 @@ solvers
{
nAlphaCorr 2;
nAlphaSubCycles 1;
cAlpha 1;
MULESCorr yes;
nLimiterIter 3;

View File

@ -28,8 +28,7 @@ gradSchemes
divSchemes
{
div(rhoPhi,U) Gauss linearUpwind grad(U);
div(phi,alpha) Gauss vanLeer;
div(phirb,alpha) Gauss linear;
div(phi,alpha) Gauss interfaceCompression vanLeer 1;
div(phi,k) Gauss upwind;
div(phi,epsilon) Gauss upwind;
div(((rho*nuEff)*dev2(T(grad(U))))) Gauss linear;

View File

@ -21,7 +21,6 @@ solvers
{
nAlphaCorr 2;
nAlphaSubCycles 1;
cAlpha 1;
MULESCorr yes;
nLimiterIter 3;

View File

@ -28,8 +28,7 @@ gradSchemes
divSchemes
{
div(rhoPhi,U) Gauss linearUpwind grad(U);
div(phi,alpha) Gauss vanLeer;
div(phirb,alpha) Gauss linear;
div(phi,alpha) Gauss interfaceCompression vanLeer 1;
div(phi,k) Gauss upwind;
div(phi,epsilon) Gauss upwind;
div(((rho*nuEff)*dev2(T(grad(U))))) Gauss linear;

View File

@ -21,7 +21,6 @@ solvers
{
nAlphaCorr 2;
nAlphaSubCycles 1;
cAlpha 1;
MULESCorr yes;
nLimiterIter 3;

View File

@ -28,8 +28,7 @@ gradSchemes
divSchemes
{
div(rhoPhi,U) Gauss vanLeerV;
div(phi,alpha) Gauss vanLeer;
div(phirb,alpha) Gauss linear;
div(phi,alpha) Gauss interfaceCompression vanLeer 1;
div(phi,k) Gauss upwind;
div(phi,epsilon) Gauss upwind;
div(((rho*nuEff)*dev2(T(grad(U))))) Gauss linear;

View File

@ -21,7 +21,6 @@ solvers
{
nAlphaCorr 2;
nAlphaSubCycles 1;
cAlpha 1;
MULESCorr yes;
nLimiterIter 5;

View File

@ -29,8 +29,7 @@ gradSchemes
divSchemes
{
div(rhoPhi,U) Gauss linearUpwind grad(U);
div(phi,alpha) Gauss vanLeer;
div(phirb,alpha) Gauss linear;
div(phi,alpha) Gauss interfaceCompression vanLeer 1;
div(phid1,p_rgh) Gauss upwind;
div(phid2,p_rgh) Gauss upwind;
div(rhoPhi,T) Gauss linearUpwind unlimited;

View File

@ -21,7 +21,6 @@ solvers
{
nAlphaCorr 1;
nAlphaSubCycles 2;
cAlpha 1;
}
p_rgh

View File

@ -30,8 +30,7 @@ divSchemes
default none;
div(rhoPhi,U) Gauss linearUpwind grad(U);
div(phi,alpha) Gauss vanLeer;
div(phirb,alpha) Gauss linear;
div(phi,alpha) Gauss interfaceCompression vanLeer 1;
"div\(phi,(k|omega)\)" Gauss upwind;
div(((rho*nuEff)*dev2(T(grad(U))))) Gauss linear;

View File

@ -21,7 +21,6 @@ solvers
{
nAlphaCorr 1;
nAlphaSubCycles 1;
cAlpha 1;
MULESCorr yes;
nLimiterIter 3;

View File

@ -28,8 +28,7 @@ gradSchemes
divSchemes
{
div(rhoPhi,U) Gauss linear;
div(phi,alpha) Gauss vanLeer;
div(phirb,alpha) Gauss linear;
div(phi,alpha) Gauss interfaceCompression vanLeer 1;
div(phi,k) Gauss upwind;
div(phi,epsilon) Gauss upwind;
div(phi,R) Gauss upwind;

View File

@ -20,7 +20,6 @@ solvers
{
nAlphaCorr 1;
nAlphaSubCycles 2;
cAlpha 1;
}
"pcorr.*"

View File

@ -28,8 +28,7 @@ gradSchemes
divSchemes
{
div(rhoPhi,U) Gauss upwind;
div(phi,alpha) Gauss vanLeer;
div(phirb,alpha) Gauss linear;
div(phi,alpha) Gauss interfaceCompression vanLeer 1;
div(((rho*nuEff)*dev2(T(grad(U))))) Gauss linear;
}

View File

@ -21,7 +21,6 @@ solvers
{
nAlphaCorr 1;
nAlphaSubCycles 2;
cAlpha 1;
}
"pcorr.*"

View File

@ -28,8 +28,7 @@ gradSchemes
divSchemes
{
div(rhoPhi,U) Gauss linearUpwind grad(U);
div(phi,alpha) Gauss vanLeer;
div(phirb,alpha) Gauss linear;
div(phi,alpha) Gauss interfaceCompression vanLeer 1;
div(((rho*nuEff)*dev2(T(grad(U))))) Gauss linear;
}

View File

@ -21,7 +21,6 @@ solvers
{
nAlphaCorr 2;
nAlphaSubCycles 1;
cAlpha 1;
MULESCorr yes;
nLimiterIter 5;

View File

@ -28,8 +28,7 @@ gradSchemes
divSchemes
{
div(rhoPhi,U) Gauss upwind;
div(phi,alpha) Gauss vanLeer;
div(phirb,alpha) Gauss linear;
div(phi,alpha) Gauss interfaceCompression vanLeer 1;
div(phi,k) Gauss upwind;
div(phi,omega) Gauss upwind;
div(((rho*nuEff)*dev2(T(grad(U))))) Gauss linear;

View File

@ -21,7 +21,6 @@ solvers
{
nAlphaCorr 1;
nAlphaSubCycles 3;
cAlpha 1;
}
p_rgh

View File

@ -28,8 +28,7 @@ gradSchemes
divSchemes
{
div(rhoPhi,U) Gauss linear;
div(phi,alpha) Gauss vanLeer;
div(phirb,alpha) Gauss linear;
div(phi,alpha) Gauss interfaceCompression vanLeer 1;
div(((rho*nuEff)*dev2(T(grad(U))))) Gauss linear;
}

View File

@ -21,7 +21,6 @@ solvers
{
nAlphaCorr 1;
nAlphaSubCycles 2;
cAlpha 1;
}
"pcorr.*"

View File

@ -29,8 +29,7 @@ gradSchemes
divSchemes
{
div(rhoPhi,U) Gauss linearUpwindV grad(U);
div(phi,alpha) Gauss vanLeer;
div(phirb,alpha) Gauss linear;
div(phi,alpha) Gauss interfaceCompression vanLeer 1;
div(((rho*nuEff)*dev2(T(grad(U))))) Gauss linear;
}

View File

@ -21,7 +21,6 @@ solvers
{
nAlphaCorr 2;
nAlphaSubCycles 1;
cAlpha 1;
MULESCorr yes;
nLimiterIter 8;

View File

@ -28,8 +28,7 @@ gradSchemes
divSchemes
{
div(rhoPhi,U) Gauss vanLeerV;
div(phi,alpha) Gauss vanLeer;
div(phirb,alpha) Gauss linear;
div(phi,alpha) Gauss interfaceCompression vanLeer 1;
div(((rho*nuEff)*dev2(T(grad(U))))) Gauss linear;
}

View File

@ -21,7 +21,6 @@ solvers
{
nAlphaCorr 1;
nAlphaSubCycles 3;
cAlpha 1.5;
}
"pcorr.*"

View File

@ -28,8 +28,7 @@ gradSchemes
divSchemes
{
div(rhoPhi,U) Gauss vanLeerV;
div(phi,alpha) Gauss vanLeer;
div(phirb,alpha) Gauss linear;
div(phi,alpha) Gauss interfaceCompression vanLeer 1;
div(((rho*nuEff)*dev2(T(grad(U))))) Gauss linear;
}

View File

@ -21,7 +21,6 @@ solvers
{
nAlphaCorr 1;
nAlphaSubCycles 3;
cAlpha 1.5;
}
"pcorr.*"

View File

@ -28,8 +28,7 @@ gradSchemes
divSchemes
{
div(rhoPhi,U) Gauss vanLeerV;
div(phi,alpha) Gauss vanLeer;
div(phirb,alpha) Gauss linear;
div(phi,alpha) Gauss interfaceCompression vanLeer 1;
div(((rho*nuEff)*dev2(T(grad(U))))) Gauss linear;
}

View File

@ -21,7 +21,6 @@ solvers
{
nAlphaCorr 1;
nAlphaSubCycles 3;
cAlpha 1.5;
}
"pcorr.*"

View File

@ -28,8 +28,7 @@ gradSchemes
divSchemes
{
div(rhoPhi,U) Gauss vanLeerV;
div(phi,alpha) Gauss vanLeer;
div(phirb,alpha) Gauss linear;
div(phi,alpha) Gauss interfaceCompression vanLeer 1;
div(((rho*nuEff)*dev2(T(grad(U))))) Gauss linear;
}

View File

@ -21,7 +21,6 @@ solvers
{
nAlphaCorr 1;
nAlphaSubCycles 3;
cAlpha 1.5;
}
"pcorr.*"

View File

@ -28,8 +28,7 @@ gradSchemes
divSchemes
{
div(rhoPhi,U) Gauss vanLeerV;
div(phi,alpha) Gauss vanLeer;
div(phirb,alpha) Gauss linear;
div(phi,alpha) Gauss interfaceCompression vanLeer 1;
div(((rho*nuEff)*dev2(T(grad(U))))) Gauss linear;
}

View File

@ -21,7 +21,6 @@ solvers
{
nAlphaCorr 1;
nAlphaSubCycles 3;
cAlpha 1.5;
}
"pcorr.*"

View File

@ -28,8 +28,7 @@ gradSchemes
divSchemes
{
div(rhoPhi,U) Gauss vanLeerV;
div(phi,alpha) Gauss vanLeer;
div(phirb,alpha) Gauss linear;
div(phi,alpha) Gauss interfaceCompression vanLeer 1;
div(((rho*nuEff)*dev2(T(grad(U))))) Gauss linear;
}

View File

@ -21,7 +21,6 @@ solvers
{
nAlphaCorr 1;
nAlphaSubCycles 3;
cAlpha 1;
}
"pcorr.*"

View File

@ -34,8 +34,7 @@ gradSchemes
divSchemes
{
div(rhoPhi,U) Gauss linearUpwindV grad(U);
div(phi,alpha) Gauss vanLeer;
div(phirb,alpha) Gauss linear;
div(phi,alpha) Gauss interfaceCompression vanLeer 1;
div(((rho*nuEff)*dev2(T(grad(U))))) Gauss linear;
}

View File

@ -21,7 +21,6 @@ solvers
{
nAlphaCorr 2;
nAlphaSubCycles 1;
cAlpha 1;
MULESCorr yes;
nLimiterIter 3;

View File

@ -30,8 +30,7 @@ divSchemes
div(rhoPhi,U) Gauss linearUpwind grad(U);
div(phi,omega) Gauss linearUpwind grad(omega);
div(phi,k) Gauss linearUpwind grad(k);
div(phi,alpha) Gauss vanLeer;
div(phirb,alpha) Gauss linear;
div(phi,alpha) Gauss interfaceCompression vanLeer 1;
div(((rho*nuEff)*dev2(T(grad(U))))) Gauss linear;
}

View File

@ -18,7 +18,6 @@ solvers
{
"alpha.water.*"
{
cAlpha 0;
nAlphaCorr 2;
nAlphaSubCycles 1;

View File

@ -30,8 +30,7 @@ divSchemes
{
default none;
div(phi,alpha) Gauss vanLeer;
div(phirb,alpha) Gauss linear;
div(phi,alpha) Gauss interfaceCompression vanLeer 1;
div(rhoPhi,U) Gauss linearUpwind grad(U);
div(phi,k) Gauss upwind;
div(phi,epsilon) Gauss upwind;

View File

@ -18,7 +18,6 @@ solvers
{
"alpha.water.*"
{
cAlpha 0;
nAlphaCorr 2;
nAlphaSubCycles 1;