MSc/PhD course in CFD with OpenSource software, 2012

Basic information

The course homepage is . If you intend to make a link to something at the homepage, please add the year to the address, such as OS_CFD_2012. If you are not attending the course, but find the homepage useful, please write me a couple of words that help me argue that this way of working is acknowledged.

The course is open to master students at the two master programmes at Applied Mechanics (Applied Mechanics, and Vehicle Engineering), and PhD students enrolled anywhere.

Other interested should contact me at for information regarding industrial alternatives, or just to be put in a mail list that is used for information regarding courses and conferences related to OpenSource CFD.

Some notes for students at the master programmes Applied Mechanics, and Vehicle Engineering: You will take this course under course code TME050, which means that you will be graded U/3/4/5. It also means that you can not use that course code for any other course, or if you have already used that course code you can not take this course. Talk to the student administration to make sure that you can take the course. Please see the formal syllabus of TME050.

If you are interested in taking the course you should contact me at so that I can maintain an e-mail list that will be used for further information until the course starts. Getting closer to the start of the course I will ask for a verification (registration) that you will take the course for sure.

Prerequisites and preparations

·         Time: You should make sure that you have time to take the course. It is very intense the first three weeks, with two full days per week, and assignments for the next week. After that you have about four weeks to do a complete project, and then you should review the work by another student. You should spend at least 20h per week in average from start to end of the course. Don’t underestimate the work required!

·         Fluid Dynamics and CFD: You should have a background in Fluid Dynamics, and ideally some CFD experience and/or a course in CFD.

·         Project: You should be able to identify a suitable project that fulfils the requirements of this course, and that you are able to complete in the available time. It is beneficial if it is related to a project you are anyway doing, or planning to do (PhD project/Master project etc.), since it will be more useful to you and you will put more effort into it. We will of course discuss the project before you start doing it.

·         Linux: The course requires you to have a basic knowledge in Linux. In order to be able to follow the lectures, you should make sure that you understand and can use the basic Linux commands presented at the link below. You need to have that knowledge in order to follow already the first lecture.

·         Software: It is HIGHLY recommended that you make sure that you can run Linux and OpenFOAM from your own laptop. See instructions at the link below. We should have access to a computer lab with OpenFOAM installed, during the lectures and presentations, and you can try to find a seat there whenever it is not booked (or work from your FoDat computer if you have access to that, or remotely on one of our servers). On the other hand, you will gain more knowledge and freedom if you learn to install Linux and OpenFOAM yourself. We will not go through the installation procedures during the course, so you must do it before arriving.


Install Ubuntu 12.04 LTS, OpenFOAM-2.1.x, OpenFOAM-1.6-ext etc. on your own laptop

How to run OpenFOAM at Chalmers, physically or remotely

How to run OpenFOAM from a USB iso

Miscellaneous tips and tricks (advanced raw information, mainly for myself)

Basic Linux commands


The course gives an introduction to the use of OpenSource software for CFD applications. It has a strong focus on how to efficiently use the Linux operating system and different softwares that are useful for CFD (to the largest extent OpenFOAM, see the short description below), rather than having a focus on teaching the basics of CFD or fluid dynamics. A major project work in OpenFOAM forms a large part of the course. The project may be defined according to the student's special interests. The result of the project should be a detailed tutorial for a specific application or library of OpenFOAM. The tutorials will be peer-reviewed by the students, and the tutorials thus form a part of the course. The tutorials will be made available, as a contribution to the OpenFOAM community. To pass the course the student must do the project and peer-review a tutorial from another project. There will also be some compulsory minor tasks.

The students will learn on the following subjects:

Other software that may be of interest, but are not covered: salome, freecad, blender, engrid, cubit, visit

