Skip to content

Commit 9297318

Browse files
committed
WIP
1 parent 2113314 commit 9297318

File tree

1 file changed

+24
-19
lines changed

1 file changed

+24
-19
lines changed

src/systems/alias_elimination.jl

Lines changed: 24 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ end
3434

3535
alias_elimination(sys) = alias_elimination!(TearingState(sys; quick_cancel = true))
3636
function alias_elimination!(state::TearingState)
37-
# Main._state[] = state
37+
Main._state[] = state
3838
sys = state.sys
3939
complete!(state.structure)
4040
ag, mm, updated_diff_vars = alias_eliminate_graph!(state)
@@ -596,6 +596,11 @@ function simple_aliases!(ag, graph, var_to_diff, mm_orig, irreducibles = ())
596596

597597
# Step 2: Simplify the system using the Bareiss factorization
598598
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]
599604
for v in solvable_variables
600605
v in rk1vars && continue
601606
ag[v] = 0
@@ -646,13 +651,13 @@ function alias_eliminate_graph!(graph, var_to_diff, mm_orig::SparseMatrixCLIL)
646651
nvars = ndsts(graph)
647652
ag = AliasGraph(nvars)
648653
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
656661

657662
# Step 3: Handle differentiated variables
658663
# 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)
693698
(dv === nothing && diff_to_var[v] === nothing) && continue
694699

695700
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
699704
level_to_var = Int[]
700705
extreme_var(var_to_diff, r, nothing, Val(false),
701706
callback = Base.Fix1(push!, level_to_var))
@@ -774,10 +779,10 @@ function alias_eliminate_graph!(graph, var_to_diff, mm_orig::SparseMatrixCLIL)
774779
end
775780
end
776781
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
781786

782787
if !isempty(irreducibles)
783788
ag = newag
@@ -788,10 +793,10 @@ function alias_eliminate_graph!(graph, var_to_diff, mm_orig::SparseMatrixCLIL)
788793
mm = simple_aliases!(ag, graph, var_to_diff, mm_orig2, irreducibles)
789794
end
790795

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
795800

796801
# Step 4: Reflect our update decisions back into the graph
797802
for (ei, e) in enumerate(mm.nzrows)

0 commit comments

Comments
 (0)