Reference documentation for deal.II version 9.0.0
Classes | Public Types | Public Member Functions | Protected Attributes | List of all members
EigenInverse< VectorType > Class Template Reference

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

Inheritance diagram for EigenInverse< VectorType >:
[legend]

Classes

struct  AdditionalData
 

Public Types

typedef types::global_dof_index size_type
 

Public Member Functions

 EigenInverse (SolverControl &cn, VectorMemory< VectorType > &mem, const AdditionalData &data=AdditionalData())
 
virtual ~EigenInverse ()
 
template<typename MatrixType >
void solve (double &value, const MatrixType &A, VectorType &x)
 

Protected Attributes

AdditionalData additional_data
 

Additional Inherited Members

- Private Types inherited from Solver< VectorType >
typedef VectorType vector_type
 
- Private Member Functions inherited from Solver< VectorType >
 Solver (SolverControl &solver_control, VectorMemory< VectorType > &vector_memory)
 
 Solver (SolverControl &solver_control)
 
boost::signals2::connection connect (const std::function< SolverControl::State(const unsigned int iteration, const double check_value, const VectorType &current_iterate)> &slot)
 
- Private Member Functions inherited from Subscriptor
 Subscriptor ()
 
 Subscriptor (const Subscriptor &)
 
 Subscriptor (Subscriptor &&) noexcept
 
virtual ~Subscriptor ()
 
Subscriptoroperator= (const Subscriptor &)
 
Subscriptoroperator= (Subscriptor &&) noexcept
 
void subscribe (const char *identifier=nullptr) const
 
void unsubscribe (const char *identifier=nullptr) const
 
unsigned int n_subscriptions () const
 
void list_subscribers () const
 
template<class Archive >
void serialize (Archive &ar, const unsigned int version)
 
- Static Private Member Functions inherited from Subscriptor
static ::ExceptionBaseExcInUse (int arg1, std::string arg2, std::string arg3)
 
static ::ExceptionBaseExcNoSubscriber (std::string arg1, std::string arg2)
 
- Private Attributes inherited from Solver< VectorType >
GrowingVectorMemory< VectorType > static_vector_memory
 
VectorMemory< VectorType > & memory
 
boost::signals2::signal< SolverControl::State(const unsigned int iteration, const double check_value, const VectorType &current_iterate), StateCombineriteration_status
 

Detailed Description

template<typename VectorType = Vector<double>>
class EigenInverse< VectorType >

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 \(A x - l x\) 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.

Author
Guido Kanschat, 2000, 2003

Definition at line 137 of file eigen.h.

Member Typedef Documentation

◆ size_type

template<typename VectorType = Vector<double>>
typedef types::global_dof_index EigenInverse< VectorType >::size_type

Declare type of container size.

Definition at line 143 of file eigen.h.

Constructor & Destructor Documentation

◆ EigenInverse()

template<class VectorType >
EigenInverse< VectorType >::EigenInverse ( SolverControl cn,
VectorMemory< VectorType > &  mem,
const AdditionalData data = AdditionalData() 
)

Constructor.

Definition at line 304 of file eigen.h.

◆ ~EigenInverse()

template<class VectorType >
EigenInverse< VectorType >::~EigenInverse ( )
virtual

Virtual destructor.

Definition at line 315 of file eigen.h.

Member Function Documentation

◆ solve()

template<class VectorType >
template<typename MatrixType >
void EigenInverse< VectorType >::solve ( double &  value,
const MatrixType &  A,
VectorType &  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.

Definition at line 323 of file eigen.h.

Member Data Documentation

◆ additional_data

template<typename VectorType = Vector<double>>
AdditionalData EigenInverse< VectorType >::additional_data
protected

Flags for execution.

Definition at line 207 of file eigen.h.


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