refmod.hapke.imsa#
Module Contents#
- refmod.hapke.imsa.imsa(single_scattering_albedo, incidence_direction, emission_direction, surface_orientation, phase_function, opposition_effect_h=0, oppoistion_effect_b0=0, roughness=0)#
Calculates reflectance using the IMSA model.
IMSA stands for Inversion of Multiple Scattering and Absorption.
- Parameters:
single_scattering_albedo (npt.NDArray) – Single scattering albedo, shape (…).
incidence_direction (npt.NDArray) – Incidence direction vector(s), shape (…, 3).
emission_direction (npt.NDArray) – Emission direction vector(s), shape (…, 3).
surface_orientation (npt.NDArray) – Surface normal vector(s), shape (…, 3).
phase_function (Callable[[npt.NDArray], npt.NDArray]) – Callable that accepts cos_alpha (cosine of phase angle) and returns phase function values.
opposition_effect_h (float, optional) – Opposition effect parameter h, by default 0.
oppoistion_effect_b0 (float, optional) – Opposition effect parameter B0 (b_zero), by default 0. Note: Original argument name oppoistion_effect_b0 kept for API compatibility.
roughness (float, optional) – Surface roughness parameter, by default 0.
- Returns:
Calculated reflectance values, shape (…).
- Return type:
npt.NDArray
- Raises:
Exception – If any calculated reflectance value has a significant imaginary part.
Notes
Input arrays incidence_direction, emission_direction, surface_orientation, and single_scattering_albedo are expected to broadcast together.
The phase_function should be vectorized to handle arrays of cos_alpha.
The IMSA model accounts for multiple scattering and absorption.
References
[IMSAModelPlaceholder]