Reference documentation for deal.II version Git 0183d66 2014-10-17 10:54:07 +0200
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
Classes | Public Types | Public Member Functions | Private Attributes | List of all members
PreconditionChebyshev< MATRIX, VECTOR > Class Template Reference

#include <deal.II/lac/precondition.h>

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

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 ()
 
- Public Member Functions inherited from Subscriptor
 Subscriptor ()
 
 Subscriptor (const Subscriptor &)
 
virtual ~Subscriptor ()
 
Subscriptoroperator= (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
 

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 909 of file precondition.h.

Member Typedef Documentation

template<class MATRIX = SparseMatrix<double>, class VECTOR = Vector<double>>
typedef types::global_dof_index PreconditionChebyshev< MATRIX, VECTOR >::size_type

Declare type for container size.

Definition at line 915 of file precondition.h.

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 in case the given number of iterations is positive.

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 1031 of file precondition.h.

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

Internal vector used for the vmult operation.

Definition at line 1036 of file precondition.h.

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

Internal vector used for the vmult operation.

Definition at line 1041 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 1046 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 1051 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 1057 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 1062 of file precondition.h.


The documentation for this class was generated from the following file: