Masters in CFD Solver Development

A combination of courses that will help you to develop your own solver in CFD and also learn more about the different types of solvers

  • Domain : MECHANICAL
Enroll Now View demo

Program Overview

Fluid Mechanics is the branch of physics that deals with the mechanics of fluids and forces acting upon them. CFD is an essential branch of fluid mechanics that helps us understand a fluid’s behaviour by computing and solving equations governing fluid flow. OpenFOAM (for "Open-source Field Operation And Manipulation") is a distinguished software for CFD. It is a toolbox based on the C++ programming language used to develop various numerical customised solvers and pre-/post-processing utilities that are predominantly used for CFD. Major parts of the Engineering design process in industries (Automotive, Aerospace, Chemical, Energy, etc.) are influenced by the CFD simulations, starting from proof of concept to optimization of the product, such companies that use OpenFOAM include GM, Ford, Hyundai, GE, Honeywell, Pratt.


Speak to our technical specialists to understand what is included in this program and how you can benefit from it.

Request a Demo Session

List of courses in this program

1Introduction to CFD using OpenFOAM and Matlab

In this course, you will be involved with MATLAB and OpenFOAM. MATLAB is an interactive programming tool for the computation and solving of various scientific problems. If your interests align with establishing a career, in simulating and optimizing the ways a fluid interacts with different mechanical systems. This course will provide a favourable outcome for you. 

By the end of this course, you will be able to

  • Understand the essential mathematical and theoretical fluid dynamics concepts and how they can be used to optimize a mechanical system.
  • Develop a working knowledge of the MATLAB software by writing scripts, for the basics concepts of CFD. 
  • Create a platform in OpenFOAM that will enable you to start any simulation from scratch and help establish confidence in your results.

2FVM Coding using C++

The term, "Finite volume" confronts the small volume surrounding each node point on a mesh. The Finite Volume Method(FVM), similar yet so different from other FEMs, is an ideal method for complex geometries as it can be formulated to allow unstructured mesh. This method is used in many CFD packages due to the provision of accurate and stable gradients. Therefore, taking part in this course will help you understand Fluid dynamics theory and numerical methods theory.

By the end of this course, you will be able to

  • Apply advanced OOPs concepts for Linear Wave Equation
  • Create a C++ solver for 2D Poisson and Navier Stokes Equation

3Advanced CFD using OpenFOAM

Understanding the basics of fluid study and being able to apply this knowledge using a tool is a skill well sought after and highly required in a CFD Developer. Therefore, you will be working on OpenFOAM, C++, ParaView, meshing and importing geometry from 3rd party software packages in this course.

Further in this course, you will learn about

  • The basics of OpenFOAM with advanced topics included as the course progresses. 
  • Compressible flow problems and programming in OpenFOAM

By the end of this course, you will be able to

  • Properly set up a case
  • Understand how a good mesh is made.
  • Understand the type of solvers they need to choose or make one for themselves, and run a good CFD study.



4Turbulence and RANS Modelling

Turbulence and it’s modelling is the formation and use of a numerical method to predict the effects of turbulence created by a fluid. For solving most real-life turbulent flows, we need to have a strong understanding of the theoretical as well as modelling aspects of turbulent models in CFD simulations, to predict the evolution of turbulence. Therefore, in this course you will learn about basic turbulence theory (Introduction, RANS equations, Shear Flows, Dynamics), Modeling (physical arguments behind various RANS turbulence models like Mixing length, k-epsilon, k-omega, RS models) and have a hands-on experience on both self-developed simple codes and commercial CFD package.

By the end of this course, you will be able to

  • Demonstrate a good level of technical aptitude in this subject and become one step closer to being an expert in the applications of turbulence models in CFD. 
  • Devise flow-component designs based on physical understanding as well as refine and optimize them using a CFD tool. 

5Introduction to OpenFOAM Development

The cutting edge of CFD requires developing new methods and converting new research into code that can be used for a better simulation in the future. OpenFOAM development is very active and presents an entry into the cutting edge of CFD. Moreover, learning software development in CFD is a transferable skill, to those looking to work in the development of any other commercial software. 

In this course, you will be introduced to the basics of developing OpenFOAM, combining a distinctive theory and hands-on approach for familiarity with the source code. 

 By the end of this course, you will be able to

  • Gain valuable perspective into the inner workings of the OpenFOAM code
  • Progress from basic coding skills in C++, to focused CFD development
  • Strengthen every CFD fundamental, and understand software development of OpenFOAM

6 Computational Combustion using Python and Cantera

In this module, you will learn about computational combustion using Python and Cantera. You will understand how combustion is simulated and program some chemical kinetic simulations by yourself.

By the end of this course, you will be able to

  • Compute combustion metrics such as flame speed and ignition delay by performing detailed calculations.
  • Write computer programs to simulate chemical kinetics using the Cantera. 

1. Introduction to CFD using OpenFOAM and Matlab

1What is Computational Fluid Dynamics?

