Close

# 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
`\$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 UEqn
(
fvm::div(phi, U)
+ turbulence->divDevReff(U)
==
sources(U)
);

UEqn().relax();

sources.constrain(UEqn());

```

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`

19th December 2011