@@ -40,17 +40,18 @@ rxs = [Reaction(k[1], nothing, [A]), # 0 -> A
4040 Reaction (k[19 ] * t, [A], [B]), # A -> B with non constant rate.
4141 Reaction (k[20 ] * t * A, [B, C], [D], [2 , 1 ], [2 ]), # 2A +B -> 2C with non constant rate.
4242]
43- @named rs = ReactionSystem (rxs, t, [A, B, C, D], k )
43+ @named rs = ReactionSystem (rxs, t, [A, B, C, D], [k] )
4444rs = complete (rs)
4545odesys = complete (convert (ODESystem, rs))
4646sdesys = complete (convert (SDESystem, rs))
4747
4848# Hard coded ODE rhs.
49- function oderhs (u, k , t)
49+ function oderhs (u, kv , t)
5050 A = u[1 ]
5151 B = u[2 ]
5252 C = u[3 ]
5353 D = u[4 ]
54+ k = kv[1 ]
5455 du = zeros (eltype (u), 4 )
5556 du[1 ] = k[1 ] - k[3 ] * A + k[4 ] * C + 2 * k[5 ] * C - k[6 ] * A * B + k[7 ] * B^ 2 / 2 -
5657 k[9 ] * A * B - k[10 ] * A^ 2 - k[11 ] * A^ 2 / 2 - k[12 ] * A * B^ 3 * C^ 4 / 144 -
@@ -68,11 +69,12 @@ function oderhs(u, k, t)
6869end
6970
7071# SDE noise coefs.
71- function sdenoise (u, k , t)
72+ function sdenoise (u, kv , t)
7273 A = u[1 ]
7374 B = u[2 ]
7475 C = u[3 ]
7576 D = u[4 ]
77+ k = kv[1 ]
7678 G = zeros (eltype (u), length (k), length (u))
7779 z = zero (eltype (u))
7880
@@ -109,11 +111,12 @@ end
109111
110112# Defaults test.
111113let
112- def_p = [ki => float (i) for (i, ki) in enumerate (k)]
114+ kvals = Float64 .(1 : length (k))
115+ def_p = [k => kvals]
113116 def_u0 = [A => 0.5 , B => 1.0 , C => 1.5 , D => 2.0 ]
114117 defs = merge (Dict (def_p), Dict (def_u0))
115118
116- @named rs = ReactionSystem (rxs, t, [A, B, C, D], k ; defaults = defs)
119+ @named rs = ReactionSystem (rxs, t, [A, B, C, D], [k] ; defaults = defs)
117120 rs = complete (rs)
118121 odesys = complete (convert (ODESystem, rs))
119122 sdesys = complete (convert (SDESystem, rs))
@@ -126,15 +129,11 @@ let
126129 defs
127130
128131 u0map = [A => 5.0 ]
129- pmap = [k[1 ] => 5.0 ]
132+ kvals[1 ] = 5.0
133+ pmap = [k => kvals]
130134 prob = ODEProblem (rs, u0map, (0 , 10.0 ), pmap)
131135 @test prob. ps[k[1 ]] == 5.0
132136 @test prob. u0[1 ] == 5.0
133- u0 = [10.0 , 11.0 , 12.0 , 13.0 ]
134- ps = [float (x) for x in 100 : 119 ]
135- prob = ODEProblem (rs, u0, (0 , 10.0 ), ps)
136- @test [prob. ps[k[i]] for i in 1 : 20 ] == ps
137- @test prob. u0 == u0
138137end
139138
140139# ## Check ODE, SDE, and Jump Functions ###
181180 Reaction (k[19 ] * t, [D], [E]), # D -> E with non constant rate.
182181 Reaction (k[20 ] * t * A, [D, E], [F], [2 , 1 ], [2 ]), # 2D + E -> 2F with non constant rate.
183182 ]
184- @named rs = ReactionSystem (rxs, t, [A, B, C, D, E, F], k )
183+ @named rs = ReactionSystem (rxs, t, [A, B, C, D, E, F], [k] )
185184 rs = complete (rs)
186185 js = complete (convert (JumpSystem, rs))
187186
193192 @test all (map (i -> typeof (equations (js)[i]) <: JumpProcesses.VariableRateJump , vidxs))
194193
195194 p = rand (rng, length (k))
196- pmap = parameters (js) . => p
195+ pmap = [k => p]
197196 u0 = rand (rng, 2 : 10 , 6 )
198197 u0map = unknowns (js) .=> u0
199198 ttt = rand (rng)
392391# Needs fix for https://github.com/JuliaSymbolics/Symbolics.jl/issues/842.
393392let
394393 @parameters a
395- @species A (t) B (t) C (t)[1 : 2 ]
394+ @species A (t) B (t) ( C (t) )[1 : 2 ]
396395 rx1 = Reaction (a, [A, C[1 ]], [C[2 ], B], [1 , 2 ], [2 , 3 ])
397396 io = IOBuffer ()
398397 show (io, rx1)
868867let
869868 @species (A (t))[1 : 20 ]
870869 using ModelingToolkit: value
871- @test isspecies (value (A))
872- @test isspecies (value (A[2 ]))
873- Av = value .(ModelingToolkit. scalarize (A))
874- @test isspecies (Av[2 ])
875- @test isequal (value (Av[2 ]), value (A[2 ]))
870+ Av = value (A)
871+ @test isspecies (Av)
872+ @test all (i -> isspecies (Av[i]), 1 : length (Av))
876873end
877874
878875# Test mixed models are formulated correctly.
0 commit comments