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()); 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