|
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.