CanopyRadiativeTransfer

Leaf Inclination Angle

CanopyRadiativeTransfer.lidf_cdfFunction
lidf_cdf(lidf::VerhoefLIDF{FT}, θ::FT) where {FT<:AbstractFloat}

Return the cumulative distribution frequency, given

  • lidf VerhoefLIDF type algorithm
  • θ Leaf inclination angle in [°]
CanopyRadiativeTransfer.inclination_angles!Function
inclination_angles!(can::Union{BroadbandSLCanopy{FT}, HyperspectralMLCanopy{FT}}, lidf::VerhoefLIDF{FT}) where {FT<:AbstractFloat}

Update the frequency of leaf inclination angles, given

  • can HyperspectralMLCanopy type multiple layer canopy
  • lidf VerhoefLIDF type algorithm

Clumping Index

CanopyRadiativeTransfer.clumping_index!Function
clumping_index!(can::HyperspectralMLCanopy, angles::SunSensorGeometry{FT}) where {FT<:AbstractFloat}

Update the clumping index, given

  • can HyperspectralMLCanopy type canopy
  • angles SunSensorGeometry type angles

Hyperspectral Canopy RT

CanopyRadiativeTransfer.soil_albedo!Function
soil_albedo!(can::HyperspectralMLCanopy{FT}, soil::Soil{FT}) where {FT<:AbstractFloat}

Updates lower soil boundary reflectance, given

  • can HyperspectralMLCanopy type struct
  • soil Soil type struct
CanopyRadiativeTransfer.extinction_coefficientFunction

This function compute the extinction coefficients for direct and diffuse radiation for given leaf inclination. Supported methods are to

  • Compute the coefficient for given direct solar zenith angle (SZA) and leaf inclination angle (LIA)
  • Compute the coefficient for diffuse light at given LIA
  • Compute the coefficients for given sun-sensor geometry
CanopyRadiativeTransfer.extinction_coefficientMethod
extinction_coefficient(sza::FT, lia::FT) where {FT<:AbstractFloat}

Return the extinction coefficient for direct radiation, given

  • sza Solar zenith angle in °
  • lia Leaf inclination angle in °
CanopyRadiativeTransfer.extinction_coefficientMethod
extinction_coefficient(lia::FT) where {FT<:AbstractFloat}

Return the extinction coefficient for diffuse radiation (unifrom 18 average angles from 2.5° to 87.5°), given

  • sza Solar zenith angle in °
CanopyRadiativeTransfer.extinction_coefficientMethod
extinction_coefficient(sza::FT, vza::FT, raa::FT, lia::FT) where {FT<:AbstractFloat}

Return the extinction and scattering coefficients (extinction coefficients from solar and viewing directions, and scattering coefficients for backward and forward directions, and some sin and cos products: _Co, _Cs, _So, _Ss), given

  • sza Solar zenith angle in °
  • vza Viewing zenith angle in °
  • raa Relative azimuth angle in °
  • lia Leaf inclination angle in °
CanopyRadiativeTransfer.extinction_scattering_coefficients!Method
extinction_scattering_coefficients!(can::BroadbandSLCanopy{FT}, angles::SunSensorGeometry{FT}) where {FT<:AbstractFloat}

Update the extinction and scattering coefficients, given

  • can BroadbandSLCanopy type canopy
  • angles SunSensorGeometry type angles
CanopyRadiativeTransfer.extinction_scattering_coefficients!Method
extinction_scattering_coefficients!(can::HyperspectralMLCanopy{FT}, angles::SunSensorGeometry{FT}) where {FT<:AbstractFloat}

Update the extinction and scattering coefficients, given

  • can HyperspectralMLCanopy type canopy
  • angles SunSensorGeometry type angles
CanopyRadiativeTransfer.canopy_optical_properties!Function

This function updates canopy optical properties for canopy. The supported methods are to

  • Update the extinction coefficients
  • Update the soil boundary conditions (not public function)
  • Update scattering coefficient matrices
CanopyRadiativeTransfer.canopy_optical_properties!Method
canopy_optical_properties!(can::HyperspectralMLCanopy{FT}, angles::SunSensorGeometry{FT}) where {FT<:AbstractFloat}

Updates canopy optical properties (extinction coefficients for direct and diffuse light) based on the SAIL model, given

  • can HyperspectralMLCanopy type struct
  • angles SunSensorGeometry type struct
