![]() |
Reference documentation for deal.II version 8.1.0
|
#include <eigen.h>
Classes | |
struct | AdditionalData |
Public Types | |
typedef types::global_dof_index | size_type |
Public Member Functions | |
EigenInverse (SolverControl &cn, VectorMemory< VECTOR > &mem, const AdditionalData &data=AdditionalData()) | |
virtual | ~EigenInverse () |
template<class MATRIX > | |
void | solve (double &value, const MATRIX &A, VECTOR &x) |
Protected Attributes | |
AdditionalData | additional_data |
Additional Inherited Members | |
![]() | |
Solver (SolverControl &solver_control, VectorMemory< VECTOR > &vector_memory) | |
Solver (SolverControl &solver_control) | |
SolverControl & | control () const |
![]() | |
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) |
![]() | |
GrowingVectorMemory< VECTOR > | static_vector_memory |
SolverControl & | cntrl |
VectorMemory< VECTOR > & | memory |
Inverse iteration (Wieland) for eigenvalue computations.
This class implements an adaptive version of the inverse iteration by Wieland.
There are two choices for the stopping criterion: by default, the norm of the residual is computed. Since this might not converge to zero for non-symmetric matrices with non-trivial Jordan blocks, it can be replaced by checking the difference of successive eigenvalues. Use AdditionalData::use_residual for switching this option.
Usually, the initial guess entering this method is updated after each step, replacing it with the new approximation of the eigenvalue. Using a parameter AdditionalData::relaxation between 0 and 1, this update can be damped. With relaxation parameter 0, no update is performed. This damping allows for slower adaption of the shift value to make sure that the method converges to the eigenvalue closest to the initial guess. This can be aided by the parameter AdditionalData::start_adaption, which indicates the first iteration step in which the shift value should be adapted.
typedef types::global_dof_index EigenInverse< VECTOR >::size_type |
EigenInverse< VECTOR >::EigenInverse | ( | SolverControl & | cn, |
VectorMemory< VECTOR > & | mem, | ||
const AdditionalData & | data = AdditionalData() |
||
) |
|
virtual |
void EigenInverse< VECTOR >::solve | ( | double & | value, |
const MATRIX & | A, | ||
VECTOR & | x | ||
) |
Inverse method. value
is the start guess for the eigenvalue and x
is the (not necessarily normalized, but nonzero) start vector for the power method. After the iteration, value
is the approximated eigenvalue and x
is the corresponding eigenvector, normalized with respect to the l2-norm.
|
protected |