In this module, you will understand what CFD is and its significance. You’ll also learn what the Navier-Stokes equations are and how they’re derived.

  • CFD - An introduction, Necessity, Advantages, CFD Modeling Process

  • Deriving and understanding the Navier Stokes equations

    • Substantial derivative

    • Continuity Equation

    • Momentum Equation

    • Energy Equation

  • Significance of Reynold’s number in the NS equations

2Mathemathics and Fluid Dynamics Essentials

In this course, you will be writing solvers and getting your hands dirty with different numerical methods. Before we do this, it is very important to understand the essential mathematical and fluid dynamics concepts that you will encounter.

  • Basic Vector Calculus

    • Divergence, Gradient and Curl

  • Taylor’s Series

  • Initial and Boundary Conditions

  • Classification of PDEs and their characteristics

  • Learning essential Fluid Dynamics quantities and their Dimensional Analysis

3Introduction to MATLAB and Basic CFD Concepts

It is essential to establish a rigid foundation before plunging into the farther depths of CFD. This is where you get introduced to MATLAB and learn the basic concepts of CFD by writing MATLAB scripts. Here are some topics that we would cover:

  • Getting acclimated to the MATLAB interface

  • Numerical discretization and its types

  • FDM - Understanding different schemes with worked examples in MATLAB

  • Deriving own FD schemes using Taylor’s table

  • Solving ODEs in MATLAB using the ‘ode45’ solver

4Exploring CFD by Solving Standard CFD Problems using FDM

In this section, you would venture into the Finite Difference Approach to discretization and solving various benchmark CFD problems in MATLAB. You’ll also be working on two major and two minor projects here. The list of projects are as follows;

  • Solving the 1D linear convection equation and performing stability analysis

  • Major Project: Simulating 2D unsteady/steady heat conduction equation and studying implicit vs explicit approaches

  • Solving coupled linear systems using iterative solvers

    • Jacobi

    • Gauss-Seidel

    • SOR

  • Major Project: Simulating Quasi 1D subsonic-supersonic nozzle in FDM and studying conservation vs non-conservation forms of governing equations

5Introduction to FVM and OpenFOAM

OpenFOAM is an open-source toolbox with in-built Numerical Solver and pre/post processors for solving CFD Problems. It is based on the Finite Volume Method of discretization. In this section, you will learn how to run a simulation on OpenFOAM and the significance of using an FVM approach. These are the topics you would learn:

  • Finite Volume Method and Gauss divergence theorem

  • Understanding the Linux environment

  • OpenFOAM code organization and case setup

  • Detailed blockMeshDict tutorial

6Solving standard CFD Problems in OpenFOAM

It is important to get a real feel of problem-solving using the OpenFOAM software so that you can explore and simulate a wide variety of problems. This is where we create a platform that will enable you to start any simulation from scratch and establish confidence in your result. You will be working on the following major projects.

  • Flow over Backward Facing Step

    • Code the geometric mesh information inside the C file ‘blockMeshDict.’

    • Implement mesh grading factor

  • Laminar flow through the pipe and Validate results

    • Automate the ‘blockMeshDict’ generation on MATLAB

    • Characterization of fully developed flow

    • Explore different boundary conditions

Projects Overview

2D Simulation


In this project, you will learn how to discretize and solve an unsteady and steady diffusion phenomenon using a Finite Difference Method in MATLAB/Octave. You will

also learn to use both implicit and explicit time integration approaches to solving an unsteady problem. We will work on how to use 3 different iterative methods to solve implicit equations and compare their effectiveness. Finally, you will perform a stability study and understand the criteria to obtain a stable and reliable solution.


  • Solve 2D Steady and Transient heat conduction problem

  • Implement Jacobi, Gauss-Seidel and Successive Over-Relaxation solvers

  • Implement Implicit and Explicit methods to solve the transient part

  • Implement Diffusion CFL number-based time step control

MacCormack Method


In this project, you will simulate the conditions for an inviscid flow inside a Subsonic-Supersonic Convergent-Divergent Isentropic Nozzle. You will perform a quasi-1D simulation using the FDM approach in MATLAB/Octave. The student will then investigate the conservation and non-conservation forms of the governing equations and learn their characteristics and applications. 


  • 1D supersonic nozzle flow using MacCormack Method

  • Implement Conservative and Non-Conservative form

  • Implement Courant Number based time step control

  • Solve Normalized Governing equations

Laminar Flow


In this project, you will simulate a laminar viscous flow across a sudden steep expansion in area and study the boundary layer separation phenomena. You will learn how to set up and run a case in OpenFOAM in the Linux environment. You will also learn how to customize the course code to suit this problem. And finally, implement different mesh grading factors and compare the results.

  • Simulate this classical CFD benchmarking problem

  • Run grid dependency test

  • Implement mesh grading

  • Study the boundary layer separation phenomenon

BlockMesh Generation


