@@ -1066,3 +1066,57 @@ prob = SteadyStateProblem(sys, u0, p)
10661066@test prob isa SteadyStateProblem
10671067prob = SteadyStateProblem (ODEProblem (sys, u0, (0.0 , 10.0 ), p))
10681068@test prob isa SteadyStateProblem
1069+
1070+ # Issue#2344
1071+ using ModelingToolkitStandardLibrary. Blocks
1072+
1073+ function FML2 (; name)
1074+ @parameters begin
1075+ k2[1 : 1 ] = [1.0 ]
1076+ end
1077+ systems = @named begin
1078+ constant = Constant (k = k2[1 ])
1079+ end
1080+ @variables begin
1081+ x (t) = 0
1082+ end
1083+ eqs = [
1084+ D (x) ~ constant. output. u + k2[1 ]
1085+ ]
1086+ ODESystem (eqs, t; systems, name)
1087+ end
1088+
1089+ @mtkbuild model = FML2 ()
1090+
1091+ @test isequal (ModelingToolkit. defaults (model)[model. constant. k], model. k2[1 ])
1092+ @test_nowarn ODEProblem (model, [], (0.0 , 10.0 ))
1093+
1094+ # Issue#2477
1095+ function RealExpression (; name, y)
1096+ vars = @variables begin
1097+ u (t)
1098+ end
1099+ eqns = [
1100+ u ~ y
1101+ ]
1102+ sys = ODESystem (eqns, t, vars, []; name)
1103+ end
1104+
1105+ function RealExpressionSystem (; name)
1106+ vars = @variables begin
1107+ x (t)
1108+ z (t)[1 : 1 ]
1109+ end # doing a collect on z doesn't work either.
1110+ @named e1 = RealExpression (y = x) # This works perfectly.
1111+ @named e2 = RealExpression (y = z[1 ]) # This bugs. However, `full_equations(e2)` works as expected.
1112+ systems = [e1, e2]
1113+ ODESystem (Equation[], t, Iterators. flatten (vars), []; systems, name)
1114+ end
1115+
1116+ @named sys = RealExpressionSystem ()
1117+ sys = complete (sys)
1118+ @test Set (equations (sys)) == Set ([sys. e1. u ~ sys. x, sys. e2. u ~ sys. z[1 ]])
1119+ tearing_state = TearingState (expand_connections (sys))
1120+ ts_vars = tearing_state. fullvars
1121+ orig_vars = unknowns (sys)
1122+ @test isempty (setdiff (ts_vars, orig_vars))
0 commit comments