eom 0.11.0

Configurable ODE/PDE solver
Documentation
use ndarray::*;
use num_complex::Complex64 as c64;
use num_traits::Zero;

use eom::*;

fn main() {
    let dt = 1e-5;
    let eom = ode::GoyShell::default();
    let mut teo = semi_implicit::DiagRK4::new(eom, dt);
    let mut x0 = arr1(&vec![c64::zero(); 27]);
    x0[2] = c64::new(1.0, 0.0);
    x0[3] = c64::new(1.0, 0.0);
    x0[4] = c64::new(1.0, 0.0);
    x0[5] = c64::new(1.0, 0.0);
    x0[6] = c64::new(1.0, 0.0);
    let ts = adaptor::time_series(x0, &mut teo);
    let end_time = 10_000_000;
    let interval = 100;
    print!("time");
    for i in 0..27 {
        print!(",r{},c{}", i, i);
    }
    println!();
    for (t, v) in ts.take(end_time).enumerate() {
        if t % interval != 0 {
            continue;
        }
        print!("{:e}", dt * t as f64);
        for c in v.iter() {
            print!(",{:e},{:e}", c.re, c.im);
        }
        println!();
    }
}