XLPack 7.0
XLPack Numerical Library (C API) Reference Manual
Loading...
Searching...
No Matches

◆ zneupd()

void zneupd ( int  rvec,
char  howmny,
int  select[],
doublecomplex  d[],
int  ldz,
doublecomplex  z[],
doublecomplex  sigma,
doublecomplex  workev[],
char  bmat,
int  n,
const char *  which,
int  nev,
double  tol,
doublecomplex  resid[],
int  ncv,
int  ldv,
doublecomplex  v[],
int  iparam[],
int  ipntr[],
doublecomplex  workd[],
doublecomplex  workl[],
int  lworkl,
double  rwork[],
int *  info 
)

Approximate eigenvalues and eigenvectors from Arnoldi factorization for a complex sparse matrix

Purpose
This routine computes the approximations to the eigenvalues of eigenproblem A*z = λ*B*z and (optionally) the corresponding approximate eigenvectors.

These values are computed from the Arnoldi factorization returned by znaupd for a complex linear operator OP with respect to a matrix B (see Purpose paragraph of znaupd manual for more details). znaupd must be called before calling this routine.

The approximate eigenvalues are returned in ascending algebraic order.

The arguments bmat, n, which, nev, tol, resid, ncv, v, ldv, iparam, ipntr, workd, workl, lworkl and rwork must be passed to this routine following the last call to znaupd without change. Three of these parameters, v, ipntr and workl, are changed by this routine.
Parameters
[in]rvecSpecifies whether a basis for the invariant subspace corresponding to the converged Ritz value approximations for the eigenproblem A*z = lambda*B*z is computed.
= false (0): Compute Ritz values only.
= true (1): Compute Ritz vectors or Schur vectors.
[in]howmnySpecifies the form of the basis for the invariant subspace corresponding to the converged Ritz values that is to be computed.
= 'A': Compute nev Ritz vectors.
= 'P': Compute nev Schur vectors.
= 'S': Compute some of the Ritz vectors, specified by the logical array select[].
[out]select[]Array select[lselect] (lselect >= ncv)
If howmny = 'S', select[] specifies the Ritz vectors to be computed. To select the Ritz vector corresponding to a Ritz value d[j], select[j] must be set to true (1). If howmny = 'A' or 'P', select[] is used as internal workspace.
[out]d[]Array d[ld] (ld >= nev)
Contains the Ritz value approximations to the eigenvalues of A*z = λ*B*z.
[in]ldzThe leading dimension of the array z. (ldz >= n if Ritz vectors are desired, ldz >= 1 otherwise)
[out]z[][]Array z[lz][ldz] (lz >= nev)
If rvec = true (1) and howmny = 'A', then the columns of z[][] represent approximate eigenvectors (Ritz vectors) corresponding to the nconv (iparam[4]) Ritz values for eigensystem A*z = λ*B*z.

If rvec = false (0) or howmny = 'P' then z[][] is not referenced.
[in]sigmaIf mode = 3, sigma represents the shift. Not referenced if mode = 1 or 2.
[out]workev[]Array workev[lworkev] (lworkev >= 2*ncv)
Workspace.
[in]bmatSame as for znaupd. Must be passed without modification following the last call to znaupd.
[in]nSame as for znaupd. Must be passed without modification following the last call to znaupd.
[in]whichSame as for znaupd. Must be passed without modification following the last call to znaupd.
[in]nevSame as for znaupd. Must be passed without modification following the last call to znaupd.
[in]tolSame as for znaupd. Must be passed without modification following the last call to znaupd.
[in]resid[]Array resid[lresid] (lresid >= n)
Same as for znaupd. Must be passed without modification following the last call to znaupd.
[in]ncvSame as for znaupd. Must be passed without modification following the last call to znaupd.
[in]ldvSame as for znaupd. Must be passed without modification following the last call to znaupd.
[in,out]v[][]Array v[lv][ldv] (lv >= ncv)
[in] Same as for znaupd. Must be passed without modification following the last call to znaupd.
[out] If rvec = true (1), the first nconv columns contain approximate Schur vectors that span the desired invariant subspace.
[in]iparam[]Array iparam[liparam] (liparam >= 11)
Same as for znaupd. Must be passed without modification following the last call to znaupd.
[in,out]ipntr[]Array ipntr[lipntr] (lipntr >= 14)
[in] Same as for znaupd. Must be passed without modification following the last call to znaupd.
[out] ipntr[8] to ipntr[12] contain the pointer into workl.
ipntr[8]: Pointer to the ncv Ritz values of the original system.
ipntr[9]: Not used.
ipntr[10]: Pointer to the ncv corresponding error estimates.
ipntr[11]: Pointer to the ncv by ncv upper triangular Schur matrix for H.
ipntr[12]: Pointer to the ncv by ncv matrix of eigenvectors of the upper Hessenberg matrix H. Only referenced if rvec = true (1).
[in]workd[]Array workd[lworkd] (lworkd >= 3*n)
Same as for znaupd. Must be passed without modification following the last call to znaupd.
[in,out]workl[]Array workl[lworkl]
[in] Same as for znaupd. Must be passed without modification following the last call to znaupd. workl[0] to workl[ncv^2 + 2*ncv - 1] contains information obtained in znaupd. They are not changed by dneupd.
[out] workl[ncv^2 + 2*ncv] to workl[3*ncv^2 + 4*ncv - 1] holds the untransformed error estimates of the Ritz values, the upper triangular matrix for H, and the associated matrix representation of the invariant subspace for H.
[in]lworklSame as for znaupd. Must be passed without modification following the last call to znaupd.
[out]rwork[]Array rwork[lrwork] (lrwork >= ncv)
Same as for znaupd. Must be passed without modification following the last call to znaupd.
[out]infoReturn code.
= 0: Successful exit.
< 0: The (-info)-th argument is invalid.
= 11: The Schur form computed by LAPACK routine DLAHQR could not be reordered by LAPACK routine DTRSEN.
= 12: znaupd did not find any eigenvalues to sufficient accuracy.
= 13: zneupd got a different count of the number of converged Ritz values than znaupd got.
= 14: Error return from LAPACK eigenvalue calculation.
= 15: Error return from calculation of eigenvectors (LAPACK routine ZTREVC).
Reference
ARPACK-NG (https://github.com/opencollab/arpack-ng)