Anda di halaman 1dari 151

i

WIND FARM WAKE PREDICTION USING CFD by PETER R. WOLTON B.S., University of Arizona, 1994 M.S., University of Colorado at Boulder, 2008

A thesis submitted to the Faculty of the Graduate School of the University of Colorado in partial fulfillment of the requirement for the degree of Master of Science Department of Mechanical Engineering 2008

1456694

2008

1456694

ii

This thesis entitled: Wind Farm Wake Prediction using CFD Written by Peter R. Wolton Has been approved for the Department of Mechanical Engineering

____________________________ Professor Gary Pawlas

____________________________ Dr. Patrick Moriarty

____________________________ Professor Jean Hertzberg

____________________________ Professor Kamran Mohseni Date_______________

The final copy of this thesis has been examined by the signatories, and we Find that both the content and the form meet acceptable presentation standards of scholarly work in the above mentioned discipline.

iii Wolton, Peter R. (MS, Department of Mechanical Engineering) Wind Farm Wake Prediction using CFD Thesis directed by Instructor & Director, Industrial/University Cooperative Project Center, Gary Pawlas The intent of this experiment was to develop standards for using the LES (Large Eddy Simulation) turbulence scheme in CFD (Computational Fluid Dynamics) for the wind farm application, to develop a method to predict wind turbine wakes that is more accurate than using RANS (Reynolds Averaged Navier Stokes), and to make comparisons to RANS results.

Although there have been many previous attempts at predicting the propagation of a wind turbine wake through a wind turbine farm, most use a mixture of empirical models and CFD. Of the few that are pure CFD, all known use the RANS turbulence closure model. This is primarily due to the larger computational resources required for LES calculations.

The wind farm geometry was simplified to two turbines in a row aligned with the wind direction. This was necessary to have a computational domain of a size that matched the time frame and computational resources available for this effort. Turbine spacings of 7, 9, and 11 diameters (D) were evaluated. The domain size and mesh density were evaluated through verification studies.

iv In order to better approximate the true nature of an atmospheric boundary layer, numerical wind was created a priori, and then used as the inlet boundary condition. Numerical wind was created for both thermally neutral and unstable atmospheric boundary layer conditions. Stable boundary layer conditions are left to future efforts.

The results achieved using LES are the best possible for a desk top computer in the allotted time frame. While the LES results are not fully independent of the mesh density or domain size, they do represent a significant improvement over the results achieve using the RANS turbulence closure technique.

Validation was done through comparing the predicted downstream turbine power deficit results to the measurements of the Horns Rev wind farm documented through the ENDOW and UPWIND projects. Horizontal velocity profiles downstream of the 2nd turbine are also presented, however no measurements are available to compare with.

LES is currently commonly used for large scale atmospheric studies, but at present it is considered novel for use in turbine wake prediction.

This effort produced results that are comparable to experimental results and showed clear areas to improve computational issues.

v Acknowledgements We wish to thank Pat Moriarty at the NWTC (National Wind Technology Center) division of NREL (National Renewable Energy Lab) for his enthusiasm and expertise in kicking off this project and providing strategic advice for keeping the effort moving forward.

Ned Patton of NCAR (National Center for Atmospheric Research), Boulder, Colorado, was instrumental in getting the LES effort up and running. We greatly appreciate his input and suggestions.

vi Table of Contents Title Page..........i Signature Page.....ii Abstract.......iii Acknowledgements......v Table of Contents....vi List of Tables.........viii List of Figures..........ix Nomenclature........... x Acronyms................................... xii 1 Introduction .......1 2 Literature Review......5 2.1 Literature Review Part 1: RANS .........6 The k- model Wake Prediction Models Application of k- CFD technique to Wind Farm Flows 2.2 Literature Review Part 2: LES... .......21 The LES model Application of LES CFD Technique to Wind Farm Flows 2.3 Verification and Validation in CFD....33 3 CFD Technique...37 3.1 Computational Domain Set Up..39 3.2 Creating the Computational Domain......41 Developing the Geometry in Solid Works Meshing the Geometry in Gambit 3.3 Boundary Conditions & Wind Turbine Modeling.48 3.4 RANS CFD Technique..53 3.5 LES CFD Technique .56 Developing Numerical Wind Verification of Neutral Boundary Layer created with LES LES Run Parameters What did NOT Work Mesh Density and Size verification LES Filtering lengths Recording of Velocity Profiles Domain Top Boundary Condition Verification Power Deficit Calculation 4 Results. .......85 5 Conclusions.....98 6 Future Efforts/Recommendations......104 7 References......106 8 Appendices: Appendix A: CFD Files names reference Appendix B: Description of meshes as created in Gambit Appendix C: Fluent settings

vii C1: RANS neutral settings C2: RANS differences for unstable (including thermal effects) C3: LES neutral settings C4: LES differences for un-stable settings Appendix D: How to use Batch mode in Fluent Appendix E: How to do runs on NRELs super01 Appendix F: Code for recording and reading profile files every time step Appendix G: Details of other UDFs Appendix H: Details of how to create periodic boundary conditions Appendix I: Solid Works and Gambit software details Appendix J: Format for point profiles to be read into Fluent

viii List of Tables page

Table 2.1.1: k- model constants........15 Table 2.1.2: Surface Roughness Lengths and Heights...16 Table 2.1.3: The wind class definitions..17 Table 2.1.4: Crastos RANS Domain Geometry and Mesh Size....18 Table 2.1.5: Crastos RANS Domain Fluent Boundary Conditions...19 Table 2.1.6: Crastos RANS Friction Velocities.....19 Table 2.2.1: Crastos Wall Shear Stress and Friction Velocities.....27 Table 3.5.1: Mesh study Element Counts....76 Table 3.5.2: Top BC Predicted Power Deficit Comparison.....80 Table 4.1: LES and RANS Predicted Power Deficits...88

ix List of Figures page

Figure 1.1: Turbine Wake Diagram...2 Figure 3.1.1: Geometry of the Computational Domain...40 Figure 3.2.1: Solid Model of the Computational Domain...42 Figure 3.2.2: Solid Model of the Computational Domain Cut Away View.42 Figure 3.2.3: Solid Model of the Computational Domain Cut Away View..43 Figure 3.2.4: Solid Model of the Computational Domain Cross Sectional View.44 Figure 3.2.5: A front view of the domain in Gambit...46 Figure 3.2.6: An isometric view of the domain in Gambit..47 Figure 3.2.7: Side cross sectional view as taken from the center line plane...47 Figure 3.3.1: Plot of Turbine Disk Pressure Drop...51 Figure 3.3.2: Turbine Outer& Inner Mesh Faces........52 Figure 3.3.3: Turbine Mid & Hub Mesh Faces...52 Figure 3.4.1: Down Stream Turbine Power vs. RANS Iterations...55 Figure 3.4.2: RANS Solution Residuals vs. Iterations....55 Figure 3.5.1: Velocity Contours in an Empty Box Wind Generation..60 Figure 3.5.2: Turbulence Intensity Contours in an Empty Box Wind Generation...61 Figure 3.5.3: Temperature Contours in an Empty Box Wind Generation.......62 Figure 3.5.4: Averaged Velocity Profiles and the Power Law Profile........................64 Figure 3.5.5: Averaged Velocity Profiles and the Log-Law.......................................66 Figure 3.5.6: Cross Flow Velocity vs. Vertical Position ............................................68 Figure 3.5.7: Top View of a Velocity Contour Plot....................................................69 Figure 3.5.8: Mesh Density Verification.....................................................................72 Figure 3.5.9: Down Stream of Turbine 2 Domain Length Verification......................73 Figure 3.5.10: Domain Width Verification..................................................................74 Figure 3.5.11: Domain Height Verification.................................................................75 Figure 3.5.12: Filter Length Contour Plot........... ......................................................77 Figure 3.5.13: Recording Velocity Profiles Geometry................................................79 Figure 3.5.14: Averaged Velocity Profiles for Varying Boundary Conditions...81 Figure 3.5.15: Power Deficit Calculation Contour Plot...............................................83 Figure 3.5.16: Power Deficit Calculation Instantaneous Power Plot...84 Figure 4.1: LES Predicted Power Deficit Results........................................................85 Figure 4.2 RANS Predicted Power Deficit Results.....................................................87 Figure 4.3: LES Averaged Velocity & Profile Predictions......................................89 Figure 4.4: RANS Velocity & TKE Profile Predictions......90 Figure 4.5: RANS Velocity Profile Predictions - Zoomed......91 Figure 4.6: RANS TKE Profile Predictions - Zoomed................................................92 Figure 4.7: Side view of x-dir Velocity Contours, Neutral Conditions.......................94 Figure 4.8: TOP view of x-dir Velocity Contours, Neutral Conditions.......................94 Figure 4.9: Side view of x-dir Velocity Contours, UN-Stable Conditions..................95 Figure 4.10: TOP view of x-dir Velocity Contours, UN-Stable Conditions...............95 Figure 4.11: Side view of Temperature Contours, UN-Stable Conditions..................96

x Nomenclature a A C C1, C2 C Cs Cp d D t x y z G Gb Gk or TDR f h k or TKE Ks L T P PT2/PT1 PT1 PT2 p [m2 s-3] [rad s-1] [m] [m2 s-2] [m] [kgm-1s-1] [rad s-1] [m2 s-1] [MW] [MW] [MW] [Pa] [m] [m] [s] [m] [m] [m] [m2] axial induction factor (Actuator Disk Theory) turbine disk area ABL power law equation exponent boundary layer depth equation constant constants in the equation for (used in k- RANS model) turbulent-viscosity constant (used in k- RANS model) surface roughness constant as used in Fluent (ALSO used as the Smagorinsky constant) power coefficient (of a wind turbine) distance to the closest boundary fluid domain boundary layer thickness CFD time step primary flow direction mesh spacing cross flow direction mesh spacing vertical mesh spacing LES filter function the generation of k due to buoyancy (used in k- RANS model) the generation of k due to the mean velocity gradients (used in k- RANS model) Turbulent Dissipation Rate coriolis parameter mesh 1st vertical element height from wall Turbulent Kinetic Energy von Karmen constant roughness height as used in Fluent integral length scale viscosity earths rotational speed turbulent viscosity (used in k- RANS model) turbine power ratio of time integrated downstream turbine energy to Upstream turbine energy power produced by the upstream turbine power produced by the down stream turbine air pressure wake strength parameter generic symbol used in equations that can apply to multiple flow parameters local earths latitude density

[rad] [kg m-3]

xi S Sk and S k ij TIT1 TIT2 w ij u u+ u or u* ur ui or uj u,v,w UD U <U> v V x,y,z xi or xj w y+ YM zh z0 zr mean strain rate tensor (used in k- RANS model) user defined source terms (used in k- RANS model) standard deviation k- RANS model constant: TKE Prandtl number k- RANS model constant: TDR Prandtl number stress tensor Turbulence Intensity at the upstream turbine Turbulence Intensity at the down stream turbine wall shear stress sub-grid-scale (SGS) x direction fluctuating component of the velocity field non-dimensional velocity friction velocity reference velocity velocity vector in index notation velocities along the Cartesian axes x, y, z velocity at the turbine disk upstream velocity average flow velocity y direction fluctuating component of the velocity field local mesh element volume Cartesian coordinates position vector in index notation z direction fluctuating component of the velocity field non-dimensional height the contribution of the fluctuating dilatation in compressible turbulence to the overall dissipation rate (used in k- RANS model) boundary layer depth aerodynamic roughness length reference height

[Pa] [m s-1] [m s-1] [m s-1] [m s-1] [m s-1] [m s-1] [m s-1 ] [m s-1] [m s-1] [m3] [m] [m] [m s-1]

[m] [m] [m]

xii Acronyms ABL ADT AIAA BC BEM CFD ENDOW k- k- LES MW NREL RANS SGS TI UDF Atmospheric boundary layer Actuator Disk Theory American Institute of Aeronautics and Astronautics Boundary Condition Blade Element Momentum Theory Computational Fluid Dynamics Efficient Development of Offshore Windfarms k-epsilon turbulence closure technique (RANS) k-omega turbulence closure technique (RANS) Large Eddy Simulation Megawatt National Renewable Energy Lab Reynolds Averaged Navier Stokes (turbulence closure scheme) Sub-Grid Scale model (used with LES) Turbulence Intensity User Defined Function (C++ code used in conjunction with Fluent)

1. Introduction
As offshore wind power expands, there has grown a need to build wind farms in 2D grid arrays in order to minimize cabling costs and optimize the use of shallow waters close to areas of high electrical load. Earlier wind farm designs were typically a single line of turbines arranged normal to the predominant wind direction.

The grid wind farms in operation today are not producing the quantity of energy that was predicted in the design phase. The reason for this is thought to be shadowing or wakes from upstream turbines decreasing the wind energy passing through down stream turbines.

In order to demonstrate this concept, a wind farm is simplified to two turbines in a row aligned with the wind direction. This set up is shown in figure 1.1. The green arrows indicate the local vertical velocity profile.

Upstream Wind Profile

PT1 = 1

Down stream Wind Profile

PT2 < 1

TIT1 = 1

TIT2 > 1

Figure 1.1: Turbine Wake Diagram Green Arrows: Local Wind Velocity Profiles PT1: Relative power produced by the upstream turbine PT2: Relative power produced by the down stream turbine TIT1: Relative Turbulence Intensity at the upstream turbine TIT2: Relative Turbulence Intensity at the down stream turbine Behind each turbine a wake forms. This deficit from the free stream velocity propagates down stream where it encounters the next turbine. With increasing spacing of the turbines, the velocity deficit, or wake effect on the down stream turbine, decreases. Thus, from a wake effect standpoint it would be optimal to have the turbines spread a large distance apart, however increased turbine spacing is limited by land and cabling costs. Due to the mixing effect of the wind passing through the first turbine, there is not only a loss of power to the down stream turbine (PT1 > PT2), but also an increased level of turbulence intensity (TIT1 < TIT2). The increased turbulence causes more rapid wear of the moving parts, primarily gear

3 boxes, and thus increases operation and maintenance costs. There is thus a strong financial incentive to optimize the spacing of turbines in a 2D grid array wind farm.

There is currently a host of people and organizations tackling the issue of wind turbine wake prediction. Experimentally moving turbines and measuring the effects is financially prohibitive, especially offshore. Thus all optimization efforts have been confined to numerical models. Many of these efforts are detailed by the ENDOW (Efficient Development of Offshore Wind Farms) [1, 2] project and its successor UPWIND [3]. All known models chronicled use either a combination of empirical models and Computational Fluid Dynamics (CFD), or CFD alone. CFD alone refers to a fully elliptic 3-D Navier-Stokes CFD model. Of the models that use CFD alone, all use either the k- or k- (RANS) turbulence closure technique. Using the combined empirical model and RANS CFD allows the code to run significantly faster (minutes as opposed to hours,) in comparison to CFD alone.

This effort uses the Large Eddy Simulation (LES) technique to model wake interaction with CFD. LES is thought to be considerably superior to RANS in terms of accuracy when it comes to flows where the vortical structures of interest are in the energy containing range.

LES takes on the order of days to weeks to run. The concept behind using such a computationally expensive technique is to develop standards for using LES for the

