Using ARPACK for Ordinary and Generalized Eigenvalue Problems
ARPACK consists of a set of Fortran 77 subroutines which use the Arnoldi method (Sorensen, 1992) to solve eigenvalue problems. ARPACK is well suited for large structured eigenvalue problems where structured means that a matrix-vector product w← Av requires O(n) rather than the usual O(n2) floating point operations.
The suite of features that we have implemented from ARPACK are described in the work of Lehoucq, Sorensen and Yang, ARPACK Users’ Guide, SIAM Publications, (1998). Users will find access to this Guide helpful. Due to the size of the package, we provide for the use of double precision real and complex arithmetic only.
The ARPACK computational algorithm computes a partial set of approximate eigenvalues or singular values for various classes of problems. This includes the ordinary problem, Ax = λx, the generalized problem, Ax = λBx, and the singular value decomposition, A = USVT.
The original API for ARPACK is a Reverse Communication Interface. This interface can be used as illustrated in the Guide. However, we provide a Fortran 2003 interface to ARPACK that will be preferred by some users. This is a forward communication interface based on user-written functions for matrix-vector products or linear equation solving steps required by the algorithms in ARPACK. It is not necessary that the linear operators be expressed as dense or sparse matrices. That is permitted, but for some problems the best approach is the ability to form a product of the operator with a vector.
The forward communication interface includes an argument of a user-extended derived type or class object. The intent of producing this argument is that an extended type provides access to threaded user data or other required information, including procedure pointers, for use in the user-written product functions. It also hides information that can often be ignored with a first use.