From c5e4ede1a46bfb6e669f98002ac69560ef088b2a Mon Sep 17 00:00:00 2001 From: Aayush Sabharwal Date: Thu, 23 Jan 2025 17:35:23 +0530 Subject: [PATCH] fix: handle array unknown provided as `Symbol` to `remake` --- src/remake.jl | 5 ++++- test/downstream/modelingtoolkit_remake.jl | 8 ++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/remake.jl b/src/remake.jl index 73d7634ef..4c8f20a97 100644 --- a/src/remake.jl +++ b/src/remake.jl @@ -910,7 +910,10 @@ function fill_vars( v === nothing && continue idx = index_function(prob, k) idx === nothing && continue - if !(idx isa AbstractArray) || symbolic_type(k) != ArraySymbolic() + # If `k` is an array symbolic, and `[:k => [1.0, 2.0]]` is provided + if idx isa AbstractArray && symbolic_type(k) == ScalarSymbolic() + k = [idx_to_vsym[i] for i in idx] + elseif !(idx isa AbstractArray) || symbolic_type(k) != ArraySymbolic() idx = (idx,) k = (k,) v = (v,) diff --git a/test/downstream/modelingtoolkit_remake.jl b/test/downstream/modelingtoolkit_remake.jl index 1797c5604..677a48a79 100644 --- a/test/downstream/modelingtoolkit_remake.jl +++ b/test/downstream/modelingtoolkit_remake.jl @@ -424,3 +424,11 @@ end @test eltype(initprob.u0) <: ForwardDiff.Dual @test eltype(SciMLStructures.canonicalize(SciMLStructures.Tunable(), initprob.p)[1]) <: ForwardDiff.Dual end + +@testset "Array unknown specified as Symbol" begin + @variables x(t)[1:2] + @parameters k + @mtkbuild sys = ODESystem([D(x[1]) ~ k * x[1], D(x[2]) ~ - x[2]], t) + prob = ODEProblem(sys, [x => ones(2)], (0.0, 1.0), [k => 2.0]) + prob2 = remake(prob; u0 = [:x => 2ones(2)]) +end