Allocates pointers in the data type
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(dbcsr_data_area_type), | intent(inout) | :: | area |
internal structure holding array pointers |
SUBROUTINE internal_data_deallocate(area)
!! Allocates pointers in the data type
TYPE(dbcsr_data_area_type), INTENT(INOUT) :: area
!! internal structure holding array pointers
CHARACTER(len=*), PARAMETER :: routineN = 'internal_data_deallocate'
INTEGER :: handle
! ---------------------------------------------------------------------------
IF (careful_mod) &
CALL timeset(routineN, handle)
SELECT CASE (area%data_type)
CASE (dbcsr_type_int_4)
CALL memory_deallocate(area%i4, mem_type=area%memory_type)
NULLIFY (area%i4)
CASE (dbcsr_type_int_8)
CALL memory_deallocate(area%i8, mem_type=area%memory_type)
NULLIFY (area%i8)
CASE (dbcsr_type_real_4)
CALL memory_deallocate(area%r_sp, mem_type=area%memory_type)
NULLIFY (area%r_sp)
CASE (dbcsr_type_real_8)
CALL memory_deallocate(area%r_dp, mem_type=area%memory_type)
NULLIFY (area%r_dp)
CASE (dbcsr_type_complex_4)
CALL memory_deallocate(area%c_sp, mem_type=area%memory_type)
NULLIFY (area%c_sp)
CASE (dbcsr_type_complex_8)
CALL memory_deallocate(area%c_dp, mem_type=area%memory_type)
NULLIFY (area%c_dp)
CASE (dbcsr_type_real_4_2d)
CALL memory_deallocate(area%r2_sp, mem_type=area%memory_type)
NULLIFY (area%r2_sp)
CASE (dbcsr_type_real_8_2d)
CALL memory_deallocate(area%r2_dp, mem_type=area%memory_type)
NULLIFY (area%r2_dp)
CASE (dbcsr_type_complex_4_2d)
CALL memory_deallocate(area%c2_sp, mem_type=area%memory_type)
NULLIFY (area%c2_sp)
CASE (dbcsr_type_complex_8_2d)
CALL memory_deallocate(area%c2_dp, mem_type=area%memory_type)
NULLIFY (area%c2_dp)
CASE default
DBCSR_ABORT("Invalid data type.")
END SELECT
IF (area%memory_type%acc_devalloc) THEN
IF (acc_devmem_allocated(area%acc_devmem)) &
CALL acc_devmem_deallocate(area%acc_devmem)
CALL acc_event_destroy(area%acc_ready)
END IF
IF (careful_mod) &
CALL timestop(handle)
END SUBROUTINE internal_data_deallocate