Skip to content

Commit 42f4b66

Browse files
committed
Add ODE, SDE, Discrete, and Jump problems for ReactionSystems.
1 parent 6afdbd2 commit 42f4b66

File tree

1 file changed

+23
-0
lines changed

1 file changed

+23
-0
lines changed

src/systems/reaction/reactionsystem.jl

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -327,3 +327,26 @@ function make_sub!(eq,states_swaps)
327327
end
328328
return eq
329329
end
330+
331+
### Converts a reaxction system to ODe or SDE problems ###
332+
333+
# ODEProblem from AbstractReactionNetwork
334+
function DiffEqBase.ODEProblem(rs::ReactionSystem, u0::Union{AbstractArray, Number}, tspan, p, args...; kwargs...)
335+
return ODEProblem(convert(ODESystem,rs),Pair.(rs.states,u0),tspan,Pair.(rs.ps,p), args...; kwargs...)
336+
end
337+
338+
# SDEProblem from AbstractReactionNetwork
339+
function DiffEqBase.SDEProblem(rs::ReactionSystem, u0::Union{AbstractArray, Number}, tspan, p, args...; kwargs...)
340+
p_matrix = zeros(length(rs.states), length(rs.eqs))
341+
return SDEProblem(convert(SDESystem,rs),Pair.(rs.states,u0),tspan,Pair.(rs.ps,p),args...; noise_rate_prototype=p_matrix,kwargs...)
342+
end
343+
344+
# DiscreteProblem from AbstractReactionNetwork
345+
function DiffEqBase.DiscreteProblem(rs::ReactionSystem, u0, tspan::Tuple, p=nothing, args...; kwargs...)
346+
return DiscreteProblem(convert(JumpSystem,rs), Pair.(rs.states,u0),tspan,Pair.(rs.ps,p), args...; kwargs...)
347+
end
348+
349+
# JumpProblem from AbstractReactionNetwork
350+
function DiffEqJump.JumpProblem(prob, aggregator, rs::ReactionSystem, args...; kwargs...)
351+
return JumpProblem(convert(JumpSystem,rs), prob, aggregator, args...; kwargs...)
352+
end

0 commit comments

Comments
 (0)