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
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
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
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
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]
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.
PT1 = 1
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.
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
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
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
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.
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]
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.
This model is very similar to the UO model.[10] Relatively accurate results are documented in [1].
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.
- 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.
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.
[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
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
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.
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:
Eqn: 2.2.3
Simplifying to incompressible flow only, the filtered Navier-Stokes equations reduce to:
(ui ) = 0 + t xi Eqn: 2.2.4
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
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
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
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
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
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
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 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
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.
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
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
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.
computational simulation represents the real world." To add further clarity to the
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
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.
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
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.
Domain B24 has 7D (Diameters) (560m) turbine spacing Domain B25 has 9D turbine spacing Domain B8 has 11D turbine spacing
Top
Inlet
Side
41
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
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
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 =
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
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.
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.
Viscosity and density are set to nominal constant values of 1.225kgm-3 and
1.789e-5kgm-1s-1 respectively.
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.
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.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
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
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]
63
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]:
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
U u*
u+ =
Eqn: 3.5.6
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
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
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.
wind.
The density remained set to the nominal constant value.
68
[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
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%
PT2/PT1
50,000
100,000
150,000
200,000
250,000
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.
PT2/PT1
B15d LES Neutral 3D-DS B16 LES Neutral 5D-DS B17 LES Neutral 7D-DS
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
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
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
PT2/PT1
B15d LES Neutral 4.5D High B18 LES Neutral 5.5D High B19 LES Neutral 7.5D High
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
[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
Top
Inlet
Side
80
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.
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]
82
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
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
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 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
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 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
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.
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.
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.
4.4
4.2
3.8
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]
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.
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
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.
4.
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
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.
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.
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
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.
109
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
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
115
116
117
118
App. C3:
LES neutral settings Turbine settings are the same as those for RANS
119
120
121
122
App. C4:
123
124
125
126
127
#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
/* 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*/
/* 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 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;
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 */
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 ``````````````````````````````````````
137
138
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.