Skip to main content
`Ctrl`+`K`

# PCCP

a “column-projection” preconditioner. Iteratively projects the current residual onto the one dimensional spaces spanned by each of the columns of the matrix. This is a terrible preconditioner and is not recommended, ever!

Loops over the entries of x computing dx_i (e_i is the unit vector in the ith direction) to

            min || b - A(x + dx_i e_i ||_2
            dx_i

        That is, it changes a single entry of x to minimize the new residual norm.
       Let A_i represent the ith column of A, then the minimization can be written as

           min || r - (dx_i) A e_i ||_2
           dx_i
       or   min || r - (dx_i) A_i ||_2
            dx_i

        take the derivative with respect to dx_i to obtain
            dx_i = (A_i^T A_i)^(-1) A_i^T r

        This is equivalent to using Gauss-Seidel on the normal equations

## Notes

This procedure can also be done with block columns or any groups of columns but this is not coded.

These “projections” can be done simultaneously for all columns (similar to the Jacobi method) or sequentially (similar to Gauss-Seidel/SOR). This is only coded for SOR type.

This is related to, but not the same as “row projection” methods.

This is currently coded only for `MATSEQAIJ` matrices

## See Also

KSP: Linear System Solvers, `PCCreate()`, `PCSetType()`, `PCType`, `PCJACOBI`, `PCSOR`

## Level

intermediate

## Location

src/ksp/pc/impls/cp/cp.c

Index of all PC routines
Table of Contents for all manual pages
Index of all manual pages