@@ -338,7 +338,8 @@ sys = structural_simplify(model)
338
338
@test isempty (ModelingToolkit. continuous_events (sys))
339
339
340
340
let
341
- function testsol (osys, u0, p, tspan; tstops = Float64[], skipparamtest = false , kwargs... )
341
+ function testsol (osys, u0, p, tspan; tstops = Float64[], skipparamtest = false ,
342
+ kwargs... )
342
343
oprob = ODEProblem (osys, u0, tspan, p; kwargs... )
343
344
sol = solve (oprob, Tsit5 (); tstops = tstops, abstol = 1e-10 , reltol = 1e-10 )
344
345
@test isapprox (sol (1.0000000001 )[1 ] - sol (0.999999999 )[1 ], 1.0 ; rtol = 1e-6 )
@@ -401,22 +402,23 @@ let
401
402
testsol (osys6, u0, p, tspan; tstops = [1.0 , 2.0 ])
402
403
403
404
# mix a continuous event too
404
- cond3 = A ~ .1
405
+ cond3 = A ~ 0 .1
405
406
affect3 = [k ~ 0.0 ]
406
407
cb3 = cond3 => affect3
407
408
@named osys7 = ODESystem (eqs, t, [A], [k, t1, t2], discrete_events = [cb1, cb2‵‵‵],
408
409
continuous_events = [cb3])
409
410
sol = testsol (osys7, u0, p, (0.0 , 10.0 ); tstops = [1.0 , 2.0 ], skipparamtest = true )
410
- @test isapprox (sol (10.0 )[1 ], .1 ; atol= 1e-10 , rtol= 1e-10 )
411
+ @test isapprox (sol (10.0 )[1 ], 0 .1 ; atol = 1e-10 , rtol = 1e-10 )
411
412
end
412
413
413
414
let
414
- function testsol (ssys, u0, p, tspan; tstops = Float64[], skipparamtest = false , kwargs... )
415
+ function testsol (ssys, u0, p, tspan; tstops = Float64[], skipparamtest = false ,
416
+ kwargs... )
415
417
sprob = SDEProblem (ssys, u0, tspan, p; kwargs... )
416
418
sol = solve (sprob, RI5 (); tstops = tstops, abstol = 1e-10 , reltol = 1e-10 )
417
419
@test isapprox (sol (1.0000000001 )[1 ] - sol (0.999999999 )[1 ], 1.0 ; rtol = 1e-4 )
418
420
! skipparamtest && (@test sprob. p[1 ] == 1.0 )
419
- @test isapprox (sol (4.0 )[1 ], 2 * exp (- 2.0 ), atol= 1e-4 )
421
+ @test isapprox (sol (4.0 )[1 ], 2 * exp (- 2.0 ), atol = 1e-4 )
420
422
sol
421
423
end
422
424
432
434
433
435
∂ₜ = Differential (t)
434
436
eqs = [∂ₜ (A) ~ - k * A]
435
- @named ssys = SDESystem (eqs, Equation[], t, [A], [k, t1, t2], discrete_events = [cb1, cb2])
437
+ @named ssys = SDESystem (eqs, Equation[], t, [A], [k, t1, t2],
438
+ discrete_events = [cb1, cb2])
436
439
u0 = [A => 1.0 ]
437
440
p = [k => 0.0 , t1 => 1.0 , t2 => 2.0 ]
438
441
tspan = (0.0 , 4.0 )
441
444
cond1a = (t == t1)
442
445
affect1a = [A ~ A + 1 , B ~ A]
443
446
cb1a = cond1a => affect1a
444
- @named ssys1 = SDESystem (eqs, Equation[], t, [A, B], [k, t1, t2], discrete_events = [cb1a, cb2])
447
+ @named ssys1 = SDESystem (eqs, Equation[], t, [A, B], [k, t1, t2],
448
+ discrete_events = [cb1a, cb2])
445
449
u0′ = [A => 1.0 , B => 0.0 ]
446
450
sol = testsol (ssys1, u0′, p, tspan; tstops = [1.0 , 2.0 ], check_length = false )
447
451
@test sol (1.0000001 , idxs = 2 ) == 2.0
453
457
testsol (ssys‵, u0, p, tspan)
454
458
455
459
# mixing discrete affects
456
- @named ssys3 = SDESystem (eqs, Equation[], t, [A], [k, t1, t2], discrete_events = [cb1, cb2‵])
460
+ @named ssys3 = SDESystem (eqs, Equation[], t, [A], [k, t1, t2],
461
+ discrete_events = [cb1, cb2‵])
457
462
testsol (ssys3, u0, p, tspan; tstops = [1.0 ])
458
463
459
464
# mixing with a func affect
@@ -462,29 +467,33 @@ let
462
467
nothing
463
468
end
464
469
cb2‵‵ = [2.0 ] => (affect!, [], [k], nothing )
465
- @named ssys4 = SDESystem (eqs, Equation[], t, [A], [k, t1], discrete_events = [cb1, cb2‵‵])
470
+ @named ssys4 = SDESystem (eqs, Equation[], t, [A], [k, t1],
471
+ discrete_events = [cb1, cb2‵‵])
466
472
testsol (ssys4, u0, p, tspan; tstops = [1.0 ])
467
473
468
474
# mixing with symbolic condition in the func affect
469
475
cb2‵‵‵ = (t == t2) => (affect!, [], [k], nothing )
470
- @named ssys5 = SDESystem (eqs, Equation[], t, [A], [k, t1, t2], discrete_events = [cb1, cb2‵‵‵])
476
+ @named ssys5 = SDESystem (eqs, Equation[], t, [A], [k, t1, t2],
477
+ discrete_events = [cb1, cb2‵‵‵])
471
478
testsol (ssys5, u0, p, tspan; tstops = [1.0 , 2.0 ])
472
- @named ssys6 = SDESystem (eqs, Equation[], t, [A], [k, t1, t2], discrete_events = [cb2‵‵‵, cb1])
479
+ @named ssys6 = SDESystem (eqs, Equation[], t, [A], [k, t1, t2],
480
+ discrete_events = [cb2‵‵‵, cb1])
473
481
testsol (ssys6, u0, p, tspan; tstops = [1.0 , 2.0 ])
474
482
475
483
# mix a continuous event too
476
- cond3 = A ~ .1
484
+ cond3 = A ~ 0 .1
477
485
affect3 = [k ~ 0.0 ]
478
486
cb3 = cond3 => affect3
479
- @named ssys7 = SDESystem (eqs, Equation[], t, [A], [k, t1, t2], discrete_events = [cb1, cb2‵‵‵],
487
+ @named ssys7 = SDESystem (eqs, Equation[], t, [A], [k, t1, t2],
488
+ discrete_events = [cb1, cb2‵‵‵],
480
489
continuous_events = [cb3])
481
490
sol = testsol (ssys7, u0, p, (0.0 , 10.0 ); tstops = [1.0 , 2.0 ], skipparamtest = true )
482
- @test isapprox (sol (10.0 )[1 ], .1 ; atol= 1e-10 , rtol= 1e-10 )
491
+ @test isapprox (sol (10.0 )[1 ], 0 .1 ; atol = 1e-10 , rtol = 1e-10 )
483
492
end
484
493
485
494
let rng = rng
486
495
function testsol (jsys, u0, p, tspan; tstops = Float64[], skipparamtest = false ,
487
- N = 40000 , kwargs... )
496
+ N = 40000 , kwargs... )
488
497
dprob = DiscreteProblem (jsys, u0, tspan, p)
489
498
jprob = JumpProblem (jsys, dprob, Direct (); kwargs... )
490
499
sol = solve (jprob, SSAStepper (); tstops = tstops)
0 commit comments