Abstract
We present a suite of algorithms for the iterative solution of linear systems of algebraic equations arising in reservoir simulations. Usually, the solution of linear systems is the most time-consuming part of reservoir simulations, especially for complex physical models. Significant progress in multi-core architectures in the last decade allows now to solve large and complex problems on desktop computers. Moreover, multi-core algorithms can be naturally used as building blocks in hybrid (MPI+SMP) linear solvers.
The suite includes the following parallel algorithms: one partitioner, four preconditioners, and several iterative methods. The partitioner smpKWPT implements a multilevel p-way graph partitioning (similar to METIS) for multicore architectures. It generates partitions with quality similar or better than quality of the partitions produced by METIS. Three parallel preconditioners OverlapFILU, RecursiveFILU, and MultiLevelILUC are intended for preconditioning general matrices, and one preconditioner MultiLevelRIC - for SPD matrices. OverlapFILU implements the most efficient Additive Schwarz algorithms. RecursiveFILU is based on non-overlapping domain decomposition paradigm with parallel truncated factorization of the domain matrices and factorization of the interface matrix. MultiLevelILUC and MultiLevelRIC implement a parallel multilevel framework based on 2x2 splitting with a good quality leading diagonal block and a second diagonal block, containing the Schur complement, which is an initial matrix for the next level. These preconditioners are very robust even for extremely ill conditioned matrices. Several iterative methods are available with an option to control the convergence by the true residuals.
The parallel algorithms are based on very efficient serial algorithms and a highly optimized multi-thread computational core. The solver’s workflow is optimized for application in multi-step and multi-right-hand-side simulations. The parallel efficiency of the solver is demonstrated on several real field models. The multi-core solver usually provides 1.8-3.0 times speed-up on 4 cores and 2.5-4.0 on 8 cores. The performance of our algorithms is considerably better than the performance of the similar algorithms in Trilinos and PETSc as shown by examples.