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

From Script | Spoken-Tutorial
Jump to: navigation, search
 
(11 intermediate revisions by one other user not shown)
Line 18: Line 18:
 
| style="border:0.25pt solid #000000;padding:0cm;"| Show Slide : Learning Objective
 
| style="border:0.25pt solid #000000;padding:0cm;"| Show Slide : Learning Objective
 
| style="border:0.25pt solid #000000;padding:0cm;"| In this tutorial we will:
 
| style="border:0.25pt solid #000000;padding:0cm;"| In this tutorial we will:
 
  
 
* Understand the function of '''PyFoam Utilities'''
 
* Understand the function of '''PyFoam Utilities'''
 
* 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.
+
  
 
|-
 
|-
 
| style="border:0.25pt solid #000000;padding:0cm;"| Show Slide : System requirement
 
| style="border:0.25pt solid #000000;padding:0cm;"| Show Slide : System requirement
 
| style="border:0.25pt solid #000000;padding:0cm;"| To record this tutorial I am using
 
| style="border:0.25pt solid #000000;padding:0cm;"| To record this tutorial I am using
 
  
 
* '''Ubuntu Linux '''Operating System 14.04
 
* '''Ubuntu Linux '''Operating System 14.04
 
* '''OpenFOAM''' 2.3.0
 
* '''OpenFOAM''' 2.3.0
 
* '''PyFoam-0.6.5'''
 
* '''PyFoam-0.6.5'''
 
 
  
 
|-
 
|-
 
| style="border:0.25pt solid #000000;padding:0cm;"| Show slide : Prerequisite
 
| style="border:0.25pt solid #000000;padding:0cm;"| Show slide : Prerequisite
 
| style="border:0.25pt solid #000000;padding:0cm;"| To practice this tutorial the user should have :
 
| style="border:0.25pt solid #000000;padding:0cm;"| To practice this tutorial the user should have :
 
  
 
* Basic Knowledge of using '''Linux terminal'''
 
* Basic Knowledge of using '''Linux terminal'''
Line 53: 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'''
+
  
  
Line 66: 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 94: 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/OpenFOAM/'''
 
'''/home/fossee/OpenFOAM/'''
Line 101: Line 91:
 
by typing
 
by typing
  
'''cp -r Wedge15Ma5 ~/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.'''
+
  
 
|-
 
|-
 
| style="border:0.25pt solid #000000;padding:0cm;"| Type '''cd constant/polyMesh/bl ockMeshDict'''
 
| style="border:0.25pt solid #000000;padding:0cm;"| Type '''cd constant/polyMesh/bl ockMeshDict'''
| style="border:0.25pt solid #000000;padding:0cm;"| Type the '''path '''for '''blockMeshDict file '''inside '''polyMesh directory '''inside
+
| style="border:0.25pt solid #000000;padding:0cm;"| Type the '''path '''for '''blockMeshDict file '''inside '''polyMesh directory '''inside '''constant.'''
 
+
'''constant.'''
+
  
 
|-
 
|-
Line 138: 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'''
  
 
'''ate'''
 
'''ate'''
| 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
+
Copy your '''blockMeshDict '''file into a file called '''blockMeshDict.template'''
  
'''blockMeshDict.template, '''type the following-
 
  
'''cp -r blockMeshDict > blockMeshDict.template'''
+
Type the following-
 +
 
 +
'''cp -r blockMeshDict blockMeshDict.template'''
  
 
|-
 
|-
 
| style="border:0.25pt solid #000000;padding:0cm;"| gedit blockMeshDict.templat e
 
| 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 any editor
+
| 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 167: 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
 
 
|-
 
| style="border:0.25pt solid #000000;padding:0cm;"|
 
| style="border:0.25pt solid #000000;padding:0cm;"| executed by '''Python'''
 
  
 
|-
 
|-
Line 198: Line 183:
 
|-
 
|-
 
| style="border:0.25pt solid #000000;padding:0cm;"|  
 
| style="border:0.25pt solid #000000;padding:0cm;"|  
| style="border:0.25pt solid #000000;padding:0cm;"| Now, let's create a blank file
+
| style="border:0.25pt solid #000000;padding:0cm;"| Now, let's create a blank file.
  
 
|-
 
|-
Line 219: Line 204:
 
|-
 
|-
 
| style="border:0.25pt solid #000000;padding:0cm;"| Press Ctrl+S and close
 
| style="border:0.25pt solid #000000;padding:0cm;"| Press Ctrl+S and close
| style="border:0.25pt solid #000000;padding:0cm;"| Save and close the both the files
+
| style="border:0.25pt solid #000000;padding:0cm;"| Save and close the file.
 
+
|-
+
| style="border:0.25pt solid #000000;padding:0cm;"| cd ../../
+
| style="border:0.25pt solid #000000;padding:0cm;"| Now go 2 levels back to your '''case '''file.
+
 
+
|-
+
| style="border:0.25pt solid #000000;padding:0cm;"| Switch back to slides
+
| style="border:0.25pt solid #000000;padding:0cm;"| Let me switch back to slides
+
  
 
|-
 
|-
 
| 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.
  
  
Line 243: Line 220:
 
| style="border:0.25pt solid #000000;padding:0cm;"| Type this command in '''terminal '''>> press '''Enter'''
 
| style="border:0.25pt solid #000000;padding:0cm;"| Type this command in '''terminal '''>> press '''Enter'''
 
| style="border:0.25pt solid #000000;padding:0cm;"| Type this command in '''terminal '''and press '''Enter'''
 
| style="border:0.25pt solid #000000;padding:0cm;"| Type this command in '''terminal '''and press '''Enter'''
 
|-
 
| style="border:0.25pt solid #000000;padding:0cm;"| Type '''cd constant/polyMesh'''
 
| style="border:0.25pt solid #000000;padding:0cm;"| Now again go inisde the '''polyMesh folder '''inside '''constant'''
 
  
 
|-
 
|-
Line 253: Line 226:
  
 
* 2 new files are generated
 
* 2 new files are generated
* the '''blockMeshDict.template '''file is replaced by '''blockMeshDict'''
+
* the '''blockMeshDict'''
* and '''.py '''file is also generated.
+
* 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 268: 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 -
  
 
|-
 
|-
Line 289: Line 258:
 
* '''rhoCentralFoam'''
 
* '''rhoCentralFoam'''
 
* visualize the results using '''Paraview.'''
 
* visualize the results using '''Paraview.'''
 
 
  
 
|-
 
|-
 
| style="border:0.25pt solid #000000;padding:0cm;"| Show slide : Assignment
 
| style="border:0.25pt solid #000000;padding:0cm;"| Show slide : Assignment
| style="border:0.25pt solid #000000;padding:0cm;"| As an assignment, use the following '''wedge angles '''and run the '''template'''
+
| style="border:0.25pt solid #000000;padding:0cm;"| As an assignment, use the following '''wedge angles '''and run the '''template''' commands.
 
+
commands.
+
 
+
  
 
- '''0deg, 5 deg, 20 deg, 25 deg'''
 
- '''0deg, 5 deg, 20 deg, 25 deg'''
Line 305: 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 Files'''
In this tutorial, we learnt about '''PyFoam Template'''
+
 
+
  
 
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
 
 
  
 
|-
 
|-

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