Skip to content

Commit 00cc075

Browse files
fix: make array hack also search callbacks
1 parent 924169b commit 00cc075

File tree

1 file changed

+7
-2
lines changed

1 file changed

+7
-2
lines changed

src/structural_transformation/symbolics_tearing.jl

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -593,7 +593,7 @@ function tearing_reassemble(state::TearingState, var_eq_matching,
593593
@set! sys.unknowns = unknowns
594594

595595
obs, subeqs, deps = cse_and_array_hacks(
596-
obs, subeqs, unknowns, neweqs; cse = cse_hack, array = array_hack)
596+
sys, obs, subeqs, unknowns, neweqs; cse = cse_hack, array = array_hack)
597597

598598
@set! sys.eqs = neweqs
599599
@set! sys.observed = obs
@@ -627,7 +627,7 @@ if all `p[i]` are present and the unscalarized form is used in any equation (obs
627627
not) we first count the number of times the scalarized form of each observed variable
628628
occurs in observed equations (and unknowns if it's split).
629629
"""
630-
function cse_and_array_hacks(obs, subeqs, unknowns, neweqs; cse = true, array = true)
630+
function cse_and_array_hacks(sys, obs, subeqs, unknowns, neweqs; cse = true, array = true)
631631
# HACK 1
632632
# mapping of rhs to temporary CSE variable
633633
# `f(...) => tmpvar` in above example
@@ -725,6 +725,11 @@ function cse_and_array_hacks(obs, subeqs, unknowns, neweqs; cse = true, array =
725725
for eq in neweqs
726726
vars!(all_vars, eq.rhs)
727727
end
728+
729+
# also count unscalarized variables used in callbacks
730+
for ev in Iterators.flatten((continuous_events(sys), discrete_events(sys)))
731+
vars!(all_vars, ev)
732+
end
728733
obs_arr_eqs = Equation[]
729734
for (arrvar, cnt) in arr_obs_occurrences
730735
cnt == length(arrvar) || continue

0 commit comments

Comments
 (0)