Skip to content

Commit f26064f

Browse files
test: account for new parameter dependencies in tests
1 parent 048de4e commit f26064f

9 files changed

+76
-73
lines changed

test/initializationsystem.jl

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -486,7 +486,7 @@ sys = mtkcompile(unsimp; fully_determined = false)
486486
@variables x(t) y(t)
487487
@named sysx = System([D(x) ~ 0], t; initialization_eqs = [x ~ 1])
488488
@named sysy = System([D(y) ~ 0], t; initialization_eqs = [y^2 ~ 2], guesses = [y => 1])
489-
sys = extend(sysx, sysy)
489+
sys = complete(extend(sysx, sysy))
490490
@test length(equations(generate_initializesystem(sys))) == 2
491491
@test length(ModelingToolkit.guesses(sys)) == 1
492492

@@ -920,7 +920,7 @@ end
920920
(ModelingToolkit.System, SDDEProblem, ImplicitEM(), _x(t - 0.1) + a)
921921
]
922922
@mtkcompile sys = System(
923-
[D(x) ~ 2x + r + rhss], t; parameter_dependencies = [r ~ p + 2q, q ~ p + 3],
923+
[D(x) ~ 2x + r + rhss, r ~ p + 2q, q ~ p + 3], t;
924924
guesses = [p => 1.0])
925925
prob = Problem(sys, [x => 1.0, p => missing], (0.0, 1.0))
926926
@test length(equations(ModelingToolkit.get_parent(prob.f.initialization_data.initializeprob.f.sys))) ==
@@ -1061,8 +1061,8 @@ end
10611061
@testset "Nonnumeric parameter dependencies are retained" begin
10621062
@variables x(t) y(t)
10631063
@parameters foo(::Real, ::Real) p
1064-
@mtkcompile sys = System([D(x) ~ t, 0 ~ foo(x, y)], t;
1065-
parameter_dependencies = [foo ~ Multiplier(p, 2p)], guesses = [y => -1.0])
1064+
@mtkcompile sys = System([D(x) ~ t, 0 ~ foo(x, y), foo ~ Multiplier(p, 2p)], t;
1065+
guesses = [y => -1.0])
10661066
prob = ODEProblem(sys, [x => 1.0, p => 1.0], (0.0, 1.0))
10671067
integ = init(prob, Rosenbrock23())
10681068
@test integ[y] -0.5
@@ -1241,7 +1241,7 @@ end
12411241
@variables x(t) [guess = 1.0] y(t) [guess = 1.0]
12421242
@parameters p [guess = 1.0] q [guess = 1.0]
12431243
@mtkcompile sys = System(
1244-
[D(x) ~ p * x + q * y, y ~ 2x], t; parameter_dependencies = [q ~ 2p])
1244+
[D(x) ~ p * x + q * y, y ~ 2x, q ~ 2p], t)
12451245
prob = ODEProblem(sys, [x => 1.0, p => 1.0], (0.0, 1.0))
12461246
test_dummy_initialization_equation(prob, x)
12471247
prob2 = remake(prob; u0 = [x => 2.0])
@@ -1262,7 +1262,7 @@ end
12621262
@variables x(t) [guess = 1.0] y(t) [guess = 1.0]
12631263
@parameters p [guess = 1.0] q [guess = 1.0]
12641264
@mtkcompile sys = System(
1265-
[D(x) ~ p * x + q * y, y ~ 2x], t; parameter_dependencies = [q ~ 2p])
1265+
[D(x) ~ p * x + q * y, y ~ 2x, q ~ 2p], t)
12661266
prob = ODEProblem(sys, [:x => 1.0, p => 1.0], (0.0, 1.0))
12671267
test_dummy_initialization_equation(prob, x)
12681268
prob2 = remake(prob; u0 = [:x => 2.0])
@@ -1442,8 +1442,7 @@ end
14421442
end
14431443
@testset "$Problem" for Problem in [NonlinearProblem, NonlinearLeastSquaresProblem]
14441444
@parameters p1 p2
1445-
@mtkcompile sys = System([x^2 + y^2 ~ p1, (x - 1)^2 + (y - 1)^2 ~ p2];
1446-
parameter_dependencies = [p2 ~ 2p1],
1445+
@mtkcompile sys = System([x^2 + y^2 ~ p1, (x - 1)^2 + (y - 1)^2 ~ p2, p2 ~ 2p1];
14471446
guesses = [p1 => 0.0], defaults = [p1 => missing])
14481447
prob = Problem(sys, [x => 1.0, y => 1.0, p2 => 6.0])
14491448
@test prob.ps[p1] 3.0

test/mtkparameters.jl

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ using JET
99

1010
@parameters a b c(t) d::Integer e[1:3] f[1:3, 1:3]::Int g::Vector{AbstractFloat} h::String
1111
@named sys = System(
12-
Equation[], t, [], [a, c, d, e, f, g, h], parameter_dependencies = [b ~ 2a],
12+
[b ~ 2a], t, [], [a, b, c, d, e, f, g, h];
1313
continuous_events = [ModelingToolkit.SymbolicContinuousCallback(
1414
[a ~ 0] => [c ~ 0], discrete_parameters = c)], defaults = Dict(a => 0.0))
1515
sys = complete(sys)
@@ -178,10 +178,11 @@ function level1()
178178
D = Differential(t)
179179

180180
eqs = [D(x) ~ p1 * x - p2 * x * y
181-
D(y) ~ -p3 * y + p4 * x * y]
181+
D(y) ~ -p3 * y + p4 * x * y
182+
y0 ~ 2p4]
182183

