Difference between revisions of "OpenFOAM/C3/Using-Template-files-in-PyFoam/English"

From Script | Spoken-Tutorial
Jump to: navigation, search
 
(13 intermediate revisions by one other user not shown)
Line 13: Line 13:
 
|-
 
|-
 
| style="border:0.25pt solid #000000;padding:0cm;"| Show slide : Title
 
| style="border:0.25pt solid #000000;padding:0cm;"| Show slide : Title
| style="border:0.25pt solid #000000;padding:0cm;"| Hello and welcome to the Spoken Tutorial on '''Using Template files in PyFoam.'''
+
| style="border:0.25pt solid #000000;padding:0cm;"| Hello and welcome to the spoken tutorial on '''Using Template files in PyFoam.'''
  
 
|-
 
|-
Line 22: Line 22:
 
* Create and use template files
 
* Create and use template files
 
* Use '''PyFoamFromTemplate.py '''for solving the '''supersonic flow over wedge'''
 
* Use '''PyFoamFromTemplate.py '''for solving the '''supersonic flow over wedge'''
 
+
*We can run this for different '''wedge angles '''using '''template '''files.
We can run this for different '''wedge angles '''using '''template '''files.
+
  
 
|-
 
|-
Line 40: Line 39:
 
* Experience of running and analyzing '''OpenFOAM '''cases
 
* Experience of running and analyzing '''OpenFOAM '''cases
  
If not, please refer to the spoken tutorial series on '''Linux '''and '''OpenFOAM'''.
+
If not, please refer to the spoken tutorial series on '''Linux '''and
 +
 
 +
'''OpenFOAM'''.
  
 
|-
 
|-
Line 46: Line 47:
 
| style="border:0.25pt solid #000000;padding:0cm;"| What are '''template '''files?
 
| style="border:0.25pt solid #000000;padding:0cm;"| What are '''template '''files?
  
'''Template '''files are used to generate '''OpenFOAM '''files like
+
'''Template '''files are used to generate '''OpenFOAM '''files like '''blockMeshDict or controlDict'''
  
'''blockMeshDict or controlDict'''
 
  
 
'''Template '''files can be programmed, hence we can procedurally generate data.
 
'''Template '''files can be programmed, hence we can procedurally generate data.
 +
 
|-
 
|-
 
| style="border:0.25pt solid #000000;padding:0cm;"| Show slide : Syntax of Template files
 
| style="border:0.25pt solid #000000;padding:0cm;"| Show slide : Syntax of Template files
Line 57: Line 58:
 
* Any line beginning with '''$$ '''is a '''Python program '''line.
 
* Any line beginning with '''$$ '''is a '''Python program '''line.
 
* It will be executed by '''Python'''
 
* It will be executed by '''Python'''
* Any variable can be substituted in the file by using the syntax
+
* Any variable can be substituted in the file by using the syntax '''| -varname - |'''
 
+
'''| -varname - |'''
+
  
 
|-
 
|-
Line 78: Line 77:
 
| style="border:0.25pt solid #000000;padding:0cm;"| Type '''run/tutorials/compres sible/rhoCentralFoam'''
 
| style="border:0.25pt solid #000000;padding:0cm;"| Type '''run/tutorials/compres sible/rhoCentralFoam'''
 
| style="border:0.25pt solid #000000;padding:0cm;"| Open the '''terminal'''.
 
| style="border:0.25pt solid #000000;padding:0cm;"| Open the '''terminal'''.
 +
  
 
Type the '''path '''for the '''rhoCentralFoam '''inside '''compressible solvers.'''
 
Type the '''path '''for the '''rhoCentralFoam '''inside '''compressible solvers.'''
Line 84: Line 84:
 
| style="border:0.25pt solid #000000;padding:0cm;"| Type
 
| style="border:0.25pt solid #000000;padding:0cm;"| Type
  
'''cp -r Wedge5M15'''
+
'''cp -r Wedge15Ma5'''
  
'''/home/fossee/OpenFO AM/'''
+
'''/home/fossee/OpenFOAM/'''
| style="border:0.25pt solid #000000;padding:0cm;"| Now copy the '''Wedge5M15 case directory '''into '''OpenFOAM directory'''
+
| style="border:0.25pt solid #000000;padding:0cm;"| Now copy the '''Wedge15Ma5 case directory '''into '''OpenFOAM directory'''
  
 
by typing
 
by typing
  
'''cp -r Wedge5M15 /home/fossee/OpenFOAM/ '''and press '''Enter.'''
+
'''cp -r Wedge15Ma5 '''
 +
 
 +
Type the path of '''your OpenFOAM directory''' and press '''Enter.'''
  
 
|-
 
|-
 
| style="border:0.25pt solid #000000;padding:0cm;"| '''Cd OpenFOAM/Wedge5 M15'''
 
