22nd July 2020

OpenFOAM 8 Released

The OpenFOAM Foundation is pleased to announce the release of version 8 of the OpenFOAM open source CFD toolbox. Version 8 is a snapshot of the OpenFOAM development version which, through sustainable development, is always-releasable.  It provides new functionality and major improvements to existing code, with strict demands on usability, robustness and extensibility.

OpenFOAM 8 includes the following key developments.

  • Multiphase: selectable interpolation for interface-capturing, PLIC scheme.
  • Reacting multiphase: consolidated multiphaseEulerFoam solver and model development.
  • Transport: new MomentumTransportModels and ThermophysicalTransportModels libraries.
  • Thermophysical: thermodynamics and equation of state models, data input, refactoring.
  • Surface Film: huge performance improvements and better surface handling.
  • Heat transfer: better numerics and case setup, new thermal comfort modelling.
  • Particle tracking: renamed uncoupled solvers, improved tracking efficiency, injection.
  • Other models: transient/steady-state solvers, boundary conditions, reactions.
  • Mesh: improved snappyHexMesh and blockMesh, face centre calculation, cyclic patches.
  • Function Objects: improved visualization/field, residence time and configuration.
  • Case Configuration: new configuration/initialisation tools, coded Function1.
  • Computation: better data I/O, field caching, support for Arm processors.
  • Approximately 710 code commits, 200+ resolved issues
  • ISO/IEC 14882:2011 (C++11): tested for GCC v5.4+, Clang v3.8+, Intel ICC v18.0+.

OpenFOAM 8 is packaged for the following platforms, with ParaView 5.6.0 including Mesa with LLVM/Gallium acceleration for systems without a (supported) graphics card:

The OpenFOAM 8 Source Pack can be compiled on suitable Linux platforms.

General Multiphase

  • Modelling: New interface capturing framework allows users to specify the interpolation method for two-phase flows in fvSchemes [ commit fa79ba ]. New family of interpolation schemes for multiphase interface handling based on piecewise-linear interface calculation (PLIC) [ commit 1611e0 ]. [ Further information: “Interface Capturing in OpenFOAM” ]
  • Performance/Numerics: Phase fraction limiter for bubble-generated turbulence in mixtureKEpsilon model avoids spurious turbulence generation where bubbles are not present [ commit f84708 ]. Centralised the control parameters for multiphase VoF [ commit 8af31c ].
  • Post-processingphaseMap function object writes a single phase map field for multiple phases [ commit 35a04f ].

Reacting Multiphase

With VTT Finland and HZDR Dresden-Rossendorf

Transport Modelling

  • MomentumTransportModels: new library generalises shear-stress in the momentum equation, for incompressible/compressible Newtonian, non-Newtonian, visco-elastic laminar flow, Reynolds averaged and large-eddy simulation of turbulent flow [ commit de66b1 ]. turbulenceProperties file is renamed momentumTransport, with backward-compatibility, following the generalisation of the library [ commit 7f5144 ].
  • ThermophysicalTransportModels: new library created to enable complex energy and specie transport models, in particular multi-component diffusion [ commit 25b348 ]. divj and j functions provide a new interface for mass transport [ commit b4cf40 ].
  • Turbulence: In the SpalartAllmaras DES models, reduced storage of temporary fields and enabled writing of the LES region [ commit 4a810c ]. Improved stability of the kkLOmega turbulence model [ commit 3c64dc ]. Mass diffusivity with turbulence can now be specified independently of thermal diffusivity with separate turbulent Prandtl and Schmidt numbers [ commit 86f2c6 ].
  • Viscoelasticity: PTT (Phan-Thien-Tanner) viscosity model [ commit 99982d ] and multi-mode viscoelastic models [ commit a7eb35 ].
  • Specie: New adsorption boundary condition for species deposition at a surface [ commit bcc867 ].

Thermophysical Modelling

  • Thermodynamics: Added sensible enthalpy functions to thermophysical modelling [ commit 086034 ]. Added Gstd function to calculate Gibbs free energy of a mixture in the standard state [ commit 73c6f9 ]. New thermophysical properties class for a liquid in which the functions and coefficients for each property are configured through input files [ commit 375e1f ]. heSolidThermo thermophysical model updated to use corrected equation of state coefficient mixing [ commit c909bd ].
  • Equation of State: rPolynomial (reciprocal polynomial) fits data for liquids and solids well and supports calculation of coefficients for mixtures of species [ commit 481797 ]. Significant correction to coefficient mixing for equations of state [ commit c8d434 ]. Created separate functions for entropy from the equation of state depending on whether specific heat capacity is at constant pressure or volume [ commit fa9ccc ].
  • Data Input: Non-uniform table for specifying thermophysical properties, optimised with fast addressing [ commit 73a594 ]. Tabulated function of temperature for equation of state, thermodynamics and transport models [ commit 4c2fae ]
  • Refactoring: Rewritten macros for instantiating thermophysical models to reduce by 2,500 lines of code [ commit fe8908 ]. Separated mixtures based on pure species from reactant/product combustion mixtures [ commit 80f15b ]. Added framework for evaluating properties, e.g. absolute enthalpy, of a specie at a field level rather than at a cell level [ commit e695df ].

