@@ -748,12 +748,14 @@ function update_simplified_system!(
748
748
unknowns = [unknowns; extra_unknowns]
749
749
@set! sys. unknowns = unknowns
750
750
751
- obs, subeqs, deps = cse_and_array_hacks (
752
- sys, obs, solved_eqs, unknowns, neweqs; cse = cse_hack, array = array_hack)
751
+ obs = cse_and_array_hacks (
752
+ sys, obs, unknowns, neweqs; cse = cse_hack, array = array_hack)
753
753
754
+ deps = Vector{Int}[i == 1 ? Int[] : collect (1 : (i - 1 ))
755
+ for i in 1 : length (solved_eqs)]
754
756
@set! sys. eqs = neweqs
755
757
@set! sys. observed = obs
756
- @set! sys. substitutions = Substitutions (subeqs , deps)
758
+ @set! sys. substitutions = Substitutions (solved_eqs , deps)
757
759
758
760
# Only makes sense for time-dependent
759
761
# TODO : generalize to SDE
@@ -850,7 +852,7 @@ if all `p[i]` are present and the unscalarized form is used in any equation (obs
850
852
not) we first count the number of times the scalarized form of each observed variable
851
853
occurs in observed equations (and unknowns if it's split).
852
854
"""
853
- function cse_and_array_hacks (sys, obs, subeqs, unknowns, neweqs; cse = true , array = true )
855
+ function cse_and_array_hacks (sys, obs, unknowns, neweqs; cse = true , array = true )
854
856
# HACK 1
855
857
# mapping of rhs to temporary CSE variable
856
858
# `f(...) => tmpvar` in above example
@@ -878,7 +880,6 @@ function cse_and_array_hacks(sys, obs, subeqs, unknowns, neweqs; cse = true, arr
878
880
tempeq = tempvar ~ rhs_arr
879
881
rhs_to_tempvar[rhs_arr] = tempvar
880
882
push! (obs, tempeq)
881
- push! (subeqs, tempeq)
882
883
end
883
884
884
885
# getindex_wrapper is used because `observed2graph` treats `x` and `x[i]` as different,
@@ -887,10 +888,6 @@ function cse_and_array_hacks(sys, obs, subeqs, unknowns, neweqs; cse = true, arr
887
888
neweq = lhs ~ getindex_wrapper (
888
889
rhs_to_tempvar[rhs_arr], Tuple (arguments (rhs)[2 : end ]))
889
890
obs[i] = neweq
890
- subeqi = findfirst (isequal (eq), subeqs)
891
- if subeqi != = nothing
892
- subeqs[subeqi] = neweq
893
- end
894
891
end
895
892
# end HACK 1
896
893
@@ -920,7 +917,6 @@ function cse_and_array_hacks(sys, obs, subeqs, unknowns, neweqs; cse = true, arr
920
917
tempeq = tempvar ~ rhs_arr
921
918
rhs_to_tempvar[rhs_arr] = tempvar
922
919
push! (obs, tempeq)
923
- push! (subeqs, tempeq)
924
920
end
925
921
# don't need getindex_wrapper, but do it anyway to know that this
926
922
# hack took place
@@ -960,15 +956,8 @@ function cse_and_array_hacks(sys, obs, subeqs, unknowns, neweqs; cse = true, arr
960
956
push! (obs_arr_eqs, arrvar ~ rhs)
961
957
end
962
958
append! (obs, obs_arr_eqs)
963
- append! (subeqs, obs_arr_eqs)
964
-
965
- # need to re-sort subeqs
966
- subeqs = ModelingToolkit. topsort_equations (subeqs, [eq. lhs for eq in subeqs])
967
-
968
- deps = Vector{Int}[i == 1 ? Int[] : collect (1 : (i - 1 ))
969
- for i in 1 : length (subeqs)]
970
959
971
- return obs, subeqs, deps
960
+ return obs
972
961
end
973
962
974
963
function is_getindexed_array (rhs)
0 commit comments