HomeHomeUpUpSearchSearchE-mailMail
NEW

Workflow to determine Impington Mill's biotope using CFD

Workflow to determine Impington Mill's biotope by Victor Reijs is licensed under CC BY-NC-SA 4.0

Introduction

On this webpage the wind biotope of Impington Mill is being evaluated.
First the making of the CAD-model is described and after that the results of simulations with a CFD.
At the end an evaluation is given.

Several questions are outstanding, see below purple text. If you have input, please let me know.

Making a CAD-model with SketchUp

SketchUp CAD-program is used to make the CAD-model. SketchUp Free version is well equipped for the windmill environment. In this program one can easily make 3D forms, such as: boxes, roofed boxes, cylinders, capped cones, trees, etc, etc.

Buildings that are around a windmill, say with a radius of 250m, can be simulated by a box (with its height: the wall height plus half the roof height); or otherwise a more precise model (box with hipped roof, etc.). A windmill can be a simple standing cylinder/capped cone. Don't go into too much details as that will not have much influence on the CFD results.
Furthermore, buildings below the ground/bailey height are certainly not in need of precise dimensions. As a guideline include anything that is higher than the DHM-rule minus 2m.

The following steps for making the CAD-model can be seen as a guide line:

Simulation without trees using SIMSCALE

CAD-model including the trees

Combining the wind speeds and directions, 1st wind rose iteration

Sensitivity analysis around several parameters

