Skip to content

Commit 8eab77a

Browse files
committed
test passes
1 parent 32aeac6 commit 8eab77a

File tree

2 files changed

+15
-17
lines changed

2 files changed

+15
-17
lines changed

src/systems/jumps/jumpsystem.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -288,7 +288,7 @@ function assemble_vrj(
288288
outputidxs = [unknowntoid[var] for var in outputvars]
289289
affect = eval_or_rgf(generate_affect_function(js, vrj.affect!, outputidxs);
290290
eval_expression, eval_module)
291-
VariableRateJump(rate, affect)
291+
VariableRateJump(rate, affect; save_positions = vrj.save_positions)
292292
end
293293

294294
function assemble_vrj_expr(js, vrj, unknowntoid)

test/jumpsystem.jl

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -427,34 +427,32 @@ end
427427
let
428428
@variables X(t) Y(t)
429429
@parameters k1 k2
430-
vrj1 = VariableRateJump(k1 * X, [X ~ X - 1])
431-
vrj2 = VariableRateJump(k2, [Y ~ Y + 1])
430+
vrj1 = VariableRateJump(k1 * X, [X ~ X - 1]; save_positions = (false, false))
431+
vrj2 = VariableRateJump(k1, [Y ~ Y + 1]; save_positions = (false, false))
432432
eqs = [D(X) ~ k2, D(Y) ~ -k2/100*Y]
433433
@named jsys = JumpSystem([vrj1, vrj2, eqs[1], eqs[2]], t, [X, Y], [k1, k2])
434434
jsys = complete(jsys)
435435
X0 = 0.0; Y0 = 0.0
436436
u0 = [X => X0, Y => Y0]
437437
k1val = 1.0; k2val = 20.0
438438
p = [k1 => k1val, k2 => k2val]
439-
tspan = (0.0, 20.0)
439+
tspan = (0.0, 10.0)
440440
oprob = ODEProblem(jsys, u0, tspan, p)
441-
jprob = JumpProblem(jsys, oprob; rng)
441+
jprob = JumpProblem(jsys, oprob; rng, save_positions = (false, false))
442442

443-
times = range(0.0, 20.0, length = 100)
443+
times = range(0.0, tspan[2], length = 100)
444444
Nsims = 2000
445-
X = zeros(length(times))
446-
Y = similar(X)
445+
Xv = zeros(length(times))
446+
Yv = copy(Xv)
447447
for n in 1:Nsims
448-
sol = solve(jprob, Tsit5())
449-
X .+= Array(sol(times; idxs = X))
450-
Y .+= Array(sol(times; idxs = Y))
448+
sol = solve(jprob, Tsit5(); saveat = times)
449+
Xv .+= sol[1,:] #sol(times; idxs = X)
450+
Yv .+= sol[2,:] #sol(times; idxs = Y)
451451
end
452-
X ./= Nsims; Y ./= Nsims;
452+
Xv ./= Nsims; Yv ./= Nsims;
453453

454454
Xact(t) = X0 * exp(-k1val * t) + (k2val / k1val) * (1 - exp(-k1val * t))
455-
Yact(t) = Y0 * exp(-k2val/100 * t) + (k1 / (k2val/100)) * (1 - exp(-k2val/100 * t))
456-
457-
@test all(abs.(X .- Xact.(times)) .<= 0.05 .* X)
458-
@test all(abs.(Y .- Yact.(times)) .<= 0.05 .* Y)
459-
455+
Yact(t) = Y0 * exp(-k2val/100 * t) + (k1val / (k2val/100)) * (1 - exp(-k2val/100 * t))
456+
@test all(abs.(Xv .- Xact.(times)) .<= 0.05 .* Xv)
457+
@test all(abs.(Yv .- Yact.(times)) .<= 0.05 .* Yv)
460458
end

0 commit comments

Comments
 (0)