light: Radiation transfer functions

lightR Documentation

Radiation transfer functions

Description

Functions light_layerIrradianceFraction and light_layerIrradianceFractionBottomUp calculate the fraction of above-canopy irradiance (and the soil irradiance, respectively) reaching each vegetation layer. Function light_layerSunlitFraction calculates the proportion of sunlit leaves in each vegetation layer. Function light_cohortSunlitShadeAbsorbedRadiation calculates the amount of radiation absorved by cohort and vegetation layers, while differentiating between sunlit and shade leaves.

Usage

light_PARcohort(x, SpParams, gdd = NA_real_)

light_PARground(x, SpParams, gdd = NA_real_)

light_SWRground(x, SpParams, gdd = NA_real_)

light_cohortAbsorbedSWRFraction(z, x, SpParams, gdd = NA_real_)

light_layerIrradianceFraction(
  LAIme,
  LAImd,
  LAImx,
  k,
  alpha,
  trunkExtinctionFraction = 0.1
)

light_layerIrradianceFractionBottomUp(
  LAIme,
  LAImd,
  LAImx,
  k,
  alpha,
  trunkExtinctionFraction = 0.1
)

light_cohortSunlitShadeAbsorbedRadiation(
  Ib0,
  Id0,
  Ibf,
  Idf,
  beta,
  LAIme,
  LAImd,
  kb,
  kd,
  alpha,
  gamma
)

light_layerSunlitFraction(LAIme, LAImd, kb)

light_instantaneousLightExtinctionAbsortion(
  LAIme,
  LAImd,
  LAImx,
  kPAR,
  alphaSWR,
  gammaSWR,
  ddd,
  ntimesteps = 24L,
  trunkExtinctionFraction = 0.1
)

light_longwaveRadiationSHAW(
  LAIme,
  LAImd,
  LAImx,
  LWRatm,
  Tsoil,
  Tair,
  trunkExtinctionFraction = 0.1
)

Arguments

x

An object of class forest

SpParams

A data frame with species parameters (see SpParamsMED).

gdd

Growth degree days.

z

A numeric vector with height values.

LAIme

A numeric matrix of live expanded LAI values per vegetation layer (row) and cohort (column).

LAImd

A numeric matrix of dead LAI values per vegetation layer (row) and cohort (column).

LAImx

A numeric matrix of maximum LAI values per vegetation layer (row) and cohort (column).

k

A vector of light extinction coefficients.

alpha

A vecfor of leaf absorbance by species.

trunkExtinctionFraction

Fraction of extinction due to trunks (for winter deciduous forests).

Ib0

Above-canopy direct incident radiation.

Id0

Above-canopy diffuse incident radiation.

Ibf

Fraction of above-canopy direct radiation reaching each vegetation layer.

Idf

Fraction of above-canopy diffuse radiation reaching each vegetation layer.

beta

Solar elevation (in radians).

kb

A vector of direct light extinction coefficients.

kd

A vector of diffuse light extinction coefficients.

gamma

Vector of canopy reflectance values.

kPAR

A vector of visible light extinction coefficients for each cohort.

alphaSWR

A vecfor of hort-wave absorbance coefficients for each cohort.

gammaSWR

A vector of short-wave reflectance coefficients (albedo) for each cohort.

ddd

A dataframe with direct and diffuse radiation for different subdaily time steps (see function radiation_directDiffuseDay in package meteoland).

ntimesteps

Number of subdaily time steps.

LWRatm

Atmospheric downward long-wave radiation (W/m2).

Tsoil

Soil temperature (Celsius).

Tair

Canopy layer air temperature vector (Celsius).

Details

Functions for short-wave radiation are adapted from Anten & Bastiaans (2016), whereas long-wave radiation balance follows Flerchinger et al. (2009). Vegetation layers are assumed to be ordered from bottom to top.

Value

Functions light_layerIrradianceFraction, light_layerIrradianceFractionBottomUp and light_layerSunlitFraction return a numeric vector of length equal to the number of vegetation layers.

Function light_cohortSunlitShadeAbsorbedRadiation returns a list with two elements (matrices): I_sunlit and I_shade.

Author(s)

Miquel De Cáceres Ainsa, CREAF

References

Anten, N.P.R., Bastiaans, L., 2016. The use of canopy models to analyze light competition among plants, in: Hikosaka, K., Niinemets, U., Anten, N.P.R. (Eds.), Canopy Photosynthesis: From Basics to Application. Springer, pp. 379–398.

