In the simple case of J⊗I, we just need to apply whatever preconditioner to multiple right-hand sides, though that'll be new implementation code in many cases.
For implicit Runge-Kutta, we have I⊗S + J⊗I, and it's much less clear what is the best way to reuse a single preconditioner. On slide 16/17, I used a simple multigrid constructed from pbjacobi and reusing restriction/interpolation/Galerkin coarsening for all components. https://jedbrown.org/files/20190606-StrongTime.pdf Barry Smith <bsm...@petsc.dev> writes: > Pierre, > > This is not what you want but has the same flavor PCHMG. Here all the > fields are in one giant matrix, it builds a preconditioner for a single field > and then reuses it for all the fields. > > I think people have to start writing custom preconditioners for the > structure of (K,M)AIJ matrices but I don't think anyone has started that yet. > > Barry > > > > >> On Jun 23, 2020, at 1:16 AM, Pierre Jolivet <pierre.joli...@enseeiht.fr> >> wrote: >> >> Hello, >> When solving systems with a KSP that has a (K,M)AIJ Pmat attached to it, it >> may be nice to define a preconditioner on the inner AIJ Pmat, so that we are >> not stuck with PCPBJACOBI. >> For example, with FS, there is PCFieldSplitGetSubKSP and then you do what >> you want with the inner blocks. >> Is there something similar for (K,M)AIJ, maybe with a fancy PCCOMPOSITE? >> Of course, I could simply write a shell, but a new PC/option could be added >> to deal with such Pmat types? >> >> Thanks, >> Pierre