SUBROUTINE S7ETR(M,N,INDROW,JPNTR,INDCOL,IPNTR,IWA)
INTEGER M,N
INTEGER INDROW(1),JPNTR(1),INDCOL(1),IPNTR(1),IWA(M)
C **********
C
C SUBROUTINE S7ETR
C
C GIVEN A COLUMN-ORIENTED DEFINITION OF THE SPARSITY PATTERN
C OF AN M BY N MATRIX A, THIS SUBROUTINE DETERMINES A
C ROW-ORIENTED DEFINITION OF THE SPARSITY PATTERN OF A.
C
C ON INPUT THE COLUMN-ORIENTED DEFINITION IS SPECIFIED BY
C THE ARRAYS INDROW AND JPNTR. ON OUTPUT THE ROW-ORIENTED
C DEFINITION IS SPECIFIED BY THE ARRAYS INDCOL AND IPNTR.
C
C THE SUBROUTINE STATEMENT IS
C
C SUBROUTINE S7ETR(M,N,INDROW,JPNTR,INDCOL,IPNTR,IWA)
C
C WHERE
C
C M IS A POSITIVE INTEGER INPUT VARIABLE SET TO THE NUMBER
C OF ROWS OF A.
C
C N IS A POSITIVE INTEGER INPUT VARIABLE SET TO THE NUMBER
C OF COLUMNS OF A.
C
C INDROW IS AN INTEGER INPUT ARRAY WHICH CONTAINS THE ROW
C INDICES FOR THE NON-ZEROES IN THE MATRIX A.
C
C JPNTR IS AN INTEGER INPUT ARRAY OF LENGTH N + 1 WHICH
C SPECIFIES THE LOCATIONS OF THE ROW INDICES IN INDROW.
C THE ROW INDICES FOR COLUMN J ARE
C
C INDROW(K), K = JPNTR(J),...,JPNTR(J+1)-1.
C
C NOTE THAT JPNTR(N+1)-1 IS THEN THE NUMBER OF NON-ZERO
C ELEMENTS OF THE MATRIX A.
C
C INDCOL IS AN INTEGER OUTPUT ARRAY WHICH CONTAINS THE
C COLUMN INDICES FOR THE NON-ZEROES IN THE MATRIX A.
C
C IPNTR IS AN INTEGER OUTPUT ARRAY OF LENGTH M + 1 WHICH
C SPECIFIES THE LOCATIONS OF THE COLUMN INDICES IN INDCOL.
C THE COLUMN INDICES FOR ROW I ARE
C
C INDCOL(K), K = IPNTR(I),...,IPNTR(I+1)-1.
C
C NOTE THAT IPNTR(1) IS SET TO 1 AND THAT IPNTR(M+1)-1 IS
C THEN THE NUMBER OF NON-ZERO ELEMENTS OF THE MATRIX A.
C
C IWA IS AN INTEGER WORK ARRAY OF LENGTH M.
C
C ARGONNE NATIONAL LABORATORY. MINPACK PROJECT. JUNE 1982.
C THOMAS F. COLEMAN, BURTON S. GARBOW, JORGE J. MORE
C
C **********
INTEGER IR,JCOL,JP,JPL,JPU,L,NNZ
C
C DETERMINE THE NUMBER OF NON-ZEROES IN THE ROWS.
C
DO 10 IR = 1, M
IWA(IR) = 0
10 CONTINUE
NNZ = JPNTR(N+1) - 1
DO 20 JP = 1, NNZ
IR = INDROW(JP)
IWA(IR) = IWA(IR) + 1
20 CONTINUE
C
C SET POINTERS TO THE START OF THE ROWS IN INDCOL.
C
IPNTR(1) = 1
DO 30 IR = 1, M
IPNTR(IR+1) = IPNTR(IR) + IWA(IR)
IWA(IR) = IPNTR(IR)
30 CONTINUE
C
C FILL INDCOL.
C
DO 60 JCOL = 1, N
JPL = JPNTR(JCOL)
JPU = JPNTR(JCOL+1) - 1
IF (JPU .LT. JPL) GO TO 50
DO 40 JP = JPL, JPU
IR = INDROW(JP)
L = IWA(IR)
INDCOL(L) = JCOL
IWA(IR) = IWA(IR) + 1
40 CONTINUE
50 CONTINUE
60 CONTINUE
RETURN
C
C LAST CARD OF SUBROUTINE S7ETR.
C
END
.