: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)