Skip to content

Commit 404b955

Browse files
fix: fix initialization with dummy derivatives of multidimensional arrays
1 parent 491b1b2 commit 404b955

File tree

3 files changed

+9
-0
lines changed

3 files changed

+9
-0
lines changed

src/systems/diffeqs/abstractodesystem.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -857,6 +857,7 @@ function process_DEProblem(constructor, sys::AbstractODESystem, u0map, parammap;
857857
varmap = u0map === nothing || isempty(u0map) || eltype(u0map) <: Number ?
858858
defaults(sys) :
859859
merge(defaults(sys), todict(u0map))
860+
varmap = canonicalize_varmap(varmap)
860861
varlist = collect(map(unwrap, dvs))
861862
missingvars = setdiff(varlist, collect(keys(varmap)))
862863

src/variables.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,7 @@ function canonicalize_varmap(varmap; toterm = Symbolics.diff2term)
216216
if Symbolics.isarraysymbolic(k) && Symbolics.shape(k) !== Symbolics.Unknown()
217217
for i in eachindex(k)
218218
new_varmap[k[i]] = v[i]
219+
new_varmap[toterm(k[i])] = v[i]
219220
end
220221
end
221222
end

test/initial_values.jl

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,3 +67,10 @@ varmap = Dict(p => ones(3), q => 2ones(3))
6767
cvarmap = ModelingToolkit.canonicalize_varmap(varmap)
6868
target_varmap = Dict(p => ones(3), q => 2ones(3), q[1] => 2.0, q[2] => 2.0, q[3] => 2.0)
6969
@test cvarmap == target_varmap
70+
71+
# Initialization of ODEProblem with dummy derivatives of multidimensional arrays
72+
# Issue#1283
73+
@variables z(t)[1:2, 1:2]
74+
eqs = [D(D(z)) ~ ones(2, 2)]
75+
@mtkbuild sys = ODESystem(eqs, t)
76+
@test_nowarn ODEProblem(sys, [z => zeros(2, 2), D(z) => ones(2, 2)], (0.0, 10.0))

0 commit comments

Comments
 (0)