# Polarimetric observables
Dual-polarization weather radars transmit and receive orthogonal
linear polarizations (conventionally horizontal `h` and vertical `v`).
A handful of combinations of the resulting amplitudes and phases
form the standard polarimetric observables implemented in
`rustmatrix.radar`. Definitions, sign conventions, and units below
follow {cite}`BringiChandrasekar2001` and {cite}`DoviakZrnic1993`.
## The scattering matrix
For a single particle at a fixed geometry, the far-field scattered
electric field is related to the incident field by the $2 \times 2$
amplitude scattering matrix $\mathbf{S}$:
$$
\begin{pmatrix} E_h^s \\ E_v^s \end{pmatrix}
= \frac{e^{ikr}}{r}
\begin{pmatrix} S_{hh} & S_{hv} \\ S_{vh} & S_{vv} \end{pmatrix}
\begin{pmatrix} E_h^i \\ E_v^i \end{pmatrix}.
$$
The $S_{ij}$ are complex — they carry both amplitude and phase.
`rustmatrix` returns them from the T-matrix solver at any specified
incident / scattered geometry via
`rustmatrix.scatter.amplitude_matrix`.
Polarimetric observables come in two flavours:
* **Back-scatter quantities** ($Z_h$, $Z_{dr}$, $\rho_{hv}$, $\delta_{hv}$,
LDR) use $\mathbf{S}$ at the 180° back-scatter geometry and
integrate $|S|^2$-type quantities over the PSD.
* **Forward-scatter quantities** ($K_{dp}$, $A_h$, $A_v$) use
$\mathbf{S}$ at the 0° forward-scatter geometry and integrate
$\Re$ / $\Im$ linear in $S$.
Switch geometries with `s.set_geometry(geom_horiz_back)` /
`s.set_geometry(geom_horiz_forw)`. The T-matrix itself is cached on
the `Scatterer`, so the switch is cheap.
## Back-scatter observables
### Reflectivity factor $Z_h$
$$
Z_h = \frac{\lambda^4}{\pi^5 |K_w|^2}
\int |S_{hh}^{b}(D)|^2 \, N(D)\, dD
$$
Units: mm⁶ m⁻³ (linear); dBZ after $10 \log_{10}$. The dielectric
### Differential reflectivity $Z_{dr}$
$$
Z_{dr} = 10 \log_{10} \frac{Z_h}{Z_v}.
$$
Positive $Z_{dr}$ means oblate scatterers aligned with their long
axis horizontal (the equilibrium-drop configuration). Rain at C-band
gives $Z_{dr} \approx 0.3$–3 dB; pristine ice columns give slightly
positive values; randomly-tumbling aggregates give ~0 dB.
### Co-polar correlation $\rho_{hv}$
$$
\rho_{hv} = \frac{
\left| \int S_{vv}^b S_{hh}^{b*} \, N(D)\, dD \right|
}{
\sqrt{\int |S_{hh}^b|^2 \, N\, dD \cdot \int |S_{vv}^b|^2 \, N\, dD}
}.
$$
Bounded by $[0, 1]$. Values near 1 mean a uniform population; drops
below 0.97 indicate mixed-phase or irregular scatterers. A key
discriminator between meteorological and non-meteorological echo.
### Differential backscatter phase $\delta_{hv}$
$$
\delta_{hv} = \arg \int S_{hh}^b S_{vv}^{b*} \, N(D)\, dD.
$$
Non-zero only when scatterers are large enough that the Rayleigh
approximation fails — so a resonance fingerprint at C-band for
$D \gtrsim 5$ mm. The [HydroMix tutorial](../tutorials/06_hd_mix)
shows it for mixed rain + ice.
### Linear depolarization ratio LDR
$$
\mathrm{LDR} = 10 \log_{10}
\frac{\int |S_{hv}^b|^2 \, N\, dD}{\int |S_{hh}^b|^2 \, N\, dD}.
$$
Requires non-zero cross-polar response, i.e. non-trivial canting.
LDR is small (< −25 dB) for rain and rises sharply in the melting
layer and for oriented ice {cite}`Ryzhkov2005,Kumjian2013`.
## Forward-scatter observables
### Specific differential phase $K_{dp}$
$$
K_{dp} = \frac{180}{\pi}\, \lambda \,
\Re \!\int \! \left[ S_{vv}^f(D) - S_{hh}^f(D) \right]\, N(D)\, dD.
$$
Units: ° km⁻¹. Positive for horizontally-oriented oblate particles
(rain), near-zero for spheres and tumbling ice, slightly negative for
vertically-oriented crystals. $K_{dp}$ is immune to attenuation and
calibration bias — the workhorse for rain-rate retrieval.
### Specific attenuation $A_h$, $A_v$
$$
A_i = 8.686 \cdot 10^{-3} \, \lambda \, \Im \! \int \! S_{ii}^f(D) \,
N(D)\, dD.
$$
Units: dB km⁻¹. Rises sharply at the higher radar bands (Ka, W) —
see the [radar-band sweep tutorial](../tutorials/05_radar_band_sweep).
## Sign and geometry conventions
`rustmatrix` follows Bringi & Chandrasekar {cite}`BringiChandrasekar2001`:
* **Horizontal polarization** is `h`, vertical is `v`.
* **Equilibrium drop axis ratio** is reported as $h/v$ ≥ 1; the
`Scatterer(axis_ratio=...)` argument expects $v/h$ (the value the
Mishchenko code wants), so rain scripts use
`axis_ratio = 1.0 / dsr_thurai_2007(D)`.
* **Back-scatter geometry** is `geom_horiz_back` from
`rustmatrix.tmatrix_aux` (the BSA convention — incident antenna
frame). **Forward-scatter** is `geom_horiz_forw`.
* **Doppler velocity** is positive *downward* (toward the radar for
a vertically-pointing profiler) throughout `rustmatrix.spectra` —
matching the convention in {cite}`Kollias2002,Zhu2023`.
## Relationship to the scattering cross-sections
Back-scatter cross-section $\sigma_b$ and total scattering
$\sigma_{sca}$ are also available via
`rustmatrix.scatter.radar_xsect` and `scatter.sca_xsect` — useful for
Mie parity checks and for feeding `spectra.SpectralIntegrator` a
custom $\sigma_b(D)$.
## Further reading
* {cite}`BringiChandrasekar2001`, chapters 3–4 — the definitive
reference.
* {cite}`Kumjian2013` — a three-part practical tutorial aimed at
operational meteorologists.
* {cite}`DoviakZrnic1993` — for the radar-equation derivations and
the sign conventions used in the Doppler / spectral modules.
```{bibliography}
:filter: docname in docnames
```