All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
Public Types | Public Member Functions | List of all members
SparseILU< number > Class Template Reference
Inheritance diagram for SparseILU< number >:
Inheritance graph
[legend]

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 &parameters=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 ()
 
Subscriptoroperator= (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
 

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).
Author
Wolfgang Bangerth, 2008, 2009; unified interface: Ralf Hartmann

Definition at line 32 of file sparsity_pattern.h.

Member Typedef Documentation

template<typename number>
typedef types::global_dof_index SparseILU< number >::size_type

Declare type for container size.

Definition at line 59 of file sparse_ilu.h.

template<typename number>
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 & Destructor Documentation

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

Constructor. Does nothing.

Call the initialize function before using this object as preconditioner.

Definition at line 27 of file sparse_ilu.templates.h.

template<typename number >
SparseILU< number >::SparseILU ( const SparsityPattern sparsity)
Deprecated:
This method is deprecated, and left for backward compatibility. It will be removed in later versions. Instead, pass the sparsity pattern that you want used for the decomposition in the AdditionalData structure.

Definition at line 33 of file sparse_ilu.templates.h.

References SparseMatrix< number >::reinit().

Member Function Documentation

template<typename number >
template<typename somenumber >
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.

template<typename number >
template<typename somenumber >
void SparseILU< number >::decompose ( const SparseMatrix< somenumber > &  matrix,
const double  strengthen_diagonal = 0. 
)
template<typename number >
template<typename somenumber >
void SparseILU< number >::apply_decomposition ( Vector< somenumber > &  dst,
const Vector< somenumber > &  src 
) const
inline
Deprecated:
This method is deprecated, and left for backward compatibility. It will be removed in later versions.

Definition at line 197 of file sparse_ilu.h.

References SparseILU< number >::vmult().

template<typename number >
template<typename somenumber >
void SparseILU< number >::vmult ( 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.

Definition at line 155 of file sparse_ilu.templates.h.

References Assert, StandardExceptions::ExcDimensionMismatch(), and Vector< number >::size().

Referenced by SparseILU< number >::apply_decomposition().

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

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

template<typename number >
std::size_t SparseILU< number >::memory_consumption ( ) const
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().


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

deal.II
generated on Tue Jun 18 2013 21:14:15 by doxygen 1.8.3.1.
Hosting by IWR Universität Heidelberg