Skip to content

Commit 954ebfa

Browse files
Wesley-ArringtonButt4cak3
authored andcommitted
Adding Verlet Integration in Swift (#263)
1 parent 41bb45a commit 954ebfa

File tree

2 files changed

+72
-0
lines changed

2 files changed

+72
-0
lines changed
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
func verlet(pos: Double, acc: Double, dt: Double) -> Double {
2+
var pos = pos
3+
var temp_pos, time: Double
4+
var prev_pos = pos
5+
time = 0.0
6+
7+
while (pos > 0) {
8+
time += dt
9+
temp_pos = pos
10+
pos = pos*2 - prev_pos + acc * dt * dt
11+
prev_pos = temp_pos
12+
}
13+
14+
return time
15+
}
16+
17+
func stormerVerlet(pos: Double, acc: Double, dt: Double) -> (time: Double, vel: Double) {
18+
var pos = pos
19+
var temp_pos, time, vel: Double
20+
var prev_pos = pos
21+
vel = 0
22+
time = 0
23+
24+
while (pos > 0) {
25+
time += dt
26+
temp_pos = pos
27+
pos = pos*2 - prev_pos + acc * dt * dt
28+
prev_pos = temp_pos
29+
30+
vel += acc*dt
31+
}
32+
33+
return (time:time, vel:vel)
34+
}
35+
36+
func velocityVerlet(pos: Double, acc: Double, dt: Double) -> (time: Double, vel: Double) {
37+
var pos = pos
38+
var time, vel : Double
39+
vel = 0
40+
time = 0
41+
42+
while (pos > 0) {
43+
time += dt
44+
pos += vel*dt + 0.5*acc * dt * dt
45+
vel += acc*dt
46+
}
47+
48+
return (time:time, vel:vel)
49+
}
50+
51+
func main() {
52+
let verletTime = verlet(pos: 5.0, acc: -10.0, dt: 0.01)
53+
print("Time for Verlet integration is: \(verletTime)")
54+
55+
let stormer = stormerVerlet(pos: 5.0, acc: -10.0, dt: 0.01);
56+
print("Time for Stormer Verlet integration is: \(stormer.time)")
57+
print("Velocity for Stormer Verlet integration is: \(stormer.vel)")
58+
59+
let velVerlet = velocityVerlet(pos: 5.0, acc: -10, dt: 0.01)
60+
print("Time for velocity Verlet integration is: \(velVerlet.time)")
61+
print("Velocity for velocity Verlet integration is: \(velVerlet.vel)")
62+
}
63+
64+
main()

contents/verlet_integration/verlet_integration.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,8 @@ Unfortunately, this has not yet been implemented in LabVIEW, so here's Julia cod
5656
[import:1-16, lang:"javascript"](code/javascript/verlet.js)
5757
{% sample lang="rs" %}
5858
[import:1-13, lang:"rust"](code/rust/verlet.rs)
59+
{% sample lang="swift" %}
60+
[import:1-15, lang:"swift"](code/swift/verlet.swift)
5961
{% endmethod %}
6062

6163

@@ -102,6 +104,8 @@ Unfortunately, this has not yet been implemented in LabVIEW, so here's Julia cod
102104
[import:18-35, lang:"javascript"](code/javascript/verlet.js)
103105
{% sample lang="rs" %}
104106
[import:15-27, lang:"rust"](code/rust/verlet.rs)
107+
{% sample lang="swift" %}
108+
[import:17-34, lang:"swift"](code/swift/verlet.swift)
105109
{% endmethod %}
106110

107111

@@ -159,6 +163,8 @@ Unfortunately, this has not yet been implemented in LabVIEW, so here's Julia cod
159163
[import:37-50, lang:"javascript"](code/javascript/verlet.js)
160164
{% sample lang="rs" %}
161165
[import:29-40, lang:"rust"](code/rust/verlet.rs)
166+
{% sample lang="swift" %}
167+
[import:36-49, lang:"swift"](code/swift/verlet.swift)
162168
{% endmethod %}
163169

164170

@@ -198,6 +204,8 @@ Submitted by P. Mekhail
198204
[import, lang:"javascript"](code/javascript/verlet.js)
199205
{% sample lang="rs" %}
200206
[import, lang:"rust"](code/rust/verlet.rs)
207+
{% sample lang="swift" %}
208+
[import, lang:"swift"](code/swift/verlet.swift)
201209
{% endmethod %}
202210

203211

0 commit comments

Comments
 (0)