| style="border:0.25pt solid #000000;padding:0cm;"| '''Cd OpenFOAM/Wedge5 M15'''
| style="border:0.25pt solid #000000;padding:0cm;"| On the '''terminal, '''type the path for '''Wedge5M15 folder '''inside
+
| style="border:0.25pt solid #000000;padding:0cm;"| On the '''terminal, '''type the path for '''Wedge15Ma5 folder '''inside '''OpenFOAM directory.'''
 
+
'''OpenFOAM directory.'''
+
  
 
|-
 
|-
Line 126: Line 126:
 
| style="border-top:0.25pt solid #000000;border-bottom:none;border-left:0.25pt solid #000000;border-right:0.25pt solid #000000;padding:0cm;"| On the terminal type
 
| style="border-top:0.25pt solid #000000;border-bottom:none;border-left:0.25pt solid #000000;border-right:0.25pt solid #000000;padding:0cm;"| On the terminal type
  
'''cp -r blockMeshDict >'''
+
'''cp -r blockMeshDict '''
  
 
'''blockMeshDict.templ'''
 
'''blockMeshDict.templ'''
Line 133: Line 133:
 
| style="border-top:0.25pt solid #000000;border-bottom:none;border-left:0.25pt solid #000000;border-right:0.25pt solid #000000;padding:0cm;"| Switch back to the '''terminal'''.
 
| style="border-top:0.25pt solid #000000;border-bottom:none;border-left:0.25pt solid #000000;border-right:0.25pt solid #000000;padding:0cm;"| Switch back to the '''terminal'''.
  
Copy your '''blockMeshDict '''file into a file called '''blockMeshDict.template.'''
+
Copy your '''blockMeshDict '''file into a file called '''blockMeshDict.template'''
 +
 
  
 
Type the following-
 
Type the following-
  
'''cp -r blockMeshDict > blockMeshDict.template'''
+
'''cp -r blockMeshDict blockMeshDict.template'''
  
 
|-
 
|-
| style="border:0.25pt solid #000000;padding:0cm;"| gedit blockMeshDict.template
+
| style="border:0.25pt solid #000000;padding:0cm;"| gedit blockMeshDict.templat e
 
| style="border:0.25pt solid #000000;padding:0cm;"| Open the '''blockMeshDict.template''' file using '''gedit'''.
 
| style="border:0.25pt solid #000000;padding:0cm;"| Open the '''blockMeshDict.template''' file using '''gedit'''.
  
 
|-
 
|-
 
| style="border:0.25pt solid #000000;padding:0cm;"| Show slide : Template file syntax
 
| style="border:0.25pt solid #000000;padding:0cm;"| Show slide : Template file syntax
| style="border:0.25pt solid #000000;padding:0cm;"| Add the following lines above '''convertToMeters'''
+
| style="border:0.25pt solid #000000;padding:0cm;"| Add the following lines above '''convertToMeters'''.
 +
 
 +
|-
 +
| style="border:0.25pt solid #000000;padding:0cm;"| Edit '''blockMeshDict.template'''
 +
| style="border:0.25pt solid #000000;padding:0cm;"| Any line preceded with '''$$ ''' is a '''Python ''' line, and will be interpreted and executed by '''Python'''
  
 
'''$$import math'''
 
'''$$import math'''
Line 154: Line 159:
  
 
'''$$y_coord <nowiki>=</nowiki> 0.3048* math . tan ( thetaRadians )'''
 
'''$$y_coord <nowiki>=</nowiki> 0.3048* math . tan ( thetaRadians )'''
 
 
Any line preceded with '''$$ '''is a '''Python '''line, and will be interpreted and executed by '''Python'''
 
  
 
|-
 
|-
 
| style="border:0.25pt solid #000000;padding:0cm;"| Show slide : Template file syntax
 
| style="border:0.25pt solid #000000;padding:0cm;"| Show slide : Template file syntax
 
| style="border:0.25pt solid #000000;padding:0cm;"| Modify the '''vertices '''entry as
 
| style="border:0.25pt solid #000000;padding:0cm;"| Modify the '''vertices '''entry as
 +
  
 
'''( 0.3048 |-y_coord-| -0.005)'''
 
'''( 0.3048 |-y_coord-| -0.005)'''
 +
  
 
'''( 0.3048 |-y_coord-| 0.005)'''
 
'''( 0.3048 |-y_coord-| 0.005)'''
Line 188: Line 192:
 
| style="border:0.25pt solid #000000;padding:0cm;"| templateFileConst
 
| style="border:0.25pt solid #000000;padding:0cm;"| templateFileConst
 
| style="border:0.25pt solid #000000;padding:0cm;"| Create a dummy entry inside it by typing
 
