# Why is pinning a point to remove a null space bad?

A Poisson equation with all Neumann boundary conditions has a single constant dimensional null space. When solving via a Krylov method, the null space can be removed either by subtracting the mean of the solution each iteration or by pinning the value of a single vertex.

Pinning a single vertex has the benefit of simplicity, and also avoids an extra global reduction per projection. However, it is typically viewed as bad due to its effect on conditioning. Therefore, I've always subtracted means.

However, the two methods differ from each other by at most a rank 2 correction, so according to (1) they should converge in nearly the same number of iterations (at least in exact arithmetic). Is this reasoning correct, or is there an additional reason that point pinning is bad (perhaps inexact arithmetic)?

## 1 Answer

Your arguments apply naturally to the unpreconditioned case. The reason that I don't recommend pinning is that it confuses norms and preconditioning. If you know the size of a typical diagonal value, you can scale the trivial equation for the pinned node so that norms become reasonable again.

To see the consequence on preconditioning, we have to distinguish between different methods of enforcing the pinning. I consider two of the most popular.

1. If the pinning is achieved by "zeroing a row" (setting a row equal to a scaled row of the identity), it introduces asymmetry which restricts the choice of Krylov method and can confuse preconditioners (e.g. make algebraic multigrid choose a poor aggregate).
2. If the corresponding column is also zeroed (with the contribution "lifted" to the right hand side), the effect is pretty benign.

Note that interpolation operators for multigrid may have to be adjusted to do the pinning in a compatible way on each level. If you don't mind the complexity introduced by implementing the pinning with a good scaling, it is a fine approach. In most cases, we find that it is more intrusive and error-prone to implement pinning in a non-disruptive way than to provide the near-null space. By having the original (singular) matrix around, the solver library can also verify that the provided null space is indeed a null space, thus protecting against a common mistake.