OpenFOAM/C3/Using-Template-files-in-PyFoam/English

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

Tutorial 21: C2

Title : Using Template files in PyFoam Script : Anmol Sahoo, Rahul Joshi Narration : Rahul Joshi

Keywords : OpenFOAM, PyFoam, Python, Template, supersonic flow, wedge


Visual Cue
Narration
Show slide : Title Hello and welcome to the spoken tutorial on Using Template files in PyFoam.
Show Slide : Learning Objective In this tutorial we will:
  • Understand the function of PyFoam Utilities
  • Create and use template files
  • Use PyFoamFromTemplate.py for solving the supersonic flow over wedge
  • We can run this for different wedge angles using template files.
Show Slide : System requirement To record this tutorial I am using
  • Ubuntu Linux Operating System 14.04
  • OpenFOAM 2.3.0
  • PyFoam-0.6.5
Show slide : Prerequisite To practice this tutorial the user should have :
  • Basic Knowledge of using Linux terminal
  • Experience of running and analyzing OpenFOAM cases

If not, please refer to the spoken tutorial series on Linux and

OpenFOAM.

Show slide : Template Files What are template files?

Template files are used to generate OpenFOAM files like blockMeshDict or controlDict


Template files can be programmed, hence we can procedurally generate data.

Show slide : Syntax of Template files A template file should be an OpenFOAM file, with the following -
  • Any line beginning with $$ is a Python program line.
  • It will be executed by Python
  • Any variable can be substituted in the file by using the syntax | -varname - |
Show slide : Using a template file The following steps should be followed to use a template file :
  • First copy an existing file
  • After this create a template file
  • Then run PyFoamFromTemplate.py
Show slide : Creating a template file Template file will be created for blockMeshDict.

We will use the supersonic flow over a wedge as an example case. The case file is available in the rhoCentralFoam solver.

Type run/tutorials/compres sible/rhoCentralFoam Open the terminal.


Type the path for the rhoCentralFoam inside compressible solvers.

Type

cp -r Wedge15Ma5

/home/fossee/OpenFOAM/

Now copy the Wedge15Ma5 case directory into OpenFOAM directory

by typing

cp -r Wedge15Ma5

Type the path of your OpenFOAM directory and press Enter.

Cd OpenFOAM/Wedge5 M15 On the terminal, type the path for Wedge15Ma5 folder inside OpenFOAM directory.
Type cd constant/polyMesh/bl ockMeshDict Type the path for blockMeshDict file inside polyMesh directory inside constant.
Type gedit blockMeshDict Open the blockMeshDict file in any editor of your choice.
Point to the vertices section We can see the vertices section.
Show slide : vertices to

be changed

We need to calculate the co-ordinates of the end points of the slope.

Based on the angle, change the following lines

( 0.3048 0.081670913853 -0.005)

( 0.3048 0.081670913853 0.005)

On the terminal type

cp -r blockMeshDict

blockMeshDict.templ

ate

Switch back to the terminal.

Copy your blockMeshDict file into a file called blockMeshDict.template


Type the following-

cp -r blockMeshDict blockMeshDict.template

gedit blockMeshDict.templat e Open the blockMeshDict.template file using gedit.
Show slide : Template file syntax Add the following lines above convertToMeters.
Edit blockMeshDict.template Any line preceded with $$ is a Python line, and will be interpreted and executed by Python

$$import math

$$thetaDegrees = 10.0

$$thetaRadians = math . radians ( thetaDegrees )

$$y_coord = 0.3048* math . tan ( thetaRadians )

Show slide : Template file syntax Modify the vertices entry as


( 0.3048 |-y_coord-| -0.005)


( 0.3048 |-y_coord-| 0.005)

Python variables assigned in the template file, should be substituted at any location in the file.


To do so, use | −varname− | in the file.

Highlight or point to the changes We can see the changes made into this file.
Now, let's create a blank file.
Type gedit templateFileConst On the terminal, type gedit templateFileConst and press Enter.
templateFileConst Create a dummy entry inside it by typing


dummy 1.0;


A dummy entry is mandatory.


An external dict has to be provided with any constant that is to be used in the template file.

Press Ctrl+S and close Save and close the file.
Show slide : Running PyFoam command We have to run the template command now.


pyFoamFromTemplate.py --template-file=./blockMeshDict.template

--output=./blockMeshDict --values-dictionary=templateFileConst

--allow-exec-instead-of-assignment

Type this command in terminal >> press Enter Type this command in terminal and press Enter
Point to blockMeshDict and a python file We can see that
  • 2 new files are generated
  • the blockMeshDict
  • and a Python file is also generated.
Point to the Python file. Do not edit the Python file.
On the terminal type

gedit blockMeshDict

Open the blockMeshDict file by typing -
gedit blockMeshDict and press Enter.
Point to wedge angle We had changed the wedge angle from 15 deg to 10 deg.
Point to end points The end points of the slope have also changed.
Show slide :Running the case file We can now run the case file by executing the OpenFOAM commands
  • blockMesh
  • rhoCentralFoam
  • visualize the results using Paraview.
Show slide : Assignment As an assignment, use the following wedge angles and run the template commands.

- 0deg, 5 deg, 20 deg, 25 deg

Show slide : Summary Let us summarize.

In this tutorial, we learnt about PyFoam Template Files

We also learnt to-

  1. Create and use template files
  2. and using the PyFoamFromTemplate.py command
Show Slide


Forum to answer questions

Please post your timed queries in this forum.
Show Slide


Forum to answer questions

Please post your general queries on OpenFOAM in this forum.
Show Slide Textbook Companion The FOSSEE team coordinates the TBC project.
Show Slide Acknowledgement The Spoken Tutorial Project is funded by NMEICT, MHRD, Govt. of India


For more details , visit this website.

Thank You This is Rahul Joshi from IIT Bombay signing off. Thanks for watching

Contributors and Content Editors

Nancyvarkey, Viraj20feb