windcanopy: Calculates wind profile for individual canopy layers

View source: R/code.R

windcanopyR Documentation

Calculates wind profile for individual canopy layers

Description

Used for calculating wind speed profile in canopies with variable PAI

Usage

windcanopy(
  uh,
  z,
  hgt,
  PAI = 3,
  cd = 0.2,
  iw = 0.5,
  phi_m = 1,
  edgedist = NA,
  uref,
  zref = hgt + 2
)

Arguments

uh

wind speed at top of canopy layer (m /s)

z

height of canopy layer node (m)

hgt

height to top of canopy layer (m)

PAI

Plant Area Index of canopy layer (m / m)

cd

drag coefficient

iw

turbulence intensity

phi_m

diabatic correction factor

edgedist

optional numeric value indicating distance (m) to open habitat (see details)

uref

wind at reference height (m) (see details)

zref

height (m) of uref

Details

if 'edgedist' is not NA, then horizontal wind component is also added. Here, the wind profile of a reference grass surface is calaculate, and at any given height z an attenuated wind speed inside thew canopy calculated, with the degree of attenuation determined by foliage density, distance from edge and the ratio of horizontal to vertical wind speed. If the the attenuated horizontal wind speed exceeds the wind speed due to vertical attenuation, the horizontal wind speed is returned. The parameter uref represents the wind speed at height zref above the reference grass surface. If edgedist is set to NA (the default) the horizontal wind component and hence uref and zref are ignored.

Value

wind speed at height of canopy node (m / s)

Examples

# ==== Generate plant area index values
m <- 100
hgt <- 5
z<-c(1:m) * (hgt / m)
PAI <- microctools::PAIgeometry(m, 3, 7, 70)
plot(z~PAI, type = "l")
cPAI <- cumsum(PAI)
# ==== Calculate wind speed at top of canopy
uref <- 2
a <- microctools::attencoef(hgt, 3)
uh <- windprofile(uref, hgt + 2, hgt, a, 3, hgt)
# === Calculate canopy profile (near edge)
uz1 <- 0
for (i in m:1) {
  uz1[i] <- windcanopy(uh, z[i], z[i] + 0.05, cPAI[i], edgedist = 20, uref = uref)
  uh <- windcanopy(uh, z[i] - 0.05, z[i] + 0.05, cPAI[i], edgedist = 20, uref = uref)
}
# === Calculate canopy profile (far from edge)
uh <- windprofile(uref, hgt + 2, hgt, a, 3, hgt)
uz2 <- 0
for (i in m:1) {
  uz2[i] <- windcanopy(uh, z[i], z[i] + 0.05, cPAI[i], edgedist = 500, uref = uref)
 uh <- windcanopy(uh, z[i] - 0.05, z[i] + 0.05, cPAI[i], edgedist = 500, uref = uref)
}
plot(z ~ uz1, type = "l", xlab = "wind speed", ylab = "height", xlim = c(0,1.5),
     col = rgb(1,0,0,0.5), lwd = 2)
par(new = TRUE)
plot(z ~ uz2, type = "l", xlab = "", ylab = "", xlim = c(0,1.5),
     col = rgb(0,0,1,0.5), lwd = 2)

ilyamaclean/microclimc documentation built on July 28, 2023, 1:40 a.m.