4 wind farm application, to develop a method to predict wind turbine wakes that is more accurate than using RANS, and to make comparisons to RANS results.

The commercially available CFD code Fluent is used for all fluid computations. This allows for direct reproduction of the results in future efforts. The difficulty with a commercially licensed code is the restriction of the number of nodes the code can be run on.

In order to have a computational domain that is of a functional size in conjunction with the LES technique, the 2D grid wind farm geometry has been simplified to two turbines in a row aligned with the wind direction. A plot of turbine power deficit versus turbine spacing has been created for 7, 9, and 11 diameters (D) spacing.

The ultimate goal would be to model an entire wind farm and directly compute the power deficits from the CFD data. Currently computational resources are not available for such an endeavor.

2. Literature Review
Air flowing around utility scale wind turbines is largely dominated by inertial effects, the Reynolds number typically 107 at a minimum when using the rotor diameter as the length scale. With the strong inertial effects, turbulence is considered standard, and thus when applying CFD, some type of turbulence approximation is necessary. RANS (Reynolds Averaged Navier-Stokes) is very commonly used and is currently the industry standard for turbulence closure. LES (Large Eddy Simulation,) is another well known closure method. It requires much greater computational resources, and thus it not common in the wind industry at this point. Part 1 of this literature review presents the details of the RANS model, its pros and cons, and how it has been used in previous efforts. In Part 2 of the literature review, the LES model details and history are presented. At this time, there are no known published studies of the application of LES to wind farm wake propagation, and thus examples are taken from atmospheric studies.

2.1. Literature Review PART 1: RANS


The k- Model
k is turbulent kinetic energy, or kinetic energy per unit mass of the flow. is the turbulent dissipation rate, or the rate at which kinetic energy is dissipated to heat through the action of viscosity. The k- model has a low computational cost (runs quickly) in comparison to many other closure methods, and thus has found wide spread use in engineering applications. [4]

The k and and their approximated mutual relationship through turbulent viscosity (T) are defined by equation 2.1.1 [5]. The subscripts on the us are index notation for vectors.

1 ui ui 2
C k 2

Eqn: 2.1.1

T =

Eqn: 2.1.2

Where C is the turbulent-viscosity constant, one of the five in the model. Fluents [6] interpretation of the standard k- model is represented in the transport equations it uses for k and :
(k ) + (ku i ) = + t x j xi t k k x + G k + Gb YM + S k j
Eqn: 2.1.3

2 + t ( ) + (ui ) = + S + C1 (Gk + C3 Gb ) C 2 x j xi t x j k k

7
Eqn: 2.1.4 Gk is the generation of k due to the mean velocity gradients, and is approximated in

Fluent as:

Gk = t S 2
Where S is the mean strain rate tensor:
S 2S i j S i j

Eqn: 2.1.5

Eqn: 2.1.6

Gb is the generation of k due to buoyancy. YM is the contribution of the fluctuating

dilatation in compressible turbulence to the overall dissipation rate. For simplification, compressibility is not considered in this experiment. Sk and S are user defined source terms.

The default values for the model constants as set in Fluent are: C1=1.44, C2=1.92,
C=0.09, k=1.0, and =1.3. [6] C3 is a further model constant that is typically set

to 1.0.

In setting up the k- turbulence closure model it is necessary to define the five constants as well as specify initial values for k and . The constant k is called the turbulent kinetic energy Prandtl number, and the turbulent dissipation rate Prandtl number.

The k- model runs very quickly and so is widely used for engineering purposes. The reason it is so computationally inexpensive is that it models, or approximates,

8 the entire flow, and thus its accuracy is always suspect. In comparison, LES directly computes the larger scales of motion, and models the smaller scales. The CFD practitioner must have a good understanding of the nature of the flow a priori in order to correctly specify the model constants. There is a large volume of literature that criticizes the use of the k- model, a few of which are touched on here.

In the book Turbulence, An introduction for Scientists and Engineers[7] Davidson points out that the k- model (as do all eddy viscosity models) has three significant weaknesses. First the shear is related to the strain rate tensor by a scalar, the kinematic viscosity, instead of a tensor as is provided by the Navier-Stokes equations. This simplification can cause inaccurate calculations when the turbulence is not isotropic. Examples of this situation that are relevant to the current study are buoyancy forces in a stratified flow, and flows with strong rotation. The second significant k- model simplification that can cause difficulties is if the strain rate tensor is zero. This then predicts that the square of the flow fluctuations in the three directions are equal, which as Davison states is not, in general, found to

be the case.
A third aspect of the k- model that can create unreasonable results is the assumption that the shear is entirely dictated by the local rates of strain, and that there is no correlation to the history of stain rates. Since the definition of a fluid is that it continuously deforms under a given shear stress, and stores no strain energy, this assumption will generate difficulties in flows with very fast straining.

9 In writing of the turbulent kinetic energy, Davidson goes on to summarize the model very succinctly: the k-e model somewhat overestimates the ratio of production to dissipation, but at least it admits a self-similar solution of the form: G/ = constant, kS/ = constant. Moreover the discrepancies between the actual and predicted values of kS/ and G/ are more or less acceptable for engineering purposes. These results are fairly typical. In general the k-e model performs well in simple shear flows (the various coefficients having been chosen to encourage this), but can go badly wrong in more complex configurations such as: stagnation-point flows; flows with a rapid mean rate of strain; boundary layers with a strong adverse pressure gradient or large curvature; and highly anisotropic turbulence (flows with buoyancy or strong swirl.) While there are various ways of patching up the standard model on a case by case basis, this is not entirely satisfactory. Problems also arise very close to boundaries, where we have to match the k and equations to the viscous sublayer, which turns out to be a matter of some delicacy.[7] Wilcox describes the k- closure in similar disregard to Davidson. In his book Turbulence Modeling for CFD[8], he concludes his section on the model with: the relation between the modeled equation for and the exact equation is so

tenuous as to not need serious consideration.

Some CFD practitioners have fully recognized the weaknesses of the k- model, and have taken steps to make it accurate in a wider arena of flow regimes.

Hargreaves[9] demonstrates accurate use of k- turbulence closure with respect to the ground boundary layer profile. The principle method of evaluation presented here is the propagation of the k profile through an empty domain. Theoretically it should not be disturbed, however most commercial CFD packages require custom modification in order to achieve this goal.

10 Hargreaves uses a UDF (User Defined Function) in Fluent to manually override the
k, , and viscosity profiles though the length of the domain. This in turn keeps the

u and du/dz flow profiles nearly constant (as they theoretically should be,) through the entire domain.

Hargreaves indicates that typical model constant values are 0.09 for C, 1.44 for C1, 1.92 for C2, 1.0 for k, and 1.11 for . The value is the only one to vary from Fluents suggestions.

Hargreaves mentions that similar results can be achieved by adjusting the surface roughness values where R=20z0 (the roughness constant is 20 times the roughness height), however in this effort, no results were achieved with this method that resemble Hargreaves work.

Specifying the k via Hargreaves method appears to work well for the empty domain that he demonstrates with, however there is no known information that depicts how this translates to a domain that includes several wind turbines.

In summary, while the k- closure method will provide results quickly, the accuracy of the results is suspect. Furthermore there is no way to verify the model since it is necessary to tune the model to the nature of the flow under consideration.

11

Wake Prediction Models


This is a chronicle of previous efforts of the use of CFD and empirical models for wind turbine wake prediction. The ENDOW (Efficient Development of Offshore
Wind Farms) program has contributed a great deal to the prediction of turbine

wakes with in a wind farm. These efforts are summarized by [2] and [1]. Developmental details are given in [10]. The EU funded successor to ENDOW is UPWIND [3].

1) Mixed Empirical and CFD techniques. Using empirical velocity models, these techniques are not directly applicable to the current effort; however their results are impressive, and so deserve mention.

MIUU (Uppsala Univ., Meteorological Institute: MIUU transport time model)

This is a mesoscale model using three dimensional higher order closure methodology.[2] Accurate for a range of cases, best results are achieved at higher levels of ambient turbulence(over 8%). [1]

ECN (Energy Centre Netherlands: Wakefarm)

Close to the rotor, the wake is modeled by use of an empirical fit based on momentum theory[10, 11]. Further down stream, CFD is used with k- turbulence closure. Details of the validation of this model with sodar data are provided in [11].

12
UO (Oldenburg University: FLaP)

This is a two dimensional axis symmetric model.[10] Similar to the ECN model, close to the rotor the wake is modeled through an empirical fit, however further down stream, CFD with eddy viscosity closure is used.

GH(Garrad Hassan: Windfarmer (eddy viscosity model))

This model is very similar to the UO model.[10] Relatively accurate results are documented in [1].

Risoe: (Risoe National Laboratory: Engineering model, CFD model, WAsP)

Results for this model are well documented in [2].

Mixed empirical and CFD techniques are popular due to their extremely rapid computational speed. The main draw back with such an approach is that because an empirical fit is used to model the flow field behind the turbines, only flows for which empirical models exist can be considered.

2) CFD Alone:
RGU (Robert Gordon University: 3D-NS)

RGU utilizes a fully elliptic 3-D Navier-Stokes CFD solver using k- turbulence closure. The rotor is modeled as a semi-permeable disk inducing a pressure drop.[10]

13 This model appears to over predict the wake wind speed deficit [1]. Improved results are demonstrated in [2], however only single line plots are available for comparison, no 3-D data has been published.

Output is generated in a non-uniform orthogonal grid:

- Flow direction: D/10 grid length at the turbine locations; - Lateral direction: Approximately D/10 at the rotor tip (minimum); - Vertical direction: Approximately D/50 minimum close to the ground/ sea and D/10 at the rotor tip Note: The orthogonal grid is dense close to the turbines and the ground/ sea plane

CENER

This model utilizes Fluent. The k- model is used for turbulence closure. The turbine is modeled as a disk with volume via built in functions allowing for the input of the thrust coefficient, wind speed, and rotor area.[12]

CRES

The governing equations are numerically integrated by means of an implicit pressure correction scheme, where wind turbines are modeled as momentum absorbers by means of their thrust coefficient. A matrix-free algorithm for pressure updating is introduced, which maintains the compatibility of the velocity and pressure field corrections, allowing for practical unlimited large time steps within the time integration process. Turbulence closure is accomplished with the k- model adjusted for atmospheric flows.[12]

14
NTUA

This is a CFD model utilizing the 3D incompressible NS equations, and is executed with 2nd order spatial accuracy. The k- model is used for turbulence closure. Wind turbines are modeled as momentum sinks and the force on the rotor disk is evaluated according to the local thrust coefficient. [12]

CFD alone, utilizing RANS, steps up the level of robustness of the model from those that contain empirical plug-ins. This allows for a wide variety of flows to be studied; however the limitation still exists that the RANS flow parameters must be tuned to the specific flow under consideration. Application of k- CFD technique to Wind Farm Flows The Crasto [13] dissertation on ABL modeling presents a highly detailed account of the application of both the k- model and the LES turbulence scheme. LES is documented in subsequent sections. Crasto modeled air flow over an isolated hill using RANS, and used LES to model wind over flat terrain. Of particular help is that Crasto used Fluent for most of his CFD work. The constants and supporting equations used in his atmospheric models are detailed here for possible application to wind farm flow.

The boundary layer depth is approximated through the relation:

15

u zh = C f

[13]

Eqn: 2.1.7

Crasto suggests C = 0.25 creates a boundary layer close to what had been observed. The friction velocity (also know as u*,) is calculated through:

u = u * =

Eqn: 2.1.8

w is the wall shear, and is the fluid density. The Coriolis parameter, f, is found

from:

f = 2 sin ( )
Where is the earths rotational speed and is the local latitude.

Eqn: 2.1.9

As shown in Table 2.1.1, Crasto suggests the following k- model constants for a large atmospheric domain. The Default values are those adopted by Fluent, the Modified values are based upon efforts by Crasto to produce the proper level of turbulence intensity close to the ground/sea. Table 2.1.1: k- model constants

[13] Surface roughness parameters are also discussed in detail by Crasto. These parameters are critical to the proper development of the atmospheric boundary layer

16 in the numerical model. In RANS the surface roughness and roughness constant define the magnitude of the momentum transfer at the wall/fluid interface. This in turn defines the vertical velocity gradient of the boundary layer. In LES models, the wall shear is used similarly. Table 2.1.2 provides a list of roughness lengths and heights for a range of wind classes: Table 2.1.2: Surface Roughness Lengths and Heights

[13]
Ks is the roughness HEIGHT as used in Fluent, Cs is roughness constant as used in

Fluent, h is the vertical height of the first mesh element from the wall boundary condition, and z0 is the aerodynamic roughness LENGTH.

17 Table 2.1.3: The wind class definitions

[13] Note that Class II with a z0 of 0.0005m corresponds to the roughness of Blown Sea as given in Table 2.2 of Manwell [14].

Crasto uses the log law wind profile as well as profiles of k and to define the inlet flow conditions. The inlet mean velocity, turbulent kinetic energy, and turbulent dissipation rate are defined by:

U (z ) =

u z ln z0
2

Eqn: 2.1.10
2

k (z ) =

z 1 C zh
3

Eqn: 2.1.11

1 u (z ) = z

Eqn: 2.1.12

18 Where u is the friction velocity, and is the von Karmen constant.

For a computation of wind flow over a hill, the domain geometry used by Crasto is detailed in Table 2.1.4. Note that the maximum aspect ratio of the cells is quite high, 0.6:30, or 1:50. The height of Crastos domain is 1000m, which is standard for atmospheric studies. For wind farm studies, it is necessary for the mesh to be more refined (a maximum x and y size of 15m,) so as to correctly capture the wind turbines effect on the flow. With this mesh refinement, and assuming similar computational capabilities, the wind farm domain height will be a maximum of approximately 500m in order to keep the run time with in levels that are appropriate to the scope of the project. Table 2.1.4: Crastos RANS Domain Geometry and Mesh Size

[13] The 3D RANS domain boundary conditions as used in Fluent 6.2 by Crasto are shown in table 2.1.5. With the 1000m meter domain height, the symmetry boundary condition works well. This condition assumes that there is no vertical velocity gradient near the boundary. This assumption is good for most atmospheric boundary layers where the velocity profile is asymptoting to the free stream velocity

19 above approximately 700m. This height is of course dependant on the roughness of the terrain leading up to the measurement position. Table 2.1.5: Crastos RANS Domain Fluent Boundary Conditions

[13] The friction velocities suggested by Crasto are presented in table 2.1.6 for approximate free stream speeds of 10ms-1 and 15ms-1. Table 2.1.6: Crastos RANS Friction Velocities

[13]

Summary of the applicability of k- Turbulence Closure to Wind Farm CFD: The k- models rapid computational rate is highly attractive for engineering purposes. With its simplifications, the model requires input of five model constants [6] in order to specify the nature of the flow under consideration. This technique of using simplifications and then tuning the model to the flow at hand is in discrepancy with the scientific technique of model verification. This discrepancy is the main reason for the use of the LES model for further numerical experimentation.

20 While it is possible to achieve similar results to LES using RANS, an ad hoc process of iteratively varying the model constants and re-running the simulation is required. This is of course only possible if there are experimental values to validate with. This Guessing process for RANS is necessary due to the large simplifications RANS makes in averaging all the flow parameters, as well as the crude approximations used for the turbulent viscosity.

