301301#  basic VariableRateJump test
302302let 
303303    N =  1000   #  number of simulations for testing solve accuracy
304-     Random. seed! (rng, 1111 )  
304+     Random. seed! (rng, 1111 )
305305    @variables  A (t) B (t) C (t)
306306    @parameters  k
307307    vrj =  VariableRateJump (k *  (sin (t) +  1 ), [A ~  A +  1 , C ~  C +  2 ])
@@ -425,17 +425,19 @@ end
425425
426426#  PDMP test
427427let 
428-     Random. seed! (rng, 1111 )   
428+     Random. seed! (rng, 1111 )
429429    @variables  X (t) Y (t)
430430    @parameters  k1 k2
431431    vrj1 =  VariableRateJump (k1 *  X, [X ~  X -  1 ]; save_positions =  (false , false ))
432432    vrj2 =  VariableRateJump (k1, [Y ~  Y +  1 ]; save_positions =  (false , false ))
433-     eqs =  [D (X) ~  k2, D (Y) ~  - k2/ 10 * Y]
433+     eqs =  [D (X) ~  k2, D (Y) ~  - k2  /   10   *   Y]
434434    @named  jsys =  JumpSystem ([vrj1, vrj2, eqs[1 ], eqs[2 ]], t, [X, Y], [k1, k2])
435435    jsys =  complete (jsys)
436-     X0 =  0.0 ; Y0 =  0.0 
436+     X0 =  0.0 
437+     Y0 =  0.0 
437438    u0 =  [X =>  X0, Y =>  Y0]
438-     k1val =  1.0 ; k2val =  20.0 
439+     k1val =  1.0 
440+     k2val =  20.0 
439441    p =  [k1 =>  k1val, k2 =>  k2val]
440442    tspan =  (0.0 , 10.0 )
441443    oprob =  ODEProblem (jsys, u0, tspan, p)
@@ -447,27 +449,30 @@ let
447449    Yv =  zeros (length (times))
448450    for  n in  1 : Nsims
449451        sol =  solve (jprob, Tsit5 (); saveat =  times)
450-         Xv .+ =  sol[1 ,:]  
451-         Yv .+ =  sol[2 ,:]
452+         Xv .+ =  sol[1 , :] 
453+         Yv .+ =  sol[2 ,  :]
452454    end 
453-     Xv ./=  Nsims; Yv ./=  Nsims;
455+     Xv ./=  Nsims
456+     Yv ./=  Nsims
454457
455458    Xact (t) =  X0 *  exp (- k1val *  t) +  (k2val /  k1val) *  (1  -  exp (- k1val *  t))
456-     Yact (t) =  Y0 *  exp (- k2val/ 10  *  t) +  (k1val /  (k2val/ 10 )) *  (1  -  exp (- k2val/ 10  *  t))
459+     function  Yact (t)
460+         Y0 *  exp (- k2val /  10  *  t) +  (k1val /  (k2val /  10 )) *  (1  -  exp (- k2val /  10  *  t))
461+     end 
457462    @test  all (abs .(Xv .-  Xact .(times)) .<=  0.05  .*  Xv)
458-     @test  all (abs .(Yv .-  Yact .(times)) .<=  0.1  .*  Yv)     
463+     @test  all (abs .(Yv .-  Yact .(times)) .<=  0.1  .*  Yv)
459464end 
460465
461466#  that mixes ODEs and jump types, and then contin events
462467let 
463-     Random. seed! (rng, 1111 )   
468+     Random. seed! (rng, 1111 )
464469    @variables  X (t) Y (t)
465470    @parameters  α β
466471    vrj =  VariableRateJump (β *  X, [X ~  X -  1 ]; save_positions =  (false , false ))
467-     crj =  ConstantRateJump (β* Y, [Y ~  Y -  1 ])
472+     crj =  ConstantRateJump (β  *   Y, [Y ~  Y -  1 ])
468473    maj =  MassActionJump (α, [0  =>  1 ], [Y =>  1 ])
469-     eqs =  [D (X) ~  α* (1  +  Y)]
470-     @named  jsys =  JumpSystem ([maj, crj, vrj, eqs[1 ]], t, [X, Y], [α, β])     
474+     eqs =  [D (X) ~  α  *   (1  +  Y)]
475+     @named  jsys =  JumpSystem ([maj, crj, vrj, eqs[1 ]], t, [X, Y], [α, β])
471476    jsys =  complete (jsys)
472477    p =  (α =  6.0 , β =  2.0 , X₀ =  2.0 , Y₀ =  1.0 )
473478    u0map =  [X =>  p. X₀, Y =>  p. Y₀]
@@ -481,32 +486,34 @@ let
481486    Yv =  zeros (length (times))
482487    for  n in  1 : Nsims
483488        sol =  solve (jprob, Tsit5 (); saveat =  times)
484-         Xv .+ =  sol[1 ,:]  
485-         Yv .+ =  sol[2 ,:]
489+         Xv .+ =  sol[1 , :] 
490+         Yv .+ =  sol[2 ,  :]
486491    end 
487-     Xv ./=  Nsims; Yv ./=  Nsims;
492+     Xv ./=  Nsims
493+     Yv ./=  Nsims
488494
489495    function  Yf (t, p)
490496        local  α, β, X₀, Y₀ =  p
491497        return  (α /  β) +  (Y₀ -  α /  β) *  exp (- β *  t)
492498    end 
493499    function  Xf (t, p)
494500        local  α, β, X₀, Y₀ =  p
495-         return  (α /  β) +  (α^ 2  /  β^ 2 ) +  α *  (Y₀ -  α /  β) *  t *  exp (- β *  t) +  (X₀ -  α /  β -  α^ 2  /  β^ 2 ) *  exp (- β *  t)
501+         return  (α /  β) +  (α^ 2  /  β^ 2 ) +  α *  (Y₀ -  α /  β) *  t *  exp (- β *  t) + 
502+                (X₀ -  α /  β -  α^ 2  /  β^ 2 ) *  exp (- β *  t)
496503    end 
497-     Xact =  [Xf (t,p) for  t in  times]
498-     Yact =  [Yf (t,p) for  t in  times]
504+     Xact =  [Xf (t,  p) for  t in  times]
505+     Yact =  [Yf (t,  p) for  t in  times]
499506    @test  all (abs .(Xv .-  Xact) .<=  0.05  .*  Xv)
500-     @test  all (abs .(Yv .-  Yact) .<=  0.05  .*  Yv)     
501-     
507+     @test  all (abs .(Yv .-  Yact) .<=  0.05  .*  Yv)
508+ 
502509    function  affect! (integ, u, p, ctx)
503510        savevalues! (integ, true )
504511        terminate! (integ)
505512        nothing 
506513    end 
507-     cevents =  [t ~  .2 ] =>  (affect!, [], [], [], nothing )
508-     @named  jsys =  JumpSystem ([maj, crj, vrj, eqs[1 ]], t, [X, Y], [α, β];  
509-         continuous_events =  cevents)     
514+     cevents =  [t ~  0 .2 ] =>  (affect!, [], [], [], nothing )
515+     @named  jsys =  JumpSystem ([maj, crj, vrj, eqs[1 ]], t, [X, Y], [α, β];
516+         continuous_events =  cevents)
510517    jsys =  complete (jsys)
511518    tspan =  (0.0 , 200.0 )
512519    oprob =  ODEProblem (jsys, u0map, tspan, pmap)
516523    for  n in  1 : Nsims
517524        sol =  solve (jprob, Tsit5 (), saveat =  tspan[2 ])
518525        @test  sol. retcode ==  ReturnCode. Terminated
519-         Xsamp +=  sol[1 ,end ]
526+         Xsamp +=  sol[1 ,  end ]
520527    end 
521528    Xsamp /=  Nsims
522-     @test  abs (Xsamp -  Xf (.2 ,p) <  .05  *  Xf (.2 ,p))
523- end 
529+     @test  abs (Xsamp -  Xf (0 .2 ,  p) <  0 .05  *  Xf (0 .2 ,  p))
530+ end 
0 commit comments