add option to compute error at end of run
This commit is contained in:
		@@ -278,9 +278,13 @@ struct Options {
 | 
				
			|||||||
    /// Print the time to complete, taken in the compute loop
 | 
					    /// Print the time to complete, taken in the compute loop
 | 
				
			||||||
    #[structopt(long)]
 | 
					    #[structopt(long)]
 | 
				
			||||||
    timings: bool,
 | 
					    timings: bool,
 | 
				
			||||||
 | 
					    /// Print error at the end of the run
 | 
				
			||||||
 | 
					    #[structopt(long)]
 | 
				
			||||||
 | 
					    error: bool,
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
fn main() {
 | 
					fn main() {
 | 
				
			||||||
 | 
					    type SBP = operators::Upwind4;
 | 
				
			||||||
    let opt = Options::from_args();
 | 
					    let opt = Options::from_args();
 | 
				
			||||||
    let filecontents = std::fs::read_to_string(&opt.json).unwrap();
 | 
					    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 integration_time: Float = json["integration_time"].as_number().unwrap().into();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    let mut sys = System::<sbp::operators::Upwind4>::new(grids, bt);
 | 
					    let mut sys = System::<SBP>::new(grids, bt);
 | 
				
			||||||
    sys.vortex(0.0, vortexparams);
 | 
					    sys.vortex(0.0, vortexparams);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    let max_n = {
 | 
					    let max_n = {
 | 
				
			||||||
@@ -379,6 +383,16 @@ fn main() {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    output.add_timestep(ntime, &sys.fnow);
 | 
					    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::<SBP>(&fvort);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        println!("Total error: {:e}", e);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
fn progressbar(dummy: bool, ntime: u64) -> indicatif::ProgressBar {
 | 
					fn progressbar(dummy: bool, ntime: u64) -> indicatif::ProgressBar {
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user