Skip to content

Commit 69e5c80

Browse files
fix: fix vector parameter discovery when used both unscalarized and partially scalarized
1 parent 0f04a53 commit 69e5c80

File tree

2 files changed

+16
-0
lines changed

2 files changed

+16
-0
lines changed

src/systems/nonlinear/nonlinearsystem.jl

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -219,6 +219,12 @@ function NonlinearSystem(eqs; kwargs...)
219219
push!(new_ps, p)
220220
end
221221
else
222+
if symbolic_type(p) == ArraySymbolic() &&
223+
Symbolics.shape(unwrap(p)) != Symbolics.Unknown()
224+
for i in eachindex(p)
225+
delete!(new_ps, p[i])
226+
end
227+
end
222228
push!(new_ps, p)
223229
end
224230
end

test/nonlinearsystem.jl

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ using DiffEqBase, SparseArrays
44
using Test
55
using NonlinearSolve
66
using ForwardDiff
7+
using SymbolicIndexingInterface
78
using ModelingToolkit: value
89
using ModelingToolkit: get_default_or_guess, MTKParameters
910

@@ -380,3 +381,12 @@ end
380381
@test_throws ["single equation", "unknown"] IntervalNonlinearFunctionExpr(
381382
sys, (0.0, 1.0))
382383
end
384+
385+
@testset "Vector parameter used unscalarized and partially scalarized" begin
386+
@variables x y
387+
@parameters p[1:2] (f::Function)(..)
388+
389+
@mtkbuild sys = NonlinearSystem([x^2 - p[1]^2 ~ 0, y^2 ~ f(p)])
390+
@test !any(isequal(p[1]), parameters(sys))
391+
@test is_parameter(sys, p)
392+
end

0 commit comments

Comments
 (0)