Sunteți pe pagina 1din 144

- Master Thesis -

CFD Simulations of a 2.5 MW wind turbine


using ANSYS CFX and OpenFOAM

submitted by
Bastian Dose

1st examiner : Prof. Dr. Alois Peter Schaffarczyk


2nd examiner : Dr. Wided Medjroubi

April 3, 2013

Faculty of Computer Science and Electrical Engineering


University of Applied Science Kiel

Carried out externally at


Fraunhofer Institut for Wind Energy and Energy System Technology (IWES)
Oldenburg

Supervisor : Dr. Bernhard Stoevesandt


I
Abstract
Due to advances in both available computational power and software, numerical meth-
ods are increasingly used to investigate and optimize the behaviour of complete wind
turbines for different load scenarios.

For this purpose CFD (Computational Fluid Dynamics) tools are being used. Addition-
ally to established commercial solvers, like ANSYS CFX [1], open source packages like
OpenFOAM [2] are becoming more and more important in both research and industry
sectors. Therefore, it would be interesting to compare both open source and commercial
codes, not only with focus on the actual results but also on needed computational efforts
and simulation times.

The purpose of this work is to perform CFD simulations on a 2.5 MW standard horizon-
tal upwind wind turbine (100m rotor diameter, 100 m hub height) including the tower
geometry using OpenFOAM and ANSYS CFX. To assure the comparability of the later
results several pre-processing steps have been made. Both simulations use the same
block structured hexahedral mesh generated with ANSYS ICEM CFD [1]. The mesh is
divided into a stationary far field domain and a rotating rotor domain connected with
GGI/AMI interfaces. The total cell count is approximately 50 Mio. cells.

Reynolds Averaged Navier-Stokes simulations (RANS) are conducted where the Menter
kSST turbulence model in combination with a wall function is used. Stationary and
transient cases will be simulated. As the OpenFOAM solver used was validated using
the MEXICO project [3], first conclusions on the quality of the results can be made.
The simulations are computed using the computing resources of the FLOW cluster of
the University of Oldenburg [4].

II
III
Affidavit
I hereby declare that this master thesis has been written only by the undersigned and
without any assistance from third parties.

Furthermore, I confirm that no sources have been used in the preparation of this thesis
other than those indicated in the thesis itself.

Oldenburg, April 4, 2013

(Bastian Dose)

IV
List of Tables

List of Tables

4.1. Turbine specifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45


4.2. Conducted simulations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
4.3. Dimensions of the rotor disk domain . . . . . . . . . . . . . . . . . . . . . 48
4.4. Far-field dimensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

5.1. Mesh specifications of the structured rotor mesh . . . . . . . . . . . . . . . 61


5.2. Mesh specifications of the structured far-field mesh . . . . . . . . . . . . . 66
5.3. Selected boundary conditions in CFX-Pre . . . . . . . . . . . . . . . . . . 66
5.4. Simulation set-up - steady state . . . . . . . . . . . . . . . . . . . . . . . . 68
5.5. Simulation set-up - transient . . . . . . . . . . . . . . . . . . . . . . . . . . 68

6.1. Mesh specifications of the unstructured rotor mesh given by the checkMesh
tool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
6.2. Mesh specifications of the unstructured far-field mesh . . . . . . . . . . . . 89
6.3. Assigned patch types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
6.4. Specified patch types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90

7.1. Required computational power . . . . . . . . . . . . . . . . . . . . . . . . . 93


7.2. Steady state simulation results: Power output . . . . . . . . . . . . . . . . 94
7.3. Steady state simulation results: Axial forces . . . . . . . . . . . . . . . . . 107
7.4. Transient preliminary simulation results . . . . . . . . . . . . . . . . . . . 110

V
List of Figures

List of Figures

2.1. Stream tube with actuator disk model (source:[5]) . . . . . . . . . . . . . 5


2.2. Stream tube with actuator disk model (source:[5]) . . . . . . . . . . . . . 8
2.3. Streamlines around airfoil (source:[6], modified) . . . . . . . . . . . . . . 9
2.4. Lift and drag forces acting on an airfoil (source:[5], modified) . . . . . . . 10
2.5. Typical Cp -curve of an airfoil . . . . . . . . . . . . . . . . . . . . . . . . . 11

3.1. Mass flow through an infinitesimal volume element (source:[7]). . . . . . . 13


3.2. Forces acting on an infinitesimal volume element (source:[7]) . . . . . . . 15
3.3. Couette flow near a wall (source:[8]) . . . . . . . . . . . . . . . . . . . . . 27
3.4. Two dimensional domain divided into a finite number of volumes (source:[9]) 31
3.5. Cartesian structured grid (source:[8]) . . . . . . . . . . . . . . . . . . . . 36
3.6. Rectangular structured grid (source:[8]) . . . . . . . . . . . . . . . . . . . 36
3.7. Structured H-grid (source:[8]) . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.8. Structured C-grid (source:[8]) . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.9. Structured O-grid (source:[8]) . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.10. Block structured grid (source:[8]) . . . . . . . . . . . . . . . . . . . . . . . 38
3.11. Unstructured grid around an airfoil (source:[8]) . . . . . . . . . . . . . . . 39
3.12. Hybrid grid around an airfoil (source:[8]) . . . . . . . . . . . . . . . . . . 39

4.1. Simulated turbine - overview of the turbine . . . . . . . . . . . . . . . . . 46


4.2. Simulated turbine - nacelle and hub . . . . . . . . . . . . . . . . . . . . . 47
4.3. Wind turbine rotor mesh domain . . . . . . . . . . . . . . . . . . . . . . . 49
4.4. Far-field mesh domain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

5.1. Rotor domain (120 degree) . . . . . . . . . . . . . . . . . . . . . . . . . . 53


5.2. Regenerated blade geometry (splines) around tip area . . . . . . . . . . . 54
5.3. Block structure around a blade cross section . . . . . . . . . . . . . . . . 55
5.4. Radial block structure of the rotor block . . . . . . . . . . . . . . . . . . 56
5.5. Complete block structure for a 120 degree block of the rotor . . . . . . . 57
5.6. Complete block structure for the full rotor . . . . . . . . . . . . . . . . . 57
5.7. Final mesh at blade root . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
5.8. Cut plane - front part . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
5.9. Cut plane - trailing-edge . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
5.10. Cut plane - tip region . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
5.11. Final mesh at blade tip . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
5.12. Bad quality cells at the blade tip . . . . . . . . . . . . . . . . . . . . . . . 62
5.13. Generated far-field domain with the tower and the nacelle . . . . . . . . . 63

VI
List of Figures

5.14. Block structure of the entire domain . . . . . . . . . . . . . . . . . . . . . 64


5.15. Final mesh of the far-field domain - front view . . . . . . . . . . . . . . . 65
5.16. Final mesh of the far-field domain - vertical cut . . . . . . . . . . . . . . 65
5.17. Simulation set-up in CFX-Pre . . . . . . . . . . . . . . . . . . . . . . . . 67

6.1. Unrealistic flow phenomena due to wrong set-up of MRF when using AMI 77
6.2. Background mesh of the rotor disk . . . . . . . . . . . . . . . . . . . . . . 82
6.3. Meshing errors at the trailing edge of the blade using snappyHexMesh . . 83
6.4. The mesh around the leading-edge of the central blade region . . . . . . . 84
6.5. The mesh around the trailing-edge of the central blade region . . . . . . . 85
6.6. Slice cut through the central blade region . . . . . . . . . . . . . . . . . . 85
6.7. The structured background mesh used for the unstructured far-field . . . 87
6.8. The unstructured far-field mesh - a front view . . . . . . . . . . . . . . . 88
6.9. Unstructured far-field - vertical cut . . . . . . . . . . . . . . . . . . . . . 88

7.1. Convergence of aerodynamic power output in OpenFOAM . . . . . . . . 92


7.2. Convergence of aerodynamic power output in ANSYS CFX . . . . . . . . 93
7.3. Pressure distribution on the pressure side of the blade . . . . . . . . . . . 95
7.4. Pressure distribution on the suction side of the blade . . . . . . . . . . . 96
7.5. Pressure distribution on the blade surface around the blade tip . . . . . . 97
7.6. calculated on the blade surface around the blade tip . . . . . . . . . . . 98
7.7. Pressure distribution around blade at r/R = 0.96 . . . . . . . . . . . . . 99
7.8. Critical cells at trailing edge (r/R = 0.96) . . . . . . . . . . . . . . . . . . 100
7.9. Pressure coefficient on blade surface at r/R = 0.96 . . . . . . . . . . . . . 100
7.10. Velocity distribution around blade at r/R = 0.96 . . . . . . . . . . . . . . 101
7.11. Pressure distribution around blade at r/R = 0.70 . . . . . . . . . . . . . 102
7.12. Pressure coefficient on blade surface at r/R = 0.70 . . . . . . . . . . . . . 103
7.13. Pressure distribution around blade at r/R = 0.70 . . . . . . . . . . . . . 104
7.14. Pressure distribution around blade at r/R = 0.30 . . . . . . . . . . . . . 105
7.15. Pressure coefficient on blade surface at r/R = 0.30 . . . . . . . . . . . . . 106
7.16. Pressure distribution around blade at r/R = 0.30 . . . . . . . . . . . . . 107

VII
List of Figures

List of Symbols

Abbreviations
AMI Arbitraty Mesh Interface
BEM Blade Element Method
BiCG Biconjugate Gradient
CFD Computational Fluid Dynamics
CV Control Volume
FDM Finite-Differences Method
FEM Finite-Element Method
FVM Finite-Volume Method
GAMG Generalised Geometric/Algebraic Multi-Grid
GGI General Grid Interface
MRF Multi Reference Frame
TSR Tip Speed Ratio

Greek letters
1 empirical constant [-]
p relaxation factor for pressure [-]
u relaxation factor for velocity [-]
empirical constant [-]
empirical constant [-]
 turbulent dissipation [kg/m3 ]
tip speed ratio [1]
dynamic viscosity [kg/ms]
kinematic viscosity [m2 /s]
t modified turbulent eddy viscosity [m2 /s]
t turbulent eddy viscosity [m2 /s]
specific turbulent dissipation [m2 kg/ms2 ]
density [kg/m3 ]
empirical constant [-]
 empirical constant [-]
k empirical constant [-]
C 1 empirical constant [-]
C 2 empirical constant [-]

Latin letters

VIII
List of Figures

l turbulent length scale [m]

p momentum [k m/s]

m mass flow [kg/s]


A area [m2 ]
a axial induction factor [-]
C chord length [m]
c speed of sound [m/s]
C empirical constant [-]
CD drag coefficient [-]
CL lift coefficient [-]
CP power coefficient [-]
Cp pressure coefficient [-]
CT trust coefficient [-]
c1 empirical constant [-]
cb1 empirical constant [-]
cb2 empirical constant [-]
CF L Courant number [-]
FD drag force [N ]
FL lift force [N ]
k turbulent kinetic energy [m2 /s2 ]
k volume force [N ]
l characteristic length [m]
M torque [N m]
m mass [kg]
n rotational speed [1/s]
p pressure [pa]
R blade radius [m]
r radius [m]
Rij Reynolds stress term [(kg m2 )/(m3 s2 )]
Re Reynolds number [-]
T trust force [N ]
t time [s]
U velocity [m/s]
u velocity component in x-direction [m/s]
Urel resulting wind velocity [m/s]
v velocity component in y-direction [m/s]
w velocity component in z-direction [m/s]

IX
Contents

Contents

1. Introduction 1
1.1. Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2. Purpose . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

2. Foundations of Wind Turbines 4


2.1. The linear momentum theory . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.2. Power coefficient CP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.3. Trust coefficient CT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.4. Tip speed ratio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.5. Lift and drag coefficients CL and CD . . . . . . . . . . . . . . . . . . . . . 9
2.6. Pressure coefficient Cp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

3. Foundations of Computational Fluid Dynamics 12


3.1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.2. Conservation laws . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.2.1. Conservation of mass . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.2.2. Conservation of momentum . . . . . . . . . . . . . . . . . . . . . . 15
3.3. Modelling of turbulent flow . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.4. Reynolds Averaged Navier-Stokes Equations (RANS) . . . . . . . . . . . 20
3.5. Boussinesq assumption . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.6. Turbulence models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.6.1. The Spalart Allmaras turbulence model . . . . . . . . . . . . . . . 22
3.6.2. The Standard k- turbulence model . . . . . . . . . . . . . . . . . 23
3.6.3. The Wilcox k- turbulence model . . . . . . . . . . . . . . . . . . 24
3.6.4. The k- SST turbulence model . . . . . . . . . . . . . . . . . . . . 25
3.7. Wall functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.8. Simplifications of the Navier-Stokes equations . . . . . . . . . . . . . . . . 28
3.8.1. Incompressible flows . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.8.2. Euler flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.8.3. Potential flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.9. Discretization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.9.1. Spatial discretization . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.9.2. Temporal discretization . . . . . . . . . . . . . . . . . . . . . . . . 33
3.10. Grid generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.10.1. Structured grids . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.10.2. Unstructured grids . . . . . . . . . . . . . . . . . . . . . . . . . . 38

X
Contents

3.10.3. Hybrid grids . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39


3.11. Algebraic equations solution methods . . . . . . . . . . . . . . . . . . . . 40
3.11.1. Gaussian Elimination method . . . . . . . . . . . . . . . . . . . . 40
3.11.2. LU Decomposition . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.11.3. Jacobi Iteration method . . . . . . . . . . . . . . . . . . . . . . . . 41
3.11.4. Gauss-Seidel method . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.11.5. Gradient-based and multi-grid solution methods . . . . . . . . . . 42
3.12. Solution algorithms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

4. Simulation Strategy 45
4.1. Turbine specification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.2. Conducted simulations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.3. Meshing strategy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
4.4. General simulation approach . . . . . . . . . . . . . . . . . . . . . . . . . 50

5. Simulations in ANSYS CFX 51


5.1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
5.2. Mesh generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
5.2.1. Meshing tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
5.2.2. Generation of the structured wind turbine rotor mesh . . . . . . . 52
5.2.3. Generation of the structured far-field mesh . . . . . . . . . . . . . 63
5.3. Simulation set-up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66

6. Simulations in OpenFOAM 69
6.1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
6.1.1. File structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
6.1.2. Grid interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
6.1.3. Rotating meshes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
6.1.4. Mesh import and merging . . . . . . . . . . . . . . . . . . . . . . 79
6.2. Mesh generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
6.2.1. Meshing tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
6.2.2. Generation of the unstructured wind turbine rotor mesh . . . . . 82
6.2.3. Generation of the unstructured far-field mesh . . . . . . . . . . . . 87
6.3. Simulation set-up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

7. Evaluation and Comparison 92


7.1. Steady state simulation results . . . . . . . . . . . . . . . . . . . . . . . . 92
7.1.1. Preparation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
7.1.2. Aerodynamic power output . . . . . . . . . . . . . . . . . . . . . . 94
7.1.3. Pressure distribution on the blade . . . . . . . . . . . . . . . . . . 95
7.1.4. Tip blade section . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
7.1.5. Outer blade section . . . . . . . . . . . . . . . . . . . . . . . . . . 99
7.1.6. Central blade section . . . . . . . . . . . . . . . . . . . . . . . . . 102
7.1.7. Inner blade section . . . . . . . . . . . . . . . . . . . . . . . . . . 105

XI
Contents

7.1.8. Axial forces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107


7.2. Transient simulation results . . . . . . . . . . . . . . . . . . . . . . . . . . 108
7.2.1. Transient simulation in OpenFOAM . . . . . . . . . . . . . . . . . 108
7.2.2. Transient simulation in ANSYS CFX . . . . . . . . . . . . . . . . 109

8. Conclusion 111

Bibliography 113

Appendix A. The 0/U file 116

Appendix B. The 0/p file 118

Appendix C. The 0/omega file 120

Appendix D. The 0/k file 122

Appendix E. The system/fvSolution file 124

Appendix F. The system/fvSchemes file 126

Appendix G. The constant/MRFZones file 128

Appendix H. The constant/polyMesh/boundary file 129

XII
1. Introduction

1. Introduction
1.1. Motivation
The use of wind energy can be traced back far into the past. In former times mainly
used to drive pumps or other simple machines, today the wind energy contributes an
important share of the electricity generation. Due to the increasing demand of fossil en-
ergy resources caused by the upcoming consumers of the future China, India and Brazil
it is more important than ever before to pursuit an independent and clean energy supply.

The rise of the wind energy sector began in the 80s in Germany. Financial support from
the German government and important research projects like the GROWIAN machine,
led to an significant increase both in knowledge and use of the wind energy. Being only
rarely used in small scale in the 80s, the German wind energy sector can look back on a
an installed capacity of more than 30.000 MW in 2012 [10].

The boom of the wind industry apprehended other countries to profit from this devel-
opment. First the use of wind energy was first spread in Europe, in the last years all
over the world. After the financial crisis in 2007/2008, the European wind industry,
in former times spoiled by enormous growth rates, had to register their first significant
drawbacks. The difficult situation of investors and the financial sector in combination
with cuts in the submission fees of renewable energy system by the governments led to
drops in erecting numbers of new wind turbines in Europe.

In addition, delays in erecting offshore wind farms, the stagnating extension of the elec-
tric grid and growing displease within the population made the situation even worse. To
ensure a further growth of the wind industry and to keep its role as the most important
renewable energy resource of the future, the wind industry has to challenge one main
task within the next decade: It has to drive down the costs of energy.

This can only be achieved by the development of a new wind turbine generation which
has to be larger, cheaper and feature a higher reliability. One of the key requirements
to make this turbine generation possible, is the introduction of more accurate load cal-
culations. Until today, the loads acting on a wind turbine and therefore effecting every
critical part of the wind turbine are mainly estimated by using classic engineering models
like the Blade Element Method (BEM). Being fast, but inaccurate, these classic models
have to be combined with the extended use of advanced numerical methods, also de-
noted as Computational Fluid Dynamics (CFD), to enable the accurate prediction of
loads acting on wind turbines.

1
1. Introduction

The main disadvantages of the CFD methods, the significant required effort in time
and computational power, are more and more driven down by the growing number of
available computational clusters and the decreasing costs of computational power. In
addition, a new generation of CFD tools is being developed to support the engineers,
enabling the more efficient use of CFD methods for wind energy applications.

In addition to the classic and well validated commercial CFD codes like ANSYS CFX
or StarCCM+, the CFD package OpenFOAM became more important in the last years.
Based on the open source concept and combined with a world wide growing community,
the OpenFOAM toolbox is today interesting for both research and industry. The main
task of this work is to compare both commercial and open source CFD codes for wind
energy applications. Not only in quality of the results, but also in needed computational
power and time consumption.

The comparison will be done within a cooperation between the CFD departments of
the Fraunhofer Institute for Wind Energy and Energy System Technology (IWES) and
ForWIND, the center of wind energy research of the universities of Oldenburg, Hannover
and Bremen.

2
1. Introduction

1.2. Purpose
The main purpose of this work is to test the ability of the commercial CFD package
ANSYS CFX and the open source CFD toolbox OpenFOAM to conduct simulations of
wind turbines, both steady state and transient. Both packages will be compared within
a series of simulations of a complete 2.5 MW horizontal standard wind turbine including
tower geometry.

The thesis can divided into three main parts.

In the first part of the work, comprehensive literature research is conducted. For the
successful treatment of the given task, solid knowledge in several key areas like wind
turbine physics, fluid mechanics and numerics is required. Due to the lack of a complete
documentation, especially the use of OpenFOAM has to be based on an intensive study
of the OpenFOAM community forum [11]. The theory foundations required for conduct-
ing CFD simulations of wind turbines will be described in Chapter 2 and Chapter 3.

The second part of this thesis focuses on the set-up of the simulations in both ANSYS
CFX and OpenFOAM. The majority of the effort required for the simulation set-up is
needed for the generation of the wind turbine mesh. In preparation of future projects of
the CFD group of Fraunhofer IWES and ForWIND, the concept of a full structured mesh
is to be tested. For the mesh generation the tool Ansys ICEM CFD is provided. As the
use of this tool is not trivial and wind turbine can be considered as complex geometry,
different meshing strategies for the structured meshing of complete wind turbines have
to be discussed and tested. In addition, an unstructured grid used for the transient
simulation within OpenFOAM has to be created. The general simulation approach, the
mesh generation and the simulation set-up are described in Chapter 4, Chapter 5 and
in Chapter 6.

In the final part of the thesis, a series of simulations of the complete turbine with tower
is conducted. Both steady state and transient simulations are started. Afterwards the
results of ANSYS CFX and OpenFOAM are evaluated and compared (Chapter 7). At
the end of this work, in Chapter 8, a final conclusion will be drawn.

3
2. Foundations of Wind Turbines

2. Foundations of Wind Turbines


This chapter will provide the reader with the basic principles of extracting energy out of
wind using wind turbines. According to the topic of this work, this chapter will mainly
focus on modern horizontal three bladed wind turbines in the multi megawatt class.
Additional information about the extraction of energy out of wind can be found in the
cited literature within each section.

2.1. The linear momentum theory


In the early 1920th, one of the pioneers in the field of the wind energy, the German
physicist Albert Betz, published his paper Theoretical Limit for Best Utilization of
Wind by Wind Motors [12]. This work can be considered as the foundation for the
development of actual wind turbines. Betz was the first to show how much energy could
be possibly extracted out of moving air by using wind turbines. He stated, that a wind
turbine, independent of its shape, could not extract more than 59% of the kinetic energy
contained in moving air. This value, known as the Betz limit, is still valid until today.
His theory is founded on a simple model based on a linear momentum theory originally
used for ship propeller applications introduced by R.E. Froude (1889) and W.J. (1865)
Rankine [13].

For the derivation of his theory he assumed a flow through a control volume shaped like
a stream tube. The wind turbine is represented by a so called actuator disk, placed in
the center of the stream tube, which causes a pressure drop in the stream tube of air.
The derivation of his theory, is based on several assumptions [5]:

steady state and incompressible flow;

no frictional drag;

an infinite number of blades;

trust acts uniform on rotor area;

a nonrotating wake;

the static pressure far upstream and far downstream of the rotor is equal.

4
2. Foundations of Wind Turbines

Figure 2.1 shows the concept of the actuator disk within a stream tube. U1 represents the
inflow velocity into the stream tube and U4 is the outflow velocity out of the system. U2
and U3 represent the velocity directly before and after the actuator disk. The boundary
of the stream tube is closed.

Figure 2.1.: Stream tube with actuator disk model (source:[5])

By applying the conservation of momentum on this model we obtain the balance of


momentum within the stream tube:
4ptotal = Trotor = U1 ( A1 U1 ) U4 ( A4 U4 ). (2.1)
The total change in momentum ptotal is equal to the trust force Trotor which acts on the
rotor, is the density of the fluid, in this case ideal air. A represents the cross section
of the stream tube at the different positions. As the boundaries of the stream tube are
closed and Betz considered an incompressible flow, the mass flow rate m at the inlet and
at the outlet has to be equal:
= A1 U1 = A4 U4 .
m (2.2)
Respectively, Equation (2.1) can be simplified to:
T = m(U
1 U4 ). (2.3)
As the trust acting on the rotor has to be positive, the velocity U4 at the outlet has to
be smaller than at the inflow [5]. Applying the equation of Bernoulli on the two control
volumes we obtain the following equation for the left part of the stream tube:
1 1
p1 + U12 = p2 + U22 , (2.4)
2 2
thus for the right part of the stream tube:
1 1
p3 + U32 = p4 + U42 . (2.5)
2 2

5
2. Foundations of Wind Turbines

In addition, the trust force Trotor can be expressed by the pressure drop from p2 to p3
at the actuator disk:
Trotor = A2 (p2 p3 ). (2.6)
Based on the assumption of no frictional drag [5], we can use U2 = U3 and p1 = p4 to
transform Equations (2.4) and (2.5):
1 1
p2 = p4 + U12 U22 , (2.7)
2 2
and
1 1
p3 = p4 + U42 U22 . (2.8)
2 2
By replacing p2 and p3 in Equation (2.6) with Equations (2.7) and (2.8) we obtain an
equation describing the trust force Trotor acting on the rotor where A2 presents the rotor
area:
1
Trotor = A2 (U12 U42 ). (2.9)
2
The aerodynamic power output of the rotor can be expressed using the product of the
trust force acting on rotor area Trotor times the velocity U2 at the rotor area:
Protor = Trotor U2 ,
1
= A2 (U12 U42 ) U2 . (2.10)
2
In this simplified model the velocity U2 at the rotor is estimated as the simple average
between the free stream velocities U1 before and U2 after the rotor. U2 can be expressed
as:
U1 U4
U2 = . (2.11)
2
For reasons of clarity we introduce the axial induction factor a, which can be defined as
the decrease of the wind velocities U1 in the free stream and U2 at the rotor disk:
U1 U2
a= . (2.12)
U1
Now the velocity at the rotor disk U2 and the free stream velocity far behind the rotor
disk U4 can be expressed as:
U2 = U1 (1 a), (2.13)

