@@ -601,7 +601,7 @@ All other keyword arguments are forwarded to `InitializationProblem`.
601
601
"""
602
602
function maybe_build_initialization_problem (
603
603
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... )
605
605
guesses = merge (ModelingToolkit. guesses (sys), todict (guesses))
606
606
607
607
if t === nothing && is_time_dependent (sys)
@@ -615,7 +615,7 @@ function maybe_build_initialization_problem(
615
615
if is_time_dependent (sys)
616
616
all_init_syms = Set (all_symbols (initializeprob))
617
617
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)
619
619
else
620
620
initializeprobmap = nothing
621
621
end
@@ -779,7 +779,8 @@ function process_SciMLProblem(
779
779
eval_expression, eval_module, fully_determined,
780
780
warn_cyclic_dependency, check_units = check_initialization_units,
781
781
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)
783
784
784
785
kwargs = merge (kwargs, kws)
785
786
end
0 commit comments