Skip to content

Commit fad7432

Browse files
committed
fix #991, support symbolic parameters at problem level
1 parent 0a0a7cb commit fad7432

File tree

2 files changed

+23
-2
lines changed

2 files changed

+23
-2
lines changed

src/systems/diffeqs/abstractodesystem.jl

+2-2
Original file line numberDiff line numberDiff line change
@@ -398,15 +398,15 @@ function process_DEProblem(constructor, sys::AbstractODESystem,u0map,parammap;
398398
defs = defaults(sys)
399399
iv = independent_variable(sys)
400400

401-
u0 = varmap_to_vars(u0map,dvs; defaults=defs)
401+
u0 = varmap_to_vars(u0map,dvs; defaults=merge(defs, Dict(parammap)))
402402
if implicit_dae && du0map !== nothing
403403
ddvs = map(Differential(iv), dvs)
404404
du0 = varmap_to_vars(du0map, ddvs; defaults=defaults, toterm=identity)
405405
else
406406
du0 = nothing
407407
ddvs = nothing
408408
end
409-
p = varmap_to_vars(parammap,ps; defaults=defs)
409+
p = varmap_to_vars(parammap,ps; defaults=merge(defs, Dict(u0map)))
410410

411411
check_eqs_u0(eqs, dvs, u0)
412412

test/symbolic_parameters.jl

+21
Original file line numberDiff line numberDiff line change
@@ -45,3 +45,24 @@ prob = NonlinearProblem(top, [states(ns, u)=>1.0, a=>1.0], Pair[])
4545
prob = NonlinearProblem(top, [states(ns, u)=>1.0, a=>1.0])
4646
@test prob.u0 == [1.0, 0.5, 1.1, 0.9]
4747
@show sol = solve(prob,NewtonRaphson())
48+
49+
# test initial conditions and parameters at the problem level
50+
pars = @parameters(begin
51+
x0
52+
t
53+
end)
54+
vars = @variables(begin
55+
x(t)
56+
end)
57+
der = Differential(t)
58+
eqs = [der(x) ~ x]
59+
sys = ODESystem(eqs, t, vars, [x0])
60+
pars = [
61+
x0 => 10.0,
62+
]
63+
initialValues = [
64+
x => x0
65+
]
66+
tspan = (0.0, 1.0)
67+
problem = ODEProblem(sys, initialValues, tspan, pars)
68+
@test problem.u0 isa Vector{Float64}

0 commit comments

Comments
 (0)