OPM/opm-autodiff — pull request #140 by atgeirr (2014-05-20 13:35:08+00:00)
Title: Cpr preconditioner

This adds the option to use CPR preconditioning to solve the linear systems resulting from a fully implicit black-oil simulation. The method used is close to the one described in the article by Gries, Stuben et al (SPE 163608).

A few notes:
- Activate the cpr preconditioner with the parameter use_cpr=true.
- We do not at the moment use an AMG solver for the elliptic part, but BiCGStab/ILU0.
- The outer iterations for the full systems are done using GMRES, and the rest of the system (after accounting for the elliptic update) is preconditioned using ILU0.
- There is absolutely no user control over any aspects of the process (choice of solvers, tolerances, verbosity etc.).

When running with use_cpr=true, runtime for the SPE9 case is reduced (on my computer) from 1715 seconds (with UMFPACK) to 174 seconds.