@@ -194,16 +194,19 @@ function JumpSystem(eqs, iv, unknowns, ps;
194
194
# this and the treatment of continuous events are the only part
195
195
# unique to JumpSystems
196
196
eqs = scalarize .(eqs)
197
- ap = ArrayPartition (MassActionJump[], ConstantRateJump[], VariableRateJump[])
197
+ ap = ArrayPartition (
198
+ MassActionJump[], ConstantRateJump[], VariableRateJump[], Equation[])
198
199
for eq in eqs
199
200
if eq isa MassActionJump
200
201
push! (ap. x[1 ], eq)
201
202
elseif eq isa ConstantRateJump
202
203
push! (ap. x[2 ], eq)
203
204
elseif eq isa VariableRateJump
204
205
push! (ap. x[3 ], eq)
206
+ elseif eq isa Equation
207
+ push! (ap. x[4 ], eq)
205
208
else
206
- error (" JumpSystem equations must contain MassActionJumps, ConstantRateJumps, or VariableRateJumps ." )
209
+ error (" JumpSystem equations must contain MassActionJumps, ConstantRateJumps, VariableRateJumps, or Equations ." )
207
210
end
208
211
end
209
212
245
248
has_massactionjumps (js:: JumpSystem ) = ! isempty (equations (js). x[1 ])
246
249
has_constantratejumps (js:: JumpSystem ) = ! isempty (equations (js). x[2 ])
247
250
has_variableratejumps (js:: JumpSystem ) = ! isempty (equations (js). x[3 ])
251
+ has_equations (js:: JumpSystem ) = ! isempty (equations (js). x[4 ])
248
252
249
253
function generate_rate_function (js:: JumpSystem , rate)
250
254
consts = collect_constants (rate)
@@ -390,6 +394,11 @@ function DiffEqBase.DiscreteProblem(sys::JumpSystem, u0map, tspan::Union{Tuple,
390
394
if ! iscomplete (sys)
391
395
error (" A completed `JumpSystem` is required. Call `complete` or `structural_simplify` on the system before creating a `DiscreteProblem`" )
392
396
end
397
+
398
+ if has_equations (sys)
399
+ error (" The passed in JumpSystem contains `Equations`, please use a problem type that supports equations such as such as ODEProblem." )
400
+ end
401
+
393
402
_, u0, p = process_SciMLProblem (EmptySciMLFunction, sys, u0map, parammap;
394
403
t = tspan === nothing ? nothing : tspan[1 ], use_union, tofloat = false , check_length = false )
395
404
f = DiffEqBase. DISCRETE_INPLACE_DEFAULT
0 commit comments