26th July 2017

OpenFOAM 5.0 Released

The OpenFOAM Foundation is pleased to announce the release of version 5.0 of the OpenFOAM open source CFD toolbox. Version 5.0 is a snapshot of the OpenFOAM development version that is “always-releasable” quality, through rapid-turnaround feedback between code maintainers and users.  It provides new functionality and major improvements to existing code, with strict demands on usabilityreliability and maintainability.  It is produced for the benefit of all users, rather than a handful of commercial organisations.

New functionality includes wave modelling, parallel I/O and a rewrite of the tracking algorithm.  Usability of snappyHexMesh has improved  and new functionality in blockMesh enables background mesh generation that has improved reliability of rotating geometry cases.  There is new modelling in transport, turbulence, thermodynamics and combustion and useful new generic tools, e.g. more user-defined functions (Function1) for time-varying boundary conditions.  There are improvements in performance and reliability of numerics, e.g. for multiphase and compressible flows, and general usability, e.g. bash completion, new function objects and the latest ParaView 5.4.0.

Version 5.0 is a new major version release in which some backward compatibility to OpenFOAM version 4 is not maintained (requiring some changes to case input files), containing 816 code commits since version 4.0.  OpenFOAM 5.0 uses all features of the ISO/IEC 14882:2011 (C++11) standard, and has been tested with C++ compilers that conform to that standard, such as GCC v4.8+, Clang v3.7+ and Intel ICC v17.0.4+.

OpenFOAM 5.0 is distributed under the General Public Licence by the OpenFOAM Foundation for:

Multiphase for Marine/Offshore Engineering

Further Information: “Water Waves in OpenFOAM”.

General Multiphase

  • Performance/Numerics: increased robustness of multiphase solvers through improved inflow/outflow boundary conditions [ commit ad922 ]; better restart and more efficient Crank-Nicolson implementation for interFoam family of solvers [ commit 13aac ]; introduced a limiter to stabilise the interfacial pressure work term in the energy equation for multiphase flows [ commit 0b2e5 ]; improved mass conservation in compressibleInterFoam using continuity error correction [ commit e8daa ]; improved calculation of MULES limiter at walls [ commit 4a22a ]; for setWaves, generalised tetrahedron and triangle cutting, enabling cutting with level-sets as well as planes [ commit df1f4 ]; added functions for volume averaging of discontinuous fields [ commit eaf77 ]
  • Surface Tension Modelling: new framework for runtime-selectable surface tension models in the interfaceProperties library [ commit cf0b6 ]; convenient handling of temperature-dependent surface tension through liquidProperties class [ commit 76579 ]; new temperatureDependentContactAngleForce model added to surface film functionality [ commit cb1fa ]
  • Film Modelling: new experimental compressibleInterFilmFoam multiphase solver supporting transfer between volume of fluid interface capturing and film approximation [ commit d74f3 ]

Transport and Turbulence Modelling

  • Viscosity Modelling: new general strainRateFunction, non-Newtonian viscosity model where users can select the function at run-time using the Function1 functions, such as table, csvFile, polynomial, etc. [ commit 1bf80 ]; new Casson model for blood rheology [ commit ab205 ], see User Guide 7.3
  • Laminar Stress Models: new generalised framework for laminar stress models including linear, non-linear, viscoelastic, etc. [ commit 855f4 ]; new framework for viscoelastic modelling including Maxwell and Oldroyd-B models [ commit 3264b ]
  • Turbulence Models: Reynolds Stress turbulence supported in VoF and other incompressible multiphase solvers [ commit c696e7 ]; corrected k-omega SST Sato model [ commit c1031 ]; corrected C3 dilatation term in turbulence modelling for compressible flows [ commit 76213 ]; improved low-Reynolds number behavior in omegaWallFunction [ commit f2607 ] and epsilonWallFunction [ commit ffa36 ]

Particles and Tracking

  • Tracking: completely replaced the existing tracking, which failed for meshes whose decomposition into tetrahedra (tets) include “negative” tets; the replacement, known as barycentric tracking, is reliable on any mesh, irrespective of tet quality [ commit 37176 ]; optimised the averaging methods in MPPIC using particle barycentric coordinates for 2x speed up [ commit 7a2c8 ]; changed interpolation for particles to use the barycentric coordinates, making it much faster and more reliable [ commit c1cb1 ]
  • Particle Injection: created the massRosinRammler distribution to handle varying number of particles per parcel for fixed-mass parcels [ commit 2d833 ]
  • Optimisation: added solveFlow switch to freeze the flow field, but keep the particles running, in sprayFoam [ commit ef655 ]

Further Information: “OpenFOAM Barycentric Tracking”.


  • TDAC/ISAT: new TDACChemistryModel chemistry model providing Tabulation of Dynamic Adaptive Chemistry (TDAC) [ commit f2c26 ]; new Eddy Dissipation Concept (EDC) turbulent combustion model, including support for TDAC/ISAT for efficient chemistry [ commit ad825 ]; added variable time-step and local time stepping (LTS) in ISAT for TDAC chemistry [ commit 92335 ]
  • Other: new limiting of local time step (for solving steady-state) to specie reaction rate in reactingFoam [ commit d36d8 ]; support for isothermal, compressible flow in reactingEulerFoam [ commit 77ade ]; reactions can optionally be enabled only in a specified list of cellZones. [ commit 5d503 ]


