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