@@ -768,12 +768,14 @@ end
768768struct GetUpdatedMTKParameters{G, S}
769769 # `getu` functor which gets parameters that are unknowns during initialization
770770 getpunknowns:: G
771- # `setu_oop ` functor which returns a modified MTKParameters using those parameters
771+ # `setu ` functor which returns a modified MTKParameters using those parameters
772772 setpunknowns:: S
773773end
774774
775775function (f:: GetUpdatedMTKParameters )(prob, initializesol)
776- f. setpunknowns (prob, f. getpunknowns (initializesol))
776+ mtkp = copy (parameter_values (prob))
777+ f. setpunknowns (mtkp, f. getpunknowns (initializesol))
778+ mtkp
777779end
778780
779781function get_temporary_value (p)
@@ -839,16 +841,13 @@ function process_DEProblem(constructor, sys::AbstractODESystem, u0map, parammap;
839841 end
840842 end
841843 defs = defaults (sys)
842- missingpars = [p
844+ guesses = merge (ModelingToolkit. guesses (sys), isempty (guesses) ? Dict () : todict (guesses))
845+ solvablepars = [p
843846 for p in parameters (sys)
844- if (parammap != = SciMLBase. NullParameters () &&
845- get (parammap, p, nothing ) === missing ) ||
846- ((parammap isa SciMLBase. NullParameters ||
847- get (parammap, p, nothing ) != = missing ) &&
848- get (defs, p, nothing ) === missing )]
847+ if is_parameter_solvable (p, parammap, defs, guesses)]
849848 # ModelingToolkit.get_tearing_state(sys) !== nothing => Requires structural_simplify first
850849 if sys isa ODESystem && build_initializeprob &&
851- (((implicit_dae || ! isempty (missingvars) || ! isempty (missingpars ) || ! isempty (setobserved)) &&
850+ (((implicit_dae || ! isempty (missingvars) || ! isempty (solvablepars ) || ! isempty (setobserved)) &&
852851 ModelingToolkit. get_tearing_state (sys) != = nothing ) ||
853852 ! isempty (initialization_equations (sys))) && t != = nothing
854853 if eltype (u0map) <: Number
@@ -864,9 +863,8 @@ function process_DEProblem(constructor, sys::AbstractODESystem, u0map, parammap;
864863 punknowns = [p
865864 for p in all_variable_symbols (initializeprob) if is_parameter (sys, p)]
866865 getpunknowns = getu (initializeprob, punknowns)
867- setpunknowns = setp_oop (sys, punknowns)
866+ setpunknowns = setp (sys, punknowns)
868867 initializeprobpmap = GetUpdatedMTKParameters (getpunknowns, setpunknowns)
869- # TODO : Initializeprobpmap when setp_oop is a thing
870868
871869 zerovars = Dict (setdiff (unknowns (sys), keys (defaults (sys))) .=> 0.0 )
872870 if parammap isa SciMLBase. NullParameters
0 commit comments