Skip to main content

PreciseForceModel

Struct PreciseForceModel 

Source
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: SphericalHarmonicField

The geopotential field (EGM2008 to some degree, or any SphericalHarmonicField).

§epoch_jd_tt: f64

Estimation/propagation epoch (Julian Date, TT) at integration time t = 0.

§sun: bool

Include the Sun third body.

§moon: bool

Include the Moon third body.

§srp: bool

Include solar-radiation pressure.

§cr: f64

SRP radiation-pressure coefficient C_R.

§area_over_mass: f64

SRP cross-section-to-mass ratio A/m (m²/kg).

§drag: bool

Include atmospheric drag.

§cd_area_over_mass: f64

Drag ballistic term C_D·A/m (m²/kg).

§relativity: bool

Include the Schwarzschild relativistic correction.

§lense_thirring: bool

Include the Lense–Thirring frame-dragging correction.

§tides: bool

Include 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

Source

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.

Source

pub fn egm2008(nmax: usize, epoch_jd_tt: f64) -> Self

A force model over the bundled EGM2008 field truncated to nmax (0 = point mass).

Source

pub fn third_body(self, sun: bool, moon: bool) -> Self

Add the Sun/Moon third-body perturbation.

Source

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.

Source

pub fn drag(self, cd_area_over_mass: f64) -> Self

Add atmospheric drag with ballistic term cd_area_over_mass.

Source

pub fn relativity(self) -> Self

Add the Schwarzschild relativistic correction.

Source

pub fn lense_thirring(self) -> Self

Add the Lense–Thirring frame-dragging correction.

Source

pub fn tides(self) -> Self

Add the tide perturbation.

Source

pub fn with_empirical(self, empirical: EmpiricalAccel) -> Self

Attach an empirical-acceleration tier.

Source

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.

Source

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

Source§

fn clone(&self) -> PreciseForceModel

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for PreciseForceModel

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl ForceModel for PreciseForceModel

Source§

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]

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

The current SRP coefficient C_R (the estimator’s optional free parameter).
Source§

fn set_cr(&mut self, cr: f64)

Set the SRP coefficient C_R.
Source§

fn set_empirical(&mut self, empirical: Option<EmpiricalAccel>)

Attach (or clear) the empirical-acceleration tier.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V