|
opm-simulators
|
Files | |
| bslv.h | |
| bsr.h | |
| prec.h | |
| vec.h | |
| wrapper.hpp | |
This folder contains mixed-precision building blocks for Krylov subspace methods and a highly optimized mixed-precision implementation of ILU0 and DILU preconditioned bicgstab. Hopefully, this will inspire the exploration of mixed-precision algorithms in OPM.
The initial implementation is specialized for 3x3 block-sparse matrices due to their importance in reservoir simulation and restricted to serial runs. Extending the work to parallel runs is a matter of extending OPM's parallel infrastructure and should be relatively straight-forward.
The mixed-precision solver is selected by the command-line options --linear-solver=mixed-ilu0 or --linear-solver=mixed-dilu. The command-line option --matrix-add-well-contributions=true must also be set as the mixed-precision solver operates directly on block-sparse matrices, not on linear operators as other OPM solvers do. For convenience, a wrapper similar to the one below can be used.