@@ -1434,3 +1434,30 @@ end
14341434 sol2 = solve (ODEProblem (sys2, [], (0.0 , 1.0 )), Tsit5 ())
14351435 @test 100.0 ∈ sol2[sys2. wd2. θ]
14361436end
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