@@ -515,6 +515,7 @@ function varmap_get(varmap, var, default = nothing)
515515 return default
516516end
517517
518+ anydict (d:: Dict{Any, Any} ) = d
518519anydict (d) = Dict {Any, Any} (d)
519520anydict () = Dict {Any, Any} ()
520521
@@ -658,8 +659,9 @@ function _updated_u0_p_symmap(prob, u0, ::Val{true}, p, ::Val{false}, t0)
658659 isdep = any (symbolic_type (v) != = NotSymbolic () for (_, v) in u0)
659660 isdep || return remake_buffer (prob, state_values (prob), keys (u0), values (u0)), p
660661
661- u0 = anydict (k => symbolic_type (v) === NotSymbolic () ? v : symbolic_evaluate (v, u0)
662- for (k, v) in u0)
662+ for (k, v) in u0
663+ u0[k] = symbolic_type (v) === NotSymbolic () ? v : symbolic_evaluate (v, u0)
664+ end
663665
664666 isdep = any (symbolic_type (v) != = NotSymbolic () for (_, v) in u0)
665667 isdep || return remake_buffer (prob, state_values (prob), keys (u0), values (u0)), p
@@ -668,17 +670,19 @@ function _updated_u0_p_symmap(prob, u0, ::Val{true}, p, ::Val{false}, t0)
668670 # This is sort of an implicit dependency on MTK. The values of `u` won't actually be
669671 # used, since any state symbols in the expression were substituted out earlier.
670672 temp_state = ProblemState (; u = state_values (prob), p = p, t = t0)
671- u0 = anydict (k => symbolic_type (v) === NotSymbolic () ? v : getu (prob, v)(temp_state)
672- for (k, v) in u0)
673+ for (k, v) in u0
674+ u0[k] = symbolic_type (v) === NotSymbolic () ? v : getu (prob, v)(temp_state)
675+ end
673676 return remake_buffer (prob, state_values (prob), keys (u0), values (u0)), p
674677end
675678
676679function _updated_u0_p_symmap (prob, u0, :: Val{false} , p, :: Val{true} , t0)
677680 isdep = any (symbolic_type (v) != = NotSymbolic () for (_, v) in p)
678681 isdep || return u0, remake_buffer (prob, parameter_values (prob), keys (p), values (p))
679682
680- p = anydict (k => symbolic_type (v) === NotSymbolic () ? v : symbolic_evaluate (v, p)
681- for (k, v) in p)
683+ for (k, v) in p
684+ p[k] = symbolic_type (v) === NotSymbolic () ? v : symbolic_evaluate (v, p)
685+ end
682686
683687 isdep = any (symbolic_type (v) != = NotSymbolic () for (_, v) in p)
684688 isdep || return u0, remake_buffer (prob, parameter_values (prob), keys (p), values (p))
@@ -687,8 +691,9 @@ function _updated_u0_p_symmap(prob, u0, ::Val{false}, p, ::Val{true}, t0)
687691 # this is sort of an implicit dependency on MTK. The values of `p` won't actually be
688692 # used, since any parameter symbols in the expression were substituted out earlier.
689693 temp_state = ProblemState (; u = u0, p = parameter_values (prob), t = t0)
690- p = anydict (k => symbolic_type (v) === NotSymbolic () ? v : getu (prob, v)(temp_state)
691- for (k, v) in p)
694+ for (k, v) in p
695+ p[k] = symbolic_type (v) === NotSymbolic () ? v : getu (prob, v)(temp_state)
696+ end
692697 return u0, remake_buffer (prob, parameter_values (prob), keys (p), values (p))
693698end
694699
@@ -700,20 +705,14 @@ function _updated_u0_p_symmap(prob, u0, ::Val{true}, p, ::Val{true}, t0)
700705 return remake_buffer (prob, state_values (prob), keys (u0), values (u0)),
701706 remake_buffer (prob, parameter_values (prob), keys (p), values (p))
702707 end
703- if ! isu0dep
704- u0 = remake_buffer (prob, state_values (prob), keys (u0), values (u0))
705- return _updated_u0_p_symmap (prob, u0, Val (false ), p, Val (true ), t0)
706- end
707- if ! ispdep
708- p = remake_buffer (prob, parameter_values (prob), keys (p), values (p))
709- return _updated_u0_p_symmap (prob, u0, Val (true ), p, Val (false ), t0)
710- end
711708
712709 varmap = merge (u0, p)
713- u0 = anydict (k => symbolic_type (v) === NotSymbolic () ? v : symbolic_evaluate (v, varmap)
714- for (k, v) in u0)
715- p = anydict (k => symbolic_type (v) === NotSymbolic () ? v : symbolic_evaluate (v, varmap)
716- for (k, v) in p)
710+ for (k, v) in u0
711+ u0[k] = symbolic_type (v) === NotSymbolic () ? v : symbolic_evaluate (v, varmap)
712+ end
713+ for (k, v) in p
714+ p[k] = symbolic_type (v) === NotSymbolic () ? v : symbolic_evaluate (v, varmap)
715+ end
717716 return remake_buffer (prob, state_values (prob), keys (u0), values (u0)),
718717 remake_buffer (prob, parameter_values (prob), keys (p), values (p))
719718end
0 commit comments