Ginkgo  Generated from pipelines/2603405218 branch based on develop. Ginkgo version 2.0.0
A numerical linear algebra library targeting many-core architectures
Classes | Public Types | Public Member Functions | Static Public Member Functions | Friends | List of all members
gko::multigrid::Rs< ValueType, IndexType > Class Template Reference

Rs implements the Ruge–Stueben (classical) Algebraic Multigrid (AMG) coarsening strategy for M-matrices. More...

#include <ginkgo/core/multigrid/rs.hpp>

Inheritance diagram for gko::multigrid::Rs< ValueType, IndexType >:
[legend]
Collaboration diagram for gko::multigrid::Rs< ValueType, IndexType >:
[legend]

Classes

class  Factory
 
struct  parameters_type
 

Public Types

using value_type = ValueType
 
using index_type = IndexType
 
- Public Types inherited from gko::EnablePolymorphicAssignment< Rs< ValueType, IndexType > >
using result_type = Rs< ValueType, IndexType >
 
- Public Types inherited from gko::ConvertibleTo< Rs< ValueType, IndexType > >
using result_type = Rs< ValueType, IndexType >
 
- Public Types inherited from gko::multigrid::EnableMultigridLevel< ValueType >
using value_type = ValueType
 
- Public Types inherited from gko::UseComposition< ValueType >
using value_type = ValueType
 

Public Member Functions

std::shared_ptr< const LinOpget_system_matrix () const
 Returns the system operator (matrix) of the linear system. More...
 
const parameters_typeget_parameters () const
 
- Public Member Functions inherited from gko::EnableAbstractPolymorphicObject< Rs< ValueType, IndexType >, LinOp >
std::unique_ptr< Rs< ValueType, IndexType > > create_default (std::shared_ptr< const Executor > exec) const
 
std::unique_ptr< Rs< ValueType, IndexType > > create_default () const
 
std::unique_ptr< Rs< ValueType, IndexType > > clone (std::shared_ptr< const Executor > exec) const
 
std::unique_ptr< Rs< ValueType, IndexType > > clone () const
 
Rs< ValueType, IndexType > * copy_from (const PolymorphicObject *other)
 
std::enable_if_t< std::is_base_of< PolymorphicObject, std::decay_t< Derived > >::value, Rs< ValueType, IndexType > > * copy_from (std::unique_ptr< Derived > &&other)
 
std::enable_if_t< std::is_base_of< PolymorphicObject, std::decay_t< Derived > >::value, Rs< ValueType, IndexType > > * copy_from (const std::unique_ptr< Derived > &other)
 
Rs< ValueType, IndexType > * copy_from (const std::shared_ptr< const PolymorphicObject > &other)
 
Rs< ValueType, IndexType > * move_from (ptr_param< PolymorphicObject > other)
 
Rs< ValueType, IndexType > * clear ()
 
- Public Member Functions inherited from gko::LinOp
void apply (ptr_param< const LinOp > b, ptr_param< LinOp > x) const
 Applies a linear operator to a vector (or a sequence of vectors). More...
 
void apply (ptr_param< const LinOp > alpha, ptr_param< const LinOp > b, ptr_param< const LinOp > beta, ptr_param< LinOp > x) const
 Performs the operation x = alpha * op(b) + beta * x. More...
 
const dim< 2 > & get_size () const noexcept
 Returns the size of the operator. More...
 
virtual bool apply_uses_initial_guess () const
 Returns true if the linear operator uses the data given in x as an initial guess. More...
 
LinOpoperator= (const LinOp &)=default
 Copy-assigns a LinOp. More...
 
LinOpoperator= (LinOp &&other)
 Move-assigns a LinOp. More...
 
 LinOp (const LinOp &)=default
 Copy-constructs a LinOp. More...
 
 LinOp (LinOp &&other)
 Move-constructs a LinOp. More...
 
- Public Member Functions inherited from gko::EnableAbstractPolymorphicObject< LinOp >
std::unique_ptr< LinOpcreate_default (std::shared_ptr< const Executor > exec) const
 
std::unique_ptr< LinOpcreate_default () const
 
std::unique_ptr< LinOpclone (std::shared_ptr< const Executor > exec) const
 
std::unique_ptr< LinOpclone () const
 
LinOpcopy_from (const PolymorphicObject *other)
 
std::enable_if_t< std::is_base_of< PolymorphicObject, std::decay_t< Derived > >::value, LinOp > * copy_from (std::unique_ptr< Derived > &&other)
 
std::enable_if_t< std::is_base_of< PolymorphicObject, std::decay_t< Derived > >::value, LinOp > * copy_from (const std::unique_ptr< Derived > &other)
 
