LeafOptics

Leaf spectra

LeafOptics.leaf_spectra!Function

This function updates leaf level reflectance, transmittance, and fluorescence spectra related parameters. Supported methods are

  • Update leaf spectra based on pigment concentrations
  • Update leaf spectra (reflectance and transmittance) to given broadband values
  • Update leaf spectra based on pigment concentrations for the entire SPAC
source
LeafOptics.leaf_spectra!Method
leaf_spectra!(
            bio::HyperspectralLeafBiophysics{FT},
            wls::WaveLengthSet{FT},
            lha::HyperspectralAbsorption{FT},
            lwc::FT;
            APAR_car::Bool = true,
            reabsorb::Bool = true,
            α::FT = FT(40)
) where {FT<:AbstractFloat}

Update leaf reflectance and transmittance spectra, and fluorescence spectrum matrices, given

  • bio HyperspectralLeafBiophysics type struct that contains leaf biophysical parameters
  • wls WaveLengthSet type struct that contain wave length bins
  • lha HyperspectralAbsorption type struct that contains absorption characteristic curves
  • lwc Leaf water content [mol m⁻²]
  • APAR_car If true, carotenoid absorption is accounted for in PPAR, default is true
  • reabsorb If true, SIF reabsorption is enabled; otherwise, matb and matf should be based on the case with no reabsorption
  • α Optimum angle of incidence (default is 40° as in PROSPECT-D, SCOPE uses 59°)

Examples

wls = ClimaCache.WaveLengthSet{Float64}();
bio = ClimaCache.HyperspectralLeafBiophysics{Float64}();
lha = ClimaCache.HyperspectralAbsorption{Float64}();
leaf_spectra!(bio, wls, lha, 50.0);
leaf_spectra!(bio, wls, lha, 50.0; APAR_car=false);
leaf_spectra!(bio, wls, lha, 50.0; APAR_car=false, α=59.0);
source
LeafOptics.leaf_spectra!Method
leaf_spectra!(bio::HyperspectralLeafBiophysics{FT}, wls::WaveLengthSet{FT}, ρ_par::FT, ρ_nir::FT, τ_par::FT, τ_nir::FT) where {FT<:AbstractFloat}

Update leaf reflectance and transmittance (e.g., prescribe broadband PAR and NIR values), given

  • bio HyperspectralLeafBiophysics type struct that contains leaf biophysical parameters
  • wls WaveLengthSet type struct that contain wave length bins
  • ρ_par Reflectance at PAR region
  • ρ_nir Reflectance at NIR region
  • τ_par Transmittance at PAR region
  • τ_nir Transmittance at NIR region

Examples

wls = ClimaCache.WaveLengthSet{Float64}();
bio = ClimaCache.HyperspectralLeafBiophysics{Float64}();
leaf_spectra!(bio, wls, 0.1, 0.45, 0.05, 0.25);
source
LeafOptics.leaf_spectra!Method
leaf_spectra!(spac::Union{MonoMLGrassSPAC{FT}, MonoMLPalmSPAC{FT}, MonoMLTreeSPAC{FT}}) where {FT<:AbstractFloat}

Update leaf reflectance and transmittance for SPAC, given

  • spac MonoMLGrassSPAC, MonoMLPalmSPAC, or MonoMLTreeSPAC type SPAC
source

Leaf PAR, APAR, and PPAR

LeafOptics.leaf_PARFunction
leaf_PAR(bio::HyperspectralLeafBiophysics{FT}, wls::WaveLengthSet{FT}, rad::HyperspectralRadiation{FT}; APAR_car::Bool = true) where {FT<:AbstractFloat}

Return leaf level PAR, APAR, and PPAR, given

  • bio HyperspectralLeafBiophysics type struct that contains leaf biophysical parameters
  • wls WaveLengthSet type struct that contains wave length bins
  • rad HyperspectralRadiation type struct that contains incoming radiation information
  • APAR_car If true (default), account carotenoid absorption as PPAR; otherwise, PPAR is only by chlorophyll

Examples

wls = ClimaCache.WaveLengthSet{Float64}();
bio = ClimaCache.HyperspectralLeafBiophysics{Float64}();
rad = ClimaCache.HyperspectralRadiation{Float64}();
par,apar,ppar = leaf_PAR(bio, wls, rad);
par,apar,ppar = leaf_PAR(bio, wls, rad; APAR_car=false);
source

Leaf SIF

LeafOptics.leaf_SIFFunction
leaf_SIF(bio::HyperspectralLeafBiophysics{FT}, wls::WaveLengthSet{FT}, rad::HyperspectralRadiation{FT}, ϕ::FT = FT(0.01); ϕ_photon::Bool = true) where {FT<:AbstractFloat}

Return the leaf level SIF at backward and forward directions, given

  • bio HyperspectralLeafBiophysics type struct that contains leaf biophysical parameters
  • wls WaveLengthSet type struct that contains wave length bins
  • rad HyperspectralRadiation type struct that contains incoming radiation information
  • ϕ Fluorescence quantum yield
  • ϕ_photon If true (default), convert photon to photon when computing SIF; otherwise, convert energy to energy

Examples

wls = ClimaCache.WaveLengthSet{Float64}();
bio = ClimaCache.HyperspectralLeafBiophysics{Float64}();
rad = ClimaCache.HyperspectralRadiation{Float64}();
sif_b,sif_f = leaf_SIF(bio, wls, rad, 0.01);
sif_b,sif_f = leaf_SIF(bio, wls, rad, 0.01; ϕ_photon=false);
source

Utility functions

LeafOptics.average_transmittanceFunction
average_transmittance(α::FT, nr::FT) where {FT<:AbstractFloat}

Return the average transmittance of isotropic radiation across an interface between two dielectrics, given

  • α angle of incidence
  • nr Index of refraction

References

  • Stern (1964) Transmission of isotropic radiation across an interface between two dielectrics. Applied Optics 3(1): 111-113.
  • Allen (1973) Transmission of isotropic light across a dielectric surface in two and three dimensions. Journal of the Optical Society of America 63(6): 664-666.
source
LeafOptics.photonFunction
photon(λ::FT, E::FT) where {FT<:AbstractFloat}

Return the number of moles of photons, given

  • λ Wave length in [nm], converted to [m] by FAC
  • E Joules of energy
source
LeafOptics.photon!Function
photon!(λ::Vector{FT}, E::Vector{FT}, phot::Vector{FT}) where {FT<:AbstractFloat}
photon!(λ::Vector{FT}, E::Vector{FT}) where {FT<:AbstractFloat}

Compute and save the number of moles of photons, given

  • λ Wave length in [nm], converted to [m] by FAC
  • E Joules of energy (will be converted to moles of photons if phot in not given)
  • phot Mole of photons (variable to save)
source
LeafOptics.energyFunction
energy(λ::FT, phot::FT) where {FT<:AbstractFloat}

Return the energy, given

  • λ Wave length in [nm], converted to [m] by FAC
  • phot Number of moles of photon
source
LeafOptics.energy!Function
energy!(λ::Vector{FT}, phot::Vector{FT}, E::Vector{FT}) where {FT<:AbstractFloat}
energy!(λ::Vector{FT}, phot::Vector{FT}) where {FT<:AbstractFloat}

Compute and save the number of moles of photons, given

  • λ Wave length in [nm], converted to [m] by FAC
  • phot Mole of photons (will be converted to moles of photons if E is not given)
  • E Joules of energy (variable to save)
source