@@ -69,7 +69,6 @@ discretes(a::AffectSystem) = a.discretes
6969unknowns (a:: AffectSystem ) = a. unknowns
7070parameters (a:: AffectSystem ) = a. parameters
7171aff_to_sys (a:: AffectSystem ) = a. aff_to_sys
72- previous_vals (a:: AffectSystem ) = parameters (system (a))
7372all_equations (a:: AffectSystem ) = vcat (equations (system (a)), observed (system (a)))
7473
7574function Base. show (iio:: IO , aff:: AffectSystem )
@@ -149,7 +148,6 @@ function (p::Pre)(x)
149148 end
150149 return result
151150end
152-
153151haspre (eq:: Equation ) = haspre (eq. lhs) || haspre (eq. rhs)
154152haspre (O) = recursive_hasoperator (Pre, O)
155153
247245function SymbolicContinuousCallback (p:: Pair , args... ; kwargs... )
248246 SymbolicContinuousCallback (p[1 ], p[2 ], args... ; kwargs... )
249247end
250-
251- function SymbolicContinuousCallback (cb:: SymbolicContinuousCallback , args... ;
252- iv = nothing , alg_eqs = Equation[], kwargs... )
253- cb
254- end
248+ SymbolicContinuousCallback (cb:: SymbolicContinuousCallback , args... ; kwargs... ) = cb
249+ SymbolicContinuousCallback (cb:: Nothing , args... ; kwargs... ) = nothing
255250
256251make_affect (affect:: Nothing ; kwargs... ) = nothing
257252make_affect (affect:: Tuple ; kwargs... ) = FunctionalAffect (affect... )
@@ -310,7 +305,6 @@ function make_affect(affect::Vector{Equation}; discrete_parameters = Any[],
310305
311306 # add scalarized unknowns to the map.
312307 _dvs = reduce (vcat, map (scalarize, _dvs), init = Any[])
313- @show _dvs
314308 for u in _dvs
315309 aff_map[u] = u
316310 end
@@ -323,25 +317,6 @@ function make_affect(affect; kwargs...)
323317 error (" Malformed affect $(affect) . This should be a vector of equations or a tuple specifying a functional affect." )
324318end
325319
326- """
327- Generate continuous callbacks.
328- """
329- function SymbolicContinuousCallbacks (events; discrete_parameters = Any[],
330- alg_eqs:: Vector{Equation} = Equation[], iv = nothing )
331- callbacks = SymbolicContinuousCallback[]
332- isnothing (events) && return callbacks
333-
334- events isa AbstractVector || (events = [events])
335- isempty (events) && return callbacks
336-
337- for event in events
338- cond, affs = event isa Pair ? (event[1 ], event[2 ]) : (event, nothing )
339- push! (callbacks,
340- SymbolicContinuousCallback (cond, affs; iv, alg_eqs, discrete_parameters))
341- end
342- callbacks
343- end
344-
345320function Base. show (io:: IO , cb:: AbstractCallback )
346321 indent = get (io, :indent , 0 )
347322 iio = IOContext (io, :indent => indent + 1 )
422397# ###############################
423398# ####### Discrete events #######
424399# ###############################
425-
426- # TODO : Iterative callbacks
427400"""
428401 SymbolicDiscreteCallback(conditions::Vector{Equation}, affect = nothing, iv = nothing;
429402 initialize = nothing, finalize = nothing, alg_eqs = Equation[])
@@ -468,25 +441,7 @@ function SymbolicDiscreteCallback(p::Pair, args...; kwargs...)
468441 SymbolicDiscreteCallback (p[1 ], p[2 ], args... ; kwargs... )
469442end
470443SymbolicDiscreteCallback (cb:: SymbolicDiscreteCallback , args... ; kwargs... ) = cb
471-
472- """
473- Generate discrete callbacks.
474- """
475- function SymbolicDiscreteCallbacks (events; discrete_parameters:: Vector = Any[],
476- alg_eqs:: Vector{Equation} = Equation[], iv = nothing )
477- callbacks = SymbolicDiscreteCallback[]
478-
479- isnothing (events) && return callbacks
480- events isa AbstractVector || (events = [events])
481- isempty (events) && return callbacks
482-
483- for event in events
484- cond, affs = event isa Pair ? (event[1 ], event[2 ]) : (event, nothing )
485- push! (callbacks,
486- SymbolicDiscreteCallback (cond, affs; iv, alg_eqs, discrete_parameters))
487- end
488- callbacks
489- end
444+ SymbolicDiscreteCallback (cb:: Nothing , args... ; kwargs... ) = nothing
490445
491446function is_timed_condition (condition:: T ) where {T}
492447 if T === Num
@@ -500,10 +455,14 @@ function is_timed_condition(condition::T) where {T}
500455 end
501456end
502457
458+ to_cb_vector (cbs:: Vector{<:AbstractCallback} ) = cbs
459+ to_cb_vector (cbs:: Vector ) = Vector {AbstractCallback} (cbs)
460+ to_cb_vector (cbs:: Nothing ) = AbstractCallback[]
461+ to_cb_vector (cb:: AbstractCallback ) = [cb]
462+
503463# ###########################################
504464# ######### Namespacing Utilities ###########
505465# ###########################################
506-
507466function namespace_affects (affect:: FunctionalAffect , s)
508467 FunctionalAffect (func (affect),
509468 renamespace .((s,), unknowns (affect)),
@@ -530,7 +489,7 @@ function namespace_callback(cb::SymbolicContinuousCallback, s)::SymbolicContinuo
530489 affect_neg = namespace_affects (affect_negs (cb), s),
531490 initialize = namespace_affects (initialize_affects (cb), s),
532491 finalize = namespace_affects (finalize_affects (cb), s),
533- rootfind = cb. rootfind)
492+ rootfind = cb. rootfind, reinitializealg = cb . reinitializealg )
534493end
535494
536495function namespace_conditions (condition, s)
@@ -542,7 +501,7 @@ function namespace_callback(cb::SymbolicDiscreteCallback, s)::SymbolicDiscreteCa
542501 namespace_conditions (conditions (cb), s),
543502 namespace_affects (affects (cb), s),
544503 initialize = namespace_affects (initialize_affects (cb), s),
545- finalize = namespace_affects (finalize_affects (cb), s))
504+ finalize = namespace_affects (finalize_affects (cb), s), reinitializealg = cb . reinitializealg )
546505end
547506
548507function Base. hash (cb:: AbstractCallback , s:: UInt )
0 commit comments