Source code for radarx.fundamentals.variables

"""
Radar-Derived Variables
=======================

Functions related to reflectivity, differential reflectivity, and radial velocity.

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

   reflectivity_factor
   differential_reflectivity
   linear_depolarization_ratio
   circular_depolarization_ratio
   radial_velocity

References
----------
- Rinehart, R. E. (1997). Radar for Meteorologists.
- Doviak and Zrnic (1993). Doppler Radar and Weather Observations.
"""

import numpy as np


[docs] def reflectivity_factor(p_return, radar_const, dielectric=0.93, range_m=1000.0): """ Compute reflectivity factor Z [mm^6/m^3]. Parameters ---------- p_return : float or array-like Received power from target [W] radar_const : float Radar constant (unitless) dielectric : float Dielectric factor (default is 0.93 for water) range_m : float or array-like Range to target [m] Returns ------- float or array-like Reflectivity factor Z [mm^6/m^3] """ return ( np.asarray(p_return) * np.asarray(range_m) ** 2 / (radar_const * dielectric**2) )
[docs] def differential_reflectivity(z_h, z_v): """ Compute differential reflectivity ZDR [dB]. Parameters ---------- z_h : float or array-like Horizontal reflectivity [mm^6/m^3] z_v : float or array-like Vertical reflectivity [mm^6/m^3] Returns ------- float or array-like ZDR in dB """ return 10.0 * np.log10(np.asarray(z_h) / np.asarray(z_v))
[docs] def linear_depolarization_ratio(z_h, z_v): """ Compute linear depolarization ratio LDR [dB]. Parameters ---------- z_h : float or array-like Horizontal reflectivity [mm^6/m^3] z_v : float or array-like Vertical reflectivity [mm^6/m^3] Returns ------- float or array-like LDR in dB """ return 10.0 * np.log10(np.asarray(z_v) / np.asarray(z_h))
[docs] def circular_depolarization_ratio(z_parallel, z_orthogonal): """ Compute circular depolarization ratio CDR [dB]. Parameters ---------- z_parallel : float or array-like Power or reflectivity in the parallel channel [mm^6/m^3] z_orthogonal : float or array-like Power or reflectivity in the orthogonal channel [mm^6/m^3] Returns ------- float or array-like CDR in dB """ return 10.0 * np.log10(np.asarray(z_parallel) / np.asarray(z_orthogonal))
[docs] def radial_velocity(f_shift, wavelength): """ Compute radial velocity from Doppler frequency shift. Parameters ---------- f_shift : float or array-like Doppler frequency shift [Hz] wavelength : float Radar wavelength [m] Returns ------- float or array-like Radial velocity [m/s] """ return np.asarray(f_shift) * np.asarray(wavelength) / 2.0
__all__ = [ "reflectivity_factor", "differential_reflectivity", "linear_depolarization_ratio", "circular_depolarization_ratio", "radial_velocity", ]