1- # ################################### system operations #####################################
1+ # ################################### System operations #####################################
22has_continuous_events (sys:: AbstractSystem ) = isdefined (sys, :continuous_events )
33function get_continuous_events (sys:: AbstractSystem )
44 has_continuous_events (sys) || return SymbolicContinuousCallback[]
@@ -11,6 +11,35 @@ function get_discrete_events(sys::AbstractSystem)
1111 getfield (sys, :discrete_events )
1212end
1313
14+ struct Callback
15+ eqs:: Vector{Equation}
16+ initialize:: Union{ImplicitDiscreteSystem, FunctionalAffect, ImperativeAffect}
17+ finalize:: ImplicitDiscreteSystem
18+ affect:: ImplicitDiscreteSystem
19+ affect_neg:: ImplicitDiscreteSystem
20+ rootfind:: Union{Nothing, SciMLBase.RootfindOpt}
21+ end
22+
23+ # Callbacks:
24+ # mapping (cond) => ImplicitDiscreteSystem
25+ function generate_continuous_callbacks (events, sys)
26+ algeeqs = alg_equations (sys)
27+ callbacks = Callback[]
28+ for (cond, aff) in events
29+ @mtkbuild affect = ImplicitDiscreteSystem ([aff, algeeqs], t)
30+ push! (callbacks, Callback (cond, NULL_AFFECT, NULL_AFFECT, affect, affect, SciMLBase. LeftRootFind))
31+ end
32+ callbacks
33+ end
34+
35+ function generate_discrete_callback_system (events, sys)
36+ end
37+
38+ function generate_callback_function ()
39+
40+ end
41+
42+ # ############ Old implementation ###
1443struct FunctionalAffect
1544 f:: Any
1645 sts:: Vector
0 commit comments