183184
sys = mtkcompile(complete(System(
184-
eqs, t, name = :sys, parameter_dependencies = [y0 => 2p4])))
185+
eqs, t, name = :sys)))
185186
prob = ODEProblem{true, SciMLBase.FullSpecialize}(sys, [], (0.0, 3.0))
186187
end
187188

@@ -192,10 +193,11 @@ function level2()
192193
D = Differential(t)
193194

194195
eqs = [D(x) ~ p1 * x - p23[1] * x * y
195-
D(y) ~ -p23[2] * y + p4 * x * y]
196+
D(y) ~ -p23[2] * y + p4 * x * y
197+
y0 ~ 2p4]
196198

197199
sys = mtkcompile(complete(System(
198-
eqs, t, name = :sys, parameter_dependencies = [y0 => 2p4])))
200+
eqs, t, name = :sys)))
199201
prob = ODEProblem{true, SciMLBase.FullSpecialize}(sys, [], (0.0, 3.0))
200202
end
201203

@@ -206,10 +208,11 @@ function level3()
206208
D = Differential(t)
207209

208210
eqs = [D(x) ~ p1 * x - p23[1] * x * y
209-
D(y) ~ -p23[2] * y + p4 * x * y]
211+
D(y) ~ -p23[2] * y + p4 * x * y
212+
y0 ~ 2p4]
210213

211214
sys = mtkcompile(complete(System(
212-
eqs, t, name = :sys, parameter_dependencies = [y0 => 2p4])))
215+
eqs, t, name = :sys)))
213216
prob = ODEProblem{true, SciMLBase.FullSpecialize}(sys, [], (0.0, 3.0))
214217
end
215218

test/nonlinearsystem.jl

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -368,12 +368,13 @@ end
368368
@testset "Can convert from `System`" begin
369369
@variables x(t) y(t)
370370
@parameters p q r
371-
@named sys = System([D(x) ~ p * x^3 + q, 0 ~ -y + q * x - r], t;
371+
@named sys = System([D(x) ~ p * x^3 + q, 0 ~ -y + q * x - r, r ~ 3p], t;
372372
defaults = [x => 1.0, p => missing], guesses = [p => 1.0],
373-
initialization_eqs = [p^3 + q^3 ~ 4r], parameter_dependencies = [r ~ 3p])
373+
initialization_eqs = [p^3 + q^3 ~ 4r])
374374
nlsys = NonlinearSystem(sys)
375+
nlsys = complete(nlsys)
375376
defs = defaults(nlsys)
376-
@test length(defs) == 3
377+
@test length(defs) == 6
377378
@test defs[x] == 1.0
378379
@test defs[p] === missing
379380
@test isinf(defs[t])
@@ -384,7 +385,7 @@ end
384385
@test length(equations(nlsys)) == 2
385386
@test all(iszero, [eq.lhs for eq in equations(nlsys)])
386387
@test nameof(nlsys) == nameof(sys)
387-
@test !ModelingToolkit.iscomplete(nlsys)
388+
@test ModelingToolkit.iscomplete(nlsys)
388389

