Skip to content

Commit 2c62ae2

Browse files
Merge pull request #379 from isaacsas/jumpsys-docs
JumpSystem docs
2 parents 86492db + d1c61df commit 2c62ae2

File tree

3 files changed

+72
-1
lines changed

3 files changed

+72
-1
lines changed

docs/make.jl

+1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ makedocs(
1515
"systems/AbstractSystem.md",
1616
"systems/ODESystem.md",
1717
"systems/SDESystem.md",
18+
"systems/JumpSystem.md",
1819
"systems/NonlinearSystem.md",
1920
"systems/OptimizationSystem.md",
2021
"systems/ReactionSystem.md",

docs/src/systems/JumpSystem.md

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# JumpSystem
2+
3+
## System Constructors
4+
5+
```@docs
6+
JumpSystem
7+
```
8+
9+
## Composition and Accessor Functions
10+
11+
- `sys.eqs` or `equations(sys)`: The equations that define the jump system.
12+
- `sys.states` or `states(sys)`: The set of states in the jump system.
13+
- `sys.parameters` or `parameters(sys)`: The parameters of the jump system.
14+
- `sys.iv` or `independent_variable(sys)`: The independent variable of the jump system.
15+
16+
## Problem Constructors
17+
18+
```@docs
19+
DiscreteProblem
20+
JumpProblem
21+
```

src/systems/jumps/jumpsystem.jl

+50-1
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,45 @@
11
JumpType = Union{VariableRateJump, ConstantRateJump, MassActionJump}
22

3+
"""
4+
$(TYPEDEF)
5+
6+
A system of jump processes.
7+
8+
# Fields
9+
$(FIELDS)
10+
11+
# Example
12+
13+
```
14+
using ModelingToolkit
15+
16+
@parameters β γ t
17+
@variables S I R
18+
rate₁ = β*S*I
19+
affect₁ = [S ~ S - 1, I ~ I + 1]
20+
rate₂ = γ*I
21+
affect₂ = [I ~ I - 1, R ~ R + 1]
22+
j₁ = ConstantRateJump(rate₁,affect₁)
23+
j₂ = ConstantRateJump(rate₂,affect₂)
24+
j₃ = MassActionJump(2*β+γ, [R => 1], [S => 1, R => -1])
25+
js = JumpSystem([j₁,j₂,j₃], t, [S,I,R], [β,γ])
26+
```
27+
"""
328
struct JumpSystem{U <: ArrayPartition} <: AbstractSystem
29+
"""
30+
The jumps of the system. Allowable types are `ConstantRateJump`,
31+
`VariableRateJump`, `MassActionJump`.
32+
"""
433
eqs::U
34+
"""The independent variable, usually time."""
535
iv::Variable
36+
"""The dependent variables, representing the state of the system."""
637
states::Vector{Variable}
38+
"""The parameters of the system."""
739
ps::Vector{Variable}
40+
"""The name of the system."""
841
name::Symbol
42+
"""The internal systems."""
943
systems::Vector{JumpSystem}
1044
end
1145

@@ -93,7 +127,16 @@ function DiffEqBase.DiscreteProblem(sys::AbstractSystem, u0map, tspan,
93127
parammap=DiffEqBase.NullParameters; kwargs...)
94128
```
95129
96-
Generates a DiscreteProblem from an AbstractSystem
130+
Generates a DiscreteProblem from an AbstractSystem.
131+
132+
Continuing the example from the [`JumpSystem`](@ref) definition:
133+
```julia
134+
using DiffEqBase, DiffEqJump
135+
u₀map = [S => 999, I => 1, R => 0]
136+
parammap = [β => .1/1000, γ => .01]
137+
tspan = (0.0, 250.0)
138+
dprob = DiscreteProblem(js, u₀map, tspan, parammap)
139+
```
97140
"""
98141
function DiffEqBase.DiscreteProblem(sys::AbstractSystem, u0map, tspan::Tuple,
99142
parammap=DiffEqBase.NullParameters(); kwargs...)
@@ -111,6 +154,12 @@ function DiffEqBase.JumpProblem(js::JumpSystem, prob, aggregator; kwargs...)
111154
```
112155
113156
Generates a JumpProblem from a JumpSystem.
157+
158+
Continuing the example from the [`DiscreteProblem`](@ref) definition:
159+
```julia
160+
jprob = JumpProblem(js, dprob, Direct())
161+
sol = solve(jprob, SSAStepper())
162+
```
114163
"""
115164
function DiffEqJump.JumpProblem(js::JumpSystem, prob, aggregator; kwargs...)
116165

0 commit comments

Comments
 (0)