Close

11th July 2023

OpenFOAM 11 Released

The OpenFOAM Foundation is pleased to announce the release of version 11 of the OpenFOAM open source CFD toolbox. Version 11 introduces modular solvers written as classes, in contrast to the traditional application solvers, integral to OpenFOAM since icoFoam in 1993.  Modular solvers are simpler to maintain and extend, and are more flexible for multi-region simulations, e.g. conjugate heat transfer (CHT) with any type of flow, e.g. multiphase. Everything is  backward-compatible, so: 1) application solvers will still compile in OpenFOAM; 2) launching an old application solver, e.g. simpleFoam, executes a script which  runs the incompressibleFluid module on a single region.

OpenFOAM 11 includes the following highlights.

  • Modular Solvers: class-based solvers for greater flexibility, e.g. multi-region simulations.
  • Multiphase: vastly improved consistency and conservation in the multiphaseEuler module.
  • Transport: added anisotropic thermal conductivity.
  • Thermophysical: standardised the specification of property names in input file keywords.
  • Heat transfer: simplified critical boundary conditions for heat transfer between regions.
  • Particle tracking: generalised statistical distributions for size distributions in particles.
  • Liquids Films: full replacement which conserves mass and integrates to other models. 
  • Meshes: redesign of dynamic mesh functionality and consolidated NCC.
  • Function Objects: improved field averaging and visualisation function objects.
  • Models and Constraints: numerous new models and constraints.
  • Boundary Conditions: consolidated mapped conditions and introduced MRF conditions.
  • Case Configuration: new foamToC application lists models and options in OpenFOAM.
  • Programming: new finite volume functions and improvements to algorithm sequences.
  • 964 code commits, 133 resolved issues.
  • ISO/IEC 14882:2011 (C++14): tested for GCC v5.5+, Clang v16+ (v10+ should also work).

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

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

Modular Solvers

  • General applications: foamRun is the generalised CFD application which loads new modular solvers [ commit 968e60 ]. The foamMultiRun application can run different modular solvers on different mesh regions, providing a generalised tool for complex coupled problems, e.g. conjugate heat transfer [ commit 968e60 ]. The foamPostProcess utility is a new general replacement for the postProcess utility which supports the new modular solvers [ commit 4001d2 ].
  • Incompressible and compressible solvers: The fluid, isoThermalFluid, multicomponentFluid and solid modular solvers replicate numerous conventional solvers, from rhoSimpleFoam, rhoPimpleFoam and buoyantFoam to reactingFoam and more [ commit 968e60 ].  The incompressibleFluid modular solver replicates pimpleFoam, pisoFoam and simpleFoam [ commit ca8918 ].
  • Multiphase with volume of fluid (VoF): The compressibleVoF modular solver replicates compressibleInterFoam [ commit f77119 ] and can simulate cavitation through fvModels which are more physical and controllable than the approach in cavitatingFoam, which is now removed [ commit 776ecc ]. The incompressibleVoF modular solver for incompressible two-phase flow with VoF replaces interFoam and can be used in multi-region simulations [ commit 851c93 ]. The incompressibleMultiphaseVoF modular solver for incompressible, immiscible fluids using VoF replaces multiphaseInterFoam and can be used in multi-region simulations [ commit ffdb21 ]. The compressibleMultiphaseVoF modular solver for compressible, immiscible fluids using VoF replaces compressibleMultiphaseInterFoam and can be used in multi-region simulations [ commit 64e1e4 ].
  • Other multiphase solvers: The multiphaseEuler modular solver replaces multiphaseEulerFoam, using the fvModels to add optional sources, particles, film modelling, etc [ commit cec035 ].  The incompressibleDenseParticleFluid modular solver replaces denseParticleFoam [ commit e40198 ] calculating the phase drag with face-stabilisation to provide a consistent, stable velocity for the continuous phase, without staggering patterns at the boundary of packed regions [ commit 2b74f9 ]. New incompressibleDriftFlux modular solver replaces driftFluxFoam [ commit b949c2 ].
  • Combustion solvers: The XiFluid modular solver for compressible premixed/partially-premixed combustion replaces XiFoam and can be used in multi-region simulations [ commit b7ea5f ].
  • Shock capturing: The rhoCentralFoam solver has been reorganised [ commit 3055b1 ], before being replaced by the shockFluid modular solver for compressible fluids with shock-capturing which includes optional mesh topology change, load-balancing and mesh-motion [ commit fe5a99 ]. The shockFluid module solves for rho, U and e while conserving rhoU and rhoE  [ commit 9fadb7 ].
  • Miscellaneous solvers: The movingMesh modular solver executes the mover, topoChanger and distributor specified in a dynamicMeshDict file as a replacement for moveMesh [ commit 260a85 ]. The functions modular solver executes the function objects for a specified solver, replicating the postProcess application and -postProcess option, and specifically the scalarTransportFoam solver [ commit 8de6cd ].
  • Particle solvers: The particleFoam and rhoParticleFoam application solvers are now replicated by running the functions modular solver with the clouds fvModel, on top of the incompressibleFluid and isothermalFluid modular solvers, respectively [ commit fbda1d ].
  • Solid solvers: The solidDisplacement modular solver for solid stress analysis replaces solidDisplacementFoam and solidEquilibriumDisplacementFoam and can be used in multi-region simulations, e.g. FSI [ commit 55be80 ].
  • Film solvers: The new isothermalFilm solver module simulates isothermal liquid films conservatively, and interfaces with standard modelling [ commit dcbd54 ]. The new film solver module, derived from isothermalFilm, solves for energy and heat transfer and can use existing boundary conditions to calculate conjugate heat transfer [ commit 796cfb ].
  • Numerics: Improved under-relaxation of buoyancy pressure in isothermalFluid modular solver [ commit c22a5a ]. A simulation using a specialised SRF (single reference frame) solver can now be fully replicated using a standard solver with the MRF (multiple reference frames) functionality [ commit 160ee6 ]. The compressibleVoF modular solver includes a correction equation for the mixture temperature, which conserves energy [ commit 74b302 ].

