
Classes | |
| class | ExcDecompositionNotStable |
| class | ExcInvalidStrengthening |
| class | ExcStrengthenDiagonalTooSmall |
Public Types | |
| typedef SparseLUDecomposition < number >::AdditionalData | AdditionalData |
Public Member Functions | |
| SparseMIC () | |
| SparseMIC (const SparsityPattern &sparsity) | |
| virtual | ~SparseMIC () |
| virtual void | clear () |
| void | reinit (const SparsityPattern &sparsity) |
| template<typename somenumber > | |
| void | initialize (const SparseMatrix< somenumber > &matrix, const AdditionalData parameters) |
| template<typename somenumber > | |
| void | decompose (const SparseMatrix< somenumber > &matrix, const double strengthen_diagonal=0.) |
| template<typename somenumber > | |
| void | vmult (Vector< somenumber > &dst, const Vector< somenumber > &src) const |
| unsigned int | memory_consumption () const |
Private Member Functions | |
| number | get_rowsum (const unsigned int row) const |
Private Attributes | |
| std::vector< number > | diag |
| std::vector< number > | inv_diag |
| std::vector< number > | inner_sums |
Modified incomplete Cholesky (MIC(0)) preconditioner. This class conforms to the state and usage specification in SparseLUDecomposition.
Let a sparse matrix A is in the form A = - L - U + D, where -L and -U are strictly lower and upper triangular matrices. The MIC(0) decomposition of the matrix A is defined by B = (X-L)X^(-1)(X-U), where X is a diagonal matrix, defined by the condition rowsum(A) = rowsum(B).
| typedef SparseLUDecomposition<number>::AdditionalData SparseMIC< number >::AdditionalData |
Make the AdditionalData type in the base class accessible to this class as well.
Constructor. Does nothing, so you have to call reinit sometimes afterwards.
| SparseMIC< number >::SparseMIC | ( | const SparsityPattern & | sparsity | ) |
Constructor. Initialize the sparsity pattern of this object with the given argument.
| virtual void SparseMIC< number >::clear | ( | ) | [virtual] |
Deletes all member variables. Leaves the class in the state that it had directly after calling the constructor
Reimplemented from SparseLUDecomposition< number >.
| void SparseMIC< number >::reinit | ( | const SparsityPattern & | sparsity | ) | [virtual] |
This method is deprecated, and left for backward compability. It will be removed in later versions.
Reimplemented from SparseLUDecomposition< number >.
| void SparseMIC< number >::initialize | ( | const SparseMatrix< somenumber > & | matrix, | |
| const AdditionalData | parameters | |||
| ) | [inline] |
Same as decompose.
Reimplemented from SparseLUDecomposition< number >.
| void SparseMIC< number >::decompose | ( | const SparseMatrix< somenumber > & | matrix, | |
| const double | strengthen_diagonal = 0. | |||
| ) | [inline] |
This method is deprecated, and left for backward compability. It will be removed in later versions.
Reimplemented from SparseLUDecomposition< number >.
| void SparseMIC< number >::vmult | ( | Vector< somenumber > & | dst, | |
| const Vector< somenumber > & | src | |||
| ) | const [inline] |
Apply the incomplete decomposition, i.e. do one forward-backward step
.
Call initialize before calling this function.
Determine an estimate for the memory consumption (in bytes) of this object.
Reimplemented from SparseLUDecomposition< number >.
| number SparseMIC< number >::get_rowsum | ( | const unsigned int | row | ) | const [private] |
Compute the row-th "inner sum".
Values of the computed diagonal.
Inverses of the the diagonal: precomputed for faster vmult.
std::vector<number> SparseMIC< number >::inner_sums [private] |
Values of the computed "inner sums", i.e. per-row sums of the elements laying on the right side of the diagonal.
documentation generated on Mon Nov 23 22:58:09 2009 by
doxygen
1.6.1