Skip to content

Commit d5d8c48

Browse files
committed
Adjust C code for Verlet according to #257
1 parent f9f7977 commit d5d8c48

File tree

2 files changed

+35
-31
lines changed

2 files changed

+35
-31
lines changed

contents/verlet_integration/code/c/verlet.c

Lines changed: 32 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,55 +1,60 @@
11
#include <stdio.h>
22

3-
void verlet(double pos, double acc, double dt) {
4-
double prev_pos, temp_pos, time;
3+
void verlet(double *time, double pos, double acc, double dt) {
4+
double prev_pos, temp_pos;
55
prev_pos = pos;
6-
time = 0;
6+
*time = 0.0;
77

88
while (pos > 0) {
9-
time += dt;
9+
(*time) += dt;
1010
temp_pos = pos;
1111
pos = pos * 2 - prev_pos + acc * dt * dt;
1212
prev_pos = temp_pos;
1313
}
14-
15-
printf("%f\n", time);
1614
}
1715

18-
void stormer_verlet(double pos, double acc, double dt) {
19-
double prev_pos, temp_pos, time, vel;
16+
void stormer_verlet(double *time, double *vel, double pos, double acc, double dt) {
17+
double prev_pos, temp_pos;
2018
prev_pos = pos;
21-
vel = 0;
22-
time = 0;
19+
*vel = 0.0;
20+
*time = 0.0;
21+
2322
while (pos > 0) {
24-
time += dt;
23+
(*time) += dt;
2524
temp_pos = pos;
2625
pos = pos * 2 - prev_pos + acc * dt * dt;
2726
prev_pos = temp_pos;
2827

29-
vel += acc * dt;
28+
(*vel) += acc * dt;
3029
}
31-
32-
printf("%f\n", time);
3330
}
3431

35-
void velocity_verlet(double pos, double acc, double dt) {
36-
double time, vel;
37-
vel = 0;
38-
time = 0;
32+
void velocity_verlet(double *time, double *vel, double pos, double acc, double dt) {
33+
*vel = 0.0;
34+
*time = 0.0;
35+
3936
while (pos > 0) {
40-
time += dt;
41-
pos += vel * dt + 0.5 * acc * dt * dt;
42-
vel += acc * dt;
37+
(*time) += dt;
38+
pos += (*vel) * dt + 0.5 * acc * dt * dt;
39+
(*vel) += acc * dt;
4340
}
44-
45-
printf("%f\n", time);
4641
}
4742

4843
int main() {
49-
verlet(5.0, -10, 0.01);
50-
stormer_verlet(5.0, -10, 0.01);
51-
velocity_verlet(5.0, -10, 0.01);
44+
double time_v;
45+
double time_sv, vel_sv;
46+
double time_vv, vel_vv;
47+
48+
verlet(&time_v, 5.0, -10, 0.01);
49+
stormer_verlet(&time_sv, &vel_sv, 5.0, -10, 0.01);
50+
velocity_verlet(&time_vv, &vel_vv, 5.0, -10, 0.01);
51+
52+
printf("Time for Verlet integration is: %lf\n",
53+
time_v);
54+
printf("Time and velocity for Stormer Verlet integration is: %lf, %lf\n",
55+
time_sv, vel_sv);
56+
printf("Time and velocity for velocity Verlet integration is: %lf, %lf\n",
57+
time_vv, vel_vv);
5258

5359
return 0;
5460
}
55-

contents/verlet_integration/verlet_integration.md

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ Here is what it looks like in code:
3535
{% sample lang="cpp" %}
3636
[import:4-17, lang:"c_cpp"](code/c++/verlet.cpp)
3737
{% sample lang="c" %}
38-
[import:3-16, lang:"c_cpp"](code/c/verlet.c)
38+
[import:3-14, lang:"c_cpp"](code/c/verlet.c)
3939
{% sample lang="java" %}
4040
[import:2-18, lang:"java"](code/java/verlet.java)
4141
{% sample lang="py" %}
@@ -81,7 +81,7 @@ Here's what it looks like in code:
8181
{% sample lang="cpp" %}
8282
[import:20-36, lang:"c_cpp"](code/c++/verlet.cpp)
8383
{% sample lang="c" %}
84-
[import:18-33, lang:"c_cpp"](code/c/verlet.c)
84+
[import:16-30, lang:"c_cpp"](code/c/verlet.c)
8585
{% sample lang="java" %}
8686
[import:21-40, lang:"java"](code/java/verlet.java)
8787
{% sample lang="py" %}
@@ -138,7 +138,7 @@ Here is the velocity Verlet method in code:
138138
{% sample lang="cpp" %}
139139
[import:38-49, lang:"c_cpp"](code/c++/verlet.cpp)
140140
{% sample lang="c" %}
141-
[import:35-46, lang:"c_cpp"](code/c/verlet.c)
141+
[import:32-41, lang:"c_cpp"](code/c/verlet.c)
142142
{% sample lang="java" %}
143143
[import:43-57, lang:"java"](code/java/verlet.java)
144144
{% sample lang="py" %}
@@ -223,4 +223,3 @@ $$
223223
\newcommand{\bfomega}{\boldsymbol{\omega}}
224224
\newcommand{\bftau}{\boldsymbol{\tau}}
225225
$$
226-

0 commit comments

Comments
 (0)