| style="border:0.25pt solid #000000;padding:0cm;"| Create a dummy entry inside it by typing
 +
  
 
'''dummy 1.0;'''
 
'''dummy 1.0;'''
 +
  
 
A dummy entry is mandatory.
 
A dummy entry is mandatory.
 +
  
 
An external '''dict '''has to be provided with any '''constant '''that is to be used in the '''template '''file.
 
An external '''dict '''has to be provided with any '''constant '''that is to be used in the '''template '''file.
Line 201: Line 208:
 
|-
 
|-
 
| style="border:0.25pt solid #000000;padding:0cm;"| Show slide : Running PyFoam command
 
| style="border:0.25pt solid #000000;padding:0cm;"| Show slide : Running PyFoam command
| style="border:0.25pt solid #000000;padding:0cm;"| We have to run the '''template''' command now.
+
| style="border:0.25pt solid #000000;padding:0cm;"| We have to run the '''template command''' now.
 +
 
  
 
'''pyFoamFromTemplate.py --template-file<nowiki>=</nowiki>./blockMeshDict.template'''
 
'''pyFoamFromTemplate.py --template-file<nowiki>=</nowiki>./blockMeshDict.template'''
Line 215: Line 223:
 
|-
 
|-
 
| style="border:0.25pt solid #000000;padding:0cm;"| Point to '''blockMeshDict '''and a python file
 
| style="border:0.25pt solid #000000;padding:0cm;"| Point to '''blockMeshDict '''and a python file
| style="border:0.25pt solid #000000;padding:0cm;"| We can see that 2 new files are generated.
+
| style="border:0.25pt solid #000000;padding:0cm;"| We can see that
 
+
  
The '''blockMeshDict ''' and a '''Python '''file is also generated.
+
* 2 new files are generated
 +
* the '''blockMeshDict'''
 +
* and a '''Python '''file is also generated.
  
 
|-
 
|-
| style="border:0.25pt solid #000000;padding:0cm;"| Point to the '''Python'''
+
| style="border:0.25pt solid #000000;padding:0cm;"| Point to the '''Python''' file.
 
+
file.
+
 
| style="border:0.25pt solid #000000;padding:0cm;"| Do not edit the '''Python '''file.
 
| style="border:0.25pt solid #000000;padding:0cm;"| Do not edit the '''Python '''file.
  
Line 230: Line 237:
  
 
'''gedit blockMeshDict'''
 
'''gedit blockMeshDict'''
| style="border:0.25pt solid #000000;padding:0cm;"| In the '''terminal''', open the '''blockMeshDict '''file by typing -
+
| style="border:0.25pt solid #000000;padding:0cm;"| Open the '''blockMeshDict '''file by typing -
  
'''gedit blockMeshDict '''and press '''Enter.'''
+
|-
 +
| style="border:0.25pt solid #000000;padding:0cm;"|
 +
| style="border:0.25pt solid #000000;padding:0cm;"| '''gedit blockMeshDict '''and press '''Enter.'''
  
 
|-
 
|-
Line 260: Line 269:
 
| style="border:0.25pt solid #000000;padding:0cm;"| Let us summarize.
 
| style="border:0.25pt solid #000000;padding:0cm;"| Let us summarize.
  
In this tutorial, we learnt about '''PyFoam Template'''
+
In this tutorial, we learnt about '''PyFoam Template Files'''
  
 
We also learnt to-
 
We also learnt to-
  
# check the installation of '''script for using template'''
+
# Create and use '''template files'''
 
# and using the '''PyFoamFromTemplate.py '''command
 
# and using the '''PyFoamFromTemplate.py '''command
  
 
|-
 
|-
 
| style="border:0.25pt solid #000000;padding:0cm;"| Show Slide
 
| style="border:0.25pt solid #000000;padding:0cm;"| Show Slide
 +
  
 
Forum to answer questions
 
Forum to answer questions
Line 275: Line 285:
 
|-
 
|-
 
| style="border:0.25pt solid #000000;padding:0cm;"| Show Slide
 
| style="border:0.25pt solid #000000;padding:0cm;"| Show Slide
 +
  
 
Forum to answer questions
 
Forum to answer questions
Line 286: Line 297:
 
| style="border:0.25pt solid #000000;padding:0cm;"| Show Slide Acknowledgement
 
| style="border:0.25pt solid #000000;padding:0cm;"| Show Slide Acknowledgement
 
| style="border:0.25pt solid #000000;padding:0cm;"| The Spoken Tutorial Project is funded by NMEICT, MHRD, Govt. of India
 
| style="border:0.25pt solid #000000;padding:0cm;"| The Spoken Tutorial Project is funded by NMEICT, MHRD, Govt. of India
 +
  
 
For more details , visit this website.
 
For more details , visit this website.

Latest revision as of 10:38, 2 March 2017

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