![]() OpenFOAM running in a terminal | |
Original author(s) | Henry Weller |
---|---|
Developer(s) | CFD Direct / OpenCFD |
Initial release | 10 December 2004 |
Stable release | v6 / 29 June 2018
v1812 / 20 December 2018 |
Repository | ![]() |
Written in | C++ |
Operating system | Unix/Linux |
Type | Computational fluid dynamics, simulation software |
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, including computational fluid dynamics (CFD).
The software is released as free and open-source software under the GNU General Public License Version 3. OpenFOAM has been released by OpenCFD Ltd. since 2004, the name OpenFOAM was registered as a trademark by OpenCFD Ltd. in 2007 and has been non-exclusively licensed to the OpenFOAM Foundation Ltd since 2011.
OpenFOAM (originally, FOAM) was created by Henry Weller from the late 1980s at Imperial College, London, to develop a more powerful and flexible general simulation platform than the de facto standard at the time, FORTRAN. This led to the choice of C++ as programming language, due to its modularity and object-oriented features. Hrvoje Jasak joined Imperial College as a PhD candidate from 1993 to 1996, developing error estimation and bounded second-order schemes for FOAM. In 2000, Jasak joined forces with Weller in an attempt to commercialize FOAM through the company Nabla Ltd. In 2004, Nabla Ltd folded and Henry Weller, Chris Greenshields and Mattijs Janssens founded OpenCFD Ltd to develop and release OpenFOAM. At the same time, Jasak founded the consulting company Wikki Ltd and maintained the fork openfoam-extend, later renamed to foam-extend.
On 8 August 2011, OpenCFD was acquired by Silicon Graphics International (SGI). At the same time, the copyright of OpenFOAM was transferred to the OpenFOAM Foundation Ltd., a newly founded, not-for-profit organisation established to distribute OpenFOAM. On 12 September 2012, the ESI Group announced the acquisition of OpenCFD Ltd from SGI. In 2014, Weller and Greenshields left ESI Group and continue the development and management of OpenFOAM, on behalf of the OpenFOAM Foundation, at CFD Direct. CFD Direct develops OpenFOAM with a sequence based identifier (e.g. 5.0), whereas ESI-OpenCFD release OpenFOAM with a date-of-release identifier (e.g. v1806).
One distinguishing feature of OpenFOAM is its syntax for tensor operations and partial differential equations that closely resembles the equations being solved. For example, 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.
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.
OpenFOAM is constituted by a large base library, which offers the core capabilities of the code:
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:
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).
OpenFOAM solvers include:
In addition to the standard solvers, OpenFOAM syntax lends itself to the easy creation of custom solvers.
OpenFOAM utilities are subdivided into:
OpenFOAM is free and open-source software, released under the GNU General Public License version 3.