Eigval

Click here to return to main Jetstream Input Parameters page.toc

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 = //**Range of Acceptable Values:**// 3+ 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.
 * //Description://** Number of eigenvalues
 * //Parameter Type://** Integer
 * //Default Value://** 10
 * //User Notes://**

= eigval% ncv = //**Range of Acceptable Values:**// Must be >= nev+2 The User guide suggests at least 2*nev+1 and a comment in the actual codes suggests 2*nev+2, hence the default value.
 * //Description://** Size of the Lancoz/Arnoldi subspace
 * //Parameter Type://** Integer
 * //Default Value://** 22
 * //User Notes://**

= 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 = //**Range of Acceptable Values:**// 1 or 3 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.
 * //Description://** 1 for regular mode, 3 for shift-invert mode
 * //Parameter Type://** Integer
 * //Default Value://** 3
 * //User Notes://**

= eigval% ishfts = //**Range of Acceptable Values:**// 1 Don't change this. Implicit shifting is currently not available.
 * //Description://** A flag to toggle implicit shifting
 * //Parameter Type://** Integer
 * //Default Value://** 1
 * //User Notes://**

= eigval% which = //**Range of Acceptable Values:**// 'LM', 'SM', 'LR', 'SR', 'LI', 'SI' Largest magnitude, smallest magnitude, largest real part, smallest real part, largest imaginary part, smallest imaginary part.
 * //Description://** Which eigenvalues to calculate.
 * //Parameter Type://** Character
 * //Default Value://** 'LM'
 * //User Notes://**

= eigval% tol = //**Range of Acceptable Values:**// [0,1] 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.
 * //Description://** Relative tolerance ||Av - lambda*V||/|lambda| to converge to.
 * //Parameter Type://** Real
 * //Default Value://** 1.d-10
 * //User Notes://**

= eigval% ilu_flev = //**Range of Acceptable Values:**// 0+ 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.
 * //Description://** Fill level of ILU(p).
 * //Parameter Type://** Integer
 * //Default Value://** 4
 * //User Notes://**

= eigval% s = 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.
 * //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% print_lev = //**Range of Acceptable Values:**// [0,3] 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.
 * //Description://** How much info to print to screen.
 * //Parameter Type://** Integer
 * //Default Value://** 0
 * //User Notes://**