|
| using | size_type = types::global_dof_index |
| |
| using | value_type = number |
| |
| using | real_type = typename numbers::NumberTraits< number >::real_type |
| |
| using | const_iterator = SparseMatrixIterators::Iterator< number, true > |
| |
| using | iterator = SparseMatrixIterators::Iterator< number, false > |
| |
| | SparseLUDecomposition () |
| |
| template<typename somenumber > |
| void | copy_from (const SparseMatrix< somenumber > &matrix) |
| |
| virtual void | strengthen_diagonal_impl () |
| |
| virtual number | get_strengthen_diagonal (const number rowsum, const size_type row) const |
| |
| void | prebuild_lower_bound () |
| |
| void | prepare_add () |
| |
| void | prepare_set () |
| |
| | SparseMatrix () |
| |
| | SparseMatrix (const SparseMatrix &) |
| |
| | SparseMatrix (SparseMatrix< number > &&m) noexcept |
| |
| | SparseMatrix (const SparsityPattern &sparsity) |
| |
| | SparseMatrix (const SparsityPattern &sparsity, const IdentityMatrix &id) |
| |
| virtual | ~SparseMatrix () override |
| |
| SparseMatrix< number > & | operator= (const SparseMatrix< number > &) |
| |
| SparseMatrix< number > & | operator= (SparseMatrix< number > &&m) noexcept |
| |
| SparseMatrix< number > & | operator= (const IdentityMatrix &id) |
| |
| SparseMatrix & | operator= (const double d) |
| |
| virtual void | reinit (const SparsityPattern &sparsity) |
| |
| bool | empty () const |
| |
| size_type | m () const |
| |
| size_type | n () const |
| |
| size_type | get_row_length (const size_type row) const |
| |
| std::size_t | n_nonzero_elements () const |
| |
| std::size_t | n_actually_nonzero_elements (const double threshold=0.) const |
| |
| const SparsityPattern & | get_sparsity_pattern () const |
| |
| std::size_t | memory_consumption () const |
| |
| void | compress (::VectorOperation::values) |
| |
| void | set (const size_type i, const size_type j, const number value) |
| |
| template<typename number2 > |
| void | set (const std::vector< size_type > &indices, const FullMatrix< number2 > &full_matrix, const bool elide_zero_values=false) |
| |
| template<typename number2 > |
| void | set (const std::vector< size_type > &row_indices, const std::vector< size_type > &col_indices, const FullMatrix< number2 > &full_matrix, const bool elide_zero_values=false) |
| |
| template<typename number2 > |
| void | set (const size_type row, const std::vector< size_type > &col_indices, const std::vector< number2 > &values, const bool elide_zero_values=false) |
| |
| template<typename number2 > |
| void | set (const size_type row, const size_type n_cols, const size_type *col_indices, const number2 *values, const bool elide_zero_values=false) |
| |
| void | add (const size_type i, const size_type j, const number value) |
| |
| template<typename number2 > |
| void | add (const std::vector< size_type > &indices, const FullMatrix< number2 > &full_matrix, const bool elide_zero_values=true) |
| |
| template<typename number2 > |
| void | add (const std::vector< size_type > &row_indices, const std::vector< size_type > &col_indices, const FullMatrix< number2 > &full_matrix, const bool elide_zero_values=true) |
| |
| template<typename number2 > |
| void | add (const size_type row, const std::vector< size_type > &col_indices, const std::vector< number2 > &values, const bool elide_zero_values=true) |
| |
| template<typename number2 > |
| void | add (const size_type row, const size_type n_cols, const size_type *col_indices, const number2 *values, const bool elide_zero_values=true, const bool col_indices_are_sorted=false) |
| |
| SparseMatrix & | operator*= (const number factor) |
| |
| SparseMatrix & | operator/= (const number factor) |
| |
| void | symmetrize () |
| |
| template<typename somenumber > |
| SparseMatrix< number > & | copy_from (const SparseMatrix< somenumber > &source) |
| |
| template<typename ForwardIterator > |
| void | copy_from (const ForwardIterator begin, const ForwardIterator end) |
| |
| template<typename somenumber > |
| void | copy_from (const FullMatrix< somenumber > &matrix) |
| |
| SparseMatrix< number > & | copy_from (const TrilinosWrappers::SparseMatrix &matrix) |
| |
| template<typename somenumber > |
| void | add (const number factor, const SparseMatrix< somenumber > &matrix) |
| |
| const number & | operator() (const size_type i, const size_type j) const |
| |
| number & | operator() (const size_type i, const size_type j) |
| |
| number | el (const size_type i, const size_type j) const |
| |
| number | diag_element (const size_type i) const |
| |
| number & | diag_element (const size_type i) |
| |
| template<class OutVector , class InVector > |
| void | vmult (OutVector &dst, const InVector &src) const |
| |
| template<class OutVector , class InVector > |
| void | Tvmult (OutVector &dst, const InVector &src) const |
| |
| template<class OutVector , class InVector > |
| void | vmult_add (OutVector &dst, const InVector &src) const |
| |
| template<class OutVector , class InVector > |
| void | Tvmult_add (OutVector &dst, const InVector &src) const |
| |
| template<typename somenumber > |
| somenumber | matrix_norm_square (const Vector< somenumber > &v) const |
| |
| template<typename somenumber > |
| somenumber | matrix_scalar_product (const Vector< somenumber > &u, const Vector< somenumber > &v) const |
| |
| template<typename somenumber > |
| somenumber | residual (Vector< somenumber > &dst, const Vector< somenumber > &x, const Vector< somenumber > &b) const |
| |
| template<typename numberB , typename numberC > |
| void | mmult (SparseMatrix< numberC > &C, const SparseMatrix< numberB > &B, const Vector< number > &V=Vector< number >(), const bool rebuild_sparsity_pattern=true) const |
| |
| template<typename numberB , typename numberC > |
| void | Tmmult (SparseMatrix< numberC > &C, const SparseMatrix< numberB > &B, const Vector< number > &V=Vector< number >(), const bool rebuild_sparsity_pattern=true) const |
| |
| real_type | l1_norm () const |
| |
| real_type | linfty_norm () const |
| |
| real_type | frobenius_norm () const |
| |
| template<typename somenumber > |
| void | precondition_Jacobi (Vector< somenumber > &dst, const Vector< somenumber > &src, const number omega=1.) const |
| |
| template<typename somenumber > |
| void | precondition_SSOR (Vector< somenumber > &dst, const Vector< somenumber > &src, const number omega=1., const std::vector< std::size_t > &pos_right_of_diagonal=std::vector< std::size_t >()) const |
| |
| template<typename somenumber > |
| void | precondition_SOR (Vector< somenumber > &dst, const Vector< somenumber > &src, const number om=1.) const |
| |
| template<typename somenumber > |
| void | precondition_TSOR (Vector< somenumber > &dst, const Vector< somenumber > &src, const number om=1.) const |
| |
| template<typename somenumber > |
| void | SSOR (Vector< somenumber > &v, const number omega=1.) const |
| |
| template<typename somenumber > |
| void | SOR (Vector< somenumber > &v, const number om=1.) const |
| |
| template<typename somenumber > |
| void | TSOR (Vector< somenumber > &v, const number om=1.) const |
| |
| template<typename somenumber > |
| void | PSOR (Vector< somenumber > &v, const std::vector< size_type > &permutation, const std::vector< size_type > &inverse_permutation, const number om=1.) const |
| |
| template<typename somenumber > |
| void | TPSOR (Vector< somenumber > &v, const std::vector< size_type > &permutation, const std::vector< size_type > &inverse_permutation, const number om=1.) const |
| |
| template<typename somenumber > |
| void | Jacobi_step (Vector< somenumber > &v, const Vector< somenumber > &b, const number om=1.) const |
| |
| template<typename somenumber > |
| void | SOR_step (Vector< somenumber > &v, const Vector< somenumber > &b, const number om=1.) const |
| |
| template<typename somenumber > |
| void | TSOR_step (Vector< somenumber > &v, const Vector< somenumber > &b, const number om=1.) const |
| |
| template<typename somenumber > |
| void | SSOR_step (Vector< somenumber > &v, const Vector< somenumber > &b, const number om=1.) const |
| |
| const_iterator | begin () const |
| |
| iterator | begin () |
| |
| const_iterator | end () const |
| |
| iterator | end () |
| |
| const_iterator | begin (const size_type r) const |
| |
| iterator | begin (const size_type r) |
| |
| const_iterator | end (const size_type r) const |
| |
| iterator | end (const size_type r) |
| |
| template<class StreamType > |
| void | print (StreamType &out, const bool across=false, const bool diagonal_first=true) const |
| |
| void | print_formatted (std::ostream &out, const unsigned int precision=3, const bool scientific=true, const unsigned int width=0, const char *zero_string=" ", const double denominator=1.) const |
| |
| void | print_pattern (std::ostream &out, const double threshold=0.) const |
| |
| void | print_as_numpy_arrays (std::ostream &out, const unsigned int precision=9) const |
| |
| void | block_write (std::ostream &out) const |
| |
| void | block_read (std::istream &in) |
| |
| | Subscriptor () |
| |
| | Subscriptor (const Subscriptor &) |
| |
| | Subscriptor (Subscriptor &&) noexcept |
| |
| virtual | ~Subscriptor () |
| |
| Subscriptor & | operator= (const Subscriptor &) |
| |
| Subscriptor & | operator= (Subscriptor &&) noexcept |
| |
| void | subscribe (std::atomic< bool > *const validity, const std::string &identifier="") const |
| |
| void | unsubscribe (std::atomic< bool > *const validity, const std::string &identifier="") const |
| |
| unsigned int | n_subscriptions () const |
| |
| template<typename StreamType > |
| void | list_subscribers (StreamType &stream) const |
| |
| void | list_subscribers () const |
| |
| template<class Archive > |
| void | serialize (Archive &ar, const unsigned int version) |
| |
| static ::ExceptionBase & | ExcInvalidIndex (int arg1, int arg2) |
| |
| static ::ExceptionBase & | ExcDifferentSparsityPatterns () |
| |
| static ::ExceptionBase & | ExcIteratorRange (int arg1, int arg2) |
| |
| static ::ExceptionBase & | ExcSourceEqualsDestination () |
| |
| static ::ExceptionBase & | ExcInUse (int arg1, std::string arg2, std::string arg3) |
| |
| static ::ExceptionBase & | ExcNoSubscriber (std::string arg1, std::string arg2) |
| |
| double | strengthen_diagonal |
| |
| std::vector< const size_type * > | prebuilt_lower_bound |
| |
| template<typename Number > |
| void | sum (const SparseMatrix< Number > &local, const MPI_Comm &mpi_communicator, SparseMatrix< Number > &global) |
| |
template<typename number>
class SparseMIC< number >
Implementation of the Modified Incomplete Cholesky (MIC(0)) preconditioner for symmetric matrices. This class conforms to the state and usage specification in SparseLUDecomposition.
The decomposition
Let a symmetric, positive-definite, sparse matrix \(A\) be in the form \(A = D - L - L^T\), where \(D\) is the diagonal part of \(A\) and \(-L\) is a strictly lower triangular matrix. The MIC(0) decomposition of the matrix \(A\) is defined by \(B = (X-L)X^{-1}(X-L^T)\), where \(X\) is a diagonal matrix defined by the condition \(\text{rowsum}(A) = \text{rowsum}(B)\).
- Author
- Stephen "Cheffo" Kolaroff, 2002, unified interface: Ralf Hartmann 2003; extension for full compatibility with LinearOperator class: Jean-Paul Pelteret, 2015.
Definition at line 49 of file sparse_mic.h.