From Script | Spoken-Tutorial
Jump to: navigation, search

Title of the script: Simulation of a Turbulent Flow in a 2D Channel using OpenFOAM

Author: Padmini Priyadarshini

Keywords: OpenFOAM, Turbulence, k-epsilon, yplus, expansion ratio, blockMesh, wall function, channel flow, simpleFoam, ParaView, video tutorial

Visual Cue Narration
Slide: Opening Slide Welcome to this tutorial on Simulation of Turbulent Flow in a 2D Channel using OpenFOAM.
Slide: Learning Objective In this tutorial, we will learn how to:
  • Implement k-epsilon model
  • Set up turbulence parameters
  • Run the simulation
Slide: System Specifications To record this tutorial, I am using,
  • Linux Mint OS version 18.3
  • OpenFOAM version 7
  • ParaView version 5.6.0
  • gedit Text Editor

However, you may use any other text editor of your choice.

The steps explained in this tutorial are identical in Ubuntu Linux OS.

Slide: Prerequisites As a prerequisite:
  • You should have basic knowledge of turbulent flows and fluid dynamics.
  • You should also be familiar with simulating a flow through a pipe in OpenFOAM.
  • If not, please go through the prerequisite OpenFOAM tutorial on this website
Slide: Code Files
  • The files used in this tutorial are available in the Code Files link on this tutorial page
  • Please download and extract them
  • Make a copy and then use them while practising
Slide: Solver detail We will use the simpleFoam solver to simulate this problem.

simpleFoam is a steady-state solver for incompressible, turbulent flow.

Slide: Problem statement The diagram shows a 2D channel of length 65 m and width 1 m.

The kinematic viscosity is 1e-05 m2/s (1e to the power of minus 5 metre squared per second).

The Inlet velocity is 20 metres per second.

Outlet pressure is set to 0 atmosphere.

Slide: Flow Properties Reynolds number is 2 million.

And the flow is turbulent.

Slide: K-Epsilon turbulence model K-epsilon is a widely used RAS turbulence model.

It is a two-equation model.

It solves:

  • The turbulent kinetic energy transport equation, and
  • The turbulent dissipation rate transport equation
Only Narration Let us set up the case.
Only Narration Download the kepsilon folder provided in the Code file and extract it.
CTRL + ALT + T Open the terminal by pressing Ctrl, Alt & T keys.

Only Narration

From now onwards please remember to press the Enter key after typing each command in the Terminal.
[Terminal] Type:


Let us open the RUN directory.

To do so, type the following command.

[Terminal] Type:

cp -r ~/Downloads/kepsilon .

And copy the downloaded file into the RUN directory.

To do so, type the following command.

Only Narration I have downloaded the file into my Downloads directory.

Please change the path as per your machine.

[Terminal] Type:

cd kepsilon

With this command, we will navigate to the kepsilon directory.
Slide: Y plus YPlus is the dimensionless wall distance.

For wall function approach, yplus value should be between 30 and 300.

Slide: Wall distance, yp Let “yp” be the distance between the wall and the nearest cell centre.

For our case, yp is 0.00155 for a yplus value of 100.

For channel flow, the skin friction coefficient, Cf is given by this formula.

Only Narration The Additional Reading Material has more details on the wall function approach.

It mentions the steps used to calculate yp.

[Terminal] Type:

ls system

Type the following command to view the content of the system directory.
[Terminal] Highlight:


This directory contains the blockMeshDict file.
Only Narration I have already set up the blockMesh file for a 2D multi-block channel with this yp value.
Only Narration Let us take a look at the initial and boundary conditions of the flow variables.
Slide: Inlet Boundary Condition - k Let us take a look at the inlet boundary condition for kappa.

We will use turbulentIntensityKineticEnergyInlet

This calculates kappa using the user-specified turbulence intensity.

For our case, turbulent intensity is 0.0261 and Turbulent kinetic energy is 0.41 m2/s2 (metre squared per second squared)

Slide: Inlet Boundary Condition - epsilon

Let us take a look at the inlet boundary condition for epsilon.

We will use turbulentMixingLengthDissipationRateInlet

This calculates epsilon using kappa and user-specified mixingLength.

mixingLength refers to the turbulent length scale.

Kappa value is automatically put in by the solver.

Here, the turbulent length scale is 0.07 m.

And, the value of the turbulent dissipation rate is 0.61 m2/s3 (metre squared per seconds cubed)

Slide: Wall Boundary Condition Next, let us take a look at the wall boundary conditions to be used.

  • turbulent kinetic energy is set to kqRWallFunction
  • turbulent dissipation is set to epsilonWallFunction
