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