The course is meant for PhD students at TU Delft who intend to use OpenFOAM in their project. It is assumed that the students have a basic experience in using Linux, functional programming and OpenFOAM. Such basic experience may be sufficient for industrial usage and MSc work. Research on PhD level however most of the time requires a much deeper understanding of the object-oriented structure of OpenFOAM. It may be difficult for PhD students to acquire this higher level of understanding by their own, without losing much of their project time. The purpose of the course is to give the students the knowledge needed to investigate, read and understand the code, as well as to do the modifications needed for a specific project. That includes efficient Linux usage, object orientation in C++, compilation procedures and linking, development of OpenFOAM solvers utilities and libraries, and specific OpenFOAM name conventions and syntax that is helpful for understanding the code. We will also discuss work procedures, code documentation and maintenance, debugging, bug-reporting, and contributions to the upstream version.

It should be noted that this is not a course in fluid dynamics, CFD or the finite volume method, which it is assumed that the students are already familiar with. It is also not a basic course in OpenFOAM usage, which is a required prerequisite knowledge. The focus is on aspects that are most commonly holding back students from efficiently using, understanding and developing OpenFOAM.

Contents (subject to some updating)

Learning outcomes

After the course the students should be able to

About OpenFOAM

OpenFOAM ( is an object-oriented C++ toolbox for solving various systems of partial differential equations using the finite volume method on arbitrary control volume shapes and configurations. It includes preprocessing (grid generator, converters, manipulators, case setup), postprocessing (using OpenSource Paraview), and many specialized CFD solvers. The features in OpenFOAM are comparable to what is available in the major proprietary CFD codes. Some of the more specialized features that are included in OpenFOAM are: sliding grid, moving meshes, two-phase flow (Langrange, VOF, Euler-Euler) and fluid-structure interaction. The strength of OpenFOAM is however the object-oriented approach to generating specialized solvers, utilities and libraries, using a flexible set of C++ modules. OpenFOAM runs in parallel using automatic/manual domain decomposition, and the parallelism is integrated at a low level so that solvers can generally be developed without the need for any parallel-specific coding. Due to the distribution as an open source code it is possible to gain control over the exact implementations of the features, which is essential in research work in terms of transparency and reproducibility. It also makes development and tailoring of the code for the specific application possible. In addition to the source code, OpenFOAM gives access to an international community of OpenFOAM researchers. It provides a global platform for collaboration and sharing of knowledge and specific implementations.

OPENFOAM®  is a registered trade mark of OpenCFD Limited, producer and distributor of the OpenFOAM software.


Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.