Several scenarios have been simulated to see how the (magnitude of the) average wind speed (from SW direction, with ABL's z0=0.5m) was influenced by varying several parameters:
Here is an overview of these scenarios:

Scenario
1
2
3
4
5
6
7
Roof
height
DSM2019, midway
DSM2019, midway
DSM2019, midway
DSM2019, ridge
DSM2019, ridge DSM2019, ridge DSM2019, ridge
Trees,
placement
14sc, hand, sf
21sc, DSM2019, sf
25sc, DSM2022, sf
25sc, DSM2022, sf
25sc, DSM2022, sf
25sc, DSM2022, sf
25sc, DSM2022, sf
Turbulence
model
k-omega SST
k-omega SST k-omega SST k-omega SST k-omega SST k-omega SST realized k-epsilon
flow region
height [m]
40
40 40 40 40 40 40
Ground
roughness
height [m]

small
small
small
small
0.5
10
10
View
Model voor sensitivity
              analysis
Model voor sensitivity
              analysis Model voor sensitivity
              analysis Model voor sensitivity
              analysis Model voor sensitivity
              analysis Model voor sensitivity
              analysis Model voor sensitivity
              analysis

Scenario
8
9
10
11
12
13
14
Roof
height
DSM2019, ridge DSM2019, ridge
DSM2019, ridge DSM2019, ridge DSM2019, ridge
DSM2019, ridge DSM2019, ridge
Trees,
placement
25sc, DSM2022, sf
25sc, DSM2022, sf
25sc, DSM2022, sf
25sc, DSM2022, sf
25c, DSM2022, sf
25c, DSM2022, mf
25sc, DSM2022+10%, mf
Turbulence
model
realized k-epsilon realized k-epsilon
initialised
realized k-epsilon
initialised, boundary layer
realized k-epsilon
initialised, boundary layer
realized k-epsilon
initialised, boundary layer
realized k-epsilon
initialised, boundary layer
realized k-epsilon
initialised, boundary layer
flow region
height [m]
100
100 100 100 100
100
100
Ground
roughness
height [m]

1
1
1
10
10
10
10
View
Model voor sensitivity
              analysis Model voor sensitivity
              analysis Model voor sensitivity
              analysis Model voor sensitivity
              analysis Model voor sensitivity
              analysis Model voor sensitivity
              analysis Model voor sensitivity
              analysis

Scenario
15
16
17
18
19
Roof
height
DSM2019, ridge DSM2019, ridge
DSM2019, ridge DSM2019, ridge DSM2019, ridge
Trees,
placement
25c, DSM2022+10%, mf
25c, DSM2022+10%, mf 25c, DSM2022+10%, mf 25c, DSM2022+10%,
mf+0.2
25c, DSM2022+10%,
mf+0.4 (oak)
Turbulence
model
realized k-epsilon
initialised, boundary layer
realized k-epsilon
initialised, boundary layer
realized k-epsilon
initialised, boundary layer
realized k-epsilon
initialised, boundary layer
realized k-epsilon
initialised, boundary layer
flow region
height [m]
100
100
150
150 150
Ground
roughness
height [m]

10
1
1
1 1
View
Model voor sensitivity
              analysis Model voor sensitivity
              analysis Model voor sensitivity
              analysis Model voor sensitivity
              analysis Model voor sensitivity
              analysis

Scenario
20
21
22
23
24
Roof
height
DSM2022, ridge DSM2022, ridge DSM2022, ridge DSM2022, ridge DSM2022, ridge
Trees,
placement
25c, redo-DSM2022,
mf+0.4 (oak)
25c, redo-DSM2022,
mf-~0.4
25c, redo-DSM2022,
mf-~0.2
25c, redo-DSM2022,
mf-~0.45 (beech)
25sc, redo-DSM2022,
mf-~0.45 (beech)
Turbulence
model
realized k-epsilon
initialised, boundary layer
realized k-epsilon
initialised, boundary layer
realized k-epsilon
initialised, boundary layer
realized k-epsilon
initialised, boundary layer
realized k-epsilon
initialised, boundary layer
flow region
height [m]
150
150
150
150
150
Ground
roughness
height [m]

1
1
1
1
1
View
Model voor sensitivity
              analysis Model voor sensitivity
              analysis Model voor sensitivity
              analysis Model voor sensitivity
              analysis Model voor sensitivity
              analysis


The scenarios are:
  1. The trees (Ulmus parvifolia, f=0.45, modelled as stacked cylinders; sc) were positioned by hand, say within 10m of their actual position (the ground plane from Google Map does not include trees).
  2. Now DSM2019 was included as ground plane and thus trees are positioned more accurately. Some trees were missing, perhaps because it was a DSM from 2019.
  3. The DSM2020 was included as ground plane and the height of the trees was adjusted (first echo, so they were on average some 2m higher than in scenario 2).
  4. The height of buildings is up to ridge roof height; on average some 30% higher then when using the average roof height. Remember that not all roofs are perpendicular to the wind direction!
  5. The ground layer has a roughness height of 0.5m.
  6. The ground layer has a roughness height of 10m (=20*z0  [Dong, 2015, page 11004]; Rasaders).
  7. The turbulence model realized k-epsilon, which should be better for turbulence in this mill environment [pers. comm. fvgool, 2024].
  8. The flow region height is 100m. In the earlier scenarios this flow region height was too small, as it should be at least 6*H (and H=16m in this case). Ground Roughness heights of 3, 5 and 10m did not work (Gauge pressure field started diverging). Adding the necessary boundary layer at ground level (and perhaps general Initialisation) looks to solve this issue (scenario 11).
  9. Several parameters were initialised (gauge pressure, speed, k, epsilon, and potential flow initialisation enabled).
  10. The boundary layer in the mesh was included for the ground level (this is essential for a good mesh)
  11. Increased Roughness height of ground level to 10m
  12. Changed stacked cylinder (cs) trees to one-cylinder (c) trees, plus the buildings were sometimes merged to improve the meshing.
  13. The f (Forchheimer coefficient) was made depending on the tree height (mf: between 0.4, 0.6 and 1.0).
  14. Increased the height of all stack cylinder trees (sc) with 10% (which is closer to the GE and DSM values)
  15. With increased height of trees: but now with c-trees
  16. Back to roughness of 1m for the ground layer (as the roughness of 10m also acted on/for the houses, which is not correct)
  17. Changed the height of the flow region to 150m (6*H; as the trees are heightened to H=22m in scenario 14)
  18. Increased the f with 0.2 (so f is now: between 0.6, 0.8 and 1.2)
  19. Increased the f with 0.2 (so f is now: between 0.8, 1.0 and 1.4.
    Looking at optical porosity of the 5% (much denser than leafed Quercus robur which ihas an optical porosity of around 15%) this gives an f of 0.9.
  20. Re-measured the height of buildings and trees in DSM2022. In general an increase of 3%
    Buildings' height is referenced to ground level. The trees' heights have been referenced to mean sea level (MSL) relative to mill's base, for Impington the trees' height from ground level are a little higher, but this difference has not been included ('compensated'), because the trees were proxied by a cylinder (ellipsoid form would have been better, but I was not yet able to model that).
  21. Reduced f to a value for 20% optical porosity: f is now between 0.2, 0.4 and 0.6 (to determine the sensitivity to porosity or f)
  22. Reduced f to a value for 40% optical porosity: f is now between 0.1, 0.2 and 0.3 (to determine the sensitivity to porosity or f)
  23. Changed f to a value closer to a Quercus robur tree (15% optical porosity [Braun, 2024, Figure 3]: f is now between 0.45, 0.65 and 1.0)
  24. The cylinders have been replaced with stacked cylinder (sc) models for trees.
  25. Changed stacked cylinders (sc) trees to an ellipsoid (e) trees and rectangular boxes with gabled roofs.
    The ellipsoid trees do not yet calculate in SIMSCALE, but it is expected that the wind speed will not change significantly
    The gabled roofs do not yet calculate in SIMSCALE, but it is expected that the wind speed will be slightly lower.
    Remark: The STL file made by SketchUp has problems. Advised to use STEP or Parasolid. Onshape could be used. I am investigating this.
  26. Changing the mesh-Fineness. This has been done at another mill-simulation, which showed low dependency (<10%): and the higher the Fineness the lower the speed (at least in that example). This is of course depending on the whole 3D model, so one needs to check this actively!
The resulting (magnitude of the) averaged windspeed (relative to the ABL speed at the same height) over the wing rotation surface can be seen below.
In general CFD will not be 100% accurate. But 10% speed accuracy should be reachable with a reasonable effort [Pirkl, 2020]. So the below relative speeds have a standard deviation of around 4% and relative energy has a standard deviation of around 3%. Beside this, the location of measuring in the 3D environment also does map the real location of the anemometer.
Relative speed
Relatieve energy
Winspeed
              over winf rotation surface Winspeed over winf
              rotation surface

Other observations can be deducted:

IMHO the 24th scenario would be closest to reality.

Comparing the parameters in formula, Excel and CFD

Parameter
Formula
DHM
Excel
ST
[2004]
CFD
VR

Buildings

location of buildings
thin long
obstacle,
obvious
obstacle,
x>15*H.
H>10*z0
1 to 3
obstacles
per sector
3D objects

form of buildings
H<3*z
HExcel=1.3*HGE
is default
yes
Trees

location of trees
no
yes
yes

form of trees
no
HExcel=1.3*HGE
is default
yes

porosity of trees
no
yes
yes
Mill

form of mill
z within reason
z within reason yes
Landscape

Buildings/trees
formula
here
here
Underlaying principles

flow area dimensions
implicit
implicit hflow>6*Hmax

boundary layers
implicit implicit roughness
ground layer

initialisation
implicit implicit optional

turbulence model
implicit implicit k-epsilon

'decay' rate
n
(omitted H/z0
dependency)

n= 50
is default
(omitted H/z0
and SpeedFactor
dependency)
implicit
Output

freedom of
measurement point
no
no
yes

wind speed
limited (90%,95%) yes
yes

wind direction
no
no
yes

wind energy
limited (73%,86%)
yes
could be added

turbulency intensity
no
no
yes
Configuring ABL

z0t
implicit
3m
is default
yes


Comparing Impington Mill's anemometer measurements with meteorological stations and CDF

Average windspeeds (m/sec) around Impington
Airports aroudn
          Impington

Looking at the average windspeed, the airport locations of Cambridge, Mildenhall, Lakenheath and Wittering could be ok for Impington Mill.
It is understood that meteorological station Cambridge speeds are not fully correct (seem to be interpolation of a few data points), so for now they are not used (a pity as this location is close to Impington).

In several (Dutch) reports, we see the use of IDW (Inverse distance weighted: Apaydin, 2004, Section 5.1), which use the average of three meteorological stations. Sluiter [2012, Section 4.5] and Stepek [2011] advise IDW for interpolation of the wind speed at a certain location.
Remark: Is IDW a good methodology to determine the local wind speed, or is (C)K(S/D) better?

ABL profile

The Atmospheric Boundary Layer (ABL) profile is logarithmic. The speed U is in the form of [Wieringa, page 63]:

Uz = Uref*ln(z/z0)/ln(zref)/z0) and z>10*z0

If one wants to determine the speed at location B when speed is known at location A (each with a different zo); one has to convert the speed at location A with zoA to 60m (a common height where the speed is quite independent of zo);  and then convert this 60m speed to the speed at location B with zoB [Wieringa, page 65]. So using the above formula twice;-):

