# OpenFOAM® v2.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.

- 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.

{

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.

(

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