4040 sol = solve (jprob, Tsit5 ())
4141end
4242
43-
43+ # this test requires a decision on how to handle when a user gives
44+ # an ODE for a chemical species in addition to reactions
45+ # let
46+ # seed = 1111
47+ # Random.seed!(rng, seed)
48+ # rn = @reaction_network begin
49+ # @parameters α β
50+ # β, X --> 0
51+ # β, Y --> 0
52+ # α, 0 --> Y
53+ # @equations begin
54+ # D(X) ~ α * (1 + Y)
55+ # end
56+ # end
57+ # p = (α = 6.0, β = 2.0, X₀ = 2.0, Y₀ = 1.0)
58+ # u0map = [:X => p.X₀, :Y => p.Y₀]
59+ # pmap = [:α => p.α, :β => p.β]
60+ # tspan = (0.0, 20.0)
61+ # jinputs = JumpInputs(rn, u0map, tspan, pmap)
62+ # jprob = JumpProblem(jinputs; rng, save_positions = (false, false))
63+ # times = range(0.0, tspan[2], length = 100)
64+ # Nsims = 4000
65+ # Xv = zeros(length(times))
66+ # Yv = zeros(length(times))
67+ # for n in 1:Nsims
68+ # sol = solve(jprob, Tsit5(); saveat = times, seed)
69+ # Xv .+= sol[1, :]
70+ # Yv .+= sol[2, :]
71+ # seed += 1
72+ # end
73+ # Xv ./= Nsims
74+ # Yv ./= Nsims
75+
76+ # function Yf(t, p)
77+ # local α, β, X₀, Y₀ = p
78+ # return (α / β) + (Y₀ - α / β) * exp(-β * t)
79+ # end
80+ # function Xf(t, p)
81+ # local α, β, X₀, Y₀ = p
82+ # return (α / β) + (α^2 / β^2) + α * (Y₀ - α / β) * t * exp(-β * t) +
83+ # (X₀ - α / β - α^2 / β^2) * exp(-β * t)
84+ # end
85+ # Xact = [Xf(t, p) for t in times]
86+ # Yact = [Yf(t, p) for t in times]
87+ # @test all(abs.(Xv .- Xact) .<= 0.05 .* Xv)
88+ # @test all(abs.(Yv .- Yact) .<= 0.05 .* Yv)
89+
90+ # function affect!(integ, u, p, ctx)
91+ # savevalues!(integ, true)
92+ # terminate!(integ)
93+ # nothing
94+ # end
95+ # cevents = [t ~ 0.2] => (affect!, [], [], [], nothing)
96+ # @named jsys = JumpSystem([maj, crj, vrj, eqs[1]], t, [X, Y], [α, β];
97+ # continuous_events = cevents)
98+ # jsys = complete(jsys)
99+ # tspan = (0.0, 200.0)
100+ # oprob = ODEProblem(jsys, u0map, tspan, pmap)
101+ # jprob = JumpProblem(jsys, oprob; rng, save_positions = (false, false))
102+ # Xsamp = 0.0
103+ # Nsims = 4000
104+ # for n in 1:Nsims
105+ # sol = solve(jprob, Tsit5(); saveat = tspan[2], seed)
106+ # @test sol.retcode == ReturnCode.Terminated
107+ # Xsamp += sol[1, end]
108+ # seed += 1
109+ # end
110+ # Xsamp /= Nsims
111+ # @test abs(Xsamp - Xf(0.2, p) < 0.05 * Xf(0.2, p))
112+ # end
0 commit comments