21

2.2. Literature Review PART 2: LES


The LES model
LES (Large Eddy Simulation) is a turbulence modeling technique where the eddy sizes are filtered, the energy containing (large) scale turbulent structures are directly computed, and the eddies below the specified filter size are parameterized using a

sub-grid model which accounts for the kinetic energy moving down in spatial
magnitude toward viscosity. [7] LES is extremely computationally expensive in comparison to the k- model, however, it produces considerably more accurate results when set up correctly. The LES model is also UNSTEADY, which means that it computes the solution over a range of time steps, as opposed to the averaged single time step approach used in RANS.

Davidson[7] points out that while LES has the significant advantage of not requiring the ad hoc modeling needed for RANS, the computational expense is significant. Furthermore LES alone does not fair well when boundaries play an important role in the calculation. If the large scales of motion are the important ones for obtaining accurate results, then LES works very well. In this experiment the large scales of motion are the predominant influence on the turbine power generation, and thus LES is well suited.

The filtering scale methodology used by Fluent [6] is done by either wave number space or physical space in conjunction with the local flow length scale. In this experiment, physical filtering was used with respect to the mesh element size.

22 The general filtering equation used by Fluent is:

( x ) = ( x')G (x, x')dx' [6]


D

Eqn: 2.2.1

Where is generic for the parameter under consideration, and the over-bar represents a filtered value. D is the fluid domain, and G is the filter function. Fluent uses finite-volume discretization itself to implicitly provide the filtering operation:

(x ) =

1 (x')dx', x' V VV

Eqn: 2.2.2

V is the cell volume under consideration. The filter function, G, is defined by:

1 , x' V G ( x, x') = V 0, x' otherwise

Eqn: 2.2.3

Simplifying to incompressible flow only, the filtered Navier-Stokes equations reduce to:
(ui ) = 0 + t xi Eqn: 2.2.4

(ui ) + (uiu j ) = ij p ij [6] Eqn: 2.2.5 t x j x j x j xi x j

The stress tensor, ij, attributable to molecular (NOT turbulent) viscosity is:

23

ij i + j i i j x j xi 3 xi
The sub-grid-scale (SGS) stress is defined as:

Eqn: 2.2.6

ij ui u j ui u j

Eqn: 2.2.7

For the scales of motion smaller than the filtering scale, a SGS (sub-grid-scale) model is necessary to model (approximate,) the small scale motion. Fluent provides three choices for SGS models: Smagorinsky-Lilly, WALE(Wall-Adapting Local
Eddy-viscosity), and Kinetic-Energy Transport.[6] In this experiment, Fluents

Dynamic Kinetic Energy SGS was used to develop the numerical wind, and the Dynamic Smagorinsky-Lilly model was used for the runs containing turbines. It was necessary to use the Kinetic Energy model for the wind generation so as to be able to monitor the development of the turbulence intensity.

A parameter commonly used to judge the nature of the turbulence is the Turbulence Intensity. Fluents definition of turbulent intensity is:

TI

u' U

Eqn: 2.2.8

Where u is the fluctuating component and <U> is the average component of the velocity field. This parameter is not available when using Fluents Kinetic Energy SGS model.

24 1) Kinetic-Energy Transport SGS Model: The SGS kinetic energy was obtained by contracting the SGS stress equation:

k sgs

1 2 2 uk uk [6] 2

Eqn: 2.2.9

The SGS turbulent viscosity is computed using the SGS kinetic energy:

t = Ck k sgs 2 f

Eqn: 2.2.10

Here Ck and C are determined dynamically. f is the filter size computed from the cube root of the cell volume:
f V
1 3

Eqn: 2.2.11

The SGS stress equation can now be written entirely in terms of the SGS components:

ij

1 2 k sgs ij = 2Ck k sgs 2 fS ij [6] 3

Eqn: 2.2.12

Finally the SGS kinetic energy (kSGS) in found by solving the transport equation written around it:

k sgs t

u j k sgs x j

k sgs 2 u = ij i C + x j f x j

t k sgs x [6] Eqn: 2.2.13 j k

The constant, k is set to 1.0.

25 2) Dynamic Smagorinsky-Lilly SGS Model: This model computes the eddy viscosity through the estimation:

t = Ls 2 S

Eqn: 2.2.14

Where is the air density, and the averaged mean strain rate tensor is found from:

2Si j Si j

Eqn: 2.2.15

The mixing length Ls is the minimum of two possible products:


1 Ls = min d , CsV 3

Eqn: 2.2.16

Here is the von Karmen constant, d is the distance to the closest boundary, and Cs is the Smagorinsky constant. As in the previous model, V is the local cell volume. The Smagorinsky constant Cs is computed dynamically based upon the resolved scales of motion. Thus Cs is dependant on the local mesh size since this is the primary factor in calculation of the local filtering characteristics. Fluent clips Cs at zero and 0.23 in order to maintain numerical stability in the iteration process.

26

Application of LES CFD technique to Wind Farm Flows


There are no known examples of application of LES to wind turbine wake prediction, thus atmospheric modeling examples will be used to gain an insight into execution LES turbulence closure.

Crasto[13] presents an excellent example of application of LES technique in atmospheric modeling. Crasto used Fluent for much of his numerical experimentation, and thus there are many useful tips that can be gleaned from his paper. Some key points taken from Crastos paper on setting up the LES computation:

Initialize the computational domain from a converged RANS solution. The vertical grid spacing was done with first cell height at just over twice the
Roughness Height (z0 is explained in the Fluent manual [6]) , and then growing the cells vertically at a rate of 1.1 from there.

Wall Modeled LES (WMLES) is used such that flows with Re up to 109 can be
analyzed with out large wall effect errors.

Upper boundary condition: symmetric Stream-wise boundary condition: periodic Span-wise boundary condition: periodic Pressure discretization: PRESTO! Use a Kick to initialize turbulence Fluent: with LES there is no option to specify the wall roughness, therefore use
DES.

27

Crasto wrote a UDF to specify wall roughness and filter scale.

Setting up the domain boundary conditions is something which at first glance may seem simple, but after becoming more familiar with the subject matter gains complexity for two reasons. Firstly there is a wide variety of boundary condition options that produce similar but different results. Secondly, the significant time and effort required to verify that the boundary condition is functioning as desired (i.e. doing multiple LES runs with different conditions) is prohibitive as a standard method, and thus must be reserved for those cases where there is little historical support.

The wall shear for use in a wind farm scale LES model is one of those cases where there is little historical documentation. For this reason, a table of wall shear stress and friction velocities is presented by Crasto: Table 2.2.1: Crastos Wall Shear Stress and Friction Velocities

[13] Another important source of LES technique was Ned Patton of NCAR, Boulder Colorado. Patton uses the LES closure model in numerical experiments of the atmosphere moving over forested terrain [15]. With the energy loss associated with

28 the wind to forest interaction, some relevant CFD modeling parallels can be drawn to the momentum loss associated with wind turbines.

"The numerical method is based on the scheme of Moeng (1984) and Moeng and

Wyngaard (1988) and integrates a set of three-dimensional, filtered Navier-Stokes equations under the Boussinesq approximation, with additional terms to represent form and viscous drag of canopy elements."

Discussion with Ned Patton proved highly useful. Although the numerical experiments done by Patton are carried out on a cluster of 2000 nodes, there are intrinsic LES techniques outlined below which provide a methodology for implementing the LES even with relatively limited computational resources: (Italic

text details Patton suggestions)

LES is poor for stable conditions, thus run unstable conditions. Since the LES
technique directly computes the larger scales of motion and approximates the smaller scales, there is a tendency for LES to produce more accurate results when the length scales dominating the flow are on the higher end of the inertial range and in the energy containing range.
o Use heat flux at ground to help destabilize (240Wm- is very large value.)

Convection of warm air up from the ocean helps to generate large scales of motion.

29

Specify the wall shear at the ground/ocean. The wall shear value has a large
influence on the rate of viscous losses to the flow in the near wall region. Larger wall shear values generate velocity boundary layers with greater vertical gradient. In Fluent either a constant value can be applied to an entire surface, or varying values can be applied with the use of User Defined Functions (UDFs).

Time step: Each time step should converge in approximately 5 iterations, reduce the size of the time step as necessary to achieve this. A typical time step is 0.1 seconds. Note that it is often helpful to start out a run with a very small time step so as to avoid divergence due to initial guesses for flow parameters. In this experiment
the time step size is locked by the time step that the numerical wind was recorded at, thus variation of the step is not possible.

The molecular viscosity should be set to zero, turbulent viscosity is much more important. This is accurate for atmospheric scale flows; however, through
numerical trials with wind farm flow it was found that the molecular viscosity played an important role in the development and maintenance of the boundary layer, and thus should not be neglected.

Calculate the non-symmetric parameters at cell faces i.e.: w, subgrid energy.


This is NOT possible in Fluent.

Calculate the symmetric parameters at cell centers i.e.: u,v,p. This is NOT
possible in Fluent.

Wall boundary condition at sea/ground: In the Fluent LES runs, the Werner
Wengle [6] wall function was used. This provides a linear velocity profile

30 approximation of the boundary layer close to the wall. This also allows for a more coarse (by up to 2 orders of magnitude,) vertical mesh spacing at the wall, which in turn makes the computational domain significantly faster to run.
o Specify with a UDF each iteration:

Neutral BL: u and v using log law from 1st grid point to ground Unstable: Use Bousinger-Dyer or Gryning[16] wind profile to specify the flow. Computational Grid: The final vertical spacing used was 2.7m to the first node
point. With worst case horizontal spacing of 15m, this creates an aspect ration of 1:5.56.
o Aspect ratio between vertical and horizontal cell sizes: 1:5 is max, 1:2.5 is

better
o The 1st vertical node point at approx 8m ( if x = 20m) (typical spacing for

LES atmospheric BL: 1st z=20m for x=y=50m) Inlet flow: Details of the development of numerical Wind are given in the
section so titled. A domain size and mesh density study is detailed in section 3: CFD Technique
o Develop numerical approximation of isotropic turbulence for inlet flow using

an empty domain:
o Empty box length: 4-5 lengths of largest eddy structure. An empty box

longer than the domain of interest became important so as to have a numerical Wind data set that fills the entire domain which contains the turbines.

31 o Box width: minimum 1000m. This large size is not possible with the current computation resources.
o Box height: twice the ABL height. This large size is not possible with the

current computation resources.


o Generate the boundary layer profile from looping the flow through empty

box domain to generate fully developed isotropic turbulent profile.


o Use a Little kick to start turbulence: Fluent technique described in

Numerical wind section.

Fluctuate flow field (add a u` and v` to u and v ) (write UDF) Apply this in lowest 4-8 grid point (where turbulence starts) Make sure to conserve mass
o The flow is developed when TKE/u* no longer fluctuates. Calculate this

quantity at the exit plane.) Here u* is the friction velocity. Since in Fluent
TKE values are not available when using LES, the average turbulence intensity (TI) was recorded as it passed through the rear face of the domain. Once the TI peak had passed, and the desired TI value was reached, recoding of the flow began. Although TKE/u*2 and TI are not directly related (TKE or k is one of the primary parameters of the k- model,) TI also provides a good characterization of the level of energy in the flow.
o Take time slice of flow, use this as periodic input to domain with turbine.

Technical details of this process in Fluent are in the appendix.


o Advantages: do not need long upstream distance, realistic flow.

To verify flow properties:

o Plot vertical profile of mean Reynolds Stress(1 and 2 order moments)

st

nd

32

(uw) Should be straight line (constant), but will probable increase toward center of domain.
o If planetary Coriolis effect is used: plot uv too

Leave off at first.


Add in once have set up complete: Will induce flow turning, and thus will

need to change side BC to periodic.

With the background taken from Crasto and Pattons work, a method for running LES with previously created numerical Wind was developed. The details of this technique are documented in the section: LES CFD Technique.

33

2.3. Verification and Validation in CFD


For CFD, verification and validation (V&V) take on especially important roles due to the complexity of the process and the number of steps required to arrive at an estimation. Standards for verification and validation in CFD are succinctly presented by the AIAA [17] and further in depth information is documented by Sandia National Lab [18].

The AIAA document very clearly defines verification: "Verification is the process

of determining if a computational simulation accurately represents the conceptual model, but no claim is made of the relationship of the simulation to the real world."
The aspects of the model that are primary to check: "most important activity in

verification testing is systematically refining the grid size and time step." [17] This
definition played a key role in the development of the project. Initially attempts were made to develop a realistic model of an atmospheric boundary layer using k- turbulence closure. It was necessary to tune the five constants of the k- model to the specific flow at hand, and thus the fundamental nature of verification had been violated. With this understanding, it was decided to use LES. Taking on the burden of the much increased computational cost, now only flow assumptions of a much smaller order would be necessary.

In contrast to verification, "Validation is the process of determining if a

computational simulation represents the real world." To add further clarity to the

34 distinguishing characteristics between verification and validation: "Verification

determines whether the problem has been solved correctly, whereas validation determines whether the correct problem has been solved." [17]

"The fundamental strategy of validation is the identification and quantification of error and uncertainty in the conceptual and computational models. The recommended validation method is to employ a building block approach. This approach divides the complex engineering system of interest into three progressively simpler phases: subsystem cases, benchmark cases, and unit problems." [17]

The reason the computational domains are modeled after the Horns Rev wind farm is such that recordings from the farm [3] can be used to validate the computations. The Horns Rev wind farm off the west coast of Denmark is currently the only large 2D grid style offshore wind farm to have extensive wake recordings performed. In this experiment, the boundary layer created by the CFD code will be compared to theoretical standards (the Log-Law,) and then the final results of predicted turbine power deficit versus turbine spacing will be compared to wind farm measurements.

The AIAA document took considerable time to define the nature of error in CFD as opposed to other fields of study: "Error: A recognizable deficiency in any phase or

activity of modeling and simulation that is not due to lack of knowledge." Note that
this definition is much broader than the usual error definition which dictates levels of accuracy and precision. The AIAA then defines uncertainty to be deficiencies

due to lack of knowledge."

35 In terms of the over all CFD code, error is not easily quantified: "All encompassing

proofs of correctness, such as those developed in mathematical analysis, do not exist in complex modeling and simulation. Indeed, nontrivial computer codes cannot be proven to be without errormuch less models of physics." [17]

"Examples of acknowledged errors include round-off error in a digital computer, physical approximations made to simplify the modeling of a physical process..." [17]

"four predominant sources of error in CFD simulations: insufficient spatial discretization convergence, insufficient temporal discretization convergence, lack of iterative convergence, and computer programming." [17]

"Unacknowledged errors include blunders and mistakes, commonly caused by people." [17]

The accumulation of error in CFD is well summarized by Pope [5]. He postulates that the total discrepancy between measured and calculated flow properties is the sum of (i) model, (ii) numerical, (iii) flow measurement, and (iv) boundary condition discrepancies. Furthermore, The important conclusion is that a

comparison between measured and calculated flow properties determines the accuracy of the model only if the errors arising from (ii) (iv) are relatively small.
Using Fluent, the assumption has been made that the numerical errors are very small in comparison to measurements and boundary condition effects. The flow

