PCAIR#
Reduction-based algebraic multigrid using approximate ideal restriction (AIR), providing the AIRG, nAIR and lAIR methods for nonsymmetric/asymmetric linear systems
Options Database Keys#
-pc_air_z_type (product|lair|lair_sai) - grid-transfer operator type; defaults to product
-pc_air_inverse_type (power|arnoldi|newton|neumann|sai|isai|wjacobi|jacobi) - approximate inverse used for smoothing; defaults to arnoldi
-pc_air_poly_order poly_order - polynomial order if using a polynomial inverse type; defaults to 6
-pc_air_smooth_type smooth_type - type and number of smooths, any sequence of f and c characters (for example ff, fc, fcf); defaults to ff
-pc_air_cf_splitting_type (pmisr_ddc|diag_dom|pmis|pmis_dist2|agg|pmis_agg|cr) - CF splitting to use; defaults to pmisr_ddc
-pc_air_strong_threshold strong_threshold - strong threshold used in the CF splitting; defaults to 0.5
-pc_air_r_drop drop_tol - drop tolerance applied to R on each level after it is built; defaults to 0.01
-pc_air_a_drop drop_tol - drop tolerance applied to the coarse matrix on each level after it is built; defaults to 1e-4
-pc_air_print_stats_timings (true|false) - print statistics about the multigrid hierarchy and timings; defaults to false
Notes#
PCAIR requires configuring PETSc with --download-pflare.
The combination of -pc_air_z_type and -pc_air_inverse_type selects the reduction
multigrid: product + arnoldi gives AIRG, lair + wjacobi gives lAIR, and so on.
Only the most common options are listed here. See PFLAREProject/PFLARE
and its docs/options.md for the complete set, and the many PCAIRSetXXX() routines.
PCAIR can use GPUs in both its setup and solve: configure PETSc with Kokkos and the
relevant GPU backend (CUDA, HIP or SYCL), then specify the matrix/vector types as the
PETSc Kokkos types (for example -mat_type aijkokkos -vec_type kokkos, or
-dm_mat_type aijkokkos -dm_vec_type kokkos if using a DM).
PCAIR implements PCMatApply(), so a KSPMatSolve() with KSPPREONLY or
KSPRICHARDSON applies the multigrid hierarchy to a whole dense block of right-hand
sides at once, with sparse matrix by dense matrix products throughout; on the GPU
backends this keeps a multiple right-hand side solve on the device.
If you use PCAIR please cite S. Dargaville et al., “AIR multigrid with GMRES polynomials
(AIRG) and additive preconditioners for Boltzmann transport”, J. Comput. Phys. 518 (2024) 113342.
See Also#
KSP: Linear System Solvers, PCCreate(), PCSetType(), PCType, PC, PCPFLAREINV, PCHYPRE, PCGAMG, PCMG, PCMatApply(), KSPMatSolve()
Level#
intermediate
Index of all PC routines
Table of Contents for all manual pages
Index of all manual pages