Multiphase

  • Modelling: The coupledMultiphaseTemperature boundary condition couples phase temperature in an Euler-Euler multiphase simulation for conjugate heat-transfer [ commit a7d40a ]. For compressible multiphase flows, the specific twoPhaseChangeModel code has been replaced with a more general VoFCavitation fvModel, enabling greater extensibility into other phase-change and interface manipulation models in the future [ commit 9dc91e ]. The multiphaseEuler solver now includes a wallBoiling heat transfer model for a stationary phase, e.g. for boiling in a packed bed [ commit 32edc4 ]. New Saito cavitation model for the compressibleVoF and multiphaseEuler solvers uses a mass transfer rate based on the theory of evaporation/condensation on a plane interface. [ commit 2f9f8b ].
  • Reacting Multiphase (with VTT Finland): New wallBoilingProperties function object writes out data associated with wall boiling [ commit 0da491 ]. Corrected the Johnson-Jackson partial slip boundary condition for granular materials in multiphaseEulerFoam [ commit f412d3 ]. Removed duplication of Jayatilleke thermal wall function from the wall boiling model [ commit e51753 ]. Temperature extrapolation is more physical in wall boiling and more stable in regions of low y+ [ commit f6342a ]. Wall boiling has been improved and includes the uniformFixedMultiphaseHeatFlux boundary condition for temperature, which apportions a specified heat flux between fluid phases to keep the boundary temperature uniform across all phases [ commit 377080 ]. Boiling in multiphase flows is more stable, energy conservative and accurate [ commit 132111 ].
  • multiphaseEuler solver: The cell-based momentum algorithm in the multiphaseEuler solver has been vastly updated to improve consistency and conservation, and reduce drag-generated staggering patterns at sharp interfaces and boundaries with stationary phases [ commit a8cb8a ].  A single diffusivity in the implicit phase-fraction corrector equation ensures phase-fractions sum to 1 [ commit e8078c ].  Drag and virtual mass tables are now created on demand to reduce storage and computational cost [ commit ede5ec ].  Improved the calculation of drag and heat transfer coefficients [ commits f67445 ].
  • Tutorials: New floatingObjectWaves example case demonstrates motion of a floating object due to waves without any mean flow, generated by the waveForcing fvModel [ commit b9b6ee ]. Simplified the specification of fvSchemes for multiphase simulations [ commit 1c2f61 ].

