LeafOptics
Leaf spectra
LeafOptics.leaf_spectra!
— FunctionThis 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
LeafOptics.leaf_spectra!
— Methodleaf_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 parameterswls
WaveLengthSet
type struct that contain wave length binslha
HyperspectralAbsorption
type struct that contains absorption characteristic curveslwc
Leaf water content[mol m⁻²]
APAR_car
If true, carotenoid absorption is accounted for in PPAR, default istrue
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);
LeafOptics.leaf_spectra!
— Methodleaf_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 parameterswls
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);
LeafOptics.leaf_spectra!
— Methodleaf_spectra!(spac::Union{MonoMLGrassSPAC{FT}, MonoMLPalmSPAC{FT}, MonoMLTreeSPAC{FT}}) where {FT<:AbstractFloat}
Update leaf reflectance and transmittance for SPAC, given
spac
MonoMLGrassSPAC
,MonoMLPalmSPAC
, orMonoMLTreeSPAC
type SPAC
Leaf PAR, APAR, and PPAR
LeafOptics.leaf_PAR
— Functionleaf_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 parameterswls
WaveLengthSet
type struct that contains wave length binsrad
HyperspectralRadiation
type struct that contains incoming radiation informationAPAR_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);
Leaf SIF
LeafOptics.leaf_SIF
— Functionleaf_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 parameterswls
WaveLengthSet
type struct that contains wave length binsrad
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);
Utility functions
LeafOptics.average_transmittance
— Functionaverage_transmittance(α::FT, nr::FT) where {FT<:AbstractFloat}
Return the average transmittance of isotropic radiation across an interface between two dielectrics, given
α
angle of incidencenr
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.
LeafOptics.photon
— Functionphoton(λ::FT, E::FT) where {FT<:AbstractFloat}
Return the number of moles of photons, given
λ
Wave length in[nm]
, converted to[m]
by FACE
Joules of energy
LeafOptics.photon!
— Functionphoton!(λ::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 FACE
Joules of energy (will be converted to moles of photons if phot in not given)phot
Mole of photons (variable to save)
LeafOptics.energy
— Functionenergy(λ::FT, phot::FT) where {FT<:AbstractFloat}
Return the energy, given
λ
Wave length in[nm]
, converted to[m]
by FACphot
Number of moles of photon
LeafOptics.energy!
— Functionenergy!(λ::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 FACphot
Mole of photons (will be converted to moles of photons if E is not given)E
Joules of energy (variable to save)