Helper classes and functions for the AMG preconditioner. Experimental. More...
#include <boost/numeric/ublas/operation.hpp>#include <boost/numeric/ublas/vector.hpp>#include <cmath>#include <set>#include <list>#include <algorithm>#include <map>#include "amg_debug.hpp"Go to the source code of this file.
Classes | |
| class | viennacl::linalg::detail::amg::amg_tag |
| A tag for algebraic multigrid (AMG). Used to transport information from the user to the implementation. More... | |
| class | viennacl::linalg::detail::amg::amg_nonzero_scalar< InternalT, IteratorT, NumericT > |
| A class for a scalar that can be written to the sparse matrix or sparse vector datatypes. More... | |
| class | viennacl::linalg::detail::amg::amg_sparsevector_iterator< InternalT > |
| Defines an iterator for the sparse vector type. More... | |
| class | viennacl::linalg::detail::amg::amg_sparsevector< NumericT > |
| A class for the sparse vector type. More... | |
| class | viennacl::linalg::detail::amg::amg_sparsematrix< NumericT > |
| A class for the sparse matrix type. Uses vector of maps as data structure for higher performance and lower memory usage. Uses similar interface as ublas::compressed_matrix. Can deal with transposed of matrix internally: Creation, Storage, Iterators, etc. More... | |
| class | viennacl::linalg::detail::amg::amg_point |
| A class for the AMG points. Saves point index and influence measure Holds information whether point is undecided, C or F point. Holds lists of points that are influenced by or influencing this point. More... | |
| struct | viennacl::linalg::detail::amg::classcomp |
| Comparison class for the sorted set of points in amg_pointvector. Set is sorted by influence measure from lower to higher with the point-index as tie-breaker. More... | |
| class | viennacl::linalg::detail::amg::amg_pointvector |
| A class for the AMG points. Holds pointers of type amg_point in a vector that can be accessed using [point-index]. Additional list of pointers sorted by influence number and index to improve coarsening performance (see amg_coarse_classic_onepass() in amg_coarse.hpp) Constructs indices for C points on the coarse level, needed for interpolation. More... | |
| class | viennacl::linalg::detail::amg::amg_slicing< InternalT1, InternalT2 > |
| A class for the matrix slicing for parallel coarsening schemes (RS0/RS3). More... | |
Namespaces | |
| viennacl | |
| Main namespace in ViennaCL. Holds all the basic types such as vector, matrix, etc. and defines operations upon them. | |
| viennacl::linalg | |
| Provides all linear algebra operations which are not covered by operator overloads. | |
| viennacl::linalg::detail | |
| Namespace holding implementation details for linear algebra routines. Usually not of interest for a library user. | |
| viennacl::linalg::detail::amg | |
| Implementation namespace for algebraic multigrid preconditioner. | |
Macros | |
| #define | VIENNACL_AMG_COARSE_RS 1 |
| #define | VIENNACL_AMG_COARSE_ONEPASS 2 |
| #define | VIENNACL_AMG_COARSE_RS0 3 |
| #define | VIENNACL_AMG_COARSE_RS3 4 |
| #define | VIENNACL_AMG_COARSE_AG 5 |
| #define | VIENNACL_AMG_INTERPOL_DIRECT 1 |
| #define | VIENNACL_AMG_INTERPOL_CLASSIC 2 |
| #define | VIENNACL_AMG_INTERPOL_AG 3 |
| #define | VIENNACL_AMG_INTERPOL_SA 4 |
Functions | |
| template<typename SparseMatrixT > | |
| void | viennacl::linalg::detail::amg::amg_mat_prod (SparseMatrixT &A, SparseMatrixT &B, SparseMatrixT &RES) |
| Sparse matrix product. Calculates RES = A*B. More... | |
| template<typename SparseMatrixT > | |
| void | viennacl::linalg::detail::amg::amg_galerkin_prod (SparseMatrixT &A, SparseMatrixT &P, SparseMatrixT &RES) |
| Sparse Galerkin product: Calculates RES = trans(P)*A*P. More... | |
| template<typename SparseMatrixT > | |
| void | viennacl::linalg::detail::amg::test_triplematprod (SparseMatrixT &A, SparseMatrixT &P, SparseMatrixT &A_i1) |
| Test triple-matrix product by comparing it to ublas functions. Very slow for large matrices! More... | |
| template<typename SparseMatrixT , typename PointVectorT > | |
| void | viennacl::linalg::detail::amg::test_interpolation (SparseMatrixT &A, SparseMatrixT &P, PointVectorT &Pointvector) |
| Test if interpolation matrix makes sense. Only vanilla test though! Only checks if basic requirements are met! More... | |
Helper classes and functions for the AMG preconditioner. Experimental.
AMG code contributed by Markus Wagner
Definition in file amg_base.hpp.
| #define VIENNACL_AMG_COARSE_AG 5 |
Definition at line 45 of file amg_base.hpp.
| #define VIENNACL_AMG_COARSE_ONEPASS 2 |
Definition at line 42 of file amg_base.hpp.
| #define VIENNACL_AMG_COARSE_RS 1 |
Definition at line 41 of file amg_base.hpp.
| #define VIENNACL_AMG_COARSE_RS0 3 |
Definition at line 43 of file amg_base.hpp.
| #define VIENNACL_AMG_COARSE_RS3 4 |
Definition at line 44 of file amg_base.hpp.
| #define VIENNACL_AMG_INTERPOL_AG 3 |
Definition at line 48 of file amg_base.hpp.
| #define VIENNACL_AMG_INTERPOL_CLASSIC 2 |
Definition at line 47 of file amg_base.hpp.
| #define VIENNACL_AMG_INTERPOL_DIRECT 1 |
Definition at line 46 of file amg_base.hpp.
| #define VIENNACL_AMG_INTERPOL_SA 4 |
Definition at line 49 of file amg_base.hpp.