pub trait AdamsSolver<N, const S: usize, const O: usize>: Sizedwhere
    N: ComplexField,{
    // Required methods
    fn predictor_coefficients() -> SVector<N::RealField, O>;
    fn corrector_coefficients() -> SVector<N::RealField, O>;
    fn error_coefficient() -> N::RealField;
    fn solve_ivp<T, F>(
        self,
        f: F,
        params: &mut T
    ) -> Result<Vec<(N::RealField, SVector<N, S>)>, String>
       where T: Clone,
             F: FnMut(N::RealField, &[N], &mut T) -> Result<SVector<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§

source

fn predictor_coefficients() -> SVector<N::RealField, O>

The polynomial interpolation coefficients for the predictor. Should start with the coefficient for n - 1

source

fn corrector_coefficients() -> SVector<N::RealField, O>

The polynomial interpolation coefficients for the corrector. Must be the same length as predictor_coefficients. Should start with the implicit coefficient.

source

fn error_coefficient() -> N::RealField

Coefficient for multiplying error by.

source

fn solve_ivp<T, F>( self, f: F, params: &mut T ) -> Result<Vec<(N::RealField, SVector<N, S>)>, String>where T: Clone, F: FnMut(N::RealField, &[N], &mut T) -> Result<SVector<N, S>, String>,

Use AdamsInfo to solve an initial value problem

source

fn with_tolerance(self, tol: N::RealField) -> Result<Self, String>

Set the error tolerance for this solver.

source

fn with_dt_max(self, max: N::RealField) -> Result<Self, String>

Set the maximum time step for this solver.

source

fn with_dt_min(self, min: N::RealField) -> Result<Self, String>

Set the minimum time step for this solver.

source

fn with_start(self, t_initial: N::RealField) -> Result<Self, String>

Set the initial time for this solver.

source

fn with_end(self, t_final: N::RealField) -> Result<Self, String>

Set the end time for this solver.

source

fn with_initial_conditions(self, start: &[N]) -> Result<Self, String>

Set the initial conditions for this solver.

source

fn build(self) -> Self

Build this solver.

Implementors§

source§

impl<N, const S: usize> AdamsSolver<N, S, 3> for Adams2<N, S>where N: ComplexField + FromPrimitive + Copy, <N as ComplexField>::RealField: FromPrimitive + Copy,

source§

impl<N, const S: usize> AdamsSolver<N, S, 5> for Adams<N, S>where N: ComplexField + FromPrimitive + Copy, <N as ComplexField>::RealField: FromPrimitive + Copy,