Closed klausbu closed 3 years ago
Interesting. Do you have a paper with more details?
- Agglomeration algorithm: selectable and optionally cached.
Not sure what this means.
- Restriction operator: summation.
- Prolongation operator: injection.
This seems like a very simple strategy, so I would guess a smoothed_aggregation (prm.put("precond.coarsening.type", "smoothed_aggregation")
) or non-smoothed aggregation (prm.put("precond.coarsening.type", "aggregation")
) should work equally well
- Smoother: Gauss-Seidel.
prm.put("precond.relax.type", "gauss_seidel")
, although ilu0
should give you similar results.
- Coarse matrix creation: central coefficient: summation of fine grid central coefficients with the removal of intra-cluster face; off-diagonal coefficient: summation of off-diagonal faces.
- Coarse matrix scaling: performed by correction scaling, using steepest descent optimisation.
I don't know what these mean.
- Type of cycle: V-cycle with optional pre-smoothing.
You get this is by default, and you can control the number of pre- and post- smoothing steps with 'precond.npre' and 'precond.npost'
- Coarsest-level matrix solved using PCG or PBiCGStab.
Do you know why is this required? If the problem is singular, or is defined up to a constant, then you could use smoothing at the coarsest level insted of the default direct solve. To do that you prm.put("precond.direct_coarse", false)
(also see https://github.com/ddemidov/amgcl/issues/31#issuecomment-251355550).
What problem exactly are you trying to solve? If this is a Navier-Stokes system, you could use schur_pressure_correction
preconditioner. It is a two-step field-split-type preconditioner that treats pressure and velocity unknowns differently. See examples/schur_pressure_correction.cpp for an example, and https://amgcl.readthedocs.io/en/latest/benchmarks.html#d-navier-stokes-problem for some results.
These are the characteristics of an AMG implementation highly optimized to solve the p equation matrix resulting from external flow problems (CFD):
Based on this, is there a way to improve the following settings: