Reference documentation for deal.II version 8.1.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
Public Member Functions | Public Attributes | List of all members
PreconditionChebyshev< MATRIX, VECTOR >::AdditionalData Struct Reference

#include <precondition.h>

Public Member Functions

 AdditionalData (const unsigned int degree=0, const double smoothing_range=0., const bool nonzero_starting=false, const unsigned int eig_cg_n_iterations=8, const double eig_cg_residual=1e-2, const double max_eigenvalue=1)
 

Public Attributes

unsigned int degree
 
double smoothing_range
 
bool nonzero_starting
 
unsigned int eig_cg_n_iterations
 
double eig_cg_residual
 
double max_eigenvalue
 
VECTOR matrix_diagonal_inverse
 

Detailed Description

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

Standardized data struct to pipe additional parameters to the preconditioner.

Definition at line 922 of file precondition.h.

Constructor & Destructor Documentation

template<class MATRIX = SparseMatrix<double>, class VECTOR = Vector<double>>
PreconditionChebyshev< MATRIX, VECTOR >::AdditionalData::AdditionalData ( const unsigned int  degree = 0,
const double  smoothing_range = 0.,
const bool  nonzero_starting = false,
const unsigned int  eig_cg_n_iterations = 8,
const double  eig_cg_residual = 1e-2,
const double  max_eigenvalue = 1 
)

Constructor.

Member Data Documentation

template<class MATRIX = SparseMatrix<double>, class VECTOR = Vector<double>>
unsigned int PreconditionChebyshev< MATRIX, VECTOR >::AdditionalData::degree

This determines the degree of the Chebyshev polynomial. The degree of the polynomial gives the number of matrix-vector products to be performed for one application of the vmult() operation. Degree zero corresponds to a damped Jacobi method.

Definition at line 940 of file precondition.h.

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

This sets the range between the largest eigenvalue in the matrix and the smallest eigenvalue to be treated. If the parameter is zero, an estimate for the largest and for the smallest eigenvalue will be calculated internally. Otherwise, the Chebyshev polynomial will act in the interval $[\lambda_\mathrm{max}/ \tt{smoothing\_range}, \lambda_\mathrm{max}]$, where $\lambda_\mathrm{max}$ is an estimate of the maximum eigenvalue of the matrix. A choice of smoothing_range between 5 and 20 is useful in case the preconditioner is used as a smoother in multigrid.

Definition at line 953 of file precondition.h.

template<class MATRIX = SparseMatrix<double>, class VECTOR = Vector<double>>
bool PreconditionChebyshev< MATRIX, VECTOR >::AdditionalData::nonzero_starting

When this flag is set to true, it enables the method vmult(dst, src) to use non-zero data in the vector dst, appending to it the Chebyshev corrections. This can be useful in some situations (e.g. when used for high-frequency error smoothing in a multigrid algorithm), but not the way the solver classes expect a preconditioner to work (where one ignores the content in dst for the preconditioner application).

Definition at line 964 of file precondition.h.

template<class MATRIX = SparseMatrix<double>, class VECTOR = Vector<double>>
unsigned int PreconditionChebyshev< MATRIX, VECTOR >::AdditionalData::eig_cg_n_iterations

Maximum number of CG iterations performed for finding the maximum eigenvalue. If set to zero, no computations are performed and the eigenvalues according to the given input are used instead.

Definition at line 971 of file precondition.h.

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

Tolerance for CG iterations performed for finding the maximum eigenvalue.

Definition at line 977 of file precondition.h.

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

Maximum eigenvalue to work with. Only in effect if eig_cg_n_iterations is set to zero, otherwise this parameter is ignored.

Definition at line 984 of file precondition.h.

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

Stores the inverse of the diagonal of the underlying matrix.

Definition at line 989 of file precondition.h.


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