Determines the home process for a given logical matrix element.
This routine is a more low-level version of dbcsr_get_stored_coordinate without the setting the row and column to the stored position.
It assumes a square matrix.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | row |
logical row logical column |
||
integer, | intent(in) | :: | col |
logical row logical column |
||
integer, | intent(in), | DIMENSION(0:, 0:) | :: | pgrid |
process grid |
|
integer, | intent(in), | DIMENSION(:) | :: | row_dist |
row distribution column distribution |
|
integer, | intent(in), | DIMENSION(:) | :: | col_dist |
row distribution column distribution |
home process of the given element
PURE FUNCTION checker_square_proc(row, col, pgrid, &
row_dist, col_dist) RESULT(process)
!! Determines the home process for a given logical matrix element.
!! @note This routine is a more low-level version of
!! dbcsr_get_stored_coordinate without the setting the row and column
!! to the stored position.
!! @endnote
!! @note It assumes a square matrix.
INTEGER, INTENT(IN) :: row, col
!! logical row
!! logical column
INTEGER, DIMENSION(0:, 0:), INTENT(IN) :: pgrid
!! process grid
INTEGER, DIMENSION(:), INTENT(IN) :: row_dist, col_dist
!! row distribution
!! column distribution
INTEGER :: process
!! home process of the given element
IF (.NOT. checker_tr(row, col)) THEN
process = pgrid(row_dist(row), col_dist(col))
ELSE
process = pgrid(row_dist(col), col_dist(row))
END IF
END FUNCTION checker_square_proc