@@ -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)
@@ -836,16 +838,13 @@ function process_DEProblem(constructor, sys::AbstractODESystem, u0map, parammap;
836838 end
837839 end
838840 defs = defaults (sys)
839- missingpars = [p
841+ guesses = merge (ModelingToolkit. guesses (sys), isempty (guesses) ? Dict () : todict (guesses))
842+ solvablepars = [p
840843 for p in parameters (sys)
841- if (parammap != = SciMLBase. NullParameters () &&
842- get (parammap, p, nothing ) === missing ) ||
843- ((parammap isa SciMLBase. NullParameters ||
844- get (parammap, p, nothing ) != = missing ) &&
845- get (defs, p, nothing ) === missing )]
844+ if is_parameter_solvable (p, parammap, defs, guesses)]
846845 # ModelingToolkit.get_tearing_state(sys) !== nothing => Requires structural_simplify first
847846 if sys isa ODESystem && build_initializeprob &&
848- (((implicit_dae || ! isempty (missingvars) || ! isempty (missingpars )) &&
847+ (((implicit_dae || ! isempty (missingvars) || ! isempty (solvablepars )) &&
849848 ModelingToolkit. get_tearing_state (sys) != = nothing ) ||
850849 ! isempty (initialization_equations (sys))) && t != = nothing
851850 if eltype (u0map) <: Number
@@ -861,9 +860,8 @@ function process_DEProblem(constructor, sys::AbstractODESystem, u0map, parammap;
861860 punknowns = [p
862861 for p in all_variable_symbols (initializeprob) if is_parameter (sys, p)]
863862 getpunknowns = getu (initializeprob, punknowns)
864- setpunknowns = setp_oop (sys, punknowns)
863+ setpunknowns = setp (sys, punknowns)
865864 initializeprobpmap = GetUpdatedMTKParameters (getpunknowns, setpunknowns)
866- # TODO : Initializeprobpmap when setp_oop is a thing
867865
868866 zerovars = Dict (setdiff (unknowns (sys), keys (defaults (sys))) .=> 0.0 )
869867 if parammap isa SciMLBase. NullParameters
0 commit comments