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]