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

Reply via email to