Data Structures | Namespaces | Defines | Functions

/data/development/ViennaCL/dev/viennacl/linalg/detail/amg/amg_base.hpp File Reference

Helper classes and functions for the AMG preconditioner. Experimental. More...

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

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< InternalType, IteratorType, ScalarType >
 A class for a scalar that can be written to the sparse matrix or sparse vector datatypes. More...
class  amg_sparsevector_iterator< InternalType >
 Defines an iterator for the sparse vector type. More...
class  amg_sparsevector< ScalarType >
 A class for the sparse vector type. More...
class  amg_sparsematrix< ScalarType >
 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< InternalType1, InternalType2 >
 A class for the matrix slicing for parallel coarsening schemes (RS0/RS3). More...

Namespaces

namespace  viennacl
namespace  viennacl::linalg
namespace  viennacl::linalg::detail
namespace  viennacl::linalg::detail::amg

Defines

#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 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!

Detailed Description

Helper classes and functions for the AMG preconditioner. Experimental.

AMG code contributed by Markus Wagner


Define Documentation

#define VIENNACL_AMG_COARSE_AG   5
#define VIENNACL_AMG_COARSE_ONEPASS   2
#define VIENNACL_AMG_COARSE_RS   1
#define VIENNACL_AMG_COARSE_RS0   3
#define VIENNACL_AMG_COARSE_RS3   4
#define VIENNACL_AMG_INTERPOL_AG   3
#define VIENNACL_AMG_INTERPOL_CLASSIC   2
#define VIENNACL_AMG_INTERPOL_DIRECT   1
#define VIENNACL_AMG_INTERPOL_SA   4