Skip to content

Commit a5112e5

Browse files
fix: fix varmap_to_vars for variables with unspecified size (#2586)
1 parent 9ac0d0f commit a5112e5

File tree

2 files changed

+11
-2
lines changed

2 files changed

+11
-2
lines changed

src/variables.jl

+4-2
Original file line numberDiff line numberDiff line change
@@ -209,8 +209,10 @@ end
209209
function canonicalize_varmap(varmap; toterm = Symbolics.diff2term)
210210
new_varmap = Dict()
211211
for (k, v) in varmap
212-
new_varmap[unwrap(k)] = unwrap(v)
213-
new_varmap[toterm(unwrap(k))] = unwrap(v)
212+
k = unwrap(k)
213+
v = unwrap(v)
214+
new_varmap[k] = v
215+
new_varmap[toterm(k)] = v
214216
if Symbolics.isarraysymbolic(k) && Symbolics.shape(k) !== Symbolics.Unknown()
215217
for i in eachindex(k)
216218
new_varmap[k[i]] = v[i]

test/initial_values.jl

+7
Original file line numberDiff line numberDiff line change
@@ -60,3 +60,10 @@ u0 = [X1 => 1.0, X2 => 2.0]
6060
tspan = (0.0, 1.0)
6161
ps = [k1 => 1.0, k2 => 5.0]
6262
@test_nowarn oprob = ODEProblem(osys_m, u0, tspan, ps)
63+
64+
# Make sure it doesn't error on array variables with unspecified size
65+
@parameters p::Vector{Real} q[1:3]
66+
varmap = Dict(p => ones(3), q => 2ones(3))
67+
cvarmap = ModelingToolkit.canonicalize_varmap(varmap)
68+
target_varmap = Dict(p => ones(3), q => 2ones(3), q[1] => 2.0, q[2] => 2.0, q[3] => 2.0)
69+
@test cvarmap == target_varmap

0 commit comments

Comments
 (0)