Implementing conjugate gradients with incomplete Cholesky preconditioning in playa
Abstract
In computational sciences, solving an immensely large system of equa- tions is a commonly recurring problem. One of the most effective iterative solvers used for these systems is the method of Conjugate Gradients (CG). CG solves the system Ax = b where A is a NxN symmetric positive definite (SPD), b is a known vector, and x is the unknown vector that is the solution of the mentioned system. There is a version of CG that is used to solve non-symmetric nonsingular matrices but it involves transforming the system Ax = b into AT Ax = A^Tb. Though CG can converge within N iterations in exact arithmetic, it can be vastly improved when a preconditioner is applied. There are several preconditioners that one can use for CG. However, Incomplete Cholesky factorization () was the preconditioner used in this research thus it will be the the primary focus. The implementation of both CG and Incomplete Cholesky Conjugate Gradients (ICCG) can vary in complexity depending on the software used to formulate the code. In Playa, the solver and preconditioners are abstracted so that the end user is able to use a general method or specific method for solving their problem. However, the implementation of ICCG relied on another subpackage Ifpack for the creation of the preconditioners which led to several test matrices having bad preconditioners.