# PCML

Use geometric multigrid preconditioning. This preconditioner requires you provide fine grid discretization matrix. The coarser grid matrices and restriction/interpolation operators are computed by ML, with the matrices coverted to PETSc matrices in aij format and the restriction/interpolation operators wrapped as PETSc shell matrices.

### Options Database Key

Multigrid options(inherited)

| -pc_mg_cycles <1>: 1 for V cycle, 2 for W | - cycle (MGSetCycles)
| -pc_mg_smoothup <1>: Number of post | - smoothing steps (MGSetNumberSmoothUp)
| -pc_mg_smoothdown <1>: Number of pre | - smoothing steps (MGSetNumberSmoothDown)
| -pc_mg_type <multiplicative> (one of) additive multiplicative full cascade kascade | - ML options + -pc_ml_PrintLevel <0>: Print level (ML_Set_PrintLevel)

-pc_ml_maxNlevels <10>: Maximum number of levels (None) -. -pc_ml_maxCoarseSize <1>: Maximum coarsest mesh size (ML_Aggregate_Set_MaxCoarseSize)
-pc_ml_CoarsenScheme <Uncoupled> (one of) Uncoupled Coupled MIS METIS -. -pc_ml_DampingFactor <1.33333>: P damping factor (ML_Aggregate_Set_DampingFactor)
-pc_ml_Threshold <0>: Smoother drop tol (ML_Aggregate_Set_Threshold) -- -pc_ml_SpectralNormScheme_Anorm: <false> Method used for estimating spectral radius (ML_Aggregate_Set_SpectralNormScheme_Anorm)

### See Also

PCCreate(), PCSetType(), PCType (for list of available types), PC, PCMGType,
PCMGSetLevels(), PCMGGetLevels(), PCMGSetType(), MPSetCycles(), PCMGSetNumberSmoothDown(), PCMGSetNumberSmoothUp(), PCMGGetCoarseSolve(), PCMGSetResidual(), PCMGSetInterpolation(), PCMGSetRestriction(), PCMGGetSmoother(), PCMGGetSmootherUp(), PCMGGetSmootherDown(), PCMGSetCyclesOnLevel(), PCMGSetRhs(), PCMGSetX(), PCMGSetR()

Level:intermediate
Location:src/ksp/pc/impls/ml/ml.c
Index of all PC routines
Table of Contents for all manual pages
Index of all manual pages