Construct blazing-fast, optimized ODE systems and evolve them using Symbolica and Sundials.
Construct and evolve the Brusselator system:
use symbolica::{evaluate::FunctionMap, parse};
use symbolica_ode::{ARKodeSolver, ODESystem};
fn main() {
let fu = parse!("1 - (w + 1)*u + v*u^2");
let fv = parse!("w*u - v*u^2");
let fw = parse!("100*(3.4 - w) - u*w");
let system = vec![fu.clone(), fv.clone(), fw.clone()];
let params = vec![parse!("u"), parse!("v"), parse!("w")];
let function_map = FunctionMap::new();
let ode_system =
ODESystem::new(system, params, function_map).expect("Failed to create ODE system");
let mut ark_solver = ARKodeSolver::new(ode_system, &[1.2, 3.1, 3.0], 0.0)
.expect("Failed to create ARKode solver");
let res = ark_solver.evolve(10.0, 0.1);
println!("Final state at t=10.0: {:?}", res);
}