Skip to content

Commit

Permalink
Rename into TimeEvolutionBufferedBase and new TimeEvolutionBuffered
Browse files Browse the repository at this point in the history
trait
  • Loading branch information
termoshtt committed Jul 26, 2017
1 parent 516d0cf commit 9916d38
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 3 deletions.
3 changes: 1 addition & 2 deletions src/explicit.rs
Original file line number Diff line number Diff line change
Expand Up @@ -164,15 +164,14 @@ impl<A, D> RK4Buffer<A, D>
}
}

impl<A, S, D, F> TimeEvolutionBuffered<S, D, RK4Buffer<A, D>> for RK4<F, F::Time>
impl<A, S, D, F> TimeEvolutionBufferedBase<S, D, RK4Buffer<A, D>> for RK4<F, F::Time>
where A: Scalar,
S: DataMut<Elem = A>,
D: Dimension,
F: Explicit<S, D, Time = A::Real, Scalar = A>
{
type Scalar = F::Scalar;


fn iterate_buf<'a>(&self,
mut x: &'a mut ArrayBase<S, D>,
mut buf: &mut RK4Buffer<A, D>)
Expand Down
11 changes: 10 additions & 1 deletion src/traits.rs
Original file line number Diff line number Diff line change
Expand Up @@ -55,11 +55,20 @@ pub trait TimeEvolution<A, D>
}

/// Time-evolution operator with buffer
pub trait TimeEvolutionBuffered<S, D, Buffer>: ModelSize<D> + TimeStep
pub trait TimeEvolutionBufferedBase<S, D, Buffer>: ModelSize<D> + TimeStep
where S: DataMut,
D: Dimension
{
type Scalar: Scalar;
/// calculate next step
fn iterate_buf<'a>(&self, &'a mut ArrayBase<S, D>, &mut Buffer) -> &'a mut ArrayBase<S, D>;
}

pub trait TimeEvolutionBuffered<A, D, Buffer>
: TimeEvolutionBufferedBase<OwnedRepr<A>, D, Buffer, Scalar = A, Time = A::Real>
+ TimeEvolutionBufferedBase<OwnedRcRepr<A>, D, Buffer, Scalar = A, Time = A::Real>
+ for<'a> TimeEvolutionBufferedBase<ViewRepr<&'a mut A>, D, Buffer, Scalar = A, Time = A::Real>
where A: Scalar,
D: Dimension
{
}

0 comments on commit 9916d38

Please sign in to comment.