@@ -555,3 +555,29 @@ let rng = rng
555
555
@named jsys6 = JumpSystem (eqs, t, [A], [k, t1, t2], discrete_events = [cb2‵‵‵, cb1])
556
556
testsol (jsys6, u0, p, tspan; tstops = [1.0 , 2.0 ], rng)
557
557
end
558
+
559
+ let
560
+ @variables t
561
+ D = Differential (t)
562
+
563
+ function oscillator_ce (k = 1.0 ; name)
564
+ sts = @variables x (t)= 1.0 v (t)= 0.0 F (t)
565
+ ps = @parameters k= k Θ= 0.5
566
+ eqs = [D (x) ~ v, D (v) ~ - k * x + F]
567
+ ev = [x ~ Θ] => [x ~ 1.0 , v ~ 0.0 ]
568
+ ODESystem (eqs, t, sts, ps, continuous_events = [ev]; name)
569
+ end
570
+
571
+ @named oscce = oscillator_ce ()
572
+ eqs = [oscce. F ~ 0 ]
573
+ @named eqs_sys = ODESystem (eqs, t)
574
+ @named oneosc_ce = compose (eqs_sys, oscce)
575
+ oneosc_ce_simpl = structural_simplify (oneosc_ce)
576
+
577
+ prob = ODEProblem (oneosc_ce_simpl, [], (0.0 , 2.0 ), [])
578
+ sol = solve (prob, Tsit5 (), saveat = 0.1 )
579
+
580
+ @test typeof (oneosc_ce_simpl) == ODESystem
581
+ @test sol[1 , 6 ] < 1.0 # test whether x(t) decreases over time
582
+ @test sol[1 , 18 ] > 0.5 # test whether event happened
583
+ end
0 commit comments