pub trait ExplicitDaeVariableStepExplicit<Y, Z, U, V, W, T = Time>where
Self: VariableStepExplicit<Y, U, W, T>,
Y: Differentiate<T> + Tensor,
Z: PartialEq + Tensor,
Derivative<Y, T>: Mul<Quantity<T>, Output = Y>,
U: TensorVec<Item = Y>,
V: TensorVec<Item = Z>,
W: TensorVec<Item = Derivative<Y, T>>,
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>,{
// Required method
fn slopes_solve(
evolution: impl FnMut(Quantity<T>, &Y, &Z) -> Result<Derivative<Y, T>, String>,
solution: impl FnMut(Quantity<T>, &Y, &Z) -> Result<Z, String>,
y: &Y,
z: &Z,
t: Quantity<T>,
dt: Quantity<T>,
k: &mut [Derivative<Y, T>],
y_trial: &mut Y,
z_trial: &mut Z,
) -> Result<(), String>;
// Provided methods
fn integrate_explicit_dae_variable_step(
&self,
evolution: impl FnMut(Quantity<T>, &Y, &Z) -> Result<Derivative<Y, T>, String>,
solution: impl FnMut(Quantity<T>, &Y, &Z) -> Result<Z, String>,
time: &[Quantity<T>],
initial_condition: (Y, Z),
) -> Result<(Times<T>, U, W, V), IntegrationError> { ... }
fn interpolate_explicit_dae_variable_step(
&self,
evolution: impl FnMut(Quantity<T>, &Y, &Z) -> Result<Derivative<Y, T>, String>,
solution: impl FnMut(Quantity<T>, &Y, &Z) -> Result<Z, String>,
time: &Times<T>,
tp: &Times<T>,
yp: &U,
_dydtp: &W,
_k_sol: &[W],
zp: &V,
) -> Result<(U, W, V), IntegrationError> { ... }
fn slopes_solve_and_error(
&self,
evolution: impl FnMut(Quantity<T>, &Y, &Z) -> Result<Derivative<Y, T>, String>,
solution: impl FnMut(Quantity<T>, &Y, &Z) -> Result<Z, String>,
y: &Y,
z: &Z,
t: Quantity<T>,
dt: Quantity<T>,
k: &mut [Derivative<Y, T>],
y_trial: &mut Y,
z_trial: &mut Z,
) -> Result<Scalar, String> { ... }
fn step_solve(
&self,
evolution: impl FnMut(Quantity<T>, &Y, &Z) -> Result<Derivative<Y, T>, String>,
y: &mut Y,
z: &mut Z,
t: &mut Quantity<T>,
y_sol: &mut U,
z_sol: &mut V,
t_sol: &mut Times<T>,
dydt_sol: &mut W,
k_sol: &mut Vec<W>,
dt: &mut Quantity<T>,
k: &mut [Derivative<Y, T>],
y_trial: &Y,
z_trial: &Z,
e: Scalar,
) -> Result<(), String> { ... }
}Expand description
Variable-step explicit integrators for explicit differential-algebraic equations.
Required Methods§
fn slopes_solve( evolution: impl FnMut(Quantity<T>, &Y, &Z) -> Result<Derivative<Y, T>, String>, solution: impl FnMut(Quantity<T>, &Y, &Z) -> Result<Z, String>, y: &Y, z: &Z, t: Quantity<T>, dt: Quantity<T>, k: &mut [Derivative<Y, T>], y_trial: &mut Y, z_trial: &mut Z, ) -> Result<(), String>
Provided Methods§
fn integrate_explicit_dae_variable_step( &self, evolution: impl FnMut(Quantity<T>, &Y, &Z) -> Result<Derivative<Y, T>, String>, solution: impl FnMut(Quantity<T>, &Y, &Z) -> Result<Z, String>, time: &[Quantity<T>], initial_condition: (Y, Z), ) -> Result<(Times<T>, U, W, V), IntegrationError>
fn interpolate_explicit_dae_variable_step( &self, evolution: impl FnMut(Quantity<T>, &Y, &Z) -> Result<Derivative<Y, T>, String>, solution: impl FnMut(Quantity<T>, &Y, &Z) -> Result<Z, String>, time: &Times<T>, tp: &Times<T>, yp: &U, _dydtp: &W, _k_sol: &[W], zp: &V, ) -> Result<(U, W, V), IntegrationError>
fn slopes_solve_and_error( &self, evolution: impl FnMut(Quantity<T>, &Y, &Z) -> Result<Derivative<Y, T>, String>, solution: impl FnMut(Quantity<T>, &Y, &Z) -> Result<Z, String>, y: &Y, z: &Z, t: Quantity<T>, dt: Quantity<T>, k: &mut [Derivative<Y, T>], y_trial: &mut Y, z_trial: &mut Z, ) -> Result<Scalar, String>
fn step_solve( &self, evolution: impl FnMut(Quantity<T>, &Y, &Z) -> Result<Derivative<Y, T>, String>, y: &mut Y, z: &mut Z, t: &mut Quantity<T>, y_sol: &mut U, z_sol: &mut V, t_sol: &mut Times<T>, dydt_sol: &mut W, k_sol: &mut Vec<W>, dt: &mut Quantity<T>, k: &mut [Derivative<Y, T>], y_trial: &Y, z_trial: &Z, e: Scalar, ) -> Result<(), String>
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".