OpenFOAM (Open Field Operation and Manipulation, is developed and distributed by OpenCFD ( 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 are implemented. The features in OpenFOAM are comparable to what is available in the major commercial 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 OpenSource code it is possible to gain control over the exact implementations of different features, which is essential in research work. 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 through the discussion board at the OpenFOAM home page.

Schedule and Contents

§  Syllabus

§  Access to computers and OpenFOAM

§  OpenFOAM applications and case setup

§  paraFoam tutorial, Optional: Slides from OFW6 training, accompanying files

§  Find solver and utility tutorials in the source code, and learn how to use them

§  Some utility and functionObject tutorials (your assignment will help improving this part)

§  Start to work on assignment, with supervision (see link below)

§  Compulsory assignment to be handed in by September 9

§  LaTeX/Beamer slide template tar-file
Note that it is not required to use LaTeX/Beamer, but it is a nice experience.
The template should at least work in the Chalmers system.

§  Student contributions:
Selected by quality:
Klas Jareteg
Ardalan Javadi
Gabriel D Bousquet
Simon Törnros
Tian Tang
The rest:
Florian Vesting
Guilherme Moura Paredes   utility
Hamed Jamshidi
Maaike Van Der Tempel
Mengmeng Zhang
Mostafa Payandeh
Nina Gall Jørgensen
Tay Ken
Alvin TS
Shayan Rahat

§  Source code and binary file directory organization

§  High level programming in OpenFOAM

§  High-level implementation of an electromagnetic solver (By Margarita Sass-Tisovskaya)
The rodFoam solver
The rodFoamCase case

§  Add a scalar transport equation to icoFoam

§  Basics of C++, and how it is used in OpenFOAM

§  Basics of C++ continued

§  A look inside icoFoam

§  Copy and compile a turbulence model, and a deeper look at kOmegaSST (and kOmegaSSTF)
Code for kOmegaSSTF
Optional: Link to Pirooz’ licentiate thesis, and a description of turbulence models in OpenFOAM
Optional: Link to Martin’s master thesis, and a description of DES models in OpenFOAM

§  Copy and compile a boundary condition, and a deeper look at parabolicInlet

§  A look at oscillatingFixedValue, to prepare for homework (see code)

§  Compulsory assignment to be handed in by September 16
Sparse guidelines for rampedFixedValue
Additional material:

§  Some lecture notes from the Fourth OpenFOAM Workshop
(find the part about implementing the rampedFixedValue BC. Please note that this description is for another version of OpenFOAM, so you should not modify the definitions of the constructors etc. Just see it as a general guidance on how to do it. Don’t copy/paste – it will not work!)

§  LPT with the solidParticle and solidParticleCloud classes (local instructions, local solidParticleFoam-2.*)

§  Extension of the solidParticle and solidParticleCloud classes (OF16ext), Files, by Jelena Andric

§  Debugging in three ways

§  Setting up a case from scratch with pyFoam

§  Advanced usage: Turbomachinery (incompressible flow in rotating machines) turboPassageRotating2D

§  Compulsory project work to be handed in by October 19!
Hand in intermediate draft, including project description, September 28!!!
Example of project description
LaTeX report template (originated from Per Carlsson, 2008.
Compile the tex file with latex or pdflatex. NOTE: output directly to pdf!)
Report front page

§  Ardalan Javadi: An Unsteady-Periodic Flow generated by an Oscillating Moving Mesh. Slides Report Files

§  Maaike Van Der Tempel: A chtMultiRegionSimpleFoam tutorial. Slides Report Code Case1 Case2

§  Gabriel Bousquet: Simulation of Large and Complex Motions Using the GGI Interface. Slides Report Files wingMotionMovie ggiDyMMovie moviePart2 moviePart3

Did not present:

§  Tay Ken: Implementation of 2-part SGS eddy-viscosity model for Atmospheric Boundary Layer Simulation

§  Shayan Rahat: Spray combustion based on reactingFoam and the counterFlowFlame2D tutorial

Student reports/tutorials

Here the final, peer-reviewed, student reports/tutorials are listed.

·         Florian Vesting: Implementation for lifting line propeller representation. Slides Report Files Movie1 Movie2

·         Tian Tang: Implementation of solid body stress analysis in OpenFOAM. Slides Report Files

·         Johannes Palm: Connecting OpenFOAM with Matlab. Slides Report Files

·         Hamed Jamshidi: Combination of MRFsimpleFoam and conjugateHeatFoam. Slides Report Code Case

·         Mostafa Payandeh: Descriptions of viscosity models and temperature dependent viscosity model. Slides Report Solver Class Case

·         Guilherme Moura Paredes: Application of dynamic meshes to potentialFreeSurfaceFoam to solve for 6DOF floating body motions. Slides Report Code Case

·         Ayyoob Zarmehri: Implement the correlation-based gamma-Re_theta transition model Slides Report Code Case

·         Nina Gall Jørgensen: Implementation of a turbulent inflow boundary condition for LES based on a vortex method. Slides Report Code Case

·         Anonymous Student: Generate a wake field using volume forces. Slides Report Code Case

·         Klas Jareteg: Block-coupled calculations in OpenFOAM. Slides Report Code Case

Project suggestions

Project suggestions may be listed here (or see the 2010 course), but you are encouraged to work in your own PhD/Master project, with a twist to make it appropriate in the current course.


There is no requirement to buy any book. You have to find the information you need to solve your project and the tasks.

The C++ part of the course is based on C++ Direkt, by Jan Skansholm, Studentlitteratur, which is in Swedish. Any introductory C++ book should be fine. Anyone who is doing CFD is recommended to have the introductory book on CFD by Versteeg and Malalasekera. Another useful book is J.H. Ferziger and M. Peric Computational Methods for Fluid Dynamics 3rd ed. Springer 2002. Some useful references:

1.      C++ how to Program by Paul and Harvey Deitel, Current version is 8 but older versions will also work fine.

2.      Object Oriented Programming in C++ by Robert Lafore , 4th Edition

3.      C++ from the Beginning by Jan Skansholm (should be a very good book for a complete basic programming newbie.)

4.      Free on-line book on C-programming in Linux (I haven't checked it)

5.      C++ tutorial

6.      Free on-line text book in CFD (I haven't checked it)              Accompanying exercise book

Useful links

1.      OpenFOAM Workshops (mirror)

2.      Documents related to OpenFOAM, collected by Professor Hrvoje Jasak.

3.      Training at OFW6

4.      Some small mesh generation tools

5.      Another similar course

More information

See the homepages of the course given 2007, 2008, 2009, 2010 and 2011 for more information. The course for 2012 will develop from the one given in 2011. You can also contact me at

Master Thesis propositions


For those of you travelling to Chalmers, here are some suggested hotels:
SGS Veckobostäder - This is a student-apartment-like alternative (~10min walking)

Quality Hotel Panorama – This is located closest to Chalmers (~5min walking). Ask for special price since you are visiting Chalmers.


List of hotels close to Chalmers (ask for special price, for those in 1-3, since you are visiting Chalmers):

1.Normal standard:
City Hotel
Hotel Royal
Hotel Vasa AB
Hotel Flora AB
2. High standard:
Quality Hotel Panorama
Hotel Opalen
Hotell Liseberg Heden
Hotel Novotel
Grand Hotel Opera AB
Hotel Riverton AB
3. Very high standard:
Hotel Avalon
Elite Plaza Hotel
Cheap alternatives:
Youth Hostel Stigbergsliden
Hotel Nice B&B
5. Other:
Info from go:teborg&company
More hotels

Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: free counters