[petsc-users] Hybrid multigrid

Anton Popov popov at uni-mainz.de
Thu Apr 10 13:04:52 CDT 2025


Hi guys,

I have a custom multigrid preconditioner that uses Galerkin coarsening 
for the staggered grid finite difference. Now I want to replace a few 
top level operators with the matrix-free shell matrices.

Here is my plan:

1. Set PC_MG_GALERKIN_NONE

2. Call PCMGSetRestriction and PCMGSetInterpolation on all levels as I 
do it already

3. Use a combination of PCMGGetSmoother and KSPSetOperators to 
communicate my operators with PCMG

     a. On the top levels just set the shell matrices minimalistically 
equipped with MATOP_GET_DIAGONAL and MATOP_MULT.

     b. On the bottom levels generate the operators by explicitly 
calling MatMatMatMult (R is not the same as P in my case).

         Use MAT_INITIAL_MATRIX for the first time

         Use MAT_REUSE_MATRIX for the subsequent calls

Is this a proper way to do it, or there is something wrong?

If I want the restriction/interpolation matrices to be matrix-free on 
the top levels as well, I would need to set MATOP_MULT_ADD for them. Is 
this enough, or do I need something else?

Thanks!

Anton
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20250410/890d07e8/attachment.html>


More information about the petsc-users mailing list