Skip to content

Commit a5ecdd9

Browse files
committed
Adjust Rust code for Verlet according to #257
1 parent f9f7977 commit a5ecdd9

File tree

1 file changed

+18
-9
lines changed
  • contents/verlet_integration/code/rust

1 file changed

+18
-9
lines changed
Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
fn verlet(mut pos: f64, acc: f64, dt: f64) {
1+
fn verlet(mut pos: f64, acc: f64, dt: f64) -> f64 {
22
let mut prev_pos = pos;
33
let mut time = 0.0;
44

@@ -9,24 +9,29 @@ fn verlet(mut pos: f64, acc: f64, dt: f64) {
99
prev_pos = temp_pos;
1010
}
1111

12-
println!("{}", time);
12+
time
1313
}
1414

15-
fn stormer_verlet(mut pos: f64, acc: f64, dt: f64) {
15+
fn stormer_verlet(mut pos: f64, acc: f64, dt: f64) -> (f64, f64) {
1616
let mut prev_pos = pos;
1717
let mut time = 0.0;
18+
let mut vel = 0.0;
1819

1920
while pos > 0.0 {
2021
time += dt;
2122
let temp_pos = pos;
2223
pos = pos * 2.0 - prev_pos + acc * dt * dt;
2324
prev_pos = temp_pos;
25+
26+
// Because acceleration is constant, velocity is
27+
// straightforward
28+
vel += acc * dt;
2429
}
2530

26-
println!("{}", time);
31+
(time, vel)
2732
}
2833

29-
fn velocity_verlet(mut pos: f64, acc: f64, dt: f64) {
34+
fn velocity_verlet(mut pos: f64, acc: f64, dt: f64) -> (f64, f64) {
3035
let mut time = 0.0;
3136
let mut vel = 0.0;
3237

@@ -36,11 +41,15 @@ fn velocity_verlet(mut pos: f64, acc: f64, dt: f64) {
3641
vel += acc * dt;
3742
}
3843

39-
println!("{}", time);
44+
(time, vel)
4045
}
4146

4247
fn main() {
43-
verlet(5.0, -10.0, 0.01);
44-
stormer_verlet(5.0, -10.0, 0.01);
45-
velocity_verlet(5.0, -10.0, 0.01);
48+
let time_v = verlet(5.0, -10.0, 0.01);
49+
let (time_sv, vel_sv) = stormer_verlet(5.0, -10.0, 0.01);
50+
let (time_vv, vel_vv) = velocity_verlet(5.0, -10.0, 0.01);
51+
52+
println!("Time for original Verlet integration: {}", time_v);
53+
println!("Time and velocity for Stormer Verlet integration: {}, {}", time_sv, vel_sv);
54+
println!("Time and velocity for velocity Verlet integration: {}, {}", time_vv, vel_vv);
4655
}

0 commit comments

Comments
 (0)