@@ -1117,6 +1117,23 @@ function subexpressions_not_involving_vars!(expr, vars, state::Dict{Any, Any})
11171117 symtype (expr) <: Union{Real, AbstractArray{<:Real}} || return expr
11181118 Symbolics. shape (expr) == Symbolics. Unknown () && return expr
11191119 haskey (state, expr) && return state[expr]
1120+
1121+ op = operation (expr)
1122+ args = arguments (expr)
1123+ if op == StructuralTransformations. change_origin
1124+ newargs = map (args) do arg
1125+ if symbolic_type (arg) == NotSymbolic ()
1126+ if is_array_of_symbolics (arg)
1127+ return map (arg) do _arg
1128+ subexpressions_not_involving_vars! (_arg, vars, state)
1129+ end
1130+ end
1131+ return arg
1132+ end
1133+ subexpressions_not_involving_vars! (arg, vars, state)
1134+ end
1135+ return maketerm (typeof (expr), op, newargs, metadata (expr))
1136+ end
11201137 vs = ModelingToolkit. vars (expr)
11211138 intersect! (vs, vars)
11221139 if isempty (vs)
@@ -1126,8 +1143,6 @@ function subexpressions_not_involving_vars!(expr, vars, state::Dict{Any, Any})
11261143 state[expr] = var
11271144 return var
11281145 end
1129- op = operation (expr)
1130- args = arguments (expr)
11311146 if (op == (+ ) || op == (* )) && symbolic_type (expr) != = ArraySymbolic ()
11321147 indep_args = []
11331148 dep_args = []
@@ -1146,7 +1161,14 @@ function subexpressions_not_involving_vars!(expr, vars, state::Dict{Any, Any})
11461161 return op (indep_term, dep_term)
11471162 end
11481163 newargs = map (args) do arg
1149- symbolic_type (arg) != NotSymbolic () || is_array_of_symbolics (arg) || return arg
1164+ if symbolic_type (arg) == NotSymbolic ()
1165+ if is_array_of_symbolics (arg)
1166+ return map (arg) do _arg
1167+ subexpressions_not_involving_vars! (_arg, vars, state)
1168+ end
1169+ end
1170+ return arg
1171+ end
11501172 subexpressions_not_involving_vars! (arg, vars, state)
11511173 end
11521174 return maketerm (typeof (expr), op, newargs, metadata (expr))
0 commit comments