Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Interpolation

Often you will want to get the solution at a specific time \(t_o\), which is probably different to the internal timesteps chosen by the solver. To do this, you can use the step method to first step the solver forward in time until you are just beyond \(t_o\), and then use the interpolate method to get the solution at \(t_o\).

use crate::{T, V};
use diffsol::{OdeEquations, OdeSolverMethod};

pub fn solve_interpolate<'a, Solver, Eqn>(solver: &mut Solver)
where
    Solver: OdeSolverMethod<'a, Eqn>,
    Eqn: OdeEquations<V = V, T = T> + 'a,
{
    let t_o = 10.0;
    while solver.state().t < t_o {
        solver.step().unwrap();
    }
    let _soln = solver.interpolate(t_o).unwrap();
}