1
1
using ModelingToolkit, OrdinaryDiffEq, RecursiveArrayTools, SymbolicIndexingInterface, Test
2
2
using Optimization, OptimizationOptimJL
3
- # compat for MTKv8 and v9
4
- unknowns = isdefined (ModelingToolkit, :states ) ? ModelingToolkit. states :
5
- ModelingToolkit. unknowns
3
+ using ModelingToolkit: t_nounits as t, D_nounits as D
6
4
7
- @parameters t σ ρ β
5
+ @parameters σ ρ β
8
6
@variables x (t) y (t) z (t)
9
7
D = Differential (t)
10
8
@@ -19,8 +17,7 @@ eqs = [D(x) ~ σ * (y - x),
19
17
@variables a (t) α (t)
20
18
connections = [0 ~ lorenz1. x + lorenz2. y + a * γ,
21
19
α ~ 2 lorenz1. x + a * γ]
22
- @named sys = ODESystem (connections, t, [a, α], [γ], systems = [lorenz1, lorenz2])
23
- sys_simplified = structural_simplify (sys)
20
+ @mtkbuild sys = ODESystem (connections, t, [a, α], [γ], systems = [lorenz1, lorenz2])
24
21
25
22
u0 = [lorenz1. x => 1.0 ,
26
23
lorenz1. y => 0.0 ,
@@ -39,7 +36,7 @@ p = [lorenz1.σ => 10.0,
39
36
γ => 2.0 ]
40
37
41
38
tspan = (0.0 , 100.0 )
42
- prob = ODEProblem (sys_simplified , u0, tspan, p)
39
+ prob = ODEProblem (sys , u0, tspan, p)
43
40
integ = init (prob, Rodas4 ())
44
41
sol = solve (prob, Rodas4 ())
45
42
@@ -135,7 +132,7 @@ sol1 = sol(0.0:1.0:10.0)
135
132
136
133
sol2 = sol (0.1 )
137
134
@test sol2 isa Vector
138
- @test length (sol2) == length (unknowns (sys_simplified ))
135
+ @test length (sol2) == length (unknowns (sys ))
139
136
@test first (sol2) isa Real
140
137
141
138
sol3 = sol (0.0 : 1.0 : 10.0 , idxs = [lorenz1. x, lorenz2. x])
@@ -191,9 +188,9 @@ sol10 = sol(0.1, idxs = 2)
191
188
@test sol10 isa Real
192
189
193
190
@test is_timeseries (sol) == Timeseries ()
194
- getx = getu (sys_simplified , lorenz1. x)
195
- get_arr = getu (sys_simplified , [lorenz1. x, lorenz2. x])
196
- get_tuple = getu (sys_simplified , (lorenz1. x, lorenz2. x))
191
+ getx = getu (sys , lorenz1. x)
192
+ get_arr = getu (sys , [lorenz1. x, lorenz2. x])
193
+ get_tuple = getu (sys , (lorenz1. x, lorenz2. x))
197
194
get_obs = getu (sol, lorenz1. x + lorenz2. x) # can't use sys for observed
198
195
get_obs_arr = getu (sol, [lorenz1. x + lorenz2. x, lorenz1. y + lorenz2. y])
199
196
l1x_idx = variable_index (sol, lorenz1. x)
0 commit comments