@@ -87,10 +87,10 @@ connections = [f.y ~ c.r # filtered reference to controller reference
87
87
88
88
@named cl = System (connections, t, systems = [f, c, p])
89
89
90
- lsys0, ssys = linearize (cl)
90
+ lsys0, ssys = linearize (cl, [f . u], [p . x] )
91
91
desired_order = [f. x, p. x]
92
92
lsys = ModelingToolkit. reorder_unknowns (lsys0, unknowns (ssys), desired_order)
93
- lsys1, ssys = linearize (cl; autodiff = AutoFiniteDiff ())
93
+ lsys1, ssys = linearize (cl, [f . u], [p . x] ; autodiff = AutoFiniteDiff ())
94
94
lsys2 = ModelingToolkit. reorder_unknowns (lsys1, unknowns (ssys), desired_order)
95
95
96
96
@test lsys. A == lsys2. A == [- 2 0 ; 1 - 2 ]
@@ -99,8 +99,9 @@ lsys2 = ModelingToolkit.reorder_unknowns(lsys1, unknowns(ssys), desired_order)
99
99
@test lsys. D[] == lsys2. D[] == 0
100
100
101
101
# # Symbolic linearization
102
- lsyss, _ = ModelingToolkit. linearize_symbolic (cl, [f. u], [p. x])
102
+ lsyss, ssys = ModelingToolkit. linearize_symbolic (cl, [f. u], [p. x])
103
103
104
+ lsyss = ModelingToolkit. reorder_unknowns (lsyss, unknowns (ssys), [f. x, p. x])
104
105
@test ModelingToolkit. fixpoint_sub (lsyss. A, ModelingToolkit. defaults (cl)) == lsys. A
105
106
@test ModelingToolkit. fixpoint_sub (lsyss. B, ModelingToolkit. defaults (cl)) == lsys. B
106
107
@test ModelingToolkit. fixpoint_sub (lsyss. C, ModelingToolkit. defaults (cl)) == lsys. C
@@ -147,28 +148,17 @@ lsys = ModelingToolkit.reorder_unknowns(lsys, desired_order, reverse(desired_ord
147
148
@test lsys. D == [4400 - 4400 ]
148
149
149
150
# # Test that there is a warning when input is misspecified
150
- if VERSION >= v " 1.8"
151
- @test_throws " Some specified inputs were not found" linearize (pid,
152
- [
153
- pid. reference. u,
154
- pid. measurement. u
155
- ], [ctr_output. u])
156
- @test_throws " Some specified outputs were not found" linearize (pid,
157
- [
158
- reference. u,
159
- measurement. u
160
- ],
161
- [pid. ctr_output. u])
162
- else # v1.6 does not have the feature to match error message
163
- @test_throws ErrorException linearize (pid,
164
- [
165
- pid. reference. u,
166
- pid. measurement. u
167
- ], [ctr_output. u])
168
- @test_throws ErrorException linearize (pid,
169
- [reference. u, measurement. u],
170
- [pid. ctr_output. u])
171
- end
151
+ @test_throws " Some specified inputs were not found" linearize (pid,
152
+ [
153
+ pid. reference. u,
154
+ pid. measurement. u
155
+ ], [ctr_output. u])
156
+ @test_throws " Some specified outputs were not found" linearize (pid,
157
+ [
158
+ reference. u,
159
+ measurement. u
160
+ ],
161
+ [pid. ctr_output. u])
172
162
173
163
# # Test operating points
174
164
@@ -266,7 +256,7 @@ closed_loop = System(connections, t, systems = [model, pid, filt, sensor, r, er]
266
256
filt. xd => 0.0
267
257
])
268
258
269
- @test_nowarn linearize (closed_loop; warn_empty_op = false )
259
+ @test_nowarn linearize (closed_loop, :r , :y ; warn_empty_op = false )
270
260
271
261
# https://discourse.julialang.org/t/mtk-change-in-linearize/115760/3
272
262
@mtkmodel Tank_noi begin
327
317
eqs = [0 ~ x * log (y) - p]
328
318
@named sys = System (eqs, t; defaults = [p => 1.0 ])
329
319
sys = complete (sys)
330
- @test_throws ModelingToolkit. MissingVariablesError linearize (
320
+ @test_throws ModelingToolkit. MissingGuessError linearize (
331
321
sys, [x], []; op = Dict (x => 1.0 ), allow_input_derivatives = true )
332
322
@test_nowarn linearize (
333
323
sys, [x], []; op = Dict (x => 1.0 ), guesses = Dict (y => 1.0 ),
0 commit comments