Transport Modelling

  • MomentumTransportModels: The lambdaThixotropic viscosity model includes an optional Bingham plastic yield stress [ commit 3b1e46 ].
  • ThermophysicalTransportModels: New solidThermophysicalTransportModel provides a thermophysical transport model for solids, supporting anisotropic thermal conductivity [ commit cdaaa6 ]. Corrected heat flux calculations at boundaries with anisotropic thermal conductivity [ commit 01d2c6 ]. Added optional boundaryAligned switch for anisotropic thermal conductivity κ to force a principal direction of κ to align with the solid boundary [ commit d26e0f ].
  • Turbulence: Improved the calculation in the Jayatilleke wall function [ commit f2b6c5 ].

Thermophysical Modelling

  • Thermodynamics: Simplified and standardised the specification of thermophysical property names in input file keywords, e.g. in fvSolution, boundary conditions etc [ commit 87a0b8 ]. New constSolidThermo supports uniform and non-uniform thermophysical property specification [ commit 714e13 ]. Properties with constSolidThermo can vary across the domain either by expressing them as a non-uniform field or based on zones [ commit a25f99 ].
  • Transport: Redesigned the thermophysical transport to make boundary conditions, between regions and at external boundaries, simpler, more extensible and easier to maintain [ commit 5af541 ]. Anisotropic thermal conductivity can be specified using the constAnisoSolidThermo thermophysical properties class [ commit 5c296c ].
  • Configuration: Regular expressions can now be used in the names of thermophysical properties dictionaries [ commit 523333 ].
  • Chemistry: Specie sources now conserve mass in chemistry integration [ commit 3d59ed ]. The adjustTimeStepToChemistry and adjustTimeStepToCombustion functions adjusts the time step to match a reaction process [ commit 7c684b ]. The moleFraction function converts mass fractions to mole fractions and massFraction converts the opposite way [ commit 1b80fd ].

Heat Transfer

  • Numerics: The compressibleInterPhaseThermophysicalTransportModel enables conjugate heat transfer with multiphase flows using the compressibleVoF modular solver [ commit 9cde5a ].
  • Boundary conditions: Heat transfer is easier to simulate with simpler, more rational names for critical boundary conditions [ commit 5c01fe ].
  • Examples: New circuitBoardCooling tutorial case demonstrates an effective approach to conjugate heat transfer with 3D thermal baffles [ commit 3f33f3 ].

Particles and Tracking

  • Tracking: Boundary interactions of Lagrangian particles has been corrected for constraint boundaries [ commit 6ccaf6 ]. Particles are now mapped in cases with topology change using mesh-to-mesh mapping [ commit 03b061 ].
  • Injection: Removed sub-cycling and improved injection behaviour in the particle (Lagrangian) functionality [ commit 06e29c ].  Statistical distributions have been generalised and are used for size distributions in particles [ commit cae419 ].  New uniformParcelSize control bases parcel size on a fixed number, volume or surface area of particles [ commit 0d2fd7 ].
  • Configuration: Added a sample fvModels file for the clouds model, to help plug in particles to any simulation [ commit 399ea8 ].
  • Modelling: Replaced MPPIC’s approximate correction tracks with a predictor-corrector scheme, reducing memory usage and avoiding ad-hoc corrections to tracking time and associated parcel properties [ commit ca0003 ].
  • Data pocessing: Fluxes of particles — in terms of number, volume or mass — can be calculated with CloudFunctionObjects [ commit f69b9f ].

Liquid Films

  • Overview: The isothermalFilm and film solver modules replace the surfaceFilmModels library, which is now removed; the new approach is much more flexible, allowing coupling to other regions with gas flows, Lagrangian clouds, VoF, CHT, etc [ commit 34c0e8 ].
  • Film-fluid interface: The filmVoFTransfer and VoFFilmTransfer fvModels operate between a film and a VoF region to transfer film to the VoF phase when the film is thick enough and vice versa when a VoF film is too thin [ commit 72b876 ].
  • Film-particle interaction: Particles can transfer into a surface film by specifying the cloudFilmTransfer surfaceFilmModel in the fluid cloudProperties file and applying the filmCloudTransfer fvModel to the film [ commit a2ad71 ]. The filmCloudTransfer fvModel now includes an optional ejection model which transfers fluid from a film to particles (parcels) by dripping from an inverted surface or curvature separation [ commit 2cf8f6 ].
  • Boundary conditions: The mappedFilmPressure boundary condition maps the pressure from a fluid region to a film region [ commit 12decc ].  New filmSurfaceVelocity boundary condition evaluates a film surface velocity from the shear imposed by the neighbouring fluid region [ commit 423fa5 ]
  • Examples: The rivuletBox example case demonstrates heat transfer between an aluminium panel, a film of fluid forming rivulets, and the surrounding air which flows by natural convection [ commit cee34f ].

