Solver

Trait Solver 

Source
pub trait Solver<M> {
    type Params;

    // Required methods
    fn new(
        start_time: f64,
        tolerance: f64,
        nx: usize,
        nz: usize,
        params: Self::Params,
    ) -> Self;
    fn step(
        &mut self,
        model: &mut M,
        next_time: f64,
    ) -> Result<(f64, bool), SolverError>;
    fn reset(&mut self, model: &mut M, time: f64) -> Result<(), SolverError>;
}

Required Associated Types§

Source

type Params

Solver parameters

Required Methods§

Source

fn new( start_time: f64, tolerance: f64, nx: usize, nz: usize, params: Self::Params, ) -> Self

Create a new Solver instance.

§Arguments
  • nx - The number of continuous states.
  • nz - The number of event indicators.
Source

fn step( &mut self, model: &mut M, next_time: f64, ) -> Result<(f64, bool), SolverError>

Perform a single step of the solver.

§Arguments
  • model - The model to be simulated.
  • next_time - The time at which the simulation should stop.
§Returns

A tuple of (time_reached, state_event)

Source

fn reset(&mut self, model: &mut M, time: f64) -> Result<(), SolverError>

Reset the 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.

Implementors§