Build and simulate jump equations like Gillespie simulations and jump diffusions with constant and state-dependent rates and mix with differential equations and scientific machine learning (SciML)
using JumpProcesses
rate(u, p, t; debug=true) = 5.0
function affect!(integrator)
integrator.u[1] += 1
nothing
end
jump = VariableRateJump(rate, affect!; urate=(u,p,t)->10.0, rateinterval=(u,p,t)->0.1)
prob = DiscreteProblem([0.0], (0.0, 2.0), [1.0])
jump_prob_c = JumpProblem(prob, Coevolve(), jump; dep_graph=[[1]])
sol_c = solve(jump_prob_c, SSAStepper()) # this line has to exist, else we don't error at the end...
function terminate_condition(u, t, integrator)
return u[1] >= 1
end
function terminate_affect!(integrator)
terminate!(integrator)
end
terminate_cb = DiscreteCallback(terminate_condition, terminate_affect!)
solve(jump_prob_c, SSAStepper(); callback=terminate_cb)
MWE on v9.6.3
Error: