Precomputed, state-independent PPP per-range corrections for the static-arc float/fixed solve: solid-earth tide, carrier-phase wind-up, and satellite antenna PCO/PCV.
All three depend only on epoch geometry (Sun/Moon direction, satellite
position, and a fixed reference receiver position), not on the estimated
receiver coordinates, so they are computed once before the Gauss-Newton loop
at the seed/approx position and looked up by the row builders and the shared
range_corrections_m chokepoint. The Rust core owns the modeling and
orchestration; this module keeps the Orbis API shape, marshals parsed ANTEX
calibration data across the NIF, and rebuilds the unchanged public maps.
Summary
Functions
Build the precomputed correction tables for the arc.
Empty correction tables (no precomputed corrections).
Types
@type t() :: %{ tide: %{optional(NaiveDateTime.t()) => vec3()}, windup_m: %{optional({String.t(), NaiveDateTime.t()}) => float()}, sat_pco_ecef: %{optional({String.t(), NaiveDateTime.t()}) => vec3()}, sat_pcv_m: %{optional({String.t(), NaiveDateTime.t()}) => float()} }
Functions
Build the precomputed correction tables for the arc.
config keys (all optional; absent = that correction is off):
:solid_earth_tide-trueto compute the per-epoch tide displacement.:phase_windup-trueto compute per-(sat,epoch) wind-up metres.:satellite_antenna-%{antex: %Antex{}, freq1: "G01", freq2: "G02"}to compute per-(sat,epoch) satellite PCO (ECEF vector) and nadir PCV (metres).
ref_pos is the reference receiver ECEF {x,y,z} (the solve seed/approx).
@spec empty() :: t()
Empty correction tables (no precomputed corrections).