Skip to content

Commit a87eb46

Browse files
fix: fix variable discovery in arrays of Num passed to callable params
1 parent 28a5af3 commit a87eb46

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
@@ -387,15 +387,21 @@ function vars!(vars, O; op = Differential)
387387
f = getcalledparameter(O)
388388
push!(vars, f)
389389
for arg in arguments(O)
390-
vars!(vars, arg; op)
390+
if symbolic_type(arg) == NotSymbolic() && arg isa AbstractArray
391+
for el in arg
392+
vars!(vars, unwrap(el); op)
393+
end
394+
else
395+
vars!(vars, arg; op)
396+
end
391397
end
392398
return vars
393399
end
394400
return push!(vars, O)
395401
end
396402
if symbolic_type(O) == NotSymbolic() && O isa AbstractArray
397403
for arg in O
398-
vars!(vars, arg; op)
404+
vars!(vars, unwrap(arg); op)
399405
end
400406
return vars
401407
end

test/odesystem.jl

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1442,3 +1442,11 @@ end
14421442
end
14431443
end
14441444
end
1445+
1446+
@testset "Variable discovery in arrays of `Num` inside callable symbolic" begin
1447+
@variables x(t) y(t)
1448+
@parameters foo(::AbstractVector)
1449+
sys = @test_nowarn ODESystem(D(x) ~ foo([x, 2y]), t; name = :sys)
1450+
@test length(unknowns(sys)) == 2
1451+
@test any(isequal(y), unknowns(sys))
1452+
end

0 commit comments

Comments
 (0)