OpenFOAM
![]() | This article or section is in a state of significant expansion or restructuring. You are welcome to assist in its construction by editing it as well. If this article or section has not been edited in several days, please remove this template. If you are the editor who added this template and you are actively editing, please be sure to replace this template with {{in use}} during the active editing session. Click on the link for template parameters to use.
This article was last edited by Dftyapo (talk | contribs) 5 years ago. (Update timer) |
File:OpenFOAM software logo.png | |
![]() OpenFOAM running in a terminal | |
Original author(s) | Henry Weller |
---|---|
Developer(s) | OpenCFD Ltd.[1] / CFD Direct Ltd.[2] / Wikki Ltd.[3] |
Initial release | 10 December 2004[4] |
Stable release | |
Repository | |
Written in | C++ / C |
Operating system | Unix / Linux / Windows |
Type | Computational fluid dynamics, simulation software, fluid structure interaction |
License | GPLv3 |
Website | openfoam |
OpenFOAM (for "Open-source Field Operation And Manipulation") is a C++ toolbox for the development of customized numerical solvers, and pre-/post-processing utilities for the solution of continuum mechanics problems, most prominently including computational fluid dynamics (CFD).
There are three main versions of OpenFOAM software that are released as free and open-source software under the GNU General Public License Version 3:
- The official OpenFOAM version released every 6 months by ESI-OpenCFD Ltd.,
- The OpenFOAM-Foundation fork released by CFD Direct Ltd. on behalf of OpenFOAM Foundation, and
- The FOAM-Extend Project fork released by Wikki Ltd..
In addition to the above main forks, there are several variants of software maintained and released for specific applications by other entities based on the OpenFOAM technologies: to name but a few: blueCFD®-Core, SIMSCALE, and iconCFD.
OpenFOAM has been released by OpenCFD Ltd. since 2004, the name OpenFOAM was registered as a trademark by the OpenCFD Ltd in 2007,[7] and grants use of its OpenFOAM trademark by Third Parties on a licence basis. ESI Group and OpenFOAM Foundation Ltd are currently permitted to use the Name and agreed Domain Name.
History

The name FOAM has been claimed to appear for the first time as a post-processing tool written by Charlie Hill in the early 90s in Prof. David Gosman's group in Imperial College London.[8]
Nevertheless, as a continuum mechanics / computational fluid dynamics tool, the first development of FOAM (which had became OpenFOAM later on) was initiated by Henry Weller at the same institute by using the C++ programming language rather than the de facto standard programming language FORTRAN of the time to develop a powerful and flexible general simulation platform. From this initiation to the founding of a company called Nabla Ltd, (predominantly) Henry Weller and Hrvoje Jasak carried out the basic development of the software for almost a decade.[9] For a few years, FOAM was sold as a commercial code by Nabla Ltd.[10] However, in 2004 FOAM was released under GPL and was renamed to OpenFOAM.
In 2004, Nabla Ltd was folded. Immediately afterwards, Henry Weller, Chris Greenshields and Mattijs Janssens founded OpenCFD Ltd to develop and release OpenFOAM.[11] At the same time, Hrvoje Jasak founded the consulting company Wikki Ltd [12] and maintained a fork of OpenFOAM called openfoam-extend, later renamed to foam-extend.
On 8 August 2011, OpenCFD was acquired by Silicon Graphics International (SGI).[13] On 12 September 2012, the ESI Group announced the acquisition of OpenCFD Ltd and the OpenFOAM trademark from SGI.[14]
In 2014, Weller and Greenshields left the ESI Group, and founded the CFD Direct Ltd,[15] and forked the official OpenFOAM version on behalf of the OpenFOAM Foundation. OpenFOAM Foundation whose directors are Henry Weller, Chris Greenshields, and Cristel de Rouvray (the CEO of the ESI Group) handed the maintenance of the OpenFOAM-Foundation fork to the CFD Direct.
The following figure summarises the chronological and common development of the main three variants of OpenFOAM software, whereat the arrows show the directions of functionality transfers, namely:
- The official OpenFOAM (trademark) version mainly developed and maintained by ESI-OpenCFD Ltd. with a date-of-release identifier (e.g. v1906),
- The OpenFOAM-Foundation fork mainly maintained by CFD Direct Ltd. sequence based identifier (e.g. 6.0),
- The FOAM-Extend Project fork mainly maintained by Wikki Ltd..

