Collapses a row_p index
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(out), | DIMENSION(1:nrows + 1) | :: | row_p | ||
integer, | intent(in), | DIMENSION(1:nblks) | :: | row_i | ||
integer, | intent(in) | :: | nrows | |||
integer, | intent(in) | :: | nblks |
SUBROUTINE dbcsr_make_dbcsr_index(row_p, row_i, nrows, nblks) !! Collapses a row_p index INTEGER, INTENT(in) :: nrows, nblks INTEGER, DIMENSION(1:nrows + 1), INTENT(out) :: row_p INTEGER, DIMENSION(1:nblks), INTENT(in) :: row_i CHARACTER(len=*), PARAMETER :: routineN = 'dbcsr_make_dbcsr_index' INTEGER :: blk, error_handle, row CALL timeset(routineN, error_handle) row_p(1) = 0 row_p(nrows + 1) = nblks row = 1 blk = 1 DO WHILE (row .LE. nrows) IF (blk .LE. nblks) THEN DO WHILE (row_i(blk) .EQ. row) blk = blk + 1 IF (blk .GT. nblks) THEN row_p(row + 1) = nblks - 1 EXIT END IF END DO END IF row_p(row + 1) = blk - 1 row = row + 1 END DO CALL timestop(error_handle) END SUBROUTINE dbcsr_make_dbcsr_index