Send/Recv function of encapsulated data.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(dbcsr_data_obj), | intent(in) | :: | msgin | |||
integer, | intent(in) | :: | dest | |||
type(dbcsr_data_obj), | intent(inout) | :: | msgout | |||
integer, | intent(in) | :: | source | |||
integer, | intent(in) | :: | grp | |||
integer, | intent(out) | :: | send_request | |||
integer, | intent(out) | :: | recv_request |
SUBROUTINE dbcsr_isendrecv_any(msgin, dest, msgout, source, grp, send_request, recv_request)
!! Send/Recv function of encapsulated data.
TYPE(dbcsr_data_obj), INTENT(IN) :: msgin
INTEGER, INTENT(IN) :: dest
TYPE(dbcsr_data_obj), INTENT(INOUT) :: msgout
INTEGER, INTENT(IN) :: source, grp
INTEGER, INTENT(OUT) :: send_request, recv_request
IF (dbcsr_data_get_type(msgin) .NE. dbcsr_data_get_type(msgout)) &
DBCSR_ABORT("Different data type for msgin and msgout")
SELECT CASE (dbcsr_data_get_type(msgin))
CASE (dbcsr_type_real_4)
CALL mp_isendrecv(msgin%d%r_sp, dest, &
msgout%d%r_sp, source, &
grp, send_request, recv_request)
CASE (dbcsr_type_real_8)
CALL mp_isendrecv(msgin%d%r_dp, dest, &
msgout%d%r_dp, source, &
grp, send_request, recv_request)
CASE (dbcsr_type_complex_4)
CALL mp_isendrecv(msgin%d%c_sp, dest, &
msgout%d%c_sp, source, &
grp, send_request, recv_request)
CASE (dbcsr_type_complex_8)
CALL mp_isendrecv(msgin%d%c_dp, dest, &
msgout%d%c_dp, source, &
grp, send_request, recv_request)
CASE default
DBCSR_ABORT("Incorrect data type")
END SELECT
END SUBROUTINE dbcsr_isendrecv_any