OpenFOAM 1.6 Released
OpenCFD are pleased to announce a major, new release of version 1.6 of the OpenFOAM open source CFD toolbox. [Note: The OpenFOAM software is now released by the OpenFOAM Foundation following transfer of ownership in August 2011] Version 1.6 contains:
Applications
Numerous new, updated, and demonstration applications for buoyancy-flow, heat transfer and reacting flows; reimplementation of numerous solvers to remove pd
and to accommodate new changes to the turbulence modelling (see below); all accompanied by a new range of (re-organised) example cases.
Post-processing
Developments of utilities for general post-processing, visualisation and particle tracking; new and improved function objects for on-the-fly post-processing; more sampling functionality particularly for surfaces; updated for ParaView 3.6.1.
Turbulence modelling
Development of turbulence model libraries to allow solvers to support both RAS and LES, with wall functions reimplemented so that they are applied on a patch-by-patch basis; new wall function models and detached eddy simulation Spalart-Allmaras models added.
Thermophysical modelling
Development of thermophysical modelling to allow non-gas media to be added; addition of generalised polynomial equation of state, thermodynamics and transport models and more flexible reaction chemistry thermodynamics; new finite volume discrete ordinate method for radiation modelling added.
Lagrangian modelling
Overhaul of the underlying framework with new structure for variable composition, including several new sub-models added for injection, post-processing and patch interaction, evaporation and coal combustion.
Direct simulation Monte-Carlo
Extension of the discrete methods in OpenFOAM to an implementation of the direct simulation Monte-Carlo (DSMC) method.
Numerics
Extensive range of polynomial-fit higher-order interpolation schemes added (linear, cubic, quadratic); new polynomial-fit higher-order surface-normal gradient scheme added.
General use
Improvements for setup, running and post-processing of OpenFOAM cases, including more command line execution and argument features, and changes to dictionary directives and macro substitutions.
OpenFOAM v1.6 was produced by OpenCFD — at that time, Henry Weller, Chris Greenshields, Mattijs Janssens, Andy Heather, Sergio Ferraris and Graham Macpherson — with contributions from Mark Olesen.
For a full list of new features, see below.
Overview
OpenFOAM-1.6 is a significant upgrade to version 1.5 in ways that are outlined below. This release passes all our standard tests and the tutorials have been broadly checked.
GNU/Linux version
The 32bit and 64bit binary packs of the OpenFOAM release were compiled on a machine running openSUSE GNU/Linux version 11.1 and also tested on Ubuntu 9. We recommend that users run OpenFOAM on one of these, or on a similarly recent version of GNU/Linux. This release has also been successfully compiled and tested on older GNU/Linux releases, but this requires the installation of Qt 4.3.? (the sources for which are supplied with OpenFOAM-1.6, see README) for ParaView-3 to run.
C++ Compiler version
- Release compiled with GCC 4.3.3.
- Built-in support for the Intel C++ 10.? compiler (untested).
- The choice of the compiler is controlled by the setting of the
$WM_COMPILER
and$WM_COMPILER_ARCH
environment variables in the OpenFOAM-1.6/etc/bashrc (or cshrc) file. - The location of the compiler installation is controlled by the
$compilerInstall
environment variable in the OpenFOAM-1.6/etc/settings.sh (or settings.csh) file.
Library developments
Dictionary improvements/changes
- Dictionaries can use words (unquoted) or regular expressions (quoted) for their keywords. When searching, an exact match has priority over a regular expression match. Multiple regular expressions are matched in reverse order.
- The new
#includeIfPresent
directive is similar to the#include
directive, but does not generate an error if the file does not exist. - The default
#inputMode
is nowmerge
, which corresponds to the most general usage. The#inputMode warn
corresponds to the previous default behaviour. - The new
#inputMode protect
can be used to conditionally merge default values into existing dictionaries. - New
digest()
method to calculate and return the SHA1 message digest.
Regular Expressions
The addition of regular expressions marks a major improvement in usability.
- New
regExp
class provides support for accessing POSIX extended regular expresssions from within OpenFOAM. - New
wordRe
class can contain aword
or aregExp
. - New
stringListOps
to search string lists based on regular expressions,wordRe
orwordReList
. Istream
andOstream
now retain backslashes when reading/writing strings.
Convenience changes
IOobject
has a new constructor for creating anIOobject
from a single-path specification (eg, seeblockMesh -dict
option).argList
has new convenience methods for accessing options more directly:option()
,optionFound()
,optionLookup()
,optionRead()
,optionReadIfPresent()
.- The new
readList(Istream&)
can read a bracket-delimited list or handle a single value as a list of size 1. This can be a useful convenience when processing command-line options. - Export new environment variable
$FOAM_CASENAME
that contains the name part of the$FOAM_CASE
environment variable.
Turbulence modelling
Major development of turbulence model libraries to give extra flexibility at the solver level. For solvers that can support either RAS/LES computations, the selection is made in the constant/turbulenceProperties, by setting the simulationType
keyword to:
laminar
,RASModel
,LESModel
.
Depending on the selection, the model is the instantiated from constant/
- RASProperties,
- LESProperties.
RAS wall functions
Wall functions are now run-time selectable per patch for RAS.
- Velocity:
- Apply to turbulent viscosities
nut
ormut
, - Apply to
k
,Q
,R
, - Apply to
epsilon
,omega
.
- Apply to turbulent viscosities
- Temperature:
- Apply to turbulent thermal diffusivity,
alphat
(compressible only).
- Apply to turbulent thermal diffusivity,
To apply wall functions:
- To recapture the functionality of previous OpenFOAM versions (v1.5 and earlier) assign:
- for velocity:
nut
:nutWallFunction
,mut
:muWallFunction
,epsilon
:epsilonWallFunction
,omega
:omegaWallFunction
,k
,q
,R
:kqRWallFunction
.
- for temperature:
alphat
:alphatWallFunction
.
- for velocity:
- New
alphaSgsJayatillekeWallFunction
thermal wall function for compressible LES.
New LES turbulence models
- Spalart-Allmaras DDES.
- Spalart-Allmaras IDDES.
Upgrading:
- New utility –
applyWallFunctionBoundaryConditions
. - Solvers will automatically update existing cases.
- New fields created based on the presence of the
nut/mut
field. - Boundary conditions include scoping, i.e compressibility:: for compressible solvers.
- Modified fields will be backed-up to
<field>.old
.
- New fields created based on the presence of the
- NOTE:
- Fields are only updated for those fields associated with the current turbulence model selection, i.e. if fields exist for use with other models, they will not be updated.
- The new specification is not backwards compatible.
Thermo-physical Models
- Old compressibility-based thermo package renamed
basicThermo
→basicPsiThermo
. - New
basicRhoThermo
thermo package.- Additional density field stored.
- General form – can be used for other types of media, e.g. liquids.
- Additional polynomial-based thermodynamics:
- Equation of state:
icoPolynomial
, - Transport:
polynomialTransport
, - Thermo:
hPolynomialThermo
.
- Equation of state:
- Removed earlier hard-coding of gas thermophysics for chemistry modelling:
reactingMixture
now templated on thermo package,chemistryModel
now templated on thermo package,chemistrySolver
now templated on thermo package.
- New
fvDOM
radition model- finite volume, discrete ordinates method.
- New (reinstated)
eThermo
thermodynamics package- internal energy-based thermodynamics.
Lagrangian Intermediate
- Overhaul of the underlying framework.
- Reacting now split into reacting and reacting multiphase.
- New structure for variable composition.
- Many new sub-models, including:
- Injection
PatchInjection
– injection local to patch face cells,FieldActivatedInjection
– injection based on satisfying external criterion,- LookupTableInjection – explicity define injection locations and all parcel properties.
- Post-processing
- patch post-processing – collect data for parcels impacting user, defined patches.
- Patch interaction
- generalised behaviour for parcel interaction with patch.
- Phase change
- liquid evaporation.
- Injection
Coal combustion
- New library – extension of reacting-multiphase functionality.
- Surface reaction/combustion models.
Discrete methods
- New library offering DSMC simulation functionality – see
dsmcFoam
below. - Significant development of the libraries offering molecular dynamics simulation functionality – see
mdFoam
andmdEquilibrationFoam
below.
Numerics
- new polynomial-fit higher-order interpolation schemes:
biLinearFit
linearFit
quadraticLinearFit
quadraticFit
linearPureUpwindFit
quadraticLinearPureUpwindFit
quadraticLinearUpwindFit
quadraticUpwindFit
cubicUpwindFit
- new polynomial-fit higher-order Sn-Grad:
quadraticFitSnGrad
.
New surfMesh library
Provides a more efficient storage mechanism than possible with triSurface
without restrictions on the shape of the face (templated parameter).
MeshedSurface
class – with zero or more contiguoussurfZones
.UnsortedMeshedSurface
class – unordered surface zones (as pertriSurface
).surfMesh
class – for reading/writing in native OpenFOAM format.
Solvers
Solver restructuring
The upgrade to the turbulence models means that the simulation type, i.e. laminar, RAS or LES can be selected at run time. This has allowed a reduction in the number of solvers, simplifying the overall code structure
- Solvers which support laminar, RAS and LES:
turbFoam
,oodles
→pisoFoam
.turbDyMFoam
→pimpleDyMFoam
.rhoTurbFoam
,coodles
→rhoPisoFoam
.xoodles
absorbed intoXiFoam
.buoyantFoam
,lesBuoyantFoam
→buoyantPisoFoam
.interFoam
,rasInterFoam
,lesInterFoam
→interFoam
.lesCavitatingFoam
,rasCavitatingFoam
→cavitatingFoam
.
- Solvers which support LES only:
channelOodles
→channelFoam
(LES).
pd
replaced by static pressurep
. All solvers in which buoyancy affects might be strong have been converted from usingpd
top
with improved numerics to give equally good accuracy and stability. This change is prompted by the need to remove the confusion surrounding the meaning and purpose ofpd
.g
(acceleration due to gravity) is now a newuniformDimensionedVectorField
which has the behaviour of a field, is registered to anobjectRegistry
, but stores only a single value. Thusg
and otherUniformDimensionedFields
can be created and looked-up elsewhere in the code, e.g. infvPatchFields
.
Solver control improvements
Now uses consistent dictionary entries for the solver controls.
- This Allows dictionary substitutions and regular expressions in system/fvSolution.
- The old solver control syntax is still supported (warning emitted), but the new
foamUpgradeFvSolution
utility can be used to convert system/fvSolution to the new format.
New Solvers
buoyantBoussinesqSimpleFoam
Steady state heat transfer solver using a Boussinesq approximation for buoyancy, with laminar, RAS or LES turbulence modelling.buoyantBoussinesqPisoFoam
Transient heat transfer solver using a Boussinesq approximation for buoyancy, with laminar, RAS or LES turbulence modelling.coalChemistryFoam
Transient, reacting lagrangian solver, employing a coal cloud and a thermo cloud, with chemistry, and laminar, RAS or LES turbulence modelling.porousExplicitSourceReactingParcelFoam
Transient, reacting lagrangian solver, employing a single phase reacting cloud, with porous media, explicit mass sources, and laminar, RAS or LES turbulence modelling.rhoReactingFoam
Density-based thermodynamics variant of the reactingFoam solver, i.e. now applicable to liquid systems.dsmcFoam
DSMC (Direct Simulation Monte-Carlo) solver for rarefied gas dynamics simulations, able to simulate mixtures of an arbitrary number of gas species. The variable hard sphere collision model with Larsen-Borgnakke internal energy redistribution (see “Molecular Gas Dynamics and the Direct Simulation of Gas Flows” G.A. Bird, 1994) is available; other run-time selectable collision models can be easily added.
Updated solvers
mdFoam
Molecular Dynamics (MD) solver able to simulate a mixture of an arbitrary number of mono-atomic and small, rigid polyatomic (i.e. H2O, N2) molecular species, with 6 degree of freedom motion, in complex geometries. A molecule of any species can be built by specifying its sites of mass and charge. All molecules interact with short-range dispersion forces and pairwise electrostatic interactions using methods described in: Fennell and Gezelter, J. Chem. Phys. 124, 234104 (2006).mdEquilibrationFoam
Similar to mdFoam, but employs velocity scaling to adjust the simulation temperature to a target value. Useful to equilibrate a case before simulation.chtMultiRegionFoam
New boundary condition allows independent decomposition of coupled regions without any constraint on the decomposition.
Boundary conditions
- Improved set of direct mapped boundary conditions.
buoyantPressureFvPatchScalarField
, the new buoyancy pressure boundary condition now supportsp
andpd
for backward compatibility.uniformDensityHydrostaticPressure
is an additional pressure boundary condition to aid the transition frompd
top
as it behaves similarly to specifying a uniformpd
at an outlet for example.activeBaffleVelocity
dynamically combines cyclic and wall patches so that the flow through the patch can be controlled e.g. by pressure drop.rotatingWallVelocity
specifies a rotating velocity, given the rotational speed, origin and axis.
Utilities
Improvements
blockMesh
has a new-dict
option for specifying an alternative dictionary for the block mesh description. TheconvertToMeters
entry is now optional, and the alternativescale
entry can be used for less typing.foamToEnsight
has a new-noPatches
option to suppress generation of patches.foamToEnsightParts
has new-noMesh
and-index
options that can be useful when post-processing results incrementally.snappyHexMesh
has lower memory footprint. New distributed triangulated surface type for meshing surfaces with extremely large triangle count. Now supports multi-region meshing of arbitrarily complex regions.
New utilities
particleTracks
– generate particle tracks for lagrangian calculations.dsmcInitialise
– preprocessing utility to create initial configurations of DSMC particles in a geometry.surfaceRedistributePar
– preprocessing utility to create distributed triangulated surface.
New foamCalc functions
interpolate
performsfvc::interpolate(<field>)
.randomise
randomises a<field>
by a given perturbation.addSubtract
provides simple add/subtract field functionality.
Usage
timeSelector
can now combine-time ranges
and-latestTime
options. For example,-time '0.01:0.09' -latestTime
vs.-time '0.01:'
. More reliable behaviour for cases missing constant/ or 0/ directories. When the-noZero
option is enabled,-latestTime
will not select the0/
directory unless the-zeroTime
option is given. This helps avoid ill effects caused by accidentally using the 0/ directory in certain utilities (eg,reconstructPar
).-region
option added to more utilities.
Improvements to Paraview reader module
PV3FoamReader
added mesh region handling. The region name is parsed from the filename. Eg, case{region}.OpenFOAM.paraFoam
with a new-region
option for specifying an alternative region. A new-touch
option to generate the .OpenFOAM file only. Only creates (and removes) .OpenFOAM files if they didn’t already exist, which is useful in connection with the-touch
option.
Post-processing
- Sampling on iso-surfaces, interpolated or non-interpolated.
- Sampling on surface defined by distance to surface (
distanceSurface
). - Cutting planes for arbitrary meshes.
- Output to any surface geometry format supported by the
surfMesh
library.
Improvements for function objects and time-looping
- The
functionObjectList
retains the order of thefunctionObject
order, which allows a chaining of operations. It is thus internally more efficient when system/controlDict usesfunctions ..
instead offunctions (..)
, but both forms are supported. - The
functionObject
now has an additionalend()
method that is called whenTime::loop()
orTime::run()
determine that the time-loop exits. Accordingly, one of these two idioms should be used in solver code:while (runTime.loop() ...
,while (runTime.run()) runTime++; ...
.
- New
functionObjectList
now tracks the SHA1 message digest of the sub-directories. This avoids reloading afunctionObject
when something unrelated in system/controlDict changed.
New function objects:
systemCall
– executes a list of system instructions.fieldMinMax
– computes the min/max of a<field>
.staticPressure
– converts kinematic pressure to static pressure.dsmcFields
– calculates intensive fields (velocity and temperature) from averaged extensive fields (i.e. momentum and energy).
Usage
- Improved output control:
timeStep
oroutputTime
.
Tutorial restructuring
To reflect solver application structure.
Third-party Software
gcc
upgraded to version 4.3.3.OpenMPI
upgraded to version 1.3.3.ParaView
upgraded to version 3.6.1.Scotch
new decomposition method:
Scotch (http://gforge.inria.fr/projects/scotch/) is a general multi-level decomposition method originating from the ScAlApplix project (Inria). It is a framework for general recursive partitioning methods and a such comparable to Metis but with a permissive licence.The corresponding decomposition method (indecomposeParDict
) isscotch
. An optionalstrategy
string can be supplied to change the decomposition methods; initial testing shows the default strategy producing decompositions comparable in quality to Metis.