pub struct Verner8FixedStep { /* private fields */ }Expand description
Trait Implementations§
Source§impl<Y, U, V, T> Explicit<Y, U, V, T> for Verner8where
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 Verner8where
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 = 12
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 Verner8where
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 Verner8where
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 Verner8
Source§impl<T> Stacked<T> for Verner8FixedStep
impl<T> Stacked<T> for Verner8FixedStep
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 Verner8
impl RefUnwindSafe for Verner8
impl Send for Verner8
impl Sync for Verner8
impl Unpin for Verner8
impl UnsafeUnpin for Verner8
impl UnwindSafe for Verner8
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