Places the iterator to the desired row.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(dbcsr_iterator), | intent(inout) | :: | iterator |
the iterator |
||
integer, | intent(in) | :: | row |
seek to this row |
SUBROUTINE dbcsr_iterator_seek(iterator, row)
!! Places the iterator to the desired row.
TYPE(dbcsr_iterator), INTENT(INOUT) :: iterator
!! the iterator
INTEGER, INTENT(in) :: row
!! seek to this row
CHARACTER(len=*), PARAMETER :: routineN = 'dbcsr_iterator_seek'
INTEGER :: error_handle
! ---------------------------------------------------------------------------
CALL timeset(routineN, error_handle)
IF (iterator%nblks .GT. 0 .AND. row .LE. iterator%nblkrows_total) THEN
iterator%row = row
! This line is replaced because iterator_advance increments the block
! number
!iterator%pos = iterator%row_p(row)+1
iterator%pos = iterator%row_p(row) ! +1-1
CALL iterator_advance(iterator)
CALL update_row_info(iterator)
ELSE
iterator%row = 0
iterator%pos = 0
END IF
CALL timestop(error_handle)
END SUBROUTINE dbcsr_iterator_seek