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 usability, reliability 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:
- Ubuntu Linux: packaged installation for Ubuntu 14.04, 16.04 and 17.04;
- Other Linux: installation with a Docker container; or compilation from source code;
- Windows 10: installation using Windows Subsystem for Linux with Ubuntu packs;
- macOS: installation with a Docker container.
Multiphase for Marine/Offshore Engineering
- Wave Modelling: implemented boundary conditions for applying waves at an inlet that meets standards of code quality, maintainability and licensing [ commit e7e46 ]
- Wave Initialisation: new setWaves utility for initialising waves [ commit e7e46 ]
- Wave Damping: new verticalDamping fvOption damps the vertical motions of an interface in the region approaching an outlet to avoid reflections [ commit 813a6 ]
- Data Processing: a interfaceHeight function object reports height of a phase interface from a set of locations [ commit ab2b25 ]
- Hull: new interfaceCompression boundary condition improves cases where a fluid interface hits a surface at shallow angle [ commit 8514f ]
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”.
Combustion
- 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 ]
Meshes
- snappyHexMesh: improved input syntax for triSurfaceMesh files [ commit 80e22 ]; stopped writing of redundant files that break other applications and waste disk space [ commit 9129f ]
- blockMesh: new point/edge projection onto geometric surfaces [ commit f5be4 ], see User Guide 5.3.3; new sloshingCylinder tutorial, demonstrating projection to create a cylindrical background mesh [ commit 24410 ]; added block face orientation checks to aid debugging [ commit 87c78 ]; updated blockMeshDict files to use multi-grading in the pitzDaily tutorials [ commit 039986 ], see User Guide 5.3.1.4
- refineMesh: corrected parallel operation [ commit c6f36 ]
- Mesh Motion: new template cylindrical background mesh significantly improves robustness and accuracy of rotating geometry simulations [ commit d9b91 ]; added mesh-motion solver for multiple moving regions, e.g. for 2 counter-rotating AMI regions [ commit 2eac4 ]; added dynamic mesh versions of DPMDyMFoam and MPPICDyMFoam solvers [ commit bb8a3 ]; improved 2nd-order time discretisation schemes for moving meshes [ commit e36a2 ]; improved stability by bounding the localEuler time scheme for steady-state cases with mesh-motion [ commit 58452 ]
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 http://cpp.openfoam.org: [ 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 the0
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 5.2.3.4; damper function for smoother start-up under an applied impulse in rigidBodyMeshMotion [ commit 1e043 ]
- “Limiting” fvOptions: limitVelocity 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 ]
Contributors
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.
Licence
OpenFOAM 5.0 is distributed under the General Public Licence v3 by the OpenFOAM Foundation.