A different kind of lagged preconditioner

Barry Smith bsmith at mcs.anl.gov
Mon Mar 23 13:48:59 CDT 2009

```On Mar 23, 2009, at 1:42 PM, Rafael Santos Coelho wrote:

> Hey, Barry
>
>
>   Lagging the preconditioner does NOT mean applying the
> preconditioner every p non-linear iterations. It means RECOMPUTING
> the preconditioner (with LU that means doing a new LU numerical
> factorization) every p nonlinear iterations. The preconditioner is
> still APPLIED at every iteration of the Krylov method.
>
> Thanks for the clarification :D
>
>
>  Within the linear solve inside Newton there is never a
> recomputation of the preconditioner (because the matrix stays the
> same inside the linear solve) so lagging inside the linear solve
> doesn't make sense.
>
> The thing is, as far as I know, that I do have to "recompute" my
> matrix-free preconditioner every linear iteration inside Newton's
> method because the input vector changes throughtout the execution of
> the Krylov solver.
>
> Let me give you a clearer and brief explanation of how the
> preconditioner works. Choosing left preconditioning, we have
> M^(-1)J(x)s = -M^(-1)F(x), where J(x) = L + D + U and M = (D +
> wU)^(-1)D(D + wL)^(-1). So, as this is a matrix-free preconditioner,
> everytime there is a jacobian-vector product J(x)v, PETSc uses the
> finite-difference approximation  (F(x + hM^(-1)v) - F(x)) / h,
> right? So, the PCApply routine is called every linear iteration. My
> intention is to make that call periodically in hopes of lowering the
> runtime. Doesn't that make sense?

NO.

If you are using LU to construct a preconditioner then you ARE
providing the Jacobian explicitly (as a sparse) matrix.  Each time the
preconditioner is built this sparse matrix is factored. At PCApply()
time the triangular solves (which are cheap compared to the
factorization) are applied. Skipping these solves makes no sense.

The fact that you applying the matrix-vector product matrix free has
nothing to do with the application of the preconditioner.

Barry

>
>
> Rafael

```