Eigenvalue solver using ArPack, the routine dsaupd. More...

#include <ARPACKsymm.hh>

Inheritance diagram for eigensolver::ArPackSymm:
eigensolver::EigenSolver< Real > concepts::OutputOperator

Public Types

enum  modus {
  NORMAL = 1, REGINV = 2, SHIFTINV = 3, BUCKLING = 4,
  CAYLEY = 5
}
 Specify mode of ArPackSymm which should be used to compute the Ritz values $ \nu $ of OP. More...
 
enum  which {
  LA, SA, LM, SM,
  BE
}
 Specify which of the Ritz values $ \nu $ of OP (described in modus) to compute. More...
 

Public Member Functions

 ArPackSymm (concepts::Operator< Real > &OP, concepts::Operator< Real > &A, concepts::Operator< Real > &B, const int kmax=1, const Real tol=0.0, const int maxiter=300, enum which target=SM, enum modus mode=REGINV, const Real sigma=0.0, const concepts::Vector< Real > *start=0)
 Constructor. More...
 
virtual uint converged () const
 
virtual uint converged () const=0
 Returns the number of converged eigen pairs. More...
 
virtual const concepts::Array< concepts::Vector< Real > * > & getEF ()
 
virtual const concepts::Array< Real > & getEV ()
 Returns an array with the eigen values. More...
 
virtual uint iterations () const
 
virtual uint iterations () const=0
 Returns the number of iterations. More...
 
virtual ~ArPackSymm ()
 

Protected Member Functions

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

Private Member Functions

void compute_ ()
 

Private Attributes

concepts::Operator< Real > & A_
 Stiffness matrix. More...
 
concepts::Operator< Real > & B_
 Operator B as descirbed in modus. More...
 
bool computed_
 
concepts::Array< Real > eigenvalues_
 Storage space for eigenvalues. More...
 
concepts::Array< Real > eigenvectors_
 Storage space for eigenvectors. More...
 
concepts::Array< concepts::Vector< Real > * > ev_
 References into storage for eigenvectors. More...
 
int iter_
 
int k_conv_
 
int kmax_
 Number of eigenpairs to be computed. More...
 
int maxiter_
 Maximum number of Arnoldi iterations allowed. More...
 
enum modus mode_
 Mode in which ArPackSymm should be used. More...
 
int numop_
 
int numopb_
 
int numreo_
 
concepts::Operator< Real > & OP_
 Operator OP as described in modus. More...
 
const Real sigma_
 Shift for the shift-invert, Buckling or Cayley mode. More...
 
const concepts::Vector< Real > * start_
 Starting vector, if not given ArPackSymm invents one. More...
 
enum which target_
 Sort of eigenvalues to compute. More...
 
Real tol_
 Convergence tolerance for the eigenpairs. More...
 

Detailed Description

Eigenvalue solver using ArPack, the routine dsaupd.

ArPack is designed to solve large scale eigenvalue problems. The package is designed to compute a few eigenvalues and corresponding eigenvectors of a general n by n matrix A. It is most appropriate for large sparse or structured matrices A. This software is based upon an algorithmic variant of the Arnoldi process called the Implicitly Restarted Arnoldi Method (IRAM). When the matrix A is symmetric it reduces to a variant of the Lanczos process called the Implicitly Restarted Lanczos Method (IRLM). These variants may be viewed as a synthesis of the Arnoldi/Lanczos process with the Implicitly Shifted QR technique that is suitable for large scale problems.

ArPack software is capable of solving large scale symmetric, nonsymmetric, and generalized eigenproblems from significant application areas. The software is designed to compute a few (k) eigenvalues with user specified features such as those of largest real part or largest magnitude. No auxiliary storage is required. A set of Schur basis vectors for the desired k-dimensional eigen-space is computed which is numerically orthogonal to working precision. Numerically accurate eigenvectors are available on request.

dsaupd uses implicitly restarted Arnoldi iteration to solve the generalized eigenvalue problem $ A x = \lambda B x $ with B symmetric and positive definite. For symmetric problems this reduces to a variant of the Lanczos method.

See also
Richard B. Lehoucq, Kristyn J. Maschhoff, Danny C. Sorensen, and Chao Yang, ArPackSymm Homepage.
Richard B. Lehoucq, Danny C. Sorensen, and Chao Yang. ArPackSymm users' guide. Software, Environments, and Tools. Society for Industrial and Applied Mathematics (SIAM), Philadelphia, PA, 1998.
Test:

test::GolubExample

test::GolubExampleSum

test::MaxwellTransmissionEVP

Author
Philipp Frauenfelder, 2002

Definition at line 65 of file ARPACKsymm.hh.

Member Enumeration Documentation

◆ modus

Specify mode of ArPackSymm which should be used to compute the Ritz values $ \nu $ of OP.

Enumerator
NORMAL 
REGINV 
SHIFTINV 
BUCKLING 
CAYLEY 

Definition at line 87 of file ARPACKsymm.hh.

◆ which

Specify which of the Ritz values $ \nu $ of OP (described in modus) to compute.

Enumerator
LA 
SA 
LM 
SM 
BE 

Definition at line 70 of file ARPACKsymm.hh.

Constructor & Destructor Documentation

◆ ArPackSymm()

eigensolver::ArPackSymm::ArPackSymm ( concepts::Operator< Real > &  OP,
concepts::Operator< Real > &  A,
concepts::Operator< Real > &  B,
const int  kmax = 1,
const Real  tol = 0.0,
const int  maxiter = 300,
enum which  target = SM,
enum modus  mode = REGINV,
const Real  sigma = 0.0,
const concepts::Vector< Real > *  start = 0 
)

