![]() |
deal.II version 9.7.1
|
#include <deal.II/lac/sparse_mic.h>
Implementation of the Modified Incomplete Cholesky (MIC(0)) preconditioner for symmetric matrices. This class conforms to the state and usage specification in SparseLUDecomposition.
Let a symmetric, positive-definite, sparse matrix 








Definition at line 45 of file sparse_mic.h.

Public Types | |
| using | size_type = types::global_dof_index |
| using | AdditionalData = typename SparseLUDecomposition<number>::AdditionalData |
Public Member Functions | |
| SparseMIC ()=default | |
| virtual | ~SparseMIC () override |
| virtual void | clear () override |
| template<typename somenumber> | |
| void | initialize (const SparseMatrix< somenumber > &matrix, const AdditionalDataAdditionalData ¶meters=AdditionalDataAdditionalData()) |
| template<typename somenumber> | |
| void | vmult (Vector< somenumber > &dst, const Vector< somenumber > &src) const |
| template<typename somenumber> | |
| void | Tvmult (Vector< somenumber > &dst, const Vector< somenumber > &src) const |
| std::size_t | memory_consumption () const override |
Static Public Member Functions | |
| static ::ExceptionBase & | ExcStrengthenDiagonalTooSmall () |
| static ::ExceptionBase & | ExcInvalidStrengthening (double arg1) |
| static ::ExceptionBase & | ExcDecompositionNotStable (int arg1, double arg2) |
Private Member Functions | |
| number | get_rowsum (const size_type row) const |
Private Attributes | |
| std::vector< number > | diag |
| std::vector< number > | inv_diag |
| std::vector< number > | inner_sums |
| using SparseMIC< number >::size_type = types::global_dof_index |
Declare type for container size.
Definition at line 51 of file sparse_mic.h.
| using SparseMIC< number >::AdditionalData = typename SparseLUDecomposition<number>::AdditionalData |
Make the AdditionalData type in the base class accessible to this class as well.
Definition at line 75 of file sparse_mic.h.
|
default |
Constructor. Does nothing, so you have to call decompose sometimes afterwards.
|
overridevirtual |
Deletes all member variables. Leaves the class in the state that it had directly after calling the constructor
| template void SparseMIC< number >::initialize< float > | ( | const SparseMatrix< somenumber > & | matrix, |
| const AdditionalDataAdditionalData & | parameters = AdditionalDataAdditionalData() ) |
Perform the incomplete LU factorization of the given matrix.
This function needs to be called before an object of this class is used as preconditioner.
For more details about possible parameters, see the class documentation of SparseLUDecomposition and the documentation of the SparseLUDecomposition::AdditionalData class.
According to the parameters, this function creates a new SparsityPattern or keeps the previous sparsity or takes the sparsity given by the user to data. Then, this function performs the MIC decomposition.
After this function is called the preconditioner is ready to be used.
| template void SparseMIC< number >::vmult< float > | ( | Vector< somenumber > & | dst, |
| const Vector< somenumber > & | src ) const |
Apply the incomplete decomposition, i.e. do one forward-backward step 
Call initialize before calling this function.
| template void SparseMIC< number >::Tvmult< float > | ( | Vector< somenumber > & | dst, |
| const Vector< somenumber > & | src ) const |
Apply the transpose of the incomplete decomposition, i.e. do one forward-backward step 
Call initialize before calling this function.
|
override |
Determine an estimate for the memory consumption (in bytes) of this object.
|
private |
Compute the row-th "inner sum".
|
private |
Values of the computed diagonal.
Definition at line 158 of file sparse_mic.h.
|
private |
Inverses of the diagonal: precomputed for faster vmult.
Definition at line 163 of file sparse_mic.h.
|
private |
Values of the computed "inner sums", i.e. per-row sums of the elements laying on the right side of the diagonal.
Definition at line 169 of file sparse_mic.h.