Skip to content

Updated ODEProblem parameters don't propagate to initializeprob #2717

@MarcBerliner

Description

@MarcBerliner

Setting new ODEProblem parameters with setp and remake do not update prob.f.initializeprob. E.g.,

using ModelingToolkit, SymbolicIndexingInterface, OrdinaryDiffEq
using ModelingToolkit: t_nounits as t
D = Differential(t)

pars = @parameters a = 1.0
vars = @variables begin
    x(t), [guess = 0.1]
    y(t), [guess = 1.0]
end

eqs = [D(x) ~ 1
    y ~ x]

initialization_eqs = [a ~ exp(-pi + x)]

@named sys = ODESystem(eqs, t, vars, pars; initialization_eqs)
sys = complete(structural_simplify(sys))

tspan = (0.0, 0.2)
prob = ODEProblem(sys, [], tspan, [])

setp(prob, a)(prob, NaN)
integ = init(prob, FBDF())
integ[x] = 3.1415926535896306 # should be NaN
# New parameter values
julia> prob.p[1]
1-element Vector{Float64}:
 NaN

julia> integ.p[1]
1-element Vector{Float64}:
 NaN
# Old parameter values
julia> prob.f.initializeprob.p[1]
2-element Vector{Float64}:
 1.0
 0.0

cc @AayushSabharwal

Metadata

Metadata

Labels

bugSomething isn't working

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions