## Boundary Layer Conductance

`Bigleaf.compute_Gb!`

— Function`compute_Gb!(df::AbstractDataFrame, approach; kwargs...)`

Estimate boundary layer conductance.

**Arguments**

`df`

: DataFrame with required variables (depend on approach)`approach`

: one of`Val(:Thom_1972)`

: see`Gb_Thom`

`Val(:Choudhury_1988)`

: see`Gb_Choudhury`

`Val(:Su_2001)`

: see`Gb_Su`

`Val(:constant_kB1)`

: see`Gb_constant_kB1`

The different approaches require different variables to be present in `df`

and different keyword arguments.

**Value**

updated DataFrame `df`

with the following columns:

`Gb_h`

: Boundary layer conductance for heat transfer (m s-1)

To subsequently derived quantities see

`compute_Gb_quantities`

for Resistance, kB-1 constant, and CO2 conductance`add_Gb!`

for conductances of other species given their Schmidt numbers.

**See also**

`Gb_Thom`

, `Gb_Choudhury`

, `Gb_Su`

, `Gb_constant_kB1`

, `aerodynamic_conductance!`

```
using DataFrames
df = DataFrame(wind=[3,4,5], ustar=[0.5,0.6,0.65])
compute_Gb!(df, Val(:Thom_1972))
≈(df.Gb_h[1], 0.102, rtol=1e-2)
```

`Bigleaf.add_Gb!`

— Function```
add_Gb(Gb_h::Union{Missing,Number}, Sc::Vararg{Pair,N}; constants)
add_Gb!(df::AbstractDataFrame, Sc::Vararg{Pair,N}; Gb_h = df.Gb_h, kwargs...)
```

compute boundary layer conductance for additional quantities for given Schmidt-numbers

**Arguments**

`Gb_h`

: Boundary layer conductance for heat transfer (m s-1)`Sc`

: several`Pair{Symbol,Number}`

Output name and Schmidt number of additional conductances to be calculated`df`

: DataFrame to add output columns

optional

`constants=`

`bigleaf_constants`

`()`

: Dictionary with entries`Pr`

- Prandtl number

**Details**

Boundary layer conductance for other quantities x is calculated based on boundary layer for heat transfer as (Hicks et al. 1987):

$Gb_x = Gb_h / (Sc_x / Pr)^{0.67}$

where `Sc_x`

is the Schmidt number of quantity x, and Pr is the Prandtl number (0.71).

**Value**

a NameTuple or `df`

with keys `Gb_x`

where `x`

are the keys in `Sc`

and corresponding boundary layer conductances (m s-1).

**Examples**

```
using DataFrames
df = DataFrame(Gb_h=[0.02, missing, 0.055])
add_Gb!(df, :O2 => 0.84, :CH4 => 0.99)
propertynames(df)[2:3] == [:Gb_O2, :Gb_CH4]
```

`Bigleaf.Gb_Thom`

— Function```
Gb_Thom(ustar; constants)
compute_Gb!(df, Val{:Thom_1972})
```

Boundary Layer Conductance according to Thom 1972, an empirical formulation for the for heat transfer based on a simple ustar (friction velocity) dependency.

**Arguments**

`ustar`

: Friction velocity (m s-1)`df`

: DataFrame with above variables`constants=`

`bigleaf_constants`

`()`

**Details**

The empirical equation for Rb suggested by Thom 1972 is:

$Rb = 6.2 {u^*}^{-0.67}$

Gb (=1/Rb) for water vapor and heat are assumed to be equal in this package.

**Value**

see `compute_Gb!`

**References**

- Thom, A., 1972: Momentum, mass and heat exchange of vegetation. Quarterly Journal of the Royal Meteorological Society 98, 124-134.
- Hicks, B
*B., Baldocchi, D*D., Meyers, T*P., Hosker, J*R., Matt, D_R., 1987: A preliminary multiple resistance routine for deriving dry deposition velocities from measured quantities. Water, Air, and Soil Pollution 36, 311-330.

```
using DataFrames
df = DataFrame(ustar = SA[0.1,missing,0.3])
compute_Gb!(df, Val(:Thom_1972))
propertynames(df) == [:ustar, :Gb_h]
```

`Bigleaf.Gb_Choudhury`

— Function```
Gb_Choudhury(; leafwidth, LAI, wind_zh, constants)
Gb_Choudhury!(df; leafwidth, LAI, wind_zh, constants)
```

Estimate the canopy boundary layer conductance for heat transfer according to Choudhury & Monteith 1988.

**Arguments**

`df`

: DataFrame where`Gb_h`

is to be added/updated`leafwidth`

: Leaf width (m)`LAI`

: One-sided leaf area index`wind_zh`

: Wind speed at canopy heihgt (m s-1), see`wind_profile`

`constants=`

`bigleaf_constants`

`()`

**Value**

see `compute_Gb!`

**Details**

Boundary layer conductance according to Choudhury & Monteith 1988 is given by:

