Rev 969 | Details | Compare with Previous | Last modification | View Log | RSS feed
| Rev | Author | Line No. | Line |
|---|---|---|---|
| 969 | mhscott | 1 | SUBROUTINE RSSI (NN,IA,JA,A,RHS,U,IWKSP,NW,WKSP,IPARM,RPARM,IERR) |
| 2 | C |
||
| 3 | C ITPACK 2C MAIN SUBROUTINE RSSI (REDUCED SYSTEM SEMI-ITERATIVE) |
||
| 4 | C EACH OF THE MAIN SUBROUTINES: |
||
| 5 | C JCG, JSI, SOR, SSORCG, SSORSI, RSCG, RSSI |
||
| 6 | C CAN BE USED INDEPENDENTLY OF THE OTHERS |
||
| 7 | C |
||
| 8 | C ... FUNCTION: |
||
| 9 | C |
||
| 10 | C THIS SUBROUTINE, RSSI, DRIVES THE REDUCED SYSTEM SI |
||
| 11 | C ALGORITHM. |
||
| 12 | C |
||
| 13 | C ... PARAMETER LIST: |
||
| 14 | C |
||
| 15 | C N INPUT INTEGER. DIMENSION OF THE MATRIX. (= NN) |
||
| 16 | C IA,JA INPUT INTEGER VECTORS. THE TWO INTEGER ARRAYS OF |
||
| 17 | C THE SPARSE MATRIX REPRESENTATION. |
||
| 18 | C A INPUT D.P. VECTOR. THE D.P. ARRAY OF THE SPARSE |
||
| 19 | C MATRIX REPRESENTATION. |
||
| 20 | C RHS INPUT D.P. VECTOR. CONTAINS THE RIGHT HAND SIDE |
||
| 21 | C OF THE MATRIX PROBLEM. |
||
| 22 | C U INPUT/OUTPUT D.P. VECTOR. ON INPUT, U CONTAINS THE |
||
| 23 | C INITIAL GUESS TO THE SOLUTION. ON OUTPUT, IT CONTAINS |
||
| 24 | C THE LATEST ESTIMATE TO THE SOLUTION. |
||
| 25 | C IWKSP INTEGER VECTOR WORKSPACE OF LENGTH 3*N |
||
| 26 | C NW INPUT INTEGER. LENGTH OF AVAILABLE WKSP. ON OUTPUT, |
||
| 27 | C IPARM(8) IS AMOUNT USED. |
||
| 28 | C WKSP D.P. VECTOR USED FOR WORKING SPACE. RSSI |
||
| 29 | C NEEDS THIS TO BE IN LENGTH AT LEAST N + NB |
||
| 30 | C HERE NB IS THE ORDER OF THE BLACK SUBSYSTEM |
||
| 31 | C IPARM INTEGER VECTOR OF LENGTH 12. ALLOWS USER TO SPECIFY |
||
| 32 | C SOME INTEGER PARAMETERS WHICH AFFECT THE METHOD. IF |
||
| 33 | C RPARM D.P. VECTOR OF LENGTH 12. ALLOWS USER TO SPECIFY SOME |
||
| 34 | C D.P. PARAMETERS WHICH AFFECT THE METHOD. |
||
| 35 | C IER OUTPUT INTEGER. ERROR FLAG. (= IERR) |
||
| 36 | C |
||
| 37 | C ... RSSI SUBPROGRAM REFERENCES: |
||
| 38 | C |
||
| 39 | C FROM ITPACK BISRCH, CHEBY, CHGSI, DFAULT, ECHALL, |
||
| 40 | C ECHOUT, ITERM, TIMER, ITRSSI, IVFILL, |
||
| 41 | C PARSI, PERMAT, PERR, PERVEC, PMULT, |
||
| 42 | C PRBNDX, PRSBLK, PRSRED, PSTOP, QSORT, |
||
| 43 | C DAXPY, SBELM, SCAL, DCOPY, DDOT, SUM3, |
||
| 44 | C TSTCHG, UNSCAL, VEVMW, VFILL, VOUT, |
||
| 45 | C WEVMW |
||
| 46 | C SYSTEM DABS, DLOG10, DBLE(AMAX0), DMAX1, DBLE(FLOAT), |
||
| 47 | C DSQRT |
||
| 48 | C |
||
| 49 | C VERSION: ITPACK 2C (MARCH 1982) |
||
| 50 | C |
||
| 51 | C CODE WRITTEN BY: DAVID KINCAID, ROGER GRIMES, JOHN RESPESS |
||
| 52 | C CENTER FOR NUMERICAL ANALYSIS |
||
| 53 | C UNIVERSITY OF TEXAS |
||
| 54 | C AUSTIN, TX 78712 |
||
| 55 | C (512) 471-1242 |
||
| 56 | C |
||
| 57 | C FOR ADDITIONAL DETAILS ON THE |
||
| 58 | C (A) SUBROUTINE SEE TOMS ARTICLE 1982 |
||
| 59 | C (B) ALGORITHM SEE CNA REPORT 150 |
||
| 60 | C |
||
| 61 | C BASED ON THEORY BY: DAVID YOUNG, DAVID KINCAID, LOU HAGEMAN |
||
| 62 | C |
||
| 63 | C REFERENCE THE BOOK: APPLIED ITERATIVE METHODS |
||
| 64 | C L. HAGEMAN, D. YOUNG |
||
| 65 | C ACADEMIC PRESS, 1981 |
||
| 66 | C |
||
| 67 | C ************************************************** |
||
| 68 | C * IMPORTANT NOTE * |
||
| 69 | C * * |
||
| 70 | C * WHEN INSTALLING ITPACK ROUTINES ON A * |
||
| 71 | C * DIFFERENT COMPUTER, RESET SOME OF THE VALUES * |
||
| 72 | C * IN SUBROUTNE DFAULT. MOST IMPORTANT ARE * |
||
| 73 | C * * |
||
| 74 | C * DRELPR MACHINE RELATIVE PRECISION * |
||
| 75 | C * RPARM(1) STOPPING CRITERION * |
||
| 76 | C * * |
||
| 77 | C * ALSO CHANGE SYSTEM-DEPENDENT ROUTINE * |
||
| 78 | C * SECOND USED IN TIMER * |
||
| 79 | C * * |
||
| 80 | C ************************************************** |
||
| 81 | C |
||
| 82 | C SPECIFICATIONS FOR ARGUMENTS |
||
| 83 | C |
||
| 84 | INTEGER IA(1),JA(1),IWKSP(1),IPARM(12),NN,NW,IERR |
||
| 85 | DOUBLE PRECISION A(1),RHS(NN),U(NN),WKSP(NW),RPARM(12) |
||
| 86 | C |
||
| 87 | C SPECIFICATIONS FOR LOCAL VARIABLES |
||
| 88 | C |
||
| 89 | INTEGER IB1,IB2,IDGTS,IER,IERPER,ITMAX1,JB3,LOOP,N,NB,NR,NRP1,N3 |
||
| 90 | DOUBLE PRECISION DIGIT1,DIGIT2,TEMP,TIME1,TIME2,TOL |
||
| 91 | C |
||
| 92 | C *** BEGIN: ITPACK COMMON |
||
| 93 | C |
||
| 94 | INTEGER IN,IS,ISYM,ITMAX,LEVEL,NOUT |
||
| 95 | COMMON /ITCOM1/ IN,IS,ISYM,ITMAX,LEVEL,NOUT |
||
| 96 | C |
||
| 97 | LOGICAL ADAPT,BETADT,CASEII,HALT,PARTAD |
||
| 98 | COMMON /ITCOM2/ ADAPT,BETADT,CASEII,HALT,PARTAD |
||
| 99 | C |
||
| 100 | DOUBLE PRECISION BDELNM,BETAB,CME,DELNNM,DELSNM,FF,GAMMA,OMEGA,QA, |
||
| 101 | * QT,RHO,RRR,SIGE,SME,SPECR,SPR,DRELPR,STPTST,UDNM,ZETA |
||
| 102 | COMMON /ITCOM3/ BDELNM,BETAB,CME,DELNNM,DELSNM,FF,GAMMA,OMEGA,QA, |
||
| 103 | * QT,RHO,RRR,SIGE,SME,SPECR,SPR,DRELPR,STPTST,UDNM,ZETA |
||
| 104 | C |
||
| 105 | C *** END : ITPACK COMMON |
||
| 106 | C |
||
| 107 | C ... VARIABLES IN COMMON BLOCK - ITCOM1 |
||
| 108 | C |
||
| 109 | C IN - ITERATION NUMBER |
||
| 110 | C IS - ITERATION NUMBER WHEN PARAMETERS LAST CHANGED |
||
| 111 | C ISYM - SYMMETRIC/NONSYMMETRIC STORAGE FORMAT SWITCH |
||
| 112 | C ITMAX - MAXIMUM NUMBER OF ITERATIONS ALLOWED |
||
| 113 | C LEVEL - LEVEL OF OUTPUT CONTROL SWITCH |
||
| 114 | C NOUT - OUTPUT UNIT NUMBER |
||
| 115 | C |
||
| 116 | C ... VARIABLES IN COMMON BLOCK - ITCOM2 |
||
| 117 | C |
||
| 118 | C ADAPT - FULLY ADAPTIVE PROCEDURE SWITCH |
||
| 119 | C BETADT - SWITCH FOR ADAPTIVE DETERMINATION OF BETA |
||
| 120 | C CASEII - ADAPTIVE PROCEDURE CASE SWITCH |
||
| 121 | C HALT - STOPPING TEST SWITCH |
||
| 122 | C PARTAD - PARTIALLY ADAPTIVE PROCEDURE SWITCH |
||
| 123 | C |
||
| 124 | C ... VARIABLES IN COMMON BLOCK - ITCOM3 |
||
| 125 | C |
||
| 126 | C BDELNM - TWO NORM OF B TIMES DELTA-SUPER-N |
||
| 127 | C BETAB - ESTIMATE FOR THE SPECTRAL RADIUS OF LU MATRIX |
||
| 128 | C CME - ESTIMATE OF LARGEST EIGENVALUE |
||
| 129 | C DELNNM - INNER PRODUCT OF PSEUDO-RESIDUAL AT ITERATION N |
||
| 130 | C DELSNM - INNER PRODUCT OF PSEUDO-RESIDUAL AT ITERATION S |
||
| 131 | C FF - ADAPTIVE PROCEDURE DAMPING FACTOR |
||
| 132 | C GAMMA - ACCELERATION PARAMETER |
||
| 133 | C OMEGA - OVERRELAXATION PARAMETER FOR SOR AND SSOR |
||
| 134 | C QA - PSEUDO-RESIDUAL RATIO |
||
| 135 | C QT - VIRTUAL SPECTRAL RADIUS |
||
| 136 | C RHO - ACCELERATION PARAMETER |
||
| 137 | C RRR - ADAPTIVE PARAMETER |
||
| 138 | C SIGE - PARAMETER SIGMA-SUB-E |
||
| 139 | C SME - ESTIMATE OF SMALLEST EIGENVALUE |
||
| 140 | C SPECR - SPECTRAL RADIUS ESTIMATE FOR SSOR |
||
| 141 | C DRELPR - MACHINE RELATIVE PRECISION |
||
| 142 | C STPTST - STOPPING PARAMETER |
||
| 143 | C UDNM - TWO NORM OF U |
||
| 144 | C ZETA - STOPPING CRITERION |
||
| 145 | C |
||
| 146 | C ... INITIALIZE COMMON BLOCKS |
||
| 147 | C |
||
| 148 | LEVEL = IPARM(2) |
||
| 149 | NOUT = IPARM(4) |
||
| 150 | IF (LEVEL.GE.1) WRITE (NOUT,10) |
||
| 151 | 10 FORMAT ('0'///1X,'BEGINNING OF ITPACK SOLUTION MODULE RSSI') |
||
| 152 | IER = 0 |
||
| 153 | IF (IPARM(1).LE.0) RETURN |
||
| 154 | N = NN |
||
| 155 | IF (IPARM(11).EQ.0) TIMJ1 = TIMER(DUMMY) |
||
| 156 | IF (LEVEL.GE.3) GO TO 20 |
||
| 157 | CALL ECHOUT (IPARM,RPARM,7) |
||
| 158 | GO TO 30 |
||
| 159 | 20 CALL ECHALL (N,IA,JA,A,RHS,IPARM,RPARM,1) |
||
| 160 | 30 TEMP = 5.0D2*DRELPR |
||
| 161 | IF (ZETA.GE.TEMP) GO TO 50 |
||
| 162 | IF (LEVEL.GE.1) WRITE (NOUT,40) ZETA,DRELPR,TEMP |
||
| 163 | 40 FORMAT ('0','*** W A R N I N G ************'/'0', |
||
| 164 | * ' IN ITPACK ROUTINE RSSI'/' ',' RPARM(1) =',D10.3, |
||
| 165 | * ' (ZETA)'/' ',' A VALUE THIS SMALL MAY HINDER CONVERGENCE '/ |
||
| 166 | * ' ',' SINCE MACHINE PRECISION DRELPR =',D10.3/' ', |
||
| 167 | * ' ZETA RESET TO ',D10.3) |
||
| 168 | ZETA = TEMP |
||
| 169 | 50 CONTINUE |
||
| 170 | TIME1 = RPARM(9) |
||
| 171 | TIME2 = RPARM(10) |
||
| 172 | DIGIT1 = RPARM(11) |
||
| 173 | DIGIT2 = RPARM(12) |
||
| 174 | C |
||
| 175 | C ... VERIFY N |
||
| 176 | C |
||
| 177 | IF (N.GT.0) GO TO 70 |
||
| 178 | IER = 71 |
||
| 179 | IF (LEVEL.GE.0) WRITE (NOUT,60) N |
||
| 180 | 60 FORMAT ('0','*** F A T A L E R R O R ************'/'0', |
||
| 181 | * ' CALLED FROM ITPACK ROUTINE RSSI '/' ', |
||
| 182 | * ' INVALID MATRIX DIMENSION, N =',I8) |
||
| 183 | GO TO 420 |
||
| 184 | 70 CONTINUE |
||
| 185 | C |
||
| 186 | C ... REMOVE ROWS AND COLUMNS IF REQUESTED |
||
| 187 | C |
||
| 188 | IF (IPARM(10).EQ.0) GO TO 90 |
||
| 189 | TOL = RPARM(8) |
||
| 190 | CALL IVFILL (N,IWKSP,0) |
||
| 191 | CALL VFILL (N,WKSP,0.0D0) |
||
| 192 | CALL SBELM (N,IA,JA,A,RHS,IWKSP,WKSP,TOL,ISYM,LEVEL,NOUT,IER) |
||
| 193 | IF (IER.EQ.0) GO TO 90 |
||
| 194 | IF (LEVEL.GE.0) WRITE (NOUT,80) IER,TOL |
||
| 195 | 80 FORMAT ('0','*** F A T A L E R R O R ************'/'0', |
||
| 196 | * ' CALLED FROM ITPACK ROUTINE RSSI '/' ', |
||
| 197 | * ' ERROR DETECTED IN SUBROUTINE SBELM '/' ', |
||
| 198 | * ' WHICH REMOVES ROWS AND COLUMNS OF SYSTEM '/' ', |
||
| 199 | * ' WHEN DIAGONAL ENTRY TOO LARGE '/' ',' IER = ',I5,5X, |
||
| 200 | * ' RPARM(8) = ',D10.3,' (TOL)') |
||
| 201 | C |
||
| 202 | C ... INITIALIZE WKSP BASE ADDRESSES. |
||
| 203 | C |
||
| 204 | 90 IB1 = 1 |
||
| 205 | IB2 = IB1+N |
||
| 206 | JB3 = IB2+N |
||
| 207 | C |
||
| 208 | C ... PERMUTE TO RED-BLACK SYSTEM IF POSSIBLE |
||
| 209 | C |
||
| 210 | NB = IPARM(9) |
||
| 211 | IF (NB.GE.0) GO TO 110 |
||
| 212 | N3 = 3*N |
||
| 213 | CALL IVFILL (N3,IWKSP,0) |
||
| 214 | CALL PRBNDX (N,NB,IA,JA,IWKSP,IWKSP(IB2),LEVEL,NOUT,IER) |
||
| 215 | IF (IER.EQ.0) GO TO 110 |
||
| 216 | IF (LEVEL.GE.0) WRITE (NOUT,100) IER,NB |
||
| 217 | 100 FORMAT ('0','*** F A T A L E R R O R ************'/'0', |
||
| 218 | * ' CALLED FROM ITPACK ROUTINE RSSI '/' ', |
||
| 219 | * ' ERROR DETECTED IN SUBROUTINE PRBNDX'/' ', |
||
| 220 | * ' WHICH COMPUTES THE RED-BLACK INDEXING'/' ',' IER = ',I5 |
||
| 221 | * ,' IPARM(9) = ',I5,' (NB)') |
||
| 222 | GO TO 420 |
||
| 223 | 110 IF (NB.GE.0.AND.NB.LE.N) GO TO 130 |
||
| 224 | IER = 74 |
||
| 225 | IF (LEVEL.GE.1) WRITE (NOUT,120) IER,NB |
||
| 226 | 120 FORMAT (/10X,'ERROR DETECTED IN RED-BLACK SUBSYSTEM INDEX'/10X, |
||
| 227 | * 'IER =',I5,' IPARM(9) =',I5,' (NB)') |
||
| 228 | GO TO 420 |
||
| 229 | 130 IF (NB.NE.0.AND.NB.NE.N) GO TO 150 |
||
| 230 | NB = N/2 |
||
| 231 | IF (LEVEL.GE.2.AND.IPARM(9).GE.0) WRITE (NOUT,140) IPARM(9),NB |
||
| 232 | 140 FORMAT (/10X,' IPARM(9) = ',I5,' IMPLIES MATRIX IS DIAGONAL'/10X, |
||
| 233 | * ' NB RESET TO ',I5) |
||
| 234 | C |
||
| 235 | C ... PERMUTE MATRIX AND RHS |
||
| 236 | C |
||
| 237 | 150 IF (IPARM(9).GE.0) GO TO 190 |
||
| 238 | IF (LEVEL.GE.2) WRITE (NOUT,160) NB |
||
| 239 | 160 FORMAT (/10X,'ORDER OF BLACK SUBSYSTEM = ',I5,' (NB)') |
||
| 240 | CALL PERMAT (N,IA,JA,A,IWKSP,IWKSP(JB3),ISYM,LEVEL,NOUT,IER) |
||
| 241 | IF (IER.EQ.0) GO TO 180 |
||
| 242 | IF (LEVEL.GE.0) WRITE (NOUT,170) IER |
||
| 243 | 170 FORMAT ('0','*** F A T A L E R R O R ************'/'0', |
||
| 244 | * ' CALLED FROM ITPACK ROUTINE RSSI '/' ', |
||
| 245 | * ' ERROR DETECTED IN SUBROUTINE PERMAT'/' ', |
||
| 246 | * ' WHICH DOES THE RED-BLACK PERMUTATION'/' ',' IER = ',I5) |
||
| 247 | GO TO 420 |
||
| 248 | 180 CALL PERVEC (N,RHS,IWKSP) |
||
| 249 | CALL PERVEC (N,U,IWKSP) |
||
| 250 | C |
||
| 251 | C ... INITIALIZE WKSP BASE ADDRESSES |
||
| 252 | C |
||
| 253 | 190 NR = N-NB |
||
| 254 | C |
||
| 255 | NRP1 = NR+1 |
||
| 256 | IPARM(8) = N+NB |
||
| 257 | IF (NW.GE.IPARM(8)) GO TO 210 |
||
| 258 | IER = 72 |
||
| 259 | IF (LEVEL.GE.0) WRITE (NOUT,200) NW,IPARM(8) |
||
| 260 | 200 FORMAT ('0','*** F A T A L E R R O R ************'/'0', |
||
| 261 | * ' CALLED FROM ITPACK ROUTINE RSSI '/' ', |
||
| 262 | * ' NOT ENOUGH WORKSPACE AT ',I10/' ',' SET IPARM(8) =',I10 |
||
| 263 | * ,' (NW)') |
||
| 264 | GO TO 420 |
||
| 265 | C |
||
| 266 | C ... SCALE LINEAR SYSTEM, U, AND RHS BY THE SQUARE ROOT OF THE |
||
| 267 | C ... DIAGONAL ELEMENTS. |
||
| 268 | C |
||
| 269 | 210 CONTINUE |
||
| 270 | CALL VFILL (IPARM(8),WKSP,0.0D0) |
||
| 271 | CALL SCAL (N,IA,JA,A,RHS,U,WKSP,LEVEL,NOUT,IER) |
||
| 272 | IF (IER.EQ.0) GO TO 230 |
||
| 273 | IF (LEVEL.GE.0) WRITE (NOUT,220) IER |
||
| 274 | 220 FORMAT ('0','*** F A T A L E R R O R ************'/'0', |
||
| 275 | * ' CALLED FROM ITPACK ROUTINE RSSI '/' ', |
||
| 276 | * ' ERROR DETECTED IN SUBROUTINE SCAL '/' ', |
||
| 277 | * ' WHICH SCALES THE SYSTEM '/' ',' IER = ',I5) |
||
| 278 | GO TO 420 |
||
| 279 | 230 IF (LEVEL.LE.2) GO TO 250 |
||
| 280 | WRITE (NOUT,240) |
||
| 281 | 240 FORMAT (///1X,'IN THE FOLLOWING, RHO AND GAMMA ARE', |
||
| 282 | * ' ACCELERATION PARAMETERS') |
||
| 283 | 250 IF (IPARM(11).NE.0) GO TO 260 |
||
| 284 | TIMI1 = TIMER(DUMMY) |
||
| 285 | C |
||
| 286 | C ... ITERATION SEQUENCE |
||
| 287 | C |
||
| 288 | 260 IF (N.GT.1) GO TO 270 |
||
| 289 | U(1) = RHS(1) |
||
| 290 | GO TO 320 |
||
| 291 | 270 ITMAX1 = ITMAX+1 |
||
| 292 | DO 290 LOOP = 1,ITMAX1 |
||
| 293 | IN = LOOP-1 |
||
| 294 | IF (MOD(IN,2).EQ.1) GO TO 280 |
||
| 295 | C |
||
| 296 | C ... CODE FOR THE EVEN ITERATIONS. |
||
| 297 | C |
||
| 298 | C U = U(IN) |
||
| 299 | C WKSP(IB1) = U(IN-1) |
||
| 300 | C |
||
| 301 | CALL ITRSSI (N,NB,IA,JA,A,RHS,U,WKSP(IB1),WKSP(IB2)) |
||
| 302 | C |
||
| 303 | IF (HALT) GO TO 320 |
||
| 304 | GO TO 290 |
||
| 305 | C |
||
| 306 | C ... CODE FOR THE ODD ITERATIONS. |
||
| 307 | C |
||
| 308 | C U = U(IN-1) |
||
| 309 | C WKSP(IB1) = U(IN) |
||
| 310 | C |
||
| 311 | 280 CALL ITRSSI (N,NB,IA,JA,A,RHS,WKSP(IB1),U,WKSP(IB2)) |
||
| 312 | C |
||
| 313 | IF (HALT) GO TO 320 |
||
| 314 | 290 CONTINUE |
||
| 315 | C |
||
| 316 | C ... ITMAX HAS BEEN REACHED |
||
| 317 | C |
||
| 318 | IF (IPARM(11).NE.0) GO TO 300 |
||
| 319 | TIMI2 = TIMER(DUMMY) |
||
| 320 | TIME1 = DBLE(TIMI2-TIMI1) |
||
| 321 | 300 IF (LEVEL.GE.1) WRITE (NOUT,310) ITMAX |
||
| 322 | 310 FORMAT ('0','*** W A R N I N G ************'/'0', |
||
| 323 | * ' IN ITPACK ROUTINE RSSI'/' ',' FAILURE TO CONVERGE IN', |
||
| 324 | * I5,' ITERATIONS') |
||
| 325 | IER = 73 |
||
| 326 | IF (IPARM(3).EQ.0) RPARM(1) = STPTST |
||
| 327 | GO TO 350 |
||
| 328 | C |
||
| 329 | C ... METHOD HAS CONVERGED |
||
| 330 | C |
||
| 331 | 320 IF (IPARM(11).NE.0) GO TO 330 |
||
| 332 | TIMI2 = TIMER(DUMMY) |
||
| 333 | TIME1 = DBLE(TIMI2-TIMI1) |
||
| 334 | 330 IF (LEVEL.GE.1) WRITE (NOUT,340) IN |
||
| 335 | 340 FORMAT (/1X,'RSSI HAS CONVERGED IN ',I5,' ITERATIONS') |
||
| 336 | C |
||
| 337 | C ... PUT SOLUTION INTO U IF NOT ALREADY THERE. |
||
| 338 | C |
||
| 339 | 350 CONTINUE |
||
| 340 | IF (N.EQ.1) GO TO 360 |
||
| 341 | IF (MOD(IN,2).EQ.1) CALL DCOPY (N,WKSP(IB1),1,U,1) |
||
| 342 | CALL DCOPY (NR,RHS,1,U,1) |
||
| 343 | CALL PRSRED (NB,NR,IA,JA,A,U(NRP1),U) |
||
| 344 | C |
||
| 345 | C ... UNSCALE THE MATRIX, SOLUTION, AND RHS VECTORS. |
||
| 346 | C |
||
| 347 | 360 CALL UNSCAL (N,IA,JA,A,RHS,U,WKSP) |
||
| 348 | C |
||
| 349 | C ... UN-PERMUTE MATRIX,RHS, AND SOLUTION |
||
| 350 | C |
||
| 351 | IF (IPARM(9).GE.0) GO TO 390 |
||
| 352 | CALL PERMAT (N,IA,JA,A,IWKSP(IB2),IWKSP(JB3),ISYM,LEVEL,NOUT, |
||
| 353 | * IERPER) |
||
| 354 | IF (IERPER.EQ.0) GO TO 380 |
||
| 355 | IF (LEVEL.GE.0) WRITE (NOUT,370) IERPER |
||
| 356 | 370 FORMAT ('0','*** F A T A L E R R O R ************'/'0', |
||
| 357 | * ' CALLED FROM ITPACK ROUTINE RSSI '/' ', |
||
| 358 | * ' ERROR DETECTED IN SUBROUTINE PERMAT'/' ', |
||
| 359 | * ' WHICH UNDOES THE RED-BLACK PERMUTATION '/' ', |
||
| 360 | * ' IER = ',I5) |
||
| 361 | IF (IER.EQ.0) IER = IERPER |
||
| 362 | GO TO 420 |
||
| 363 | 380 CALL PERVEC (N,RHS,IWKSP(IB2)) |
||
| 364 | CALL PERVEC (N,U,IWKSP(IB2)) |
||
| 365 | C |
||
| 366 | C ... OPTIONAL ERROR ANALYSIS |
||
| 367 | C |
||
| 368 | 390 IDGTS = IPARM(12) |
||
| 369 | IF (IDGTS.LT.0) GO TO 400 |
||
| 370 | IF (IPARM(2).LE.0) IDGTS = 0 |
||
| 371 | CALL PERR (N,IA,JA,A,RHS,U,WKSP,DIGIT1,DIGIT2,IDGTS) |
||
| 372 | C |
||
| 373 | C ... SET RETURN PARAMETERS IN IPARM AND RPARM |
||
| 374 | C |
||
| 375 | 400 IF (IPARM(11).NE.0) GO TO 410 |
||
| 376 | TIMJ2 = TIMER(DUMMY) |
||
| 377 | TIME2 = DBLE(TIMJ2-TIMJ1) |
||
| 378 | 410 IF (IPARM(3).NE.0) GO TO 420 |
||
| 379 | IPARM(1) = IN |
||
| 380 | IPARM(9) = NB |
||
| 381 | RPARM(2) = CME |
||
| 382 | RPARM(3) = SME |
||
| 383 | RPARM(9) = TIME1 |
||
| 384 | RPARM(10) = TIME2 |
||
| 385 | RPARM(11) = DIGIT1 |
||
| 386 | RPARM(12) = DIGIT2 |
||
| 387 | C |
||
| 388 | 420 CONTINUE |
||
| 389 | IERR = IER |
||
| 390 | IF (LEVEL.GE.3) CALL ECHALL (N,IA,JA,A,RHS,IPARM,RPARM,2) |
||
| 391 | C |
||
| 392 | RETURN |
||
| 393 | END |
||
| 394 | |||
| 395 | SUBROUTINE ITRSSI (N,NNB,IA,JA,A,RHS,UB,UB1,DB) |
||
| 396 | C |
||
| 397 | C ... FUNCTION: |
||
| 398 | C |
||
| 399 | C THIS SUBROUTINE, ITRSSI, PERFORMS ONE ITERATION OF THE |
||
| 400 | C REDUCED SYSTEM SEMI-ITERATION ALGORITHM. IT IS |
||
| 401 | C CALLED BY RSSI. |
||
| 402 | C |
||
| 403 | C ... PARAMETER LIST: |
||
| 404 | C |
||
| 405 | C N INPUT INTEGER. DIMENSION OF THE MATRIX. |
||
| 406 | C NB INPUT INTEGER. CONTAINS THE NUMBER OF BLACK POINTS |
||
| 407 | C IN THE RED-BLACK MATRIX. (= NNB) |
||
| 408 | C IA,JA INPUT INTEGER VECTORS. THE TWO INTEGER ARRAYS OF |
||
| 409 | C THE SPARSE MATRIX REPRESENTATION. |
||
| 410 | C A INPUT D.P. VECTOR. THE D.P. ARRAY OF THE SPARSE |
||
| 411 | C MATRIX REPRESENTATION. |
||
| 412 | C RHS INPUT D.P. VECTOR. CONTAINS THE RIGHT HAND SIDE |
||
| 413 | C OF THE MATRIX PROBLEM. |
||
| 414 | C UB INPUT D.P. VECTOR. CONTAINS THE ESTIMATE FOR THE |
||
| 415 | C SOLUTION ON THE BLACK POINTS AFTER IN ITERATIONS. |
||
| 416 | C UB1 INPUT/OUTPUT D.P. VECTOR. ON INPUT, UB1 CONTAINS THE |
||
| 417 | C SOLUTION VECTOR AFTER IN-1 ITERATIONS. ON OUTPUT, |
||
| 418 | C IT WILL CONTAIN THE NEWEST ESTIMATE FOR THE SOLUTION |
||
| 419 | C VECTOR. THIS IS ONLY FOR THE BLACK POINTS. |
||
| 420 | C DB INPUT D.P. ARRAY. DB CONTAINS THE VALUE OF THE |
||
| 421 | C CURRENT PSEUDO-RESIDUAL ON THE BLACK POINTS. |
||
| 422 | C |
||
| 423 | C ... SPECIFICATIONS FOR ARGUMENTS |
||
| 424 | C |
||
| 425 | INTEGER IA(1),JA(1),N,NNB |
||
| 426 | DOUBLE PRECISION A(1),RHS(N),UB(N),UB1(N),DB(NNB) |
||
| 427 | C |
||
| 428 | C ... SPECIFICATIONS FOR LOCAL VARIABLES |
||
| 429 | C |
||
| 430 | INTEGER NB,NR,NRP1 |
||
| 431 | DOUBLE PRECISION CONST,C1,C2,C3,DNRM |
||
| 432 | LOGICAL Q1 |
||
| 433 | C |
||
| 434 | C ... SPECIFICATIONS FOR FUNCTION SUBPROGRAMS |
||
| 435 | C |
||
| 436 | DOUBLE PRECISION DDOT |
||
| 437 | LOGICAL TSTCHG |
||
| 438 | C |
||
| 439 | C *** BEGIN: ITPACK COMMON |
||
| 440 | C |
||
| 441 | INTEGER IN,IS,ISYM,ITMAX,LEVEL,NOUT |
||
| 442 | COMMON /ITCOM1/ IN,IS,ISYM,ITMAX,LEVEL,NOUT |
||
| 443 | C |
||
| 444 | LOGICAL ADAPT,BETADT,CASEII,HALT,PARTAD |
||
| 445 | COMMON /ITCOM2/ ADAPT,BETADT,CASEII,HALT,PARTAD |
||
| 446 | C |
||
| 447 | DOUBLE PRECISION BDELNM,BETAB,CME,DELNNM,DELSNM,FF,GAMMA,OMEGA,QA, |
||
| 448 | * QT,RHO,RRR,SIGE,SME,SPECR,SPR,DRELPR,STPTST,UDNM,ZETA |
||
| 449 | COMMON /ITCOM3/ BDELNM,BETAB,CME,DELNNM,DELSNM,FF,GAMMA,OMEGA,QA, |
||
| 450 | * QT,RHO,RRR,SIGE,SME,SPECR,SPR,DRELPR,STPTST,UDNM,ZETA |
||
| 451 | C |
||
| 452 | C *** END : ITPACK COMMON |
||
| 453 | C |
||
| 454 | C DESCRIPTION OF VARIABLES IN COMMON BLOCKS IN SUBROUTINE RSSI |
||
| 455 | C |
||
| 456 | C ... COMPUTE UR(IN) INTO UB |
||
| 457 | C |
||
| 458 | NB = NNB |
||
| 459 | NR = N-NB |
||
| 460 | NRP1 = NR+1 |
||
| 461 | CALL DCOPY (NR,RHS,1,UB,1) |
||
| 462 | CALL PRSRED (NB,NR,IA,JA,A,UB(NRP1),UB) |
||
| 463 | C |
||
| 464 | C ... COMPUTE PSEUDO-RESIDUAL, DB(IN) |
||
| 465 | C |
||
| 466 | CALL DCOPY (NB,RHS(NRP1),1,DB,1) |
||
| 467 | CALL PRSBLK (NB,NR,IA,JA,A,UB,DB) |
||
| 468 | CALL VEVMW (NB,DB,UB(NRP1)) |
||
| 469 | C |
||
| 470 | C ... TEST FOR STOPPING |
||
| 471 | C |
||
| 472 | DELNNM = DDOT(NB,DB,1,DB,1) |
||
| 473 | DNRM = DELNNM |
||
| 474 | CONST = CME |
||
| 475 | CALL PSTOP (NB,UB(NRP1),DNRM,CONST,2,Q1) |
||
| 476 | IF (HALT) GO TO 20 |
||
| 477 | IF (.NOT.ADAPT) GO TO 10 |
||
| 478 | C |
||
| 479 | C ... TEST TO CHANGE PARAMETERS |
||
| 480 | C |
||
| 481 | IF (.NOT.TSTCHG(2)) GO TO 10 |
||
| 482 | C |
||
| 483 | C ... CHANGE PARAMETERS |
||
| 484 | C |
||
| 485 | CALL VFILL (NR,UB1,0.D0) |
||
| 486 | CALL PRSRED (NB,NR,IA,JA,A,DB,UB1) |
||
| 487 | DNRM = DDOT(NR,UB1,1,UB1,1) |
||
| 488 | CALL CHGSI (DNRM,2) |
||
| 489 | IF (.NOT.ADAPT) GO TO 10 |
||
| 490 | C |
||
| 491 | C ... COMPUTE UB(N+1) AFTER CHANGING PARAMETERS |
||
| 492 | C |
||
| 4883 | fmk | 493 | CALL ItDCOPY (NB,UB(NRP1),1,UB1(NRP1),1) |
| 494 | CALL ItDAXPY (NB,GAMMA,DB,1,UB1(NRP1),1) |
||
| 969 | mhscott | 495 | GO TO 20 |
| 496 | C |
||
| 497 | C ... COMPUTE UB(N+1) WITHOUT CHANGE OF PARAMETERS |
||
| 498 | C |
||
| 499 | 10 CALL PARSI (C1,C2,C3,2) |
||
| 500 | CALL SUM3 (NB,C1,DB,C2,UB(NRP1),C3,UB1(NRP1)) |
||
| 501 | C |
||
| 502 | C ... OUTPUT INTERMEDIATE INFORMATION |
||
| 503 | C |
||
| 504 | 20 CALL ITERM (NB,A(NRP1),UB(NRP1),DB,7) |
||
| 505 | C |
||
| 506 | RETURN |
||
| 507 | END |