@@ -87,10 +87,10 @@ connections = [f.y ~ c.r # filtered reference to controller reference
8787
8888@named cl = System (connections, t, systems = [f, c, p])
8989
90- lsys0, ssys = linearize (cl)
90+ lsys0, ssys = linearize (cl, [f . u], [p . x] )
9191desired_order = [f. x, p. x]
9292lsys = 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 ())
9494lsys2 = ModelingToolkit. reorder_unknowns (lsys1, unknowns (ssys), desired_order)
9595
9696@test lsys. A == lsys2. A == [- 2 0 ; 1 - 2 ]
@@ -99,8 +99,9 @@ lsys2 = ModelingToolkit.reorder_unknowns(lsys1, unknowns(ssys), desired_order)
9999@test lsys. D[] == lsys2. D[] == 0
100100
101101# # Symbolic linearization
102- lsyss, _ = ModelingToolkit. linearize_symbolic (cl, [f. u], [p. x])
102+ lsyss, ssys = ModelingToolkit. linearize_symbolic (cl, [f. u], [p. x])
103103
104+ lsyss = ModelingToolkit. reorder_unknowns (lsyss, unknowns (ssys), [f. x, p. x])
104105@test ModelingToolkit. fixpoint_sub (lsyss. A, ModelingToolkit. defaults (cl)) == lsys. A
105106@test ModelingToolkit. fixpoint_sub (lsyss. B, ModelingToolkit. defaults (cl)) == lsys. B
106107@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
147148@test lsys. D == [4400 - 4400 ]
148149
149150# # 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])
172162
173163# # Test operating points
174164
@@ -266,7 +256,7 @@ closed_loop = System(connections, t, systems = [model, pid, filt, sensor, r, er]
266256 filt. xd => 0.0
267257 ])
268258
269- @test_nowarn linearize (closed_loop; warn_empty_op = false )
259+ @test_nowarn linearize (closed_loop, :r , :y ; warn_empty_op = false )
270260
271261# https://discourse.julialang.org/t/mtk-change-in-linearize/115760/3
272262@mtkmodel Tank_noi begin
327317 eqs = [0 ~ x * log (y) - p]
328318 @named sys = System (eqs, t; defaults = [p => 1.0 ])
329319 sys = complete (sys)
330- @test_throws ModelingToolkit. MissingVariablesError linearize (
320+ @test_throws ModelingToolkit. MissingGuessError linearize (
331321 sys, [x], []; op = Dict (x => 1.0 ), allow_input_derivatives = true )
332322 @test_nowarn linearize (
333323 sys, [x], []; op = Dict (x => 1.0 ), guesses = Dict (y => 1.0 ),
0 commit comments