|
FILTLAN
1.0a
|
An instance of this class, taken by LanczosEigenSolver(), is a collection of options for the Lanczos procedure to solve symmetric eigenvalue problems. More...
#include <laneig.h>
Public Member Functions | |
| LanczosOptions () | |
| A default constructor to set default options. | |
Public Attributes | |
| bool | wantEigVec |
| This parameter tells whether eigenvectors are wanted or not (default true). More... | |
| mkIndex | minIter |
| Minimum number of Lanczos iterations. More... | |
| mkIndex | maxIter |
| Maximum number of Lanczos iterations. More... | |
| mkIndex | extraIter |
| Extra number of Lanczos iterations (default 100). More... | |
| mkIndex | stride |
| The convergence is checked every ‘stride’ iterations (default 10). | |
| mkIndex | defaultMinIterFactor |
| The default LanczosOptions::minIter, if not set, is LanczosOptions::defaultMinIterFactor times the number of (largest or smallest) eigenvalues requested. More... | |
| mkIndex | defaultMaxIterFactor |
| The default LanczosOptions::maxIter, if not set, is 500 plus LanczosOptions::defaultMaxIterFactor times the number of (largest or smallest) eigenvalues requested. More... | |
| Real | tol |
Tolerance of eigenvalues, defined in the relative and average sense, for convergence check (default , with the machine epsilon). | |
| Vector | v0 |
| The initial Lanczos vector. More... | |
| int | reorth |
| A flag to tell which reorthogonalization scheme is used (default 1). The value can be 0,1,2. More... | |
| Real | doubleReorthGamma |
| Reorthogonalization is doubled in the iterations with nrm < doubleReorthGamma*nrm_old, where nrm_old and nrm are the norms of the latest Lanczos vector before and after reorthogonalization. More... | |
| Real | localReorthGamma |
| Local reorthogonalization is performed if beta[j-1]<localReorthGamma*beta[j] or localReorthGamma>=1.0, where beta[j] is the latest beta and beta[j-1] is the previous beta at jth Lanczos iteration. More... | |
| int | partialReorthStrategy |
| A flag to tell which partial reorthogonalization strategy is used. The value can be 0,1,2,3. More... | |
| bool | checkReorth |
| Set checkReorth=true for checking whether semi-orthogonality is preserved with partial reorthogonalization. More... | |
| Real | memoryExpansionFactor |
| This parameter determines how much the memory should be expanded when the allocated memory is not sufficient to store the Lanczos vectors and the elements alpha's and beta's which form the symmetric tridiagonal matrix. | |
| Real | eigLowCut |
| Eigenvalues larger than eigLowCut in the lower end will not be computed. More... | |
| Real | eigHighCut |
| Eigenvalues smaller than eigHighCut in the upper end will not be computed. More... | |
| int | eigSort |
| A flag which indicates how to sort eigenvalues (default -1). The value should be no less than -2. More... | |
| int | disp |
| Diagnostic information display level (default 1). The value can be 0,1,2. More... | |
| std::ostream * | out |
| A pointer to an output stream for diagnostic information. By default, it points to std::cout. | |
| std::ostream * | err |
| A pointer to an output stream for error messages. By default, it points to std::cerr. | |
An instance of this class, taken by LanczosEigenSolver(), is a collection of options for the Lanczos procedure to solve symmetric eigenvalue problems.
| bool LanczosOptions::checkReorth |
Set checkReorth=true for checking whether semi-orthogonality is preserved with partial reorthogonalization.
This is for verification purposes, and is expensive, comparable to full reorthogonalization. Therefore, checkReorth=true is not recommended for large problems.
By default, checkReorth==false.
| mkIndex LanczosOptions::defaultMaxIterFactor |
The default LanczosOptions::maxIter, if not set, is 500 plus LanczosOptions::defaultMaxIterFactor times the number of (largest or smallest) eigenvalues requested.
The default value of LanczosOptions::defaultMaxIterFactor is 50.
| mkIndex LanczosOptions::defaultMinIterFactor |
The default LanczosOptions::minIter, if not set, is LanczosOptions::defaultMinIterFactor times the number of (largest or smallest) eigenvalues requested.
The default value of LanczosOptions::defaultMinIterFactor is 5.
| int LanczosOptions::disp |
Diagnostic information display level (default 1). The value can be 0,1,2.
| Real LanczosOptions::doubleReorthGamma |
Reorthogonalization is doubled in the iterations with nrm < doubleReorthGamma*nrm_old, where nrm_old and nrm are the norms of the latest Lanczos vector before and after reorthogonalization.
The default value of doubleReorthGamma is
.
| Real LanczosOptions::eigHighCut |
Eigenvalues smaller than eigHighCut in the upper end will not be computed.
This parameter is effective when eigPart[] is "LA" for largest algebraic or when eigPart[] is "BE" for both ends.
| Real LanczosOptions::eigLowCut |
Eigenvalues larger than eigLowCut in the lower end will not be computed.
This parameter is effective when eigPart[] is "SA" for smallest algebraic or when eigPart[] is "BE" for both ends.
| int LanczosOptions::eigSort |
A flag which indicates how to sort eigenvalues (default -1). The value should be no less than -2.
Here eigPart[] is the input string of LanczosEigenSolver().
| mkIndex LanczosOptions::extraIter |
Extra number of Lanczos iterations (default 100).
This is the number of Lanczos iterations performed after the Ritz values are ‘deemed’ converged to the desired eigenvalues. There are two reasons to perform more Lanczos iterations.
The second can be illustrated by the following example. When the 10 largest Ritz values are converged to 10 eigenvalues, it is possible that the 10 eigenvalues are not the largest, because one or more of the 10 largest eigenvalues do not yet show up as Ritz values. Nevertheless, these missing eigenvalues, if any, may come out by applying more iterations. This issue can be serious in a filtered Lanczos procedure with a high degree polynomial.
Finally, the phase of such extra iterations may be repeated for a few times until all desired eigenvalues are found.
| Real LanczosOptions::localReorthGamma |
Local reorthogonalization is performed if beta[j-1]<localReorthGamma*beta[j] or localReorthGamma>=1.0, where beta[j] is the latest beta and beta[j-1] is the previous beta at jth Lanczos iteration.
The default value of localReorthGamma is sqrt(0.5).
localReorthGamma=0.0 (or smaller) means that local reorthogonalization is never performed.
| mkIndex LanczosOptions::maxIter |
Maximum number of Lanczos iterations.
This is the maximum number of iterations performed even if some desired eigenvalues do not yet converge.
The default value is 0, which means that it will be determined by LanczosOptions::defaultMaxIterFactor.
| mkIndex LanczosOptions::minIter |
Minimum number of Lanczos iterations.
This is the number of iterations performed before checking convergence.
The default value is 0, which means that it will be determined by LanczosOptions::defaultMinIterFactor.
| int LanczosOptions::partialReorthStrategy |
A flag to tell which partial reorthogonalization strategy is used. The value can be 0,1,2,3.
omega(i) is the estimated orthogonal error of v(i) against the previous Lanczos vectors v(1),...,v(i-1). By default, the value of eta is eps^(0.75) and the value of delta is eps^(0.5), where eps is the machine epsilon.
| int LanczosOptions::reorth |
A flag to tell which reorthogonalization scheme is used (default 1). The value can be 0,1,2.
| Vector LanczosOptions::v0 |
The initial Lanczos vector.
If v0.Length() is not the number of rows/columns of the matrix, then a random vector is generated for the initial Lanczos vector as in the default case.
| bool LanczosOptions::wantEigVec |
This parameter tells whether eigenvectors are wanted or not (default true).
Note that the standard Lanczos procedure computes the eigenvalues first. The computation of eigenvectors is unnecessary if only the eigenvalues are required.
1.8.14