Skip to main content

FreeInterpolant

Trait FreeInterpolant 

Source
pub trait FreeInterpolant<Y, U, V, T = Time>
where Self: VariableStepExplicit<Y, U, V, T>, Y: Differentiable<T> + Div<Quantity<T>, Output = Derivative<Y, 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>>,
{ // Provided method fn interpolate_free( time: &Times<T>, tp: &Times<T>, yp: &U, dydtp: &V, ) -> (U, V) { ... } }
Expand description

Free (dense-output) interpolant for explicit ordinary differential equation integrators.

Uses cubic Hermite interpolation over the accepted-step values and derivatives already computed during integration, so it requires no additional evaluations of the right-hand side function.

Provided Methods§

Source

fn interpolate_free(time: &Times<T>, tp: &Times<T>, yp: &U, dydtp: &V) -> (U, V)

The state, via HermiteSegment built pointwise over Flat<Y> — the state is a flat vector space, so this is the same cubic Hermite as before, just built once instead of duplicated here.

Dyn Compatibility§

This trait is not dyn compatible.

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

Implementors§

Source§

impl<Y, U, V, T> FreeInterpolant<Y, U, V, T> for BogackiShampine
where Y: Differentiable<T> + Div<Quantity<T>, Output = Derivative<Y, 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>>,