Constructor.

Parameters
OPOperator OP as described in modus
AStiffness matrix
BOperator B as descirbed in modus
kmaxNumber of eigenpairs to be computed
tolConvergence tolerance for the eigenpairs. The default value 0.0 is replaced by DLAMCH('EPS') from LAPACK.
maxiterMaximum number of Arnoldi iterations allowed
targetWhat sort of eigenvalues to compute
modeMode in which ArPackSymm should be used
sigmaShift for the shift-invert, Buckling or Cayley mode

◆ ~ArPackSymm()

virtual eigensolver::ArPackSymm::~ArPackSymm ( )
virtual

Member Function Documentation

◆ compute_()

void eigensolver::ArPackSymm::compute_ ( )
private

◆ converged() [1/2]

virtual uint eigensolver::ArPackSymm::converged ( ) const
inlinevirtual

Definition at line 133 of file ARPACKsymm.hh.

◆ converged() [2/2]

virtual uint eigensolver::EigenSolver< Real >::converged ( ) const
pure virtualinherited

Returns the number of converged eigen pairs.

Implemented in eigensolver::ArPack< Real >.

◆ getEF()

virtual const concepts::Array<concepts::Vector<Real>*>& eigensolver::ArPackSymm::getEF ( )
virtual

◆ getEV()

virtual const concepts::Array<Real>& eigensolver::ArPackSymm::getEV ( )
virtual

Returns an array with the eigen values.

Deprecated:
: this interface requires that the returned array must be hold as a member variable of the class.

(use std::auto_pointer or similar)

Implements eigensolver::EigenSolver< Real >.

◆ info()

virtual std::ostream& eigensolver::ArPackSymm::info ( std::ostream &  os) const
protectedvirtual

Returns information in an output stream.

Reimplemented from eigensolver::EigenSolver< Real >.

◆ iterations() [1/2]

virtual uint eigensolver::ArPackSymm::iterations ( ) const
inlinevirtual

Definition at line 132 of file ARPACKsymm.hh.

◆ iterations() [2/2]

virtual uint eigensolver::EigenSolver< Real >::iterations ( ) const
pure virtualinherited

Returns the number of iterations.

Implemented in eigensolver::ArPack< Real >.

Member Data Documentation

◆ A_

concepts::Operator<Real>& eigensolver::ArPackSymm::A_
private

Stiffness matrix.

Definition at line 140 of file ARPACKsymm.hh.

◆ B_

concepts::Operator<Real>& eigensolver::ArPackSymm::B_
private

Operator B as descirbed in modus.

Definition at line 142 of file ARPACKsymm.hh.

◆ computed_

bool eigensolver::ArPackSymm::computed_
private

Definition at line 164 of file ARPACKsymm.hh.

◆ eigenvalues_

concepts::Array<Real> eigensolver::ArPackSymm::eigenvalues_
private

Storage space for eigenvalues.

Definition at line 151 of file ARPACKsymm.hh.

◆ eigenvectors_

concepts::Array<Real> eigensolver::ArPackSymm::eigenvectors_
private

Storage space for eigenvectors.

Definition at line 153 of file ARPACKsymm.hh.

◆ ev_

concepts::Array<concepts::Vector<Real>*> eigensolver::ArPackSymm::ev_
private

References into storage for eigenvectors.

Definition at line 155 of file ARPACKsymm.hh.

◆ iter_

int eigensolver::ArPackSymm::iter_
private

Definition at line 149 of file ARPACKsymm.hh.

◆ k_conv_

int eigensolver::ArPackSymm::k_conv_
private

Definition at line 149 of file ARPACKsymm.hh.

◆ kmax_

int eigensolver::ArPackSymm::kmax_
private

Number of eigenpairs to be computed.

Definition at line 144 of file ARPACKsymm.hh.

◆ maxiter_

int eigensolver::ArPackSymm::maxiter_
private

Maximum number of Arnoldi iterations allowed.

Definition at line 146 of file ARPACKsymm.hh.

◆ mode_

enum modus eigensolver::ArPackSymm::mode_
private

Mode in which ArPackSymm should be used.

Definition at line 155 of file ARPACKsymm.hh.

◆ numop_

int eigensolver::ArPackSymm::numop_
private

Definition at line 149 of file ARPACKsymm.hh.

◆ numopb_

int eigensolver::ArPackSymm::numopb_
private

Definition at line 149 of file ARPACKsymm.hh.

◆ numreo_

int eigensolver::ArPackSymm::numreo_
private

Definition at line 149 of file ARPACKsymm.hh.

◆ OP_

concepts::Operator<Real>& eigensolver::ArPackSymm::OP_
private

Operator OP as described in modus.

Definition at line 138 of file ARPACKsymm.hh.

◆ sigma_

const Real eigensolver::ArPackSymm::sigma_
private

Shift for the shift-invert, Buckling or Cayley mode.

Definition at line 161 of file ARPACKsymm.hh.

◆ start_

const concepts::Vector<Real>* eigensolver::ArPackSymm::start_
private

Starting vector, if not given ArPackSymm invents one.

Definition at line 163 of file ARPACKsymm.hh.

◆ target_

enum which eigensolver::ArPackSymm::target_
private

Sort of eigenvalues to compute.

Definition at line 155 of file ARPACKsymm.hh.

◆ tol_

Real eigensolver::ArPackSymm::tol_
private

Convergence tolerance for the eigenpairs.

Definition at line 148 of file ARPACKsymm.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