This function subprogram returns the subscript of the first element of
array iarr relative to iwork (if the array is integer, i.e. 13 <=
iarr <= 23) or relative to work (if the array is floating point, i.e.
1 <= iarr <= 12 or 24 <= iarr <= 48).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | Iarr | |||
| integer, | intent(in) | :: | Nparm | |||
| integer, | intent(in) | :: | Numgr |
pure function iloc(Iarr, Nparm, Numgr) implicit none integer, intent(in) :: Iarr integer, intent(in) :: Nparm integer, intent(in) :: Numgr integer :: iloc select case (Iarr) case (2) ! 2 ACTDIF(NUMGR) iloc = 1 case (3) ! 3 B(NPARM+1) (OPPOSITE V, Y; FOLLOWS AA) iloc = Nparm**2 + 3*Numgr*Nparm + 6*Numgr + 13*Nparm + 9 case (4) ! 4 BETA(NPARM+1) (OPPOSITE V, Y; FOLLOWS B) iloc = Nparm**2 + 3*Numgr*Nparm + 6*Numgr + 14*Nparm + 10 case (5) ! 5 BNDKP(NPARM) (FOLLOWS ACTDIF) iloc = Numgr + 1 case (6) ! 6 COEF(NUMGR) iloc = Numgr + Nparm + 1 case (7) ! 7 COFBND(NPARM) iloc = 2*Numgr + Nparm + 1 case (8) ! 8 CONFUN(NUMGR,NPARM+1) (OPPOSITE PMAT1) iloc = 2*Numgr + 2*Nparm + 1 case (9) ! 9 D(NPARM+1) (OPPOSITE V, Y; FOLLOWS BETA) iloc = Nparm**2 + 3*Numgr*Nparm + 6*Numgr + 15*Nparm + 11 case (10) ! 10 DVEC(NPARM) (FOLLOWS CONFUN) iloc = Numgr*Nparm + 3*Numgr + 2*Nparm + 1 case (11) ! 11 ERR1(NUMGR+3) iloc = Numgr*Nparm + 3*Numgr + 3*Nparm + 1 case (12) ! 12 FUNTBL(NUMGR,NPARM+1) iloc = Numgr*Nparm + 4*Numgr + 3*Nparm + 4 case (13) ! 13 IACT(NUMGR) iloc = 1 case (14) ! 14 IACT1(NUMGR) iloc = Numgr + 1 case (15) ! 15 ICOR(NPARM+1) iloc = 2*Numgr + 1 case (16) ! 16 ICOR1(NPARM+1) (DOES NOT APPEAR IN PROGRAM BY NAME) iloc = 2*Numgr + Nparm + 2 case (17) ! 17 ICNTYP(NUMGR) iloc = 2*Numgr + 2*Nparm + 3 case (18) ! 18 IXRCT(NUMGR+2*NPARM) iloc = 3*Numgr + 2*Nparm + 3 case (19) ! 19 IYCCT(NPARM+1) (OPPOSITE KPIVOT) iloc = 4*Numgr + 4*Nparm + 3 case (20) ! 20 IYRCT(NUMGR+2*NPARM) iloc = 4*Numgr + 5*Nparm + 4 case (21) ! 21 JCNTYP(NUMGR) iloc = 5*Numgr + 7*Nparm + 4 case (22) ! 22 KCNTYP(NUMGR) iloc = 6*Numgr + 7*Nparm + 4 case (23) ! 23 KPIVOT(NPARM+1) (OPPOSITE IYCCT) iloc = 4*Numgr + 4*Nparm + 3 case (24) ! 24 PARAM1(NPARM) (FOLLOWS FUNTBL) iloc = 2*Numgr*Nparm + 5*Numgr + 3*Nparm + 4 case (25) ! 25 PARPRJ(NPARM) iloc = 2*Numgr*Nparm + 5*Numgr + 4*Nparm + 4 case (26) ! 26 PARSER(NPARM) iloc = 2*Numgr*Nparm + 5*Numgr + 5*Nparm + 4 case (27) ! 27 PARWRK(NPARM) iloc = 2*Numgr*Nparm + 5*Numgr + 6*Nparm + 4 case (28) ! 28 PICOR(NPARM+1,NPARM+1) (OPPOSITE V, Y; FOLLOWS D) iloc = Nparm**2 + 3*Numgr*Nparm + 6*Numgr + 16*Nparm + 12 case (29) ! 29 PMAT(NPARM+1,NUMGR) (FOLLOWS PARWRK) iloc = 2*Numgr*Nparm + 5*Numgr + 7*Nparm + 4 case (30) ! 30 PMAT1(NPARM+1,NUMGR) (OPPOSITE CONFUN) iloc = 2*Numgr + 2*Nparm + 1 case (31) ! 31 PTNR(NPARM+1) (FOLLOWS PMAT) iloc = 3*Numgr*Nparm + 6*Numgr + 7*Nparm + 4 case (32) ! 32 PTNRR(NPARM+1) iloc = 3*Numgr*Nparm + 6*Numgr + 8*Nparm + 5 case (33) ! 33 R(NPARM+1) iloc = 3*Numgr*Nparm + 6*Numgr + 9*Nparm + 6 case (34) ! 34 SAVE(NPARM+1) iloc = 3*Numgr*Nparm + 6*Numgr + 10*Nparm + 7 case (35) ! 35 V(NUMGR+2*NPARM+1,NPARM+2) (WITH Y, OPPOSITE AA, B, BETA, D, ! PICOR, ZWORK) iloc = 3*Numgr*Nparm + 6*Numgr + 11*Nparm + 8 case (36) ! 36 VDER(NPARM) (FOLLOWS Y) iloc = 2*Nparm**2 + 4*Numgr*Nparm + 9*Numgr + 18*Nparm + 10 case (37) ! 37 VDERN(NPARM) iloc = 2*Nparm**2 + 4*Numgr*Nparm + 9*Numgr + 19*Nparm + 10 case (38) ! 38 VDERS(NPARM) iloc = 2*Nparm**2 + 4*Numgr*Nparm + 9*Numgr + 20*Nparm + 10 case (39) ! 39 VEC(NPARM+1) iloc = 2*Nparm**2 + 4*Numgr*Nparm + 9*Numgr + 21*Nparm + 10 case (40) ! 40 WCOEF(NUMGR) iloc = 2*Nparm**2 + 4*Numgr*Nparm + 9*Numgr + 22*Nparm + 11 case (41) ! 41 WCOEF1(NUMGR) (DOES NOT APPEAR IN THE PROGRAM BY NAME) iloc = 2*Nparm**2 + 4*Numgr*Nparm + 10*Numgr + 22*Nparm + 11 case (42) ! 42 WPT(NPARM) iloc = 2*Nparm**2 + 4*Numgr*Nparm + 11*Numgr + 22*Nparm + 11 case (43) ! 43 WVEC(NPARM) iloc = 2*Nparm**2 + 4*Numgr*Nparm + 11*Numgr + 23*Nparm + 11 case (44) ! 44 X(NPARM+1) iloc = 2*Nparm**2 + 4*Numgr*Nparm + 11*Numgr + 24*Nparm + 11 case (45) ! 45 XKEEP(NPARM+1) iloc = 2*Nparm**2 + 4*Numgr*Nparm + 11*Numgr + 25*Nparm + 12 case (46) ! 46 XRK(NPARM+1) iloc = 2*Nparm**2 + 4*Numgr*Nparm + 11*Numgr + 26*Nparm + 13 case (47) ! 47 Y(NUMGR+2*NPARM) (WITH V, OPPOSITE AA, B, BETA, D, PICOR, ZWORK; FOLLOWS V) iloc = 2*Nparm**2 + 4*Numgr*Nparm + 8*Numgr + 16*Nparm + 10 case (48) ! 48 ZWORK(NPARM) (OPPOSITE V, Y; FOLLOWS PICOR) iloc = 2*Nparm**2 + 3*Numgr*Nparm + 6*Numgr + 18*Nparm + 13 case default ! 1 AA(NPARM+1,NPARM+1) (OPPOSITE V, Y; STARTS AT V STARTING POINT) iloc = 3*Numgr*Nparm + 6*Numgr + 11*Nparm + 8 end select end function iloc