Dear Petsc developers, I am Pierre Gosselet, researcher in computational mechanics from France (ENS Paris Saclay / Univ. Lille). Lately I have been working on multipreconditioned solvers arising from domain decomposition (DD). I have co-authored some papers with Nicole Spillane whom you probably know.
Together with Nicolas Tardieu from EDF we have done some developments in PetSc and we would be happy to share them. Nicolas told me I had better send you a short notice before making a pull request. We have implemented a MultiPreconditioned Conjugate Gradients solver for the SPD case and a MultiPreconditioned Orthomin solver for general matrices. These solvers rely on a method with signature PCApplyMultiPrecond(PC, Vec in, Mat out) We proposed an implementation of this method in the (Restrictive) Additive Schwarz (R)ASM framework: PCApplyMultiPrecond_ASM(...). When preconditioning, each subdomain provides a column which is used to expand the search space. There is an experimental use of the information in NearNullSpace in order to speed up the convergence (ersatz of Nicholaides' two-level (R)ASM). In practice, there are new files for the solvers (mpcg.c and mpomin.c), some features were added in asm.c, and there are few lines added in other files in order to declare the solvers. We tried to make a nice implementation and integration, but we would be happy to have our code reviewed for better performance. Unfortunately, from the very limited numerical experiments that we have conducted, we do not have tremendous examples to show, the extra costs associated with multipreconditioning are not always compensated by the improved convergence. In fact, it appears that multipreconditioned solvers do not behave as well in the (R)ASM framework as in other DD frameworks, like FETI(DP) or BDD(C), where the spectrum has a more favorable shape and where adaptive strategies are available. Anyhow our developments offer opportunities to test mpcg and mpomin, to implement new multipreconditioned solvers and new multipreconditioning frameworks (one just need to implement PCApplyMultiPrecond_???). I hope you will be interested by these developments, best regards pierre -- Pierre Gosselet CR CNRS (research agent) LMT -- ENS Paris-Saclay/UMR8535 61 av. du président Wilson, 94235 CACHAN tel: +33 1 47405333
