@@ -601,7 +601,7 @@ All other keyword arguments are forwarded to `InitializationProblem`.
601601"""
602602function maybe_build_initialization_problem (
603603 sys:: AbstractSystem , op:: AbstractDict , u0map, pmap, t, defs,
604- guesses, missing_unknowns; implicit_dae = false , kwargs... )
604+ guesses, missing_unknowns; implicit_dae = false , u0_constructor = identity, kwargs... )
605605 guesses = merge (ModelingToolkit. guesses (sys), todict (guesses))
606606
607607 if t === nothing && is_time_dependent (sys)
@@ -615,7 +615,7 @@ function maybe_build_initialization_problem(
615615 if is_time_dependent (sys)
616616 all_init_syms = Set (all_symbols (initializeprob))
617617 solved_unknowns = filter (var -> var in all_init_syms, unknowns (sys))
618- initializeprobmap = getu (initializeprob, solved_unknowns)
618+ initializeprobmap = u0_constructor ∘ getu (initializeprob, solved_unknowns)
619619 else
620620 initializeprobmap = nothing
621621 end
@@ -781,7 +781,8 @@ function process_SciMLProblem(
781781 eval_expression, eval_module, fully_determined,
782782 warn_cyclic_dependency, check_units = check_initialization_units,
783783 circular_dependency_max_cycle_length, circular_dependency_max_cycles, use_scc,
784- force_time_independent = force_initialization_time_independent, algebraic_only, allow_incomplete)
784+ force_time_independent = force_initialization_time_independent, algebraic_only, allow_incomplete,
785+ u0_constructor)
785786
786787 kwargs = merge (kwargs, kws)
787788 end
0 commit comments