From 60f9a89e658e075466284a95631e9789a26e07f7 Mon Sep 17 00:00:00 2001 From: Magnus Ulimoen Date: Wed, 8 Apr 2020 20:19:50 +0200 Subject: [PATCH] add option to compute error at end of run --- sbp/examples/multigrid/bin.rs | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/sbp/examples/multigrid/bin.rs b/sbp/examples/multigrid/bin.rs index 89fb437..b2b5cf1 100644 --- a/sbp/examples/multigrid/bin.rs +++ b/sbp/examples/multigrid/bin.rs @@ -278,9 +278,13 @@ struct Options { /// Print the time to complete, taken in the compute loop #[structopt(long)] timings: bool, + /// Print error at the end of the run + #[structopt(long)] + error: bool, } fn main() { + type SBP = operators::Upwind4; let opt = Options::from_args(); let filecontents = std::fs::read_to_string(&opt.json).unwrap(); @@ -316,7 +320,7 @@ fn main() { let integration_time: Float = json["integration_time"].as_number().unwrap().into(); - let mut sys = System::::new(grids, bt); + let mut sys = System::::new(grids, bt); sys.vortex(0.0, vortexparams); let max_n = { @@ -379,6 +383,16 @@ fn main() { } output.add_timestep(ntime, &sys.fnow); + if opt.error { + let time = ntime as f64 * dt; + let mut e = 0.0; + for (fmod, grid) in sys.fnow.iter().zip(&sys.grids) { + let mut fvort = fmod.clone(); + fvort.vortex(grid.x(), grid.y(), time, vortexparams); + e += fmod.h2_err::(&fvort); + } + println!("Total error: {:e}", e); + } } fn progressbar(dummy: bool, ntime: u64) -> indicatif::ProgressBar {