Orbis.Doppler (Orbis v0.9.1)

Copy Markdown View Source

Doppler shift calculation for satellite-ground links.

Given a satellite's GCRS state vector (position and velocity), a ground station, and a carrier frequency, computes the radial velocity (range rate) and the resulting Doppler shift.

Summary

Functions

Compute Doppler shift for a satellite-ground link.

Functions

shift(map, datetime, ground_station, frequency_hz)

Compute Doppler shift for a satellite-ground link.

Parameters

  • gcrs_state - map with :position {x, y, z} (km) and :velocity {vx, vy, vz} (km/s) in GCRS
  • datetime - observation time (DateTime or {{y,m,d},{h,m,s}} tuple)
  • ground_station - %{latitude: deg, longitude: deg, altitude_m: meters}
  • frequency_hz - carrier frequency in Hz

Returns

A map with:

  • :range_rate_km_s - radial velocity in km/s (positive = approaching)
  • :doppler_hz - Doppler shift in Hz (positive = frequency increase)
  • :doppler_ratio - dimensionless Doppler ratio (-range_rate / c)

Example

gcrs = Orbis.teme_to_gcrs(teme, datetime)
station = %{latitude: 40.0, longitude: -74.0, altitude_m: 0.0}
result = Orbis.Doppler.shift(gcrs, datetime, station, 437.0e6)
result.doppler_hz  # => ~10_000.0 (for typical LEO pass)