In this project, you will simulate the laminar viscous flow through a regular pipe using symmetry and wedge boundary conditions and compare the simulation result with the analytical one obtained using the Hagen-Poiseuille formula. You will to then write a program to automate the generation of the Mesh file. The simulation will be run in OpenFOAM and post-processed in Paraview. 

  • Automate mesh generation process using MATLAB/Octave

  • Perform Wedge Vs. Symmetry BC study

  • Understand fully-developed flow and Hydro-dynamic entrance length

  • Compare the results with the analytical result from Hagen-Poiseuille formula

2. FVM Coding for CFD Applications using C++

1Fluid Dynamics Theory

Navier-Stokes Equation

  • Advection Terms
  • Diffusion Terms

PDE Formulations

  • Integral Form
  • Differential Form

PDE Classification

  • Elliptic Equations
  • Parabolic Equations
  • Hyperbolic Equations




  • Taylor’s Theorem for discretization
  • Gauss-Green Theory for surface integral formulations

PDE Discretization

  • FDM Methods
  • FVM
  • Time Discretization

Errors and Stability

  • Basic theory about CFL number formulations

3OOPs Theory

  • Loops
  • Classes
  • Inheritances

4Advanced OOPs Theory

  • Encapsulation
  • Member Functions
  • Operator Overloadin

5Linear Wave Equation Behavior with C++

  • Studying the dispersion and dissipation of 1D wave propagation

6Discretization of Poisson Equations

  • Scalar Interpolation Schemes (Upwind, QUICK)
  • Gradient Reconstruction Schemes (Parallelogram CV, Thin-Layer, 9 Point Stencil)

7Matrix Assembly and Solvers

  • Mesh Numbering and Bookkeeping
  • Diagonally Dominant Systems
  • Approximate Factorization Solvers
  • Matrix Relaxation Solvers

8Code Building for the Project

  • Mesh Reading
  • Boundary Conditions
  • Post-Processing
  • Pseudo Code Discussions

9Pressure Correction

  • Theory
  • Discretization

10Solver Attributes

  • Time Stepping Criterion
  • Boundary Conditions

11Code Building for the Project

  • Mesh Reading
  • Post-Processing

12Code run-through

  • De-bugging
  • Strategies

Projects Overview

Project 1


In this project, the student is required to develop a 2D poisson solver after going through the concepts taught in the course content

Project 2


In this project, the student is required to develop a 2D Navier Stokes solver using C++ after going through the concepts taught in the course content 

3.Advanced CFD using OpenFOAM

1Introduction to CFD and OpenFOAM

Explaining components of NS equations in detail, i.e. explaining diffusion, convection, and source terms, etc.

  • Explaining how a basic CFD study works

  • Generating Geometry

  • Meshing

  • Initial Conditions
  • Choosing Relevant Solver
  • Post processing and repeating till accurate results are achieved.


2Introduction to OpenFOAM

Basic introduction, explaining background and its syntax with the file structure followed. Explaining one example problem from simpleFoam (flow in cavity) and one from potential flow (flow over cylinder) to explain how the geometry, meshing, and solving works.

Introduction to SIMPLEFOAM and PIMPLEFOAM Post processing with ParaView

3Meshing in OpenFOAM &CHT Theory

Mesh using snappyHexMesh, an advanced tutorial. Explaining one example problem: Meshing pipe flow with obstacle in middle and explain geometry import, castellation, layering, snap controls, and mesh quality controls.

Basics of CHT theory, with theoretical example problems of heat transfer in pipes. Explaining convection, conduction and radiation, and the significance of heat transfer coefficients. Brief introduction to controls provided in OpenFOAM for heat transfer, with one example buoyant Cavity case.

4Setting up the simulation and basics of heat exchanger-1

Explaining simulation controls provided with OpenFOAM. Setting up shellAndTubeHeatExchanger tutorial problem in OpenFOAM and explaining the run controls.

Basics of heat exchanger (theoretical), discussing important coefficients, importing the geometry and meshing.

5Basics of Heat exchanger- II & VOF Theory

Setting up simulation and post-processing. Improving the mesh and setting up a grid dependent study.

Volume of Fluid theory: solvers, tracking methods, applications, limitations in OpenFOAM.

6VOF simulations in OpenFOAM & Rising bubble - VOF

Meshing the domain for VOF problems. Discussing interFoam and sloshing in a tank. Discussing dynamic mesh and adaptive meshing in VOF.

Discussion of one example problem: rising bubble.


7Filling a container problem and Oil/Water separation in a vessel with OpenFOAM

VOF simulation of filling up of a container, using interFoam. Meshing and post-processing.

Separation of two isosurfaces of oil and water in an industrial separation vessel using multiphase interFoam to find the inlet velocity for ~99% purity of fluids.

8Compressible flow and Turbulence

Introduction to Compressible flows and Turbulence, explaining theory behind. Explaining how compressible flow is simulated in CFD using an example problem: flow over a cylinder to show turbulent separation and the Karman vortex sheet.

Discussing an example problem: flow over an airfoil.Discussing how the geometry is imported, grid is made, the type of solver to be chosen, and post-processing.

9Introduction to Combustion CFD and performing a Burner simulation

