The OpenFOAM Foundation is pleased to announce the release of version 6 of the OpenFOAM open source CFD toolbox. Version 6 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 6 includes the following key developments.
- Conjugate heat transfer (CHT): improved usability, with simplified set up and running.
- Rotating/sliding geometries: more robust AMI, and support for periodic cases.
- Particle tracking: optimised computation and improved robustness.
- Reacting multiphase models: phase change, reactions, drag, breakup, coalescence, etc.
- Reactions/combustion: faster, full algebraic Jacobian, significant code redesign
- Other models: water waves and films, turbulence, thermophysics, atmospheric flows
- General: new boundary conditions, function objects, improved code compilation, etc
- Further tools for more productive CFD with OpenFOAM.
- Approximately 750 code commits, 350+ resolved issues
- ISO/IEC 14882:2011 (C++11): tested for GCC v4.8+, Clang v3.7+, Intel ICC v17.0.4+.
OpenFOAM 6 is packaged for the following platforms.
- Ubuntu Linux: packaged installation for Ubuntu 14.04, 16.04 and 18.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.
The OpenFOAM 6 Source Pack can be compiled on suitable Linux platforms.
- Solvers: chtMultiRegionFoam conjugate heat transfer (CHT) solver runs both steady-state and transient solutions (deprecating chtMultiRegionSimpleFoam) [ commit 283f8b ]; added option for reactions and combustion to chtMultiRegionFoam [ commit 7c237a ].
- Case Setup: foamSetupCHT utility to generate the case files for CHT cases [ commit 5eb746 ]; singleFluidCHT template case to simplify creating CHT simulations, with accompanying coolingSphere tutorial [ commit a86333 ]; heatedDuct tutorial with mesh generated using snappyHexMesh [ commit 719d56 ].
- Data Processing: function objects for individual regions in a multi-region simulation [ commit a5a034 ]; wallHeatTransferCoeff function object to calculate the wall heat transfer coefficient [ commit 99841e ]; in wallHeatFlux, improved efficiency of heat flux calculation [ commit 6584fa ] and corrected contribution of radiative heat flux [ commit 396259 ].
- Multi-Region: solution controls for multi-region solvers [ commit 4c8122 ]; added –allRegions option to transformPoints [ commit 0c4562 ].
- Parallel Running: decomposePar improved for new decomposition on a multi-region case [ commit 6a417d ]; rationalised –allRegions option in decomposePar and reconstructPar [ commit d0dfb1 ] and recontructParMesh [ commit 35326b ].
- Thermal Radiation: made heat-flux consistent in view factor radiation by averaging T⁴ [ commit 337176 ]; corrected non-coupled boundary values in blackBodyEmission model [ commit bf74d1 ]; corrected surface emissivity for radiative heat transfer in externalWallHeatFluxTemperature BC [ commit 6c5607 ].
Arbitrary Mesh Interface
- Performance/Numerics: new sweptFaceAreaWeightAMI projection method, which fills space completely [ commit 889329 ]; made overlap and normalisation areas consistent [ commit db8751 ].
- Other: cyclicRepeatAMI enables simulations with a periodic geometry with a rotating/moving section, e.g. for a sector mesh of a mixer, turbine, etc [ commit 785a7d ].
- Performance/Numerics: MULES algorithm extended so that limits can be specified as a field [ commit f2cc03 ]; PhaseLimitStabilization fvOption to stabilize phase transport equations [ commit 38e33e ].
- Compressible: improved conservation for moving meshes in compressibleInterDyMFoam [ commit 852726 ]; avoid accumulation of pressure work error in compressibleInterFoam [ commit 1d38e1 ]; corrected transonic flow option [ commit 862fa9 ]; corrected thermal diffusivity in mixture turbulence [ commit 332f94 ]; added two-phase momentum stress modelling [ commit 4b5a10 ].
- Marine/Waves: new Stokes5 and solitary wave models [ commit 079c4c ]; increased accuracy of waveVelocity and [ commit b6af3a ] wavePressure boundary conditions in cases of flow reversal at a boundary [ commit d9fc7e ]; additional controls for wave boundary condition calculations [ commit 8144cf ]; velocity ramping, at boundaries and internally, for smoother startup [ commit a80da1 ]; spatial ramping to gradually increase vertical damping of waves [ commit d2175f8 ]; documented verticalDamping fvOption for wave simulation [ commit 94465b ].
- Film Modelling: added wax/solvent to film modelling, supporting solvent evaporation [ commit 7f6687 ]; added local time stepping option to reactingParcelFilmFoam [ commit 9d928c ] and merged the solver into reactingParcelFoam [ commit 82675f ]; updated sprayFoam [ commit 125a4 ].
- Improved drag coupling and resolved issues [ commit ba8438 ]; removed staggering (“ringing”) from reactingTwoPhaseEulerFoam [ commit 799861 ].
- Stationary phase models in reactingMultiphaseEulerFoam [ commit e35282 ]; phase transfer structure added to handle different droplet sizes of the same fluid as separate phases [ commit 85a9e1 ]; deposition model to transfer a dispersed droplet phase to a film phase [ commit 1fd4ec ].
- With HZDR: Laakkonen et al (2006) breakup model [ commit 9de5f9 ]; Coulaloglou and Tavlarides (1977) coalescence model [ commit ec9ca0 ]; Prince and Blanch (1990) coalescence model [ commit 018da5 ]; improved stability of the Sauter mean diameter calculation [ commit ee6216 ]; phaseForces function object calculates blended interfacial forces acting on a given phase [ commit e6c224 ].
- With VTT Finland: added support for multiphase with TDAC chemistry [ commit 62f64f ].
- With HZDR and VTT Finland: wall-boiling and phase change capability [ commit 6e143e ]; integrated face-based momentum equation [ commit 986a87 ]; thermal phase change and support for multiple mass transfer mechanisms [ commit d3a23 ]; flow with a dispersed phase with bubble size distribution using a class method for population balance equations [ commit 3e577 ].
- Supported by Evonik: Attou and Ferschneider Drag model for film flow through packed beds [ commit a59781 ].
- Examples: test cases for single- and multi-component droplet evaporation [ commit 48c79c ].
Particles and Tracking
- Tracking: reduced the number of tracking calls to make barycentric tracking 40% faster [ commit 6832a4 ]; reduced memory use by 30% in kinematic layer of particle tracking [ commit 795bc4 ]; improved robustness of tracking for parallel running [ commit a0fcab ]; improved calculation sequence in particle kinematics [ commit e7fc53 ]; enabled particle tracking through ACMI patches [ commit adffa0 ].
- Optimisation: (with VTT) force and heat transfer onto particles ensures conservation [ commit a58062 ] and splits the calculation of coupled and non-coupled contributions for greater accuracy [ commit 9ee3bb ]; removed unnecessary calculations within pair collision models for particles [ commit 937dba ]; improved numerical stability of heat transfer in particle thermodynamics [ commit 631bd4 ].
- Injection: synchronised random number calls for setting positions for particle injection in parallel [ commit 11a3b3 ]; increased speed of random number generation with the new Random class implementation [ commit 002e7d ].
- Data Processing: patchCollisionDensity function object for parcel collisions on patches [ commit a44e95 ]; removed special handling for old tracking of awkward particles in nearWallFields function object [ commit aa24a9 ]; icoUncoupledKinematicCloud function object enables users to add particles to any simulation [ commit db6495 ].
Chemistry and Reactions
- Full algebraic Jacobian (with Francesco Contino): to speed up solution of chemical reactions, implemented new, full algebraic Jacobian including third-body and pressure dependent derivatives, and derivative of the temperature terms; code redesigned for easier extension of reaction rate expressions and Jacobian terms; temperate clipping added to improve stability [ commit 4dc35c ].
- Reaction: simplified the selection of combustion and chemistry models [ commit 61cab8 ]; option to specify the initial ODE integration time-step [ commit 08d5fc ]; support for extended (long double) precision scalars [ commit d82cc3 ]; redesign to remove dependency between combustion, thermophysical and turbulence modelling [ commit 0ea0b7 ]; (with BURN Research Group) selectable piston-motion models for engine calculations [ commit 04d5f8 ]; added the Michaelis-Menten reaction rate for enzymatic reactions [ commit 19fb48 ] with support for liquid reactions in chemFoam [ commit 85e249 ].
- Turbulence: turbulenceIntensity function object that writes out the turbulence intensity field [ commit e08128 ]; improved wall function treatment of omega (specific dissipation rate) [ commit 4331b9 ].
- Thermophysical Modelling: non-reacting mixtures can now be selected in reacting solvers to help set up cases incrementally [ commit 233d8d ].
- Atmosphere: new atmosphericModels library, including porosity and turbulence models for terrain [ commit a5d677 ]
- Rigid Body Dynamics: 0-DoF joints [ commits 59be3e ] with triple pendulum example [ commit ae5a31 ]; sixDoFRigidBodyState function object writes the rigid-body state for post-processing [ commit 7dc618 ].
- blockMesh: NACA0012 aerofoil tutorial with C-grid mesh [ commit 0059f3 ].
- foamyHexMesh: general review [ commits f18ffe ]; improvements to run more effectively on a selection of industrial geometries [ commits 3260ae ]; included cell sizing based on closeness to local surfaces [ commit 3e761d ].
- Utilities: surfaceFeatures extracts features from multiple surfaces with one configuration, replacing surfaceFeatureExtract [ commit aaed62 ]; fields are unaffected when running createBaffles, but are modified by setting the optional fields switch [ commit d66059 ].
- Mesh Motion: deprecated DyM solvers by merging dynamic mesh functionality into the standard solver, including pimpleFoam [ commit d1fa9b ] interFoam [ commit 46704f ] and other multiphase solvers [ commits 4cfb2e ]; added support for mesh refinement/unrefinement and topology change to MRF [ commit c57fe2b ]; simple linear motion solver with linear expansion and contraction of a mesh [ commit c00e28 ].
Productivity and Usability
- Data Visualisation: option to track in both directions in the streamline function object [ commit 8dcfc9 ]; extended, maintained and introduced consistent naming for specifying sampling locations for graphs, streamlines, etc [ commit 3ef4c8 ]; on start-up of paraFoam, the user can configure the fields [ commit 10b289 ] and mesh and patch components [ commit 4ece2c ] to be loaded by default.
- Case Initialisation: original files with the “.orig” extension no longer need to be copied but are instead read automatically [ commit df6e2d ]; replaced the ineffective changeDictionary utility with foamDictionary [ commits 1c62b8 ]; added useful examples of common case dictionary files, e.g. decomposeParDict [ commit 351020 ]; removed confusing, unused options from utilities, e.g. -case from surface utilities [ commit 2e1825 ]; foamGet script to copy a configuration file, e.g. decomposeParDict, residuals, into a case quickly [ commit 097e15 ].
- Case Management: time function object to monitor run, CPU and clock time [ commit d008fe ]; jobInfo writes out job information into a small convenient file [ commit 0309a2 ]; foamInfo script provides quick, relevant information on models (including boundary conditions and packaged function objects), applications and scripts [ commit 930f02 ]; removed ineffective, bloated “help” system based on foamHelp [ commits b4dfbd ].
- Boundary Conditions (BCs): new freestreamVelocity and freestreamPressure BCs [ commit fb15be ]; new fixedMeanOutletInletFvPatchField BC which fixes the outlet mean value [ commit a0399d ]; new prghUniformDensityHydrostaticPressure BC which sets the boundary values of p_rgh corresponding to a constant density hydrostatic pressure distribution [ commit 52a2ba ]; support for supersonic flow in freestreamPressureFvPatchScalarField BC [ commit 26ec6f ]; semiPermeableBaffle BCs to model semi-permeable baffles [ commit 305558 ]; improved usability of the timeVaryingMapped BC to map data at a boundary from one case to another [ commit f6a311 ].
- Compilation: meets new memory access and exception consistency checks in the GCC 8.1 compiler [ commit 3682e7 ]; in wmake, simplified file scanning for dependencies to avoid too many open files [ commit 9ffc02 ], improved performance by adding string path substitution [ commit 60b81b ], added on-demand generation of lnInclude directories [commit 3c000d ] and improved handling of dependencies when files are removed [ commit 61f1fe ].
- Parallel I/O: new options for fileHandler and collated format for efficient I/O on HPC, from Mattijs Janssens [ commit a4de83]; maintained purgeWrite option with collated format [ commit 5bea9a ].
- Other Function Objects: normalised axis directions in the forceCoeffs function object [ commit 828254 ]; ddt functionObject which calculates the time derivative of a field (with Tobias Holzmann) [ commit c2835a ]; scale function object to multiply a given field by a scaling factor, e.g. for unit conversion [ commit 7f49d6 ]; packaged the writeVTK function object to automate writing of case data in VTK format [ commit b012e1 ].
- Other Numerics: new limiters for cellLimited gradient calculation, including cubic [ commit 103733 ]; improved stability/accuracy of the time derivative flux correction (ddtPhiCorr) [ commit da7872 ]; registered solutionControl to the database to provide convenient access to controls (of PIMPLE, etc) [ commit dfd09a ].
Further Information: “Productive CFD with OpenFOAM”.
OpenFOAM 6 was produced by:
- Core Team (CFD Direct): Henry Weller (co-founder & lead developer); Chris Greenshields (co-founder), Will Bainbridge
- Developers/Maintainers: Bruno Santos, Francesco Contino, Mattijs Janssens (co-founder), Juho Peltola, Fabian Schlegel, Ronald Oertel, Timo Niemi
- Patch Contributors: Tobias Holzmann, Kevin Nordin-Bates, Lorenzo Trevisan, Federico Piscaglia, Björn Pfeiffelmann, Jakub Benda, Nicolas Bourgeois, SeongMo Yeon, Stefan Hildenbrand