Public Types | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes

SparseMIC< number > Class Template Reference
[Preconditioners and Relaxation Operators]

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

List of all members.

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
std::size_t memory_consumption () const

Static Public Member Functions

::ExceptionBaseExcStrengthenDiagonalTooSmall ()
::ExceptionBaseExcInvalidStrengthening (double arg1) throw (errortext << "The strengthening parameter " << arg1 << " is not greater or equal than zero!" )
::ExceptionBaseExcDecompositionNotStable (int arg1, double arg2) throw (errortext << "The diagonal element (" <<arg1<<","<<arg1<<") is " << arg2 <<", but must be positive" )

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.

Definition at line 41 of file sparse_mic.h.


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.

Definition at line 80 of file sparse_mic.h.


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 
)

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

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

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

Call initialize before calling this function.

template<typename number >
std::size_t 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.

Definition at line 153 of file sparse_mic.h.

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

Inverses of the the diagonal: precomputed for faster vmult.

Definition at line 159 of file sparse_mic.h.

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.

Definition at line 167 of file sparse_mic.h.


The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

deal.II documentation generated on Fri Feb 3 2012 06:04:11 by doxygen 1.7.2