@@ -1331,3 +1331,27 @@ end
1331
1331
@test length (ModelingToolkit. guesses (sys2)) == 2
1332
1332
@test ModelingToolkit. guesses (sys2)[p3] == 2.0
1333
1333
end
1334
+
1335
+ @testset " Substituting with nested systems" begin
1336
+ @parameters p1 p2
1337
+ @variables x (t) y (t)
1338
+ @named innersys = ODESystem ([D (x) ~ y + p2], t; parameter_dependencies = [p2 ~ 2 p1],
1339
+ defaults = [p1 => 1.0 , p2 => 2.0 ], guesses = [p1 => 2.0 , p2 => 3.0 ])
1340
+ @parameters p3 p4
1341
+ @named outersys = ODESystem (
1342
+ [D (innersys. y) ~ innersys. y + p4], t; parameter_dependencies = [p4 ~ 3 p3],
1343
+ defaults = [p3 => 3.0 , p4 => 9.0 ], guesses = [p4 => 10.0 ], systems = [innersys])
1344
+ @test_nowarn structural_simplify (outersys)
1345
+ @parameters p5
1346
+ sys2 = substitute (outersys, [p4 => p5])
1347
+ @test_nowarn structural_simplify (sys2)
1348
+ @test length (equations (sys2)) == 2
1349
+ @test length (parameters (sys2)) == 2
1350
+ @test length (full_parameters (sys2)) == 4
1351
+ @test all (! isequal (p4), full_parameters (sys2))
1352
+ @test any (isequal (p5), full_parameters (sys2))
1353
+ @test length (ModelingToolkit. defaults (sys2)) == 4
1354
+ @test ModelingToolkit. defaults (sys2)[p5] == 9.0
1355
+ @test length (ModelingToolkit. guesses (sys2)) == 3
1356
+ @test ModelingToolkit. guesses (sys2)[p5] == 10.0
1357
+ end
0 commit comments