![]() |
CUSP
|
#include <ainv.h>
Public Methods | |
| template<typename MatrixTypeA > | |
| bridson_ainv (const MatrixTypeA &A, ValueType drop_tolerance=0.1, int nonzero_per_row=-1, bool lin_dropping=false, int lin_param=1) | |
| template<typename VectorType1 , typename VectorType2 > | |
| void | operator() (const VectorType1 &x, VectorType2 &y) |
Public Methods inherited from cusp::linear_operator< ValueType, MemorySpace, IndexType > | |
| linear_operator (void) | |
| linear_operator (IndexType num_rows, IndexType num_cols) | |
| linear_operator (IndexType num_rows, IndexType num_cols, IndexType num_entries) | |
Public Members | |
| cusp::hyb_matrix< int, ValueType, MemorySpace > | w |
| The approximate inverse factor W. | |
| cusp::hyb_matrix< int, ValueType, MemorySpace > | w_t |
| The transpose of the approximate inverse factor W. | |
| cusp::array1d< ValueType, MemorySpace > | diagonals |
| The diagonal entries of the factorization. | |
bridson_ainv : Approximate Inverse preconditioner (from Bridson's "outer product" formulation) This preconditioner allows for a novel dropping strategy, where rather than a fixed drop tolerance, you can specify now many non-zeroes are allowed per row. The non-zeroes will be chosen based on largest magnitude. This idea has been applied to IC factorization, but not AINV as far as I'm aware. See: Lin, C. and More, J. J. 1999. Incomplete Cholesky Factorizations with Limited Memory. SIAM J. Sci. Comput. 21, 1 (Aug. 1999), 24-45. This preconditioner will only work for SPD matrices.
| cusp::precond::bridson_ainv< ValueType, MemorySpace >::bridson_ainv | ( | const MatrixTypeA & | A, |
| ValueType | drop_tolerance = 0.1, |
||
| int | nonzero_per_row = -1, |
||
| bool | lin_dropping = false, |
||
| int | lin_param = 1 |
||
| ) |
construct a ainv preconditioner
| A | matrix to precondition |
| MatrixTypeA | matrix |
| drop_tolerance | Tolerance for dropping during factorization |
| nonzero_per_row | Count of non-zeroes allowed per row of the factored matrix. If negative or lin_dropping==true, this will be ignored. |
| lin_dropping | When true, this will use the dropping strategy from Lin & More, where the per-row count will be based on A's structure. |
| lin_param | when lin_dropping set to true, this indicates how many additional non-zeros per row to include |
| void cusp::precond::bridson_ainv< ValueType, MemorySpace >::operator() | ( | const VectorType1 & | x, |
| VectorType2 & | y | ||
| ) |
apply the preconditioner to vector x and store the result in y
| x | input vector |
| y | output vector |
| VectorType1 | vector |
| VectorType2 | vector |
| cusp::array1d<ValueType, MemorySpace> cusp::precond::bridson_ainv< ValueType, MemorySpace >::diagonals |
| cusp::hyb_matrix<int, ValueType, MemorySpace> cusp::precond::bridson_ainv< ValueType, MemorySpace >::w |
| cusp::hyb_matrix<int, ValueType, MemorySpace> cusp::precond::bridson_ainv< ValueType, MemorySpace >::w_t |