eigensolver::ArPack< F, G, H > Class Template Reference
Eigenvalue solver using ARPACK, the routine dnaupd
or znaupd
.
More...
#include <ARPACK.hh>
Public Types | |
enum | modus { NORMAL = 1, REGINV = 2, SHIFTINV = 3, SHIFTINVIMAG = 4 } |
Specify mode of ARPACK which should be used to compute the Ritz values of OP. More... | |
enum | which { LM, SM, LR, SR, LI, SI } |
Specify which of the Ritz values of OP (described in modus ) to compute. More... | |
Public Member Functions | |
ArPack (concepts::Operator< G > &OP, concepts::Operator< F > &A, concepts::Operator< H > &B, const int kmax=1, const Real tol=0.0, const int maxiter=300, enum which target=SM, enum modus mode=REGINV, const F sigma=0.0, const concepts::Vector< F > *start=0, const concepts::Array< F > *resid=0, const bool schur=false) | |
Constructor. More... | |
virtual uint | converged () const |
Returns the number of converged eigenpairs. More... | |
virtual const concepts::Array< concepts::Vector< F > * > & | getEF () |
Returns an array with the eigenfunctions. More... | |
virtual const concepts::Array< F > & | getEV () |
Returns an array with the real parts of the eigenvalues in the first kmax entries and the imaginary parts of the eigenvalues in the second kmax entries. More... | |
concepts::Array< F > | getRESID () |
Returns the RESID vector: More... | |
virtual uint | iterations () const |
Returns the number of iterations. More... | |
virtual | ~ArPack () |
Protected Member Functions | |
virtual std::ostream & | info (std::ostream &os) const |
Returns information in an output stream. More... | |
Private Member Functions | |
void | compute_ () |
Compute eigenpairs. More... | |
void | computeCmplx_ () |
Private Attributes | |
concepts::Operator< F > & | A_ |
Stiffness matrix. More... | |
concepts::Operator< H > & | B_ |
Operator B as described in modus . More... | |
bool | computed_ |
Eigenpairs computed? More... | |
concepts::Array< F > | eigenvalues_ |
Storage space for eigenvalues. More... | |
concepts::Array< F > | eigenvectors_ |
Storage space for eigenvectors. More... | |
concepts::Array< concepts::Vector< F > * > | 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 ARPACK should be used. More... | |
int | numop_ |
int | numopb_ |
int | numreo_ |
concepts::Operator< G > & | OP_ |
Operator OP as described in modus . More... | |
const concepts::Array< F > * | resid_in_ |
Calculate vectors instead of eigenvectors Input of a residual vector (startvector) as array: More... | |
concepts::Array< F > | resid_out_ |
The residual vector for output: More... | |
const bool | schur_ |
const F | sigma_ |
Shift for the shift-invert modes: More... | |
const concepts::Vector< F > * | start_ |
Starting vector, if not given ARPACK invents one. More... | |
enum which | target_ |
Sort of eigenvalues to compute. More... | |
Real | tol_ |
Convergence tolerance for the eigenpairs. More... | |
Detailed Description
template<typename F, typename G = Real, typename H = Real>
class eigensolver::ArPack< F, G, H >
Eigenvalue solver using ARPACK, the routine dnaupd
or znaupd
.
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.
dnaupd
uses implicitly restarted Arnoldi iteration to solve the generalized eigenvalue problem with A general non-symmetric and B symmetric and positive definite. For A symmetric, use ArPackSymm
instead.
znaupd
uses implicitly restarted Arnoldi iteration to solve the generalized eigenvalue problem with A general non-symmetric, complex and B symmetric and positive definite, real. For A symmetric and complex also use this routine.
- See also
- Richard B. Lehoucq, Kristyn J. Maschhoff, Danny C. Sorensen, and Chao Yang, ARPACK Homepage.
- Richard B. Lehoucq, Danny C. Sorensen, and Chao Yang. ARPACK users' guide. Software, Environments, and Tools. Society for Industrial and Applied Mathematics (SIAM), Philadelphia, PA, 1998.
Member Enumeration Documentation
◆ modus
enum eigensolver::ArPack::modus |
◆ which
enum eigensolver::ArPack::which |
Constructor & Destructor Documentation
◆ ArPack()
eigensolver::ArPack< F, G, H >::ArPack | ( | concepts::Operator< G > & | OP, |
concepts::Operator< F > & | A, | ||
concepts::Operator< H > & | B, | ||
const int | kmax = 1 , |
||
const Real | tol = 0.0 , |
||
const int | maxiter = 300 , |
||
enum which | target = SM , |
||
enum modus | mode = REGINV , |
||
const F | sigma = 0.0 , |
||
const concepts::Vector< F > * | start = 0 , |
||
const concepts::Array< F > * | resid = 0 , |
||
const bool | schur = false |
||
) |
Constructor.
- Parameters
-
OP Operator OP as described in modus
A Stiffness matrix B Operator B as descirbed in modus
kmax Number of eigenpairs to be computed tol Convergence tolerance for the eigenpairs. The default value 0.0 is replaced by DLAMCH
('EPS') from LAPACK.maxiter Maximum number of Arnoldi iterations allowed target What sort of eigenvalues to compute mode Mode in which ARPACK should be used sigma Shift for the shift-invert modes start Initial vector for iteration schur Calculate Schur vector basis instead of eigenvectors
◆ ~ArPack()
|
virtual |
Member Function Documentation
◆ compute_()
|
private |
Compute eigenpairs.
◆ computeCmplx_()
|
private |
◆ converged()
|
inlinevirtual |
Returns the number of converged eigenpairs.
Implements eigensolver::EigenSolver< F >.
◆ getEF()
|
virtual |
Returns an array with the eigenfunctions.
If eigenvalue k is real, entry k contains the (real) eigenfunction. If eigenvalues k and k+1 are complex conjugate, entry k contains the real part of and entry k+1 contains the imaginary part of eigenfunction k. Eigenfunction k+1 is the complex conjugate of eigenfunction k.
Implements eigensolver::EigenSolver< F >.
◆ getEV()
|
virtual |
Returns an array with the real parts of the eigenvalues in the first kmax
entries and the imaginary parts of the eigenvalues in the second kmax
entries.
Implements eigensolver::EigenSolver< F >.
◆ getRESID()
|
inline |
◆ info()
|
protectedvirtual |
Returns information in an output stream.
Reimplemented from eigensolver::EigenSolver< F >.
◆ iterations()
|
inlinevirtual |
Returns the number of iterations.
Implements eigensolver::EigenSolver< F >.
Member Data Documentation
◆ A_
|
private |
◆ B_
|
private |
◆ computed_
|
private |
◆ eigenvalues_
|
private |
◆ eigenvectors_
|
private |
◆ ev_
|
private |
◆ iter_
|
private |
◆ k_conv_
|
private |
◆ kmax_
|
private |
◆ maxiter_
|
private |
◆ mode_
|
private |
◆ numop_
|
private |
◆ numopb_
|
private |
◆ numreo_
|
private |
◆ OP_
|
private |
◆ resid_in_
|
private |
◆ resid_out_
|
private |
◆ schur_
|
private |
◆ sigma_
|
private |
◆ start_
|
private |
◆ target_
|
private |
◆ tol_
|
private |
The documentation for this class was generated from the following file:
- eigensolver/ARPACK.hh