# Sig Turbomachinery / Timisoara Swirl Generator

## 1 Testcase description and experimental results

Håkan Nilsson, Chalmers University of Technology, Gothenburg, Sweden

Olivier Petit, Chalmers University of Technology, Gothenburg, Sweden

Petit et al. [1] provides a detailed description of the Timisoara Swirl Generator OpenFOAM case-study. The design of the geometry and experimental results are described thoroughly in [2-10]. The Timisoara Swirl Generator was developed at Politehnica University of Timisoara. It consists of four leaned strouts, 13 guide vanes, a free runner with 10 blades and a convergent divergent draft tube, see Figure 1. The guide vanes create a tangential velocity component while keeping a quasi-constant pressure. The purpose of the free runner is to re-distribute the total pressure by inducing an excess in the axial velocity near the shroud and a corresponding deficit near the hub, like a Francis turbine operating at 70% partial discharge. The runner blades act like a turbine near the hub, and a pump near the shroud. Thus the runner spins freely, without any total torque. The design value for the rotation of the runner is 870 rpm, but a stroboscope measurement on the test rige gave a slightly higher rotation, 920 rpm.

The measurements were performed at Politehnica University of Timisoara and were first presented by Bosioc et al. [10]. The flow rate was kept at 80% of the maximum power of the pump, that is 30 liter/s. The rotational speed of the free runner was 920 rpm. Velocity components have been measured in three different windows using using LDV (see Figure 2). The unsteady static presure measured at four positions (see Figure 3) using Cole-Parmer unsteady pressure transducers.

 Figure 1:Timisoara swirl generator geometry . Figure 2:Survey axis for velocity measurements. Figure 3:Position of the insteady pressure transducers.

## 2 Published computational results

Muntean et al. [8] made a 3D numerical investigation of the viability of reducing pressure fluctuation of the precessing vortex rope by axial jet control in the discharge cone. Preliminary simulations were realized on the conical diffuser of the test rig [11], which showed that OpenFOAM gives as accurate results as commercial software. Petit et al. [11] made the first OpenFOAM simulations of the complete swirl generator, as a base for the OpenFOAM case-study. Those investigations were continued in a Master thesis project by Bergman [12].

Future publications that use this validation test case should refer to Petit et al. [1].

## 3 References

[1] Petit, O., Bosioc, A., Nilsson, H., Muntean, S., Susan-Resiga, R., Unsteady Simulation of the Flow in a Swirl Generator Using OpenFOAM, International Journal of Fluid Machinery and Systems, Vol. 4, No. 1, January-March 2011, DOI:10.5293/IJFMS.2011.4.1.199

[2] Susan-Resiga, R., Muntean, S., Bosioc, A., Stuparu, A., Milos, T., Baya, A., Bernad, S., and Anton, L.E., 2007, “Swirling Flow Apparatus and Test Rig for Flow Control in Hydraulic Turbines Discharge Cone”, in Proceedings 2nd IAHR International Meetings of the Workgroup in Cavitation and Dynamic Problems in Hydraulic Machinery and Systems, Scientific Bulletin of the Politehnica University of Timisoara, Transcations on Mechanics, Vol. 52(66), Fasc.6, pp. 203-216.

[3] Susan-Resiga, R., Muntean, S., Tanasa, C., and Bosioc, A., 2008, “Hydrodynamic Design and Analysis of a Swirling Flow Generator”, in Proceedings of the 4th German – Romanian Workshop on Turbomachinery Hydrodynamics (GRoWTH), June 12-15, 2008, Stuttgart, Germany.

[4] Bosioc, A., Susan-Resiga, R., and Muntean, S., 2008, “Design and Manufacturing of a Convergent-Divergent Test Section for Swirling Flow Apparatus”, in Proceedings of the 4th German – Romanian Workshop on Turbomachinery Hydrodynamics (GRoWTH), June 12-15, 2008, Stuttgart, Germany.

[5] Susan-Resiga, R., Muntean, S., and Bosioc, A., 2008, “Blade Design for Swirling Flow Generator”, in Proceedings of the 4th German – Romanian Workshop on Turbomachinery Hydrodynamics (GRoWTH), June 12-15, 2008, Stuttgart, Germany.

[6] Susan-Resiga, R., Vu, T.C., Muntean, S., Ciocan, G.D., and Nennemann, B., 2006, “Jet Control of the Draft Tube Vortex Rope in Francis Turbines at Partial Discharge”, in Proceedings of the 23rd IAHR Symposium on Hydraulic Machinery and Systems, Yokohama, Japan, Paper F192.

