Algebraic multigrid method. Plus de détails...
Graphe de collaboration de Arcane::Alina::AMG< Backend, Coarsening, Relax >:Classes | |
| struct | AMGLevel |
| struct | params |
| Parameters of the method. Plus de détails... | |
Types publics | |
| typedef Backend | backend_type |
| typedef Backend::value_type | value_type |
| typedef Backend::col_type | col_type |
| typedef Backend::ptr_type | ptr_type |
| typedef Backend::matrix | matrix |
| typedef Backend::vector | vector |
| typedef Coarsening< Backend > | coarsening_type |
| typedef Relax< Backend > | relax_type |
| typedef BuiltinBackend< value_type, col_type, ptr_type >::matrix | build_matrix |
| typedef math::scalar_of< value_type >::type | scalar_type |
| typedef Backend::params | backend_params |
| Backend parameters. | |
Fonctions membres publiques | |
| 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 |
Attributs publics | |
| params | prm |
Types privés | |
| typedef std::list< AMGLevel >::const_iterator | level_iterator |
Fonctions membres privées | |
| void | _initialize (std::shared_ptr< build_matrix > A, const backend_params &bprm=backend_params()) |
| template<class Vec1, class Vec2> | |
| void | cycle (level_iterator lvl, const Vec1 &rhs, Vec2 &x) const |
Attributs privés | |
| std::list< AMGLevel > | levels |
Amis | |
| template<class B, template< class > class C, template< class > class R> | |
| std::ostream & | operator<< (std::ostream &os, const AMG< B, C, R > &a) |
| Sends information about the AMG hierarchy to output stream. | |
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:
Instance of the class builds the AMG hierarchy for the given system matrix and is intended to be used as a preconditioner.
| typedef Backend::params Arcane::Alina::AMG< Backend, Coarsening, Relax >::backend_params |
| typedef Backend Arcane::Alina::AMG< Backend, Coarsening, Relax >::backend_type |
| typedef BuiltinBackend<value_type,col_type,ptr_type>::matrix Arcane::Alina::AMG< Backend, Coarsening, Relax >::build_matrix |
| typedef Coarsening<Backend> Arcane::Alina::AMG< Backend, Coarsening, Relax >::coarsening_type |
| typedef Backend::col_type Arcane::Alina::AMG< Backend, Coarsening, Relax >::col_type |
|
private |
| typedef Backend::matrix Arcane::Alina::AMG< Backend, Coarsening, Relax >::matrix |
| typedef Backend::ptr_type Arcane::Alina::AMG< Backend, Coarsening, Relax >::ptr_type |
| typedef Relax<Backend> Arcane::Alina::AMG< Backend, Coarsening, Relax >::relax_type |
| typedef math::scalar_of<value_type>::type Arcane::Alina::AMG< Backend, Coarsening, Relax >::scalar_type |
| typedef Backend::value_type Arcane::Alina::AMG< Backend, Coarsening, Relax >::value_type |
| typedef Backend::vector Arcane::Alina::AMG< Backend, Coarsening, Relax >::vector |
|
inlineexplicit |
|
inlineexplicit |
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.
| A | The system matrix. |
| p | AMG parameters. |
|
inlineprivate |
|
inline |
|
inline |
|
inline |
Performs single V-cycle for the given right-hand side and solution.
| rhs | Right-hand side vector. |
| x | Solution vector. |
Définition à la ligne 264 du fichier AMG.h.
Référencé par Arcane::Alina::AMG< Backend, Alina::CoarseningRuntime, Alina::RelaxationRuntime >::apply(), et Arcane::Alina::AMG< Backend, Alina::CoarseningRuntime, Alina::RelaxationRuntime >::cycle().
Voici le graphe des appelants de cette fonction :
|
inlineprivate |
|
inline |
Rebuild the hierarchy using the new system matrix.
This requires for prm.allow_rebuild to be set. The transfer operators created during the initial setup are reused.
Définition à la ligne 227 du fichier AMG.h.
Référencé par Arcane::Alina::AMG< Backend, Alina::CoarseningRuntime, Alina::RelaxationRuntime >::rebuild().
Voici le graphe des appelants de cette fonction :
|
inline |
|
inline |
|
inline |
|
private |
| params Arcane::Alina::AMG< Backend, Coarsening, Relax >::prm |