Matrix free preconditioning
Jed Brown
jed at 59A2.org
Tue Oct 14 08:18:01 CDT 2008
On Tue 2008-10-14 14:26, Tim Kroeger wrote:
> Can you give me some advice on possible/recommended choices of
> preconditioners in the case of matrix free ksp? I create my matrix
> using MatCreateShell(). The matrix is not symmetric. I understand that
> the typical preconditioners like ILU or JACOBI will not work since they
> require access to the matrix entries. Is there any good precoditioner
> that will work?
The short answer is PCShell. That is, you have to know something about
the matrix and can't expect any black-box approach to work.
I assume your matrix comes from the rank-1 update you brought up
recently on the libmesh list? That is
B = A + u v'
for where A is an explicit matrix and u,v are vectors. Did you try the
rank-1 update I suggested? In detail, let A^ be an approximate inverse
of A (i.e. an application of any standard preconditioner) and form a
preconditioner for B as
B^ = A^ - alpha w v' A^
where
w = A^ u
alpha = 1 + v' w.
If A^ is an exact inverse (i.e. -pc_type lu), then B^ is an exact
inverse. This shell preconditioner requires one application of the
preconditioner for A in PCSetUp (you implement a setup function which
stores `w' and `alpha') and one rank-1 update per application.
Jed
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 197 bytes
Desc: not available
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20081014/d3c82b98/attachment.pgp>
More information about the petsc-users
mailing list