eigensolver::ArPackppGen< F, G, H > Class Template Referenceabstract

EigenSolver for complex, general eigenproblems. More...

#include <arpackpp.hh>

Inheritance diagram for eigensolver::ArPackppGen< F, G, H >:
eigensolver::EigenSolver< concepts::Cmplx > concepts::OutputOperator

Public Member Functions

 ArPackppGen (concepts::Operator< F > &OP, concepts::Operator< G > &A, concepts::Operator< H > &B, int kmax=1, char *which=(char *) "LM", Real tol=0.0, int maxiter=300)
 Regular mode constructor. More...
 
 ArPackppGen (concepts::Operator< F > &OP, concepts::Operator< G > &A, concepts::Operator< H > &B, int kmax=1, concepts::Cmplx sigma=0.0, Real tol=0.0, int maxiter=300)
 Shift and invert mode constructor. More...
 
virtual uint converged () const
 Returns the number of converged eigenpairs. More...
 
virtual uint converged () const=0
 Returns the number of converged eigen pairs. More...
 
virtual concepts::Array< concepts::Vector< Cmplx > * > & getEF ()
 Getter for the computed eigenvectors. More...
 
virtual const concepts::Array< Cmplx > & getEV ()
 Getter for the computed eigenvalues. More...
 
concepts::Array< Cmplx > getRESID ()
 Returns the RESID vector. More...
 
virtual uint iterations () const
 Returns the actual number of Arnoldi iterations. More...
 
virtual uint iterations () const=0
 Returns the number of iterations. More...
 
virtual ~ArPackppGen ()
 Deconstructor. More...
 

Protected Member Functions

virtual std::ostream & info (std::ostream &os) const
 Returns information in an output stream. More...
 

Private Member Functions

void compute_ ()
 Computes and stores the eigenpairs. More...
 

Private Attributes

ArpackOperatorWrapper< F, G, H > aow_
 Wrapper. More...
 
ARCompGenEig< Real, ArpackOperatorWrapper< F, G, H >, ArpackOperatorWrapper< F, G, H > > arpackSolver_
 Arpack solver. More...
 
bool computed_
 Whether or not eigenpairs have already been computed. More...
 
uint convEigenvalues_
 Number of converged eigenpairs. More...
 
concepts::Array< Cmplx > eigenValues_
 References into storage for eigenvalues. More...
 
concepts::Array< concepts::Vector< Cmplx > * > eigenVectors_
 References into storage for eigenvectors. More...
 
uint iter_
 Number of Arnoldi iterations. More...
 
ArPack< Real >::modus modus_
 Mode of the Arpack solver. More...
 
char * whichEV_
 Identifier indicating which eigenvalues should be calculated. More...
 

Detailed Description

template<class F, class G, class H = concepts::Real>
class eigensolver::ArPackppGen< F, G, H >

EigenSolver for complex, general eigenproblems.

Solves problems of the form $ A x = \lambda B x $ with complex matrix A and real, symmetric, positive definite matrix B.

Definition at line 541 of file arpackpp.hh.

Constructor & Destructor Documentation

◆ ArPackppGen() [1/2]

template<class F , class G , class H = concepts::Real>
eigensolver::ArPackppGen< F, G, H >::ArPackppGen ( concepts::Operator< F > &  OP,
concepts::Operator< G > &  A,
concepts::Operator< H > &  B,
int  kmax = 1,
concepts::Cmplx  sigma = 0.0,
Real  tol = 0.0,
int  maxiter = 300 
)
inline

Shift and invert mode constructor.

