astrodynamics-gnss 0.8.0

GNSS domain layer (SP3, broadcast ephemeris, multi-GNSS single-point positioning, ionosphere/troposphere, DOP) built on the astrodynamics core
Documentation

astrodynamics-gnss

GNSS domain layer built on the astrodynamics core crate. A sibling crate, not a feature — a propagation-only consumer never has to compile the SP3/RINEX/IONEX parsers.

What it provides

  • SP3 precise ephemeris — SP3-c/SP3-d parsing and arbitrary-epoch position/clock interpolation.
  • Broadcast ephemeris — RINEX 3.x/4.xx navigation parsing and orbit/clock evaluation for GPS (LNAV), Galileo (I/NAV, F/NAV), BeiDou (D1/D2, including geostationary satellites), and GLONASS (PZ-90.11 state-vector propagation by Runge–Kutta integration).
  • Atmospheric corrections — broadcast Klobuchar ionosphere (frequency-aware) and Saastamoinen + Niell troposphere.
  • Single-point positioning — multi-constellation least-squares PVT with one receiver clock per system, elevation weighting, satellite rejection, and dilution of precision.

Parity bar

Every independently reproducible, libm-bound component (orbit and clock evaluation, ionosphere, troposphere, DOP) is held to bit-exact (0 ULP) parity against a pinned Python reference, proven by committed hex-float golden vectors; broadcast orbits are additionally validated against precise SP3 products. The least-squares solver's converged position is a sub-micron solver-agreement result, not a 0-ULP claim (the linear-algebra step is BLAS-bound).

Units are SI throughout, with the frame and datum encoded in the type (ItrfPositionM, Wgs84Geodetic). 0 ULP is certified against a pinned target (OS/arch, libm, toolchain, FMA policy); other platforms run the same algorithms but need their own fixtures.

License

MIT