![]() |
Reference documentation for deal.II version 8.1.0
|
#include <precondition.h>
Classes | |
struct | AdditionalData |
Public Types | |
typedef types::global_dof_index | size_type |
Public Member Functions | |
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 () |
![]() | |
Subscriptor () | |
Subscriptor (const Subscriptor &) | |
virtual | ~Subscriptor () |
Subscriptor & | operator= (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) |
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 910 of file precondition.h.
typedef types::global_dof_index PreconditionChebyshev< MATRIX, VECTOR >::size_type |
Declare type for container size.
Definition at line 916 of file precondition.h.
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 in case the given number of iterations is positive.
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.
|
private |
A pointer to the underlying matrix.
Definition at line 1032 of file precondition.h.
|
mutableprivate |
Internal vector used for the vmult
operation.
Definition at line 1037 of file precondition.h.
|
mutableprivate |
Internal vector used for the vmult
operation.
Definition at line 1042 of file precondition.h.
|
private |
Stores the additional data provided to the initialize function.
Definition at line 1047 of file precondition.h.
|
private |
Average of the largest and smallest eigenvalue under consideration.
Definition at line 1052 of file precondition.h.
|
private |
Half the interval length between the largest and smallest eigenvalue under consideration.
Definition at line 1058 of file precondition.h.
|
private |
Stores whether the preconditioner has been set up.
Definition at line 1063 of file precondition.h.