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

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

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_ThomFunction
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, BB., Baldocchi, DD., Meyers, TP., Hosker, JR., 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_ChoudhuryFunction
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, BJJ_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, BB., Baldocchi, DD., Meyers, TP., Hosker, JR., 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_SuFunction
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, BB., Baldocchi, DD., Meyers, TP., Hosker, JR., 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)