36 measurements as reported by Hansen [3] come with an error estimation which is approximately one third of that estimated for the computed results. The boundary conditions have been verified through comparative studies as detailed in section 3.

Given the computational resources and time constraints of this project, verification will be limited to comparing the boundary generated in LES to the Log-Law and standardized curve fits for atmospheric boundary layers. Validation will be of the form of comparing the final down stream turbine power deficit values to data measured at the Horns Rev wind farm.

37

3. CFD Technique
Modeling the entire Horns Rev wind farm of 80 turbines in an 8x10 array spaced 7D apart was not possible at the time for application of the high computational cost turbulence scheme of Large Eddy Simulation (LES). The computational resources that were available, namely a modern desk top computer and a cluster of 4 nodes, would have required months for each run. Thus simplifications were made to the model of the wind farm in order to produce results.

All CFD computations were done using Fluent 6.3 [6].

The desktop computer was a HP xw4400, running Windows XP service pack 2. The system had Dual Intel Core2 Duo processor E6420 2.13 GHz 4 MB L2 cache, with a 1066 MHz front side bus. A total of 2 GB of 667MHz DDR2 SDRAM was in place. The details of the cluster are not public, thus it can be summed up by noting that it was Unix based and ran approximately 20% faster than the desktop. Important to note is that Fluent was licensed to run on only one of the processors on the desktop. Although the 2nd processor was not used by Fluent, its presence appeared to keep Windows running stably.

Reducing the farm to two turbines in a row aligned with the wind direction was a drastic reduction in the magnitude and complication of the farm geometry that still incorporated the basic effect that is in need of study. Namely, with varying turbine spacing, what is the power deficit at the down stream turbine? This geometry

38 obviously did not take into account the wake interaction effects that develop as the wind passes over many rows of turbines, but was a first step in developing methodology to use LES on large scale wind farm geometry.

A slightly more complicated case would be to have a triangular layout of three turbines, the wake of the upstream turbine partially affecting both down stream turbines. Time constraints did not allow exploration of this geometry.

In this study, it was also examined as to how the power deficit values vary with different atmospheric boundary layer (ABL) conditions. These conditions are generally divided in three main classifications: Unstable, Neutral, and Stable. Neutral ABL conditions indicate that there is not a sufficient vertical thermal gradient to cause air movement either up or down. Unstable ABL conditions exist when there is a warm sea below a cool body of air. In this case a gravitational potential exists since the warming air near the sea is becoming lighter than the cool air above it. Stable ABL conditions exist when there is a cool sea below a warm body of air. Here the thermal effects serve to reinforce the current stratification, and thus no gravitational potential exists to move the air vertically. Thermally unstable and neutral ABL conditions were modeled, thermally stable ABL conditions are left to future efforts.

39

3.1. Computational Domain Set Up


Each of the three domains used to compute power deficits had the same overall geometry, the main difference being the spacing of the turbines. The empty domain used to create wind is further detailed in the section Creating Numerical Wind. Details of the computational mesh are provided in the following section 3.2.

As shown in figure 3.1.1, the domain contained two turbine disks illustrated by red circles. The turbines were modeled after the Horns Rev Wind Farm Vestas V90, 2MW machines with turbine rotors 80m in diameter. The hub height was approximated as a constant of 70m. Modeling different domains for varying tidal heights and ocean surface conditions was beyond the scope of the project. The wind turbine towers and nacelles were not modeled in order to keep the mesh as simple as possible. The large green arrow illustrates that the wind direction is parallel with the line of turbines. The domain was 7 turbine diameters (D) or 560m wide, and 5.5D or 440m tall. The overall length of the domain was determined by the spacing between the turbines, however for all three test cases there was a 3D (240m) spacing between both the upstream turbine and the inlet face, as well as between the down stream turbine and the outlet face. The domain size was a trade off between what was necessary to create good results, and what is reasonable in terms of run time. Verification of the domain size is provided in section 3.5.

40 The three turbine spacing cases:

Domain B24 has 7D (Diameters) (560m) turbine spacing Domain B25 has 9D turbine spacing Domain B8 has 11D turbine spacing

Top

Inlet

Side

Figure 3.1.1: Geometry of the Computational Domain

41

3.2. Creating the Computational Domain


The wind farm was been simplified to two turbines aligned with the wind direction. This allowed the creation of a computational domain that matches the computational resources available for the project.

Developing the Geometry in SolidWorks


The SolidWorks solid modeling package was used to model the simplified wind farm geometry. It was found that it was necessary to model at 1/10th scale in order for SolidWorks to be able to handle the magnitude of the domain dimensions. The model was created as a single part file, with many individual solid entities. All solids must be extruded in the same direction in order to maintain mesh face connection when imported into the Fluent pre-processor, Gambit. The computational domain is divided up into many individual solids as shown in figure 3.2.1. This allows an intermediated size Mid box (figure 3.1.2) to be created around the turbine disk which facilitates the meshing of the domain. Details of the SolidWorks software use are in Appendix I.

42

Figure 3.2.1: Solid Model of the Computational Domain. This mesh generation technique involved creating an intermediate size box around the fan volume which is filled with tetrahedral elements. The rest of the domain was structured hexagonal elements. The entire domain must be solid modeled.

Figure 3.2.2: Solid Model of the Computational Domain Cut Away View. Structured outer blocks have been removed to reveal Mid boxes which house the actuator disks. No two solids should occupy the same space, thus when creating a 2nd object inside a 1st, the overlapping volume of the 1st should be removed. Figure 3.2.3 shows the turbine cylinder that exists inside of the Mid box. Again, the front face of the

43 turbine cylinder was used to geometrically locate the wind turbine boundary condition. This is discussed in detail in section 3.3.

Figure 3.2.3: Solid Model of the Computational Domain Cut Away View. The upstream mid box has been removed to reveal the upstream actuator disk cylinder. The cross sectional view (figure 3.2.4) was created by cutting the model with the center line plane. Demonstrated here is the non-overlapping construction technique. The blue and green boxes were intended to be meshed with unstructured tetrahedral elements, and the brown boxes as well as the turbine cylinders with structured hexagonal elements.

44

Figure 3.2.4: Solid Model of the Computational Domain Cross Sectional View Once the geometry was completed in SolidWorks, the data was exported to the IGES file format such that it can be imported by the Fluent pre-processor: Gambit.

45

Meshing the Geometry in Gambit


The mesh details seen in figures 3.2.5 to 3.2.7 are for the final domain size and mesh density as were determined from the mesh verification studies. These studies are detailed in section 3.5.

As is visible in the solid model, it was necessary to create a solid cylinder, on which the front face would be specified Fluents Fan [6], or pressure drop boundary condition. The pressure drop is proportional to the incoming normal flow velocity.

The reason for creating the intermediate boxes around the turbine cylinders was to simplify the meshing process. It was not always possible to create a linked structured mesh directly between the cylinder and the surrounding volumes. Thus intermediate Mid boxes of unstructured tetrahedral mesh create a geometry buffer that makes the mesh transition between the cylinder and the boxes simpler. Details and general procedure for the operation of Gambit are located in Appendix I.

The flow around the individual turbines and between the two turbines was an area of detailed interest. For this reason, as can be seen in figure 3.2.5, the mesh node spacing was finer in both the vertical and cross flow direction upon intersection with the Mid box. As would be expected, the typical characteristic cell length was finer with in the Mid box. With implicit filtering of the fluid flow length scales in Fluents LES method, the mesh characteristic element length was used directly as the filter size. Thus with the finer mesh near the turbines, smaller flow length scales

46 are being directly resolved than in the areas away from the turbine, and thus more accurate results should be generated in this area.

Figure 3.2.5: A front view of the domain in Gambit. The cross-sectional view plane is taken at the turbine face. The sea boundary layer can be seen at the bottom of the figure 3.2.5, as well as in figure 3.2.6. Here only the Turbine meshes and the boundary layer surfaces meshes are shown for clarity. Note that the vertical spacing of the mesh boundary layer is identical over the entire bottom surface.

47

Figure 3.2.6: An isometric view of the domain in Gambit. The Boundary layer is specified, and the Turbine cylinders are meshed. No other mesh is displayed. Again in 3.2.7 the more refined mesh intersecting the Mid boxes is visible. This is a side view and thus the primary flow direction in the domain is left to right. Note the structured mesh with in the turbine cylinders and the fine unstructured mesh in the Mid boxes.

Figure 3.2.7: Side cross sectional view as taken from the center line plane. Mesh numerical details are provided in Appendix B.

48

3.3. Boundary Conditions & Wind Turbine Modeling


The six outside faces of the computational domain have continuous boundary conditions (BC) applied over each. The sides, or lateral faces, are defined as periodic. This implies that the two side faces are treated as one face by the code, such that if a parcel air exits one side, it enters the other. The periodic BC allows the side faces to be closer to the geometry of interest than would be allowed with other conditions such as a wall condition. This is due to the air to air interaction, as opposed to the air to solid Sticky interaction of a wall BC. There was a zero pressure gradient specification for the side faces.

The top face was modeled as a wall BC. This allows for a thermal specification, which was not the case for a symmetric BC. For symmetric BC the velocity gradient tends to zero near the wall (in the direction normal to the wall.) In order to offset the Sticky, nature of the zero velocity requirement at the wall, a wall shear of -0.1Pa was used to encourage the flow in the primary flow direction. This technique has not been observed in the literature, and thus a verification of this condition was done. Details are provided in section 3.5.

The sea BC was also a wall. Here there was a wall shear specification that inhibits the flow, thus increasing the size of the atmospheric boundary layer (ABL). A temperature specification was also included at the sea for the thermally unstable ABL cases.

49 The rear/exit/outlet BC was what Fluent [6] calls Outflow. This BC is applicable when there are only small amounts of local reversed flow, thus no large scale reversals. There was no pressure drop through an outflow BC.

The inlet condition was of course the recorded numerical Wind as detailed in the so named section.

The wind turbines are modeled as a pressure drop boundary condition across a round disk representing the plane of the turbine. Solving detailed turbine blade geometry would be extremely computationally expensive due to the mesh refinement and complication subsequently required.

The first method utilized to model the wind turbine rotors was Actuator Disk Theory. [14] The pressure drop was a function of incoming normal wind speed and radius form the center of the disk. For actuator disk theory, the pressure drop is: 2a 2 UD 1 a

p =

Eqn: 3.3.1 Eqn: 3.3.2

U D = (1 a )U

a is the axial induction factor, its value is taken to be 1/3, which is the theoretical maximum. UD is the velocity component in the primary flow direction (normal to the disk) (x-direction in all cases), at the disk. U is the upstream velocity at the

50 height (z-direction in all cases) under consideration. The density used was for room temperature air at sea level.

Further development of the turbine boundary condition led to additional methodology: Blade Element Momentum (BEM) Theory. The free code, WT_PERF[19] from the National Wind Technology Center uses BEM to predict blade performance. Blade-element momentum theory determines the thrust and drag force components at discrete elements along the length of a turbine blade. Since turbine blades have complex geometries and aerodynamic properties that vary along the length of the blade, actuator disk theory was combined with blade-element theory to create a simplified pressure drop approximation as a function radius from the axis of rotation.

In the model, the disk was divided into three sections in the radial direction. The weighted average of the three sections was scaled to the total pressure drop as documented by UPWIND measurements of the Horns Rev Wind Farm[3]. Pressure drop variations with wind velocity for the three radial sections are shown in figure 3.3.1. The pressure drops vary with the square of the wind speed at the disk.

51
Turbine Disk Pressure Drop vs. Velocity at Disk
100 90 80 Pressure Drop [Pa] 70 60 50 40 30 20 10 0 0 1 2 3 4 5 6 7 8 9 10 11 12 Disk Velocity [ms-1] B.E.M p Inner [Pa] B.E.M p Mid [Pa] B.E.M p Outer [Pa]

Figure 3.3.1: Plot of Turbine Disk Pressure Drop Note that the disk velocity is less than the upstream velocity. A continuously rising pressure drop function was used (no rated power cut out,) as the wind speeds in this experiment are not planned to be in excess of 12ms-1.

The disk was divided into three sections in the radial direction, the inner, mid and outer sections. There was also a singular mesh face at the center reserved to represent the hub. The inner section contains what, in wind turbine lingo, would be referred to as the blade root + inner blade.

The disk is modeled as one boundary in Gambit. In Fluent the boundary is broken apart into individual mesh faces, then merged into the three regions shown.

52 The Fan boundary condition was used in Fluent [6] to model the pressure drops. See Appendix C for setting details.

Figure 3.3.2: Turbine Outer& Inner Mesh Faces (Mid section hidden for clarity)

Figure 3.3.3: Turbine Mid & Hub Mesh Faces. The singular element in the center is used to model the turbine hub.

53

3.4. RANS CFD Technique


RANS was currently the wind industry standard, as well as being the core of most wind farm numerical experiments to date. Thus having RANS results to compare to current models was of value. Initial phases of this project focused on trying to achieve realistic results with the RANS model. The combination of having to tune the model to the type of flow, and not being able to properly reproduce an ABL, forced the focus of the project to move to using LES. Thus emphasis was shifted in the early phases of the project to obtaining more precise results through LES, and then comparing to standard RANS results.

The first RANS attempts were done in a manner to reproduce the work by Hargreaves[9]. Hargreaves attempted to correct the inherent issues with the k- closure model (as detailed in the literature review,) by first, turning OFF the turbulence model in Fluent, and then using User Defined Functions (UDFs) to control the vertical (z-direction) profiles of k, , viscosity, diffusivity, and x-dir momentum. Hargreaves was kind enough to provide the UDFs he used for this process. After a number of trials, it was not possible to reproduce Hargreaves results. From here on, only the standard k- model was used for RANS.

A detailed account of the RANS (k-) Fluent settings are in Appendix C.

54 Neutral Boundary Layer RANS (No Energy Equation):

An inlet velocity profile modeled after a neutral ABL was used. The inlet values for the y(cross flow) and z(vertical) velocity components was
zero.

The vortex method[6] was used to approximate turbulence.


o This technique adds random vortices to the inlet flow. o The summation of the perturbations is zero. o The intensity of the perturbations and number of vortices can be specified.

Viscosity and density are set to nominal constant values of 1.225kgm-3 and
1.789e-5kgm-1s-1 respectively.

Un-Stable Boundary Layer RANS (Including temperature effects)

The ocean/ground temperature is set to 322K. An inlet power law temperature profile is specified varying from 322K at the sea
to 298K at the top boundary.

The density remains a constant.

When is the RANS run done? In figure 3.4.1 the power from the downstream turbine is plotted versus iterations. From this curve it is evident that the code had converged to the solution, and no further iteration was required.

55

Figure 3.4.1: Down Stream Turbine Power vs. RANS Iterations

Figure 3.4.2: RANS Solution Residuals vs. Iterations It was found that the power curve often leveled off significantly before the solution residuals, thus it was not necessary to solve to the fine level (0.001 for the Continuity equation) of residuals that Fluent had been set to. For the RANS runs, in the range of 400 to 700 iterations were used, taking approximately 40 minutes to complete.

56

3.5. LES CFD Technique


This section details all settings and methodologies used to develop the LES runs of two turbines in a single domain. Detailed numerical values are provided in the appendices.

