Move integrate to separate crate
This commit is contained in:
		@@ -1,11 +1,24 @@
 | 
			
		||||
use integrate::{integrate, Rk4};
 | 
			
		||||
use ndarray::{Array1, ArrayView1};
 | 
			
		||||
use plotters::prelude::*;
 | 
			
		||||
use sbp::{
 | 
			
		||||
    integrate::{integrate, Rk4},
 | 
			
		||||
    operators::{SbpOperator1d, SbpOperator1d2, SBP4},
 | 
			
		||||
    Float,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
struct Field(Array1<Float>);
 | 
			
		||||
 | 
			
		||||
impl integrate::Integrable for Field {
 | 
			
		||||
    type State = Array1<Float>;
 | 
			
		||||
    type Diff = Array1<Float>;
 | 
			
		||||
    fn assign(s: &mut Self::State, o: &Self::State) {
 | 
			
		||||
        s.assign(o)
 | 
			
		||||
    }
 | 
			
		||||
    fn scaled_add(s: &mut Self::State, o: &Self::Diff, scale: Float) {
 | 
			
		||||
        s.scaled_add(scale, o)
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
fn main() {
 | 
			
		||||
    let nx: usize = 101;
 | 
			
		||||
    let x = Array1::from_shape_fn((nx,), |i| i as Float / (nx - 1) as Float);
 | 
			
		||||
@@ -76,7 +89,7 @@ fn dual_dirichlet(v: ArrayView1<Float>, v0: Float, vn: Float) {
 | 
			
		||||
                .unwrap();
 | 
			
		||||
            drawing_area.present().unwrap();
 | 
			
		||||
        }
 | 
			
		||||
        integrate::<Rk4, _, _, _>(rhs, &v1, &mut v2, &mut 0.0, dt, &mut k);
 | 
			
		||||
        integrate::<Rk4, Field, _>(rhs, &v1, &mut v2, &mut 0.0, dt, &mut k);
 | 
			
		||||
        std::mem::swap(&mut v1, &mut v2);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -143,7 +156,7 @@ fn neumann_dirichlet(v: ArrayView1<Float>, v0: Float, vn: Float) {
 | 
			
		||||
                .unwrap();
 | 
			
		||||
            drawing_area.present().unwrap();
 | 
			
		||||
        }
 | 
			
		||||
        integrate::<Rk4, _, _, _>(rhs, &v1, &mut v2, &mut 0.0, dt, &mut k);
 | 
			
		||||
        integrate::<Rk4, Field, _>(rhs, &v1, &mut v2, &mut 0.0, dt, &mut k);
 | 
			
		||||
        std::mem::swap(&mut v1, &mut v2);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -231,7 +244,7 @@ fn dual_dirichlet_sparse(v: ArrayView1<Float>, v0: Float, vn: Float) {
 | 
			
		||||
                .unwrap();
 | 
			
		||||
            drawing_area.present().unwrap();
 | 
			
		||||
        }
 | 
			
		||||
        integrate::<Rk4, _, _, _>(rhs, &v1, &mut v2, &mut 0.0, dt, &mut k);
 | 
			
		||||
        integrate::<Rk4, Field, _>(rhs, &v1, &mut v2, &mut 0.0, dt, &mut k);
 | 
			
		||||
        std::mem::swap(&mut v1, &mut v2);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user