From 1770ae7b14aa365d937f971e4d8c2b2c01323f84 Mon Sep 17 00:00:00 2001 From: Aayush Sabharwal Date: Tue, 7 Apr 2026 11:30:56 +0530 Subject: [PATCH] fix: consider model inputs for diffcache reference --- lib/ModelingToolkitTearing/src/reassemble.jl | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/lib/ModelingToolkitTearing/src/reassemble.jl b/lib/ModelingToolkitTearing/src/reassemble.jl index fe43585..2c81344 100644 --- a/lib/ModelingToolkitTearing/src/reassemble.jl +++ b/lib/ModelingToolkitTearing/src/reassemble.jl @@ -606,9 +606,14 @@ function get_linear_scc_linsol(state::TearingState, alg_eqs::Vector{Int}, else reference = fullvars[state_idx] end + reference_args = Symbolics.SArgsT((reference, MTKBase.get_iv(sys)::SymbolicT)) + inps = MTKBase.inputs(sys) + if !isempty(inps) + push!(reference_args, first(inps)) + end reference = Symbolics.STerm( - promote, Symbolics.SArgsT((reference, MTKBase.get_iv(sys)::SymbolicT)); - type = Vector{Real}, shape = [1:2] + promote, reference_args; + type = Vector{Real}, shape = [1:length(reference_args)] )[1] sys, A_cache = MTKBase.add_diffcache(sys, length(A)) A_allocator = A_cache(reference) @@ -846,7 +851,6 @@ Solve equation `eq` for `var`, substitute previously solved variables, and retur function make_solved_equation(var, eq, total_sub; simplify = false) residual = eq.lhs - eq.rhs a, b, islinear = Symbolics.linear_expansion(residual, var) - @assert islinear # 0 ~ a * var + b # var ~ -b/a if SU._iszero(a)