pub trait Explicit<Y, U, V, T = Time>where
Self: OdeIntegrator<Y, U>,
Y: Differentiable<T> + Tensor,
U: TensorVec<Item = Y>,
V: TensorVec<Item = Derivative<Y, T>>,{
const SLOPES: usize;
// Required methods
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_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>;
}Expand description
Explicit integrators for ordinary differential equations.
Required Associated Constants§
Required Methods§
Sourcefn 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.
\frac{dy}{dt} = f(t, y),\quad y(t_0) = y_0Sourcefn integrate_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_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>
Solves an initial value problem like integrate, subject to a stability bound.
At each step, bound reports the fastest time scale of the right-hand side at the current state, and where its eigenvalues lie in the complex plane. The stability limit is that time scale times the extent of the method’s stability region along the reported direction. The time step may use at most the fraction safety of that limit, where safety is in $(0, 1]$. A fixed time step above it is an error, and an adaptive time step is reduced to it.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".