Distinguishing features
Syntax
One distinguishing feature of OpenFOAM is its syntax for tensor operations and partial differential equations that closely resembles the equations being solved. For example,[16] the equation
is represented by the code
solve
(
fvm::ddt(rho,U)
+ fvm::div(phi,U)
- fvm::laplacian(mu,U)
==
- fvc::grad(p)
);
This syntax, achieved through the use of object-oriented programming and operator overloading, enables users to create custom solvers with relative ease. However, code customization becomes more challenging with increasing depth into the OpenFOAM library, owing to a lack of documentation and heavy use of template metaprogramming.
Extensibility
Users can create custom objects, such as boundary conditions or turbulence models, that will work with existing solvers without having to modify or recompile the existing source code. OpenFOAM accomplishes this by combining virtual constructors with the use of simplified base classes as interfaces. As a result, this gives OpenFOAM good extensibility qualities. OpenFOAM refers to this capability as run-time selection.[17]
Structure of OpenFOAM
OpenFOAM is constituted by a large base library, which offers the core capabilities of the code:
- Tensor and field operations
- Discretization of partial differential equations using a human-readable syntax
- Solution of linear systems[18]
- Solution of ordinary differential equations[19]
- Automatic parallelization of high-level operations
- Dynamic mesh[20]
- General physical models
The capabilities provided by the library are then used to develop applications. Applications are written using the high-level syntax introduced by OpenFOAM, which aims at reproducing the conventional mathematical notation. Two categories of applications exist:
- Solvers: they perform the actual calculation to solve a specific continuum mechanics problem.
- Utilities: they are used to prepare the mesh, set-up the simulation case, process the results, and to perform operations other than solving the problem under examination.
Each application provides specific capabilities: for example, the application called blockMesh is used to generate meshes from an input file provided by the user, while another application called icoFoam solves the Navier–Stokes equations for an incompressible laminar flow.
Finally, a set of third-party packages are used to provide parallel functionality (OpenMPI) and graphical post-processing (ParaView).
Capabilities