Developing Numerical Wind


Numerical Wind, was created in an empty (no turbines) domain. The flow was recycled outlet to inlet again and again until a fully developed turbulent boundary layer had evolved. This wind was then recorded, time step by time step. These recordings are used as the inlet boundary condition for computational domains that do contain turbines. The cases that do have turbines are run with LES until the only fluctuations seen in the power generated at the turbines coincide with the period of the numerical wind recordings. This result was also possible in a single domain by extending the upstream distance before the 1st turbine, however, since it was planned to use the same wind data for several sets of turbine spacings, it was more efficient to create the wind only once, record it, and then use it several times over. The domains used to create wind have the same boundary conditions and mesh density as is used in the domains containing turbines.

This wind creation process must be done separately for Neutral, Stable, and Unstable ABL conditions. Time allowed only neutral and unstable ABL wind to be created in this effort. Each case will produce distinct velocity, kinetic energy, and temperature profiles.

57

CFD set up to create Wind


o Domain:

The domain should be of the same width or wider as the domain with turbines. Side BCs are periodic (defined as being the same surface), no net mass flux specification. An alternate method is to define side BC as symmetric, and make the domain approximately 1D wider. This alleviates the possibility of developing a cross wind. Top BC is symmetric (no flow through the boundary, and vertical velocity gradient goes to zero near the boundary). An alternate is to use a wall BC (and so be able to specify a temperature (298K,)) and then add a shear value that encourages the flow in the primary flow direction, thus effectively creating a slip condition. Inlet boundary condition is Velocity Inlet. Outlet boundary condition is Outflow.
o Apply ground/ocean surface as a wall boundary condition with a no slip

condition. For the thermally unstable case, a temperature (322K) is also specified.
o Initialize domain with a ABL velocity and temperature profile using a UDF o Use the same velocity and temperature profile at the inlet

58 o Add to the inlet profile random fluctuations (these must all add up to zero in order to preserve mass) The Vortex method with 190 vortices, 75m length scale, and 12% turbulence intensity was used in Fluent.
o Run the empty domain until the turbulent flow from the inlet has filled the

domain.
o Set inlet and outlet to periodic, set the net mass flux across the surfaces to

what is was before the condition was changed to periodic. See the Appendix H for details.
o Run the domain until the turbulence intensity stabilizes. Some judgment is

necessary here, as if the flow is allowed to subside too much, it may no longer have the level of turbulence required.
o Every time step record: (code details are in Appendix F)

x-velocity y-velocity z-velocity temperature SGS-kinetic-energy (not available with the Smagorinsky model)

Cautions:
o Make sure no cross wind has developed. This is possible with periodic side

boundaries even with the BC set to have zero net mass flux.
o Check to see that the wind has the appropriately wide range of length

scales so as to mimic physical moving air. This can be done initially through

59 a graphical inspection of velocity contour plots. For a more accurate inspection, a numerical analysis of the length scales can be done by recording velocity data at one (or several,) points in the domain over the full set of time steps recorded to make the Wind. Creating a probability density function of the magnitude of the recorded velocities then provides insight as to the length scale distribution. Time did not allow for such an analysis in this effort.
o Observe to verify that the flow above the viscous sub-layer is as close to

homogenous as possible. Averaged vertical velocity profiles can be computed for this inspection. There should be no vertical velocity gradient in the homogeneous region.
o Make sure an appropriate boundary layer exits. Modify surface roughness in

order to trip a larger boundary layer. Once again this can be verified with comparison of averaged vertical velocity profiles to turbulent standards.

The following (figures 3.5.1 to 3.5.3) are side view contour plots of the center line plane of the empty box used to create thermally un-stable ABL Wind. Again, in unstable conditions, there is a warm sea under a cool body of air, and thus there is a potential for the lighter warm air to move upwards. In each of the three figures the flow is moving from left to right. These are instantaneous snap shots taken during the time profiles were being recorded for use in the domains containing wind turbines. The x velocity component (primary flow direction,) contour plot is show in figure 3.5.1. It can be seen that there is both a boundary layer and the existence

60 of fairly homogeneous flow away from the ground. A wide variety of length scales are also visible. Note that, as mentioned in the section on wind turbine modeling, the maximum flow speed is 9 to10ms-1, and thus it is not necessary to model the constant power section of the variable speed, utility scale, turbine power curve.[3]

[m s-1]

Figure 3.5.1: Velocity Contours in an Empty Box Wind Generation Turbulence intensity (TI) contours are show in figure 3.5.2. Note that the values are predominant around the design range of 14 to 17%. Also important is the depiction of momentum transport interaction between the boundary layer and the main flow. This is indicated by the high TI levels, approximately 18%, on the upper edge of the boundary layer.

61

[TI%]

Figure 3.5.2: Turbulence Intensity Contours in an Empty Box Wind Generation Temperature contours are show in figure 3.5.3. The units are Kelvin. Note that this is of course for the thermally un-stable atmospheric condition, with the warmer temperatures closer to the sea/bottom. The cold thermal specification at the top face drew the heat energy from the warm sea upwards through the domain. There was a relatively large boundary layer ejection forming, as demonstrated by the flow near 300K rising away from the sea on the right side of the plot. Recall that the flow was being recycled from outlet to inlet and thus the tip of the boundary layer ejection which is disappearing on the right side, is starting to enter the domain on the left side.

62

[K]

Figure 3.5.3: Temperature Contours in an Empty Box Wind Generation

63

Verification of Neutral Boundary Layer created with LES


In order to verify that the LES code was producing wind that has good resemblance to physical wind, thus to verify the LES code, the shape of the averaged velocity boundary layer was compared to the log-law for turbulent flows. The wall shear was found by fitting a power law to the averaged velocity data.

z u = ur zr

Eqn: 3.5.1

Where ur is the reference velocity which was fit to the data, and zr is the reference height, also fit to the data. The exponent, , was calculated from a curve fit provided in Manwell [14]:

= 0.096 * log10 ( z0 ) + 0.016[log10 ( z0 )]2 + 0.24

Eqn: 3.5.2

This data fit is for calculating the boundary layer shape based upon the surface roughness z0. The blown sea value of 0.5mm was used from the Manwell Table 2.2 [14].

The average velocity profiles for neutral atmospheric conditions are shown in figure 3.5.4. Vertical profiles were recorded at both the start of the domain (0m) and near the end (900m). These two locations are along the center line of the computational domain in the primary flow direction. The two profiles are similar due to the recycling of the flow from outlet to inlet. Also plotted is the power law profile, a curve fit to the boundary layer. It can be seen that the averaged profiles do follow the trend of the power law, which indicates that the momentum transfer between the

64 wall and fluid was occurring in the correct manner. The Wobbling of the averaged data is thought to be representative of a limited data set, as opposed to a true average which stems from a data set of infinite proportion.

[m s-1]

Figure 3.5.4: Averaged Velocity Profiles and the Power Law Profile The wall shear was calculated using:

w =

du u dz z

Eqn: 3.5.3

z was taken to be from the ground to the thickness of the viscous sub-layer (y+ < 5

to 12). The wall shear was found to be 0.34Pa. The friction velocity, u*, was calculated from the wall shear and fluid density:
u* =

Eqn: 3.5.4

65 The non-dimensional height and velocity were found from:


y+ = u* y
Eqn: 3.5.5

U u*

u+ =

Eqn: 3.5.6

U is a time averaged velocity, in this case using a total of 57 time steps. In

subsequent wind generation efforts, many thousands of time steps were averaged, however, at the time of the development of this neutral wind, that was not possible. For comparison to the averaged data, we use the log-law as documented by Pope [5]:
u =
+

ln y +

( ) + C + w y

Eqn: 3.5.7

The last term is the wake (pressure) correction where:


y y w = 2 sin 2 2
Eqn: 3.5.8

In equation 3.5.7, C is a constant, and is taken to be 5.1. is the von Karmen constant which is typically 0.41, and is the boundary layer thickness. is the wake strength parameter which for turbulent flow over a flat plate is typically taken to be 0.45. It was found that a value of 1.0 for created an excellent data fit.

In figure 3.5.5., the averaged non-dimensional velocity profiles at x= 0m (inlet) and x = 900m (near the exit) are plotted on semi-log scale in comparison to the standard solution for turbulent boundary layers, the log-law. The important aspect for verification of the data is the shape of the curves. Does the experimental data

66 collapse onto the sloped line of the log-law? The plot does indeed indicate that the general trend of the experimental data is linear, and has a similar slope to the loglaw.

Figure 3.5.5: Averaged Velocity Profiles and the Log-Law It was found that the vertical offset of the averaged velocity profiles is extremely sensitive to the wall shear. A wall shear value of 0.32Pa was a good data fit, and it is with in 6% of the calculated value of 0.34Pa.

67

LES Run Parameters


Each LES run was started from a converged RANS run. This significantly reduces the required LES run time. Detailed Fluent settings are in Appendix C. Neutral Boundary Layer in LES (No Energy Equation) An inlet velocity profile was specified as per the recorded neutral ABL wind.
The time step was locked to 0.1s in coordination with the time step used in the

empty domain to create the wind. This means that the CFL number was not always optimal at the start of the runs. A good rule of thumb is for the CFL to be less than 5.0. It was found that when the iterations per time step reduced to five or less, the CFL number was also acceptable. The CFL number is defined by:
CFL = t u x
Eqn: 3.5.9

Where t is the time step, x is the characteristic local mesh element size, and
u is the local flow speed.

Viscosity and density are set to nominal constant values of 1.225kgm-3 and

1.789e-5kgm-1s-1 respectively.

Un-Stable Boundary Layer LES (Including Thermal Effects)


The sea temperature was set to 322K, the top BC set to 298K. The inlet temperature was per as specified by the recorded unstable ABL

wind.
The density remained set to the nominal constant value.

68

LES, What did NOT Work


1) Cross Wind (Roll) In initial attempts to create numerical wind, a cross wind was unwittingly created. This can be seen in figure 3.5.6, a vertical velocity profile plot of the cross wind (ydirection) velocity component versus height (z-direction). This is plotted for four locations along the domain center line in the primary flow direction. Examining the profiles, it can be seen that the overall flow direction was to the left of the figure, with a small flow near the top of the domain moving to the right. Thus there was a net flow to the left, or a crosswind.

[m s-1]

Figure 3.5.6: Cross Flow Velocity vs. Vertical Position The cross wind, which was actually a roll (a vortex whose axis is in the flow direction,) occurred despite a zero net mass flux specification on the side periodic boundary conditions. The cross wind component of the roll was acting at the height of the turbines and thus created the miraculous greater power at the 2nd turbine. This

69 effect can be seen in figure 3.5.7, which is a TOP view contour plot of an instantaneous snap shot of the x direction flow component. The primary flow direction was left to right. Due to the crosswind, moving in the vertical direction in the figure, the wake from the upstream turbine was barely contacting the downstream turbine, and thus the power deficit will be significantly lower than for wind that is truly aligned with the two turbines.

Turbine 1

Turbine 2

[m s-1]

Figure 3.5.7: Top View of a Velocity Contour Plot From comparison of the power deficit predictions, it is evident that there remained a remnant of crosswind in the final version of the neutral ABL numerical wind. It is left to future efforts to recreate the neutral ABL wind with out this defect.

70 2) Large ground/sea Heat Flux setting Specifying a large heat flux at the ground was found to create very unstable iteration in Fluent. Heat fluxes up to 240Wm- were evaluated, however specifications as small as 7Wm- were still found to cause difficulties. The general effect seen in applying this boundary condition is that the CFD code transfers thermal energy to momentum, and a few iterations later, there are velocities two orders of magnitude larger in the domain.

71

Mesh Density and Size Verification

The downstream predicted turbine power deficit evaluation as described in the section named Power Deficit Calculation was used as the primary tool for evaluation of mesh density and domain size. Comparisons were also made of the velocity profiles behind the first and second turbines. It was found that the power deficit value was significantly more sensitive to mesh density and domain size changes than the profiles. This is in part because it was simpler to compare the singular numerical values of the power deficit, than to try and eyeball the relative shapes of the velocity profiles or their variances. The predicted power deficit could vary up to 0.3% before any difference could be noted in a velocity profile.

Shown in figure 3.5.8 are the results of a mesh density study. This study was done using the neutral ABL numerical wind. The power deficit at the 2nd and only turbine down stream of the 1st turbine was used as the evaluation criteria. The geometry of each of the three domains is identical; the only changes are in the refinement of the mesh. A fourth reference point at 532,773 elements was attempted, but was deemed out of the range of the computational resources at hand when it was noted that after 30 hours of running, only a small fraction of the necessary flow time had been computed.

72
Mesh Density Verification
80% 78% 76% 74%

B15a LES Neutral B15b LES Neutral B15d LES Neutral

PT2/PT1

72% 70% 68% 66% 64% 62% 60% 0

50,000

100,000

150,000

200,000

250,000

Mesh Total Elements

Figure 3.5.8: Mesh Density Verification The mesh density plot (figure 3.5.8), shows that with the B15b mesh, density independence was being approached. As the number of elements increased from 96k to 153k, the power deficit was reduced by 3.4%. At the next step, the elements jumped from 153k to 223k, and the deficit changed by the smaller amount of 0.7%. However, even for this reduced domain geometry size, the run time to complete 300s of flow time for B15d was 44 hours (34 and 23 hours for B15d and B15a respectively.) Thus, out of the time constraints of the project it was necessary to choose a mesh density that approached, but did not fully reach, a grid independent solution. The B15d mesh density was utilized for all domains used to create final results. A cubic curve fit to the data shows that for the domain size used in the study, approximately 200k elements would be necessary for mesh density independence.

The domain size comparison of distance to the outlet wall from the second turbine is shown in figure 3.5.9. Although once again grid independence was not reached, the

73 differences in the power deficit values, 0.2%, are significantly smaller than the effects due to changes in the other dimensions and mesh density, and thus 3D down stream was chosen in order to keep the domain size as small as possible.

Down Stream of Turbine 2 Domain Length Verification


80% 78% 76% 74%

PT2/PT1

72% 70% 68% 66% 64% 62% 60% 1 2 3 4 5 6 7 8

B15d LES Neutral 3D-DS B16 LES Neutral 5D-DS B17 LES Neutral 7D-DS

Down Stream Distance [D]

Figure 3.5.9: Down Stream of Turbine 2 Domain Length Verification The domain width study is presented in figure 3.5.10. Once again computational resources define the decision, and a 7D wide computational domain was chosen. The 7.5D wide (164k mesh cells) evaluation case required 50 hours of run time. The predicted power deficit decreased by 2.7% as the domain width was increased from 5D to 10D. Here a cubic curve fit estimates 12D wide would produce grid independence.

74
Domain Width Verification
80% 78% 76% 74%

PT2/PT1

72% 70% 68% 66% 64% 62% 60% 1 2 3 4 5 6 7 8

B22 LES Neutral 5.0D Wide B15d LES Neutral 6.5D Wide B23a LES Neutral 7.5D Wide B21 LES Neutral 10.0D Wide
9 10 11

Domain Width [D]

Fig: 6.3.5.13

