Resets local rows, columns to the correct arrays and values for images.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(dbcsr_type), | intent(inout) | :: | matrix | |||
type(dbcsr_imagedistribution_obj), | intent(inout) | :: | imgdist | |||
logical, | intent(in), | optional | :: | do_rows |
SUBROUTINE dbcsr_reset_vlocals(matrix, imgdist, do_rows) !! Resets local rows, columns to the correct arrays and values !! for images. TYPE(dbcsr_type), INTENT(INOUT) :: matrix TYPE(dbcsr_imagedistribution_obj), INTENT(INOUT) :: imgdist LOGICAL, INTENT(IN), OPTIONAL :: do_rows LOGICAL :: my_do_rows ! --------------------------------------------------------------------------- CALL dbcsr_release_locals(matrix) my_do_rows = .TRUE. IF (PRESENT(do_rows)) my_do_rows = do_rows ! Rows IF (.NOT. PRESENT(do_rows) .OR. my_do_rows) THEN CALL dbcsr_get_local_vrows(imgdist, matrix%local_rows, & matrix%index(dbcsr_slot_home_vprow)) ELSE matrix%local_rows = imgdist%i%main%d%local_rows END IF CALL array_hold(matrix%local_rows) matrix%has_local_rows = .TRUE. matrix%nblkrows_local = array_size(matrix%local_rows) matrix%index(dbcsr_slot_nblkrows_local) = array_size(matrix%local_rows) CALL dbcsr_get_global_vrow_map(imgdist, matrix%global_rows) CALL array_hold(matrix%global_rows) matrix%has_global_rows = .TRUE. ! Columns IF (.NOT. PRESENT(do_rows) .OR. .NOT. my_do_rows) THEN CALL dbcsr_get_local_vcols(imgdist, matrix%local_cols, & matrix%index(dbcsr_slot_home_vpcol)) ELSE matrix%local_cols = imgdist%i%main%d%local_cols END IF CALL array_hold(matrix%local_cols) matrix%has_local_cols = .TRUE. matrix%nblkcols_local = array_size(matrix%local_cols) matrix%index(dbcsr_slot_nblkcols_local) = array_size(matrix%local_cols) CALL dbcsr_get_global_vcol_map(imgdist, matrix%global_cols) CALL array_hold(matrix%global_cols) matrix%has_global_cols = .TRUE. END SUBROUTINE dbcsr_reset_vlocals