deal.II version 9.7.1
\(\newcommand{\dealvcentcolon}{\mathrel{\mathop{:}}}\) \(\newcommand{\dealcoloneq}{\dealvcentcolon\mathrel{\mkern-1.2mu}=}\) \(\newcommand{\jump}[1]{\left[\!\left[ #1 \right]\!\right]}\) \(\newcommand{\average}[1]{\left\{\!\left\{ #1 \right\}\!\right\}}\)
Loading...
Searching...
No Matches

#include <deal.II/lac/sparse_ilu.h>

Detailed Description

template<typename number>
class SparseILU< number >

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.

Usage and state management

Refer to SparseLUDecomposition documentation for suggested usage and state management. This class is used in the step-22 tutorial program.

Note
Instantiations for this template are provided for <float> and <double>; others can be generated in application programs (see the section on Template instantiations in the manual).

Definition at line 59 of file sparse_ilu.h.

Inheritance diagram for SparseILU< number >:

Public Types

using size_type = typename SparseLUDecomposition<number>::size_type
using AdditionalData = typename SparseLUDecomposition<number>::AdditionalData

Public Member Functions

 SparseILU ()=default
template<typename somenumber>
void initialize (const SparseMatrix< somenumber > &matrix, const AdditionalDataAdditionalData &parameters=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 ::ExceptionBaseExcInvalidStrengthening (double arg1)
static ::ExceptionBaseExcZeroPivot (size_type arg1)

Member Typedef Documentation

◆ size_type

template<typename number>
using SparseILU< number >::size_type = typename SparseLUDecomposition<number>::size_type

Declare type for container size.

Definition at line 65 of file sparse_ilu.h.

◆ AdditionalData

template<typename number>
using SparseILU< number >::AdditionalData = typename SparseLUDecomposition<number>::AdditionalData

Make SparseLUDecomposition::AdditionalData accessible to this class as well.

Definition at line 79 of file sparse_ilu.h.

Constructor & Destructor Documentation

◆ SparseILU()

template<typename number>
SparseILU< number >::SparseILU ( )
default

Constructor. Does nothing.

Call the initialize function before using this object as preconditioner.

Member Function Documentation

◆ initialize()

template<typename number>
template<typename somenumber>
template void SparseILU< 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 LU decomposition.

After this function is called the preconditioner is ready to be used.

◆ vmult()

template<typename number>
template<typename somenumber>
template void SparseILU< number >::vmult< float > ( Vector< somenumber > & dst,
const Vector< somenumber > & src ) const

Apply the incomplete decomposition, i.e. do one forward-backward step $dst=(LU)^{-1}src$.

The initialize() function needs to be called before.

◆ Tvmult()

template<typename number>
template<typename somenumber>
template void SparseILU< 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 $dst=(LU)^{-T}src$.

The initialize() function needs to be called before.

◆ memory_consumption()

template<typename number>
std::size_t SparseILU< number >::memory_consumption ( ) const
override

Determine an estimate for the memory consumption (in bytes) of this object.


The documentation for this class was generated from the following files: