Skip to content

Commit 78431af

Browse files
committed
Add tests
1 parent 1fa1264 commit 78431af

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed

test/symbolic_events.jl

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1434,3 +1434,30 @@ end
14341434
sol2 = solve(ODEProblem(sys2, [], (0.0, 1.0)), Tsit5())
14351435
@test 100.0 sol2[sys2.wd2.θ]
14361436
end
1437+
1438+
@testset "Array parameter updates of parent components in ImperativeEffect" begin
1439+
function child(vals; name, max_time = 0.1)
1440+
vars = @variables begin
1441+
x(t) = 0.0
1442+
end
1443+
eqs = reduce(vcat, Symbolics.scalarize.([
1444+
D(x) ~ 1.0
1445+
]))
1446+
reset = ModelingToolkit.ImperativeAffect(
1447+
modified = (; vals = Symbolics.scalarize(ParentScope.(vals)), x)) do m, o, _, i
1448+
@set! m.vals = m.vals .+ 1
1449+
@set! m.x = 0.0
1450+
return m
1451+
end
1452+
return ODESystem(eqs, t, vars, []; name = name,
1453+
continuous_events = [[x ~ max_time] => reset])
1454+
end
1455+
shared_pars = @parameters begin
1456+
vals(t)[1:2] = 0.0
1457+
end
1458+
1459+
@named sys = ODESystem(Equation[], t, [], Symbolics.scalarize(vals);
1460+
systems = [child(vals; name = :child)])
1461+
sys = structural_simplify(sys)
1462+
sol = solve(ODEProblem(sys, [], (0.0, 1.0)), Tsit5())
1463+
end

0 commit comments

Comments
 (0)