Brief lecture on basic definitions and integration of CFD with combustion. The different equations of motion, methods to solve and types of combustion simulations. Basic introduction to combustion in OpenFOAM.

Simulation of flame progression in a Bunsen burner non-premixed combustion in OpenFOAM (methane+air) using fireFoam solver, analysing flame propagation.


10Flow over bluff body and I.C. Engine basics

Flow over a V-Gutter flame stabilizer with jet-A + air premixed combustion. Mesh generation using snappyHexMesh. LES solver, fireFoam is used.

Xi Engine Foam introduction and explaining the tutorial problem. Setting up the case, solving for chemical kinetics, meshing and post-processing.

11Fuel injectors and usage of LES in combustion

CFD analysis of combustion in a chamber with fuel injector, analysing the exhaust products with varying equivalence ratio, using reactingFoam.

A brief introduction to LES. An example problem of exhaust jet, pre-solved (due to high computational cost).

12Lean Blow Out and simulation of Detonation in a tube

Explaining flame extinction in a gas turbine combustor, blow out conditions and methods introduced to prevent blow out using re-ignition.

Simulating detonation in a long tube using OpenFOAM with a provided custom-made solver.


Projects Overview

Project 1


  • A heat transfer CFD problem that will help in understanding how to model a conjugate heat transfer problem in OpenFOAM.
  • We make use of chtMultiRegionFoam solver (discussed in course) to explain how to model the different regions in the domain, namely shell, tube, and solid regions.
  • Shell part consists of hot fluid which flows over the solid. The solid encases the tube part. Tube is where coolant flows through and helps in heat transfer.

Aim of the study:

  • Perform study on effects of variable coolant inlet velocities on cooling in the heat exchanger
  • Simulate flow in a heat exchanger (geometry provided) with various coolants and perform a study on variation in cooling. 

Project 2


Lean blow out is a phenomenon common in combustors. It refers to flame extinction. Flame extinction may be caused by various reasons, two of the major reasons being:

  1. Fuel-air ratio becoming too lean for combustion to sustain itself
  2. Very high turbulence in combustor which induces flame wrinkling and in-turn flame extinction

In this problem we try to understand how to mitigate this phenomenon by making use of a flame stabilizer to help the flame hold on to a bluff-body. This helps in delaying flame extinction due to turbulence.

Aim of the study:

  • Introduce a flame stabilizer for holding the turbulent flame and understand the recirculation zone formed behind
  • Flame stabilizers reduce the possibilities of flame extinction
  • Perform the analysis using the solver XiFoam and LES turbulence model (RAS used in example problem) to understand flame wrinkling

4. Turbulence and RANS modeling

1What is Turbulence?


  • Introduction (omnipresence and applications), course overview
  • From general nature to definition
  • Governing equations (Vector and Einstein notation)
  • Physical meaning

2From Physics to Modeling

  • Navier-Stokes equations: Difficulties and simplifying assumptions
  • Vorticity and “eddy”


  • Introduction
  • Why model? From low to high fidelity models
  • How to choose models, an overview

3Reynolds averaging - 1

  • What is averaging in fluid mechanics?
  • Decomposition of variables
  • Averaging of Navier-Stokes equations
  • Outlook to modeling effect of fluctuations


  • Effect of fluctuations and Reynolds Stress tensor
  • A brief detour into tensors
  • Kinetic theory and Gradient Diffusion hypothesis, Knudsen number
  • Difference between molecular and turbulent eddy motion

5Dynamics and scales of Turbulence – part 1

  • Energy cascade in real space
  • Kolmogorov’s theory (small scale dynamics)
  • Correlation functions 
  • Space and time scales

6Dynamics and scales of Turbulence – part 2

  • (Homogeneous) Isotropic Turbulence
  • Equations in Fourier space
  • The role of pressure
  • Velocity Spectra
  • Taylor’s hypothesis
  • Spectral view of energy cascade

7Free Shear Flows

Energy exchange between the mean flow and turbulence

Free Shear Flow 

  • Self similarity
  • Round jet
  • Plane flow equations

8Wall-bounded Shear Flows

Wall Flows

  • Plane flow equations
  • Log law and importance in modeling
  • Heat transfer in wall flows

9Modeling basics – part 1

  • Turbulent viscosity hypothesis revisited
  • Reynolds Stress analogy
  • Reynolds Stresses equation
  • Closure problem


10Modeling basics – part 2

  • Mixing length model
  • Other algebraic models
  • Turbulent Kinetic Energy models


11Practical models - part 1

  • The k-epsilon model
  • The k-omega model
  • Near wall treatments

12Practical models - part 2

  • Idea of Reynolds Stress models
  • The role of numerical dissipation

Projects Overview

Project 1


Consider the 2D Couette-Poiseuille flow which was a part of a challenge in the course.

We are now going to add two functionalities:

  1. non-uniform wall-clustered mesh
  2. a turbulence model to our laminar flow code.

Choose a suitable distribution (exponential, geometric etc.). Do not exceed 200 grid points. Try different wall resolutions for a mesh independence study (stay in log-layer).

