Skip to content

Commit bd081d0

Browse files
fix: fix remake with u0 dependent on Symbol parameter
1 parent 0f8ec1f commit bd081d0

File tree

2 files changed

+14
-0
lines changed

2 files changed

+14
-0
lines changed

src/remake.jl

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -567,6 +567,7 @@ end
567567

568568
function fill_u0(prob, u0; defs = nothing, use_defaults = false)
569569
vsyms = variable_symbols(prob)
570+
idx_to_vsym = anydict(variable_index(prob, sym) => sym for sym in vsyms)
570571
sym_to_idx = anydict()
571572
idx_to_sym = anydict()
572573
idx_to_val = anydict()
@@ -580,6 +581,7 @@ function fill_u0(prob, u0; defs = nothing, use_defaults = false)
580581
v = (v,)
581582
end
582583
for (kk, vv, ii) in zip(k, v, idx)
584+
kk = idx_to_vsym[ii]
583585
sym_to_idx[kk] = ii
584586
idx_to_sym[ii] = kk
585587
idx_to_val[ii] = vv
@@ -612,6 +614,7 @@ end
612614

613615
function fill_p(prob, p; defs = nothing, use_defaults = false)
614616
psyms = parameter_symbols(prob)
617+
idx_to_psym = anydict(parameter_index(prob, sym) => sym for sym in psyms)
615618
sym_to_idx = anydict()
616619
idx_to_sym = anydict()
617620
idx_to_val = anydict()
@@ -625,6 +628,7 @@ function fill_p(prob, p; defs = nothing, use_defaults = false)
625628
v = (v,)
626629
end
627630
for (kk, vv, ii) in zip(k, v, idx)
631+
kk = idx_to_psym[ii]
628632
sym_to_idx[kk] = ii
629633
idx_to_sym[ii] = kk
630634
idx_to_val[ii] = vv

test/downstream/modelingtoolkit_remake.jl

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -229,3 +229,13 @@ end
229229
prob2 = remake(prob; u0 = [y => 3.0], p = Dict())
230230
@test prob2.ps[p] 4.0
231231
end
232+
233+
@testset "u0 dependent on parameter given as Symbol" begin
234+
@variables x(t)
235+
@parameters p
236+
@mtkbuild sys = ODESystem([D(x) ~ x * p], t)
237+
prob = ODEProblem(sys, [x => 1.0], (0.0, 1.0), [p => 1.0])
238+
@test prob.ps[p] 1.0
239+
prob2 = remake(prob; u0 = [x => p], p = [:p => 2.0])
240+
@test prob2[x] 2.0
241+
end

0 commit comments

Comments
 (0)