Skip to content

Commit f5571ea

Browse files
author
dd
committed
tests work now
1 parent 94d7021 commit f5571ea

File tree

2 files changed

+8
-5
lines changed

2 files changed

+8
-5
lines changed

src/systems/callbacks.jl

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -73,14 +73,12 @@ end
7373
const NULL_AFFECT = Equation[]
7474
struct SymbolicContinuousCallback
7575
eqs::Vector{Equation}
76-
affect
76+
affect::Union{Vector{Equation}, FunctionalAffect}
7777
function SymbolicContinuousCallback(eqs::Vector{Equation}, affect = NULL_AFFECT)
7878
new(eqs, affect)
7979
end # Default affect to nothing
8080
end
8181

82-
SymbolicContinuousCallback(eqs::Vector{Equation}, affect::Function) = SymbolicContinuousCallback(eqs, SymbolicContinuousCallback(affect))
83-
8482
function Base.:(==)(e1::SymbolicContinuousCallback, e2::SymbolicContinuousCallback)
8583
isequal(e1.eqs, e2.eqs) && isequal(e1.affect, e2.affect)
8684
end
@@ -123,9 +121,12 @@ function affects(cbs::Vector{SymbolicContinuousCallback})
123121
reduce(vcat, [affects(cb) for cb in cbs])
124122
end
125123

124+
namespace_affects(af::Vector, s) = Equation[namespace_affact(a, s) for a in af]
125+
namespace_affects(af::FunctionalAffect, s) = namespace_affect(af, s)
126+
126127
function namespace_callback(cb::SymbolicContinuousCallback, s)::SymbolicContinuousCallback
127128
SymbolicContinuousCallback(namespace_equation.(equations(cb), (s,)),
128-
namespace_affect.(affects(cb), (s,)))
129+
namespace_affects(affects(cb), s))
129130
end
130131

131132
cb_add_context(cb::SymbolicContinuousCallback, s) = SymbolicContinuousCallback(equations(cb), af_add_context(affects(cb), s))
@@ -164,6 +165,7 @@ end
164165
is_timed_condition(cb) = false
165166
is_timed_condition(::R) where {R<:Real} = true
166167
is_timed_condition(::V) where {V<:AbstractVector} = eltype(V) <: Real
168+
is_timed_condition(::Num) = false
167169
is_timed_condition(cb::SymbolicDiscreteCallback) = is_timed_condition(condition(cb))
168170

169171
scalarize_condition(condition) = is_timed_condition(condition) ? condition : value(scalarize(condition))
@@ -368,7 +370,7 @@ function generate_rootfinding_callback(cbs, sys::AbstractODESystem, dvs = states
368370
rf_oop, rf_ip = build_function(rhss, u, p, t; expression = Val{false}, kwargs...)
369371

370372
affect_functions = map(cbs) do cb # Keep affect function separate
371-
eq_aff = affect_equations(cb)
373+
eq_aff = affects(cb)
372374
affect = compile_affect(eq_aff, sys, dvs, ps; expression = Val{false}, kwargs...)
373375
end
374376

test/runtests.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ println("Last test requires gcc available in the path!")
4444
@safetestset "state_selection" begin include("state_selection.jl") end
4545
@safetestset "Modelingtoolkitize Test" begin include("modelingtoolkitize.jl") end
4646
@safetestset "OptimizationSystem Test" begin include("optimizationsystem.jl") end
47+
@safetestset "FuncAffect Test" begin include("funcaffect.jl") end
4748

4849
# Reference tests go Last
4950
@safetestset "Latexify recipes Test" begin include("latexify.jl") end

0 commit comments

Comments
 (0)