32 subroutine mpp_transmit_scalar_( put_data, to_pe, get_data, from_pe, plen, glen, block, tag, &
33 recv_request, send_request)
34 integer,
intent(in) :: to_pe, from_pe
35 mpp_type_,
intent(in) :: put_data
36 mpp_type_,
intent(out) :: get_data
37 integer,
optional,
intent(in) :: plen, glen
38 logical,
intent(in),
optional :: block
39 integer,
intent(in),
optional :: tag
40 integer,
intent(out),
optional :: recv_request, send_request
41 integer :: put_len, get_len
42 mpp_type_ :: put_data1d(1), get_data1d(1)
43 pointer( ptrp, put_data1d )
44 pointer( ptrg, get_data1d )
46 get_data = mpp_type_init_value
50 put_len=1;
if(
PRESENT(plen))put_len=plen
51 get_len=1;
if(
PRESENT(glen))get_len=glen
52 call mpp_transmit_ ( put_data1d, put_len, to_pe, get_data1d, get_len, from_pe, block, tag, &
53 recv_request=recv_request, send_request=send_request )
56 end subroutine mpp_transmit_scalar_
58 subroutine mpp_transmit_2d_( put_data, put_len, to_pe, get_data, get_len, from_pe, block, tag, &
59 recv_request, send_request )
60 integer,
intent(in) :: put_len, to_pe, get_len, from_pe
61 mpp_type_,
intent(in) :: put_data(:,:)
62 mpp_type_,
intent(out) :: get_data(:,:)
63 logical,
intent(in),
optional :: block
64 integer,
intent(in),
optional :: tag
65 integer,
intent(out),
optional :: recv_request, send_request
66 mpp_type_ :: put_data1d(put_len), get_data1d(get_len)
68 pointer( ptrp, put_data1d )
69 pointer( ptrg, get_data1d )
70 get_data = mpp_type_init_value
74 call mpp_transmit( put_data1d, put_len, to_pe, get_data1d, get_len, from_pe, block, tag, &
75 recv_request=recv_request, send_request=send_request )
78 end subroutine mpp_transmit_2d_
80 subroutine mpp_transmit_3d_( put_data, put_len, to_pe, get_data, get_len, from_pe, block, tag, &
81 recv_request, send_request )
82 integer,
intent(in) :: put_len, to_pe, get_len, from_pe
83 mpp_type_,
intent(in) :: put_data(:,:,:)
84 mpp_type_,
intent(out) :: get_data(:,:,:)
85 logical,
intent(in),
optional :: block
86 integer,
intent(in),
optional :: tag
87 integer,
intent(out),
optional :: recv_request, send_request
88 mpp_type_ :: put_data1d(put_len), get_data1d(get_len)
90 pointer( ptrp, put_data1d )
91 pointer( ptrg, get_data1d )
92 get_data = mpp_type_init_value
96 call mpp_transmit( put_data1d, put_len, to_pe, get_data1d, get_len, from_pe, block, tag, &
97 recv_request=recv_request, send_request=send_request )
100 end subroutine mpp_transmit_3d_
102 subroutine mpp_transmit_4d_( put_data, put_len, to_pe, get_data, get_len, from_pe, block, tag, &
103 recv_request, send_request )
104 integer,
intent(in) :: put_len, to_pe, get_len, from_pe
105 mpp_type_,
intent(in) :: put_data(:,:,:,:)
106 mpp_type_,
intent(out) :: get_data(:,:,:,:)
107 logical,
intent(in),
optional :: block
108 integer,
intent(in),
optional :: tag
109 integer,
intent(out),
optional :: recv_request, send_request
110 mpp_type_ :: put_data1d(put_len), get_data1d(get_len)
112 pointer( ptrp, put_data1d )
113 pointer( ptrg, get_data1d )
114 get_data = mpp_type_init_value
118 call mpp_transmit( put_data1d, put_len, to_pe, get_data1d, get_len, from_pe, block, tag, &
119 recv_request=recv_request, send_request=send_request )
122 end subroutine mpp_transmit_4d_
124 subroutine mpp_transmit_5d_( put_data, put_len, to_pe, get_data, get_len, from_pe, block, tag, &
125 recv_request, send_request )
126 integer,
intent(in) :: put_len, to_pe, get_len, from_pe
127 mpp_type_,
intent(in) :: put_data(:,:,:,:,:)
128 mpp_type_,
intent(out) :: get_data(:,:,:,:,:)
129 logical,
intent(in),
optional :: block
130 integer,
intent(in),
optional :: tag
131 integer,
intent(out),
optional :: recv_request, send_request
132 mpp_type_ :: put_data1d(put_len), get_data1d(get_len)
134 pointer( ptrp, put_data1d )
135 pointer( ptrg, get_data1d )
136 get_data = mpp_type_init_value
140 call mpp_transmit( put_data1d, put_len, to_pe, get_data1d, get_len, from_pe, block, tag, &
141 recv_request=recv_request, send_request=send_request )
144 end subroutine mpp_transmit_5d_
151 subroutine mpp_recv_( get_data, get_len, from_pe, block, tag, request )
153 integer,
intent(in) :: get_len, from_pe
154 mpp_type_,
intent(out) :: get_data(*)
155 logical,
intent(in),
optional :: block
156 integer,
intent(in),
optional :: tag
157 integer,
intent(out),
optional :: request
159 mpp_type_ :: dummy(1)
160 call mpp_transmit( dummy, 1, null_pe, get_data, get_len, from_pe, block, tag, recv_request=request )
161 end subroutine mpp_recv_
163 subroutine mpp_send_( put_data, put_len, to_pe, tag, request )
165 integer,
intent(in) :: put_len, to_pe
166 mpp_type_,
intent(in) :: put_data(*)
167 integer,
intent(in),
optional :: tag
168 integer,
intent(out),
optional :: request
169 mpp_type_ :: dummy(1)
170 call mpp_transmit( put_data, put_len, to_pe, dummy, 1, null_pe, tag=tag, send_request=request )
171 end subroutine mpp_send_
173 subroutine mpp_recv_scalar_( get_data, from_pe, glen, block, tag, request )
175 integer,
intent(in) :: from_pe
176 mpp_type_,
intent(out) :: get_data
177 logical,
intent(in),
optional :: block
178 integer,
intent(in),
optional :: tag
179 integer,
intent(out),
optional :: request
181 integer,
optional,
intent(in) :: glen
183 mpp_type_ :: get_data1d(1)
184 mpp_type_ :: dummy(1)
186 pointer( ptr, get_data1d )
187 get_data = mpp_type_init_value
190 get_len=1;
if(
PRESENT(glen))get_len=glen
191 call mpp_transmit( dummy, 1, null_pe, get_data1d, get_len, from_pe, block, tag, recv_request=request )
193 end subroutine mpp_recv_scalar_
195 subroutine mpp_send_scalar_( put_data, to_pe, plen, tag, request)
197 integer,
intent(in) :: to_pe
198 mpp_type_,
intent(in) :: put_data
199 integer,
optional,
intent(in) :: plen
200 integer,
intent(in),
optional :: tag
201 integer,
intent(out),
optional :: request
203 mpp_type_ :: put_data1d(1)
204 mpp_type_ :: dummy(1)
206 pointer( ptr, put_data1d )
208 put_len=1;
if(
PRESENT(plen))put_len=plen
209 call mpp_transmit( put_data1d, put_len, to_pe, dummy, 1, null_pe, tag = tag, send_request=request )
211 end subroutine mpp_send_scalar_
213 subroutine mpp_recv_2d_( get_data, get_len, from_pe, block, tag, request )
215 integer,
intent(in) :: get_len, from_pe
216 mpp_type_,
intent(out) :: get_data(:,:)
217 logical,
intent(in),
optional :: block
218 integer,
intent(in),
optional :: tag
219 integer,
intent(out),
optional :: request
221 mpp_type_ :: dummy(1,1)
222 call mpp_transmit( dummy, 1, null_pe, get_data, get_len, from_pe, block, tag, recv_request=request )
223 end subroutine mpp_recv_2d_
225 subroutine mpp_send_2d_( put_data, put_len, to_pe, tag, request )
227 integer,
intent(in) :: put_len, to_pe
228 mpp_type_,
intent(in) :: put_data(:,:)
229 integer,
intent(in),
optional :: tag
230 integer,
intent(out),
optional :: request
231 mpp_type_ :: dummy(1,1)
232 call mpp_transmit( put_data, put_len, to_pe, dummy, 1, null_pe, tag = tag, send_request=request )
233 end subroutine mpp_send_2d_
235 subroutine mpp_recv_3d_( get_data, get_len, from_pe, block, tag, request )
237 integer,
intent(in) :: get_len, from_pe
238 mpp_type_,
intent(out) :: get_data(:,:,:)
239 logical,
intent(in),
optional :: block
240 integer,
intent(in),
optional :: tag
241 integer,
intent(out),
optional :: request
243 mpp_type_ :: dummy(1,1,1)
244 call mpp_transmit( dummy, 1, null_pe, get_data, get_len, from_pe, block, tag, recv_request=request )
245 end subroutine mpp_recv_3d_
247 subroutine mpp_send_3d_( put_data, put_len, to_pe, tag, request )
249 integer,
intent(in) :: put_len, to_pe
250 mpp_type_,
intent(in) :: put_data(:,:,:)
251 integer,
intent(in),
optional :: tag
252 integer,
intent(out),
optional :: request
253 mpp_type_ :: dummy(1,1,1)
254 call mpp_transmit( put_data, put_len, to_pe, dummy, 1, null_pe, tag = tag, send_request=request )
255 end subroutine mpp_send_3d_
257 subroutine mpp_recv_4d_( get_data, get_len, from_pe, block, tag, request )
259 integer,
intent(in) :: get_len, from_pe
260 mpp_type_,
intent(out) :: get_data(:,:,:,:)
261 logical,
intent(in),
optional :: block
262 integer,
intent(in),
optional :: tag
263 integer,
intent(out),
optional :: request
265 mpp_type_ :: dummy(1,1,1,1)
266 call mpp_transmit( dummy, 1, null_pe, get_data, get_len, from_pe, block, tag, recv_request=request )
267 end subroutine mpp_recv_4d_
269 subroutine mpp_send_4d_( put_data, put_len, to_pe, tag, request )
271 integer,
intent(in) :: put_len, to_pe
272 mpp_type_,
intent(in) :: put_data(:,:,:,:)
273 integer,
intent(in),
optional :: tag
274 integer,
intent(out),
optional :: request
275 mpp_type_ :: dummy(1,1,1,1)
276 call mpp_transmit( put_data, put_len, to_pe, dummy, 1, null_pe, tag = tag, send_request=request )
277 end subroutine mpp_send_4d_
279 subroutine mpp_recv_5d_( get_data, get_len, from_pe, block, tag, request)
281 integer,
intent(in) :: get_len, from_pe
282 mpp_type_,
intent(out) :: get_data(:,:,:,:,:)
283 logical,
intent(in),
optional :: block
284 integer,
intent(in),
optional :: tag
285 integer,
intent(out),
optional :: request
287 mpp_type_ :: dummy(1,1,1,1,1)
288 call mpp_transmit( dummy, 1, null_pe, get_data, get_len, from_pe, block, tag, recv_request=request )
289 end subroutine mpp_recv_5d_
291 subroutine mpp_send_5d_( put_data, put_len, to_pe, tag, request )
293 integer,
intent(in) :: put_len, to_pe
294 mpp_type_,
intent(in) :: put_data(:,:,:,:,:)
295 integer,
intent(in),
optional :: tag
296 integer,
intent(out),
optional :: request
297 mpp_type_ :: dummy(1,1,1,1,1)
298 call mpp_transmit( put_data, put_len, to_pe, dummy, 1, null_pe, tag = tag, send_request=request )
299 end subroutine mpp_send_5d_
307 subroutine mpp_broadcast_scalar_( broadcast_data, from_pe, pelist )
308 mpp_type_,
intent(inout) :: broadcast_data
309 integer,
intent(in) :: from_pe
310 integer,
intent(in),
optional :: pelist(:)
311 mpp_type_ :: data1d(1)
313 pointer( ptr, data1d )
315 ptr = loc(broadcast_data)
316 call mpp_broadcast_( data1d, 1, from_pe, pelist )
319 end subroutine mpp_broadcast_scalar_
321 subroutine mpp_broadcast_2d_( broadcast_data, length, from_pe, pelist )
325 mpp_type_,
intent(inout) :: broadcast_data(:,:)
326 integer,
intent(in) :: length, from_pe
327 integer,
intent(in),
optional :: pelist(:)
328 mpp_type_ :: data1d(length)
330 pointer( ptr, data1d )
331 ptr = loc(broadcast_data)
332 call mpp_broadcast( data1d, length, from_pe, pelist )
335 end subroutine mpp_broadcast_2d_
337 subroutine mpp_broadcast_3d_( broadcast_data, length, from_pe, pelist )
341 mpp_type_,
intent(inout) :: broadcast_data(:,:,:)
342 integer,
intent(in) :: length, from_pe
343 integer,
intent(in),
optional :: pelist(:)
344 mpp_type_ :: data1d(length)
346 pointer( ptr, data1d )
347 ptr = loc(broadcast_data)
348 call mpp_broadcast( data1d, length, from_pe, pelist )
351 end subroutine mpp_broadcast_3d_
353 subroutine mpp_broadcast_4d_( broadcast_data, length, from_pe, pelist )
357 mpp_type_,
intent(inout) :: broadcast_data(:,:,:,:)
358 integer,
intent(in) :: length, from_pe
359 integer,
intent(in),
optional :: pelist(:)
360 mpp_type_ :: data1d(length)
362 pointer( ptr, data1d )
363 ptr = loc(broadcast_data)
364 call mpp_broadcast( data1d, length, from_pe, pelist )
367 end subroutine mpp_broadcast_4d_
369 subroutine mpp_broadcast_5d_( broadcast_data, length, from_pe, pelist )
373 mpp_type_,
intent(inout) :: broadcast_data(:,:,:,:,:)
374 integer,
intent(in) :: length, from_pe
375 integer,
intent(in),
optional :: pelist(:)
376 mpp_type_ :: data1d(length)
378 pointer( ptr, data1d )
379 ptr = loc(broadcast_data)
380 call mpp_broadcast( data1d, length, from_pe, pelist )
383 end subroutine mpp_broadcast_5d_