Meshes

  • General: With the -allGeometry option, checkMesh writes out the coverage of non-conformal couples (NCC) [ commit 095f4b ].
  • Generation: A film mesh can now be generated using the intrude option with extrudeRegionToMesh utility [ commit f85026 ].
  • Non-Conformal Coupling: Non-conformal coupling (NCC) replaces arbitrary mesh interface (AMI) – providing bounded, conservative numerics for rotating geometries, non matching regions of mesh, and more [ commit f4ac5f ]. Made Non-conformal coupling compatible with mesh-to-mesh topology changes [ commit 3ec358 ]. Added a -fields option to the createNonConformalCouples utility, to add relevant patch entries for the non-conformal couple to the field files [ commit 2db562 ]. Non-conformal couples are now “stitched” to avoid discontinuities when visualising interpolated field data, e.g. in Paraview [ commit 426060 ]. Corrected NCC to work with cases involving mesh to mesh mapping [ commit 919972 ]. Non-conformal coupling supports second-order time schemes [ commit a4ca75 ]. Multiple rotating frames (MRF) is now compatible with non-conformal coupling (NCC) [ commit a430d0 ].
  • Other: New rigidBodyPoints functionObject tracks the motion of points on a rigid body [ commit 386588 ]. Generalised the updating and removal of old-time fields with mesh motion and topology change [ commit 30eb5e ].
  • Mapping: The mesh-to-mesh mapping functionality has undergone major refactoring [ commits 582438 ]. Mesh redistribution can now process particles [ commit 8f7ae7 ]. Improved robustness of patch to patch mapping for both conformal and non-conformal interfaces [ commit 020361 ]. Rationalised mesh-to-mesh mapping and the mapFieldsPar utility [ commit f95eb5 ].
  • Decomposition and redistribution: The reconstructPar utility now reconstructs the decomposed mesh as well as the fields, so the reconstructParMesh utility is no longer needed and has been removed [ commit c3ab70 ].

Function Objects

  • General: Function objects now write files to standard paths when applied to mesh regions in multi-region simulations [ commit 5b11f5 ]. New stopAtTimeStep function object stops the simulation if the time-step falls below a specified level [ commit 4974cc ].
  • Sampling: The triSurfaceAverage function object computes averages of fields over a specified triangulated surface [ commit c5d70f ]. cutPoly provides new polyhedral cutting routines and an isosurface algorithm which is more robust and much faster than existing tools [ commit 723f52 ].
  • Mesh: New checkMesh functionObject reports the mesh quality for dynamic mesh cases [ commit 36e834 ].
  • Fields: The fieldAverage function object can now average fields that do not exist at construction time, and works at restart on cases with changing mesh topology [ commit 3e8b97 ]. New volAverage and volIntegrate packaged function objects can conveniently process the volume-weighted average and volume integral of a field [ commit 5c7131 ].

Models and Constraints

  • General: An fvModel can now be configured through the controlDict file using the fvModel function object [ commit 9f6eac ]. The #includeModel and #includeConstraint directives can include fvModels and fvConstraints from the functions sub-dictionary in the controlDict file [ commit 3a269e ]. The name of a function object, fvModel or fvConstraint, and any associated output directory, is now specified through the name keyword [ commit dc85d5 ]. The select keyword is now used to specify a collection of cells, faces or points, replacing regionType and selectionMode [ commit 295223 ]. A zeroDimensionalFixedPressure fvModel and fvConstraint together maintain a pressure constraint in a zero-dimensional case [ commit 9cdd2a ].
  • fvModels: The surfaceFilms fvModel supports multiple films, with potentially different specifications, replacing the surfaceFilm (singular) model [ commit b1de50 ]. New waveForcing fvModel generates surface waves which can be configured to move in any direction, without needing to be applied at a domain inlet [ commit 562925 ]. The densityConstraintSource and pressureConstraintSource fvModels enables zero-dimensional simulations to include expansion/contraction, or a mass source/sink [ commit 644a59 ], with the zeroDimensionalMesh utility which generates a unit cube geometry without any configuration to simplify 0D simulations [ commit 099505 ]. The massSource fvModel removes mass when a negative mass flow rate is specified [ commit d7e330 ]. The heatTransfer fvModel can now be applied to individual phases in a multiphase simulation [ commit 3736bc ].
  • fvConstraints: New bound fvConstraint bounds a scalar field when it falls below a specified minimum [ commit 1a17ce ].

