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