Actual source code: petscpcmg.h
1: /*
2: Structure used for Multigrid preconditioners
3: */
6: #include petscksp.h
9: /*E
10: PCMGType - Determines the type of multigrid method that is run.
12: Level: beginner
14: Values:
15: + PC_MG_MULTIPLICATIVE (default) - traditional V or W cycle as determined by PCMGSetCycles()
16: . PC_MG_ADDITIVE - the additive multigrid preconditioner where all levels are
17: smoothed before updating the residual. This only uses the
18: down smoother, in the preconditioner the upper smoother is ignored
19: . PC_MG_FULL - same as multiplicative except one also performs grid sequencing,
20: that is starts on the coarsest grid, performs a cycle, interpolates
21: 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
22: algorithm supports smoothing on before the restriction on each level in the initial restriction to the coarsest stage. In addition that algorithm
23: calls the V-cycle only on the coarser level and has a post-smoother instead.
24: - PC_MG_KASKADE - like full multigrid except one never goes back to a coarser level
25: from a finer
27: .seealso: PCMGSetType()
29: E*/
30: typedef enum { PC_MG_MULTIPLICATIVE,PC_MG_ADDITIVE,PC_MG_FULL,PC_MG_KASKADE } PCMGType;
32: #define PC_MG_CASCADE PC_MG_KASKADE;
34: /*E
35: PCMGCycleType - Use V-cycle or W-cycle
37: Level: beginner
39: Values:
40: + PC_MG_V_CYCLE
41: - PC_MG_W_CYCLE
43: .seealso: PCMGSetCycleType()
45: E*/
46: typedef enum { PC_MG_CYCLE_V = 1,PC_MG_CYCLE_W = 2 } PCMGCycleType;
78: /*E
79: PCExoticType - Face based or wirebasket based coarse grid space
81: Level: beginner
83: .seealso: PCExoticSetType(), PCEXOTIC
84: E*/
85: typedef enum { PC_EXOTIC_FACE,PC_EXOTIC_WIREBASKET } PCExoticType;
91: #endif