Classes | Public Member Functions | Private Attributes

PreconditionChebyshev< MATRIX, VECTOR > Class Template Reference
[Preconditioners and Relaxation Operators]

Inheritance diagram for PreconditionChebyshev< MATRIX, VECTOR >:
Inheritance graph
[legend]

List of all members.

Classes

struct  AdditionalData

Public Member Functions

 PreconditionChebyshev ()
void initialize (const MATRIX &matrix, const AdditionalData &additional_data=AdditionalData())
void vmult (VECTOR &dst, const VECTOR &src) const
void Tvmult (VECTOR &dst, const VECTOR &src) const
void clear ()

Private Attributes

SmartPointer< const MATRIX,
PreconditionChebyshev< MATRIX,
VECTOR > > 
matrix_ptr
VECTOR update1
VECTOR update2
AdditionalData data
double theta
double delta
bool is_initialized

Detailed Description

template<class MATRIX = SparseMatrix<double>, class VECTOR = Vector<double>>
class PreconditionChebyshev< MATRIX, VECTOR >

Preconditioning with a Chebyshev polynomial for symmetric positive definite matrices. This preconditioner is similar to a Jacobi preconditioner if the degree variable is set to one, otherwise some higher order polynomial corrections are used. This preconditioner needs access to the diagonal of the matrix its acts on and needs a respective vmult implemention. However, it does not need to explicitly know the matrix entries.

This class is useful e.g. in multigrid smoother objects, since it is trivially parallel (assuming that matrix-vector products are parallel).

Author:
Martin Kronbichler, 2009

Definition at line 884 of file precondition.h.


Constructor & Destructor Documentation

template<class MATRIX = SparseMatrix<double>, class VECTOR = Vector<double>>
PreconditionChebyshev< MATRIX, VECTOR >::PreconditionChebyshev (  )

Member Function Documentation

template<class MATRIX = SparseMatrix<double>, class VECTOR = Vector<double>>
void PreconditionChebyshev< MATRIX, VECTOR >::initialize ( const MATRIX matrix,
const AdditionalData additional_data = AdditionalData() 
)

Initialize function. Takes the matrix which is used to form the preconditioner, and additional flags if there are any. This function works only if the input matrix has an operator el(i,i) for accessing all the elements in the diagonal. Alternatively, the diagonal can be supplied with the help of the AdditionalData field.

This function calculates an estimate of the eigenvalue range of the matrix weighted by its diagonal using a modified CG iteration.

template<class MATRIX = SparseMatrix<double>, class VECTOR = Vector<double>>
void PreconditionChebyshev< MATRIX, VECTOR >::vmult ( VECTOR &  dst,
const VECTOR &  src 
) const

Computes the action of the preconditioner on src, storing the result in dst.

template<class MATRIX = SparseMatrix<double>, class VECTOR = Vector<double>>
void PreconditionChebyshev< MATRIX, VECTOR >::Tvmult ( VECTOR &  dst,
const VECTOR &  src 
) const

Computes the action of the transposed preconditioner on src, storing the result in dst.

template<class MATRIX = SparseMatrix<double>, class VECTOR = Vector<double>>
void PreconditionChebyshev< MATRIX, VECTOR >::clear (  )

Resets the preconditioner.


Member Data Documentation

template<class MATRIX = SparseMatrix<double>, class VECTOR = Vector<double>>
SmartPointer<const MATRIX,PreconditionChebyshev<MATRIX,VECTOR> > PreconditionChebyshev< MATRIX, VECTOR >::matrix_ptr [private]

A pointer to the underlying matrix.

Definition at line 1032 of file precondition.h.

template<class MATRIX = SparseMatrix<double>, class VECTOR = Vector<double>>
VECTOR PreconditionChebyshev< MATRIX, VECTOR >::update1 [mutable, private]

Internal vector used for the vmult operation.

Definition at line 1038 of file precondition.h.

template<class MATRIX = SparseMatrix<double>, class VECTOR = Vector<double>>
VECTOR PreconditionChebyshev< MATRIX, VECTOR >::update2 [mutable, private]

Internal vector used for the vmult operation.

Definition at line 1044 of file precondition.h.

template<class MATRIX = SparseMatrix<double>, class VECTOR = Vector<double>>
AdditionalData PreconditionChebyshev< MATRIX, VECTOR >::data [private]

Stores the additional data provided to the initialize function.

Definition at line 1051 of file precondition.h.

template<class MATRIX = SparseMatrix<double>, class VECTOR = Vector<double>>
double PreconditionChebyshev< MATRIX, VECTOR >::theta [private]

Average of the largest and smallest eigenvalue under consideration.

Definition at line 1058 of file precondition.h.

template<class MATRIX = SparseMatrix<double>, class VECTOR = Vector<double>>
double PreconditionChebyshev< MATRIX, VECTOR >::delta [private]

Half the interval length between the largest and smallest eigenvalue under consideration.

Definition at line 1065 of file precondition.h.

template<class MATRIX = SparseMatrix<double>, class VECTOR = Vector<double>>
bool PreconditionChebyshev< MATRIX, VECTOR >::is_initialized [private]

Stores whether the preconditioner has been set up.

Definition at line 1071 of file precondition.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:10 by doxygen 1.7.2