The flow solver will now have to use iterations over “pseudo time” to converge the equations with the model. In the code, the declaration of Arrays a,b,c,d and the TDMA solver all go inside the said iterative process. You might have to use a convergence criteria, such as, stop the loop if consecutive solutions do not change by more that 1e-5. Further, consider using under-relaxation if you encounter solver instability as:

u = r*u + (1-r)*u_old  where r varies from 0 to 1 and “mixes” new and old iteration of velocity

The task is to compare velocity profiles with Cases 1-15 from the given reference.

Project 2


The present project is related to simulating turbulent flow through pipes that are bent by 180 degrees (also known as U-bend pipes).

Background: One of the prominent applications of U-bend pipes is for the internal cooling of turbine blades that work at high temperatures. The U-bend pipes are used as “internal cooling channels” where colder air is circulated that takes the heat away from the blade. Usually, one objective is to estimate (and optimize) the pressure loss associated to the flow turning. It involves recognising the main flow features in the blade (separation, 3D flows etc.). 


Task: In a short* report, compare the flow field obtained from two different turbulence models on the same mesh. Use (i) one of the k-epsilon variants and (ii) the RST model.  Note that the kinematic viscosity has to be 1.725e-05 m^2/s. You can use any CFD solver but, follow the specific steps below:

  1. Create a three-dimensional model of the geometry. 
  2. Create a mesh with a target y+=30 for the walls (we are going to use Wall Treatments).
  3. Use the boundary conditions (BCs) at Inlet as provided in the question. 
  4. Perform the calculations using the two suggested turbulence models. For each of them:
    1. show the residual convergence. Report the computational time taken by the two models and also if you encounter any convergence difficulties.
    2. Streamwise velocity contours and streamlines on the Y-Z symmetry plane,
    3. Velocity profiles on the Y-Z symmetry plane (x/D=0.5). 
  5. Speculate how the pressure loss relates to the separation in this flow configuration?



5. Introduction to OpenFOAM Development

1Introduction and Setting Up

The first week of the course introduces you to what exactly OpenFOAM is. OpenFOAM is developed primarily for the LINUX operating system. We will also cover the basics of the Linux operating system for anybody who is not acquainted with Linux. We will be covering in detail on the following topics: 

  • Introduction to OpenFOAM 
  • Users, Future opportunities
  • OS and Version Selection
  • Windows Subsystem for Linux
  • Basics of Linux
  • Test case
  • Installing opt and debug modes

2Basics of C++

The course is targeted towards the development of a CFD solver using OpenFOAM. OpenFOAM is primarily a C++ library. Hence, a good understanding of the basics of C++ is quintessential. In this week, we will cover in detail the following topics:

  • Setting up environment: Visual Studio Code
  • Namespaces
  • Data Structures
  • Pointers
  • Static and dynamic arrays
  • STL - std::array and std::vector
  • Declarations and definitions
  • Passing by reference/value 
  • Function Parameters and overloading

3Basics of C++

Object Oriented Programming brings a plethora of features to improve usability of any C++ code that you generate. In this week, we will cover:

  • OOP – Classes and objects
  • Inheritance 
  • Smart Pointers – auto, unique, and shared  
  • Template programming
  • Polymorphism
  • Operator overloading
  • Abstract classes, Virtual functions

4High Level Programming 1

C++ is a high level language that let’s users create independent programs that are easier to interpret than assembly level codes. Here we will delve into the building blocks of it’s code organization by covering the following topics :

  • Introduction to parallel programming MPI 
  • Make files and Cmake 
  • Library and class organization
  • Compiling a solver

5High Level Programming 2

In this week, we further explore the various dictionaries available in OpenFOAM and try to understand the different C++ concepts used to achieve a particular task. We will be looking into : 

  • 5 OpenFOAM Classes : Constructor/Destructor,Overloading,Inheritance & Polymorphism 
  • Time dictionary 
  • IOObject and objectRegistry
  • Fields dictionary 
  • Scalars, Vectors, and Tensors
  • Implicit & Explicit namespaces (FVM & FVC)

6FVM for OpenFOAM 1

Finite Volume Method (FVM) is one of the most commonly used methods of converting PDE’s to ALE’s. In this week, Upon introducing the basic principles of FVM, we dive deep into the way in which openFOAM handles individual terms of the governing equations. The following concepts are covered in this week:

  • General conservation equation
  • Navier-Stokes equations 
  • Gauss Divergence Theorem 
  • Discretization of the source term
  • Discretization of the convective term 
    • Upwind
    • Linear Upwind
    • Flux Limiter (TVD)
  • Stability criterion – CFL condition 

7FVM for OpenFOAM 2

FVM in openFOAM is implemented in 3 parts. 1) Surface interpolation 2) fvc and 3) fvm using the mentioned finite volume techniques covered in the previous week. In this week, we will look into the multiple algorithmic choices of gradient operators and discretization schemes that can be employed by covering the following topics :

  • Gradient schemes
    • Green-Gauss Cell Based
    • Green- Gauss Node Based
  • Discretization of the diffusion term 
  • Laplacian schemes
  • Non orthogonal meshes and solution
  • N-S Equations revisited
  • Collocated vs Staggered grids
  • SIMPLE algorithm 

