gko::multigrid::Rs#

Ruge-Stueben (classical) algebraic-multigrid coarsening for M-matrices. Rs marks strong connections with the threshold strength_threshold (default 0.25), selects the C points with a greedy pass on the host, and builds the prolongation with the classical direct interpolation formula. Generation throws gko::NotSupported for a matrix that is not an M-matrix, unless skip_m_matrix_check is set.

template<typename ValueType = default_precision, typename IndexType = int32>
class Rs #

Inherits from

  • public gko::LinOp

  • public gko::multigrid::EnableMultigridLevel<default_precision>

Rs implements the Ruge–Stueben (classical) Algebraic Multigrid (AMG) coarsening strategy for M-matrices. Given a sparse system \(Ax = b\), it produces one level of an AMG hierarchy: a C/F splitting, a prolongation operator \(P\), and a coarse-grid operator \(A_c = R A P\).

Coarsening proceeds in three steps. First, neighbour \(j\) is marked as strongly influencing row \(i\) when \(-a_{ij} \ge \theta \cdot \max_{k \neq i}(-a_{ik})\). Second, a greedy pass selects C-points by repeatedly picking the undecided node with the most strong neighbours, marking its undecided strong neighbours as F-points, and updating neighbour counts accordingly. Third, we create the coarse grid and compute the interpolation via the classical RS direct interpolation formula, accounting for both strong C- and F-neighbours.

Ruge, J. W., & Stueben, K. (1987). Algebraic multigrid, Multigrid Methods (Vol. 3, pp. 73–130). Society for Industrial and Applied Mathematics. https://doi.org/10.1137/1.9781611971057.ch4

Template Parameters:
  • ValueType – precision of matrix elements

  • IndexType – precision of matrix indexes

Public Functions

inline std::shared_ptr<const LinOp> get_system_matrix() const#

Returns the system operator (matrix) of the linear system.

Returns:

the system operator (matrix)

struct parameters_type#

See also