@@ -426,7 +426,7 @@ struct SymbolicDiscreteCallback <: AbstractCallback
426
426
reinitializealg:: SciMLBase.DAEInitializationAlgorithm
427
427
428
428
function SymbolicDiscreteCallback (
429
- condition:: Union{Number, Vector{<:Number}} , affect = nothing ;
429
+ condition:: Union{Symbolic{Bool}, Number, Vector{<:Number}} , affect = nothing ;
430
430
initialize = nothing , finalize = nothing ,
431
431
reinitializealg = nothing , kwargs... )
432
432
c = is_timed_condition (condition) ? condition : value (scalarize (condition))
@@ -468,10 +468,17 @@ function is_timed_condition(condition::T) where {T}
468
468
end
469
469
end
470
470
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
475
482
476
483
# ###########################################
477
484
# ######### Namespacing Utilities ###########
@@ -906,10 +913,10 @@ function compile_equational_affect(
906
913
907
914
u_up, u_up! = build_function_wrapper (sys, (@view rhss[is_u]), dvs, _ps... , t;
908
915
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 )
910
917
p_up, p_up! = build_function_wrapper (sys, (@view rhss[is_p]), dvs, _ps... , t;
911
918
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 )
913
920
914
921
return function explicit_affect! (integ)
915
922
isempty (dvs_to_update) || u_up! (integ)
@@ -934,7 +941,10 @@ function compile_equational_affect(
934
941
end
935
942
affprob = ImplicitDiscreteProblem (affsys, u0, (integ. t, integ. t), pmap;
936
943
build_initializeprob = false , check_length = false )
944
+ @show pmap
945
+ @show u0
937
946
affsol = init (affprob, IDSolve ())
947
+ @show affsol
938
948
(check_error (affsol) === ReturnCode. InitialFailure) &&
939
949
throw (UnsolvableCallbackError (all_equations (aff)))
940
950
for u in dvs_to_update
0 commit comments