CanopyRadiativeTransfer.canopy_optical_properties!Method
canopy_optical_properties!(can::HyperspectralMLCanopy{FT}, albedo::BroadbandSoilAlbedo{FT}) where {FT<:AbstractFloat}
canopy_optical_properties!(can::HyperspectralMLCanopy{FT}, albedo::HyperspectralSoilAlbedo{FT}) where {FT<:AbstractFloat}

Updates lower soil boundary reflectance, given

  • can HyperspectralMLCanopy type struct
  • albedo BroadbandSoilAlbedo or HyperspectralSoilAlbedo type soil albedo
CanopyRadiativeTransfer.canopy_optical_properties!Method
canopy_optical_properties!(can::HyperspectralMLCanopy{FT}, leaves::Vector{Leaves2D{FT}}, soil::Soil{FT}) where {FT<:AbstractFloat}

Updates canopy optical properties (scattering coefficient matrices), given

  • can HyperspectralMLCanopy type struct
  • leaves Vector of Leaves2D
  • soil Bottom soil boundary layer
CanopyRadiativeTransfer.canopy_radiation!Function

This function updates canopy radiation profiles. The supported methods are to

  • Update shortwave radiation profile for broadband or hyperspectral canopy
  • Updates soil shortwave radiation profiles
  • Update longwave radation profile for broadband or hyperspectral canopy
  • Update radiation profile for SPAC
CanopyRadiativeTransfer.canopy_radiation!Method
canopy_radiation!(can::BroadbandSLCanopy{FT}, leaf::Leaves1D{FT}, rad::BroadbandRadiation{FT}, soil::Soil{FT}) where {FT<:AbstractFloat}
canopy_radiation!(can::BroadbandSLCanopy{FT}, leaf::Leaves1D{FT}, rad::FT, soil::Soil{FT}) where {FT<:AbstractFloat}

Updates shortwave or longwave radiation profiles, given

  • can HyperspectralMLCanopy type struct
  • leaf Leaves1D type struct
  • rad Broadband shortwave or longwave radiation
  • soil Soil type struct
CanopyRadiativeTransfer.canopy_radiation!Method
canopy_radiation!(can::HyperspectralMLCanopy{FT}, albedo::BroadbandSoilAlbedo{FT}) where {FT<:AbstractFloat}
canopy_radiation!(can::HyperspectralMLCanopy{FT}, albedo::HyperspectralSoilAlbedo{FT}) where {FT<:AbstractFloat}

Updates soil shortwave radiation profiles, given

  • can HyperspectralMLCanopy type struct
  • albedo BroadbandSoilAlbedo or HyperspectralSoilAlbedo type soil albedo
CanopyRadiativeTransfer.canopy_radiation!Method
canopy_radiation!(can::HyperspectralMLCanopy{FT}, leaves::Vector{Leaves2D{FT}}, rad::HyperspectralRadiation{FT}, soil::Soil{FT}; APAR_CAR::Bool = true) where {FT<:AbstractFloat}
canopy_radiation!(can::HyperspectralMLCanopy{FT}, leaves::Vector{Leaves2D{FT}}, rad::FT, soil::Soil{FT}) where {FT<:AbstractFloat}

Updates canopy radiation profiles for shortwave or longwave radiation, given

  • can HyperspectralMLCanopy type struct
  • leaves Vector of Leaves2D
  • rad Incoming shortwave or longwave radiation
  • soil Bottom soil boundary layer
  • APAR_CAR Whether carotenoid absorption is counted in PPAR, default is true
CanopyRadiativeTransfer.canopy_radiation!Method
canopy_radiation!(spac::Union{MonoMLGrassSPAC{FT}, MonoMLPalmSPAC{FT}, MonoMLTreeSPAC{FT}}) where {FT<:AbstractFloat}

Updates canopy radiation profiles for shortwave and longwave radiation, given

  • spac MonoMLGrassSPAC, MonoMLPalmSPAC, MonoMLTreeSPAC type SPAC
CanopyRadiativeTransfer.canopy_fluorescence!Function
canopy_fluorescence!(spac::Union{MonoMLGrassSPAC{FT}, MonoMLPalmSPAC{FT}, MonoMLTreeSPAC{FT}}) where {FT<:AbstractFloat}

Updates canopy fluorescence, given

  • spac MonoMLGrassSPAC, MonoMLPalmSPAC, MonoMLTreeSPAC type SPAC

Remote Sensing Applications

CanopyRadiativeTransfer.read_spectrumFunction

This function interpolate the spectrum to give values at the target wavelength bin(s). The supported methods include

  • Interpolate the spectrum at a given wavelength
  • Interpolate the spectrum in a given wavelength range
