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)