blob: 2d7175873690b161b7d94547ad2b06e314709841 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
use crate::{algebra::Scalar, particle_system::ParticleSystem};
use super::{PhaseSpace, Solver};
impl Solver for ParticleSystem {
fn step(&mut self, dt: Scalar) {
let mut state = self.collect_phase_space();
// Shift to the midpoint
self.scatter_phase_space(&PhaseSpace {
0: state.0.clone() + self.compute_derivative().0 * dt / 2.0,
});
state.0 += self.compute_derivative().0 * dt;
self.scatter_phase_space(&state);
self.t += dt;
}
}
|