diff --git a/euler/src/lib.rs b/euler/src/lib.rs index 13e605b..ee44f82 100644 --- a/euler/src/lib.rs +++ b/euler/src/lib.rs @@ -57,7 +57,7 @@ impl System { let boundaries = boundary_extractor(y, grid, &bc); RHS_trad(op, k, y, metrics, &boundaries, wb) }; - integrate::integrate::( + integrate::integrate::( rhs_trad, &self.sys.0, &mut self.sys.1, @@ -131,7 +131,7 @@ impl System { let boundaries = boundary_extractor(y, grid, &bc); RHS_upwind(op, k, y, metrics, &boundaries, wb) }; - integrate::integrate::( + integrate::integrate::( rhs_upwind, &self.sys.0, &mut self.sys.1, @@ -159,7 +159,7 @@ impl System { let mut time = 0.0; let mut sys2 = self.sys.0.clone(); while time < dt { - integrate::integrate_embedded_rk::( + integrate::integrate_embedded_rk::( &mut rhs_upwind, &self.sys.0, &mut self.sys.1, diff --git a/maxwell/src/lib.rs b/maxwell/src/lib.rs index ba2f46d..3d43c5f 100644 --- a/maxwell/src/lib.rs +++ b/maxwell/src/lib.rs @@ -147,7 +147,7 @@ impl System { RHS(op, fut, prev, grid, metrics, wb); }; let mut _time = 0.0; - integrate::integrate::( + integrate::integrate::( rhs_adaptor, &self.sys.0, &mut self.sys.1, @@ -170,7 +170,7 @@ impl System { ); // sprs::lingalg::dsolve(..) }; - sbp::integrate::integrate::( + sbp::integrate::integrate::( rhs_f, &self.sys.0, &mut self.sys.1, @@ -207,7 +207,7 @@ impl System { RHS_upwind(op, fut, prev, grid, metrics, wb); }; let mut _time = 0.0; - integrate::integrate::( + integrate::integrate::( rhs_adaptor, &self.sys.0, &mut self.sys.1, diff --git a/multigrid/src/main.rs b/multigrid/src/main.rs index 0b8b512..f24ddca 100644 --- a/multigrid/src/main.rs +++ b/multigrid/src/main.rs @@ -115,7 +115,7 @@ impl System { .iter_mut() .map(|k| k.as_mut_slice()) .collect::>(); - sbp::integrate::integrate_multigrid::( + sbp::integrate::integrate_multigrid::( rhs, &self.fnow, &mut self.fnext, diff --git a/sbp/src/integrate.rs b/sbp/src/integrate.rs index 2256340..0a14f00 100644 --- a/sbp/src/integrate.rs +++ b/sbp/src/integrate.rs @@ -1,5 +1,5 @@ use super::Float; -use ndarray::{ArrayView3, ArrayViewMut3}; +use ndarray::{ArrayView, ArrayViewMut}; pub trait ButcherTableau { const S: usize = Self::B.len(); @@ -137,7 +137,7 @@ impl EmbeddedButcherTableau for BogackiShampine { } #[allow(clippy::too_many_arguments)] -pub fn integrate( +pub fn integrate( mut rhs: RHS, prev: &F, fut: &mut F, @@ -145,8 +145,9 @@ pub fn integrate( dt: Float, k: &mut [F], ) where - for<'r> &'r F: std::convert::Into>, - for<'r> &'r mut F: std::convert::Into>, + for<'r> &'r F: std::convert::Into>, + for<'r> &'r mut F: std::convert::Into>, + D: ndarray::Dimension, RHS: FnMut(&mut F, &F, Float), { assert_eq!(prev.into().shape(), fut.into().shape()); @@ -190,7 +191,7 @@ pub fn integrate( } #[allow(clippy::too_many_arguments)] -pub fn integrate_embedded_rk( +pub fn integrate_embedded_rk( rhs: RHS, prev: &F, fut: &mut F, @@ -199,11 +200,12 @@ pub fn integrate_embedded_rk( dt: Float, k: &mut [F], ) where - for<'r> &'r F: std::convert::Into>, - for<'r> &'r mut F: std::convert::Into>, + for<'r> &'r F: std::convert::Into>, + for<'r> &'r mut F: std::convert::Into>, RHS: FnMut(&mut F, &F, Float), + D: ndarray::Dimension, { - integrate::(rhs, prev, fut, time, dt, k); + integrate::(rhs, prev, fut, time, dt, k); fut2.into().assign(&prev.into()); for (&b, k) in BTableau::BSTAR.iter().zip(k.iter()) { if b == 0.0 { @@ -215,7 +217,7 @@ pub fn integrate_embedded_rk( #[cfg(feature = "rayon")] #[allow(clippy::too_many_arguments)] -pub fn integrate_multigrid( +pub fn integrate_multigrid( mut rhs: RHS, prev: &[F], fut: &mut [F], @@ -225,10 +227,11 @@ pub fn integrate_multigrid( pool: &rayon::ThreadPool, ) where - for<'r> &'r F: std::convert::Into>, - for<'r> &'r mut F: std::convert::Into>, + for<'r> &'r F: std::convert::Into>, + for<'r> &'r mut F: std::convert::Into>, RHS: FnMut(&mut [F], &[F], Float), F: Send + Sync, + D: ndarray::Dimension, { for i in 0.. { let simtime; diff --git a/shallow_water/src/lib.rs b/shallow_water/src/lib.rs index 46f02f8..3b6a91f 100644 --- a/shallow_water/src/lib.rs +++ b/shallow_water/src/lib.rs @@ -298,7 +298,7 @@ impl System { } log::trace!("Iteration complete"); }; - integrate::integrate::( + integrate::integrate::( rhs, &self.fnow, &mut self.fnext,