Data Structures | |
| class | amg_tag |
| A tag for algebraic multigrid (AMG). Used to transport information from the user to the implementation. More... | |
| class | amg_nonzero_scalar |
| A class for a scalar that can be written to the sparse matrix or sparse vector datatypes. More... | |
| class | amg_sparsevector_iterator |
| Defines an iterator for the sparse vector type. More... | |
| class | amg_sparsevector |
| A class for the sparse vector type. More... | |
| class | amg_sparsematrix |
| 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 | 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 | 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 | 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 | amg_slicing |
| A class for the matrix slicing for parallel coarsening schemes (RS0/RS3). More... | |
Functions | |
| template<typename SparseMatrixType > | |
| void | amg_mat_prod (SparseMatrixType &A, SparseMatrixType &B, SparseMatrixType &RES) |
| Sparse matrix product. Calculates RES = A*B. | |
| template<typename SparseMatrixType > | |
| void | amg_galerkin_prod (SparseMatrixType &A, SparseMatrixType &P, SparseMatrixType &RES) |
| Sparse Galerkin product: Calculates RES = trans(P)*A*P. | |
| template<typename SparseMatrixType > | |
| void | test_triplematprod (SparseMatrixType &A, SparseMatrixType &P, SparseMatrixType &A_i1) |
| Test triple-matrix product by comparing it to ublas functions. Very slow for large matrices! | |
| template<typename SparseMatrixType , typename PointVectorType > | |
| void | test_interpolation (SparseMatrixType &A, SparseMatrixType &P, PointVectorType &Pointvector) |
| Test if interpolation matrix makes sense. Only vanilla test though! Only checks if basic requirements are met! | |
| template<typename InternalType1 , typename InternalType2 , typename InternalType3 > | |
| void | amg_coarse (unsigned int level, InternalType1 &A, InternalType2 &Pointvector, InternalType3 &Slicing, amg_tag &tag) |
| Calls the right coarsening procedure. | |
| template<typename InternalType1 , typename InternalType2 > | |
| void | amg_influence (unsigned int level, InternalType1 const &A, InternalType2 &Pointvector, amg_tag &tag) |
| Determines strong influences in system matrix, classical approach (RS). Multithreaded! | |
| template<typename InternalType1 , typename InternalType2 > | |
| void | amg_coarse_classic_onepass (unsigned int level, InternalType1 &A, InternalType2 &Pointvector, amg_tag &tag) |
| Classical (RS) one-pass coarsening. Single-Threaded! (VIENNACL_AMG_COARSE_CLASSIC_ONEPASS). | |
| template<typename InternalType1 , typename InternalType2 > | |
| void | amg_coarse_classic (unsigned int level, InternalType1 &A, InternalType2 &Pointvector, amg_tag &tag) |
| Classical (RS) two-pass coarsening. Single-Threaded! (VIENNACL_AMG_COARSE_CLASSIC). | |
| template<typename InternalType1 , typename InternalType2 , typename InternalType3 > | |
| void | amg_coarse_rs0 (unsigned int level, InternalType1 &A, InternalType2 &Pointvector, InternalType3 &Slicing, amg_tag &tag) |
| Parallel classical RS0 coarsening. Multi-Threaded! (VIENNACL_AMG_COARSE_RS0 || VIENNACL_AMG_COARSE_RS3). | |
| template<typename InternalType1 , typename InternalType2 , typename InternalType3 > | |
| void | amg_coarse_rs3 (unsigned int level, InternalType1 &A, InternalType2 &Pointvector, InternalType3 &Slicing, amg_tag &tag) |
| RS3 coarsening. Single-Threaded! (VIENNACL_AMG_COARSE_RS3). | |
| template<typename InternalType1 , typename InternalType2 > | |
| void | amg_coarse_ag (unsigned int level, InternalType1 &A, InternalType2 &Pointvector, amg_tag &tag) |
| AG (aggregation based) coarsening. Single-Threaded! (VIENNACL_AMG_COARSE_SA). | |
| template<typename MatrixType > | |
| void | printmatrix (MatrixType &mat, int const value=-1) |
| template<typename VectorType > | |
| void | printvector (VectorType const &vec) |
| template<typename InternalType1 , typename InternalType2 > | |
| void | amg_interpol (unsigned int level, InternalType1 &A, InternalType1 &P, InternalType2 &Pointvector, amg_tag &tag) |
| Calls the right function to build interpolation matrix. | |
| template<typename InternalType1 , typename InternalType2 > | |
| void | amg_interpol_direct (unsigned int level, InternalType1 &A, InternalType1 &P, InternalType2 &Pointvector, amg_tag &tag) |
| Direct interpolation. Multi-threaded! (VIENNACL_AMG_INTERPOL_DIRECT). | |
| template<typename InternalType1 , typename InternalType2 > | |
| void | amg_interpol_classic (unsigned int level, InternalType1 &A, InternalType1 &P, InternalType2 &Pointvector, amg_tag &tag) |
| Classical interpolation. Don't use with onepass classical coarsening or RS0 (Yang, p.14)! Multi-threaded! (VIENNACL_AMG_INTERPOL_CLASSIC). | |
| template<typename SparseMatrixType > | |
| void | amg_truncate_row (SparseMatrixType &P, unsigned int row, amg_tag &tag) |
| Interpolation truncation (for VIENNACL_AMG_INTERPOL_DIRECT and VIENNACL_AMG_INTERPOL_CLASSIC). | |
| template<typename InternalType1 , typename InternalType2 > | |
| void | amg_interpol_ag (unsigned int level, InternalType1 &A, InternalType1 &P, InternalType2 &Pointvector, amg_tag &tag) |
| AG (aggregation based) interpolation. Multi-Threaded! (VIENNACL_INTERPOL_SA). | |
| template<typename InternalType1 , typename InternalType2 > | |
| void | amg_interpol_sa (unsigned int level, InternalType1 &A, InternalType1 &P, InternalType2 &Pointvector, amg_tag &tag) |
| SA (smoothed aggregate) interpolation. Multi-Threaded! (VIENNACL_INTERPOL_SA). | |
| void viennacl::linalg::detail::amg::amg_coarse | ( | unsigned int | level, | |
| InternalType1 & | A, | |||
| InternalType2 & | Pointvector, | |||
| InternalType3 & | Slicing, | |||
| amg_tag & | tag | |||
| ) |
Calls the right coarsening procedure.
| level | Coarse level identifier | |
| A | Operator matrix on all levels | |
| Pointvector | Vector of points on all levels | |
| Slicing | Partitioning of the system matrix to different processors (only used in RS0 and RS3) | |
| tag | AMG preconditioner tag |
| void viennacl::linalg::detail::amg::amg_coarse_ag | ( | unsigned int | level, | |
| InternalType1 & | A, | |||
| InternalType2 & | Pointvector, | |||
| amg_tag & | tag | |||
| ) |
AG (aggregation based) coarsening. Single-Threaded! (VIENNACL_AMG_COARSE_SA).
| level | Coarse level identifier | |
| A | Operator matrix on all levels | |
| Pointvector | Vector of points on all levels | |
| tag | AMG preconditioner tag |
| void viennacl::linalg::detail::amg::amg_coarse_classic | ( | unsigned int | level, | |
| InternalType1 & | A, | |||
| InternalType2 & | Pointvector, | |||
| amg_tag & | tag | |||
| ) |
Classical (RS) two-pass coarsening. Single-Threaded! (VIENNACL_AMG_COARSE_CLASSIC).
| level | Coarse level identifier | |
| A | Operator matrix on all levels | |
| Pointvector | Vector of points on all levels | |
| tag | AMG preconditioner tag |
| void viennacl::linalg::detail::amg::amg_coarse_classic_onepass | ( | unsigned int | level, | |
| InternalType1 & | A, | |||
| InternalType2 & | Pointvector, | |||
| amg_tag & | tag | |||
| ) |
Classical (RS) one-pass coarsening. Single-Threaded! (VIENNACL_AMG_COARSE_CLASSIC_ONEPASS).
| level | Course level identifier | |
| A | Operator matrix on all levels | |
| Pointvector | Vector of points on all levels | |
| tag | AMG preconditioner tag |
| void viennacl::linalg::detail::amg::amg_coarse_rs0 | ( | unsigned int | level, | |
| InternalType1 & | A, | |||
| InternalType2 & | Pointvector, | |||
| InternalType3 & | Slicing, | |||
| amg_tag & | tag | |||
| ) |
Parallel classical RS0 coarsening. Multi-Threaded! (VIENNACL_AMG_COARSE_RS0 || VIENNACL_AMG_COARSE_RS3).
| level | Coarse level identifier | |
| A | Operator matrix on all level | |
| Pointvector | Vector of points on all levels | |
| Slicing | Partitioning of the system matrix and the other data structures to different processors | |
| tag | AMG preconditioner tag |
| void viennacl::linalg::detail::amg::amg_coarse_rs3 | ( | unsigned int | level, | |
| InternalType1 & | A, | |||
| InternalType2 & | Pointvector, | |||
| InternalType3 & | Slicing, | |||
| amg_tag & | tag | |||
| ) |
RS3 coarsening. Single-Threaded! (VIENNACL_AMG_COARSE_RS3).
| level | Coarse level identifier | |
| A | Operator matrix on all levels | |
| Pointvector | Vector of points on all levels | |
| Slicing | Partitioning of the system matrix and the other data structures to different processors | |
| tag | AMG preconditioner tag |
| void viennacl::linalg::detail::amg::amg_galerkin_prod | ( | SparseMatrixType & | A, | |
| SparseMatrixType & | P, | |||
| SparseMatrixType & | RES | |||
| ) |
Sparse Galerkin product: Calculates RES = trans(P)*A*P.
| A | Operator matrix (quadratic) | |
| P | Prolongation/Interpolation matrix | |
| RES | Result Matrix (Galerkin operator) |
| void viennacl::linalg::detail::amg::amg_influence | ( | unsigned int | level, | |
| InternalType1 const & | A, | |||
| InternalType2 & | Pointvector, | |||
| amg_tag & | tag | |||
| ) |
Determines strong influences in system matrix, classical approach (RS). Multithreaded!
| level | Coarse level identifier | |
| A | Operator matrix on all levels | |
| Pointvector | Vector of points on all levels | |
| tag | AMG preconditioner tag |
| void viennacl::linalg::detail::amg::amg_interpol | ( | unsigned int | level, | |
| InternalType1 & | A, | |||
| InternalType1 & | P, | |||
| InternalType2 & | Pointvector, | |||
| amg_tag & | tag | |||
| ) |
Calls the right function to build interpolation matrix.
| level | Coarse level identifier | |
| A | Operator matrix on all levels | |
| P | Prolongation matrices. P[level] is constructed | |
| Pointvector | Vector of points on all levels | |
| tag | AMG preconditioner tag |
| void viennacl::linalg::detail::amg::amg_interpol_ag | ( | unsigned int | level, | |
| InternalType1 & | A, | |||
| InternalType1 & | P, | |||
| InternalType2 & | Pointvector, | |||
| amg_tag & | tag | |||
| ) |
AG (aggregation based) interpolation. Multi-Threaded! (VIENNACL_INTERPOL_SA).
| level | Coarse level identifier | |
| A | Operator matrix on all levels | |
| P | Prolongation matrices. P[level] is constructed | |
| Pointvector | Vector of points on all levels | |
| tag | AMG preconditioner tag |
| void viennacl::linalg::detail::amg::amg_interpol_classic | ( | unsigned int | level, | |
| InternalType1 & | A, | |||
| InternalType1 & | P, | |||
| InternalType2 & | Pointvector, | |||
| amg_tag & | tag | |||
| ) |
Classical interpolation. Don't use with onepass classical coarsening or RS0 (Yang, p.14)! Multi-threaded! (VIENNACL_AMG_INTERPOL_CLASSIC).
| level | Coarse level identifier | |
| A | Operator matrix on all levels | |
| P | Prolongation matrices. P[level] is constructed | |
| Pointvector | Vector of points on all levels | |
| tag | AMG preconditioner tag |
| void viennacl::linalg::detail::amg::amg_interpol_direct | ( | unsigned int | level, | |
| InternalType1 & | A, | |||
| InternalType1 & | P, | |||
| InternalType2 & | Pointvector, | |||
| amg_tag & | tag | |||
| ) |
Direct interpolation. Multi-threaded! (VIENNACL_AMG_INTERPOL_DIRECT).
| level | Coarse level identifier | |
| A | Operator matrix on all levels | |
| P | Prolongation matrices. P[level] is constructed | |
| Pointvector | Vector of points on all levels | |
| tag | AMG preconditioner tag |
| void viennacl::linalg::detail::amg::amg_interpol_sa | ( | unsigned int | level, | |
| InternalType1 & | A, | |||
| InternalType1 & | P, | |||
| InternalType2 & | Pointvector, | |||
| amg_tag & | tag | |||
| ) |
SA (smoothed aggregate) interpolation. Multi-Threaded! (VIENNACL_INTERPOL_SA).
| level | Coarse level identifier | |
| A | Operator matrix on all levels | |
| P | Prolongation matrices. P[level] is constructed | |
| Pointvector | Vector of points on all levels | |
| tag | AMG preconditioner tag |
| void viennacl::linalg::detail::amg::amg_mat_prod | ( | SparseMatrixType & | A, | |
| SparseMatrixType & | B, | |||
| SparseMatrixType & | RES | |||
| ) |
Sparse matrix product. Calculates RES = A*B.
| A | Left Matrix | |
| B | Right Matrix | |
| RES | Result Matrix |
| void viennacl::linalg::detail::amg::amg_truncate_row | ( | SparseMatrixType & | P, | |
| unsigned int | row, | |||
| amg_tag & | tag | |||
| ) |
Interpolation truncation (for VIENNACL_AMG_INTERPOL_DIRECT and VIENNACL_AMG_INTERPOL_CLASSIC).
| P | Interpolation matrix | |
| row | Row which has to be truncated | |
| tag | AMG preconditioner tag |
| void viennacl::linalg::detail::amg::printmatrix | ( | MatrixType & | mat, | |
| int const | value = -1 | |||
| ) |
| void viennacl::linalg::detail::amg::printvector | ( | VectorType const & | vec | ) |
| void viennacl::linalg::detail::amg::test_interpolation | ( | SparseMatrixType & | A, | |
| SparseMatrixType & | P, | |||
| PointVectorType & | Pointvector | |||
| ) |
Test if interpolation matrix makes sense. Only vanilla test though! Only checks if basic requirements are met!
| A | Operator matrix (quadratic) | |
| P | Prolongation/Interpolation matrix | |
| Pointvector | Vector of points |
| void viennacl::linalg::detail::amg::test_triplematprod | ( | SparseMatrixType & | A, | |
| SparseMatrixType & | P, | |||
| SparseMatrixType & | A_i1 | |||
| ) |
Test triple-matrix product by comparing it to ublas functions. Very slow for large matrices!
| A | Operator matrix (quadratic) | |
| P | Prolongation/Interpolation matrix | |
| A_i1 | Result Matrix |
1.7.1