Skip to content

Commit d7c673a

Browse files
test: test substitute with hierarchical systems
1 parent a1ff68d commit d7c673a

File tree

1 file changed

+24
-0
lines changed

1 file changed

+24
-0
lines changed

test/odesystem.jl

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1331,3 +1331,27 @@ end
13311331
@test length(ModelingToolkit.guesses(sys2)) == 2
13321332
@test ModelingToolkit.guesses(sys2)[p3] == 2.0
13331333
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 ~ 2p1],
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 ~ 3p3],
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

Comments
 (0)