8FVM for OpenFOAM 3

If we consider the discretized form of the Navier-Stokes system, the form of the equations shows linear dependence of velocity on pressure and vice-versa. This inter-equation coupling is called velocity pressure coupling and often calls for a special treatment in order to decouple the terms. This week, we will look at some of the standard techniques used in CFD to achieve the same. Topics include :

  • SIMPLE algorithm - Need for Under Relaxation 
  • SIMPLEC algorithm - Consistent SIMPLE
  • PISO algorithm 
  • PIMPLE algorithm

9Linear Solvers

Linear systems in numerical methods often reduce to a sparse system (matrix having many zero elements) which can be computationally expensive to solve using standard algebraic methods. This week we will look into the working of some of the linear solvers used in openFOAM. Topics include : 


  • Non-orthogonal correctors
  • From mesh to matrix 
  • Linear solvers 
  • Jacobi
  • Gauss Seidel
  • Newton-Kyrlov family 
  • Preconditioners 
  • Smoothers 
  • Solver tolerances


10Turbulence 1

The concept of turbulence is something that has not been understood vividly till date although turbulent flows are commonplace in most real life scenarios. Considered as the cornerstone of fluid dynamics, Turbulence modeling is the construction and use of a mathematical model to predict the effects of turbulence. This week, we will look into the basic types of turbulence models used in CFD.  

  • Basics of turbulence 
  • RANS averaging 
  • The k-epsilon model
  • The k-omega model 

11Turbulence 2

This week is an extension of the concepts covered in the previous week where different turbulence models are weighed in against each other for specific applications. This week we further our understanding of the boundary layer theory by introducing ‘Wall functions’ which  are used to bridge the inner region between the wall and the fully developed turbulent layer to customizing a user defined turbulence model. Topics include :

  • The k-omega SST model 
  • Wall modelling and wall functions
  • Creating a turbulence model

12Temporal Discretization

Time discretization is a mathematical technique applied to transient problems which require solutions in which position varies as a function of time. Temporal discretization involves the integration of every term in different equations over a time step (Δt). Topics include :

  • Discretization of the time term 
  • Forward and backward Euler 
  • Crank-Nicholson 
  • Function Objects 
  • Latex for Report Writing 

Projects Overview

Project 1


This project is meant to be an introduction to implementing your own solver in OpenFOAM. The points below are meant to be rough guiding points to what you should be looking at in the process. You are required to write a report (1000 words) about the steps you took to create the solver as well as results from the case you run with it.

Project Description: Use the icoFoam solver in the applications/solvers/incompressible/icoFoam directory to create your own solver - scalarFoam

The scalar transport equation is defined as:
∂s + ∇ • (us) = 0,
Where s is the scalar quantity being transported by the velocity u.

Changes in the solver:
• Replace the main working equation with
• What change will you make in the createFields.H file (Hint: the p field is originally created here)
• What change will you make in the UEqn.H file? (Hint: replace the solve function)
• Compile scalarFoam using wmake. How are the Make/files modified?

Changes in the case:
• Use the $FOAM_TUTORIALS/incompressible/icoFoam/cavity case to test out your solver. Rename it scalarCavity.
• The scalar transport equation has no pressure p to solve, instead a scalar s. What changes will you make in the 0 folder?
• You will have to change the interpolation scheme in fvSchemes to account for the ∇ • (us) term. How will you do this?
• In fvSolutions, a solver has to be specified for the quantity s. Can you just replace this with the solver used for p?
• Run this case by making the appropriate change in controlDict.


Project 2


The total pressure ptotal is the contribution of the static pressure p and the dynamic pressure. To calculate this, we decide to write a coded function object called p_total which:

  • reads in the fields p and U
  • creates a field p_total (using IOobject)
  • computes the expression ptotal = p +1/2U2
  • writes the file p_total to the disk

Place this in the controlDict file of the pitzDaily tutorial and plot your results. Write a short report including the code you used in LATEX.

Project 3


The icoFoam solver solves the incompressible flow equations for mass and momentum. Our goal is to now add an equation for temperature

Changes in the solver:

  • Create a new solver based on icoFoam called icoTempFoam
  • Replace file names and mentions of icoFoam with icoTempFoam
  • Change the solver target directory to FOAM_USER_APPBIN
  • Change createFields.H to include a dictionary reader for kappa (κ) and a field read and write IOObject for temperature T
  • Add a fvScalarMatrix in the main .C file that stores the scalar matrix value of TEqn
  • Run the solve() function on this matrix object
  • Compile the solver 

Changes in the case:

  • Copy the FOAM_TUTORIALS/incompressible/icoFoam/cavity/cavity tutorial and rename it to cavityTemp
  • Add a dictionary entry for kappa in transportProperties

