OpenFOAM® v2.1.0: Numerical Methods

OpenFOAM® v2.1.0: Numerical Methods

19th December 2011

Multiphase MULES

The multidimensional universal limiter with explicit solution (MULES) now supports multiple phases/fields, while maintaining boundedness of individual phases and their sum using the new limitSum functionality.

Further information
Multiphase modelling
Source code
multiphaseInterFoam solver - $FOAM_SOLVERS/multiphase/multiphaseInterFoam
multiphaseEulerFoam solver - $FOAM_SOLVERS/multiphase/multiphaseEulerFoam
MULES - $FOAM_SRC/finiteVolume/fvMatrices/solvers/MULES

Multivariate independent interpolation scheme

Allows the application of independent limited schemes to be applied to each field in the ‘multivariate’ set independently, i.e. reverts the solver to the equivalent without the ‘multivariate’ approach.

Source code
finiteVolume library - $FOAM_SRC/finiteVolume

Linear-upwind stabilised transport

Linear-upwind stabilised transport (LUST) is a new interpolation schemes in which linear-upwind is blended with linear interpolation to stabilise solutions while maintaining second-order behaviour. The scheme is proving particularly successful for LES/DES in complex geometries with complex unstructured meshes, e.g. external aerodynamics of vehicles.

Source code
LUST class -
$FOAM_SRC/finiteVolume/interpolation/surfaceInterpolation/schemes/LUST
Example
LES of external aerodynamics of a motor bike -
$FOAM_TUTORIALS/incompressible/pisoFoam/les/motorBike

Field sources

Improvements have been made to the mechanism in which sources can be added to fields in equations. Sources can now generally be applied using a constant/sourcesProperties dictionary with entries like the following.

massSource1
{
    type            scalarExplicitSource;
    active          true;
    timeStart       0.2;
    duration        2.0;
    selectionMode   points;
    points
    (
        (2.75 0.5 0)
    );

    scalarExplicitSourceCoeffs
    {
        volumeMode      absolute;
        injectionRate
        {
            rho         1e-4; // kg/s
            H2O         1e-4; // kg/s
        }
    }
}

The example shows an explicit volumetric source for a scalar equation, given by a ...ExplicitSource entry. Similarly a constraint can also be applied that sets values in given cells, given by a ...ExplicitSetValue entry. Specialised sources are also available, e.g. actuationDiskSource for wind turbing siting calculations.

The new functionality is incorporated into solvers through an IObasicSourceList object, named sources, that appears in the solution of the momentum equation. The example below shows the implementation in simpleFoam, where volumetric sources are includes through sources in the UEqn. The constrain() function then applies constraints prior to solving the matrix equation.

tmp<fvVectorMatrix> UEqn
(
    fvm::div(phi, U)
  + turbulence->divDevReff(U)
  ==
    sources(U)
);

UEqn().relax();

sources.constrain(UEqn());

solve(UEqn() == -fvc::grad(p));

The source handling in implemented in the following solvers:

  • simpleFoam;
  • MRFSimpleFoam;
  • SRFSimpleFoam;
  • pimpleFoam;
  • pimpleDyMFoam;
  • SRFPimpleFoam;
  • potentialFreeSurfaceFoam;
  • LTSReactingParcelFoam;
  • coalChemistryFoam;
  • porousExplicitSourceReactingParcelFoam.

The windSimpleFoam is now deprecated since its behaviour is replacated by simpleFoam with the actuationDiskSource. For changes, see the updated turbinSiting example.

Source code
fieldSources classes - $FOAM_SRC/finiteVolume/cfdTools/general/fieldSources
Examples
Turbine siting example -
$FOAM_TUTORIALS/incompressible/simpleFoam/turbineSiting
LTSReactingParcelFoam examples -
$FOAM_TUTORIALS/lagrangian/LTSReactingParcelFoam
coalChemistryFoam example -
$FOAM_TUTORIALS/lagrangian/coalChemistryFoam/simplifiedSiwek
porousExplicitSourceReactingParcelFoam examples -
$FOAM_TUTORIALS/lagrangian/porousExplicitSourceReactingParcelFoam

Other

Further developments to the numerics in OpenFOAM include:

  • new orthogonalSnGrad scheme: snGrad scheme in which the mesh is treated as if it were orthogonal;
  • support for dynamic meshes added to ddtPhiCorr, an important mechanism to avoid certain types of pressure-velocity decoupling for transient running; see interDyMFoam example with dynamic refinement/unrefinement.

Example
Dynamic refinement/unrefinement example -
$FOAM_TUTORIALS/multiphase/interDyMFoam/ras/damBreakWithObstacle