U4 = U1 (1 2a). (2.14)
Combining Equations (2.13) and (2.14) with Equation (2.10) and replacing the rotor
area A2 with Arotor and the free stream velocity before the rotor U1 with U we obtain
an equation for calculation the aerodynamic power output of a wind turbine:
1
Protor = Arotor U 3 4a(1 a)2 . (2.15)
2

6
2. Foundations of Wind Turbines

2.2. Power coefficient CP


One of the main performance indicators to compare actual wind turbines is represented
by the non-dimensional power coefficient CP . The power coefficient is defined as the
quotient of the aerodynamic power output of the rotor and the theoretic power of the
wind which flows through the rotor area [5]. According to this, the power coefficient CP
can be expressed as:
PRotor PRotor
CP = = 1 , (2.16)
PW ind 2 Arotor U 3

with

CP = 4a(1 a)2 . (2.17)

Equation (2.17) shows the dependency of the power coefficient CP from the axial in-
duction factor a. By setting the derivative of Equation (2.17) with respect to a equal
to zero the maximum of CP can be obtained [14]. The power coefficient CP reaches its
maximum CP = 16/27 = 0.5926 at amax = 1/3. As stated before, this value is denoted
as the Betz limit. That means that even in perfect conditions a wind turbine can never
achieve a higher efficiency than 0.59%.

Using amax and Equations (2.13) and (2.14), the optimal ratio between the free stream
velocity before the disk U1 , the velocity at the rotor disk U2 and the velocity behind the
disk U4 can be stated:
2
U2 = U1 , (2.18)
3
and
1
U4 = U1 . (2.19)
3
From Equation (2.18) follows that a wind turbine should be designed and operated in
such way that the wind velocity at the rotor disk U2 should be as close as possible to
2/3 U1 to run in its optimal configuration.

As these states are based on the using of a simplified model which does not take
certain aerodynamic losses into account, the real maximum CP is smaller than the
CP = 16/27 = 0.59 calculated by Betz. Still, well designed modern wind turbines can
reach power coefficients close to CP = 0.5 in their optimal point of operation.

7
2. Foundations of Wind Turbines

2.3. Trust coefficient CT


Similar to the the power coefficient CP the non-dimensional trust coefficient CT can be
derived. Equation (2.9) stated the calculation of the trust force on the rotor with:
1
Trotor = A2 (U12 U42 ).
2
With Equations (2.13) and (2.14) and using U and Arotor we obtain:
1
Trotor = Arotor U 2 4a(1 a). (2.20)
2
The trust coefficient CT is defined as the quotient of the trust force acting on the rotor
disk and the momentum of the wind which flows through the rotor area [5]. CT can be
expressed as:
Trotor Trotor
CT = = 1 , (2.21)
Mwind 2 Arotor U 2

with

CT = 4a(1 a). (2.22)

Using amax = 1/3, we obtain a trust coefficient of CT = 8/9 at the maximum power
coefficient CP . Figure 2.2 illustrates the progression of CP and CT for several axial
induction factors. Please note that Betz theory is only valid for axial induction factor
a < 0.5.

Figure 2.2.: Stream tube with actuator disk model (source:[5])

8
2. Foundations of Wind Turbines

2.4. Tip speed ratio


The tip speed ratio (TSR) describes the ratio between the speed at the tips of the
blade and the wind speed. The tip speed ratio of a modern three bladed wind turbines
is usually between 6-8. The TSR can mathematically described as:
R
= , (2.23)
U
where U is the free stream wind velocity, R is the radius of the wind turbine rotor and
is the rotational speed of the rotor.

2.5. Lift and drag coefficients CL and CD


Modern horizontal wind turbine belong to the class of lift-driven wind turbines. Lift-
driven turbines produce the torque required for the rotation of the rotor by using lift
forces generated by the air flow around the rotor blades.

The physical explanation for the generation of lift forces can be found in the shape of
the used airfoils. Their geometry forces the streamlines to curve around the geometry
which results in an acceleration on the upper side of the airfoil due to the longer distance
the fluid has to cover.

This principle is illustrated in Figure 2.3.

Figure 2.3.: Streamlines around airfoil (source:[6], modified)

Caused by the acceleration of the fluid, the pressure decreases on the upper side of the
airfoil. At the same time, the flow on lower side increases, which leads to a higher
pressure compared to the upper side. This difference in pressure between suction and
pressure side of the airfoil leads to the generation of a lift force, acting perpendicular to
the incoming flow. Additional to the lift force, a drag force is generated when a fluid

9
2. Foundations of Wind Turbines

flows around an airfoil. Drag forces result mainly from viscous friction forces at the
surface and the pressure difference between the leading- and trailing-edge of the airfoil.
They point in flow direction [5]. Figure 2.4 shows lift and drag forces acting on an airfoil.

Figure 2.4.: Lift and drag forces acting on an airfoil (source:[5], modified)

In general the lift coefficient CL is defined as the quotient of the lift force FL and the
dynamic force [5] which can be expressed as

Lift force FL FL /l
CL = = 1 2
, (2.24)
Dynamic force 2 Urel C

where C is the chord length, l is a characteristic length (representing the airfoil span)
and Urel represents the relative wind velocity at the blade. The characteristic length is
required as the lift force acts on a surface.

Urel is the resulting velocity of combining the free stream wind velocity U and the
rotational velocity of the rotor blades r at radius r and can be expressed as
p
Urel = U 2 + (r)2 . (2.25)

Similar to equation (2.24) the drag coefficient CD can be defined as the quotient of the
drag force FD and the dynamic force [5]:

Drag force FD FD /l
CD = = 1 2
. (2.26)
Dynamic force 2 Urel C

Both lift and drag forces can be divided up into parts which act in direction of the
rotational axis and tangential to the rotational axis of the wind turbine rotor. The
tangential forces lead to the rotation of the wind turbine rotor whereas the forces, which
act parallel to the rotation axis, are denoted as axial forces.

10
2. Foundations of Wind Turbines

2.6. Pressure coefficient Cp


Another important key indicator to evaluate the performance of wind turbine blades is
the normalized pressure coefficient Cp . It is defined as the ratio between static pressure
and the dynamic pressure and can be expressed as
Static pressure p p
Cp = = 1 , (2.27)
Dynamic pressure 2 U
2

where p is the pressure in the free stream. For incompressible flow, the following
simplification is valid:

p = 0. (2.28)

If calculating the pressure coefficient Cp for an airfoil, the dynamic pressure is rep-
resented by the maximum pressure occurring at the profile. The point in which this
pressure maximum appears is called the stagnation point. By dividing each pressure
value of the surface points by the pressure at the stagnation point, a normalized pres-
sure coefficient is obtained which is often used to compare the performance of airfoils.
In those cases the pressure coefficient Cp is applied in a diagram over the dimensionless
chord length x/C.

Figure 2.5 shows such typical Cp diagram. Note that the y-axis is inverted.

Figure 2.5.: Typical Cp -curve of an airfoil

11
3. Foundations of Computational Fluid Dynamics

3. Foundations of Computational Fluid


Dynamics
3.1. Introduction
This chapter will introduce the reader to the foundations of Computational Fluid Dy-
namics (CFD). Computational Fluid Dynamics denote the numerical simulation of fluid
phenomena like flow around obstacles or combustion processes using computational re-
sources. Originally developed for the calculation of aerodynamics in the space program
in the USA in the early 50th, CFD tools are nowadays widely spread and used in both
industry and academic research.

Before introducing the CFD tools, a product developing process consisted of an expen-
sive iterative process of testing and improving prototypes until the expected parameters
could be met. Today, CFD tools enable the optimization using numerical simulations
before constructing prototypes. This results in a faster and more efficient developing
process which requires only few prototypes at the end. Additionally CFD enables the
user to investigate flow behaviour even in complex flow machines where conventional
measurements are difficult or not possible. An impressive example is the experimental
investigation of a pressure distribution inside an operating gas turbine. Being chal-
lenging due to the restricted possibilities of mounting sensors, such investigations are
expensive and limited in resolution. In contrast to that, CFD tools enable the control
of flow quantities at every point.

After decades of intensive development and validation, industry and research facilities
can resort to a growing number of reliable simulation tools on the market. All of those
simulation tools are based on the same mathematical, physical and numerical founda-
tions. Starting with a short derivation of the Navier-Stokes equations, most common
turbulence models, discretization approaches and methods for solving equations system
are presented and explained in this part of the work.

The focus of this chapter lies hereby on giving an overview and not on mathematical
completeness. Further information about each chapter can be found in the mentioned
literature in the corresponding sections.

12
3. Foundations of Computational Fluid Dynamics

3.2. Conservation laws


A first step of simulating flows is to characterize the behaviour of fluids using mathe-
matical equations. In the field of fluid dynamics, the characterization is based on the
conservation laws of mass, momentum and energy. In this chapter the conservation of
mass and momentum are used to derive transport equations which describe the flow
quantities.

3.2.1. Conservation of mass


The law for the conversation of mass requires that the rate of change of mass in an
infinitesimal small control volume (CV) has to be equal to the sum of the mass flow
through its faces [7], i.e.:

X
Change in mass = Net mass flow through the volume element faces

Figure 3.1 illustrates the mass flow through an infinitesimal small volume element.

Figure 3.1.: Mass flow through an infinitesimal volume element (source:[7]).

13
3. Foundations of Computational Fluid Dynamics

Following Figure 3.1, the equation of mass conservation, also called continuity equation,
can be mathematically described in Cartesian coordinates as follows:

  
u
dx dy dz = u u+ dx dy dz
|t {z } |
x
{z }
Change of mass in a CV Net mass flow in x direction
  
v
+ v v+ dy dx dz
y
| {z }
Net mass flow in y direction
  
w
+ w w+ dz dx dy. (3.1)
z
| {z }
Net mass flow in z direction

where represents the density of the fluid and u, v and w describe the velocity compo-
nents in x,y and z direction, respectively.

After simplifying by eliminating equal parts, we obtain:

( u) ( v) ( w)
+ + + = 0. (3.2)
t x y z

Considering the Einstein notation, Equation (3.2) can be expressed in a more convenient.
The right part of Equation (3.1) is denoted as convection transport.

ui
+ = 0. (3.3)
t x
|{z} |{z}i
Rate of change Convection transport

For incompressible fluids the following simplification can be made as the density of the
fluid is then considered as constant [15]:


= 0. (3.4)
t
Therefore the continuity equation for incompressible fluids can be expressed as:

ui
= 0. (3.5)
xi

14
3. Foundations of Computational Fluid Dynamics

3.2.2. Conservation of momentum


Additional equations describing fluid flows can be obtained by deriving the law for the
conversation of momentum [15]. Deriving the momentum balance for an infinitesimal
volume element in three dimensions delivers three transport equations, one equation for
each direction.

According to Newtons second law, the change of momentum has to be equal to the sum
of forces on a fluid particle. Applied on an infinitesimal volume, i.e.:

X
Change in momentum = Net momentum flow through the volume element
X
+ Net forces acting on the faces of the volume element
X
+ Body forces on the volume element.

The forces acting on the element faces are represented by shear and normal forces which
act on each surface on the volume element. The body forces represent forces which act
on the volume like gravity, centrifugal or Coriolis forces. Figure 3.2 illustrates the forces
acting on an infinitesimal volume element.

Figure 3.2.: Forces acting on an infinitesimal volume element (source:[7])

15
3. Foundations of Computational Fluid Dynamics

The the transport equation for the momentum conversation in the x direction can be
written as follows:

u  ( u u) 
dx dy dz = u u ( u u + dx) dy dz
| t {z } | {z x }
Change of momentum Net momentum flow in x direction
 ( u v) 
+ u v ( u v + dy) dx dz
y
| {z }
Net momentum flow in y direction
 ( u w) 
+ u w ( u w + dz) dx dy
| {z z }
Net momentum flow in z direction
+ kx dx dy dz
| {z }
Volume forces
 xx 
+ xx + (xx + dx) dy dz
| x
{z }
Net normal forces in flow direction
 yx 
+ yx + (yx + dy) dx dz
y
| {z }
Net shear forces in y direction
 zx 
+ zx + (zx + dz) dx dy. (3.6)
| z
{z }
Net shear forces in z direction

By eliminating equal parts, Equation (3.6) can be simplified to the following form:

( u) ( u u) ( u v) ( u w) xx yx zx
+ + + = kx + + + . (3.7)
t x y z x y z
Respectively, the equations for momentum conservation in y and z direction are written
as follows:

( v) ( v u) ( v v) ( v w) xy yy zy
+ + + = ky + + + , (3.8)
t x y z x y z

( w) ( w u) ( w v) ( w w) xz yz zz
+ + + = kz + + + . (3.9)
t x y z x y z

16
3. Foundations of Computational Fluid Dynamics

By expressing the pressure acting on a volume element through the normal forces acting
on the faces of the volume in non-viscous flow conditions, the following relation between
pressure and normal forces is obtained:

xx + yy + zz
p= . (3.10)
3

For viscous flows, the normal forces can now be described in terms of the surface tension
and the pressure:

xx = xx p, (3.11)
yy = yy p, (3.12)
zz = zz p. (3.13)

Replacing xx , yy and zz with xx , yy and zz in Equations (3.7),(3.8) and (3.9) leads


to:

( u) ( u2 ) ( u v) ( u w) p xx yx zx
+ + + = kx + + + ,
t x y z x x y z
(3.14)

( v) ( v u) ( v 2 ) ( v w) p xy yy zy
+ + + = ky + + + ,
t x y z y x y z
(3.15)

( w) ( w u) ( w v) ( w2 ) p xz yz zz
+ + + = kw + + + .
t x y z z x y z
(3.16)

By using the friction law by Stokes, which is an extension of the friction law by Newton,
the surface tension can be expressed in terms of the velocity gradients and the viscosity
of the fluid . This is only valid for Newtonian fluids.

 
u 2 u v w
xx =2 + + , (3.17)
x 3 x y z
 
v 2 u v w
yy =2 + + , (3.18)
y 3 x y z
 
w 2 u v w
zz =2 + + . (3.19)
z 3 x y z

17
3. Foundations of Computational Fluid Dynamics

Additionally, the following symmetry conditions can be used:

 
v u
xy = yx = + , (3.20)
x y
 
w v
yz = zy = + , (3.21)
y z
 
u w
zx = xz = + . (3.22)
z x

After simplifying Equations (3.14), (3.15) and (3.16) the Navier-Stokes equations for a
compressible flow and a Newtonian fluid can be written as:

    
u u u u p u 2
+u +v +w = kx + 2 ( ~v )
t x y z x x x 3
     
u v w u
+ + + + ,
y y x z x z
(3.23)

    
v v v v p u v
+u +v +w = ky + +
t x y z y x y x
     
v 2 v w
+ 2 ( ~v ) + + , (3.24)
y y 3 z z y

    
w w w w p w u
+u +v +w = kz + +
t x y z z x x z
     
v w w 2
+ + + 2 ( ~v ) . (3.25)
y z y z z 3

For incompressible fluids and neglecting volume forces (e.g. gravity), we obtain (in
Einstein notations):

ui ui 1 p
+ uj = + 2 ui . (3.26)
t xj xi

with the dynamic viscosity of the fluid = .

18
3. Foundations of Computational Fluid Dynamics

3.3. Modelling of turbulent flow


The derived equations for the conservation of momentum are known as the Navier-Stokes
equations. Combined with the continuity equation, they fully describe an incompressible
and Newtonian fluid flow in three dimensions. When considering compressible flow an
additional equation characterizing the fluid density is required. This equation can be
obtained by deriving the conservation law for energy. As five equations are available
for the five variables u, v, w, p and in the system, the equations could be solved by
conducting Direct Numerical Simulations (DNS).

When a fluid flows in parallel layers with no interaction between the layers we speak of
a laminar flow. In technical applications where fluid flows around geometry and high
flow velocities are investigated, these parallel flow layers often break up and start to
interact with each other. This interaction results in a local fluctuation of the velocity of
the fluid particles and causes the generation of eddies, the flow is then called turbulent.
The numerical solution of the so called turbulent flow requires very high computational
resources as the calculation of even the smallest eddies needs a high resolution both in
mesh and time scale. Therefore DNS methods are limited to simple flow cases with low
Reynolds numbers.

The non-dimensional Reynolds number, named after Osborne Reynolds, represents the
most important indicator for the characteristics of fluid flow conditions [5]. It is defined
as the quotient of the inertial forces and the viscous forces. In mathematical terms the
Reynolds number Re can be expressed as:
U l
Re = , (3.27)

where U is the flow velocity, l is a characteristic length which describes the scale of the
flow and represents the viscosity of the fluid.

To enable the estimation of flow characteristics, fluid flows with different Reynolds num-
bers were investigated by conducting experiments. Based on those results, flow char-
acteristics for simple flow cases as flows over plates or free stream flows can estimated
as turbulent or laminar on base of their Reynolds number. For a free stream flow, the
critical Reynolds number at which transition to turbulence is observed is estimated as
Recrit 105 [16].

Because of the big diameters of actual wind turbine rotors, flows in the field of wind
energy can reach Reynolds numbers of Re > 5 106 . In addition wind turbines operate
in the turbulent atmospheric boundary layer. It is obvious, that the fluid flow around
wind turbine blades can be considered as turbulent.

19
3. Foundations of Computational Fluid Dynamics

3.4. Reynolds Averaged Navier-Stokes Equations (RANS)


To avoid the use of DNS methods without neglecting turbulent phenomena, assump-
tions which reduce the computational effort required to simulate turbulent flow have to
be made. The majority of actual CFD simulations are conducted by solving the Reynolds
averaged Navier-Stokes equations (RANS) [7]. They offer an appropriate compromise
between accuracy and required computational effort. The RANS equations are based
on the Reynolds decomposition which separates flow quantities like velocities u, v, w or
pressure p into a mean and a fluctuating part [15]. While the mean parts can be solved
directly, the computational costly fluctuating parts are modelled by so called turbulence
models, which results in a severely lower calculation time compared to DNS simulations
[7].

As an example, the application of the Reynolds decomposition method is demonstrated


for the velocity ui :
i + u0i ,
ui = u (3.28)
with
T
1
Z
i =
u ui dt. (3.29)
T 0

In Equation (3.28) the velocity vector ~v is separated into its average part ~v and its
fluctuating part ~v 0 . As the time average of the fluctuating component is zero, only the
average components of the flow quantity remains. This can be mathematically expressed
as:
ui i
u
= . (3.30)
x x
By applying the Reynolds decomposition for the continuity equation for incompressible
flow we obtain:
0
ui i u
u 0
7
= +  i = 0. (3.31)
xi xi xi
For reason of clarity the momentum equations for incompressible represented by Equa-
tion (3.26) are stated again:
ui ui 1 p
+ uj = + 2 ui .
t xj xi
Based on Equation (3.28) we can apply the Reynolds decomposition on the momentum
equations term by term:
0
ui u 0
i u7
= + i , (3.32)
t t t

20
3. Foundations of Computational Fluid Dynamics

0 0
ui (
u + u0)
u
u u0
 u0
