Consider a $2\times 2$ block matrix and a linear system of equations associated to it:

\begin{equation} \begin{pmatrix} - A & B \\ B^t & C \end{pmatrix} \begin{pmatrix} x \\ y \end{pmatrix} = \begin{pmatrix} \phi \\ \psi \end{pmatrix} \end{equation}

Assume that $A$ and $C$ are symmetric, and symmetric positive semi-definite, and that $A$ is even invertible. One can construct the Schur complement system $(C + B^t A^{-1} B ) y = \psi - B^t A^{-1} \phi$ where $S = C + B^t A^{-1} B$ is symmetric positive-definite, by assumption.

How do you precondition such a system in general? I have noted that preconditioners for $S$ are derived from block matrix preconditioners for the original block matrix. Is there a general consensus how such a block matrix preconditioner looks like?


You won't find any black-box scalable solutions because $S$ is typically dense and thus cannot be formed. If your problem comes from a mature research area, there might be experience in the literature demonstrating how to approximate Schur complements. One common technique is to use approximate commutator arguments. There are a quite a few papers on this topic by Elman and others for incompressible flow. You can also see Benzi, Golub, and Liesen, Numerical Solution of Saddle Point Problems (2005) for a (slightly dated) broader review.


It is most often problem dependent. For example, the matrix $S$ might actually correspond to an operator that could be individually discretized.

To see an example of what one can do, you could take a look at step-20 of the deal.II tutorials (https://www.dealii.org/developer/doxygen/deal.II/step_20.html). It's not an example intended to show how to build the best performing preconditioner, but how one can think about preconditioners and stack and nest them.

(Disclaimer: I wrote step-20. I also confess that it's not my best tutorial program.)


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.