Close

8th July 2019

OpenFOAM 7 Released

The OpenFOAM Foundation is pleased to announce the release of version 7 of the OpenFOAM open source CFD toolbox. Version 7 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 7 includes the following key developments.

  • Heat transfer: consolidated solvers and improved convergence and robustness.
  • Particle tracking: improved robustness and optimized computation.
  • Multiphase: wave damping, configurable inlet phase properties, better settling numerics.
  • Reacting multiphase models: heat transfer, population balance, breakup, coalescence.
  • Reactions/combustion: simplified case setup.
  • Turbulence: improved consistency and stability of wall functions, added sources.
  • Thermophysical: thermodynamic functions, temperature-strain-dependent viscosity.
  • Other models: atmospheric, rigid body dynamics, boundary conditions, sources.
  • Mesh: standardized dynamic mesh capability, improved motion solvers.
  • Case Configuration: improved data visualization, setup tools, function objects.
  • Computation: improvements to containers, fields, parallel running, etc.
  • Approximately 550 code commits, 250+ resolved issues
  • ISO/IEC 14882:2011 (C++11): tested for GCC v4.8+, Clang v7.0+, Intel ICC v18.0+.

OpenFOAM 7 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 7 Source Pack can be compiled on suitable Linux platforms.

Heat Transfer

  • Solvers: The Boussinesq equation of state can now be applied to any buoyancy solver, deprecating the specialized buoyantBoussinesq[SP]impleFoam solvers [ commit 9bf346 ].
  • Other:  Corrected thermal diffusion for laminar flow using enthalpy [ commit f71001 ]
  • Case Setup: Improved convergence and stability of several tutorials by updating code and settings to solve for internal energy rather than enthalpy [ commits 80cc96 ].  Improved the numerics, chemistry and general configuration of the reverseBurner tutorial, which includes conjugate heat transfer and combustion [ commit a08502 ] and radiation [ commit 7203f2 ].  Added conjugate heat transfer example of shell and tube heat exchanger [ commit 6d4960 ].
  • Data Processing: Removed Qdot from chtMultiRegionFoam since it is only used in reacting cases and common CHT usage does not simulate reactions [ commit b59c71 ]
  • Numerics: Increased robustness of transient, thermal/compressible flows with better pressure and density limiting in rhoPimpleFoam [ commit f9cb8e ].  If energy-temperature iteration fails, temperature, energy and specific heat is now written out at each step to help diagnose the failure [ commit 7a398a ].
  • Thermal Radiation:  Removed redundant radiation switch from radiationProperties; radiation is switched off by radiationModel none; [ commit ab3177 ]

Particles and Tracking

  • Tracking: Corrected projection direction for tracking across AMI interfaces, e.g. for particles in rotating geometries [ commit 35dd88 ] and fixed incorrect removal of particles [ commit 10ece8 ].  Prevented particle simulations from hanging due to closed loops [ commit 1c26ed ].  Added interpolation method to eliminate hanging when particle drag competes with wall rebound [ commit 63b641 ].  Improved robustness of tracking of particles along cell edges [ commit 960bae ].  Replaced perpendicular vector calculations using random numbers with the global perpendicular function [ commit 68e9c8 ].
  • Optimisation: Improved efficiency of particle tracking for cases with a stationary mesh [ commit b5e27b ].
  • Injection:  Consolidated cone injection for particles within coneInjection, modifying the random distribution to remove a bias towards the centreline [ commit 06d8f7 ].  Position and direction of cone injection of particles can now be time-varying [ commit b785c9 ].
  • Modelling:  Generalized drag models and added the SchillerNaumann model [ commit 081db9 ]

General Multiphase

  • Modelling:  New phaseScalarTransport function object for scalar transport in a single phase of a multiphase flow [ commit 7b1840 ].  The dynamicAlphaContactAngle boundary condition now supports different conventions for contact angles [ commit a9cdfa ]
  • Performance/Numerics:  Added optional boundary extrema coefficient for the MULES algorithm to improve solutions to settling problems [ commit 441b7e ].  For the BinghamPlastic model in driftFluxFoam, added a limiter to avoid floating point errors with high phase fractions, with VTT Finland [ commit 6388a1 ]
  • Marine/Waves:  For simulations with surface waves, mean flow has been separated from wave perturbation, with new waveProperties file [ commit 967edc ].  New isotropicDamping fvOption provides wave damping towards a specified uniform flow speed [ commit 251f91 ].  An atmospheric boundary layer can now be added to the air with surface wave modelling [ commit 4d6b99 ].  New waveInletOutlet boundary condition sets different inlet values of a field, e.g. temperature, turbulence properties, above and below an interface [ commit 7957f3 ].

