Removes data from the index.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(dbcsr_type), | intent(inout) | :: | matrix |
bcsr matrix |
||
integer, | intent(in) | :: | slot |
which index array to remove (e.g., dbcsr_slot_row_blk_sizes) |
SUBROUTINE dbcsr_clearfrom_index_array(matrix, slot)
!! Removes data from the index.
TYPE(dbcsr_type), INTENT(INOUT) :: matrix
!! bcsr matrix
INTEGER, INTENT(IN) :: slot
!! which index array to remove (e.g., dbcsr_slot_row_blk_sizes)
CHARACTER(len=*), PARAMETER :: routineN = 'dbcsr_clearfrom_index_array', &
routineP = moduleN//':'//routineN
INTEGER :: space
INTEGER, DIMENSION(5) :: max_extents
! ---------------------------------------------------------------------------
IF (.NOT. ASSOCIATED(matrix%index)) &
DBCSR_ABORT("Index must be preallocated.")
IF (UBOUND(matrix%index, 1) < dbcsr_num_slots) &
DBCSR_ABORT("Actual index size less than declared size")
IF (debug_mod) WRITE (*, *) routineP//' index', &
matrix%index(:dbcsr_num_slots)
! Clear index entry pointer
matrix%index(slot) = 1
matrix%index(slot + 1) = 0
CALL dbcsr_repoint_index(matrix, slot)
! Update the declared index size
max_extents = (/ &
matrix%index(dbcsr_slot_row_p + 1), &
matrix%index(dbcsr_slot_col_i + 1), &
matrix%index(dbcsr_slot_blk_p + 1), &
matrix%index(dbcsr_slot_thr_c + 1), &
matrix%index(dbcsr_slot_coo_l + 1)/)
space = MAX(MAXVAL(max_extents), dbcsr_num_slots)
matrix%index(dbcsr_slot_size) = space
END SUBROUTINE dbcsr_clearfrom_index_array