TCFD Manual v18.10
TCFD Manual v18.10
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.4 Physics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
4.5 Reference frames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.6 Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.7 Speedlines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.8 Turbulence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4.9 Boundary condition: Inlet . . . . . . . . . . . . . . . . . . . . . . . . . . 52
4.10 Boundary condition: Outlet . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.11 Initial conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.12 Simulation controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
4.13 Post-processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
4.14 Meshing options: Snappy hex mesh . . . . . . . . . . . . . . . . . . . . 63
4.15 Scripting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
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® 18.10 – Manual
The package includes 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. TCFD is unique at least for
four reasons:
1. TCFD® is unlimited in users, jobs, or cores - This means TCFD user 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 TCFD 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.
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.
• TCFDSource is used for an ease of use CFD case setup.
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 of each compo-
nent 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 of 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 10 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 TCFD and run one
of its preset tutorials. All combinations of operating systems (Linux/Windows) and user
interfaces (console/graphical) are discussed.
See also:
http://www.cfdsupport.com/turbomachinery-cfd-workflow.html
2.1 Windows
2.1.1 Software Requirements
Operating system requirements
TCFD® is compatible with the following Windows versions:
• Windows 10
• Windows 8.1
• Windows 8
• Windows 7
• Windows Server 2012 R2
19
20 TCFD® 18.10 – Manual
2.1.2 Installation
1. Request the trial version (this step is only needed for TCFD trial version - in
case you already purchased the TCFD perpetual version - please skip this step)
http://www.cfdsupport.com/turbomachinery-cfd-demo.html
2. Download and install TCFD®. Just follow the install wizard and install all the
components of TCFD®.
3. Copy the license files (License.key and License.dat) into the current TCFD version
directory, typically: C:\TCFD\18.10\
7. In case you see some errors immediately after launching ParaView; which can
be caused by a missing or incompatible OpenGL drivers on your system; go to
the TCFD installation directory, i.e., C:\TCFD\18.10\etc and edit the file
paraview-launcher.ini by changing “system” keyword to “software”.
Launch ParaView again.
8. Open the tutorial configuration file e.g. axial-fan-simple.tcfd using the Load... but-
ton in the General section of the Properties panel located in the left area of the
ParaView window.
10. The steps 6, 8 and 9 can be substituted by double clicking a *.tcfd file. The *.tcfd
files are automatically associated with TCFD®.
11. In the 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: the new case is written into default case
name tcfdcase0, mesh is created, case is set up, case is simulated, results are
evaluated and report is written down.
14. Inside the Line Chart View, the instant residuals can be watched. For more infor-
mation about the computation, the report can be updated anytime during the simu-
lation.
15. When the simulation is finished the final results report is written down. It is located
inside the test case:
.\tcfdcase0\report-tcfdcase0\tcfdcase0.html
16. Visual postprocessing can be done in ParaView using Turbo Blade Post plugins
(included).
10. Visual postprocessing can be done in ParaView using Turbo Blade Post plugins
(included).
2.2 Linux
2.2.1 Software Requirements
Operating system requirements
TCFD® is compatible with the Linux distribution having GLIBC library version 2.13 and
higher. Specially, the software was tested in:
2.2.2 Installation
1. Request the trial version (this step is only needed for TCFD trial version - in case
you already purchased the TCFD perpetual version - please skip this step):
http://www.cfdsupport.com/turbomachinery-cfd-demo.html
6. In a new terminal source the system variables (with every new terminal, or add this
to your $HOME/.bashrc for permanent usage):
source /home/michael/TCFD-18.10*/OpenFOAM-dev/etc/
bashrc-release
7. A ready-to-run tutorial can be found in:
/home/michael/TCFD-18.10*/TurbomachineryCFD/tutorials/
CFDProcessor/axial-fan-simple
Other tutorials can be downloaded from:
https://www.cfdsupport.com/download-cases.html
14. And all the process is done automatically: new case is written into default case
name tcfdcase0, 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:
./tcfdcase0/report-tcfdcase0/tcfdcase0.html
16. Inside the Line Chart View, the instant residuals can be watched. For more infor-
mation about the computation, the report can be updated anytime during the simu-
lation.
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 tcfdcase0, 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:
./tcfdcase0/report-tcfdcase0/tcfdcase0.html
11. Visual postprocessing can be done in ParaView using Turbo Blade Post plugins
(included).
This chapter mainly deals with requirements for input data and its fundamental properties
which have to be satisfied to get outstanding results with TCFD® workflow. Moreover,
basic terminology for input mesh data and turbomachinery simulations are introduced.
25
26 TCFD® 18.10 – Manual
Both ways usually starts from the CAD geometry. The next sections bring general
requirements for CAD geometries.
• INPUT RULE 1: Having a clear geometry describing the flow path only.
• stators
– pipes
– volutes
– leakages
– diffusers
– general fluid domain
• rotors
– impellers
– propellers
For CFD purposes, this pump must be disassembled into at least two parts: impeller
and volute. Looking at the machine in more detail, we can disassembled it into four parts:
inlet pipe, impeller, volute and outlet pipe.
The rotor component must have a rotational symmetry. Therefore, it would be possi-
ble to define the inlet pipe and the impeller as one component. But a more sensible option
is to split it into two parts. The same treatment can be applied to the volute and the outlet
pipe. It can be defined as one component or split into two components.
Component properties
Each component has to satisfy following properties:
1. Partitioning into physical boundaries (inlet, outlet, blade, hub, ...)
• the outlet boundary of the inlet pipe component has to be perfectly aligned with the
inlet boundary of the rotor component.
• the outlet boundary of the rotor component has to be perfectly aligned with the inlet
boundary of the volute component
• etc.
• INPUT RULE 5: Each component has to be perfectly aligned with its neighbor(s).
A usual mistake is to extended the green part to the whole orange cylindrical part. In
this case the red part would be not perfectly aligned with the volute inlet which is not
allowed.
TCFD® offers to impose so called mixing plane approach for components which de-
fines just a segment of a full wheel geometry. In this case, neighboring interfaces have to
be perfectly aligned in sense of its full wheel geometry, as depicted below.
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, see Figure 4.2 left). The advanced
mode is indicated by orange color of section headers (see Figure 4.2 right). Generally,
the advanced properties have universally reasonable values and are not necessary to mod-
ify. 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 TCFD setup file (with the *.tcfd extension) into this form and start
editing those. You can load a TCFD setup file by using the menu item File > Open... (or
33
34 TCFD® 18.10 – Manual
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 TCFD
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 TCFD 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 TCFD 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.
• "Check Setup" button serves as a controling unit of current TCFD setup. It shows
which part of the setup is missing or is inconsistent with other parameters.
• The entry "Simulation type" offers selection of the type of the machine that is to
be set up. CFD Processor supports the following machines: fan, propeller, pump,
stator, virtualTunnel, turbine, hydro (water) turbine and wind turbine. Each of these
types is slightly different, whether due to a different assignment of boundary con-
ditions, or the postprocessing tools used.
4.3 Simulation
The simulation settings are displayed in Figure 4.4.
• 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.
• The entry "Solver steady state" (advanced) allows you to use a user-compiled
solver within the steady-state TCFD simulation.
• When transient mode is chosen, the entry "Solver transient" (advanced) allows
you to use a user-compiled solver within the transient TCFD simulation.
• The table "Hosts" (advanced) can be used in conjunction with the "Proces-
sors" 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 ta-
ble 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 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.
4.4 Physics
The physical settings are displayed in Figure 4.5.
Figure 4.5: Plugin TCFDSource – physical settings: Incompressible (top) and compress-
ible (middle) variants and fully enabled multiphase cavitation section (bottom).
©2018 CFD support s.r.o. www.cfdsupport.com 39
40 TCFD® 18.10 – Manual
• 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 compressible 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 8.6 for details.
Table 4.1: Fluid defaults used when "Use fluid defaults" is checked.
• The entries in "Rotation speed" set the rotation speed of the frame for every speed-
line, 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 (right-
hand rule) and negative when it points into the opposite direction. The number of
speedlines is set in “Speedlines” section.
Important note:
For stationary frames having rotational symmetry, it is important to define axis of
rotation correctly. TCFD uses this information for applying appropriate boundary
condition for outlet/inlet interfaces or rotationalAMI boundary patches.
4.6 Components
A sample setup of the “Components” section is depicted in Figure 4.10.
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 Figure 4.9.
If one of the simulation types stator, virtualTunnel, propeller or windTurbine is cho-
sen, checkbox "Bounding box" appears in the ”Components” section. Using this feature,
TCFD can be used for simulations of external flows. If "Bounding box" is checked, axis
oriented box is added, which works as a virtual wind tunnel, and another three entries will
show up (Figure 4.7):
• "Flow direction" entry determines the direction of the flow through the bounding
box. The actual velocity vector might slightly differ from this direction (depends
on the type of the inlet boundary condition), as purpose of "Flow direction" is to
decide, which patches of the box will be inlet and outlet.
• "Bounding box point 1" sets the coordinates of the one vertex of the box.
• "Bounding box point 2" sets the coordinates of the opposite vertex.
Bounding box is displayed as a wireframe in the RenderView, and flow direction as two
arrows in the inlet and outlet patches (Figure 4.8). After the bounding box is added, its
patches will appear in the "Patches table".
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
“Components” includes following parameters:
• 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!
• 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.
• External Fluent mesh – The patches (and mesh) are taken from an already existing
mesh in MSH format. The mesh creation step for this component will be skipped.
The MSH mesh reader is compatible both with the ASCII and binary formats.
• "Component name", which sets the name of the component used in patch names
and report.
Patches table gives summary of all patches for each component, where each row of this
table represents one patch and its properties.
First column is the name of the patch, which is non-editable.
Second column is the patch type, which is one of the following:
• outlet – Exit from the simulated machine, mostly the last component.
• freestreamInterface – For interfaces where both flow direction may occur, e.g.,
open propellers. It is necessary to connect this interface to a specific component
where the same interface is defined by right-clicking on the row and selecting the
component. This change will be reflected in the component graph. This type always
imposes cyclicAMI boundary condition.
Besides the specific type, every patch can be either rotating or non-rotating, which is
controlled by the column labeled "frame":
• A common approach is to assign the same frame (assigned to the whole component)
to all patches in the component.
• For patches of type wall (wall, hub, blade*,...) a rotation can be individually set:
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 modifying the value by hand or using the spin-box buttons.
The lock symbol in the “grp” column has two modes:
• Locked - all the patches of the same type uses the same levels of refinement.
• Unlocked - the patch can hold its own refinement levels independently.
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 interpolation); 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
• "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). Background
mesh can be displayed in the RenderView by the adjacent checkbox.
• "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
• "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.
If a cylindrical background mesh is selected, then the interpretation of "Background
mesh size" changes. Instead of cell sizes in the x, y and z axes it sets the approximate
cell sizes in radial, circumferential and axial directions (with respect to the chosen axis).
Further advanced options in this section are:
• "Use gap refinement" checkbox enables setting higher level of refinement then
“max ref” value for meshing small gaps between different parts of the input geom-
etry. It shows a new column in the Patches table. The minimum value is equal to
“max ref” value.
• "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.
Figure 4.9: Plugin TCFDSource – two examples of the (detached) "component graph".
Left: Machine has linear topology with single inlet and single outlet. The fluid enters im-
peller 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.
The "component graph" (shown in Figure 4.9) displays all components and their
interfaces. Thick arrows point always from inlet to outlet interface. If some interface is
not available (or connected), the arrows become dashed and point elsewhere. This then
indicates an invalid topology. All components must be connected into a single domain us-
ing the inletInterface/outletInterface pairs. The graph can be detached from the Properties
panel by a double-click; this transfers it to a new window. The separated window stays
by default on top of all other windows (this can be manually unselected in the window
manager menu). Further double-click merges the window back into the panel, as does
also closing the window in any other way. The colours in the graph correspond to colours
of the individual components in RenderView, assuming the colouring by vtkBlockColors
is chosen. The graph also displays all inlets and outlets, with inlet and outlet compo-
nents assigned to them. In a valid setup, all inlets and outlets should have exactly one
inlet boundary condition and outlet boundary condition, respectively, assigned to them.
If some inlet/outlet lacks inlet/outlet boundary condition, its name becomes red. If some
inlet/outlet has more than one inlet/outlet boundary condition, its name becomes red, and
so do the inlet/outlet boundary condition arrows pointing to it.
4.7 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 particular value of the rotation speed is
set in “Reference frames” section.
• The slider "Speedlines" sets the number of speedlines (groups of points with com-
mon rotation speed).
• 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.
4.8 Turbulence
Currently there are several turbulence models supported by TCFDSource:
• k − model,
• realizable k − ,
• RNG k − ,
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 4.13. Independently
of the turbulence model the user can also require different wall functions: Standard wall
functions, Low-Reynolds wall functions and Rough walls, which will be applied on all
walls in the case.
The exclusive parameters of the "Volumetric flow rate" inlet boundary condition are:
• "Volumetric flow rate".
The exclusive parameters of the "Total pressure" inlet boundary condition are:
• "Total pressure", which is the inlet total pressure ptot and
• "Total temperature", which is the inlet total temperature Ttot (only needed and
available for compressible simulations).
The exclusive parameters of the "Fixed velocity" inlet boundary condition are:
• "Fixed velocity", which are the components of the velocity at the inlet.
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 defined in
CSV is exceeded.
Figure 4.14: Plugin TCFDSource – inlet boundary conditions: Mass flow rate.
Figure 4.15: Plugin TCFDSource – inlet boundary conditions: Directed volumetric flow
rate.
computational domain: Prescribing a fixed pressure or adjusting the pressure based on the
outlet velocity. The choice of the boundary conditions is done by selection of one item of
the drop-down list "Outlet BC". The rest of the panel is then adjusted to the user’s choice.
The boundary condition "Fixed pressure" has only one editable property, of the same
name.
The boundary condition "Outlet vent" adjusts the pressure based on the velocity:
pBC = p + 21 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;
• One-component mesh or frozen rotor setup, i.e., number of “mxp” for every out-
let/inletInterface is set to 0.
• 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.
Figure 4.16: Plugin TCFDSource – outlet boundary conditions: Fixed pressure (top),
and outlet vent (bottom).
• 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 4.17: 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.
4.13 Post-processing
This section allows user to define how the post-processing (evaluation of results and gen-
eration of a report) will be done.
Table 4.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 4.18: Plugin TCFDSource – simulation controls: relaxation factors and bounding
limits.
• 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 Figures in the result-
ing 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 sections" defines sections to appear in the calculation re-
port.
• The selection "Report quantity" defines the reference quantity for the calculation
report.
• 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 "Stream path" offers the possibility to select a path though the simulated
machine (in terms of component indices) that will be used when plotting 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
quantities. 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 "Forces" contains a list of requested boundary parts on which forces and
force coefficients are evaluated:
where F~t denotes the total force and M ~ t the total moment. For incompressible
simulation the reference pressure ρref is taken from the value defined in Physics
menu, see Page 38.
Besides the values described above, the output additionally includes force compo-
nents in x,y,z direction as well as torque components for x,y,z axes.
• 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
• 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 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.
• 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.
4.15 Scripting
For experienced users it is possible to extend the TCFD workflow by custom scripts
(advanced). 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 multiple
execution points to a single script, see figure 4.25. The script can use the predefined
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 TCFD-
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 obvious 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 4.25: 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.
69
70 TCFD® 18.10 – Manual
Setup
• The field “Output path” is a working directory, where new calculations are to be
created. If the TCFDSource has been initialized by a TCFD 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:
– If the TCFDSource has been initialized by a TCFD setup file and that file is
already inside of an OpenFOAM case directory, then that directory name will
be used here making the CFD Processor use the already calculated data and,
if needed, overwrite them with new results.
– If the loaded setup file is not located inside of an OpenFOAM case, then the
directory name will be left empty.
– In any case, the use may decide to specify an own name and press Apply.
• 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 “tcfdcaseX”, 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.
Automatic Run
• 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.
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 “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.
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 similar function as “Full 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 option “Results” which results to be shown by “Show results” button – steady-
state or transient.
• 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.
Apply button
When the Apply button is pressed, the TCFDManager will call CFDProcessor to ana-
lyze 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 TCFD output window from the menu
View, which contains the same information, see figure 5.2.
Figure 5.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.
www.cfdsupport.com
Figure 5.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).
76
76
[email protected] 77
Figure 5.7: View of the final report from the CFD Processor.
The TCFD file produced by TCFDSource has mostly the *.tcfd extension. 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 6.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).
79
80 TCFD® 18.10 – Manual
[email protected]
I Custom solver for transient calculation.
www.cfdsupport.com
bindToCore true − no
I Lock processes to cores to prevent their migration. This is currently active only in Linux.
hosts node1 node2 node3 − no
I List of remote machines for scheduling parallel processes. Paswordless login must be available. Currently active only in Linux.
transient no | yes | semiAMI | semiMXP − no
I Append transient simulation after stationary. Default is “no”. The semi-transient modes “semiAMI” and “semiMXP” use MRF
method instead of physical rotation, albeit with time derivatives.
Co 0.9 − no
I Courant number (transient simulations only).
numberOfSpeedlines 3 − yes
I Number of speedlines (different rotation speeds).
1_numberOfPoints 3 − yes
I Number of points for the first speedline. All speedline points share rotational speed.
1_iterations 1000 1000 1000 − yes
I Number of iterations for each point of a speedline.
1_transientTimes 1_s 1_s 1_revolution − no
83
83
84
84
Keyword Allowed / sample values Units Mandatory
I Description
I How much time to compute in transient simulation in respective points. Choice of unit.
pMin -2000 Pa (m2 /s2 ) no
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.
[email protected]
I Either “first” or “second” numerical order.
www.cfdsupport.com
averagingWindow 100 − no
I Averaging window for stationary calculation. Does the averages over last n iterations. Checks convergence for last n iterations.
transientWindow 0.1_revolutions − (s) no
I Averaging window for transient calculation. Use the suffix _revolutions or _seconds to determine units for the time interval.
snapshotInterval 0 s no
I Secondary write for transient calculation.
snapshotFields pU − no
I Which fields to write during snapshots.
convergenceCheck true − no
I Monitor convergence and auto-skip to next point when convergence has been reached.
convergenceCheck-tolerance 0.001 − no
I Relative convergence threshold for efficiency and mass flow.
userDefinedFunctions scripts/run.py afterWrite − no
I Custom user script setup.
numberOfInletBoundaryConditions 2 − no
I How many different inlet boundary condtitions are there.
85
85
86
86
Keyword Allowed / sample values Units Mandatory
I Description
1_inletBoundaryCondition-type massFlowRate − yes
I Inlet boundary condition to use. Possible options are: massFlowRate, directedMassFlowRate, volumetricFlowRate, directed-
VolumetricFlowRate, totalPressure, fixedVelocity.
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
I Transient boundary condition data for first boundary condition, first speedline, first point.
1_inletBoundaryCondition-1_totalPressure 200000 150000 100000 Pa yes*
I As above, for BC of type “totalPressure”. Selectable unit.
1_inletBoundaryCondition-1_totalPressure-1_csv bc/pTot.csv − no
I Transient boundary condition data for first boundary condition, first speedline, first point.
1_inletBoundaryCondition-1_fixedVelocity 001002003 m/s yes*
I As above, for BC of type “FixedVelocity”. Selectable unit.
©2018 CFD support s.r.o.
1_inletBoundaryCondition-1_fixedVelocity-1_csv bc/U.csv − no
I Transient boundary condition data for first boundary condition, first speedline, first point.
1_inletBoundaryCondition-1_totalTemperature 1000 900 800 K yes*
I Boundary condition values for temperature in compressible calculations for the first speedline. Selectable unit.
1_inletBoundaryCondition-1_totalTemperature-csv ../bc/temperatures.csv − no
I Transient boundary condition data for first boundary condition, first speedline, first point.
1_inletBoundaryCondition-1_meridionalAngle 90 deg yes*
I Additional parameter for “directedMassFlowRate” and “directedVolumetricFlowRate” boundary conditions.
©2018 CFD support s.r.o.
[email protected]
www.cfdsupport.com
I Parameter of the Spalart-Allmaras turbulence model, not needed for other models.
1_inletBoundaryCondition-patches 2:inletPipe − no
I First inlet boundary condition is applied to patch inletPipe in component 2.
1_inletBoundaryCondition-turbulentDissipation 100 − no
I Initial boundary condition for turbulent dissipation
1_inletBoundaryCondition-turbulentEnergyIntensity 0.05 − no
I Initial boundary condition for turbulent energy intensity
numberOfOutletBoundaryConditions 2 − no
I How many different outlet boundary condtitions are there.
1_outletBoundaryCondition-1_outletVentResistance 048 − yes*
I Outlet vent boundary condition resistance factor values for individual points of the first speedline.
1_outletBoundaryCondition-outletVentRelaxation 0.1 − yes*
I Outlet vent boundary condition relaxation factor value. Only for experienced users.
1_outletBoundaryCondition-outletVentMaxPressure 200000 Pa yes*
I Outlet vent boundary condition maximum outlet pressure value. Selectable unit.
1_outletBoundaryCondition-1_fixedPressure 100000 110000 120000 Pa yes*
87
87
I Average oulet pressure value for all points of the first speedline. Selectable unit.
88
88
Keyword Allowed / sample values Units Mandatory
I Description
fluidName water | air | custom − yes
I Name of the fluid. Used for various material properties defaults.
compressibility incompressible | compressible − yes
I Fluid flow nature: compressible or incompressible.
referenceDensity 1.2 kg/m3 yes
I Reference density of the fluid. Selectable unit.
dynamicViscosity 0.000018 Pa · s yes
[email protected]
I Parameter of the k-omega SST model.
www.cfdsupport.com
kOmegaSST-beta1 0.075 − no
I Parameter of the k-omega SST model.
kOmegaSST-beta2 0.0828 − no
I Parameter of the k-omega SST model.
kOmegaSST-betaStar 0.09 − no
I Parameter of the k-omega SST model.
kOmegaSST-gamma1 0.5555556 − no
I Parameter of the k-omega SST model.
kOmegaSST-gamma2 0.44 − no
I Parameter of the k-omega SST model.
kOmegaSST-a1 0.31 − no
I Parameter of the k-omega SST model.
kOmegaSST-b1 1 − no
I Parameter of the k-omega SST model.
kOmegaSST-c1 10 − no
I Parameter of the k-omega SST model.
89
89
90
90
Keyword Allowed / sample values Units Mandatory
I Description
kOmegaSST-F3 0 − no
I Parameter of the k-omega SST model.
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
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.
realizableKE-A0 0.09 − no
I Parameter of the realizible k-epsilon model.
realizableKE-C2 1.92 − no
©2018 CFD support s.r.o.
[email protected]
I Parameter of the renormalization group k-epsilon model.
www.cfdsupport.com
RNGkEpsilon-eta0 1 − no
I Parameter of the renormalization group k-epsilon model.
RNGkEpsilon-sigmaEps 1.3 − no
I Parameter of the renormalization group k-epsilon model.
RNGkEpsilon-sigmak 1 − no
I Parameter of the renormalization group k-epsilon model.
LESDelta-cubeRootVol-delta 1 − no
I Parameter of the Spalart-Allmaras turbulence model, not needed for other models.
lowReWalls false − no
I Whether to use low-Reynolds wall functions.
roughWalls false − no
I Whether to simulate wall roughness.
roughWalls-Ks 0 − no
I Sand-grain roughness.
roughWalls-Cs 0.5 − no
I Roughness constant.
91
91
92
92
Keyword Allowed / sample values Units Mandatory
I Description
molarWeight 28.9 kg/mol no
I Molar weight (air = 28.9, water = 18.015).
heatCapacityRatio 1.4 − no
I Heat capacity ratio Cp/Cv for “totalPressure” inlet boundary condition.
Cp 1004 J/(kg · K) no
I Speficic heat capacity.
R 287.1 J/(kg · K) no
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
I Saturation pressure for multiphase cavitation.
multiphaseCavitation-sigma 0.075 kg/s2 no
I Surface tension for multiphase cavitation.
multiphaseCavitation-vapourRho 0.02308 kg/m3 no
©2018 CFD support s.r.o.
[email protected]
I Initial condition for velocity vector (x y z components).
www.cfdsupport.com
93
94
94
Keyword Allowed / sample values Units Mandatory
I Description
1_wheelDiameter 0 scaleFactor no
I Wheel / Impeller / Rotor diameter for the first component. Used to post-process fans.
1_filePath ./STL − yes*
I Directory with STL files or path to a multi-solid STL of the first component. Can be both relative (w.r.t. TCFD file) and absolute.
1_surfaceHookUp true | false − no
I Hook-up the STL files of the first component, default = true.
1_meshPath ./mesh_rotor − yes*
1_meshRegion mesh-draft − no
I For use with external mesh, which region to use.
1_componentName rotor − no
I Custom name for the component (used in patch names)
1_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.
1_backgroundMeshSize 4.0 4.0 4.0 scaleFactor yes*
I Mesh size in each direction (affected by scale factor). Used only when meshing.
©2018 CFD support s.r.o.
1_meshRotation 0 45 0 − no
I Rotation of background mesh around x, y and z axes respectively.
1_inlet pump_pipe_inlet − no
I Inlet surface(s). Must correspond to STL files in a directory or to solids In multi-solid STL file.
1_outlet pump_pipe_outlet − no
I Outlet surface(s).
1_rotationAMI pump_per1 pump_per2 − no
I Rotationally coupled surfaces, in pairs. Used for segment side patches.
©2018 CFD support s.r.o.
[email protected]
I Patches to apply symmetry boundary condition to.
www.cfdsupport.com
1_wallSlip top_plane − no
I Patches to apply symmetry wall slip boundary condition to.
1_numberOfPeriodicSegments 6 − no
I Periodic multiplier, number of segments.
1_wall pump_pipe_wall pump_pipe2_wall − no
I General rigid wall surface(s).
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_3_freestreamInterface propeller_interface − no
I Freestream interface from component 2 to component 3, where no specified direction of the flow is given – always cyclicAMI is
95
95
used.
96
96
Keyword Allowed / sample values Units Mandatory
I Description
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
1_useRefinementRegions yes − no
I Switch on use of refinement regions in first component
1_numberOfRefinementRegions 1 − no
I Number of the refinement regions.
1_refinementRegion-1_type box | sphere | cylinder − no
I Type of the first refinement region in the first component.
1_refinementRegion-1_box-min 0.5 1.2 -0.8 scaleFactor no
©2018 CFD support s.r.o.
I First component, first refinement region, type box, coordinates of one vertex of the box.
1_refinementRegion-1_box-max 1.8 2.5 -0.2 scaleFactor no
I First component, first refinement region, type box, coordinates of the opposite vertex of the box.
1_refinementRegion-1_sphere-centre 0 0 7.5 scaleFactor no
I First component, first refinement region, type sphere, coordinates of the sphere centre.
1_refinementRegion-1_sphere-radius 1.5 scaleFactor no
I First component, first refinement region, type sphere, radius of the sphere.
[email protected]
1_refinementRegion-1_cylinder-point1 -1.5 1 1 scaleFactor no
www.cfdsupport.com
I First component, first refinement region, type cylinder, centre coordinates of the one cylinder base.
1_refinementRegion-1_cylinder-point2 311 scaleFactor no
I First component, first refinement region, type cylinder, centre coordinates of the other cylinder base.
1_refinementRegion-1_cylinder-radius 1.5 scaleFactor no
I First component, first refinement region, type cylinder, radius of the cylinder.
1_refinementRegion-1_mode inside | outside − no
I Refinement mode in the first refinement region in the first component.
1_refinementRegion-1_level 3 − no
I Refinement level in the first refinement region in the first component.
2_inlet pump_rotor_inlet − no
I Inlet surface(s).
2_outlet pump_rotor_outlet − no
I Outlet surface(s).
2_wall pump_rotor_wall pump_pipe2_wall − no
I Rigid wall surface(s).
2_blade pump_rotor_123 pump_rotor_456 − no
97
97
98
98
Keyword Allowed / sample values Units Mandatory
I Description
I Blade surface(s).
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).
−
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).
2_bladeTrailingEdge pump_rotor_LE − no
I Blade trailing edge side surface(s).
©2018 CFD support s.r.o.
2_bladeCap pump_rotor_TE − no
I Blade caps surface(s).
2_rotatingRegion true | false − no
I If the region is rotating or not, default is false.
2_cutWater pump_rotor_CW − no
I Cut water component(s).
2_bladeCap-clearance 0.5 scaleFactor no
©2018 CFD support s.r.o.
[email protected]
3_wheelDiameter 0 scaleFactor no
www.cfdsupport.com
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*
I Mesh size in each direction (affected by scale factor). Used only when meshing.
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)
boundingBox yes − no
I Will switch on the bounding box feature.
99
99
100
100
Keyword Allowed / sample values Units Mandatory
I Description
boundingBox-point1 -10 0 0 − no
I Bounds of the bounding box in x,y and z direction respectively.
boundingBox-point2 10 10 10 − no
I The other bound of the bounding box in x,y and z direction respectively.
numberOfEfficiencyProbes 1 − no
I How many reports to generate (default: 1).
1_efficiencyProbe-inletPatches 1:pump_pipe_inlet − no
[email protected]
I Center of rotation for moment calculations.
www.cfdsupport.com
1_forcesProbe-referenceArea 1 − no
I Reference area for coefficients evaluation.
1_forcesProbe-referenceLength 1 − no
I Reference length for moment coefficient evaluation.
1_forcesProbe-referenceVelocity 1 − no
I Reference (freestream) velocity magnitude.
numberOfBladeToBladeViews 11 − no
I Number of distinct blade-to-blade views to include in the report (default: 0).
bladeToBladeView-groupByPoint no − no
I Reorder blade-to-blade view figures in report so that they are grouped by point and not by span.
1_bladeToBladeView-meshes 2 − no
I Meshes to unwrap for the first blade-to-blade view, mostly whole components or blade patches. Specify component by name or
number, patch by “<component>:<patch>”.
1_bladeToBladeView-hubs 1:pump_rotor_hub − no
I Hub patches needed to define the first blade-to-blade view.
1_bladeToBladeView-shrouds 1:pump_rotor_shroud − no
101
101
I Shroud patches needed to define the first blade-to-blade view.
102
102
Keyword Allowed / sample values Units Mandatory
I Description
1_bladeToBladeView-field U − no
I Field to display on the first blade-to-blade view.
1_bladeToBladeView-span 0.25 0.5 0.75 − no
I Distances between hub and shroud for the first set of blade-to-blade views.
numberOfMeridionalAverages 1 − no
I Number of distinct meridional average views to include in the report (default: 0).
1_meridionalAverage-meshes 2 − no
1_meridionalAverage-field p − no
I Field to display on the first meridional average view.
reportUnit-massFlowRate 1_kg/s − no
I Choice of unit for mass flow rate in report,choice of kg/s, kg/min, kg/h, g/s, g/min, g/h.
reportUnit-volumetricFlowRate 1_mˆ3/s − no
I Choice of unit for volumetric flow rate in report, choice of mˆ3/s, mˆ3/min, mˆ3/h, l/s, l/min, l/h, USgal/s, USgal/min, USgal/h.
reportUnit-pressure 1_Pa − no
I Choice of unit for pressure in report, choice of Pa, bar, mbar, atm, torr, psi.
reportUnit-temperature 1_K − no
©2018 CFD support s.r.o.
[email protected]
I Maximal global number of cells during meshing.
www.cfdsupport.com
1_castellate-maxLocalCells 10000000 − no
I Maximal number of cells per MPI process during meshing.
1_castellate-minRefinementCells 10 − no
I Minimal number of refined cells after a refinement iteration for termination of refinement iterations.
1_castellate-maxLoadUnbalance 0.1 − no
I Maximal relative difference between individual processes’ cell count not triggering redistribution of the mesh.
1_castellate-nCellsBetweenLevels 1 − no
I Number of cell transition layers between cells of different refinement level (1 = no transition).
1_castellate-featureEdgesLevel 0 − no
I Level of refinement of the castellated mesh along the feature edges.
1_castellate-default-refinementSurfaces 14 − no
I Default minimal and maximal refinement for all surfaces.
1_inlet-refinementSurfaces 14 − no
I Minimal and maximal refinement for inlet boundaries.
1_outlet-refinementSurfaces 14 − no
103
103
I Minimal and maximal refinement for outlet boundaries.
104
104
Keyword Allowed / sample values Units Mandatory
I Description
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
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.
1_bladeSuctionSide-refinementSurfaces 14 − no
I Minimal and maximal refinement for blade suction side boundaries.
1_bladeLeadingEdge-refinementSurfaces 14 − no
©2018 CFD support s.r.o.
[email protected]
I Minimal and maximal refinement for symmetry patches.
www.cfdsupport.com
1_symmetry-refinementSurfaces 13 − no
I Minimal and maximal refinement for symmetry patches.
1_patch-z_min-refinementSurfaces 13 − no
I Minimal and maximal refinement for patch z_min. Similarly for z_max, y_min, etc.
1_outletInterface-refinementSurfaces 13 − no
I Minimal and maximal refinement for outlet interface.
1_2_freestreamInterface-refinementSurfaces 13 − no
I Minimal and maximal refinement for freestream interface.
1_2_inletInterface-refinementSurfaces 13 − no
I Minimal and maximal refinement for inlet interface.
1_castellate-resolveFeatureAngle 30 deg no
I Maximal feature angle that has influence on refinement.
1_wall-surfaceLayers 3 − no
I Number of boundary layers on general walls. Only effective when addLayers is on.
1_blade-surfaceLayers 3 − no
105
105
I Number of boundary layers on general blade walls. Only effective when addLayers is on.
106
106
Keyword Allowed / sample values Units Mandatory
I Description
1_snap-nSmoothPatch 3 − no
I Number of patch smoothing iterations before finding correspondence to surface.
1_snap-tolerance 2 − no
I Maximum relative distance for points to be attracted by surface.
1_snap-nSolveIter 30 − no
I Number of mesh displacement relaxation iterations.
1_snap-nRelaxIter 5 − no
1_snap-nFeatureSnapIter 10 − no
I Number of feature edge snapping iterations.
1_snap-implicitFeatureSnap true − no
I Detect (geometric only) features by sampling the surface.
1_snap-explicitFeatureSnap true − no
I Take into consideration manually generated feature edges.
1_snap-multiRegionFeatureSnap true − no
I Detect features between multiple surfaces.
1_layers-relativeSizes true − no
©2018 CFD support s.r.o.
[email protected]
I Max number of iterations after which relaxed meshQuality controls get used.
www.cfdsupport.com
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
I Stop layer growth on highly warped cells.
1_layers-maxThicknessToMedialRatio 0.5 − no
I Reduce layer growth where ratio thickness to medial distance is large.
1_layers-minMedialAxisAngle 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
107
107
I Overall max number of layer addition iterations.
108
108
Keyword Allowed / sample values Units Mandatory
I Description
1_quality-maxNonOrtho 65 deg no
I Maximum non-orthogonality allowed. Set to 180 to disable.
1_quality-maxBoundarySkewness 20 − no
I Max boundary skewness allowed.
1_quality-maxInternalSkewness 4 − no
I Max internal skewness allowed.
1_quality-maxConcave 80 − no
1_quality-minVol 1E-16 m3 no
I Minimum pyramid volume. Is absolute volume of cell pyramid. Set to a sensible fraction of the smallest cell volume expected.
1_quality-minTetQuality -1E+30 − no
I Minimum quality of the tet formed by the face-centre and variable base point minimum decomposition triangles and the cell
centre.
1_quality-minArea 1E-13 m2 no
I Minimum face area.
1_quality-minTwist 0.02 − no
I Minimum face twist.
©2018 CFD support s.r.o.
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
©2018 CFD support s.r.o.
[email protected]
1_outletBoundaryCondition-patches 2:outlet − no
www.cfdsupport.com
109
reportQuantity flowRate − no
110
110
Keyword Allowed / sample values Units Mandatory
I Description
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.
111
112 TCFD® 18.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.
The command mode can be used to terminate a detached calculation with a checkpoint
being written. Provided that “DIR” is the directory with the calculation and “PID” is the
process ID of the running CFDProcessor program, the following two commands will do
the trick:
# echo abortwrite > DIR/cfdp-command.txt
# kill -SIGINT PID
115
116 TCFD® 18.10 – Manual
• volumeFlowRateOutlet volumetric flow rate at the wheel outlet, Qw2 [m3 /s]
P Mω
η windT urbine = = , (8.8)
Pmax 0.593 12 ρAvin
3
where P is the power of the turbine, Pmax is the maximal theoretical power given by
Betz’s law, M is torque of the rotor and ω is angular velocity of the rotor, ρ is density of
air, A is area covered by the rotor and vin is the velocity at inlet.
• Thrust – T [N]
• Torque – M [N·m]
In case of propeller, reference pressure is not taken into account when evaluating thrust
and torque.
Dimensional analysis leads to a definition of propeller coefficients representing its
performance. 1
where n is the propeller speed [rev/s] and D denotes the propeller diamater [m].
The efficiency can be evaluated using the supplied power to the propeller (Pin ) and the
useful power output (Pout ):
Pout T U0 1 kT
η propeller = = = J, (8.11)
Pin 2πnM 2π kQ
where J is the advance ratio and is given as the distance advanced by the propeller in
one revolution divided by the propeller diameter, i.e., J = U0 /(Dn) .
with all OpenFOAM applications and libraries. Solver is modified to be more robust, it
can use MRF method, limits for variables can be specified and many other changes have
been done.
∂ρ ∂
+ [ρuj ] = 0 (8.13)
∂t ∂xj
∂ ∂
(ρui ) + [ρui uj + pδij − τji ] = 0 (8.14)
∂t ∂xj
∂ ∂
(ρe0 ) + [ρuj e0 + uj p + qj − ui τij ] = 0 (8.15)
∂t ∂xj
∂ ∂ 1 ∂ 1
(ρh) + ρuj h + qj − ui τij + ρ uk uk uj + ρ uk uk − p = 0 (8.16)
∂t ∂xj 2 ∂t 2
∂ ∂ ∂ui ∂ ∂uj ∂p
(ρh) + [ρuj h + qj ] − τij − (puj ) + p − = 0 (8.17)
∂t ∂xj ∂xj ∂xj ∂xj ∂t
1 ∂ui ∂uj 1 ∂uk
τij ≡ 2µSij Sij ≡ + − δij (8.18)
2 ∂xj ∂xi 3 ∂xk
∂T ∂h µ ∂T λ Cp µ
qj = −λ ≡ −α ≡ −Cp , α≡ , Pr ≡ (8.19)
∂xj ∂xj P r ∂xj Cp λ
Cp
γ≡ , p = ρRT (8.20)
Cv
uk uk
e0 ≡ e + , Cp − Cv = R, h = Cp T, e = Cv T (8.21)
2
• Mass conservation 8.13
∇·u = 0 (8.22)
∂u
+ (u · ∇)u = ν∇2 u − ∇p + g (8.23)
∂t
µ
ν≡ (8.24)
ρ
8.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].
8.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 (8.26)
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 )2
Method preconditioner:
• diagonal (Diagonal)
f~ = %~g . (8.27)
It is a simple task to find a potential to (8.27). 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~ . (8.28)
We can see that to the f~ given by (8.27) there exists a potential, let us denote it by ϕ,
stating
ϕ (~r) = −%~g · ~r + C , (8.29)
where C ∈ R is a constant of integration4 and ~r is a position vector5 .
Figure 8.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 (8.32)
h = hIn + hIO − hOut (8.33)
h − hIO = hIn − hOut (8.34)
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~ , (8.35)
% %
where ~rOutlet is a position vector of the centre of mass of the outlet surface. Hence pre-
scription (8.40) 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 (8.44)
Inlet
x
1
= SInlet
%~g · ~r dS + %~g · (−~r0,H + ~r0,L − ~rOutlet ) (8.45)
Inlet
= %~g · (~rInlet − ~r0,H + ~r0,L − ~rOutlet ) (8.46)
= %g(h − hIO ) , (8.47)
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 (8.48) we can formally substitute equation (8.35) by the following one
~ · ∇U
U ~ − ν∆U
~ = − 1 ∇p−%gh , (8.49)
%
for the right hand side takes the same values. This is the consequence of a fact that field
(8.27) 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 (8.43) by adding %~g · (~rOutlet − ~rInlet ) to its right hand side8 . 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 (8.42), but this time for
the quantity p−%gh
p−%gh,Out (~r) = %~g · (~r − ~rOutlet ) , (8.55)
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.
8.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
8
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 8.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 8.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 8.2: Radial turbine. Example of Mixing Plane Averaging from stator region to
rotor region.
Figure 8.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 8.5: User can switch on and off both "Cavitation Risk" and "Multiphase cavitation"
in the physics section of the menu.
Figure 8.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 .
137
138 TCFD® 18.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 9.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.
143
144 TCFD® 18.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 always accessible through the Filters >
Search option.
Figure 10.3: Geometry of the TCFD tutorial pump used in this examples.
Figure 10.4: Computational mesh in the rotor MRF (rotating) zone as generated by TCFD
using the snappyHexMesh mesher.
Figure 10.5: Computational mesh in the rotor MRF (rotating) zone as generated by TCFD
using the snappyHexMesh mesher.
Figure 10.6: Static pressure field in the pump. The incompressible simulation has been
done by TCFD using OpenFOAM.
Figure 10.7: Relative velocity streamlines in the rotating part (MRF zone) of the mesh.
The incompressible simulation has been done by TCFD 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 10.8.
Figure 10.8: Comparison between a common ParaView Slice filter (top) and Turbo Blade
Post Meridional Average filter (bottom) – application on TCFD (OpenFOAM) 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 10.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 10.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 10.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 10.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 10.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 10.13 and 10.14 show
the averaged results for static pressure and relative velocity, respectively.
Figure 10.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 10.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 10.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 10.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
TCFD using OpenFOAM.
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 10.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 10.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 10.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 10.20. The nature of the transformation is illustrated in the figures 10.18–10.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 10.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 10.22, the resulting cut displaying pressure is the figure 10.15, or
showing the SurfaceLIC representation (with settings from 10.24) in the figure 10.23.
Figure 10.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 10.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 10.19: Detail of the inflow interface mesh structure of the pump test case before
the application of Turbo Blade Post plugin Turbo Unwrap.
Figure 10.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 10.21: Detail of the inflow interface mesh structure of the pump test case after the
application of Turbo Blade Post plugin Turbo Unwrap.
Figure 10.22: Construction of the blade-to-blade view from the rotor block unwrapped by
Turbo Blade Post plugin Turbo Unwrap.
Figure 10.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 TCFD.
Figure 10.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 10.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 10.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 10.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 10.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 10.28.
Figure 10.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 10.27: Blades of a pump transformed by Turbo Blade Post – Turbo Unwrap to a
straight arrangement and displaying pressure field computed by TCFD using OpenFOAM.
Figure 10.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 angu-
lar position). The vertical axis displays the value of the pressure as computed by TCFD
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 10.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 10.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 10.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 10.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 10.31.
Figure 10.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 TCFD using OpenFOAM.
Figure 10.30: Settings of the filter Contour applied on a isolated pump blade transformed
by Turbo Blade Post / Turbo Unwrap filter.
Figure 10.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 TCFD 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 working directory. These files can be used to explore the internal
mechanisms particularly when contructing the projected boundary contour.
10.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.
10.7.2 Usage
The usage of the filter is similar to other filters with one small difference: Because it al-
lows (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 10.34 demon-
strates a typical selection of OpenFOAM case mesh and patches for the Turbo Unwrap
filter.
Figure 10.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 10.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 10.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
Convolution (SurfaceLIC) integrator when displaying realtive velocity using SurfaceLIC
representation.
If anything goes wrong - please go through this list item by item and check your case
settings again. By the experience from the technical support, the vast majority of all the
issues are caused by one of the following reasons:
0. Check if the boundary conditions are reasonable (especially at the inlet and at the
outlet).
1. Check of all the units (physical dimensions) of all quantities are correct.
4. All the interfaces between two components must fit perfectly. There is only one
exception: in the periodic segment cases when using Mixing Plane, the interfaces
may not fit in the circumferential direction. In all other cases the interfaces must fit
perfectly.
6. Check the speed of rotation and its units. Check the direction of rotation (right hand
rule).
7. If using Mixing Plane BC, check the number of averaging intervals (mixing planes).
8. Check if all the components and walls that should rotate are set as rotating.
179
180 TCFD® 18.10 – Manual
10. Check if the mesh dimensions are set correctly (mm, m, km, ...). TCFD® solvers
use always meters.
13. If you use automatic snappyHexMesh meshing - check if the internal points are
really inside the components (Otherwise the "inverse" volume is meshed).
14. If you use automatic snappyHexMesh meshing - check if the background mesh is
reasonable fine. At the beginning a reasonable background mesh cell size is the
impeller diameter divided by 75.
15. Does the background mesh cell size follow the dimensions of the input geometry?
16. Check if all the initial values for all quantities are reasonable.
17. If you use periodic segment case - check if the periodic patches (rotationAMI type)
fit perfectly.
18. Check the number of iterations or simulation time is reasonable - simulation has to
be converged. Sometimes Convergence Check utility may stop the simulation too
soon. Check it in the report, the quantities should be steady (converged).
19. ...
181
182 TCFD® 18.10 – Manual
U, 47
Under-Relaxation, 122
under-relaxation factors, 59
Unstructured grid, 149
Unwrap mesh, 155, 163, 167
Use fluid defaults, 38
User gap refinement, 47
wall, 45
wallSlip, 45
Wheel diameter, 43, 47
WriteFile, 68
186
[email protected] 187
[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).