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.