ViennaCL - The Vienna Computing Library
1.5.2
|
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.
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 | |
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 SparseMatrixType > | |
void | amg_mat_prod (SparseMatrixType &A, SparseMatrixType &B, SparseMatrixType &RES) |
Sparse matrix product. Calculates RES = A*B. More... | |
template<typename SparseMatrixType > | |
void | amg_galerkin_prod (SparseMatrixType &A, SparseMatrixType &P, SparseMatrixType &RES) |
Sparse Galerkin product: Calculates RES = trans(P)*A*P. More... | |
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! More... | |
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! More... | |
Helper classes and functions for the AMG preconditioner. Experimental.
AMG code contributed by Markus Wagner
#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 |