LinOpcopy_from (const std::shared_ptr< const PolymorphicObject > &other)
 
LinOpmove_from (ptr_param< PolymorphicObject > other)
 
LinOpclear ()
 
- Public Member Functions inherited from gko::PolymorphicObject
PolymorphicObjectoperator= (const PolymorphicObject &)
 
std::unique_ptr< PolymorphicObjectcreate_default (std::shared_ptr< const Executor > exec) const
 Creates a new "default" object of the same dynamic type as this object. More...
 
std::unique_ptr< PolymorphicObjectcreate_default () const
 Creates a new "default" object of the same dynamic type as this object. More...
 
std::unique_ptr< PolymorphicObjectclone (std::shared_ptr< const Executor > exec) const
 Creates a clone of the object. More...
 
std::unique_ptr< PolymorphicObjectclone () const
 Creates a clone of the object. More...
 
PolymorphicObjectcopy_from (const PolymorphicObject *other)
 Copies another object into this object. More...
 
template<typename Derived , typename Deleter >
std::enable_if_t< std::is_base_of< PolymorphicObject, std::decay_t< Derived > >::value, PolymorphicObject > * copy_from (std::unique_ptr< Derived, Deleter > &&other)
 Moves another object into this object. More...
 
template<typename Derived , typename Deleter >
std::enable_if_t< std::is_base_of< PolymorphicObject, std::decay_t< Derived > >::value, PolymorphicObject > * copy_from (const std::unique_ptr< Derived, Deleter > &other)
 Copies another object into this object. More...
 
PolymorphicObjectcopy_from (const std::shared_ptr< const PolymorphicObject > &other)
 Copies another object into this object. More...
 
PolymorphicObjectmove_from (ptr_param< PolymorphicObject > other)
 Moves another object into this object. More...
 
PolymorphicObjectclear ()
 Transforms the object into its default state. More...
 
std::shared_ptr< const Executorget_executor () const noexcept
 Returns the Executor of the object. More...
 
- Public Member Functions inherited from gko::log::EnableLogging< PolymorphicObject >
void add_logger (std::shared_ptr< const Logger > logger) override
 
void remove_logger (const Logger *logger) override
 
void remove_logger (ptr_param< const Logger > logger)
 
const std::vector< std::shared_ptr< const Logger > > & get_loggers () const override
 
void clear_loggers () override
 
- Public Member Functions inherited from gko::log::Loggable
void remove_logger (ptr_param< const Logger > logger)
 
- Public Member Functions inherited from gko::EnablePolymorphicAssignment< Rs< ValueType, IndexType > >
void convert_to (result_type *result) const override
 Converts the implementer to an object of type result_type. More...
 
void move_to (result_type *result) override
 Converts the implementer to an object of type result_type by moving data from this object. More...
 
- Public Member Functions inherited from gko::ConvertibleTo< Rs< ValueType, IndexType > >
void convert_to (ptr_param< result_type > result) const
 
void move_to (ptr_param< result_type > result)
 
- Public Member Functions inherited from gko::multigrid::EnableMultigridLevel< ValueType >
std::shared_ptr< const LinOpget_fine_op () const override
 Returns the operator on fine level. More...
 
std::shared_ptr< const LinOpget_restrict_op () const override
 Returns the restrict operator. More...
 
std::shared_ptr< const LinOpget_coarse_op () const override
 Returns the operator on coarse level. More...
 
std::shared_ptr< const LinOpget_prolong_op () const override
 Returns the prolong operator. More...
 
- Public Member Functions inherited from gko::UseComposition< ValueType >
std::shared_ptr< Composition< ValueType > > get_composition () const
 Returns the composition operators. More...
 
std::shared_ptr< const LinOpget_operator_at (size_type index) const
 Returns the operator at index-th position of composition. More...
 

Static Public Member Functions

static auto build () -> decltype(Factory ::create())
 
static parameters_type parse (const config::pnode &config, const config::registry &context, const config::type_descriptor &td_for_child=config::make_type_descriptor< ValueType, IndexType >())
 

Friends

class EnableLinOp< Rs >
 
class EnablePolymorphicObject< Rs, LinOp >
 

Detailed Description

template<typename ValueType = default_precision, typename IndexType = int32>
class gko::multigrid::Rs< ValueType, IndexType >

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
ValueTypeprecision of matrix elements
IndexTypeprecision of matrix indexes

Member Function Documentation

◆ get_system_matrix()

template<typename ValueType = default_precision, typename IndexType = int32>
std::shared_ptr<const LinOp> gko::multigrid::Rs< ValueType, IndexType >::get_system_matrix ( ) const
inline

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

Returns
the system operator (matrix)

The documentation for this class was generated from the following file: