@@ -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
@@ -779,7 +779,8 @@ function process_SciMLProblem(
779779 eval_expression, eval_module, fully_determined,
780780 warn_cyclic_dependency, check_units = check_initialization_units,
781781 circular_dependency_max_cycle_length, circular_dependency_max_cycles, use_scc,
782- force_time_independent = force_initialization_time_independent, algebraic_only, allow_incomplete)
782+ force_time_independent = force_initialization_time_independent, algebraic_only, allow_incomplete,
783+ u0_constructor)
783784
784785 kwargs = merge (kwargs, kws)
785786 end
0 commit comments