@@ -7,10 +7,10 @@ using ModelingToolkit: t_nounits as t, D_nounits as D
7
7
@variables xx (t) some_input (t) [input = true ]
8
8
eqs = [D (xx) ~ some_input]
9
9
@named model = ODESystem (eqs, t)
10
- @test_throws ExtraVariablesSystemException structural_simplify (model, ((), ()) )
10
+ @test_throws ExtraVariablesSystemException structural_simplify (model)
11
11
if VERSION >= v " 1.8"
12
12
err = " In particular, the unset input(s) are:\n some_input(t)"
13
- @test_throws err structural_simplify (model, ((), ()) )
13
+ @test_throws err structural_simplify (model)
14
14
end
15
15
16
16
# Test input handling
@@ -88,7 +88,7 @@ fsys4 = flatten(sys4)
88
88
@variables x (t) y (t) [output = true ]
89
89
@test isoutput (y)
90
90
@named sys = ODESystem ([D (x) ~ - x, y ~ x], t) # both y and x are unbound
91
- syss = structural_simplify (sys) # This makes y an observed variable
91
+ syss = structural_simplify (sys, outputs = [y] ) # This makes y an observed variable
92
92
93
93
@named sys2 = ODESystem ([D (x) ~ - sys. x, y ~ sys. y], t, systems = [sys])
94
94
@@ -106,7 +106,7 @@ syss = structural_simplify(sys) # This makes y an observed variable
106
106
@test isequal (unbound_outputs (sys2), [y])
107
107
@test isequal (bound_outputs (sys2), [sys. y])
108
108
109
- syss = structural_simplify (sys2)
109
+ syss = structural_simplify (sys2, outputs = [sys . y] )
110
110
111
111
@test ! is_bound (syss, y)
112
112
@test ! is_bound (syss, x)
165
165
]
166
166
167
167
@named sys = ODESystem (eqs, t)
168
+ sys = structural_simplify (sys, inputs = [u])
168
169
f, dvs, ps, io_sys = ModelingToolkit. generate_control_function (sys; simplify, split)
169
170
170
171
@test isequal (dvs[], x)
182
183
]
183
184
184
185
@named sys = ODESystem (eqs, t)
185
- f, dvs, ps, io_sys = ModelingToolkit . generate_control_function (
186
- sys, [u], [d] ; simplify, split)
186
+ sys = structural_simplify (sys, inputs = [u], disturbance_inputs = [d])
187
+ f, dvs, ps, io_sys = ModelingToolkit . generate_control_function (sys ; simplify, split)
187
188
188
189
@test isequal (dvs[], x)
189
190
@test isempty (ps)
200
201
]
201
202
202
203
@named sys = ODESystem (eqs, t)
204
+ sys = structural_simplify (sys, inputs = [u], disturbance_inputs = [d])
203
205
f, dvs, ps, io_sys = ModelingToolkit. generate_control_function (
204
- sys, [u], [d] ; simplify, split, disturbance_argument = true )
206
+ sys; simplify, split, disturbance_argument = true )
205
207
206
208
@test isequal (dvs[], x)
207
209
@test isempty (ps)
@@ -265,9 +267,9 @@ eqs = [connect_sd(sd, mass1, mass2)
265
267
@named _model = ODESystem (eqs, t)
266
268
@named model = compose (_model, mass1, mass2, sd);
267
269
270
+ model = structural_simplify (model, inputs = [u])
268
271
f, dvs, ps, io_sys = ModelingToolkit. generate_control_function (model, simplify = true )
269
272
@test length (dvs) == 4
270
- @test length (ps) == length (parameters (model))
271
273
p = MTKParameters (io_sys, [io_sys. u => NaN ])
272
274
x = ModelingToolkit. varmap_to_vars (
273
275
merge (ModelingToolkit. defaults (model),
@@ -389,7 +391,7 @@ sys = structural_simplify(model)
389
391
390
392
# # Disturbance models when plant has multiple inputs
391
393
using ModelingToolkit, LinearAlgebra
392
- using ModelingToolkit: DisturbanceModel, io_preprocessing, get_iv, get_disturbance_system
394
+ using ModelingToolkit: DisturbanceModel, get_iv, get_disturbance_system
393
395
using ModelingToolkitStandardLibrary. Blocks
394
396
A, C = [randn (2 , 2 ) for i in 1 : 2 ]
395
397
B = [1.0 0 ; 0 1.0 ]
@@ -433,6 +435,7 @@ matrices = ModelingToolkit.reorder_unknowns(
433
435
]
434
436
435
437
@named sys = ODESystem (eqs, t)
438
+ sys = structural_simplify (sys, inputs = [u])
436
439
(; io_sys,) = ModelingToolkit. generate_control_function (sys, simplify = true )
437
440
obsfn = ModelingToolkit. build_explicit_observed_function (
438
441
io_sys, [x + u * t]; inputs = [u])
@@ -444,18 +447,19 @@ end
444
447
@constants c = 2.0
445
448
@variables x (t)
446
449
eqs = [D (x) ~ c * x]
447
- @named sys = ODESystem (eqs, t, [x], [])
450
+ @mtkbuild sys = ODESystem (eqs, t, [x], [])
448
451
449
- f, dvs, ps, io_sys = ModelingToolkit. generate_control_function (sys, simplify = true )
450
- @test f ([0.5 ], nothing , MTKParameters (io_sys, []), 0.0 ) ≈ [1.0 ]
452
+ f, dvs, ps, io_sys = ModelingToolkit. generate_control_function (sys)
453
+ @test f[ 1 ] ([0.5 ], nothing , MTKParameters (io_sys, []), 0.0 ) ≈ [1.0 ]
451
454
end
452
455
453
456
@testset " With callable symbolic" begin
454
457
@variables x (t)= 0 u (t)= 0 [input = true ]
455
458
@parameters p (:: Real ) = (x -> 2 x)
456
459
eqs = [D (x) ~ - x + p (u)]
457
460
@named sys = ODESystem (eqs, t)
458
- f, dvs, ps, io_sys = ModelingToolkit. generate_control_function (sys, simplify = true )
461
+ sys = structural_simplify (sys, inputs = [u])
462
+ f, dvs, ps, io_sys = ModelingToolkit. generate_control_function (sys)
459
463
p = MTKParameters (io_sys, [])
460
464
u = [1.0 ]
461
465
x = [1.0 ]
0 commit comments