@@ -888,7 +888,8 @@ function process_DEProblem(constructor, sys::AbstractODESystem, u0map, parammap;
888888 for p in parameters (sys)
889889 if is_parameter_solvable (p, parammap, defs, guesses)]
890890
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)
892893 defs
893894 else
894895 merge (defs, todict (parammap))
@@ -1592,6 +1593,19 @@ function InitializationProblem{iip, specialize}(sys::AbstractODESystem,
15921593 end
15931594
15941595 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+ u0T = promote_type (u0T, typeof (fullmap[sym]))
1601+ end
1602+ for eq in observed (isys)
1603+ haskey (fullmap, eq. lhs) || continue
1604+ u0T = promote_type (u0T, typeof (fullmap[eq. lhs]))
1605+ end
1606+ if u0T != Union{}
1607+ u0map = Dict (k => u0T (v) for (k, v) in u0map)
1608+ end
15951609 if neqs == nunknown
15961610 NonlinearProblem (isys, u0map, parammap; kwargs... )
15971611 else
0 commit comments