UB = UA*ln(60/z0A)*ln(zB)/z0B)/(ln(60/z0B)*ln(zA)/z0A))   and zx>10*z0x

Error analysis

Looking at wind speed measurements at Mildenhall and Impington

The error in the speed ratio Impington/Mildenhall (if this ratio is around 0.5) is almost independent on the standard deviation of the Mildenhall. The error of Impington speed is thus leading.
The standard deviation of the anemometer (ecowitt; with an accuracy: <10m/s, +/-0.5m/s; ≥10m/s, +/-5%) is around 0.5m/sec @ 4m/sec. The standard deviation of the Mildenhall station is around 0.5m/sec @ 8m/sec. Not knowing the correct reference meteorological station cn provide a systematic error of say 0.5m/sec @ 8m/sec.
This results in a standard deviation in speed ratio (@ ~0.5) of ~0.05 and a systematic error of + or - ~0.03. So in total ~0.06

Looking at wind direction measurements at Mildenhall and Impington

The standard deviation of the wind directions specified by ecowitt is 15deg, something similar can be deducted from the wind direction spread of Mildenhall and Impington:
Winddirection Impington - Mildehall spread
Both the Mildenhall meteorological station as the Impington weather station look to have a standard deviation of around 15deg (135/6/sqrt(2)).
The standard deviation of wind direction for Impington is also determined by the standard deviation of the cap direction measurements. A correctly calibrated magnetometer can be around 2deg. So this is small compared ot the 15deg from the anemometer. But the magnetometer is not alwasy easy to calibrate (like in the Dutch windmills, as no automatic turning is done). If we allow an extra 10% increase due to this magnetometer standard deviation, we can allow for a standard deviaiton of around 7deg for the magnetometer.
Influence
            of stdev magnetometer

