Professional Documents
Culture Documents
Trademarks
The OPENFOAM® related products and services are not approved or en-
dorsed by OpenCFD Ltd. (ESI Group), producer of the OpenFOAM soft-
ware and owner of the OPENFOAM® and OpenCFD® trade marks.
Contents
1 TCFD® Introduction 7
1.1 TCFD® = Turbomachinery CFD . . . . . . . . . . . . . . . . . . . . . . 7
1.2 TCFD® Unique Value . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.3 Differences between TCFD® and standard OpenFOAM® . . . . . . . . . 12
1.4 Technical Specifications & Software Features . . . . . . . . . . . . . . . 13
1.5 What is included? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.6 CFD Processor & TCFD® workflow overview . . . . . . . . . . . . . . . 15
1.7 Turbo Blade Post . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.8 ParaView . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.8.1 ParaView License . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3
4 TCFD® – Running & PostProcessing 55
4.1 TCFDManager plugin . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
4.2 TCFDManager settings . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
TCFD® Introduction
TCFD® is not dependent on other software but it is fully compatible with standard
OpenFOAM® and other software packages. It was originally designed for simulating
rotational machines, nevertheless it can be used for a wide range of various CFD simula-
tions.
7
8 TCFD® 17.10 – Manual
The package includes the real tutorials. The tutorials help the user to operate the
model data. The user can easily repeat the whole process with his own data.
CFD Support s.r.o. provides full technical support. TCFD® is maintained and regu-
larly updated. CFD Support engineers are instantly working on additional software mod-
ules and extensions covering even more physical problems. To ensure the smooth start
the extensive training is provided. Experienced lecturer shows the full functionality and
answers all the possible questions.
TCFD® is highly customizable. All the OpenFOAM® parts of the package are devel-
oped under GPL (GNU GENERAL PUBLIC LICENSE Version 3.) All the OpenFOAM®
based components are provided with their source code. Having technical support, any ad-
ditional functions can be added all over the workflow.
In TCFD® its developers made good use of many years experience with using and
developing CFD software. Especially for this workflow were developed special Open-
FOAM® based boundary conditions e.g. to handle the rotor - stator interface or bound-
ary conditions for the inlet and the outlet of the computational domain. The solvers for
TCFD® are very robust and they were heavily tested on real machine cases and showed
perfect agreement with available measurements. The solvers are robust enough to handle
the extreme flow conditions, it shows excellent performance, for example, at transonic
flows.
The TCFD® workflow also contains a number of scripts, OpenFOAM® utilities and
OpenFOAM® function objects for preprocessing and postprocessing. To keep complete
independence of this workflow, the computational mesh is created using OpenFOAM®
utility snappyHexMesh. Of course using snappyHexMesh mesh is not necessary - any
external CFD mesh can be imported and used instead.
TCFD® is a smart, easy-to-use and affordable CFD software. TCFD® was designed for
CFD simulations of all rotating machinery such as pumps, fans, compressors, turbines,
turbochargers, hydro turbines, etc. Both radial and axial machines. Both compressible and
incompressible fluid flows. It is based on OpenFOAM. Turbomachinery CFD is unique
at least for four reasons:
1. TCFD® has No Licensing Policy - which means the users can keep Turbomachin-
ery CFD forever and they can use it for unlimited number of users, jobs or cores.
What is paid for is the first delivery and technical support and software mainte-
nance. This gives the investment in Turbomachinery CFD a permanent value. And
also this means our clients can scale their CFD simulations in a really big way.
2. TCFD® is fully automated - which means all the workflow from the initial data
to the final results report, it can be run by a single command or a single click. And
all the process is being done automatically. For this reason Turbomachinery CFD
is extremely effective.
3. CFD Support delivers the extraordinary technical support. CFD Support keeps
custom approach to every customer. To every issue. CFD Support never leaves
behind any of its clients. Technical support is very flexible. Technical support is
unlimited. CFD Support supports its clients even in matters out of the turboma-
chinery field. For example in: Numerical Mathematics, Physics, CFD, IT or even
Software Engineering.
4. The real tutorials are included - so the TCFD® user has no doubts about the best
practice settings. So there are included the real machines that are already pre-
set. User can basically take one of those tutorials, replace the geometry with his
own, you modify the settings and run the simulation. The rest of the workflow is
automated anyway. So, the requirements on user’s CFD skills are very low.
• Real Tutorials - preset test cases demonstrating how this workflow works on real
examples
The complete process is executed - reading the configuration file - creating new simula-
tion case - CFD setup - simulation run - evaluation of CFD results - writing down the
results report.
Internally, it uses the free OpenFOAM® toolbox – meshers, solvers and utilities – but
saves the user from filling up large amount of necessary configuration files and managing
the workflow of the computation. For this particular usage, a pair of plugins for the widely
used ParaView (www.paraview.org) visualization software has been developed.
The two ParaView plugins TCFDSource and TCFDManager serve as a Graphical User
Interface (GUI) for TCFD® and both of them are described in this manual.
CFD Processor solves for physical volume fields in a finite volume mesh created
inside of a given boundary geometry. The machine is generally composed of several
components (e.g. inlet piping, rotor, stator, outlet piping) that are meshed individually
and have different construction properties. For the usage in CFD Processor each com-
ponent should be provided separately as a set of non-overlapping ASCII STL (Stereo
Lithography) geometry model files, which – put together – form the water-tight boundary
geometry of the component’s volume or the external computational mesh could of each
component can be imported.
• [2.] Simulation phase - it is possible to setup and simulate the whole machine
characteristics (working points) in one simulation (e.g. different flow rates, different
RPMs, different pressure ratios, etc.).
• [3.] Results evaluation - the output is an html report with plots of interesting vari-
ables and colored pictures (e.g. blade-to-blade views, meridional averages, etc.).
The third step can be done independently on the other two. It makes sense to run the
post-processing stage even after the first point of the machine characteristics – to obtain
detailed mesh information and interesting results of the first point (e.g. efficiency, pressure
drop/rise, torque, etc.) in the synoptic html report.
• Turbo Unwrap - for visualization of the blade-to-blade view or 2D plots around the
blades.
More information about Turbo Blade Post can be found in the chapter 9 or on CFD
Support web site: http://www.cfdsupport.com/turbo-blade-post.html.
1.8 ParaView
ParaView is an open source multiple-platform application for interactive, scientific visu-
alization. It has a client–server architecture to facilitate remote visualization of datasets,
and generates level of detail (LOD) models to maintain interactive frame rates for large
datasets. It is an application built on top of the Visualization Tool Kit (VTK) libraries.
Where VTK is a set of libraries that provide visualization services for data, task, and
pipeline parallelism, ParaView is an application designed for data parallelism on shared-
memory or distributed-memory multicomputers and clusters. It can also be run as a
single-computer application.
ParaView offers the possibility to extend its functionality in several directions. This
encompasses modifications to the GUI and implementation of new plugins.
This introductory chapter summarizes the basic steps needed to obtain Turbomachinery
CFD and run one of its preset tutorials. All combinations of operating systems (Lin-
ux/Windows) and user interfaces (console/graphical) are discussed.
See also:
http://www.cfdsupport.com/turbomachinery-cfd-workflow.html
2.1 Windows
1. Request the trial version (this is only for the trial version - in case you pur-
chased the perpetual version - skip this step)
http://www.cfdsupport.com/turbomachinery-cfd-demo.html
2. Download and install OpenFOAM® for Windows (including ParaView and Gnu-
plot):
http://www.cfdsupport.com/download-openfoam-for-windows.
html
3. Download and install TCFD® or TCFD® Demo (note: software versions have
to match; e.g.: Turbomachinery CFD 17.06 fits to OpenFOAM® for Windows
17.06).
4. Download a tutorial:
http://www.cfdsupport.com/download-cases.html
5. Copy two demo license files (License.key and License.dat) to the current Open-
FOAM version directory, typically: C:\OpenFOAM\17.06\* (this is only
for trial version - in case you purchased the perpetual version - skip this step)
19
20 TCFD® 17.10 – Manual
9. Open configuration file e.g. pump.tcfd in via the Load... button in the General
section of the Properties panel located in the left area of the ParaView window.
11. In Pipeline browser select Settings and then apply TCFD Manager filter from the
toolbar.
12. Click Apply, then Write Case and finally Run All.
13. And all the process is done automatically: new case is written into default case name
ofcase0, mesh is created, case is set up, case is simulated, results are evaluated
and report is written down.
15. When the simulation is finished the final results report is written down. It is located
inside the test case:
.\ofcase0\report-ofcase0\ofcase0.html
16. Visual postprocessing can be done in ParaView using Turbo Blade Post plugins
(included).
10. And all the process is done automatically: new case is written into default case name
ofcase0, mesh is created, case is set up, case is simulated, results are evaluated
and report is written down. When the simulation is finished the final results report
is written down immediately. It is located inside the test case:
./ofcase0/report-ofcase0/ofcase0.html
11. Visual postprocessing can be done in ParaView using Turbo Blade Post plugins
(included).
2.2 Linux
1. Request the trial version:
http://www.cfdsupport.com/turbomachinery-cfd-demo.html
2. Download TurbomachineryCFD-17.06v1-linux64-demo.tar.gz
3. In terminal extract into your favorite directory (e.g. /home/michael/):
tar xf TurbomachineryCFD-17.06v1-linux64-demo.tar.gz
4. Download the tutorial:
http://www.cfdsupport.com/download-cases.html
5. Copy two license files (License.key and License.dat) to the directory
TurbomachineryCFD-17.06v1-linux64-demo
6. Ready to run now!
7. In a new terminal source the system variables (with every new terminal, or add this
to your $HOME/.bashrc for permanent usage):
source OpenFOAM/TurbomachineryCFD-17.06v1-linux64-demo/etc/
bashrc-release
8. Extract your tutorial e.g. into your run directory:
/home/michael/OpenFOAM/michael-dev-cfdsupport/run/pump
12. In Pipeline Browser click Settings and then apply TCFDManager filter from the
toolbar.
13. Click Apply, then Write Case and finally Run All.
14. And all the process is done automatically: new case is written into default case name
ofcase0, mesh is created, case is set up, case is simulated, results are evaluated
and report is written down.
15. When the simulation is finished the final results report is written down immediately.
It is located inside the test case:
./ofcase0/report-ofcase0/ofcase0.html
17. Visual postprocessing can be done in ParaView using Turbo Blade Post plugins
(included).
10. And all the process is done automatically: new case is written into default case name
ofcase0, mesh is created, case is set up, case is simulated, results are evaluated
and report is written down. When the simulation is finished the final results report
is written down immediately. It is located inside the test case:
./ofcase0/report-ofcase0/ofcase0.html
11. Visual postprocessing can be done in ParaView using Turbo Blade Post plugins
(included).
A long form will appear in the Properties panel, which may become even longer, depend-
ing on the current settings, if you show the advanced options using the Toggle advanced
properties button next to the search bar (wheel icon). Generally, the advanced properties
have universally reasonable values and are not necessary to modify. Individual sections
of the form can be folded and unfolded by a single click on their header. Double click on
a header will hide all other section than the one clicked.
A new TCFDSource form contains default values. It is also possible to import an
already prepared Turbomachinery CFD setup file (with the *.tcfd extension) into this
form and start editing those. You can load a Turbomachinery CFD setup file by using
23
24 TCFD® 17.10 – Manual
the menu item File > Open... (or using the toolbar button, or the keyboard shortcut Ctrl +
O) and selecting the file in the dialog window.
Once the form is edited to your satisfaction, press Apply. This finalizes the setup and
provides you with a concise table summarizing the options in the syntax of the Turboma-
chinery CFD setup files. Of course, it is possible to edit the entries even after clicking
Apply. If you do, the Apply button will be enabled again and the changes need to be
accepted anew.
The TCFDSource plugin is relatively uncommon with regard to its output. While
most built-in ParaView sources and filters have just one output, TCFDSource provides
two outputs! These are clearly visible in the Pipeline Browser. The output "Settings"
provides a table with raw settings, which can be saved as a *.tcfd file or passed to TCFD-
Manager filter (described in the next chapter). The output "Components" provides the
component geometry and is displayed in the common 3D RenderView.
The state of the form can be saved as a Turbomachinery CFD setup file using the
menu item File > Save Data... (or the appropriate toolbar button, or using the keyboard
shortcut Ctrl + S). In the Save File: dialog first select the correct extension *.tcfd; only
then the correct plugin will be used for writing the data. The form must be confirmed by
Apply before saving.
The following sections provide details for individual form fields.
• The entry "Setup file" contains full path of a Turbomachinery CFD setup file,
which has been used to initialize the fields in the form. It is empty if no such file
has been used. However, it is always possible to load a new file into the form
by pressing "Load..." and selecting a new file from the dialog window. The other
three buttons "Reload", "Save As..." and "Save" have obvious meaning. The same
restriction for the usage of File > Save data... holds also here: One must press
Apply before saving the results.
• The entry "Machine type" offers selection of the type of the machine that is to be
set up. CFD Processor supports the following machines: fan, compressor, pump,
turbine and hydro (water) turbine. Each of these types is slightly different, whether
due to a different assignment of boundary conditions, or the postprocessing tools
used.
3.3 Simulation
The simulation settings are displayed in the figure 3.3.
• The calculation mode can be chosen from the drop-down list "Time manage-
ment". Here one can choose between a simple steady-state calculation, or its com-
bination with some of the transient extensions, which will start from the precom-
puted steady-state results. The options are a classical transient calculation with
mesh motion, where all Mixing planes are replaced by face-weighted interpolation
through AMI, and a "semi-transient" variant which solves transient equations, but
the mesh is static and the rotation is simulated by the MRF method, as in the case
of steady-state calculation.
• When transient mode is chosen, it is possible to give the maximal value of the
"Courant number" throughout the simulation domain. Values above 1.0 should be
used only with extreme caution.
• The entry "Processors" specifies number of processes used to run the mesher and
the solver. OpenFOAM uses MPI (Message Passing Interface) for communication
of the processes.
• If the advanced options are enabled, then the table "Hosts" is visible. It can be
used in conjunction with the "Processors" entry to schedule the running of the
parallel jobs. This table contains nodes, on which the parallel processes will be
launched. The total number of processes given by "Processors" is evenly divided
between the nodes. A new node is added by the plus button. This is by default
the "localhost" node, but the word "localhost" in the first column can be edited
(double-click to enable editing) to any other host name or IP address. The simple
local network information provided by the system utility "getent" is then shown
in the second column. If the node is unknown, the table row will turn red. Such
nodes must be deleted, or the execution will fail. There are several restrictions on
the usage of remote nodes:
– All nodes must be accessible from the workstation where ParaView runs
without password for the current user (i.e. using the public key authentica-
tion), and the same must be true for access between the nodes.
– The MPI and OpenFOAM installations on the workstation and all the nodes
must be identical. Ideally, there is just one installation on a shared network
file system.
– The OpenFOAM case directory is written on a shared network file system, so
that it is accessible both to the front-end workstation used for solution man-
agement via ParaView and to the remote calculation nodes.
• The entry "Numerical order" sets the discretization order of the convection term.
All calculation should converge with the first order. The second order generally
provides more accurate results, but the simulations are often less stable and may
require better meshes or other tuning.
In these expressions ηi is the efficiency evaluated in the i-th iteration, φi is the inlet
or outlet mass flow through the inlet and outlet patches defined in the efficiency
probe (see section “Post-processing”), ξ is the convergence tolerance, the angle
brackets denote the average over the last "Averaging window" iterations (or over
"Transient window" time interval in transient simulations), and the maximal value
is taken from the same time window.
• The switch "Bind to core" prevents migration of parallel processes between cores,
possibly resulting in some speedup. CFD Processor takes care for allocation and
locking of the processes to the most free CPU cores. (Currently only used in Linux-
based systems.)
3.4 Physics
The physical settings are displayed in the figure 3.4.
• The list "Transport model" can be used to select the preferred transport (viscos-
ity) model. There two models available: "constant" and "Sutherland". When
"Sutherland" transport model is selected, the entries "Ts" and "As" (parameters of
the model) will show up. In contrast, when "constant" is selected, then one can set
the Prandtl number "Pr".
• The entry "Molar weight" is used only in compressible simulations to set up the
thermophysical properties of the fluid. Molar weight is a standard chemical prop-
erty of a substance.
• The entry "Heat capacity" is used only in compressible simulations to set up the
thermophysical properties of the fluid. The constant-pressure heat capacity cp is
expected.
• The value of "Heat capacity ratio", γ = cp /cV , is used by the boundary condi-
tion "Total pressure" both in incompressible and compresible calculations. If that
boundary condition is not used, this entry is ignored.
• The switch "Cavitation risk" can be used to request estimation of the cavitation.
This switch is only available for "water" machines. The model was implemented
according to following literature: [6], [17], [18]. See the section 7.6 for details.
Figure 3.4: Plugin TCFDSource – physical settings: Incompressible (top) and compress-
ible (middle) variants and fully enabled multiphase cavitation section (bottom).
©2017 CFD support s.r.o. www.cfdsupport.com 29
30 TCFD® 17.10 – Manual
Table 3.1: Fluid defaults used when "Use fluid defaults" is checked.
3.5 Components
A sample setup of the “Components” section is in the figure 3.6.
The computational domain can be split into any number of sub-domains – the compo-
nents. Components are meshed individually, they can be individually set as rotating and
individually postprocessed.
Each domain can have any number of inlets and outlets and can be connected to any
number of other components through inlet or outlet interfaces. There can be just one in-
let interface from component A to component B, as well as just one outlet component.
As the names “inlet” and “outlet” interface suggest, they should be used with consider-
ation of the anticipated direction of flow. This pre-orientation is a requirement between
rotating and non-rotating components, where the Mixing plane will be used. Between
co-rotating components it is not necessary, as the cyclicAMI interface used in those cases
is symmetrical.
At any time, the current topology of the components is graphically represented in the
component graph at the end of “Components” section. A sample auto-generated compo-
nent graph is displayed in the figure 3.5.
The number of components is controlled by the slider (or edit field) "Number of com-
ponents". When the number of components changes, the number of panels in this section
and also in the advanced mesh properties panels is adjusted accordingly. Every compo-
nent needs a water-tight boundary geometry divided into non-overlapping segments or a
ready-to-use mesh. Currently there are three options for input of component mesh:
• The entry "Scale factor" sets the scale of the length units to be used when pro-
cessing the input geometry and some other form entries (namely "Origin", "Back-
ground mesh size", "Internal point", "Wheel diameter", blade clearance and
distances to interfaces). If "1" is given, then CFD Processor assumes that all
lengths and point coordinates are in meters, whereas if (e.g.) "0.001" is given, it
is assumed that they are in millimeters. This setting is global: It is not possible
to set different length scales for the geometry and for the form entries, or to have
individual geometry files in different scales.
Watch out!
It is extremely important to set the parameter "Scale factor" correctly as it
defines the scale of the STL model. Wrong Scale factor will easily make the
whole geometry ten- (hundred-, thousand-) times bigger or smaller than it is in
reality, resulting in a completely meaningless calculation!
• The entries "Origin" are the coordinates of the rotation axis origin.
• The entries "Axis" are the components of the rotation axis direction vector.
• The entry "Feature edges included angle" is a tuning parameter that specifies
maximal angle (in degrees) that is considered "sharp" by the mesher. When two
faces of a boundary geometry make an angle smaller or equal to this number, then
their common edge will be preserved in mesh (the cells’ edges will be aligned
with this line), otherwise it may be smoothed away. If zero is given, only open
edges of the boundary geometry will be preserved. This parameter is only used by
components that are meshed from STL files.
• Directory with STL files – The directory must contain ASCII STL files which,
when merged, give rise to a water-tight boundary surface. Every STL corresponds
to an OpenFOAM patch (with a name taken from the name of the STL file), except
for interface patches which are ultimately renamed to reflect which components
they connect. Note that the STL file names should consist only of alpha-numerical
characters, dashes and underscores.
• Multi-solid STL file – The input is a single ASCII STL file containing multiple
solids. Every solid must have a unique name within the STL file. That name will
be used for naming the patch. Please make sure that the solid names consist only of
alpha-numerical characters, dashes and underscores.
• External OpenFOAM mesh – The patches (and mesh) are taken from an already
existing OpenFOAM mesh. The mesh creation step for this component will be
skipped.
Every patch has several properties. First of all, it is the patch type, which is one of the
following:
• empty – Boundary in non-physical, artificial, dimension; used in two-dimensional
simulations.
• outlet – Exit from the simulated machine, mostly the last component.
Besides the specific type, every patch can be either rotating or non-rotating, which is con-
trolled by a check-box in the column labeled "rot". Further columns contain the minimal
and maximal refinement and number of layers, which are used during the meshing. It is
possible to change the value by double-clicking on the required field and either modify-
ing the value by hand or using the spin-box buttons. Finally, the column "mxp", available
only for inlet and outlet interface patches, contains the number of Mixing planes . If "0"
is given, the components will be connected using cyclicAMI (direct weighted interpola-
tion); higher values specify number of Mixing plane strips (circular averaging) to use.
Some columns may not be present for specific geometry sources (e.g. for an external
OpenFOAM mesh).
Further options in this section are
• "Component name", which sets the name of the component used in patch names
and report.
• "Rotating component", which makes the whole component rotate (needed for all
componets containing the wheel).
• "Background mesh size", which sets the basic cell size in the three directions for
the rectangular background mesh (all cells will be such or smaller).
• "Internal point", which specifies arbitrary internal point. This is needed by the
mesher. Internal point can be displayed in the RenderView by the adjacent check-
box. When shown, it can be directly manipulated by mouse.
• "Wheel diameter" is a mandatory parameter only for the "fan" machine and is used
for post-processing.
• "Trailing edge gap" is an optional parameter specifying distance between the trail-
ing edge of the blade and the adjacent interface (if any). When given, then the
refinement level for trailing edge STL surfaces will be calculated such that the gap
contains at least 8 cells across.
• "Blade cap gap", commonly called “clearance” is the distance between the blade
cap and the shroud. When given, then the refinement level for blade cap STL sur-
faces will be calculated such that the gap contains at least 8 cells across.
• "Cylindrical radii", which sets the parameters r1 , r2 and r3 of the cylindrical mesh,
• "Cylindrical grading", which sets the parameters g1 , and g2 of the cylindrical mesh
and
Figure 3.5: Plugin TCFDSource – two examples of the (detached) component graph.
Left: Machine has linear topology with single inlet and single outlet. The fluid enters
impeller component, then goes to stator component, where it leaves. Right: Machine has
cyclic topology and multiple inlets, where first inlet has a unique boundary condition,
while the other two have the same boundary condition. Here, the fluid enters stator com-
ponent via one of the three inlets. The stator component can be left through a single outlet,
or the fluid can flow through the rotor part first. The rotor can be skipped e.g. due to a
leakage – fluid that goes through the leakage goes directly from inlet to outlet, without
ever visiting rotor.
3.6 Speedlines
Every simulation consists of individual points with similar setup, which are grouped into
speedlines sharing the rotation speed. Number of speedlines and number of points in
every speedline is chosen in this section. Some other sections then adjust number of their
inputs according to the numbers chosen here.
• The slider "Speedlines" sets the number of speedlines (groups of points with com-
mon rotation speed).
• The entries in "Rotation speed" set the rotation speed of the machine’s wheel
for every speedline, either in radians per second or in full revolutions per minute
(RPM). The unit is chosen in the drop-down box to the right. The number should be
positive when the vector of the angular velocity points in the same direction as the
rotation axis defined in “Components” section (right-hand rule) and negative when
it points into the opposite direction.
• The sliders in "Speedline points" set the number of points in every speedline.
• The entries in "Point iterations" set the number of iterations of steady-state calcula-
tion used for each of the points. This actually sets the maximal number of iterations.
If "Convergence check" is enabled, the solver may terminate even before the it-
eration count reaches this number, if it decides that the efficiency and the fluxes are
sufficiently converged.
• The entries in "Transient times" set the time span of transient calculation used
for each of the points. As in stationary calculation, if "Convergence check" is
enabled, the solver may terminate even before the end of the requested time interval,
if it decides that the efficiency and the fluxes are sufficiently converged.
3.7 Turbulence
Currently there are several turbulence models supported by TCFDSource:
• k − model
One of the models has to be selected in the section “Turbulence” and if the advanced
parameters are enabled, the user can also tune parameters of the chosen turbulence model.
The default values of the model parameters are shown in the figure 3.9. Independently of
the turbulence model the user can also require wall roughness, which will be applied on
all walls in the case.
• "Turbulent energy intensity" sets the fraction of the inlet turbulent and total kinetic
energy k/ 12 ρU 2 , typically five per cent (0.05).
• "Turbulent dissipation" sets the inlet turbulent energy dissipation within the k
models, or the inlet turbulent energy dissipation rate ω within the k − ω turbulent
model.
• "Turbulent eddy viscosity" sets the incoming value of the quantity ν̃.
The exclusive parameters of the "Mass flow rate" inlet boundary condition are:
The exclusive parameters of the "Volumetric flow rate" inlet boundary condition are:
The exclusive parameters of the "Total pressure" inlet boundary condition are:
• "Total temperature", which is the inlet total temperature Ttot (only needed and
available for compressible simulations).
The flow rate boundary conditions have also directed variants ("Directed mass flow
rate" and "Directed volumetric flow rate"), which allow specification of the angle of the
velocity vectors at inlet. This is done by setting the meridional and circumferential angle
of the inlet direction. The inlet direction is a vector that points typically outside from the
geometry and the velocity vectors will be oriented to be antiparallel with the inlet direc-
tion vectors (i.e. to point inwards). The meridional angle is the angle between the inlet
direction vectors and the direction of the rotation axis. Allowed values of the meridional
angle are between 0 and 180 degrees. The circumferential angle of the inlet direction
vector at a given face is the angle between the inlet direction vector and the plane formed
by the axis and the position vector of the given face. The range of the circumferential
angles is from -90 degrees to +90 degrees, where positive angles correspond to positive
orientation with respect to the rotation axis (right hand rule).
Most of the dimensioned quantities have a user-selectable unit. Also, when the cal-
culation is set up as transient and the advanced mode is switched on, then some of the
boundary condition parameters accept a CSV file with time-dependent values of the pa-
rameter. The first column of the CSV file must contain the times, the second column must
contain the values of the parameter (e.g. mass flow or total pressure), in the same units
as chosen for the steady-state initial calculation. Clicking on “+ CSV” button will open a
file selection dialog; alternatively, the path to the file can be put by hand into the edit field
next to the button. When no time-dependent CSV data are specified, then the transient
calculation will use the same value for the boundary condition parameter as the stationary
calculation. If the calculation is set to run longer than what times are available in the CSV
file, it will use the last available value of the parameter once the maximal time edfined in
CSV is exceeded.
Figure 3.10: Plugin TCFDSource – inlet boundary conditions: Mass flow rate.
Figure 3.11: Plugin TCFDSource – inlet boundary conditions: Directed volumetric flow
rate.
The boundary condition "Outlet vent" adjusts the pressure based on the velocity:
pBC = p + 12 RU 2 , where R is the so called resistance. The parameters are
• "Resistance", which specifies the outlet vent resistance R; it can contain multiple
resistance if multiple points are to be computed;
• "Relaxation", which specifies the relaxation of the pressure fields between the iter-
ations of the solver;
Figure 3.12: Plugin TCFDSource – outlet boundary conditions: Fixed pressure (top),
and outlet vent (bottom).
• The entry "Pressure" sets a constant value of initial pressure throughout the com-
putational domain. The solver will then iteratively improve this initial estimate.
• The entry "Velocity" sets a constant value of initial velocity throughout the compu-
tational domain. It is recommended that the initial flow follows the overall expected
flow direction, typically along the rotation axis.
• The entry "Turbulent energy" sets a constant value of initial turbulent energy k
throughout the computational domain. This is only needed when using k − ω or
k − turbulence model.
• The entry "Turbulent dissipation" sets a constant value of initial turbulent dissipa-
tion rate throughout the computational domain. This is only needed when using
k − turbulence mode.
• The entry "Turbulent dissipation rate" sets a constant value of initial turbulent
dissipation rate ω throughout the computational domain. This is only needed when
using k − ω turbulence mode.
On the contrary, when using the mapped initial condition, the fields will be initialized
by results from some other OpenFOAM calculation. The meshes of the old and the new
calculation need to be very similar and the boundary patches in both cases must have the
same names.
• The entry "Source case" is a path to a directory with a completed TCFD (or gen-
erally OpenFOAM) calculation to be used.
• If the selected case is a valid OpenFOAM case, the selection list "Source time"
can be used to select a particular (stationary) time result directory from the chosen
case.
Figure 3.13: Plugin TCFDSource – initial conditions: Manual (top) and mapped (bot-
tom) variants.
• The entry "Minimal pressure" sets the lower bound for the pressure. If there is a
cell with a lower pressure after a solver iteration it will be adjusted to this value.
This bounding can help in the beginning of the solution process, when the fields
wildly oscillate iteration-to-iteration before stabilization. The minimal and max-
imal pressure bounds are given in numerical units, which is Pa in compressible
calculation and Pa/(kg/m3 ) = m2 /s2 in incompressible calculation, and in both
cases without contribution of the reference pressure.
• The entry "Maximal pressure" sets the upper bound for the pressure.
• The entry "Maximal velocity" sets the upper bound for the magnitude of the veloc-
ity. Larger vectors are scaled to this magnitude.
• The entry "Minimal temperature" sets the lower bound for the temperature. This
is only available for the compressible setup.
• The entry "Maximal temperature" sets the upper bound for the temperature. This
is only available for the compressible setup.
• The entry "Minimal density" sets the lower bound for the density. This is only
available for the compressible setup.
• The entry "Maximal density" sets the upper bound for the density. This is only
available for the compressible setup.
Table 3.2: Plugin TCFDSource – default relaxation factors for all possible setups. The
compressible subsonic setup is used for fans, the compressible transonic setup is used for
compressors and compressible turbines.
Figure 3.14: Plugin TCFDSource – simulation controls: relaxation factors and bounding
limits.
3.12 Post-processing
This section allows user to define how the post-processing (evaluation of results and gen-
eration of a report) will be done.
• The entry "Averaging window" sets the number of iterations used for calculation
of the averaged fields. Also, this interval is used to monitor convergence: If the
efficiency, inflow and outflow change negligibly during the window, the point is
deemed converged. Finally, it acts as a smoothing interval for the figures in the
resulting report.
• The entry "Snapshot interval" has only effect in a transient calculation. It serves
for regular write-out of the results during the calculation, so that they can be later
used e.g. to construct an animation.
• The element "Snapshot fields" can be used to select fields that will be written
during a snapshot. Quantities other than velocity and pressure are rarely needed.
• The selection "Report pressure unit" defines the pressure unit that will be used in
the calculation report.
• The selection "Report temperature unit" defines the temperature unit that will be
used in the calculation report.
• The selection "Report mass flow unit" defines the mass flow unit that will be used
in the calculation report.
• The selection "Report vol. flow unit" defines the volumetric flow unit that will be
used in the calculation report.
• The list "Total pressure profile path" offers the possibility to select a path though
the simulated machine (in terms of component indices) that will be used when plot-
ting the total pressure along the flow (one point per interface encountered on the
way). For linear component topology with single inlet to the first component and
single outlet from the last component there will be only one path and the resulting
total pressure graph will simply correspond to the total pressure variations between
the inlet and the outlet. But for more complicated topologies with cycles of multiple
inlets/outlets there are generally more ways how to choose the path.
• The table "Efficiency probes" has by default a single generic row, which corre-
sponds to the default report being generated. Every row of the table defines inlet,
torque and outlet patches. It is possible to add more rows to this table with different
contents, so that more reports will be generated for the chosen evaluation method.
The inlet and outlet patches are used to calculate mass flow and total pressure differ-
ence, the torque patches are used to calculate the torque expended by the fluid/blade
(depending on the machine). Together, they are used to evaluate efficiency and other
quantitites. The switch "convergence" determines whether this particular probe is
considered by the convergence check; the calculation will be stopped as converged
only when all probes with enabled "convergence" switch sufficiently converge. The
switch “flux weight” determines whether the quantities used to calculate efficiency
are calculated from area-averaged or mass-flow-averaged quantities.
• The table "Blade to blade views" contains a list of requested blade-to-blade views
(circularly unwrapped and slices meshes) to be generated by Turbo Blade Post. The
column "meshes" contains a list of meshes that will be unwrapped. It is possible to
use both the internal meshes and individual patches. The hub and shroud patches
must be provided in the next two columns as they define the requested transfor-
mation of the mesh. The column "fields" is used to select the field that will be
displayed on the blade-to-blade view. Finally, "span" contains a space-separated
list of positions between the hub and the shroud where the blade-to-blade views
will be taken.
• The switch "Group by point" reorders the blade-to-blade views in the report so that
figures corresponding to the same calculation point are grouped together; otherwise
figures corresponding to the same span are grouped together. The former option is
good for visualisation of how the field changes in space, whereas the latter option
is good for visualisation of how the field changes with the boundary condition.
• The table "Additional data files" is used to add user data to the graphs in the final
report from the calculation. The data should be provided in the form of Gnuplot-
readable data files, i.e. text files with white-space-separated equal-length columns
of numbers. The graph into which the data are to be added is chosen in the second
column, the column indices to be used in the remaining two (first column has index
1). Several data-lines within a single data file can be achieved by interrupting the
columns by an empty row; this is useful particularly in the multi-speedline summary
diagrams (their name ends with "-all").
• The switch "Castellated mesh" enables and disables the castellated mesh phase.
For normal operation it is always enabled.
• The value "Max global cells" sets a hard limit on the total number of cells to
prevent memory overflow.
• The value "Max local cells" sets a soft limit on the number of cells per meshing
process. When reached, the redistribution of the cells between the processes is done
in a more careful (and slower) way.
• The value "Min refinement" sets a limit on the lowest number of cells refined in
previous iteration of the mesher, which still triggers another iteration. If zero is
given, the mesh will be refined ideally according to the algorithm of the mesher.
Slightly higher values speed up the castellated mesh phase of the meshing without
great impact on the quality of the mesh.
• The value "Max load unbalance" is the largest relative difference in number of
cells across the mesher’s processes, which is considered low and does not trigger
(slow) redistribution.
• The value "Cells between levels" sets the minimal number of consecutive cells of
a single refinement level in area where the refinement level dramatically changes.
The switch "Add layers" enables and disables the layer mesh phase, where a boundary
layer is added to the walls. The user can select number of boundary layers per a patch
group (hub, shroud, blade cap, etc.). The other parameters can be used to tune the mesher
operation. The other parameters can be used to tune the mesher operation.
3.14 Scripting
For experienced users it is possible to extend the Turbomachinery CFD workflow by
custom scripts. These scripts are expected to be written in basic Python 2.7 and they
are executed at specific moments during the workflow. It is allowed to assign mul-
tiple execution points to a single script, see figure 3.20. The script can use the pre-
defined variable CaseDirectory, which contain the full absolute path to the directory
with the OpenFOAM case. Besides the standard Python functions one can also use the
TurbomachineryCFD-specific functions SetEntry and WriteFile. For example the
following tiny script
SetEntry("system/fvSolution", "solvers/p/nCellsInCoarsestLevel", "10")
WriteFile("system/fvSolution")
will change the coarsest-level cell number in pressure GAMG solver to 10, followed by
writing the modified file. The function SetEntry does all modifications in memory and
the result is written to disk only when the function WriteFile is used, or during writing
requested by the workflow. Apart from the two functions, there is also a predefined string
variable CaseDirectory which contains the absolute path to the case and two other
access functions
RenameEntry(<file>, <entry>, <newname>)
DeleteEntry(<file>, <entry>)
with obvous purpose: The former changes the name of an entry (i.e. the keyword that
introduces the entry), whereas the latter erases the whole entry from the file.
Figure 3.20: Plugin TCFDSource – addition of custom user scripts to be executed during
the workflow.
The user interface of the TCFDManager is much simpler than that of the TCFDSource.
The following sections provide details for individual form fields.
55
56 TCFD® 17.10 – Manual
• The field “Output path” is a working directory, where new calculations are to be
created. If the TCFDSource has been initialized by a Turbomachinery CFD setup
file, this field will be already filled with the directory containing the file, or – if such
directory is an OpenFOAM case directory – by its parent directory.
• The field “Directory name” is the name of a new directory containing the next
calculation to be done. There are several possible scenarios for this option:
• The button “Write case” will write a new OpenFOAM case into the directory spec-
ified by the combination of the above two fields. If no “Directory name” is given,
CFD Processor will provide some directory name, which is not yet used in the
“Output path”, and put the OpenFOAM case in there. This automatically suggested
directory name is always in the form “ofcaseX”, where X is lowest non-negative
integer available. Note that when “Directory name” is set, then whenever the Apply
button is pressed, this “Write case” action will be done automatically.
• The button “Write + Clean case” will first write the case files corresponding to
the current setup and then erase all other files from the case. This is useful when
restarting a calculation with different settings. Use it carefully, you may lost old
data.
• The button “Run all” will take care of rest of the steps. It will mesh the domain,
solve the fields and evaluate results. If more control is required, the user can use
the buttons in the “Manual Run” sections.
• The buttons “Build” can be used to prepare the mesh of a component. This needs
to be done even for external meshes (those can be distinguished by the note “(ext)”
displayed in the title of the component), so that the patches are renamed and mesh
is analyzed and copied to the appropriate destinations. The progress of meshing is
indicated by elapsed time displayed on the button. The button “Merge” is used to
concatenate meshes of individual components and create the final merged mesh of
the whole machine. The effect of the button “Mesh all” is equivalent to using all
“Build” buttons and the “Merge” button. The “Merge” button cannot be used until
all components are successfully meshed. The success is indicated by a change of
colour. Red colour means no mesh, yellow colour means invalid mesh (or meshing
in progress), green colour means valid mesh.
• Once a component’s mesh (or merged mesh) is ready, it can be displayed. To display
the mesh toggle the “Show” button and click “Apply”. Depending on the actual
layout of ParaView panels, the user may need to open a RenderView window and
display the loaded mesh by clicking on the eye symbol next to the “Mesh” output
of the TCFDSource filter in the Pipeline Browser.
• The button “Run calculation” will run the second stage of the workflow: calculation
of the physical fields for each simulation point. The progress of each point is shown
in the point progress bar (“Point (stead)”) and the progress of the whole calculation,
which can be composed of a sequence of points, is shown in the calculation progress
bar (“Calculation (stead)”), see figure 4.5. There are also the unsteady progress bars
if the setup includes a transient run.
• The button “Skip to next point” can be used during the calculation e.g. when the
currently calculated point seems to be converged and the user wants to continue
with the next point. Note that there is always a delay between pressing the button
and skipping action, which amounts to one or two iterations.
• The button “Abort calculation” will gracefully terminate the calculation allowing
for further use of ParaView. Note that there is some delay between pressing the
button and the termination itself. This button can be also used to terminate meshing
or report phase.
• The button “Abort calculation (+ write)” is similar to the previous with the addition
that the current state of the calculation is written out before termination. This is
useful for debugging purposes.
• The button “Update report” will regenerate the report containing various extracted
data, like the residua, efficiencies, pressure information etc. Some of the values
and plots may not be available until the end of the run. The report is a HTML
document, which can be displayed in the HTML View panel, see 4.7. The report
update is generally fast, but for long transient calculations or calculations with many
points and speedlines it can take even a few minutes. The progress is indicated in
the adjacent progress bar. The report is also automatically updated at the end of
the calculation. Moreover, one can set the auto-refresh interval (in minutes) in the
editable field above the progress bar (and confirm Apply). If a positive value is set,
it will be used during the calculation.
• “Light report” has a simillar function as “Update report”, but produces only a subset
of the full report, particularly the “Efficiency”, “Head” and “Total pressure differ-
ence” sections. This is useful to monitor convergence of these results during the
calculation.
• The button “Show results” will open the OpenFOAM calculation selected in the
drop-down list “Results” using the built-in OpenFOAM reader. There is one case
for the whole stationary simulation and separate cases for individual points of the
transient calculation.
When the Apply button is pressed, the TCFDManager will call CFDProcessor to
analyze the settings. This involves also inspection of the provided geometry and may take
a while. The progress of geometry analysis is shown on the ParaView’s main progress
bar.
If ParaView was launched from a Unix terminal, it is possible to read some diagnostic
information in the terminal. This information comes directly from the CFD Processor
libraries. Alternatively, the user can enable the Turbomachinery CFD output window
from the menu View, which contains the same information, see figure 4.2.
Figure 4.5: Point and calculation progress indicator of TCFDManager. Apart from the
graphical representation, it shows the index of the point currently being solved, number of
iterations finished, number of iterations in total and estimated remaining time. In transient
calculation (below) the iterations are replaced by the simulated time. The bottom three
progress bars are only available for a transient calculation.
Figure 4.6: View of the input components (surface mesh, left RenderView window) and the resulting unstructured volume
mesh generated by CFD Processor using the snappyHexMesh mesher (right RenderView window).
61
61
62 TCFD® 17.10 – Manual
Figure 4.7: View of the final report from the CFD Processor.
The Turbomachinery CFD file produced by TCFDSource has mostly the *.tcfd exten-
sion. It is a human-readable plain text file where every line falls into one of the following
categories:
• Empty line.
• Keyword–values pair.
The keywords are strings uninterrupted by a whitespace character. They contain only al-
phanumerical characters, numbers, dashes and underscores. Every keyword can be gener-
ally set to an arbitrary number of values. A value is a string uninterrupted by a whitespace
character. Some keywords have a special structure “N_something”, where “N” is a pos-
itive number. These are used to assign properties to individual components, speedlines,
working points, post-processing modes etc. This nest to deeper levels, resulting in key-
words like “X_keywd1-Y_keywd2-Z_keywd3”. A complete list of recognized keywords,
together with some sample values and explanation, is presented in the table at the end of
this chapter.
Both the UNIX-like (LF) and Windows (CR+LF) line endings are supported on both
UNIX-like and Windows operating systems.
Some numerical values in the TCFD file can bear a user-selectable physical unit. This
is always indicated in the keyword table as “Selectable unit”. Table 5.1 summarizes the
available units. The unit is appended to the numerical value using an underscore. So,
for instance, one millimeter is denoted as 1_mm or 0.1_cm or 0.001_m. While the
temperature quantities allow the use of the degree symbol, e.g. 100_◦ C, it is recognized
in UTF-8 encoding only (degree symbol is not part of ASCII). This is natural in modern
Unix-like operating systems, but we recommend sticking to 1_C in Windows. When a
number is used without unit suffix, it is assumed that it is in SI (i.e. the metric system).
63
64 TCFD® 17.10 – Manual
support@cfdsupport.com
I List of remote machines for scheduling parallel processes. Paswordless login must be available. Currently active only in Linux.
www.cfdsupport.com
67
68
68
Keyword Allowed / sample values Units Mandatory
I Description
I Bounding value for pressure for robust convergence. Pascals assumed in compressible case, kinematic pressure in incompressible
case.
pMax 5000 Pa (m2 /s2 ) no
I Bounding value for pressure for robust convergence. Pascals assumed in compressible case, kinematic pressure in incompressible
case.
UMax 1000 m/s no
I Bounding value for robust convergence.
rhoMin 0.1 kg/m3 no
I Bounding value for robust convergence.
rhoMax 20 kg/m3 no
I Bounding value for robust convergence.
TMin 273.15 K no
I Bounding value for robust convergence.
TMax 1000 K no
I Bounding value for robust convergence.
p_relax 0.2 − no
I Pressure under-relaxation factor.
U_relax 0.5 − no
©2017 CFD support s.r.o.
support@cfdsupport.com
I Averaging window for stationary calculation. Does the averages over last n iterations. Checks convergence for last n iterations.
www.cfdsupport.com
69
VolumetricFlowRate, totalPressure.
70
70
Keyword Allowed / sample values Units Mandatory
I Description
1_inletBoundaryCondition-1_massFlowRate 0.126 0.124 0.120 kg/s yes*
I Boundary condition values for all points of the first speedline for first BC of type “massFlowRate”. Selectable unit.
1_inletBoundaryCondition-1_massFlowRate-1_csv bc/mphi.csv − no
I Transient boundary condition data for first boundary condition, first speedline, first point.
1_inletBoundaryCondition-1_volumetricFlowRate 0.126 0.124 0.120 m3 /s yes*
I As above, for BC of type “volumetricFlowRate”. Used for incompressible calculations. Selectable unit.
1_inletBoundaryCondition-1_volumetricFlowRate-1_csv bc/phi.csv − no
support@cfdsupport.com
I Outlet vent boundary condition maximum outlet pressure value. Selectable unit.
www.cfdsupport.com
71
72
72
Keyword Allowed / sample values Units Mandatory
I Description
transport sutherland | constant − no
I Viscous transport model.
Pr 0.7 − no
I Constant transport parameter (Prandl number, default air: 0.7, water: 7)
As 1.512e-06 − no
I Sutherland transport parameter.
Ts 120 K no
kOmegaSST-alphaK1 0.85 − no
I Parameter of the k-omega SST model.
kOmegaSST-alphaK2 1 − no
I Parameter of the k-omega SST model.
kOmegaSST-alphaOmega1 0.5 − no
I Parameter of the k-omega SST model.
kOmegaSST-alphaOmega2 0.856 − no
I Parameter of the k-omega SST model.
kOmegaSST-beta1 0.075 − no
©2017 CFD support s.r.o.
support@cfdsupport.com
I Parameter of the k-omega SST model.
www.cfdsupport.com
kEpsilon-Cmu 0.09 − no
I Parameter of the k-epsilon model.
kEpsilon-C1 1.44 − no
I Parameter of the k-epsilon model.
kEpsilon-C2 1.92 − no
I Parameter of the k-epsilon model.
kEpsilon-C3 -0.33 − no
I Parameter of the k-epsilon model.
kEpsilon-sigmak 1 − no
I Parameter of the k-epsilon model.
kEpsilon-sigmaEps 1.3 − no
I Parameter of the k-epsilon model.
LESDelta-cubeRootVol-delta 1 − no
I Parameter of the Spalart-Allmaras turbulence model, not needed for other models.
roughWalls false − no
I Whether to simulate wall roughness.
73
73
74
74
Keyword Allowed / sample values Units Mandatory
I Description
roughWalls-Ks 0 − no
I Sand-grain roughness.
roughWalls-Cs 0.5 − no
I Roughness constant.
molarWeight 28.9 kg/mol no
I Molar weight (air = 28.9, water = 18.015).
heatCapacityRatio 1.4 − no
Cp 1004 J/(kg · K) no
I Speficic heat capacity.
R 287.1 J/(kg · K) no
I Gas constant.
cavitationRisk false − no
I Whether to evaluate cavitation properties.
multiphaseCavitation SchnerrSauer − no
I Which model of multiphase cavitation to use, if any. Only for water machines.
multiphaseCavitation-pSat 2300 Pa no
©2017 CFD support s.r.o.
support@cfdsupport.com
I Vapourisation rate coefficient (parameter of Schnerr-Sauer multiphase cavitation model).
www.cfdsupport.com
75
76
76
Keyword Allowed / sample values Units Mandatory
I Description
numberOfRegions 3 − yes
I Number of components.
featureEdgesIncludedAngle 0 deg no
I Angle used to extract STL edges, 0 = only boundaries.
1_wheelDiameter 0 scaleFactor no
I Wheel / Impeller / Rotor diameter for the first component. Used to post-process fans.
1_filePath ./STL − yes*
support@cfdsupport.com
I General rigid wall surface(s).
www.cfdsupport.com
1_2_inletInterface pump_rotor_inlet − no
I inlet to component 1 from component 2.
1_2_inletInterface-mixingPlanes 0 − no
I Number of averaging planes, default=1 – if 0 then cyclicAMI is used.
1_3_outletInterface pump_rotor_outlet − no
I Outlet from component 1 to component 3.
1_3_outletInterface-mixingPlanes 1 − no
I Number of averaging planes, default=1 – if 0 then cyclicAMI is used.
2_wheelDiameter 80 scaleFactor no
I Wheel / Impeller / Rotor diameter for the second component. Used to post-process fans.
2_filePath ./STL − yes*
I Directory with STL files or path to a multi-solid STL of the second component. Can be both relative (w.r.t. TCFD file) and
absolute.
2_internalPoint 0 0 -200 scaleFactor yes*
I Point inside the first component (affected by scale factor). Defines the interior, where the fluid will simulated. Used only when
meshing.
2_cylindricalBackgroundMesh true | false − no
77
77
78
78
Keyword Allowed / sample values Units Mandatory
I Description
2_hub pump_rotor_hub − no
I Hub surface(s).
2_shroud pump_rotor_shroud − no
I Shroud surface(s).
2_bladeHubFillets pump_rotor_hfill − no
I Hub-fillets surface(s).
2_bladeShroudFillets pump_rotor_sfill − no
©2017 CFD support s.r.o.
I Shroud-fillets surface(s).
2_bladePressureSide pump_rotor_PS − no
I Blade pressure side surface(s).
2_bladeSuctionSide pump_rotor_SS − no
I Blade suction side surface(s).
2_bladeLeadingEdge pump_rotor_LE − no
I Blade leading edge side surface(s).
support@cfdsupport.com
2_bladeTrailingEdge pump_rotor_LE − no
www.cfdsupport.com
79
80
80
Keyword Allowed / sample values Units Mandatory
I Description
I Wheel / Impeller / Rotor diameter for the second component. Used to post-process fans.
3_filePath ./STL − yes*
I Directory with STL files or path to a multi-solid STL of the second component. Can be both relative (w.r.t. TCFD file) and
absolute.
3_internalPoint 0 0 -200 scaleFactor yes*
I Point inside the first component (affected by scale factor). Defines the interior, where the fluid will simulated. Used only when
meshing.
3_backgroundMeshSize 111 scaleFactor yes*
3_inlet pump_spiral_inlet − no
I Inlet surface(s)
3_outlet pump_spiral_outlet − no
I Outlet surface(s)
3_wall pump_spiral_wall − no
I Rigid wall surface(s)
numberOfEfficiencyProbes 1 − no
I How many reports to generate (default: 1).
1_efficiencyProbe-inletPatches 1:pump_pipe_inlet − no
©2017 CFD support s.r.o.
I Inlet patches for the first report (default: inlet of first component). Specify patches as “<component>:<patch>”.
1_efficiencyProbe-torquePatches 2:pump_rotor_PS 2:pump_rotor_SS − no
I Torque patches for the first report (default: blades of rotating comps.).
1_efficiencyProbe-outletPatches 3:pump_spiral_outlet − no
I Outlet patches for the first report (default: outlet of last component).
1_efficiencyProbe-convergenceCheck yes − no
I Whether to include this efficiency probe in the convergence check.
©2017 CFD support s.r.o.
support@cfdsupport.com
I Meshes to unwrap for the first blade-to-blade view, mostly whole components or blade patches. Specify component by name or
www.cfdsupport.com
81
I Pressure unit used in report.
82
82
Keyword Allowed / sample values Units Mandatory
I Description
reportTemperature 1_K − no
I Temperature unit used in report
reportMassFlow 1_kg/s − no
I Mass flow unit used in report.
reportVolumetricFlow 1_mˆ3/s − no
I Volumetric flow unit used in report.
totalPressureProfilePath 123 − no
support@cfdsupport.com
I Minimal and maximal refinement for inlet boundaries.
www.cfdsupport.com
1_outlet-refinementSurfaces 14 − no
I Minimal and maximal refinement for outlet boundaries.
1_wall-refinementSurfaces 14 − no
I Minimal and maximal refinement for wall boundaries.
1_blade-refinementSurfaces 14 − no
I Minimal and maximal refinement for blade boundaries.
1_hub-refinementSurfaces 14 − no
I Minimal and maximal refinement for hub boundaries.
1_shroud-refinementSurfaces 14 − no
I Minimal and maximal refinement for shroud boundaries.
1_bladeHubFillets-refinementSurfaces 14 − no
I Minimal and maximal refinement for blade hub fillets boundaries.
1_bladeShroudFillets-refinementSurfaces 14 − no
I Minimal and maximal refinement for blade shroud fillets boundaries.
1_bladePressureSide-refinementSurfaces 14 − no
I Minimal and maximal refinement for blade pressure side boundaries.
83
83
84
84
Keyword Allowed / sample values Units Mandatory
I Description
1_bladeSuctionSide-refinementSurfaces 14 − no
I Minimal and maximal refinement for blade suction side boundaries.
1_bladeLeadingEdge-refinementSurfaces 14 − no
I Minimal and maximal refinement for blade leading edge boundaries.
1_bladeTrailingEdge-refinementSurfaces 14 − no
I Minimal and maximal refinement for blade trailing edge boundaries.
1_bladeCap-refinementSurfaces 14 − no
1_cutWater-refinementSurfaces 14 − no
I Minimal and maximal refinement for cut water boundaries.
1_cyclicAMI-refinementSurfaces 14 − no
I Minimal and maximal refinement for cyclic AMI boundaries.
1_internalAMI-refinementSurfaces 14 − no
I Minimal and maximal refinement for internal AMI boundaries.
1_castellate-resolveFeatureAngle 30 deg no
I Maximal feature angle that has influence on refinement.
1_snap-nSmoothPatch 3 − no
©2017 CFD support s.r.o.
support@cfdsupport.com
I Detect features between multiple surfaces.
www.cfdsupport.com
1_layers-relativeSizes true − no
I Relative or absolute layer thickness.
1_layers-defaultWall-nSurfaceLayers 3 − no
I Default number of suface layers for a wall.
1_layers-expansionRatio 1.2 − no
I Expansion factor for layer mesh.
1_layers-finalLayerThickness 0.25 − (m) no
I Wanted thickness of the layer furthest away from the wall.
1_layers-minThickness 0.05 − (m) no
I Minimum overall thickness of total layers.
1_layers-nGrow 0 − no
I If points get not extruded do nGrow layers of connected faces that also not grown.
1_featureAngle 90 deg no
I When not to extrude surface.
1_layers-nRelaxIter 25 − no
I Max number of iterations after which relaxed meshQuality controls get used.
85
85
86
86
Keyword Allowed / sample values Units Mandatory
I Description
1_layers-nSmoothSurfaceNormals 10 − no
I Number of smoothing iterations of surface normals.
1_layers-nSmoothNormals 15 − no
I Number of smoothing iterations of interior mesh movement direction.
1_layers-nSmoothThickness 10 − no
I Smooth layer thickness over surface patches.
1_layers-maxFaceThicknessRatio 0.3 − no
1_layers-maxThicknessToMedialRatio 0.5 − no
I Reduce layer growth where ratio thickness to medial distance is large.
1_layers-minMedianAxisAngle 90 − no
I Angle used to pick up medial axis points.
1_layers-nBufferCellsNoExtrude 0 − no
I Create buffer region for new layer terminations.
1_layers-nLayerIter 50 − no
I Overall max number of layer addition iterations.
1_quality-maxNonOrtho 65 deg no
©2017 CFD support s.r.o.
support@cfdsupport.com
I Minimum face twist.
www.cfdsupport.com
1_quality-minDeterminant 0.001 − no
I Minimum normalised cell determinant. This is the determinant of all the areas of internal faces. It is a measure of how much of
the outside area of the cell is to other cells.
1_quality-minFaceWeight 0.02 − no
I Relative position of face in relation to cell centres (from 0 to 0.5). Orthogonal mesh corresponds to 0.05.
1_quality-minVolRatio 0.01 − no
I Volume ratio of neighbouring cells (from 0 to 1).
1_quality-minTriangleTwist -1 − no
I Per triangle normal compared to average normal.
1_quality-nSmoothScale 4 − no
I Number of error distribution iterations.
1_quality-errorReduction 0.75 − no
I Amount to scale back displacement at error points.
87
87
88 TCFD® 17.10 – Manual
Apart from the intuitive and interactive graphical user interface in ParaView (TCFD com-
mand), a preset TCFD workflow can be executed also in terminal. This allows further
batch processing and automatization of the CFD calculations by embedding them in larger
(e.g. blade design optimization) scripted workflows. The command-line utility used to ex-
ecute TCFD setup is called CFDProcessor and can be used in the following way:
CFDProcessor -setup pump.tcfd -dir pump-case -allrun
This command would prepare an OpenFOAM-based calculation, in line with the settings
present in the file pump.tcfd, write the calculation configuration into the directory pump-
case, create the mesh, execute the solver and generate the same HTML report that is
normally visible in ParaView. The report is stored in a separate subdirectory of the pump-
case directory.
The same command can be used both in Linux and in Windows. In Windows, the
command should be executed from the OpenFOAM-for-Windows (Cygwin) command
line. In Linux, the OpenFOAM-in-Box environment1 needs to be sourced. Remote ex-
ecution of CFD Processor over SSH is also supported. In that case, though, one should
always forward X11 calls (ssh -X) to enable 3D processing of Turbo Blade Post ren-
ders, i.e. the blade-to-blade views and meridional averages. When those are not needed,
simple non-forwarding session is sufficient.
89
90 TCFD® 17.10 – Manual
• -setup <file>
Set the path to the TCFD configuration file. Except for the -help and -clean
option, this must be always present.
• -dir <path>
Set a custom name for the directory to be processed. This can be used to refer to
already existing case e.g. when generating report after a finished run. Or, when
the calculation is being initialized (in combination with the -write option), this
sets the name of the directory where the new case will be written. If not given, an
automatic name of the form ofcaseX will be used, where X is the lowest available
number that does not collide with any existing directory.
• -clean
Clean an existing directory, keeping only files that would be written with the -write
option.
• -write
Prepare calculation for run, writing the OpenFOAM configuration of a directory on
disk.
• -mesh
Run the meshing stage.
• -calc
Run the calculation, starting with the stationary one, optionally followed by tran-
sient.
• -report
Generate HTML report from results of the calculated case. It is possible to generate
report any time after the case is written, including during meshing and calculation.
• -lightReport
This is a faster and less complete variant of the above; it contains fewer sections. A
light report is useful to monitor convergence of efficiency and other basic parame-
ters.
• -allrun
Finally, this is a combination of the following switches: -write, -mesh, -calc
and -report.
• -foam <path>
Path to the directory containing the OpenFOAM distribution to use. This is nor-
mally not needed, because CFD Processor can obtain the correct paths from the
environment variables available inside the shell.
91
92 TCFD® 17.10 – Manual
• volumeFlowRateOutlet volumetric flow rate at the wheel outlet, Qw2 [m3 /s]
∂ρ ∂
+ [ρuj ] = 0 (7.8)
∂t ∂xj
∂ ∂
(ρui ) + [ρui uj + pδij − τji ] = 0 (7.9)
∂t ∂xj
∂ ∂
(ρe0 ) + [ρuj e0 + uj p + qj − ui τij ] = 0 (7.10)
∂t ∂xj
∂ ∂ 1 ∂ 1
(ρh) + ρuj h + qj − ui τij + ρ uk uk uj + ρ uk uk − p = 0 (7.11)
∂t ∂xj 2 ∂t 2
∂ ∂ ∂ui ∂ ∂uj ∂p
(ρh) + [ρuj h + qj ] − τij − (puj ) + p − = 0 (7.12)
∂t ∂xj ∂xj ∂xj ∂xj ∂t
1 ∂ui ∂uj 1 ∂uk
τij ≡ 2µSij Sij ≡ + − δij (7.13)
2 ∂xj ∂xi 3 ∂xk
∂T ∂h µ ∂T λ Cp µ
qj = −λ ≡ −α ≡ −Cp , α≡ , Pr ≡ (7.14)
∂xj ∂xj P r ∂xj Cp λ
Cp
γ≡ , p = ρRT (7.15)
Cv
uk uk
e0 ≡ e + , Cp − Cv = R, h = Cp T, e = Cv T (7.16)
2
∇·u = 0 (7.17)
∂u
+ (u · ∇)u = ν∇2 u − ∇p + g (7.18)
∂t
µ
ν≡ (7.19)
ρ
7.2.12 Steady-State
The system of equations is considered to be steady-state, which means all the time
derivatives are equal to zero. For more details see e.g. [1].
7.2.15 Under-Relaxation
Under-Relaxation reduces solution oscillations and helps to keep the computation stable.
After each iteration, at each cell, a new value for variable U in cell i is then updated using
following equation:
A·x=b (7.21)
Such a linear algebra problem can be solved with following methods implemented in
OpenFOAM:
• smoothSolver (solver using a smoother for both symmetric and asymmetric matri-
ces )
• ICCG (Incomplete Cholesky preconditioned PCG solver, i.e. PBiCG with DIC )1
Method preconditioner:
• diagonal (Diagonal)
f~ = %~g . (7.22)
It is a simple task to find a potential to (7.22). Let us remind, a potential (if it exists)
of some given force field F~ is defined as a certain function φ satisfying the following
equation
− ∇φ = F~ . (7.23)
We can see that to the f~ given by (7.22) there exists a potential, let us denote it by ϕ,
stating
ϕ (~r) = −%~g · ~r + C , (7.24)
where C ∈ R is a constant of integration3 and ~r is a position vector4 .
Figure 7.1: General water turbine sketch. Physical setting of a turbine casing with respect
to a dam. Water levels indicated.
We can see there are several simple relations among quantities just defined
h + hOut = hIn + hIO (7.27)
h = hIn + hIO − hOut (7.28)
h − hIO = hIn − hOut (7.29)
To simplify calculations we usually considers water an incompressible fluid with no
phase changes possible and we solve the well known equations, the conservation laws the
fluid obeys.
Coservation of linear momentum is expressed by the Navier-Stokes equation. In this
case (incompressible fluid, steady state) it can take the form
U~ · ∇U
~ − ν∆U ~ = − 1 ∇p + 1 f~ , (7.30)
% %
where ~rOutlet is a position vector of the centre of mass of the outlet surface. Hence pre-
scription (7.35) changes to
A mean value ptot,In of the total pressure at the inlet surface now gives
x
1
ptot,In = SInlet %~g · (~r − ~r0,H + ~r0,L − ~rOutlet ) dS (7.39)
Inlet
x
1
= SInlet
%~g · ~r dS + %~g · (−~r0,H + ~r0,L − ~rOutlet ) (7.40)
Inlet
= %~g · (~rInlet − ~r0,H + ~r0,L − ~rOutlet ) (7.41)
= %g(h − hIO ) , (7.42)
where ~rInlet is a position vector of the center of mass of the inlet surface and g ≡ k~g k.
We can see that in this model setting there is no need to know the position of a turbine
to the water level. It suffices to know h and take the measurement of hIO .
By means of (7.43) we can formally substitute equation (7.30) by the following one
~ · ∇U
U ~ − ν∆U
~ = − 1 ∇p−%gh , (7.44)
%
for the right hand side takes the same values. This is the consequence of a fact that field
(7.22) has potential and thus a change in potential energy of an arbitrary element of a fluid
is not dependent on its path, but on its initial and final position only.
By introducing p−%gh we formally drop ~g out from the momentum equation. However,
in order to obtain the same solution as in the previous settings, it is necessary to alter the
presrciption (7.38) by adding %~g · (~rOutlet − ~rInlet ) to its right hand side7 . By doing this
we obtain a new prescription, but this time for the quantity p−%gh
Prescription at the outlet surface remains formally the same as (7.37), but this time for
the quantity p−%gh
p−%gh,Out (~r) = %~g · (~r − ~rOutlet ) , (7.50)
and hence its mean value is zero.
We can see that in this setting there is no need to know a position of a turbine with
respect to the water level and there is also no need to even take the measurement of hIO .
It only suffice to know h, the head.
7.4.2 Conclusion
We have seen there are two basic approaches to water turbine calculations.
Following table shows possible boundary conditions for the pressure variable
7
This term is equal to the change of the potential energy density of an element of the fluid by its passage
through the turbine (from the volute inlet to the draft tube outlet).
pressure
setting inlet outlet
~g , physical hTP = %ghIn fMV = %ghOut
~g , model hTP = %g(h − hIO ) fMV = 0
6 ~g hTP = %gh fMV = 0
We note that hTP stands for hydrostaticTotalPressure boundary condition and values
listed in the Table 7.1 for this type represent values of hydrostatic pressure in the centre
of mass of the inlet surface. Whereas fMV stands for fixedMeanValue boundary condition
and values listed in the Table 7.1 for this type represent values of static pressure in the
centre of mass of the outlet surface.
We add that pressureInletVelocity boundary condition is prescribed for the inlet veloc-
ity field for all of the above settings, where the velocity magnitude is computed from the
difference between total and static pressure and its direction is taken as a local normal to
the inlet surface (usually planar). Also zeroGradient boundary condition is prescribed for
the outlet surface for all of the above settings.
At the interface between stator and rotor part, for each variable one can prescribe either
Frozen Rotor boundary condition or Mixing Plane boundary condition. Frozen Rotor
maps variable directly to the neighbour patch. Mixing Plane computes the variable aver-
age first and then maps just the average value to the neighbour patch. Both approaches
can be combined (each variable can have its own option). Both approaches have benefits
and drawbacks to each other. Authors of this methodology recommend to prefer Mixing
Plane boundary condition.
Figure 7.2: Radial turbine. Example of Mixing Plane Averaging from stator region to
rotor region.
Figure 7.3: Radial turbine. Example of Frozen rotor interpolation from stator region to
rotor region.
• Cavitation risk provides a "warning", when pressure drops too low and thus cavi-
tation inception is likely.
• Pressure at outlet is set to zero. Reference pressure must be set to the value the
flow will experience in reality, e.g. atmospheric pressure.
• Pressure at outlet is set to the value the flow will actually experience. Reference
pressure should be left zero.
Figure 7.5: User can switch on and off both "Cavitation Risk" and "Multiphase cavitation"
in the physics section of the menu.
Figure 7.6: When Multiphase cavitation is switched on, menu offers additional choices
for coefficients used in Scherr-Sauer model
Values are expected to be in Pa, K and kg/m3 , respectively. For turning on Multiphase
cavitation, following keywords are necessary:
1 referencePressure 101325
2 referenceDensity 996
3 multiphaseCavitation SchnerrSauer
Multiphase cavitation modeling with Schnerr-Sauer model also has following optional
parameters:
1 m u l t i p h a s e C a v i t a t i o n −p S a t 2300
2 m u l t i p h a s e C a v i t a t i o n −s i g m a 0 . 0 7
3 m u l t i p h a s e C a v i t a t i o n −vapourRho 0 . 0 2 3 0 8
4 m u l t i p h a s e C a v i t a t i o n −vapourNu 0 . 0 0 0 4 2 7 3
5 m u l t i p h a s e C a v i t a t i o n −S c h n e r r S a u e r −n 1 . 6 e +13
6 m u l t i p h a s e C a v i t a t i o n −S c h n e r r S a u e r −dNuc 2 e−06
7 m u l t i p h a s e C a v i t a t i o n −S c h n e r r S a u e r −Cc 1
8 m u l t i p h a s e C a v i t a t i o n −S c h n e r r S a u e r −Cv 1
6. Ideally, each component surface STLs should fit vertex-to-vertex. Not necessary,
but safest.
7. All the interfaces between two components should overlap, or at least to fit each
other very well.
8. Mesh size - the most important mesh parameter of each component is 0_back-
groundMeshSize, which is a basic mesh block (cell) to be refined. Three dimensions
x y z in meters (scaleFactor parameter may change the dimension).
9. If command line used - the CFD Processor has several options. Custom case name.
Writing the case. Writing the mesh. Run the simulation. Write the report. See all
the options: $ CFDProcessor -help .
113
114 TCFD® 17.10 – Manual
11. It is not suitable to have “Trailing edge fixed on outlet” of the Impeller for any CFD
simulation. It is recommended, when simulate, to extend the hub and shroud a little
bit.
14. Rotation direction has signum minus for clockwise direction (right hand rule).
15. Cavitation risk is evaluated by function object cavitation. Saturated vapour pres-
sure is evaluated using Antoine equation (see wikipedia), coefficients are taken
from NIST. Relevant entries are referenceTemperature and referencePressure. Field
cavitation is saved alongside other fields, which has values either 1 (cells with pres-
sure below saturated vapour pressure) or 0 (other cells). Statistics such as number
of cavitating cells, their volume and percentage of cavitating volume from whole
computational domain are printed each time step.
16. Convergence Auto Stop - if convergenceCheck is true - each simulation point run
is skipped - if the total machine efficiency change is lower than 0.1% over the last
X iterations. X is equal to averagingWindow value.
17. Circumferential and Meridional angle - tangent is chosen in such a way that axis,
radial and tangent (in this order) form a right-handed coordinate system. U is rela-
tive velocity, Um is projection of U into meridional plane, Ur is projection of U into
radial plane, Ut is projection of U into tangential plane. Meridional angle α is angle
between axis and Um. It is positive, when Um points away from axis and negative
when Um points toward axis. Axial circumferential angle βa , is angle between tan-
gent and Ut. Radial circumferential angle βr is angle between tangent and Ur. It is
positive when Ur points out (of the cylinder in the picture), it is negative when Ur
points in.
18. Cylindrical background mesh can be used. Three radii, two gradients and warping.
19. CFD Processor is capable of scheduling MPI jobs to remote machines. This can
be used with OpenMPI in Linux. The keyword “hosts” in the configuration file is
followed by a list of nodes (hostnames or IP addresses). Password-less SSH ac-
cess to those machines must be possible and the OpenMPI package, as well as the
calculation directory itself, must be accessible at the same filesystem path, e. g.
through the use of a disk shared among the machines. The parameter “bindToCore”
is ignored when “hosts” is used. *-clearance - non-mandatory parameter which
can be used to improve robustness of meshing at clearance between bladeCap and
shroud *-toInterfaceDistance - non-mandatory parameter which can be used to im-
prove robustness of meshing at small gaps between particular part of blade and
neighbouring geometry
20. Currently, there are two possible transport models: sutherland (default) and con-
stant. If “sutherland” is used, then is it possible to set also the parameters of the
Figure 8.1: Cylindrical background mesh (here viewed along the axis) is fully specified
by its length (not shown) and six more parameters. The parameter r2 is the radius of the
outer cylinder. The parameter r1 is the radius of the middle cylinder. The inner “cylinder”
is cylinder only when d = r0 , which is just
√a special case. Generally it is allowed d < r0
and the derived parameter w = 1 − r0 /d 2 is called warp and is equal to 1 for ideally
cylindrical shape and to 0 when the inner “cylinder” collapses to the dashed rectangular
shape. The numbers g0 and g1 specify the mesh grading (gradual change of cell sizes).
21. There are three possible turbulence models: kOmegaSST (default), kEpsilon and
laminar. The names and default values of the optional parameters of the mod-
els are: kOmegaSST-alphaK1 (0.85), kOmegaSST-alphaK2 (1.00), kOmegaSST-
alphaOmega1 (0.5) kOmegaSST-alphaOmega2 (0.856), kOmegaSST-beta1 (0.075),
kOmegaSST-beta2 (0.0828), kOmegaSST-betaStar (0.09), kOmegaSST-gamma1 (0.5555556),
kOmegaSST-gamma2 (0.44), kOmegaSST-a1 (0.31), kOmegaSST-b1 (1.00), kOmegaSST-
c1 (10.0), kOmegaSST-F3 (false); kEpsilon-Cmu (0.09), kEpsilon-C1 (1.44), kEpsilon-
C2 (1.92), kEpsilon-C3 (-0.33), kEpsilon-sigmak (1.00), kEpsilon-sigmaEps (1.30).
22. CFD Processor allows a straighforward extension of the built-in workflow by user-
defined functions. These take form of a Python scripts and can be executed in
several places along the workflow. The keyword for setting used defined functions
is userDefinedFunctions and has the following syntax: userDefinedFunctions script
locations [ script locations . . . ] The word script is a path (no spaces!) to the
Python script to be executed. During write-out of the case is will be written to
the subdirectory “scripts” of the case directory and executed from that place. The
word locations is a comma-separated list (no spaces!) of execution points during
the workflow, when the script is to be executed. The possible execution points
are: afterWrite, beforeMeshing, afterMeshing, beforeCalculation, afterCalculation,
beforeEverySpeedline, afterEverySpeedline, beforeReport, afterReport. The script
can use common Python functions and also two special predefined functions Se-
tEntry and WriteFile. E.g. SetEntry(‘system/fvSolution’, ‘SIMPLE/nNonOrthog-
onalCorrectors’, ‘5’) WriteFile(‘system/fvSolution’) Finally, the special predefined
variable CaseDirectory contains full path to the directory with the case.
23. END.
Turbo Blade Post is designed for postprocessing of rotating machinery. Both radial and
axial machines. Pumps, hydro (water) turbines, compressors, turbochargers, propellers
and many more.
Turbo Blade Post is product of company CFD Support s.r.o. (www.cfdsupport.com).
It was especially created to enable an effective postprocessing of rotating machinery.
Turbo Blade Post is a set of plugins for ParaView software www.paraview.org.
ParaView is an open source multiple-platform application for interactive, scientific
visualization. It has a client–server architecture to facilitate remote visualization of datasets,
and generates level of detail (LOD) models to maintain interactive frame rates for large
datasets. It is an application built on top of the Visualization Tool Kit (VTK) libraries.
Where VTK is a set of libraries that provide visualization services for data, task, and
pipeline parallelism, ParaView is an application designed for data parallelism on shared-
memory or distributed-memory multicomputers and clusters. It can also be run as a
single-computer application.
ParaView offers the possibility to extend its functionality in several directions. This
encompasses modifications to the GUI, implementation of new sources (i.e. generation of
predefined curves and bodies), definition of new selection functions etc. The most useful
category of plugins are the Filters.
119
120 TCFD® 17.10 – Manual
Note — The filters tend to disappear from their categories after use. This is a feature
of ParaView, which moves the last used filter menu item into Filters > Recent. That list
is, however, limited. Nevertheless, all filters are alwys accessible through the Filters >
Search option.
Figure 9.3: Geometry of the Turbomachinery CFD tutorial pump used in this examples.
Figure 9.4: Computational mesh in the rotor MRF (rotating) zone as generated by Turbo-
machinery CFD using the snappyHexMesh mesher.
Figure 9.5: Computational mesh in the rotor MRF (rotating) zone as generated by Turbo-
machinery CFD using the snappyHexMesh mesher.
Figure 9.6: Static pressure field in the pump. The incompressible simulation has been
done by Turbomachinery CFD using OpenFOAM.
Figure 9.7: Relative velocity streamlines in the rotating part (MRF zone) of the mesh. The
incompressible simulation has been done by Turbomachinery CFD using OpenFOAM.
The aim of the first example is to meridionally average the scalar quantities in the vicinity
of the blades, in the rotating (MRF) section of the fluid. Whereas the simple axial slice
very often cuts a blade, the meridional average avoids the holes by displaying circumfer-
ential average of values around the axis of rotation, see figure 9.8.
Figure 9.8: Comparison between a common ParaView Slice filter (top) and Turbo Blade
Post Meridional Average filter (bottom) – application on Turbomachinery CFD (Open-
FOAM) calculation of incompressible flow in a pump.
Either use this button, or select the filter Meridional Average in the Filters > Turboma-
chinery (or Filters > Alphabetical) menu, or use the search box from Filters > Search.
This will add the filter into the "Pipeline browser".
Step 3 — The properties of the filter Meridional Average are shown in the figure 9.11.
Some of the options are advanced and can be displayed using the "Toggle advanced
properties" button (wheel symbol). The setup consists of a just a few numbers: (a) ro-
tation axis, (b) axis origin, (c) clip out radius and (d) resolution. The "resolution" is
the number of points of the resulting projection in radial or axial direction, whichever is
larger. A non-zero "Inner radius" is necessary if the rotation axis pierces through the
computational mesh, i.e. if there is no hole along the axis. In this tutorial the rotation axis
is the axis z, the origin coincides with the coordinate system origin and we choose the
clip out radius to be 0.01 m, as shown in the figure. Confirm the settings by pressing the
"Apply" button. A non-zero "Outer radius" can be used to clip out some unwanted parts.
Figure 9.9: Loading the OpenFOAM pump case for application of Turbo Blade Post
Meridional Average. Left (OpenFOAM’s OpenFOAM reader): The MRF zone and all
fields are selected. Right (ParaView’s Foam reader): All zones and fields are selected for
reading.
Figure 9.10: Extraction of a single block from a multi-block dataset using the filter Extract
Block, so that the Meridional Average can be applied. In this example we are interested
only in the “rotor_mrf_zone” part. If the loaded case already has a single block only, it
is not necessary to extract it. However, when the ParaView’s Foam reader is used, where
only reading of all mesh zones at once is possible, this step is needed.
Figure 9.11: Properties of the filter Meridional Average, part of the Turbo Blade Post
postprocessing toolbox. The parameters have default values, except for the non-zero "Clip
out radius".
Step 4 — Once the filter completes, it will produce a projection as in the figure 9.12. By
default, it shows the distance of individual points to the nearest surface (hub, shroud, inlet
or outlet). However, all scalar fields have been averaged by the filter and are available in
the field selection drop-down list in the main toolbar. The figures 9.13 and 9.14 show the
averaged results for static pressure and relative velocity, respectively.
Figure 9.12: Resulting projection of the geometry constructed by the Turbo Blade Post
toolset (Meridional Average filter) showing an auxiliary field, together with the original
geometry and the cutting cylinder that corresponds to the chosen "Clip out radius".
Figure 9.13: Meridional average of the static pressure for an incompressible flow in a
pump constructed by Turbo Blade Post / Meridional Average. Results are from a calcula-
tion by TurbomachineryCFD using OpenFOAM.
Figure 9.14: Meridional average of relative velocity restricted to the slice for an incom-
pressible flow in a pump. Contructed by Turbo Blade Post / Meridional Average. Results
are from a calculation by TurbomachineryCFD using OpenFOAM.
Figure 9.15: Blade-to-blade view constructed by the Turbo Blade Post toolset showing
static pressure for an incompressible flow in pump. Results are from a calculation by
Turbomachinery CFD using OpenFOAM.
Step 2 — The transformation from the cylinder - or disk-like rotating area (as shown in
the figure 9.4 or 9.5) into the normalized rectangular block can be calculated by the filter
Turbo Unwrap. You should see the icon of the filter in the toolbar. Note that the filter is
available (i.e. coloured and clickable) only when the data selected in "Pipeline browser"
are of the type "Multi-block Dataset" (see panel "Information", section "Statistics").
Either use this button, or select the filter Turbo Unwrap in the Filters > Turbomachinery
(or Filters > Alphabetical) menu, or use the search box from Filters > Search. This will
add the filter into the "Pipeline browser".
Step 3 — The basic properties of the filter Turbo Unwrap are shown in the figure 9.17.
When the advanced options are hidden, there are only a few options to define. First of
all, it is necessary to choose the internal mesh, that will be transformed, and the hub
and shroud patches, which will serve as a leaders to define the transformation. After the
transformation is done, hub and shroud will be perfectly flat and parallel to each other,
conformly deforming the mesh in between. If multiple mesh parts are selected in the
"Unwrap mesh" window or multiple patches are selected in "Hub" or "Shroud" windows
then they will be internally merged into a single entity before proceeding. In this example
the mesh is well prepared and we can just select the three items that we loaded in the first
step.
Step 4 — Set the direction and position of the rotating axis using the parameters "Axis"
and "Origin". In our case we use z-axis, which is the default option.
Step 5 — Select the position of the breaking semiplane and cutting cylinder, see fig-
ure 9.18. In this case we have chosen the plane direction along the x-axis and the radius
of the cylinder equal to 0.01 m, see figure 9.17.
Step 6 — Click on "Apply". Particularly the cylinder clipping (and to less extent also
the transformation of the mesh and of the vector fields) can be quite time consuming for
large meshes. Some parts of the algorithm are parallelized and will automatically make
use of multi-core machines. When the algorithm finishes, the result will look similarly to
figure 9.20. The nature of the transformation is illustrated in the figures 9.18–9.21.
Step 7 — Unlike the scalar quantities (like pressure) the vector fields need to be trans-
formed, too, when the mesh transforms. This is done automatically for the cell fields U
and URel. As a by-product the filter also produces several other cell fields that can be used
as an input to other filters: The local streamline vectors UStream and URelStream, and
the cell field URelLIC, which is particularly well suited for usage in Line Integral Con-
volution ("SurfaceLIC") representation. To use these fields in filters that request point
fields, it is necessary to interpolate the data from points to cells, which is done as the final
Figure 9.16: Loading mesh zones and the hub and shroud patches needed by the filter
Turbo Unwrap. Left (OpenFOAM’s OpenFOAM reader): Hub and shroud patches are
selected, as well as the rotating zone. Right (ParaView’s Foam reader): Hub and shroud
patches and all zones are selected.
step using the filter Cell data to point data (can be found in Filters > Alphabetical). This
filter has no important settings.
Step 8 — Now all that is necessary to obtain a specific blade-to-blade view is to use
a standard Slice filter (z-normal) to cut through the block at the requested height. The
coordinate z = 0 corresponds to the hub patch, z = 1 corresponds to the shroud patch,
z = 0.5 corresponds to the surface in the middle between hub and shroud etc. This step
is shown in the figure 9.22, the resulting cut displaying pressure is the figure 9.15, or
showing the SurfaceLIC representation (with settings from 9.24) in the figure 9.23.
Figure 9.18: Rotating area of the simulated pump’s volume before the application of the
filter Turbo Unwrap. The patches are coloured here to make them easily differentiable
in the following figure 9.20. Hub patch (bottom) is in solid green, shroud patch (top)
in solid orange, inflow (top) is orange wireframe and outflow (bottom) green wireframe.
The figure also contains the clipping cylinder corresponding to the parameter "Clip out ra-
dius" and the cutting semiplane corresponding to the direction specified by the parameter
"Break".
Figure 9.19: Detail of the inflow interface mesh structure of the pump test case before the
application of Turbo Blade Post plugin Turbo Unwrap.
Figure 9.20: Rotating area of the simulated pump’s volume after the application of the
filter Turbo Unwrap. The hub and shroud patches are now parallel, the new z coordinate
runs from hub (z = 0) to shroud z = 1, the normalized circular coordinate is transformed
to x ∈ (0, 2π) and the remaining coordinate that is orthogonal to both, "along the stream",
is mapped to y ∈ (0, 1). The green hub patch is now in the bottom, orange shroud on top,
inflow is left and behind (not visible here) and the green outflow is in the front and to
the right. The two additional sides of the block arose by cutting the mesh by a semiplane
specified by the revolution axis and the parameter "Break". It is not a straight cut through
the cells, rather the cells that would be split by the semiplane are removed completely.
Figure 9.21: Detail of the inflow interface mesh structure of the pump test case after the
application of Turbo Blade Post plugin Turbo Unwrap.
Figure 9.22: Construction of the blade-to-blade view from the rotor block unwrapped by
Turbo Blade Post plugin Turbo Unwrap.
Figure 9.23: Blade-to-blade view from the rotor block unwrapped by Turbo Blade Post
plugins showing the Line Integral Convolution (LIC) representation of the flow based on
the relative velocity. The results are from a calculation by Turbomachinery CFD.
Figure 9.24: Surface Line Integral Convolution setup after application of Turbo Unwrap
+ Cell Data To Point Data filters. The coloring is taken from the magnitude of the vector
field URel, the directions and sizes from URelLIC.
Figure 9.25: Input geometry (hub, shroud and blade patches) for the Turbo Blade Post /
Turbo Unwrap filter for construction of the around-the-blade pressure profile.
Step 2 — First, the blades need to be transformed from the cylinder- or disk-like arrange-
ment to a straight rectangular block. This is done by the filter Turbo Unwrap. You should
see the icon of the filter in the toolbar. Note that the filter is available (i.e. coloured and
clickable) only when the data selected in "Pipeline browser" are of the type "Multi-block
Dataset" (see panel "Information", section "Statistics").
Either use this button, or select the filter Turbo Unwrap in the Filters > Turbomachinery
(or Filters > Alphabetical) menu, or use the search box from Filters > Search. This will
add the filter into the "Pipeline browser".
Step 3 — The basic properties of the filter Turbo Unwrap are shown in the figure 9.26.
When the advanced options are hidden, there are only a few options to define. First of
all, it is necessary to choose the blade wall patch, that will be transformed, and the hub
and shroud patches, which will serve as a leaders to define the transformation. After the
transformation is done, hub and shroud will be perfectly flat and parallel to each other,
conformly deforming the mesh in between. If multiple mesh parts are selected in the
"Unwrap mesh" window or multiple patches are selected in "Hub" or "Shroud" windows
then they will be internally merged into a single entity before proceeding. In this example
the mesh is well prepared and we can just select the three items that we loaded in the first
step.
Step 4 — Set the direction and position of the rotating axis using the parameters "Axis"
and "Origin". In our case we use z-axis, which is the default option.
Step 5 — Unlike in the case of the blade-to-blade view, when constructing the pressure
profile it is mostly not necessary to specify a non-zero "Clip out radius", because the
blades do not reach all the way to the axis in the middle. We will leave the parameter
having its default zero value.
Step 6 — Click on "Apply". The transformation should be relatively fast, because the
sufrace mesh of the blades is orders of magnitude easier to process than the full volume
mesh. It may be necessary to zoom in or out a little (depending on the geometry) to make
the result fit to window. Outcome of this step is shown in the figure 9.27, where the blades
are coloured by pressure.
Step 7 — Having the blades transformed we can now cut them at a specific height (z-axis)
using the filter Slice. This will result in several two-dimensional intersection contours.
Step 8 — Add the filter Plot Data from Filters > Alphabetical or using Filters > Search.
Unselect all fields but pressure (see figure 9.28). Above the field selection box use
"Points_Y" as the "X Array Name". This will use points’ Y coordinates as the data for
the horizontal axis. Below the field selection box use "None" as "Line Style" and "Circle"
as "Marker Style". This will only show one bullet per a mesh point, making the result
independent on the order of the projected points. Now press "Apply". You should obtain
a similar figure to 9.28.
Figure 9.26: Settings of the Turbo Blade Post / Turbo Unwrap filter for transformation of
blades of the pump.
Note — The plot will contain data from all blades. As the blades are equivalent, it doesn’t
hurt the visualization. If just a single blade profile was required, it would be necessary to
separate one of the contours using a pair of the Clip filters .
Figure 9.27: Blades of a pump transformed by Turbo Blade Post – Turbo Unwrap to a
straight arrangement and displaying pressure field computed by Turbomachinery CFD
using OpenFOAM.
Figure 9.28: Pressure distribution around the blade for a given height (i.e. relative dis-
tance from the hub to the shroud) constructed with the aid of the plugins of Turbo Blade
Post toolset. The horizontal axis shows the transformed Y axis, which corresponds to
the normalized inlet-to-outlet direction position (for given hub-to-shroud distance and
angular position). The vertical axis displays the value of the pressure as computed by
Turbomachinery CFD using OpenFOAM.
Step 2 — First, the blades need to be transformed from the cylinder- or disk-like arrange-
ment to a straight rectangular block. This is done by the filter Turbo Unwrap. You should
see the icon of the filter in the toolbar. Note that the filter is available (i.e. coloured and
clickable) only when the data selected in "Pipeline browser" are of the type "Multi-block
Dataset" (see panel "Information", section "Statistics").
Either use this button, or select the filter Turbo Unwrap in the Filters > Turbomachinery
(or Filters > Alphabetical) menu, or use the search box from Filters > Search. This will
add the filter into the "Pipeline browser".
Step 3 — The basic properties of the filter Turbo Unwrap are shown in the figure 9.26.
When the advanced options are hidden, there are only a few options to define. First of
all, it is necessary to choose the blade wall patch, that will be transformed, and the hub
and shroud patches, which will serve as a leaders to define the transformation. After the
transformation is done, hub and shroud will be perfectly flat and parallel to each other,
conformly deforming the mesh in between. If multiple mesh parts are selected in the
"Unwrap mesh" window or multiple patches are selected in "Hub" or "Shroud" windows
then they will be internally merged into a single entity before proceeding. In this example
the mesh is well prepared and we can just select the three items that we loaded in the first
step.
Step 4 — Set the direction and position of the rotating axis using the parameters "Axis"
and "Origin". In our case we use z-axis, which is the default option.
Step 5 — Unlike in the case of the blade-to-blade view , when constructing the pressure
profile it is mostly not necessary to specify a non-zero "Clip out radius", because the
blades do not reach all the way to the axis in the middle. We will leave the parameter
having its default zero value.
Step 6 — Click on "Apply". The transformation should be relatively fast, because the
sufrace mesh of the blades is orders of magnitude easier to process than the full volume
mesh. It may be necessary to zoom in or out a little (depending on the geometry) to make
the result fit to window. Outcome of this step is shown in the figure 9.27, where the blades
are coloured by pressure.
Step 7 — Having the blades transformed we can now separate the chosen blade from the
rest. This is done by the filter Clip. Adding the Clip filter will provide the user with an
interactive positioning tool consisting of a ball in the origin, clipping plane and its normal.
Use the ball to position the plane. Use the axis to orient the plane; see figure 9.29. Once
you have placed the clipping plane to one side of the chosen blade so that it doesn’t
intersect any blade, click apply.
Step 8 — Repeat Step 7 appending another Clip filter to isolate the chosen blade also
from the other side. You may need to check the "Inside Out" option in the settings of the
filter Clip.
Step 9 — Append the filter Contour. In the drop-down list "Contour By" select the
pressure field. Use the red cross button to erase suggested contour values (right bottom
of the box "Value Range") and then press grid button (right top) to populate the list of
contour values by equidistant values covering the whole pressure range. Do not modify
the suggested minimal ("From") and maximal ("To") values, and use e.g. 20 samples
("Steps"). See the figure 9.30.
Step 10 — Pressing "Apply" will calculate the contour data and display the contours,
hiding the blade geometry. Click on the eye symbol in "Pipeline Browser" to show the
blade again. The results are in the figure 9.31.
Figure 9.29: Interaction with the interactive Clip manipulator when separating a single
blade of a pump transformed by Turbo Blade Post / Turbo Unwrap filter. The blades are
colored by static pressure calculated by Turbomachinery CFD using OpenFOAM.
Figure 9.30: Settings of the filter Contour applied on a isolated pump blade transformed
by Turbo Blade Post / Turbo Unwrap filter.
Figure 9.31: Static pressure field and contours on an isolated blade transformed by Turbo
Blade Post / Turbo Unwrap filter. The pressure data have been calculated by Turboma-
chinery CFD using OpenFOAM. Left is the pressure side, right the suction side of the
blade.
Inner radius
For best results, the rotor region should be donut-shaped, i.e., there should be a hole
running through its centre. Only for such shapes the slice contour is well defined. If there
is no hole in the middle, this option allows specifying a positive radius of a hole to drill
before applying the filter.
Outer radius
This option allows specifying a positive radius to clip out some unwanted parts at the
periphery.
Resolution
This parameter controls the number of sampling faces in the slice. In the slice there will
be approximately N faces in the axial direction. The faces are squares and their number
in the radial direction is calculated automatically.
Debug output
When "Debug output" is checked, then the filter produces some additional output in the
form of txt files in the workking directory. These files can be used to explore the internal
mechanisms particularly when contructing the projected boundary contour.
9.6.2 Averaging
At the moment only the following quantities are sampled: the pressure p, the absolute
velocity U (no circumferential component), the relative velocity URel (no circumferential
component), the absolute velocity magnitude magU and the relative velocity magnitude
magURel.
Break
To unwrap the mesh, it is necessary to break it somewhere. This option allows specifica-
tion of a direction, where the cut will occur.
The boundary of the mesh that is newly created by the drilling (specifying non-zero "Clip
out radius") can be considered to belong either to the hub or to the inlet/outlet inter-
face. The default is to assign the new boundary to the hub patch. If unselected, the new
boundary will be assumed to belong to the inlet/outlet interface.
Advanced parameters
The remaining parameters are in the advanced section and can be shown by clicking on
the button with a wheel sign next to the search field in the panel Properties.
The number parameters "Resolution", "Tolerance" and "Iterations" are internal con-
trol parameters that influence precision and speed of the filter. "Resolution" is a approxi-
mately the number of control points along the hub and shroud patches. Raising the number
of control points can increase the resolution of the approximated patches. "Tolerance" is
proportional to the allowed absolute error in determination of point’s transformed coordi-
nates (m, t, ζ). The number should generally be smaller than the typical distance between
two points in the original mesh. "Iterations" is the iteration limit set for determination of
the transformed coordinates. It should not be necessary to raise the default value, unless
an extremely fine mesh is being transformed.
The field "Extension Points" is only used when "Snap internal points" is unchecked.
It determines which sampled points of the boundary patches are used to extrapolate the
patches. The number must be and integer greater than zero. If "1" is given, then only the
tail of each patch is used to extrapolate their direction. If larger number is given, then the
extrapolation runs in a more averaged direction. If "Snap internal points" is checked, no
extrapolation is done and points outside the area bounded by hub and shroud are simply
left with some extremal m-coordinate.
The check box "Remove split cells" (default: on) determines whether the cells that
are split by unwrapping are to be removed or kept. Removing these cells allows ParaView
to display the unwrapped mesh correctly; otherwise it looks as if there was no internal
mesh. However, for special meshes this leads to a crash. In such cases, unchecking is an
option.
The option "Normalize patches" makes sure that the transformed hub and shroud
patches will be of unit size in the ξ (i.e. z) direction. This allows easy construction of
the blade-to-blade view , but it may not be desired for the overall view. If this option is
unchecked, the hub will still be normalized to unit size, but the transformed shroud will
keep its ratio with respect to the hub.
Finally, the "Debug output" option produces additional text information as a txt files
in the working directory, which can be used to explore internal mechanisms of the filter,
particularly the construction of the m-ξ (y-z) contour which is then used to transform the
whole mesh.
9.7.2 Usage
The usage of the filter is similar to other filters with one small difference: Because it
allows (and requires) selection of different parts of the multi-part mesh, it is necessary to
load all needed parts of the mesh, not just the internal mesh. The figure 9.34 demonstrates
a typical selection of OpenFOAM case mesh and patches for the Turbo Unwrap filter.
Figure 9.34: Turbo Blade Post; Selection of multiple parts of the mesh.
The filter will transform the cylinder-like mesh into a box. The meaning of its new
dimensions is described in the table 9.1. In brief it can be said that the boundary z 0 ≡ ζ =
0 is the hub patch, the boundary z 0 ≡ ζ = 1 is the shroud patch, the boundary x0 ≡ m = 0
is the one of inlet and outlet interfaces that is lower on the rotation axis and the boundary
x0 ≡ m = 1 is the other one (higher on rotation axis). The boundaries on minimal and
maximal y 0 ≡ t coordinates are only artificial and were originally connected to each other.
The filter transforms only the cell data, not point data, so it may be necessary to apply
the filter Cell data to point data afterwards to regain access to the point fields (which
are necessary for usage of e.g. the Glyph filter).
Table 9.1: Coordinates of the "unwrapped" mesh. The coordinate m is relative to the full
length of the hub/shroud/streamline. The coordinate ζ is relative to the full local distance
between hub and shroud.
The filter passes all cell data without change except for the vector fields U and URel,
which are transformed into the new coordinate system (x0 , y 0 , z 0 ) ≡ (m, t, ζ). Besides
these two vector fields Turbo Unwrap also creates several additional vector fields, namely
UStream and URelStream which should be used to construct streamlines in the trans-
formed mesh and URelLIC, which should be used as an input for the Surface Line Integral
154
support@cfdsupport.com 155
linearPureUpwindFit, 98 greenSolver, 94
linearUpwind, 98 interPhaseChangeDyMFoam, 94
localBlended, 98 interPhaseChangeFoam, 94
localMax, 98 pimpleDyMFoam, 94
localMin, 98 redDyMSolver, 94
LUST, 98 redSolver, 94
midPoint, 98 rhoSimpleFoam, 94
Minmod, 98 simpleFoam, 93
MUSCL, 98 sonicFoam, 94
MUSCL01, 98 Specific heat capacity, 30
OSPRE, 98 Speedline points, 37
outletStabilised, 98 Speedlines, 37
pointLinear, 98 Statistics, 130, 138, 143
quadraticFit, 98 steady-state, 96
quadraticLinearFit, 98 Surface hook-up, 33
quadraticLinearUpwindFit, 98 SurfaceLIC, 131, 153
quadraticUpwindFit, 98 Sutherland transport, 28
QUICK, 98 AS , 30
reverseLinear, 98 TS , 30
SFCD, 98 symmetry, 32
skewCorrected, 98
SuperBee, 98 TCFDManager, 15, 22, 24
UMIST, 98 TCFDSource, 15, 23, 24, 38
upwind, 98 Time management, 25
vanAlbada, 98 Toggle advanced properties, 23, 125
vanLeer, 98 Tolerance, 151
vanLeer01, 98 Total pressure, 40
weighted, 98 Total pressure profile path, 47
SetEntry, 53 Total temperature, 40
Settings, 22 Trailing edge gap, 34
Setup file, 24 transient, 25
shroud, 32 Transient times, 37
SIMPLE algorithm, 98 Transient window, 47
Slice filter, 133 translationAMI, 32
Snap internal points, 151 Transport model, 28
Snapshot fields, 47 Turbo Blade Post, 16, 138, 143
Snapshot interval, 47 Turbo Unwrap, 16, 130, 131, 138, 139,
solver 143, 152
blueDyMSolver, 94 turbulence model, 38
blueSolver, 93 kEpsilon, 38, 100
greenDyMSolver, 94 kOmega, 100
Under-Relaxation, 97
under-relaxation factors, 45
Unstructured grid, 125
Unwrap mesh, 131, 139, 143
Use fluid defaults, 27
wall, 32
wallSlip, 32
Wheel diameter, 30, 33
WriteFile, 53
159
160 TCFD® 17.10 – Manual
[14] CFD-online web pages: Best practice guidelines for turbomachinery CFD
(http://www.cfd-online.com/Wiki/Best_practice_guidelines_for_turbomachinery_CFD,
date: 30. 1. 2014).