[7] Muntean, S., Susan-Resiga, R., Bosioc, A., Stuparu, A., Baya, A., Anton, L.E., 2008, “Mitigation of Pressure Fluctuation in a Conical Diffuser with Precessing Vortex Rope Using Axial Jet Control Method”, in Proceedings of the 24th IAHR Symposium on Hydraulic Machinery and Systems, Foz do Iguassu, Brazil.

[8] Muntean, S., Susan-Resiga, R., and Bosioc, A., 2009, “Numerical Investigation of the Jet Control Method for Swirling Flow with Precessing Vortex Rope”, in Proceedings of the 3rd IAHR International Meeting of the Workgroup on Cavitation and Dynamic Problem in Hydraulic Machinery and Systems, Brno, Czech Republic.

[9] Susan-Resiga, R., and Muntean, S., 2008, “Decelerated Swirling Flow Control in the Discharge Cone of Francise Turbines”, in Proceedings of the 4th International Symposium on Fluid Machinery and Fluid Engineering, Beijing, China. Paper IL-18.

[10] Bosioc, A., Susan-Resiga, R., and Muntean, S., 2009, “2D LDV Measurements od Swirling Slow in a Simplified Draft Tube”, in Proceedings of the CMFF.

[11] Muntean, S., Nilsson, H., and Susan-Resiga, R., 2009, “3D Numerical Analysis of the Unsteady Turbulent Swirling Flow in a Conical Diffuser Using Fluent and OPENFOAM”, in Proceedings of the 3rd IAHR International Meeting of the Workgroup on Cavitation and Dynamic Problem in Hydraulic Machinery and Systems, Brno, Czech Republic. ISBN: 978-80-214-3947-4

[12] Bergman, O. "Numerical investigation of the flow in a swirl generator, using OpenFOAM", Master's thesis 2010:25, Chalmers University of Technology, 2010.

[13] Petit, O., Bosioc, A., Nilsson, H., Muntean, S., Susan-Resiga, R., A Swirl Generator Case Study for OpenFOAM, In proceedings of 25th IAHR Symposium on Hydraulic Machinery and Systems, 2010, Timisoara, Romania, ISBN: 978-606-554-134-4, ISBN: 978-606-554-135-1 (vol 1).

[14] S. Muntean, A. Bosioc, R. Stanciu, C. Tanasa and R. Susan-Resiga, "3D Numerical Analysis of a Swirling Flow Generator", 4-th International Meeting on Cavitation and Dynamic Problems in Hydraulic Machinery and Systems, October, 26-28, 2011, Belgrade, Serbia.

[15] A. Bosioc, "Swirling flow control in the draft tube cone of hydraulic turbines", PhD. Thesis 2011, Politehnica University of Timisoara.

## 4 Geometric data of the Timisoara Swirl Generator

The different parameters used in this case are shown below:

 Operating conditions Inlet Diameter DInlet = 0.15 m Throat radius RThroat = 0.05 m Throat velocity $v_{Throat} = \frac{Q}{\pi R_{Throat}^2} = 3.81 \text{ } m.s^{-1}$ Rotational speed n = 920 rpm Flow rate Q = 30 l.s − 1 = 0.03 m3.s − 1 Water density ρ = 998 kg.m − 3 Inlet axial velocity $U_{inlet} = \frac{4Q}{\pi D_{Inlet}^2} = 1.69765 \text{ } m.s^{-1}$

## 5 How to get the files

The OpenFOAM Timisoara Swirl Generator cases described in the following sections were developed as a case-study for the Fifth OpenFOAM Workshop, Gothenburg, 2010, and can be found at the OpenFOAM-extend SourceForge project. It includes complete OpenFOAM cases that solve the flow in the domain and automatic post-processing of the results. The block-structured hexahedral mesh was generated in ICEM CFD, in four parts, which are coupled using GGI interfaces. Instructions on how to run the cases follow below.

Get all the current case files by doing:

OpenFOAM-1.5-dev:

 cd $FOAM_RUN svn checkout svn://svn.code.sf.net/p/openfoam-extend/svn/trunk/Breeder_1.5/OSIG/TurboMachinery/timisoaraSwirlGenerator OpenFOAM-1.6-ext:  cd$FOAM_RUN
svn checkout svn://svn.code.sf.net/p/openfoam-extend/svn/trunk/Breeder_1.6/OSIG/TurboMachinery/timisoaraSwirlGenerator

In the descriptions below, we thus assume that the timisoaraSwirlGenerator directory is located in the $FOAM_RUN directory Update your files every now and then by doing:  cd$FOAM_RUN/timisoaraSwirlGenerator
svn update

