Skip to main content
`Ctrl`+`K`

# PCML

Use the SNL ML algebraic multigrid preconditioner.

## Options Database Keys

## Multigrid options(inherited)

- -pc_mg_cycle_type - v for V cycle, w for W-cycle (`PCMGSetCycleType()`)

- -pc_mg_distinct_smoothup - Should one configure the up and down smoothers separately (`PCMGSetDistinctSmoothUp()`)

- -pc_mg_type - (one of) additive multiplicative full kascade

## ML Options Database Key

- -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 - (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 - Method used for estimating spectral radius (`ML_Set_SpectralNormScheme_Anorm()`)

- -pc_ml_repartition - Allow ML to repartition levels of the hierarchy (`ML_Repartition_Activate()`)

- -pc_ml_repartitionMaxMinRatio <1.3> - Acceptable ratio of repartitioned sizes (`ML_Repartition_Set_LargestMinMaxRatio()`)

- -pc_ml_repartitionMinPerProc <512> - Smallest repartitioned size (`ML_Repartition_Set_MinPerProc()`)

- -pc_ml_repartitionPutOnSingleProc <5000> - Problem size automatically repartitioned to one processor (`ML_Repartition_Set_PutOnSingleProc()`)

- -pc_ml_repartitionType - Repartitioning library to use (`ML_Repartition_Set_Partitioner()`)

- -pc_ml_repartitionZoltanScheme - Repartitioning scheme to use (None)

- -pc_ml_Aux - Aggregate using auxiliary coordinate-based Laplacian (None)

- -pc_ml_AuxThreshold <0.0> - Auxiliary smoother drop tol (None)

## Developer Note

The coarser grid matrices and restriction/interpolation operators are computed by ML, with the matrices converted to PETSc matrices in `MATAIJ` format and the restriction/interpolation operators wrapped as PETSc shell matrices.

## See Also

KSP: Linear System Solvers, `PCCreate()`, `PCSetType()`, `PCType`, `PC`, `PCMGType`, `PCMG`, `PCHYPRE`, `PCGAMG`, `PCMGSetLevels()`, `PCMGGetLevels()`, `PCMGSetType()`, `MPSetCycles()`, `PCMGSetDistinctSmoothUp()`, `PCMGGetCoarseSolve()`, `PCMGSetResidual()`, `PCMGSetInterpolation()`, `PCMGSetRestriction()`, `PCMGGetSmoother()`, `PCMGGetSmootherUp()`, `PCMGGetSmootherDown()`, `PCMGSetCycleTypeOnLevel()`, `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