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
@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}.
@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}.
@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.