SSEUPD(3)                  MathKeisan ARPACK routine                 SSEUPD(3)



NAME
       SSEUPD - Postprocessing routine for large-scale symmetric eigenvalue
       calculation.


SYNOPSIS
       SUBROUTINE SSEUPD(RVEC, HOWMNY, SELECT, D, Z, LDZ, SIGMA, BMAT, N,
                         WHICH, NEV, TOL, RESID, NCV, V, LDV, IPARAM, IPNTR,
                         WORKD, WORKL, LWORKL, INFO )

           LOGICAL          RVEC

           LOGICAL          SELECT(NCV)

           INTEGER          N, NEV, NCV, LDZ, LDV, LWORKL, INFO

           INTEGER          IPARAM(11), IPNTR(11)

           REAL             TOL, SIGMA

           REAL             RESID(N), WORKD(3*N), WORKL(LWORK), D(N), Z(N, NEV),
                            V(N, NCV)

           CHARACTER        BMAT*1, WHICH*2, HOWMNY*1


PURPOSE
       SSEUPD returns the converged approximations to eigenvalues
       of A*z = lambda*B*z and (optionally):

           (1) the corresponding approximate eigenvectors,

           (2) an orthonormal (Lanczos) basis for the associated approximate
               invariant subspace,

           (3) Both.

       There is negligible additional cost to obtain eigenvectors.  An orthonormal
       (Lanczos) basis is always computed.  There is an additional storage cost
       of n*nev if both are requested (in this case a separate array Z must be
       supplied).

       These quantities are obtained from the Lanczos factorization computed
       by SSAUPD for the linear operator OP prescribed by the MODE selection
       (see IPARAM(7) in SSAUPD documentation.)  SSAUPD must be called before
       this routine is called. These approximate eigenvalues and vectors are
       commonly called Ritz values and Ritz vectors respectively.  They are
       referred to as such in the comments that follow.   The computed orthonormal
       basis for the invariant subspace corresponding to these Ritz values is
       referred to as a Lanczos basis.

       See documentation in the header of the subroutine SSAUPD for a definition
       of OP as well as other terms and the relation of computed Ritz values
       and vectors of OP with respect to the given problem  A*z = lambda*B*z.

       The approximate eigenvalues of the original problem are returned in
       ascending algebraic order.  The user may elect to call this routine
       once for each desired Ritz vector and store it peripherally if desired.
       There is also the option of computing a selected set of these vectors
       with a single call.

ARGUMENTS
       RVEC    LOGICAL  (INPUT)
               Specifies whether Ritz vectors corresponding to the Ritz value
               approximations to the eigenproblem A*z = lambda*B*z are computed.

                  RVEC = .FALSE.     Compute Ritz values only.

                  RVEC = .TRUE.      Compute Ritz vectors.

       HOWMNY  Character*1  (INPUT)
               Specifies how many Ritz vectors are wanted and the form of Z
               the matrix of Ritz vectors. See remark 1 below.
               = 'A': compute NEV Ritz vectors;
               = 'S': compute some of the Ritz vectors, specified
                      by the logical array SELECT.

       SELECT  Logical array of dimension NCV.  (INPUT/WORKSPACE)
               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..
               If HOWMNY = 'A' , SELECT is used as a workspace for
               reordering the Ritz values.

       D       Double precision array of dimension NEV.  (OUTPUT)
               On exit, D contains the Ritz value approximations to the
               eigenvalues of A*z = lambda*B*z. The values are returned
               in ascending order. If IPARAM(7) = 3,4,5 then D represents
               the Ritz values of OP computed by SSAUPD transformed to
               those of the original eigensystem A*z = lambda*B*z. If
               IPARAM(7) = 1,2 then the Ritz values of OP are the same
               as the those of A*z = lambda*B*z.

       Z       Double precision N by NEV array if HOWMNY = 'A'.  (OUTPUT)
               On exit, Z contains the B-orthonormal Ritz vectors of the
               eigensystem A*z = lambda*B*z corresponding to the Ritz
               value approximations.
               If  RVEC = .FALSE. then Z is not referenced.
               NOTE: The array Z may be set equal to first NEV columns of the
               Arnoldi/Lanczos basis array V computed by SSAUPD.

       LDZ     Integer.  (INPUT)
               The leading dimension of the array Z.  If Ritz vectors are
               desired, then  LDZ .ge.  max( 1, N ).  In any case,  LDZ .ge. 1.

       SIGMA   Double precision  (INPUT)
               If IPARAM(7) = 3,4,5 represents the shift. Not referenced if
               IPARAM(7) = 1 or 2.


       **** The remaining arguments MUST be the same as for the   ****
       **** call to DNAUPD that was just completed.               ****

       NOTE: The remaining arguments
                BMAT, N, WHICH, NEV, TOL, RESID, NCV, V, LDV, IPARAM, IPNTR,
                WORKD, WORKL, LWORKL, INFO

              must be passed directly to SSEUPD following the last call
              to SSAUPD.  These arguments MUST NOT BE MODIFIED between
              the the last call to SSAUPD and the call to SSEUPD.

       Two of these parameters (WORKL, INFO) are also output parameters:

       WORKL   Double precision work array of length LWORKL.  (OUTPUT/WORKSPACE)
               WORKL(1:4*ncv) contains information obtained in
               SSAUPD.  They are not changed by SSEUPD.
               WORKL(4*ncv+1:ncv*ncv+8*ncv) holds the
               untransformed Ritz values, the computed error estimates,
               and the associated eigenvector matrix of H.

               Note: IPNTR(8:10) contains the pointer into WORKL for addresses
               of the above information computed by SSEUPD.
               -------------------------------------------------------------
               IPNTR(8): pointer to the NCV RITZ values of the original system.
               IPNTR(9): pointer to the NCV corresponding error bounds.
               IPNTR(10): pointer to the NCV by NCV matrix of eigenvectors
                          of the tridiagonal matrix T. Only referenced by
                          SSEUPD if RVEC = .TRUE. See Remarks.
               -------------------------------------------------------------

       INFO    Integer.  (OUTPUT)
               Error flag on output.
               =  0: Normal exit.
               = -1: N must be positive.
               = -2: NEV must be positive.
               = -3: NCV must be greater than NEV and less than or equal to N.
               = -5: WHICH must be one of 'LM', 'SM', 'LA', 'SA' or 'BE'.
               = -6: BMAT must be one of 'I' or 'G'.
               = -7: Length of private work WORKL array is not sufficient.
               = -8: Error return from trid. eigenvalue calculation;
                     Information error from LAPACK routine dsteqr.
               = -9: Starting vector is zero.
               = -10: IPARAM(7) must be 1,2,3,4,5.
               = -11: IPARAM(7) = 1 and BMAT = 'G' are incompatible.
               = -12: NEV and WHICH = 'BE' are incompatible.
               = -14: SSAUPD did not find any eigenvalues to sufficient
                      accuracy.
               = -15: HOWMNY must be one of 'A' or 'S' if RVEC = .true.
               = -16: HOWMNY = 'S' not yet implemented



MathKeisan                                                           SSEUPD(3)