Skip to content

Commit 471fd95

Browse files
authored
Merge pull request #290 from CDsigma/javaVerlet
Implementation Edit to Verlet Integration in Java
2 parents 8b49852 + 9447fbe commit 471fd95

File tree

3 files changed

+84
-70
lines changed

3 files changed

+84
-70
lines changed
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
// Submitted by lolatomroflsinnlos
2+
public class VerletValues {
3+
public double time;
4+
public double vel;
5+
6+
public VerletValues(double time, double vel) {
7+
this.time = time;
8+
this.vel = vel;
9+
}
10+
}
11+
12+
public class Verlet {
13+
static double verlet(double pos, double acc, double dt) {
14+
15+
// Note that we are using a temp variable for the previous position
16+
double prev_pos, temp_pos, time;
17+
prev_pos = pos;
18+
time = 0;
19+
20+
while (pos > 0) {
21+
time += dt;
22+
temp_pos = pos;
23+
pos = pos*2 - prev_pos + acc * dt * dt;
24+
prev_pos = temp_pos;
25+
}
26+
27+
return time;
28+
}
29+
30+
static VerletValues stormer_verlet(double pos, double acc, double dt) {
31+
32+
// Note that we are using a temp variable for the previous position
33+
double prev_pos, temp_pos, time, vel;
34+
prev_pos = pos;
35+
vel = 0;
36+
time = 0;
37+
while (pos > 0) {
38+
time += dt;
39+
temp_pos = pos;
40+
pos = pos*2 - prev_pos + acc * dt * dt;
41+
prev_pos = temp_pos;
42+
43+
// The acceleration is constant, so the velocity is straightforward
44+
vel += acc*dt;
45+
}
46+
47+
VerletValues stormerVerlet = new VerletValues(time, vel);
48+
return stormerVerlet;
49+
}
50+
51+
static VerletValues velocity_verlet(double pos, double acc, double dt) {
52+
53+
// Note that we are using a temp variable for the previous position
54+
double time, vel;
55+
vel = 0;
56+
time = 0;
57+
while (pos > 0) {
58+
time += dt;
59+
pos += vel*dt + 0.5*acc * dt * dt;
60+
vel += acc*dt;
61+
}
62+
63+
VerletValues velocityVerlet = new VerletValues(time, vel);
64+
return velocityVerlet;
65+
}
66+
67+
public static void main(String[] args) {
68+
69+
double verletTime = verlet(5.0, -10, 0.01);
70+
System.out.println("Time for Verlet integration is: " + verletTime);
71+
72+
VerletValues stormerVerlet = stormer_verlet(5.0, -10, 0.01);
73+
System.out.println("Time for Stormer Verlet integration is: " + stormerVerlet.time);
74+
System.out.println("Velocity for Stormer Verlet integration is: " + stormerVerlet.vel);
75+
76+
VerletValues velocityVerlet = velocity_verlet(5.0, -10, 0.01);
77+
System.out.println("Time for velocity Verlet integration is: " + velocityVerlet.time);
78+
System.out.println("Velocity for velocity Verlet integration is: " + velocityVerlet.vel);
79+
}
80+
}

contents/verlet_integration/code/java/verlet.java

Lines changed: 0 additions & 66 deletions
This file was deleted.

contents/verlet_integration/verlet_integration.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ Here is what it looks like in code:
3737
{% sample lang="c" %}
3838
[import:3-14, lang:"c_cpp"](code/c/verlet.c)
3939
{% sample lang="java" %}
40-
[import:2-18, lang:"java"](code/java/verlet.java)
40+
[import:13-28, lang:"java"](code/java/Verlet.java)
4141
{% sample lang="py" %}
4242
[import:1-9, lang:"python"](code/python/verlet.py)
4343
{% sample lang="hs" %}
@@ -82,7 +82,7 @@ However, the error for this is $$\mathcal{O}(\Delta t)$$, which is quite poor, b
8282
{% sample lang="c" %}
8383
[import:16-31, lang:"c_cpp"](code/c/verlet.c)
8484
{% sample lang="java" %}
85-
[import:21-40, lang:"java"](code/java/verlet.java)
85+
[import:30-49, lang:"java"](code/java/Verlet.java)
8686
{% sample lang="py" %}
8787
[import:11-21, lang:"python"](code/python/verlet.py)
8888
{% sample lang="hs" %}
@@ -141,7 +141,7 @@ Here is the velocity Verlet method in code:
141141
{% sample lang="c" %}
142142
[import:33-43, lang:"c_cpp"](code/c/verlet.c)
143143
{% sample lang="java" %}
144-
[import:43-57, lang:"java"](code/java/verlet.java)
144+
[import:51-65, lang:"java"](code/java/Verlet.java)
145145
{% sample lang="py" %}
146146
[import:23-32, lang:"python"](code/python/verlet.py)
147147
{% sample lang="hs" %}
@@ -178,7 +178,7 @@ Both of these methods work simply by iterating timestep-by-timestep and can be w
178178
{% sample lang="c" %}
179179
[import, lang:"c_cpp"](code/c/verlet.c)
180180
{% sample lang="java" %}
181-
[import, lang:"java"](code/java/verlet.java)
181+
[import, lang:"java"](code/java/Verlet.java)
182182
{% sample lang="py" %}
183183
[import, lang:"python"](code/python/verlet.py)
184184
{% sample lang="hs" %}

0 commit comments

Comments
 (0)