ViennaCL - The Vienna Computing Library  1.6.0
Free open-source GPU-accelerated linear algebra and solver library.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
amg_base.hpp File Reference

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...
 

Detailed Description

Helper classes and functions for the AMG preconditioner. Experimental.

AMG code contributed by Markus Wagner

Definition in file amg_base.hpp.

Macro Definition Documentation

#define VIENNACL_AMG_COARSE_AG   5
Examples:
amg.cpp.

Definition at line 45 of file amg_base.hpp.

#define VIENNACL_AMG_COARSE_ONEPASS   2
Examples:
amg.cpp.

Definition at line 42 of file amg_base.hpp.

#define VIENNACL_AMG_COARSE_RS   1
Examples:
amg.cpp.

Definition at line 41 of file amg_base.hpp.

#define VIENNACL_AMG_COARSE_RS0   3
Examples:
amg.cpp.

Definition at line 43 of file amg_base.hpp.

#define VIENNACL_AMG_COARSE_RS3   4
Examples:
amg.cpp.

Definition at line 44 of file amg_base.hpp.

#define VIENNACL_AMG_INTERPOL_AG   3
Examples:
amg.cpp.

Definition at line 48 of file amg_base.hpp.

#define VIENNACL_AMG_INTERPOL_CLASSIC   2
Examples:
amg.cpp.

Definition at line 47 of file amg_base.hpp.

#define VIENNACL_AMG_INTERPOL_DIRECT   1
Examples:
amg.cpp.

Definition at line 46 of file amg_base.hpp.

#define VIENNACL_AMG_INTERPOL_SA   4
Examples:
amg.cpp.

Definition at line 49 of file amg_base.hpp.