451 & ( comm, ido, bmat, n, which, nev, tol, resid, ncv, v, ldv,
452 & iparam, ipntr, workd, workl, lworkl, info, verbose )
473 character bmat*1, which*2
474 integer ido, info, ldv, lworkl, n, ncv, nev
483 integer iparam(11), ipntr(11)
485 & resid(n), v(ldv,ncv), workd(3*n), workl(lworkl)
493 parameter(one = 1.0 , zero = 0.0 )
499 integer bounds, ierr, ih, iq, ishift, iupd, iw,
500 & ldh, ldq, msglvl, mxiter, mode, nb,
501 & nev0, next, np, ritz, j, usrchk, unconv
502 save bounds, ierr, ih, iq, ishift, iupd, iw,
503 & ldh, ldq, msglvl, mxiter, mode, nb,
504 & nev0, next, np, ritz, usrchk, unconv
510 external mypdsaup2 , pdvout , pivout, second, dstats
556 else if (nev .le. 0)
then
558 else if (ncv .le. nev)
then
569 if (mxiter .le. 0) ierr = -4
570 if (which .ne.
'LM' .and.
571 & which .ne.
'SM' .and.
572 & which .ne.
'LA' .and.
573 & which .ne.
'SA' .and.
574 & which .ne.
'BE') ierr = -5
575 if (bmat .ne.
'I' .and. bmat .ne.
'G') ierr = -6
577 if (lworkl .lt. ncv**2 + 8*ncv) ierr = -7
578 if (mode .lt. 1 .or. mode .gt. 5)
then
580 else if (mode .eq. 1 .and. bmat .eq.
'G')
then
582 else if (ishift .lt. 0 .or. ishift .gt. 1)
then
584 else if (nev .eq. 1 .and. which .eq.
'BE')
then
592 if (ierr .ne. 0)
then
602 if (nb .le. 0) nb = 1
603 if (tol .le. zero .and. usrchk .eq. 0)
604 & tol = pdlamch(comm,
'EpsMach')
620 do 10 j = 1, ncv**2 + 8*ncv
660 if (unconv .lt. 0 .or. unconv .gt. ncv )
then
673 & ( comm, ido, bmat, n, which, nev0, np, tol, resid, mode, iupd,
674 & ishift, mxiter, v, ldv, workl(ih), ldh, workl(ritz),
675 & workl(bounds), workl(iq), ldq, workl(iw), ipntr, workd,
676 & info, verbose, usrchk, unconv )
683 if (ido .eq. 3) iparam(8) = np
684 if (ido .ne. 99) go to 9000
697 if (info .lt. 0) go to 9000
698 if (info .eq. 2) info = 3
700 if (msglvl .gt. 0)
then
701 call pivout(comm, logfil, 1, mxiter, ndigit,
702 &
'_saupd: number of update iterations taken')
703 call pivout(comm, logfil, 1, np, ndigit,
704 &
'_saupd: number of "converged" Ritz values')
705 call pdvout(comm, logfil, np, workl(ritz), ndigit,
706 &
'_saupd: final Ritz values')
707 call pdvout(comm, logfil, np, workl(bounds), ndigit,
708 &
'_saupd: corresponding error bounds')
714 if (msglvl .gt. 0)
then
715 call mpi_comm_rank( comm, myid, ierr )
716 if ( myid .eq. 0 )
then
723 write (6,1100) mxiter, nopx, nbx, nrorth, nitref, nrstrt,
724 & tmvopx, tmvbx, tsaupd, tsaup2, tsaitr, titref,
725 & tgetv0, tseigt, tsgets, tsapps, tsconv
727 & 5x,
'==========================================',/
728 & 5x,
'= Symmetric implicit Arnoldi update code =',/
729 & 5x,
'= Version Number:',
' 2.1' , 19x,
' =',/
730 & 5x,
'= Version Date: ',
' 3/19/97' , 14x,
' =',/
731 & 5x,
'==========================================',/
732 & 5x,
'= Summary of timing statistics =',/
733 & 5x,
'==========================================',//)
735 & 5x,
'Total number update iterations = ', i5,/
736 & 5x,
'Total number of OP*x operations = ', i5,/
737 & 5x,
'Total number of B*x operations = ', i5,/
738 & 5x,
'Total number of reorthogonalization steps = ', i5,/
739 & 5x,
'Total number of iterative refinement steps = ', i5,/
740 & 5x,
'Total number of restart steps = ', i5,/
741 & 5x,
'Total time in user OP*x operation = ', f12.6,/
742 & 5x,
'Total time in user B*x operation = ', f12.6,/
743 & 5x,
'Total time in Arnoldi update routine = ', f12.6,/
744 & 5x,
'Total time in p_saup2 routine = ', f12.6,/
745 & 5x,
'Total time in basic Arnoldi iteration loop = ', f12.6,/
746 & 5x,
'Total time in reorthogonalization phase = ', f12.6,/
747 & 5x,
'Total time in (re)start vector generation = ', f12.6,/
748 & 5x,
'Total time in trid eigenvalue subproblem = ', f12.6,/
749 & 5x,
'Total time in getting the shifts = ', f12.6,/
750 & 5x,
'Total time in applying the shifts = ', f12.6,/
751 & 5x,
'Total time in convergence testing = ', f12.6)