Put a 2-D block in a DBCSR matrix
Type | Intent | Optional | 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 |
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