next up previous contents index
Next: Post-Processing for Eigenvectors Using Up: General Use of ARPACK Previous: Post-Processing for Eigenvectors Using

Computational Modes for Complex Problems

This section describes the solution of eigenvalue problems in complex arithmetic. The reverse communication interface subroutine for the double precision complex eigenvalue problem is znaupd . This routine is to be used for both Hermitian and non-Hermitian problems. The routine is called as shown in Figure 3.8. It should be noted that the calling sequences for znaupd and zneupd differ slightly from those of dnaupd and dneupd. The main difference is that an additional work array rwork is required by znaupd that is not required by dnaupd.

Occasionally, when using znaupd on a complex Hermitian problem, eigenvalues will be returned with small but non-zero imaginary part due to unavoidable round-off errors. These should be ignored unless they are significant with respect to the eigenvalues of largest magnitude that have been computed. There is little computational penalty for using the non-Hermitian routines in this case. The only additional cost is to compute eigenvalues of a Hessenberg rather than a tridiagonal matrix. For the problem configurations this software is designed to solve, the size of these matrices are small enough that the differences in computational cost are negligible compared to the major ${\cal O}(n)$ work that is required.


  
Figure 3.8: Calling the ARPACK subroutine znaupd.
       
  call znaupd ( ido, bmat, n, which, nev, tol, resid, ncv, v,
 &        ldv, iparam, ipntr, workd, workl, lworkl, rwork,info )


The integer ido is the reverse communication flag that specifies a requested action on return from dnaupd. The character*1 parameter bmat specifies if this is a standard bmat = 'I' or a generalized bmat = 'G' problem. The integer n specifies the dimension of the problem. The character*2 parameter which may take the same possible values listed for subroutine dnaupd in Table 3.4.

There are three shift-invert modes for complex problems. These modes are specified by setting the parameter entry iparam(7) = mode where mode = 1,2, or 3.

In the following list, the specification of OP and are given for the various modes. Also, the iparam(7) and bmat settings are listed along with the name of the sample driver for the given mode. Sample drivers for the following modes may be found in the EXAMPLES/COMPLEX subdirectory.  

1.
Regular mode (iparam(7) = 1, bmat = 'I' ). Use driver zndrv1.
(a)
Solve in regular mode.
(b)
and

2.
Shift-invert mode (iparam(7) = 3, bmat = 'I'). Use driver zndrv2.
(a)
Solve in shift-invert mode.
(b)
and

3.
Regular inverse mode (iparam(7) = 2, bmat = 'G'). Use driver zndrv3.
(a)
Solve ${\bf A}{\bf x}={\bf M}{\bf x}\lambda$ in regular inverse mode.
(b)
and

4.
Shift-invert mode (iparam(7) = 3, bmat = 'G'). Use driver zndrv4.
(a)
Solve ${\bf A}{\bf x}={\bf M}{\bf x}\lambda$ in shift-invert mode.
(b)
and

next up previous contents index
Next: Post-Processing for Eigenvectors Using Up: General Use of ARPACK Previous: Post-Processing for Eigenvectors Using
Chao Yang
11/7/1997