935       DOUBLE PRECISION bnrm, err, rhol, tol
   936       INTEGER iflag, isym, itol, iunit, jpre, jscal, kmp, lgmr, maxl,
   937      +        maxlp1, n, nelt, nmsl, nrmax, nrsts
   939       DOUBLE PRECISION a(nelt), b(*), dl(*), hes(maxlp1,*), q(*), r0(*),
   940      +                 rpar(*), sr(*), sz(*), v(n,*), wk(*), x(*),
   942       INTEGER ia(nelt), ipar(*), ja(nelt)
   946       DOUBLE PRECISION c, dlnrm, prod, r0nrm, rho, s, snormw, tem
   947       INTEGER i, i2, info, ip1, iter, itmax, j, k, ll, llp1
   949       DOUBLE PRECISION dnrm2   968       itmax =(nrmax+1)*maxl
   974       IF ((jpre .LT. 0) .AND.(nrsts .EQ. 0)) 
THEN   975          CALL dcopy(n, r0, 1, wk, 1)
   976          CALL msolve(n, wk, r0, nelt, ia, ja, a, isym, rpar, ipar)
   979       IF (((jscal.EQ.2) .OR.(jscal.EQ.3)) .AND.(nrsts.EQ.0)) 
THEN   988       r0nrm = 
dnrm2(n, v, 1)
   993       IF (
isdgmr(n, b, x, xl, nelt, ia, ja, a, isym, 
msolve,
   994      $    nmsl, itol, tol, itmax, iter, err, iunit, v(1,1), z, wk,
   995      $    rpar, ipar, r0nrm, bnrm, sr, sz, jscal,
   996      $    kmp, lgmr, maxl, maxlp1, v, q, snormw, prod, r0nrm,
   997      $    hes, jpre) .NE. 0) 
RETURN   999       CALL dscal(n, tem, v(1,1), 1)
  1024         IF ((jscal .EQ. 1) .OR.(jscal .EQ. 3)) 
THEN  1026               wk(i) = v(i,ll)/sz(i)
  1029            CALL dcopy(n, v(1,ll), 1, wk, 1)
  1031         IF (jpre .GT. 0) 
THEN  1032            CALL msolve(n, wk, z, nelt, ia, ja, a, isym, rpar, ipar)
  1034            CALL matvec(n, z, v(1,ll+1), nelt, ia, ja, a, isym)
  1036            CALL matvec(n, wk, v(1,ll+1), nelt, ia, ja, a, isym)
  1038         IF (jpre .LT. 0) 
THEN  1039            CALL dcopy(n, v(1,ll+1), 1, wk, 1)
  1040            CALL msolve(n,wk,v(1,ll+1),nelt,ia,ja,a,isym,rpar,ipar)
  1043         IF ((jscal .EQ. 2) .OR.(jscal .EQ. 3)) 
THEN  1045               v(i,ll+1) = v(i,ll+1)*sr(i)
  1048         CALL dorth(v(1,ll+1), v, hes, n, ll, maxlp1, kmp, snormw)
  1049         hes(ll+1,ll) = snormw
  1050         CALL dheqr(hes, maxlp1, ll, q, info, ll)
  1051         IF (info .EQ. ll) 
GO TO 120
  1059         rho = abs(prod*r0nrm)
  1060         IF ((ll.GT.kmp) .AND.(kmp.LT.maxl)) 
THEN  1061            IF (ll .EQ. kmp+1) 
THEN  1062               CALL dcopy(n, v(1,1), 1, dl, 1)
  1069                     dl(k) = s*dl(k) + c*v(k,ip1)
  1074            c = q(2*ll-1)/snormw
  1077               dl(k) = s*dl(k) + c*v(k,llp1)
  1079            dlnrm = 
dnrm2(n, dl, 1)
  1087         iter = nrsts*maxl + lgmr
  1088         IF (
isdgmr(n, b, x, xl, nelt, ia, ja, a, isym, 
msolve,
  1089      $      nmsl, itol, tol, itmax, iter, err, iunit, dl, z, wk,
  1090      $      rpar, ipar, rhol, bnrm, sr, sz, jscal,
  1091      $      kmp, lgmr, maxl, maxlp1, v, q, snormw, prod, r0nrm,
  1092      $      hes, jpre) .NE. 0) 
GO TO 200
  1093         IF (ll .EQ. maxl) 
GO TO 100
  1098         CALL dscal(n, tem, v(1,ll+1), 1)
  1101       IF (rho .LT. r0nrm) 
GO TO 150
  1115       IF (nrmax .GT. 0) 
THEN  1123          CALL drlcal(n, kmp, maxl, maxl, v, q, dl, snormw, prod,
  1138       CALL dhels(hes, maxlp1, ll, q, r0)
  1143          CALL daxpy(n, r0(i), v(1,i), 1, z, 1)
  1145       IF ((jscal .EQ. 1) .OR.(jscal .EQ. 3)) 
THEN  1150       IF (jpre .GT. 0) 
THEN  1151          CALL dcopy(n, z, 1, wk, 1)
  1152          CALL msolve(n, wk, z, nelt, ia, ja, a, isym, rpar, ipar)
 subroutine dcopy(N, DX, INCX, DY, INCY)
Definition: dgmres.f:1381
 
subroutine matvec(n, x, y, nelt, ia, ja, a, isym)
Definition: matvec.f:27
 
subroutine dorth(VNEW, V, HES, N, LL, LDHES, KMP, SNORMW)
Definition: dgmres.f:2159
 
double precision function dnrm2(N, DX, INCX)
Definition: dgmres.f:559
 
subroutine daxpy(N, DA, DX, INCX, DY, INCY)
Definition: dgmres.f:1276
 
subroutine dscal(n, da, dx, incx)
Definition: dgesv.f:1746
 
integer function isdgmr(N, B, X, XL, NELT, IA, JA, A, ISYM, MSOLVE, NMSL, ITOL, TOL, ITMAX, ITER, ERR, IUNIT, R, Z, DZ, RWORK, IWORK, RNRM, BNRM, SB, SX, JSCAL, KMP, LGMR, MAXL, MAXLP1, V, Q, SNORMW, PROD, R0NRM, HES, JPRE)
Definition: dgmres.f:1760
 
subroutine dheqr(A, LDA, N, Q, INFO, IJOB)
Definition: dgmres.f:1579
 
subroutine dhels(A, LDA, N, Q, B)
Definition: dgmres.f:1481
 
subroutine msolve(n, r, z, nelt, ia, ja, a, isym, rwork, iwork)
Definition: msolve.f:22
 
subroutine drlcal(N, KMP, LL, MAXL, V, Q, RL, SNORMW, PROD, R0NRM)
Definition: dgmres.f:1161