Skip to main content

DefaultSolout

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;

// Simple exponential growth
struct ExponentialGrowth;

impl ODE for ExponentialGrowth {
    fn diff(&self, _t: f64, y: &f64, dydt: &mut f64) {
        *dydt = *y; // dy/dt = y
    }
}

// Create the system and solver
let system = ExponentialGrowth;
let t0 = 0.0;
let tf = 2.0;
let y0 = 1.0;
let solver = ExplicitRungeKutta::dop853().rtol(1e-6).atol(1e-8);

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

// Solve with default output
let solution = IVP::ode(&system, t0, tf, y0)
    .solout(default_output)
    .method(solver)
    .solve()
    .unwrap();

// Note: This is equivalent to the default behavior
let solution2 = IVP::ode(&system, t0, tf, y0)
    .method(ExplicitRungeKutta::dop853().rtol(1e-6).atol(1e-8))
    .solve()
    .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 Clone for DefaultSolout

Source§

fn clone(&self) -> DefaultSolout

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for DefaultSolout

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for DefaultSolout

Source§

fn default() -> Self

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

impl<T, Y> Solout<T, Y> for DefaultSolout
where T: Real, Y: State<T>,

Source§

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

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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<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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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.