iloc Function

private pure function iloc(Iarr, Nparm, Numgr)

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).

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: Iarr
integer, intent(in) :: Nparm
integer, intent(in) :: Numgr

Return Value integer


Called by

proc~~iloc~~CalledByGraph proc~iloc iloc proc~conenr conenr proc~conenr->proc~iloc proc~conmax conmax_solver%conmax proc~conmax->proc~iloc proc~ercmp1 conmax_solver%ercmp1 proc~conmax->proc~ercmp1 proc~rkcon conmax_solver%rkcon proc~conmax->proc~rkcon proc~slpcon conmax_solver%slpcon proc~conmax->proc~slpcon proc~wolfe wolfe proc~conmax->proc~wolfe proc~corrct conmax_solver%corrct proc~corrct->proc~iloc proc~corrct->proc~ercmp1 proc~muller conmax_solver%muller proc~corrct->proc~muller proc~searcr conmax_solver%searcr proc~corrct->proc~searcr proc~corrct->proc~wolfe proc~ercmp1->proc~iloc proc~muller->proc~iloc proc~muller->proc~ercmp1 proc~pmtst conmax_solver%pmtst proc~pmtst->proc~iloc proc~rkcon->proc~iloc proc~rkcon->proc~corrct proc~rkcon->proc~ercmp1 proc~rkcon->proc~pmtst proc~rkpar conmax_solver%rkpar proc~rkcon->proc~rkpar proc~searsl conmax_solver%searsl proc~rkcon->proc~searsl proc~rkcon->proc~wolfe proc~rkpar->proc~iloc proc~rkpar->proc~corrct proc~rkpar->proc~pmtst proc~rkpar->proc~wolfe proc~searcr->proc~iloc proc~searcr->proc~ercmp1 proc~searsl->proc~iloc proc~searsl->proc~corrct proc~searsl->proc~ercmp1 proc~setu1 conmax_solver%setu1 proc~setu1->proc~iloc proc~slpcon->proc~iloc proc~slpcon->proc~ercmp1 proc~slpcon->proc~searsl proc~slpcon->proc~setu1 proc~wolfe->proc~iloc proc~wolfe->proc~conenr

Source Code

    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