Sets the correct source matrix, row, column and possible data transposition for a given matrix and matrix logical row and column.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(dbcsr_type), | intent(in) | :: | matrix |
DBCSR matrix |
||
integer, | intent(in) | :: | row |
input is logical row input is logical column |
||
integer, | intent(in) | :: | column |
input is logical row input is logical column |
||
integer, | intent(out), | optional | :: | processor |
returns the processor on which this block resides |
PURE SUBROUTINE dbcsr_get_stored_coordinates(matrix, row, column, processor)
!! Sets the correct source matrix, row, column and possible data
!! transposition for a given matrix and matrix logical row and
!! column.
TYPE(dbcsr_type), INTENT(IN) :: matrix
!! DBCSR matrix
INTEGER, INTENT(IN) :: row, column
!! input is logical row
!! input is logical column
INTEGER, INTENT(OUT), OPTIONAL :: processor
!! returns the processor on which this block resides
! ---------------------------------------------------------------------------
! SM-compatible way
IF (PRESENT(processor)) THEN
IF (matrix%symmetry .AND. checker_tr(row, column)) THEN
! The transposed way.
processor = dbcsr_distribution_processor(matrix%dist, column, row)
ELSE
! The default way.
processor = dbcsr_distribution_processor(matrix%dist, row, column)
END IF
END IF
END SUBROUTINE dbcsr_get_stored_coordinates