:orphan: # PCHMG For multiple component PDE problems constructs a hierarchy of restriction operators to coarse grid problems using the submatrix of a single component with either `PCHYPRE` or `PCGAMG`. The same restriction operators are used for each of the components of the PDE with `PCMG` resulting in a much more efficient to build and apply preconditioner than using `PCGAMG` on the entire system. ## Options Database Keys - ***-pc_hmg_reuse_interpolation -*** Whether or not to reuse the interpolations for new matrix values. It can potentially save compute time. - ***-pc_hmg_use_subspace_coarsening -*** Whether or not to use subspace coarsening (that is, coarsen a submatrix). - ***-hmg_inner_pc_type -*** What method is used to coarsen matrix - ***-pc_hmg_use_matmaij -*** Whether or not to use `MATMAIJ` for multicomponent problems for saving memory ## Note `MatSetBlockSize()` must be called on the linear system matrix to set the number of components of the PDE. ## References - **** -*** Fande Kong, Yaqi Wang, Derek R Gaston, Cody J Permann, Andrew E Slaughter, Alexander D Lindsay, Richard C Martineau, A highly parallel multilevel Newton-Krylov-Schwarz method with subspace-based coarsening and partition-based balancing for the multigroup neutron transport equations on 3D unstructured meshes, arXiv preprint arXiv:1903.03659, 2019 ## See Also `PCCreate()`, `PCSetType()`, `PCType`, `PC`, `PCMG`, `PCHYPRE`, `PCHMG`, `PCGetCoarseOperators()`, `PCGetInterpolations()`, `PCHMGSetReuseInterpolation()`, `PCHMGSetUseSubspaceCoarsening()`, `PCHMGSetInnerPCType()` ## Level intermediate ## Location src/ksp/pc/impls/hmg/hmg.c ## Examples src/ksp/ksp/tutorials/ex4.c
--- [Edit on GitLab](https://gitlab.com/petsc/petsc/-/edit/release/src/ksp/pc/impls/hmg/hmg.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)