Skip to content

Commit f392367

Browse files
committed
Fix time dependence
1 parent fc41626 commit f392367

File tree

1 file changed

+8
-18
lines changed

1 file changed

+8
-18
lines changed

lib/OrdinaryDiffEqSymplecticRK/src/symplectic_perform_step.jl

Lines changed: 8 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -209,13 +209,11 @@ end
209209
du = duprev + dt * half * kduprev
210210

211211
# update position
212-
tnew = t + half * dt
213-
ku = f.f2(du, uprev, p, tnew)
212+
ku = f.f2(du, uprev, p, t + half * dt)
214213
u = uprev + dt * ku
215214

216215
# update velocity
217-
tnew = tnew + half * dt
218-
kdu = f.f1(du, u, p, tnew)
216+
kdu = f.f1(du, u, p, t + dt)
219217
du = du + dt * half * kdu
220218

221219
OrdinaryDiffEqCore.increment_nf!(integrator.stats, 1)
@@ -234,13 +232,11 @@ end
234232
@.. broadcast=false du=duprev + dt * half * kduprev
235233

236234
# update position
237-
tnew = t + half * dt
238-
f.f2(ku, du, uprev, p, tnew)
235+
f.f2(ku, du, uprev, p, t + half * dt)
239236
@.. broadcast=false u=uprev + dt * ku
240237

241238
# update velocity
242-
tnew = tnew + half * dt
243-
f.f1(kdu, du, u, p, tnew)
239+
f.f1(kdu, du, u, p, t + dt)
244240
@.. broadcast=false du=du + dt * half * kdu
245241

246242
OrdinaryDiffEqCore.increment_nf!(integrator.stats, 1)
@@ -263,16 +259,13 @@ end
263259
kdu = f.f1(duprev, uprev, p, t)
264260
du = duprev + dt * half * kdu
265261

266-
# full step
267-
tnew = t + half * dt
268-
269262
# update velocity (add to previous full step velocity)
270263
# note that this extra step is only necessary if f1 depends on v/du (or t)
271-
kdu = f.f1(du, u, p, tnew)
264+
kdu = f.f1(du, u, p, t + half * dt)
272265
du = duprev + dt * kdu
273266

274267
# update position (add to half step position)
275-
ku = f.f2(du, u, p, tnew)
268+
ku = f.f2(du, u, p, t + dt)
276269
u = u + dt * half * ku
277270

278271
OrdinaryDiffEqCore.increment_nf!(integrator.stats, 2)
@@ -296,16 +289,13 @@ end
296289
f.f1(kdu, duprev, uprev, p, t)
297290
@.. broadcast=false du=duprev + dt * half * kdu
298291

299-
# full step
300-
tnew = t + half * dt
301-
302292
# update velocity (add to previous full step velocity)
303293
# note that this extra step is only necessary if f1 depends on v/du (or t)
304-
f.f1(kdu, du, u, p, tnew)
294+
f.f1(kdu, du, u, p, t + half * dt)
305295
@.. broadcast=false du=duprev + dt * kdu
306296

307297
# update position (add to half step position)
308-
f.f2(ku, du, u, p, tnew)
298+
f.f2(ku, du, u, p, t + dt)
309299
@.. broadcast=false u=u + dt * half * ku
310300

311301
OrdinaryDiffEqCore.increment_nf!(integrator.stats, 2)

0 commit comments

Comments
 (0)