Looking at ABL and simulation at Impington

In general, CFD will not be precise. But 15% speed accuracy should be reachable with a reasonable effort.
The standard deviation of CDF speed simulation (15% of 4m/sec=0.6m/sec); measurement point location error (0.25m/sec) and error measurement (0.2m/sec) is around 0.7m/sec @ 4m/sec. The standard deviation of the ABL itself is quite low, sat 0.1m/sec.
This results in a standard deviation in speed ratio (@ ~0.5) of ~0.06 due to CDF itself.
Beside this partial CDF standard deviation, there is variability due to the variability or unknown of porosity. Assume a standard deviation for the porosity of around 10% and this results in a partial standard deviation of 0.03 in the speed.
Combining this with the 0.06 it becomes (sqrt(0.06^2+0.03^2)): 0.07

The standard deviation of the wind direction is around 0deg.

Comparing the measured and simulated speed ratios

Comparing wind speed ratios will be done at locA and locB. As there is no real ABL regime at these anemometer locations it is not opportune to use the ABL function to determine the speed at another height (like wind shaft).

See also Beljaars (1979, page 2):
"Tussen de obstakels, die de windruwheid [lengte] bepalen, valt weinig te zeggen over deze [logaritmische] hoogteafhankelijkheid."
("Between the obstacles that determine the roughness length, there is little to say about this [logarithmic] height dependency)

We though can assume that the atmosphere at the meteorological stations is much closer to an ABL, so we can transform the 10m speed to locA or locB speeds.

As the measurements will happen many times (aka averaging), the resulting standard deviation will be reduced with sqrt(n). As the n per sector will be large, the influence of this standard deviation on the comparison will be small. The influence of systematic error stays.
The standard deviation of the comparison of the two ratios is ~0.07 (which is due to the standard deviation of the simulation) and a systematic difference of + or - 0.03 (most likely a plus).

Influence of wind direction variability on the comparison of measured and simulated speeds.

When comparing the measured speed with the simulated speed it is important to take into account the variation (standard deviation, which is around 15deg) of the wind direction of the measured wind speed. This means that to compare the measured wind speed at a certain direction with the simulated windspeed at that direction; one needs to combine simulated speeds of directions of say up to plus or minus 25deg.

Using Temple's measurements at Impington Mill

The anemometer was at around 17m and behind the sails and in front of middle of mill cap (locA@17m)
The measured averaged wind speed (m/sec) of Impington Mill (black: Anemometer) and meteorological station Mildenhall (grey: Open Fields) are provided for summer time (May to September and averaged over 30 years) in below figure (Temple, 2024, @ 21:36). All speeds are referenced to 15m (shaft height), by using for both statios a z0 of 3m.

Wind rose IMp[ington and Mildenhall


The behaviour of the lines could be seen as slightly comparable (a dip around 195deg): the dotted green line (trendline of avg. of circumference) matches the form of Impington line.

The Impington Mill wind speed (locA@15m) at wind direction of 225 deg is around 38% (=3/8) (standard deviation ~6%) of the Mildenhall values at Summer months

Using smartmolen data

At present (May 2024) the Impington Mill weather station is at the back of the fantail frame, at more or less the same level as the top of the mill cap: 16m (locB@16m).

Here is average wind speed data from Impington Mill weather station (black), meteorological stations (Mildenhall: orange, Lakenheath: grey and Wittering: green); and the ratio between Impington Mill and Mildenhall (dotted orange) over part of Summer Month (May 1st to 18th). All speeds are referenced to 16m, by using a z0 of 0.25 for Mildenhall and other meteorological stations.

Windrose of different locations

The Impington Mill wind speed (locB@16m) at wind direction of 225 deg is around 43% (standard deviation ~6%) of the Mildenhall values at part of May (Summer month).

Simulated speeds

Below is an overview of the simulated CDF speeds (wind direction of 225deg) for several locations using scenarios 1 to 24:
Speeds at a few
          locations

Scenario 24 is using DSM2022 tree and building heights and f close to optical porosity for Quercus robur trees:

The Impington Mill wind speed (locA@17m) at wind direction of 225 deg is around 47% (standard deviation ~7%) of the Mildenhall values at Summer month.
The Impington Mill wind speed
(locB@16m) at wind direction of 225 deg is around 38% (standard deviation ~7%) of the Mildenhall values at Summer month.

Combining the wind speeds and directions, 2nd wind rose iteration

This is the second wind rose iteration after the first wind rose determination.

Some general conditions:

The wind rose for Impington Mill (between 180 and 360deg over West) can be seen below:
Measured and
        simulated relative speeds at Impington Mill

What can be seen in this graph:

Combining the wind speeds and directions, 3rd wind rose iteration

The only change with regard to the 2nd wind rose iteration is that the inlet z0 has been decreased to 0.05m between 200 and 320deg.

Some general conditions:

The wind rose for Impington Mill (between 180 and 360deg over West) can be seen below:
Measured and simulated relative speeds at Impington Mill

What can be seen in this graph:

Evaluation

Aspects to check or look at are:

  1. How are the anemometer equipment at Impington Mill and Mildenhall calibrated?
    The accuracy of the anemometer (GW1003) at Impington Mill is around 5%.
  2. Is the CAD-model correct?
    All buildings have been modelled as rectangular boxes with a height of the ridge of the roof (using DSM2022 first return). It might be needed to include the form of the roof (like gabling) for nearby buildings, this would decrease the reducing wind speed somewhat.
    All trees are simulated as a cylinder with height of the MSL-height (minus MSL of the mill-base) of the trees (using DSM2022 first return). Trees should be better modelled using ellipsoids (but I have problems modelling this with SketchUp), when success in modelling with ellipsoids then the wind speed will increase somewhat.
    In a rolling landscape: One should take the relative height from ground level of buildings/trees instead of the absolute height.
  3. There is in the SketchUp model an opening around 280deg. In the next iteration this should be rectified.
  4. Looking at the measured and simulated values, we are able to match them. Possibles ways to match the measured and calculated were: height of buildings (does not have a lot of influence at shaft height: was also not needed in scenario 24), height of trees (has influence, was not needed in scenario 24), the porosity of trees varies in situ considerable (plus/min ~30%), more fundamental issues with CDF (is possible), the reference meteorological station could be suboptimum (is possible), other???
  5. The size of the mesh can be important. A sensitivity analysis has been made for another mill (De Hoop). For that case, there is a slight decrease of the velocity (aorund 0.3m/sec). The amunt of CPU tiem was increassed with a factor ~8.
  6. Even if the CDF is not 100% correct in absolute sense (see also Atmaca, 2019; were wind tunnel and CDF provided similar results even near an object), it can be utilised in a relative sense for comparing different scenarios. Most simulations (if they are in general correctly setup, aka dependencies are properly configured) have this property.

Basic considerations for the workflow

References

Abohela, Islam et al.: Effect of roof shape, wind direction, building height and urban configuration on the energy yield and positioning of roof mounted wind turbines. In: Reneable Energy 50  (2013), pp. 1106-1118.
Atmaca, Mustafa: Wind tunnel experiments and CFD simulations for gable-roof buildings with different roof slopes. In: Acta Physica Polonica 135  (2019), issue 4, pp. 690-693.
Apaydin, Halit et al.: Spatial Interpolation techniques for climate data in the Gap region in Turkey. In: Climate Research 28  (2004), issue 1, pp. 31-40.
Beljaars, A.C.M.: Windbelemmering rond windmolens. In: (1979).
Braun, Sabine et al.: 37 years of forest monitoring in Switzerland: drought effects on Fagus sylvatica. In: frontiers in forests and global change 4  (2024), pp. 1-10.
Dong, Zhibao et al.: Aerodynamic roughness of fixed sandy beds. In: Journal of Geophysical Research: Solid Earth 106  (2015), issue February, pp. 11000-11011.
Franke, Jörg  et al. COST Action 732: Best practice guideline for the CFD simulation of flows in the urban environment. Brussels, COST Office 2007.
Manwell, J.F. et al.: Wind enery explained: theory, design and application. Wiley 2009.
Pirkl, Lubos: CFD project accuracy vs. effort. In: https://www.linkedin.com/pulse/cfd-project-accuracy-vs-effort-lubos-pirkl/ (2020)
Sluiter, R.: Interpolation methods for the climate atlas.  In: Technical Report TR-335(2012).
Stepek, Andrew and Ine Wijnant, L.: Interpolating wind speed normals from the sparse Dutch network to a high resolution grid using local roughness from land use maps. In: Technical report TR-321(2011).
Temple, Stephen: Wind report. In: Mill news (2020), issue January, pp. 6-10.
Temple, Stephen: A modern molenbiotope.  https://www.youtube.com/watch?v=rNxU6xD3Iuc, 2024.
Wieringa, Jon and Lacob Lomas: Lecture notes for training agricultural meteorological personnel. In: (2001).
Winn, Matthew F. and Philip A. Araman: A tool to determine crown and plot canopy transparency for forest Inventory and analysis phase 3 plots using digital  photographs. In: Joint Meeting of the Forest Inventory and Analysis.2010.

Acknowledgements

I would like to thank people, such as Justin Coombs, Frank van Gool, Stephen Temple, SIMSCALE support team, and others for their help, encouragement and/or constructive feedback. Any remaining errors in methodology or results are my responsibility of course!!! If you want to provide constructive feedback, please let me know.
Disclaimer and Copyright
HomeHomeUpUpSearchSearchE-mailMail

Major content related changes: March 8, 2024