Reacting Multiphase

  • General: Added fix to mass transfer across phase interface [ commit eaa089 ].  Improved robustness of reacting multiphase solvers by adding generalized sub-cycling [ commit 67cfa3 ].
  • With VTT Finland: In reactingEulerFoam, added linearTsub model for the diameter of vapour bubbles as a linear function of the liquid sub-cooling [ commit e1c959 ].  In reactingEulerFoam, added an interval for updating the sources for population balance to reduce computational cost for steady-state simulations [ commit 1c35e8 ].  Added heat transfer model with a constant Nusselt number [ commit 0dfde5 ] and improved stability, particularly for cases with high mass transfer rate [ commit 7e799e ].  Improved the population balance phase change drift model [ commit 5e2f17 ]
  • With HZDR:  New LehrMilliesMewes and LuoSvendsen breakup and coalescence models [ commit 756d10 ].

Chemistry and Reactions

  • Combustion: Added Qdot function object to write out heat release rate field due to combustion [ commit dc25f1 ].  Removed redundant active switch from combustionProperties; combustion is switched off by combustionModel none;  [ commit d62758 ].
  • Reactions: Corrected, rationalized and generalized LangmuirHinshelwoodReactionRate model to an arbitrary pair of reacting species [ commit 669935 ] and added T^beta pre-factor to the Arrhenius expressions [ commit 5377d6 ].  Simplified set up of Tabulation of Dynamic Adaptive Chemistry (TDAC) for reactions, with VUBrussel [ commit 5c86ba ]
  • Examples: Improved the setup of tutorials with reactions [ commit 14aad1 ].

Turbulence

  • Wall Functions: Rationalized wall function implementation to avoid complex and inconsistent coefficients [ commit 1e2550 ], re-deriving nutkRoughWallFunction for improved stability and range of applicability [ commit a1091a ] and updating the nutURoughWallFunction for consistent inputs with nutkRoughWallFunction [ commit 926b6a ].
  • Modelling: Added sources to k and omega equations in the kOmega model to make it easier to derive models from it [ commit f5d684 ]
  • Data Processing: Added support for compressible models to turbulenceFields function object [ commit 2249f8 ]

Thermophysical Modelling

  • Thermodynamics:  Added missing thermodynamic functions for departure from ideal gas behaviour for Boussinesq, PengRobinson and icoPolynomial equations of state [ commit 625c68 ], perfectFluid [ commit dfc10f ] and other equations of state [ commits f9971f ].
  • Transport: New Williams-Landel-Ferry model for temperature dependent transport properties [ commit 797718 ].  New structure for generalized Newtonian laminar transport enables strain-dependent viscosity functions to be combined with temperature-dependent viscosity, e.g. for the Cross-WLF model for polymer flow [ commit 94d0b9f ].  Added Giesekus model for visco-elasticity in a framework that allows derivation from Maxwell and addition of sources [ commit 2dd53c ].

Other Modelling

  • Atmosphere:  Added option for an offset boundary layer in atmBoundaryLayer [ commit bd5a19 ]
  • Rigid Body Dynamics: New sixDoFRigidBodyControl functionObject stops the run when the body motion converges [ commit b4a00c ].  Added rigidBodyState function object to report the state of a rigid body to from patch by SeongMo Yeon [ commit d399b8 ]
  • Boundary Conditions (BCs): The semiPermeableBaffle boundary condition can now calculate a mass flux based on difference in mole or mass fraction, or partial pressure [ commit 20653e ]hydrostaticDisplacementFvPatchVectorField is a new traction boundary condition for solidDisplacementFoam based on pressure from a fluid reservoir [ commit a098cd ].  Added fanPressureJump boundary condition with pressure jump specified as a function of volumetric flow rate through the patch, with Daniel Jasiński [ commit ae28cb ].  Stabilized the freestream velocity and pressure boundary conditions at start up [ commit d3a02c ].  Generalized a reusable timeVaryingMappedFvPatchField boundary condition for mapping data at a set of supplied points in space and time onto a patch [ commit 8b4f86 ].
  • Sources: Added the output of rotor power [ commit dfe7b8 ] and enabled opposite spin to rotorDisk fvOption, contributed by Robert Lee [ commit fcbebe ]
  • Solvers:  The sonicFoam, sonicDyMFoam and sonicLiquidFoam are deprecated since their functionality has been merged into the rhoPimpleFoam solver, running the transonic option [ commit 3341f9 ].  Added LTS capability to pimpleFoam, providing the option to accelerate solutions to steady-state [ commit e1e3e2 ]

