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