@@ -515,6 +515,7 @@ function varmap_get(varmap, var, default = nothing)
515
515
return default
516
516
end
517
517
518
+ anydict (d:: Dict{Any, Any} ) = d
518
519
anydict (d) = Dict {Any, Any} (d)
519
520
anydict () = Dict {Any, Any} ()
520
521
@@ -658,8 +659,9 @@ function _updated_u0_p_symmap(prob, u0, ::Val{true}, p, ::Val{false}, t0)
658
659
isdep = any (symbolic_type (v) != = NotSymbolic () for (_, v) in u0)
659
660
isdep || return remake_buffer (prob, state_values (prob), keys (u0), values (u0)), p
660
661
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
663
665
664
666
isdep = any (symbolic_type (v) != = NotSymbolic () for (_, v) in u0)
665
667
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)
668
670
# This is sort of an implicit dependency on MTK. The values of `u` won't actually be
669
671
# used, since any state symbols in the expression were substituted out earlier.
670
672
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
673
676
return remake_buffer (prob, state_values (prob), keys (u0), values (u0)), p
674
677
end
675
678
676
679
function _updated_u0_p_symmap (prob, u0, :: Val{false} , p, :: Val{true} , t0)
677
680
isdep = any (symbolic_type (v) != = NotSymbolic () for (_, v) in p)
678
681
isdep || return u0, remake_buffer (prob, parameter_values (prob), keys (p), values (p))
679
682
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
682
686
683
687
isdep = any (symbolic_type (v) != = NotSymbolic () for (_, v) in p)
684
688
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)
687
691
# this is sort of an implicit dependency on MTK. The values of `p` won't actually be
688
692
# used, since any parameter symbols in the expression were substituted out earlier.
689
693
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
692
697
return u0, remake_buffer (prob, parameter_values (prob), keys (p), values (p))
693
698
end
694
699
@@ -700,20 +705,14 @@ function _updated_u0_p_symmap(prob, u0, ::Val{true}, p, ::Val{true}, t0)
700
705
return remake_buffer (prob, state_values (prob), keys (u0), values (u0)),
701
706
remake_buffer (prob, parameter_values (prob), keys (p), values (p))
702
707
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
711
708
712
709
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
717
716
return remake_buffer (prob, state_values (prob), keys (u0), values (u0)),
718
717
remake_buffer (prob, parameter_values (prob), keys (p), values (p))
719
718
end
0 commit comments