389390
sys1 = complete(sys; split = false)
390391
nlsys = NonlinearSystem(sys1)

test/odesystem.jl

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -881,6 +881,7 @@ eqs = [D(D(q₁)) ~ -λ * q₁,
881881
q₂ ~ L * cos(θ)]
882882

883883
@named pend = System(eqs, t)
884+
pend = complete(pend)
884885
@test_nowarn generate_initializesystem(
885886
pend; op = [q₁ => 1.0, q₂ => 0.0], guesses ==> 1])
886887

@@ -1189,14 +1190,15 @@ end
11891190
@testset "Substituting preserves parameter dependencies, defaults, guesses" begin
11901191
@parameters p1 p2
11911192
@variables x(t) y(t)
1192-
@named sys = System([D(x) ~ y + p2], t; parameter_dependencies = [p2 ~ 2p1],
1193+
@named sys = System([D(x) ~ y + p2, p2 ~ 2p1], t;
11931194
defaults = [p1 => 1.0, p2 => 2.0], guesses = [p1 => 2.0, p2 => 3.0])
11941195
@parameters p3
11951196
sys2 = substitute(sys, [p1 => p3])
1197+
sys2 = complete(sys2)
11961198
@test length(parameters(sys2)) == 1
11971199
@test is_parameter(sys2, p3)
11981200
@test !is_parameter(sys2, p1)
1199-
@test length(ModelingToolkit.defaults(sys2)) == 2
1201+
@test length(ModelingToolkit.defaults(sys2)) == 7
12001202
@test ModelingToolkit.defaults(sys2)[p3] == 1.0
12011203
@test length(ModelingToolkit.guesses(sys2)) == 2
12021204
@test ModelingToolkit.guesses(sys2)[p3] == 2.0
@@ -1205,22 +1207,23 @@ end
12051207
@testset "Substituting with nested systems" begin
12061208
@parameters p1 p2
12071209
@variables x(t) y(t)
1208-
@named innersys = System([D(x) ~ y + p2], t; parameter_dependencies = [p2 ~ 2p1],
1210+
@named innersys = System([D(x) ~ y + p2; p2 ~ 2p1], t;
12091211
defaults = [p1 => 1.0, p2 => 2.0], guesses = [p1 => 2.0, p2 => 3.0])
12101212
@parameters p3 p4
12111213
@named outersys = System(
1212-
[D(innersys.y) ~ innersys.y + p4], t; parameter_dependencies = [p4 ~ 3p3],
1214+
[D(innersys.y) ~ innersys.y + p4, p4 ~ 3p3], t;
12131215
defaults = [p3 => 3.0, p4 => 9.0], guesses = [p4 => 10.0], systems = [innersys])
12141216
@test_nowarn mtkcompile(outersys)
12151217
@parameters p5
12161218
sys2 = substitute(outersys, [p4 => p5])
1219+
sys2 = complete(sys2)
12171220
@test_nowarn mtkcompile(sys2)
12181221
@test length(equations(sys2)) == 2
12191222
@test length(parameters(sys2)) == 2
1220-
@test length(full_parameters(sys2)) == 4
1223+
@test length(full_parameters(sys2)) == 10
12211224
@test all(!isequal(p4), full_parameters(sys2))
12221225
@test any(isequal(p5), full_parameters(sys2))
1223-
@test length(ModelingToolkit.defaults(sys2)) == 4
1226+
@test length(ModelingToolkit.defaults(sys2)) == 10
12241227
@test ModelingToolkit.defaults(sys2)[p5] == 9.0
12251228
@test length(ModelingToolkit.guesses(sys2)) == 3
12261229
@test ModelingToolkit.guesses(sys2)[p5] == 10.0
@@ -1296,7 +1299,7 @@ end
12961299

12971300
@testset "Parameter dependencies with constant RHS" begin
12981301
@parameters p
1299-
@test_nowarn System(Equation[], t; parameter_dependencies = [p ~ 1.0], name = :a)
1302+
@test_nowarn System([p ~ 1.0], t; name = :a)
13001303
end
13011304

13021305
@testset "Variable discovery in arrays of `Num` inside callable symbolic" begin

0 commit comments

Comments
 (0)