Interface for dbcsr_set
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(dbcsr_type), | intent(inout) | :: | matrix | |||
complex(kind=real_4), | intent(in) | :: | alpha |
SUBROUTINE dbcsr_set_c (matrix, alpha)
!! Interface for dbcsr_set
TYPE(dbcsr_type), INTENT(INOUT) :: matrix
COMPLEX(kind=real_4), INTENT(IN) :: alpha
CHARACTER(len=*), PARAMETER :: routineN = 'dbcsr_set'
INTEGER :: col, handle, row
TYPE(dbcsr_iterator) :: iter
COMPLEX(kind=real_4), DIMENSION(:, :), POINTER :: block
LOGICAL :: tr
CALL timeset(routineN, handle)
IF (alpha == CMPLX(0.0, 0.0, real_4)) THEN
CALL dbcsr_zero(matrix)
ELSE
IF (dbcsr_get_data_type(matrix) /= dbcsr_type_complex_4) &
DBCSR_ABORT("Incompatible data types")
!TODO: could be speedup by direct assignment to data_area, similar to dbcsr_zero()
CALL dbcsr_iterator_start(iter, matrix)
DO WHILE (dbcsr_iterator_blocks_left(iter))
CALL dbcsr_iterator_next_block(iter, row, col, block, tr)
block(:, :) = alpha
END DO
CALL dbcsr_iterator_stop(iter)
END IF
CALL timestop(handle)
END SUBROUTINE dbcsr_set_c