@@ -768,12 +768,14 @@ end
768
768
struct GetUpdatedMTKParameters{G, S}
769
769
# `getu` functor which gets parameters that are unknowns during initialization
770
770
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
772
772
setpunknowns:: S
773
773
end
774
774
775
775
function (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
777
779
end
778
780
779
781
function get_temporary_value (p)
@@ -836,16 +838,13 @@ function process_DEProblem(constructor, sys::AbstractODESystem, u0map, parammap;
836
838
end
837
839
end
838
840
defs = defaults (sys)
839
- missingpars = [p
841
+ guesses = merge (ModelingToolkit. guesses (sys), isempty (guesses) ? Dict () : todict (guesses))
842
+ solvablepars = [p
840
843
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)]
846
845
# ModelingToolkit.get_tearing_state(sys) !== nothing => Requires structural_simplify first
847
846
if sys isa ODESystem && build_initializeprob &&
848
- (((implicit_dae || ! isempty (missingvars) || ! isempty (missingpars )) &&
847
+ (((implicit_dae || ! isempty (missingvars) || ! isempty (solvablepars )) &&
849
848
ModelingToolkit. get_tearing_state (sys) != = nothing ) ||
850
849
! isempty (initialization_equations (sys))) && t != = nothing
851
850
if eltype (u0map) <: Number
@@ -861,9 +860,8 @@ function process_DEProblem(constructor, sys::AbstractODESystem, u0map, parammap;
861
860
punknowns = [p
862
861
for p in all_variable_symbols (initializeprob) if is_parameter (sys, p)]
863
862
getpunknowns = getu (initializeprob, punknowns)
864
- setpunknowns = setp_oop (sys, punknowns)
863
+ setpunknowns = setp (sys, punknowns)
865
864
initializeprobpmap = GetUpdatedMTKParameters (getpunknowns, setpunknowns)
866
- # TODO : Initializeprobpmap when setp_oop is a thing
867
865
868
866
zerovars = Dict (setdiff (unknowns (sys), keys (defaults (sys))) .=> 0.0 )
869
867
if parammap isa SciMLBase. NullParameters
0 commit comments