@@ -11,7 +11,7 @@ function generate_initializesystem(sys::ODESystem;
1111        default_dd_guess =  0.0 ,
1212        algebraic_only =  false ,
1313        check_units =  true , check_defguess =  false ,
14-         name =  nameof (sys), kwargs... )
14+         name =  nameof (sys), extra_metadata  =  (;),  kwargs... )
1515    trueobs, eqs =  unhack_observed (observed (sys), equations (sys))
1616    vars =  unique ([unknowns (sys); getfield .(trueobs, :lhs )])
1717    vars_set =  Set (vars) #  for efficient in-lookup
@@ -179,7 +179,8 @@ function generate_initializesystem(sys::ODESystem;
179179    for  k in  keys (defs)
180180        defs[k] =  substitute (defs[k], paramsubs)
181181    end 
182-     meta =  InitializationSystemMetadata (anydict (u0map), anydict (pmap), additional_guesses)
182+     meta =  InitializationSystemMetadata (
183+         anydict (u0map), anydict (pmap), additional_guesses, extra_metadata)
183184    return  NonlinearSystem (eqs_ics,
184185        vars,
185186        pars;
@@ -195,6 +196,7 @@ struct InitializationSystemMetadata
195196    u0map:: Dict{Any, Any} 
196197    pmap:: Dict{Any, Any} 
197198    additional_guesses:: Dict{Any, Any} 
199+     extra_metadata:: NamedTuple 
198200end 
199201
200202function  is_parameter_solvable (p, pmap, defs, guesses)
@@ -282,6 +284,7 @@ function SciMLBase.remake_initialization_data(sys::ODESystem, odefn, u0, t0, p,
282284    guesses =  Dict ()
283285    defs =  defaults (sys)
284286    cmap, cs =  get_cmap (sys)
287+     use_scc =  true 
285288
286289    if  SciMLBase. has_initializeprob (odefn)
287290        oldsys =  odefn. initializeprob. f. sys
@@ -290,6 +293,7 @@ function SciMLBase.remake_initialization_data(sys::ODESystem, odefn, u0, t0, p,
290293            u0map =  merge (meta. u0map, u0map)
291294            pmap =  merge (meta. pmap, pmap)
292295            merge! (guesses, meta. additional_guesses)
296+             use_scc =  get (meta. extra_metadata, :use_scc , true )
293297        end 
294298    else 
295299        #  there is no initializeprob, so the original problem construction
@@ -327,8 +331,10 @@ function SciMLBase.remake_initialization_data(sys::ODESystem, odefn, u0, t0, p,
327331    filter_missing_values! (u0map)
328332    filter_missing_values! (pmap)
329333
330-     op, missing_unknowns, missing_pars =  build_operating_point (u0map, pmap, defs, cmap, dvs, ps)
331-     kws =  maybe_build_initialization_problem (sys, op, u0map, pmap, t0, defs, guesses, missing_unknowns; use_scc =  true )
334+     op, missing_unknowns, missing_pars =  build_operating_point (
335+         u0map, pmap, defs, cmap, dvs, ps)
336+     kws =  maybe_build_initialization_problem (
337+         sys, op, u0map, pmap, t0, defs, guesses, missing_unknowns; use_scc)
332338    initprob =  get (kws, :initializeprob , nothing )
333339    if  initprob ===  nothing 
334340        return  nothing 
0 commit comments