
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 |
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).
Definition at line 884 of file precondition.h.
| PreconditionChebyshev< MATRIX, VECTOR >::PreconditionChebyshev | ( | ) |
| 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.
| void PreconditionChebyshev< MATRIX, VECTOR >::vmult | ( | VECTOR & | dst, |
| const VECTOR & | src | ||
| ) | const |
Computes the action of the preconditioner on src, storing the result in dst.
| 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.
| void PreconditionChebyshev< MATRIX, VECTOR >::clear | ( | ) |
Resets the preconditioner.
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.
VECTOR PreconditionChebyshev< MATRIX, VECTOR >::update1 [mutable, private] |
Internal vector used for the vmult operation.
Definition at line 1038 of file precondition.h.
VECTOR PreconditionChebyshev< MATRIX, VECTOR >::update2 [mutable, private] |
Internal vector used for the vmult operation.
Definition at line 1044 of file precondition.h.
AdditionalData PreconditionChebyshev< MATRIX, VECTOR >::data [private] |
Stores the additional data provided to the initialize function.
Definition at line 1051 of file precondition.h.
double PreconditionChebyshev< MATRIX, VECTOR >::theta [private] |
Average of the largest and smallest eigenvalue under consideration.
Definition at line 1058 of file precondition.h.
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.
bool PreconditionChebyshev< MATRIX, VECTOR >::is_initialized [private] |
Stores whether the preconditioner has been set up.
Definition at line 1071 of file precondition.h.
documentation generated on Fri Feb 3 2012 06:04:10 by
doxygen
1.7.2