The Base Class ARPACKBASE

The components of the derived type ARPACKBASE contain data used by the ARPACK routines. These will have initial or default values assigned. The default values can usually be left unchanged with a first use of our codes. They are used as arguments to the original routines of the ARPACK package. The more experienced user may wish to change the components marked with '=>' to new values, depending on their application. These can be changed prior to calling the ARPACK interface codes we provide. This base class can be extended to pass user data or procedure pointers for use within the array function.

Note that the derived type argument EXTYPE, is optional in all the ARPACK_ eigenvalue routines, but it is not optional for the user-written array functions. If EXTYPE is not included in the argument list of the ARPACK_ eigenvalue routine, an internally declared type is passed to the array functions as the argument, EXTYPE. Although the user may choose not to use this optional argument when calling our interface routines, they must include this argument in their user-supplied array function code. In this case, the array function code does not need to reference this argument.

TYPE, PUBLIC :: ARPACKBASE

INTEGER :: TASK = 0 ! Local store in Class for compute

! tasks to follow. Used in ARPACK_SVD.

INTEGER :: MROWS=0 ! Defines output vector size

INTEGER :: NCOLS=0 ! Defines input/output vector size

=> COMPLEX(DKIND) :: SHIFT=&

(0._DKIND, 0._DKIND) ! Shift factor

REAL(DKIND) :: TOL=EPSILON(0._DKIND) ! Error tolerance

INTEGER :: ISHFTS = 1 ! Number of shifts - don't change

=> INTEGER :: MAXITR = HUGE(1) ! Max number of iterations (many!)

=> INTEGER :: MAXMV = HUGE(1) ! Max number of matrix ops (many!)

=> INTEGER :: INFO = 0 ! ARPACK error flag, = 0 is OK

=> INTEGER :: NACC = 0 ! Number of accurate eigenvalues or

! singular values computed.

INTEGER :: IPARAM(11)=0 ! ARPACK array of direction and

! result flags

=> REAL(DKIND) :: FACTOR_MAXNCV = 2.5_DKIND ! Factor for the Number of Ritz

! vectors > the number of requested

! eigenvalues

LOGICAL :: RALEIGH_QUOTIENT = .TRUE. ! Compute eigenvalues using the

! computed eigenvectors and Raleigh

! quotients.

REAL(DKIND), ALLOCATABLE :: RESID(:) ! REAL Starting vector for Arnoldi

! iteration, if allocated; else

! random

COMPLEX(DKIND), ALLOCATABLE :: ZRESID(:) ! COMPLEX Starting vector for Arnoldi

! iteration, if allocated; else

! random

END TYPE