Skip to content

Commit f6dec41

Browse files
Merge pull request #3425 from AayushSabharwal/as/fix-sccnonlinearprob
fix: fix `SCCNonlinearProblem` reordering parameters
2 parents 3d9a8d8 + 64427a9 commit f6dec41

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

src/systems/nonlinear/nonlinearsystem.jl

+2-1
Original file line numberDiff line numberDiff line change
@@ -792,7 +792,8 @@ function SciMLBase.SCCNonlinearProblem{iip}(sys::NonlinearSystem, u0map,
792792
new_eqs = eqs[reduce(vcat, eq_sccs)]
793793
@set! sys.unknowns = new_dvs
794794
@set! sys.eqs = new_eqs
795-
sys = complete(sys)
795+
@set! sys.index_cache = subset_unknowns_observed(
796+
get_index_cache(sys), sys, new_dvs, getproperty.(obs, (:lhs,)))
796797
return SCCNonlinearProblem(subprobs, explicitfuns, p, true; sys)
797798
end
798799

test/scc_nonlinear_problem.jl

+19
Original file line numberDiff line numberDiff line change
@@ -263,3 +263,22 @@ end
263263
sol = solve(prob, NewtonRaphson())
264264
@test SciMLBase.successful_retcode(sol)
265265
end
266+
267+
@testset "SCCNonlinearProblem retains parameter order" begin
268+
@variables x y z
269+
@parameters σ β ρ
270+
@mtkbuild fullsys = NonlinearSystem(
271+
[0 ~ x^3 * β + y^3 * ρ - σ, 0 ~ x^2 + 2x * y + y^2, 0 ~ z^2 - 4z + 4],
272+
[x, y, z], [σ, β, ρ])
273+
274+
u0 = [x => 1.0,
275+
y => 0.0,
276+
z => 0.0]
277+
278+
p ==> 28.0,
279+
ρ => 10.0,
280+
β => 8 / 3]
281+
282+
sccprob = SCCNonlinearProblem(fullsys, u0, p)
283+
@test isequal(parameters(fullsys), parameters(sccprob.f.sys))
284+
end

0 commit comments

Comments
 (0)