dbcsr_find_column Subroutine

public pure subroutine dbcsr_find_column(find_col, frst_blk, last_blk, col_i, blk_p, blk, found)

Finds the block that has the given column. If the block having the queried column is found, the blk parameter is set to this block number and the found parameter is true. Otherwise found is false and the block number is invalid.

Index validity The blk_p array of block pointers is a required parameter to enable the detection of deleted blocks.

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: find_col

column to find first block number in row last block number in row

integer, intent(in) :: frst_blk

column to find first block number in row last block number in row

integer, intent(in) :: last_blk

column to find first block number in row last block number in row

integer, intent(in), DIMENSION(:) :: col_i

col indices block pointers

integer, intent(in), DIMENSION(:) :: blk_p

col indices block pointers

integer, intent(out) :: blk

block number with searched-for column

logical, intent(out) :: found

flag specified whether a block that has the correct column was found


Source Code

   PURE SUBROUTINE dbcsr_find_column(find_col, frst_blk, last_blk, col_i, blk_p, &
                                     blk, found)
      !! Finds the block that has the given column.
      !! If the block having the queried column is found, the blk parameter
      !! is set to this block number and the found parameter is true.
      !! Otherwise found is false and the block number is invalid.
      !!
      !! Index validity
      !! The blk_p array of block pointers is a required parameter to enable
      !! the detection of deleted blocks.

      INTEGER, INTENT(IN)                                :: find_col, frst_blk, last_blk
         !! column to find
         !! first block number in row
         !! last block number in row
      INTEGER, DIMENSION(:), INTENT(IN)                  :: col_i, blk_p
         !! col indices
         !! block pointers
      INTEGER, INTENT(OUT)                               :: blk
         !! block number with searched-for column
      LOGICAL, INTENT(OUT)                               :: found
         !! flag specified whether a block that has the correct column was found

      CALL ordered_search(col_i, find_col, blk, found, frst_blk, last_blk)
      IF (found) THEN
         found = blk_p(blk) .NE. 0
      END IF

   END SUBROUTINE dbcsr_find_column