See further info at OpenFOAM-extend webpage

The transientSimpleDyMFoam solver is used for this test case. To install and use it, see transientSimpleDyMFoam.

The turboPerformance functionObject is used to determine the shaft power. To install and use it, see Sig Turbomachinery Library turboPerformance.

The trackDictionary functionObject is used as well. To install and use it, see trackDictionary.

## 6 Directory structure

The structure of the timisoaraSwirlGenerator directory reads:

timisoaraSwirlGenerator
|-- TSG
|-- measurements
|-- geometry
• The geometry directory contains the ICEM .tin CAD files for the four different part of the test case: strout.tin, stayVanes.tin, runner.tin and draftTube.tin.
• The measurements directory contains the LDV data measured by Bosioc et al. [10] at the three availble windows in the draft tube. The data is re-arranged to facilitate the automatic post-processing.
• The case directory TSG ( for Timisoara Swirl Generator) contains the following files, scripts and directories:
setBatch
runScript.py
pythonScript/
system/
constant/
Allclear
Allrun
0.Orig/
transientSimpleDyMFoam.1/

## 7 Test cases

### 7.2 Descriptions of the scripts used in the cases

 Allrun: Perform time-accurate transientSimpleDyMFoam analysis.

 Allclear: Remove time directories and return to the initial state.


### 7.3 Check list in case of errors during the simulations

If the simulation doesn't start when using the Allrun scripts, please check that:

• You do have the development version of OpenFOAM 1.5 (OpenFOAM-1.5-dev).
• You have the latest update of the development version.
• You have compiled the transientSimpleDyMFoam solver.
• You have compiled the turboPerformance functionObject.
• You have compiled the simpleFunctionObjects library available from the Breeder_1.5 section of the Subversion repository of the project openfoam-extend on SourceForge.NET. By default this tutorial uses the trackDictionary functionObject from this library. In case you do not want to use it, simply delete or comment the lines relative to the trackDictionary functionObject in system/controlDict.
• For the post-processing, Python 2.6 needs to be installed, as well as two other fundamental packages, numPy and matplotlib.
• Check again that all the points listed above are validated.

## 8 Optional tools

This part shows some tools that can be used to simplify the set-up. They usually tend to be very useful, and it is recommended to use them.

### 8.1 The probe functionObject

The probe functionObject allows to record at each time step one or many characteristics of the flow, such as U, p ...

### 8.2 The fieldAverage functionObject

This is a very useful functionObject that time-averages the principal characteristics of the flow. It is very useful when doing unsteady simulations since the quantities that we want to investigate (such as the velocity) are quite often time-averaged and not instantaneous. In the controlDictionary, a few lines need to be written:

 fieldAverage1
{
// Type of functionObject
type fieldAverage;

functionObjectLibs ("libfieldAverage.so");

// Fields to be  averaged - runTime modifiable
fields
(
U
{
//mean            on;
mean            off;
prime2Mean      off;
base            time;
}
p
{
//mean            on;
mean            off;
prime2Mean      off;
base            time;
}
k
{
//mean            on;
mean            off;
prime2Mean      off;
base            time;
}
epsilon
{
//mean            on;
mean            off;
prime2Mean      off;
base            time;
}
);
}

To start time-averaging the quantities specified above, just switch the mean to on.

Important: in most of the unsteady simulations, a transient phase occurs before coming to a periodic phase. The periodic phase is the one of interest, and it is during this phase that it is interesting to time-average. Doing so from the begining will just give a incorrect value of the time-average quantity. Similarly, the averaging should be done over full period(s), and not over one and a half. The more periods the better.

### 8.3 The ggiCheck functionObject

The ggiCheck functionObject is already integrated in the OpenFOAM 1.5-dev version, and allows the user to see very easily whether the flux across the GGI interface is balanced or not.

Tutorial on how to use and install it can be found at [ggiCheck]

### 8.4 The trackDictionary functionObject

During a computation, it is often important to keep a trace of the initial set of parameters that were used to perform it, and also to keep track of any changes made to these parameters. The trackDictionary functionObject was developped for this purpose.

Tutorial on how to use and install it can be found at [trackDictionary]

### 8.5 The turboPerformance functionObject

The purpose of this functionObject library is to provide simple functionality that is useful in turbomachinery CFD analysis.

Tutorial on how to use and install it can be found at [turboPerformance]

## 9 Solver

### 9.1 TransientSimpleDyMFoam

TransientSimpleDyMFoam is a transient solver for incompressible, turbulent flow of Newtonian fluids with moving mesh. There are many ways a mesh can move, and some of the basics move are coded as dynamicFvMesh:

