Resets local rows, columns to the correct arrays and values.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(dbcsr_type), | intent(inout) | :: | matrix |
SUBROUTINE dbcsr_reset_locals(matrix)
!! Resets local rows, columns to the correct arrays and values.
TYPE(dbcsr_type), INTENT(INOUT) :: matrix
LOGICAL, PARAMETER :: dbg = .FALSE.
TYPE(dbcsr_distribution_obj) :: dist
! ---------------------------------------------------------------------------
dist = dbcsr_distribution(matrix)
CALL dbcsr_release_locals(matrix)
! Rows
IF (dbg) &
WRITE (*, *) "reset local rows for ", TRIM(matrix%name), &
matrix%nblkrows_local, "prow", matrix%index(dbcsr_slot_home_prow), &
dbcsr_mp_myprow(dbcsr_distribution_mp(matrix%dist))
CALL dbcsr_get_local_rows(dist, matrix%local_rows, &
matrix%index(dbcsr_slot_home_prow))
CALL array_hold(matrix%local_rows)
IF (dbg) WRITE (*, *) "local rows", matrix%local_rows%low%data
matrix%nblkrows_local = array_size(matrix%local_rows)
CALL dbcsr_get_global_row_map(dist, matrix%global_rows)
CALL array_hold(matrix%global_rows)
matrix%has_local_rows = .TRUE.
matrix%has_global_rows = .TRUE.
! Columns
IF (dbg) &
WRITE (*, *) "reset local cols for ", TRIM(matrix%name), &
matrix%nblkcols_local, "pcol", matrix%index(dbcsr_slot_home_pcol), &
dbcsr_mp_mypcol(dbcsr_distribution_mp(matrix%dist))
CALL dbcsr_get_local_cols(dist, matrix%local_cols, &
matrix%index(dbcsr_slot_home_pcol))
CALL array_hold(matrix%local_cols)
IF (dbg) WRITE (*, *) "local cols", matrix%local_cols%low%data
matrix%nblkcols_local = array_size(matrix%local_cols)
CALL dbcsr_get_global_col_map(dist, matrix%global_cols)
CALL array_hold(matrix%global_cols)
matrix%has_local_cols = .TRUE.
matrix%has_global_cols = .TRUE.
!
END SUBROUTINE dbcsr_reset_locals