# [SciPy-User] preconditioner for GMRES

Darcoux Christine bouloumag@gmail....
Tue Mar 30 15:07:51 CDT 2010

```I guess that replacing the QUICK advection and Crank-Nicolson by low-order
schemes (like central difference advection and Laasonen time integration
scheme) in the derivation of the preconditioner should be enough to improve
the krylov solver.

There are two approach to devise a preconditioner :
1)  Find a matrix M that approximates A, and for which solving a system
is easier than solving with A.
2)  Find a matrix M that approximates A^{-1}, so that only multiplication
by M is needed.
Which approach should be used with the krylov solvers provided by scipy ?
For example, if I want to use Jacobi preconditioner, should I use  M =
diag(A) or M = 1/diag(A) ?

For the moment, I am working with regular cartesian grid, so SSOR is fine
and could be used because the matrix is SPD. In the future, I would like to
extend my work to unstructured grid and I am not sure that the jacobian will
still be symetric. Which preconditioner could be used in this case in a
matrix-free manner ?

Thanks

Christine

2010/3/29 Darcoux Christine <bouloumag@gmail.com>

> I am developping a Jacobian-Free Newton-Krylov code to solve the Navier
> Stokes equations. In this code, the product of the Jacobian matrix with a
> given vector is represented by the matvec method of a "LinearOperator"object. The
> scipy.sparse.linalg.isolve.gmres method can takes an optional
> preconditioner as parameter which is either an object "LinearOperator" or a
> matrix. However, the scipy documentation does not explain how one can form
> this preconditioner in a (ideally) matrix-free manner given only the
> matvec method of the jacobian.
>
> Any suggestions on this would be very appreciated.
>
> Thanks,
>
> Christine
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.scipy.org/pipermail/scipy-user/attachments/20100330/034c8666/attachment.html
```