19th December 2011

OpenFOAM 2.1.0: Numerical Methods

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.  See Multiphase modelling for more information.

Source code

  • multiphaseInterFoam solver
  • multiphaseEulerFoam solver

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

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


  • LES of external aerodynamics of a motor bike

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.

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

        volumeMode      absolute;
            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 UEqn
    fvm::div(phi, U)
  + turbulence->divDevReff(U)



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


  • Turbine siting example
  • LTSReactingParcelFoam examples
  • coalChemistryFoam example
  • porousExplicitSourceReactingParcelFoam examples


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.


  • Dynamic refinement/unrefinement example