From Wikipedia, the free encyclopedia
Jump to: navigation, search
Screenshot OpenFOAM-2.1.x gnome-terminal.png
OpenFOAM running in a terminal
Original author(s) Henry Weller
Developer(s) CFD Direct[1]
Initial release 10 December 2004 (2004-12-10)[2]
Stable release 4.0[3]
Written in C++
Operating system Unix/Linux
Type Computational fluid dynamics, simulation software
License GPLv3

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 code is released as free and open source software under the GNU General Public License. The OpenFOAM name was registered by OpenCFD Ltd[4] in 2007 and non-exclusively licensed to the OpenFOAM Foundation Ltd in 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. In 2004, Henry Weller, Chris Greenshields and Mattijs Janssens founded OpenCFD Ltd to develop and release OpenFOAM.[5] On 8 August 2011, OpenCFD was acquired by Silicon Graphics International (SGI).[6] At the same time, the copyright of OpenFOAM was transferred to the OpenFOAM Foundation, a newly founded, not-for-profit organisation that manages OpenFOAM and distributes it to the general public. On 12 September 2012, the ESI Group announced the acquisition of OpenCFD Ltd from SGI.[7] 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.[8]

Distinguishing features[edit]


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[9]

is represented by the code

   + 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[10]

Structure of OpenFOAM[edit]

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[11]
  • Solution of ordinary differential equations[12]
  • Automatic parallelization of high-level operations
  • Dynamic mesh[13]
  • General physical models
    • Rheological models[14]
    • Thermodynamic models and database[15]
    • Turbulence models[16]
    • Chemical reaction and kinetics models[17]
    • Lagrangian particle tracking methods[18]
    • Radiative heat transfer models
    • Multi-reference frame and single-reference frame methodologies

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 (i.e.OpenMPI) and graphical post-processing (ParaView).


OpenFOAM solvers include:[19]

Simulation of burning Methane. The Graphical user interface is ParaView.
  • Basic CFD solvers
  • Incompressible flow with RANS and LES capabilities[20]
  • Compressible flow solvers with RANS and LES capabilities[21]
  • Buoyancy-driven flow solvers[22]
  • DNS and LES
  • Multiphase flow solvers[23]
  • Particle-tracking solvers
  • Solvers for combustion problems[24]
  • Solvers for conjugate heat transfer[25]
  • Molecular dynamics solvers[26]
  • Direct Simulation Monte Carlo solvers[27]
  • Electromagnetics solvers[28]
  • Solid dynamics solvers[29]

In addition to the standard solvers, OpenFOAM's 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


OpenFOAM is free and open source software, released under the GNU General Public License version 3.[30]

Advantages and disadvantages[edit]


  • Friendly syntax for partial differential equations
  • Fully documented source code [31]
  • 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


  • The development community suffers from fragmentation, giving rise to numerous forked projects, a portion of which are listed in the Forks and adaptations section below.
  • 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 learning curve very steep if you need to write new applications or add functionality

Forks and adaptations[edit]

Free software[edit]

  • blueCFD is a cross-compiled version of OpenFOAM that runs on Windows operating systems, and is derived from OpenFlow. The package also includes additional tools and functionality useful for OpenFOAM. It is produced by blueCAPE.[32]
  • HELYX-OS[33] is an Open Source preprocessing Graphical User Interface (GUI), for meshing and case setup, designed to work with the latest version of OpenFOAM. The GUI is maintained by Engys Ltd[34] using Java+VTK and delivered to the public under the GNU General Public License.
  • OpenFlow is a source code patch developed by Symscape for a cross-compiled distribution of OpenFOAM that runs on Windows operating systems. The OpenFOAM components in blueCFD are derived from the OpenFlow source code.[35]
  • OpenFOAM-extend[36] is maintained by Wikki Ltd.[37] This fork has a large repository of community-generated contributions, much of which can be installed into the official version of OpenFOAM with minimal effort.[38] It is developed in parallel to the official version of OpenFOAM, incorporating its latest versions, although these are released one or two years later.
  • simFlow[39] is a fully integrated GUI, for meshing, case preparation and post processing, distributed also as a free version with online documentation.
  • SwiftBlock[40] is an Open Source preprocessing Graphical User Interface for the OpenFOAM meshing utility blockMesh. SwiftBlock was originally developed by Karl-Johan Nogenmyr[41] and is an add-on to Blender 3D.
  • SwiftSnap[42] is an Open Source preprocessing Graphical User Interface for the OpenFOAM meshing utility snappyHexMesh. SwiftSnap was originally developed by Karl-Johan Nogenmyr[41] and is an add-on to Blender 3D.
  • RheologicRemix[43] are OpenFOAM binaries by Rheologic GmbH[44] compiled for officially unsupported platforms like CentOS and Raspbian (ARM) and have been demonstrated to work on Android and Ubuntu phones[45] and the Raspberry Pi.[46]

