dbcsr_put_block2d_d Subroutine

private subroutine dbcsr_put_block2d_d(matrix, row, col, block, lb_row_col, transposed, summation, flop, scale)

Put a 2-D block in a DBCSR matrix

Arguments

Type IntentOptional Attributes Name
type(dbcsr_type), intent(inout) :: matrix

DBCSR matrix

integer, intent(in) :: row

the row the column

integer, intent(in) :: col

the row the column

real(kind=real_8), intent(in), DIMENSION(:, :), CONTIGUOUS, TARGET :: block

the block to put

integer, intent(inout), optional, DIMENSION(2) :: lb_row_col
logical, intent(in), optional :: transposed

the block is transposed if block exists, then sum the new block to the old one instead of replacing it

logical, intent(in), optional :: summation

the block is transposed if block exists, then sum the new block to the old one instead of replacing it

integer(kind=int_8), intent(inout), optional :: flop
real(kind=real_8), intent(in), optional :: scale

scale the block being added


Source Code

      SUBROUTINE dbcsr_put_block2d_d (matrix, row, col, block, lb_row_col, transposed, &
                                                  summation, flop, scale)
     !! Put a 2-D block in a DBCSR matrix

         TYPE(dbcsr_type), INTENT(INOUT)           :: matrix
        !! DBCSR matrix
         INTEGER, INTENT(IN)                      :: row, col
        !! the row
        !! the column
         REAL(kind=real_8), DIMENSION(:, :), INTENT(IN), &
            CONTIGUOUS, TARGET                    :: block
        !! the block to put
         INTEGER, DIMENSION(2), OPTIONAL, INTENT(INOUT) :: lb_row_col
         LOGICAL, INTENT(IN), OPTIONAL            :: transposed, summation
        !! the block is transposed
        !! if block exists, then sum the new block to the old one instead of replacing it
         INTEGER(KIND=int_8), INTENT(INOUT), OPTIONAL :: flop
         REAL(kind=real_8), INTENT(IN), OPTIONAL            :: scale
        !! scale the block being added

         REAL(kind=real_8), DIMENSION(:), POINTER           :: block_1d

         NULLIFY (block_1d)

         block_1d(1:SIZE(block)) => block

         CALL dbcsr_put_block(matrix, row, col, block_1d, lb_row_col, transposed, summation, flop, scale)
      END SUBROUTINE dbcsr_put_block2d_d