Skip to content

Commit d6fc20e

Browse files
committed
fix: fix JumpSystem and don't use is_diff_equation
1 parent 4715fd1 commit d6fc20e

File tree

3 files changed

+14
-12
lines changed

3 files changed

+14
-12
lines changed

src/systems/callbacks.jl

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -355,8 +355,8 @@ function vars!(vars, cb::SymbolicContinuousCallback; op = Differential)
355355
vars!(vars, eq; op)
356356
end
357357
for aff in (affects(cb), affect_negs(cb), initialize_affects(cb), finalize_affects(cb))
358-
if aff isa Vector{Equation}
359-
for eq in aff
358+
if aff isa AffectSystem
359+
for eq in vcat(observed(system(aff)), equations(system(aff)))
360360
vars!(vars, eq; op)
361361
end
362362
elseif aff !== nothing
@@ -453,18 +453,18 @@ function Base.show(io::IO, db::SymbolicDiscreteCallback)
453453
end
454454

455455
function vars!(vars, cb::SymbolicDiscreteCallback; op = Differential)
456-
if symbolic_type(cb.condition) == NotSymbolic
457-
if cb.condition isa AbstractArray
458-
for eq in cb.condition
456+
if symbolic_type(conditions(cb)) == NotSymbolic
457+
if conditions(cb) isa AbstractArray
458+
for eq in conditions(cb)
459459
vars!(vars, eq; op)
460460
end
461461
end
462462
else
463-
vars!(vars, cb.condition; op)
463+
vars!(vars, conditions(cb); op)
464464
end
465-
for aff in (cb.affects, cb.initialize, cb.finalize)
466-
if aff isa Vector{Equation}
467-
for eq in aff
465+
for aff in (affects(cb), initialize_affects(cb), finalize_affects(cb))
466+
if aff isa AffectSystem
467+
for eq in vcat(observed(system(aff)), equations(system(aff)))
468468
vars!(vars, eq; op)
469469
end
470470
elseif aff !== nothing
@@ -709,7 +709,7 @@ function generate_callback(cbs::Vector{SymbolicContinuousCallback}, sys; kwargs.
709709
affect = compile_affect(cb.affect, cb, sys, default = (args...) -> ())
710710

711711
push!(affects, affect)
712-
push!(affect_negs, compile_affect(cb.affect_neg, cb, sys, default = affect))
712+
push!(affect_negs, compile_affect(cb.affect_neg, cb, sys, default = affect)
713713
push!(inits, compile_affect(cb.initialize, cb, sys, default = nothing))
714714
push!(finals, compile_affect(cb.finalize, cb, sys, default = nothing))
715715
end
@@ -821,6 +821,8 @@ function compile_affect(
821821
for idx in save_idxs
822822
SciMLBase.save_discretes!(integ, idx)
823823
end
824+
825+
sys isa JumpSystem && reset_aggregated_jumps!(integrator)
824826
end
825827
elseif aff isa FunctionalAffect || aff isa ImperativeAffect
826828
compile_functional_affect(aff, cb, sys, dvs, ps; kwargs...)

src/systems/diffeqs/odesystem.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -297,7 +297,7 @@ function ODESystem(deqs::AbstractVector{<:Equation}, iv, dvs, ps;
297297
throw(ArgumentError("System names must be unique."))
298298
end
299299

300-
algeeqs = filter(is_alg_equation, deqs)
300+
alg_eqs = filter(eq -> eq.lhs isa Union{Symbolic, Number} && !isdiffeq(eq), deqs)
301301
cont_callbacks = SymbolicContinuousCallbacks(continuous_events, algeeqs)
302302
disc_callbacks = SymbolicDiscreteCallbacks(discrete_events, algeeqs)
303303

src/systems/diffeqs/sdesystem.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -264,7 +264,7 @@ function SDESystem(deqs::AbstractVector{<:Equation}, neqs::AbstractArray, iv, dv
264264
Wfact = RefValue(EMPTY_JAC)
265265
Wfact_t = RefValue(EMPTY_JAC)
266266

267-
algeeqs = filter(is_alg_equation, deqs)
267+
alg_eqs = filter(eq -> eq.lhs isa Union{Symbolic, Number} && !isdiffeq(eq), deqs)
268268
cont_callbacks = SymbolicContinuousCallbacks(continuous_events, algeeqs)
269269
disc_callbacks = SymbolicDiscreteCallbacks(discrete_events, algeeqs)
270270
if is_dde === nothing

0 commit comments

Comments
 (0)