Figure 3.5.10: Domain Width Verification The final domain size study, evaluating the domain height, is presented in figure 3.5.11. This plot most distinctly shows that although the power deficit changes between the domains of different heights are small, grid independence was not fully achieved. In varying the domain height form 4.5D to 7.5D the predicated power deficit decreased 1.6%. 15D tall wass estimated by a cubic curve fit as necessary for mesh independence. With a rotor diameter of 80m as per the Horns Rev wind farm, 15D translates to 1200m.

75
80% 78% 76% 74% 72% 70% 68% 66% 64% 62% 60% 3.5 4 4.5 5 5.5 6 6.5 7 7.5 8

Domain Height Verification

PT2/PT1

B15d LES Neutral 4.5D High B18 LES Neutral 5.5D High B19 LES Neutral 7.5D High

Domain Height [D]

Figure 3.5.11: Domain Height Verification The B18 test case required 74 hours of run time. Thus for the realities of wrapping this project up with in one academic year, as well as maintaining software and hardware capabilities that are readily reproduced in industry as per the NREL funding requirements, 5.5D was chosen as the domain height.

With full knowledge that the results are NOT independent of the domain
geometry and quantity of mesh elements, the project moves forward with the caveat of, The best a PC can do in a reasonable time frame for industry.

This domain size and mesh density study aptly demonstrates the severe computational requirements of LES, and thus why LES was not commonly used in the wind farm analysis industry at the time of the study.

76 In summary, table 3.5.1 presents the total mesh element count for the domains used in size and density verification as well as the turbine power deficit calculations: Table 3.5.1: Mesh study Element Counts
Mesh name B15a (Verification only) B15b (Verification only) B15c (Verification only) B15d (Verification only) B18 (Verification only) B19 (Verification only) B21 (Verification only) B22 (Verification only) B23 (Verification only) B24: 7D turbine spacing B25: 9D turbine spacing B26: 11D turbine spacing Total Element Count 96,391 223,587 532,773 153,107 170,707 209,427 203,795 130,579 164,371 177,219 198,581 214,284

77

LES Filtering Lengths


The LES turbulence closure method directly computed the larger scales of motion, and models the smaller scales. In Fluents [6] implicit filtering scheme, the filter size for what was directly computed was based upon the local characteristic element length. A contour plot of the side view of the center line plane of the filter length is shown in figure 3.5.12. The filter length ranged from approximately 2.5m near the turbines to 13m in the upper portions of the domain. The jumps in element size at the boundaries of the boxes around the turbines may have dissipated the wake considerably, and thus affect the resulting power deficit prediction. An evaluation of this effect was not possible in the allotted time frame.

[m]

Figure 3.5.12: Filter Length Contour Plot In order to verify that the filtering size is of the correct scale, the LES filtering lengths were compared to the integral length scale (L). The turbulent kinetic energy

78 (k) and turbulent dissipation rate () are found from the converged RANS run that was done to initialize the LES run. Using the approximation for the integral length scale in homogeneous flow:
3 2

L=

Eqn: 3.5.10

The integral length scale was calculated to be 93m near the turbines. As per Fluents suggestion, this length should be divided by 40 to 50 elements. Dividing by 40 cells so as to keep the mesh as coarse as possible, a suggested characteristic cell length of 2.3m was obtained. This demonstrates that close to the turbines the cells are near the size that should produce accurate results. There are however, many sources of error in this calculation: The homogeneous assumption, the k and values come from a RANS calculation, as well as the cells near the turbine are tetrahedral which means that the cell characteristic length is an average of a range of lengths. Thus this comparison of filter size to integral length scale was crude, but does provide some indication as to the correct order of magnitude of the element spacing.

79

Recording of Velocity Profiles


Velocity data was recorded along the span of points indicated by the red line behind the down stream turbine in Figure 3.5.13. The line was located at the vertical position of the hub height, and was two turbine diameters down stream of the 2nd turbine. The line extends from one side face of the domain to the other. Again, the red circles represent the rotor disks of the turbines, the green arrow shows that the wind was aligned with the line of the turbines. For mesh simplicity, the towers and nacelles were not modeled. The velocity components along the line were recorded at each time step such that averaged velocity profiles could be calculated.

Top

Inlet

Side

Figure 3.5.13: Recording Velocity Profiles Geometry

80

Domain Top Boundary Condition Verification


A wall boundary condition was used on the top face such that a thermal specification could be added. In order to verify that the wall boundary condition did not have adverse effects on the results, a verification study was performed. Evaluation of the data was in the form of comparing the predicted power deficits and averaged velocity profiles for the different BC. The predicted power deficit results (table 3.5.2), show that this variation in boundary conditions is not significant in comparison to factors such as mesh density or domain height. The method for calculating the power deficits is detailed in the following section. Table 3.5.2: Top BC Predicted Power Deficit Comparison
Test Case: 7D, Symmetric BC , Thermally Neutral, B24-d 7D, Wall BC, shear = -.1Pa, Thermally Neutral, B24-g 7D, Symmetric BC, Thermally UN-Stable, B24-e 7D, Wall BC, shear = -.1Pa, Thermally UN-Stable, B24-h PT2/PT1 66.7% 66.3% 56.8% 56.6%

The average velocity profiles for this study are show in figure 3.5.14. These profiles where obtained as detailed in the previous section. The U shaped lines at the top of the plot are the velocity profiles (<U>). The lines near the bottom of the plot are the . Examination of the figure shows that the differences between the symmetric BC and wall BC are relatively small in comparison to the differences between the neutral and unstable atmospheric conditions. For the neutral conditions, the dark blue diamonds indicating the symmetric BC is so close to the light blue diamonds indicating the shear BC that they are difficult to separate visually. Again, visually

81 evaluating velocity profiles is not a robust evaluation technique, which is why the power deficit values are presented above.

Averaged Velocity Profiles for varying Boundary Conditions

7D, Symm, Neutral, <U>


<U> [ms-1]

7D, Symm, Neutral, 7D, Symm, T_UN-Stable, <U> 7D, Symm, T_UN-Stable, 7D, -.1Pa, Neutral, <U> 7D, -.1Pa, Neutral, 7D, -.1Pa, UN-stable, <U> 7D, -.1Pa, UN-stable,
2 3 4

0 -275 -225 -175 -125 -75 -25 25 75 125 175 225 275

Y posn [m]

Figure 3.5.14: Averaged Velocity Profiles for Varying Boundary Conditions

82

Power Deficit Calculation


The instantaneous power of each turbine was integrated over one or more complete cycles of the recorded numerical wind. For the wind samples created, this was 70 seconds for the thermally neutral ABL wind and 290 seconds for the unstable ABL wind.

It was found that the integrated (over the rotor disk area and over time,) power deficit at the down stream turbine was a very sensitive measurement of the computational set up. For this reason, it was used as the primary tool for evaluation and verification of different boundary conditions, mesh densities, and domain sizes. Power deficit was commonly used in wind farm wake studies, and thus the computed values could also be compared to previous studies and measurements.

In figure 3.5.15, the green arrow indicates the primary flow direction in this velocity contour plot. This is a side view of the domain center line plane. The turbines were spaced 9 diameters (D) apart, and there was no appreciable cross wind. From this velocity contour plot, the interaction of the wake from the upstream turbine with the down stream turbine was apparent.

83
Turbine 1 Turbine 2

9D

Figure 3.5.15: Power Deficit Calculation Contour Plot Every time step (when running LES, or iterations with RANS), the power at the actuator disks was recorded using the following formula:
Paero = U 3 dA
Disk

Eqn: 3.5.11

U is the velocity component normal to the disk. Density () was considered to be

constant. The power coefficient (Cp) was included through the use of the axial induction factor theoretical maximum value of 1/3.

Figure 3.5.16 is a plot of the instantaneous power integrated over the entire turbine rotor area for both the upstream and down stream turbines as per equation 3.5.11. Repetition of the numerical wind period (290seconds,) is quite evident in both recordings. For both the upstream and downstream turbines, this data was numerically integrated over time to calculate the energy values. The flow time period used for both integrations was the first complete period demonstrated by the down stream turbine. The two integrated energy values are then compared to compute the power deficit for the down stream turbine.

84 Error estimation was accomplished by calculating the power deficit at each individual time step, then taking the standard deviation of the deficit values over the wind period under consideration.

2.0E+06

290s
1.8E+06

1.6E+06

1.4E+06

Power [W]

1.2E+06

T1 power T2 power

1.0E+06

8.0E+05

290s
6.0E+05

4.0E+05 0 50 100 150 200 250 300 350 400 450 500 550 600 650 700

Flow Time [s]

Figure 3.5.16: Power Deficit Calculation Instantaneous Power Plot

85

4. Results
The predicted values from the LES and RANS CFD computations at turbine spacings of 7D, 9D, and 11D are presented here. Results are shown for both thermally neutral and un-stable atmospheric boundary layer (ABL) conditions. Figure 4.1 shows the LES downstream turbine power deficit results in comparison to recording at the Horns-Rev wind farm as reported by Hansen [3]. The data for the plot is given in Table 4.1. An important physical phenomenon that the results correctly portray is the decrease of the upstream turbine wake velocity deficit from the free stream velocity with increasing down stream distance. This is demonstrated in the data by smaller power deficits at larger turbine spacings.

LES Power Deficit vs. Turbine Spacing


100% 90%

LES Neutral LES Unstable Hansen data UN-STABLE 6m/s Hansen data STABLE 6m/s Hansen data Very Un-STABLE 6m/s
6 7 8 9 10 11 12

P T2 /P T1

80% 70% 60% 50% 40%

Turbine Spacing [Diameters]

Figure 4.1: LES Predicted Power Deficits SOLUTION REMAINS GRID DEPENDAN The Hansen data was recorded at an average free stream wind speed of 6ms-1. In the numerical models, the cross flow direction averaged wind speed approaching the

86 upstream turbine ranged in the vertical direction from 6.4 to 8ms , the median being
-1

7.2ms-1.

The Horns Rev wind farm at which the Hansen data was measured has both a row and column turbine to turbine spacing of 7D. The 9.4D and 10.4D spacing data becomes available when the incoming wind direction was not aligned with the rows or columns of the farm.

In order to create an error estimate for the numerical model power deficits, the downstream turbine power deficit was calculated at each time step over one or more numerical wind recording periods. A standard deviation of these values then provides some insight as to the variation of the power deficit with flow time. The error bars in figure 4.1 represent a single standard deviation of the instantaneous power deficits. This error estimate is relatively large due to the significant fluctuations in the numerical wind (see Figure 3.10,) in comparison to all other fluctuations seen in the data. Thus while the 7D unstable ABL wind LES result comes close to being with in 1 of the Hansen data, there is still significant inaccuracy in this result.

The approximately 15% difference between the LES neutral and unstable results can be partly explained by a small cross wind that formed in the development of the thermally neutral ABL numerical wind. As detailed in the section LES, What did Not Work, cross winds reduce the time averaged power deficit by temporarily

87 moving the wake of the upstream turbine laterally such that is does not fully contact the downstream turbine.

Shown in Fig. 4.2 are the results obtained through the use of RANS.

RANS Power Deficit vs. Turbine Spacing


100% 90%

RANS Neutral RANS Unstable Hansen data UN-STABLE 6m/s Hansen data STABLE 6m/s Hansen data Very Un-STABLE 6m/s
6 7 8 9 10 11 12

PT2 /PT1

80% 70% 60% 50% 40%

Turbine Spacing [Diameters]

Figure 4.2: RANS Predicted Power Deficits

As with the LES results, the RANS results also show the important decrease in power deficit with increasing turbine spacing. The RANS (Reynolds AVERAGED Navier Stokes) results for thermally stable and neutral conditions are so close as to be considered identical given an error approximation by comparison to the Hansen data. The RANS results are approximately 20% different from the Hansen data, and thus it can be clearly seen that in this numerical simulation LES produced results significantly closer to the measurements.

88 Table 4.1: LES and RANS Predicted Power Deficits

Hansen Measurements Error Estimation: In reviewing the data reported by Hansen [3], several important factors must be considered.
The Horns Rev wind farm measurements reported are for the 1st two turbines in a

row of up to 13 turbines, thus there may well be wake drag effects in play that are not taken into account in the calculations.
The Hansen values are taken from the reported singular velocity values at each

turbine. This implies that a single value is being used to model the wind speed at the turbine over the entire actuator disk area.
The reported error estimation of 4% to 5% comes from a single standard

deviation of the recorded data. Results: Velocity Profiles The LES average horizontal x-direction (primary flow direction,) velocity profiles 2D down stream of the 2nd turbine are show in Figure 4.3. The U shaped curves near the top of the plot are the averaged velocity profiles, and the curves near the bottom of the plot are the standard deviations (). It can be seen that for both the thermally neutral and un-stable cases, there is a reduction in the velocity deficit with

89 increased turbine spacing. The offset from center of the neutral profiles was due to the small crosswind that remained in the recorded wind data set.

LES Average Velocity Contours for Varying Turinbe Spacing

7D, Neutral, <U> 7D, Neutral, 7D, UN-stable, <U> 7D, UN-stable, <U> [ms -1] 9D, Neutral, <U> 9D, Neutral, 9D, UN-stable, <U> 9D, UN-stable, 11D, Neutral, <U> 11D, Neutral, 11D, UN-stable, <U> 11D, UN-stable,
1 2 3 4 5 6

0 -275 -225 -175 -125 -75 -25 25 75 125 175 225 275

Y posn [m]

Figure 4.3: LES Averaged Velocity & Profile Predictions SOLUTION REMAINS GRID DEPENDANT Note the double peaks of the LES standard deviation. This M shape is considered key to successful wake modeling. This result is also seen in the TKE plots created with RANS, figure 4.4. The TKE is representative of the normal stress in the fluid, as is depicted by equation 2.1.1.

90
RANS Velocity Contours for Varying Turinbe Spacing

7D, Neutral, <U> 7D, Neutral, TKE 7D, UN-stable, <U> 7D, UN-stable, TKE <U> [ms -1] 9D, Neutral, <U> 9D, Neutral, TKE 9D, UN-stable, <U> 9D, UN-stable, TKE
3 4 5 6

11D, Neutral, <U> 11D, Neutral, TKE 11D, UN-stable, <U> 11D, UN-stable, TKE
1 2

0 -275 -225 -175 -125 -75 -25 25 75 125 175 225 275

Y posn [m]

Figure 4.4: RANS Velocity & TKE Profile Predictions Both the velocity and TKE contours as predicted by RANS were very similar for all six cases. The numerical wind, as prepared for the LES calculations, was not used for the RANS predictions, as these results are for a single time step RANS as opposed to multi time step RANS or URANS. Thus the inlet BC to all six domains was the same vertical velocity profile with random perturbations, the unstable cases also having thermal profiles.

91 Zoomed views of the RANS predictions for neutral ABL conditions are presented in figures 4.5 and 4.6. Since the RANS results for neutral and unstable ABL conditions were virtually identical, it was not deemed necessary to have zoomed plots of both. The RANS velocity profiles do predict the important decrease in velocity deficit with increased turbine spacing, however, as shown in figure 4.2, the magnitude of the results are distant from the Horns Rev measurements.

RANS Velocity Contours for Varying Turinbe Spacing

4.4

4.2

<U> [ms -1]

3.8

7D, Neutral, <U> 9D, Neutral, <U> 11D, Neutral, <U>


