Skip to content

Commit 1b5f58e

Browse files
tarunvellijiegillet
authored andcommitted
Verlet integration in ruby (#482)
* vervlet integration in ruby * file name fix
1 parent 874662a commit 1b5f58e

File tree

2 files changed

+58
-0
lines changed

2 files changed

+58
-0
lines changed
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
def verlet(pos, acc, dt)
2+
3+
prev_pos = pos
4+
time = 0
5+
while pos > 0 do
6+
time += dt
7+
temp_pos = pos
8+
pos = pos*2 - prev_pos + acc * dt * dt
9+
prev_pos = temp_pos
10+
end
11+
12+
return time
13+
14+
end
15+
16+
def stormer_verlet(pos, acc, dt)
17+
18+
prev_pos = pos
19+
vel = 0
20+
time = 0
21+
while pos > 0 do
22+
time += dt
23+
temp_pos = pos
24+
pos = pos*2 - prev_pos + acc * dt * dt
25+
prev_pos = temp_pos
26+
27+
vel += acc*dt
28+
end
29+
30+
return time
31+
32+
end
33+
34+
def velocity_verlet(pos, acc, dt)
35+
36+
vel = 0
37+
time = 0
38+
while pos > 0 do
39+
time += dt
40+
pos += vel*dt + 0.5*acc * dt * dt
41+
vel += acc*dt
42+
end
43+
44+
return time
45+
46+
end
47+
48+
p verlet(5.0, -10, 0.01)
49+
p stormer_verlet(5.0, -10, 0.01)
50+
p velocity_verlet(5.0, -10, 0.01)

contents/verlet_integration/verlet_integration.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,8 @@ Unfortunately, this has not yet been implemented in LabVIEW, so here's Julia cod
5959
[import:1-15, lang:"swift"](code/swift/verlet.swift)
6060
{% sample lang="f90" %}
6161
[import:1-20, lang:"fortran"](code/fortran/verlet.f90)
62+
{% sample lang="ruby" %}
63+
[import:1-14, lang="ruby"](code/ruby/verlet.rb)
6264
{% sample lang="go" %}
6365
[import:5-16, lang:"go"](code/golang/verlet.go)
6466
{% endmethod %}
@@ -107,6 +109,8 @@ Unfortunately, this has not yet been implemented in LabVIEW, so here's Julia cod
107109
[import:17-34, lang:"swift"](code/swift/verlet.swift)
108110
{% sample lang="f90" %}
109111
[import:22-42, lang:"fortran"](code/fortran/verlet.f90)
112+
{% sample lang="ruby" %}
113+
[import:16-32, lang="ruby"](code/ruby/verlet.rb)
110114
{% sample lang="go" %}
111115
[import:18-30, lang:"go"](code/golang/verlet.go)
112116
{% endmethod %}
@@ -169,6 +173,8 @@ Unfortunately, this has not yet been implemented in LabVIEW, so here's Julia cod
169173
[import:36-49, lang:"swift"](code/swift/verlet.swift)
170174
{% sample lang="f90" %}
171175
[import:44-60, lang:"fortran"](code/fortran/verlet.f90)
176+
{% sample lang="ruby" %}
177+
[import:34-46, lang="ruby"](code/ruby/verlet.rb)
172178
{% sample lang="go" %}
173179
[import:32-42, lang:"go"](code/golang/verlet.go)
174180
{% endmethod %}
@@ -213,6 +219,8 @@ Submitted by P. Mekhail
213219
[import, lang:"swift"](code/swift/verlet.swift)
214220
{% sample lang="f90" %}
215221
[import, lang:"fortran"](code/fortran/verlet.f90)
222+
{% sample lang="ruby" %}
223+
[import, lang="ruby"](code/ruby/verlet.rb)
216224
{% sample lang="go" %}
217225
[import, lang:"go"](code/golang/verlet.go)
218226
{% endmethod %}

0 commit comments

Comments
 (0)