Slide: Outlet Boundary Condition This slide shows the outlet boundary condition.

zeroGradient boundary condition is imposed at the outlet for both parameters.

Slide: Kinematic eddy viscosity, nut Kinematic eddy viscosity is a dependent variable.

Hence, its value is calculated by the solver.

At the wall, nutWallFunction is used.

Only Narration The Additional Reading Material has more details on the boundary conditions.

Please refer to it.

Let us take a look at the boundary and initial conditions for turbulent kinetic energy.

[Terminal] Type:

gedit 0/k

Open the k file in a text editor.
[gedit -k] Highlight:

internalField uniform 0.41;

The internalField is initialised as 0.41
[gedit -k] Highlight:

type turbulentIntensityKineticEnergyInlet

The inlet boundary type is set to turbulentIntensityKineticEnergyInlet
[gedit -k] Highlight:

intensity 0.0261;

The keyword intensity represents the turbulent intensity, and is set to 0.0261
[gedit -k] Highlight:

value $internalField;

We have passed the internalField value to the patch field value.
[gedit -k] Highlight:


outlet is set to zeroGradient.
[gedit -k] Highlight:


The patch type for both walls are set to kqRWallFunction.
[gedit -k] Highlight:

value $internalField;

The internalField value is passed to the patch field value.
[gedit -k] Highlight:

type empty;

The frontAndBack patch is set as empty.
[gedit - k] Close Text Editor Close the k file.
Only Narration Let’s take a look at the epsilon file.
[Terminal] Type:

gedit 0/epsilon

Open the epsilon file in a text editor.
[gedit -epsilon] Highlight:


The internalField value is initialized to 0.61
[gedit -epsilon] Highlight:


The inlet type is defined as turbulentMixingLengthDissipationRateInlet
[gedit -epsilon] Highlight:


The field mixingLength is set to 0.07
[gedit -epsilon] Highlight:


The internalField value is passed to the patch field value.
[gedit -epsilon] Highlight:


The outlet patch is defined as zeroGradient.
[gedit -epsilon] Highlight:


The wall patch type is set to epsilonWallFunction.
[gedit - epsilon] Close Text Editor Close the epsilon file.
[Terminal] Type:

gedit 0/nut

Now, let’s open the nut file in a text editor.
[gedit -nut] Highlight:


The inlet and outlet patches are set to calculated.
[gedit -nut] Highlight:

type nutkWallFunction;

The wall patch type is set as nutkWallFunction.
[gedit - nut] Close Text Editor Close the nut file.
[Terminal] Type:

gedit 0/U

Next, open the velocity file in a text editor.
[gedit -U] Highlight:

(20 0 0)

The inlet patch is given a fixed value of 20 along the axis.
[gedit -U] Highlight:


The outlet patch is set to zeroGradient.
[gedit -U] Close Text Editor Close the U file.
Only Narration The case is ready to be run.
[Terminal] Type:


Type blockMesh to mesh the geometry.
[Terminal] Type:


Type simpleFoam in the terminal.
Only Narration The simulation will take some time depending on your computer’s hardware.
[Terminal] Highlight:


The word End indicates that the simulation has finished successfully.
Slide: Outlet Velocity Profile The slide shows the velocity profile at the channel exit.
Only Narration With this we have come to the end of the tutorial.

Let us summarize.

Slide: Summary In this tutorial, we learnt to,
  • Implement k-epsilon turbulence model
  • Set up the initial and boundary conditions for turbulence parameters
  • Run the simulation
Slide: Assignment As an assignment:
  • Change the inlet boundary condition for kappa and epsilon to fixedValue
  • Repeat the simulation for a velocity value of 40 m/s, change kappa and epsilon accordingly
Slide: About the Spoken Tutorial Project The video at the following link summarises the Spoken Tutorial project.

Please download and watch it.

Slide: Spoken Tutorial Workshops We conduct workshops using spoken tutorials and give certificates.

Please contact us.

Slide: Spoken Tutorial Forum Please post your timed queries in this forum.
Slide: FOSSEE Forum
  • Do you have any general/technical questions?
  • Please visit the forum given in the link.
Slide: FOSSEE Case Study Project
  • The FOSSEE team coordinates solving feasible CFD problems of reasonable complexity using OpenFOAM.
  • We give honorarium and certificates to those who do this.
  • For more details, please visit these sites.
Slide: Spoken Tutorial The Spoken Tutorial project is supported by MHRD, Govt. of India.

The script for this tutorial is contributed by Padmini.

And this is Swetha from IIT Bombay signing off.

Thank you for joining.

Contributors and Content Editors

Ashleymelvin, Divyesh7, Nancyvarkey