Move integrate to separate crate
This commit is contained in:
@@ -8,3 +8,4 @@ edition = "2018"
|
||||
ndarray = "0.14.0"
|
||||
sbp = { path = "../sbp" }
|
||||
log = "0.4.8"
|
||||
integrate = { path = "../utils/integrate" }
|
||||
|
||||
@@ -9,15 +9,15 @@ const G: Float = 1.0;
|
||||
#[derive(Clone, Debug)]
|
||||
pub struct Field(Array3<Float>);
|
||||
|
||||
impl<'a> Into<ArrayView3<'a, Float>> for &'a Field {
|
||||
fn into(self) -> ArrayView3<'a, Float> {
|
||||
self.0.view()
|
||||
}
|
||||
}
|
||||
impl integrate::Integrable for Field {
|
||||
type State = Field;
|
||||
type Diff = Field;
|
||||
|
||||
impl<'a> Into<ArrayViewMut3<'a, Float>> for &'a mut Field {
|
||||
fn into(self) -> ArrayViewMut3<'a, Float> {
|
||||
self.0.view_mut()
|
||||
fn assign(s: &mut Self::State, o: &Self::State) {
|
||||
s.0.assign(&o.0);
|
||||
}
|
||||
fn scaled_add(s: &mut Self::State, o: &Self::Diff, scale: Float) {
|
||||
s.0.scaled_add(scale, &o.0);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -301,7 +301,7 @@ impl System {
|
||||
}
|
||||
log::trace!("Iteration complete");
|
||||
};
|
||||
integrate::integrate::<integrate::Rk4, _, _, _>(
|
||||
integrate::integrate::<integrate::Rk4, Field, _>(
|
||||
rhs,
|
||||
&self.fnow,
|
||||
&mut self.fnext,
|
||||
|
||||
Reference in New Issue
Block a user