Implementation of Krylov subspace solvers with Multipreconditioning techniques
Project plan
In this project the student(s) shall implement and extend Krylov subspace methods for solving linear equations. This is supposed to happen in several steps:
- Implementation of simple Krylov subspace methods such as (Richardson iterations, CG and GMRES) in python. The implementation should provide a flexible interface w.r.t. data types (i.e. not only restricted to numpy arrays). This work package includes proper testing with a small set of linear systems.
- Implementation of preconditioned Krylov subspace methods in python. Again, the implementation should provide a flexible interface. Several test cases shall be implemented.
- Implementation of multipreconditiong Krylov subspace solvers, e.g. the MPGMRES, cf. [1], and/or the sMPGMRES, cf. [2].
- Testing with "real world" problems with linear systems arising from discretized PDEs in
NGSolve
(examples will be provided). Testing includes a comparison of different Krylov subspace solvers with different sets of preconditioners.
The project shall result in a git-repository containing:
- the source code (python),
- API documentation for the code (pydoc/sphinx),
- further documentation on the methods (markdown, gitlab pages, html, latex,..)
- continuous integration facilities including an automatic evaluation of a (gitlab CI / github actions)
- test suite (pytest, ...)
If you are interested in the project, contact C. Lehrenfeld and more information will be provided.
References
[1] Chen Greif, Tyrone Rees, Daniel B. Szyld, Multi-Preconditioned GMRES, doi:10.1.1.700.1010
[2] Niall Bootland and Andrew Wathen, Multipreconditioning with application to two-phase incompressible Navier–Stokes flow, arXiv: 2005.07608.