kappa [ 0 2 -1 0 0 0 0 ] 0.001;

  • Add a file in the 0 folder for temperature T. Remember to set the correct dimensions for it! Set the movingWall to be 400K and the other walls and internal field to be 300K
  • Add a div(phi,T) in divSchemes and laplacian(kappa,T) in laplacianSchemes
  • Add a smoothSolver linear solver for temperature in fvSolution. Use a tolerance of 1e-07 and a relTol of 0
  • Run the solver and plot the results of temperature in Paraview
  • Write a short report including the code you used in LATEX

Project 4


These cases should be simulated for t = 5 seconds with the same blockMesh settings as in the original sonicFoam tutorial
• Set velocity to 0 ( U = (0, 0, 0) ) and vary diffusion coefficient via the transportProperties file, like so:
DT DT [ 0 2 -1 0 0 0 0] 0;

• Use these diffusion coefficients and compare the contour plots of temperature for this case of pure diffusion:

  1. 0
  2. 0.0001
  3. 0.01
  4. 1

• Set x-velocity to 1 ( U = (1, 0, 0) ) and set diffusion coefficient via the transportProperties file to 0:
DT DT [ 0 2 -1 0 0 0 0] 0;
• Use the following divSchemes and compare the results for this case of pure advection

  1. upwind
  2. linearUpwind
  3. quadratic
  4. cubic
  5. vanLeer
  6. QUICK

The comparison of convection schemes should be done via a plot that captures the
change of the temperature profile along the length of the tube, as shown in the lecture
(and on the next slides )

Plot of temperature profile at t = 0

Plot of temperature profile at t = 5

• Write about the difference in results because of different diffusion coefficients and what it
could mean physically. Additionally, explain how this could be controlled by the user in
• Why do different convection schemes cause changes in the original temperature profile
when convected?
• What is the most accurate convection scheme from the list and why?
• Summarize the case, your changes, your results, and answers to the above questions in a
LATEX report

6.Computational Combustion using Python and Cantera


Cantera is an open-source suite of tools for problems involving chemical kinetics, thermodynamics, and transport processes. Computational combustion is a field of numerical modelling and simulations using advanced large‐scale parallel systems and offers a new avenue to analyze and interpret the dynamics of acoustic‐flame‐vortex interactions that occur in most combustion systems. 
The course comes under the domain of mechanical and automotive engineering with CFD as a sub-domain. The Cantera library can be imported to MATLAB, Python, and C++. Python is the language of choice because it's widely used and can handle the operations better than MATLAB or C++. 
This course is useful for students and working professionals who have a background in thermodynamics and programming and are interested in learning about the function of engines and combustion modelling.

2Fundamentals of Chemistry

In this module, you will learn about different fuel types, species nomenclature, and concepts such as:
  • Molecular weight
  • Moles
  • Density
  • Mass Fraction, Mole Fraction, and PPM
  • Vapour pressure
  • Equation of state
  • Air fuel ratio
  • Equivalence ratio
This module covers the various properties of thermodynamics as well as combustion which is very useful in modelling the combustion. The relation between various properties helps you make the right decision and the results are compared with the numerical data of those properties. The module also covers the units of the above entities and their significance. 

3Intermediary Thermodynamics

This module provides the opportunity to refresh your basics in thermodynamics and learn several intermediary concepts such as:

  • Enthalpy of reaction
  • Adiabatic flame temperature
  • Lower and higher heating values

This module will cover concepts that are helpful to understand the derived properties of chemical kinetics and help understand the rate of reactions and their impact on reactor systems. 

The above parameters can be a good starting point for optimizing the reactor system. The theoretical calculation of the above parameters will help you to understand the practicality of the system we are designing.

4Equilibrium Chemistry

Equilibrium chemistry models are very commonly used to construct simplified combustion models. In this module, you will learn the following:

  • Full Equilibrium
  • Water Gas Equilibrium
  • Pressure effects
  • Understanding NASA's thermodynamic data files

This module will teach the difference between homogeneous and heterogeneous equilibrium. Understanding the equilibrium will allow you to understand if a chemical reaction is at equilibrium and the direction the chemical reaction must proceed to attain equilibrium. 

It helps you to understand the new equilibrium attained when a change in concentration of either a reactant or a product is made to a system initially at equilibrium. Besides, this module will also teach you to read NASA or any other standard data, which helps design the reactor system. 

5Elementary Reactions

This module will introduce to chemical kinetics and you will learn the following topics:

  • Global and elementary reactions
  • Rate of a reaction
  • Forward rate and backward rate
  • CHEMKIN formatted mechanism file

In this module, we define the reaction rate and a few associated terms and introduce the simplest type of chemical reaction which is single-step reactions known as elementary reactions. We will investigate the various factors that determine the rate of an elementary reaction, which allows you to calculate rate constants and explain their temperature dependence

6Introduction to Python and Cantera

In this module, you will study Python - an extremely popular programming language. You will learn Python by writing programs related to chemical kinetics. Once you can write simple programs in Python, we will introduce you to Cantera. With Cantera, you will be able to simulate different types of combustion systems. Cantera is an extremely popular tool that is used in several universities and organizations for research and industrial purposes.

