allow several vortices
This commit is contained in:
		@@ -70,9 +70,9 @@ impl System {
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    fn vortex(&mut self, t: Float, vortex_params: euler::VortexParameters) {
 | 
			
		||||
    fn vortex(&mut self, t: Float, vortex_params: &euler::VortexParameters) {
 | 
			
		||||
        for (f, g) in self.fnow.iter_mut().zip(&self.grids) {
 | 
			
		||||
            f.vortex(g.x(), g.y(), t, vortex_params);
 | 
			
		||||
            f.vortex(g.x(), g.y(), t, &vortex_params);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -161,12 +161,12 @@ fn main() {
 | 
			
		||||
    let json = json::parse(&filecontents).unwrap();
 | 
			
		||||
 | 
			
		||||
    let vortexparams = json_to_vortex(json["vortex"].clone());
 | 
			
		||||
    let (names, grids, bt, operators) = json_to_grids(json["grids"].clone(), vortexparams);
 | 
			
		||||
    let (names, grids, bt, operators) = json_to_grids(json["grids"].clone(), vortexparams.clone());
 | 
			
		||||
 | 
			
		||||
    let integration_time: Float = json["integration_time"].as_number().unwrap().into();
 | 
			
		||||
 | 
			
		||||
    let mut sys = System::new(grids, bt, operators);
 | 
			
		||||
    sys.vortex(0.0, vortexparams);
 | 
			
		||||
    sys.vortex(0.0, &vortexparams);
 | 
			
		||||
 | 
			
		||||
    let max_n = {
 | 
			
		||||
        let max_nx = sys.grids.iter().map(|g| g.nx()).max().unwrap();
 | 
			
		||||
@@ -233,7 +233,7 @@ fn main() {
 | 
			
		||||
        let mut e = 0.0;
 | 
			
		||||
        for ((fmod, grid), op) in sys.fnow.iter().zip(&sys.grids).zip(&sys.operators) {
 | 
			
		||||
            let mut fvort = fmod.clone();
 | 
			
		||||
            fvort.vortex(grid.x(), grid.y(), time, vortexparams);
 | 
			
		||||
            fvort.vortex(grid.x(), grid.y(), time, &vortexparams);
 | 
			
		||||
            let sbpop: &dyn SbpOperator2d = op.as_ref().either(|op| &**op, |uo| uo.as_sbp());
 | 
			
		||||
            e += fmod.h2_err(&fvort, sbpop);
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
@@ -110,7 +110,7 @@ pub fn json_to_grids(
 | 
			
		||||
    let determine_bc = |dir: Option<&str>| match dir {
 | 
			
		||||
        Some(dir) => {
 | 
			
		||||
            if dir == "vortex" {
 | 
			
		||||
                sbp::euler::BoundaryCharacteristic::Vortex(vortexparams)
 | 
			
		||||
                sbp::euler::BoundaryCharacteristic::Vortex(vortexparams.clone())
 | 
			
		||||
            } else if let Some(grid) = dir.strip_prefix("interpolate:") {
 | 
			
		||||
                use sbp::operators::*;
 | 
			
		||||
                let (grid, int_op) = if let Some(rest) = grid.strip_prefix("4:") {
 | 
			
		||||
@@ -363,11 +363,13 @@ pub fn json_to_vortex(mut json: JsonValue) -> super::euler::VortexParameters {
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    super::euler::VortexParameters {
 | 
			
		||||
        x0,
 | 
			
		||||
        y0,
 | 
			
		||||
        mach,
 | 
			
		||||
        rstar,
 | 
			
		||||
        eps,
 | 
			
		||||
    }
 | 
			
		||||
    let vortice = super::euler::Vortice { x0, y0, eps, rstar };
 | 
			
		||||
 | 
			
		||||
    let vortices = {
 | 
			
		||||
        let mut a = super::euler::ArrayVec::new();
 | 
			
		||||
        a.push(vortice);
 | 
			
		||||
        a
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    super::euler::VortexParameters { vortices, mach }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user