207
  208
  209
  210
  211
  212
  213
  214      INTEGER N, DTYPE, SRC, MSGID
  215
  216
  217      REAL BUFF(*)
  218
  219
  220
  221
  222
  223
  224
  225
  226
  227
  228
  229
  230
  231
  232
  233
  234
  235
  236
  237
  238
  239
  240
  241
  242
  243
  244
  245
  246
  247
  248
  249
  250      INTEGER MPIDTYPE
  251
  252
  253      include 'mpif.h'
  254
  255
  256      INTEGER STAT(MPI_STATUS_SIZE)
  257
  258
  259      COMMON /btmpi/ btcomm, ierr
  260      INTEGER BTCOMM, IERR
  261
  262      IF( dtype .EQ. 1 ) THEN
  263         mpidtype = mpi_byte
  264      ELSE IF( dtype .EQ. 3 ) THEN
  265         mpidtype = mpi_integer
  266      ELSE IF( dtype .EQ. 4 ) THEN
  267         mpidtype = mpi_real
  268      ELSE IF( dtype .EQ. 5 ) THEN
  269         mpidtype = mpi_complex
  270      ELSE IF( dtype .EQ. 6 ) THEN
  271         mpidtype = mpi_double_precision
  272      ELSE IF( dtype .EQ. 7 ) THEN
  273         mpidtype = mpi_double_complex
  274      END IF
  275
  276      CALL mpi_recv( buff, n, mpidtype, src, 0, btcomm, stat, ierr )
  277      IF (ierr.NE.0) 
CALL btmpierr(
"MPI_RECV", ierr)
 
  278
  279      RETURN
  280
  281
  282
subroutine btmpierr(rout, ierr0)