OpenFOAM-version-7/C3/Simulating-Flow-using-Cyclic-Conditions/English
Title of the script: Simulating flow using cyclic conditions
Author: Divyesh Variya, Abhushan Regmi
Keywords: OpenFOAM, Channel flow, Cyclic condition, Paraview, Video-Tutorial.
Visual Cue | Narration |
Slide: Opening Slide | Welcome to this tutorial on Simulating flow using cyclic conditions. |
Slide: Learning Objectives | In this tutorial, we will learn to,
|
Slide:
System Specifications |
To record this tutorial, I am using,
However, you may use any other text editor of your choice. |
Slide:
Prerequisites
|
To practise, this tutorial learner should have knowledge of,
|
Slide:
Cyclic Conditions |
Cyclic condition is a special periodic boundary condition.
It is often used in CFD when we have repetitive geometry for larger domains. Here we consider that both the ends of the geometry are connected. Mainly two types of repetitive conditions can be seen.
|
Slide:
Cyclic Conditions |
Rotational cyclic condition is helpful in turbomachinery applications.
Transitional cyclic conditions are helpful in simulating long pipes. Cyclic conditions can help to save the computational time and resources. |
Slide:
Problem Statement |
As you can see, we have a 2D channel geometry on the screen.
Dimensions are 2 meters in height and 4 meters in length. Reynolds number will be 100, so the case will be laminar. In this case we will simulate cyclic conditions. And compare computational time with traditional inlet-outlet condition cases. |
Slide:
Analytical Solution |
From the input data, we can analytically calculate:
Entrance length, Maximum velocity , and Pressure gradient. |
Slide:
Solver & Base Tutorial |
We know that when we install OpenFOAM some benchmark cases come as tutorials.
For a cyclic condition, we have channel395 case in pimpleFoam/LES location. pimpleFoam solver is a Transient solver for:
But it can also be used for laminar flow with static mesh. |
Slide:
Source Term |
When we use cyclic conditions, two ends of the geometry are connected.
To keep the fluid flowing, adding a constant force in the domain is necessary. This force can be applied using source terms in OpenFOAM. We can give the mean velocity source in the fvConstraints file. Syntax of the code is given in the slide for reference. We shall explain the code later. |
Only Narration | Let’s copy the base case from the pimpleFoam tutorial to our local directory FOAM_RUN. |
CTRL + ALT + T | Open the terminal by pressing Ctrl, Alt and T keys. |
[Terminal] Type:
cd $FOAM_RUN cp -r $FOAM_TUTORIALS/incompressible/pimpleFoam/LES/channel395 $FOAM_RUN |
Type these commands to go to the run folder and then copy the base case. |
[Terminal] Type:
cd channel395 |
Go to the channel395 directory. |
[Terminal] Type:
rm -r 0 0.orig/k 0.orig/nu* |
The tutorial case we used is made for LES simulations.
There are a few unnecessary files to simulate a laminar case. Hence, type this command to delete those files. |
Only Narration | Let’s first look at the blockMeshDict file.
Then setup geometry and mesh for our problem statement. |
[Terminal] Type:
gedit system/blockMeshDict |
Type the following command to open the blockMeshDict file in the text editor. |
[gedit] Change:
Here you need to mention from which number the changes have to be made.(0 0 2) => (0 0 0.2) (4 0 2) => (4 0 0.2) (0 1 2) => (0 1 0.2) (4 1 2) => (4 1 0.2) (0 2 2) => (0 2 0.2) (4 2 2) => (4 2 0.2) (40 25 30) => (40 25 1) (40 25 30) => (40 25 1) |
As we can see, the entire geometry is made of 2 blocks and it is 3D geometry.
To convert it into 2D, we can simply change z-coordinates with 0.2. Also, don’t forget to make the number of cells in the z-direction = 1. |
Point to the expansion ratio. | By default, some expansion ratio is used to refine the mesh near the wall.
We will keep it as it is. |
Point to the Top and Bottom walls part in the text editor. | Here, our main focus is the boundary section.
As we can see, top and bottom walls were taken as wall types. |
Point to the cyclic patches in the file. | The cyclic patches can be defined as shown on the screen.
The type of the cyclic patch can be given as “cyclic.” An additional entry needs to be added to define the neighbor patch. |
Click on Save and Click on Close. | Save the file and close it. |
Only Narration | To define boundary conditions, we can go to the 0.orig folder and modify the fields file. |
[Terminal] Type:
gedit 0.orig/U |
Let’s open the velocity file first. |
[gedit] Change:
internalField uniform (0.1335 0 0); => internalField uniform (1 0 0); Click on Save and Click on Close. |
Set up 1 m/s velocity in the internal field to initialize the simulation.
The other boundary conditions will be cyclic. Save the file and close it. |
[Terminal] Type:
gedit 0.orig/p Click on Close |
In the same way, we have initialized the field with 0 kinematic pressure in the p file.
The boundary conditions for other patches will be cyclic similar to that of U Close the file. |
[Terminal] Type:
cp -r 0.orig 0 |
Type the following command to make a clone of the 0.orig file with 0 name. |
[Terminal] Type:
gedit constant/transportProperties |
Now, we can set up kinematic viscosity in the transportProperties file from the constant folder. |
[gedit] Change:
nu 2e-05 => 0.02 Ubar 0.1335 => 1 Click on Save and Click on Close |
Also, set the Ubar value in the x-direction to
1 m/s. Save and close the file. |
[Terminal] Type:
gedit constant/momentumTransport simulationType LES; => simulationType laminar; Click on Save and Click on Close.
|
In the momentumTransport file, we need to specify laminar type flow.
Save and close the file |
[Terminal] Type:
gedit system/controlDict endTime 1000 => 15 deltaT 0.2 => 0.1 writeInterval 200 => 10 Click on Save and Click on Close |
In the controlDict file, let's set endTime equal to 15 seconds.
Also, set deltaT equals 0.1 and writeInterval 10. Save and close the file. |
[Terminal]:
Only Narration |
Our case setup is almost ready.
But here, we haven't specified any force to drive fluid in our system. It is necessary to provide an external force in our system to keep fluid flowing. To add a specific type of external force, we can use the fvConstraints utility in OpenFOAM. |
[Terminal] Type:
gedit system/fvConstraints |
The fvConstraints file is located in a constant or system folder.
Here, in this tutorial, it is located under the system folder. Open it in a text editor using the following command. |
[gedit fvConstraints]:
Point to momentumForce |
In this dictionary we are providing momentumSource as a Source |
[gedit fvConstraints]:
Point to type |
We are providing meanVelocityForce
This applies a force to maintain a user-specified volume-averaged mean velocity |
[gedit fvConstraints]:
Point to SelectionMode |
Here we are selecting all cells of the domain |
[gedit fvConstraints]:
Point to fields and Ubar |
We are providing this source term to the field velocity.
We will provide mean velocity of 1m/s in the x-direction. Also, we will get a parabolic velocity profile in the domain. |
[gedit] Change:
Ubar (0.1335 0 0); => Ubar (1 0 0); Click on Save and Click on Close. |
Change Ubar value from 0.1335 to 1.
Save and close the file. |
[Terminal] Type:
blockMesh pimpleFoam |
Let us run simulation commands.
First type blockMesh for meshing and then pimpleFoam to run the simulation. |
[Terminal] Type:
paraFoam |
In just a few seconds, the simulation is finished.
Let us open our case in ParaView using the paraFoam command. |
[ParaView] Properties Tab
Click on Apply button |
Click on the apply button and see the velocity field. |
[ParaView]
VCR Controls => Click on Last Frame
&& Active Variable Controls => Click on vtkBlockColors ==> Click on a box icon
|
On the top of the screen, click on the last frame as shown.
Click on vtkBlockColors on the top-left and from the drop down menu select U with box icon |
[ParaView]
Showing Velocity Contour |
As you can see, we have the same profile or velocity distribution all over the domain. |
[ParaView]
Data Analysis => Click on plot over line filter
|
Now, let us check the velocity profile over radial distance.
Click on the plot over line icon located on top of the screen as shown. |
[ParaView]
Properties Tab => Click on y-axis && Properties Tab => Click on Apply |
Click on the y-axis and then click on the Apply button.
As we can see, it is parabolic. The maximum velocity is 1.5 m/s. |
where is the analytic solution?
Point to it, instead writing only Narration.Only Narration |
Now, let us compare our result with the analytical solution. |
Slide: Result Comparison | From the comparison we can find the following.
Cyclic condition results exactly match the analytical solution and full-length channel case. The time consumed to simulate cyclic cases is less than the entire domain case. |
Slide:
Summary |
In this tutorial, we have learned to,
|
Slide:
Assignment |
As an assignment:
|
Slide:
About the Spoken Tutorial Project |
The video at the following link summarizes 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 |
|
Slide: FOSSEE Forum |
|
Slide: FOSSEE Case Study Project |
|
Slide: Spoken Tutorial | The Spoken Tutorial project is supported by the Ministry of Education, Govt. of India.
This tutorial is contributed by Divyesh Varya, Aabhushan Regmi and Payel Mukherjee from IIT Bombay. Thank you for joining. |