7Ignition Delay Calculation

Ignition delay is the time lag between the start of injection to start of the combustion when the air-fuel mixture is ignited. It is one of the major factors that help in determining the performance of an IC engine. In this module, we will teach you to build several zero-dimensional reactors. These types of simulations will be used to predict the ignition delay and flame speeds of popular fuels.

The objective of the module is to study the dependence of ignition delay time on: 

  • Cylinder ambient gas temperature 
  • Cylinder ambient gas pressure
  • Injection pressure 
  • Injector nozzle orifice diameter

8Flame Speed Calculation

While designing combustion systems, flame speed plays an important role in determining their performance. In this module, you will learn how to calculate flame speeds. Note that this parameter depends upon the type of reaction mechanism that is being employed and the thermodynamic conditions in the combustion chamber. You will also perform a sensitivity analysis that helps you determine which of the elementary reactions are going to affect the flame speed the most.

9Advanced Topics in Combustion

In this module you will learn the following topics:

  • Perfectly stirred reactor
  • Steady-state combustion and its relevance for gas turbine applications
  • Extinction and blow off limits
  • Premixed, diffusion, and partially premixed flames

10Introduction to 3D Combustion

In this module, you will be trained in the core concepts that are used while simulating combustion in complex 3D geometry. Here you will learn about the current trends along with the cutting edge tools that are used in the industry.

Projects Overview

Flame Temperature


The adiabatic flame temperature for a given fuel-oxidizer combination is determined by finding the final state temperature (i.e. the adiabatic flame temperature) for which the sum of the enthalpies of the reactants equals the sum of the enthalpies of the products. The calculation of thermal efficiency becomes easy once we know the AFT. The efficiency further allows you to improvise the reactor system. 

Combustion Efficiency


A recuperator is a heat exchanger in which energy from the exhaust of hot combustion products, i.e. flue gases, is transferred to the inlet air for increasing its temperature. The effect of such preheating of air can be seen in improving combustion efficiency as well as Adiabatic Flame Temperature. This analysis is performed to effectively utilize the exhaust gas recirculation and increase the efficiency of the reactor. 



In this project, you will be solving a STIFF ODE system from scratch. This helps you understand how reacting systems are solved.
The Newton-Raphson method (also known as Newton's method) is a way to quickly find a good approximation for the root of a real-valued function f(x)=0. It uses the idea that a straight line tangent can approximate a continuous and differentiable function to it. This numerical method is effective for stiff ODEs. 

Auto Ignition


In this project, you will be exposed to the Cantera reactor network and its uses in solving various models. The reactor network allows you to calculate the expansion/compression work, heat transfer, mass transfer, and surface interaction with the environment. The auto-ignition gives the time required for combustion to take place and to control it can be beneficial for controlling pollutants as well as for complete combustion.

Sensitivity Analysis


The correct description of chemical changes requires the application of reaction mechanisms consisting of several hundred or thousand reactions. This means that a huge number of parameters describes the chemistry of the combustion process. Hence, the application of the sensitivity analysis techniques is very useful for its understanding of those parameters. 

Detailed chemical models are too big for many practical combustion simulations. Sensitivity analysis can be used for mechanism reduction, that is, finding a smaller model that produces similar predictions for some of the variables (i.e., species concentrations and temperature).

Flame Speed


The flame speed is the measured rate of expansion of the flame front in the combustion reaction. The flame speed of fuel is a property that determines its ability to undergo controlled combustion without detonation. This project is the study of flame speed by considering the effect of temperature, pressure and concentration on it.

Reaction Reduction


This detailed mechanism for methane-air combustion(GRI3.0) is probably the most famous one. It comprises 325 reactions and 53 species. The reduced mechanisms include only the top reactions and the associated species. The reduced mechanisms with a certain number of species are able to adequately simulate the ignition delay, sensitivity  problem. Such a reduced mechanism saves a lot of computational resources as well as time. 

Flexible Course Fees

Choose the Master’s plan that’s right for you


9 Months Access


Per month for 10 months

  • Access Duration : 9 Months
  • Mode of Delivery : Online
  • Project Portfolio : Available
  • Certification : Available
  • Individual Video Support : 8/Month
  • Group Video Support : 8/Month
  • Email Support : Available
  • Forum Support : Available
  • Telephone Support : Available

Lifetime Access


Per month for 10 months

  • Master's Assistance : Lifetime
  • Access Duration : Lifetime
  • Mode of Delivery : Online
  • Project Portfolio : Available
  • Certification : Available
  • Individual Video Support : 24x7
  • Group Video Support : 24x7
  • Email Support : Available
  • Forum Support : Available
  • Telephone Support : Available
  • Dedicated Support Engineer : Available
  • Paid Internship : 3 Months


Companies hire from us

See all


  • Top 5% of the class will get a merit certificate
  • Course completion certificates will be provided to all students
  • Build a professional portfolio
  • Automatically link your technical projects
  • E-verified profile that can be shared on LinkedIn


See all

The Skill-Lync Advantage

See all