5. Solution of Linear Systems
Zhangxin Chen,Guanren Huan,Yuanle Ma
DOI: https://doi.org/10.1137/1.9780898718942.ch5
2006-01-01
Abstract:We have seen that an application of finite difference or finite element methods to a stationary problem or to an implicit scheme for a transient problem produces a linear system of equations of the formAp=f,(5.1)where A is an M × M matrix. In general, the matrix A arising in numerical reservoir simulation is sparse, highly nonsymmetric, and ill-conditioned. Its dimension M often ranges from hundreds to millions. For the solution of systems of the latter size, Krylov subspace algorithms are the sole option. In this chapter, we consider these iterative algorithms for solving (5.1) for various types of matrix A. For completeness, in the first two sections (Sections 5.1 and 5.2), we discuss direct algorithms (Gaussian elimination or Cholesky's method). These algorithms are first studied for a tridiagonal matrix, and then extended to a general sparse matrix. Because the form of matrix A depends on the ordering of nodes, Section 5.3 briefly touches on this topic; several common ordering techniques used in reservoir simulation are reviewed. The CG (conjugate gradient), GMRES (generalized minimum residual), ORTHOMIN (orthogonal minimum residual), and BiCGSTAB (biconjugate gradient stabilized) iterative algorithms are discussed, respectively, in Sections 5.4–5.7. The discussion of these algorithms is for algorithms of general applicability. Some guidelines are also provided about the choice of a suitable algorithm for a given problem. The Krylov subspace algorithms are often useless without preconditioning. Therefore, the preconditioned versions of these algorithms and the choice of preconditioners are studied in Sections 5.8 and 5.9. Practical considerations for the choice of preconditioners in reservoir simulation are given in Section 5.10. Finally, comparisons between direct and iterative algorithms and bibliographical information are presented in Sections 5.11 and 5.12, respectively.Generally speaking, uppercase letters of bold type will indicate matrices, while lowercase letters of bold type will represent vectors.