diff --git a/contents/verlet_integration/code/c/verlet.c b/contents/verlet_integration/code/c/verlet.c index 352e566f1..c56a3cc5b 100644 --- a/contents/verlet_integration/code/c/verlet.c +++ b/contents/verlet_integration/code/c/verlet.c @@ -1,55 +1,61 @@ #include -void verlet(double pos, double acc, double dt) { - double prev_pos, temp_pos, time; +void verlet(double *time, double pos, double acc, double dt) { + double prev_pos, temp_pos; prev_pos = pos; - time = 0; + *time = 0.0; while (pos > 0) { - time += dt; + *time += dt; temp_pos = pos; pos = pos * 2 - prev_pos + acc * dt * dt; prev_pos = temp_pos; } - - printf("%f\n", time); } -void stormer_verlet(double pos, double acc, double dt) { - double prev_pos, temp_pos, time, vel; +void stormer_verlet(double *time, double *vel, + double pos, double acc, double dt) { + double prev_pos, temp_pos; prev_pos = pos; - vel = 0; - time = 0; + *vel = 0.0; + *time = 0.0; + while (pos > 0) { - time += dt; + *time += dt; temp_pos = pos; pos = pos * 2 - prev_pos + acc * dt * dt; prev_pos = temp_pos; - vel += acc * dt; + *vel += acc * dt; } - - printf("%f\n", time); } -void velocity_verlet(double pos, double acc, double dt) { - double time, vel; - vel = 0; - time = 0; +void velocity_verlet(double *time, double *vel, + double pos, double acc, double dt) { + *vel = 0.0; + *time = 0.0; + while (pos > 0) { - time += dt; - pos += vel * dt + 0.5 * acc * dt * dt; - vel += acc * dt; + *time += dt; + pos += (*vel) * dt + 0.5 * acc * dt * dt; + *vel += acc * dt; } - - printf("%f\n", time); } int main() { - verlet(5.0, -10, 0.01); - stormer_verlet(5.0, -10, 0.01); - velocity_verlet(5.0, -10, 0.01); + double time, vel; + + verlet(&time, 5.0, -10, 0.01); + printf("Time for Verlet integration is: %lf\n", + time); + + stormer_verlet(&time, &vel, 5.0, -10, 0.01); + printf("Time and velocity for Stormer Verlet integration is: %lf, %lf\n", + time, vel); + + velocity_verlet(&time, &vel, 5.0, -10, 0.01); + printf("Time and velocity for velocity Verlet integration is: %lf, %lf\n", + time, vel); return 0; } - diff --git a/contents/verlet_integration/verlet_integration.md b/contents/verlet_integration/verlet_integration.md index f84f24964..8abdb1a08 100644 --- a/contents/verlet_integration/verlet_integration.md +++ b/contents/verlet_integration/verlet_integration.md @@ -35,7 +35,7 @@ Here is what it looks like in code: {% sample lang="cpp" %} [import:4-17, lang:"c_cpp"](code/c++/verlet.cpp) {% sample lang="c" %} -[import:3-16, lang:"c_cpp"](code/c/verlet.c) +[import:3-14, lang:"c_cpp"](code/c/verlet.c) {% sample lang="java" %} [import:2-18, lang:"java"](code/java/verlet.java) {% sample lang="py" %} @@ -81,7 +81,7 @@ Here's what it looks like in code: {% sample lang="cpp" %} [import:20-36, lang:"c_cpp"](code/c++/verlet.cpp) {% sample lang="c" %} -[import:18-33, lang:"c_cpp"](code/c/verlet.c) +[import:16-31, lang:"c_cpp"](code/c/verlet.c) {% sample lang="java" %} [import:21-40, lang:"java"](code/java/verlet.java) {% sample lang="py" %} @@ -138,7 +138,7 @@ Here is the velocity Verlet method in code: {% sample lang="cpp" %} [import:38-49, lang:"c_cpp"](code/c++/verlet.cpp) {% sample lang="c" %} -[import:35-46, lang:"c_cpp"](code/c/verlet.c) +[import:33-43, lang:"c_cpp"](code/c/verlet.c) {% sample lang="java" %} [import:43-57, lang:"java"](code/java/verlet.java) {% sample lang="py" %} @@ -223,4 +223,3 @@ $$ \newcommand{\bfomega}{\boldsymbol{\omega}} \newcommand{\bftau}{\boldsymbol{\tau}} $$ -