Chapter 2: Eigensystem Analysis

Eigenvalues and Eigenvectors Computed with ARPACK

First see Using ARPACK for Ordinary and Generalized Eigenvalue Problems in the Usage Notes section of this chapter.  We describe here the Fortran 2003 usage of four basic problem types.  There must be compiler support for the object-oriented features of Fortran 2003 to use these routines.

The generalized eigenvalue problemrequires that some eigenvalues and eigenvectors be computed.  The organization of the user-written function for matrix-vector products depends on the part of the eigenvalue spectrum that is desired.

For an ordinary problem with symmetric and, the eigenvalues of largest or smallest magnitude can be computed by providing the operator products.  Here  is an input vector and  is the result of applying the linear operator  to.  This process is repeated several times within the Arnoldi algorithm, and the net result is a few eigenvalues of  and the corresponding eigenvectors.

For a generalized problem, it is useful and efficient to consider a shift value and the ordinary eigenvalue problem.  The matrix pencil is non-singular.  The purpose of the user-written function is to provide results for the individual operator products , , and.  Usually the inverse matrix product will be computed by solving linear systems, where the matrix pencil is the coefficient matrix.  The desired eigenvalues of this ordinary problem satisfy.

In the special case thatis positive definite, well-conditioned, and symmetric, one may compute the Cholesky decomposition and then solve the ordinary eigenvalue problem .  The product operation required by the Arnoldi algorithm,, is performed in steps:  Solve  for , compute , and solve for.  The eigenvectors, , ofare transformed to those of the generalized problem, , by solvingfor.

The operations required by ARPACK codes are returned as array functions.  An array of input values, x, will yield an output array, y.  These functions are written by the user.  They must be written according to an abstract interface, given below.  There are two user functions, double precision real and complex, that we support for the eigenvalue problem, and a third for the singular value decomposition, using  double precision real data only.  This interface, the named or enumerated constants that describe what is needed, and the eigenvalue codes are in the module ARPACK_INT.  We use the notation: DKIND=kind(1.D0) to specify two double precision data types: REAL(DKIND) and COMPLEX(DKIND).  The interface SVDMV(...) is for the singular value decomposition products only.  For that problem the components EXTYPE%MROWS and EXTYPE%NCOLS are switched between the operator sizes andto account for computing  or.

The Abstract Interfaces for User-Written Array Functions

 

            Abstract Interface

 

              FUNCTION DMV(X, TASK, EXTYPE)RESULT(Y)

                     IMPORT DKIND,  ARPACKBASE

                     REAL(DKIND), INTENT(INOUT) :: X(:)

                     INTEGER, INTENT(IN) :: TASK

                     CLASS (ARPACKBASE), INTENT(INOUT) :: EXTYPE           

                     REAL(DKIND) Y(SIZE(X))

              END FUNCTION

             

              FUNCTION ZMV (X, TASK, EXTYPE) RESULT(Y)

                     IMPORT DKIND,  ARPACKBASE

                     CLASS (ARPACKBASE), INTENT(INOUT) :: EXTYPE

                     COMPLEX (DKIND), INTENT(INOUT) :: X(:)

                     INTEGER, INTENT(IN) :: TASK

                     COMPLEX (DKIND) Y(SIZE(X))

              END FUNCTION

             

              FUNCTION SVDMV (X, TASK, EXTYPE) RESULT(Y)

                     IMPORT DKIND,  ARPACKBASE

                     CLASS (ARPACKBASE), INTENT(INOUT) :: EXTYPE

                     REAL (DKIND), INTENT(INOUT) :: X(EXTYPE%NCOLS) 

                     INTEGER, INTENT(IN) :: TASK

                     REAL (DKIND) Y(EXTYPE%MROWS)

              END FUNCTION

          

       End Interface

Figure 1 Abstract Interface for User-Written Array Functions

 



http://www.vni.com/
PHONE: 713.784.3131
FAX:713.781.9260