@@ -1006,6 +1006,12 @@ let
1006
1006
end
1007
1007
1008
1008
# ######### tests related to hybrid systems ##########
1009
+
1010
+ massactionjumps (js:: JumpSystem ) = equations (js). x[1 ]
1011
+ constantratejumps (js:: JumpSystem ) = equations (js). x[2 ]
1012
+ variableratejumps (js:: JumpSystem ) = equations (js). x[3 ]
1013
+ odeeqs (js:: JumpSystem ) = equations (js). x[4 ]
1014
+
1009
1015
let
1010
1016
t = default_t ()
1011
1017
D = default_time_deriv ()
@@ -1018,15 +1024,41 @@ let
1018
1024
cevents = [[V ~ 2.0 ] => [V ~ V/ 2 , A ~ A/ 2 ]]
1019
1025
@named rs = ReactionSystem (vcat (rxs, eqs), t; continuous_events = cevents)
1020
1026
rs = complete (rs)
1021
- jinput = JumpInputs (rn, [:A => 0 , :V => 1.0 ], (0.0 , 10.0 ), [:k => 1.0 , :λ => .4 ])
1027
+ jinput = JumpInputs (rs, [:A => 0 , :B => 1 , :C => 1 , :V => 1.0 ], (0.0 , 10.0 ), [:k => 1.0 , :λ => .4 ])
1028
+ @test jinput. prob isa ODEProblem
1029
+ sys = jinput. sys
1030
+ @test sys isa JumpSystem
1031
+ @test MT. has_equations (sys)
1032
+ @test length (massactionjumps (sys)) == 1
1033
+ @test isempty (constantratejumps (sys))
1034
+ @test length (variableratejumps (sys)) == 3
1035
+ @test length (odeeqs (sys)) == 4
1036
+ @test length (continuous_events (sys)) == 1
1037
+ end
1038
+
1039
+ let
1040
+ t = default_t ()
1041
+ D = default_time_deriv ()
1042
+ @parameters λ k
1043
+ @variables V (t)
1044
+ @species A (t) B (t) C (t)
1045
+ metadata = [:physical_scale => PhysicalScale. ODE]
1046
+ rxs = [Reaction (k* V, [], [A]), Reaction (λ* A, [B], nothing ; metadata),
1047
+ Reaction (k, [A, B], nothing ), Reaction (λ, [C], [A])]
1048
+ eqs = [D (V) ~ λ* V* C]
1049
+ cevents = [[V ~ 2.0 ] => [V ~ V/ 2 , A ~ A/ 2 ]]
1050
+ @named rs = ReactionSystem (vcat (rxs, eqs), t; continuous_events = cevents)
1051
+ rs = complete (rs)
1052
+ jinput = JumpInputs (rs, [:A => 0 , :B => 1 , :C => 1 , :V => 1.0 ], (0.0 , 10.0 ), [:k => 1.0 , :λ => .4 ])
1022
1053
@test jinput. prob isa ODEProblem
1023
1054
sys = jinput. sys
1024
1055
@test sys isa JumpSystem
1025
1056
@test MT. has_equations (sys)
1026
- eqs = MT. equations (sys)
1027
- @test isempty (eqs. x[1 ])
1028
- @test isempty (eqs. x[2 ])
1029
- @test length (eqs. x[3 ]) == 1
1030
- @test length (eqs. x[4 ]) == 2 # dA/dt and dV/dt
1057
+ @test length (massactionjumps (sys)) == 1
1058
+ @test isempty (constantratejumps (sys))
1059
+ @test length (variableratejumps (sys)) == 2
1060
+ @test length (odeeqs (sys)) == 4
1061
+ odes = union (eqs, [D (A) ~ 0 , D (B) ~ - λ* A* B, D (C) ~ 0 ])
1062
+ @test issetequal (odes, odeeqs (sys))
1031
1063
@test length (continuous_events (sys)) == 1
1032
1064
end
0 commit comments