i i i i
uj uj + u0j )
= ( =u
j + u0j +uj i + u0j i , (3.33)
xj xj xj xj xj xj

0
p p 0
p7
= +  , (3.34)
xi xi xi

*0
2 ui = 2 u 2 u0i .

i + 
(3.35)


By combining the Reynolds averaged terms we obtain the Reynolds averaged Navier-
Stokes equations:

i
u i
u 1 p 0 0
+u
j = + 2 u
i uu . (3.36)
t xj xi xj i y
In comparison to Equation (3.26) we can observe a new term which is called the Reynold
stress term Rij [9]. The unknown term can be expressed as:

Rij = u0i u0j . (3.37)

The Reynold stress term brings new unknown variables (six variables for a three dimen-
sional case) and therefore a direct solution of the Navier-Stokes equation is not possible
any more. This is known as the closure problem [9].

3.5. Boussinesq assumption


In 1897, Joseph Boussinesq, a French mathematician and physicist, introduced the con-
cept of the turbulent eddy viscosity, which represents a solution for the closure problem
of the Reynolds averaged Navier-Stokes equations [17]. Similar to the friction law by
Newton, the so called Boussinesq assumption couples the Reynolds stresses with the
mean velocity gradients and two new unknown variables, the turbulent eddy viscosity
t and the turbulent kinetic energy k. The Reynold stress term in the RANS equations
can be replaced by [9]:
 
0 0 ui uj 2
ui uj = t + kij . (3.38)
xj xi 3
By defining the mean rate of strain tensor Sij as:
 
1 ui uj
Sij = + , (3.39)
2 xj ui

21
3. Foundations of Computational Fluid Dynamics

Equation (3.38) can be simplified to:


2
u0i u0j = 2t Sij kij , (3.40)
3
with the turbulent kinetic energy k being:
1
k = u2i . (3.41)
2
The last term of Equation (3.38) which involves the the turbulent kinetic energy k exists
for mathematical correctness of the Boussinesq assumption in cases of contraction [17],
but as the term is very small it is usually neglected [15]. Therefore we obtain for the
Reynolds stress the following expression:
 
ui uj
u0i u0j = t + . (3.42)
xj xi

For solving the turbulent eddy viscosity t , additional equation(s) are required. These
equations are provided by the introduction of turbulence models.

3.6. Turbulence models


In the last decades, a variety of different turbulence modelling approaches have be de-
veloped and tested. This section will present the most used turbulence models which
are based on the Boussinesq assumption, they are used in industry and research for
aerodynamical applications. The models described in this section are valid for Reynolds
numbers Re  1 [8].

3.6.1. The Spalart Allmaras turbulence model


The Spalart Allmaras turbulence model (SA) was published in the year 1994 by P. R.
Spalart and S. R. Allmaras [16]. The model was primarily developed for the use in the
aerospace industry and belongs to the group of one equation turbulence models. One
equation turbulence models use one transport equation to solve the turbulent quantities
which is t in the case of the SA model. The transport equation contains convective
and diffusive transport terms and expressions for the production and dissipation the
turbulence quantity. The Spalart Allmaras algorithm solves a single transport equation
which involves the modified turbulent eddy viscosity which is similar to the turbulent
eddy viscosity t . The relation between both is given by:

t = f1 , (3.43)

where
3
f1 = , (3.44)
3 + c31

22
3. Foundations of Computational Fluid Dynamics

with

= , (3.45)

where is the molecular viscosity of the fluid and c1 is a constant. Based on experi-
ments, P.R. Spalart and S.R. Allmaras derived a transport equation characterizing the
modified turbulent eddy viscosity .

The transport equation for the modified turbulent eddy viscosity can be expressed as:

2
   
1

+ uj =cb1 (1 ft2 ) S + ( + ) + cb2 2
t xj xj xj xi
 2
h cb1 i
cw1 fw1 2 ft2 , (3.46)
d
with the following meaning of its terms:

= Rate of increase,
t

uj = Convective transport,
xj
cb1 (1 ft2 ) S = Rate of production,
2
   
1
( + ) + cb2 2 = Diffusive transport,
xj xj xi
cb1 i 2
h  
cw1 fw1 2 ft2 = Rate of destruction.
d
The Spalart Allmaras model produces accurate results if attached, wall-bounded flows
with little separation are involved [8]. Due to the use of only one transport equation,
the turbulence model requires less computational effort than the two equation models.
Weaknesses of the model occur when simulating more complex cases involving separated
flows and decaying turbulence [16].

3.6.2. The Standard k- turbulence model


The standard k- turbulence model is one of the most used turbulence models in industry
applications for the simulation of turbulent flows involving high Reynold numbers [8].
It belongs to the so called two-equation turbulence models which solve two transport
equations. The k- model couples the turbulent eddy viscosity t with the turbulent
kinetic energy k and the dissipation rate  [9]. For each of the two new turbulent
quantities a separate transport equation is solved. The turbulent eddy viscosity t is
related to the turbulent kinetic energy k and the dissipation rate  by the following
equation:
k2
t = C k 1/2 l = C , (3.47)


23
3. Foundations of Computational Fluid Dynamics

with
k 3/2
l= , (3.48)

where l is the turbulent length scale which describes the size of the large eddies within
the flow and C is a constant.

Equation (3.49) states the transport equation for characterizing the turbulent kinetic
energy k. The derivation is given in [17].
 
k k ui T k
+ uj = ij + ( + ) . (3.49)
t xj xj xj k xj

The transport equation of the dissipation  is not based on the exact equation for the
dissipation  but includes certain approximations, which are based on experiments [8].
These modelling approximations result in a accurate behaviour of standard k- turbu-
lence model in certain cases, but can lead to inaccurate results for other cases [8]. The
transport equation for the dissipation  can be expressed as:

2
 
   ui T 
+ uj = C1 ij C2 + ( + ) . (3.50)
t xj k xj k xj  xj

The closure coefficients C1 , C2 , C , k and  can be found in the literature [17]. The
advantage of the standard k- turbulence model is the stability and speed of the model
[7]. Its delivers good results for general flow situations involving attached flow but has
problems predicting flow detachment due to pressure gradients near walls [7]. Usually
flow detachment is predicted too late.

3.6.3. The Wilcox k- turbulence model


Another two equation turbulence model is presented by the k- turbulence model, pub-
lished by Wilcox [17]. Wilcox introduced the specific dissipation rate instead of using
the dissipation rate . Wilcox coupled the the turbulent eddy viscosity t with the
turbulent kinetic energy k and the specific dissipation rate by the following equation:
k
T = . (3.51)

Similar to Equation (3.49), the turbulence kinetic energy k is as follows:
 
k k ui k
+ uj = ij k + ( + T ) . (3.52)
t xj xj xj xj

The transport equation for the specific dissipation rate is given by:
 
ui 2
+ uj = ij k + ( + T ) . (3.53)
t xj k xj xj xj

24
3. Foundations of Computational Fluid Dynamics

The closure coefficients , , , and can be found in the literature [17]. The
Wilcox-k- turbulence model produces accurate results near walls [8]. In comparison to
the Standard k- turbulence model, the prediction of flow detachment and the description
of occurring turbulence are much more accurate. The Weakness of this model is less
accurate predictions for the flow and turbulence quantities far from the walls [8]. For
those flow conditions the Standard k- turbulence model delivers better results [7].

3.6.4. The k- SST turbulence model


The Menter Shear-Stress-Transport turbulence model (k- SST) turbulence model is a
two-equation eddy-viscosity model, which is one of the most used models in industry and
research [7]. It combines the advantages of the previously described two equation models
[7]. Near walls the kSST model uses the k- approach, in regions far from the wall it
uses Standard k- turbulence model. Switching between those models is controlled by a
blending function.

The relation between the the turbulent eddy viscosity t with the turbulent kinetic
energy k and the specific dissipation rate is given by the following equation where F 2
is a blending function:
1 k
t = , (3.54)
max(a1 , SF2 )

where 1 and a1 are constants and S is the strain tensor.

The turbulent kinetic Energy k is characterized by the transport equation of the Wilcox
k- turbulence model:
 
k k ui k
+ uj = ij k + ( + T ) . (3.55)
t xj xj xj xj

The transport equation for the specific dissipation rate is similar to the Wilcox k-
turbulence model [15] but uses the blending function F 1 to switch between k- and k-
models.
 
2 1 k 2
+ uj = S + 2(1 F1 )2 + ( + T ) . (3.56)
t xj xi xi xj xj

More details about the blending functions F 1, F 2 and the model constants can be found
in [18]. As the k- SST model is based on both the k- and the k- turbulence model it
delivers accurate results both near and far from walls [8]. On the other hand, the model
can be considered as more complex and therefore it requires more computational time
than simple two equation models.

25
3. Foundations of Computational Fluid Dynamics

3.7. Wall functions


The previous described turbulence models are valid for Reynolds numbers Re  1. Es-
pecially in the boundary layers near wall geometry the Reynolds number gets small.
In addition, most of the turbulent phenomena is generated near walls. Therefore the
question of turbulence modeling near walls is of importance.

One possibility to take the generation of turbulence in near wall layers into account is
the use of wall functions. Several experiments involving fully turbulent flow over walls
showed, that the dimensionless velocity distribution u+ (y + ) can be considered as similar
in many cases [8]. The dimensionless velocity distribution u+ (y + ) near walls can be
described by the so called turbulent Couette flow. The nondimensionalization of the
coordinate normal to the wall y and the mean velocity parallel to the wall u can be
reached by using the wall shear stress w and the velocity of the wall shear stress u [8].
The velocity of the wall shear stress can be expressed as:
w
u = , (3.57)

thus for y + and u+ it is valid:


y u
y+ = , (3.58)


u
u+ = . (3.59)

Figure 3.3 on the next page illustrates the Couette flow near a wall. The flow can
be divided up into three main areas. The part from the wall until y + 5 is called
viscous sub layer. The influence of the viscosity of the fluid in this area is large and the
progression of the velocity can be considered as linear with:

y + = u+ . (3.60)

The area of the Couette flow between y + 5 and y + 70 is denoted as the transition
part. In this flow area the influence of the fluid viscosity decreases. The progression of
the velocity can be expressed as:
1
y+ = ln(y + ) + C, (3.61)

where is the Karman constant and C describes influence of the wall roughness on the
velocity. Equation (3.61) is denoted as the logarithmic wall law.

26
3. Foundations of Computational Fluid Dynamics

Figure 3.3.: Couette flow near a wall (source:[8])

With y + > 70, the flow can be described by the characteristics of the fully turbulent
Couette flow. Turbulence models for high Reynolds numbers are coupled with wall func-
tions to enable the modeling of turbulence for both high Reynolds numbers far from walls
and low Reynolds number near walls. If the height of the first mesh cell corresponds to
a normalized wall distance between y + 30 and y + 300, the use of wall functions
can be used as an appropriate method to model the generation of turbulence near walls
[8]. If the normalized wall distance of y + < 20 is selected, the logarithmic law cannot be
applied and therefore the use of wall functions in this case would lead to wrong results [8].

To estimate the required first cell height y for obtaining a certain y + using Equation
(3.58) the wall shear stress w has to be calculated first. Based on the Reynolds number
of the flow Re and the Schlichting skin-friction correlation which can be expressed as:

Cf = [2log10 (Re) 0.65]2.3 , (3.62)


the wall shear stress w can be obtained by:
1
w = Cf U 2 , (3.63)
2
where U is the freestream velocity.

If a more accurate turbulence modelling near the wall is required, special turbulence
models for low Reynolds numbers should be used. As they require normalized wall
distances of y + 1 to work properly [8], low-Re-models are not used within this work.

27
3. Foundations of Computational Fluid Dynamics

3.8. Simplifications of the Navier-Stokes equations


Beside the use of the RANS approach to model turbulent flow, there are other assump-
tions which can be considered to simplify and therefore speed up solving the Navier-
Stokes equations. In this section, relevant simplifications will be presented.

3.8.1. Incompressible flows


A valid assumptions for several aerodynamic applications is the consideration of an
incompressible flow. As stated in section 3.2.1, the density of a fluid can be considered
as constant [15]. Therefore only four instead of five flow variables have to be calculated.
This results in a considerable speed up of the solving process. The assumption is in
general valid for most liquids and gases moving with a flow velocity of uf luid 0.3 Ma
[19]. The Mach number M a is defined as the quotient of the flow velocity u and the
speed of sound c and can be expressed as [15]:
uf luid
Ma = . (3.64)
c
Respectively, a fluid can be considered as incompressible until a flow velocity of uf luid
100m/s. Higher flow velocities can generate subsonic effects, which affects the fluid
density [19]. Because of noise issues and the generation of additional loads resulting
from subsonic effects, the manufacturers limit the rotational speed of big wind turbines
to avoid those effects. Therefore in the field of wind energy, the assumption of incom-
pressible fluids is usually valid. For reasons of clarity the equation of continuity and the
Navier-Stokes equations for incompressible flow are stated again in their incompressible
form:
ui ui 1 p
+ uj = + 2 ui . (3.65)
t xj xi

ui
= 0. (3.66)
xi

3.8.2. Euler flow


In addition to the assumption of an incompressible fluid, an in-viscid flow can be con-
sidered [7]. This assumption is generally valid in cases where viscous forces are small in
comparison to inertial forces [9]. As consequence of an in-viscid flow, the viscous terms
of the momentum equations can be neglected. By doing so we obtain the so called Euler
flow equation for incompressible flow which can be expressed as:
ui ui 1 p
+ uj = . (3.67)
t xj xi
As no frictional forces of the fluid are taken into account, no turbulent phenomena occur
and therefore the mesh resolution can be reduced which results in a much smaller com-
putational effort [15]. Especially if testing the aerodynamic behavior of several geometry

28
3. Foundations of Computational Fluid Dynamics

variations, the conduction of simulations solving the Euler flow equations is often used
to get a first, fast impression to select promising geometry for more detailed simulations
[7]. In the field of wind energy, Euler flow simulations can be used to roughly estimate
the lift coefficients of airfoils. As the frictional forces are neglected, drag forces cannot
be predicted.

As detachments of flows can not be predicted by this model, this method is not used for
accurate simulations of wind turbines.

3.8.3. Potential flow


A further possibility to simplify the Navier-stokes equations is based on the Euler flow
equations. Additionally to the assumption of an in-viscous fluid, an irrotational velocity
field can be considered [15]. In this case the velocity components u, v and w can be
replaced by the scalar potential which is defined as:
 1

[u v w] = . (3.68)
x y z

The assumption reduces the four flow equations for incompressible flow to only one
equation [9]. The following equation is known as the Potential flow equation for incom-
pressible fluid:

0 = (). (3.69)

As only one flow equation has to be solved, the calculation of potential flows takes (even
for very big meshes) only very little time. Due to the simplifications, the results of
potential flow simulations are inaccurate [15]. Therefore they are only used to provide
reasonable initial flow fields for RANS simulations which leads to a faster and more
stable conversion process of the simulations.

29
3. Foundations of Computational Fluid Dynamics

3.9. Discretization
The previously derived flow equations describe the flow by using differential partial equa-
tions and can only be analytically solved for certain simplified cases [7]. Therefore it
is necessary to approximate the solutions for the equation systems numerically. As the
flow equations describe the flow variables at an infinite number of coordinates (space
and time) and only algebraic equations systems can be numerically solved, the equations
have to be expressed on a finite number of computational points. In other words: They
have to be discretized.

It is necessary to separate between two kinds of discretization; the spatial and the tem-
poral discretization. The discretization is used to transform the local derivatives within
the partial differential flow equations into finite values as described in the next chapter.
Applying the spatial discretization results in the generation of a grid or mesh describing
the domain at discrete points. The temporal discretization is used to transform the tem-
poral derivatives into finite time steps and is only needed when simulating an unsteady
or time-dependent flow. An example for a time-dependent solution is the simulation of a
wind turbine where the effect of a blade passing by the tower is being investigated. If one
is interested in simulating a stationary flow, the temporal derivatives can be neglected.

In the next sections, important methods for the discretization of the partial differential
equations describing the flow in time and space are presented.

3.9.1. Spatial discretization


For the discretization of partial differential equations three main procedures can be
used. The Finite-Differences method (FDM), the Finite-Element method (FEM) and the
Finite-Volume method (FVM). As for CFD applications almost only the Finite-Volume
method is used [15], the Finite-Differences method and the Finite-Element methods will
not be described within this work.

3.9.1.1. The Finite Volume method (FVM)


The finite Volume method divides a domain into a finite number of volumes, each with
one control node, in which the discrete calculated values are saved [9]. After this, the
partial differential equations are integrated over each control volume and the volume
integrals are transformed into surface integrals using the Gauss theorem [9].

An equation system is obtained which balances the flux over the surfaces of each control
volume and saves the average values of the flow quantities in the control node of each
single cell. These average values can now be projected to the cell surfaces using certain
approximation methods, which is required to calculate the fluxes through the cell faces
[9]. Advantage of this method is the possibility to use it with both structured and un-
structured meshes.

30
3. Foundations of Computational Fluid Dynamics

Figure 3.4 illustrates a two dimensional domain, divided into finite volumes (faces)

Figure 3.4.: Two dimensional domain divided into a finite number of volumes (source:[9])

The grid points with capital letters represent the calculations nodes. The small letters
represent the centres of the faces between two control volumes. By using this example
grid some of the important local discretization schemes for the finite volume method will
be derived.

3.9.1.2. Upwind Interpolation


The simplest discretization scheme is the so called upwind interpolation scheme [9].
Considering a flux x where x represents the local index (e.g. e or E) the upwind
interpolation scheme can be expressed as:
(
P if (v n)e > 0
e = . (3.70)
E if (v n)e < 0

Based on Figure 3.4, the product ~v ne is positive if the velocity vector ~v points in the
positive x direction. In this case the flux e at point e would be approximated by using
the flux at point P, P . This approximation would then be called backward difference [9]
because in reference to the direction of the x axis, the point P lies behind point e. If the
vector ~v would be negative in respect to the x-axis, the product ~v ne would be negative
and the flux e would be equal to the flux of point E, which is E . This approximation
is called forward difference. To investigate the accuracy of this approximation, Taylor
series expansion around point P is used. This gives:

(xe xp )2 2
   

e = P + (xe xp ) + + H. (3.71)
x P 2 x2 P

31
3. Foundations of Computational Fluid Dynamics

In Equation (3.71) the term H denotes the higher order terms. As the Upwind Inter-
polation takes only the first term on the right hand side into account, it is a first-order
method. The dominant truncation error term is of first order and numerically diffusive
[9]; it is expressed as follows:
 
d
fe = e . (3.72)
x e

The main advantage of this discretization method is that it does not produce oscillating
results. Being numerically diffusive, this method is not able to capture peaks of the
variables [9]. This is the reason why this method should only be used with a very fine
mesh.

3.9.1.3. Linear Interpolation


A more accurate method to approximate the values on the cell faces of the control
volume is Linear Interpolation. This approximation method uses a linear connection of
the nearest nodes to interpolate the values instead of using only the upwind value. The
interpolation is conducted by using a linearization factor which is based on the distance
between the points used for the interpolation [9]. Considering a positive velocity vector
~v and based on Figure 3.4, the linear interpolation method can be expressed as:

e = E e + P (1 e ) . (3.73)

The linearization factor e is defined as:


xe xP
e = . (3.74)
xE xP
Applying Taylor series expansion to investigate the accuracy of this approximation gives:

(xe xp )(xE xP ) 2
 
e = E e + P (1 e ) + + H. (3.75)
2 x2 P

Taylor series expansions shows that the accuracy of Linear Interpolation is of second
order. The truncation term shows the proportionally to the square of the grid spacing.
The Linear Interpolation method is the simplest second order method and its use is
widely spread.

3.9.1.4. Quadratic Upwind Interpolation


A further improvement concerning the accuracy of the approximation method can be
obtained by using a parabola instead of a straight line. The Quadratic Upwind Interpo-
lation includes a third point to approximate the values on the cell faces. The method
can be mathematically expressed as:

e = P + g1 (E P ) + g2 (P W ). (3.76)

32
3. Foundations of Computational Fluid Dynamics

For the parametrization of the parabola the factors g1 and g2 are used [9]. They are
based on the distance of the points from each other. The factors are expressed as follows:

(xe xP )(xe xW )
g1 = , (3.77)
(xE xP )(xE xW

(xe xP )(xD xe )
g2 = . (3.78)
(xP xW )(xE xW )

By considering an equal distance between the involved grid point and applying Taylor
series expansion to investigate the accuracy of this model we obtain the following:

3(x)3 3
 
6 3 1
e = P + E W + H. (3.79)
8 8 8 48 x3 P

The truncation term is of third order. This makes this method more accurate, but as a
third grid point is taken into account also increases the numerical effort which is required
for solving the discretized equations [9].

3.9.2. Temporal discretization


When conducting simulations involving unsteady or time dependent flow, the temporal
derivatives within the flow equations have to be also discretized. In other words, time
has to be divided into discrete time steps at which the flow quantities are calculated.
Like for the spatial (local) discretization, several methods, which can be divided into
two classes, exist for this process.

3.9.2.1. Explicit Discretization


The first class of temporal discretization methods are explicit discretization methods.
Explicit methods calculate the state of a system at a later time step on base of the state
of the system at the current time. The simplest explicit time scheme is the explicit Euler
method [9]. Considering an equation of the following form:


= f (, t). (3.80)
t
By using Taylor series expansion on Equation (3.80) the time derivative at time (n + 1)
can be expressed as:

n+1 n


= + LTE(4t), (3.81)
t n+1
4t

where LTE is the Local Truncation Error.

33
3. Foundations of Computational Fluid Dynamics

When combining Equations (3.80) and (3.81), an expression for the explicit or forward
Euler method is obtained:

n+1 = n + f (tn , n ) 4 t. (3.82)

This approach belongs to the class of the so called two level methods, as two levels
of time are involved (n, n + 1) [9]. As the local truncation error is of first order, the
Euler method has an accuracy of first order. Because the values on the right hand side
of Equation (3.82) are already known, this method is fast and easy to implement. The
smaller the time step 4t is chosen, the more accurate the solutions are approximated.
The main problem of this method is, that the explicit Euler method can become unstable
if the time step is chosen too large. To estimate the stability of the time descritization
methods the Courant-Friedrichs-Levy number is used. The so called Courant number
describes the ratio of the time step and the cell size, coupled with the flow velocity in a
cell [9]. In a mathematical way, the Courant number can be expressed as:

4t
CF L = u . (3.83)
4x
For the stability of explicit methods, it is of great importance to keep the Courant number
in each cell of the mesh smaller than one [9]. A possibility to improve the stability
behavior of the explicit Euler method, similar to the local discretization schemes, is to
include one point of time into the discretization scheme. This method, known as the
leapfrog discretization scheme, can be expressed as:

n+1 = n1 + 2 f (tn , n ) 4 t. (3.84)

As an additional point the previous time (n1 ) is taken into account, this method
belongs to the so called Multi-Point Method [9] and its accuracy is of second order.
Higher order explicit time schemes which provide more accurate results are for example
the Runge-Kutta methods [9], which will not be described in this work.

3.9.2.2. Implicit Discretization


The second class of time discretization methods is denoted as the implicit discretization
class. In contrast to the explicit methods, the implicit approaches calculate the state
of a system at a later time step based on the slope of the future value. The simplest
implicit time discretization method is the implicit or backward Euler method which is
stated below:

n+1 = n + f (tn , n+1 ) 4 t. (3.85)

As the values of the next time step are not known yet, they have to be handled as addi-
tional unknown variables of the equation system which have to be solved first. Equation
(3.85) contains two unknown terms, to obtain enough independent equations the fu-
ture values for all grid points have to be calculated in one equation system [9]. As this

34
3. Foundations of Computational Fluid Dynamics

solving process requires additional computational effort, implicit methods like the im-
plicit Euler method are slower at solving one time step compared to the explicit ones.
The big advantage of the implicit methods however is that they are not sensitive to
the size of the chosen time step. Therefore lager time step can be selected without the
risk of an unstable solution process [7]. This makes implicit schemes often faster than
explicit ones, as they are slower per time step but need less time steps for convergence [9].

Similar to the explicit methods, also implicit methods of higher order including more
than one point of time, exist. Additional information about the schemes can be found
in the literature [9].

3.10. Grid generation


Then discretizing the flow equations the domain is divided into a finite number of cal-
culation nodes at which the flow variables are calculated [9]. The generation of these
calculations nodes is called grid or mesh generation. The grid generation is one the
most important steps of conducting a CFD simulation. If the grid is too coarse, flow
phenomena like turbulence or detachment of flow cannot be correctly predicted [7]. Is
the mesh too fine, the calculation time and needed computational effort become too
high. Therefore it is necessary to find a compromise depending on the actual aim of the
simulation and the degree of approximation seeked.

For mesh generation, a variety of software packages and meshing strategies are available.
While the mesh generation for simple geometries can be done by automated algorithms
within a few minutes, the mesh generation for complex geometries requires still a lot of
experience to manually adapt the meshing parameters. The meshing algorithms used
by the meshing programs are based on the use of certain grid types or on combination
of these. In the following chapter, the most important and common grid types will be
presented and explained with their main advantages and disadvantages.

3.10.1. Structured grids


Structured grids consist of hexahedron cells and exhibit the feature that the grid lines
do not cross each other. In general structured grids can offer a very good mesh quality,
but are difficult to generate, especially when complex geometry is to be meshed. It is
necessary to separate between several types of structured meshes.

3.10.1.1. Cartesian structured grids


The simplest type of structured mesh is the Cartesian structured grid. Cartesian grids
are simple and fast to generate (for simple geometries) and the mesh cells have a very
high quality [7]. Figure 3.5 illustrates such a Cartesian grid.

35
3. Foundations of Computational Fluid Dynamics

Figure 3.5.: Cartesian structured grid (source:[8])

Disadvantage of this grid type is that it is not possible to change the distribution of cells
within the mesh and it is only possible to mesh very simple geometries with this grid
type. A local refinement can only be obtained by refining the global mesh. Therefore
this grid type is rarely used.

3.10.1.2. Rectangular structured grids


Another type of structured grids are rectangular structured grids. Their rectangular
coordinate systems allows the distribution of cells using functions or grading coefficients.
Figure 3.6 shows an example rectangular grid.

Figure 3.6.: Rectangular structured grid (source:[8])

As illustrated in Figure 3.6, it is possible to refine certain areas of the mesh by using this
structured type. Still, it is not possible to capture complex geometry with this mesh type
because the lines of the mesh are only horizontal and vertical. The rectangular structured
grid type is mostly used within block structured grids which will be introduced later in
this chapter.

3.10.1.3. Oblique-angled structured grids


The main disadvantage of the previous mentioned structured grid types, which is the
limited ability to capture complex geometry, can be improved by using oblique-angled

36
3. Foundations of Computational Fluid Dynamics

coordinate systems, which can be adopted to complex geometry. There are three different
types of oblique-angled structured grids. H-grids, O- grids and C-grids. Each of those
types has their area of application. Figure 3.7 shows the structure of an example H-grid.

Figure 3.7.: Structured H-grid (source:[8])

The H-grid is simple to generate and can be adopted to complex geometries. The
disadvantage of this type is that round shapes like leading edges of thick airfoils are
difficult to reproduce [8]. Another important oblique-angled structured grid type is the
C-grid. The main application of C-grids are geometries like airfoils (see Figure 3.8).

Figure 3.8.: Structured C-grid (source:[8])

By using this grid type it is possible to capture and refine both trailing- and leading-edge
and the wake area of airfoils [7]. The disadvantage is not being able to use C-grids in
meshes were periodicy is required, as for the meshing of a full wind turbine rotor it is
required that the mesh boundaries in front of and behind an airfoil are equal.The last
important oblique-angled grid type is the O-grid. This type is useful for the meshing of
round geometries but can also be adopted to partly sharp shapes like airfoils. Figure 3.9
shows an O-grid used for the meshing of a round shape.

Figure 3.9.: Structured O-grid (source:[8])

37
3. Foundations of Computational Fluid Dynamics

3.10.1.4. Block structured grids


As coordinate systems can be transformed into other coordinate systems, it is possible
to combine the previous mentioned grid types to generate the so called block structured
grids [7]. The approach of block structured grids is the standard method in industry and
research to generate high quality structured meshes. Those grids combine the advantages
of different structured grid types like rectangular grids and oblique-angled grids while
avoiding there particular disadvantages. Figure 3.10 illustrates the use of an Cartesian
and an O-grid within a combined mesh.

Figure 3.10.: Block structured grid (source:[8])

The generation of structured grids around complex geometries is a challenge and only few
programs can perform this automatically with a high quality output. In most cases those
grids have to be created by experienced users which makes the generation of structured
grids expensive.

3.10.2. Unstructured grids


An alternative to structured grids are unstructured grids. For those grids mostly tetra-
hedral mesh cells are used, but also quadratic shaped cells are possible. Main advantage
of this method is the fast mesh generation even around complex shapes. By using
automated algorithms, even big size meshes can be generated within minutes with only
little user input. This makes unstructured meshes ideal for the use for industry purposes.

Disadvantage of this method is the lower cell quality compared to structured grids[7].
Therefore in some cases structured grids can lead to more accurate results and a faster
convergence. One example for those cases is the conduction of Large Eddy Simulations
(LES), which require a high cell quality. Further details about LES simulations can be
found in the literature e.g. [20].

38
3. Foundations of Computational Fluid Dynamics

Figure 3.11 illustrates an unstructured grid around an airfoil geometry.

Figure 3.11.: Unstructured grid around an airfoil (source:[8])

3.10.3. Hybrid grids


A relatively new approach in mesh generation is the use of hybrid grids, which combine
structured and unstructured grids [8]. By using these grids, it is possible to capture
geometry details using high quality structured cells and to use unstructured cells for less
important areas of the mesh. Figure 3.12 shows a hybrid grid around an airfoil.

Figure 3.12.: Hybrid grid around an airfoil (source:[8])

The hybrid mesh approach presents a compromise between high quality cells and fast
grid generation [8]. The disadvantage of this method is that only few meshing tools on
the market are able to reliably generate good quality hybrid meshes. Still, especially for
the meshing of wind turbines this method will play a more important role in the future.

39
3. Foundations of Computational Fluid Dynamics

3.11. Algebraic equations solution methods


Independent of the used solver algorithm, a certain number of algebraic equation systems
has to be solved to approximate the solution of the flow equations. In this chapter,
the basic methods to solve algebraic equation systems will be introduced. The focus
of this section lies in giving an overview of the existing solution methods and not on
mathematical completeness.

3.11.1. Gaussian Elimination method


The Gaussian Elimination is the basic method to solve linear equations [9]. Named after
Carl Friedrich Gauss, it is based on the reduction of large equation systems to smaller
ones without changing the variable names. Lets consider an equation system of n linear
equations in matrix form:

A ~x = ~b, (3.86)

with

a11 a12 ... a1n x1 b1
a21 a22 ... a2n x2 b2

.. .. .. .. = .. . (3.87)

..
. . . . . .
an1 an2 . . . ann xn bn

The Gaussian Elimination Method works in two steps. In the first step, called the
forward elimination, the matrix A is transformed into an upper triangle matrix U . This
is done by eliminating the variables in a way that the matrix U is obtained as follows:

a11 a12 . . . a1n
0 a22 . . . a2n
U = . .. .. . (3.88)

.. ..
. . .
0 0 ... ann

At the end of this stage a solution for xn can be obtained:


bn
xn = . (3.89)
ann
Using this result, the second step, the so called backwards substitution, can be con-
ducted, in which one equation of (3.88) after the other can be solved. One of the major
disadvantages of this basic method is the high number of operations which are needed to
solve an equation system. To solve a system of n equations, the Gauss algorithm needs
n3 /3 operations [9]. Most of this effort is used for the forward elimination, while the
backward substitution can be considered as rather effective [9].

40
3. Foundations of Computational Fluid Dynamics

3.11.2. LU Decomposition
One way to improve the Gaussian Elimination method is to use LU Decomposition [9].
This methods improves the forward elimination procedure of the previously described
Gaussian method. By decomposing the matrix A (see Equation (3.86)) into an upper
triangle matrix U and a lower triangle matrix L, matrix A can be expressed as:

A = L U. (3.90)

The matrix L is defined in such way that it contains ones on its diagonal [9]. Therefore
the upper matrix U is same as the upper matrix we would receive from the forward
elimination of the Gaussian Elimination method. Defining a vector:

U ~x = ~q, (3.91)

we can transform Equation (3.86) into:

L ~q = ~b. (3.92)

After solving of ~q, in a similar matter like the backward substitution, but starting from
the first line instead of starting from the last line, the vector ~x can be calculated [9]. The
advantage of this method is the independence of the factorisation process from the vec-
tor ~b. Therefore considerable improvements in calculation speed can be obtained when
calculating algebraic equation systems with the same matrix A, but a different vector ~b.

Both, the Gaussian Elimination method and the LU Decomposition method are direct
methods. This means that they calculate the values directly without any approximation
error caused by the solving method. As the matrices which have to be solved in the field
of CFD are often sparse equation systems, direct methods are not very effective [9].

3.11.3. Jacobi Iteration method


As the discretization of the flow equations is not exact, it is not a requirement to use
exact solving methods, because the discretization errors are usually larger than the er-
ror caused by non direct solving methods. Therefore in the field of CFD often iterative
methods are used for solving partial differential equations. They can be more effective
than direct methods which can result in faster calculation times [9]. In contrast to that,
the results obtained by iterative methods are not exact. The Jacobi iteration method is
one of the iterative methods of solving a matrix equations. It requires that the matrix
contains no zeros along its main diagonal.

41
3. Foundations of Computational Fluid Dynamics

When considering a linear equation system as stated by Equation (3.86) and Equation
(3.87), the matrix A can be divided into a diagonal matrix D, a lower triangular matrix
L and an upper triangular matrix U as follows:

A = L + D + U, (3.93)

where:

0 0 ... 0 a11 0 . . . 0 0 a12 ... a1n
a21 0 ... 0 0 a22 . . . 0 0 0 ... a2n
A= . .. .. + .. .. .. + .. .. .. . (3.94)

.. .. .. ..
. . . . . . . . . . .
an1 an2 . . . 0 0 0 ... ann 0 0 ... 0
| {z } | {z } | {z }
L D U

Based on Equations (3.93) and (3.94), the Jacobian method can be expressed as:

xk+1 = D1 (b (L + U )xk ). (3.95)

Starting with an estimated initial value, the process is iterated until the changes of
the calculated values between the iterations gets smaller than a defined value. The
difference between those values is called residual and is used to evaluate the convergence
of a solution process[8]. The advantage of the Jacobi method is that the algorithm is
stable and faster for sparse matrices in comparison to direct methods. The disadvantage
is that the computational effort needed for solving full matrices is comparable high and
the method can be considered as inflexible as it works only for certain types of matrices.

3.11.4. Gauss-Seidel method


The Gauss-Seidel Method presents a method which is similar to the previously described
Jacobi Iteration Method. Based on Equations (3.93) and (3.94), the method can be
expressed as:

 
k 1 k1
x = (D L) U x +b . (3.96)

In contrast to the Jacobi method, this method solves the equations sequentially after
each other and uses previous calculated results. This makes the algorithm faster in
comparison to the Jacobi Method. The dependence of the Gauss-Seidel method on
previously calculated values and its non-readiness for parallelisation, results in a slow
solution process for large matrix systems [9].

3.11.5. Gradient-based and multi-grid solution methods


In addition to the previously described methods, more complicated solution methods
like the Biconjugate Gradient method (BiCG) or the Generalised Geometric/Algebraic

42
3. Foundations of Computational Fluid Dynamics

Multi-Grid method (GAMG) are often used in the field of CFD [9]. While the Biconju-
gate Gradient method converts the original equation system into a minimizing problem,
the GAMG algorithm merges cells to obtain a solution for a coarse version of the mesh
which can then be used as an initial value for solving on the original grid. Unlike the Ja-
cobi or the Gaussian Elimination method, these algorithms can be considered as rather
complex. Therefore these methods will not be explained more in detail within this work.
More details about them can be found in the literature e.g. [9].

3.12. Solution algorithms


The purpose of this short section is to introduce the reader to solution algorithms which
are used for CFD simulations. Solution algorithms for the Navier-Stokes equations can
in general be divided into two groups. The pressure-based and the density-based algo-
rithms [8]. Pressure-based algorithms are normally used for incompressible flow, whereas
density-based algorithms are usually used for compressible flow [8]. Additionally, solu-
tion algorithms can be divided into coupled and sequential ones. Coupled solvers use
one equation system for all variables to solve the equations and are mainly used for
strongly coupled flows like compressible cases [8]. In contrast to that, sequential solvers
use separate equations system for each flow variable. Their usual area of application are
incompressible flows.

The iterative process of a pressure-based solution algorithm can in general be expressed


as:

1. Initial values un , v n , wn and pn are known at time n, estimate p by using p = pn .

2. Solve for the velocities u , v , w by using p .

3. Use the pressure correction to calculate pn+1 .

4. Use pn+1 to calculate un+1 , v n+1 , wn+1 .

As sequential algorithms solve each flow variable for itself, the following problem occurs:
whereas the velocities u,v and w are described by the momentum conservation equations,
the pressure p is only described by source terms within the Navier-Stokes equations.
Therefore in the first step of the iterative process, the pressure p is estimated on base
of the calculated value pn . Using p , the velocity components u , v and w can be
solved using the momentum equations. Based on the continuity equation, a pressure
correction equation can be derived which corrects the estimated pressure value p to the
correct value pn+1 . This corrected pressure value is then used to correct the velocity
components. The values for un+1 , v n+1 and wn+1 are obtained [8].

43
3. Foundations of Computational Fluid Dynamics

3.12.0.1. SIMPLE
The SIMPLE (Semi-Implicit Method for Pressure-Linked Equations) algorithm is one of
the most used solvers for the Navier-Stokes equations in CFD applications. The algo-
rithm belongs to the class of pressure-based sequential solvers. Both ANSYS CFX and
OpenFOAM solvers for incompressible flow are based on this algorithm [21], [22].

SIMPLE is similar to the previously described iterative process of pressure-based solution


algorithm but differs mainly in one detail. The SIMPLE algorithm uses under-relaxation
of the pressure and velocity variables to improve the convergence behaviour of the so-
lution process [8]. Respectively, the calculation of the flow quantities at the time n + 1
can be expressed as:
 
n+1)
un+1
i = u ui + ui + (1 u )uni , (3.97)

pn+1 = pn + p pn+1 , (3.98)

where u represents the relaxation factor for the velocity and p is the relaxation factor
for the pressure. Within both ANSYS CFX and OpenFOAM, these factors can be
defined as part of the simulation set-up.

3.12.0.2. PISO and PIMPLE


The PISO (Pressure-Implicit Split-Operator) solution algorithm is another pressure-
based sequential solver and is used by some solvers for unsteady simulations within
OpenFOAM. The PISO algorithm is similar to SIMPLE but does not apply under-
relaxation. Instead a second correction loop for pressure and velocity is used to improve
the convergence behaviour of the solution process [8]. The PIMPLE algorithm combines
the PISO and SIMPLE algorithm. Also used for transient simulations in OpenFOAM,
it applies under-relaxations and additionally uses multiple correction loops.

44
4. Simulation Strategy

4. Simulation Strategy
In this chapter the chosen simulation approach is presented. Starting with a description
of the simulated wind turbine, the meshing strategy will be explained and an overview
over the conducted simulations will be given.

4.1. Turbine specification


For the conducted simulations of a complete wind turbine a recently designed research
turbine has been selected. The turbine was developed at the Fraunhofer IWES in Bre-
merhaven, Germany. Load calculations for this turbine were conducted using the wind
turbine design tool BLADED [23].

The rated power output of the turbine is given with 2.5 MW, the rotor diameter amounts
to 100 m. The turbine specifications are stated in Table 4.1.

Turbine specifications
Rated power output 2.5 MW
Rated aerodynamic power output 2.7 MW
Rated generator torque 16692 Nm
Rated wind speed 10.8 m/s
Rated tip speed 68 m/s
Rated tip speed ratio 6.3
Rated rotor speed 13 rpm
Rotor diameter 100 m
Hub flange diameter 3m
Hub height 90 m
Blade length 48.5 m
Tilt angle 3

Table 4.1.: Turbine specifications

According to the calculation in BLADED, the rated aerodynamic power output is given
with 2.7 MW. This value was planned to validate the later conducted simulations. Un-
fortunately, the blade geometry of the wind turbine was modified to optimize the wind
turbine performance. Due to a misunderstanding, this came out after the meshing pro-
cess was completed and the CFD simulations were started. Therefore the calculated
aerodynamic power of the wind turbine can not be used to validate the simulation re-
sults. However, the calculated value provides an order of magnitude in which region the

45
4. Simulation Strategy

power output of the wind turbine should be situated.

To simplify the meshing progress, the original wind turbine design from Fraunhofer
IWES is slightly changed. The tilt angle of the turbine is removed and the nacelle, the
hub and the tower geometry are approximated by simple cylindrical structures. The
effect of those changes is expected to be rather small. Additionally the tower of the
wind turbine is moved more away from the wind turbine to improve the solver stability
of the simulations. In OpenFOAM, geometry placed very close to interfaces connecting
two meshes, can cause stability problems. Still, the tower is expected to be close enough
to the rotor to have a visible influence on the aerodynamic behavior of the wind turbine.
Figure 4.1 illustrates the simulated turbine.

Figure 4.1.: Simulated turbine - overview of the turbine

46
4. Simulation Strategy

Figure 4.2 shows a close view of the selected nacelle and hub shape. The simplified
structure of the wind turbine hub and nacelle can clearly be noticed.

Figure 4.2.: Simulated turbine - nacelle and hub

4.2. Conducted simulations


During this work, a comprehensive number of different simulations will be conducted.
As stated in the introduction, the main focus of this work is to test the abilities of both
the commercial tool ANSYS CFX and the open source toolbox OpenFOAM to simulate
a complete wind turbine with tower, both steady state and transient. The large mesh
size is expected as the main challenge for both CFD codes. In a first step, steady state
RANS simulations will be realized. For these simulation cases the same structured mesh
will be used in both ANSYS CFX and OpenFOAM. As turbulence model the k-Omega
SST turbulence model will be selected.

In a second step transient URANS simulations will be started in both ANSYS CFX and
OpenFOAM. As unsteady simulations require a much higher computational effort than
steady state simulations, the simulation of one full turbine rotation each is planned.
Main reason for conducting transient simulation is to investigate the influence of the
tower geometry on the turbine performance. Because of the stagnation point in front of
the tower and therefore a lower velocity in this region, a drop of the forces acting on the
wind turbine rotor is expected when a blade passes the tower. As problems will occur
concerning the use of the generated structured mesh for transient simulations within
OpenFOAM, a second unstructured mesh will be generated using ICON FOAMpro [24].

47
4. Simulation Strategy

Table 4.2 shows the different simulations cases which will be conducted.

Simulation type Mesh type CFD tool Turbulence


1st simulation steady state structured ANSYS CFX SST
2nd simulation steady state structured OPENFOAM SST
3rd simulation unsteady structured ANSYS CFX SST
4th simulation unsteady structured OpenFOAM SA
5th simulation unsteady unstructured OpenFOAM SA

Table 4.2.: Conducted simulations

4.3. Meshing strategy


Before starting to prepare the simulations, the general meshing approach has to be
discussed. After internal discussions and literature research, the following mesh strategy
was chosen. The mesh is divided into two separate meshes which are combined in the
CFD tools by using connection interfaces. The first mesh will include the outer domain
surrounding the wind turbine, the tower and the nacelle geometry of the wind turbine.
At the position of the wind turbine rotor, an non-meshed hole is left were the second
mesh can be integrated. As an appropriate shape for the outer domain, a half-cylinder
was chosen. The second mesh will include the rotor itself and will later rotate. The
domain of the rotor disk mesh will be shaped like a cylinder which fits exactly into the
outer domain. Table 4.3 states the selected parameters for the wind turbine rotor mesh.

Rotor Disk
Type cylinder
1st point 0 -5 0
2nd point 020
Radius 60 m

Table 4.3.: Dimensions of the rotor disk domain

Figure 4.3 shows the selected shape and the dimensions of the wind turbine rotor mesh
disk in comparison to the turbine size. The diameter of the mesh disk is chosen large
enough to avoid issues related to the mesh connection interfaces which can influence the
flow.

48
4. Simulation Strategy

Figure 4.3.: Wind turbine rotor mesh domain

Figure 4.4 illustrates the presented rotor mesh placed within the far-field mesh. The
distance between the inlet boundary and the wind turbine amounts to five times the
rotor diameter. The dimensions of the far-field are large enough to avoid an effect of
the domain size on the simulation result. The dimensions of the far-field are stated in
relation to the rotor diameter D.

Figure 4.4.: Far-field mesh domain

49
4. Simulation Strategy

Table 4.4 states the dimensions of the far-field domain.

Far-field
Type half-cylinder
length 1500 m
width 1000 m
height 500 m

Table 4.4.: Far-field dimensions

4.4. General simulation approach


In general, the conduction of CFD simulations can be divided into three parts:

1. Pre-processing

2. Simulation

3. Post-processing

In the pre-processing step the basic simulation set-up is implemented. The mesh is gen-
erated and imported into the CFD tool, the boundary conditions have to defined and
the turbulence model has to be selected. Furthermore several solver settings as the dis-
cretization schemes and solving methods have to be set. In a second step the simulations
are conducted. This can be done using private home computers or for larger simulations
cluster computers. The solution process has to be supervised and to be stopped when
defined requirements like target residuals have been fulfilled. The last step is denoted
as the post-processing of the results. First the plausibility of results has to be checked
by reviewing the calculated values for the flow quantities. After this conclusions from
the simulations can be drawn.

All of those steps will be described more in detail for both ANSYS CFX and OpenFOAM
in the next chapters.

50
5. Simulations in ANSYS CFX

5. Simulations in ANSYS CFX


5.1. Introduction
The commercial CFD toolbox ANSYS CFX is a general purpose fluid dynamics program
which is nowadays widely spread in the industry. Being continuously improved and
extended for over 20 years [25], it represents today one of the most advanced CFD tools
available. The toolbox ANSYS CFX mainly consists of different sub tools:

ANSYS Designmodeller

ANSYS CFX-Pre

ANSYS ICEM CFD (not included in the standard package)

ANSYS CFX-Solve

ANSYS CFX-Post

The toolbox ANSYS CFX is fully integrated into ANSYS Workbench which is the frame-
work for the engineering simulation tools provided by ANSYS [25]. For example, by
using the Workbench framework, results from CFD simulations can be directly trans-
ferred to structural mechanics tools from ANSYS to perform fluid-structure-interaction
simulations. The range of tools included in ANSYS CFX covers the complete process of
preparing, running and evaluation of simulations. With ANSYS Designmodeller, which
is in principal a basic CAD tool, geometry files can be generated and/or imported and
modified. The created or modified models can be imported into CFX-Pre, where the
pre-processing of the simulation is conducted. Using the grid generation algorithms of
ANSYS CFX-Pre, geometry can be meshed based on different grid types and refinement
parameters. To complete the pre-processing, simulation parameters like turbulence mod-
els, boundary conditions and solver/output settings can be defined. For advanced mesh
generation of complex geometry, a separate program module called ANSYS ICEM CFD
exists and can be integrated into the toolbox. Based on the pre-processing process,
simulations can be run using ANSYS CFX-Solve. The solver program supports paral-
lel computing and provides several functions like the plotting of the residuals and the
simulation variables. The evaluation of the simulation results can be conducted within
ANSYS CFX-Post. Supported by several pre-defined functions (for example to extract
forces from the simulation results) and a broad variety of filters, CFX-Post enables the
user to conduct an efficient post-processing of the data. Furthermore the program is
very stable, even when dealing with big meshes.

51
5. Simulations in ANSYS CFX

In the beginning of this work ANSYS CFX 13.0 was used. Later ANSYS CFX was
updated to the actual version 14.5.

5.2. Mesh generation


The first step of setting-up a simulation is the mesh generation. The mesh generation
is conducted based on the meshing strategy described in chapter 4.3. In this work two
separate meshes are generated, one for the rotor of the wind turbine and one for the
surrounding domain including the tower and the nacelle (see Figure 4.3).

5.2.1. Meshing tools


5.2.1.1. ANSYS ICEM CFD
ANSYS ICEM CFD [1] is one of the most advanced and powerful meshing tools which
is currently available. Using this tool, it is possible to mesh complex geometries using
almost every grid type. For a fast and uncomplicated meshing process, the tool provides
a powerful and almost completely automated algorithm for the generation of unstruc-
tured meshes like tetrahedra grids. If high quality structured meshes are required, Ansys
ICEM CFD can be used to generate structured meshes. In contrast to the unstructured
method, the generation of structured meshes still requires a lot of manual input and
experience by the user, especially if the mesh should be used in OpenFOAM which re-
quires a high mesh quality.

As a compromise between mesh quality and generation time, ANSYS ICEM CFD is
capable to generate hybrid meshes which combine structured and unstructured grids.
Within this concept, structured grid elements are used around and near the geometry
or the interesting flow areas, which results in less required user input compared with
the generation of fully structured grids. The rest of the mesh domain is filled up with
automatically generated unstructured cells.

Additionally, Ansys ICEM CFD includes tools for the import and the repair of geome-
try/surface files from most CAD formats. Combined with the flexible export function
of the program, which ensures the compatibility to almost all CFD tools on the market,
this makes ANSYS ICEM CFD a versatile tool for the generation of meshes.

5.2.2. Generation of the structured wind turbine rotor mesh


In the first part of the meshing generation process, the structured mesh for the rotor of
the wind turbine will be generated. Due to the thin and curved geometry of the blades,
wind turbine rotors can be considered as complex geometry. Especially the trailing edge
of a blade, which presents a potential source for bad quality mesh cells. Therefore the

52
5. Simulations in ANSYS CFX

structured meshing of a wind turbine rotor needs careful preparation.

As the rotor consists of three identical blades and the nacelle is represented by a simple
cylindrical shape, it makes sense to use the symmetry of the wind turbine rotor to
reduce the effort of mesh generation. The geometry preparation and the generation
of the meshing block structure is first conducted for one blade. After completing this
process, the generated block structures are copied to obtain the complete wind turbine
rotor mesh. In the following the wind turbine rotor will be referred to simply as rotor.

5.2.2.1. Preparation
The first step of the grid generation process of the rotor mesh is to create the mesh
domain. Based on Table 4.3, a cylinder is generated by using the ANSYS ICEM CFD
geometry tools. To make use of the symmetry of the rotor as explained in the previous
section, a block covering 120 degree of the cylindrical shape is extracted. Figure 5.1
illustrates the mesh domain for the 120 degree block of the rotor mesh.

Figure 5.1.: Rotor domain (120 degree)

In the next step, the blade and the hub geometry have to be defined. While the simple
hub geometry is generated by using the integrated geometry tools, the blade geometry
is included by importing the provided blade geometry file into ANSYS ICEM CFD. Be-
cause ANSYS ICEM CFD was only able to import the surface of the blade geometry but
not the profile splines, a separate step to extract these profiles out of the imported blade
surface within ANSYS ICEM CFD is necessary. The reason for this can be found in the

53
5. Simulations in ANSYS CFX

later described block structure generation which is configured based on the profile splines.

5.2.2.2. Regeneration of the blade geometry


The regeneration of the blade geometry can be divided into two separate steps. In
the first step, profile splines are extracted out of the imported surface by using the
geometry tools of ANSYS ICEM CFD. In a second step, the extracted profiles are
connected by splines representing both the leading- and the trailing-edge of the blade.
The regeneration of the blade geometry has to be conducted manually and is therefore
a time consuming process. Figure 5.2 illustrates the created blade framework which was
manually extracted from the provided blade surface. The curved trailing edge near the
tip will lead to issues later within the meshing process (see Section 5.2.2.4).

Figure 5.2.: Regenerated blade geometry (splines) around tip area

Within this process 234324 points and 234324 splines were manually created.

5.2.2.3. Block structure


The implementation of the block structure is the most important part in the generation
process of structured grids within ANSYS ICEM CFD. Based on their structure, AN-
SYS ICEM CFD creates the hexahedral mesh cells. Therefore the mesh quality of the
complete mesh is dependent on the block structure. As there is no automated algorithm
to create the block structure within ANSYS ICEM CFD, this has to be done manually.
This is the main reason why the manual effort required for the creation of structured
grids is high in comparison to the automated unstructured mesh generation.

54
5. Simulations in ANSYS CFX

The design process of the block structure starts with the generation of an initial block.
The edges of this initial block have to be adopted to the shape of the general mesh domain
(as illustrated in Figure 5.1). After the initialization, the general block approach has to
be specified and implemented. Based on the examination of several blocking approaches
which could be convenient for the meshing of a complete wind turbine rotor, the radial
blocking approach is selected as an appropriate method. As the flow phenomena around
the blade are the main region of interest within this work, the cell quality in this region
is very important. Therefore the generation of the block structure is started at the blade.

As blocking strategy around the blade, an combination of a structured O-grid and a


structured H-grid is selected. Both grid types are described in more detail in chapter
3.10.1.3. The O-grid will be used to generate high quality boundary layers around the
blade geometry whereas the H-grid will be used within the rest of the mesh domain.
Because the 120 degree mesh will be copied to a full rotor at the end, a C-grid (often
used for the meshing of airfoils) can not be realized in this case. To increase the accuracy
near the blade surface, the boundary layer consists of 20 layers with a growth ratio of 1.2.

Because of the accurate preparation of the blade geometry, each block can be exactly
linked to the extracted profile splines. This results in a highly accurate representation of
the original blade geometry within the generated mesh. Figure 5.3 illustrates the O-grid
block structure around a cross section at the center of the blade.

Figure 5.3.: Block structure around a blade cross section

It can be noticed that the combination of O-grid and H-grid presents an appropriate
block structure concept to mesh the blade geometry. In this work, the O-grid around
the blade consists of six blocks whereas the H-grid is defined by ten blocks. After gener-
ating the block structure around the blade, the outer block structure of the wind turbine
rotor mesh has to be configured. Due to need of meshing the complete rotor, the concept

55
5. Simulations in ANSYS CFX

of using a radial blocking strategy was chosen.

Figure 5.4 shows the selected radial blocking strategy for the meshing of the wind turbine
rotor.

Figure 5.4.: Radial block structure of the rotor block

The radial blocking strategy provides three main advantages. First, the mesh cells at
the right and left symmetry boundaries of the mesh, shown in Figure 5.4, can be gener-
ated with a good cell quality because the blocking edges are placed orthogonal to them.
This becomes important when combining the 120 degree meshes to the complete wind
turbine rotor mesh. Additionally the concept supports the placing of horizontal center
blocks around the blade geometry which enables the generation of high quality mesh cells
around the blade. The third advantage is the possibility to enlarge the radius of the
radial blocking edges near tip of the blade. These enlarged radial block edges, marked
by black arrows in Figure 5.4, are necessary to keep the mesh cell quality within the
blade tip area on a high level. Due to this concept, high aspect ratios caused by long
and thin cells within the radial blocks can be avoided and the curved blade geometry,
showed in Figure 5.2, can be meshed with a satisfying cell quality.

The generation of the radial blocks within ANSYS ICEM CFD has to be conducted
manually because the program lacks an automated feature for doing this task. The
radius of every radial block edge (around 80) has to be calculated and defined manually in
reference to the general mesh domain. Again, this manual process is time consuming but
necessary for a good mesh quality. Figure 5.5 illustrates the complete block structure of
the 120 degree block (including one blade) of the rotor. The complexity of the generated
block structure can be recognized.

56
5. Simulations in ANSYS CFX

Figure 5.5.: Complete block structure for a 120 degree block of the rotor

The illustrated block structure is the final result of an iterative process with a high
number of tests and modifications. After each modification, the cell quality was checked
for several quality parameters like skewness or orthogonality by using the internal quality
check tools of ANSYS ICEM CFD. The final blocking strategy represents a reasonable
compromise between mesh resolution, cell quality and mesh size. After the optimization
process, the 120 degree block was copied to obtain the mesh for the full rotor. Figure
5.6 shows the block structure for the complete rotor.

Figure 5.6.: Complete block structure for the full rotor

After preparing the block structure, the generation of the final structured mesh within

57
5. Simulations in ANSYS CFX

ANSYS ICEM CFD takes only little time. Even meshes containing more than 50 million
mesh cells are generated within few minutes. This is one of the main advantages in con-
trast to the automated generation of unstructured grids. The process of generating an
unstructured mesh with a similar cell count number can take more than 24 hours. Ad-
ditionally, this long process has to be repeated after each parameter modification. The
influence of modifications on the block structure of structured grids can be controlled
within few minutes, which makes the testing of different mesh parameters within ANSYS
ICEM CFD very convenient. At the end of the block structure generation process, 760
blocks were manually created.

Learning how to use ANSYS ICEM CFD, selecting the blocking approach and the gen-
eration/optimization of the block structure took several weeks and was one of the main
tasks during the work presented here.

5.2.2.4. The final mesh


In this section, the final rotor mesh will be presented. The focus lies hereby on parts
of the mesh which were critical during the meshing process. One of the critical parts of
the wind turbine rotor mesh is represented by the blade root area. Figure 5.7 illustrates
the mesh within this area.

Figure 5.7.: Final mesh at blade root

The O-grid around the circular blade root should be equally distributed to the six bound-
ary layer blocks to optimize the mesh cell quality. Because of the thin trailing-edge, the
blocks which reproduce the leading- and trailing-edge of the blade have to be limited

58
5. Simulations in ANSYS CFX

in terms of cell numbers. This issue will be described more detail later in this Section.
Due to this limitation, critical cells appear (marked by black arrows on Figure 5.7). To
adopt an optimal block structure of the mesh in this area, several configurations have
been tested and investigated. The final structure of the grid of the blade root area rep-
resents the optimal configuration for this region.

Figure 5.8 shows the mesh structure around the center part of the blade. The combined
H-grid and O-grid structure of the mesh can be recognized.

Figure 5.8.: Cut plane - front part

The described limited cell number of the blocks which reproduce the leading and trailing
edge is caused by the thin trailing edge of the blade. Due to the concept of structured
grids the blocks marked with black arrows in Figure 5.8 have to describe the leading-
and trailing-parts of the blade geometry with the same number of cells.

If the number of cells is too high, the cells describing the trailing-edge become very thin
and bad cell aspect ratios occur. If the number of cells is too low, problems in the inner
section of the blade occur, as the root area of the blade cannot be reproduced correctly
by a low number of cells. Therefore the generation of problematic cells in this area
cannot be avoided. This presents a general issue when using structured meshes on wind
turbine blades. Still, the cell quality of the cells near the trailing-edge of the central part
of the blade is acceptable.

59
5. Simulations in ANSYS CFX

Figure 5.9 shows the critical cells at the trailing-edge of the blade. The elongated and
thin critical cells causing a problematic aspect ratio at the trailing-edge are marked with
a black arrow.

Figure 5.9.: Cut plane - trailing-edge

Figure 5.10 illustrates an overview of the mesh around the tip of the blade. As the chord
length of the tip profile is small (LT ip = 6 cm) the cells at the trailing-edge get more
problematic.

Figure 5.10.: Cut plane - tip region

60
5. Simulations in ANSYS CFX

Especially for the OpenFOAM solvers, these very small cells represent a severe issue
when dealing with the convergence of the solution. Figure 5.11 illustrates the meshing
of the blade tip in more details. To improve the cell quality at the tip, an additional
O-grid on the tip surface was generated. The O-grid is marked by black arrows on Figure
5.11.

Figure 5.11.: Final mesh at blade tip

An additional issue in this region of the rotor blade is represented by the curved trailing-
edge which causes cell quality problems because of its nearly horizontal progression
(marked by a black circle on Figure 5.11). This issue is solved by the use of the radial
blocking concept which is explained in Section 5.2.2.3. Due to this concept, enlarged
radial block edges are used to keep the cell quality high enough to avoid stability issues
during the solution process.

5.2.2.5. Mesh specifications


As mentioned before, the OpenFOAM toolbox requires a high mesh cell quality to run
properly. To ensure the compatibility with OpenFOAM in terms of cell quality, the tool
checkMesh [2] of the OpenFOAM toolbox was used to verify the mesh quality of the
rotor mesh. Table 5.1 lists the quality parameters calculated by checkMesh.

Mesh specifications
Number of cells 36.48 mio
Max aspect ratio 77.69
Max Mesh non-orthogonality 74.32
Max skewness 2.18
Min cell volume 4.1e-11

Table 5.1.: Mesh specifications of the structured rotor mesh

61
5. Simulations in ANSYS CFX

According to the checkMesh quality check, the required cell quality parameter orthog-
onality could not be fulfilled. The bad quality cells were investigated and occur because
of an unfavourable shape of the trailing-edge at the blade tip. Due to the difficult angle
under which the trailing-edge meets the top profile, the occurrence of bad quality cells
in this particular region cannot be avoided. Figure 5.12 illustrates the problematic cells
at the tip of the blade.

Figure 5.12.: Bad quality cells at the blade tip

The dimensionless wall distance used at the rotor blades was set to y + 200. This
value was selected because it represents a compromise between accuracy and mesh cell
count. In addition, it is an appropriate value for the use of wall functions as described
in Section 3.7. To estimate the height of the first cell layer, the Reynolds number has
to be calculated. The largest Reynolds number is expected near the tip region because
of the high rotational velocity of the blade. Because the chord length of the tip profile
is small, the chord length of the blade at an axial position of r/R = 0.95 was used to
calculate the Reynolds number. According to Section 3.3, the Reynolds number can be
calculated using Equation (3.27), where l is the characteristic length, which is in this
case the chord length of the blade. The Reynolds number of the flow around the tip
region was estimated with:

Re 6600000 (5.1)

Based on the calculated Reynolds number and the selected y + , the required height of
the first cell y was calculated with y = 1.2 mm by using Equation (3.58).

62
5. Simulations in ANSYS CFX

5.2.3. Generation of the structured far-field mesh


In addition to the rotor mesh, the outer far-field mesh also has to be generated. The
tool ANSYS ICEM CFD is used to generate this structured grid.

5.2.3.1. Preparation
As before, in the first step the shape of the general domain has to be selected. As stated
in Chapter ??, a half cylinder is selected to represent the shape of the far-field. The
dimensions of the domain are chosen according to Table 4.4. After the general domain
shape has been defined, the block structure has to be set up. As the rotating rotor
disk will be combined with the stationary outer mesh, the far-field has to feature an
non-meshed part at the position of the wind turbine rotor. This part will later contain
the generated mesh of the rotor (described in Section 5.2.2).

Additionally the stationary tower and nacelle geometry have to be generated using AN-
SYS ICEM CFD. As illustrated in Figure 4.2, the shape of tower and geometry are
represented by simple geometric shapes and can therefore be created in ANSYS ICEM
CFD directly.

Figure 5.13 illustrates the generated far-field domain including the tower and the nacelle.

Figure 5.13.: Generated far-field domain with the tower and the nacelle

5.2.3.2. Block structure


The generation of the block structure for the far-field domain starts with the generation
of the initial block. As the domain is represented by a half cylinder, the block structure

63
5. Simulations in ANSYS CFX

is not simple. To avoid issues with the transition boundaries between the rotation and
stationary mesh parts, the rotor mesh will be placed within a tunnel of radial mesh cells
through the far-field (see Figure 5.14).

The selected block approach enables both the half cylindrical shape of the domain and
the usage of radial cells in the center of the far-field. The non-meshed part where the
rotor mesh will be integrated later on has been done by generating blocks which were
placed exactly the rotor mesh region. Deleting these blocks prevents the generation of
cells at the position of the rotor mesh. Figure 5.14 illustrates the used block structure.

Figure 5.14.: Block structure of the entire domain

To improve the simulation accuracy near the tower and the nacelle geometry, O-grid
boundary layers are generated around those geometry parts. In addition, the mesh
behind the wind turbine rotor requires refinement in order to enable the calculation of
flow phenomena within the near wake of the wind turbine.

5.2.3.3. The final mesh


In this section, the final mesh of the entire computational domain is presented. Figure
5.15 shows a front view of the final far-field mesh. The coarse outer part and the fine
resolved inner part of the far-field mesh can be clearly distinguished. The high mesh
resolution in the center is required to enable the refinement of the wake area behind
the turbine and to support the stability of the interface algorithms which need a certain
ratio of cells on each interface patch to work properly.

64
5. Simulations in ANSYS CFX

Figure 5.15.: Final mesh of the far-field domain - front view

Figure 5.16 illustrates a vertical cut though the far-field mesh shown from the side.

Figure 5.16.: Final mesh of the far-field domain - vertical cut

The non-meshed part of with the dimension of the wind turbine rotor mesh can be
observed. The critical cells of the far-field can be found within the highly resolved mesh
tunnel in which the rotor mesh will be placed in. The cells in front and behind of the
wind turbine are thin because of the high vertical mesh resolution and additionally long
because of the need to keep the cell number as low as possible. This compromise results
in very high cell aspect ratios > 100. The presented structured far-field mesh clearly
shows the disadvantage of structured far-field grids. Unstructured grids could just be
refined in the area around the wind turbine which would lead to less cells with a higher
cell quality.

65
5. Simulations in ANSYS CFX

5.2.3.4. Mesh specifications


Table 5.2 gives an overview about the mesh cell count and cell quality of the final
structured mesh for the far-field investigated by checkMesh.

Mesh specifications
Number of cells 16.41 mio
Max aspect ratio 161.84
Max Mesh non-orthogonality 61.58
Max skewness 1.50
Min cell volume 9e-4

Table 5.2.: Mesh specifications of the structured far-field mesh

As mentioned before, the maximum aspect ratio of the cells is high. Still, this issue
cannot be avoided when using the unstructured meshing concept for the far-field mesh.
In addition, the quality tool checkMesh considered the maximum aspect ratio as ac-
ceptable.

5.3. Simulation set-up


The set-up of the simulations is conducted using the pre-processing tool of ANSYS CFX,
CFX-Pre. The first step of defining a CFD simulation in CFX-Pre is to set the type of
the simulation as steady state or transient. In this work, one project file for the steady
state simulation and one project file for the transient simulation are created. After
this, the meshes generated with ANSYS ICEM CFD need to be imported and boundary
conditions have to be assigned to each patch of the imported meshes. Table 5.3 lists the
selected boundary conditions in ANSYS CFX-Pre.

Boundary Type/value
Inflow fixed velocity, 10.8 m/s
Turbulence intensity at inflow 5%
Outflow opening condition, 0 pa
Sky slip wall
Ground slip wall
Turbine geometry no slip wall

Table 5.3.: Selected boundary conditions in CFX-Pre

The selection of a slip condition for the ground geometry of the flow domain is a valid
simplification. As the wind turbine rotor is placed far above the ground, a no-slip wall
would not have an effect on the turbine aerodynamics.

66
5. Simulations in ANSYS CFX

This would be different, if a non uniform inflow condition like an ABL (Atmospheric
Boundary Layer) with a certain ground roughness would be used. The use of such in-
flow condition in ANSYS CFX and OpenFOAM is planned in the future after this work,
the generated mesh supports this approach. In the next step of the set-up, the connec-
tion of the meshes and the rotation of the rotor domain have to be defined.

For the steady state simulation, the GGI (General Grid Interface) is selected to connect
the far-field and the rotor mesh. As steady state simulations do not allow a real rota-
tion of the rotor, the rotation is simulated by using the Frozen-Rotor concept which adds
rotational forces to each rotating cell [21]. The transient simulations are conducted
based on the physical rotation of the rotor mesh. The rotation can be defined by a
rotation axis and a rotation speed, which are selected according to the used coordinate
system and the turbine specifications given in table 4.1. The connection of stationary
far-field mesh and the rotating rotor mesh in the case of the transient simulation is as
well realized by GGI interfaces.

Both simulations will be conducted using the kSST turbulence model by Menter. The
resulting domain set-up showing the inflow and outflow conditions within ANSYS CFX-
Pre is illustrated in Figure 5.17.

Figure 5.17.: Simulation set-up in CFX-Pre

In the last part of the simulation set-up, the solver and output settings are defined.
Table 5.4 lists the settings selected for the steady state simulation in ANSYS CFX.

67
5. Simulations in ANSYS CFX

For the discretization, the High Resoltion scheme was selected. This scheme uses a
blending function to switch between upwind and linear behavior [21]. To improve the
stability of the simulation, especially at the beginning of the solution process, a time
scale factor of 0.1 is chosen. The time scale factor is related to the relaxation factors of
the SIMPLE algorithm.

Simulation parameters
Simulation type Steady state
Turbulence model SST
Connecting interfaces GGI
Interface pitch None
Rotation concept Frozen rotor
Adjection scheme High resolution
Time scale factor 0.1

Table 5.4.: Simulation set-up - steady state

In comparison to the steady state simulation, for the transient simulation only few
settings were changed. The used settings are listed in Table 5.5. The simulation is based
on the same adjection scheme and uses a backward 2nd order scheme for the temporal
discretization of the Navier-Stokes equations.

Simulation parameters
Simulation type Transient
Turbulence model SST
Connecting interfaces GGI
Interface pitch None
Rotation concept Physical mesh rotation
Adjection scheme High resolution
Time scheme Backward Euler 2nd order
Time step 0.0001 s
Simulation time 10 s

Table 5.5.: Simulation set-up - transient

The selection of an appropriate time step represents a key parameter for transient CFD
simulations. As the time step directly influences the Courant number which is related
to the stability and also to the accuracy of the solution process, the time step should be
chosen in a way that the Courant is close to CFL=1 [7]. As the time frame of this work
is limited and the exact effect on the accuracy of the results is not known, a time step of
0.0001 is selected. This results in a high Courant number (up to 150) within some cells.
The consequence of this high Courant number will be investigated within the evaluation
chapter of this thesis. The complete simulation is set to 10 seconds which corresponds
to a bit more than two complete rotations of the wind turbine rotor.

68
6. Simulations in OpenFOAM

6. Simulations in OpenFOAM
6.1. Introduction
The second CFD toolbox used in this work is the open source CFD code OpenFOAM
[2]. Due to the open source concept, the usage of the OpenFOAM (Open Field Oper-
ation and Manipulation) toolbox is free of charge and the complete program code can
be accessed and modified. This makes OpenFOAM interesting for a variety of users
like universities, research institutes and also the industry. Because OpenFOAM lacks a
graphical user interface (GUI) and a professional documentation, the use of OpenFOAM
is not as convenient as the use of commercial tools and requires a training period. Open-
FOAM runs best on linux-based operation systems and is mainly controlled by using
terminal commands and control text files.

Since the starting of OpenFOAM development in the late 80s at Imperial College in
London [26], a growing number of users contributed with their own extensions to the
OpenFOAM package. Based on the programming language C++, the OpenFOAM CFD
toolbox represents a powerful instrument for conducting CFD simulations or developing
simulation tools. In order to work properly, OpenFOAM requires a special case file
structure which will be explained in Section 6.1.1.

6.1.1. File structure


A typical OpenFOAM case has to consist of the following three main folders:

system

constant

0 (initial time directory).

Each folder contains key files for the simulation set-up in OpenFOAM.

6.1.1.1. The system folder


The system folder consists the files controlDict, fvSchemes and fvSolution. Within
those files the settings concerning the numerical solving of the flow equations can be
configured. The controlDict is a general solver control file in which basic settings like
the simulation runtime or the output interval of the calculated data can be defined.

69
6. Simulations in OpenFOAM

Listing 6.1 illustrates an excerpt from a typical controlDict file.


application SimpleFoam;

startTime 0;

stopAt endTime;

endTime 10000;

deltaT 1;

writeControl timeStep;

writeInterval 5000;
Listing 6.1: Extract from controlDict.

The example file defines the usage of SimpleFoam as the solver for the example case.
SimpleFoam is a steady state solver for incompressible and turbulent flow based on the
SIMPLE algorithm. More details about the solvers which are available within Open-
FOAM can be found in the OpenFOAM user guide [22]. The parameter startTime
defines the starting time of the simulation as 0, which represents the initial values stored
in the 0 folder of the case. By setting a different entry for startTime one could start a
simulation based on a previously calculated value. As deltaT is set to one and endTime
to 10000, this simulation would run for 10000 iterations. For steady state simulations
deltaT has no influence on the solving process, for transient simulations it defines the
time step. According to writeInterval the results will be written out for every 5000th
iteration/time step in an output file.

The file fvSchemes is responsible for the configuration of the solution schemes used for
the discretization of the Navier-Stokes equations in space and time. For each term of
the Navier-Stokes equation different discretization methods can be selected.

Listing 6.2 illustrates an excerpt from an example fvSchemes file.


ddtSchemes
{
default Euler;
}

gradSchemes
{
default Gauss linear;
grad(p) Gauss linear;
grad(U) Gauss linear;

}
Listing 6.2: Excerpt from fvSchemes file

70
6. Simulations in OpenFOAM

In this example case the discretization of the time derivatives is conducted by using the
Euler scheme. For the gradient term of the pressure p and the velocity u the Gauss
linear scheme is selected. An overview of the existing schemes within the OpenFOAM
toolbox can be found in the OpenFOAM user guide [22]. The last required file in the
system directory is the fvSolution file. This file controls the numerical solution methods
of the Navier-Stokes equations. As stated in Chapter 3, solution algorithms used (like
SIMPLE) solve for the different variables of the Navier-Stokes equations sequentially.
Therefore the numerical method for each variable can be specified in the fvSolution
file. Listing 6.3 shows an excerpt from an example fvSolution file.

p
{
solver GAMG;
tolerance 1e-08;
relTol 0.05;
smoother GaussSeidel;
cacheAgglomeration true;
nCellsInCoarsestLevel 20;
agglomerator faceAreaPair;
mergeLevels 1;
}
Listing 6.3: Excerpt from fvSolution file

In this example, the pressure variable p is solved by using the GAMG algorithm. Addi-
tional solver settings like the required tolerance are also specified. Furthermore, settings
concerning the solver algorithm like relaxation factors can also be defined.

6.1.1.2. The constant folder


The constant folder of an OpenFOAM case contains the mesh information which is stored
in a sub folder named polyMesh and additional properties concerning the simulated
fluid, mesh movements and the used turbulence model. The polyMesh folder has to
contain at least four basic files, which are named points, cells, faces and boundary.
The first three files store the complete mesh information while the last file assigns selected
faces of the mesh to boundary patches which can be described by several boundary
conditions. An overview of the available boundary conditions within the OpenFOAM
toolbox is given in [22]. Listing 6.4 shows an excerpt from an example boundary file.

FLUID-INLET
{
type wall;
nFaces 15400;
startFace 158208483;
}
Listing 6.4: Excerpt from polyMesh/boundary file

71
6. Simulations in OpenFOAM

In this example the boundary condition of type wall is assigned to a boundary patch
called FLUID-INLET. The number of faces which belong to this boundary patch is
stated as well as the exact number of the start face.

Additional files which can be found directly in the constant folder are the RASProp-
erties file in which the turbulence model has to be selected, the transportProperties
file which defines the fluid by its dynamic viscosity and the turbulenceProperties
file which sets the turbulence type.

6.1.1.3. Time directories


The last required folder is the so called time directory. Within this folder, initial values
and the output data of the simulations are stored. In general the folder 0 is used to
provide initial conditions for the flow variables to the solvers. Furthermore the boundary
conditions are specified based on the type assigned to them in the polyMesh folder.
Initial values and boundary conditions have to be provided for each variable which is
solved within the simulation. Output data is stored in folders named according to the
output time/iteration step or simulation time depending on the setting of the control-
Dict file.

Listing 6.5 shows an excerpt from an example velocity U file in the 0 folder. In this file
initial and boundary conditions for the velocity variable are defined.

internalField uniform (0 10.8 0);

boundaryField
{

FLUID-INLET
{
type fixedValue;
value uniform (0 10.8 0);
}
Listing 6.5: Excerpt from 0/U

This example file defines the boundary condition for the boundary patch FLUID-
INLET. As often used for inflow conditions, a fixed and uniform inflow velocity condition
is selected. Additionally, the initial value for the internal velocity field is configured.

72
6. Simulations in OpenFOAM

6.1.2. Grid interfaces


For some applications in CFD, it is convenient to use more than one mesh within one
simulation. Especially for the simulation of complete wind turbines this is of importance
as the wind turbine rotor rotates while the tower and nacelle geometries are stationary.

In those cases grid interfaces are required to connect the different meshes with each other.
To realize this connection, two grid interfaces are available within the OpenFOAM CFD
toolbox. They are introduced in the following.

6.1.2.1. General Grid Interface (GGI)


The first method for the connection of conformal and non-conformal meshes within
OpenFOAM is the General Grid Interface (GGI) which is available in OpenFOAM ver-
sion 1.6 extended [27]. The connecting algorithm is based on the interpolation of the
flux between the contact surfaces of the meshes by using weighting functions for the
different faces of the interface patches [28]. For the set-up of the GGI interface within
OpenFOAM several steps have to be conducted [29]. Before setting up the interface,
the separate meshes have to be prepared carefully as the GGI interface is sensible to
meshes overlapping. Some users therefore introduce a small gap between the different
meshes to avoid issues with the interface. As the GGI interface requires face-zones at
the connecting surfaces[29], those have to be generated using the OpenFOAM setSet or
TopoSet utility. In a first step, face sets of the connecting patches have to be extracted
from the existing mesh data.

Listing 6.6 illustrates the required commands to create face zones out of existing patches
(connection surfaces) named ROTORDISK inside and ROTORDISK outside us-
ing the setSet environment.
setSet;
faceSet ROTORDISK_inside_Zone new patchToFace ROTORDISK_inside;
faceSet ROTORDISK_outside_Zone new patchToFace ROTORDISK_outside;
quit;
Listing 6.6: Generation of face sets within setSet

The step above can also be performed by using a batch file for a more convenient and
faster extraction of face zones out of a larger number of patches. The extracted face
sets have to be converted to regionCells sets and afterwards transformed into the the
required face-zones. Listing 6.7 shows the required commands for this procedure.
regionCellSets;
setsToZones -noFlipMap;
Listing 6.7: Generation of face zones within setSet

After generating the face zones, the boundary file in the constant/polyMesh folder
of the case simulated has to be modified. The patch type ggi has to be assigned to
each connecting surface. Furthermore the counter connection surface and the created

73
6. Simulations in OpenFOAM

face zone of the patch have to be defined. Listing 6.8 illustrates an excerpt of the ggi
definition in the boundary file. In this example, the patch ROTORDISK inside is
defined as a GGI patch with ROTORDISK outside as its counterpart. The option
bridgeOverlap can help if issues concerning overlapping meshes occur.
ROTORDISK_outside
{
type ggi;
nFaces 1172822;
startFace 145708660;
shadowPatch ROTORDISK_inside;
bridgeOverlap true;
zone ROTORDISK_outside_Zone;
Listing 6.8: Definition of GGI patch in the boundary file
In addition to the boundary file, the initial/boundary conditions stored within the 0
folder have to be adjusted. The type ggi has to be assigned to the GGI patches in all
files (p, U, nu...). In listing 6.9 the patch ROTORDISK inside is defined as type ggi
within the p file of the 0 folder.
ROTORDISK_inside;
{
type ggi;
}
Listing 6.9: Excerpt from the file 0/p
The use of more than one GGI interface within one simulation can be problematic. In
case of simulating a complete wind turbine three sides of the rotor disk mesh (front,
back, side) have to be connected to the outer domain mesh using interfaces. To avoid
issues in this case, it can be necessary to combine the three connecting patches (surfaces)
of each mesh to one big patch. The combining of patches can be conducted by using the
OpenFOAM command createPatch and a configuration file named createPatchDict
which has to be placed in the system folder. In this file the combination of several faces
can be specified. Listing 6.10 illustrates an excerpt of an example createPatchDict file
which combines the patches inlet, outlet and side to the patch ROTORDISK inside.
patchInfo
(
{
name ROTORDISK_inside;
dictionary
{
type patch;
}
constructFrom patches;
patches ( inlet outlet side );
}

);
Listing 6.10: Excerpt from the file system/createPatchDict

74
6. Simulations in OpenFOAM

6.1.2.2. Arbitrary Mesh Interface (AMI)


The second grid interface method available within OpenFOAM is the Arbitrary Mesh
Interface (AMI). This method is implemented in the actual OpenFOAM version 2.2.0.
The algorithm behind AMI is similar to the algorithm used by the GGI interface [30].
In comparison to the GGI interface, the set-up of AMI interfaces is more convenient.
The configuration of the interface requires only the modification of the boundary and
the files in the 0 folder. The extraction of face zones is not needed. The first step of
using AMI interfaces is to define the AMI patches in the boundary file, which is similar
to the procedure for the GGI method.

Listing 6.11 demonstrates the assignment of the type cyclicAMI to the connecting patch
(surface) Rotordisk Disk Inlet. The option neighbourPatch defines the counterpart
of the patch, in this case the patch called FarField Disk Inlet of the outer far-field
mesh.
Rotordisk_Disk_Inlet

{
type cyclicAMI;
nFaces 9 3184;
startFace 150225203;
matchTolerance 0.0001;
neighbourPatch FarField_Disk_Inlet;
transform noOrdering;
}
Listing 6.11: Definition of the AMI patch in the boundary file

Additionally, the files of the 0 folder have to be modified. Like for the GGI method, this
has to be done for the AMI patches within all files. Listing 6.12 illustrates the definition
of the patch Rotordisk Disk Inlet as an AMI patch within the U file of the 0 folder.
Rotordisk_Disk_Inlet
{
type cyclicAMI;
value $internalField;
}
Listing 6.12: Excerpt from the file 0/U for an AMI case

After this step, the set-up of the AMI interfaces is completed. In general, the interface is
not as sensitive concerning the separate meshes which are connected as the GGI method,
but seems to be slower (internal investigation).

75
6. Simulations in OpenFOAM

6.1.3. Rotating meshes


For various applications of CFD methods, the investigation of rotating parts like wind
turbine rotors is of interest. For these cases the OpenFOAM CFD toolbox provides two
different approaches to simulate the rotation of the geometry of interest.

6.1.3.1. Multiple-Reference Frame (MRF) method


The Multiple-Reference Frame (MRF) method is the simplest and fastest method to
simulate the rotation of mesh regions within OpenFOAM. The MRF method does not
rotate the mesh physically but adds rotational forces like Coriolis or centrifugal forces to
selected cells of the mesh [31], which results in a fast and stable behaviour of the solvers
using the MRF method.

The method can be used both for steady-state and transient solvers and is similar to
the Frozen-Rotor concept implemented within ANSYS CFX. The main disadvantage of
this method is that only the rotation of the fluid is simulated but the geometry stays
stationary. Therefore the effects of a rotating fluid on the geometry can be investigated
but interaction between the tower and the rotor blades of a wind turbine cannot be
captured. The set-up of the MRF method is simple. All settings are stored in the MR-
FZones file in the constant folder of the case. Within this file, a rotating cell zone can
be selected and the parameters of its rotation can be specified by defining the center of
rotation and the rotational speed.

Listing 6.13 illustrates an excerpt of a MRFZone file.

DiskZone
{
nonRotatingPatches (DISK_SYM DISK_INLET DISK_OUTLET ROTOR_DISK_INLET
ROTOR_DISK_SYM ROTOR_DISK_OUTLET);

origin origin [0 1 0 0 0 0 0] (0 0 0);


axis axis [0 0 0 0 0 0 0] (0 1 0);
omega omega [0 0 -1 0 0 0 0] 1.36;
}
Listing 6.13: Excerpt from an MRFZone file

In this example the cell zone DiskZone is selected to be rotated around the y-axis with
a rotational speed of = 1.36rad/s.

Because a cell zone is used to define the rotating cells not only complete meshes but also
mesh regions can be selected for rotation. The generation of cell zones is done by using
the setSet utility of the OpenFOAM toolbox.

76
6. Simulations in OpenFOAM

Listing 6.14 shows the required commands within the setSet environment to generate
a cell zone.
cellSet DiskSet new cylinderToCell (0 0 0) (0 1 0) 60;
cellZoneSet DiskZone new setToCellZone DiskSet;
Listing 6.14: Generation of cell zone in setSet for a MRF simulation

The first command of this example cell zone generation process creates a cell set named
DiskSet which is defined by a cylindrical shape (60 m radius). Mesh cells within in
this cylinder are added to the new cell set which is then transformed to the cell zone
DiskZone by using the second command.

If AMI interfaces are used within or near MRF zones, it is important to define the AMI
patches as non rotating patches within the MRFZones file (see Listing 6.13). Other-
wise OpenFOAM can interpret the AMI patches as walls which results in an unstable
solution and wrong results.

Figure 6.1 shows a simulation result (pressure plot) using the MRF method and AMI
patches. The black arrows mark unrealistic flow phenomena occurring at an AMI patch
within a MRF zone due to the wrong set-up of the MRFZones file.

Figure 6.1.: Unrealistic flow phenomena due to wrong set-up of MRF when using AMI

The MRF method is available in both OpenFOAM 1.6-extended and 2.2.0, but requires
the use of special solvers like MRFSimpleFoam which include the addition of the ro-
tational forces.

77
6. Simulations in OpenFOAM

6.1.3.2. Dynamic Meshes


The second approach for simulation of rotation is represented by the dynamic mesh
method. This method rotates selected meshes or mesh regions physically.

Advantage of this method is that interactions between moving and stationary geometry
can be investigated by using the dynamic mesh approach. Because the physical rotation
of a mesh is a transient process, this method is computationally much more expensive
in comparison to the MRF approach.

Especially, the use of two different grids where stationary and rotating meshes have to
be connected by AMI or GGI interfaces results in slow solution as the interfaces have to
be recalculated for each time step.

The set-up of the dynamic mesh approach is configured within the dynamicMeshDict
file which has to be placed in the constant folder of the case.

Listing 6.14 shows an excerpt from the dynamicMeshDict file.

dynamicFvMesh solidBodyMotionFvMesh;
motionSolverLibs ("libfvMotionSolvers.so");

solidBodyMotionFvMeshCoeffs
{
cellZone ROTORDISK;
solidBodyMotionFunction rotatingMotion;
rotatingMotionCoeffs
{
CofG (0 0 0);
radialVelocity (0 72 0); // deg/s
}
}
Listing 6.15: Excerpt from the file constant/dynamicMeshDict

In this example a cell zone named ROTORDISK is defined to be rotating. Similar to


the MRF approach it is possible to rotate cell zones representing both complete meshes
or partial mesh regions.

For the rotation of meshes in OpenFOAM version 2.1.1 the solidBodyMotionFvMesh


library is used, in OpenFOAM 1.6-ext the mixerGgiFvMesh library is used. Similar
to the MRF method, the dynamic mesh approach requires the use of special (transient)
solvers like PimpleDyMFoam.

78
6. Simulations in OpenFOAM

6.1.4. Mesh import and merging


The OpenFOAM CFD toolbox is compatible to a variety of mesh formats which can be
converted to the OpenFOAM mesh format by using conversion tools. A compatibility
list can be found in [22]. Still, the conversion of an externally generated grids is a crit-
ical process and several problems can occur. Therefore it is recommended to use the
OpenFOAM tool checkMesh after converting a mesh to be sure that it satisfies the
minimum requirements necessary for the simulation.

In the OpenFOAM community [11] it is reported that some mesh formats are more
suitable than others for the conversion process. Especially, fluent format seems to give
good conversion results. Meshes provided in fluent format can be converted by using the
fluent3DMeshToFoam tool provided by the OpenFOAM toolbox.

The required command to convert the fluent mesh RotorDiskMesh.msh (which is


placed in the case folder) to the OpenFOAM mesh format is:

fluent3DMeshToFoam RotorDiskMesh.msh;

The converted mesh is stored in the polyMesh folder and also the boundary patches
defined in the external meshing tool are transformed, the patch types can be assigned
in the boundary file. As in this work, it can be required to use two different meshes
connected by interfaces within one simulation. To combine two meshes to one, the Open-
FOAM CFD toolbox provides the tool mergeMeshes. For the use of mergeMeshes
two folders, each containing one mesh have to be prepared.

The required command to integrate the mesh of case2 into the mesh of case1 is as
follows:

mergeMeshes case1 case2;

After this procedure the meshes are combined and can be connected by the interfaces
described in section 6.1.2 or by the stitchMesh tool (which is not used in this work).
Further details about this tool can be found in [22].

79
6. Simulations in OpenFOAM

6.2. Mesh generation


As stated in Chapter 5, the first step of conducting a simulation is the mesh generation.
As these work is aimed to compare both ANSYS CFX and OpenFOAM, the same mesh
will be used for both CFD tools. As the mesh has a substantial influence on the simu-
lation results, this is the basic requirement to perform a comparison. To enable the use
of the already generated structured meshes, those have to be imported into OpenFOAM.

As problems will occur concerning the use of structured ANSYS meshes for transient
simulations in OpenFOAM, additionally an unstructured mesh is generated using the
OpenFOAM tools. The use of OpenFOAM tools ensures a higher compatibility of the
generated mesh with OpenFOAM.

6.2.1. Meshing tools


6.2.1.1. BlockMesh
BlockMesh is a simple meshing tool of the OpenFOAM toolbox which is able to gen-
erate structured meshes. It works on the base of a control file called blockMeshDict
which has to be placed in the system folder of an OpenFOAM case. This file has to be
created manually or using a script and controls the generation of certain vertices, faces
and blocks.

The generation of a mesh using blockMesh follows basically three steps. First the vertices
which will be used for the generation of blocks have to be created. The order in which
the vertices are described in the blockMeshDict file is not important, but OpenFOAM
denotes the first point as having the number 0 and than counts upwards. The next step
is the description of each blocks by assigning vertices to them. Each block has to consist
of 8 vertices and the order assigning each single vertex is of importance. How to define
blocks is described in detail in [22]. In the last step of the mesh generation, patches can
be defined. This is done by assigning faces of the single blocks to patches.

The main issue of blockMesh is the inability to mesh around shapes provided by ge-
ometry files (like STL files). The meshing of geometry is only possible by defining the
geometry manually or by a script in the blockMeshDict point by point. Therefore a
different tool belonging to the OpenFOAM package is used for the generation of meshes
around geometry (namely snappyHexMesh).

6.2.1.2. SnappyHexMesh
SnappyHexMesh is an advanced meshing tool of the OpenFOAM toolbox which is
able to mesh geometry based on the Surface Tesselation Language (STL) format. Like
blockMesh, snappyHexMesh is controlled by a file which is named snappyHexMesh-
Dict and located in the system folder of a case. The tool generates unstructured grids

80
6. Simulations in OpenFOAM

using quad elements and polyhedral elements for the boundary layers near geometry. To
start, snappyHexMesh needs an initial structured mesh on which it can operate. This
background mesh can in principal be supplied by all meshing tools which are compatible
to OpenFOAM. Still, for best compatibility it is recommended to use blockMesh for the
generation of the background mesh. To obtain good meshing results, snappyHexMesh
requires a structured background mesh with a cell aspect ratio close to one. On base
of the background mesh, snappyHexMesh is able to refine the mesh cells around or
within certain defined regions of the mesh. The refinement process works on a level
based method in relation to the cell size of the background mesh.

As mentioned before, an advantage of snappyHexMesh is the ability to mesh sur-


faces provided in STL format. The surface files have to be placed within the constan-
t/triSurface folder to be recognized by the tool. For each surface imported, individual
refinement levels can be specified. Furthermore snappyHexMesh is able to generate
boundary cell layers around the geometry. The dimension of those layers can be either
related to the cell size or be defined by giving a global fixed value. The number of layers
can be defined as well as the expansion ratio of the layer cells.

The internal method of snappyHexMesh, especially the meshing of geometry, is ex-


plained more in detail in [22]. With snappyHexMesh, the OpenFOAM toolbox pro-
vides the user an efficient and simple tool for the meshing of complex geometry. Disad-
vantage of this tool are its inability to correctly mesh sharp edges and the poor documen-
tation of the parameters within the snappyHexMeshDict file. A useful presentation
about some of the available parameters within snappyHexMesh is given by Andrew
Jackson on the 7th OpenFOAM workshop 2012 [32].

6.2.1.3. ICON FOAMpro


ICON FOAMpro [24] is a commercial CFD tools box, which is based on the OpenFOAM
code. Among other tools, the package offers a meshing tool which is an advanced ver-
sion of the original snappyHexMesh. Unlike the open source version, ICON Foam Pro
offers a GUI to perform both simulations and meshing. Similar to snappyHexMesh
it can also be directly controlled by several dictionary files, which can be found in the
system folder.

The main advantage of ICON FOAMpro in the field of meshing is the enhanced control
parameters and the improved meshing algorithms. Especially, the algorithms for the
meshing of sharp edges and the generation of boundary layers deliver better results than
snappyHexMesh. In this work the meshing tool of ICON FOAMpro 2.1 is mainly used
to solve issues concerning the meshing of sharp geometry edges which occurred when
using snappyHexMesh.

81
6. Simulations in OpenFOAM

6.2.2. Generation of the unstructured wind turbine rotor mesh


6.2.2.1. Preparation
As stated before, snappyHexMesh requires a background mesh to work with. In
the first part of the meshing process, this background mesh is generated with the tool
blockMesh. An important task in this step is to check for the aspect ratio of the cells,
which should be as small as possible. Figure 6.2 illustrates the generated background
mesh. A simple rotor disk is being created with an maximum cell aspect ratio smaller
than two.

Figure 6.2.: Background mesh of the rotor disk

After generating the background mesh, snappyHexMesh is used for refinement and the
integration of the rotor geometry (blades + hub) into the mesh. As snappyHexMesh
allows only one refinement setting for each imported surface, the blade geometry has
been divided into three parts. One part for the inner blade, another part for the center
section of the blade and a last part for the thin outer region of the blade. The reason for
this is to avoid too high mesh cell counts. Due to the rotational speed, the outer part of
the blade has the highest impact on the torque generation. This region of the blade needs
a fine mesh to reproduce the flow phenomena in this region accurately. In comparison to
the outer blade region, the inner part is less important for the aerodynamical behavior
of the wind turbine. Because the rotational speed is lower, the number of mesh cell in
this region can be reduced without affecting the simulation results. Hence, the central
region of the blade is meshed with a refinement level which lies between the inner and
the outer refinement levels.

82
6. Simulations in OpenFOAM

One of the major disadvantages of snappyHexMesh is its inability to correctly mesh


sharp geometry edges. This is a well known issue and has been discussed within the
OpenFOAM community [11].

Figure 6.3 shows the meshing of the trailing-edge of the blade using snappyHexMesh.
It can be noticed that the algorithm is not able to reproduce the trailing-edge geometry
of the blade.

Figure 6.3.: Meshing errors at the trailing edge of the blade using snappyHexMesh

During this work several modifications of the snappyHexMeshDict parameters are


tested to optimize the meshing of the trailing edge. Several approaches are tested in-
cluding the extraction of feature edges. Due the poor mesh quality near sharp edges
of the blade, the generation of the boundary layers with snappyHexMesh led to bad
simulation results.

To solve this issue, the meshing tool ICON Foam pro was used instead of snappy-
HexMesh. Although the modelling of the trailing edge still suffers from meshing errors,
the meshing of the trailing edge and the layer generation could be significantly improved
in comparison to snappyHexMesh.

6.2.2.2. Final Mesh


In this section the final mesh of the rotor created with ICON Foam pro will be presented.
As the generated mesh is unstructured the problem concerning the cell size reproduc-
ing the trailing edge did not occur here. The main issue when using ICON FOAMpro
was the meshing of the trailing edge and the meshing time. As the generation of large
unstructured meshes needs time, the test of different surface refinement levels was con-

83
6. Simulations in OpenFOAM

ducted by meshing single small parts of the blade instead of the complete rotor. After
several modifications of the parameters for each blade region, the generation of the fi-
nal mesh for the rotor took 26 hours using about 70 GB of RAM memory on a single core.

Figure 6.4 illustrates the mesh around the leading edge of the central blade region. It
can be noticed that the leading-edge of the blade is accurately reproduced by the mesh,
the boundary layers are clean and without errors.

Figure 6.4.: The mesh around the leading-edge of the central blade region

Around the blade geometry, ten boundary layers are generated to refine the mesh. Both
snappyHexMesh and ICON FOAMpro are not able to generate more than ten layers
around the used geometry. More than ten layers result in a increasing number of col-
lapsed cells within the boundary layer. In addition, Figure 6.4 shows the two levels of
refinement at the blade surface. The cells near the leading edge are finer than the cells
near the suction side of the blade. Figure 6.5 illustrates the mesh around the trailing edge
of the central blade region. Although the meshing around the sharp edges is improved
compared to Figure 6.3, it still suffers from bad quality cells. However, the influence of
those bad cells on the simulation results is expected to be rather small as they are only a
few. In comparison to Figure 5.9 it can be noticed that the cells reproducing the trailing
edge of the blade are much larger. This is one reason why the use of the unstructured
mesh could result in a more stable solution than when using a structured mesh generated
with ANSYS ICEM CFD. Similar to Figure 6.4, the increased refinement level at the
trailing edge and the clean mesh boundary layers can be noticed.

84
6. Simulations in OpenFOAM

Figure 6.5.: The mesh around the trailing-edge of the central blade region

Figure 6.6 shows a slice cut through a central region of the blade.

Figure 6.6.: Slice cut through the central blade region

85
6. Simulations in OpenFOAM

To obtain a sufficient mesh resolution near the blade, three ring-shaped refinement areas
were generated. As the number of boundary layers is limited to ten, the highly resolved
inner ring is used as an extension of the boundary layers. Therefore the resolution near
the blade is expected to be high enough to predict important flow phenomena.

6.2.2.3. Mesh Specification


The following mesh specifications were investigated by the mesh quality tool checkMesh
of the OpenFOAM toolbox.

Mesh specifications
Number of cells 33.7 mio
Max aspect ratio 34.23
Max Mesh non-orthogonality 69.22
Max skewness 7.62
Min cell volume 4.1e-9

Table 6.1.: Mesh specifications of the unstructured rotor mesh given by the checkMesh
tool

Table 6.1 shows that cells with a high skewness occur within the mesh. These cells were
investigated and found to be near collapsed cells at the trailing edge of the blade. As
collapsed cells in this region cannot be avoided within ICON FOAMpro and according
to the OpenFOAM users community the quality parameter max skewness does not have
to be a critical parameter [11], the existence of those cells is tolerated. The other key
parameters are considered as acceptable.

To enable the comparability with the structured rotor mesh, the dimensionless wall
distance was set to y + 200.

86
6. Simulations in OpenFOAM

6.2.3. Generation of the unstructured far-field mesh


In addition to the unstructured rotor mesh, the outer far-field mesh has to be generated.
The tool meshing ICON FOAMpro is used to create this grid.

6.2.3.1. Preparation
The unstructured far-field grid is generated using a structured background mesh. A
modified version of the structured far-field mesh generated with ANSYS ICEM CFD
is used as the background mesh for ICON FOAMpro. Figure 6.7 illustrates the used
background mesh. In comparison to Figure 5.15, a reduced number of cells is achieved
for this grid. The aspect ratio of the cells in the regions of the background mesh where
cells will be refined is below two. The background mesh does not contain the tower or
the nacelle geometry. In addition, the non-meshed for the rotor mesh was removed.

Figure 6.7.: The structured background mesh used for the unstructured far-field

After preparing the background mesh using ANSYS ICEM CFD, a cylinder shaped
exactly like the generated rotor mesh and the tower/nacelle geometry are generated
using the open source tool FreeCAD and exported as STL files. The files are included in
the dictionary file of ICON FOAMpro. After testing several surface refinement settings
for the nacelle/tower geometry and region refinement settings for the near wake area,
the final far-field mesh is generated.

6.2.3.2. The final mesh


Figure 6.8 illustrates the final far-field mesh seen from the front side. In contrast to
Figure 5.15, a reduced cell number in the inner region of the far-field mesh is achieved.
This was possible because of the unstructured concept, which allows arbitrary refinement
areas. Therefore the non-critical flow regions are coarsely meshed.

87
6. Simulations in OpenFOAM

Figure 6.8.: The unstructured far-field mesh - a front view

Figure 6.9 shows a vertical slice cut through the unstructured far-field mesh. The re-
finement around the non-meshed part for the rotor mesh and in the near wake area is
visible. In comparison to the structured far-field mesh, elongated and thin elements in
the mesh regions (before and after the turbine) can be avoided. This supports a more
stable solution behavior and represents an important advantage in comparison to the
structured mesh concept.

Figure 6.9.: Unstructured far-field - vertical cut

88
6. Simulations in OpenFOAM

6.2.3.3. Mesh specifications


The following mesh specifications were investigated by the mesh quality tool checkMesh
of the OpenFOAM toolbox.

Mesh specifications
Number of cells 15.9 mio
Max aspect ratio 80.52
Max Mesh non-orthogonality 62.52
Max skewness 3.11
Min cell volume 5.2e-6

Table 6.2.: Mesh specifications of the unstructured far-field mesh

The key quality parameters listed in Table 6.2 show that the quality of the generated
unstructured far-field mesh is acceptable. In comparison to the structured far-field mesh
(see Table 5.2), the maximum aspect ratio of the cells could be significantly reduced.

6.3. Simulation set-up


The general procedure of the simulation set-up within OpenFOAM is similar to ANSYS
CFX. In the first step of the set-up, the mesh has to be prepared. To enable the use of the
structured grids generated using ANSYS ICEM CFD, the meshes have to be converted
to the OpenFOAM format using the tool fluent3DMeshToFoam. After importing the
meshes, the coordinates of several grid points near the turbine blade have been com-
pared to investigate the influence of the conversion process on the point coordinates. As
the coordinates of the grid points only changed in the scale of micrometers, the influ-
ence of the mesh conversion process on the mesh quality can be considered as neglectable.

In the next step, the rotor mesh has to be integrated into the far-field mesh. This is
conducted for both structured and unstructured meshes by using the mergeMeshes
tool. Similar to ANSYS CFX, grid interfaces have to be used to connect both meshes.
Initially, it was planned to use the GGI interface, implemented in OpenFOAM version
1.6-ext. Internal investigations of the CFD department of ForWIND have shown, that
the GGI interface can be up to 40% faster in comparison to the AMI interface included
in OpenFOAM 2.1.1. Although several modifications of the meshes have been tried,
errors concerning uncovered faces occurred during the set-up of the GGI interface.
Therefore the AMI interface is used to connect the rotating and stationary mesh in this
work.

89
6. Simulations in OpenFOAM

In addition, the type of the boundary patches have to be defined within the boundary
file of the polyMesh folder. Table 6.3 lists the assigned patch types.

Patch name Type


Inlet, outlet patch
Turbine geometry wall
Ground, sky slip
Connecting patches cyclicAMI

Table 6.3.: Assigned patch types

Within the 0 folder, the selected patch types have to be further specified. Table 6.4
shows the important selected boundary conditions.

Boundary Type/value
Inflow fixed velocity, 10.8 m/s
Outflow pressure outlet, 0 pa
Turbulence intensity at inflow 5%
Ground slip wall
Turbine geometry no slip wall

Table 6.4.: Specified patch types

In contrast to ANSYS CFX, it is required to manually provide the OpenFOAM solvers


with both boundary conditions and initial values for each flow quantity, which is solved.
For the turbulence quantities of the turbulence models this is not trivial. As the kSST
turbulence model was used for the steady state simulation, the turbulent kinetic energy
k and the specific dissipation rate have to be estimated. The estimation for k is based
on the following equation [26]:
3
k = (U I)2 . (6.1)
2
where U is the free stream velocity and I is the turbulence intensity. The specific
dissipation rate is estimated with [26]:

k
= . (6.2)
l
where l is the turbulent length scale. As the turbulent length scale represents the largest
eddy expected within the flow, the wind turbine rotor diameter is taken for l. In addition,
the wall functions for the turbulence quantities have to be specified within the 0 folder.
The Omegawallfunction is selected for the quantity and the kqRWallFunction is
selected for the variable k.

90
6. Simulations in OpenFOAM

For the transient simulation, the Spalart Allmaras turbulence model is used. The reason
can be found in the unstable behavior of the unsteady solution under use of the kSST
turbulence model in this case. Similar to the kSST model, the inflow conditions for
the turbulence variables have to be provided to the solver. In the case of the SA model,
the quantities t and have to estimated. The values are estimated using the following
equations which are based on the viscosity of the fluid [33] :

t = , (6.3)
5

= 3. (6.4)

As wall function for the quantity t , the nutUSpaldingWallFunction is selected. In


the last part of the simulation set-up, the solver settings have to be defined. In this work,
several solver settings have been tested. The most stable behaviour could be reached by
using limiter discretization schemes, which prohibit too high gradients of the solved flow
variables [7]. Especially the turbulence quantities like or k did not converge without
using a limiter scheme.

In addition the time discretization scheme and the time step have to be defined for the
transient simulation. The first order backward Euler scheme is used within this work.
The time step is selected to be coupled with the Courant number. OpenFOAM auto-
matically adjusts the time step based on a certain Courant number, which is in this case
chosen to be CF L = 1.

For the steady state simulation the solver MRFSimpleFoam was used, for the transient
case PimpleDyMFoam. Both solvers were validated with measurement data from the
MEXICO project [3], [34]. Important files of the OpenFOAM set-up can be found within
the Appendix at the end of this work.

91
7. Evaluation and Comparison

7. Evaluation and Comparison


In this chapter, the results of the conducted simulations will be evaluated and compared.
First the steady state results will be investigated, in a second step, the transient results
will be described.

7.1. Steady state simulation results


7.1.1. Preparation
The first step of the post-processing is the evaluation of the numerical solution of the
conducted simulations. Most important key parameter are hereby the convergence be-
havior of the iterative solution process and the size of the residuals, which describe the
difference between two iteration steps. As two different CFD tools are to be compared
within this work, a common parameter has to be defined which both CFD simulations
have to fulfill. As the residuals of the flow quantities could be defined differently for both
simulation tools, the aerodynamic power output of the wind turbine will be used as the
key convergence parameter. Each simulation will be stopped after the calculated aero-
dynamic power output of the wind turbine reached convergence. Figure 7.1 shows the
monitored aerodynamic power output in OpenFOAM. Convergence was reached after
30000 iterations.

Figure 7.1.: Convergence of aerodynamic power output in OpenFOAM

92
7. Evaluation and Comparison

Figure 7.2 illustrates the monitored aerodynamic power output in ANSYS CFX. Con-
vergence was reached after 5000 iterations.

Figure 7.2.: Convergence of aerodynamic power output in ANSYS CFX

ANSYS CFX OpenFOAM


Required iterations 5000 30000
Number of used processors 120 240
Required calculation time 86 hours 72 hours
Required CPU hours 10320 17280

Table 7.1.: Required computational power

As stated in Table 7.1, the chosen parameter reached convergence in both simulations.
Based on the listed data, the calculation in ANSYS CFX was almost two times faster
than the calculation in OpenFOAM. It has to be noticed, that the selection of the solver
settings for ANSYS CFX and especially for OpenFOAM require a lot of experience.
Therefore a certain speed up for both simulations could probably being achieved by us-
ing optimized solver parameters. Due to this, the comparison of computational effort is
not representative and has to be seen as a general order of magnitude.

Both simulations were conducted on the FLOW (Facility for Large-scale COmputations
in Wind Energy Research) cluster of the university of Oldenburg [4], the simulations are
conducted by using scripts which enable the use of ANSYS CFX-Solve and OpenFOAM
on the linux based cluster.

To ensure the comparability of the results, especially for the coloured plots, both results

93
7. Evaluation and Comparison

have to be post-processed using the same post-processing software. In this case the result
of ANSYS CFX was exported by using the Ensight format through CFX-Solve. The
Ensight format is supported by Paraview [35], which is used for the post-processing
of the results within this work. In the case of OpenFOAM, the resulting velocities Ur el
used for the velocity distribution plots have to be extracted by using the tool Urel,
which is provided by the OpenFOAM community [11].

7.1.2. Aerodynamic power output


The first key parameter which is used to evaluate the performance of wind turbines
is the calculated aerodynamic power output. For both CFD tools, the power output
is calculated based on the pressure forces acting on the blades and the viscous forces
interacting between the blade surface and the fluid. Within ANSYS CFX the torque
function is used to obtain the torque produced by the rotor blades in respect to their
rotation axis, in OpenFOAM the turboPerformance library [36] is used to calculate
the torque. The power output can then be calculated by using the following equation:
n
Paero = M 2 , (7.1)
60
where M is the torque in respect to the rotation axis and n rotational speed in rpm.
The results for the calculated aerodynamic power output of the wind turbine are listed
in Table 7.2.

ANSYS CFX OpenFOAM


Calculated aerodynamic power 1.998 MW 1.981 MW
Power coefficient CP 0.33 0.33

Table 7.2.: Steady state simulation results: Power output

The results from both ANSYS CFX and OpenFOAM can be considered as similar. While
ANSYS CFX calculated a power output of Paero = 1.998M W , OpenFOAM calculated
Paero = 1.981M W . The difference between both results amounts to 0.018 MW, which
corresponds to a difference of less than 1% in relation to the ANSYS CFX result. Ac-
cording to the received wind turbine specifications of the IWES turbine, the optimized
blade is supposed to produce an aerodynamic power output of 2.7 MW (calculated with
BLADED). The low power output of the investigated wind turbine geometry might be
a reason for the conducted optimization.

Taking a look at the the power coefficient CP gives the same impression. Regarding
the power coefficient, the turbine performance can be rated as rather inefficient. While
actual wind turbines reach power coefficients of CP > 0.45, the simulated turbine reaches
in both CFD tools only a power coefficient of CP 0.33.

94
7. Evaluation and Comparison

7.1.3. Pressure distribution on the blade


In the second part of the steady state result evaluation, the pressure distribution on and
around the blades is being investigated. As the tower effect cannot be taken account
within a steady state simulation, only the upward pointed blade of the wind turbine
will be investigated (as illustrated in Figure 4.1). Figure 7.3 illustrates the pressure
distribution on the pressure side of the blade.

(a) OpenFOAM 2.1.1 (b) ANSYS CFX 14.5

Figure 7.3.: Pressure distribution on the pressure side of the blade

The difference in this case between both CFD tools can be considered as marginal. The
pressure distribution calculated in OpenFOAM shows a slightly stronger magnitude in
the center of the outer section of the blade (marked by a black arrow). For all other
regions the results conform.

95
7. Evaluation and Comparison

In contrast to the pressure side, the pressure distribution on the suction side of the
blade shows larger differences. Figure 7.4 illustrates that the inner and the central
part of the blade conform whereas the pressure distributions in the outer blade section
differ (marked by black arrows). While the contours of the suction areas are similar,
the magnitude of the pressure calculated by ANSYS CFX in the outer blade region is
larger than the OpenFOAM result. In addition, ANSYS CFX predicts an area of higher
pressure near the trailing edge.

(a) OpenFOAM 2.1.1 (b) ANSYS CFX 14.5

Figure 7.4.: Pressure distribution on the suction side of the blade

In the next step of the evaluation, different blade sections will be investigated more in
detail. Slice cuts will be used to investigate the flow around different blade regions. This
is conducted for three sections, the outer blade section, the central blade section and the
inner blade section. In addition, the tip region will be investigated.

96
7. Evaluation and Comparison

7.1.4. Tip blade section


The first blade region, which will be investigated in more detail, is the blade tip. The
pressure distribution on the blade surface around the blade tip calculated by both CFD
tools can be considered as similar. Figure 7.5 illustrates the pressure distribution on
the pressure side near the blade tip. It can be observed, that the results conform in
both magnitude and contour for most areas. Only near the leading edge of the blade,
the result of ANSYS CFX shows a slightly higher magnitude of the pressure values.
An investigation of the pressure values on the suction side of the blade tip area, shows
similar phenomena. The contour of the calculated values conform, but ANSYS CFX
predicts a slightly higher magnitude of the pressure values.

(a) OpenFOAM 2.1.1

(b) ANSYS CFX 14.5

Figure 7.5.: Pressure distribution on the blade surface around the blade tip

One interesting issue can be observed when looking at the calculated turbulence quanti-
ties. While the kinetic energy k is calculated in a very similar way within both ANSYS
CFX and OpenFOAM, the values for the specific turbulent dissipation differ signifi-
cantly. Figure 7.6 illustrates the calculated values of near the tip region. While the
contour of the predicted distribution can be considered as similar, the magnitude of the
calculated values within OpenFOAM are almost twice as large as the values calculated
by ANSYS CFX. This phenomena can be observed on the complete blade geometry.
The evaluation of the effect of this difference is difficult without measurement data to

97
7. Evaluation and Comparison

compare with. As the pressure and the turbulent kinetic energy are calculated in a
similar way by both programs, the effect of this difference on the results of these steady
state simulations is estimated to be small.

The reason for the difference is complex to investigate as the code of ANSYS CFX is not
open and therefore cannot be compared to OpenFOAM. Most probably it is caused by
different wall functions for or/and a slightly different implemented turbulence model
(constants etc..).

(a) OpenFOAM 2.1.1

(b) ANSYS CFX 14.5

Figure 7.6.: calculated on the blade surface around the blade tip

98
7. Evaluation and Comparison

7.1.5. Outer blade section


The next blade region, which will be investigated, is the outer section of the blade. As
this section faces high wind velocities due to the high rotational speed of the blade in
the outer region, the major part of the torque used to rotate the wind turbine rotor is
generated within this blade section.

Figure 7.7 illustrates a slice cut through the rotor blade at r/R = 0.96 which corresponds
to a radius of r = 48m. The chord length of the blade section amounts to C = 1.5m. The
contour of the pressure distribution around the blade in general seems very similar but
shows slightly differences in some areas. In comparison to OpenFOAM, the magnitude of
the pressure values around the stagnation point is calculated slightly larger with ANSYS
CFX. This is effect can observed even stronger for the acceleration area on the suction
side of the blade.

(a) OpenFOAM 2.1.1

(b) ANSYS CFX 14.5

Figure 7.7.: Pressure distribution around blade at r/R = 0.96

Another phenomena one can observe, is the small suction area near the trailing edge in

99
7. Evaluation and Comparison

the OpenFOAM result (marked by black arrow on Figure 7.7). This small area seems
to effect the flow surrounding it, while the ANSYS CFX result does not show a similar
behaviour of the flow. Figure 7.8 illustrates a detailed view of the calculated pressure
values for each cell near the trailing edge of the OpenFOAM result. Due to the significant
difference between the calculated values of the large and the small cells (marked by black
arrow), the results for those cells should be treated with care, as such difference at this
particular position seems not realistic. The occurrence of such flow phenomena within
the OpenFOAM results could be caused by the small mesh cell size in this area. In
addition, the abrupt transition between the small and the long and thin cells seems to
be a problem for the OpenFOAM solver.

Figure 7.8.: Critical cells at trailing edge (r/R = 0.96)

Investigating the normalized pressure coefficient cp calculated on the blade surface at


r/R = 0.9, confirms the problem of the OpenFOAM solver with the small cells at the
trailing edge.

Figure 7.9.: Pressure coefficient on blade surface at r/R = 0.96

100
7. Evaluation and Comparison

Figure 7.9 illustrates that the values calculated by OpenFOAM at the eight grid points
describing the trailing edge (x/C = 1) appear to be wrong (marked by black arrow in
Figure 7.9). In contrast to that, the values calculated by ANSYS CFX at the trail-
ing edge seem to be more realistic. In addition, OpenFOAM predicts a small pressure
plateau near the trailing edge, this could be related to detachment of the flow, the AN-
SYS CFX result does not show this phenomena. The rest of the cp -curve matches well.
The pressure coefficients for suction and pressure side of the blade surface are calculated
in a similar way with both CFD tools. This might be the reason for the similar aero-
dynamic power output calculated by both programs. Although the magnitude of the
calculated pressure values differ, the normalized values conform.

In the last part of the investigation of the outer blade section, the velocity distribution
around the blade at r/R = 0.9 is evaluated.

(a) OpenFOAM 2.1.1

(b) ANSYS CFX 14.5

Figure 7.10.: Velocity distribution around blade at r/R = 0.96

Figure 7.10 reveals, that both CFD tools calculated conform magnitudes for the veloc-

101
7. Evaluation and Comparison

ity and the contour of the acceleration area on the suction side of the blade seems to
match. The stagnation point is predicted in a similar way for both shape and magni-
tude. Furthermore, both ANSYS CFX and OpenFOAM predict the development of a
boundary layer on the suction side within the second half of the profile (marked by black
arrow in Figure 7.10). In addition, the OpenFOAM result shows a small area where the
flow detaches near the trailing edge. This explains the pressure plateau observed when
investigating the pressure coefficients on the blade surface.

7.1.6. Central blade section


The next step of the investigation focusses on the central section of the blade. Although
the section faces smaller rotational speeds than the outer blade section, the influence
on the torque production is clearly noticeable. In general, it can be stated that the
investigation of the flow around the central blade section shows similar phenomena as
the flow around the outer blade section. Figure 7.11 shows the pressure distribution in
the flow around the blade at r/R = 0.7, which corresponds to a radius of r = 35m. The
chord length of the airfoil is C = 1.9m.

(a) OpenFOAM 2.1.1

(b) ANSYS CFX 14.5

Figure 7.11.: Pressure distribution around blade at r/R = 0.70

102
7. Evaluation and Comparison

Again, the contours of the pressure distribution around the blade section calculated by
both tools seem to match. ANSYS CFX predicts a stronger magnitude of the pres-
sure values both for the stagnation point and the acceleration area on the suction side.
In addition, the suction spot near the trailing edge can be observed within the pres-
sure distribution calculated by OpenFOAM. An investigation of the spot at the radius
r/R = 0.70 shows the same problematic cells as described for Figure 7.8.

The normalized pressure coefficient calculated on the blade surface is illustrated in Figure
7.12. In general, the results for both ANSYS CFX and OpenFOAM can be considered as
similar. Probably related to the small cells, OpenFOAM calculated unrealistic pressure
values around the trailing edge. In addition the pressure plateau can be observed again
within the OpenFOAM result. The rest of the curves can be described as matching,
although the maximum values reached at the front part of the blade differ slightly.

Figure 7.12.: Pressure coefficient on blade surface at r/R = 0.70

In addition to the pressure distribution, the velocity distribution is investigated for this
section. As illustrated in Figure 7.13, magnitude and contour of the distribution look
similar for both CFD tools, except the area around the trailing edge, which shows minor
differences. In comparison to the outer blade section, where the detachment of flow can
only slightly be observed, the effect of the detachment can clearly be noticed for this
blade section (marked by black arrow in Figure 7.13).

103
7. Evaluation and Comparison

One interesting phenomena which can be observed on both figures, is the prediction
of the boundary layer already near the leading edge of the blade. As both CFD tools
calculated this phenomenon in a very similar way, the early development might results
from an inappropriate choice of the twist angle of this particular blade section.

The starting point of the boundary layer is marked in both figures by a black arrow. To
improve the aerodynamic performance of the blade, a larger twist angle of the central
blade section could help to prevent such an early flow separation. The appearance of
such phenomena could be a reason for the optimization of the blade geometry after
this thesis started, as such early development of a boundary layer can result in a bad
performance of the blade section.

(a) OpenFOAM 2.1.1

(b) ANSYS CFX 14.5

Figure 7.13.: Pressure distribution around blade at r/R = 0.70

104
7. Evaluation and Comparison

7.1.7. Inner blade section


The next region of the blade, which will be investigated, is the inner blade section. Due
to the small rotational speed of this blade section, the effect on the torque generation can
be considered as rather small. Still, for the comparison of ANSYS CFX and OpenFOAM
this blade section is interesting, as flow detachment can expected due to the thick blade
geometry. As before, the pressure distribution is investigated first. Figure 7.14 shows
the pressure distribution in the flow around the blade at r/R = 0.3, which corresponds
to a radius of r = 15m. The chord length of the airfoil amounts to C = 3.6m.

(a) OpenFOAM 2.1.1

(b) ANSYS CFX 14.5

Figure 7.14.: Pressure distribution around blade at r/R = 0.30


the

It can be observed that the differences between the results of both CFD tools again are
marginal. Like before, the magnitude of the values calculated by ANSYS CFX is larger,
whereas the contour of the different pressure areas is similar.

105
7. Evaluation and Comparison

In contrast to that, an investigation of the pressure coefficient Cp on the blade surface


reveals some interesting differences. Figure 7.15 shows, that OpenFOAM predicts a
pressure plateau at x/C 0.6 (marked by black arrow). This indicates a separation
of flow within this area. After x/C 0.8, the flow seems to attach to the wall again,
which can be considered as unrealistic. The result of ANSYS CFX does not predict the
pressure plateau at x/C 0.6, but shows a plateau-like progression on the suction side
near the trailing edge. This indicates a detachment of flow near in this area within the
ANSYS CFX result. The rest of the curves seem to match, even for the acceleration
area on the suction side, where slight differences could be observed in the outer regions
of the blade.

Figure 7.15.: Pressure coefficient on blade surface at r/R = 0.30

Investigating the velocity distribution confirms the difference between OpenFOAM and
ANSYS CFX. Figure 7.16 on the next page reveals, that OpenFOAM predicts a flow
separation x/C 0.6. It can be observed, that after some time the flow re-attaches to
the blade surface (marked by black arrow), which can be considered as not realistic. This
issue could be caused by problems with the small mesh cells reproducing the trailing edge
as stated before. They affect the surrounding flow and could cause the re-attachment.
The more realistic prediction can be observed in ANSYS CFX. The values show a clear,
reasonable detachment of the flow near the trailing edge. The stagnation point on the
pressure side and the acceleration area on the suction side seem similar calculated. Both
magnitude and contour of the values match. As the inner part of the blade does not
have a large influence on the torque generation, the consequence on the aerodynamic
power output of this issue can be considered as small.

106
7. Evaluation and Comparison

(a) OpenFOAM 2.1.1

(b) ANSYS CFX 14.5

Figure 7.16.: Pressure distribution around blade at r/R = 0.30

7.1.8. Axial forces


In the last part of the evaluation of the steady state simulation results, the axial forces
acting on the rotor are investigated. Similar to the calculation of the aerodynamic power
output, the values are based on both pressure and viscous forces. Within ANSYS CFX-
Post the force function was used to calculate the axial forces, within OpenFOAM the
turboPerfomance library [36]. Table 7.3 lists the calculated axial forces which act on
the turbine.
ANSYS CFX OpenFOAM
Calculated axial forces 289.46 kN 316.07 kN
Trust coefficient CT 0.53 0.58

Table 7.3.: Steady state simulation results: Axial forces

It can be observed, that the predicted axial forces acting on the turbine are in the
same order of magnitude. OpenFOAM calculated an axial force of Faxial = 316.07kN ,
whereas ANSYS calculated Faxial = 289.46kN . The difference between both amounts to
4Faxial = 26.61kN which is equal to a difference of 8.4 % in relation to the OpenFOAM

107
7. Evaluation and Comparison

result. This is a significant difference when estimating the axial forces acting on the wind
turbine. The reason for this might be found in the different magnitudes of the pressure
values both CFD tools calculated, as for the axial forces especially the leading-region of
the blade is of importance.

7.2. Transient simulation results


Within this work, it was planned to conduct transient simulation within both Open-
FOAM and ANSYS CFX. During the set-up of the simulations and the testing of solver
different parameters it showed that the transient simulations are by far more time con-
suming than expected.

7.2.1. Transient simulation in OpenFOAM


The conduction of transient simulations within OpenFOAM had to be aborted. The
abortion results mainly from the enormous amount of time which would be needed to
simulate transient behaviour of a complete wind turbine.

The first problem, which occurred, was the unstable behaviour of the simulation when
using the structured grid generated with ANSYS ICEM CFD. Due to the small cell size
of the mesh near the trailing edge and in contrast to that, the enlarged and thin cells
within the structured far field, it was not possible to stabilize the simulation. Even un-
der use of the robust upwind discretization scheme, the use of the one equation Spalart
Allmaras turbulence model and the use of small relaxation factors the situation did not
improve. After few iterations the residuals of the flow quantities exploded.

After a certain time of testing different set-ups, the generation of an unstructured grid
with ICON FOAMpro was decided to avoid the occurrence of very small cells within
the mesh. Using the unstructured mesh and the simple Spalart Allmaras turbulence
model, the simulation could be started and stabilized. As described in Section 6.3, the
time step was selected to be adjusted according to the Courant number. As the solv-
ing process was only stable for CF L < 1, time-steps in the order of 4 5e7 s were used.

As one rotation of the simulated turbine takes 4.6 seconds (13 rpm), about 9.2 million
time steps would be needed to calculate one rotation. Considering a calculation of 40
seconds for each time step, which occurred during the beginning of the solving process,
the computational time on 240 processor required for the calculation of one rotation
would be 11.5 years. This is of course an extreme number, which is based on the com-
putational time needed for the first iterations. As the calculation time required for each
time step will decrease with the simulation time, the calculation for one rotation will
take less time. However, this shows how time consuming transient simulations of com-
plete wind turbines are.

108
7. Evaluation and Comparison

After one week of calculation on the FLOW cluster using 240 processors, a time period
of 0.008 seconds had been computed. Because of this slow process, the simulation was
aborted.

Several possibilities exist to speed such large simulations within OpenFOAM up. First,
the optimization of both mesh and solver parameters can be used to achieve faster
calculation times per time step. In addition, the decomposition methods, which are used
to divide the computational domain into pieces for parallel computing, implemented in
OpenFOAM, are not optimized for the use of GGI/AMI grid interfaces. The calculation
of those interfaces on only processor could result in a significant speed up the transient
simulation in OpenFOAM. As the implementation of this approach is still in progress, it
could not be used within this work. Another possibility would be to start the simulation
using a coarse version of the grid to obtain a pre-solution for the fine grid. As for the
conducted simulation only a pre-solution calculated by the potentialFoam solver was
used, this could lead to faster and more stable simulation. On the other hand, this
approach requires a second, more coarse mesh.

7.2.2. Transient simulation in ANSYS CFX


The transient simulation of complete wind turbines in ANSYS CFX faced similar funda-
mental problems as in OpenFOAM. First of all, CFX-Solve is able to handle very small
cells, also for transient runs. Therefore the structured mesh could be used without any
stability issues. In addition, the ANSYS CFX solver is not sensitive towards the Courant
number. In test simulations, the simulation could be conducted even under use of very
high Courant numbers as CF L > 1000. Due to this solver ability, the time steps can be
chosen much larger than in OpenFOAM, which results in much lower calculation times.
On the other hand, the selection of such high Courant numbers can lead to inaccurate
results for the affected mesh cells. To limit the errors caused by the Courant number,
the Courant number of the conducted simulation was reduced to CF L 130. Still,
this is a very high value and inaccuracy can be expected. The advantage of taking high
Courant number into account is a large time step of 4 1e4 s, which is 200 times larger
than the time step selected for the transient simulation within OpenFOAM. Therefore
ANSYS CFX needs to calculate 200 times less time steps in comparison to OpenFOAM
in this case.

Table 7.4 lists information about the conducted simulation in ANSYS CFX.
Due to the limited time frame of this work, the transient simulation within ANSYS
CFD could only be conducted for 30 days. Under use of 96 processors, a time period
of 0.44 seconds was simulated. This amounts to 10 % of one rotation. The number of
used processors was limited by the cluster management due to the high RAM memory
consumption of ANSYS CFX. Similar to the steady state simulations, the calculated
aerodynamic power output of the wind turbine is evaluated first. For the last time step
of the simulation, the aerodynamic power output was calculated with 3.37 MW. In com-
parison to the steady state result, the value is more than 1.5 times larger.

109
7. Evaluation and Comparison

ANSYS CFX
Calculated time steps 4426
Used time step 0.0001
Number of used processors 96
Required calculation time 30 days
Simulated time period 0.4426 seconds
Aerodynamic power output (last time step) 3.37 MW

Table 7.4.: Transient preliminary simulation results

The reason for this high predicted aerodynamic power output can probably be found in
two reasons. First, the result is not converged yet, as for a converged results more time
steps would be needed. For small wind turbines at least two rotations are required to
obtain converged results, for large wind turbines maybe less. The second reason is the
high maximum Courant number. As the small cells facing high flow velocities can be
found near the blade geometry, it is probable that both velocity and pressure calcula-
tions for the cells near the blade geometry are not accurate. As the aerodynamic power
output is based on the results obtained for these cells, the maximum Courant number
has a significant influence on the aerodynamic power output.

As the aerodynamic power output is not correctly predicted, the velocity and pressure
distribution are not evaluated. For a serious investigation of the tower effect more
accurate results combined with a longer simulation time would be required.

110
8. Conclusion

8. Conclusion
Within this master thesis, the simulation of a complete 2.5 MW wind turbine under use
of the commercial CFD package ANSYS CFX and the open source CFD toolbox Open-
FOAM was successfully conducted. Starting with a comprehensive literature study of
both CFD and wind turbine theory, which laid a solid foundation for the successful treat-
ment of the given problem, a big amount of work was invested into the generation and
optimization of a fully structured mesh for the complete wind turbine using the meshing
tool ANSYS ICEM CFD. For the first time at the CFD group of ForWIND/Fraunhofer
IWES in Oldenburg, it has been achieved to create a structured mesh for a complete
wind turbine, which fulfils the high cell quality requirements of OpenFOAM.

In the second part of the thesis, the set-up of the simulations within both CFD tools
was tested. Especially for OpenFOAM, intensive preparations were required. During
this part of the work, the configuration of interfaces, used for the connection of non-
conformal meshes, and the set-up of rotating meshes was tested within OpenFOAM. At
the end, a respectable series of different simulations set-ups had been tested to obtain
the optimal settings for the conduction of the simulation.

In the last part, both steady state and transient simulations were started. It showed,
that simulations of complete wind turbines can still be considered as a challenge for both
ANSYS CFX and OpenFOAM. Not only the mesh size of 52 million cells, but also issues
as very small mesh cells caused by the complex blade geometry in combination with the
structured grid concept, resulted in a slow convergence behaviour and solver instabili-
ties. Still, steady state simulation were successfully conducted within both CFD tools
and could be compared. The post-processing of the results revealed a similar predicted
wind turbine performance. Although the calculations for pressure and velocity differ
slightly for both CFD tools from blade section to blade section and the axial forces are
calculated with a difference of 8 %, the overall aerodynamic power output of the turbine
is predicted almost identical (1% difference).

Due to a misunderstanding, the planned comparison of the results with data sets based
on BEM calculations could not be committed within the time frame of this thesis. Still,
the similar power output of the turbine and the realistic flow characteristics predicted
by both tools, make the results of the steady state simulations reasonable.

The conduction of transient simulations was problematic. Unsteady simulations for large
structures as wind turbines require enormous amounts of computational power indepen-
dent of the chosen simulation tool. Using ANSYS CFX, only 10% of one rotation could

111
8. Conclusion

be simulated within 30 days. Due to the high Courant number, which was taken into ac-
count to make a transient simulation within the limited time frame of this work possible,
the results are not accurate enough to evaluate them. In the case of ANSYS CFX more
simulation time and a smaller Courant number would be needed to obtain reasonable
results.

The transient simulation within OpenFOAM faced similar problems. First of all, the
transient OpenFOAM solver was not able to handle the small cells at the trailing edge
of the blade. Therefore a complete new unstructured mesh was generated using ICON
FOAMpro. Due to the unstructured mesh concept, those small cells could be avoided
and the solving process could be stabilized. Still, due to limitations by the Courant
number, after one week only 0.008 seconds could be simulated using 240 processors.
This shows the high effort in time and computational power required for conducting
transient simulation, especially within OpenFOAM. Based on the gained experience, it
seems as the conduction of a complete large wind turbine simulation can be considered
as not possible within a master thesis of five months.

This work shows, that the use of the CFD methods for a more accurate load calculation
in wind energy applications is useful. Both tools, the commercial ANSYS CFX and the
open source tool OpenFOAM, showed similar results. By using steady state simulations
and smaller meshes, it is possible to investigate important blade regions even on a
modern home computer, which is important for the industry. However, the conduction
of transient simulations will stay a challenge. Even the use of computational clusters,
like the FLOW cluster, results in long solving times.

112
Bibliography

Bibliography
[1] ANSYS CFX, ANSYS ICEM CFD. http://www.ansys.com, 2013.

[2] OpenFOAM project web pages. http://www.openfoam.org, 2013.

[3] Mexico Project. http://www.mexnext.org, 2013.

[4] FLOW (Facility for Large-scale COmputations in Wind Energy Research).


http://www.uni-oldenburg.de/fk5/scientific-computing/
hpc-facilities/flow, 2013.

[5] A.L. Rogers J.F Manwell, J.G McGowan. Wind Energy Explained - Theory, Design
and Application. Wiley, 2nd edition, 2009.

[6] Martin O.L. Hansen. Aerodynamics of Wind Turbines. EARTHSCAN, 2nd edition,
2008.

[7] Stefan Lecheler. Numerische Str omungsberechnung - Schneller Einstieg durch


uhrliche praxisrelevante Beispiele. View, 2009.
ausf

[8] Rudiger Schwarze. CFD-Modellierung - Grundlagen und Anwendungen bei


omungsprozessen. Springer Vieweg, 2013.
Str

[9] M. Peric J.H. Ferziger. Computational Methods for Fluid Dynamics. Springer, 3rd
edition, 2002.

[10] Deutsche WindGuard. Status des Windenergieausbaus in Deutschland (Erstes Hal-


bjahr 2012). 2012.

[11] CFD Online Forum. http://www.cfd-online.com, 2013.

[12] Albert Betz. Theoretical limit for best utilization of wind by wind-motors. Magazine
for the Entire Turbine System, 20:307309, 1920.

[13] CEwind eG / Alois Schaffarczyk. Einf


uhrung in die Windenergietechnik. Carl
Hanser Verlag GmbH & Co. KG, 2012.

[14] Erich Hau. Windkraftanlagen - Grundlagen, Technik, Einsatz, Wirtschaftlichkeit.


Springer, 2008.

[15] Herbert Oertel jr. Martin B


ohle, Thomas Reviol. Str
omungsmechanik - Grundlagen
- Grundgleichungen - L osungsmethoden - Softwarebeispiele. Vieweg+Teubner, 6th
edition, 2011.

113
Bibliography

[16] Stephen B. Pope. Turbulent Flows. Cambridge University Press, 2000.

[17] David C. Wilcox. Turbulence Modelling for CFD. DCW Industries, 1994.

[18] R. Langtry F. R. Menter, M. Kuntz. Ten Years of Industrial Experience with the
SST Turbulence Model. Turbulence, Heat and Mass Transfer, 4, 2003.

[19] Wolfgang K ummel. Technische Str


omungmechanik - Theorie und Praxis. Teubner,
3rd edition, 2007.

[20] Pierre Sagaut. Large Eddy Simulation for Incompressible Flows - An Introduction.
Springer, 3rd edition, 2006.

[21] ANSYS Inc. ANSYS CFX-Pre Users Guide, 2010.

[22] OpenFOAM Foundation. OpenFOAM User Guide, 2013.

[23] GL Garrad Hassan BLADED. http://www.gl-garradhassan.com, 2013.

[24] ICON FOAMpro. http://www.iconcfd.com/en/services/foampro, 2013.

[25] ANSYS Inc. ANSYS CFX Brochure - Release 13.0, 2010.

[26] OpenFOAM Wiki. http://openfoamwiki.net, 2013.

[27] The OpenFOAM Extend Project. http://www.extend-project.de, 2013.

[28] Hrvoje Jasak Beaudoin Martin. Development of a Generalized Grid Interface for
Turbomachinery simulations with OpenFOAM. Open Source CFD International
Conference 2008, Berlin, Germany, 2008.

[29] Thomas P. Lloyd. The OpenFOAM Generalised Grid Interface (Turbomachinery


simulations using OpenFOAM). 2011.

[30] J.R. Maddison P.E Farrell. Conservative interpolation between volume meshes by
local galerkin projection. Computer Methods in Applied Mechanics and Engineering,
200:89100, 2011.

[31] Hakan Nilsson. Turbomachinery training at OFW7. 7th OpenFOAM Workshop,


2012.

[32] Andre Jackson. A Comprehensive Tour of SnappyHexMesh. 7th OpenFOAM Work-


shop, 2012.

[33] Langley Research Center. The Spalart-Allmaras Turbulence Model. http://


turbmodels.larc.nasa.gov/spalart.html, 2012.

[34] Hu Zhou Decheng Wan, Qiang Wang. Numerical Simulation of Wind Turbine
Blade-Tower Interaction. Journal of Marine Science, 11:321327, 2012.

114
Bibliography

[35] Paraview - Open Source Scientific Visualization. http://www.paraview.org,


2013.

[36] Sig Turbomachinery Library turboPerformance. http://openfoamwiki.net/


index.php/Sig_Turbomachinery_Library_turboPerformance, 2013.

[37] Nils Kirrkamm. Aerodynamische Simulation einer Windkraftanlage mit dem Open-
Source code OpenFOAM. Masters thesis, Carl-von-Ossietzky Universitat Olden-
burg, 2010.

[38] Matthias Schramm. Berechnung einer turbulenten dreidimensionalen Stromung an


einer Windkraftanlage. Masters thesis, RWTH Aachen, 2011.

[39] Henry Plischka. Validierungsrechnung einer DES-simulation an den Messungen aus


dem MEXICO-Projekt mit OpenFOAM. Masters thesis, Hochschule Zittau/Gorlitz
(FH), 2012.

115
Appendix A. The 0/U file

Appendix A. The 0/U file

/ C++ \
| ========= | |
| \\ / F ield | OpenFOAM: The Open S o u r c e CFD Toolbox |
| \\ / O peration | Version : 2.1.0 |
| \\ / A nd | Web : www.OpenFOAM. o r g |
| \\/ M anipulation | |
\/
FoamFile
{
version 2.0;
format ascii ;
class volVectorField ;
location 0;
object U;
}
// //

dimensions [ 0 1 1 0 0 0 0 ] ;

internalField uniform (0 10.8 0) ;

boundaryField
{
FLUID INLET
{
type fixedValue ;
value uniform (0 10.8 0) ;
}
FLUID OUTLET
{
type zeroGradient ;
}
FLUID SYM
{
type slip ;
}
FLUID GROUND
{
type slip ;
}

ROTOR DISK INLET


{
type cyclicAMI ;
value $ i n t e r n a l F i e l d ;
}
ROTOR DISK OUTLET
{
type cyclicAMI ;
value $ i n t e r n a l F i e l d ;

116
Appendix A. The 0/U file

}
ROTOR DISK SYM
{
type cyclicAMI ;
value $ i n t e r n a l F i e l d ;
}
DISK INLET
{
type cyclicAMI ;
value $ i n t e r n a l F i e l d ;
}
DISK SYM
{
type cyclicAMI ;
value $ i n t e r n a l F i e l d ;
}
DISK OUTLET
{
type cyclicAMI ;
value $ i n t e r n a l F i e l d ;
}

BLADE
{
type fixedValue ;
value uniform (0 0 0) ;
}
BLADE COPY1
{
type fixedValue ;
value uniform (0 0 0) ;
}
BLADE COPY2
{
type fixedValue ;
value uniform (0 0 0) ;
}

HUB
{
type fixedValue ;
value uniform (0 0 0) ;
}

TOWER
{
type fixedValue ;
value uniform (0 0 0) ;
}

NACELLE
{
type fixedValue ;
value uniform (0 0 0) ;
}

// //

117
Appendix B. The 0/p file

Appendix B. The 0/p file

/ C++ \
| ========= | |
| \\ / F ield | OpenFOAM: The Open S o u r c e CFD Toolbox |
| \\ / O peration | Version : 2.1.0 |
| \\ / A nd | Web : www.OpenFOAM. o r g |
| \\/ M anipulation | |
\/
FoamFile
{
version 2.0;
format ascii ;
class volScalarField ;
location 0;
object p;
}
// //

dimensions [ 0 2 2 0 0 0 0 ] ;

internalField uniform 0 ;

boundaryField
{
FLUID INLET
{
type zeroGradient ;
}
FLUID OUTLET
{
type fixedValue ;
value uniform 0 ;
}
FLUID SYM
{
type s l i p ; // S l i p w a l l s
}
FLUID GROUND
{
type s l i p ; // S l i p w a l l s
}

ROTOR DISK INLET


{
type cyclicAMI ;
value $ i n t e r n a l F i e l d ;
}
ROTOR DISK OUTLET
{
type cyclicAMI ;
value $ i n t e r n a l F i e l d ;
}
ROTOR DISK SYM

118
Appendix B. The 0/p file

{
type cyclicAMI ;
value $ i n t e r n a l F i e l d ;
}
DISK INLET
{
type cyclicAMI ;
value $ i n t e r n a l F i e l d ;
}
DISK SYM
{
type cyclicAMI ;
value $ i n t e r n a l F i e l d ;
}
DISK OUTLET
{
type cyclicAMI ;
value $ i n t e r n a l F i e l d ;
}

BLADE
{
type zeroGradient ;
}
BLADE COPY1
{
type zeroGradient ;
}
BLADE COPY2
{
type zeroGradient ;
}

HUB
{
type zeroGradient ;
}

TOWER
{
type zeroGradient ;
}

NACELLE
{
type zeroGradient ;
}
}

// //

119
Appendix C. The 0/omega file

Appendix C. The 0/omega file

/ C++ \
| ========= | |
| \\ / F ield | OpenFOAM: The Open S o u r c e CFD Toolbox |
| \\ / O peration | Version : 2.1.1 |
| \\ / A nd | Web : www.OpenFOAM. o r g |
| \\/ M anipulation | |
\/
FoamFile
{
version 2.0;
format ascii ;
class volScalarField ;
object omega ;
}
// //

dimensions [ 0 0 1 0 0 0 0 ] ;

internalField uniform 0 . 0 0 6 6 1 3 6 ; // l =100m

boundaryField
{
FLUID INLET
{
type fixedValue ;
value uniform 0 . 0 0 6 6 1 3 6 ;
}
FLUID OUTLET
{
type zeroGradient ;
}
FLUID SYM
{
type s l i p ; // S l i p w a l l s
}
FLUID GROUND
{
type s l i p ; // S l i p w a l l s
}

ROTOR DISK INLET


{
type cyclicAMI ;
value $ i n t e r n a l F i e l d ;
}
ROTOR DISK OUTLET
{
type cyclicAMI ;
value $ i n t e r n a l F i e l d ;
}
ROTOR DISK SYM
{

120
Appendix C. The 0/omega file

type cyclicAMI ;
value $ i n t e r n a l F i e l d ;
}
DISK INLET
{
type cyclicAMI ;
value $ i n t e r n a l F i e l d ;
}
DISK SYM
{
type cyclicAMI ;
value $ i n t e r n a l F i e l d ;
}
DISK OUTLET
{
type cyclicAMI ;
value $ i n t e r n a l F i e l d ;
}

BLADE
{
type omegaWallFunction ;
value $internalField ;
}
BLADE COPY1
{
type omegaWallFunction ;
value $internalField ;
}
BLADE COPY2
{
type omegaWallFunction ;
value $internalField ;
}

HUB
{
type omegaWallFunction ;
value $internalField ;
}

TOWER
{
type omegaWallFunction ;
value $internalField ;
}

NACELLE
{
type omegaWallFunction ;
value $internalField ;
}
}

// //

121
Appendix D. The 0/k file

Appendix D. The 0/k file

/ C++ \
| ========= | |
| \\ / F ield | OpenFOAM: The Open S o u r c e CFD Toolbox |
| \\ / O peration | Version : 2.1.1 |
| \\ / A nd | Web : www.OpenFOAM. o r g |
| \\/ M anipulation | |
\/
FoamFile
{
version 2.0;
format ascii ;
class volScalarField ;
object k;
}
// //

dimensions [ 0 2 2 0 0 0 0 ] ;

internalField u n i f o r m 0 . 4 3 7 5 ; // k=3/2 (U I )

boundaryField
{
FLUID INLET
{
type fixedValue ;
value uniform 0 . 4 3 7 5 ;
}
FLUID OUTLET
{
type zeroGradient ;
}
FLUID SYM
{
type s l i p ; // S l i p w a l l s
}
FLUID GROUND
{
type s l i p ; // S l i p w a l l s
}

ROTOR DISK INLET


{
type cyclicAMI ;
value $ i n t e r n a l F i e l d ;
}
ROTOR DISK OUTLET
{
type cyclicAMI ;
value $ i n t e r n a l F i e l d ;
}
ROTOR DISK SYM
{

122
Appendix D. The 0/k file

type cyclicAMI ;
value $ i n t e r n a l F i e l d ;
}
DISK INLET
{
type cyclicAMI ;
value $ i n t e r n a l F i e l d ;
}
DISK SYM
{
type cyclicAMI ;
value $ i n t e r n a l F i e l d ;
}
DISK OUTLET
{
type cyclicAMI ;
value $ i n t e r n a l F i e l d ;
}

BLADE
{
type kqRWallFunction ;
value $internalField ;
}
BLADE COPY1

{
type kqRWallFunction ;
value $internalField ;
}
BLADE COPY2
{
type kqRWallFunction ;
value $internalField ;
}
HUB
{
type kqRWallFunction ;
value $internalField ;
}

TOWER
{
type kqRWallFunction ;
value $internalField ;
}

NACELLE
{
type kqRWallFunction ;
value $internalField ;
}
}

// //

123
Appendix E. The system/fvSolution file

Appendix E. The system/fvSolution file

/ C++ \
| ========= | |
| \\ / F ield | OpenFOAM: The Open S o u r c e CFD Toolbox |
| \\ / O peration | Version : 2.1.x |
| \\ / A nd | Web : www.OpenFOAM. o r g |
| \\/ M anipulation | |
\/
FoamFile
{
version 2.0;
format ascii ;
class dictionary ;
location system ;
object fvSolution ;
}
// //

solvers
{
p
{
solver GAMG;
tolerance 1 e 07;
relTol 0.05;
smoother GaussSeidel ;
cacheAgglomeration true ;
nCellsInCoarsestLevel 20;
agglomerator faceAreaPair ;
mergeLevels 1;
}
pFinal
{
solver GAMG;
tolerance 1 e 07;
relTol 0;
smoother GaussSeidel ;
cacheAgglomeration true ;
nCellsInCoarsestLevel 10;
agglomerator faceAreaPair ;
mergeLevels 1;
}
U
{
solver smoothSolver ;
smoother GaussSeidel ;
nSweeps 2;
tolerance 1 e 07;
relTol 0.1;
}
k
{
solver smoothSolver ;

124
Appendix E. The system/fvSolution file

smoother GaussSeidel ;
tolerance 1 e 7;
relTol 0.1;
nSweeps 2;
}
omega
{
solver smoothSolver ;
smoother GaussSeidel ;
tolerance 1 e 7;
relTol 0.1;
nSweeps 2;
}

}
SIMPLE
{
nNonOrthogonalCorrectors 2 ;
pRefCell 0;
pRefValue 0;

residualControl
{
p 1 e 6;
U 1 e 6;
nuTilda 1 e 6;
nut 1 e 6;
nuSgs 1 e 6;
omega 1 e 6;
}
}

potentialFlow
{
}

relaxationFactors
{
fields
{
p 0.1;
}
equations
{
U 0.3;
k 0.1;
omega 0.1;

}
}

// //

125
Appendix F. The system/fvSchemes file

Appendix F. The system/fvSchemes file

/ C++ \
| ========= | |
| \\ / F ield | OpenFOAM: The Open S o u r c e CFD Toolbox |
| \\ / O peration | Version : 2.1.0 |
| \\ / A nd | Web : www.OpenFOAM. o r g |
| \\/ M anipulation | |
\/
FoamFile
{
version 2.0;
format ascii ;
class dictionary ;
object fvSchemes ;
}
// //

ddtSchemes
{
default steadyState ;
}

gradSchemes
{
default Gauss l i n e a r ;
grad ( p ) Gauss l i n e a r ;
grad (U) Gauss l i n e a r ;
}

divSchemes
{
default none ;
d i v ( phi ,U) Gauss l i m i t e d L i n e a r V 1 ;
d i v ( phi , k ) Gauss l i m i t e d L i n e a r 1 ;
d i v ( phi , e p s i l o n ) Gauss l i m i t e d L i n e a r 1 ;
d i v ( phi , n u T i l d a ) Gauss l i m i t e d L i n e a r 1 ;
d i v ( ( n u E f f dev (T( grad (U) ) ) ) ) Gauss l i n e a r ;
d i v ( phi , omega ) Gauss l i m i t e d L i n e a r 1 ;
}

laplacianSchemes
{
default none ;
l a p l a c i a n ( nuEff ,U) Gauss l i n e a r c o r r e c t e d ;
l a p l a c i a n ( ( 1 | A(U) ) , p ) Gauss l i n e a r c o r r e c t e d ;
l a p l a c i a n ( DkEff , k ) Gauss l i n e a r c o r r e c t e d ;
l a p l a c i a n ( D e p s i l o n E f f , e p s i l o n ) Gauss l i n e a r c o r r e c t e d ;
l a p l a c i a n ( 1 , p ) Gauss l i n e a r c o r r e c t e d ;
l a p l a c i a n ( DnuTildaEff , n u T i l d a ) Gauss l i n e a r c o r r e c t e d ;
l a p l a c i a n ( DomegaEff , omega ) Gauss l i n e a r c o r r e c t e d ;
}

interpolationSchemes

126
Appendix F. The system/fvSchemes file

{
default linear ;
i n t e r p o l a t e (U) linear ;
}

snGradSchemes
{
default corrected ;
}

fluxRequired
{
default no ;
p ;
}

// //

127
Appendix G. The constant/MRFZones file

Appendix G. The constant/MRFZones file

/ C++ \
| ========= | |
| \\ / F ield | OpenFOAM: The Open S o u r c e CFD Toolbox |
| \\ / O peration | Version : 1.5 |
| \\ / A nd | Web : h t t p : / /www.OpenFOAM. o r g |
| \\/ M anipulation | |
\/
FoamFile
{
version 2.0;
format ascii ;
class dictionary ;
object MRFZones ;
}
// //

1
(
BLOCK
{
// Fixed p a t c h e s ( by d e f a u l t t h e y move with t h e MRF zone )
n o n R o t a t i n g P a t c h e s (DISK SYM DISK INLET DISK OUTLET ROTOR DISK INLET
ROTOR DISK SYM ROTOR DISK OUTLET) ;

origin origin [0 1 0 0 0 0 0] (0 0 0) ;
axis axis [0 0 0 0 0 0 0] (0 1 0) ;
omega omega [ 0 0 1 0 0 0 0 ] 1.361356817;
}
)
// //

128
Appendix H. The constant/polyMesh/boundary file

Appendix H. The
constant/polyMesh/boundary
file
/ C++ \
| ========= | |
| \\ / F ield | OpenFOAM: The Open S o u r c e CFD Toolbox |
| \\ / O peration | Version : 2.1.1 |
| \\ / A nd | Web : www.OpenFOAM. o r g |
| \\/ M anipulation | |
\/
FoamFile
{
version 2.0;
format ascii ;
class polyBoundaryMesh ;
location 1/ polyMesh ;
object boundary ;
}
// //

16
(
DISK SYM
{
type cyclicAMI ;
nFaces 1224;
startFace 157953726;
match Tolerance 0.000001;
n e i g h b o u r P a t c h ROTOR DISK SYM ;
transform noOrdering ;
}
FLUID INLET
{
type patch ;
nFaces 27596;
startFace 157954950;
}
FLUID OUTLET
{
type patch ;
nFaces 27596;
startFace 157982546;
}
FLUID SYM
{
type patch ;
nFaces 128785;
startFace 158010142;
}
FLUID GROUND

129
Appendix H. The constant/polyMesh/boundary file

{
type patch ;
nFaces 69556;
startFace 158138927;
}
TOWER
{
type wall ;
nFaces 15400;
startFace 158208483;
}
NACELLE
{
type wall ;
nFaces 5090;
startFace 158223883;
}
DISK INLET
{
type cyclicAMI ;
nFaces 19459;
startFace 158228973;
match Tolerance 0.000001;
n e i g h b o u r P a t c h ROTOR DISK INLET ;
transform noOrdering ;
}
DISK OUTLET
{
type cyclicAMI ;
nFaces 19076;
startFace 158248432;
match Tolerance 0.000001;
n e i g h b o u r P a t c h ROTOR DISK OUTLET ;
transform noOrdering ;
}
BLADE
{
type wall ;
nFaces 85056;
startFace 158267508;
}
HUB
{
type wall ;
nFaces 73644;
startFace 158352564;
}
ROTOR DISK INLET
{
type cyclicAMI ;
nFaces 404352;
startFace 158426208;
match Tolerance 0.000001;
n e i g h b o u r P a t c h DISK INLET ;
transform noOrdering ;
}
ROTOR DISK SYM
{
type cyclicAMI ;
nFaces 37440;
startFace 158830560;
match Tolerance 0.000001;

130
Appendix H. The constant/polyMesh/boundary file

n e i g h b o u r P a t c h DISK SYM ;
transform noOrdering ;
}
ROTOR DISK OUTLET
{
type cyclicAMI ;
nFaces 368316;
startFace 158868000;
match Tolerance 0.000001;
n e i g h b o u r P a t c h DISK OUTLET ;
transform noOrdering ;
}
BLADE COPY1
{
type wall ;
nFaces 85056;
startFace 159236316;
}
BLADE COPY2
{
type wall ;
nFaces 85056;
startFace 159321372;
}
)

// //

131

S-ar putea să vă placă și