Energy, Heat Transfer and Thermophysical Modelling

  • Liquid Thermophysical Modelling: rewritten thermophysical modelling to make solid/liquidProperties and specie classes compatible [ commit abc50 ]; simplified and generalized the user interface for liquid properties [ commit 5bc06 ]; added general fluidThermo model to enable run-time selection of thermophysical model type [ commit 76c7f ]; added equation of state for the Boussinesq approximation for buoyant flows [ commit dfecb ], see User Guide 7.1.5
  • Compressible solvers: made rhoSimpleFoam (steady flow) work with any thermophysical model including liquids and more stable: [ commit 655fc ]; added support for transonic flow of liquids and real gases in rhoPimpleFoam [ commit 99c99 ] and improved stability and convergence [ commit 79ff9 ]
  • Other: combined functionality and improved usability of externalWallHeatFluxTemperature boundary condition [ commit e72e7 ] and changed ambient temperature (Ta) to support time variation [ commit 50cb9 ]; added radiation modelling fvOption that can be used in any simulation where energy is solved [ commit 9a06a ]; added support for residual convergence controls to chtMultiRegionFoam [ commit a884a ]

Parallel I/O

  • new collated file format introduced in which the data for each decomposed field (and mesh) is collated into a single file that is written (and read) on the master processor: [ commit 7c301 ] 
  • new masterUncollated option writes data with the original uncollated format without NFS
  • file writing can be threaded allowing the simulation to continue running while the data is being written to file: see “Threading Support”

Further Information: “OpenFOAM Parallel I/O”

Productivity and Usability

  • Data Visualisation: updated the native OpenFOAM reader module for ParaView version 5.4.0 [ commit 68089 ]; maintenance of the native reader module ensures continued trouble-free visualisation of OpenFOAM data.
  • Command Line Interface: added Bash [TAB] completion to all OpenFOAM applications [ commit 90f39 ] and scripts [ commit d759f ]; added -list... options, e.g. -listScalarBCs in solvers for more relevant listing of BCs, fvOptions, turbulence models, etc (as a replacement to foamList) [ commit a4e75 ], see User Guide 5.2.3; enabled applications running with the -doc option, e.g. paraFoam -doc,  to open the application documentation at [ commit e3fe0 ]
  • Case Management: foamCloneCase can now clone cases from configuration directories, and copy script files and 0.orig directories [ commit ef808 ]; major maintenance of scripts, improving -help option and POSIX compliance [ commits bae3b ]
  • Inlet and outlet: generalised the swirlInletVelocity boundary condition to reads individual velocity components as Function1 [ commit a10d2 ]; new matchedFlowRateOutletVelocity boundary condition which matches the flow rate at outlet to a corresponding inlet [ commit 12d5d ]
  • User Input: input syntax for fvOptions has been made much more user-friendly [ commit e3c67 ]; made ...Coeffs sub-dictionaries optional for input model parameters [ commit 9801c ]; standardised notation in input parameters in radiation boundary conditions [ commit 8aac0 ]
  • Parallel Computation: added -copyZero option to decomposePar to copy the 0 directory to processor directories, to avoid field/mesh inconsistencies, especially when generating the mesh in parallel [ commit 6c103 ]; integrated much faster, scalable reconstructParMesh [ commit 8f273 ]
  • Configured Function Objects: add and subtract fields [ commit 5fc12 ]; XiReactionRate to write reaction-rate fields for the Xi-based combustion models [ commit a7d89 ]; dsmcFields to write DSM fields [ commit 1a33f ]; flowRateFaceZone to calculate flow rate through a face zone [ commit 74244 ]; streamFunction to calculate stream function [ commit faa1a ]; wallHeatFlux to calculate wall heat flux [ commit c263b ]; writeCellVolumes to write out cell volume data and writeCellCentres to write out cell centre data [ commit 53717 ], see User Guide 6.2
  • Function1: added a range of generic ramp functions, including linear, quadratic, halfCosine, quarterCosine and quaterSine functions [ commit 139f1 ] which can be superimposed onto any other function using scale [ commit 5a304 ], see User Guide; damper function for smoother start-up under an applied impulse in rigidBodyMeshMotion [ commit 1e043 ]
  • “Limiting” fvOptionslimitVelocity to limit the maximum velocity, e.g. to avoid excessive unphysical velocities generated during slamming event [ commit 20f9d ]; made settings and documentation consistent in limitTemperature [ commit 8929e ]


OpenFOAM v5.0 was produced by:

  • Architect/Lead: Henry Weller
  • Management: Henry Weller, Chris Greenshields
  • Maintenance/Testing/Contributions: Henry Weller, Chris Greenshields, Will Bainbridge, Mattijs Janssens, Bruno Santos.
  • Other Contributions:
    • Combustion: Francesco Contino (+ macOS), Zhiyi Li, Alessandro Parente
    • Reacting Multiphase: Juho Peltola,  Alberto Passalacqua, Ronald Oertel
    • Lagrangian: Timo Niemi (+ function objects), Karl Meredith
    • Parallel Running: Paul Edwards, Kevin Nordin-Bates, Alexey Matveichev
    • Heat transfer: Stephan Goeke, Tobias Holzmann

Thanks to the OpenFOAM enthusiasts who have contributed to a better code through the Issue Tracking System.

To download OpenFOAM 5.0, click here.


OpenFOAM 5.0 is distributed under the General Public Licence v3 by the OpenFOAM Foundation.