pub struct PreciseForceModel {Show 14 fields
pub geopotential: SphericalHarmonicField,
pub epoch_jd_tt: f64,
pub sun: bool,
pub moon: bool,
pub srp: bool,
pub cr: f64,
pub area_over_mass: f64,
pub drag: bool,
pub cd_area_over_mass: f64,
pub relativity: bool,
pub lense_thirring: bool,
pub tides: bool,
pub empirical: Option<EmpiricalAccel>,
pub eop: Option<EopSeries>,
}Expand description
The precise force model fit by fit: the EGM2008 spherical-harmonic geopotential
(which already contains two-body + the zonal/tesseral field) plus the configured perturbations
and the optional empirical-acceleration tier.
The geopotential is evaluated in the Earth-fixed frame through the CIO reduction; in this first wave the Earth-orientation parameters are nominal (UT1 ≈ TT, no polar motion), which is exact for synthetic self-recovery (the same model generates and fits the arc). The agency-data harnesses (W3+) supply real finals2000A EOP through the same rotation.
Fields§
§geopotential: SphericalHarmonicFieldThe geopotential field (EGM2008 to some degree, or any SphericalHarmonicField).
epoch_jd_tt: f64Estimation/propagation epoch (Julian Date, TT) at integration time t = 0.
sun: boolInclude the Sun third body.
moon: boolInclude the Moon third body.
srp: boolInclude solar-radiation pressure.
cr: f64SRP radiation-pressure coefficient C_R.
area_over_mass: f64SRP cross-section-to-mass ratio A/m (m²/kg).
drag: boolInclude atmospheric drag.
cd_area_over_mass: f64Drag ballistic term C_D·A/m (m²/kg).
relativity: boolInclude the Schwarzschild relativistic correction.
lense_thirring: boolInclude the Lense–Thirring frame-dragging correction.
tides: boolInclude the solid/ocean/atmospheric tide perturbation.
empirical: Option<EmpiricalAccel>Optional empirical-acceleration tier (RTN constant + once-per-rev).
eop: Option<EopSeries>Optional real IERS Earth-orientation series. When present the GCRS↔ITRS rotation uses real UT1−UTC and polar motion; when absent it falls back to nominal (UT1 = TT, no pole), which is exact for synthetic self-recovery.
Implementations§
Source§impl PreciseForceModel
impl PreciseForceModel
Sourcepub fn from_field(
geopotential: SphericalHarmonicField,
epoch_jd_tt: f64,
) -> Self
pub fn from_field( geopotential: SphericalHarmonicField, epoch_jd_tt: f64, ) -> Self
A force model over the given geopotential field at epoch_jd_tt, no perturbations.
Sourcepub fn egm2008(nmax: usize, epoch_jd_tt: f64) -> Self
pub fn egm2008(nmax: usize, epoch_jd_tt: f64) -> Self
A force model over the bundled EGM2008 field truncated to nmax (0 = point mass).
Sourcepub fn third_body(self, sun: bool, moon: bool) -> Self
pub fn third_body(self, sun: bool, moon: bool) -> Self
Add the Sun/Moon third-body perturbation.
Sourcepub fn solar_radiation(self, cr: f64, area_over_mass: f64) -> Self
pub fn solar_radiation(self, cr: f64, area_over_mass: f64) -> Self
Add solar-radiation pressure with coefficient cr and area-to-mass area_over_mass.
Sourcepub fn drag(self, cd_area_over_mass: f64) -> Self
pub fn drag(self, cd_area_over_mass: f64) -> Self
Add atmospheric drag with ballistic term cd_area_over_mass.
Sourcepub fn relativity(self) -> Self
pub fn relativity(self) -> Self
Add the Schwarzschild relativistic correction.
Sourcepub fn lense_thirring(self) -> Self
pub fn lense_thirring(self) -> Self
Add the Lense–Thirring frame-dragging correction.
Sourcepub fn with_empirical(self, empirical: EmpiricalAccel) -> Self
pub fn with_empirical(self, empirical: EmpiricalAccel) -> Self
Attach an empirical-acceleration tier.
Sourcepub fn with_eop(self, eop: EopSeries) -> Self
pub fn with_eop(self, eop: EopSeries) -> Self
Attach a real IERS Earth-orientation series, driving the GCRS↔ITRS rotation with real UT1−UTC and polar motion.
Sourcepub fn frame_args(&self, jd_tt: f64) -> (f64, f64, f64)
pub fn frame_args(&self, jd_tt: f64) -> (f64, f64, f64)
The CIO-frame rotation inputs (jd_ut1, x_p [rad], y_p [rad]) at jd_tt: real EOP when
attached, else nominal (UT1 = TT, no polar motion). The validation harness uses the same
args to transform SP3 observations ITRS→GCRS, so dynamics and observations share one frame.
Trait Implementations§
Source§impl Clone for PreciseForceModel
impl Clone for PreciseForceModel
Source§fn clone(&self) -> PreciseForceModel
fn clone(&self) -> PreciseForceModel
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for PreciseForceModel
impl Debug for PreciseForceModel
Source§impl ForceModel for PreciseForceModel
impl ForceModel for PreciseForceModel
Source§fn accel_rv(&self, t: f64, r: [f64; 3], v: [f64; 3]) -> [f64; 3]
fn accel_rv(&self, t: f64, r: [f64; 3], v: [f64; 3]) -> [f64; 3]
The full acceleration (m/s², ECI) at integration time t (s past the epoch), position r
and velocity v.
Source§fn dynamics_matrix(&self, t: f64, r: [f64; 3], v: [f64; 3]) -> [[f64; 6]; 6]
fn dynamics_matrix(&self, t: f64, r: [f64; 3], v: [f64; 3]) -> [[f64; 6]; 6]
Overrides the default with the per-epoch frame and Sun/Moon ephemeris computed once and shared across the twelve perturbed evaluations, so the (expensive) nutation/ephemeris is not recomputed per column.
Source§fn cr(&self) -> f64
fn cr(&self) -> f64
C_R (the estimator’s optional free parameter).