FUNCTION mp_type_indexed_make_z (count, lengths, displs) &
RESULT(type_descriptor)
INTEGER, INTENT(IN) :: count
INTEGER, DIMENSION(1:count), INTENT(IN), TARGET :: lengths, displs
TYPE(mp_type_descriptor_type) :: type_descriptor
CHARACTER(LEN=*), PARAMETER :: routineN = 'mp_type_indexed_make_z'
INTEGER :: ierr, handle
ierr = 0
CALL timeset(routineN, handle)
#if defined(__parallel)
CALL mpi_type_indexed(count, lengths, displs, MPI_DOUBLE_COMPLEX, &
type_descriptor%type_handle, ierr)
IF (ierr /= 0) &
DBCSR_ABORT("MPI_Type_Indexed @ "//routineN)
CALL mpi_type_commit(type_descriptor%type_handle, ierr)
IF (ierr /= 0) &
DBCSR_ABORT("MPI_Type_commit @ "//routineN)
#else
type_descriptor%type_handle = 7
#endif
type_descriptor%length = count
NULLIFY (type_descriptor%subtype)
type_descriptor%vector_descriptor(1:2) = 1
type_descriptor%has_indexing = .TRUE.
type_descriptor%index_descriptor%index => lengths
type_descriptor%index_descriptor%chunks => displs
CALL timestop(handle)
END FUNCTION mp_type_indexed_make_z