
Public Types | |
| typedef types::global_dof_index | size_type |
| typedef SparseLUDecomposition < number >::AdditionalData | AdditionalData |
Public Types inherited from SparseLUDecomposition< number > | |
| typedef types::global_dof_index | size_type |
Public Member Functions | |
| SparseILU () | |
| SparseILU (const SparsityPattern &sparsity) DEAL_II_DEPRECATED | |
| template<typename somenumber > | |
| void | initialize (const SparseMatrix< somenumber > &matrix, const AdditionalData ¶meters=AdditionalData()) |
| template<typename somenumber > | |
| void | decompose (const SparseMatrix< somenumber > &matrix, const double strengthen_diagonal=0.) DEAL_II_DEPRECATED |
| template<typename somenumber > | |
| void | apply_decomposition (Vector< somenumber > &dst, const Vector< somenumber > &src) const DEAL_II_DEPRECATED |
| 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 |
| DeclException1 (ExcInvalidStrengthening, double,<< "The strengthening parameter "<< arg1<< " is not greater or equal than zero!") | |
Public Member Functions inherited from SparseLUDecomposition< number > | |
| virtual | ~SparseLUDecomposition ()=0 |
| virtual void | clear () |
| template<typename somenumber > | |
| void | initialize (const SparseMatrix< somenumber > &matrix, const AdditionalData parameters) |
| void | reinit (const SparsityPattern &sparsity) DEAL_II_DEPRECATED |
| template<typename somenumber > | |
| void | decompose (const SparseMatrix< somenumber > &matrix, const double strengthen_diagonal=0.) DEAL_II_DEPRECATED |
| virtual bool | is_decomposed () const DEAL_II_DEPRECATED |
| bool | empty () const |
| DeclException1 (ExcInvalidStrengthening, double,<< "The strengthening parameter "<< arg1<< " is not greater or equal than zero!") | |
Public Member Functions inherited from Subscriptor | |
| Subscriptor () | |
| Subscriptor (const Subscriptor &) | |
| virtual | ~Subscriptor () |
| Subscriptor & | operator= (const Subscriptor &) |
| void | subscribe (const char *identifier=0) const |
| void | unsubscribe (const char *identifier=0) const |
| unsigned int | n_subscriptions () const |
| void | list_subscribers () const |
| DeclException3 (ExcInUse, int, char *, std::string &,<< "Object of class "<< arg2<< " is still used by "<< arg1<< " other objects.\n"<< "(Additional information: "<< arg3<< ")\n"<< "Note the entry in the Frequently Asked Questions of "<< "deal.II (linked to from http://www.dealii.org/) for "<< "more information on what this error means.") | |
| DeclException2 (ExcNoSubscriber, char *, char *,<< "No subscriber with identifier \""<< arg2<< "\" did subscribe to this object of class "<< arg1) | |
| template<class Archive > | |
| void | serialize (Archive &ar, const unsigned int version) |
Additional Inherited Members | |
Protected Types inherited from SparseMatrix< number > | |
| typedef types::global_dof_index | size_type |
| typedef number | value_type |
| typedef numbers::NumberTraits < number >::real_type | real_type |
| typedef SparseMatrixIterators::Iterator < number, true > | const_iterator |
| typedef SparseMatrixIterators::Iterator < number, false > | iterator |
Protected Member Functions inherited from SparseLUDecomposition< number > | |
| SparseLUDecomposition () | |
| SparseLUDecomposition (const SparsityPattern &sparsity) DEAL_II_DEPRECATED | |
| 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 |
Protected Attributes inherited from SparseLUDecomposition< number > | |
| bool | decomposed |
| double | strengthen_diagonal |
| std::vector< const size_type * > | prebuilt_lower_bound |
This class computes an Incomplete LU (ILU) decomposition of a sparse matrix, using either the same sparsity pattern or a different one. By incomplete we mean that unlike the exact decomposition, the incomplete one is also computed using sparse factors, and entries in the decomposition that do not fit into the given sparsity structure are discarded.
The algorithm used by this class is essentially a copy of the algorithm given in the book Y. Saad: "Iterative methods for sparse linear systems", second edition, in section 10.3.2.
Refer to SparseLUDecomposition documentation for suggested usage and state management. This class is used in the step-22 tutorial program.
<float> and <double>; others can be generated in application programs (see the section on Template instantiations in the manual).Definition at line 32 of file sparsity_pattern.h.
| typedef types::global_dof_index SparseILU< number >::size_type |
Declare type for container size.
Definition at line 59 of file sparse_ilu.h.
| typedef SparseLUDecomposition<number>::AdditionalData SparseILU< number >::AdditionalData |
Make SparseLUDecomposition::AdditionalData accessible to this class as well.
Definition at line 88 of file sparse_ilu.h.
Constructor. Does nothing.
Call the initialize function before using this object as preconditioner.
Definition at line 27 of file sparse_ilu.templates.h.
| SparseILU< number >::SparseILU | ( | const SparsityPattern & | sparsity | ) |
Definition at line 33 of file sparse_ilu.templates.h.
References SparseMatrix< number >::reinit().
| void SparseILU< number >::initialize | ( | const SparseMatrix< somenumber > & | matrix, |
| const AdditionalData & | parameters = AdditionalData() |
||
| ) |
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 LU decomposition.
After this function is called the preconditioner is ready to be used.
Definition at line 43 of file sparse_ilu.templates.h.
References SparseLUDecomposition< number >::initialize(), and SparseLUDecomposition< number >::AdditionalData::strengthen_diagonal.
| void SparseILU< number >::decompose | ( | const SparseMatrix< somenumber > & | matrix, |
| const double | strengthen_diagonal = 0. |
||
| ) |
Definition at line 55 of file sparse_ilu.templates.h.
References Assert, SparsityPattern::colnums, SparseLUDecomposition< number >::decompose(), StandardExceptions::ExcDimensionMismatch(), StandardExceptions::ExcInternalError(), numbers::invalid_size_type, SparseMatrix< number >::m(), SparseMatrix< number >::n(), and SparsityPattern::rowstart.
|
inline |
Definition at line 197 of file sparse_ilu.h.
References SparseILU< number >::vmult().
| void SparseILU< number >::vmult | ( | Vector< somenumber > & | dst, |
| const Vector< somenumber > & | src | ||
| ) | const |
Apply the incomplete decomposition, i.e. do one forward-backward step
.
The initialize() function needs to be called before.
Definition at line 155 of file sparse_ilu.templates.h.
References Assert, StandardExceptions::ExcDimensionMismatch(), and Vector< number >::size().
Referenced by SparseILU< number >::apply_decomposition().
| void SparseILU< number >::Tvmult | ( | Vector< somenumber > & | dst, |
| const Vector< somenumber > & | src | ||
| ) | const |
Apply the transpose of the incomplete decomposition, i.e. do one forward-backward step
.
The initialize() function needs to be called before.
Definition at line 229 of file sparse_ilu.templates.h.
References Assert, StandardExceptions::ExcDimensionMismatch(), and Vector< number >::size().
|
virtual |
Determine an estimate for the memory consumption (in bytes) of this object.
Reimplemented from SparseLUDecomposition< number >.
Definition at line 304 of file sparse_ilu.templates.h.
References SparseLUDecomposition< number >::memory_consumption().