Conjugate a DBCSR matrix
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(dbcsr_type), | intent(inout) | :: | matrix |
DBCSR matrix |
SUBROUTINE dbcsr_conjg(matrix)
!! Conjugate a DBCSR matrix
TYPE(dbcsr_type), INTENT(INOUT) :: matrix
!! DBCSR matrix
CHARACTER(len=*), PARAMETER :: routineN = 'dbcsr_conjg'
INTEGER :: blk, col, data_type, handle, row
LOGICAL :: tr
TYPE(dbcsr_data_obj) :: data_any
TYPE(dbcsr_iterator) :: iter
! ---------------------------------------------------------------------------
!
CALL timeset(routineN, handle)
data_type = dbcsr_get_data_type(matrix)
CALL dbcsr_data_init(data_any)
CALL dbcsr_data_new(data_any, data_type)
CALL dbcsr_iterator_start(iter, matrix)
DO WHILE (dbcsr_iterator_blocks_left(iter))
CALL dbcsr_iterator_next_block(iter, row, col, data_any, tr, blk)
SELECT CASE (data_type)
CASE (dbcsr_type_complex_4)
data_any%d%c_sp = CONJG(data_any%d%c_sp)
CASE (dbcsr_type_complex_8)
data_any%d%c_dp = CONJG(data_any%d%c_dp)
CASE DEFAULT
! needed for g95
END SELECT
END DO
CALL dbcsr_iterator_stop(iter)
CALL dbcsr_data_clear_pointer(data_any)
CALL dbcsr_data_release(data_any)
CALL timestop(handle)
END SUBROUTINE dbcsr_conjg