ItuRPropagation.P838 (ITU-R Propagation v0.6.1)

Copy Markdown View Source

ITU-R P.838-3: Specific attenuation model for rain.

Implements the power-law model for computing specific rain attenuation:

gamma_R = k * R^alpha  (dB/km)

where R is the rain rate in mm/h, and k and alpha are frequency- and polarization-dependent coefficients derived from curve-fitting to scattering calculations.

The coefficients are computed using regression fits published in ITU-R P.838-3 (03/2005), valid for frequencies from 1 to 1000 GHz.

Polarization

Coefficients are provided for horizontal and vertical linear polarization. For circular polarization (e.g., RHCP used in satellite links), the coefficients are derived as:

k_c = (k_H + k_V + (k_H - k_V) * cos^2(el) * cos(2*tau)) / 2
alpha_c = (k_H*alpha_H + k_V*alpha_V + ...) / (2*k_c)

where tau = 45 degrees for circular polarization.

Reference

ITU-R P.838-3: Specific attenuation model for rain for use in prediction methods. https://www.itu.int/rec/R-REC-P.838-3-200503-I/en

Summary

Functions

Compute the k and alpha coefficients for the power-law rain attenuation model.

Types

polarization()

@type polarization() :: :horizontal | :vertical | :circular

Functions

coefficients(frequency_ghz, polarization \\ :circular, elevation_deg \\ 0.0)

@spec coefficients(float(), polarization(), float()) :: {float(), float()}

Compute the k and alpha coefficients for the power-law rain attenuation model.

Returns the pair {k, alpha} such that gamma_R = k * R^alpha (dB/km).

Parameters

  • frequency_ghz - Frequency in GHz (1-1000)
  • polarization - Polarization: :horizontal, :vertical, or :circular (default: :circular)
  • elevation_deg - Elevation angle in degrees (default: 0.0)

Returns

Tuple {k, alpha} where k is the coefficient (dimensionless) and alpha is the exponent (dimensionless).

Examples

iex> {k, alpha} = ItuRPropagation.P838.coefficients(14.25, :horizontal)
iex> abs(k - 0.0393) < 0.005
true
iex> abs(alpha - 1.12) < 0.05
true

specific_attenuation(frequency_ghz, rain_rate_mmh, polarization \\ :circular, elevation_deg \\ 0.0)

@spec specific_attenuation(float(), float(), polarization(), float()) :: float()

Compute the specific rain attenuation gamma_R in dB/km.

Applies the power-law relationship gamma_R = k * R^alpha, where k and alpha are frequency- and polarization-dependent coefficients from ITU-R P.838-3.

Parameters

  • frequency_ghz - Frequency in GHz (1-1000)
  • rain_rate_mmh - Rain rate in mm/h
  • polarization - Polarization: :horizontal, :vertical, or :circular (default: :circular)
  • elevation_deg - Elevation angle in degrees, used for polarization mixing (default: 0.0)

Returns

Specific rain attenuation in dB/km.

Examples

iex> gamma = ItuRPropagation.P838.specific_attenuation(12.0, 25.0, :horizontal)
iex> gamma > 1.0
true

iex> gamma = ItuRPropagation.P838.specific_attenuation(1.66, 10.0, :circular)
iex> gamma < 0.01
true