SparseMIC< number > Class Template Reference
[Preconditioners]

Inheritance diagram for SparseMIC< number >:
Inheritance graph
[legend]

List of all members.

Classes

class  ExcDecompositionNotStable
class  ExcInvalidStrengthening
class  ExcStrengthenDiagonalTooSmall

Public Types

typedef SparseLUDecomposition
< number >::AdditionalData 
AdditionalData

Public Member Functions

 SparseMIC ()
 SparseMIC (const SparsityPattern &sparsity)
virtual ~SparseMIC ()
virtual void clear ()
void reinit (const SparsityPattern &sparsity)
template<typename somenumber >
void initialize (const SparseMatrix< somenumber > &matrix, const AdditionalData parameters)
template<typename somenumber >
void decompose (const SparseMatrix< somenumber > &matrix, const double strengthen_diagonal=0.)
template<typename somenumber >
void vmult (Vector< somenumber > &dst, const Vector< somenumber > &src) const
unsigned int memory_consumption () const

Private Member Functions

number get_rowsum (const unsigned int row) const

Private Attributes

std::vector< number > diag
std::vector< number > inv_diag
std::vector< number > inner_sums

Detailed Description

template<typename number>
class SparseMIC< number >

Modified incomplete Cholesky (MIC(0)) preconditioner. This class conforms to the state and usage specification in SparseLUDecomposition.

The decomposition

Let a sparse matrix A is in the form A = - L - U + D, where -L and -U are strictly lower and upper triangular matrices. The MIC(0) decomposition of the matrix A is defined by B = (X-L)X^(-1)(X-U), where X is a diagonal matrix, defined by the condition rowsum(A) = rowsum(B).

Author:
Stephen "Cheffo" Kolaroff, 2002, unified interface: Ralf Hartmann 2003.

Member Typedef Documentation

template<typename number >
typedef SparseLUDecomposition<number>::AdditionalData SparseMIC< number >::AdditionalData

Make the AdditionalData type in the base class accessible to this class as well.


Constructor & Destructor Documentation

template<typename number >
SparseMIC< number >::SparseMIC (  ) 

Constructor. Does nothing, so you have to call reinit sometimes afterwards.

template<typename number >
SparseMIC< number >::SparseMIC ( const SparsityPattern sparsity  ) 

Constructor. Initialize the sparsity pattern of this object with the given argument.

template<typename number >
virtual SparseMIC< number >::~SparseMIC (  )  [virtual]

Destruction.


Member Function Documentation

template<typename number >
virtual void SparseMIC< number >::clear (  )  [virtual]

Deletes all member variables. Leaves the class in the state that it had directly after calling the constructor

Reimplemented from SparseLUDecomposition< number >.

template<typename number >
void SparseMIC< number >::reinit ( const SparsityPattern sparsity  )  [virtual]

This method is deprecated, and left for backward compability. It will be removed in later versions.

Reimplemented from SparseLUDecomposition< number >.

template<typename number >
template<typename somenumber >
void SparseMIC< number >::initialize ( const SparseMatrix< somenumber > &  matrix,
const AdditionalData  parameters 
) [inline]

Same as decompose.

Reimplemented from SparseLUDecomposition< number >.

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

template<typename number >
template<typename somenumber >
void SparseMIC< number >::vmult ( Vector< somenumber > &  dst,
const Vector< somenumber > &  src 
) const [inline]

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

Call initialize before calling this function.

template<typename number >
unsigned int SparseMIC< number >::memory_consumption (  )  const [virtual]

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

Reimplemented from SparseLUDecomposition< number >.

template<typename number >
number SparseMIC< number >::get_rowsum ( const unsigned int  row  )  const [private]

Compute the row-th "inner sum".


Member Data Documentation

template<typename number >
std::vector<number> SparseMIC< number >::diag [private]

Values of the computed diagonal.

template<typename number >
std::vector<number> SparseMIC< number >::inv_diag [private]

Inverses of the the diagonal: precomputed for faster vmult.

template<typename number >
std::vector<number> SparseMIC< number >::inner_sums [private]

Values of the computed "inner sums", i.e. per-row sums of the elements laying on the right side of the diagonal.


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

deal.II documentation generated on Mon Nov 23 22:58:09 2009 by doxygen 1.6.1