OpenFOAM

OpenFOAM
Developer(s) The OpenFOAM Foundation
Initial release 10 December 2004
Stable release 2.0.1 / 4 August 2011
Operating system Unix/Linux
License GNU General Public License
Website www.openfoam.com

OpenFOAM (Open 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. It is maintained by The OpenFOAM Foundation,[1] which is sponsored by Silicon Graphics International, the owner of the trademark to the name OpenFOAM.

Contents

History

The original development of OpenFOAM started in 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 highest modularity and object oriented features. The predecessor, FOAM, was sold by UK company Nabla Ltd. before being released as open source in 2004.[2] On 15 August 2011, OpenCFD announced its acquisition by Silicon Graphics Inc. (SGi).[3]

OpenFOAM was one of the first major scientific packages written in C++. It has also been the first major general-purpose CFD package to use polyhedral cells.

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 the equation [4]

 \frac{\partial \rho \mathbf{U}}{\partial t} %2B \nabla \cdot\phi\mathbf{U} - \nabla \cdot\mu\nabla\mathbf{U} = - \nabla p

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.

Structure of OpenFOAM

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

Capabilities

OpenFOAM solvers include[13]:

In addition to the standard solvers, OpenFOAM's syntax lends itself to the easy creation of custom solvers.

OpenFOAM utilities are subdivided into:

License

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

Advantages and Disadvantages

Advantages

Disadvantages

Forks and adaptations

Free software

Software available for purchase

Alternative software

Free and open source software

Proprietary software

References

External links

Official Resources

Community resources