ANSYS is a registered trademark of Ansys Inc. BLENDER BLENDER is a registered trademark of The Blender Foundation. Foundation. CFX is a registered trademark of Ansys Inc. CHEMKIN CHEMKIN is a registered registered trademark of Reaction Reaction Design Corporation Corporation EnSight is a registered trademark of Computational Engineering International Ltd. Fieldview Fieldview is a registered trademark of Intelligent Intelligent Light Fluent is a registered trademark of Ansys Inc. GAMBIT is a registered trademark of Ansys Inc. Icem-CFD is a registered trademark of Ansys Inc. I-DEAS is a registered trademark of Structural Dynamics Research Corporation JAVA is a registered trademark of Sun Microsystems Inc. Linux is a registered trademark of Linus Torvalds ParaView is a registered trademark of Kitware STAR-CD is a registered trademark of Computational Dynamics Ltd. TCFD is a registered registered trademark of CFD Support s.r.o. s.r.o. UNIX is a registered trademark of The Open Group The OPENFOAM® related products and services are not approved or endorsed by OpenCFD Ltd. (ESI Group), producer of the OpenFOAM software and owner of the OPENFOAM® and OpenCFD® trade marks.
TCFD® is a comprehensive CFD workﬂow for turbomachinery simulations. This workﬂow covers complete process from the basic (usually CAD) data over CFD analysis to signiﬁcant engineering results. TCFD® is based on the OpenFOAM® software. It is the ﬁnal outcome of a many year development of the team of CFD Support engineers and developers.
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 simulations.
TCFD® 17.06 – User’s Guide • Pumps
• Nozzles & Diffusers
• Steam Turbines
• Both axial and radial machines
• Both compressible and incompressible ﬂows
• Hydro Turbines
• Engine ﬂows
The package includes the real tutorials. The tutorials help the user to operate the model data. The user can easily repeat the whole process with his own data.
CFD Support s.r.o. provides full technical support. TCFD® is maintained and regularly updated. CFD Support engineers are instantly working on additional software modules 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 developed under GPL (GNU GENERAL PUBLIC LICENSE Version 3.) All the OpenFOAM® based components are provided with their source code. Having technical support, any additional functions can be added all over the workﬂow.
the extreme ﬂow conditions, it shows excellent performance, for example, at transonic ﬂows.
The TCFD® workﬂow also contains a number of scripts, OpenFOAM® utilities and OpenFOAM® function objects for preprocessing and postprocessing. To keep complete independence of this workﬂow, 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 ﬂuid ﬂows. It is based on OpenFOAM. Turbomachinery CFD is unique at least for four reasons:
1. TCFD® has No Licensing Policy - which means the users can keep Turbomachinery CFD forever and they can use it for unlimited number of users, jobs or cores. What is paid for is the ﬁrst delivery and technical support and software maintenance. This gives the investment in Turbomachinery CFD a permanent value. And also this means our clients can scale their CFD simulations in a really big way.
2. TCFD® is fully automated - which means all the workﬂow from the initial data to the ﬁnal results report, it can be run by a single command or a single click. And all the process is being done automatically. For this reason Turbomachinery CFD is extremely effective.
3. CFD Support delivers the extraordinary technical support. CFD Support keeps custom approach to every customer. To every issue. CFD Support never leaves behind any of its clients. Technical support is very ﬂexible. Technical support is unlimited. CFD Support supports its clients even in matters out of the turbomachinery ﬁeld. 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 preset. 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 workﬂow is automated anyway. So, the requirements on user’s CFD skills are very low.
• Convergence Monitoring • Special Boundary Function Objects
TCFD® 17.06 – User’s Guide
What is included?
• OpenFOAM® based software + source code • Real Tutorials - preset test cases demonstrating how this workﬂow works on real examples • Applications - new robust solvers and utilities. • Libraries - special boundary conditions, function objects, ﬂow models. • Scripts - preprocessing, postprocessing. • Software is Perpetual, Unlimited Users, Jobs & Cores • Source Code - all the source code of all GPL parts • Turbo Blade Post - Visual Postprocessing software • TCFDSource GUI - TCFD Graphical User Interface • CFD Processor - application for automated workﬂow • Training - tailored training covering individual needs of the client • Unlimited Technical Support • Updates & Maintenance until Technical Support is valid
CFD Processor is designed for an effective handling of Turbomachinery CFD simulations. CFD Processor is an original product of company CFD Support s.r.o. (www.cfdsupport.com). It was especially created to enable an effective automation of a CFD process. The complete process is executed - reading the conﬁguration ﬁle - creating new simulation case - CFD setup - simulation run - evaluation of CFD results - writing down the results report.
CFD Processor solves for physical volume ﬁelds in a ﬁnite 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 component should be provided separately as a set of non-overlapping ASCII STL (Stereo Lithography) geometry model ﬁles, which – put together – form the water-tight boundary geometry of the component’s volume or the external computational mesh could of each component can be imported. The summarized CFD Processor workﬂow is • [1.] Computational mesh generation - a brand new mesh can be generated on given STL ﬁles or the external computational mesh 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 ﬂow rates, different RPMs, different pressure ratios, etc.). • [3.] Results evaluation - the output is an html report with plots of interesting variables and colored pictures (e.g. blade-to-blade views, meridional averages, etc.). The third step can be done independently on the other two. It makes sense to run the post-processing stage even after the ﬁrst point of the machine characteristics – to obtain detailed mesh information and interesting results of the ﬁrst point (e.g. efﬁciency, pressure drop/rise, torque, etc.) in the synoptic html report.
Turbo Blade Post
Turbo Blade Post is a product of company CFD Support s.r.o. (www.cfdsupport.com). It was especially created to enable an effective graphical postprocessing of rotating machinery - both radial and axial machines such as pumps, hydro turbines, compressors, turbochargers, propellers and many more. Turbo Blade Post is a set of following plugins (ﬁlters) for ParaView (www.paraview.org): • Turbo Unwrap - for visualization of the blade-to-blade view or 2D plots around the blades. • Meridional Average - for evaluation and visualization of the meridional averages in the blade passage. More information about Turbo Blade Post can be found in the chapter 8 or on CFD Support web site: http://www.cfdsupport.com/turbo-blade-post.html. 16
ParaView is an open source multiple-platform application for interactive, scientiﬁc 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 sharedmemory 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 modiﬁcations to the GUI and implementation of new plugins.
ParaView uses a permissive BSD license that enables the broadest possible audience, including commercial organizations, to use the software, royalty free, for most purposes. In addition, there are other licenses that are applicable because of other packages leveraged by ParaView or developed by collaborators. Lastly, there are speciﬁc packages for the ParaView binaries available on paraview.org that have applicable licenses. Copyright (c) 2005-2008 Sandia Corporation, Kitware Inc.Sandia National Laboratories, New Mexico PO Box 5800 Albuquerque, NM 87185 Kitware Inc., 28 Corporate Drive, Clifton Park, NY 12065, USA Under the terms of Contract DE-AC04-94AL85000, there is a non-exclusive license for use of this work by or on behalf of the U.S. Government. Redistribution and use in source and binary forms, with or without modiﬁcation, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of Kitware nor the names of any contributors may be used to endorse or promote products derived from this software without speciﬁc prior written permission.
Chapter 2 TCFD® – Installation & First run This introductory chapter summarizes the basic steps needed to obtain Turbomachinery CFD 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
1. Request the trial version (this is only for the trial version - in case you purchased the perpetual version - skip this step) http://www.cfdsupport.com/turbomachinery-cfd-demo.html
2. Download and install OpenFOAM® for Windows (including ParaView and Gnuplot): http://www.cfdsupport.com/download-openfoam-for-windows . html
3. Download and install TCFD® or TCFD® Demo (note: software versions have to match; e.g.: Turbomachinery CFD 17.06 ﬁts to OpenFOAM® for Windows 17.06). 4. Download a tutorial: http://www.cfdsupport.com/download-cases.html
5. Copy two demo license ﬁles ( License.key and License.dat ) to the current OpenFOAM version directory, typically: C:\OpenFOAM\17.06\ * (this is only for trial version - in case you purchased the perpetual version - skip this step) 6. Ready to run now! 19
TCFD® 17.06 – User’s Guide
7. Extract your tutorial into work directory, e.g.: C:\OpenFOAM\17.06\user-dev\run\pump
When using GUI:
8. Launch ParaView using the “TCFD 17.06” desktop shortcut or the corresponding item in the Start menu. 9. Open conﬁguration ﬁle e.g. pump.tcfd in via the Load... button in the General section of the Properties panel located in the left area of the ParaView window.
10. Click Apply button. 11. In Pipeline browser select Settings and then apply TCFD Manager ﬁlter from the toolbar. 12. Click Apply, then Write Case and ﬁnally Run All.
13. And all the process is done automatically: new case is written into default case name ofcase0 , mesh is created, case is set up, case is simulated, results are evaluated and report is written down. 14. The report can be updated anytime during simulation.
15. When the simulation is ﬁnished the ﬁnal results report is written down. It is located inside the test case: .\ofcase0\report-ofcase0\ofcase0.html
16. Visual postprocessing can be done in ParaView using Turbo Blade Post plugins (included). When using terminal:
8. Run OpenFOAM® for Windows command line. 9. Navigate e.g. to the pump directory (mc command – Midnight Commander – is recommended, or navigate manually in terminal) and run all by one command from the pump directory: CFDProcessor -setup pump.tcfd -allrun
10. 10. And And all all the the proce process ss is done done autom automati atica cally lly:: new new case case is writt written en into into defa defaul ultt case case name name ofcase0, mesh is created, case is set up, case is simulated, results are evaluated and report is written down. When the simulation is ﬁnished the ﬁnal results report is written down immediately immediately. It is located inside the test case: ./ofcase0/report-ofcase0/ofcase0.html
11. Visual postprocessing postprocessing can be done in ParaView using Turbo Blade Post plugins (included).
1. Request Request the trial version: version: http://www.cfdsupport.com/turbomachinery-cfd-demo.html
2. Download Download TurbomachineryCFD-17.06v1-linux64-demo.tar.gz 3. In terminal extract extract into your favorite favorite directory (e.g. (e.g. /home/michael/ ): tar xf TurbomachineryCFDTurbomachineryCFD-17.06v1-l 17.06v1-linux64-de inux64-demo.tar.gz mo.tar.gz
4. Download Download the tutorial: tutorial: http://www.cfdsupport.com/download-cases.html
5. Copy two two license license ﬁles ﬁles ( License.key License.key and License.dat ) to the directory TurbomachineryCFD-17.06v1-linux64-demo
6. Ready to run now! 7. In a new terminal source source the system variables variables (with every every new terminal, terminal, or add this to your $HOME/.bashrc for permanent permanent usage): source OpenFOAM/Turbomach OpenFOAM/TurbomachineryCFDineryCFD-17.06v1-l 17.06v1-linux64-de inux64-demo/etc/ mo/etc/ bashrc-release
8. Extract Extract your tutorial tutorial e.g. into your run directory: directory: /home/michael/OpenFOAM/michael-dev-cfdsupport/run/pump
When using GUI:
9. Launch ParaV ParaView iew by typing the command TCFD in the terminal. 10. Open Open conﬁgur conﬁguratio ation n ﬁle e.g. pump.tcfd in via the Load... button in the General section of the Properties panel located in the left area of the ParaView window.
12. In Pipeline Browser click Settings Settings and then apply TCFDManager ﬁlter from the toolbar. 13. Click Click Apply Apply, then Write Case and ﬁnally Run All.
14. And And all the proce process ss is done done autom automat atica icall lly: y: new new case case is writ writte ten n into into defaul defaultt case case name name ofcase0 , mesh is created, case is set up, case is simulated, results are evaluated and report is written down. down. 15. When the simulation is ﬁnished the ﬁnal ﬁnal results report is written down down immediately. immediately. It is located inside the test case: ./ofcase0/report-ofcase0/ofcase0.html
16. The report can be updated updated anytime during during simulation. simulation.
17. Visual postprocessin postprocessing g can be done in ParaView using Turbo Blade Post plugins (included). When using terminal:
9. In terminal terminal navigate navigate to the pump directory directory (mc – Midnight Commander – is recommended, or navigate manually in terminal) and run all by one command: CFDPro CFDProces cessor sor -setup -setup pump.t pump.tcfd cfd -allru -allrun n &
10. And And all the proce process ss is done done autom automat atica icall lly: y: new new case case is writ writte ten n into into defaul defaultt case case name name ofcase0 , mesh is created, case is set up, case is simulated, results are evaluated and report is written down. When the simulation is ﬁnished the ﬁnal results report is written down immediately immediately.. It is located inside the test case: ./ofcase0/report-ofcase0/ofcase0.html
11. Visual postprocessin postprocessing g can be done in ParaView using Turbo Blade Post plugins (included).
The ﬁrst part of the simulation is the setup. The plugin TCFDSource presents an intuitive graphical user interface (GUI) for the complete setup of a Turbomachinery CFD calcula calculation tion.. It is possible possible to save the data from the form to a ﬁle and also to read read them back, whenever necessary. When starting a new calculation, make sure that the TCFDSource plugin is loaded (Tools > Manage Plugins... ). If you can see the plugin in the list ("SMTCFDSource..."), you should be also able to locate the VTK source in the menu Sources (Sources > TCFD Source). Select that item; it will add a new object to the Pipeline Browser window. window.
Figure 3.1: Source TCFDSource added to the Pipeline Browser . A long form will appear in the Properties panel, which may become even longer, depending on the current settings, if you show the advanced options using the Toggle advanced properties properties button next to the search bar (wheel icon). Generally, the advanced properties have have universally universally reasonable values and are not necessary to modify. modify. Individual 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 contains default default values. values. It is also possible possible to import an already prepared Turbomachinery CFD setup ﬁle (with the *.tcfd extension) extension) into this form and start editing those. those. You can load a Turbomachinery CFD setup ﬁle by using 23
TCFD® 17.06 – User’s Guide
the menu item File > Open... (or using the toolbar button, or the keyboard shortcut Ctrl + O) and selecting the ﬁle in the dialog window. Once the form is edited to your satisfaction, press Apply. This ﬁnalizes the setup and provides you with a concise table summarizing the options in the syntax of the Turbomachinery CFD setup ﬁles. 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 ﬁlters 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 ﬁle or passed to TCFDManager ﬁlter (described in the next chapter). The output "Components" provides the component geometry and is displayed in the common 3D RenderView. The state of the form can be saved as a Turbomachinery CFD setup ﬁle using the menu item File > Save Data... (or the appropriate toolbar button, or using the keyboard shortcut Ctrl + S). In the Save File: dialog ﬁrst select the correct extension *.tcfd ; only then the correct plugin will be used for writing the data. The form must be conﬁrmed by Apply before saving. The following sections provide details for individual form ﬁelds.
The general settings are displayed in the ﬁgure 3.2. • The entry "Setup ﬁle" contains full path of a Turbomachinery CFD setup ﬁle, which has been used to initialize the ﬁelds in the form. It is empty if no such ﬁle has been used. However, it is always possible to load a new ﬁle into the form by pressing "Load..." and selecting a new ﬁle from the dialog window. The other three buttons "Reload", "Save As..." and "Overwrite" have obvious meaning. The same restriction for the usage of File > Save data... holds also here: One must press Apply before saving the results. • The entry "Machine type" offers selection of the type of the machine that is to be set up. CFD Processor supports the following machines: fan, compressor, pump, turbine and hydro (water) turbine. Each of these types is slightly different, whether due to a different assignment of boundary conditions, or the postprocessing tools used.
The coordinate system section is displayed in the ﬁgure 3.3. • The entries "Origin" are the coordinates of the rotation axis origin. • The entries "Axis" are the components of the rotation axis direction vector.
The geometry parameters are displayed in the ﬁgure 3.4. • The entry "Scale factor" sets the scale of the length units to be used when processing the input geometry and some other form entries (namely "Origin", "Background 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 ﬁles in different scales. Watch out!
• The entry "Feature edges included angle" is a tuning parameter that speciﬁes 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.
The physical settings are displayed in the ﬁgure 3.5. • The entry "Gravitational acceleration" sets the components of the gravitational acceleration vector. For most applications the gravitational force is negligible and these components can be zero. For large hydro (water) turbines it may be important. The typical setup with z axis pointing upwards would be the vector (0, 0, 9.81).
• The drop-down list "Fluid name" offers selection of the fuild. This option has effect only with conjunction with "Use ﬂuid defaults" or "Cavitation risk". • The switch "Use ﬂuid defaults", when checked, hides some further ﬁelds and assumes default values for them that are appropriate for the selected ﬂuid at standard conditions. These are summarized in the table 3.1. • The switch "Compressible" determines whether or not the ﬂuid is considered compressible. When selected, then CFD Processor will also solve for the density and temperature ﬁelds, which are otherwise considered constant throughout the computational domain. The form automatically shows and hides entries that are relevant for the current choice. • The value of "Dynamic viscosity" speciﬁes the dynamic viscosity (η ) of the ﬂuid. For incompressible cases it is η = ρν , where ν is the kinematic viscosity. • The value of "Reference density" is used for postprocessing of incompressible cases, where the density is not considered by the solver. 26
• The value of "Reference pressure" is used as a pressure value with respect to which all other pressures are measured. Typically, in incompressible simulation the user prescribes zero outlet pressure, while he or she actually means the ambient pressure. This entry then sets the ambient pressure. • The value of "Reference temperature" is the value of the ambient temperature and is used for postprocessing of "Cavitation risk". • The list "Transport model" can be used to select the preferred transport (viscosity) model. There two models available: "constant" and "Sutherland". When "Sutherland" transport model is selected, the entries "Ts" and "As" (parameters of the model) will show up. • The entry "Molar weight" is used only in compressible simulations to set up the thermophysical properties of the ﬂuid. Molar weight is a standard chemical property of a substance. • The entry "Heat capacity" is used only in compressible simulations to set up the thermophysical properties of the ﬂuid. The constant-volume heat capacity cV is expected. • 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: , , . • The switch "Multiphase cavitation" will request use of a specialized cavitation solver for the transient phase of the calculation. When this switch is enabled, additional cavitation-related parameters can be set. Currently there is only one cavitation model available for this solver – the Schnerr-Sauer model . Multiphase cavitation is only available for water pumps and hydro turbines with transient calculation enabled.
Currently there are two turbulence models supported by TCFDSource: the laminar model , the k ω SST model (default) and the k model. One of them can be selected in the section Turbulence settings 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 ﬁgure 3.6.
Every simulation consists of individual points with similar setup, which are grouped into speedlines sharing the rotation speed. Number of speedlines and number of points in every speedline is chosen in this section. Some other sections then adjust number of their inputs according to the numbers chosen here. • The slider "Speedlines" sets the number of speedlines (groups of points with common rotation speed). • The entries in "Rotation speed" set the rotation speed of the machine’s wheel for every speedline, either in radians per second or in full revolutions per minute (RPM). The unit is chosen in the drop-down box to the right. • The 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 calculation 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 iteration count reaches this number, if it decides that the efﬁciency and the ﬂows are sufﬁciently converged.
computational domain: Prescribing a ﬁxed inﬂow (either in kg/s or m3 /s), or requesting a ﬁxed total pressure. The choice of the boundary conditions is done by selection of one item of the drop-down list "Inlet BC". The rest of the panel is then adjusted to the user’s choice. There are two parameters that are common to all inlet boundary conditions. These two values set the parameters of the incoming ﬂow turbulence. They are: • "Turbulent energy intensity" , which sets the fraction of the inlet turbulent and total kinetic energy k/ 12 ρU 2 , typically ﬁve per cent (0.05), and • "Turbulent dissipation", which sets the inlet turbulent dissipation rate ω within the k ω turbulent model, which is used by CFD Processor.
Figure 3.8: Plugin TCFDSource – inlet boundary conditions: Mass ﬂow rate (top), directed mass ﬂow rate (middle) and total pressure (bottom). The entry "Total Temperature" for total pressure boundary condition is only available in compressible simulations.
The outlet boundary conditions are displayed in the ﬁgure 3.9. There are two possible ways how to prescribe the desired behaviour of the simulated ﬁelds at the outlet from the computational domain: Prescribing a ﬁxed 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. Its value is the wanted outlet pressure in Pa. 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 speciﬁes the outlet vent resistance R ; it can contain multiple resistance if multiple points are to be computed; • "Relaxation", which speciﬁes the relaxation of the pressure ﬁelds between the iterations of the solver; • "Max pressure", which sets a pressure limit.
• The calculation mode can be chosen from the drop-down list "Time management". Here one can choose between a simple steady-state calculation, or its combination with some of the transient extensions, which will start from the precomputed steady-state results. The options are "transient" (classical transient calculation where all Mixing planes are replaced by face-weighted interpolation through AMI), "semi-transient (AMI)" (the same but with mesh motion replaced by MRF) and "semi-transient (MXP)" (as before, but the mesh from steady state case is kept intact, possibly thus containing Mixing planes). • The selection box "Transient source" allows one to select unit of time for speciﬁcation of the length of the transient simulation. • The entries in "Transient revolutions" or "Transient times" are used to set the length of the transient simulation independently for every point. • The entry "Processors" speciﬁes number of processes used to run the mesher and the solver. OpenFOAM uses MPI (Message Passing Interface) for communication of the processes. CFD Processor takes care for allocation and locking of the processes to the most free CPU cores. To achieve this it assumes that the OpenMPI 2.1.0+ is used on Linux-based systems and Microsoft MPI 7+ is used on Windowsbased operating systems. • If the advanced options are enabled, then the table "Hosts" is visible. It can be used in conjunction with the "Processors" entry to schedule the running of the parallel jobs. This table contains nodes, on which the parallel processes will be launched. The total number of processes given by "Processors" is evenly divided between the nodes. A new node is added by the plus button. This is by default the "localhost" node, but the word "localhost" in the ﬁrst column can be edited (double-click to enable editing) to any other host name or IP address. The simple local network information provided by the system utility "getent" is then shown in the second column. If the node is unknown, the table row will turn red. Such nodes must be deleted, or the execution will fail. There are several restrictions on the usage of remote nodes: – All nodes must be accessible from the workstation where ParaView runs without password for the current user (i.e. using the public key authentication), 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 ﬁle system. – The OpenFOAM case directory is written on a shared network ﬁle system, so that it is accessible both to the front-end workstation used for solution management via ParaView and to the remote calculation nodes.
Hosts scheduling is currently possible only in Linux systems. • 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 ﬁelds wildly oscillate iteration-to-iteration before stabilization. The minimal and maximal 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 velocity. 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. • The entry "Numerical order" sets the discretization order of the convection term. All calculation should converge with the ﬁrst order. The second order generally provides more accurate results, but the simulations are often less stable and may require better meshes or other tuning. • The switch "Convergence check" enables and disables automatic convergence check. If disabled, then CFD processor will always run the solver for speciﬁed amount of iterations. If enabled, then the solution of a particular point can terminate earlier. • The switch "Bind to core" prevent migration of solver processes between cores, possibly resulting in some speedup. (Currently only used in Linux-based systems.)
The under-relaxation factors and (in advanced mode) the number of non-orthogonal correctors can be changed in this section, see ﬁgure 3.11. Depending on the selection of incompressible or compressible calculation, the section offers modiﬁcation of some or all of the following factors: pressure, velocity, density, temperature and turbulence. If available, the temperature and turbulence relaxation factors are always considered equal. The defaults are concisely summarized in the table 3.2. incompressible pressure velocity density temperature turbulence
compressible subsonic compressible transonic
0.2 0.5 — — 0.2
0.3 0.7 0.01 0.5 0.5
0.8 0.2 1.0 0.2 0.2
Table 3.2: Plugin TCFDSource – default relaxation factors for all possible setups. The compressible subsonic setup is used for fans, the compressible transonic setup is used for compressors and compressible turbines.
• The entry "Initial temperature" sets a constant value of initial temperature throughout the computational domain. • The entry "Initial k" sets a constant value of initial turbulent energy k throughout the computational domain. • The entry "Initial omega" sets a constant value of initial turbulent dissipation rate ω throughout the computational domain.
A sample auto-generated component graph is displayed in the ﬁgure 3.13 and setup in the ﬁgure 3.14. The number of components is controlled by the slider (or edit ﬁeld) "Number of components". 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 component 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: • Directory with STL ﬁles – The directory must contain ASCII STL ﬁles 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 ﬁle), except for inlet, outlet and interface patches which are always merged. 38
• wall – General no-slip wall. • wallSlip – General perfect-slip wall. • hub – A speciﬁc type of wall. • shroud – A speciﬁc type of wall. • blade – A speciﬁc type of wall. • bladePressureSide – A speciﬁc type of wall. • bladeSuctionSide – A speciﬁc type of wall. • bladeLeadingEdge – A speciﬁc type of wall. • bladeTrailingEdge – A speciﬁc type of wall. • bladeHubFillets – A speciﬁc type of wall. • bladeShroudFillets – A speciﬁc type of wall. • bladeCap – A speciﬁc type of wall. • cutWater – A speciﬁc type of wall. Besides the speciﬁc type, every patch can be either rotating or non-rotating, which is controlled by a check-box in the column labeled "rot". Further columns contain the minimal and maximal reﬁnement and number of layers, which are used during the meshing. It is possible to change the value by double-clicking on the required ﬁeld and either modifying the value by hand or using the spin-box buttons. Finally, the column "mxp", available only for inlet and outlet interface patches, contains the number of Mixing planes . If "0" is given, the components will be connected using cyclicAMI; higher values specify number of Mixing plane strips to use. Some columns may not be present for speciﬁc geometry sources (e.g. for an external OpenFOAM mesh). Further options in this section are • "Component name", which sets the name of the component used in patch names and report. • "Surface hook-up", which corrects some non-water-proof STL boundaries, • "Rotating component", which makes the whole component rotate (needed for all componets containing the wheel), • "No. periodic segments", which is used to set periodicity of a segment when simulating just a segment of the full wheel, 40
• "Background mesh size" , which sets the basic cell size in the three directions for the rectangular background mesh (all cells will be such or smaller), • "Internal point", which speciﬁes arbitrary internal point, • "Wheel diameter", which is a mandatory parameter only for the "fan" machine and is used for post-processing, • "Cylindrical mesh", which uses cylindrical background mesh instead of the rectangular, see ﬁgure 7.1, and enable the following three parameters, • "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 • "Cylindrical warp", which sets the parameter w of the cylindrical mesh. 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). The component graph (shown in the ﬁgure 3.13) 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. Generally all components must be reachable from the inlet component and must be connected using the inletIterface/outletInterface pairs. The ﬁgure can be released from the panel by 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 value "Max global cells" sets a hard limit on the total number of cells to prevent memory overﬂow. • 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 reﬁnement" sets a limit on the lowest number of cells reﬁned in previous iteration of the mesher, which still triggers another iteration. If zero is given, the mesh will be reﬁned 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 reﬁnement level in area where the reﬁnement level dramatically changes. • The number "Resolve feature angle" is an angle in degrees.
The default panel is displayed in the ﬁgure 3.17. The switch "Snap mesh" enables and disables the snap mesh phase. For normal operation it is always enabled. The other parameters can be used to tune the mesher operation. 44
This section allows user to deﬁne how the post-processing (evaluation of results and generation of a report) will be done. • The entry "Averaging window" sets the number of iterations used for calculation of the averaged ﬁelds. Also, this interval is used to monitor convergence: If the efﬁciency, inﬂow and outﬂow change negligibly during the window, the point is deemed converged. Also, it acts as a smoothing interval for the ﬁgures in the resulting report. • The entry "Transient window" is an analogue of "Averaging window" in a transient calculation. It can be given either in seconds, or in revolutions. • 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. 46
• The table "Efﬁciency probes" has by default a single generic row, which corresponds to the default report being generated. Every row of the table deﬁnes 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 ﬂow and total pressure difference, the torque patches are used to calculate the torque expended by the ﬂuid/blade (depending on the machine). Together, they are used to evaluate efﬁciency and other quantitites. The switch "convergence" determines whether this particular probe is considered by the convergence check; the calculation will be stopped as converged only when all probes with enabled "convergence" switch sufﬁciently converge. • The table "Blade to blade views" contains a list of requested blade-to-blade views (circularly unwrapped and slices meshes) to be generated by Turbo Blade Post. The column "meshes" contains a list of meshes that will be unwrapped. It is possible to use both the internal meshes and individual patches. The hub and shroud patches must be provided in the next two columns as they deﬁne the requested transformation of the mesh. The column "ﬁelds" is used to select the ﬁeld that will be displayed on the blade-to-blade view. Finally, "heights" contains a space-separated list of positions between the hub and the shroud where the blade-to-blade views will be taken. • The table "Meridional averages" contains a list of meridional averages to be generated by Turbo Blade Post. It can be used only with component indices, but otherwise the meaning of its columns is identical to "Blade to blade views". • The table "Additional data ﬁles" is used to add user data to the graphs in the ﬁnal report from the calculation. The data should be provided in the form of Gnuplotreadable data ﬁles, i.e. text ﬁles 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 (ﬁrst column has index 1). Several data-lines within a single data ﬁle 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").
Figure 3.20: Plugin TCFDSource – post-processing. with the OpenFOAM case. Besides the standard Python functions one can also use the TurbomachineryCFD-speciﬁc 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 modiﬁed ﬁle. The function SetEntry does all modiﬁcations in memory and the result is written to disk only when the function WriteFile is used, or during writing requested by the workﬂow. Apart from the two functions, there is also a predeﬁned string variable CaseDirectory which contains the absolute path to the case and two other access functions RenameEntry(, , ) DeleteEntry(, )
with obvous purpose: The former changes the name of an entry (i.e. the keyword that introduces the entry), whereas the latter erases the whole entry from the ﬁle.
The second part of the simulation is the calculation and its postprocessing. The plugin TCFDManager offers a simple user interface for these two tasks in the framework of Turbomachinery CFD. It builds on the plugin TCFDSource described in the previous chapter. When starting a new calculation, make sure that the TCFDManager plugin is loaded (Tools > Manage Plugins... ). If you can see the plugin in the list (“SMTCFDManager...”), you should be also able to locate the VTK source in the menu Filters (Sources > Alphabetical > TCFD Manager or Sources > Turbomachinery > TCFD Manager ). Select that item; it will add a new object to the Pipeline Browser window. Note that the ﬁlter TCFDManager can be used only together with TCFDSource. An instance of TCFDSource (or its “Settings” output port) must be selected in the Pipeline Browser for TCFDManager to be even selectable!
Figure 4.1: Filter TCFDManager added to the Pipeline Browser .
The user interface of the TCFDManager is much simpler than that of the TCFDSource. The following sections provide details for individual form ﬁelds. 51
TCFD® 17.06 – User’s Guide
The ﬁlter are displayed in the ﬁgure 4.2. • The ﬁeld “Output path” is a working directory, where new calculations are to be created. If the TCFDSource has been initialized by a Turbomachinery CFD setup ﬁle, this ﬁeld will be already ﬁlled with the directory containing the ﬁle, or – if such directory is an OpenFOAM case directory – by its parent directory. • The ﬁeld “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 Turbomachinery CFD setup ﬁle and that ﬁle 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 ﬁle 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 speciﬁed by the combination of the above two ﬁelds. If no “Directory name” is given, CFD Processor will provide some directory name, which is not yet used in the “Output path”, and put the OpenFOAM case in there. This automatically suggested directory name is always in the form “ofcaseX”, where X is lowest non-negative integer available. Note that when “Directory name” is set, then whenever the Apply button is pressed, this “Write case” action will be done automatically. • The button “Write + Clean case” will ﬁrst write the case ﬁles corresponding to the current setup and then erase all other ﬁles from the case. This is useful when restarting a calculation with different settings. Use it carefully, you may lost old data. • The button “Run all” will take care of rest of the steps. It will mesh the domain, solve the ﬁelds and evaluate results. If more control is required, the user can use the buttons in the “Manual Run” sections. • The buttons “Build” can be used to prepare the mesh of a component. This needs to be done even for external meshes (those can be distinguished by the note “(ext)” displayed in the title of the component), so that the patches are renamed and mesh is analyzed and copied to the appropriate destinations. The progress of meshing is indicated by elapsed time displayed on the button. The button “Merge” is used to concatenate meshes of individual components and create the ﬁnal merged mesh of 52
• “Light report” has a simillar function as “Update report”, but produces only a subset of the full report, particularly the “Efﬁciency”, “Head” and “Total pressure difference” sections. This is useful to monitor convergence of these results during the calculation. • The button “Show results” will open the OpenFOAM calculation selected in the drop-down list “Results” using the built-in OpenFOAM reader. There is one case for the whole stationary simulation and separate cases for individual points of the transient calculation. When the Apply button is pressed, the TCFDManager will call CFDProcessor to analyze the settings. This involves also inspection of the provided geometry and may take a while. The progress of geometry analysis is shown on the ParaView’s main progress bar. If ParaView was launched from a Unix terminal, it is possible to read some diagnostic information in the terminal. This information comes directly from the CFD Processor libraries. Alternatively, the user can enable the Turbomachinery CFD output window from the menu View, which contains the same information.
Figure 4.3: Meshing progress in TCFDManager showing the elapsed time.
Figure 4.4: 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 ﬁnished, 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.
e m u l o v d e r u t c u r t s n u g . n ) i t w l o u s d e n r i e w h t w e d i n V a r e ) d w n o e d R n t i h w i g r w ( e i r e V h r s e d e n m e R h t s e f e M l , x h e s H e m y p e p c a a n f r s u e s h ( t s g t n i n e s n u o r p m o o s c s t e u c p o r n P i e D h t F f C o y w b e d i e V t a : r 5 . e 4 n e g e r h u s g e i F m
Chapter 5 TCFD® – Conﬁguration File Options The Turbomachinery CFD ﬁle produced by TCFDSource has mostly the *.tcfd extension. It is a human-readable plain text ﬁle where every line falls into one of the following categories: • Empty line. • Comment, introduced by a hash sign (‘#’). • Keyword–values pair. The keywords are strings uninterrupted by a whitespace character. They contain only alphanumerical characters, numbers, dashes and underscores. Every keyword can be generally 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 positive number. These are used to assign properties to individual components, speedlines, working points, post-processing modes etc. 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. Here is a sample of a TCFD ﬁle: 1 # Machine type 2 type 3 4 # Simulation settings 5 processors 6 numberOfSpeedlines 7 1_numberOfPoints 8 1_iterations 9 10 # Operating point 11 angularVelocity
Formulas for the Efﬁciency Evaluation Hydro Turbine Efﬁciency
The water turbine efﬁciency can be evaluated using following efﬁciency formula:
Mω , (6.1) Qin hin Qout hout where η denotes the efﬁciency, M is the torque, ω is the angular velocity, Q is the volume ﬂow rate and h is the speciﬁc enthalpy which can be evaluated as follows: 1 h = p + ( ρg) r + ρU 2 . (6.2) 2 η waterTurbine =
Subscript in means averaged quantities at the inlet, whereas subscript out denotes averaged quantities at the outlet. The evaluation of turbine efﬁciency for different patches is also possible.
The pump efﬁciency can be evaluated using following efﬁciency formula:
η pump =
, (6.3) Mω where η denotes the efﬁciency, M is the torque, ω is the angular velocity, Q is the volume ﬂow rate and h is the speciﬁc enthalpy which can be evaluated as follows: 1 h = p + ( ρg) r + ρU 2 . (6.4) 2
Subscript in means averaged quantities at the inlet, whereas subscript out denotes averaged quantities at the outlet. The evaluation of pump efﬁciency for different patches is also possible. 81
TCFD® 17.06 – User’s Guide
Adiabatic efﬁciency. Total to Total. For compressor the following efﬁciency formula is used:
T 1,tot T 2,tot,IS T 1,tot = = T 2,tot T 1,tot T 2,tot
Adiabatic efﬁciency. Total to Static. For steam turbine or centrifugal turbine the following efﬁciency formula is used:
ηaturbine = T 1,tot
Fan Efﬁciency η f an =
P t P w
˙ 2 [W] • Pt aerodynamic power, P t = Y t m
• Pw • f • Yst
torque power, P w = M d ω [W]
compress factor, f = 1
− 0.36 · ∆ ps
static work, Y st = f
• Yd dynamic work, Y d =
c22 −c21 2
[m2 /s2 ] [m2 /s2 ]
• Yt total work, Y t = Y st + Y d [m 2 /s2] • psi
pressure number, ψ =
ﬂow number, φ =
• axialForce • pTotInlet
2·D ·∆ pt
n2 ·D2 ·ρ1
axial force on rotor, F a [N] total pressure at the inlet, pt1 [Pa]
Turbomachinery CFD solver for transient, incompressible ﬂuid ﬂow is called blueDyMSolver. It was gradually developed during the time from the pimpleDyMFoam solver. In any matters the blueSolver behaves the same way as any standard OpenFOAM solver. It is compatible with all OpenFOAM applications and libraries. Solver is modiﬁed to be more robust, limits for variables can be speciﬁed and many other changes have been done.
redSolver - steady state, compressible
Turbomachinery CFD solver for steady state, compressible ﬂuid ﬂow is called redSolver. It was gradually developed during the time from the rhoSimpleFoam solver. In any matters the redSolver behaves the same way as any standard OpenFOAM solver. It is compatible with all OpenFOAM applications and libraries. Solver is modiﬁed to be more robust, it can use MRF method, limits for variables can be speciﬁed and many other changes have been done.
redDyMSolver - transient, compressible
Turbomachinery CFD solver for transient, incompressible ﬂuid ﬂow is called redDyMSolver. It was gradually developed during the time from the sonicFoam solver. In any matters the redDyMSolver behaves the same way as any standard OpenFOAM solver. It is compatible with all OpenFOAM applications and libraries. Solver is modiﬁed to be more robust, limits for variables can be speciﬁed and many other changes have been done.
greenSolver - steady state, cavitation
Turbomachinery CFD solver for steady state, cavitating ﬂuid ﬂow is called greenSolver. It was gradually developed during the time from the interPhaseChangeFoam solver. In any matters the greenSolver behaves the same way as any standard OpenFOAM solver. It is compatible with all OpenFOAM applications and libraries. Solver is modiﬁed to be more robust, it can use MRF method, limits for variables can be speciﬁed and many other changes have been done.
greenDyMSolver - transient, cavitation
Turbomachinery CFD solver for transient, cavitating ﬂuid ﬂow is called greenDyMSolver. It was gradually developed during the time from the interPhaseChangeDyMFoam solver. In any matters the greenDyMSolver behaves the same way as any standard OpenFOAM solver. It is compatible with all OpenFOAM applications and libraries. Solver is modiﬁed to be more robust, limits for variables can be speciﬁed and many other changes have been done. 84
Incompr Incompressi essible ble Mathem Mathematic atical al Model Model
Incompressible model solves the system of incompressible Navier-Stokes equations 6.17, 6.17, 6.18.
∇·u ∂ u + (u · ∇)u ∂t
p + g ∇ u − ∇ p +
• Mass conservation conservation 6.17 6.17 • Momentum Momentum conservat conservation ion 6.18 6.18 • wher where: e: Symb Symbol ol ∂ is partial derivative, u is velocity vector, t is time, p is static pressure [Pa/(kg m 3 ) = m2 s 2 ], µ is dynamic viscosity, ν is kinematic viscosity and g is gravitational acceleration vector. −
• The whole system system is closed with boundary boundary conditions. conditions.
Unstr Unstruct uctur ured ed Gr Grid id
The computational computational mesh data is kept in unstructured unstructured OpenFOAM OpenFOAM format. See e.g. [1 e.g. [12 2].
Finite Finite Volume olume Method Method
Solver is based on Finite Volume Method more more informati information on can be found e.g. in [2 ,  10] or [9 .
Three Three Dimensi Dimensional onal
All the models are solved in three dimensions, even 2D-like or 1D-like models are treated as 3D using special boundary conditions. See e.g. [12 . ].
Stead St eady-S y-Stat tatee
The system of equations is considered to be steady-state, which means all the time derivativ derivatives es are equal to zero. For more details see e.g. . 86
Segregated Segregated solver solver is used to compute unknown unknown variables. variables. The Finite Volume Volume Solution Method Method can either either use a segreg segregate ated d or a coupled coupled solution solution procedu procedure. re. With segregate segregated d methods an equation for a certain variable is solved for all cells, then the equation for the next variable is solved for all cells, etc. For more details see e.g. [1 .
Cell Cell Center Centered ed Appro Approach ach
A cell-centered approach stores the variable in all cell centers whereas a node-centered scheme stores it in the points. For more details see e.g. [3 .
Under Under-Relaxa -Relaxation tion
Under-Relaxation reduc reduces es solut solution ion oscil oscilla lati tions ons and and helps helps to keep keep the the comp computa utati tion on stabl stable. e. After each iteration, at each cell, a new value for variable U in in cell i is then updated using following equation:
U iNEW,USED = U iOLD + α U iNEW,PREDICTED
where α is under-re under-relaxa laxation tion factor factor.. The choice choice α = 1 corresponds to no underrelaxat relaxation. ion. The choice choice α < 1 is under-rela under-relaxat xation. ion. This This may slow slow down down speed of convergence but increases the stability of the computation, i.e. it decreases the possibility of divergen divergence ce or oscillations oscillations in the solution. solution. For more details see e.g. .
System System of Linear Linear Equation Equationss
Finite Volume Method converts the system of differential equations to the system of linear equations: A
= b · x = b
Such a linear algebra problem can be solved with following methods implemented in OpenFOAM: Linear system solver method:
• smoothSolver (solver using a smoother for both symmetric and asymmetric matrices ) • ICCG (Incomplete Cholesky preconditioned PCG solver, i.e. PBiCG with DIC )1 • BICCG (Diagonal Incomplete LU preconditioned PBiCG solver, i.e. PCG with DILU)2 Method preconditioner:
• DILU (Diagonal Incomplete LU decomposition) • DIC (Diagonal incomplete-Cholesky) for symmetric matrices • FDIC (Faster diagonal incomplete-Cholesky) for symmetric matrices • diagonal (Diagonal) • GAMG (Geometric-Algebraic Multi-Grid) • none (No preconditioning) • DICGaussSeidel, GaussSeidel, nonBlockingGaussSeidel, symGaussSeidel (for symmetric matrices) For more details see e.g. .
For solving pressure - velocity coupling the SIMPLE algorithm is used. For more details see e.g. .
Spatial Integration Numerical Scheme
Space discretization scheme is limitedLinear, which is central scheme of second order accuracy. There are 55 default OpenFOAM schemes to select:
Present for backward-compatibility Present for backward-compatibility
Pressure equation is repeated according to number of non-orthogonal correctors. This may reduce the inﬂuence of bad computational mesh. For more details see e.g. ,  or .
Number of Iterations on Rotor and Stator Part
User can specify how many sub-iterations are spend on rotor part and stator part during single iteration. It is recommended to use default option: one sub-iteration on rotor part and one sub-iteration on stator part. See ﬁle fvSolution.
Eight default OpenFOAM turbulence models can be used within this solver: • LamBremhorstKE
MRF (Multiple Reference Frame) Method for Rotation of Rotating Parts
For simulating of the rotation it is used Multiple Reference Frame (MRF) method. MRF adds source term (acceleration) to velocity (momentum) equations. Source term is applied on volume cells cellZone. For more details see e.g. .
Message Passing Interface (MPI)
For parallel computations there is Message Passing Interface (MPI) standard used. For more details see e.g. .
Notes on gravitational potential and hydrostatic pressure
Potential of a homogeneous gravitational ﬁeld
A homogeneous gravitational ﬁeld is characterized by a constant vector ﬁeld g , the well known gravitational acceleration. Let us consider some volume or vessel ﬁlled with an incompressible ﬂuid of density . The gravitational ﬁeld exerts a force on the ﬂuid. Its is given by the following well known formula force density f
= g f
It is a simple task to ﬁnd a potential to (6.22). Let us remind, a potential (if it exists) is deﬁned as a certain function φ satisfying the following of some given force ﬁeld F equation φ = F . (6.23)
given by (6.22) there exists a potential, let us denote it by ϕ, We can see that to the f stating ϕ (r) = g r + C , (6.24)
∈ R is a constant of integration
and r is a position vector4 .
Let us consider an incompressible ﬂuid at rest in the presence of a homogeneous gravitational ﬁeld so it is supported by walls of some, possibly open, vessel. Inside a volume of the ﬂuid there is the well known hydrostatic pressure, let us denote it by p . Assume the ﬂuid has one free5 part of its boundary, i.e. one part of its surface forms a level, i.e. plane or its part. Let us denote by r0 a position vector6 of an arbitrary point of this plane. Hence for p holds p (r) = g (r r0) . (6.25)
Notice the relation (6.25) is valid inside the volume of the ﬂuid only. If we need to extend its domain, it is necessary to assure zero values for p outside of the volume of the ﬂuid. For instance, this is satisﬁed naturally, if we consider a constant scalar ﬁeld but vanishing outside the volume of the ﬂuid. 3
For it is the change or difference, whether ﬁnite or inﬁnitesimal, of the potential that matters, not its actual value, we disregard such a constant unless stated explicitly. 4 deﬁning the position of a certain point with respect to origin of a system of coordinates 5 i.e. not in contact with any wall of the vessel 6 in a given system of coordinates
Figure 6.1: General water turbine sketch. Physical setting of a turbine casing with respect to a dam. Water levels indicated.
Center of mass of a surface
Consider a two dimensional surface S, choose a system of coordinates and deﬁne a position vector rS of its center of mass as following
r dS = dS S
where r is a position vector of an element dS .
Water turbines - notes on calculations
Figure 6.1 represents a physical setting of a turbine casing with respect to a dam. Let us denote by h the head, i.e. the difference between heights of water levels in front of the dam and at the back of it. Vertical distance between the center of mass of the inlet surface of volute and the high water level is denoted by h In . Vertical distance between the center of mass of the outlet surface of draft tube and the low water level is denoted by hOut . Finally, vertical distance between the centres of mass of inlet and outlet surfaces is denoted by h IO . 92
We can see there are several simple relations among quantities just deﬁned
h + hOut = hIn + hIO h = hIn + hIO hOut h hIO = hIn hOut
To simplify calculations we usually considers water an incompressible ﬂuid with no phase changes possible and we solve the well known equations, the conservation laws the ﬂuid obeys. Coservation of linear momentum is expressed by the Navier-Stokes equation. In this case (incompressible ﬂuid, steady state) it can take the form
· ∇U − ν ∆U = − ∇ p + 1
is a is a velocity ﬁeld, ν kinematic viscosity, density, p pressure ﬁeld and f where U force density of a gravitational ﬁeld, given by (6.22). Conservation of mass is expressed by the continuity equation. In this case it takes the simple form U = 0 , (6.31)
It remains to discuss boundary conditions for the equations mentioned above. For we usually do not know the inlet velocity ﬁeld, we are about to prescribe pressure ﬁeld for both inlet and outlet surface. At the inlet surface a total pressure is known and it is equal to hydrostatic one. With the use of formula (6.25) we can write
ptot,In (r) = g (r
· − r
where r0,H is a position vector of an arbitrary point of the high water level (plane). Since total pressure is deﬁned as a sum of static and dynamical pressure
2 ptot = p + 21 U
we can, by means of this deﬁnition (6.33) and formula (6.32), express p at the inlet
pIn (r) = g (r
· − r
2(r) . U
At the outlet the situation is a little bit complicated. After the ﬂow (with high total pressure) exits the draft tube it mixes with water (with low total pressure) surrounding the draft tube. We usually take simplifying steps and assume the static pressure of exiting ﬂow equals the hydrostatic pressure of surrounding water, i.e. we write
Since equation (6.30) is independent on actual pressure ﬁeld values, but only on its gradients, we can formally simplify the boundary condition at the outlet by adding a certain constant C to the right hand side of the prescription (6.35) in order to get mean value of the outlet pressure equal to zero and not to hydrostatic presure at the center of mass of the outlet surface. If we do this, we have to amend the inlet boundary condition (6.32) the same way, of course. We can ﬁnd easily that the constant C has following value
C = g (r0,L
where rOutlet is a position vector of the centre of mass of the outlet surface. Hence prescription (6.35) changes to
pOut (r) = g (r
· − r
and prescription (6.32) to
ptot,In (r) = g (r
· − r
A mean value ptot,In of the total pressure at the inlet surface now gives
· − r
= g (rInlet r0,H + r0,L = g(h hIO ) ,
Outlet ) dS
g r dS + g ( r0,H + r0,L
·− − r
g . where rInlet is a position vector of the center of mass of the inlet surface and g We can see that in this model setting there is no need to know the position of a turbine to the water level. It sufﬁces to know h and take the measurement of hIO .
Model setting without an explicit use of g in the momentum equation
Let us take a look at the equation (6.30) as if its right hand side were known. Then we can introduce an alternative quantity, denoted by p gh , to the static pressure p −
− g · r = p + ϕ
By means of (6.43) we can formally substitute equation (6.30) by the following one
for the right hand side takes the same values. This is the consequence of a fact that ﬁeld (6.22) has potential and thus a change in potential energy of an arbitrary element of a ﬂuid is not dependent on its path, but on its initial and ﬁnal 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 (6.38) by adding g (rOutlet rInlet ) to its right hand side7 . By doing this we obtain a new prescription, but this time for the quantity p gh −
= g (r
· − r
If we calculate the mean value of (6.45), we obtain
gh,tot,In = S Inlet
= g (r0,L = gh .
· − r
Inlet ) dS
g r dS + g ( r0,H + r0,L
(6.47) (6.48) (6.49)
Prescription at the outlet surface remains formally the same as (6.37), but this time for the quantity p gh p gh,Out(r) = g (r rOutlet) , (6.50) −
and hence its mean value is zero. We can see that in this setting there is no need to know a position of a turbine with respect to the water level and there is also no need to even take the measurement of h IO . It only sufﬁce to know h, the head.
We have seen there are two basic approaches to water turbine calculations. 1. With g in the momentum equation (a) physical setting (b) model setting 2. Without explicit g in the momentum equation Following table shows possible boundary conditions for the pressure variable 7
This term is equal to the change of the potential energy density of an element of the ﬂuid by its passage through the turbine (from the volute inlet to the draft tube outlet).
We note that hTP stands for hydrostaticTotalPressure boundary condition and values listed in the Table 6.1 for this type represent values of hydrostatic pressure in the centre of mass of the inlet surface. Whereas fMV stands for ﬁxedMeanValue boundary condition and values listed in the Table 6.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 velocity ﬁeld 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.
Interface between rotor and stator part Frozen Rotor vs. Mixing Plane
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 average ﬁrst 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 beneﬁts and drawbacks to each other. Authors of this methodology recommend to prefer Mixing Plane boundary condition. 96
1. Turbomachinery CFD input is the surface geometry and physical settings being read from Turbomachinery CFD Conﬁguration File (*.tcfd). The conﬁguration ﬁle can be either created manually (e.g. modifying existing tutorial), or conﬁguration ﬁle can be even created in special graphic interface in ParaView called TCFDSource. 2. Any number of model components is allowed. 3. Each component has to be waterproof, typically inlet + wall + outlet. 4. Watch out the model dimensions, they are critical. 5. STL surface model ﬁles has to be in ASCII format. 6. Ideally, each component surface STLs should ﬁt vertex-to-vertex. Not necessary, but safest. 7. All the interfaces between two components should overlap, or at least to ﬁt each other very well. 8. Mesh size - the most important mesh parameter of each component is 0_backgroundMeshSize, which is a basic mesh block (cell) to be reﬁned. 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 . 10. Log ﬁles - are located in ./logRun/* . 99
TCFD® 17.06 – User’s Guide
11. It is not suitable to have “Trailing edge ﬁxed on outlet” of the Impeller for any CFD simulation. It is recommended, when simulate, to extend the hub and shroud a little bit.
12. Compressibility: pump and waterTurbine are always incompressible; compressor and turbine are always compressible; fan can be both compressible and incompressible.
13. rotatingPatches: If rotatingRegion is false. RotatingPatches (if any) have rotatingWallVelocity (symmetric rotation – no MRF).
14. Rotation direction has signum minus for clockwise direction (right hand rule).
15. Cavitation risk is evaluated by function object cavitation. Saturated vapour pressure is evaluated using Antoine equation (see wikipedia), coefﬁcients are taken from NIST. Relevant entries are referenceTemperature and referencePressure. Field cavitation is saved alongside other ﬁelds, which has values either 1 (cells with pressure 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 efﬁciency 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 relative 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 tangent 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. 100
Figure 7.1: Cylindrical background mesh (here viewed along the axis) is fully speciﬁed by its length (not shown) and six more parameters. The parameter r 2 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 = r 0 , 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).
Sutherland model: As (default 1.512e-06) and Ts (default 120). If “constant” is used, then the parameter Pr (default 0.7 for air, 7 for water) are available. 21. There are three possible turbulence models: kOmegaSST (default), kEpsilon and laminar. The names and default values of the optional parameters of the models are: kOmegaSST-alphaK1 (0.85), kOmegaSST-alphaK2 (1.00), kOmegaSSTalphaOmega1 (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), kOmegaSSTc1 (10.0), kOmegaSST-F3 (false); kEpsilon-Cmu (0.09), kEpsilon-C1 (1.44), kEpsilonC2 (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 workﬂow by userdeﬁned functions. These take form of a Python scripts and can be executed in several places along the workﬂow. The keyword for setting used deﬁned functions is userDeﬁnedFunctions and has the following syntax: userDeﬁnedFunctions 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 workﬂow, 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 predeﬁned functions SetEntry and WriteFile. E.g. SetEntry(‘system/fvSolution’, ‘SIMPLE/nNonOrthogonalCorrectors’, ‘5’) WriteFile(‘system/fvSolution’) Finally, the special predeﬁned variable CaseDirectory contains full path to the directory with the case. 23. END.
Chapter 8 Turbo Blade Post - graphical postprocessing 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, scientiﬁc 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 sharedmemory 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 modiﬁcations to the GUI, implementation of new sources (i.e. generation of predeﬁned curves and bodies), deﬁnition of new selection functions etc. The most useful category of plugins are the Filters.
Any extension to ParaView comes in a form of a shared library (something .dll in Windows or libsomething .so in Unix-like systems). The library can be loaded into ParaView using the plugin manager. The plugin manager is accessible through Tools > Manage Plugins. All new plugins have to be loaded there and optionally set to auto-load (see ﬁg. 8.2).
Note — The ﬁlters tend to disappear from their categories after use. This is a feature of ParaView, which moves the last used ﬁlter menu item into Filters > Recent . That list is, however, limited. Nevertheless, all ﬁlters are alwys accessible through the Filters > Search option.
Geometry & Mesh
All following Turbo Blade Post usage examples are presented on a numerical results from a simulation of an incompressible ﬂow in a pump. The boundary geometry of the simulated volume of the pump is shown in the ﬁgure 8.3. The meshing and calculation has been done by Turbomachinery CFD / CFD Processor using the OpenFOAM package. The resulting meshes are displayed in the ﬁgures 8.4 and 8.5. Numerical results are illustrated in the ﬁgures 8.6 and 8.7. These are classical visualisations from ParaView. Turbo Blade Post offers several new ways how to inspect the numerical data, which are presented in the following chapters.
Figure 8.3: Geometry of the Turbomachinery CFD tutorial pump used in this examples.
The aim of the ﬁrst example is to meridionally average the scalar quantities in the vicinity of the blades, in the rotating (MRF) section of the ﬂuid. Whereas the simple axial slice very often cuts a blade, the meridional average avoids the holes by displaying circumferential average of values around the axis of rotation, see ﬁgure 8.8.
Figure 8.8: Comparison between a common ParaView Slice ﬁlter (top) and Turbo Blade Post Meridional Average ﬁlter (bottom) – application on Turbomachinery CFD (OpenFOAM) calculation of incompressible ﬂow in a pump.
Step 1 — Load the OpenFOAM case into ParaView and make sure that you included the rotating zone. Depending on the way how you loaded the OpenFOAM case you can use either the "Include Zones" check-box above the mesh/ﬁeld selection frames (ﬁgure 8.9 left), or "Read Zones" check-box below to read the rotating zone (ﬁgure 8.9 right). The former way, more frequent in Linux, will add available zones at the end of the "Mesh Parts" selection list (and you need to select them manually). The latter way, more frequent in Windows, will automatically read all available zones after clicking on the "Apply" button. Choose some non-zero simulation time, select appropriate components ("Mesh parts") and ﬁelds ("Volume ﬁelds") and press "Apply". This will load the mesh. Step 2 — Meridional average can be calculated by an application of the ﬁlter Meridional Average, which is part of Turbo Blade Post . You should see the icon of the ﬁlter in the toolbar. Note that the ﬁlter is available (i.e. coloured and clickable) only when the data selected in "Pipeline browser" are of the type "Unstructured grid" (see panel "Information", section "Statistics"). If we loaded several blocks (mesh parts), we would ﬁrst need to extract the appropriate mesh zone using the ﬁlter Extract block , see ﬁgure 8.10.
Figure 8.9: Loading the OpenFOAM pump case for application of Turbo Blade Post Meridional Average. Left (OpenFOAM’s OpenFOAM reader): The MRF zone and all ﬁelds are selected. Right (ParaView’s Foam reader): All zones and ﬁelds are selected for reading.
Figure 8.10: Extraction of a single block from a multi-block dataset using the ﬁlter 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.
Step 4 — Once the ﬁlter completes, it will produce a projection as in the ﬁgure 8.12. By default, it shows the distance of individual points to the nearest surface (hub, shroud, inlet or outlet). However, all scalar ﬁelds have been averaged by the ﬁlter and are available in the ﬁeld selection drop-down list in the main toolbar. The ﬁgures 8.13 and 8.14 show the averaged results for static pressure and relative velocity, respectively.
Figure 8.12: Resulting projection of the geometry constructed by the Turbo Blade Post toolset ( Meridional Average ﬁlter) showing an auxiliary ﬁeld, together with the original geometry and the cutting cylinder that corresponds to the chosen "Clip out radius".
Figure 8.13: Meridional average of the static pressure for an incompressible ﬂow in a pump constructed by Turbo Blade Post / Meridional Average. Results are from a calculation by TurbomachineryCFD using OpenFOAM.
The blade-to-blade view offers a unique perspective for an inspection of the ﬂow between the blades at a ﬁxed relative distance between hub and shroud surfaces. In Turbo Blade Post it can be generated in two steps: First, the cylindrical mesh of the rotating zone needs to be "unwrapped" into a rectangular block. Second, the unwrapped block has to be cut at the requested distance.
Figure 8.15: Blade-to-blade view constructed by the Turbo Blade Post toolset showing static pressure for an incompressible ﬂow in pump. Results are from a calculation by Turbomachinery CFD using OpenFOAM.
Step by step guide
Step 1 — Load the OpenFOAM case into ParaView and make sure that you included the rotating zone. Depending on the way how you loaded the OpenFOAM case you can use either the "Include Zones" check-box above the mesh/ﬁeld selection frames (ﬁgure 8.16 left), or "Read Zones" check-box below to read the rotating zone (ﬁgure8.16 right). The former way, more frequent in Linux, will add available zones at the end of the "Mesh Parts" selection list (and you need to select them manually). The latter way, more frequent in Windows, will automatically read all available zones after clicking on the "Apply" button. Choose some non-zero simulation time, select appropriate components ("Mesh parts") and ﬁelds ("Volume ﬁelds") and press "Apply". This will load the mesh. Step 2 — The transformation from the cylinder - or disk-like rotating area (as shown in the ﬁgure 8.4 or 8.5) into the normalized rectangular block can be calculated by the ﬁlter Turbo Unwrap. You should see the icon of the ﬁlter in the toolbar. Note that the ﬁlter 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 ﬁlter Turbo Unwrap in the Filters > Turbomachinery (or Filters > Alphabetical) menu, or use the search box from Filters > Search. This will add the ﬁlter into the "Pipeline browser". Step 3 — The basic properties of the ﬁlter Turbo Unwrap are shown in the ﬁgure 8.17 ﬁgure 8.17.. When When the advanced advanced options options are hidden, hidden, there are only a few few options options to deﬁne. deﬁne. First 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 deﬁne the transformation. After the transformation is done, hub and shroud will be perfectly ﬂat and parallel to each other, conform conformly ly deforming deforming the mesh in between. between. If multiple multiple mesh parts are selected 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 ﬁrst 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, -axis, which is the default default option. Step 5 — Select the position of the breaking semiplane and cutting cylinder, see ﬁgure 8.18 ure 8.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 ﬁgure 8.17. ﬁgure 8.17. Step 6 — Click on "Apply". "Apply". Particularly Particularly the cylinder cylinder clipping (and to less extent also the transformation of the mesh and of the vector ﬁelds) can be quite time consuming for large meshes. meshes. Some parts of the algorithm algorithm are parallelized parallelized and will automatically automatically make use of multi-core multi-core machines. When the algorithm ﬁnishes, the result will look similarly to ﬁgure 8.20. ﬁgure 8.20. The The nature of the transformation transformation is illustrated illustrated in the ﬁgures 8.18 ﬁgures 8.18– –8.21. Step 7 — Unlike the scalar quantities (like pressure) the vector ﬁelds need to be transformed, too, when the mesh transforms. This is done automatically for the cell ﬁelds U and URel. As a by-pro by-produ duct ct the the ﬁlte ﬁlterr also also produ produces ces seve several ral other othercell ﬁeld ﬁeldss that that can can be used used as an input to other ﬁlters: The local streamline streamline vectors UStream and URelStream, and the cell ﬁeld URelLIC, which is particularly well suited for usage in Line Integral Convolution ("SurfaceLIC" ) representation. representation. To use these ﬁelds in ﬁlters that request point ﬁelds, it is necessary to interpolate the data from points to cells, which is done as the ﬁnal
Figure Figure 8.16: Loading Loading mesh zones zones and the hub and shroud shroud patches patches needed needed by the ﬁlter ﬁlter (OpenFOAM’ M’ss OpenFOAM OpenFOAM reader): reader): Hub and shroud patches are Turbo Unwrap. Left (OpenFOA selected, as well as the rotating zone. Right (ParaView’s Foam reader): Hub and shroud patches and all zones are selected.
step using the ﬁlter Cell data to point data (can be found in Filters > Alphabetical). This ﬁlter has no important important settings.
Step 8 — Now all that is necessary to obtain a speciﬁc blade-to-blade view is to use a standard Slice ﬁlter (z -normal -normal)) to cut through through the block block at the requeste requested d height. 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 ﬁgure 8.22 ﬁgure 8.22,, the resulting cut displaying pressure is the ﬁgure 8.15 ﬁgure 8.15,, or showing the SurfaceLIC representation (with settings from 8.24 from 8.24)) in the ﬁgure 8.23. ﬁgure 8.23.
Figure 8.18: Rotating area of the simulated pump’s volume before the application of the ﬁlter Turbo Unwrap. The patches are coloured here to make them easily differentiable in the following ﬁgure 8.20. Hub patch (bottom) is in solid green, shroud patch (top) in solid orange, inﬂow (top) is orange wireframe and outﬂow (bottom) green wireframe. The ﬁgure also contains the clipping cylinder corresponding to the parameter "Clip out radius" and the cutting semiplane corresponding to the direction speciﬁed by the parameter "Break".
Figure 8.19: Detail of the inﬂow interface mesh structure of the pump test case before the application of Turbo Blade Post plugin Turbo Unwrap. 120
Figure 8.20: Rotating area of the simulated pump’s volume after the application of the ﬁlter 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, inﬂow is left and behind (not visible here) and the green outﬂow is in the front and to the right. The two additional sides of the block arose by cutting the mesh by a semiplane speciﬁed 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 8.22: Construction of the blade-to-blade view from the rotor block unwrapped by Turbo Blade Post plugin Turbo Unwrap.
Figure 8.23: Blade-to-blade view from the rotor block unwrapped by Turbo Blade Post plugins showing the Line Integral Convolution (LIC) representation of the ﬂow based on the relative velocity. The results are from a calculation by Turbomachinery CFD. 122
Figure 8.24: Surface Line Integral Convolution setup after application of Turbo Unwrap + Cell Data To Point Data ﬁlters. The coloring is taken from the magnitude of the vector ﬁeld URel, the directions and sizes from URelLIC.
For industrial applications of the CFD simulations it is often necessary to visualize the pressure distribution around the blade, when cut at a speciﬁc height. This is a direct analogy of the pressure proﬁles used in aeronautics when simulating wing proﬁles etc. In Turbo Blade Post this can be achieved by application of a sequence of ParaView ﬁlters on the blade patches.
Figure 8.25: Input geometry (hub, shroud and blade patches) for the Turbo Blade Post / Turbo Unwrap ﬁlter for construction of the around-the-blade pressure proﬁle.
Step by step guide
Step 1 — Load the rotor part of an OpenFOAM case into ParaView using the command paraFoam -region rotor. Avoid loading the whole mesh; choose only the blade walls and the hub and shroud patches. Choose some non-zero simulation time, select appropriate components ("Mesh parts") and ﬁelds ("Volume ﬁelds") and press "Apply". This will load the necessary patches, ﬁgure 8.25. Step 2 — First, the blades need to be transformed from the cylinder- or disk-like arrangement to a straight rectangular block. This is done by the ﬁlter Turbo Unwrap. You should see the icon of the ﬁlter in the toolbar. Note that the ﬁlter 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 ﬁlter Turbo Unwrap in the Filters > Turbomachinery (or Filters > Alphabetical) menu, or use the search box from Filters > Search. This will add the ﬁlter into the "Pipeline browser". Step 3 — The basic properties of the ﬁlter Turbo Unwrap are shown in the ﬁgure 8.26. When the advanced options are hidden, there are only a few options to deﬁne. 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 deﬁne the transformation. After the transformation is done, hub and shroud will be perfectly ﬂat 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 ﬁrst 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 proﬁle 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 ﬁt to window. Outcome of this step is shown in the ﬁgure 8.27, where the blades are coloured by pressure. Step 7 — Having the blades transformed we can now cut them at a speciﬁc height (z -axis) using the ﬁlter Slice. This will result in several two-dimensional intersection contours. Step 8 — Add the ﬁlter Plot Data from Filters > Alphabetical or using Filters > Search . Unselect all ﬁelds but pressure (see ﬁgure 8.28). Above the ﬁeld 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 ﬁeld 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 ﬁgure to 8.28.
Figure 8.26: Settings of the Turbo Blade Post / Turbo Unwrap ﬁlter 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 proﬁle was required, it would be necessary to separate one of the contours using a pair of the Clip ﬁlters .
Figure 8.28: Pressure distribution around the blade for a given height (i.e. relative distance from the hub to the shroud) constructed with the aid of the plugins of Turbo Blade Post toolset. The horizontal axis shows the transformed Y axis, which corresponds to the normalized inlet-to-outlet direction position (for given hub-to-shroud distance and angular position). The vertical axis displays the value of the pressure as computed by Turbomachinery CFD using OpenFOAM.
Turbo Blade Post allows also an easy selection of a single blade from the full complex of all blades, which might be difﬁcult otherwise due to a strong curvature of the blades. The method works by transforming the blade patches from their original cylinder- or disk-like arrangement to a straight arrangement just like in the previous example and by isolating the chosen blade.
Step by step guide
Step 1 — Load the rotor part of an OpenFOAM case into ParaView using the command paraFoam -region rotor. Avoid loading the whole mesh; choose only the blade walls and the hub and shroud patches. Choose some non-zero simulation time, select appropriate components ("Mesh parts") and ﬁelds ("Volume ﬁelds") and press "Apply". This will load the necessary patches, ﬁgure 8.25. Step 2 — First, the blades need to be transformed from the cylinder- or disk-like arrangement to a straight rectangular block. This is done by the ﬁlter Turbo Unwrap. You should see the icon of the ﬁlter in the toolbar. Note that the ﬁlter 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 ﬁlter Turbo Unwrap in the Filters > Turbomachinery (or Filters > Alphabetical) menu, or use the search box from Filters > Search. This will add the ﬁlter into the "Pipeline browser". Step 3 — The basic properties of the ﬁlter Turbo Unwrap are shown in the ﬁgure 8.26. When the advanced options are hidden, there are only a few options to deﬁne. 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 deﬁne the transformation. After the transformation is done, hub and shroud will be perfectly ﬂat 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 ﬁrst 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 proﬁle 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 ﬁt to window. Outcome of this step is shown in the ﬁgure 8.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 ﬁlter Clip. Adding the Clip ﬁlter 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 ﬁgure 8.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 ﬁlter to isolate the chosen blade also from the other side. You may need to check the "Inside Out" option in the settings of the ﬁlter Clip. Step 9 — Append the ﬁlter Contour . In the drop-down list "Contour By" select the pressure ﬁeld. 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 ﬁgure 8.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 ﬁgure 8.31.
Figure 8.29: Interaction with the interactive Clip manipulator when separating a single blade of a pump transformed by Turbo Blade Post / Turbo Unwrap ﬁlter. The blades are colored by static pressure calculated by Turbomachinery CFD using OpenFOAM.
Figure 8.31: Static pressure ﬁeld and contours on an isolated blade transformed by Turbo Blade Post / Turbo Unwrap ﬁlter. The pressure data have been calculated by Turbomachinery CFD using OpenFOAM. Left is the pressure side, right the suction side of the blade.
The ﬁlter Meridional Average creates a geometrical slice by a plane containing the rotation axis and circumferential averages all the ﬁeld data onto this slice. The slice ignores blades; there are never holes in the slice.
Figure 8.32: Turbo Blade Post; Filter properties.
Axis and its origin
This input speciﬁes the position and direction of the rotation axis around which the rotor region is placed. 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 deﬁned. If there is no hole in the middle, this option allows specifying a positive radius of a hole to drill before applying the ﬁlter. 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. 134
When "Debug output" is checked, then the ﬁlter produces some additional output in the form of txt ﬁles in the workking directory. These ﬁles can be used to explore the internal mechanisms particularly when contructing the projected boundary contour.
At the moment only the following quantities are sampled: the pressure p , the absolute velocity U (no circumferential component), the relative velocityURel (no circumferential component), the absolute velocity magnitude magU and the relative velocity magnitude magURel.
The ﬁlter Turbo Unwrap transforms the rotor region into a box according to a rather complicated set of rules. The purpose is to allow slicing the computational mesh and blades in the ﬁxed relative distance between the hub and shroud patches. The ﬁlter can be applied to the whole computational mesh or to its individual parts (clips of e.g. only the blades). The unwrapping transformation is guided by hub and shroud patches.
The input mesh is one or more mesh parts that are to be "unwrapped" by the ﬁlter. Most often this will be either the internal mesh or the blade patch(es). Hub and shroud patches
Knowledge of hub and shroud proﬁle is crucial for the transformation algorithm, because the aim of the transformation is to ﬂatten both these patches. This selection box enables user to select both patches. Axis and its origin
This input speciﬁes the position and direction of the rota- Figure 8.33: Turbo Blade tion axis around which the rotor region is placed. Post; Advanced Turbo Unwrap ﬁlter properties. Break
To unwrap the mesh, it is necessary to break it somewhere. This option allows speciﬁcation of a direction, where the cut will occur. Clip out 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 unwrapping into a box is well deﬁned. If there is no hole in the middle, this option allows specifying a positive radius of a hole to drill before unwrapping. 136
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 interface. 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 usage of the ﬁlter is similar to other ﬁlters with one small difference: Because it allows (and requires) selection of different parts of the multi-part mesh, it is necessary to load all needed parts of the mesh, not just the internal mesh. The ﬁgure 8.34 demonstrates a typical selection of OpenFOAM case mesh and patches for the Turbo Unwrap ﬁlter.
Figure 8.34: Turbo Blade Post; Selection of multiple parts of the mesh. The ﬁlter will transform the cylinder-like mesh into a box. The meaning of its new ζ = dimensions is described in the table 8.1. In brief it can be said that the boundary z 0 is the hub patch, the boundary z ζ = 1 is the shroud patch, the boundary x m = 0 is the one of inlet and outlet interfaces that is lower on the rotation axis and the boundary x m = 1 is the other one (higher on rotation axis). The boundaries on minimal and t coordinates are only artiﬁcial and were originally connected to each other. maximal y The ﬁlter transforms only the cell data, not point data, so it may be necessary to apply the ﬁlter Cell data to point data afterwards to regain access to the point ﬁelds (which are necessary for usage of e.g. the Glyph ﬁlter).
m t ζ
x y z
(0, 1) Distance along the hub/shroud/streamline. (0, 2π) Circumferential angle. (0, 1) Distance from the hub; the "span".
Table 8.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 ﬁlter passes all cell data without change except for the vector ﬁelds U and URel, (m,t,ζ ). Besides which are transformed into the new coordinate system (x , y , z ) these two vector ﬁelds Turbo Unwrap also creates several additional vector ﬁelds, namely UStream and URelStream which should be used to construct streamlines in the transformed mesh and URelLIC, which should be used as an input for the Surface Line Integral
Index AS Sutherland transport, 29 C p speciﬁc heat capacity, 29, 85 C v speciﬁc heat capacity, 85 P r Prandtl number, 29, 85 R speciﬁc gas constant, 85 S ij rate of deformation tensor, 85 T static temperature, 85 T S Sutherland transport, 29 δ ij Kronecker delta, 85 γ Heat capacity ratio, 29, 31 λ heat conductivity coefﬁcient, 85 µ dynamic viscosity, 29, 85, 86 ν kinematic viscosity, 86 ∂ partial derivative, 85, 86 ρ density, 29, 85 τ shear stress tensor, 85 e0 total speciﬁc energy, 85 g gravitational acceleration, 86 p static pressure, 85, 86 q i i-th heat ﬂux component, 85 t time, 85, 86 u velocity vector, 86 ui i-th velocity vector component, 85 xi i-th Cartesian coordinate, 85
Bibliography  H. Versteeg, W. Malalasekera, An Introduction to Computational Fluid Dynamics: The Finite Volume Method (2nd Edition), (Feb 26, 2007)  LeVeque R. J., Numerical Methods for Conservation Laws Birkhauser Verlag, 1990  H. Lomax, David W. Zingg, Thomas Pulliam, Fundamentals of Computational Fluid Dynamics, 2001  Dvoˇrák R., Kozel K., Matematické modelovaní v aerodynamice Vydavatelství ˇ CVUT, 1996.  Schnerr G. H. And Sauer J., Physical and Numerical Modeling of Unsteady Cavitation Dynamics, Proc. 4th International Conference on Multiphase Flow, New Orleans, U.S.A., 2001.  Schiavello B., Visser F., Pump Cavitation - Various NPSHR Criteria, NPSHA Margins, and Impeller Life Expectancy, Proc. of the twenty-ﬁfth INTERNATIONAL PUMP USERS SYMPOSIUM, 2009  CFD-online web pages: Navier-Stokes equations (http://www.cfd-online.com/Wiki/Navier-Stokes_equations , date: 30. 1. 2014).  Wilcox D.C., Turbulence Modeling for CFD , DCW Industries  OpenFOAM web pages: OpenFOAM Documentation (http://www.openfoam.org/docs/ , date: 30. 1. 2014).  Wikipedia web pages: Finite Volume Method (http://en.wikipedia.org/wiki/Finite-volume_method , date: 30. 1. 2014).  NASA web pages: Isentropic Flow (http://www.grc.nasa.gov/WWW/BGH/isentrop.html , date: 30. 1. 2014).  OpenFOAM web pages: OpenFOAM mesh description (http://www.openfoam.org/docs/user/mesh-description.php , date: 30. 1. 2014). 145