pub struct Verner9FixedStep { /* private fields */ }Expand description
Trait Implementations§
Source§impl<Y, U, V, T> Explicit<Y, U, V, T> for Verner9where
Y: Differentiable<T> + Tensor,
Derivative<Y, T>: Mul<Quantity<T>, Output = Y>,
for<'a> &'a Y: Mul<Scalar, Output = Y> + Sub<&'a Y, Output = Y>,
for<'a> &'a Derivative<Y, T>: Mul<Scalar, Output = Derivative<Y, T>> + Mul<Quantity<T>, Output = Y>,
U: TensorVec<Item = Y>,
V: TensorVec<Item = Derivative<Y, T>>,
impl<Y, U, V, T> Explicit<Y, U, V, T> for Verner9where
Y: Differentiable<T> + Tensor,
Derivative<Y, T>: Mul<Quantity<T>, Output = Y>,
for<'a> &'a Y: Mul<Scalar, Output = Y> + Sub<&'a Y, Output = Y>,
for<'a> &'a Derivative<Y, T>: Mul<Scalar, Output = Derivative<Y, T>> + Mul<Quantity<T>, Output = Y>,
U: TensorVec<Item = Y>,
V: TensorVec<Item = Derivative<Y, T>>,
const SLOPES: usize = 15
Source§fn integrate(
&self,
function: impl FnMut(Quantity<T>, &Y) -> Result<Derivative<Y, T>, String>,
time: &[Quantity<T>],
initial_condition: Y,
) -> Result<(Times<T>, U, V), IntegrationError>
fn integrate( &self, function: impl FnMut(Quantity<T>, &Y) -> Result<Derivative<Y, T>, String>, time: &[Quantity<T>], initial_condition: Y, ) -> Result<(Times<T>, U, V), IntegrationError>
Solves an initial value problem by explicitly integrating a system of ordinary differential equations. Read more
Source§impl<Y, U, V, T> FixedStepExplicit<Y, U, V, T> for Verner9where
Y: Differentiable<T> + Tensor,
Derivative<Y, T>: Mul<Quantity<T>, Output = Y>,
for<'a> &'a Y: Mul<Scalar, Output = Y> + Sub<&'a Y, Output = Y>,
for<'a> &'a Derivative<Y, T>: Mul<Scalar, Output = Derivative<Y, T>> + Mul<Quantity<T>, Output = Y>,
U: TensorVec<Item = Y>,
V: TensorVec<Item = Derivative<Y, T>>,
impl<Y, U, V, T> FixedStepExplicit<Y, U, V, T> for Verner9where
Y: Differentiable<T> + Tensor,
Derivative<Y, T>: Mul<Quantity<T>, Output = Y>,
for<'a> &'a Y: Mul<Scalar, Output = Y> + Sub<&'a Y, Output = Y>,
for<'a> &'a Derivative<Y, T>: Mul<Scalar, Output = Derivative<Y, T>> + Mul<Quantity<T>, Output = Y>,
U: TensorVec<Item = Y>,
V: TensorVec<Item = Derivative<Y, T>>,
fn integrate_fixed_step( &self, function: impl FnMut(Quantity<T>, &Y) -> Result<Derivative<Y, T>, String>, time: &[Quantity<T>], initial_condition: Y, ) -> Result<(Times<T>, U, V), IntegrationError>
fn integrate_fixed_step_bounded( &self, function: impl FnMut(Quantity<T>, &Y) -> Result<Derivative<Y, T>, String>, bound: impl FnMut(Quantity<T>, &Y) -> Result<Spectrum<T>, String>, safety: Scalar, time: &[Quantity<T>], initial_condition: Y, ) -> Result<(Times<T>, U, V), IntegrationError>
fn integrate_fixed_step_checked( &self, function: impl FnMut(Quantity<T>, &Y) -> Result<Derivative<Y, T>, String>, check: impl FnMut(Quantity<T>, &Y, Quantity<T>) -> Result<(), IntegrationError>, time: &[Quantity<T>], initial_condition: Y, ) -> Result<(Times<T>, U, V), IntegrationError>
fn step( &self, function: impl FnMut(Quantity<T>, &Y) -> Result<Derivative<Y, T>, String>, y: &Y, t: Quantity<T>, dt: Quantity<T>, k: &mut [Derivative<Y, T>], y_trial: &mut Y, ) -> Result<(), String>
impl<Y, U> OdeIntegrator<Y, U> for Verner9
Source§impl<T> Stacked<T> for Verner9FixedStep
impl<T> Stacked<T> for Verner9FixedStep
Source§fn integrate_stacked<X, UX, UV, UA>(
&self,
function: impl FnMut(Quantity<T>, &X, &Derivative<X, T>) -> Result<Derivative<Derivative<X, T>, T>, String>,
time: &[Quantity<T>],
initial_position: X,
initial_velocity: Derivative<X, T>,
) -> Result<(Times<T>, UX, UV, UA), IntegrationError>where
Self: Explicit<TensorTuple<X, Derivative<X, T>>, TensorVector<TensorTuple<X, Derivative<X, T>>>, TensorVector<Derivative<TensorTuple<X, Derivative<X, T>>, T>>, T>,
X: Differentiable<T> + Tensor,
Derivative<X, T>: Differentiable<T> + Tensor,
UX: TensorVec<Item = X>,
UV: TensorVec<Item = Derivative<X, T>>,
UA: TensorVec<Item = Derivative<Derivative<X, T>, T>>,
fn integrate_stacked<X, UX, UV, UA>(
&self,
function: impl FnMut(Quantity<T>, &X, &Derivative<X, T>) -> Result<Derivative<Derivative<X, T>, T>, String>,
time: &[Quantity<T>],
initial_position: X,
initial_velocity: Derivative<X, T>,
) -> Result<(Times<T>, UX, UV, UA), IntegrationError>where
Self: Explicit<TensorTuple<X, Derivative<X, T>>, TensorVector<TensorTuple<X, Derivative<X, T>>>, TensorVector<Derivative<TensorTuple<X, Derivative<X, T>>, T>>, T>,
X: Differentiable<T> + Tensor,
Derivative<X, T>: Differentiable<T> + Tensor,
UX: TensorVec<Item = X>,
UV: TensorVec<Item = Derivative<X, T>>,
UA: TensorVec<Item = Derivative<Derivative<X, T>, T>>,
Solves an initial value problem for dynamics, given the acceleration as a function of time, position, and velocity. Read more
Source§fn integrate_stacked_bounded<X, UX, UV, UA>(
&self,
function: impl FnMut(Quantity<T>, &X, &Derivative<X, T>) -> Result<Derivative<Derivative<X, T>, T>, String>,
bound: impl FnMut(Quantity<T>, &X, &Derivative<X, T>) -> Result<Quantity<T>, String>,
safety: Scalar,
time: &[Quantity<T>],
initial_position: X,
initial_velocity: Derivative<X, T>,
) -> Result<(Times<T>, UX, UV, UA), IntegrationError>where
Self: Explicit<TensorTuple<X, Derivative<X, T>>, TensorVector<TensorTuple<X, Derivative<X, T>>>, TensorVector<Derivative<TensorTuple<X, Derivative<X, T>>, T>>, T>,
X: Differentiable<T> + Tensor,
Derivative<X, T>: Differentiable<T> + Tensor,
UX: TensorVec<Item = X>,
UV: TensorVec<Item = Derivative<X, T>>,
UA: TensorVec<Item = Derivative<Derivative<X, T>, T>>,
fn integrate_stacked_bounded<X, UX, UV, UA>(
&self,
function: impl FnMut(Quantity<T>, &X, &Derivative<X, T>) -> Result<Derivative<Derivative<X, T>, T>, String>,
bound: impl FnMut(Quantity<T>, &X, &Derivative<X, T>) -> Result<Quantity<T>, String>,
safety: Scalar,
time: &[Quantity<T>],
initial_position: X,
initial_velocity: Derivative<X, T>,
) -> Result<(Times<T>, UX, UV, UA), IntegrationError>where
Self: Explicit<TensorTuple<X, Derivative<X, T>>, TensorVector<TensorTuple<X, Derivative<X, T>>>, TensorVector<Derivative<TensorTuple<X, Derivative<X, T>>, T>>, T>,
X: Differentiable<T> + Tensor,
Derivative<X, T>: Differentiable<T> + Tensor,
UX: TensorVec<Item = X>,
UV: TensorVec<Item = Derivative<X, T>>,
UA: TensorVec<Item = Derivative<Derivative<X, T>, T>>,
Solves an initial value problem like
integrate_stacked, subject to a stability bound. Read morefn integrate_stacked_coupled<X, Y, UX, UV, UA, UY, UR>(
&self,
function: impl FnMut(Quantity<T>, &X, &Derivative<X, T>, &Y) -> Result<(Derivative<Derivative<X, T>, T>, Derivative<Y, T>), String>,
time: &[Quantity<T>],
initial_position: X,
initial_velocity: Derivative<X, T>,
initial_state: Y,
) -> Result<(Times<T>, UX, UV, UA, UY, UR), IntegrationError>where
Self: Explicit<TensorTuple<TensorTuple<X, Derivative<X, T>>, Y>, TensorVector<TensorTuple<TensorTuple<X, Derivative<X, T>>, Y>>, TensorVector<Derivative<TensorTuple<TensorTuple<X, Derivative<X, T>>, Y>, T>>, T>,
X: Differentiable<T> + Tensor,
Derivative<X, T>: Differentiable<T> + Tensor,
Y: Differentiable<T> + Tensor,
UX: TensorVec<Item = X>,
UV: TensorVec<Item = Derivative<X, T>>,
UA: TensorVec<Item = Derivative<Derivative<X, T>, T>>,
UY: TensorVec<Item = Y>,
UR: TensorVec<Item = Derivative<Y, T>>,
fn integrate_stacked_coupled_bounded<X, Y, UX, UV, UA, UY, UR>(
&self,
function: impl FnMut(Quantity<T>, &X, &Derivative<X, T>, &Y) -> Result<(Derivative<Derivative<X, T>, T>, Derivative<Y, T>), String>,
bound: impl FnMut(Quantity<T>, &X, &Derivative<X, T>, &Y) -> Result<Spectrum<T>, String>,
safety: Scalar,
time: &[Quantity<T>],
initial_position: X,
initial_velocity: Derivative<X, T>,
initial_state: Y,
) -> Result<(Times<T>, UX, UV, UA, UY, UR), IntegrationError>where
Self: Explicit<TensorTuple<TensorTuple<X, Derivative<X, T>>, Y>, TensorVector<TensorTuple<TensorTuple<X, Derivative<X, T>>, Y>>, TensorVector<Derivative<TensorTuple<TensorTuple<X, Derivative<X, T>>, Y>, T>>, T>,
X: Differentiable<T> + Tensor,
Derivative<X, T>: Differentiable<T> + Tensor,
Y: Differentiable<T> + Tensor,
UX: TensorVec<Item = X>,
UV: TensorVec<Item = Derivative<X, T>>,
UA: TensorVec<Item = Derivative<Derivative<X, T>, T>>,
UY: TensorVec<Item = Y>,
UR: TensorVec<Item = Derivative<Y, T>>,
Auto Trait Implementations§
impl Freeze for Verner9
impl RefUnwindSafe for Verner9
impl Send for Verner9
impl Sync for Verner9
impl Unpin for Verner9
impl UnsafeUnpin for Verner9
impl UnwindSafe for Verner9
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
Mutably borrows from an owned value. Read more
Source§impl<I, X, UX, UV, UA, T> ExplicitDynamics<X, UX, UV, UA, T> for Iwhere
I: Stacked<T> + Explicit<TensorTuple<X, <X as Differentiable<T>>::Derivative>, TensorVector<TensorTuple<X, <X as Differentiable<T>>::Derivative>>, TensorVector<<TensorTuple<X, <X as Differentiable<T>>::Derivative> as Differentiable<T>>::Derivative>, T>,
X: Differentiable<T> + Tensor,
<X as Differentiable<T>>::Derivative: Differentiable<T> + Tensor,
UX: TensorVec<Item = X>,
UV: TensorVec<Item = <X as Differentiable<T>>::Derivative>,
UA: TensorVec<Item = <<X as Differentiable<T>>::Derivative as Differentiable<T>>::Derivative>,
impl<I, X, UX, UV, UA, T> ExplicitDynamics<X, UX, UV, UA, T> for Iwhere
I: Stacked<T> + Explicit<TensorTuple<X, <X as Differentiable<T>>::Derivative>, TensorVector<TensorTuple<X, <X as Differentiable<T>>::Derivative>>, TensorVector<<TensorTuple<X, <X as Differentiable<T>>::Derivative> as Differentiable<T>>::Derivative>, T>,
X: Differentiable<T> + Tensor,
<X as Differentiable<T>>::Derivative: Differentiable<T> + Tensor,
UX: TensorVec<Item = X>,
UV: TensorVec<Item = <X as Differentiable<T>>::Derivative>,
UA: TensorVec<Item = <<X as Differentiable<T>>::Derivative as Differentiable<T>>::Derivative>,
Source§fn integrate(
&self,
function: impl FnMut(Quantity<T>, &X, &<X as Differentiable<T>>::Derivative) -> Result<<<X as Differentiable<T>>::Derivative as Differentiable<T>>::Derivative, String>,
time: &[Quantity<T>],
initial_position: X,
initial_velocity: <X as Differentiable<T>>::Derivative,
) -> Result<(TensorVector<Quantity<T>>, UX, UV, UA), IntegrationError>
fn integrate( &self, function: impl FnMut(Quantity<T>, &X, &<X as Differentiable<T>>::Derivative) -> Result<<<X as Differentiable<T>>::Derivative as Differentiable<T>>::Derivative, String>, time: &[Quantity<T>], initial_position: X, initial_velocity: <X as Differentiable<T>>::Derivative, ) -> Result<(TensorVector<Quantity<T>>, UX, UV, UA), IntegrationError>
Solves an initial value problem for dynamics, given the acceleration as a function of time, position, and velocity. Read more
Source§fn integrate_bounded(
&self,
function: impl FnMut(Quantity<T>, &X, &<X as Differentiable<T>>::Derivative) -> Result<<<X as Differentiable<T>>::Derivative as Differentiable<T>>::Derivative, String>,
bound: impl FnMut(Quantity<T>, &X, &<X as Differentiable<T>>::Derivative) -> Result<Quantity<T>, String>,
safety: f64,
time: &[Quantity<T>],
initial_position: X,
initial_velocity: <X as Differentiable<T>>::Derivative,
) -> Result<(TensorVector<Quantity<T>>, UX, UV, UA), IntegrationError>
fn integrate_bounded( &self, function: impl FnMut(Quantity<T>, &X, &<X as Differentiable<T>>::Derivative) -> Result<<<X as Differentiable<T>>::Derivative as Differentiable<T>>::Derivative, String>, bound: impl FnMut(Quantity<T>, &X, &<X as Differentiable<T>>::Derivative) -> Result<Quantity<T>, String>, safety: f64, time: &[Quantity<T>], initial_position: X, initial_velocity: <X as Differentiable<T>>::Derivative, ) -> Result<(TensorVector<Quantity<T>>, UX, UV, UA), IntegrationError>
Source§impl<I, X, Y, UX, UV, UA, UY, UR, T> ExplicitDynamicsCoupled<X, Y, UX, UV, UA, UY, UR, T> for Iwhere
I: Stacked<T> + Explicit<TensorTuple<TensorTuple<X, <X as Differentiable<T>>::Derivative>, Y>, TensorVector<TensorTuple<TensorTuple<X, <X as Differentiable<T>>::Derivative>, Y>>, TensorVector<<TensorTuple<TensorTuple<X, <X as Differentiable<T>>::Derivative>, Y> as Differentiable<T>>::Derivative>, T>,
X: Differentiable<T> + Tensor,
<X as Differentiable<T>>::Derivative: Differentiable<T> + Tensor,
Y: Differentiable<T> + Tensor,
UX: TensorVec<Item = X>,
UV: TensorVec<Item = <X as Differentiable<T>>::Derivative>,
UA: TensorVec<Item = <<X as Differentiable<T>>::Derivative as Differentiable<T>>::Derivative>,
UY: TensorVec<Item = Y>,
UR: TensorVec<Item = <Y as Differentiable<T>>::Derivative>,
impl<I, X, Y, UX, UV, UA, UY, UR, T> ExplicitDynamicsCoupled<X, Y, UX, UV, UA, UY, UR, T> for Iwhere
I: Stacked<T> + Explicit<TensorTuple<TensorTuple<X, <X as Differentiable<T>>::Derivative>, Y>, TensorVector<TensorTuple<TensorTuple<X, <X as Differentiable<T>>::Derivative>, Y>>, TensorVector<<TensorTuple<TensorTuple<X, <X as Differentiable<T>>::Derivative>, Y> as Differentiable<T>>::Derivative>, T>,
X: Differentiable<T> + Tensor,
<X as Differentiable<T>>::Derivative: Differentiable<T> + Tensor,
Y: Differentiable<T> + Tensor,
UX: TensorVec<Item = X>,
UV: TensorVec<Item = <X as Differentiable<T>>::Derivative>,
UA: TensorVec<Item = <<X as Differentiable<T>>::Derivative as Differentiable<T>>::Derivative>,
UY: TensorVec<Item = Y>,
UR: TensorVec<Item = <Y as Differentiable<T>>::Derivative>,
Source§fn integrate_coupled(
&self,
function: impl FnMut(Quantity<T>, &X, &<X as Differentiable<T>>::Derivative, &Y) -> Result<(<<X as Differentiable<T>>::Derivative as Differentiable<T>>::Derivative, <Y as Differentiable<T>>::Derivative), String>,
time: &[Quantity<T>],
initial_position: X,
initial_velocity: <X as Differentiable<T>>::Derivative,
initial_state: Y,
) -> Result<(TensorVector<Quantity<T>>, UX, UV, UA, UY, UR), IntegrationError>
fn integrate_coupled( &self, function: impl FnMut(Quantity<T>, &X, &<X as Differentiable<T>>::Derivative, &Y) -> Result<(<<X as Differentiable<T>>::Derivative as Differentiable<T>>::Derivative, <Y as Differentiable<T>>::Derivative), String>, time: &[Quantity<T>], initial_position: X, initial_velocity: <X as Differentiable<T>>::Derivative, initial_state: Y, ) -> Result<(TensorVector<Quantity<T>>, UX, UV, UA, UY, UR), IntegrationError>
Solves an initial value problem for dynamics coupled to a first-order state, given the
acceleration and the rate of the state as a function of time, position, velocity, and
state. Read more
Source§fn integrate_coupled_bounded(
&self,
function: impl FnMut(Quantity<T>, &X, &<X as Differentiable<T>>::Derivative, &Y) -> Result<(<<X as Differentiable<T>>::Derivative as Differentiable<T>>::Derivative, <Y as Differentiable<T>>::Derivative), String>,
bound: impl FnMut(Quantity<T>, &X, &<X as Differentiable<T>>::Derivative, &Y) -> Result<Spectrum<T>, String>,
safety: f64,
time: &[Quantity<T>],
initial_position: X,
initial_velocity: <X as Differentiable<T>>::Derivative,
initial_state: Y,
) -> Result<(TensorVector<Quantity<T>>, UX, UV, UA, UY, UR), IntegrationError>
fn integrate_coupled_bounded( &self, function: impl FnMut(Quantity<T>, &X, &<X as Differentiable<T>>::Derivative, &Y) -> Result<(<<X as Differentiable<T>>::Derivative as Differentiable<T>>::Derivative, <Y as Differentiable<T>>::Derivative), String>, bound: impl FnMut(Quantity<T>, &X, &<X as Differentiable<T>>::Derivative, &Y) -> Result<Spectrum<T>, String>, safety: f64, time: &[Quantity<T>], initial_position: X, initial_velocity: <X as Differentiable<T>>::Derivative, initial_state: Y, ) -> Result<(TensorVector<Quantity<T>>, UX, UV, UA, UY, UR), IntegrationError>
Solves an initial value problem like
integrate_coupled, subject to a
stability bound. Read more