This guide accompanies the release of version 1.5 of
the Open Source Field Operation and Manipulation (OpenFOAM) C++ libraries.
It provides a description of the basic operation of OpenFOAM, first through a set
of tutorial exercises in 2 and later by a more detailed description of the individual
components that make up OpenFOAM.
OpenFOAM is first and foremost a C++ library, used primarily to create
executables, known as applications. The applications fall into two categories:
solvers, that are each designed to solve a specific problem in continuum
mechanics; and utilities, that are designed to perform tasks that involve data
manipulation. The OpenFOAM distribution contains numerous solvers and
utilities covering a wide range of problems, as described in 3.
One of the strengths of OpenFOAM is that new solvers and utilities can be
created by its users with some pre-requisite knowledge of the underlying method,
physics and programming techniques involved.
OpenFOAM is supplied with pre- and post-processing environments. The
interface to the pre- and post-processing are themselves OpenFOAM utilities,
thereby ensuring consistent data handling across all environments. The overall
structure of OpenFOAM is shown in 1.1.
Figure 1.1:
Overview of OpenFOAM structure.
The pre-processing and running of OpenFOAM cases is described in 4 In 5, we
cover both the generation of meshes using the mesh generator supplied with
OpenFOAM and conversion of mesh data generated by third-party products.
Post-processing is described in 6.
During the development of OpenFOAM, some features are inevitably
discontinued but it may be that some users attempt to maintain those features in
their personal modified versions of OpenFOAM. Documentation relating to such
features is not maintained but can be found in appendices to this guide. In
particular documentation relating to FoamX, discontinued in version 1.5, can be
found in A.