This linear system solver uses the restarted GMRES (generalized minimum residual) method (see Ref. 9 and Ref. 10). This is an iterative method for general linear systems of the form Ax = b. For fast convergence it is important to use an appropriate preconditioner.
This solver uses the biconjugate gradient stabilized iterative method (Ref. 9 and Ref. 15) for solving general linear systems of the form Ax = b. The required memory and the computational time for one iteration with BiCGStab is constant; that is, the time and memory requirements do not increase with the number of iterations as they do for GMRES. BiCGStab uses approximately the same amount of memory as GMRES uses for two iterations. Therefore, BiCGStab typically uses less memory than GMRES.
The convergence behavior of BiCGStab is often more irregular than that of GMRES. Intermediate residuals can even be orders of magnitude larger than the initial residual, which can affect the numerical accuracy as well as the rate of convergence. If the algorithm detects poor accuracy in the residual or the risk of stagnation, it restarts the iterations with the current solution as the initial guess.
In contrast to GMRES and conjugate gradients, BiCGStab uses two matrix-vector multiplications each iteration. This also requires two preconditioning steps in each iteration. Also, when using the left-preconditioned BiCGStab, an additional preconditioning step is required each iteration. That is, left-preconditioned BiCGStab requires a total of three preconditioning steps in each iteration.