Roughness

The roughness module contains all functions related to surface roughness.

roughness_length(lai, z_oro, z_obst, z_obst_max, land_mask=1)

Computes the surface roughness length. The roughness length is related to the roughness characteristics. For the logarithmic wind-profile the surface roughness length is the height at which the wind speed is zero. The roughness length is calculated differently for different types of land use.

Land use is classified as follows:

  1. no data

  2. land

  3. water

  4. urban

\[\begin{split}z_{0,m}=\begin{cases} \begin{array}{cc} 0 & l=0\\ z_{0,m} & l=1\\ 0.0001 & l=2\\ \frac{1}{7} \cdot z_{obst,max}+z_{oro} & l=3 \end{array}\end{cases}\end{split}\]
Parameters
  • lai (float) – leaf area index, \(I_{lai}\) [-]

  • z_oro (float) – orographic roughness, \(z_{oro}\) [m]

  • z_obst (float) – obstacle height, \(z_{obst}\) [m]

  • z_obst_max (float) – maximum obstacle height, \(z_{obst,max}\) [m]

  • land_mask (int) – land use classification, \(l\) [-]

Returns

z0m – roughness length, \(z_{0,m}\) [m]

Return type

float

Examples

>>> import ETLook.roughness as roughness
>>> roughness.roughness_length(0.4)
0.34179999999999999
obstacle_height(ndvi, z_obst_max, ndvi_obs_min=0.25, ndvi_obs_max=0.75, obs_fr=0.25)

Computes the obstacle height. The ndvi is used to limit the obstacle height.

\[\begin{split}z_{obst} = \begin{cases} \begin{array}{cc} f_{obs}z_{obst,max} & I_{ndvi}\leq I_{ndvi,obs,min}\\ z_{obst,max}\left(f_{obs}+\left(1-f_{obs}\right)\left (\frac{I_{ndvi}-I_{ndvi,obs,min}} {I_{ndvi,obs,max}-I_{ndvi,obs,min}}\right)\right) & I_{ndvi}>I_{ndvi,obs,min}\&I_{ndvi}<I_{ndvi,obs,max}\\ z_{obst,max} & I_{ndvi}\geq I_{ndvi,obs,max} \end{array}\end{cases}\end{split}\]
Parameters
  • ndvi (float) – normalized difference vegetation index, \(I_{ndvi}\) [-]

  • ndvi_obs_min (float) – normalized difference vegetation index @ min obstacle height, \(I_{ndvi,obs,min}\) [-]

  • ndvi_obs_max (float) – normalized difference vegetation index @ max obstacle height, \(I_{ndvi,obs,max}\) [-]

  • obs_fr (float) – ratio of minimum and maximum obstacle height, \(f_{obs}\) [-]

  • z_obst_max (float) – maximum obstacle height :math`z_{obst,max}` [m]

Returns

z_obst – obstacle height, \(z_{obst}\) [m]

Return type

float

Examples

>>> import ETLook.roughness as roughness
>>> roughness.obstacle_height(0.4, 2.0)
0.95
displacement_height(lai, z_obst, land_mask=1, c1=1)

Computes the displacement height. The lai is used to limit the displacement height. It is defined differently for different types of landuse.

Land use is classified as follows:

  1. no data

  2. land

  3. water

  4. urban

\[\begin{split}z_{disp}=\begin{cases} \begin{array}{cc} 0 & l=0\\ z_{obst}\left(1-\frac{1-\exp\left(-\sqrt{c_{1} \cdot I_{lai}}\right)} {\sqrt{c_{1} \cdot I_{lai}}}\right) & l=1\\ 0 & l=2\\ \frac{2}{3} \cdot z_{obst} & l=3 \end{array}\end{cases}\end{split}\]
Parameters
  • lai (float) – leaf area index, \(I_{lai}\) [-]

  • z_obst (float) – obstacle height, \(z_{obst}\) [m]

  • land_mask (int) – land use classification, \(l\) [-]

  • c1 (float) – exponential growth rate displacement height function, \(c_1\) [-]

Returns

disp – displacement height, \({disp}\) [m]

Return type

float

Examples

>>> import ETLook.roughness as roughness
>>> roughness.displacement_height(0.4, 2.0)
0.51779495