Skip to content

Commit aa0ab70

Browse files
committed
Fix finalization
1 parent b4893a3 commit aa0ab70

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

src/systems/callbacks.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -275,7 +275,7 @@ function initialize_affects(cbs::Vector{SymbolicContinuousCallback})
275275
mapreduce(initialize_affects, vcat, cbs, init = Equation[])
276276
end
277277

278-
finalize_affects(cb::SymbolicContinuousCallback) = cb.initialize
278+
finalize_affects(cb::SymbolicContinuousCallback) = cb.finalize
279279
function finalize_affects(cbs::Vector{SymbolicContinuousCallback})
280280
mapreduce(finalize_affects, vcat, cbs, init = Equation[])
281281
end

test/symbolic_events.jl

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -970,6 +970,20 @@ end
970970
@test sol[c] == [0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
971971
end
972972

973+
974+
@testset "Initialization" begin
975+
@variables x(t)
976+
seen = false
977+
f = ModelingToolkit.FunctionalAffect(f=(i,u,p,c)->seen=true, sts=[], pars=[], discretes=[])
978+
cb1 = ModelingToolkit.SymbolicContinuousCallback([x ~ 0], Equation[], initialize=[x~1.5], finalize=f)
979+
@mtkbuild sys = ODESystem(D(x) ~ -1, t, [x], []; continuous_events = [cb1])
980+
prob = ODEProblem(sys, [x => 1.0], (0.0, 2), [])
981+
sol = solve(prob, Tsit5(); dtmax=0.01)
982+
@test sol[x][1] 1.0
983+
@test sol[x][2] 1.5 # the initialize affect has been applied
984+
@test seen == true
985+
end
986+
973987
@testset "Bump" begin
974988
@variables x(t) [irreducible = true] y(t) [irreducible = true]
975989
eqs = [x ~ y, D(x) ~ -1]

0 commit comments

Comments
 (0)