Skip to content

Commit a03f061

Browse files
fix: fix variable discovery in arrays of Num passed to callable params
1 parent 9b439b7 commit a03f061

File tree

2 files changed

+16
-2
lines changed

2 files changed

+16
-2
lines changed

src/utils.jl

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -389,15 +389,21 @@ function vars!(vars, O; op = Differential)
389389
f = getcalledparameter(O)
390390
push!(vars, f)
391391
for arg in arguments(O)
392-
vars!(vars, arg; op)
392+
if symbolic_type(arg) == NotSymbolic() && arg isa AbstractArray
393+
for el in arg
394+
vars!(vars, unwrap(el); op)
395+
end
396+
else
397+
vars!(vars, arg; op)
398+
end
393399
end
394400
return vars
395401
end
396402
return push!(vars, O)
397403
end
398404
if symbolic_type(O) == NotSymbolic() && O isa AbstractArray
399405
for arg in O
400-
vars!(vars, arg; op)
406+
vars!(vars, unwrap(arg); op)
401407
end
402408
return vars
403409
end

test/odesystem.jl

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1447,3 +1447,11 @@ end
14471447
@parameters p
14481448
@test_nowarn ODESystem(Equation[], t; parameter_dependencies = [p ~ 1.0], name = :a)
14491449
end
1450+
1451+
@testset "Variable discovery in arrays of `Num` inside callable symbolic" begin
1452+
@variables x(t) y(t)
1453+
@parameters foo(::AbstractVector)
1454+
sys = @test_nowarn ODESystem(D(x) ~ foo([x, 2y]), t; name = :sys)
1455+
@test length(unknowns(sys)) == 2
1456+
@test any(isequal(y), unknowns(sys))
1457+
end

0 commit comments

Comments
 (0)