General Boundary Conditions

  • Pressure: The waveSurfacePressure boundary condition has been updated to work with the isothermalFluid and fluid modular solvers to solve potential free surface flow, deprecating the potentialFreeSurfaceFoam solver [ commit 897658 ].
  • Velocity:  The MRFslip boundary condition can be used for a slip-wall rotating with the moving frame in an MRF (multi-reference frame) or SRF (single reference frame) case [ commit ef9566 ]. The omega entry representing rotational speed in rad/s can be replaced by rpm if the user wishes to enter data in revolutions per minute [ commit 2da5ed ].
  • General: The mappedPatch boundary condition applies data from another field and/or another patch; a new samePatch switch simplifies it for field data from the same patch [ commit 320e70 ]. A single map function now does patch-to-patch mapping in boundary condition classes, replacing autoMap and rmap [ commit 38e8e7 ].

Case Configuration

  • Data Visualisation: The foamSequenceVTKFiles script now handles files of the same name in different image sequences  [ commit 7f17fc ].
  • Case Initialisation: The functions solver executes function objects based on fields initialised by another solver; the time at which the field data is read can now be optionally set by the subSolverTime entry in the controlDict file [ commit 714291 ]. Results are written out at multiples of the writeInterval specified in controlDict, starting from the start time or a time set by an optional beginTime entry [ commit 0fa46e ]. New snappyHexMeshConfig utility preconfigures input files for meshing with snappyHexMesh [ commit c25529 ].
  • Coded Input: Added convenient variadic constructors to the dictionary class which is particulary convenient for generating keyword-value entries in input files using the #codeStream directive [ commit d1cb13 ]. Dictionary entries constructed with #codeStream and #calc can now conveniently use typed variables, enabling calculations with vectors, tensors, lists, fields etc [ commit b2d4f2 ]. New #calcInclude directive can load header files for #calc , e.g. to include mathematical functions [ commit 0de23d ]. The #calc directive for input files can now use an alternative #{ … #} delimiter [ commit 8611db ]. Multi-line entries with #calc enable more useful coded entries in input files, emulating #codeStream but with simpler syntax [ commit 441b60 ].
  • Model and Option Searching: The new foamToC application prints and reports “Tables of Contents”, enabling users to locate models and list the different model options [ commit f978ff ]; it can list functionality based on a regular expression search [ commit db7ea4 ].

Programming

  • Other Numerics: New fvm::LaplacianCorrection function makes the implementation of thermal transport, as an energy implicit correction on an explicit temperature gradient, more efficient and simpler [ commit f2cd71 ]. Thermophysical transport properties are now calculated at the beginning of a time step since they do not involve transport equations [ commit ce42eb ]. Momentum transport properties are calculated at the beginning of the time step if the calculation does not involve solving a transport equation [ commit d9ba28 ]. Templated the fvc::flux() function to support vector fluxes [ commit 42c35a ]. New fvm::divc function returns a matrix with an explicit source containing the divergence of a specified flux, plus a cached flux according to fluxRequired setting [ commit 1182d3 ]. Extended ddtCorr with multiple rotating frames (MRF) to avoid decoupling between pressure, velocity and fluxes, which can cause numerical oscillations [ commit e98dcc ]. There have been several improvements to the CorrectPhi functions that correct fluxes to ensure continuity; they are particularly important for VoF and other multiphase solvers [ commit e66484 ].
  • Fields: GeometricField<Type, fvPatchField, volMesh> and GeometricField<Type, fvsPatchField, surfaceMesh> are replaced by the simpler VolField<Type> and SurfaceField<Type> typedefs [ commits 73c562 ].
  • When using a functionObject, fvModel or fvConstraint, the relevant library is now automatically loaded where possible [ commit 0b8c17 ].

Credits

OpenFOAM 11 was produced by:

Licence

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

Artwork