![]() |
Reference documentation for deal.II version 8.4.2
|
#include <deal.II/lac/precondition.h>
Classes | |
| struct | AdditionalData |
Public Types | |
| typedef types::global_dof_index | size_type |
Public Member Functions | |
| void | initialize (const MatrixType &matrix, const AdditionalData &additional_data=AdditionalData()) |
| void | vmult (VectorType &dst, const VectorType &src) const |
| void | Tvmult (VectorType &dst, const VectorType &src) const |
| void | clear () |
| size_type | m () const |
| size_type | n () const |
Public Member Functions inherited from Subscriptor | |
| 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."<< "\"<< "(Additional information: "<< arg3<< ")\"<< "See the entry in the Frequently Asked Questions of "<< "deal.II (linked to from http://www.dealii.org/) for "<< "a lot more information on what this error means and "<< "how to fix programs in which it happens.") | |
| DeclException2 (ExcNoSubscriber, char *, char *,<< "No subscriber with identifier <"<< arg2<< "> subscribes to this object of class "<< arg1<< ". Consequently, it cannot be unsubscribed.") | |
| template<class Archive > | |
| void | serialize (Archive &ar, const unsigned int version) |
Private Attributes | |
| SmartPointer< const MatrixType, PreconditionChebyshev< MatrixType, VectorType > > | matrix_ptr |
| VectorType | update1 |
| VectorType | 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 it acts on and needs a respective vmult implementation. 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 812 of file precondition.h.
| typedef types::global_dof_index PreconditionChebyshev< MatrixType, VectorType >::size_type |
Declare type for container size.
Definition at line 818 of file precondition.h.
| void PreconditionChebyshev< MatrixType, VectorType >::initialize | ( | const MatrixType & | 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< MatrixType, VectorType >::vmult | ( | VectorType & | dst, |
| const VectorType & | src | ||
| ) | const |
Computes the action of the preconditioner on src, storing the result in dst.
| void PreconditionChebyshev< MatrixType, VectorType >::Tvmult | ( | VectorType & | dst, |
| const VectorType & | src | ||
| ) | const |
Computes the action of the transposed preconditioner on src, storing the result in dst.
| void PreconditionChebyshev< MatrixType, VectorType >::clear | ( | ) |
Resets the preconditioner.
| size_type PreconditionChebyshev< MatrixType, VectorType >::m | ( | ) | const |
Return the dimension of the codomain (or range) space. To remember: the matrix is of dimension
.
| size_type PreconditionChebyshev< MatrixType, VectorType >::n | ( | ) | const |
Return the dimension of the domain space. To remember: the matrix is of dimension
.
|
private |
A pointer to the underlying matrix.
Definition at line 946 of file precondition.h.
|
mutableprivate |
Internal vector used for the vmult operation.
Definition at line 951 of file precondition.h.
|
mutableprivate |
Internal vector used for the vmult operation.
Definition at line 956 of file precondition.h.
|
private |
Stores the additional data provided to the initialize function.
Definition at line 961 of file precondition.h.
|
private |
Average of the largest and smallest eigenvalue under consideration.
Definition at line 966 of file precondition.h.
|
private |
Half the interval length between the largest and smallest eigenvalue under consideration.
Definition at line 972 of file precondition.h.
|
private |
Stores whether the preconditioner has been set up.
Definition at line 977 of file precondition.h.
1.8.12