34
34
35
35
alias_elimination (sys) = alias_elimination! (TearingState (sys; quick_cancel = true ))
36
36
function alias_elimination! (state:: TearingState )
37
- # Main._state[] = state
37
+ Main. _state[] = state
38
38
sys = state. sys
39
39
complete! (state. structure)
40
40
ag, mm, updated_diff_vars = alias_eliminate_graph! (state)
@@ -596,6 +596,11 @@ function simple_aliases!(ag, graph, var_to_diff, mm_orig, irreducibles = ())
596
596
597
597
# Step 2: Simplify the system using the Bareiss factorization
598
598
rk1vars = BitSet (@view pivots[1 : rank1])
599
+ fullvars = Main. _state[]. fullvars
600
+ @info " " mm_orig. nzrows mm_orig
601
+ @show fullvars
602
+ @show fullvars[pivots[1 : rank1]]
603
+ @show fullvars[solvable_variables]
599
604
for v in solvable_variables
600
605
v in rk1vars && continue
601
606
ag[v] = 0
@@ -646,13 +651,13 @@ function alias_eliminate_graph!(graph, var_to_diff, mm_orig::SparseMatrixCLIL)
646
651
nvars = ndsts (graph)
647
652
ag = AliasGraph (nvars)
648
653
mm = simple_aliases! (ag, graph, var_to_diff, mm_orig)
649
- # state = Main._state[]
650
- # fullvars = state.fullvars
651
- # for (v, (c, a)) in ag
652
- # a = a == 0 ? 0 : c * fullvars[a]
653
- # v = fullvars[v]
654
- # @info "simple alias" v => a
655
- # end
654
+ state = Main. _state[]
655
+ fullvars = state. fullvars
656
+ for (v, (c, a)) in ag
657
+ a = a == 0 ? 0 : c * fullvars[a]
658
+ v = fullvars[v]
659
+ @info " simple alias" v => a
660
+ end
656
661
657
662
# Step 3: Handle differentiated variables
658
663
# At this point, `var_to_diff` and `ag` form a tree structure like the
@@ -693,9 +698,9 @@ function alias_eliminate_graph!(graph, var_to_diff, mm_orig::SparseMatrixCLIL)
693
698
(dv === nothing && diff_to_var[v] === nothing ) && continue
694
699
695
700
r, _ = find_root! (iag, v)
696
- # sv = fullvars[v]
697
- # root = fullvars[r]
698
- # @info "Found root $r" sv=>root
701
+ sv = fullvars[v]
702
+ root = fullvars[r]
703
+ @info " Found root $r " sv=> root
699
704
level_to_var = Int[]
700
705
extreme_var (var_to_diff, r, nothing , Val (false ),
701
706
callback = Base. Fix1 (push!, level_to_var))
@@ -774,10 +779,10 @@ function alias_eliminate_graph!(graph, var_to_diff, mm_orig::SparseMatrixCLIL)
774
779
end
775
780
end
776
781
end
777
- # for (v, (c, a)) in ag
778
- # a = a == 0 ? 0 : c * fullvars[a]
779
- # @info "differential aliases" fullvars[v] => a
780
- # end
782
+ for (v, (c, a)) in ag
783
+ a = a == 0 ? 0 : c * fullvars[a]
784
+ @info " differential aliases" fullvars[v] => a
785
+ end
781
786
782
787
if ! isempty (irreducibles)
783
788
ag = newag
@@ -788,10 +793,10 @@ function alias_eliminate_graph!(graph, var_to_diff, mm_orig::SparseMatrixCLIL)
788
793
mm = simple_aliases! (ag, graph, var_to_diff, mm_orig2, irreducibles)
789
794
end
790
795
791
- # for (v, (c, a)) in ag
792
- # va = iszero(a) ? a : fullvars[a]
793
- # @info "new alias" fullvars[v]=>(c, va)
794
- # end
796
+ for (v, (c, a)) in ag
797
+ va = iszero (a) ? a : fullvars[a]
798
+ @info " new alias" fullvars[v]=> (c, va)
799
+ end
795
800
796
801
# Step 4: Reflect our update decisions back into the graph
797
802
for (ei, e) in enumerate (mm. nzrows)
0 commit comments