separate metrics and grid
This commit is contained in:
		@@ -14,12 +14,13 @@ struct System<T: operators::UpwindOperator> {
 | 
			
		||||
        euler::Field,
 | 
			
		||||
    )>,
 | 
			
		||||
    k: [Vec<euler::Field>; 4],
 | 
			
		||||
    grids: Vec<grid::Grid<T>>,
 | 
			
		||||
    grids: Vec<grid::Grid>,
 | 
			
		||||
    metrics: Vec<grid::Metrics<T>>,
 | 
			
		||||
    bt: Vec<euler::BoundaryCharacteristics>,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
impl<T: operators::UpwindOperator> System<T> {
 | 
			
		||||
    fn new(grids: Vec<grid::Grid<T>>, bt: Vec<euler::BoundaryCharacteristics>) -> Self {
 | 
			
		||||
    fn new(grids: Vec<grid::Grid>, bt: Vec<euler::BoundaryCharacteristics>) -> Self {
 | 
			
		||||
        let fnow = grids
 | 
			
		||||
            .iter()
 | 
			
		||||
            .map(|g| euler::Field::new(g.ny(), g.nx()))
 | 
			
		||||
@@ -33,6 +34,7 @@ impl<T: operators::UpwindOperator> System<T> {
 | 
			
		||||
            })
 | 
			
		||||
            .collect();
 | 
			
		||||
        let k = [fnow.clone(), fnow.clone(), fnow.clone(), fnow.clone()];
 | 
			
		||||
        let metrics = grids.iter().map(|g| g.metrics().unwrap()).collect();
 | 
			
		||||
 | 
			
		||||
        Self {
 | 
			
		||||
            fnow,
 | 
			
		||||
@@ -40,6 +42,7 @@ impl<T: operators::UpwindOperator> System<T> {
 | 
			
		||||
            k,
 | 
			
		||||
            wb,
 | 
			
		||||
            grids,
 | 
			
		||||
            metrics,
 | 
			
		||||
            bt,
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
@@ -142,14 +145,14 @@ impl<T: operators::UpwindOperator> System<T> {
 | 
			
		||||
                })
 | 
			
		||||
                .collect::<Vec<_>>();
 | 
			
		||||
 | 
			
		||||
            for ((((prev, fut), grid), wb), bt) in fields
 | 
			
		||||
            for ((((prev, fut), metrics), wb), bt) in fields
 | 
			
		||||
                .iter()
 | 
			
		||||
                .zip(fnext)
 | 
			
		||||
                .zip(&self.grids)
 | 
			
		||||
                .zip(&self.metrics)
 | 
			
		||||
                .zip(&mut self.wb)
 | 
			
		||||
                .zip(bt)
 | 
			
		||||
            {
 | 
			
		||||
                euler::RHS_upwind(fut, prev, grid, &bt, wb)
 | 
			
		||||
                euler::RHS_upwind(fut, prev, metrics, &bt, wb)
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
@@ -257,14 +260,14 @@ impl<T: operators::UpwindOperator> System<T> {
 | 
			
		||||
                        },
 | 
			
		||||
                    })
 | 
			
		||||
                    .collect::<Vec<_>>();
 | 
			
		||||
                for ((((prev, fut), grid), wb), bt) in fields
 | 
			
		||||
                for ((((prev, fut), metrics), wb), bt) in fields
 | 
			
		||||
                    .iter()
 | 
			
		||||
                    .zip(&mut self.k[i])
 | 
			
		||||
                    .zip(&self.grids)
 | 
			
		||||
                    .zip(&self.metrics)
 | 
			
		||||
                    .zip(&mut self.wb)
 | 
			
		||||
                    .zip(bt)
 | 
			
		||||
                {
 | 
			
		||||
                    s.spawn(move |_| euler::RHS_upwind(fut, prev, grid, &bt, wb));
 | 
			
		||||
                    s.spawn(move |_| euler::RHS_upwind(fut, prev, metrics, &bt, wb));
 | 
			
		||||
                }
 | 
			
		||||
            });
 | 
			
		||||
        }
 | 
			
		||||
@@ -307,15 +310,13 @@ fn main() {
 | 
			
		||||
            west: determine_bc(grid.dirw.as_ref()),
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
    let mut grids: Vec<grid::Grid<operators::Upwind4>> = Vec::with_capacity(jgrids.len());
 | 
			
		||||
    for grid in jgrids {
 | 
			
		||||
        grids.push(grid::Grid::new(grid.x, grid.y).unwrap());
 | 
			
		||||
    }
 | 
			
		||||
    let grids = jgrids.into_iter().map(|egrid| egrid.grid).collect();
 | 
			
		||||
 | 
			
		||||
    let integration_time: f64 = json["integration_time"].as_number().unwrap().into();
 | 
			
		||||
 | 
			
		||||
    let vortexparams = utils::json_to_vortex(json["vortex"].clone());
 | 
			
		||||
 | 
			
		||||
    let mut sys = System::new(grids, bt);
 | 
			
		||||
    let mut sys = System::<sbp::operators::Upwind4>::new(grids, bt);
 | 
			
		||||
    sys.vortex(0.0, vortexparams);
 | 
			
		||||
 | 
			
		||||
    let max_n = {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user