@@ -1066,3 +1066,57 @@ prob = SteadyStateProblem(sys, u0, p)
1066
1066
@test prob isa SteadyStateProblem
1067
1067
prob = SteadyStateProblem (ODEProblem (sys, u0, (0.0 , 10.0 ), p))
1068
1068
@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