Source code for radarx.fundamentals.attenuation

"""
Attenuation and Scattering Coefficients
=======================================

Functions related to absorption, scattering, and extinction for spherical particles.

.. autosummary::
   :nosignatures:
   :toctree: generated/

   absorption_coefficient
   extinction_coefficient
   k_complex
   scattering_coefficient

References
----------
- Doviak and Zrnic (1993). Doppler Radar and Weather Observations.
- Battan (1973). Radar Observations of the Atmosphere.
"""

import numpy as np


[docs] def k_complex(m): """ Complex dielectric factor used in scattering calculations. Parameters ---------- m : complex Complex refractive index of the medium. Returns ------- complex Dielectric factor. """ return (m**2 - 1) / (m**2 + 2)
[docs] def absorption_coefficient(diameter, wavelength, m): """ Absorption coefficient Qa for a spherical particle. Parameters ---------- diameter : float or array-like Particle diameter [m] wavelength : float Radar wavelength [m] m : complex Complex refractive index Returns ------- float or array-like Absorption coefficient (unitless) """ Km_im = np.imag(-1 * k_complex(m)) return (np.pi**2 * np.asarray(diameter) ** 3 / wavelength) * Km_im
[docs] def scattering_coefficient(diameter, wavelength, m): """ Scattering coefficient Qs for a spherical particle. Parameters ---------- diameter : float or array-like Particle diameter [m] wavelength : float Radar wavelength [m] m : complex Complex refractive index Returns ------- float or array-like Scattering coefficient (unitless) """ Km_abs = np.abs(k_complex(m)) return (2 * np.pi**5 * np.asarray(diameter) ** 6 / (3 * wavelength**4)) * ( Km_abs**2 )
[docs] def extinction_coefficient(diameter, wavelength, m): """ Extinction coefficient Qe (absorption + scattering). Parameters ---------- diameter : float or array-like Particle diameter [m] wavelength : float Radar wavelength [m] m : complex Complex refractive index Returns ------- float or array-like Extinction coefficient (unitless) """ Qa = absorption_coefficient(diameter, wavelength, m) Qs = scattering_coefficient(diameter, wavelength, m) return Qa + Qs
__all__ = [ "absorption_coefficient", "extinction_coefficient", "k_complex", "scattering_coefficient", ]