Let be symmetric positive semidefinite with null space (orthonormal basis ), and positive definite on . Equivalently, is an SPD operator on the quotient space . For the pure Neumann Weighted Stiffness Matrix, . Let

be the orthogonal projector onto .

Does plain CG work? In exact arithmetic, yes, as long as and (e.g. ). All residuals and search directions then stay in , where is SPD, and CG converges to the solution orthogonal to (the minimum-norm solution). The convergence rate depends on the effective condition number over the nonzero eigenvalues. Nothing in the CG recurrences is special to the nonsingular case. In practice there are three failure modes:

  1. Inconsistent right-hand side. If , for example because the discrete load vector of a boundary current does not sum exactly to zero, then the component can never be reduced. The residual stagnates at and the iterate drifts along without bound. The tolerance is never reached.
  2. Round-off. Even for consistent data, rounding errors introduce small null-space components into the residuals and directions, which accumulate over many iterations.
  3. Preconditioners. need not map into itself (Jacobi does not, AMG and incomplete factorisations generally do not). The preconditioned directions then acquire null-space components.

Projected CG removes all three by applying where the iteration could leave :

  • With inconsistent data it solves the nearest consistent problem , the least-squares solution. The removed part should be reported as a compatibility defect.
  • The effective preconditioner is . It must be symmetric positive definite on , which holds for a symmetric V-cycle or Jacobi.
  • For , applying just subtracts the mean: per application.
  • Periodically recomputing the true residual limits drift of the updated residual.

Choosing the representative. Projected CG returns the solution orthogonal to . A different grounding, such as a zero sum over the boundary nodes, is obtained afterwards by an oblique projection along . This is cheaper and better conditioned than building the constraint into the matrix, which is what pinning a node or adding do (see Null Space of the Neumann Problem).

For many right-hand sides at once see Block Conjugate Gradient.

In ModularEIT.jl: pbcg, pbcg!.

References

  1. E. F. Kaasschieter (1988). Preconditioned conjugate gradients for solving singular systems. J. Comput. Appl. Math. 24(1–2), 265–275. doi:10.1016/0377-0427(88)90358-5
  2. P. Bochev, R. B. Lehoucq (2005). On the Finite Element Solution of the Pure Neumann Problem. SIAM Review 47(1), 50–66. doi:10.1137/S0036144503426074
  3. M. R. Hestenes, E. Stiefel (1952). Methods of conjugate gradients for solving linear systems. J. Res. Natl. Bur. Stand. 49(6), 409–436. doi:10.6028/jres.049.044