|
| template<class Matrix> |
| | AMG (const Matrix &M, const params &p=params(), const backend_params &bprm=backend_params()) |
| | Builds the AMG hierarchy for the system matrix.
|
| | AMG (std::shared_ptr< build_matrix > A, const params &p=params(), const backend_params &bprm=backend_params()) |
| | Builds the AMG hierarchy for the system matrix.
|
| template<class Matrix> |
| void | rebuild (const Matrix &M, const backend_params &bprm=backend_params()) |
| | Rebuild the hierarchy using the new system matrix.
|
| void | rebuild (std::shared_ptr< build_matrix > A, const backend_params &bprm=backend_params()) |
| | Rebuild the hierarchy using the new system matrix.
|
| template<class Vec1, class Vec2> |
| void | cycle (const Vec1 &rhs, Vec2 &&x) const |
| | Performs single V-cycle for the given right-hand side and solution.
|
| template<class Vec1, class Vec2> |
| void | apply (const Vec1 &rhs, Vec2 &&x) const |
| | Performs single V-cycle after clearing x.
|
| std::shared_ptr< matrix > | system_matrix_ptr () const |
| | Returns the system matrix from the finest level.
|
| const matrix & | system_matrix () const |
| size_t | bytes () const |
template<class Backend, template< class > class Coarsening, template< class > class Relax>
class Arcane::Alina::AMG< Backend, Coarsening, Relax >
Algebraic multigrid method.
AMG is one of the most effective methods for solution of large sparse unstructured systems of equations, arising, for example, from discretization of PDEs on unstructured grids [Trottenberg2001]. The method can be used as a black-box solver for various computational problems, since it does not require any information about the underlying geometry.
The three template parameters allow the user to select the exact components of the method:
- Backend to transfer the constructed hierarchy to,
- Coarsening strategy for hierarchy construction, and
- Relaxation scheme (smoother to use during the solution phase).
Instance of the class builds the AMG hierarchy for the given system matrix and is intended to be used as a preconditioner.
Définition à la ligne 70 du fichier AMG.h.
template<class Backend, template< class > class Coarsening, template< class > class Relax>
Builds the AMG hierarchy for the system matrix.
The shared pointer to the input matrix is passed here. The matrix will not be copied and should out-live the amg instance. The matrix should be either in CSRMatrix format, or inherit from the class and override its ptr(), col(), and val() virtual functions.
- Paramètres
-
| A | The system matrix. |
| p | AMG parameters. |
Définition à la ligne 212 du fichier AMG.h.
template<class Backend, template< class > class Coarsening, template< class > class Relax>
template<class Vec1, class Vec2>
| void Arcane::Alina::AMG< Backend, Coarsening, Relax >::apply |
( |
const Vec1 & | rhs, |
|
|
Vec2 && | x ) const |
|
inline |
Performs single V-cycle after clearing x.
This is intended for use as a preconditioning procedure.
- Paramètres
-
| rhs | Right-hand side vector. |
| x | Solution vector. |
Définition à la ligne 278 du fichier AMG.h.
template<class Backend, template< class > class Coarsening, template< class > class Relax>
template<class B, template< class > class C, template< class > class R>
| std::ostream & operator<< |
( |
std::ostream & | os, |
|
|
const AMG< B, C, R > & | a ) |
|
friend |
Sends information about the AMG hierarchy to output stream.
Définition à la ligne 578 du fichier AMG.h.