# Which preconditioners (and solver) in PETSc for indefinite symmetric systems should I use?

My system is a symmetric FE problem with lagrange multipliers (e.g. incompressible Stokes' flow):

\begin{pmatrix}A & B^T \\ B & C\end{pmatrix}

where $C = 0$ is the typical case (I have even made sure that the equations are numbered so that the Lagrange multipliers appear last ). The system is quite large (+100k lines).

Having read the answer to this question, I was given the impression that there are suitable preconditioners that can be used for mixed FE-problems.

Using PETSc, I've managed to solve the system with MINRES (-ksp_type minres -pc_type none -mat_type sbaij ), although the precision isn't great (causing several Newton-iterations for a linear problem). No other combination of preconditioner and ksp-solver seems to work.

Is there any combination of flags for PETSc that will solve this system faster than with just MINRES?

• Welcome to SciComp SE! Your question is well posed in terms of clearity and generality. Only one sentence is somewhat unclear or incomplete: What do you mean is caused by the inexact computations? – Jan May 20 '13 at 14:55
• I forgot to finish the sentence! I hope it is clear now. – Mikael Öhman May 20 '13 at 15:38

### Warning

Solving saddle point problems involves a lot more choices than definite problems, and there are a lot more things that can go wrong. Use monitors for all levels to debug convergence, to sure that null spaces are handled correctly when auxiliary operators are singular (usually just a constant null space), and to ensure that preconditioners are stable. These techniques are discussed in this question.

You can start with the section on solving block matrices in the User's Manual. For Stokes-like problems, you can build a Schur complement preconditioner using PCFIELDSPLIT.