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

Copy Markdown View Source

Combined atmospheric attenuation model for satellite link budgets.

Aggregates all atmospheric propagation effects into a single total attenuation value with a component-by-component breakdown. This is the module that link budget calculators typically call.

The total atmospheric attenuation is the sum of:

  • Gaseous attenuation (ITU-R P.676) - Oxygen and water vapor absorption, always present, dominant below 10 GHz
  • Rain attenuation (ITU-R P.618) - Dominant effect above 10 GHz for the specified exceedance probability
  • Cloud attenuation - Simplified model based on integrated liquid water content (from ITU-R P.840 concepts)
  • Tropospheric scintillation - Simplified model for amplitude fluctuations (from ITU-R P.618 concepts)

Note: The cloud and scintillation models implemented here are simplified approximations. For detailed cloud attenuation calculations, refer to ITU-R P.840. For detailed scintillation calculations, refer to the full ITU-R P.618 procedure.

Summary

Functions

Compute cloud attenuation using ITU-R P.840.

Compute scintillation attenuation using ITU-R P.618.

Compute total atmospheric attenuation for a satellite link.

Types

attenuation_result()

@type attenuation_result() :: %{
  total_db: float(),
  gaseous_db: float(),
  rain_db: float(),
  cloud_db: float(),
  scintillation_db: float()
}

Functions

cloud_attenuation(f, el, cloud_lw, temp_c \\ 0.0)

Compute cloud attenuation using ITU-R P.840.

scintillation_attenuation(f, el, p, opts \\ [])

Compute scintillation attenuation using ITU-R P.618.

total_atmospheric_attenuation(opts)

@spec total_atmospheric_attenuation(keyword()) :: attenuation_result()

Compute total atmospheric attenuation for a satellite link.

Combines gaseous, rain, cloud, and scintillation attenuation into a single result with per-component breakdown.

Options

  • :frequency_ghz - Frequency in GHz (required)
  • :elevation_deg - Elevation angle in degrees (required)
  • :latitude_deg - Earth station latitude in degrees (required)
  • :longitude_deg - Earth station longitude in degrees (required)
  • :rain_rate_mmh - Rain rate in mm/h (required)
  • :station_altitude_km - Station altitude above MSL in km (default: 0.0)
  • :water_vapor_density - Water vapor density in g/m^3 (default: 7.5)
  • :polarization - :horizontal, :vertical, or :circular (default: :circular)
  • :cloud_liquid_water - Integrated cloud liquid water in kg/m^2 (default: 0.3)
  • :time_percentage - Exceedance time percentage (default: 0.01)
  • :antenna_diameter_m - Antenna diameter in meters (default: 1.2, for scintillation)
  • :antenna_efficiency - Antenna efficiency (default: 0.5, for scintillation)
  • :temperature_c - Average surface temperature in degrees Celsius (default: 15.0)
  • :relative_humidity - Average relative humidity in % (default: 75.0)

Returns

A map with the following keys:

  • :total_db - Total atmospheric attenuation in dB
  • :gaseous_db - Gaseous attenuation (P.676) in dB
  • :rain_db - Rain attenuation (P.618) in dB
  • :cloud_db - Cloud attenuation (P.840) in dB
  • :scintillation_db - Scintillation (P.618) in dB

Examples

iex> result = ItuRPropagation.LinkBudget.total_atmospheric_attenuation(
...>   frequency_ghz: 12.0,
...>   elevation_deg: 30.0,
...>   latitude_deg: 40.0,
...>   longitude_deg: -100.0,
...>   rain_rate_mmh: 25.0
...> )
iex> result.total_db > 0.0
true