analyze preconditioned operator?

Matt Funk mafunk at
Thu Oct 9 17:25:22 CDT 2008

Hi Matt,

so, the basic idea with this code is to apply the pc to each column vector of 
the matrix? Is that right?

Also, in your example: when is myApply actually invoked? I also looked at the 
example listed under the MatShellSetOperation reference page.

Is the function then actually internally called when MatShellSetOperation is 
called, or when KSPSetOperators is called or KSPSolve?

The reason i am asking is that if it is called when KSPSolve called then there 
is a problem because for the analysis i never call KSPSolve directly.


On Thursday 09 October 2008, Matthew Knepley wrote:
> On Thu, Oct 9, 2008 at 4:32 PM, Matt Funk <mafunk at> wrote:
> > mmhh,
> >
> > i think i am missing something. Doesn't PCApply() apply the
> > preconditioner to a vector? So how would that work (easily) with a
> > matrix?
> You do not apply it to the matrix. Here is a skeleton (maybe has mistakes)
> void myApply(Mat A, Vec x, Vec y) {
>   MatShellGetContext(A, &ctx);
>   MatMult(ctx->M, x, ctx->work);
>   PCApply(ctx->pc, ctx->work, y);
> }
> MatShellSetOperation(A, MATOP_MULT, myApply)
>   Matt
> > matt
> >
> > On Thursday 09 October 2008, Matthew Knepley wrote:
> >> CApply().

More information about the petsc-users mailing list