Struct nyx_space::dynamics::orbital::OrbitalDynamics [−][src]
pub struct OrbitalDynamics<'a> { pub accel_models: Vec<Arc<dyn AccelModel + Sync + 'a>>, }
Expand description
OrbitalDynamics
provides the equations of motion for any celestial dynamic, without state transition matrix computation.
Fields
accel_models: Vec<Arc<dyn AccelModel + Sync + 'a>>
Implementations
Initialize point mass dynamics given the EXB IDs and a Cosm
Initializes a OrbitalDynamics which does not simulate the gravity pull of other celestial objects but the primary one.
Initialize orbital dynamics with a list of acceleration models
Initialize orbital dynamics with a list of acceleration models, without encapsulating it in an Arc Use this only if you need to mutate the dynamics as you’ll need to wrap it in an Arc before propagation.
Initialize new orbital mechanics with the provided model. Note: Orbital dynamics always include two body dynamics, these cannot be turned off.
Add a model to the currently defined orbital dynamics
Clone these dynamics and add a model to the currently defined orbital dynamics
Trait Implementations
type HyperdualSize = U7
type HyperdualSize = U7
The state of the associated hyperdual state, almost always StateType + U1
Defines the equations of motion for these dynamics, or a combination of provided dynamics. The time delta_t is in seconds PAST the context epoch. The state vector is the state which changes for every intermediate step of the integration. The state context is the state of what is being propagated, it should allow rebuilding a new state context from the provided state vector. Read more
Defines the equations of motion for Dual numbers for these dynamics. All dynamics need to allow for automatic differentiation. However, if differentiation is not supported, then the dynamics should prevent initialization with a context which has an STM defined. Read more
fn eom_grad(
&self,
delta_t_s: f64,
state_vec: &VectorN<f64, <Self::StateType as State>::Size>,
state_ctx: &Self::StateType
) -> Result<(VectorN<f64, <Self::StateType as State>::Size>, MatrixN<f64, <Self::StateType as State>::Size>), NyxError> where
DefaultAllocator: Allocator<f64, <Self::StateType as State>::Size> + Allocator<f64, <Self::StateType as State>::Size, <Self::StateType as State>::Size> + Allocator<f64, Self::HyperdualSize> + Allocator<Hyperdual<f64, Self::HyperdualSize>, <Self::StateType as State>::Size>,
Owned<f64, Self::HyperdualSize>: Copy,
[src]
fn eom_grad(
&self,
delta_t_s: f64,
state_vec: &VectorN<f64, <Self::StateType as State>::Size>,
state_ctx: &Self::StateType
) -> Result<(VectorN<f64, <Self::StateType as State>::Size>, MatrixN<f64, <Self::StateType as State>::Size>), NyxError> where
DefaultAllocator: Allocator<f64, <Self::StateType as State>::Size> + Allocator<f64, <Self::StateType as State>::Size, <Self::StateType as State>::Size> + Allocator<f64, Self::HyperdualSize> + Allocator<Hyperdual<f64, Self::HyperdualSize>, <Self::StateType as State>::Size>,
Owned<f64, Self::HyperdualSize>: Copy,
[src]Computes both the state and the gradient of the dynamics. This function is pre-implemented.
Auto Trait Implementations
impl<'a> !RefUnwindSafe for OrbitalDynamics<'a>
impl<'a> Send for OrbitalDynamics<'a>
impl<'a> Sync for OrbitalDynamics<'a>
impl<'a> Unpin for OrbitalDynamics<'a>
impl<'a> !UnwindSafe for OrbitalDynamics<'a>
Blanket Implementations
Mutably borrows from an owned value. Read more
type Output = T
type Output = T
Should always be Self
The inverse inclusion map: attempts to construct self
from the equivalent element of its
superset. Read more
pub fn is_in_subset(&self) -> bool
pub fn is_in_subset(&self) -> bool
Checks if self
is actually part of its subset T
(and can be converted to it).
pub fn to_subset_unchecked(&self) -> SS
pub fn to_subset_unchecked(&self) -> SS
Use with care! Same as self.to_subset
but without any property checks. Always succeeds.
pub fn from_subset(element: &SS) -> SP
pub fn from_subset(element: &SS) -> SP
The inclusion map: converts self
to the equivalent element of its superset.
pub fn vzip(self) -> V