[petsc-dev] Solving systems with (K,M)AIJ

Jed Brown jed at jedbrown.org
Tue Jun 23 09:13:23 CDT 2020


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 <bsmith at 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.jolivet at 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


More information about the petsc-dev mailing list