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>
