preconditioner for matrix-free linear system

Satish Balay balay at
Tue Apr 14 13:27:55 CDT 2009

Any perticular reason for using your own matrix storage format? Does
this work in parallel?

All PETSc preconditioners are matrix based [different petsc
matrix storage formats support different set of preconditioners].  We
also have interface to external preconditioners [for eg: superlu_dist,
mumps etc] that have their own matrix format [so there is a matrix
convertion operation that happens when these types are choosen].

So you have 3 options:

1. Continue to use your matrix-format for 'AMat' via MATSHELL but
construct a 'PMat' [i,e preconditioner matrix] in the PETSc matrix
storage format. A preconditioner matrix can be an approximate matrix -
doesn't have to be a full matrix.

2. Create/convert the current matrix in the PETSc storage [perhaps
AIJ] format - and use this for both 'AMat' and 'PMat'.

3. Write your own application based preconditioner [by using PCSHELL]


On Tue, 14 Apr 2009, Yongcheng Zhou wrote:

> hi there,
> I want to link my own package with PETSc in order to make use of its
> various preconditioners.  I am using
> matrix free method, so that I can directly refer the large matrix
> saved in my own format. The connection
> works OK without preconditioners, but runs into trouble when most of
> the preconditioners is called.
> For example, I got this message when using PCICC preconditionder:
> Matrix format shell does not have a built-in PETSc direct solver!
> So my question is how to utilize PETSc's powerful preconditioners for
> my matrix-free application.
> Thanks,
> Rocky

More information about the petsc-users mailing list