11# ################################### system operations #####################################
22get_continuous_events (sys:: AbstractSystem ) = SymbolicContinuousCallback[]
3- get_continuous_events (sys:: AbstractODESystem ) = getfield (sys, :continuous_events )
3+ get_continuous_events (sys:: AbstractTimeDependentSystem ) = getfield (sys, :continuous_events )
44has_continuous_events (sys:: AbstractSystem ) = isdefined (sys, :continuous_events )
55
66has_discrete_events (sys:: AbstractSystem ) = isdefined (sys, :discrete_events )
@@ -560,7 +560,7 @@ function compile_affect(eqs::Vector{Equation}, cb, sys, dvs, ps; outputidxs = no
560560 end
561561end
562562
563- function generate_rootfinding_callback (sys:: AbstractODESystem , dvs = unknowns (sys),
563+ function generate_rootfinding_callback (sys:: AbstractTimeDependentSystem , dvs = unknowns (sys),
564564 ps = parameters (sys); kwargs... )
565565 cbs = continuous_events (sys)
566566 isempty (cbs) && return nothing
@@ -571,7 +571,7 @@ Generate a single rootfinding callback; this happens if there is only one equati
571571generate_rootfinding_callback and thus we can produce a ContinuousCallback instead of a VectorContinuousCallback.
572572"""
573573function generate_single_rootfinding_callback (
574- eq, cb, sys:: AbstractODESystem , dvs = unknowns (sys),
574+ eq, cb, sys:: AbstractTimeDependentSystem , dvs = unknowns (sys),
575575 ps = parameters (sys); kwargs... )
576576 if ! isequal (eq. lhs, 0 )
577577 eq = 0 ~ eq. lhs - eq. rhs
@@ -609,7 +609,7 @@ function generate_single_rootfinding_callback(
609609end
610610
611611function generate_vector_rootfinding_callback (
612- cbs, sys:: AbstractODESystem , dvs = unknowns (sys),
612+ cbs, sys:: AbstractTimeDependentSystem , dvs = unknowns (sys),
613613 ps = parameters (sys); rootfind = SciMLBase. RightRootFind,
614614 reinitialization = SciMLBase. CheckInit (), kwargs... )
615615 eqs = map (cb -> flatten_equations (cb. eqs), cbs)
683683"""
684684Compile a single continuous callback affect function(s).
685685"""
686- function compile_affect_fn (cb, sys:: AbstractODESystem , dvs, ps, kwargs)
686+ function compile_affect_fn (cb, sys:: AbstractTimeDependentSystem , dvs, ps, kwargs)
687687 eq_aff = affects (cb)
688688 eq_neg_aff = affect_negs (cb)
689689 affect = compile_affect (eq_aff, cb, sys, dvs, ps; expression = Val{false }, kwargs... )
@@ -698,7 +698,7 @@ function compile_affect_fn(cb, sys::AbstractODESystem, dvs, ps, kwargs)
698698 (affect = affect, affect_neg = affect_neg)
699699end
700700
701- function generate_rootfinding_callback (cbs, sys:: AbstractODESystem , dvs = unknowns (sys),
701+ function generate_rootfinding_callback (cbs, sys:: AbstractTimeDependentSystem , dvs = unknowns (sys),
702702 ps = parameters (sys); kwargs... )
703703 eqs = map (cb -> flatten_equations (cb. eqs), cbs)
704704 num_eqs = length .(eqs)
@@ -859,12 +859,12 @@ merge_cb(x, ::Nothing) = x
859859merge_cb (x, y) = CallbackSet (x, y)
860860
861861function process_events (sys; callback = nothing , kwargs... )
862- if has_continuous_events (sys)
862+ if has_continuous_events (sys) && ! isempty ( continuous_events (sys))
863863 contin_cb = generate_rootfinding_callback (sys; kwargs... )
864864 else
865865 contin_cb = nothing
866866 end
867- if has_discrete_events (sys)
867+ if has_discrete_events (sys) && ! isempty ( discrete_events (sys))
868868 discrete_cb = generate_discrete_callbacks (sys; kwargs... )
869869 else
870870 discrete_cb = nothing
0 commit comments