• linearValveFvMesh
• movingConeTopoFvMesh
• mixerFvMesh
• mixerGgiFvMesh

Note that the mixerGgiFvMesh dynamicFvMesh was created by Hrvoje JASAK, so is available only in the extend-version of OpenFOAM.

The dynamicFvMesh mixerGgiFvMesh is basically the same principle as the dynamicFvMesh mixerFvMesh, without having to stitch the two parts of the mesh. Instead of detach and attach both parts of the mesh at each time step, the GGI interface is used in mixerGgiFvMEsh. It makes the simulation faster and lighter. To make the case work, a working GGI interface needs to be defined. To create a moving mesh, a dictionary is needed, in constant/, named dynamicMeshDict:

 dynamicFvMeshLib   "libtopoChangerFvMesh.so";
dynamicFvMesh      mixerGgiFvMesh;

mixerGgiFvMeshCoeffs
{
coordinateSystem
{
type            cylindrical;
origin          (0 0 0);
axis            (0 0 1);
direction       (1 0 0);
}

rpm             920;

slider
{
moving      ( RUNNER_INLET RUNNER_OUTLET );
static      ( SV_OUTLET SUGROR_INLET );
}
}

The walls that are geometrically inside the rotating part should get the following velocity boundary condition:

   RUNNER_BLADE
{
type            movingWallVelocity;
value           uniform (0 0 0);
}


A cellzone called movingCells is needed to define the rotating region. If not defined previous of the simulation, the solver will try to define it by itself. However, it often creates problem, and it is strongly recommended to do it prior of it. In this test case, it is done already.

To get and install it,

OpenFOAM-1.5-dev:

svn co https://openfoam-extend.svn.sourceforge.net/svnroot/openfoam-extend/trunk/Breeder_1.5/OSIG/TurboMachinery/applications/solvers/incompressible/transientSimpleDyMFoam
cd transientSimpleDyMFoam
wmake

OpenFOAM-1.6-ext:

svn co https://openfoam-extend.svn.sourceforge.net/svnroot/openfoam-extend/trunk/Breeder_1.6/OSIG/TurboMachinery/applications/solvers/incompressible/transientSimpleDyMFoam
cd transientSimpleDyMFoam
wmake

## 10 Post-processing using Python

### 10.1 Requirements

To successfully post-process this test case, Python 2.6 is needed, as well as the two fundamental package numPy and matplotlib.

• numPy is the fundamental package needed for scientific computing with Python and can be found at [getting numPy].
• matplotlib is a python 2D plotting library which produces publication quality figures in a variety of hardcopy formats and interactive environments across platforms. It can be found at [getting matplotlib].

### 10.2 Post-processing structure

The main script used to post-process the case is called runScript.py. Its main function is to create a directory for the picture, and to call the different scripts required to post-process different characteristics of the flow. Those scripts can be found in the pythonScript directory:

pythonScript

|-- plot_draftTube_window.py
|-- plot_probes.py
|-- plot_turbo.py

### 10.3 Usage

To post-process the case, do

 sample -latestTime
./runScript.py 'arg1' 'arg2'  'arg3'
• arg1 should be a sampled time step, which should therefore be located in sets directory.
• arg2 is the name and location of the log file. In this test case for example the name of the logfile is log.transientSimpleDyMFoam.
• arg3 is either "U" or "UMean". It specifies whether we compare the computed Mean velocity ( in this case arg3 is UMean) or the instantaneous one (arg3 is then U). Because it is unsteady computation, it is strongly recommended to use the mean velocity, but wait to do so until the initial transient phase has been overcome.

### 10.4 Results

1. plot_draftTube_window.py

The script plots the computed velocity against measured velocity at the three different window positions.

 Figure 1:Window 0 . Figure 2:Window 1. Figure 3:Window 2.

Using this script, many more information can be extracted and plotted out of the log file, but so far the velocity magnitude, Mean and Max Courant Number are plotted.

 Figure 1:Mean Courant number . Figure 2: Max Courant number. Figure 3:Velocity magnitude.

3. plot_probes.py

This script plots the pressure at the probes locations specified in the system/controldict probes functionObject. In this test case, 7 probes locations are specified. Three of them are showed here as an example.

 Figure 1:Probe 1. Figure 2:Probe 2. Figure 3:Probe 3.

4. plot_turbo.py

From this script the characteristics for turbomachines are extracted and plotted.

 Figure 1:Head. Figure 2:Torque. Figure 3:Forces.

Back to Sig Turbomachinery