PCHMG#

Preconditioner for multiple component PDE problems that 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 then used for each of the components of the PDE within the PCMG multigrid preconditioner. This results in a much more efficient to build and apply preconditioner than using PCGAMG on the entire system [KWG+20].

Options Database Keys#

  • -pc_hmg_reuse_interpolation <true | false> - Whether or not to reuse the interpolations for new matrix values or rebuild the interpolation. This can save compute time.

  • -pc_hmg_use_subspace_coarsening <true | false> - Whether or not to use subspace coarsening (that is, coarsen a submatrix, or coarsen on the full matrix).

  • -hmg_inner_pc_type <hypre, gamg, …> - What method to use to generate the hierarchy of restriction operators

  • -pc_hmg_use_matmaij <true | false> - 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#

[KWG+20]

Fande Kong, Yaqi Wang, Derek R Gaston, Cody J Permann, Andrew E Slaughter, Alexander D Lindsay, Mark D DeHart, and Richard C Martineau. A highly parallel multilevel Newton–Krylov–Schwarz method with subspace-based coarsening and partition-based balancing for the multigroup neutron transport equation on three-dimensional unstructured meshes. SIAM Journal on Scientific Computing, 42(5):C193–C220, 2020.

See Also#

KSP: Linear System Solvers, PCCreate(), PCSetType(), PCType, PC, PCMG, PCHYPRE, PCHMG, PCGetCoarseOperators(), PCGetInterpolations(), PCHMGSetReuseInterpolation(), PCHMGSetUseSubspaceCoarsening(), PCHMGSetInnerPCType(), PCGAMG

Level#

intermediate

Location#

src/ksp/pc/impls/hmg/hmg.c

Examples#

src/ksp/ksp/tutorials/ex4.c


Index of all PC routines
Table of Contents for all manual pages
Index of all manual pages