* F11JRF Example Program Text * Mark 22 Release. NAG Copyright 2008. * .. Parameters .. INTEGER NIN, NOUT PARAMETER (NIN=5,NOUT=6) INTEGER NMAX, LA PARAMETER (NMAX=1000,LA=10000) * .. Local Scalars .. DOUBLE PRECISION OMEGA INTEGER I, IFAIL, N, NNZ CHARACTER CHECK * .. Local Arrays .. COMPLEX *16 A(LA), X(NMAX), Y(NMAX) DOUBLE PRECISION RDIAG(NMAX) INTEGER ICOL(LA), IROW(LA), IWORK(NMAX+1) * .. External Subroutines .. EXTERNAL F11JRF * .. Intrinsic Functions .. INTRINSIC DBLE * .. Executable Statements .. WRITE (NOUT,*) 'F11JRF Example Program Results' * Skip heading in data file READ (NIN,*) * * Read algorithmic parameters * READ (NIN,*) N IF (N.LE.NMAX) THEN READ (NIN,*) NNZ READ (NIN,*) CHECK READ (NIN,*) OMEGA * * Read the matrix A * DO 20 I = 1, NNZ READ (NIN,*) A(I), IROW(I), ICOL(I) 20 CONTINUE * * Read rhs vector y * READ (NIN,*) (Y(I),I=1,N) * * Fill in the diagonal part * DO 40 I = 1, NNZ IF (IROW(I).EQ.ICOL(I)) RDIAG(IROW(I)) = 1.D0/DBLE(A(I)) 40 CONTINUE * * * Solve Mx = b using F11JRF * IFAIL = 1 CALL F11JRF(N,NNZ,A,IROW,ICOL,RDIAG,OMEGA,CHECK,Y,X,IWORK, + IFAIL) * IF (IFAIL.EQ.0) THEN * * Output x * DO 60 I = 1, N WRITE (NOUT,99999) X(I) 60 CONTINUE ELSE WRITE (NOUT,99998) IFAIL END IF END IF * 99999 FORMAT (1X,'(',E16.4,',',E16.4,')') 99998 FORMAT (1X,/1X,' ** F11JRF returned with IFAIL = ',I5) END