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|w) - 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 (additive|multiplicative|full|kascade) - type of multgrid

## 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 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_Set_SpectralNormScheme_Anorm()`)

- -pc_ml_repartition false - 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 Zoltan - Repartitioning library to use (`ML_Repartition_Set_Partitioner()`)

- -pc_ml_repartitionZoltanScheme RCB - Repartitioning scheme to use (None)

- -pc_ml_Aux false - 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