Professional Documents
Culture Documents
submitted by
Bastian Dose
April 3, 2013
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.
(Bastian Dose)
IV
List of Tables
List of Tables
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
V
List of Figures
List of Figures
VI
List of Figures
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
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
p momentum [k m/s]
IX
Contents
Contents
1. Introduction 1
1.1. Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2. Purpose . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
X
Contents
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
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
XI
Contents
8. Conclusion 111
Bibliography 113
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.
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
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]:
no frictional drag;
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.
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
with
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
with
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.
8
2. Foundations of Wind Turbines
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.
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
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.
11
3. Foundations of Computational Fluid Dynamics
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
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.
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.
( 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
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.
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)
( 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
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
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
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:
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].
21
3. Foundations of Computational Fluid Dynamics
For solving the turbulent eddy viscosity t , additional equation(s) are required. These
equations are provided by the introduction of turbulence models.
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].
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.
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].
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 )
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
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)
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
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:
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
ui
= 0. (3.66)
xi
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.
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.
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.
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.
e = E e + P (1 e ) . (3.73)
(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.
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].
= 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
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:
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:
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.
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].
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.
35
3. Foundations of Computational Fluid Dynamics
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.
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.
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.
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).
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.
37
3. Foundations of Computational Fluid Dynamics
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.
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
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
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
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)
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].
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:
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.
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].
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].
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].
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.
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.
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
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
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.
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.
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.
Rotor Disk
Type cylinder
1st point 0 -5 0
2nd point 020
Radius 60 m
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.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.
49
4. Simulation Strategy
Far-field
Type half-cylinder
length 1500 m
width 1000 m
height 500 m
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
ANSYS Designmodeller
ANSYS CFX-Pre
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.
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.
52
5. Simulations in ANSYS CFX
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.
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.
Within this process 234324 points and 234324 splines were manually created.
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.
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.
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
Figure 5.4 shows the selected radial blocking strategy for the meshing of the wind turbine
rotor.
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.
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.
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.
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.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.
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.
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.
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
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.
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.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
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.
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.
64
5. Simulations in ANSYS CFX
Figure 5.16 illustrates a vertical cut though the far-field mesh shown from the side.
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
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
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.
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
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.
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
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
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.
system
constant
Each folder contains key files for the simulation set-up in OpenFOAM.
69
6. Simulations in OpenFOAM
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.
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.
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.
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.
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
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.
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
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
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.
DiskZone
{
nonRotatingPatches (DISK_SYM DISK_INLET DISK_OUTLET ROTOR_DISK_INLET
ROTOR_DISK_SYM ROTOR_DISK_OUTLET);
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
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.
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
78
6. Simulations in OpenFOAM
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.
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:
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
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.
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.
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
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
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
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.
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.
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.
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.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.
87
6. Simulations in OpenFOAM
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.
88
6. Simulations in OpenFOAM
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
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.
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.
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
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)
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
92
7. Evaluation and Comparison
Figure 7.2 illustrates the monitored aerodynamic power output in ANSYS CFX. Con-
vergence was reached after 5000 iterations.
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].
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
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.
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
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..).
Figure 7.6.: calculated on the blade surface around the blade tip
98
7. Evaluation and Comparison
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.
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.
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.
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.
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.
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.
104
7. Evaluation and Comparison
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
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
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.
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.
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
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.
[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.
[9] M. Peric J.H. Ferziger. Computational Methods for Fluid Dynamics. Springer, 3rd
edition, 2002.
[12] Albert Betz. Theoretical limit for best utilization of wind by wind-motors. Magazine
for the Entire Turbine System, 20:307309, 1920.
113
Bibliography
[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.
[20] Pierre Sagaut. Large Eddy Simulation for Incompressible Flows - An Introduction.
Springer, 3rd edition, 2006.
[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.
[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.
[34] Hu Zhou Decheng Wan, Qiang Wang. Numerical Simulation of Wind Turbine
Blade-Tower Interaction. Journal of Marine Science, 11:321327, 2012.
114
Bibliography
[37] Nils Kirrkamm. Aerodynamische Simulation einer Windkraftanlage mit dem Open-
Source code OpenFOAM. Masters thesis, Carl-von-Ossietzky Universitat Olden-
burg, 2010.
115
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 ] ;
boundaryField
{
FLUID INLET
{
type fixedValue ;
value uniform (0 10.8 0) ;
}
FLUID OUTLET
{
type zeroGradient ;
}
FLUID SYM
{
type slip ;
}
FLUID GROUND
{
type slip ;
}
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
/ 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
}
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
/ 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 ] ;
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
}
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
/ 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
}
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
/ 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
/ 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
/ 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