Close

14th July 2026

OpenFOAM 14 Released

The OpenFOAM Foundation is pleased to announce the release of version 14 of the OpenFOAM open source CFD toolbox, produced by CFD Direct. Version 14 includes: field functions and the functionalFixedValue boundary condition for initialising non-uniform fields and fixed value boundary conditions without pre-processing utilities like setFields; units as a standard feature for input parameters, supported by the new foamUnits utility and named dimensions; overhaul of the coded file input (dynamic code) framework with the addition of several new directives (e.g. #codeDict, #stream, #print, etc); further development of modular Lagrangian, a more flexible, extensible and efficient replacement to the existing code; novel rewrite of the XiFluid combustion solver using a multiphase approach with MULES; and lots more besides.  Training for OpenFOAM v14 is available from CFD Direct.

OpenFOAM 14 includes the following highlights.

  • Modular Solvers: improved the isothermalFilm and isothermalFluid solvers.
  • Multiphase: improved wall boiling and condensation in the multiphaseEuler solver.
  • Transport/Thermo: improved handling of liquids, mixtures, films and phases.
  • Combustion: rewritten XiFluid as a two-phase solver with MULES.
  • Modular Lagrangian: 80% complete flexible, extensible, efficient replacement.
  • Meshes: improvements and additions to generation, zones, NCC, motion and surfaces.
  • Function Objects: improved vortex visualisation, flux calculations, added sectional forces.
  • Field/Boundary Initialisation: new field functions and functionalFixedValue BC.
  • Boundary Conditions: improved thermal BCs, simplified conditions with field functions.
  • Coded Case Configuration: improved and added directives for coded file input.
  • Units and Dimensions: made units a standard feature, with new foamUnits utility
  • Other Case Configuration: simplified initialisation of surface waves and more.
  • Visualisation: Made ParaView resilient to crashing when reading incorrect input files.
  • Cases: new examples with thermal radiation, conduction with Joule heating, and more. 
  • Other: Several enhancements to programming to make coded file input easier to write.
  • ~938 code commits, ~130 resolved issues.
  • ISO/IEC 14882:2014 (C++14): tested for GCC v5.5+, Clang v14+.

OpenFOAM 14 is packaged for the following platforms for x86 64bit (e.g. Intel and AMD CPUs) and ARM 64bit hardware architectures.

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

Modular Solvers

  • General: Improved error messaging for incorrect selection of modular solvers [ commit b2a4dbe5 ].
  • Film: The isothermalFilm solver has been corrected to constrain the volumetric flux with fixed velocity boundary conditions [ commit 521783a6 ] and to ensure the volumetric flux is consistent with the velocity and film volume is conserved with fixed-flux conditions [ commit aa7d0397 ].
  • Thermal: Improved the isothermalFluid and derived solvers for supersonic flow at the inlet [ commit 34ce8aaf ].

CFD Direct’s Programming CFD course teaches writing a modular solver; all its courses use modular solvers.

Multiphase

  • Solver: Simplified code structure and input file syntax with population balance in the multiphaseEuler solver [ commit fcf0025e ].  In the multiphaseEuler solver, added support for a zeroFixedValue boundary condition for a surfaceScalarField to ensure the phase flux fields are zero at walls and not altered when maintaining correct flux balances [ commit 1526d1b7 ].
  • Mass transfer, with contributions from VTT Finland: In the multiphaseEuler solver, wallCondensation and phaseSurfaceCondensation models have been added [ commit 7be080d2 ].  Wall boiling and condensation can operate together on a single patch using the new alphatPhaseChangeWallFunction boundary condition [ commit bc4d03d4 ]  Added a wallCondensation tutorial example [ commit 08770d7e ] and a condenser tutorial example case [ commit eadb0749 ].
  • Particulate phase: For multiphase flows, the homogeneous nucleation models have been refactored and improved to calculate updates at the optimal moment in the CFD algorithm [ commit 3f45a68f ].
  • Population balance:  Simplified the configuration file controls for coalescence and breakup in population balance modelling [ commit 87f81af6 ].

Transport/Thermodynamics

  • Mass transfer: New function1Pressure saturation model can specify a saturation pressure curve as a function of temperature [ commit cb25fc14 ].
  • Mass transport: Added the Fuller(-Schettler-Giddings) model for binary diffusivities of gases [ commit 50c59837 ].  In thermophysical transport of fluids, a laminar diffusion function D has been added for use in sub-models [ commit 9d586d54 ].
  • Momentum transport: Viscoelastic models can be specified with multiple relaxations times and corresponding viscosities [ commit a4a5df3d ].  New simplifiedViscousStress model provides simplified versions of stress models for incompressible fluids where dilatation terms are formally zero [ commit 9ed5c044 ].  For liquid film simulations, added simplified variants of the Stokes and lambdaThixotropic momentumTransport models to stabilise simulations of over complex surfaces [ commit 74e89223 ].
  • Scalar transport: In the scalarTransport, phaseScalarTransport and age function objects, added an optional solverField setting as a separate setting to schemesField [ commit 304397e1 ].
  • Thermophysical transport: Simplified the code for handling phases in thermophysical transport [ commit 035d535f ].
  • Thermodynamics: New zonalMixture thermophysical mixture model allows different properties in different cell zones [ commit 76e7a20c ].
  • Electrical: New solidElectricalConduction fvModel calculates electrical conduction through a solid region and applies the corresponding Joule heating source to the energy equation [ commit dca4e255 ]
  • Interface: The surface tension properties of methanol have been corrected [ commit e781d7f8 ].

CFD Direct’s Applied CFD and Productive CFD part 2 courses cover transport modelling, thermodynamics and scalar transport.

Combustion

  • Solver: The XiFluid solver, used e.g. for engine combustion, is rewritten using a multiphase approach, with unburnt and burnt gas as two phases whose enthalpy equations are solved in conservative form and mean properties are calculated by averaging properties of the two phases [ commit 77b2ca3e ].  It now includes multicomponent thermodynamics and reactions in the burnt gas for rich combustion burnt gas reactions and pollutant prediction [ commit 5403c053 ].  Added a flame burnout stabilisation term to compensate for the stabilisation applied to |grad(b)| when calculating the flame normal, which causes b not to approach 0 exactly at the back of the flame [ commit cb85e247 ]. Added the uMulticomponentMixture model which includes chemical reactions in the unburnt gas [ commit bf5899d9 ] and the bMulticomponentMixture model which includes chemical reactions in the pollutants of the unburnt gas [ commit 3bfa591a ].  Added buoyancy to the unburnt and burnt gas energy equations [ commit a880bdb5 ].
  • Ignition: The GaussianbXiIgnition fvModel is a new ignition rate model for the Weller bXi combustion model which uses a time dependent Gaussian profile across the kernel  [ commit 8089dcd1 ].  The bXiKernelCorr fvModel improves the simulation flame kernel growth following ignition [ commit cc8faa2f ].
  • Flame speed: New example case shows XiFluid can simulate laminar flame propagation by selecting the laminar momentum transport model and setting Xi to 1 [ commit bad48e27 ].
  • Flame wrinking: In the XiFluid solver, the wrinkling differential propagation is now optional and defaults to off [ commit 5d3c782b ].
  • Engine simulations: Added specialised multiValveEngineValveMotion and multiValveEnginePistonMotion motion functions for mesh motion in engines [ commit 9369197c ].
  • Other: Added slip velocity term to the unburnt gas equation in XiFluid [ commit a34f44c5 ].  For conjugate heat transfer with combustion using XiFluid, added the ubCoupledTemperature boundary condition for the unburnt and burnt gases [ commit 5f503182 ]. In XiFluid, the unburnt and burnt gas thermal and specie transport is now handled by the phase system used for the multiphaseEuler solver, enabling a broad selection of transport models [ commit 836d1680 ].
  • Chemistry: The chemistryModel is now selected by the type keyword in chemistryProperties, and defaults to standard [ commit 46dcfdbb ].  Chemistry can be restricted to a cellZone to speed up cases where chemistry is only active in a small region [ commit d5522d02 ].
  • Reactions: The fluxLimitedLangmuirHinshelwoodReactionRate model has been stabilised, eliminating mesh dependence of the model [ commit efcabe91 ].  The new bXiQdot function object calculates and caches the heat release rate of the Weller b-Xi combustion model [ commit d8e537e9 ].  With the b-Xi combustion model, the reaction rate is now output by writing the bSource field with cacheTemporaryObjects(bSource); and #includeFunc writeObjects(bSource)[ commit d06ebeb8 ].
  • Post-processing: New ubAverage and ubDWEA function objects write, respectively, the average and density-weighted ensemble average, of the unburnt and burnt gas for the XiFluid solver [ commit ef0a85a3 ].

Modular Lagrangian (Particles)

  • Clouds: Users can add particles/parcels to their simulations using the packaged Cloud fvModels (e.g. parcelCloud, kinematicParcelCloud) provided for the the new modular Lagrangian functionality [ commit e2652c4c ].  Added a new tracer cloud type to modular Lagrangian, in which particles simply follow the carrier flow [ commit 54595e69 ]
  • Boundary Conditions: In modular Lagrangian, added new velocity conditions for injected particles including fanVelocity, flowRateConeDiskVelocity and totalPressureConeVelocity [ commit f3c3b3ea ].  
  • Modelling: Improved the efficiency of turbulent dispersion calculations in modular Lagrangian [ commit 546cb75d ].
  • Multiphase: Mass transfers and coupling to multiphase has been added to the modular Lagrangian modelling [ commit fb321367 ].
  • Thermodynamics: Added thermodynamic modelling to modular Lagrangian [ commit 379aabc6 ].  In modular Lagrangian, the convergence of the energy solution has been significantly accelerated for particles undergoing expansion or contraction [ commit d0253494 ].
  • Varying composition: Multicomponent thermodynamic models can be specified in particle clouds, with functionality and syntax identical to that of Eulerian multicomponent thermoydnamic models [ commit 7d3cf9e3 ].  Added multicomponentParticle and multicomponentParcel clouds to the modular Lagrangian (aka field Lagrangian) for particles with varying composition [ commit 7256fd3b ].

CFD Direct’s Applied CFD and Productive CFD part 2 courses included training on modular Lagrangian.

Meshes

  • NCC interface: Eliminated some unnecessary stitching and un-stitching in NCC with some static interfaces [ commit 9d6af06a ].  Updated the example createNonConformalCouplesDict file for configuring NCC interfaces to include recent new features such as owner-neighbour ordering, moveUpdate and patchFields specification [ commit fe3d7775 ]
  • snappyHexMesh: searchableSurfaces in snappyHexMesh can be specified with units or a scale factor [ commit 715f7742 ].  In snappyHexMesh, the refinement level for inside and outside region refinement can now only be specified by the level keyword, taking a single value [ commit 3284e4e3 ].
  • blockMesh: blockMesh has an additional units control, enabling users to write units [mm]; instead of scale 0.001; [ commit 854f0834 ].  In blockMesh, the new sweepFace option describes curved block faces that better conform to curved geometries [ commit b5a563dd ].
  • extrudeMesh: In extrudeMesh, the input syntax has changed slightly since the nLayers and expansionRatio parameters no longer default; they must be specified for extrusion models that use them and are no longer read by models which do not use them [ commit 2d57284b ]extrudeMesh can write the mesh to a time directory in the current case, or the source case, if the extrusion is constructed from another case [ commit 0779f2a7 ].
  • Manipulation: splitMeshRegions has been rewritten with a set of rational, inter-operable options [ commit cc289fad ].
  • Motion: The multiSolidBody motion solver can now work with topology change [ commit 4d341c1e ].  Consolidated rigid body motion with single and multiple bodies into one functionalRigidBodyMeshMotion system [ commit 798bf361 ].  The multi-body rigid body motion (multiRigidBodyMotion) can include mesh-to-mesh mapping [ commit 06734734 ].  Rigid body motion includes a pointMasses body option [ commit d891aad3 ].  Added sectional moment evaluation to bodies in rigidBodyDynamics [ commit 6973618e ].
  • Other: When configuring blockMesh, use paraFoam -block to visualise the blocks which is now resilient to configuration errors [ commit 587f1d17 ].  Improved quality and performance of the bounded sphere functionality [ commit df030f00 ].
  • Mesh zones: New patchCells zoneGenerator provides a zone of the cells adjacent to a patch [ commit 647e20be ].  New nearPatchCells zone generator constructs a cellZone of the cells within a specified distance from a patch or a set of patches [ commit acc41ce6 ].  A print zoneGenerator prints log information for generated zones to help users check they have configured zones correctly in their input files [ commit f671ec4b ]. A cell zoneGenerator generates a cell zone from a face or point zone [ commit a481c2b6 ].  Added a new coded zoneGenerator [ commit adb69842 ]MRFZones are now updated properly following topology changes, e.g. refinement [ commit aeae3893 ].
  • Surfaces: The searchable plane is now a closed surface, as if it were a flat part of an infinitely large sphere with the inside opposing the surface normal; it can therefore support inside/outside testing, e.g. to define a cell zone [ commit 23af80e3 ].  The planeType of a planar surface is deduced automatically from the specified plane parameters, e.g. pointAndNormal for parameters point and normal [ commit afae4d85 ].  New surfaceRenamePatch utility renames a patch (region) of a surface geometry file [ commit c4367fbe ].
  • Programming: mesh.db() now returns the objectRegistry in which the mesh data is registered, with the objectRegistry‘s parent being accessed with the parent() function [ commit 6a71c69e ].  The new poly() function returns the corresponding polygonal or polyhedral data associated from higher level mesh concepts like fvMesh, in particular replacing patch() in fvPatch [ commit 5504695c ]. polyBoundaryMesh() is also replaced by poly().boundary() which is particularly important in NCC code where the topology of fvMesh and polyMesh differ [ commit bc568d14 ].  The mesh can be accessed directly from a patch with the mesh() function [ commit a8826e62 ].

For updated information on mesh zones in OpenFOAM, see “User Guide 5.6: Mesh Zones” and “Dynamic Zones in OpenFOAM”.  Mesh generation with blockMesh and snappyHexMesh is introduced on CFD Direct’s Essential CFD course and continued on the Applied CFD course, with topics on NCC, mesh zones and more.

Function Objects

  • General:  The cellSum packaged function object writes a sum of all cell values of a field [ commit 224bebc7 ].
  • Fields: The histogram function object, for processing a histogram of field data, can now operate exclusively on a cell zone [ commit bf016ed3 ].  Rewritten the flowType function object to visualise vortices effectively [ commit 28133f2f ].  Fixed field writing for parallel cases in the surfaceFieldValue function object [ commit bd09281b ].  The Peclet number function object (PecletNo) now works for compressible solvers [ commit b80cc10b ].  The Mach number function object now works for multiphase flows [ commit a619a076 ].
  • Flux calculation: New patchFlux and faceZoneFlux packaged function objects can calculate the flux of any property, not just velocity [ commit 5fecf83b ].  The specieFlux function object is now extensive, i.e. includes the face areas instead of being per unit area [ commit 7642c735 ]. Added a new set of energy flux function objects, including energyAdvectiveFlux for advected energy, heatFlux for diffusive (conducted) energy, and energyFlux for the combined energies [ commit eadb0749 ].
  • Mesh: New writeMesh functionObject can write mesh data at times other than the scheduled write times in controlDict [ commit 40db239c ].  The generateZone function object can generate, register and/or write zones [ commit 0a05b742 ].
  • Graphs: New sectionalForceProbes and sectionalForceGraph function objects calculate fluid forces and moments on section-planes through specified patches; the sectionalForceGraph data can be used for shear force and bending moment diagrams [ commit ebce0762 ].  The rigid-body equivalents of these functions, rigidBodySectionalForceProbes and rigidBodySectionalForceGraph respectively, include the body’s acceleration in the output [ commit fa26917e ].
  • Coded: Added an example coded function object for generating a cellZone [ commit dbd1ee59 ].
  • Data output: When executing foamPostProcess on a file containing a sequence of function objects, writing the output of intermediate fields can be deactivated with writeControl none; [ commit 91df954f ].  New indentOrNl token can be used to format text output cleanly [ commit 46a32a7d ].

Function objects are taught  generally on CFD Direct’s Essential CFD course; coded function objects are used extensively on the Productive CFD courses and Programming CFD includes an example of programming a function object.

Field / Boundary Initialisation

  • Field functions: Fields can be initialised with nonuniform values by configuring the internalField as zonal, distanceFunction (changed from the original function1 [ commit 59226ec4 ]), surfaces, coded and fieldFunction — new options which set values by zones, a pre-configured function, or by a coded function [ commit 136a112c ], with surfaces including setting fractional values in cells intersected by a surface [ commit 310d6dbf ] and fieldFunction evaluating a function1 of another field, e.g. a property as a function of temperature [ commit df4681fb ].  
  • functionalFixedValue boundary condition: flexible and efficient way or specifying non-uniform and/or time-varying inlet fields, with initial support for zonal, distanceFunction or coded functions [ commit d8393191 ]; it uses the value entry to specify a field function for a non-uniform field [ commit 0415ffee ].  New timeFunction field function specifies a time (only) varying condition [ commit f3a203db ].
  • Internal and boundary fields combined: A functionalGeometricField allows both a field and boundary values to be specified together by a function, e.g. for a non-uniform diffusivity field [ commit 24f4002b ].

For more information about field and boundary initialisation, see “User Guide 6: Field and Boundary Initialisation” and “Field Functions in OpenFOAM”.  Examples of field initialisation appears in the Applied CFD and Productive CFD courses, and with customised code in Programming CFD.

General Boundary Conditions

  • Velocity: Improved the atmosphericBoundaryLayer boundary condition [ commit e44ff458 ].  The freestreamVelocity boundary condition can now take a functional specification of the freestream velocity values, e.g. the atmosphericBoundaryLayer field function [ commit b8cd42ce ].  The tangentialVelocity parameter can now be specified by a field function in the pressureInletOutletVelocity boundary condition [ commit 68caaa1c ].
  • Temperature: Added a numerical relaxation option for thermal radiation to the coupledTemperature boundary condition [ commit 65e52cf3 ].  A heat transfer coefficient can be specified to vary in time and space in the coupledTemperature and externalTemperature BCs, enabling a thermal resistance, e.g. an air gap, between regions with the coupledTemperature BC [ commit 286aab18 ].  The coupledTemperature boundary condition can now correctly include a layer/gap between the two regions with its own conduction properties and heat source [ commit cf917412 ].  The new displacementGapHeatTransferCoefficient field function provides a heat transfer coefficient for a gap created by surface displacement between two regions, typically due to thermal deformation [ commit a8dcaf5a ]
  • Turbulence: The boundary conditions for turbulent fields at an inlet have been simplified to turbulentKineticEnergy, turbulentEpsilon and turbulentOmega [ commit e1c2bff9 ].
  • General: New prototype meanInletOutlet boundary condition is equivalent to a scalar inletOutlet condition where the inletValue for inflow is calculated as the mean of the cell values adjacent to the patch [ commit 5ea64ebb ].

Programming CFD includes an example of programming a boundary condition.

Coded Case Configuration

For more information about coded case configuration, see:

Units and Dimensions

  • foamUnits utility: The foamUnits script has been replaced with an application which can calculate unit conversions, in addition to listing dimensions and units [ commit f451f2d1 ]foamUnits now prints units corresponding to a given dimension [ commit 5792f61d ]
  • configDict file: Global configuration controls, e.g. DimensionedConstants, are now in a global configDict file (in $FOAM_ETC), with case overrides in system/configDict [ commit fb321367 ].  A template configDict file contains examples of settings and switches that are most commonly overwritten [ commit 5facde0e ].  Units and unit conversions can now be defined in a case configDict file and are separate from the underlying unit system so that conversions can occur easily across unit systems [ commit a990b37d ]
  • Dimensions:  Standard practice is now not to include dimensions with physical properties, but instead to specify units with the value, which are checked for dimensional correctness [ commit 6a35fbd5 ].  Replaced numerical dimensions with named dimensions in example cases, including several new named dimensions [ commits 61d4199f ].  Dimension checking is added to the read construction of all GeometricFields in all solvers and libraries [ commit f7f22e73 ].
  • Macro expansions: Typed macro expansions, e.g. $<scalar>diameter, now read units, e.g. diameter 500 [mm]; [ commit d67b3529 ]

For more information about units and dimensions, see:

Other Case Configuration

  • Surface waves: Field initialisation of surface waves is now configured using the waveAlpha and waveVelocity field functions [ commit f1926f07 ].  
  • Atmospheric boundary layers: The velocity and turbulence fields for an atmospheric boundary layer can be initialised using a field function [ commit 78952c7c ].
  • General configuration: The new -create option causes foamDictionary to create a new case file, if the specified file does not exist [ commit 8801fa0d ].
  • Models: Removed the Coeffs suffix from the names of sub-dictionaries containing model coefficients, with backward compatibility [ commits 686d966a ].
  • Case initialisation: setFields includes a new extrapolatePatches option to extrapolate cell values onto patches [ commit db4068e9 ] and supports unit conversions in field values [ commit a4b49c12 ].

Visualisation

  • Graphs: Corrected sampling, e.g. for output graphs, to work only on-demand, with a dramatic performance improvement of simulations that use it [ commit 08066aab ].
  • ParaView reader: ParaView no longer crashes if a field file is inconsistent with the mesh [ commit d40b7f65 ].  Added an -allRegions option to paraFoam to launch ParaView with all regions of a multi-region case [ commit bd1de5cd ].  When Paraview loads field files, it no longer throws a fatal error if the value entry is missing [ commit ace12ca2 ].  Updated the OpenFOAM reader module for Paraview v6.1 [ commit 0430a68b ].

Cases

  • fluid: New concentricCylinders example provides validation for thermal radiation [ commit f96d9f16 ].
  • incompressibleVoF: New DTCHullProp example case simulations self propulsion of a ship hull [ commit 3076fc03 ].
  • multiRegion/CHT:  New vacuumFurnace example demonstrates heating and cooling involving thermal radiation and natural convection [ commit 1003ab2c ].

Other

  • fvModels: The propellerDisk momentum source now includes an optional automatic adjustment to match the propeller thrust with the ship hull resistance [ commit 533e780f ].
  • Other numerics: Added interpolateGrad function to calculate the gradient for fields interpolated with the cellPoint method [ commit 38e27c74 ].  The cubic interpolation scheme has been corrected [ commit b062a016 ].  Added limitedVanAlbada and VanAlbada01 schemes for scalar fields with strict physical limits [ commit 772be381 ].
  • Solvers: Improved GAMG processor agglomeration which can accelerate parallel solutions on clusters of networked processors [ commit f211bf49 ].  Fixed the GAMG solver for cases with a single cell at the coarsest levels [ commit de71200f ].
  • Programming: Added an -lnInclude option to the foamFind tool which prints the lnInclude directory containing the specified source file and the corresponding -I flag for inclusion in an options file [ commit 7f4e3144 ].  Added coupledNeighbourField() function as a more efficient version of boundaryNeighbourField() for MULES and volPointInterpolation [ commit a375a4de&nbsp;].  Preconfigured dimensionSets now have simple names, e.g. velocity instead of dimVelocity, which can be used directly to construct dimensioned values, e.g. velocity(1, 0, 0) [ commit 42d70b02 ].  Added a read constructor for GeometricField that includes the dimensions of the field [ commit f40bf0d0 ].
  • Fields: New linearSequence and linearSequence01 functions generate a scalarField with a linear sequence of values between specified bounds, which are 0 and 1 in the 01 variant [ commit 6af508ba ].
  • Starter Code: foamNewSolver creates the starter code for a new modular solver [ commit 32a9d80a ].

Credits

OpenFOAM 14 was produced by CFD Direct: Henry Weller, Will Bainbridge, Chris Greenshields and Aidan Wimshurst.

With contributions from Timo Niemi, Clemens Gößnitzer and Stanislau Stasheuski.

Licence

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

Artwork