:orphan: # 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 `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 --- [Edit on GitLab](https://gitlab.com/petsc/petsc/-/edit/release/src/ksp/pc/impls/ml/ml.c) [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)