use crate::numerical::matrix::Matrix;
use crate::physics::physics_sm;
#[unsafe(no_mangle)]
pub extern "C" fn rssn_physics_sm_simulate_1d_advection() -> *mut Matrix<f64> {
let results = physics_sm::simulate_1d_advection_diffusion_scenario();
let n = results.len();
Box::into_raw(Box::new(Matrix::new(1, n, results)))
}
#[unsafe(no_mangle)]
pub extern "C" fn rssn_physics_sm_simulate_2d_advection() -> *mut Matrix<f64> {
let results = physics_sm::simulate_2d_advection_diffusion_scenario();
let n = results.len();
let dim: usize = ((n as f64).sqrt() as i64).try_into().unwrap_or(0);
if dim * dim == n {
Box::into_raw(Box::new(Matrix::new(dim, dim, results)))
} else {
Box::into_raw(Box::new(Matrix::new(1, n, results)))
}
}