381
381
end
382
382
end
383
383
@test hybrid == rn
384
- end
384
+ end
385
+
386
+ # hybrid models
387
+ let
388
+ rs = @reaction_network hybrid begin
389
+ @variables V (t)
390
+ @parameters λ
391
+ k* V, 0 --> A
392
+ λ* A, B --> 0
393
+ k, A + B --> 0
394
+ λ, C --> A, [physical_scale = PhysicalScale. ODE]
395
+ @equations D (V) ~ λ* V* C
396
+ @continuous_events begin
397
+ [V ~ 2.0 ] => [V ~ V/ 2 , A ~ A/ 2 ]
398
+ end
399
+ end
400
+ t = default_t ()
401
+ D = default_time_deriv ()
402
+ @parameters λ k
403
+ @variables V (t)
404
+ @species A (t) B (t) C (t)
405
+ metadata = [:physical_scale => PhysicalScale. ODE]
406
+ rxs = [Reaction (k* V, [], [A]), Reaction (λ* A, [B], nothing ; metadata),
407
+ Reaction (k, [A, B], nothing ), Reaction (λ, [C], [A])]
408
+ eqs = [D (V) ~ λ* V* C]
409
+ cevents = [[V ~ 2.0 ] => [V ~ V/ 2 , A ~ A/ 2 ]]
410
+ rs2 = ReactionSystem (vcat (rxs, eqs), t; continuous_events = cevents,
411
+ name = :hybrid )
412
+ rs2 = complete (rs2)
413
+ @test rs == rs2
414
+ end
415
+
416
+ let
417
+ rs = @reaction_network hybrid begin
418
+ @variables V (t)
419
+ @parameters λ
420
+ k* V, 0 --> A
421
+ λ* A, B --> 0 , [physical_scale = PhysicalScale. ODE]
422
+ k, A + B --> 0
423
+ λ, C --> A, [physical_scale = PhysicalScale. VariableRateJump]
424
+ @equations D (V) ~ λ* V* C
425
+ @continuous_events begin
426
+ [V ~ 2.0 ] => [V ~ V/ 2 , A ~ A/ 2 ]
427
+ end
428
+ end
429
+ t = default_t ()
430
+ D = default_time_deriv ()
431
+ @parameters λ k
432
+ @variables V (t)
433
+ @species A (t) B (t) C (t)
434
+ md1 = [:physical_scale => PhysicalScale. ODE]
435
+ md2 = [:physical_scale => PhysicalScale. VariableRateJump]
436
+ rxs = [Reaction (k* V, [], [A]), Reaction (λ* A, [B], nothing ; metadata = md1),
437
+ Reaction (k, [A, B], nothing ), Reaction (λ, [C], [A]; metadata = md2)]
438
+ eqs = [D (V) ~ λ* V* C]
439
+ cevents = [[V ~ 2.0 ] => [V ~ V/ 2 , A ~ A/ 2 ]]
440
+ rs2 = ReactionSystem (vcat (rxs, eqs), t; continuous_events = cevents, name = :hybrid )
441
+ rs2 = complete (rs2)
442
+ @test rs == rs2
443
+ end
0 commit comments