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
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
bioHyperspectralLeafBiophysicstype struct that contains leaf biophysical parameterswlsWaveLengthSettype struct that contain wave length binslhaHyperspectralAbsorptiontype struct that contains absorption characteristic curveslwcLeaf water content[mol m⁻²]APAR_carIf true, carotenoid absorption is accounted for in PPAR, default istruereabsorbIf 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! — 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
bioHyperspectralLeafBiophysicstype struct that contains leaf biophysical parameterswlsWaveLengthSettype struct that contain wave length binsρ_parReflectance at PAR regionρ_nirReflectance at NIR regionτ_parTransmittance at PAR regionτ_nirTransmittance 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! — Method
leaf_spectra!(spac::Union{MonoMLGrassSPAC{FT}, MonoMLPalmSPAC{FT}, MonoMLTreeSPAC{FT}}) where {FT<:AbstractFloat}Update leaf reflectance and transmittance for SPAC, given
spacMonoMLGrassSPAC,MonoMLPalmSPAC, orMonoMLTreeSPACtype SPAC
Leaf PAR, APAR, and PPAR
LeafOptics.leaf_PAR — Function
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
bioHyperspectralLeafBiophysicstype struct that contains leaf biophysical parameterswlsWaveLengthSettype struct that contains wave length binsradHyperspectralRadiationtype struct that contains incoming radiation informationAPAR_carIf 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 — Function
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
bioHyperspectralLeafBiophysicstype struct that contains leaf biophysical parameterswlsWaveLengthSettype struct that contains wave length binsradHyperspectralRadiationtype struct that contains incoming radiation informationϕFluorescence quantum yieldϕ_photonIf 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 — Function
average_transmittance(α::FT, nr::FT) where {FT<:AbstractFloat}Return the average transmittance of isotropic radiation across an interface between two dielectrics, given
αangle of incidencenrIndex 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 — Function
photon(λ::FT, E::FT) where {FT<:AbstractFloat}Return the number of moles of photons, given
λWave length in[nm], converted to[m]by FACEJoules of energy
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 FACEJoules of energy (will be converted to moles of photons if phot in not given)photMole of photons (variable to save)
LeafOptics.energy — Function
energy(λ::FT, phot::FT) where {FT<:AbstractFloat}Return the energy, given
λWave length in[nm], converted to[m]by FACphotNumber of moles of photon
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 FACphotMole of photons (will be converted to moles of photons if E is not given)EJoules of energy (variable to save)