Skip to content

Commit 9780db7

Browse files
Merge pull request #141 from JuliaComputing/as/defer-scal-sliced-vars
fix: handle sliced variables (`D(x[1:2])`) in deferred scalarization `TearingState`
2 parents 16caaad + a99b0d2 commit 9780db7

1 file changed

Lines changed: 8 additions & 0 deletions

File tree

lib/ModelingToolkitTearing/src/tearingstate.jl

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -248,6 +248,14 @@ function TearingState(sys::System, source_info::Union{Nothing, MTKBase.EquationS
248248
iv isa SymbolicT && MTKBase.isdelay(v, iv) && continue
249249

250250
if !in(v, dvs)
251+
arr, isidx = MTKBase.split_indexed_var(v)
252+
# Handles cases list `D(x[1:2])`
253+
if isidx && SU.is_array_shape(SU.shape(v)) && SU.shape(v) isa SU.ShapeVecT
254+
for idx in SU.stable_eachindex(v)
255+
push!(auxiliary_vars, v[idx])
256+
end
257+
continue
258+
end
251259
isvalid = @match v begin
252260
BSImpl.Term(; f, args) => f isa Shift || isempty(args) || f isa SU.Operator && is_transparent_operator(f)::Bool
253261
_ => false

0 commit comments

Comments
 (0)