dropping columns/rows from matrix?

Peter Schröder ps at cs.caltech.edu
Fri Nov 23 18:58:33 CST 2007

As part of a greedy basis pursuit algorithm I drop/undrop columns/rows 
from a matrix and resolve. I don't want to rebuild the matrix each time. 
Is there a quick way to do this?

Basically the setup is this. Consider a 2-manifold triangle mesh and a 
discretization (piecewise linear FE) of the Laplace-Beltrami operator 
over this mesh (symmetric positive (semi-)definite [constant vector is 
the only null space vector]). Fix boundary conditions (zero Dirichlet in 
my case). Solve for a given rhs (I am using CG and absolute Jacobi as a 
precon with good success). Based on the solution, take out a column (and 
the same row) and resolve. Repeat this a few times until, say, 10 
variables are dropped. Now pick one of them, say, i, and reintroduce it. 
Based on the solution replace i with i_new. Now visit another variable 
of the original 10 and "move" it. Etc.

Each one of the solves is quick (and I need to do hundreds for matrices 
with hundreds of thousands to millions of variables). I'd rather not 
rebuild the matrix each time... Any suggestions?

Thanks much!


More information about the petsc-users mailing list