|
| 1 | +using ModelingToolkit |
| 2 | +using ModelingToolkit: t_nounits as t, D_nounits as D, get_u0 |
| 3 | +using SymbolicIndexingInterface: getu |
| 4 | + |
| 5 | +@variables x(t)[1:3]=[1.0, 2.0, 3.0] y(t) z(t)[1:2] |
| 6 | + |
| 7 | +@mtkbuild sys=ODESystem([D(x) ~ t * x], t) simplify=false |
| 8 | +@test get_u0(sys, [])[1] == [1.0, 2.0, 3.0] |
| 9 | +@test get_u0(sys, [x => [2.0, 3.0, 4.0]])[1] == [2.0, 3.0, 4.0] |
| 10 | +@test get_u0(sys, [x[1] => 2.0, x[2] => 3.0, x[3] => 4.0])[1] == [2.0, 3.0, 4.0] |
| 11 | +@test get_u0(sys, [2.0, 3.0, 4.0])[1] == [2.0, 3.0, 4.0] |
| 12 | + |
| 13 | +@mtkbuild sys=ODESystem([ |
| 14 | + D(x) ~ 3x, |
| 15 | + D(y) ~ t, |
| 16 | + D(z[1]) ~ z[2] + t, |
| 17 | + D(z[2]) ~ y + z[1] |
| 18 | + ], t) simplify=false |
| 19 | + |
| 20 | +@test_throws ModelingToolkit.MissingVariablesError get_u0(sys, []) |
| 21 | +getter = getu(sys, [x..., y, z...]) |
| 22 | +@test getter(get_u0(sys, [y => 4.0, z => [5.0, 6.0]])[1]) == collect(1.0:6.0) |
| 23 | +@test getter(get_u0(sys, [y => 4.0, z => [3y, 4y]])[1]) == [1.0, 2.0, 3.0, 4.0, 12.0, 16.0] |
| 24 | +@test getter(get_u0(sys, [y => 3.0, z[1] => 3y, z[2] => 2x[1]])[1]) == |
| 25 | + [1.0, 2.0, 3.0, 3.0, 9.0, 2.0] |
| 26 | + |
| 27 | +@variables w(t) |
| 28 | +@parameters p1 p2 |
| 29 | + |
| 30 | +@test getter(get_u0(sys, [y => 2p1, z => [3y, 2p2]], [p1 => 5.0, p2 => 6.0])[1]) == |
| 31 | + [1.0, 2.0, 3.0, 10.0, 30.0, 12.0] |
| 32 | +@test_throws Any getter(get_u0(sys, [y => 2w, w => 3.0, z[1] => 2p1, z[2] => 3p2])) |
| 33 | +@test getter(get_u0( |
| 34 | + sys, [y => 2w, w => 3.0, z[1] => 2p1, z[2] => 3p2], [p1 => 3.0, p2 => 4.0])[1]) == |
| 35 | + [1.0, 2.0, 3.0, 6.0, 6.0, 12.0] |
0 commit comments