Meshes

  • snappyHexMesh: Made merging of patch faces optional to enable layer insertion in multi-region meshes, e.g. in conjugate heat transfer [ commit 0497d2 ].
  • Mesh Motion: New solid-body mesh-motion solver which interpolates the motion using Slerp [ commit 34f0ca ].  Solver applications include dynamic mesh capability by default, deprecating allDyM” versions of solvers [ commit e0cf97 ].  Support for multiple motion solvers, e.g. solid body rotation and deformation with prescribed boundary motion [ commit faf6e2 ].  Rationalized the handling of the dynamicMeshDict configuration file [ commit a1a225 ].  Ensure old-time cell volumes are written out for seamless case restarts with backward differencing [ commit 911a10 ].  Added support for writing the motion state along with the mesh with the motionSolver for dynamic meshes [ commit 51d4c0 ].  Generalized updates to velocity field boundary conditions for cases with mesh motion [ commit 12c4ab ].
  • Other: In the mesh utilities, rationalized the field handling code and added a -noFields option [ commit 66c26a ], including with subsetMesh [ commit d57d36 ]surfaceFind now reports the true distance from a point to the nearest surface geometry (e.g. OBJ, STL) [ commit ba61e3 ].

Case Configuration

  • Data Visualisation:  Added examples of all point seeding methods to packaged streamline function object [ commit bd2f27 ].  Added -ascii option to foamMonitor which plots graphs in ASCII into a terminal, useful for terminal-only connection to remote machines [ commit 80df54 ].  Implemented new iso-surface method that produces smoother surfaces and files that are up to 4 times smaller, contributed by Mattijs Janssens [ commit c4dc7f ].  Rationalized code for sampledSurface, to maintain visualisaition post-processing functionality [ commit 8baec3 ].  Fixed the cuttingPlane post-processing at the intersection between a plane and a cell zone when running in parallel, contributed by Federico Piscaglia [ commit 47d2e0 ].
  • Case Initialisation: New #neg function to produce the negative of a dictionary variable [ commit 932e01 ].  New #if and #ifeq conditional handling in OpenFOAM input files, contributed by Mattijs Janssens [ commit 70afbf ].  Added -merge option to foamDictionary, to merge keyword entries, particularly within sub-dictionaries [ commit abde9a ]foamGet selects destination directory based on file being copied, making it even easier to configure cases [ commit b9f8eb ].  Added support for files in binary format to foamDictionary [ commit a88405 ].
  • Case Management:  Added keyword option to foamInfo to search more broadly for a case-insensitive keyword, rather than an specific model name [ commit c562a4 ].
  • Other Function Objects: log function object calculates the natural logarithm of a scalar field [ commit e757d5 ]Age function object calculates the field of the time taken for fluid to travel from inlets to all locations in the domain [ commit b928e3 ]

Programming and Computation

  • C++11 Standard: Updates to use C++11 scoped enumerations, providing a more consistent naming convention to improve code readability [ commits c7e261 ].  Removed the complex Xfer class, replacing functionality with C++11 “move” constructors and assignment operators [ commit 30bea8 ].  Extensive maintenance work to update all class declaration comments in accordance with a new standard [ commits 5c188d ]
  • Containers and I/O: Undertaken core maintenance of List classes and their I/O [ commits d6f674 ].  Rationalized the writeEntry function for consistency, ease of use and maintainability across ASCII and binary formats [ commit d41166 ]
  • Fields and Dimensions: A name (word) is no longer needed when constructing a dimensioned scalar, vector, etc [ commit 3708da ].  Temporary fields are no longer registered on the database by default [ commit 146a59 ].  Rewritten primitive field mapping, providing a flexible, extensible, comprehensible and maintainable structure [ commits 4f7f48 ]
  • Parallel Running: Corrected parallel decomposition of surfaceVectorFields, with Mattijs Janssens [ commit 3395a5 ].  reconstructPar can now reconstruct surfaceVectorFields [ commit 44742d ].  Corrected sign of fluxes for cases renumbered in parallel [ commit bdd617 ].  Prevented crashes when running in parallel on cases with coupled patches [ commit e4d89d ].
  • Other Numerics: Prevent hanging of some line-boundary intersections used, for example, in data sampling [ commit 39ad49 ].  Rationalized Final solver and relaxation factor settings, with relaxation factors using the standard setting if a Final version is not specified [ commit ee443e ].  Improved calculation of weights in surface interpolation as faces approach the limit of zero area [ commit a1a225 ]

Credits

OpenFOAM 7 was produced by:

  • Core Team (CFD Direct): Henry Weller (co-founder & lead developer); Chris Greenshields (co-founder), Will Bainbridge
  • Developers/Maintainers: Mattijs Janssens (co-founder), Juho Peltola, Timo Niemi, Fabian Schlegel, Ronald Oertel, Bruno Santos
  • Patch Contributors: Francesco Contino, Lorenzo Trevisan, Federico Piscaglia, Robert Lee, SeongMo Yeon, Alberto Passalacqua

Licence

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

Artwork

OpenFOAM 7 | OpenFOAM Foundation