Classes | |
class | ExcInvalidStrengthening |
Public Types | |
typedef SparseLUDecomposition < number >::AdditionalData | AdditionalData |
Public Member Functions | |
SparseILU () | |
SparseILU (const SparsityPattern &sparsity) | |
template<typename somenumber > | |
void | initialize (const SparseMatrix< somenumber > &matrix, const AdditionalData parameters=AdditionalData()) |
template<typename somenumber > | |
void | decompose (const SparseMatrix< somenumber > &matrix, const double strengthen_diagonal=0.) |
template<typename somenumber > | |
void | apply_decomposition (Vector< somenumber > &dst, const Vector< somenumber > &src) const |
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 |
unsigned int | memory_consumption () const |
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).typedef SparseLUDecomposition<number>::AdditionalData SparseILU< number >::AdditionalData |
Make SparseLUDecomposition::AdditionalData accessible to this class as well.
Constructor. Does nothing.
Call the initialize
function before using this object as preconditioner.
SparseILU< number >::SparseILU | ( | const SparsityPattern & | sparsity | ) |
void SparseILU< number >::initialize | ( | const SparseMatrix< somenumber > & | matrix, | |
const AdditionalData | parameters = AdditionalData() | |||
) | [inline] |
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.
void SparseILU< 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 SparseILU< number >::apply_decomposition | ( | Vector< somenumber > & | dst, | |
const Vector< somenumber > & | src | |||
) | const [inline] |
This method is deprecated, and left for backward compability. It will be removed in later versions.
References SparseILU< number >::vmult().
void SparseILU< number >::vmult | ( | Vector< somenumber > & | dst, | |
const Vector< somenumber > & | src | |||
) | const [inline] |
Apply the incomplete decomposition, i.e. do one forward-backward step .
The initialize() function needs to be called before.
Referenced by SparseILU< number >::apply_decomposition().
void SparseILU< number >::Tvmult | ( | Vector< somenumber > & | dst, | |
const Vector< somenumber > & | src | |||
) | const [inline] |
Apply the transpose of the incomplete decomposition, i.e. do one forward-backward step .
The initialize() function needs to be called before.
Determine an estimate for the memory consumption (in bytes) of this object.
Reimplemented from SparseLUDecomposition< number >.