@@ -49,6 +49,25 @@ using NonlinearSolve
4949 @test integ. ps[p2] == 10.0
5050end
5151
52+ @testset " vector parameter deps" begin
53+ @parameters p1[1 : 2 ]= [1.0 , 2.0 ] p2[1 : 2 ]= [0.0 , 0.0 ]
54+ @variables x (t) = 0
55+
56+ @named sys = ODESystem (
57+ [D (x) ~ sum (p1) * t + sum (p2)],
58+ t;
59+ parameter_dependencies = [p2 => 2 p1]
60+ )
61+ prob = ODEProblem (complete (sys))
62+ setp1! = setp (prob, p1)
63+ get_p1 = getp (prob, p1)
64+ get_p2 = getp (prob, p2)
65+ setp1! (prob, [1.5 , 2.5 ])
66+
67+ @test get_p1 (prob) == [1.5 , 2.5 ]
68+ @test get_p2 (prob) == [3.0 , 5.0 ]
69+ end
70+
5271@testset " extend" begin
5372 @parameters p1= 1.0 p2= 1.0
5473 @variables x (t) = 0
84103 @test get_dep (prob) == 4
85104end
86105
106+ @testset " getu with vector parameter deps" begin
107+ @parameters p1[1 : 2 ]= [1.0 , 2.0 ] p2[1 : 2 ]= [0.0 , 0.0 ]
108+ @variables x (t) = 0
109+
110+ @named sys = ODESystem (
111+ [D (x) ~ sum (p1) * t + sum (p2)],
112+ t;
113+ parameter_dependencies = [p2 => 2 p1]
114+ )
115+ prob = ODEProblem (complete (sys))
116+ get_dep = getu (prob, 2 p1)
117+ @test get_dep (prob) == [2.0 , 4.0 ]
118+ end
119+
87120@testset " composing systems with parameter deps" begin
88121 @parameters p1= 1.0 p2= 2.0
89122 @variables x (t) = 0
109142 @test get_v1 (prob) == 2
110143 @test get_v2 (prob) == 4
111144
145+ setp1! = setp (prob, sys2. p1)
146+ setp1! (prob, 2.5 )
147+ @test prob. ps[sys2. p2] == 5.0
148+
112149 new_prob = remake (prob, p = [sys2. p1 => 1.5 ])
150+
151+ @test ! isempty (ModelingToolkit. parameter_dependencies (sys2))
113152 @test new_prob. ps[sys2. p1] == 1.5
114153 @test new_prob. ps[sys2. p2] == 3.0
115154end
0 commit comments