:orphan: # PCMGType Determines the type of multigrid method that is run. ## Synopsis ``` typedef enum { PC_MG_MULTIPLICATIVE, PC_MG_ADDITIVE, PC_MG_FULL, PC_MG_KASKADE } PCMGType; ``` ## Values - ***`PC_MG_MULTIPLICATIVE` (default) -*** traditional V or W cycle as determined by `PCMGSetCycleType()` - ***`PC_MG_ADDITIVE` -*** the additive multigrid preconditioner where all levels are smoothed before updating the residual. This only uses the down smoother, in the preconditioner the upper smoother is ignored - ***`PC_MG_FULL` -*** same as multiplicative except one also performs grid sequencing, that is starts on the coarsest grid, performs a cycle, interpolates to the next, performs a cycle etc. This is much like the F-cycle presented in "Multigrid" by Trottenberg, Oosterlee, Schuller page 49, but that algorithm supports smoothing on before the restriction on each level in the initial restriction to the coarsest stage. In addition that algorithm calls the V-cycle only on the coarser level and has a post-smoother instead. - ***`PC_MG_KASKADE` -*** like full multigrid except one never goes back to a coarser level from a finer ## See Also [](sec_pc), `PCMG`, `PC`, `PCMGSetType()`, `PCMGSetCycleType()`, `PCMGSetCycleTypeOnLevel()` ## Level beginner ## Location include/petscpctypes.h ## Examples src/ksp/ksp/tutorials/ex35.cxx
src/ksp/ksp/tutorials/ex36.cxx
src/ksp/ksp/tutorials/ex42.c
--- [Edit on GitLab](https://gitlab.com/petsc/petsc/-/edit/release/include/petscpctypes.h) [Index of all PC routines](index.md) [Table of Contents for all manual pages](/manualpages/index.md) [Index of all manual pages](/manualpages/singleindex.md)