Flerchinger, G. N., Xiao, W., Sauer, T. J., Yu, Q. 2009. Simulation of within-canopy radiation exchange. NJAS - Wageningen Journal of Life Sciences 57 (1): 5–15. https://doi.org/10.1016/j.njas.2009.07.004.

See Also

spwb

Examples

LAI <- 2
nlayer <- 10
LAIlayerlive <- matrix(rep(LAI/nlayer,nlayer),nlayer,1)
LAIlayerdead <- matrix(0,nlayer,1)
kb <- 0.8
kd_PAR <- 0.5
kd_SWR <- kd_PAR/1.35
alpha_PAR <- 0.9
gamma_PAR <- 0.04
gamma_SWR <- 0.05
alpha_SWR <- 0.7

Ibfpar <- light_layerIrradianceFraction(LAIlayerlive,LAIlayerdead,LAIlayerlive,kb, alpha_PAR)
Idfpar <- light_layerIrradianceFraction(LAIlayerlive,LAIlayerdead,LAIlayerlive,kd_PAR, alpha_PAR)
Ibfswr <- light_layerIrradianceFraction(LAIlayerlive,LAIlayerdead,LAIlayerlive,kb, alpha_SWR)
Idfswr <- light_layerIrradianceFraction(LAIlayerlive,LAIlayerdead,LAIlayerlive,kd_SWR, alpha_SWR)
fsunlit <- light_layerSunlitFraction(LAIlayerlive, LAIlayerdead, kb)
SHarea <- (1-fsunlit)*LAIlayerlive[,1] 
SLarea <- fsunlit*LAIlayerlive[,1] 

oldpar <- par(mar=c(4,4,1,1), mfrow=c(1,2))
plot(Ibfpar*100, 1:nlayer,type="l", ylab="Layer", 
     xlab="Percentage of irradiance", xlim=c(0,100), ylim=c(1,nlayer), col="dark green")
lines(Idfpar*100, 1:nlayer, col="dark green", lty=2)
lines(Ibfswr*100, 1:nlayer, col="red")
lines(Idfswr*100, 1:nlayer, col="red", lty=2)
  
plot(fsunlit*100, 1:nlayer,type="l", ylab="Layer", 
     xlab="Percentage of leaves", xlim=c(0,100), ylim=c(1,nlayer))
lines((1-fsunlit)*100, 1:nlayer, lty=2)
par(oldpar)  
  
solarElevation <- 0.67
SWR_direct <- 1100
SWR_diffuse <- 300
PAR_direct <- 550
PAR_diffuse <- 150

abs_PAR <- light_cohortSunlitShadeAbsorbedRadiation(PAR_direct, PAR_diffuse,
                        Ibfpar, Idfpar, beta = solarElevation, 
                        LAIlayerlive, LAIlayerdead, kb, kd_PAR, alpha_PAR, gamma_PAR)
abs_SWR <- light_cohortSunlitShadeAbsorbedRadiation(SWR_direct, SWR_diffuse,
                         Ibfswr, Idfswr, beta = solarElevation, 
                         LAIlayerlive, LAIlayerdead, kb, kd_SWR, alpha_SWR, gamma_SWR)
oldpar <- par(mar=c(4,4,1,1), mfrow=c(1,2))
absRadSL <- abs_SWR$I_sunlit[,1]
absRadSH <- abs_SWR$I_shade[,1]
lambda <- 546.6507
QSL <- abs_PAR$I_sunlit[,1]*lambda*0.836*0.01
QSH <- abs_PAR$I_shade[,1]*lambda*0.836*0.01
plot(QSL, 1:nlayer,type="l", ylab="Layer", 
   xlab="Absorbed PAR quantum flux per leaf area", ylim=c(1,nlayer), col="dark green", 
   xlim=c(0,max(QSL)))
lines(QSH, 1:nlayer, col="dark green", lty=2)
plot(absRadSL, 1:nlayer,type="l", ylab="Layer", 
   xlab="Absorbed SWR per leaf area (W/m2)", ylim=c(1,nlayer), col="red", 
   xlim=c(0,max(absRadSL)))
lines(absRadSH, 1:nlayer, col="red", lty=2)
par(oldpar)
  

medfate documentation built on Aug. 29, 2023, 5:07 p.m.