pub trait AdamsSolver<N: ComplexField, S: DimName, O: DimName>: Sized{
// Required methods
fn predictor_coefficients() -> VectorN<N::RealField, O>;
fn corrector_coefficients() -> VectorN<N::RealField, O>;
fn error_coefficient() -> N::RealField;
fn solve_ivp<T: Clone, F: FnMut(N::RealField, &[N], &mut T) -> Result<VectorN<N, S>, String>>(
self,
f: F,
params: &mut T,
) -> Result<Vec<(N::RealField, VectorN<N, S>)>, String>;
fn with_tolerance(self, tol: N::RealField) -> Result<Self, String>;
fn with_dt_max(self, max: N::RealField) -> Result<Self, String>;
fn with_dt_min(self, min: N::RealField) -> Result<Self, String>;
fn with_start(self, t_initial: N::RealField) -> Result<Self, String>;
fn with_end(self, t_final: N::RealField) -> Result<Self, String>;
fn with_initial_conditions(self, start: &[N]) -> Result<Self, String>;
fn build(self) -> Self;
}Expand description
This trait allows a struct to be used in the Adams Predictor-Corrector solver
Things implementing AdamsSolver should have an AdamsInfo to handle the actual IVP solving.
§Examples
See struct Adams for an example of implementing this trait
Required Methods§
Sourcefn predictor_coefficients() -> VectorN<N::RealField, O>
fn predictor_coefficients() -> VectorN<N::RealField, O>
The polynomial interpolation coefficients for the predictor. Should start with the coefficient for n - 1
Sourcefn corrector_coefficients() -> VectorN<N::RealField, O>
fn corrector_coefficients() -> VectorN<N::RealField, O>
The polynomial interpolation coefficients for the corrector. Must be the same length as predictor_coefficients. Should start with the implicit coefficient.
Sourcefn error_coefficient() -> N::RealField
fn error_coefficient() -> N::RealField
Coefficient for multiplying error by.
Sourcefn solve_ivp<T: Clone, F: FnMut(N::RealField, &[N], &mut T) -> Result<VectorN<N, S>, String>>(
self,
f: F,
params: &mut T,
) -> Result<Vec<(N::RealField, VectorN<N, S>)>, String>
fn solve_ivp<T: Clone, F: FnMut(N::RealField, &[N], &mut T) -> Result<VectorN<N, S>, String>>( self, f: F, params: &mut T, ) -> Result<Vec<(N::RealField, VectorN<N, S>)>, String>
Use AdamsInfo to solve an initial value problem
Sourcefn with_tolerance(self, tol: N::RealField) -> Result<Self, String>
fn with_tolerance(self, tol: N::RealField) -> Result<Self, String>
Set the error tolerance for this solver.
Sourcefn with_dt_max(self, max: N::RealField) -> Result<Self, String>
fn with_dt_max(self, max: N::RealField) -> Result<Self, String>
Set the maximum time step for this solver.
Sourcefn with_dt_min(self, min: N::RealField) -> Result<Self, String>
fn with_dt_min(self, min: N::RealField) -> Result<Self, String>
Set the minimum time step for this solver.
Sourcefn with_start(self, t_initial: N::RealField) -> Result<Self, String>
fn with_start(self, t_initial: N::RealField) -> Result<Self, String>
Set the initial time for this solver.
Sourcefn with_end(self, t_final: N::RealField) -> Result<Self, String>
fn with_end(self, t_final: N::RealField) -> Result<Self, String>
Set the end time for this solver.
Sourcefn with_initial_conditions(self, start: &[N]) -> Result<Self, String>
fn with_initial_conditions(self, start: &[N]) -> Result<Self, String>
Set the initial conditions for this solver.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.