3.4 -75 -25 25 75 3.6

Y posn [m]

Figure 4.5: RANS Velocity Profile Predictions Zoomed The TKE contours shown in figure 4.6 also very closely portray the shape, but not magnitude, of the contours for Turbulence Intensity, TDR, and strain rate.

92
RANS TKE Contours for Varying Turinbe Spacing

0.4

TKE [m 2s-2]

7D, Neutral, TKE 9D, Neutral, TKE 11D, Neutral, TKE

0.3

0.2

0.1

0 -275 -225 -175 -125 -75 -25 25 75 125 175 225 275

Y posn [m]

Figure 4.6: RANS TKE Profile Predictions - Zoomed Since it is not currently efficient to embed movies in the document, a number of instantaneous snap shots have been added in order to present the nature of the flow as calculated with the mesh at hand and Fluents LES code. These plots demonstrate the interaction of the fluctuating upstream wind with the wake effects of the two turbines. Note the interaction of the wake from the upstream turbine with the down stream turbine, and the increased velocity deficit down stream of the 2nd turbine. The interaction of the sea boundary layer with the turbine wakes is also evident.

93 In figures 4.7 to 4.11, the contour plots are cross sectional through the vertical or horizontal planes at the turbine hubs. The first plot on each page is a side view of the domain center line plane, the 2nd a top view of the hub center plane.

94

Turbine 1

Turbine 2

[m s-1]

Figure 4.7: Side view of x-direction velocity [m s-1] (Instantaneous Contours) LES study B24g, 7D Spacing, Neutral ABL Conditions

Turbine 1

Turbine 2

[m s-1]

Figure 4.8: TOP view of x-direction velocity [m s-1] (Instantaneous Contours) LES study B24g, 7D Spacing, Neutral ABL Conditions

95

Turbine 1

Turbine 2

Figure 4.9: Side view of x-direction velocity [m s-1] (Instantaneous Contours) LES study B24h, 7D Spacing, UN-Stable ABL Conditions

[m s-1]

Turbine 1

Turbine 2

[m s-1]

Figure 4.10: TOP view of x-direction velocity [m s-1] (Instantaneous Contours) LES study B24h, 7D Spacing, UN-Stable ABL Conditions

96 Comparing the Neutral and Unstable velocity profiles, several important results become evident. The side view velocity contour plots demonstrate greatly increased interaction between the sea boundary layer and the turbine wakes in the thermally unstable ABL conditions (warm sea.) This may be correlated to the higher TI, and larger lateral and vertical fluctuation of the turbine wakes in the unstable conditions. This increased fluctuation of the wakes can also be observed in comparing the neutral and unstable hub center TOP views (figures 4.8 and 4.10.)

The center line SIDE view thermal contour plot seen in figure 4.11 clearly shows how the air in contact with the sea warmed and then rose upward through the domain.

Turbine 1

Turbine 2

[K]

Figure 4.11: Side view of Temperature [K] (Instantaneous Contours) LES study B24h, 7D Spacing, UN-Stable ABL Conditions

97 The existence of the warm air mass in the center of the domain is due to the creation of unstable numerical wind a priori, and thus demonstrates what would other wise only be achieved with a computational domain including an extremely long distance upstream of the 1st turbine.

98

5. Conclusions
With the advent of ever increasing offshore wind power, wind farms in 2D grid arrays are growing more typical. This farm geometry minimizes cabling costs and optimizes the use of shallow waters close to areas of high electrical load. The challenge that lies ahead is to develop methodology to optimize the wind turbine spacing. The intent of this experiment was to develop standards for using LES for the wind farm application, to develop a method to predict wind turbine wakes that is more accurate than using RANS, and to make comparisons to RANS results.

The wind farm geometry was simplified to two turbines in a row aligned with the wind direction. This was necessary to have a computational domain of a size that matched the time frame and computational resources available for this effort. Turbine spacings of 7, 9, and 11 diameters (D) were evaluated.

The domain size and mesh density were evaluated through verification studies. The resulting domain width was 7D, the domain height 5.75D. Upstream of the first turbine and down stream of the 2nd turbine there was 3D distance to the domain boundaries. The verification study showed that a more refined mesh and a larger computational domain are necessary in order to achieve results that are completely grid independent. Interpolation of the data from the mesh studies shows that modifying the domain to 12D wide, 15D tall, and with a mesh 31% more dense would be required to achieve grid independence. The computational resources

99 required for a computational domain of this magnitude were not available for this project.

All CFD computations were performed with Fluent version 6.3.

Most studies to date use only a thermally neutral ABL. This does not create an accurate simulation of physical wind. In order to better approximate the true nature of an ABL, numerical wind was created a priori, and then used as the inlet boundary condition. Numerical wind was created for both thermally neutral and unstable ABL conditions. Stable ABL wind is left to future efforts. In neutral conditions there is no thermal driving force to move the air vertically. In unstable conditions, there exists a warm sea below a cool body of air, and thus there is a tendency for the lighter air near the sea surface to move upwards.

Creating the wind separately has several advantages. Since there were three different turbine spacings to be evaluated in this effort, each wind recording could be used three times. This allowed for the relatively short (3D) domain length upstream of the first turbine, and subsequently reduced run times due to the smaller size of the computational domain. In creating the wind separately, there was the added advantage of using a domain that had a completely structured mesh, while having the same mesh density as that used for the domains containing turbines. This was possible in the empty domain since it did not have the complicating geometry of the turbines. The completely structured mesh domain had a higher computational

100 rate than the domains with turbines that contained both structured and unstructured mesh.

With the wind created in a separate domain, it was possible to ensure that the numerical flow created did bear a good resemblance to physical wind before applying it to the domain containing turbines. Verification of the numerical wind was done through comparing the averaged vertical velocity profiles to the turbulent standard for boundary layers, the log law. It was found that the wall shear value has a strong influence on the vertical offset of the numerical wind velocity profile in a semi-log plot. Figure 3.5.5 shows the details of this comparison. For an assumed mutual linear slope, the vertical offset of the numerical wind profile is with in 6% of the log law estimation.

The results achieved using LES are the best possible for a desk top computer in the allotted time frame. The computer had 2 Intel Corel 2 cores, each running at 1.87GHz. 2GB of RAM was available. Fluent was only licensed to run on one core at a time. While the LES results are not fully independent of the mesh density or domain size, they do represent a significant improvement over the results achieve using the RANS turbulence closure technique.

Validation was done through comparing the predicted downstream turbine power deficit results to the measurements documented by Hansen [3] of the Horns Rev

101 wind farm. Unfortunately no measurements were found to compare the computed velocity profiles with.

As seen in table 4.1, LES shows an approximately 10% difference in predicted power deficit values at 7D, and 18% at 11D between neutral and unstable ABL conditions. This gap between LES predictions obtained with neutral and unstable ABL conditions can be partially explained by a small cross wind that remained in the neutral recorded wind data. This small velocity component that existed in the cross flow direction caused the wake from the upstream turbine to only partially contact the downstream turbine for small intervals of time. When the data was integrated over time, this produced a smaller power deficit than would exist if the turbines were truly aligned with the wind direction as intended. Future efforts in developing numerical wind will include a numerical length scale verification to ensure a good characterization of physical wind.

For the unstable ABL wind generation and subsequent runs, a constant value was used for the density. Fluent does none the less take in account buoyancy effects, however it is believed that the magnitude of these effects may not be correctly represented. The Incompressible ideal gas option in Fluent was evaluated, but not subsequently used due to degradation in numerical stability.

Double peaks were found in the standard deviations of the LES horizontal velocity profiles for unstable ABL conditions. These are an indication that the model was

102 approaching an accurate prediction of the wake interaction with the surrounding flow. The existence of this shape in the results is discussed in the ENDOW [2] papers as correctly capturing near wake phenomenon.

As might be expected, the center line, side view velocity contour plots (figures 4.7 & 4.9) demonstrate greatly increased interaction between the sea boundary layer and the turbine wakes in the thermally unstable atmospheric conditions as compared to the stable conditions. This may be correlated to the higher turbulence intensity and greater velocity fluctuations seen in the turbine wakes.

Using LES, the fluctuation of the recorded instantaneous turbine power with time is significant, up to 75% of the averaged value. RANS is a singular time step, averaged technique, and thus does not capture the transient effects. The large deviation of the RANS results from the Hansen measurements seen in figure 4.1 shows that with the standard set of five k- model constants, the k- model performs particularly poorly for wake prediction. A positive aspect to the RANS efforts was that the run time was a fraction of that for LES. The RANS runs took less that one hour, where as the LES runs took up to 75 hours, and thus could be used as a back of the envelope technique. Each LES run was initialized with a converged RANS run, and thus it did help to reduce the computational expense of the LES technique.

The RANS (Reynolds AVERAGED Navier Stokes) results for thermally unstable and neutral conditions are so close (<1%) as to be considered identical given an

103 error approximation through comparison to the Hansen data. Again, the effect of the RANS technique of averaging the flow parameters appears to have negated the transitory nature of the unstable ABL condition. Using a constant value for air density may have also played a role in this result.

The LES technique requires relatively large computational resources. For this project, and for most in the industrial setting, larger resources are not presently available. For this reason it may yet be several years before LES becomes more common in the wind farm analyst tool set.

This effort produced results that are comparable to experimental results and showed clear areas to improve computational issues.

104

6. Future Efforts/Recommendations
As with most projects, results were limited by time constraints and resources. If further time was available, here is a list of changes/additions that would be made:
Use a open source CFD code such as Open Foam
o This would allow for the use of as many computational nodes as were

available. With greater computing resources: The mesh density and domain size could be improved and thus free the results of their effect. Refine the ground/sea boundary layer until a satisfactory wall shear is obtained. This way it would not be necessary to use a wall function which poorly approximates the near wall flow. Refine the mesh at the turbine rotor disk such that on the order of 15 radial sections could have individual pressure drop settings.
Record more numerical wind samples.
o Perform a length scale analysis on the numerical wind samples, and

compare this to wind data.


o Compare the empty box numerical wind generation to the results

obtained by Moeng and Sullivan [20].


o Generate wind for thermally stable atmospheric conditions.

Add a tangential velocity component to the Turbine boundary condition. This

could most easily be accomplished by using the swirl function in the Fluent Fan setting.

105 Compare LES results to multiple time step RANS (URANS), and include the k (better for wall boundary conditions,) closure technique as well as the k-.

106

7. References
1. Barthelmie, R., et al., ENDOW (Efficient Development of Offshore Wind
Farms): Modeling wake and boundary layer interactions. Wind Energy,

2004. 7(3): p. 21. 2. Barthelmie, R.J.L., G.C.; Pryor, S.; Jrgensen, H.E.; Bergstrm, H.; Magnusson, M.; Schlez, W.; Rados, K.; Lange, B.; Vlund, P.; Neckelmann, S.; Mogensen, S.; Schepers, G.; Hegberg, T.; Folkerts, L,
Efficient development of offshore windfarms (ENDOW): Final report to the European Commission. 2003: p. 30.

3.

Hansen, K., Barthelmie, Cabezon, Politis (2008) UPWIND: Wake


measurements used in the model evaluation. UPWIND Volume, 36

4.

Stangroom, CFD Modeling of Wind Flow Over Terrain, in Mechanical


Engineering. 2004, Univ. of Nottingham. p. 298.

5. 6.

Pope, Turbulent Flows. 2000: Cambridge University Press. Fluent. Fluent Tutorials (online help). [cited; Fluent Users Guide, Fluent Tutorial, Fluent UDF Manual]. Available from: http://www.fluentusers.com/fluent6326/doc/ori/index.htm.

7.

Davidson, Turbulence, An Introduction for Scientists and Engineers. 1st ed. 2004: Oxford University Press. 657.

8. 9.

Wilcox, Turbulence Modeling for CFD. 1 ed. 1993: DCW Industries. 460. Hargreaves, W., On the use of the ke model in commercial CFD software
to model the neutral atmospheric boundary layer. Journal of Wind

Engineering and Industrial Aerodynamics, 2006. 95(95): p. 15.

107 10. Schepers; Barthelmie.; Rados, K.L., B.; Schlez, W. , Large off-shore
windfarms: linking wake models with atmospheric boundary layer models.

Wind Engineering, 2001. 25(5): p. 9. 11. Schepers, J.G., ENDOW: Validation and improvement of ECNs wake
model. 2003: p. 113.

12.

Barthelmie, R., Frandsen, Hansen, Modeling and measurements of wakes


in large wind farms, in Science of Making Torque from Wind. 2007. p. 9.

13.

Crasto, Numerical Simulations of the Atmospheric Boundary Layer. 2007, Universit degli Studi di Cagliari. p. 195.

14.

Manwell, Mcgowan, and Rogers, Wind Energy Explained. 2005: John Wiley & Sons, Ltd. 577.

15.

Patton, S., Canopy element influences on resolved- and subgrid-scale


energy within a large-eddy simulation. Agricultural and Forest

Meteorology, 2002. 115(5-17): p. 13. 16. Gryning, J., Larsen, Batchvarova, The wind profile up to 300 meters over
flat terrain, in Science of Making Torque from Wind. 2007, Journal of

Physics: Conference Series 75: The Technical University of Denmark. p. 9. 17.


Guide for the Verification and Validation of CFD Simulations, in AIAA.

1998. p. 29. 18. Oberkampf, T., Verification and Validation in Computational Fluid
Dynamics, S.N. Laboratories, Editor. 2002. p. 122.

19.

108 Buhl, M. NWTC Design Codes/ WT_Perf. Last modified 15-November2006 [cited; WT_Perf uses blade-element momentum theory to predict the performance of wind turbines. It is a descendent of the PROP code originally developed by Oregon State University. Over the intervening years, many people from many organizations put their marks on the code. More recently, the staff at the NWTC rewrote the program, modernized it, and added new functionality and algorithms.]. Available from: http://wind.nrel.gov/designcodes/simulators/wtperf/.

20.

Moeng and Sullivan, A comparison of Shear and Buoyancy Driven


Planetary BL Flows. American Meteorological Society, 1994: p. 24.

109

8. Appendices Appendix A: CFD Files names reference


A9: empty domain used for generating NEUTRAL numerical wind A9b: empty domain used for generating NEUTRAL numerical wind(data not used) A10: domain used for generating UNSTABLE numerical wind Bob: Coarse mesh used for development of UDF and execute command tools B4: single turbine domain, used for technique development B6: 2 turbine domain, 9D spacing, neutral atmospheric conditions B6u: 2 turbine domain, 9D spacing, unstable atmospheric conditions B7: 2 turbine domain, 11D spacing, neutral atmospheric conditions B7u: 2 turbine domain, 11D spacing, unstable atmospheric conditions B8: 2 turbine domain, 13D spacing, neutral atmospheric conditions B8u: 2 turbine domain, 13D spacing, unstable atmospheric conditions B11: three turbine domain, initial runs only B15 a,b,c,d: 2 turbine domain used for mesh refinement B16 and B17: used in comparison to B15 for downstream of 2nd turbine domain length verification B18 B19 B20: used in comparison with B15 for domain height verification B21 B22 B23: used in comparison with B15 for domain width verification B24 a,b,c,d,e,f: used to compare boundary conditions and LES models B24 g: 2 turbine domain, 7D spacing, neutral atmospheric conditions B24 h: 2 turbine domain, 7D spacing, unstable atmospheric conditions B25a: 2 turbine domain, 9D spacing, neutral atmospheric conditions B25b: 2 turbine domain, 9D spacing, unstable atmospheric conditions B26a: 2 turbine domain, 11D spacing, neutral atmospheric conditions B26b: 2 turbine domain, 11D spacing, unstable atmospheric conditions

