@@ -1331,3 +1331,27 @@ end
13311331 @test length (ModelingToolkit. guesses (sys2)) == 2
13321332 @test ModelingToolkit. guesses (sys2)[p3] == 2.0
13331333end
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