From 35c4b25be3a4f7236b25b1bdb3399db3e154f071 Mon Sep 17 00:00:00 2001 From: Magnus Ulimoen Date: Wed, 22 Apr 2020 22:22:19 +0200 Subject: [PATCH] move boundary extraction into parallel section --- multigrid/src/main.rs | 25 +++++++++++++++---------- sbp/src/euler.rs | 2 +- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/multigrid/src/main.rs b/multigrid/src/main.rs index eecb2ab..0553c53 100644 --- a/multigrid/src/main.rs +++ b/multigrid/src/main.rs @@ -81,26 +81,31 @@ impl System { let grids = &self.grids; let bt = &self.bt; let wb = &mut self.wb; - let mut eb = &mut self.eb; + let eb = &mut self.eb; let operators = &self.operators; let rhs = move |fut: &mut [euler::Field], prev: &[euler::Field], time: Float| { - let bc = euler::extract_boundaries(prev, &bt, &mut eb, &grids, time); + let prev_all = &prev; pool.scope(|s| { - for (((((fut, prev), bc), wb), metrics), op) in fut + for (((((((fut, prev), wb), grid), metrics), op), bt), eb) in fut .iter_mut() .zip(prev.iter()) - .zip(bc) .zip(wb.iter_mut()) + .zip(grids) .zip(metrics.iter()) .zip(operators.iter()) + .zip(bt.iter()) + .zip(eb.iter_mut()) { - s.spawn(move |_| match op.as_ref() { - Left(sbp) => { - euler::RHS_trad(&**sbp, fut, prev, metrics, &bc, &mut wb.0); - } - Right(uo) => { - euler::RHS_upwind(&**uo, fut, prev, metrics, &bc, &mut wb.0); + s.spawn(move |_| { + let bc = euler::boundary_extracts(prev_all, bt, prev, grid, eb, time); + match op.as_ref() { + Left(sbp) => { + euler::RHS_trad(&**sbp, fut, prev, metrics, &bc, &mut wb.0); + } + Right(uo) => { + euler::RHS_upwind(&**uo, fut, prev, metrics, &bc, &mut wb.0); + } } }) } diff --git a/sbp/src/euler.rs b/sbp/src/euler.rs index 3905088..f28e25b 100644 --- a/sbp/src/euler.rs +++ b/sbp/src/euler.rs @@ -694,7 +694,7 @@ fn boundary_extractor<'a>( } } -pub fn boundary_extract<'a>( +fn boundary_extract<'a>( fields: &'a [Field], bc: &BoundaryCharacteristic, field: &'a Field,