|
327 | 327 | parameter_values(ptc), rpidx.timeseries_idx => vals) |
328 | 328 | @test newp[ridx] == 2prob.ps[r] |
329 | 329 | end |
| 330 | + |
| 331 | + @testset "get_save_idxs_and_saved_subsystem" begin |
| 332 | + @variables x(t) y(t) |
| 333 | + @parameters p q(t) r(t) s(t) u(t) |
| 334 | + evs = [0.1 => [q ~ q + 1, s ~ s - 1], 0.3 => [r ~ 2r, u ~ u / 2]] |
| 335 | + @mtkbuild sys = ODESystem([D(x) ~ x + p * y, D(y) ~ 2p + x^2], t, [x, y], |
| 336 | + [p, q, r, s, u], discrete_events = evs) |
| 337 | + prob = ODEProblem(sys, [x => 1.0, y => 1.0], (0.0, 5.0), |
| 338 | + [p => 0.5, q => 0.0, r => 1.0, s => 10.0, u => 4096.0]) |
| 339 | + |
| 340 | + _idxs, _ss = SciMLBase.get_save_idxs_and_saved_subsystem(prob, nothing) |
| 341 | + @test _idxs === _ss === nothing |
| 342 | + _idxs, _ss = SciMLBase.get_save_idxs_and_saved_subsystem(prob, 1) |
| 343 | + @test _idxs == 1 |
| 344 | + @test _ss isa SciMLBase.SavedSubsystem |
| 345 | + _idxs, _ss = SciMLBase.get_save_idxs_and_saved_subsystem(prob, [1]) |
| 346 | + @test _idxs == [1] |
| 347 | + @test _ss isa SciMLBase.SavedSubsystem |
| 348 | + _idxs, _ss = SciMLBase.get_save_idxs_and_saved_subsystem(prob, x) |
| 349 | + @test _idxs == 1 |
| 350 | + @test _ss isa SciMLBase.SavedSubsystem |
| 351 | + _idxs, _ss = SciMLBase.get_save_idxs_and_saved_subsystem(prob, [x]) |
| 352 | + @test _idxs == [1] |
| 353 | + @test _ss isa SciMLBase.SavedSubsystem |
| 354 | + _idxs, _ss = SciMLBase.get_save_idxs_and_saved_subsystem(prob, [x, q]) |
| 355 | + @test _idxs == [1] |
| 356 | + @test _ss isa SciMLBase.SavedSubsystem |
| 357 | + _idxs, _ss = SciMLBase.get_save_idxs_and_saved_subsystem(prob, [q]) |
| 358 | + @test _idxs == Int[] |
| 359 | + @test _ss isa SciMLBase.SavedSubsystem |
| 360 | + end |
330 | 361 | end |
0 commit comments