Orbis.Troposphere (Orbis v0.8.0)

Copy Markdown View Source

Neutral-atmosphere (tropospheric) signal-delay corrections.

Computes the GNSS tropospheric delay over the astrodynamics-gnss crate as a Saastamoinen (1972) zenith hydrostatic and wet delay, driven by supplied surface meteorology, mapped to the line of sight by the Niell (1996) mapping functions (NMF). The zenith delays and the mapping factors are exposed separately, and a convenience entry composes the full slant delay.

This is the neutral-atmosphere signal-path delay. It is not Orbis.Atmosphere, which is NRLMSISE-00 neutral-atmosphere mass density for drag — a different quantity.

Sign convention

The tropospheric delay is non-dispersive: it has the same sign and magnitude for code and carrier phase. The returned delays are positive meters that increase the measured pseudorange — delay_m > 0 means the signal arrived later and the pseudorange is too long by delay_m.

Units at the boundary

Elevation and latitude are degrees (_deg); height is the WGS84 ellipsoidal height in meters (_m). Surface meteorology is supplied as %{pressure_hpa: p, temperature_k: t, relative_humidity: rh} where pressure is hectopascals, temperature is kelvin, and relative humidity is a unit fraction in [0, 1] (not a percentage). A below-sea-level (negative) height is used with its sign.

Summary

Functions

Niell hydrostatic and wet mapping factors at an elevation.

Full slant tropospheric delay in positive meters.

Zenith hydrostatic and wet tropospheric delays from supplied meteorology.

Functions

mapping(elevation_deg, lat_deg, height_m, epoch)

@spec mapping(number(), number(), number(), NaiveDateTime.t() | tuple()) ::
  {:ok, %{dry: float(), wet: float()}} | {:error, term()}

Niell hydrostatic and wet mapping factors at an elevation.

epoch is a NaiveDateTime or {{y, m, d}, {h, min, s}} tuple (the Niell seasonal term needs the day-of-year). Returns {:ok, %{dry: dry, wet: wet}} (dimensionless) or {:error, reason}.

slant_delay(elevation_deg, lat_deg, lon_deg, height_m, met, epoch)

@spec slant_delay(
  number(),
  number(),
  number(),
  number(),
  map(),
  NaiveDateTime.t() | tuple()
) ::
  {:ok, float()} | {:error, term()}

Full slant tropospheric delay in positive meters.

Composes the Saastamoinen zenith delays with the Niell mapping at the given elevation. epoch sets the seasonal day-of-year. Returns {:ok, delay_m} (positive meters; zero at or below the horizon and outside the height validity range) or {:error, reason}.

zenith_delay(lat_deg, height_m, met)

@spec zenith_delay(number(), number(), map()) ::
  {:ok, %{dry_m: float(), wet_m: float()}} | {:error, term()}

Zenith hydrostatic and wet tropospheric delays from supplied meteorology.

Returns {:ok, %{dry_m: dry, wet_m: wet}} (both positive meters) or {:error, reason}. The hydrostatic delay carries the gravity correction for the receiver latitude and height.