Struct DefaultSolout

Source
pub struct DefaultSolout {}
Expand description

The default output handler that returns solution values at each solver step.

§Overview

DefaultSolout is the simplest output handler that captures the solution at each internal step calculated by the solver. It doesn’t perform any interpolation or filtering - it simply records the exact points that the solver naturally computes during integration.

§Features

  • Captures all solver steps in the output
  • No interpolation overhead
  • Gives the raw, unmodified solver trajectory

§Example

use differential_equations::prelude::*;
use differential_equations::solout::DefaultSolout;
use nalgebra::{Vector1, vector};

// Simple exponential growth
struct ExponentialGrowth;

impl ODE<f64, Vector1<f64>> for ExponentialGrowth {
    fn diff(&self, _t: f64, y: &Vector1<f64>, dydt: &mut Vector1<f64>) {
        dydt[0] = y[0]; // dy/dt = y
    }
}

// Create the system and solver
let system = ExponentialGrowth;
let t0 = 0.0;
let tf = 2.0;
let y0 = vector![1.0];
let mut solver = DOP853::new().rtol(1e-6).atol(1e-8);

// Use the default output handler explicitly
let mut default_output = DefaultSolout::new();

// Solve with default output
let problem = ODEProblem::new(system, t0, tf, y0);
let solution = problem.solout(&mut default_output).solve(&mut solver).unwrap();

// Note: This is equivalent to the default behavior
let solution2 = problem.solve(&mut solver).unwrap();

§Output Characteristics

The output will contain only the actual steps computed by the solver, which may not be evenly spaced in time. The spacing depends on the solver’s adaptive step size control.

For evenly spaced output points, consider using EvenSolout instead.

Implementations§

Source§

impl DefaultSolout

Source

pub fn new() -> Self

Creates a new DefaultSolout instance.

This is the simplest output handler that captures solution values at each step naturally taken by the solver.

§Returns
  • A new DefaultSolout instance

Trait Implementations§

Source§

impl Default for DefaultSolout

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl<T, V, D> Solout<T, V, D> for DefaultSolout
where T: Real, V: State<T>, D: CallBackData,

Source§

fn solout<I>( &mut self, t_curr: T, _t_prev: T, y_curr: &V, _y_prev: &V, _interpolator: &mut I, solution: &mut Solution<T, V, D>, ) -> ControlFlag<T, V, D>
where I: Interpolation<T, V>,

Solout function to choose which points to output during the solving process. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<SS, SP> SupersetOf<SS> for SP
where SS: SubsetOf<SP>,

Source§

fn to_subset(&self) -> Option<SS>

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more
Source§

fn is_in_subset(&self) -> bool

Checks if self is actually part of its subset T (and can be converted to it).
Source§

fn to_subset_unchecked(&self) -> SS

Use with care! Same as self.to_subset but without any property checks. Always succeeds.
Source§

fn from_subset(element: &SS) -> SP

The inclusion map: converts self to the equivalent element of its superset.
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.