pub struct SolveInputs {
pub observations: Vec<Observation>,
pub t_rx_j2000_s: f64,
pub t_rx_second_of_day_s: f64,
pub day_of_year: f64,
pub initial_guess: [f64; 4],
pub corrections: Corrections,
pub klobuchar: KlobucharCoeffs,
pub beidou_klobuchar: Option<KlobucharCoeffs>,
pub galileo_nequick: Option<GalileoNequickCoeffs>,
pub glonass_channels: BTreeMap<u8, i8>,
pub met: SurfaceMet,
pub robust: Option<RobustConfig>,
}Expand description
Everything one SPP solve needs besides the SP3 product itself.
The receive epoch is carried as seconds-since-J2000 (t_rx_j2000_s), the
argument the transmit-time iteration differences against the geometric range
to land the satellite ephemeris at transmission, with no Julian-date
round-trip inside the loop. The Klobuchar diurnal argument
(t_rx_second_of_day_s) and the Niell seasonal argument (day_of_year) are
supplied directly so the correction kernels run in their bit-exact native
units.
Fields§
§observations: Vec<Observation>The pseudorange observations (any order; the solve sorts them).
t_rx_j2000_s: f64Receive epoch, seconds since J2000 in the SP3 product’s time scale.
t_rx_second_of_day_s: f64GPS second-of-day of the receive epoch (Klobuchar diurnal argument).
day_of_year: f64Fractional day-of-year of the receive epoch (Niell seasonal argument).
initial_guess: [f64; 4]Initial guess [x_m, y_m, z_m, b_m].
corrections: CorrectionsThe correction terms to apply.
klobuchar: KlobucharCoeffsBroadcast Klobuchar coefficients (used iff corrections.ionosphere).
Applied to every system unless beidou_klobuchar overrides BeiDou.
beidou_klobuchar: Option<KlobucharCoeffs>Optional BeiDou-specific Klobuchar coefficients (the broadcast BDSA/
BDSB set). When present, BeiDou satellites use these instead of
klobuchar; both feed the same model, frequency-scaled
to B1I. None falls back to klobuchar for BeiDou too.
galileo_nequick: Option<GalileoNequickCoeffs>Optional Galileo-specific NeQuick-G coefficients (the broadcast GAL
ai0/ai1/ai2 set). When present, Galileo satellites use these instead
of the GPS Klobuchar coefficients. None preserves the historical
Klobuchar fallback so existing zero-Galileo goldens stay bit-identical.
glonass_channels: BTreeMap<u8, i8>GLONASS FDMA channel numbers keyed by GLONASS slot (PRN), from the
broadcast nav freq_channel field or the observation header’s
GLONASS SLOT / FRQ # records. Used only to resolve the per-satellite
GLONASS carrier for the ionosphere (f_L1 / f_k)^2 scaling; an empty map
is correct for any solve with no GLONASS observation and leaves every
other constellation bit-identical. A GLONASS observation with the
ionosphere correction requested but no channel here is rejected with
SppError::IonosphereUnsupported.
met: SurfaceMetSurface meteorology (used iff corrections.troposphere).
robust: Option<RobustConfig>Opt-in Huber/IRLS robust reweighting. None (the default behavior)
runs the static elevation-weighted solve byte-identically; Some(_)
adds the outer reweighting loop described on RobustConfig.
Trait Implementations§
Source§impl Clone for SolveInputs
impl Clone for SolveInputs
Source§fn clone(&self) -> SolveInputs
fn clone(&self) -> SolveInputs
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl Freeze for SolveInputs
impl RefUnwindSafe for SolveInputs
impl Send for SolveInputs
impl Sync for SolveInputs
impl Unpin for SolveInputs
impl UnsafeUnpin for SolveInputs
impl UnwindSafe for SolveInputs
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.