Skip to content

Commit d9a6343

Browse files
makes promotion a kwarg
1 parent 56523b9 commit d9a6343

File tree

6 files changed

+14
-10
lines changed

6 files changed

+14
-10
lines changed

src/systems/diffeqs/abstractodesystem.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -563,12 +563,12 @@ function process_DEProblem(constructor, sys::AbstractODESystem,u0map,parammap;
563563
defs = mergedefaults(defs,parammap,ps)
564564
defs = mergedefaults(defs,u0map,dvs)
565565

566-
u0 = promote_to_concrete(varmap_to_vars(u0map,dvs; defaults=defs))
566+
u0 = varmap_to_vars(u0map,dvs; defaults=defs, promotetoconcrete=true)
567567
p = varmap_to_vars(parammap,ps; defaults=defs)
568568
if implicit_dae && du0map !== nothing
569569
ddvs = map(Differential(iv), dvs)
570570
defs = mergedefaults(defs,du0map, ddvs)
571-
du0 = promote_to_concrete(varmap_to_vars(du0map,ddvs; defaults=defs, toterm=identity))
571+
du0 = varmap_to_vars(du0map,ddvs; defaults=defs, toterm=identity, promotetoconcrete=true)
572572
else
573573
du0 = nothing
574574
ddvs = nothing

src/systems/discrete_system/discrete_system.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,7 @@ function DiffEqBase.DiscreteProblem(sys::DiscreteSystem,u0map,tspan,
180180
defs = mergedefaults(defs,parammap,ps)
181181
defs = mergedefaults(defs,u0map,dvs)
182182

183-
u0 = promote_to_concrete(varmap_to_vars(u0map,dvs; defaults=defs))
183+
u0 = varmap_to_vars(u0map,dvs; defaults=defs, promotetoconcrete=true)
184184
p = varmap_to_vars(parammap,ps; defaults=defs)
185185

186186
rhss = [eq.rhs for eq in eqs]

src/systems/jumps/jumpsystem.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,7 @@ function DiffEqBase.DiscreteProblem(sys::JumpSystem, u0map, tspan::Union{Tuple,N
228228
defs = mergedefaults(defs,parammap,ps)
229229
defs = mergedefaults(defs,u0map,dvs)
230230

231-
u0 = promote_to_concrete(varmap_to_vars(u0map,dvs; defaults=defs))
231+
u0 = varmap_to_vars(u0map,dvs; defaults=defs, promotetoconcrete=true)
232232
p = varmap_to_vars(parammap,ps; defaults=defs)
233233

234234
f = DiffEqBase.DISCRETE_INPLACE_DEFAULT

src/systems/nonlinear/nonlinearsystem.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -269,7 +269,7 @@ function process_NonlinearProblem(constructor, sys::NonlinearSystem,u0map,paramm
269269
defs = mergedefaults(defs,parammap,ps)
270270
defs = mergedefaults(defs,u0map,dvs)
271271

272-
u0 = promote_to_concrete(varmap_to_vars(u0map,dvs; defaults=defs))
272+
u0 = varmap_to_vars(u0map,dvs; defaults=defs, promotetoconcrete=true)
273273
p = varmap_to_vars(parammap,ps; defaults=defs)
274274

275275
check_eqs_u0(eqs, dvs, u0; kwargs...)

src/systems/optimization/optimizationsystem.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,7 @@ function OptimizationProblemExpr{iip}(sys::OptimizationSystem, u0,
239239
defs = mergedefaults(defs,parammap,ps)
240240
defs = mergedefaults(defs,u0map,dvs)
241241

242-
u0 = promote_to_concrete(varmap_to_vars(u0map,dvs; defaults=defs))
242+
u0 = varmap_to_vars(u0map,dvs; defaults=defs, promotetoconcrete=true)
243243
p = varmap_to_vars(parammap,ps; defaults=defs)
244244
lb = varmap_to_vars(lb,dvs)
245245
ub = varmap_to_vars(ub,dvs)

src/variables.jl

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ Takes a list of pairs of `variables=>values` and an ordered list of variables
3232
and creates the array of values in the correct order with default values when
3333
applicable.
3434
"""
35-
function varmap_to_vars(varmap, varlist; defaults=Dict(), check=true, toterm=Symbolics.diff2term)
35+
function varmap_to_vars(varmap, varlist; defaults=Dict(), check=true, toterm=Symbolics.diff2term, promotetoconcrete=false)
3636
varlist = map(unwrap, varlist)
3737
# Edge cases where one of the arguments is effectively empty.
3838
is_incomplete_initialization = varmap isa DiffEqBase.NullParameters || varmap === nothing
@@ -51,11 +51,15 @@ function varmap_to_vars(varmap, varlist; defaults=Dict(), check=true, toterm=Sym
5151
# We respect the input type
5252
container_type = T <: Dict ? Array : T
5353

54-
if eltype(varmap) <: Pair # `varmap` is a dict or an array of pairs
54+
vals = if eltype(varmap) <: Pair # `varmap` is a dict or an array of pairs
5555
varmap = todict(varmap)
56-
vals = _varmap_to_vars(varmap, varlist; defaults=defaults, check=check, toterm=toterm)
56+
_varmap_to_vars(varmap, varlist; defaults=defaults, check=check, toterm=toterm)
5757
else # plain array-like initialization
58-
vals = varmap
58+
varmap
59+
end
60+
61+
if promotetoconcrete
62+
vals = promote_to_concrete(vals)
5963
end
6064

6165
if isempty(vals)

0 commit comments

Comments
 (0)