<html>That is great to know! When I read that part of the docs, I thought it would be a big hassle to use geometric multigrid, having to manually define all those matrices.<br />Thanks again!<br /><br /><br /><br />On Thursday, February 02, 2023 16:38 CET, Barry Smith <bsmith@petsc.dev> wrote:<br /> <blockquote type="cite" cite="0A5914C3-B4F3-4541-B05F-0EDD4E002B28@petsc.dev"> </blockquote><meta http-equiv="content-type" content="text/html; "><div> </div>  Yes, it pulls the information from the DM. See src/ksp/pc/impls/mg/mg.c the function PCSetUp_MG.  Note this function has become horribly complex with people adding all kinds of crazy ways to set things up, and the code should be refactored to remove the complexity but anyways you'll see things like DMCoarsen(), DMCreateInterpolation() etc used to create what the MG algorithm needs.<div> </div><div>  Barry</div><div> <div> <blockquote type="cite"><div>On Feb 2, 2023, at 9:26 AM, Grosse-Bley, Paul <paul.grosse-bley@ziti.uni-heidelberg.de> wrote:</div> <div>The <a rel="noopener" target="_blank" href="https://petsc.org/release/docs/manual/ksp/#multigrid-preconditioners">documentation</a> says that<br /><br />> The multigrid routines, which determine the solvers and interpolation/restriction operators that are used, are mandatory.<br /><br />But using code that doesn't contain any multigrid-specific routines e.g. ex45 and running it with<br /><br />-da_grid_x 129 -da_grid_y 129 -da_grid_z 129<br />-pc_type mg<br />-pc_mg_type multiplicative<br />-pc_mg_cycle_type v<br />-pc_mg_levels 5<br />...<br /><br />seems to work fine and also not fall-back to algebraic multigrid/PCGAMG from what I see with -log_view.<br /><br />What interpolation/restriction operators are used by default with PCMG?<br />Is it cleverly using the geometric information from DA?<br /><br />Thanks,<br />Paul<br /> </div></blockquote></div></div></html>