Wind speed at a given height above the canopy estimated from single-level measurements of wind speed.
wind.profile(
data,
z,
Tair = "Tair",
pressure = "pressure",
ustar = "ustar",
H = "H",
wind = "wind",
zr,
zh,
d = NULL,
frac_d = 0.7,
z0m = NULL,
frac_z0m = NULL,
estimate_z0m = TRUE,
stab_correction = TRUE,
stab_formulation = c("Dyer_1970", "Businger_1971"),
constants = bigleaf.constants()
)A vector of wind speed at heights z.
Data.frame or matrix containing all required variables
Height above ground for which wind speed is calculated.
Air temperature (deg C)
Atmospheric pressure (kPa)
Friction velocity (m s-1)
Sensible heat flux (W m-2)
Wind speed at height zr (m s-1); only used if stab_correction = TRUE
Instrument (reference) height (m)
Canopy height (m)
Zero-plane displacement height (-)
Fraction of displacement height on canopy height (-);
only used if d is not available
Roughness length (m), optional; only used if stab_correction = FALSE (default=0.1)
Fraction of roughness length on canopy height (-), optional; only used if z0m is not provided.
Default is 0.1.
Should z0m be estimated from the logarithmic wind profile? If TRUE (the default),
arguments z0m and frac_z0m are ignored.
See roughness.parameters for details.
Should stability correction be applied? Defaults to TRUE
Stability correction function used (If stab_correction = TRUE).
Either "Dyer_1970" or "Businger_1971".
k - von-Karman constant (-)
Kelvin - conversion degree Celsius to Kelvin
cp - specific heat of air for constant pressure (J K-1 kg-1)
g - gravitational acceleration (m s-2)
The underlying assumption is the existence of a logarithmic wind profile above the height d + z0m (the height at which wind speed mathematically reaches zero according to the Monin-Obukhov similarity theory). In this case, the wind speed at a given height z is given by:
$$u(z) = (ustar/k) * (ln((z - d) / z0m) - \psi{m}$$
The roughness parameters zero-plane displacement height (d) and roughness length (z0m)
can be approximated from roughness.parameters. \(\psi{m}\) is omitted
if stab_correction = FALSE (not recommended). If estimate_z0m = TRUE,
z0m is first estimated from the wind profile equation and then used in the equation
above for the calculation of u(z) (see e.g. Newman & Klein 2014).
Monteith, J.L., Unsworth, M.H., 2008: Principles of Environmental Physics. 3rd edition. Academic Press, London.
Newman, J.F., Klein, P.M., 2014: The impacts of atmospheric stability on the accuracy of wind speed extrapolation methods. Resources 3, 81-105.
roughness.parameters
heights <- seq(18,40,2) # heights above ground for which to calculate wind speed
df <- data.frame(Tair=25,pressure=100,wind=c(3,4,5),ustar=c(0.5,0.6,0.65),H=c(200,230,250))
ws <- sapply(heights,function(x) wind.profile(df,z=x,zr=40,zh=25,d=16))
colnames(ws) <- paste0(heights,"m")
Run the code above in your browser using DataLab