259 DOUBLE PRECISION err, tol
260 INTEGER ierr, isym, iter, itmax, itol, iunit, n, nelt
262 DOUBLE PRECISION a(nelt), b(n), dz(n), r(n), rwork(*), x(n), z(n)
263 INTEGER ia(nelt), iwork(*), ja(nelt)
267 DOUBLE PRECISION bnrm, solnrm, tolmin
284 IF( tol.LT.tolmin )
THEN 291 CALL matvec(n, x, r, nelt, ia, ja, a, isym)
295 CALL msolve(n, r, z, nelt, ia, ja, a, isym, rwork, iwork)
297 IF(
isdir(n, b, x, nelt, ia, ja, a, isym,
msolve, itol, tol,
298 $ itmax, iter, err, ierr, iunit, r, z, dz, rwork,
299 $ iwork, bnrm, solnrm) .NE. 0 )
GO TO 200
300 IF( ierr.NE.0 )
RETURN 312 CALL matvec(n, x, r, nelt, ia, ja, a, isym)
316 CALL msolve(n, r, z, nelt, ia, ja, a, isym, rwork, iwork)
319 IF(
isdir(n, b, x, nelt, ia, ja, a, isym,
msolve, itol, tol,
320 $ itmax, iter, err, ierr, iunit, r, z, dz, rwork,
321 $ iwork, bnrm, solnrm) .NE. 0 )
GO TO 200
subroutine matvec(n, x, y, nelt, ia, ja, a, isym)
Definition: matvec.f:27
double precision function d1mach(I)
Definition: ddeabm.f:2012
integer function isdir(N, B, X, NELT, IA, JA, A, ISYM, MSOLVE, ITOL, TOL, ITMAX, ITER, ERR, IERR, IUNIT, R, Z, DZ, RWORK, IWORK, BNRM, SOLNRM)
Definition: dir.f:337
subroutine msolve(n, r, z, nelt, ia, ja, a, isym, rwork, iwork)
Definition: msolve.f:22