Parameters
OPmultiplication operator, OP * x = inv(A-sigma*B) * x
Amatrix of the left hand side
Bmatrix of the right hand side
kmaxnumber of eigenpairs to be computed, default 1
sigmacomplex-valued shift for the shift-invert mode, default 0.0
tolconvergence tolerance for the eigenpairs, default 0.0 (is replaced by LAPACK's DLAMCH('EPS'))
maxitermaximum number of Arnoldi iterations allowed, default 300
Warning
B has to be real, symmetric and positive definite.
kmax has to be larger than or equal to 1 and smaller than or equal to the dimension of the matrix minus 2.

Definition at line 557 of file arpackpp.hh.

◆ ArPackppGen() [2/2]

template<class F , class G , class H = concepts::Real>
eigensolver::ArPackppGen< F, G, H >::ArPackppGen ( concepts::Operator< F > &  OP,
concepts::Operator< G > &  A,
concepts::Operator< H > &  B,
int  kmax = 1,
char *  which = (char*) "LM",
Real  tol = 0.0,
int  maxiter = 300 
)
inline

Regular mode constructor.

Parameters
OPmultiplication operator, OP * x = inv(B) * x
Amatrix of the left hand side
Bmatrix of the right hand side
kmaxnumber of eigenpairs to be computed, default 1
whichdefines which sort of eigenvalues should be computed, i.e. eigenvalues of largest magnitude ("LM"), smallest magnitude ("SM"), largest real part ("LR"), smallest real part ("SR"), largest imaginary part ("LI") or smallest imaginary part ("SI"), default "LM"
tolconvergence tolerance for the eigenpairs, default 0.0 (is replaced by LAPACK's DLAMCH('EPS'))
maxitermaximum number of Arnoldi iterations allowed, default 300
Warning
B has to be real, symmetric and positive definite.
kmax has to be larger than or equal to 1 and smaller than or equal to the dimension of the matrix minus 2.

Definition at line 603 of file arpackpp.hh.

◆ ~ArPackppGen()

template<class F , class G , class H = concepts::Real>
virtual eigensolver::ArPackppGen< F, G, H >::~ArPackppGen ( )
inlinevirtual

Deconstructor.

Definition at line 632 of file arpackpp.hh.

Member Function Documentation

◆ compute_()

template<class F , class G , class H = concepts::Real>
void eigensolver::ArPackppGen< F, G, H >::compute_ ( )
inlineprivate

Computes and stores the eigenpairs.

Definition at line 698 of file arpackpp.hh.

◆ converged() [1/2]

template<class F , class G , class H = concepts::Real>
virtual uint eigensolver::ArPackppGen< F, G, H >::converged ( ) const
inlinevirtual

Returns the number of converged eigenpairs.

Definition at line 665 of file arpackpp.hh.

◆ converged() [2/2]

◆ getEF()

template<class F , class G , class H = concepts::Real>
virtual concepts::Array<concepts::Vector<Cmplx>*>& eigensolver::ArPackppGen< F, G, H >::getEF ( )
inlinevirtual

Getter for the computed eigenvectors.

Computes eigenvalues and eigenvectors if they have not yet been computed.

Implements eigensolver::EigenSolver< concepts::Cmplx >.

Definition at line 653 of file arpackpp.hh.

◆ getEV()

template<class F , class G , class H = concepts::Real>
virtual const concepts::Array<Cmplx>& eigensolver::ArPackppGen< F, G, H >::getEV ( )
inlinevirtual

Getter for the computed eigenvalues.

Computes eigenvalues and eigenvectors if they have not yet been computed.

Implements eigensolver::EigenSolver< concepts::Cmplx >.

Definition at line 642 of file arpackpp.hh.

◆ getRESID()

template<class F , class G , class H = concepts::Real>
concepts::Array<Cmplx> eigensolver::ArPackppGen< F, G, H >::getRESID ( )
inline

Returns the RESID vector.

Definition at line 670 of file arpackpp.hh.

◆ info()

template<class F , class G , class H = concepts::Real>
virtual std::ostream& eigensolver::ArPackppGen< F, G, H >::info ( std::ostream &  os) const
inlineprotectedvirtual

Returns information in an output stream.

Reimplemented from eigensolver::EigenSolver< concepts::Cmplx >.

Definition at line 677 of file arpackpp.hh.

◆ iterations() [1/2]

template<class F , class G , class H = concepts::Real>
virtual uint eigensolver::ArPackppGen< F, G, H >::iterations ( ) const
inlinevirtual

Returns the actual number of Arnoldi iterations.

Definition at line 660 of file arpackpp.hh.

◆ iterations() [2/2]

Member Data Documentation

◆ aow_

template<class F , class G , class H = concepts::Real>
ArpackOperatorWrapper<F, G, H> eigensolver::ArPackppGen< F, G, H >::aow_
private

Wrapper.

Definition at line 727 of file arpackpp.hh.

◆ arpackSolver_

template<class F , class G , class H = concepts::Real>
ARCompGenEig<Real, ArpackOperatorWrapper<F, G, H> , ArpackOperatorWrapper< F, G, H> > eigensolver::ArPackppGen< F, G, H >::arpackSolver_
private

Arpack solver.

Definition at line 731 of file arpackpp.hh.

◆ computed_

template<class F , class G , class H = concepts::Real>
bool eigensolver::ArPackppGen< F, G, H >::computed_
private

Whether or not eigenpairs have already been computed.

Definition at line 740 of file arpackpp.hh.

◆ convEigenvalues_

template<class F , class G , class H = concepts::Real>
uint eigensolver::ArPackppGen< F, G, H >::convEigenvalues_
private

Number of converged eigenpairs.

Definition at line 737 of file arpackpp.hh.

◆ eigenValues_

template<class F , class G , class H = concepts::Real>
concepts::Array<Cmplx> eigensolver::ArPackppGen< F, G, H >::eigenValues_
private

References into storage for eigenvalues.

Definition at line 743 of file arpackpp.hh.

◆ eigenVectors_

template<class F , class G , class H = concepts::Real>
concepts::Array<concepts::Vector<Cmplx>*> eigensolver::ArPackppGen< F, G, H >::eigenVectors_
private

References into storage for eigenvectors.

Definition at line 746 of file arpackpp.hh.

◆ iter_

template<class F , class G , class H = concepts::Real>
uint eigensolver::ArPackppGen< F, G, H >::iter_
private

Number of Arnoldi iterations.

Definition at line 734 of file arpackpp.hh.

◆ modus_

template<class F , class G , class H = concepts::Real>
ArPack<Real>::modus eigensolver::ArPackppGen< F, G, H >::modus_
private

Mode of the Arpack solver.

Definition at line 721 of file arpackpp.hh.

◆ whichEV_

template<class F , class G , class H = concepts::Real>
char* eigensolver::ArPackppGen< F, G, H >::whichEV_
private

Identifier indicating which eigenvalues should be calculated.

Definition at line 718 of file arpackpp.hh.


The documentation for this class was generated from the following file:
Page URL: http://wiki.math.ethz.ch/bin/view/Concepts/WebHome
21 August 2020
© 2020 Eidgenössische Technische Hochschule Zürich