Skip to content

Commit 70c1c8b

Browse files
committed
hashing for discrete cb conditions
1 parent 46778e3 commit 70c1c8b

File tree

2 files changed

+5
-3
lines changed

2 files changed

+5
-3
lines changed

src/systems/callbacks.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@ function Base.:(==)(e1::SymbolicDiscreteCallback, e2::SymbolicDiscreteCallback)
201201
isequal(e1.condition, e2.condition) && isequal(e1.affects, e2.affects)
202202
end
203203
function Base.hash(cb::SymbolicDiscreteCallback, s::UInt)
204-
s = foldr(hash, cb.condition, init = s)
204+
s = hash(cb.condition, s)
205205
cb.affects isa AbstractVector ? foldr(hash, cb.affects, init = s) : hash(cb.affects, s)
206206
end
207207

test/funcaffect.jl

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,20 +16,22 @@ i4 = findfirst(==(4.0), sol[:t])
1616
@test sol.u[i4 + 1][1] > 10.0
1717

1818
# callback
19-
cb = ModelingToolkit.SymbolicDiscreteCallback([t ~ 0],
19+
cb = ModelingToolkit.SymbolicDiscreteCallback(t == 0,
2020
(f = affect1!, sts = [], pars = [],
2121
ctx = [1]))
22-
cb1 = ModelingToolkit.SymbolicDiscreteCallback([t ~ 0], (affect1!, [], [], [1]))
22+
cb1 = ModelingToolkit.SymbolicDiscreteCallback(t == 0, (affect1!, [], [], [1]))
2323
@test ModelingToolkit.affects(cb) isa ModelingToolkit.FunctionalAffect
2424
@test cb == cb1
2525
@test ModelingToolkit.SymbolicDiscreteCallback(cb) === cb # passthrough
26+
@test hash(cb) == hash(cb1)
2627

2728
cb = ModelingToolkit.SymbolicContinuousCallback([t ~ 0],
2829
(f = affect1!, sts = [], pars = [],
2930
ctx = [1]))
3031
cb1 = ModelingToolkit.SymbolicContinuousCallback([t ~ 0], (affect1!, [], [], [1]))
3132
@test cb == cb1
3233
@test ModelingToolkit.SymbolicContinuousCallback(cb) === cb # passthrough
34+
@test hash(cb) == hash(cb1)
3335

3436
# named tuple
3537
sys1 = ODESystem(eqs, t, [u], [], name = :sys,

0 commit comments

Comments
 (0)