Introduce Diff type for euler
This commit is contained in:
		@@ -12,7 +12,7 @@ struct System {
 | 
			
		||||
    fnow: Vec<euler::Field>,
 | 
			
		||||
    fnext: Vec<euler::Field>,
 | 
			
		||||
    wb: Vec<euler::WorkBuffers>,
 | 
			
		||||
    k: [Vec<euler::Field>; 4],
 | 
			
		||||
    k: [Vec<euler::Diff>; 4],
 | 
			
		||||
    grids: Vec<grid::Grid>,
 | 
			
		||||
    metrics: Vec<grid::Metrics>,
 | 
			
		||||
    bt: Vec<euler::BoundaryCharacteristics>,
 | 
			
		||||
@@ -26,7 +26,7 @@ pub(crate) static MULTITHREAD: AtomicBool = AtomicBool::new(false);
 | 
			
		||||
 | 
			
		||||
impl integrate::Integrable for System {
 | 
			
		||||
    type State = Vec<euler::Field>;
 | 
			
		||||
    type Diff = Vec<euler::Field>;
 | 
			
		||||
    type Diff = Vec<euler::Diff>;
 | 
			
		||||
    fn assign(s: &mut Self::State, o: &Self::State) {
 | 
			
		||||
        if MULTITHREAD.load(Ordering::Acquire) {
 | 
			
		||||
            s.par_iter_mut()
 | 
			
		||||
@@ -66,7 +66,11 @@ impl System {
 | 
			
		||||
            .iter()
 | 
			
		||||
            .map(|g| euler::WorkBuffers::new(g.ny(), g.nx()))
 | 
			
		||||
            .collect();
 | 
			
		||||
        let k = [fnow.clone(), fnow.clone(), fnow.clone(), fnow.clone()];
 | 
			
		||||
        let k = grids
 | 
			
		||||
            .iter()
 | 
			
		||||
            .map(|g| euler::Diff::zeros((g.ny(), g.nx())))
 | 
			
		||||
            .collect::<Vec<_>>();
 | 
			
		||||
        let k = [k.clone(), k.clone(), k.clone(), k];
 | 
			
		||||
        let metrics = grids
 | 
			
		||||
            .iter()
 | 
			
		||||
            .zip(&operators)
 | 
			
		||||
@@ -107,7 +111,7 @@ impl System {
 | 
			
		||||
        let eb = &mut self.eb;
 | 
			
		||||
        let operators = &self.operators;
 | 
			
		||||
 | 
			
		||||
        let rhs = move |fut: &mut Vec<euler::Field>, prev: &Vec<euler::Field>, time: Float| {
 | 
			
		||||
        let rhs = move |fut: &mut Vec<euler::Diff>, prev: &Vec<euler::Field>, time: Float| {
 | 
			
		||||
            let prev_all = &prev;
 | 
			
		||||
            if MULTITHREAD.load(Ordering::Acquire) {
 | 
			
		||||
                rayon::scope(|s| {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user