Skip to content

Commit ddac612

Browse files
fix: don't use isparameter in find_eq_solvables!
1 parent b729622 commit ddac612

File tree

2 files changed

+10
-3
lines changed

2 files changed

+10
-3
lines changed

src/structural_transformation/StructuralTransformations.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ using ModelingToolkit: algeqs, EquationsView,
4040
dervars_range, diffvars_range, algvars_range,
4141
DiffGraph, complete!,
4242
get_fullvars, system_subset
43+
using SymbolicIndexingInterface: symbolic_type, ArraySymbolic
4344

4445
using ModelingToolkit.DiffEqBase
4546
using ModelingToolkit.StaticArrays

src/structural_transformation/utils.jl

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -228,9 +228,15 @@ function find_eq_solvables!(state::TearingState, ieq, to_rm = Int[], coeffs = no
228228
all_int_vars = false
229229
if !allow_symbolic
230230
if allow_parameter
231-
all(
232-
x -> ModelingToolkit.isparameter(x),
233-
vars(a)) || continue
231+
# if any of the variables in `a` are present in fullvars (taking into account arrays)
232+
if any(
233+
v -> any(isequal(v), fullvars) ||
234+
symbolic_type(v) == ArraySymbolic() &&
235+
Symbolics.shape(v) != Symbolics.Unknown() &&
236+
any(x -> any(isequal(x), fullvars), collect(v)),
237+
vars(a))
238+
continue
239+
end
234240
else
235241
continue
236242
end

0 commit comments

Comments
 (0)