110

Appendix B:
Details of the meshes used in this experiment: The B24 mesh has 7D turbine spacing. The only difference with B25 and B26 is their 9D and 11D turbine spacing, respectively. The spacing of course effects the total element count.
DESCRIPTION rotor diameter: [m] hub height: [m] domain width [D] domain height [D] turbine spacing [D] domain length down stream of T2 [D] domain length UP stream of T1 [D] GENERAL cell spacing: [m] Vertical cell spacing in TOP layer [m] 1st vertical cell height [m] ASPECT ratio: BL growth rate BL # of cells BL top cell size[m] Turbine hemisphere interval count Mid box Y-dir spacing Mid box Z-dir spacing Mid box X-dir spacing turbine cylinder thickness [m] turbine cylinder x dir count TOTAL elements Turbine p outer coef. to U2 Turbine p mid coef. to U2 Turbine p inner coef. to U2 Turbine p hub coef. to U2 Top BC Ground/Sea BC side BC B24 80 70 7 (560m) 5.5 (440m) 7 3 3 15 15 2.7 3.7 1.2 5 6.72 17 10 10 6 16 3 153,107 -0.419 -0.634 -0.463 -1.0 wall, = -.1 Pa, T=298K wall, = 0.005 Pa, T=322K Periodic, 0Pa press gradient

111

Appendix C: Fluent Settings


C1: RANS neutral settings C2: RANS differences for unstable (including temperature effects) settings C3: LES neutral settings C4: LES differences for unstable

App. C1: RANS neutral settings

112
The inlet velocity profile was created from the power law profile. The data was laid out in excel, then copied to a text file. The extension is changed to .prof so as to be recognized by Fluent. Use Define/Profile to read in the values, that then will populate the drop down boxes in the boundary condition assignments. See Appendix J for format details.

113

114

Fan BC settings for all runs: RANS & LES

Inner (radius) Turbine setting

Mid (radius) Turbine setting

Outer (radius) Turbine setting

Turbine Hub setting

115

App. C2: RANS differences for unstable (including temperature effects)


settings

116

117

118

App. C3:

LES neutral settings Turbine settings are the same as those for RANS

119

120

121

122

App. C4:

LES differences for unstable

123

124

125

126

Appendix D: How to use Batch mode in Fluent


Fluent uses journal files that are accessed through the File/read menu in the GUI. Journal files have the extension .jou Must be no spaces at end of line (these are interpreted as enter) Journal files can also be used as macros as they can also record keystrokes and mouse clicks Example file for compiling a UDF, loading it, then doing an unsteady (LES) run, saving the results, and exiting: In this example: B4-ccc.c is the name of the UDF The library created here is libudf_ccc The 1st line compiles the UDF, the 2nd loads it A comma means accept default input B4.cas and B4.dat are the names of the Fluent files rc means read case file rd means read data file 0.10 is the size of the time step 9000 is the number of times steps to be run 20 is the maximum number of iterations per time step before moving on to the next time step wc means write case file wd means write data file /define/user-defined/compiled-functions/compile libudf_ccc yes B4-ccc.c , , /define/user-defined/compiled-functions/load libudf_ccc /rc B4 /rd B4 /solve/set/time-step 0.10 /solve/dual-time-iterate 9000 20 /wc B4-finish66 /wd B4-finish66 /exit
NOTE: For running on multiple nodes: The UDFs MUST be compiled and loaded on all the nodes. i.e. the commands must be in the journal files. Can not run the graphical version(on only one node) compile there, and then running in batch mode. On super01, should be compiled each run, and files can be corrupted.

127

Appendix E: How to do runs on NRELs super01


Create a journal file as detailed in Appendix D Log onto lester Log onto super01: ssh Y super01 the -Y means graphical mode, and thus once Exceed 3D is running on the local PC, graphical operations can be performed. NOTE: if the files are created on a windows machine, it is necessary to use the command dos2unix _____ to convert the file to unix format. To launch Fluent in graphical mode: o Have Exceed 3D running on PC o Log onto super01 o module load fluent/6.3.26 it is important to specify the same version of Fluent as is being used on the local PC, or the UDF will not function. o module load intel This load the C compiler to fun the UDFs o fluent 3d After a few seconds the unix version of the Fluent GUI will pop up To launch Fluent in BATCH mode: o A .pbs file must be created that is submitted in the job que using qsub xxx.pbs o qstat lists the jobs that are currently running Example of a .pbs file: o No spaces at ends of line ````````````````````````````````````````````````````````````````````````````````` #!/bin/bash --login

#PBS -N fluent-B26-b #PBS -q Fluent #PBS -l ncpus=6,fluentpar=3 #specify the number of nodes to use(this is max at present) #PBS -l walltime=48:00:00 #specify time until job is killed (48hrs is max) #your contact info #PBS -M peter.wolton@colorado.edu #PBS -m abe #PBS -o pbs.B26-b.out #PBS -e pbs.B26-b.err #specify the name of the file you want written if there is an error module load intel module load fluent/6.3.26 cd $PBS_O_WORKDIR

128 fluent 3d -g -t$FLUENT_CPUS -i B26-b.jou -psgimpi >& B26-b-out.txt `````````````````````````````````````````````````````````````````````````````` o B26-b.jou is the journal file that will be called o B26-b-out.txt is the file where all the information that is usually written to the GUI is recorded.
UNIX commands: o This web site has a great list of unix commands: http://www.itd.umich.edu/itcsdocs/r1159/
o o o o o o o o o

Zip and unzip works on super01 with files created in windows dir OR ls to list files in directory rm yyy.xxx to delete a file rm zin-* removes all files starting with zinrm -r names Remove files, directories, and recursively, any subdirectories. rmdir directory Remove directory (directory must be empty). BATCHING: qstat to see list of jobs (and their numbers) qdel 222222 to remove job from list (22222 is the number seen when qstat command is used) /usr/local/bin/lmstat what licenses are checked out and available

o To Copy files from lester to super01 and vise versa: scp B4---* lester: where * means any possible value scp B4---* super01: MUST have the colon

129

Appendix F: Details of code for recording and reading profile files every time
step in Fluent.
Fluent calls a set up where information is passed back and forth between UDFs and the fluent software scheming WRITE profiles: o Once appropriate wind conditions have been created, and a time step has been chosed for both the file to be recorded and the file that will read the profiles: o In the Solve/Execute commands box: o Enable 1 command o Set to every 1 time step o Enter command: file/write-profile 33Profile-%t.prof (front) x-velocity yvelocity z-velocity temperature sgs-kinetic-energy o Rename files to something easy to work with i.e.: pro-1000.prof ..pro-5650.prof READ profiles into new domain: o Create a UDF that counts the time steps This must be written in C# and saved as a .c file Microsoft Visual Studio was used for this project I used ccc as my counter variable `````````````````````````````````````````````````````````````````````````````````````````````````````` /******************************************************************* UDF for advancing "ccc" each time step *******************************************************************/ #include "udf.h" int minFiles = 1000; /* starting number of Profile files*/ int maxFiles = 3900; /* ending number minus 1 of Profile files*/

DEFINE_ON_DEMAND(ts_counter) /*must use underscore and not dash in name*/ { int udfccc=RP_Get_Integer("ccc"); if (udfccc > maxFiles) {udfccc = minFiles;} else {udfccc=udfccc + 1;} RP_Set_Integer("ccc",udfccc); } ``````````````````````````````````````````````````````````````````````````````````````````````````````
o Compile and load the UDF (called it libudf_ccc) o Create the variable ccc in the GUI: (if (not (rp-var-object 'ccc))(rp-vardefine 'ccc 1001 'integer #f))

130
o NOTE: when pasting into the GUI, use right click p, other wise a space is added before the command that must be manually removed o Set the value of ccc in the GUI: (rpsetvar 'ccc 1002) o Retrieve the value of ccc in the GUI: (rpgetvar 'ccc) o Enter commands read the profile files in Solve/Execute commands(every 1 time step) Note that in this case my files were named zin-1000.profzin2200.prof etc: (define ttt "/file/read-profile/") (define tm "zin-") (set! tm (string-append tm (number->string (rpgetvar'ccc)))) (define bbb "") (set! bbb (string-append ttt tm)) (ti-menu-load-string bbb) (models-changed) define/user-defined/execute-on-demand "ts_counter::libudf_ccc" (%rpgetvar 'ccc) o Run Fluent, make sure that the GUI output indicated that it was able to read the file o NOTE: profile files must be in same directory as case and data files using the above commands

131

Appendix G: Details of other UDFs


/******************************************************************* UDF for x < xbound reverse Uy and divide by scale(minimize Uy) *******************************************************************/ #include "udf.h" /*MUST have variable defns OUTSIDE function called by Fluent */ real xx; real v; real scale = 2.0; real xbound = 350; /*bound for modification*/ DEFINE_ON_DEMAND(V_reverse) { Domain *d; /* declare domain pointer since it is not passed as an argument to the DEFINE macro */ cell_t c; Thread *t; real x[ND_ND]; d = Get_Domain(1); /* Get the domain using Fluent utility */

/* loop over all cell threads in the domain thread_loop_c(t,d) { /* loop over all cells */ begin_c_loop_all(c,t) { C_CENTROID(x,c,t); xx = x[0]; v = C_V(c,t);

*/

/* record y_velocity*/

if (xx < xbound) C_V(c,t) = -v/scale;

/* define y_velocity */

} end_c_loop_all(c,t) } }

132
/****************************************************************** UDF for applying STABLE temp profile to entire domain ******************************************************************/ #include "udf.h" /*MUST have variable defns OUTSIDE function called by real a; real alpha = 0.400; /* T profile depends of real Tg = 272.0; /* T profile depends of these real b = -2.362; /* T profile depends of these real z; Fluent */ these inputs*/ inputs*/ inputs*/

DEFINE_ON_DEMAND(T_stable_Domn) { Domain *d; /* declare domain pointer since it is not passed as an argument to the DEFINE macro */ cell_t k; Thread *t; real x[ND_ND]; d = Get_Domain(1); /* Get the domain using Fluent utility */

/* loop over all cell threads in the domain thread_loop_c(t,d) { /* loop over all cells */ begin_c_loop_all(k,t) { C_CENTROID(x,k,t); z = x[2]; a = pow(z,alpha); C_T(k,t)= Tg-b*a;

*/

/*set temperature*/

} end_c_loop_all(k,t) } }

133
/****************************************************************** UDF for initializing flow field velocity *******************************************************************/ #include "udf.h" /*MUST have variable defns OUTSIDE function called by Fluent */ real a; real b; real alpha = 0.09745; real u_r=7.0; real zr = 75.0; real zFree = 755.0; real ufree = 8.75; real z; DEFINE_ON_DEMAND(Dom_Wind_profile) { Domain *d; /* declare domain pointer since it is not passed as an argument to the DEFINE macro */ cell_t c; Thread *t; real x[ND_ND]; d = Get_Domain(1); /* Get the domain using Fluent utility */

/* loop over all cell threads in the domain thread_loop_c(t,d) {

*/

/* loop over all cells */ begin_c_loop_all(c,t) { C_CENTROID(x,c,t); z = x[2]; a = z / zr; b = pow(a,alpha); /* no "double" needed C_V(c,t)=0.; C_W(c,t)=0.; if (z <= zFree) C_U(c,t)= u_r*b; else C_U(c,t) = ufree;

*/ */ */

/* define y_vel profile v=0 /* define z_vel profile w=0 /* u power law profile */

} end_c_loop_all(c,t) } }

134
/**************************************************************** UDF for advancing "ccc" each time step ******************************************************************/ #include "udf.h" int minFiles = 1000; int maxFiles = 3900;

/* starting number of Profile files*/ /* ending number minus 1 of Profile files*/

DEFINE_ON_DEMAND(ts_counter) /*must use underscore and not dash in name*/ { int udfccc=RP_Get_Integer("ccc"); if (udfccc > maxFiles) {udfccc = minFiles;} else {udfccc=udfccc + 1;} RP_Set_Integer("ccc",udfccc); }

135
/***************************************************************** UDF for INLET flow field TEMPERATURE - UNSTABLE *****************************************************************/ #include "udf.h" /*MUST have variable defns OUTSIDE function called by Fluent */ real real real real real a; alpha = 0.211; Tg = 322.0; b = 6.9; z;

/* T profile depends on these values*/ /* T profile depends on these values */ /* T profile depends on these values */

DEFINE_PROFILE(T_UNS_prof,t,i) { real x[ND_ND]; /* variable declarations */ face_t f;

begin_f_loop(f,t) { F_CENTROID(x,f,t); z = x[2]; a = pow(z,alpha); F_PROFILE(f,t,i) = Tg-b*a; temperature if use face macro */ /*F_T(f,t)

} end_f_loop(f,t) }

136

Fluent Users Guide Section 6.8.4 has more details Use GUI: grid/info/zones in order to correlate the zones with the boundaries In the example below the inlet and outlet were zones number 1 and 4 respectively. `````````````````````````````````````` GUI: /grid/modify-zones> mp o Periodic zone [()] 1 o Shadow zone [()] 4 o Rotational periodic? (if no, translational) [yes] n o Create periodic zones? [yes] yes ``````````````````````````````````````

Appendix H: How to institute the periodic boundary conditions in Fluent

137

Appendix I: Using Gambit


Here are some notes that should be helpful in smoothing the transition from Solid Works to Gambit, and the mesh generation in Gamibt:
Solid Works: Due to size of domain, modeling was done at 1/10th scale Extrude all entities in the same direction Split circular entities at 45 and at vertical Export to Gambit: IGES, export sketch entities, 186, parametric splines (112), ANSYS Gambit: Import: , rename IGES file to short name, set to spatial, scale as necessary, check all clean up boxes Before beginning mesh modeling: o connect all verticies o connect all edges o connect all faces o connect all edges o name all faces to be used as boundary conditions o SAVE o EXIT o COPY FILE o Assign all boundary conditions and volume conditions o Create the ground/ocean boundary layer o Mesh the turbines Use Edge meshes & Face meshes, then volume meshes o Mesh the intermediate boxes o Mesh the structured domain from the ground up o Meshing: when have 1 face connecting to many faces - doesn't work(Fluent creates more volumes)

138

Appendix J: Point profile format for Fluent


((T-UNS-prof mesh 1 1000) (z 600.0000 599.3990 598.7990 . . . 2.4024 1.8018 1.2012 0.600601 0 ) (T-uns 297.3235238 297.325 297.3263333 297.3279048 . . . 295.9660476 295.9855714 296.0052381 296.0250476 )

Note that it is only necessary to define the coordinates that the parameter is varying with, in this case z. If two dimensions were required, then the code would be ((T-UNS-prof mesh 2 1000) and the list of x or y coordinate would precede the z coordinates. 1000 in this case refers to the number of data points.

Anda mungkin juga menyukai