Software available for purchase[edit]

  • Caedium is a unified simulation environment produced by Symscape. The Caedium RANS Flow add-on[47] provides a graphical user interface for OpenFOAM case setup, solution steering, and post processing.
  • Ciespace CFD is a web-based modeling and simulation environment produced by Ciespace Corporation.[48] The application includes a graphical user interface front-end for OpenFOAM, pre-processing mesh tools, and a collaborative workflow management system that runs from a web browser.
  • CONSELF CFD on Cloud is a CFD Web Application developed by CONSELF Srl.[49] The application provides an automated workflow that guides the user from Geometry Upload to Results Analysis, passing through straightforward Mesh Generation and CFD setup. It uses OpenFOAM CFD library and can be accessed from any internet connected device. CONSELF CFD makes unlimited CPU power (HPC) and Co-Working space available through every common browser. The entry subscription, WELCOME Plan, is completely free and without limitations.
  • CastNet is a proprietary modelling and simulation environment produced by DHCAE Tools.[50] The application includes a graphical user interface front-end for OpenFOAM.
  • HELYX[51] is a fully integrated software suite with proprietary preprocessing Graphical User Interface (GUI), for meshing and case setup, designed to work with an enhanced version of OpenFOAM that is fully documented, supported, and maintained by Engys Ltd.[34]
  • iconCFD, an industrial branch of OpenFOAM with a custom-built GUI. This software suite is maintained by ICON Technology & Process Consulting Ltd.[52] It was originally developed around automotive applications through collaboration with the Volkswagen Group,[53] and Ford Motor Co.[54] This fork includes community-generated content as well as ICON-specific developments. It has since been developed to handle configuration of general multi-physics cases.
  • simFlow is a fully integrated GUI with meshing, case preparation and post processing capabilities. Supports both Windows and Linux OS.[39]
  • SimScale is a 100% web-based engineering simulation platform integrated with open source solvers including OpenFOAM, Code Aster and CalculiX.[55] A free account option for SimScale is available to all users.
  • Visual-CFD is a proprietary modelling and simulation environment produced by ESI Group.[56] The environment provides GUI for OpenFOAM case setup, workflow process manager and postprocessing.

Alternative software[edit]


  1. ^ CFD Direct Ltd
  2. ^ "OpenFOAM Version 1.0". 
  3. ^ "OpenFOAM Version 4.0". 
  4. ^ OpenCFD homepage
  5. ^ OpenFOAM Release History
  6. ^ "Press Releases: SGI Acquires OpenCFD Ltd., the Leader In Open Source Computational Fluid Dynamics (CFD) Software". SGI. Retrieved 2012-12-18. 
  7. ^ "Acquisition of OpenCFD Ltd., The leader in Open Source software in Computational Fluid Dynamics". ESI Group. 2012-09-11. Retrieved 2012-12-18. 
  8. ^ "OpenFOAM". CFD Direct. 2015-03-25. 
  9. ^ Creating solvers in OpenFOAM
  10. ^ OpenFOAM's run-time selection mechanism explained
  11. ^ Linear system solvers in OpenFOAM
  12. ^ Ordinary differential equation solvers in OpenFOAM
  13. ^ Dynamic mesh in OpenFOAM
  14. ^ Rheological models in OpenFOAM
  15. ^ Thermophysical models in OpenFOAM
  16. ^ Turbulence models in OpenFOAM
  17. ^ Chemical reactions and kinetics models in OpenFOAM
  18. ^ Lagrangian particle tracking in OpenFOAM
  19. ^ OpenFOAM features
  20. ^ OpenFOAM incompressible flow solvers
  21. ^ OpenFOAM Compressible flow solvers
  22. ^ OpenFOAM buoyancy-driven flow solvers
  23. ^ Multiphase flow solvers
  24. ^ OpenFOAM solvers for combustion
  25. ^ OpenFOAM solvers for conjugate heat transfer
  26. ^ OpenFOAM molecular dynamics solvers
  27. ^ OpenFOAM Direct Simulation Monte Carlo solvers
  28. ^ OpenFOAM Electromagnetics solvers
  29. ^ OpenFOAM solid dynamics solvers
  30. ^ OpenFOAM Licensing Page
  31. ^ OpenFOAM C++ Source Guide
  32. ^ blueCAPE's homepage
  33. ^ HELYX-OS Product Homepage
  34. ^ a b Engys Ltd
  35. ^ OpenFlow source code patch
  36. ^ OpenFOAM-extend Project Home Page
  37. ^ Wikki Ltd.
  38. ^ Solvers, Utilities, and Other contributions
  39. ^ a b "simFlow homepage". simFlow CFD. Retrieved 2015-09-08. 
  40. ^ SwiftBlock project homepage
  41. ^ a b Original SwiftSnap and SwiftBlock announcement
  42. ^ SwiftSnap project homepage
  43. ^ Rheologic GmbH download page
  44. ^ Rheologic GmbH
  45. ^ Demonstration site of OpenFOAM under Android and Ubuntu
  46. ^ blog about OpenFOAM on Raspberry Pi
  47. ^ Caedium RANS Flow add-on
  48. ^ Ciespace CFD Product Page
  49. ^ "CONSELF | Consulting by Yourself". Retrieved 2015-12-11. 
  50. ^ DHCAE Tools homepage
  51. ^ HELYX Graphical User Interface
  52. ^ ICON CFD
  53. ^ ICON VWG SAE paper
  54. ^ ICON FORD SAE paper
  55. ^ SimScale company website
  56. ^ Visual-CFD
  57. ^ Advanced Simulation Library Homepage
  58. ^
  59. ^ COOLFluiD homepage
  60. ^ deal.II homepage
  61. ^ "FEATool Multiphysics: Matlab FEM Finite Element Multiphysics Toolbox". Precise Simulation Ltd. Retrieved 20 November 2015. 
  62. ^ Gerris homepage
  63. ^ "Nektar++ – Spectral/hp Element Framework". Retrieved 2016-06-14. 
  64. ^ OpenFVM homepage
  65. ^ SU2 homepage

External links[edit]

Official resources[edit]

Community resources[edit]

Other resources[edit]