@@ -888,7 +888,8 @@ function process_DEProblem(constructor, sys::AbstractODESystem, u0map, parammap;
888
888
for p in parameters (sys)
889
889
if is_parameter_solvable (p, parammap, defs, guesses)]
890
890
891
- pvarmap = if parammap === nothing || parammap == SciMLBase. NullParameters () || ! (eltype (parammap) <: Pair ) && isempty (parammap)
891
+ pvarmap = if parammap === nothing || parammap == SciMLBase. NullParameters () ||
892
+ ! (eltype (parammap) <: Pair ) && isempty (parammap)
892
893
defs
893
894
else
894
895
merge (defs, todict (parammap))
@@ -1592,6 +1593,22 @@ function InitializationProblem{iip, specialize}(sys::AbstractODESystem,
1592
1593
end
1593
1594
1594
1595
u0map = merge (ModelingToolkit. guesses (sys), todict (guesses), todict (u0map))
1596
+ fullmap = merge (u0map, parammap)
1597
+ u0T = Union{}
1598
+ for sym in unknowns (isys)
1599
+ haskey (fullmap, sym) || continue
1600
+ symbolic_type (fullmap[sym]) == NotSymbolic () || continue
1601
+ u0T = promote_type (u0T, typeof (fullmap[sym]))
1602
+ end
1603
+ for eq in observed (isys)
1604
+ haskey (fullmap, eq. lhs) || continue
1605
+ symbolic_type (fullmap[eq. lhs]) == NotSymbolic () || continue
1606
+ u0T = promote_type (u0T, typeof (fullmap[eq. lhs]))
1607
+ end
1608
+ if u0T != Union{}
1609
+ u0map = Dict (k => symbolic_type (v) == NotSymbolic () ? u0T (v) : v
1610
+ for (k, v) in u0map)
1611
+ end
1595
1612
if neqs == nunknown
1596
1613
NonlinearProblem (isys, u0map, parammap; kwargs... )
1597
1614
else
0 commit comments