Surface Film

Heat Transfer

  • Case Setup: Added support for cases without fluid or solid regions to chtMultiRegionFoam [ commit a9ddd7 ].
  • Numerics: Changed from solving enthalpy to energy for solids in conjugate heat transfer solvers [ commit c109be ]. Added optional pressure reference pRef to heat transfer and buoyant solvers for greater accuracy in cases with a small pressure variation [ commit 2f30c1 ].
  • Buoyancy-driven flows: comfort function object for thermal comfort quantities based on DIN ISO EN 7730:2005 with Tobias Holzmann [ commit 280c05 ]. Added moving/changing mesh capability to buoyantPimpleFoam [ commit 38fff7 ].

Particles and Tracking

Other Modelling

  • Solvers: Consolidated transient and steady-state solvers [ commits 7c32fe ]. rhoPimpleFoam produces identical results to rhoSimpleFoam when run with a steady-state time-scheme and rhoReactingFoam has also been updated to support SIMPLE operation [ commit 97cda4 ]. Improved algorithm in compressible flow solvers at high speeds [ commit ebc464 ]. Modified solidDisplacementFoam to use standard solid thermophysical modelling, so that it can use standard heat transfer boundary conditions [ commit 640027 ].
  • Boundary Conditions (BCs): New entrainmentPressure provides excellent stability at external boundaries where totalPressure can sometimes fail [ commit 6c887b ]. Improved convergence of freestreamVelocity [ commit f7bcc1 ]. flowWithOpenBoundary tutorial explores conditions at an open boundary [ commit 197b14 ]. Optional tangentialVelocity in the pressureInletOutletVelocity boundary condition can now be time-varying [ commit d9fc45 ].
  • Reactions: Redesigned reactions so reaction rate can depend on any field rather than just thermodynamic state [ commits 0e52c6]. reactingMixture is refactored so that the list of reactions is no longer derived from the reactions [ commit 3dc362 ]. singleStepReactingMixture functionality moved within the singleStepCombustion class as a first step to refactoring the instantiation of the reaction scheme [ commit b8fcd1 ]. Added an index argument to all functions that evaluate the reaction rate in chemistryModel, reactions and ODESolver [ commit 2d0f45 ].
  • Rigid Body Dynamics: externalForce restraint with SeongMo Yeon [ commit 278ba8 ].
  • Sources: The semiImplicitSource fvOption, for configuring source terms in equations, is generalised for scalars, vectors, tensors [ commit b6f91d ] and supports a Function1, allowing time-varying functions [ commit 95b5ef ].


Function Objects

  • Visualization: Added fixes to avoid erosion of surfaces in isoSurface processing [ commit 916d0a ] and a filtering option in isoSurface to control the level of vertex removal [ commit 916d0a ].
  • Fields: Improved the interface of the fieldAverage function object [ commit c60cef ] and simplified the configuration [ commit 0177c7 ]. New faceZoneAverage packaged function object calculates the average of a field over a face zone [ commit 84a126 ]. shearStress function object outputs the volumetric shear stress [ commit c57ffd ]. Added optional weight fields to the core volFieldValue function object, e.g. for volume integration of field data for phase properties in multiphase flows [ commit e01de9 ].
  • Residence Time: The age function object, measuring residence time, supports fvOptions [ commit 73503b ] and has optional diffusion and convergence controls (with Tobias Holzmann) [ commit a2a74c ].
  • Configuration: Optional execution at the start of a simulation to provide data at time “zero” [ commit 2ebed5 ].  Improved searching for function object files in multi-region cases [ commit 435b89 ].  Improved handling of field parameters for quick running function objects (e.g. for post-processing) without a configured file [ commit ad12d3 ].

Case Configuration

Programming and Computation

  • Data Input: readScalar(dict.lookup("name")) is simplified to dict.lookup<scalar>("name")  [ commit 5eaf74 ]. Extensive maintenance work on dictionary entry parsing and handling, making code more robust, consistent and extensible [ commits 4d8981 ] and when running in parallel [ commit c26037 ]. Improved syntax for input configurations including multi-line argument lists [ commit 7dc08e ].
  • Fields and Dimensions: Temporary objects, e.g. fields, can be cached to enable further processing and writing of data [ commit fdf121 ] in particular field data, e.g. a model source term or numerical limiter, for code diagnostics [ commit 30cceb ]. Substantially simplfied the dimensionedConstants class [ commit 9513ad ].
  • Architecture: Compilation rules added for Arm-based processors [ commit ed9e42 ].
  • Other Numerics: Fields that are solved for by function objects (e.g., a scalar transport field) can now be included in time/iteration loop convergence tests [ commit c6089a ].


OpenFOAM 8 was produced by:

  • Core Team (CFD Direct): Henry Weller (co-founder & lead developer); Chris Greenshields (co-founder), Will Bainbridge, Jakub Kníř.
  • Developers/Maintainers: Juho Peltola, Timo Niemi, Fabian Schlegel, Ronald Oertel.
  • Patch Contributors: Tobias Holzmann, SeongMo Yeon, Mattijs Janssens, Francesco Contino, Bruno Santos, Gerhard Holzinger, Kevin Nordin-Bates, Alberto Passalacqua.


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