Skip to main content

AccelModel

Trait AccelModel 

Source
pub trait AccelModel:
    Send
    + Sync
    + Display {
    // Required methods
    fn eom(
        &self,
        osc: &Orbit,
        almanac: &Almanac,
    ) -> Result<Vector3<f64>, DynamicsError>;
    fn gradient(
        &self,
        osc_ctx: &Orbit,
        almanac: &Almanac,
    ) -> Result<(Vector3<f64>, Matrix3<f64>), DynamicsError>;
}
Expand description

Evaluates mass-independent accelerations acting directly on an orbit.

Unlike ForceModel, implementations of AccelModel operate strictly on an Orbit state because the evaluated acceleration vector $\mathbf{a}$ is independent of spacecraft mass or surface geometry (e.g., central-body spherical harmonics, point-mass third-body gravity).

Required Methods§

Source

fn eom( &self, osc: &Orbit, almanac: &Almanac, ) -> Result<Vector3<f64>, DynamicsError>

Evaluates the acceleration vector $\mathbf{a}$ ($\text{km/s}^2$) in the integration frame at the provided orbital state and epoch.

Source

fn gradient( &self, osc_ctx: &Orbit, almanac: &Almanac, ) -> Result<(Vector3<f64>, Matrix3<f64>), DynamicsError>

Evaluates the nominal acceleration vector $\mathbf{a}$ and its spatial partial derivatives for State Transition Matrix (STM) propagation.

Returns a tuple containing:

  1. The nominal acceleration vector $\mathbf{a}$ ($\text{km/s}^2$).
  2. The $3 \times 3$ Jacobian matrix of spatial partial derivatives ($\partial \mathbf{a}/\partial \mathbf{r}$, in $\text{s}^{-2}$).

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§