These parameters are used with opt_method='get_eigvals'. They are used with the eigenvalue solver. If opt_method='get_eigvals', then the codes will expect that the namelist 'eigv' will be included in the input file. These parameters are contained in that namelist.
eigval% nev
Description: Number of eigenvalues Parameter Type: Integer Range of Acceptable Values: 3+ Default Value: 10 User Notes:
The User guide says that convergence can be affected by the number of eigenvalues requested depending on the eigenvalue clustering and number of complex conjugate pairs. If convergence problems are encountered, you can try increasing this number by 1 or 2.
eigval% ncv
Description: Size of the Lancoz/Arnoldi subspace Parameter Type: Integer Range of Acceptable Values: Must be >= nev+2 Default Value: 22 User Notes:
The User guide suggests at least 2*nev+1 and a comment in the actual codes suggests 2*nev+2, hence the default value.
eigval% maxitr
Description: Maximum number of iterations. This is not the same as the number of calls to the ARPACK routine dnaupd because dnaupd uses reverse communication to get matvecs and may exit several times per iteration. Parameter Type: Integer Default Value: 300
eigval% mode
Description: 1 for regular mode, 3 for shift-invert mode Parameter Type: Integer Range of Acceptable Values: 1 or 3 Default Value: 3 User Notes:
If %which='LM', 'LR', or 'LI', then %mode will automatically be set to 1 in the codes. If using %which='SM', 'SR', or 'SI', then 1 or 3 are acceptable input parameters. %mode=1 is much faster but will probably not converge.
eigval% ishfts
Description: A flag to toggle implicit shifting Parameter Type: Integer Range of Acceptable Values: 1 Default Value: 1 User Notes:
Don't change this. Implicit shifting is currently not available.
eigval% which
Description: Which eigenvalues to calculate. Parameter Type: Character Range of Acceptable Values: 'LM', 'SM', 'LR', 'SR', 'LI', 'SI' Default Value: 'LM' User Notes:
Largest magnitude, smallest magnitude, largest real part, smallest real part, largest imaginary part, smallest imaginary part.
eigval% tol
Description: Relative tolerance ||Av - lambda*V||/|lambda| to converge to. Parameter Type: Real Range of Acceptable Values: [0,1] Default Value: 1.d-10 User Notes:
Set to 0.d0 to solve to machine precision. You can easily solve the 'LM' case to machine precision. The default value is nonzero however since for the small eigenvalue cases we need to match this tolerance to the linear solver tolerance. Note that we should expect this tolerance to be approximately the relative error in our eigenvalues, that is tol = |lambda_c - lambda|/|lambda|, approximately.
eigval% ilu_flev
Description: Fill level of ILU(p). Parameter Type: Integer Range of Acceptable Values: 0+ Default Value: 4 User Notes:
This is only performed for %which='SM', 'SR', or 'SI'. It only needs to be performed once, so use as high of a fill level as you can get away with for improved efficiency.
eigval% s
Description: Linear solver parameters.Note that %s%matvec is used for all values of %which but all other linear solver parameters are only used for %which='SM', 'SR', or 'SI'. Parameter Type:LinSolvOpt Default Values:
eigval%s%solver = 'gcrot' !-- Note: Variable is unused
eigval%s%matvec = 'jacbn' !-- Note: Can be 'jacbn', 'frcht', 'apprx', 'cmplx', 'hysa1', or 'hysa2'. This parameter is used for all %which.
eigval%s%prec = 'schur'
eigval%s%krylv_size = 40
eigval%s%krylv_max = 12345
eigval%s%gcrot_k = 1
eigval%s%sol_init = .false. !-- Note: Variable is unused
eigval%s%rel_lin_tol = 1.d-10 !-- Note: This should be set at least as small as %tol.
eigval% print_lev
Description: How much info to print to screen. Parameter Type: Integer Range of Acceptable Values: [0,3] Default Value: 0 User Notes:
The higher print levels output a bunch of info from the ARPACK routines. Note that this info is output directly from ARPACK and is not generally in very readable format.
0) Just print the converged eigenvalues at the end, as well as the residual ||AV-lambda*V||/|lambda|
1) Also, print some extra info about the number of iterations so far, as well as timing and other statistics at the end (though timing info is currently not displayed properly)
2) Also, print the Ritz values (eigenvalue estimates) after each iteration and the residual norm to help track convergence.
3) Also, print additional info about the Arnoldi vectors being generated at each iteration.
Table of Contents
These parameters are used with opt_method='get_eigvals'. They are used with the eigenvalue solver. If opt_method='get_eigvals', then the codes will expect that the namelist 'eigv' will be included in the input file. These parameters are contained in that namelist.
eigval% nev
Description: Number of eigenvaluesParameter Type: Integer
Range of Acceptable Values: 3+
Default Value: 10
User Notes:
The User guide says that convergence can be affected by the number of eigenvalues requested depending on the eigenvalue clustering and number of complex conjugate pairs. If convergence problems are encountered, you can try increasing this number by 1 or 2.
eigval% ncv
Description: Size of the Lancoz/Arnoldi subspaceParameter Type: Integer
Range of Acceptable Values: Must be >= nev+2
Default Value: 22
User Notes:
The User guide suggests at least 2*nev+1 and a comment in the actual codes suggests 2*nev+2, hence the default value.
eigval% maxitr
Description: Maximum number of iterations. This is not the same as the number of calls to the ARPACK routine dnaupd because dnaupd uses reverse communication to get matvecs and may exit several times per iteration.Parameter Type: Integer
Default Value: 300
eigval% mode
Description: 1 for regular mode, 3 for shift-invert modeParameter Type: Integer
Range of Acceptable Values: 1 or 3
Default Value: 3
User Notes:
If %which='LM', 'LR', or 'LI', then %mode will automatically be set to 1 in the codes. If using %which='SM', 'SR', or 'SI', then 1 or 3 are acceptable input parameters. %mode=1 is much faster but will probably not converge.
eigval% ishfts
Description: A flag to toggle implicit shiftingParameter Type: Integer
Range of Acceptable Values: 1
Default Value: 1
User Notes:
Don't change this. Implicit shifting is currently not available.
eigval% which
Description: Which eigenvalues to calculate.Parameter Type: Character
Range of Acceptable Values: 'LM', 'SM', 'LR', 'SR', 'LI', 'SI'
Default Value: 'LM'
User Notes:
Largest magnitude, smallest magnitude, largest real part, smallest real part, largest imaginary part, smallest imaginary part.
eigval% tol
Description: Relative tolerance ||Av - lambda*V||/|lambda| to converge to.Parameter Type: Real
Range of Acceptable Values: [0,1]
Default Value: 1.d-10
User Notes:
Set to 0.d0 to solve to machine precision. You can easily solve the 'LM' case to machine precision. The default value is nonzero however since for the small eigenvalue cases we need to match this tolerance to the linear solver tolerance. Note that we should expect this tolerance to be approximately the relative error in our eigenvalues, that is tol = |lambda_c - lambda|/|lambda|, approximately.
eigval% ilu_flev
Description: Fill level of ILU(p).Parameter Type: Integer
Range of Acceptable Values: 0+
Default Value: 4
User Notes:
This is only performed for %which='SM', 'SR', or 'SI'. It only needs to be performed once, so use as high of a fill level as you can get away with for improved efficiency.
eigval% s
Description: Linear solver parameters.Note that %s%matvec is used for all values of %which but all other linear solver parameters are only used for %which='SM', 'SR', or 'SI'.Parameter Type: LinSolvOpt
Default Values:
eigval%s%solver = 'gcrot' !-- Note: Variable is unused
eigval%s%matvec = 'jacbn' !-- Note: Can be 'jacbn', 'frcht', 'apprx', 'cmplx', 'hysa1', or 'hysa2'. This parameter is used for all %which.
eigval%s%prec = 'schur'
eigval%s%krylv_size = 40
eigval%s%krylv_max = 12345
eigval%s%gcrot_k = 1
eigval%s%sol_init = .false. !-- Note: Variable is unused
eigval%s%rel_lin_tol = 1.d-10 !-- Note: This should be set at least as small as %tol.
eigval% print_lev
Description: How much info to print to screen.Parameter Type: Integer
Range of Acceptable Values: [0,3]
Default Value: 0
User Notes:
The higher print levels output a bunch of info from the ARPACK routines. Note that this info is output directly from ARPACK and is not generally in very readable format.
0) Just print the converged eigenvalues at the end, as well as the residual ||AV-lambda*V||/|lambda|
1) Also, print some extra info about the number of iterations so far, as well as timing and other statistics at the end (though timing info is currently not displayed properly)
2) Also, print the Ritz values (eigenvalue estimates) after each iteration and the residual norm to help track convergence.
3) Also, print additional info about the Arnoldi vectors being generated at each iteration.