$Gb_h = LAI \left( 2a/\alpha \sqrt{u(z_h)/w} (1-e^{-\alpha/2})\right)$

where $\alpha$ is modeled as an empirical relation to LAI (McNaughton & van den Hurk 1995):

$\alpha = 4.39 - 3.97 e^{-0.258 \, LAI}$

$w$ is leafwidth and $u(zh)$ is the wind speed at the canopy surface.

It can be approximated from measured wind speed at sensor height zr and a wind extinction coefficient $\alpha$: $u(z_h) = u(z_r) / e^{\alpha(z_r/z_h -1)}$. However, here (if not explicitly given) it is estimated by `wind_profile`

**References**

- Choudhury, B. J., Monteith J_L., 1988: A four-layer model for the heat budget of homogeneous land surfaces. Q. J. R. Meteorol. Soc. 114, 373-398.
- McNaughton, K. G., Van den Hurk, B
*J*J_M., 1995: A 'Lagrangian' revision of the resistors in the two-layer model for calculating the energy budget of a plant canopy. Boundary-Layer Meteorology 74, 261-288. - Hicks, B
*B., Baldocchi, D*D., Meyers, T*P., Hosker, J*R., Matt, D_R., 1987: A preliminary multiple resistance routine for deriving dry deposition velocities from measured quantities. Water, Air, and Soil Pollution 36, 311-330.

`Bigleaf.Gb_Su`

— Function```
Gb_Su(Tair,pressure,ustar; wind_zh, Dl, fc, N=2, Cd=0.2, hs=0.01, constants)
Gb_Su!(df; wind_zh, Dl, fc=nothing, N=2, Cd=0.2, hs=0.01, LAI, constants)
```

Estimate Boundary Layer Conductance to heat transfer using the physically based formulation according to Su et al. 2001.

**Arguments**

`Tair`

: Air temperature (degC)`pressure`

: Atmospheric pressure (kPa)`ustar`

: Friction velocity (m s-1)`df`

: DataFrame or matrix containing the above variables`Dl`

: Leaf characteristic dimension (m)`fc`

: Fractional vegetation cover 0-1`LAI`

: One-sided leaf area index (-) - alternative to`fc`

.`N`

: Number of leaf sides participating in heat exchange (defaults to 2)`Cd`

: Foliage drag coefficient (-)`hs`

: Roughness height of the soil (m)`constants=`

`bigleaf_constants`

`()`

**Value**

see `compute_Gb!`

**Details**

The formulation is based on the kB-1 model developed by Massman 1999. Su et al. 2001 derived the following approximation:

$k_{B1} = (k C_d f_c^2) / (4C_t u^*/u(z_h)) + k_{Bs-1}(1 - f_c)^2$

If $f_c$ (fractional vegetation cover) is missing, it is estimated from LAI: $f_c = 1 - e^{-LAI/2}$

The wind speed at the top of the canopy is calculated using function `wind_profile`

.

Ct is the heat transfer coefficient of the leaf (Massman 1999):

$C_t = P_r^{-2/3} R_{eh}^{-1/2} N$

where $P_r$ is the Prandtl number (set to 0.71), and $R_{eh}$ is the Reynolds number for leaves:

$R_{eh} = D_l \, wind(z_h) / v$

k*{Bs-1}, the k*{B-1} value for bare soil surface, is calculated according to Su et al. 2001:

$k_{Bs-1} = 2.46(Re)^{0.25} - ln(7.4)$

**References**

- Su, Z., Schmugge, T., Kustas, W. & Massman, W., 2001: An evaluation of two models for estimation of the roughness height for heat transfer between the land surface and the atmosphere. Journal of Applied Meteorology 40, 1933-1951.
- Massman, W., 1999: A model study of kB H- 1 for vegetated surfaces using localized near-field' Lagrangian theory. Journal of Hydrology 223, 27-43.
- Hicks, B
*B., Baldocchi, D*D., Meyers, T*P., Hosker, J*R., Matt, D_R., 1987: A preliminary multiple resistance routine for deriving dry deposition velocities from measured quantities. Water, Air, and Soil Pollution 36, 311-330.

```
using DataFrames
df = DataFrame(Tair=25,pressure=100,wind=[3,4,5],ustar=[0.5,0.6,0.65],H=[200,230,250])
zh = 25; zr = 40
z0m = roughness_parameters(
Val(:wind_profile), df.ustar, df.wind, df.Tair, df.pressure, df.H; zh, zr).z0m
wind_zh = wind_profile(zh, df, 0.7*zh, z0m)
compute_Gb!(df,Val(:Su_2001); wind_zh, Dl=0.01, LAI=5)
# the same meteorological conditions, but larger leaves
compute_Gb!(df,Val(:Su_2001); wind_zh, Dl=0.1,LAI=5)
# same conditions, large leaves, and sparse canopy cover (LAI = 1.5)
compute_Gb!(df,Val(:Su_2001); wind_zh, Dl=0.1,LAI=1.5)
≈(df.Gb_h[1], 0.0638, rtol=1e-3)
```