CanopyRadiativeTransfer.read_spectrumMethod
read_spectrum(x::Vector{FT}, y::Vector{FT}, target::FT) where {FT<:AbstractFloat}

Return the spectrum value at target wavelength bin, given

  • x X-axis of the spectrum
  • y Y-axis of the spectrum
  • target Target x value
CanopyRadiativeTransfer.read_spectrumMethod
read_spectrum(x::Vector{FT}, y::Vector{FT}, x₁::FT, x₂::FT; steps::Int = 2) where {FT<:AbstractFloat}

Return the spectrum value at target wavelength bin, given

  • x X-axis of the spectrum
  • y Y-axis of the spectrum
  • x₁ Lower x boundary
  • x₂ Upper x boundary
  • steps The incremental Δx is (x₂ - x₁) / steps
CanopyRadiativeTransfer.MODIS_EVIFunction
MODIS_EVI(can::HyperspectralMLCanopy{FT}) where {FT<:AbstractFloat}

Return EVI for MODIS setup, given

  • can HyperspectralMLCanopy type canopy
CanopyRadiativeTransfer.MODIS_EVI2Function
MODIS_EVI2(can::HyperspectralMLCanopy{FT}) where {FT<:AbstractFloat}

Return EVI2 for MODIS setup, given

  • can HyperspectralMLCanopy type canopy
CanopyRadiativeTransfer.MODIS_LSWIFunction
MODIS_LSWI(can::HyperspectralMLCanopy{FT}) where {FT<:AbstractFloat}

Return LSWI for MODIS setup, given

  • can HyperspectralMLCanopy type canopy
CanopyRadiativeTransfer.MODIS_NDVIFunction
MODIS_NDVI(can::HyperspectralMLCanopy{FT}) where {FT<:AbstractFloat}

Return NDVI for MODIS setup, given

  • can HyperspectralMLCanopy type canopy
CanopyRadiativeTransfer.MODIS_NIRvFunction
MODIS_NIRv(can::HyperspectralMLCanopy{FT}) where {FT<:AbstractFloat}

Return NIRv for MODIS setup, given

  • can HyperspectralMLCanopy type canopy
CanopyRadiativeTransfer.OCO2_SIF759Function
OCO2_SIF759(can::HyperspectralMLCanopy{FT}) where {FT<:AbstractFloat}

Return SIF @ 759 nm for OCO2 setup, given

  • can HyperspectralMLCanopy type canopy
CanopyRadiativeTransfer.OCO2_SIF770Function
OCO2_SIF770(can::HyperspectralMLCanopy{FT}) where {FT<:AbstractFloat}

Return SIF @ 770 nm for OCO2 setup, given

  • can HyperspectralMLCanopy type canopy
CanopyRadiativeTransfer.OCO3_SIF759Function
OCO3_SIF759(can::HyperspectralMLCanopy{FT}) where {FT<:AbstractFloat}

Return SIF @ 759 nm for OCO3 setup, given

  • can HyperspectralMLCanopy type canopy
CanopyRadiativeTransfer.OCO3_SIF770Function
OCO3_SIF770(can::HyperspectralMLCanopy{FT}) where {FT<:AbstractFloat}

Return SIF @ 770 nm for OCO3 setup, given

  • can HyperspectralMLCanopy type canopy
CanopyRadiativeTransfer.TROPOMI_SIF683Function
TROPOMI_SIF683(can::HyperspectralMLCanopy{FT}) where {FT<:AbstractFloat}

Return SIF @ 682.5 nm for TROPOMI setup, given

  • can HyperspectralMLCanopy type canopy
CanopyRadiativeTransfer.TROPOMI_SIF740Function
TROPOMI_SIF740(can::HyperspectralMLCanopy{FT}) where {FT<:AbstractFloat}

Return SIF @ 740 nm for TROPOMI setup, given

  • can HyperspectralMLCanopy type canopy
CanopyRadiativeTransfer.TROPOMI_SIF747Function
TROPOMI_SIF747(can::HyperspectralMLCanopy{FT}) where {FT<:AbstractFloat}

Return SIF @ 746.5 nm for TROPOMI setup, given

  • can HyperspectralMLCanopy type canopy
CanopyRadiativeTransfer.TROPOMI_SIF751Function
TROPOMI_SIF751(can::HyperspectralMLCanopy{FT}) where {FT<:AbstractFloat}

Return SIF @ 750.5 nm for TROPOMI setup, given

  • can HyperspectralMLCanopy type canopy