40
40
sol = solve (jprob, Tsit5 ())
41
41
end
42
42
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