Skip to content

Commit 390c7cf

Browse files
Update clock.jl
1 parent 14cd4f0 commit 390c7cf

File tree

1 file changed

+36
-0
lines changed

1 file changed

+36
-0
lines changed

test/clock.jl

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -298,6 +298,42 @@ eqs = [yd ~ Sample(dt)(y)
298298
ss = mtkcompile(cl)
299299
ss_nosplit = mtkcompile(cl; split = false)
300300

301+
prob = ODEProblem(ss, [x => 0.0, kp => 1.0], (0.0, 1.0))
302+
prob_nosplit = ODEProblem(ss_nosplit, [x => 0.0, kp => 1.0], (0.0, 1.0))
303+
sol = solve(prob, Tsit5(), kwargshandle = KeywordArgSilent)
304+
sol_nosplit = solve(prob_nosplit, Tsit5(), kwargshandle = KeywordArgSilent)
305+
306+
function foo!(dx, x, p, t)
307+
kp, ud1, ud2 = p
308+
dx[1] = -x[1] + ud1 + ud2
309+
end
310+
311+
function affect1!(integrator)
312+
kp = integrator.p[1]
313+
y = integrator.u[1]
314+
r = 1.0
315+
ud1 = kp * (r - y)
316+
integrator.p[2] = ud1
317+
nothing
318+
end
319+
function affect2!(integrator)
320+
kp = integrator.p[1]
321+
y = integrator.u[1]
322+
r = 1.0
323+
ud2 = kp * (r - y)
324+
integrator.p[3] = ud2
325+
nothing
326+
end
327+
cb1 = PeriodicCallback(affect1!, dt; final_affect = true, initial_affect = true)
328+
cb2 = PeriodicCallback(affect2!, dt2; final_affect = true, initial_affect = true)
329+
cb = CallbackSet(cb1, cb2)
330+
# kp ud1 ud2
331+
prob = ODEProblem(foo!, [0.0], (0.0, 1.0), [1.0, 1.0, 1.0], callback = cb)
332+
sol2 = solve(prob, Tsit5())
333+
334+
@test sol.usol2.u atol=1e-6
335+
@test sol_nosplit.usol2.u atol=1e-6
336+
301337
##
302338
@info "Testing hybrid system with components"
303339
using ModelingToolkitStandardLibrary.Blocks

0 commit comments

Comments
 (0)