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 [°]
source
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
source

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
source

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
source
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
source
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 °
source
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
source
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
source
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
source
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
source
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
source
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
source
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
source
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
source
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
source
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
source
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
source

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
source
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
source
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
source
CanopyRadiativeTransfer.MODIS_BLUEFunction
MODIS_BLUE(can::HyperspectralMLCanopy{FT}) where {FT<:AbstractFloat}

Return blue band reflectance for MODIS setup, given

  • can HyperspectralMLCanopy type canopy
source
CanopyRadiativeTransfer.MODIS_NIRFunction
MODIS_NIR(can::HyperspectralMLCanopy{FT}) where {FT<:AbstractFloat}

Return near infrared band reflectance for MODIS setup, given

  • can HyperspectralMLCanopy type canopy
source
CanopyRadiativeTransfer.MODIS_REDFunction
MODIS_RED(can::HyperspectralMLCanopy{FT}) where {FT<:AbstractFloat}

Return red band reflectance for MODIS setup, given

  • can HyperspectralMLCanopy type canopy
source