From f2f4d364ee9e3012e44591a620ce1177004d1165 Mon Sep 17 00:00:00 2001 From: Aayush Sabharwal Date: Wed, 8 Apr 2026 14:36:01 +0530 Subject: [PATCH] fix: allow multiple observables to solve from the same inline linsolve index --- .../src/ModelingToolkitTearing.jl | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/lib/ModelingToolkitTearing/src/ModelingToolkitTearing.jl b/lib/ModelingToolkitTearing/src/ModelingToolkitTearing.jl index 6768bd1..40c8588 100644 --- a/lib/ModelingToolkitTearing/src/ModelingToolkitTearing.jl +++ b/lib/ModelingToolkitTearing/src/ModelingToolkitTearing.jl @@ -159,8 +159,8 @@ function MTKBase.unhack_system(sys::System) subst = SU.Substituter{false}(additional_subs, SU.default_substitute_filter) obseqs = obseqs[obs_mask] map!(subst, obseqs, obseqs) - map!(subst, additional_eqs, additional_eqs) append!(eqs, additional_eqs) + map!(subst, eqs, eqs) if sched isa MTKBase.Schedule map!(subst, values(sched.dummy_sub)) @@ -190,14 +190,7 @@ function populate_inline_scc_map!( is_ldiv || return len = length(ldiv) buffer = get!(() -> zeros(Int, len), inline_linear_scc_map, ldiv) - if !iszero(buffer[idx]) - is_diffeq && return - throw(ArgumentError(""" - Found multiple inline linear solves solving the same variable. \ - This should not be possible. Please open an issue in \ - `ModelingToolkit.jl` with an MWE. - """)) - end + iszero(buffer[idx]) || return buffer[idx] = ifelse(is_diffeq, -eq_i, eq_i) end