Relative threshold to use for dropping edges in aggregation graph


#include "petscpc.h" 
#include "petscksp.h" 
PetscErrorCode PCGAMGSetThreshold(PC pc, PetscReal v[], PetscInt n)

Not collective

Input Parameters#

  • pc - the preconditioner context

  • v - array of threshold values for finest n levels; 0.0 means keep all nonzero entries in the graph; negative means keep even zero entries in the graph

  • n - number of threshold values provided in array

Options Database Key#

  • -pc_gamg_threshold - the threshold to drop edges


Increasing the threshold decreases the rate of coarsening. Conversely reducing the threshold increases the rate of coarsening (aggressive coarsening) and thereby reduces the complexity of the coarse grids, and generally results in slower solver converge rates. Reducing coarse grid complexity reduced the complexity of Galerkin coarse grid construction considerably. Before coarsening or aggregating the graph, PCGAMG removes small values from the graph with this threshold, and thus reducing the coupling in the graph and a different (perhaps better) coarser set of points.

If n is less than the total number of coarsenings (see PCGAMGSetNlevels()), then threshold scaling (see PCGAMGSetThresholdScale()) is used for each successive coarsening. In this case, PCGAMGSetThresholdScale() must be called before PCGAMGSetThreshold(). If n is greater than the total number of levels, the excess entries in threshold will not be used.

See Also#

PCGAMG, PCGAMGFilterGraph(), PCGAMGSetAggressiveLevels(), PCGAMGSetThresholdScale()






PCGAMGSetThreshold_GAMG in src/ksp/pc/impls/gamg/gamg.c

Edit on GitLab

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