This package contains the definition of the multigrid iteration including algebraic multigrid (AMG).
This is a mixin-class which yields the correction scheme. It should be merged !before! <mg-iteration> for standard CLOS class precedence.
This is a mixin-class for <mg-iteration> which yields the behaviour of Brandt’s FAS scheme. It should be merged !before! <mg-iteration> or the derived class <geometric-mg> when using standard CLOS class precedence.
The multigrid iteration is a linear iteration specially suited for the solution of systems of equations with elliptic terms. In ideal situations, it solves such systems with optimal complexity. It is a complicated linear iteration, which consists of applying simple linear iterators as smoothers on a hierarchy of grids. This grid hierarchy is obtained either by discretizing on successively refined meshes (geometric multigrid) or it is constructed from matrix information alone (algebraic multigrid).
The <mg-iteration> is not intended to be used directly. Only incorporating mixins like <correction-scheme> or <fas> results in concrete classes like <algebraic-mg>.
This variant of algebraic multigrid coarsens in a special way by selecting coarse-grid nodes from the fine-grid nodes. This selection is kept in a table, which is then used by the method build-ip to build the actual interpolation matrix.
This provides something like Stueben’s variant for selection amg. The original Ruge-Stueben algorithm was developed further since 1987 by Klaus Stueben and collaborators. These developments are published in .... The algorithm implemented here uses their ideas, but does not claim to be equivalent to their code which can be bought at SCAI, St. Augustin, Germany. At this point, I want to thank Tanja Clees for several discussions on AMG.
Computes a coarse-grid matrix from amg, mat, prolongation and restriction.
Given AMG and matrix, this generic function returns coarse-grid matrix, interpolation and restriction matrices for one coarsening step.
Checks if key does not depend on other keys, so that it can be kept on the fine grid.
Builds the Galerkin product R A P. This function works for every type of matrices for which the row- and column-loop macros are defined. This procedure should be inlined into an environment where types are known for avoiding generic arithmetic.
The central generic function constructing the multilevel hierarchy.
Eliminates Dirichlet or slave degrees of freedom which can be handled well by smoothing.
Computes a prolongation matrix from amg and mat. This is often the essence of an AMG method.
Compute a restriction matrix from amg, mat and prolongation.
Select a suitable smoother depending on multigrid iteration and matrix.
Checks if nothing depends on key and if key depends on other keys.
Checks if key is a hanging node or a Dirichlet node.