@@ -426,7 +426,7 @@ struct SymbolicDiscreteCallback <: AbstractCallback
426426 reinitializealg:: SciMLBase.DAEInitializationAlgorithm
427427
428428 function SymbolicDiscreteCallback (
429- condition:: Union{Number, Vector{<:Number}} , affect = nothing ;
429+ condition:: Union{Symbolic{Bool}, Number, Vector{<:Number}} , affect = nothing ;
430430 initialize = nothing , finalize = nothing ,
431431 reinitializealg = nothing , kwargs... )
432432 c = is_timed_condition (condition) ? condition : value (scalarize (condition))
@@ -468,10 +468,17 @@ function is_timed_condition(condition::T) where {T}
468468 end
469469end
470470
471- to_cb_vector (cbs:: Vector{<:AbstractCallback} ) = cbs
472- to_cb_vector (cbs:: Vector ) = Vector {AbstractCallback} (cbs)
473- to_cb_vector (cbs:: Nothing ) = AbstractCallback[]
474- to_cb_vector (cb:: AbstractCallback ) = [cb]
471+ to_cb_vector (cbs:: Vector{<:AbstractCallback} ; kwargs... ) = cbs
472+ to_cb_vector (cbs:: Union{Nothing, Vector{Nothing}} ; kwargs... ) = AbstractCallback[]
473+ to_cb_vector (cb:: AbstractCallback ; kwargs... ) = [cb]
474+ function to_cb_vector (cbs; CB_TYPE = SymbolicContinuousCallback, kwargs... )
475+ if cbs isa Pair
476+ @show cbs
477+ [CB_TYPE (cbs; kwargs... )]
478+ else
479+ Vector {CB_TYPE} ([CB_TYPE (cb; kwargs... ) for cb in cbs])
480+ end
481+ end
475482
476483# ###########################################
477484# ######### Namespacing Utilities ###########
@@ -906,10 +913,10 @@ function compile_equational_affect(
906913
907914 u_up, u_up! = build_function_wrapper (sys, (@view rhss[is_u]), dvs, _ps... , t;
908915 wrap_code = add_integrator_header (sys, integ, :u ),
909- expression = Val{false }, outputidxs = u_idxs, wrap_mtkparameters)
916+ expression = Val{false }, outputidxs = u_idxs, wrap_mtkparameters, cse = false )
910917 p_up, p_up! = build_function_wrapper (sys, (@view rhss[is_p]), dvs, _ps... , t;
911918 wrap_code = add_integrator_header (sys, integ, :p ),
912- expression = Val{false }, outputidxs = p_idxs, wrap_mtkparameters)
919+ expression = Val{false }, outputidxs = p_idxs, wrap_mtkparameters, cse = false )
913920
914921 return function explicit_affect! (integ)
915922 isempty (dvs_to_update) || u_up! (integ)
@@ -934,7 +941,10 @@ function compile_equational_affect(
934941 end
935942 affprob = ImplicitDiscreteProblem (affsys, u0, (integ. t, integ. t), pmap;
936943 build_initializeprob = false , check_length = false )
944+ @show pmap
945+ @show u0
937946 affsol = init (affprob, IDSolve ())
947+ @show affsol
938948 (check_error (affsol) === ReturnCode. InitialFailure) &&
939949 throw (UnsolvableCallbackError (all_equations (aff)))
940950 for u in dvs_to_update
0 commit comments