1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12

use ndarray::{RcArray, Dimension};

/// calculate right hand side (rhs) of equation of motion from current state
pub trait EOM<D: Dimension> {
    fn rhs(&self, RcArray<f64, D>) -> RcArray<f64, D>;
}

/// calculate next step by integrating the equation of motion
pub trait TimeEvolution<D: Dimension> {
    fn iterate(&self, RcArray<f64, D>) -> RcArray<f64, D>;
}