OpenFOAM solvers include:[26]
- Basic CFD solvers
- Incompressible flow with RANS and LES capabilities[27]
- Compressible flow solvers with RANS and LES capabilities[28]
- Buoyancy-driven flow solvers[29]
- DNS and LES
- Multiphase flow solvers[30]
- Particle-tracking solvers
- Solvers for combustion problems[31]
- Solvers for conjugate heat transfer[32]
- Molecular dynamics solvers[33]
- Direct simulation Monte Carlo solvers[34]
- Electromagnetics solvers[35]
- Solid dynamics solvers[36]
In addition to the standard solvers, OpenFOAM syntax lends itself to the easy creation of custom solvers.
OpenFOAM utilities are subdivided into:
- Mesh utilities
- Mesh generation: they generate computational grids starting either from an input file (blockMesh), or from a generic geometry specified as STL file, which is meshed automatically with hex-dominant grids (snappyHexMesh)
- Mesh conversion: they convert grids generated using other tools to the OpenFOAM format
- Mesh manipulation: they perform specific operations on the mesh such as localized refinement, definition of regions, and others
- Parallel processing utilities: they provide tools to decompose, reconstruct and re-distribute the computational case to perform parallel calculations
- Pre-processing utilities: tools to prepare the simulation cases
- Post-processing utilities: tools to process the results of simulation cases, including a plugin to interface OpenFOAM and ParaView.
- Surface utilities
- Thermophysical utilities
License
OpenFOAM is free and open-source software, released under the GNU General Public License version 3.[37]
Advantages and disadvantages
Advantages
- Friendly syntax for partial differential equations
- Fully documented source code[38]
- Unstructured polyhedral grid capabilities
- Automatic parallelization of applications written using OpenFOAM high-level syntax
- Wide range of applications and models ready to use
- Commercial support and training provided by the developers
- No license costs
Disadvantages
- The development community suffers from fragmentation, giving rise to numerous forked projects.
- Absence of an integrated graphical user interface (stand-alone open-source and proprietary options are available)
- The Programmer's guide does not provide sufficient details, making the progress slow if you need to write new applications or add functionality
GUI and software tools integrated with OpenFOAM
- FEATool Multiphysics[39] A physics simulation toolbox and GUI for MATLAB.
- HELYX-OS[40]
- iconCFD[41]
- InsightCAE[42] is an open source project for creating automated simulation workflows which can be controlled from a GUI ("vertical apps"). OpenFOAM is supported as the primary backend for CFD simulations.
- MantiumFlow[43] - a CLI and GUI tool which automates CFD pre and post-processing, turning simulations into Apps ("vertical apps").
- SimFlow[44]
- SimScale[45]
- simulationHub[46] - online platform with automated cloud based CFD Apps ("vertical apps"), specifically developed for Design engineer
- SwiftBloc[47] and SwiftSnap[48]
- Visual-CFD[49] is an advanced, intelligent environment for OpenFOAM including Pre and Post modules with process Automation/Customization features
- preCICE[50] is an open-source coupling library for partitioned multi-physics simulations.
See also
- ParaView an open-source multiple-platform application for interactive scientific visualization
References
- ^ "The open source CFD toolbox". OpenFOAM.
{{cite web}}
: Unknown parameter|deadurl=
ignored (|url-status=
suggested) (help) - ^ "CFD Direct - The Architects of OpenFOAM". CFD Direct. Archived from the original on 27 March 2015.
{{cite web}}
: Unknown parameter|deadurl=
ignored (|url-status=
suggested) (help) - ^ "Wikki Ltd".
- ^ "OpenFOAM Version 1.0". Archived from the original on 7 June 2017.
{{cite web}}
: Unknown parameter|deadurl=
ignored (|url-status=
suggested) (help) - ^ "Release History - OpenFOAM".
{{cite web}}
: Unknown parameter|deadurl=
ignored (|url-status=
suggested) (help) - ^ "OpenFOAM® History".
{{cite web}}
: Unknown parameter|deadurl=
ignored (|url-status=
suggested) (help) - ^ OpenCFD. "OpenFOAM® - Official home of The Open Source Computational Fluid Dynamics (CFD) Toolbox". www.openfoam.com. Archived from the original on 22 September 2016.
{{cite web}}
: Unknown parameter|deadurl=
ignored (|url-status=
suggested) (help) - ^ "Original OpenFOAM authors". CFD-Online. Retrieved 28 June 2019.
- ^ Chen, Goong; Xiong, Qingang; Morris, Philip J.; Paterson, Eric G.; Sergeev, Alexey; Wang, Yi-Ching (2014). "OpenFOAM for Computational Fluid Dynamics". Notices of the American Mathematical Society. 61 (4): 354–363. doi:10.1090/noti1095.
- ^ "OpenFOAM". CFD-Online. Retrieved 28 June 2019.
- ^ Greenshields, Chris (3 April 2016). "Release History". openfoam.org. Archived from the original on 29 July 2017.
{{cite web}}
: Unknown parameter|deadurl=
ignored (|url-status=
suggested) (help) - ^ "Wikki Ltd - About Us".
{{cite web}}
: Unknown parameter|deadurl=
ignored (|url-status=
suggested) (help) - ^ "Press Releases: SGI Acquires OpenCFD Ltd., the Leader In Open Source Computational Fluid Dynamics (CFD) Software". SGI. Archived from the original on 6 December 2012. Retrieved 18 December 2012.
{{cite web}}
: Unknown parameter|deadurl=
ignored (|url-status=
suggested) (help) - ^ "Acquisition of OpenCFD Ltd., The leader in Open Source software in Computational Fluid Dynamics". ESI Group. 11 September 2012. Archived from the original on 6 December 2012. Retrieved 18 December 2012.
{{cite web}}
: Unknown parameter|deadurl=
ignored (|url-status=
suggested) (help) - ^ "OpenFOAM". CFD Direct. 25 March 2015. Archived from the original on 29 March 2015.
{{cite web}}
: Unknown parameter|deadurl=
ignored (|url-status=
suggested) (help) - ^ "OpenFOAM Features - CFD Direct". openfoam.org. Archived from the original on 2 April 2015.
{{cite web}}
: Unknown parameter|deadurl=
ignored (|url-status=
suggested) (help) - ^ OpenFOAM's run-time selection mechanism explained Archived 8 January 2014 at the Wayback Machine
- ^ "OpenFOAM Features - CFD Direct". openfoam.org. Archived from the original on 2 April 2015.
{{cite web}}
: Unknown parameter|deadurl=
ignored (|url-status=
suggested) (help) - ^ "OpenFOAM Features - CFD Direct". openfoam.org. Archived from the original on 2 April 2015.
{{cite web}}
: Unknown parameter|deadurl=
ignored (|url-status=
suggested) (help) - ^ "OpenFOAM Features - CFD Direct". openfoam.org. Archived from the original on 27 March 2015.
{{cite web}}
: Unknown parameter|deadurl=
ignored (|url-status=
suggested) (help) - ^ "OpenFOAM v5 User Guide: 7.3 Transport/rheology models". cfd.direct. 2 March 2017. Archived from the original on 19 March 2016.
{{cite web}}
: Unknown parameter|deadurl=
ignored (|url-status=
suggested) (help) - ^ "OpenFOAM v5 User Guide: 7.1 Thermophysical models". cfd.direct. 2 March 2017. Archived from the original on 19 March 2016.
{{cite web}}
: Unknown parameter|deadurl=
ignored (|url-status=
suggested) (help) - ^ "Turbulence Modelling - OpenFOAM - CFD Direct". cfd.direct. Archived from the original on 9 August 2016.
{{cite web}}
: Unknown parameter|deadurl=
ignored (|url-status=
suggested) (help) - ^ "OpenFOAM Features - CFD Direct". openfoam.org. Archived from the original on 2 April 2015.
{{cite web}}
: Unknown parameter|deadurl=
ignored (|url-status=
suggested) (help) - ^ "OpenFOAM Features - CFD Direct". openfoam.org. Archived from the original on 2 April 2015.
{{cite web}}
: Unknown parameter|deadurl=
ignored (|url-status=
suggested) (help) - ^ "OpenFOAM Features - CFD Direct". openfoam.org. Archived from the original on 21 March 2015.
{{cite web}}
: Unknown parameter|deadurl=
ignored (|url-status=
suggested) (help) - ^ "OpenFOAM Features - CFD Direct". openfoam.org. Archived from the original on 2 April 2015.
{{cite web}}
: Unknown parameter|deadurl=
ignored (|url-status=
suggested) (help) - ^ "OpenFOAM Features - CFD Direct". openfoam.org. Archived from the original on 2 April 2015.
{{cite web}}
: Unknown parameter|deadurl=
ignored (|url-status=
suggested) (help) - ^ "OpenFOAM Features - CFD Direct". openfoam.org. Archived from the original on 2 April 2015.
{{cite web}}
: Unknown parameter|deadurl=
ignored (|url-status=
suggested) (help) - ^ "Multiphase Flows - OpenFOAM - CFD Direct". cfd.direct. Archived from the original on 9 August 2016.
{{cite web}}
: Unknown parameter|deadurl=
ignored (|url-status=
suggested) (help) - ^ "OpenFOAM Features - CFD Direct". openfoam.org. Archived from the original on 2 April 2015.
{{cite web}}
: Unknown parameter|deadurl=
ignored (|url-status=
suggested) (help) - ^ "OpenFOAM Features - CFD Direct". openfoam.org. Archived from the original on 2 April 2015.
{{cite web}}
: Unknown parameter|deadurl=
ignored (|url-status=
suggested) (help) - ^ "OpenFOAM Features - CFD Direct". openfoam.org. Archived from the original on 2 April 2015.
{{cite web}}
: Unknown parameter|deadurl=
ignored (|url-status=
suggested) (help) - ^ "OpenFOAM Features - CFD Direct". openfoam.org. Archived from the original on 2 April 2015.
{{cite web}}
: Unknown parameter|deadurl=
ignored (|url-status=
suggested) (help) - ^ "OpenFOAM Features - CFD Direct". openfoam.org. Archived from the original on 2 April 2015.
{{cite web}}
: Unknown parameter|deadurl=
ignored (|url-status=
suggested) (help) - ^ "OpenFOAM Features - CFD Direct". openfoam.org. Archived from the original on 2 April 2015.
{{cite web}}
: Unknown parameter|deadurl=
ignored (|url-status=
suggested) (help) - ^ Greenshields, Chris (28 April 2016). "Free Software Licence". openfoam.org. Archived from the original on 9 June 2012.
{{cite web}}
: Unknown parameter|deadurl=
ignored (|url-status=
suggested) (help) - ^ "OpenFOAM: Free, Open Source Software from the OpenFOAM Foundation". cpp.openfoam.org.
- ^ "FEATool 1.8 with OpenFOAM MATLAB CFD GUI Integration". featool.com. Retrieved 18 May 2018.
- ^ "HELYX-OS GUI for OpenFOAM | ENGYS". engys.com. Retrieved 15 January 2018.
- ^ Administrator. "Setup: iconCFD Process". iconcfd.com. Retrieved 15 January 2018.
- ^ "Open Source Engineering Software - silentdynamics". silentdynamics. Retrieved 7 June 2018.
- ^ "CFD simulation software using OpenFOAM® made as simple as possible". MantiumFlow. Retrieved 27 August 2018.
- ^ "simFlow CFD Software - OpenFOAM® GUI". simFlow CFD. Retrieved 15 January 2018.
- ^ "Open Source Solvers Integrated with SimScale". SimScale. Retrieved 15 January 2018.
- ^ "Components used in simulationHub". Retrieved 7 April 2019.
- ^ "Contrib/SwiftBlock - OpenFOAMWiki". openfoamwiki.net. Retrieved 15 January 2018.
- ^ "Contrib/SwiftSnap - OpenFOAMWiki". openfoamwiki.net. Retrieved 15 January 2018.
- ^ "Visual-CFD for OpenFOAM®". openfoam.com. Retrieved 5 May 2018.
- ^ "preCICE". Retrieved 24 March 2019.
External links
Official resources
- OpenFOAM Foundation website
- OpenFOAM Trademark website
- Download OpenFOAM-Foundation variant
- Download OpenFOAM-Trademark variant
- OpenFOAM-Foundation documentation
- OpenFOAM-Trademark extended code documentation
- OpenFOAM-Foundation bug-reporting system
- OpemFOAM-Trademark bug-reporting system
Community resources
- OpenFOAM Forum at CFD Online
- OpenFOAM wiki
- A Blog about OpenFOAM in Chinese
- OpenFOAM tutorials by Holzmann CFD
- PhD course in CFD with OpenSource Software