50
50
sint = init (sprob, ImplicitEM (); save_everystep= false )
51
51
jint = init (jprob, SSAStepper ())
52
52
nint = init (nprob, NewtonRaphson (); save_everystep= false )
53
- @test_broken ssint = init (ssprob, DynamicSS (Tsit5 ()); save_everystep= false ) # https://github.com/SciML/SciMLBase .jl/issues/660
53
+ @test_broken ssint = init (ssprob, DynamicSS (Tsit5 ()); save_everystep= false ) # https://github.com/SciML/SteadyStateDiffEq .jl/issues/79
54
54
integrators = [oint, sint, jint, nint]
55
55
56
56
# Creates solutions.
64
64
65
65
# Tests problem indexing and updating.
66
66
let
67
- @test_broken false # A few cases fails for SteadyStateProblem: https://github.com/SciML/SciMLBase.jl/issues/660
68
- @test_broken false # Most cases broken for Ensemble problems: https://github.com/SciML/SciMLBase.jl/issues/661
69
- for prob in deepcopy (problems[1 : end - 1 ])
67
+ for prob in [deepcopy (problems); deepcopy (eproblems)]
70
68
# Get u values (including observables).
71
69
@test prob[X] == prob[model. X] == prob[:X ] == 4
72
70
@test prob[XY] == prob[model. XY] == prob[:XY ] == 9
73
71
@test prob[[XY,Y]] == prob[[model. XY,model. Y]] == prob[[:XY ,:Y ]] == [9 , 5 ]
74
- @test_broken prob[(XY,Y)] == prob[(model. XY,model. Y)] == prob[(:XY ,:Y )] == (9 , 5 )
72
+ @test_broken prob[(XY,Y)] == prob[(model. XY,model. Y)] == prob[(:XY ,:Y )] == (9 , 5 ) # https://github.com/SciML/SciMLBase.jl/issues/709
75
73
@test getu (prob, X)(prob) == getu (prob, model. X)(prob) == getu (prob, :X )(prob) == 4
76
74
@test getu (prob, XY)(prob) == getu (prob, model. XY)(prob) == getu (prob, :XY )(prob) == 9
77
75
@test getu (prob, [XY,Y])(prob) == getu (prob, [model. XY,model. Y])(prob) == getu (prob, [:XY ,:Y ])(prob) == [9 , 5 ]
117
115
118
116
# Test remake function.
119
117
let
120
- @test_broken false # Currently cannot be run for Ensemble problems: https://github.com/SciML/SciMLBase.jl/issues/661 (as indexing cannot be used to check values).
121
- for prob in deepcopy (problems)
118
+ for prob in [deepcopy (problems); deepcopy (eproblems)]
122
119
# Remake for all u0s.
123
120
rp = remake (prob; u0 = [X => 1 , Y => 2 ])
124
121
@test rp[[X, Y]] == [1 , 2 ]
156
153
# Test integrator indexing.
157
154
let
158
155
@test_broken false # NOTE: Multiple problems for `nint` (https://github.com/SciML/SciMLBase.jl/issues/662).
159
- @test_broken false # NOTE: Multiple problems for `jint` (https://github.com/SciML/SciMLBase.jl/issues/654).
160
- @test_broken false # NOTE: Cannot even create a `ssint` (https://github.com/SciML/SciMLBase.jl/issues/660).
161
- for int in deepcopy ([oint, sint])
156
+ for int in deepcopy ([oint, sint, jint])
162
157
# Get u values.
163
158
@test int[X] == int[model. X] == int[:X ] == 4
164
159
@test int[XY] == int[model. XY] == int[:XY ] == 9
208
203
end
209
204
210
205
# Test solve's save_idxs argument.
206
+ # Currently, `save_idxs` is broken with symbolic stuff (https://github.com/SciML/ModelingToolkit.jl/issues/1761).
211
207
let
212
208
for (prob, solver) in zip (deepcopy ([oprob, sprob, jprob]), [Tsit5 (), ImplicitEM (), SSAStepper ()])
213
209
# Save single variable
@@ -241,10 +237,10 @@ let
241
237
@test getu (sol, (XY,Y))(sol)[1 ] == getu (sol, (model. XY,model. Y))(sol)[1 ] == getu (sol, (:XY ,:Y ))(sol)[1 ] == (9 , 5 )
242
238
243
239
# Get u values via idxs and functional call.
244
- @test osol (0.0 ; idxs= X) == osol (0.0 ; idxs= X) == osol (0.0 ; idxs= X) == 4
245
- @test osol (0.0 ; idxs= XY) == osol (0.0 ; idxs= XY) == osol (0.0 ; idxs= XY) == 9
246
- @test_broken osol (0.0 ; idxs= [model . Y,model . XY ]) == osol (0.0 ; idxs= [model. Y ,model. XY ]) == osol (0.0 ; idxs= [model . XY,model . X ]) == [9 , 5 ]
247
- @test_broken osol (0.0 ; idxs= ( :Y , :XY )) == osol (0.0 ; idxs= ( :Y , :XY )) == osol (0.0 ; idxs= (:XY ,:Y )) == (9 , 5 )
240
+ @test osol (0.0 ; idxs= X) == osol (0.0 ; idxs= model . X) == osol (0.0 ; idxs= : X ) == 4
241
+ @test osol (0.0 ; idxs= XY) == osol (0.0 ; idxs= model . XY) == osol (0.0 ; idxs= : XY ) == 9
242
+ @test osol (0.0 ; idxs = [XY,Y ]) == osol (0.0 ; idxs = [model. XY ,model. Y ]) == osol (0.0 ; idxs = [ : XY ,:Y ]) == [9 , 5 ]
243
+ @test_broken osol (0.0 ; idxs = (XY,Y )) == osol (0.0 ; idxs = (model . XY,model . Y )) == osol (0.0 ; idxs = (:XY ,:Y )) == (9 , 5 ) # https://github.com/SciML/SciMLBase.jl/issues/711
248
244
249
245
# Get p values.
250
246
@test sol. ps[kp] == sol. ps[model. kp] == sol. ps[:kp ] == 1.0
@@ -262,11 +258,11 @@ let
262
258
@test sol[X] == sol[model. X] == sol[:X ]
263
259
@test sol[XY] == sol[model. XY][1 ] == sol[:XY ]
264
260
@test sol[[XY,Y]] == sol[[model. XY,model. Y]] == sol[[:XY ,:Y ]]
265
- @test_broken sol[(XY,Y)] == sol[(model. XY,model. Y)] == sol[(:XY ,:Y )]
261
+ @test_broken sol[(XY,Y)] == sol[(model. XY,model. Y)] == sol[(:XY ,:Y )] # https://github.com/SciML/SciMLBase.jl/issues/710
266
262
@test getu (sol, X)(sol) == getu (sol, model. X)(sol)[1 ] == getu (sol, :X )(sol)
267
263
@test getu (sol, XY)(sol) == getu (sol, model. XY)(sol)[1 ] == getu (sol, :XY )(sol)
268
264
@test getu (sol, [XY,Y])(sol) == getu (sol, [model. XY,model. Y])(sol) == getu (sol, [:XY ,:Y ])(sol)
269
- @test_broken getu (sol, (XY,Y))(sol) == getu (sol, (model. XY,model. Y))(sol) == getu (sol, (:XY ,:Y ))(sol)[1 ]
265
+ @test_broken getu (sol, (XY,Y))(sol) == getu (sol, (model. XY,model. Y))(sol) == getu (sol, (:XY ,:Y ))(sol)[1 ] # https://github.com/SciML/SciMLBase.jl/issues/710
270
266
271
267
# Get p values.
272
268
@test sol. ps[kp] == sol. ps[model. kp] == sol. ps[:kp ]
281
277
282
278
# Tests plotting.
283
279
let
284
- @test_broken false # Currently broken for `ssol` (https://github.com/SciML/SciMLBase.jl/issues/580)
285
- for sol in deepcopy ([osol, jsol])
280
+ for sol in deepcopy ([osol, ssol, jsol])
286
281
# Single variable.
287
282
@test length (plot (sol; idxs = X). series_list) == 1
288
283
@test length (plot (sol; idxs = XY). series_list) == 1
386
381
@test jint. cb. condition. ma_jumps. scaled_rates[1 ] == 16.0
387
382
reset_aggregated_jumps! (jint)
388
383
@test jint. cb. condition. ma_jumps. scaled_rates[1 ] == 6.0
389
- end
384
+ end
385
+
386
+
387
+
388
+
389
+ using ModelingToolkit, OrdinaryDiffEq
390
+ using ModelingToolkit: t_nounits as t, D_nounits as D
391
+
392
+ @parameters p d
393
+ @variables X (t)
394
+ @variables Y (t)
395
+ eqs = [
396
+ D (X) ~ p - d* X,
397
+ D (Y) ~ p - d* Y
398
+ ]
399
+ @mtkbuild sys = ODESystem (eqs, t)
400
+
401
+ u0 = [X => 1.0 , Y => 1.0 ]
402
+ tspan = (0.0 , 100.0 )
403
+ ps = [p => 1.0 , d => 0.1 ]
404
+
405
+ prob = ODEProblem (sys, u0, tspan, ps)
406
+ sol = solve (prob)
407
+
408
+ sol (0.0 ; idxs= [sys. Y,sys. XY])
409
+ sol (0.0 ; idxs= [sys. Y,sys. XY])
410
+
411
+ @test_broken osol (0.0 ; idxs= [model. Y,model. XY]) == osol (0.0 ; idxs= [model. Y,model. XY]) == osol (0.0 ; idxs= [model. XY,model. X]) == [9 , 5 ]
412
+ @test_broken osol (0.0 ; idxs= (:Y ,:XY )) == osol (0.0 ; idxs= (:Y ,:XY )) == osol (0.0 ; idxs= (:XY ,:Y )) == (9 , 5 )
0 commit comments