MSc/PhD course in CFD with OpenSource software, 2010
Also, have a look at the homepages of the previous
years: 2009, 2008, 2007
Basic information
The course homepage is http://www.tfd.chalmers.se/~hani/kurser/OS_CFD
The course is open to
master students at the two master programmes at
Applied Mechanics (Solid and Fluid dynamics, and Vehicle Engineering), and PhD
students enrolled anywhere. Anyone who doesn’t belong to any of those groups
must pay a fee of SEK 10000 to cover the faculty financing we don’t get in that
case.
Some notes for students at
the master programmes Solid and Fluid dynamics, and
Vehicle Engineering: You will take this course under course code TME205, 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. Further, make sure that you will not register for
more credits than the total credits of your programme
(plan your coming courses and master thesis project!!!). We are not allowed to
examine more credits than that, which would mean that you are not allowed to
take the course. Slightly complicated, but those are rules set up by Chalmers,
in accordance with decisions taken by the Swedish government. Please see the
formal syllabus of TME205.
If you are interested in
taking the course you should contact me at hani@chalmers.se 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
·
You should have a background in
Fluid Dynamics, and ideally some CFD experience and/or a course in CFD.
·
The course contains a lot of Linux
and C++ programming. 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.
·
It seems like we will not have
access to a computer lab during the course, which means that it is HIGHLY
recommended that you make sure that you can run OpenFOAM
from your own laptop. See instructions at the link below.
Install Ubuntu 10.04 LTS, OpenFOAM-1.7.x, and
OpenFOAM-1.5-dev on your own laptop
Basic
Linux commands
Syllabus
The course gives an introduction to the use of OpenSource software for CFD applications. A major project
work in OpenFOAM (see the short description below)
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 and graded by the students, and the
tutorials thus form a part of the course. The tutorials will be made available
as OpenSource, as a contribution to the OpenFOAM community. To pass the course the student must do
the project and peer-review the tutorials from the other projects. There will
also be some compulsory minor tasks.
The students will learn on
the following subjects:
- CFD
- Linux
- OpenFOAM
- C++
- Doxygen
- Compilation procedures
- Debugging
- Version Control Systems
- Paraview
- VTK
- Gnuplot
- m4
- sed
- Python
- Writing
reports (in this case a tutorial)
- Peer-reviewing reports
- Teach
a tutorial in the form of a small workshop
- ...
OpenFOAM (Open Field Operation and
Manipulation, www.openfoam.com) is developed and
distributed by OpenCFD (http://www.opencfd.co.uk). 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 Preliminary Contents
- First
occasion
Workshop/Lecture
These first two days will focus on how to use OpenFOAM
and paraFoam
tar xzf slides_template.tgz
cd slides_template
latex slides_template
xdvi -paper a4r slides_template
dvipdf slides_template
acroread slides_template.pdf
Student contributions:
- Second
occasion
Workshop/Lecture
These second two days will focus on how to modify OpenFOAM
- Wednesday,
8/9, 9.15-17, Room ML11
- Thursday,
9/9, 9.15-17, Room MB
Student contributions:
- Third
occasion
Workshop/Lecture/Supervision
These two days will focus on other useful tools, and supervision of
project work
- Wednesday,
15/9, 9.15-17, Room ML11
- Debugging in three ways (based on material from
Dr.Fabian Peng-Kärrholm,
2007)
- Code development using Subversion
- Setting up a case from scratch with pyFoam (a user contribution, coupling Python
with OpenFOAM)
pyFoamSimpleElbowSetup
- Python
Scripting for Gluing CFD Applications: A Case Study Demonstrating
Automation of Grid Generation, Parameter Variation,Flow
Simulation, Analysis, and Plotting by Eric Paterson.
PythonScriptingSlides,
Report, Files, Book
- Installation
and compilation issues (based on the installation link above), and a deeper look
at:
etc/bashrc
etc/settings.sh
wmake (libso)
wclean (lib)
wclean{AlmostAll,
Machine, All, LnIncludeAll}
rmdepall
- Compulsory project work to be handed in through
Subversion by October 16!
Hand in intermediate version through Subversion, including project
description, September 28!!!
Example of project description
LaTeX report
template (by Per Carlsson, 2008. NOTE:
output directly to pdf!)
Supervision through Subversion, at /chalmers/groups/am-kurs-os2010
- Thursday,
16/9, 9.15-17, Room MB
- Supervision
of project work. Minimal/no additional material.
- Fourth
occasion
Project presentations (and perhaps guest presentations)
- Monday
18/10 and Tuesday 19/10, 9.15-17.00 , Room EL41 (Map
to Maskingränd 2, and EL41 – 4th
floor)
The code and cases should at least work for OF-1.5-dev, OF-1.6.x, or
OF-1.7.x (state which on the front page of your report and on the first
slide) on the student computers in the Mechanical Engineering building at
Chalmers, at the time of the presentation days of this course. The
preliminary files (slides/code/cases) are distributed here:
- All
have been updated and moved to the next section below
Student reports/tutorials
Here the final, peer-reviewed, student
reports/tutorials are listed. The code and cases should work for OF-1.5-dev,
OF-1.6.x, or OF-1.7.x
on the student computers in the Mechanical Engineering building at Chalmers, at
the time of the presentation days of this course.
- Erik
Svenning: Implementation of an actuator disk in OpenFOAM.
Report, Slides, Files
- Alireza Javidi:
Implementation of a multi-region solver for electrical welding.
Report, Slides, Files
- Erwin Adi
Hartono: Use the spline functionality in blockMesh to parameterize the shape of a windtunnel, and implement an optimization procedure
using Python, PyFoam and m4.
Report, Slides, Files
- Anton
Persson: Description and implementation of
particle injection in OpenFOAM.
Report, Slides, Files
- Anne
Kösters: Dynamic mesh
refinement in dieselFoam.
Report,
Slides, Files
- Josef Runsten:
Droplet collisions in dieselSpray and
implementations of collisions in solidParticle
Report,
Slides, Files
- Ehsan Yasari:
A tutorial of the premixed turbulent combustion solver (XiFoam).
Report, Slides, Files
- Mattias Olander:
Implement a mesh motion class for simulating the Vigor wave energy converter. This includes mesh motion and free surface flow.
Report, Slides, Files
- Martin
Hammas: Set up a water sprinkler case for the interFoam solver. The water flow should be variable at
the inlet, and some utilities/functionObjects
should be implemented for analyzing the distribution of the water in the
domain.
Report, Slides, Files
- Anton
Berce: Dynamic mesh refinement, based on
solution error.
Report, Slides, Files
- Anders
Rynell: Tutorial of the interTrackFoam
solver.
Report, Slides, Files
- Patrik Andersson:
Tutorial of the
solver, based on damBreak4phase.
Report, Slides
- Johan Pilqvist:
Tutorial of the solver shallowWaterFoam.
Report,
Slides
- Daniel
Grönberg: Patch deformation of a
divergent-convergent nozzle.
Report, Slides, Files, Movie
- Mohammad
Irannezhad: Implement a new inlet boundary
condition that subdivides the inlet into many jets. Also, describe, use,
and possibly modify the advective outlet
boundary condition.
Report, Slides, Files
- Johan
Magnusson: conjugateHeatFoam with explanational tutorial together with a buoyancy driven
flow tutorial and a convective conductive tutorial
Report, Slides, Files
Project suggestions
(Most of these topics have been discussed a lot in the
forum, so it should be possible to find all the answers there)
- Implement
a mesh boundary condition for projecting a patch to a curved surface,
implement a mesh-motion boundary condition for simulating a synthetic jet
actuator for active flow control. Have a look at the work by Eysteinn, 2008. Describe all details of the
implementations. Compare with experimental results. There is a report on the experimental work, by Mohammad El-Alti et al. Preliminary files (will not be made available).
- Implement
an actuator disk that resembles the effect of a rotating geometry, such as
a propeller or a rotating honeycomb (ercoftacConicalDiffuser).
You can start looking at the 'fan' boundary condition. Ask me for a copy
of this, this, this, this and this document, and this and this case. Also see John Bergström's
PhD thesis.
- Imlement a new solidBody
mesh motion class, provide an example and describe it in high detail. See interDyMFoam. Here is a whiskey glass example for 1.4.1-dev and 1.5-dev. If some of the dynamic mesh
classes do not compile, please just comment them out for the moment.
- Implement
a new boundary condition for dynamic meshes, where a patch is projected to
some pre-defined surface. Provide examples, and describe in high detail.
Test different mesh diffusion alternatives. See the work by Pirooz Moradnia 2007, and Eysteinn Helgasson 2008.
- Re-write
my Fluent tutorials in MTF113 Heat Transfer for OpenFOAM,
but more detailed. Note that there is a conjugate heat transfer tutorial
in the development version at sourceForge: Code:
OpenFOAM-1.4.1-dev/applications/solvers/conjugate/conjugateHeatFoam
Tutorial case: OpenFOAM-1.4.1-dev/tutorials/conjugateHeatFoam/conjugateCavity + heatedBlock
- Base
a tutorial on one of the test case descriptions at http://jucri.jyu.fi:
- TA1: A
numerical set-up for benchmarking and optimization of fluid-structure
interaction
- TA2:
Inverse or optimization problems for multiple (ellipse) ellipsoid
configurations
- TA3:
Numerical investigation of two dimensional flow over Darrieus-type
wind turbine
- TA4:
Optimization of beam profile in fluid-structure interaction
- TA5: Shock
control bump optimization on a transonic laminar flow airfoil
- TA6: 3D
Shock Control Bump Optimisation
- TA7:
Maximizing the Performance of SHM Systems by Robust Sensor Network
Optimization
- TA8:
Numerical investigation of 3D flow over Horizontal Axis Wind Turbine NREL
Phase VI
- TA9:
Optimal flow divider
- …
Literature
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. There is also a
lot to find on the Internet, for example:
More information
See the homepages of the course given 2007, 2008 and 2009 for more
information. The course for 2010 will develop from the one given in 2009. You
can also contact me at hani@chalmers.se.
Master Thesis propositions
Design
and build a lab rig, and perform laser measurements, for research on convective
cooling of generators. (talk to Håkan)
The Dellenback OpenFOAM
case-study (talk to Håkan)
Studie av Winter-Kennedy metoden för att bestämma
volymflödet i vattenturbiner
Master Theses at Volvo Technology.