Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | count | |||
integer, | intent(in), | DIMENSION(1:count), TARGET | :: | lengths | ||
integer, | intent(in), | DIMENSION(1:count), TARGET | :: | displs |
FUNCTION mp_type_indexed_make_l (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_l' INTEGER :: ierr, handle ierr = 0 CALL timeset(routineN, handle) #if defined(__parallel) CALL mpi_type_indexed(count, lengths, displs, MPI_INTEGER8, & 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 = 19 #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_l