From f62019d54062523dfdb03849e2ad63972ea341a7 Mon Sep 17 00:00:00 2001 From: Kristoffer Carlsson Date: Wed, 1 Jul 2026 10:46:40 +0200 Subject: [PATCH] propagate the cached `reorder_parameters` to the SCC subsystems --- src/problems/sccnonlinearproblem.jl | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/problems/sccnonlinearproblem.jl b/src/problems/sccnonlinearproblem.jl index 9a03e02385..36077c2fb4 100644 --- a/src/problems/sccnonlinearproblem.jl +++ b/src/problems/sccnonlinearproblem.jl @@ -553,6 +553,24 @@ function SciMLBase.SCCNonlinearProblem{iip}( build_caches!(sys, decomposition) + # Every SCC subsystem is derived from `sys` via `subset_unknowns_observed`, which shares + # the entire parameter portion of the index cache by reference, and none of the subsystem + # constructions (`subset_system`, `_collapse_into!`) touch `ps`. The default parameter + # reordering is therefore identical between `sys` and every (merged or unmerged) subsystem. + if get_index_cache(sys) !== nothing + reorder_parameters(sys) + cached_reorder = check_mutable_cache( + sys, MTKBase.ReorderedDefaultParameters, MTKBase.ReorderedDefaultParameters, nothing + ) + if cached_reorder isa MTKBase.ReorderedDefaultParameters + for subsys in decomposition.subsystems + store_to_mutable_cache!( + subsys, MTKBase.ReorderedDefaultParameters, cached_reorder + ) + end + end + end + for i in eachindex(decomposition.subsystems) cachevars = decomposition.scc_cachevars[i] cacheexprs = decomposition.scc_cacheexprs[i]