Mohammad Mirzadeh - Rone Kwei Kim - Pat Plunkett


The Biconjugate Gradient Method is a well-known and widely used algorithm for solving systems of linear equations. Its main advantage over the Conjugate Gradient Method is that it can handle asymmetric systems. However, left unmodified, BiCG is known to be numerically unstable. For this project, we aim to implement a modified, more stable version of BiCG - aptly named BiCGSTAB - which was originally put forth by [1] and refined further by [2].

In addition to implementing a parallel version of BiCGSTAB, we aim to implement the capability for handling arbitrary meshes with arbitrary partitions among processors. While we will not directly write a code for generating meshes, partitions, and the corresponding linear systems, we will write our code to be able to handle these as inputs; that is, the user provides the mesh, the partition of the mesh, and the corresponding linear system, and our code will output the approximation.

As test cases we will investigate the applicability and robustness of the code in dealing with asymmetric matrices arising from discretizing diffusion problems on non-uniform grids, diffusion problems with variable coefficients, and advection-diffusion problems. Finally, we will also investigate the effect of mesh partitioning, ghost layers, and preconditioning of the coefficient matrix on the parallel efficiency and total memory usage.




[1] Van Der Horst, H. A.: Bi-CGSTAB: A Fast and Smoothly Converging Variant of Bi-CG for the Solution of Nonsymmetric Linear Systems. SIAM J. ScI. STAT. COMPUT., Vol. 13, No. 2, pp. 631-644, March 1992

[2] Sliejpen, Gerard, and Fokkema, Diederik: BiCGSTAB(L) for Linear Equations Involving Unsymmetric Matrices with Complex Spectrum. ETNA, Vol. 1, pp. 11-32, September 1993.