Skip to content

Commit 5b97ebb

Browse files
committed
init
1 parent af3995c commit 5b97ebb

File tree

1 file changed

+30
-1
lines changed

1 file changed

+30
-1
lines changed

src/systems/callbacks.jl

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#################################### system operations #####################################
1+
#################################### System operations #####################################
22
has_continuous_events(sys::AbstractSystem) = isdefined(sys, :continuous_events)
33
function 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)
1212
end
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 ###
1443
struct FunctionalAffect
1544
f::Any
1645
sts::Vector

0 commit comments

Comments
 (0)