Skip to content

Commit 9594e65

Browse files
committed
WIP
1 parent 1660b9b commit 9594e65

File tree

1 file changed

+12
-4
lines changed

1 file changed

+12
-4
lines changed

src/systems/alias_elimination.jl

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@ function alias_elimination!(state::TearingState)
108108

109109
lineqs = BitSet(old_to_new[e] for e in mm.nzrows)
110110
for (ieq, eq) in enumerate(eqs)
111+
# TODO: fix this
111112
ieq in lineqs && continue
112113
eqs[ieq] = substitute(eq, subs)
113114
end
@@ -428,6 +429,10 @@ end
428429
function aag_bareiss!(graph, var_to_diff, mm_orig::SparseMatrixCLIL, irreducibles = ())
429430
mm = copy(mm_orig)
430431
linear_equations = mm_orig.nzrows
432+
is_linear_equations = falses(size(AsSubMatrix(mm_orig), 1))
433+
for e in mm_orig.nzrows
434+
is_linear_equations[e] = true
435+
end
431436

432437
# If linear highest differentiated variables cannot be assigned to a pivot,
433438
# then we can set it to zero. We use `rank1` to track this.
@@ -439,11 +444,14 @@ function aag_bareiss!(graph, var_to_diff, mm_orig::SparseMatrixCLIL, irreducible
439444
# Bareiss'ed coefficients as Gaussian elimination is nullspace perserving
440445
# and we are only working on linear homogeneous subsystem.
441446
is_reducible = trues(length(var_to_diff))
442-
for v in irreducibles
443-
is_reducible[v] = false
447+
#TODO: what's the correct criterion here?
448+
is_linear_variables = isnothing.(var_to_diff) .& isnothing.(invview(var_to_diff))
449+
for i in 𝑠vertices(graph)
450+
is_linear_equations[i] && continue
451+
for j in 𝑠neighbors(graph, i)
452+
is_linear_variables[j] = false
453+
end
444454
end
445-
is_linear_variables = find_linear_variables(graph, linear_equations, var_to_diff,
446-
irreducibles)
447455
solvable_variables = findall(is_linear_variables)
448456

449457
function do_bareiss!(M, Mold = nothing)

0 commit comments

Comments
 (0)