File: /nfs/home/0/users/jenkins/mfix.git/model/dmp_modules/mpi_donothing/mpi_utility_mod.f

1     !       MPI Modules written at ORNL by Ed and Sreekanth for MFIX
2     !       under joint effort with FETC - 06/08/99.
3     
4             module mpi_utility
5     
6     !       module to perform most of the mpi functionalities like scatter,
7     !       gather, bcast, globalsum and so on.
8     
9             use geometry
10             use compar
11             use parallel_mpi
12             use debug
13             use indices
14             implicit none
15     
16     !       Object-oriented approach to direct to the correct procedure
17     !       depending on the argument type. i stands for integer, r for real
18     !       and d for double precision. 0 for scalar, 1 for vector, 2 for
19     !       2-D array and similarly 3.
20     
21     !==============================================================================
22     !  JFD: Interfaces used for vtk file writting (Cartesian grid):
23     !==============================================================================
24     
25             interface allgather
26             module  procedure allgather_1i
27             end interface
28     
29             interface gatherv
30             module  procedure gatherv_1d
31             end interface
32     
33     !==============================================================================
34     !  JFD: End of Interfaces used for vtk file writting (Cartesian grid):
35     !==============================================================================
36     
37     
38             interface scatter
39             module  procedure scatter_1i, scatter_2i, scatter_3i, &
40                               scatter_1r, scatter_2r, scatter_3r, &
41                               scatter_1d, scatter_2d, scatter_3d, &
42                               scatter_1c,scatter_1l
43             end interface
44     
45             interface gather
46             module  procedure gather_1i, gather_2i, gather_3i, &
47                               gather_1r, gather_2r, gather_3r, &
48                               gather_1d, gather_2d, gather_3d, &
49                               gather_1c, gather_1l
50             end interface
51     
52             interface bcast
53             module  procedure bcast_0i, bcast_1i, bcast_2i, bcast_3i, &
54                               bcast_0r, bcast_1r, bcast_2r, bcast_3r, &
55                               bcast_0d, bcast_1d, bcast_2d, bcast_3d, &
56                               bcast_0l, bcast_1l, bcast_0c, bcast_1c
57             end interface
58     
59             interface global_sum
60             module  procedure global_sum_0i, global_sum_1i, global_sum_2i, global_sum_3i, &
61                               global_sum_0r, global_sum_1r, global_sum_2r, global_sum_3r, &
62                               global_sum_0d, global_sum_1d, global_sum_2d, global_sum_3d
63             end interface
64     
65             interface global_all_sum
66             module  procedure &
67                               global_all_sum_0i, global_all_sum_1i, &
68                               global_all_sum_2i, global_all_sum_3i, &
69                               global_all_sum_0r, global_all_sum_1r, &
70                               global_all_sum_2r, global_all_sum_3r, &
71                               global_all_sum_0d, global_all_sum_1d, &
72                               global_all_sum_2d, global_all_sum_3d, &
73                               global_all_sum_onevar_0i, global_all_sum_onevar_1i, &
74                               global_all_sum_onevar_2i, global_all_sum_onevar_3i, &
75                               global_all_sum_onevar_0r, global_all_sum_onevar_1r, &
76                               global_all_sum_onevar_2r, global_all_sum_onevar_3r, &
77                               global_all_sum_onevar_0d, global_all_sum_onevar_1d, &
78                               global_all_sum_onevar_2d, global_all_sum_onevar_3d
79             end interface
80     
81             interface global_min
82             module  procedure global_min_0i, global_min_1i, global_min_2i, global_min_3i, &
83                               global_min_0r, global_min_1r, global_min_2r, global_min_3r, &
84                               global_min_0d, global_min_1d, global_min_2d, global_min_3d
85             end interface
86     
87             interface global_all_min
88             module  procedure &
89                               global_all_min_0i, global_all_min_1i, &
90                               global_all_min_2i, global_all_min_3i, &
91                               global_all_min_0r, global_all_min_1r, &
92                               global_all_min_2r, global_all_min_3r, &
93                               global_all_min_0d, global_all_min_1d, &
94                               global_all_min_2d, global_all_min_3d, &
95                               global_all_min_onevar_0i, global_all_min_onevar_1i, &
96                               global_all_min_onevar_2i, global_all_min_onevar_3i, &
97                               global_all_min_onevar_0r, global_all_min_onevar_1r, &
98                               global_all_min_onevar_2r, global_all_min_onevar_3r, &
99                               global_all_min_onevar_0d, global_all_min_onevar_1d, &
100                               global_all_min_onevar_2d, global_all_min_onevar_3d
101             end interface
102     
103             interface global_max
104             module  procedure global_max_0i, global_max_1i, global_max_2i, global_max_3i, &
105                               global_max_0r, global_max_1r, global_max_2r, global_max_3r, &
106                               global_max_0d, global_max_1d, global_max_2d, global_max_3d
107             end interface
108     
109             interface global_all_max
110             module  procedure &
111                               global_all_max_0i, global_all_max_1i, &
112                               global_all_max_2i, global_all_max_3i, &
113                               global_all_max_0r, global_all_max_1r, &
114                               global_all_max_2r, global_all_max_3r, &
115                               global_all_max_0d, global_all_max_1d, &
116                               global_all_max_2d, global_all_max_3d, &
117                               global_all_max_onevar_0i, global_all_max_onevar_1i, &
118                               global_all_max_onevar_2i, global_all_max_onevar_3i, &
119                               global_all_max_onevar_0r, global_all_max_onevar_1r, &
120                               global_all_max_onevar_2r, global_all_max_onevar_3r, &
121                               global_all_max_onevar_0d, global_all_max_onevar_1d, &
122                               global_all_max_onevar_2d, global_all_max_onevar_3d
123             end interface
124     
125             interface global_all_and
126             module procedure &
127                     global_all_and_0d, global_all_and_1d, &
128                     global_all_and_onevar_0d, global_all_and_onevar_1d
129             end interface
130     
131             interface global_all_or
132             module procedure &
133                     global_all_or_0d, global_all_or_1d, &
134                     global_all_or_onevar_0d, global_all_or_onevar_1d
135             end interface
136     
137             contains
138     
139     !==============================================================================
140     !  JFD: Subroutines used for vtk file writting (Cartesian grid):
141     !==============================================================================
142     
143             subroutine allgather_1i( lbuf, gbuf, idebug )
144             integer, intent(in) :: lbuf
145             integer, intent(out), dimension(:) :: gbuf
146             integer, optional, intent(in) :: idebug
147     !       do nothing
148             gbuf = 0
149             return
150             end subroutine allgather_1i
151     
152             subroutine allgather_1d( lbuf, gbuf, idebug )
153             double precision, intent(in) :: lbuf
154             double precision, intent(out), dimension(:) :: gbuf
155             integer, optional, intent(in) ::  idebug
156     !       do nothing
157             gbuf = 0
158             return
159             end subroutine allgather_1d
160     
161             subroutine gatherv_1i( lbuf, sendcnt, gbuf, rcount, disp, mroot, idebug )
162             integer, intent(in), dimension(:) :: lbuf
163             integer, intent(in), dimension(:) :: rcount
164             integer, intent(in), dimension(:) :: disp
165             integer, intent(out), dimension(:) :: gbuf
166             integer, optional, intent(in) :: mroot, idebug
167             integer :: sendtype,recvtype,sendcnt,recvcnt,lroot,ierr,lidebug
168     
169     !       do nothing
170     
171        gbuf = lbuf
172     
173             return
174             end subroutine gatherv_1i
175     
176             subroutine gatherv_1d( lbuf, sendcnt, gbuf, rcount, disp, mroot, idebug )
177             double precision, intent(in), dimension(:) :: lbuf
178             double precision, intent(out), dimension(:) :: gbuf
179             integer, intent(in), dimension(:) :: rcount
180             integer, intent(in), dimension(:) :: disp
181             integer, optional, intent(in) :: mroot, idebug
182             integer :: sendtype,recvtype,sendcnt,recvcnt,lroot,ierr,lidebug
183             gbuf = lbuf
184             return
185             end subroutine gatherv_1d
186     
187     !==============================================================================
188     !  JFD: End of Subroutines used for vtk file writting (Cartesian grid):
189     !==============================================================================
190     
191     
192     !       Routine to scatter gbuf available on root to all the processors
193     
194             subroutine scatter_1i( lbuf, gbuf, mroot, idebug )
195             integer, intent(in), dimension(:) :: gbuf
196             integer, intent(out), dimension(:) :: lbuf
197             integer, optional, intent(in) :: mroot, idebug
198             lbuf = gbuf
199             return
200             end subroutine scatter_1i
201     
202             subroutine scatter_2i( lbuf, gbuf, mroot, idebug )
203             integer, intent(in), dimension(:,:) :: gbuf
204             integer, intent(out), dimension(:,:) :: lbuf
205             integer, optional, intent(in) :: mroot, idebug
206             lbuf = gbuf
207             return
208             end subroutine scatter_2i
209     
210             subroutine scatter_3i( lbuf, gbuf, mroot, idebug )
211             integer, intent(in), dimension(:,:,:) :: gbuf
212             integer, intent(out), dimension(:,:,:) :: lbuf
213             integer, optional, intent(in) :: mroot, idebug
214             lbuf = gbuf
215             return
216             end subroutine scatter_3i
217     
218             subroutine scatter_1r( lbuf, gbuf, mroot, idebug )
219             real, intent(in), dimension(:) :: gbuf
220             real, intent(out), dimension(:) :: lbuf
221             integer, optional, intent(in) :: mroot, idebug
222             lbuf = gbuf
223             return
224             end subroutine scatter_1r
225     
226     
227             subroutine scatter_2r( lbuf, gbuf, mroot, idebug )
228             real, intent(in), dimension(:,:) :: gbuf
229             real, intent(out), dimension(:,:) :: lbuf
230             integer, optional, intent(in) :: mroot, idebug
231             lbuf = gbuf
232             return
233             end subroutine scatter_2r
234     
235             subroutine scatter_3r( lbuf, gbuf, mroot, idebug )
236             real, intent(in), dimension(:,:,:) :: gbuf
237             real, intent(out), dimension(:,:,:) :: lbuf
238             integer, optional, intent(in) :: mroot, idebug
239             lbuf = gbuf
240             return
241             end subroutine scatter_3r
242     
243     
244             subroutine scatter_1d( lbuf, gbuf, mroot, idebug )
245             double precision, intent(in), dimension(:) :: gbuf
246             double precision, intent(out), dimension(:) :: lbuf
247             integer, optional, intent(in) :: mroot, idebug
248             lbuf = gbuf
249             return
250             end subroutine scatter_1d
251     
252     
253             subroutine scatter_2d( lbuf, gbuf, mroot, idebug )
254             double precision, intent(in), dimension(:,:) :: gbuf
255             double precision, intent(out), dimension(:,:) :: lbuf
256             integer, optional, intent(in) :: mroot, idebug
257             lbuf = gbuf
258             return
259             end subroutine scatter_2d
260     
261             subroutine scatter_3d( lbuf, gbuf, mroot, idebug )
262             double precision, intent(in), dimension(:,:,:) :: gbuf
263             double precision, intent(out), dimension(:,:,:) :: lbuf
264             integer, optional, intent(in) :: mroot, idebug
265             lbuf = gbuf
266             return
267             end subroutine scatter_3d
268     
269     
270             subroutine scatter_1c( lbuf, gbuf, mroot, idebug )
271             character(len=*), intent(in), dimension(:) :: gbuf
272             character(len=*), intent(out), dimension(:) :: lbuf
273             integer, optional, intent(in) :: mroot, idebug
274             lbuf = gbuf
275             return
276             end subroutine scatter_1c
277     
278     
279             subroutine scatter_1l( lbuf, gbuf, mroot, idebug )
280             logical, intent(in), dimension(:) :: gbuf
281             logical, intent(out), dimension(:) :: lbuf
282             integer, optional, intent(in) :: mroot, idebug
283             lbuf = gbuf
284             return
285             end subroutine scatter_1l
286     
287     
288     !       Routines to gather lbuf from individual processors and put it on
289     !       processor root in gbuf
290     !       Logic is similar to the scatter routines above.
291     
292             subroutine gather_1i( lbuf, gbuf, mroot, idebug )
293             integer, intent(in), dimension(:) :: lbuf
294             integer, intent(out), dimension(:) :: gbuf
295             integer, optional, intent(in) :: mroot, idebug
296             gbuf = lbuf
297             return
298             end subroutine gather_1i
299     
300     
301             subroutine gather_2i( lbuf, gbuf, mroot, idebug )
302             integer, intent(in), dimension(:,:) :: lbuf
303             integer, intent(out), dimension(:,:) :: gbuf
304             integer, optional, intent(in) :: mroot, idebug
305             gbuf = lbuf
306             return
307             end subroutine gather_2i
308     
309             subroutine gather_3i( lbuf, gbuf, mroot, idebug )
310             integer, intent(in), dimension(:,:,:) :: lbuf
311             integer, intent(out), dimension(:,:,:) :: gbuf
312             integer, optional, intent(in) :: mroot, idebug
313             gbuf = lbuf
314             return
315             end subroutine gather_3i
316     
317             subroutine gather_1r( lbuf, gbuf, mroot, idebug )
318             real, intent(in), dimension(:) :: lbuf
319             real, intent(out), dimension(:) :: gbuf
320             integer, optional, intent(in) :: mroot, idebug
321             gbuf = lbuf
322             return
323             end subroutine gather_1r
324     
325     
326             subroutine gather_2r( lbuf, gbuf, mroot, idebug )
327             real, intent(in), dimension(:,:) :: lbuf
328             real, intent(out), dimension(:,:) :: gbuf
329             integer, optional, intent(in) :: mroot, idebug
330             gbuf = lbuf
331             return
332             end subroutine gather_2r
333     
334             subroutine gather_3r( lbuf, gbuf, mroot, idebug )
335             real, intent(in), dimension(:,:,:) :: lbuf
336             real, intent(out), dimension(:,:,:) :: gbuf
337             integer, optional, intent(in) :: mroot, idebug
338             gbuf = lbuf
339             return
340             end subroutine gather_3r
341     
342     
343             subroutine gather_1d( lbuf, gbuf, mroot, idebug )
344             double precision, intent(in), dimension(:) :: lbuf
345             double precision, intent(out), dimension(:) :: gbuf
346             integer, optional, intent(in) :: mroot, idebug
347             gbuf = lbuf
348             return
349             end subroutine gather_1d
350     
351     
352             subroutine gather_2d( lbuf, gbuf, mroot, idebug )
353             double precision, intent(in), dimension(:,:) :: lbuf
354             double precision, intent(out), dimension(:,:) :: gbuf
355             integer, optional, intent(in) :: mroot, idebug
356             gbuf = lbuf
357             return
358             end subroutine gather_2d
359     
360             subroutine gather_3d( lbuf, gbuf, mroot, idebug )
361             double precision, intent(in), dimension(:,:,:) :: lbuf
362             double precision, intent(out), dimension(:,:,:) :: gbuf
363             integer, optional, intent(in) :: mroot, idebug
364             gbuf = lbuf
365             return
366             end subroutine gather_3d
367     
368     
369             subroutine gather_1c( lbuf, gbuf, mroot, idebug )
370             character(len=*), intent(in), dimension(:) :: lbuf
371             character(len=*), intent(out), dimension(:) :: gbuf
372             integer, optional, intent(in) :: mroot, idebug
373             gbuf = lbuf
374             return
375             end subroutine gather_1c
376     
377     
378             subroutine gather_1l( lbuf, gbuf, mroot, idebug )
379             logical, intent(in), dimension(:) :: lbuf
380             logical, intent(out), dimension(:) :: gbuf
381             integer, optional, intent(in) :: mroot, idebug
382             gbuf = lbuf
383             return
384             end subroutine gather_1l
385     
386     
387     !       Routines to broadcast information from processor 0 in buffer to all
388     !       the processors
389     
390             subroutine bcast_0i( buffer, mroot, idebug )
391             integer, intent(inout) :: buffer
392             integer, optional, intent(in) :: mroot, idebug
393             return
394             end subroutine bcast_0i
395     
396     
397             subroutine bcast_1i( buffer, mroot, idebug )
398             integer, intent(inout), dimension(:) :: buffer
399             integer, optional, intent(in) :: mroot, idebug
400             return
401             end subroutine bcast_1i
402     
403     
404             subroutine bcast_2i( buffer, mroot, idebug )
405             integer, intent(inout), dimension(:,:) :: buffer
406             integer, optional, intent(in) :: mroot, idebug
407             return
408             end subroutine bcast_2i
409     
410             subroutine bcast_3i( buffer, mroot, idebug )
411             integer, intent(inout), dimension(:,:,:) :: buffer
412             integer, optional, intent(in) :: mroot, idebug
413             return
414             end subroutine bcast_3i
415     
416             subroutine bcast_0r( buffer, mroot, idebug )
417             real, intent(inout) :: buffer
418             integer, optional, intent(in) :: mroot, idebug
419     
420             return
421             end subroutine bcast_0r
422     
423     
424             subroutine bcast_1r( buffer, mroot, idebug )
425             real, intent(inout), dimension(:) :: buffer
426             integer, optional, intent(in) :: mroot, idebug
427     
428             return
429             end subroutine bcast_1r
430     
431     
432             subroutine bcast_2r( buffer, mroot, idebug )
433             real, intent(inout), dimension(:,:) :: buffer
434             integer, optional, intent(in) :: mroot, idebug
435     
436             return
437             end subroutine bcast_2r
438     
439             subroutine bcast_3r( buffer, mroot, idebug )
440             real, intent(inout), dimension(:,:,:) :: buffer
441             integer, optional, intent(in) :: mroot, idebug
442     
443             return
444             end subroutine bcast_3r
445     
446             subroutine bcast_0d( buffer, mroot, idebug )
447             double precision, intent(inout) :: buffer
448             integer, optional, intent(in) :: mroot, idebug
449     
450             return
451             end subroutine bcast_0d
452     
453     
454             subroutine bcast_1d( buffer, mroot, idebug )
455             double precision, intent(inout), dimension(:) :: buffer
456             integer, optional, intent(in) :: mroot, idebug
457     
458             return
459             end subroutine bcast_1d
460     
461     
462             subroutine bcast_2d( buffer, mroot, idebug )
463             double precision, intent(inout), dimension(:,:) :: buffer
464             integer, optional, intent(in) :: mroot, idebug
465     
466             return
467             end subroutine bcast_2d
468     
469             subroutine bcast_3d( buffer, mroot, idebug )
470             double precision, intent(inout), dimension(:,:,:) :: buffer
471             integer, optional, intent(in) :: mroot, idebug
472     
473             return
474             end subroutine bcast_3d
475     
476             subroutine bcast_0c( buffer, mroot, idebug )
477             character(len=*), intent(inout) :: buffer
478             integer, optional, intent(in) :: mroot, idebug
479             character, allocatable, dimension(:) :: buffer1
480     
481             return
482             end subroutine bcast_0c
483     
484     
485             subroutine bcast_1c( buffer, mroot, idebug )
486             character(len=*), intent(inout), dimension(:) :: buffer
487             integer, optional, intent(in) :: mroot, idebug
488             character, allocatable, dimension(:) :: buffer1
489     
490             return
491             end subroutine bcast_1c
492     
493             subroutine bcast_0l( buffer, mroot, idebug )
494             logical, intent(inout) :: buffer
495             integer, optional, intent(in) :: mroot, idebug
496     
497             return
498             end subroutine bcast_0l
499     
500     
501             subroutine bcast_1l( buffer, mroot, idebug )
502             logical, intent(inout), dimension(:) :: buffer
503             integer, optional, intent(in) :: mroot, idebug
504     
505             return
506             end subroutine bcast_1l
507     
508     
509     !       Procedures to do global operations (Sum, Min, Max). _all_ routines
510     !       send the information to all the processors otherwise they are
511     !       kept on processor 0.
512     
513             subroutine global_sum_0i( lbuf, gbuf, mroot, idebug )
514             integer, intent(in) :: lbuf
515             integer, intent(out) :: gbuf
516             integer, optional, intent(in) :: mroot, idebug
517     
518             gbuf = lbuf
519     
520             return
521             end subroutine global_sum_0i
522     
523     
524             subroutine global_sum_1i( lbuf, gbuf, mroot, idebug )
525             integer, intent(in), dimension(:) :: lbuf
526             integer, intent(out), dimension(:) :: gbuf
527             integer, optional, intent(in) :: mroot, idebug
528     
529             gbuf = lbuf
530     
531             return
532             end subroutine global_sum_1i
533     
534             subroutine global_sum_2i( lbuf, gbuf, mroot, idebug )
535             integer, intent(in), dimension(:,:) :: lbuf
536             integer, intent(out), dimension(:,:) :: gbuf
537             integer, optional, intent(in) :: mroot, idebug
538     
539             gbuf = lbuf
540     
541             return
542             end subroutine global_sum_2i
543     
544             subroutine global_sum_3i( lbuf, gbuf, mroot, idebug )
545             integer, intent(in), dimension(:,:,:) :: lbuf
546             integer, intent(out), dimension(:,:,:) :: gbuf
547             integer, optional, intent(in) :: mroot, idebug
548     
549             gbuf = lbuf
550     
551             return
552             end subroutine global_sum_3i
553     
554             subroutine global_sum_0r( lbuf, gbuf, mroot, idebug )
555             real, intent(in) :: lbuf
556             real, intent(out) :: gbuf
557             integer, optional, intent(in) :: mroot, idebug
558     
559             gbuf = lbuf
560     
561             return
562             end subroutine global_sum_0r
563     
564     
565             subroutine global_sum_1r( lbuf, gbuf, mroot, idebug )
566             real, intent(in), dimension(:) :: lbuf
567             real, intent(out), dimension(:) :: gbuf
568             integer, optional, intent(in) :: mroot, idebug
569     
570             gbuf = lbuf
571     
572             return
573             end subroutine global_sum_1r
574     
575             subroutine global_sum_2r( lbuf, gbuf, mroot, idebug )
576             real, intent(in), dimension(:,:) :: lbuf
577             real, intent(out), dimension(:,:) :: gbuf
578             integer, optional, intent(in) :: mroot, idebug
579     
580             gbuf = lbuf
581     
582             return
583             end subroutine global_sum_2r
584     
585             subroutine global_sum_3r( lbuf, gbuf, mroot, idebug )
586             real, intent(in), dimension(:,:,:) :: lbuf
587             real, intent(out), dimension(:,:,:) :: gbuf
588             integer, optional, intent(in) :: mroot, idebug
589     
590             gbuf = lbuf
591     
592             return
593             end subroutine global_sum_3r
594     
595             subroutine global_sum_0d( lbuf, gbuf, mroot, idebug )
596             double precision, intent(in) :: lbuf
597             double precision, intent(out) :: gbuf
598             integer, optional, intent(in) :: mroot, idebug
599     
600             gbuf = lbuf
601     
602             return
603             end subroutine global_sum_0d
604     
605     
606             subroutine global_sum_1d( lbuf, gbuf, mroot, idebug )
607             double precision, intent(in), dimension(:) :: lbuf
608             double precision, intent(out), dimension(:) :: gbuf
609             integer, optional, intent(in) :: mroot, idebug
610     
611             gbuf = lbuf
612     
613             return
614             end subroutine global_sum_1d
615     
616             subroutine global_sum_2d( lbuf, gbuf, mroot, idebug )
617             double precision, intent(in), dimension(:,:) :: lbuf
618             double precision, intent(out), dimension(:,:) :: gbuf
619             integer, optional, intent(in) :: mroot, idebug
620     
621             gbuf = lbuf
622     
623             return
624             end subroutine global_sum_2d
625     
626             subroutine global_sum_3d( lbuf, gbuf, mroot, idebug )
627             double precision, intent(in), dimension(:,:,:) :: lbuf
628             double precision, intent(out), dimension(:,:,:) :: gbuf
629             integer, optional, intent(in) :: mroot, idebug
630     
631             gbuf = lbuf
632     
633             return
634             end subroutine global_sum_3d
635     
636             subroutine global_all_sum_onevar_0d( gbuf )
637             doubleprecision, intent(inout) :: gbuf
638             doubleprecision :: lbuf
639     
640             return
641             end subroutine global_all_sum_onevar_0d
642     
643     
644             subroutine global_all_sum_onevar_1d( gbuf )
645             doubleprecision, dimension(:), intent(inout) :: gbuf
646             doubleprecision, dimension(size(gbuf)) :: lbuf
647     
648             return
649             end subroutine global_all_sum_onevar_1d
650     
651             subroutine global_all_sum_onevar_2d( gbuf )
652             doubleprecision, dimension(:,:), intent(inout) :: gbuf
653             doubleprecision, dimension(size(gbuf,1),size(gbuf,2)) :: lbuf
654     
655             return
656             end subroutine global_all_sum_onevar_2d
657     
658     
659             subroutine global_all_sum_onevar_3d( gbuf )
660             doubleprecision, dimension(:,:,:), intent(inout) :: gbuf
661             doubleprecision, dimension(size(gbuf,1),size(gbuf,2),size(gbuf,3)) :: lbuf
662     
663             return
664             end subroutine global_all_sum_onevar_3d
665     
666     
667     
668             subroutine global_all_sum_onevar_0i( gbuf )
669             integer, intent(inout) :: gbuf
670             integer :: lbuf
671     
672             return
673             end subroutine global_all_sum_onevar_0i
674     
675             subroutine global_all_sum_onevar_1i( gbuf )
676             integer, dimension(:), intent(inout) :: gbuf
677             integer, dimension(size(gbuf)) :: lbuf
678     
679             return
680             end subroutine global_all_sum_onevar_1i
681     
682             subroutine global_all_sum_onevar_2i( gbuf )
683             integer, dimension(:,:), intent(inout) :: gbuf
684             integer, dimension(size(gbuf,1),size(gbuf,2)) :: lbuf
685     
686             return
687             end subroutine global_all_sum_onevar_2i
688     
689     
690             subroutine global_all_sum_onevar_3i( gbuf )
691             integer, dimension(:,:,:), intent(inout) :: gbuf
692             integer, dimension(size(gbuf,1),size(gbuf,2),size(gbuf,3)) :: lbuf
693     
694             return
695             end subroutine global_all_sum_onevar_3i
696     
697             subroutine global_all_sum_onevar_0r( gbuf )
698             real, intent(inout) :: gbuf
699             real :: lbuf
700     
701             return
702             end subroutine global_all_sum_onevar_0r
703     
704     
705             subroutine global_all_sum_onevar_1r( gbuf )
706             real, dimension(:), intent(inout) :: gbuf
707             real, dimension(size(gbuf)) :: lbuf
708     
709             return
710             end subroutine global_all_sum_onevar_1r
711     
712             subroutine global_all_sum_onevar_2r( gbuf )
713             real, dimension(:,:), intent(inout) :: gbuf
714             real, dimension(size(gbuf,1),size(gbuf,2)) :: lbuf
715     
716             return
717             end subroutine global_all_sum_onevar_2r
718     
719     
720             subroutine global_all_sum_onevar_3r( gbuf )
721             real, dimension(:,:,:), intent(inout) :: gbuf
722             real, dimension(size(gbuf,1),size(gbuf,2),size(gbuf,3)) :: lbuf
723     
724             return
725             end subroutine global_all_sum_onevar_3r
726     
727     
728             subroutine global_all_sum_0i( lbuf, gbuf, mroot, idebug )
729             integer, intent(in) :: lbuf
730             integer, intent(out) :: gbuf
731             integer, optional, intent(in) :: mroot, idebug
732     
733             gbuf = lbuf
734     
735             return
736             end subroutine global_all_sum_0i
737     
738     
739             subroutine global_all_sum_1i( lbuf, gbuf, mroot, idebug )
740             integer, intent(in), dimension(:) :: lbuf
741             integer, intent(out), dimension(:) :: gbuf
742             integer, optional, intent(in) :: mroot, idebug
743     
744             gbuf = lbuf
745     
746             return
747             end subroutine global_all_sum_1i
748     
749             subroutine global_all_sum_2i( lbuf, gbuf, mroot, idebug )
750             integer, intent(in), dimension(:,:) :: lbuf
751             integer, intent(out), dimension(:,:) :: gbuf
752             integer, optional, intent(in) :: mroot, idebug
753     
754             gbuf = lbuf
755     
756             return
757             end subroutine global_all_sum_2i
758     
759             subroutine global_all_sum_3i( lbuf, gbuf, mroot, idebug )
760             integer, intent(in), dimension(:,:,:) :: lbuf
761             integer, intent(out), dimension(:,:,:) :: gbuf
762             integer, optional, intent(in) :: mroot, idebug
763     
764             gbuf = lbuf
765     
766             return
767             end subroutine global_all_sum_3i
768     
769             subroutine global_all_sum_0r( lbuf, gbuf, mroot, idebug )
770             real, intent(in) :: lbuf
771             real, intent(out) :: gbuf
772             integer, optional, intent(in) :: mroot, idebug
773     
774             gbuf = lbuf
775     
776             return
777             end subroutine global_all_sum_0r
778     
779     
780             subroutine global_all_sum_1r( lbuf, gbuf, mroot, idebug )
781             real, intent(in), dimension(:) :: lbuf
782             real, intent(out), dimension(:) :: gbuf
783             integer, optional, intent(in) :: mroot, idebug
784     
785             gbuf = lbuf
786     
787             return
788             end subroutine global_all_sum_1r
789     
790             subroutine global_all_sum_2r( lbuf, gbuf, mroot, idebug )
791             real, intent(in), dimension(:,:) :: lbuf
792             real, intent(out), dimension(:,:) :: gbuf
793             integer, optional, intent(in) :: mroot, idebug
794     
795             gbuf = lbuf
796     
797             return
798             end subroutine global_all_sum_2r
799     
800             subroutine global_all_sum_3r( lbuf, gbuf, mroot, idebug )
801             real, intent(in), dimension(:,:,:) :: lbuf
802             real, intent(out), dimension(:,:,:) :: gbuf
803             integer, optional, intent(in) :: mroot, idebug
804     
805             gbuf = lbuf
806     
807             return
808             end subroutine global_all_sum_3r
809     
810             subroutine global_all_sum_0d( lbuf, gbuf, mroot, idebug )
811             double precision, intent(in) :: lbuf
812             double precision, intent(out) :: gbuf
813             integer, optional, intent(in) :: mroot, idebug
814     
815             gbuf = lbuf
816     
817             return
818             end subroutine global_all_sum_0d
819     
820     
821             subroutine global_all_sum_1d( lbuf, gbuf, mroot, idebug )
822             double precision, intent(in), dimension(:) :: lbuf
823             double precision, intent(out), dimension(:) :: gbuf
824             integer, optional, intent(in) :: mroot, idebug
825     
826             gbuf = lbuf
827     
828             return
829             end subroutine global_all_sum_1d
830     
831             subroutine global_all_sum_2d( lbuf, gbuf, mroot, idebug )
832             double precision, intent(in), dimension(:,:) :: lbuf
833             double precision, intent(out), dimension(:,:) :: gbuf
834             integer, optional, intent(in) :: mroot, idebug
835     
836             gbuf = lbuf
837     
838             return
839             end subroutine global_all_sum_2d
840     
841             subroutine global_all_sum_3d( lbuf, gbuf, mroot, idebug )
842             double precision, intent(in), dimension(:,:,:) :: lbuf
843             double precision, intent(out), dimension(:,:,:) :: gbuf
844             integer, optional, intent(in) :: mroot, idebug
845     
846             gbuf = lbuf
847     
848             return
849             end subroutine global_all_sum_3d
850     
851             subroutine global_min_0i( lbuf, gbuf, mroot, idebug )
852             integer, intent(in) :: lbuf
853             integer, intent(out) :: gbuf
854             integer, optional, intent(in) :: mroot, idebug
855     
856             gbuf = lbuf
857     
858             return
859             end subroutine global_min_0i
860     
861     
862             subroutine global_min_1i( lbuf, gbuf, mroot, idebug )
863             integer, intent(in), dimension(:) :: lbuf
864             integer, intent(out), dimension(:) :: gbuf
865             integer, optional, intent(in) :: mroot, idebug
866     
867             gbuf = lbuf
868     
869             return
870             end subroutine global_min_1i
871     
872             subroutine global_min_2i( lbuf, gbuf, mroot, idebug )
873             integer, intent(in), dimension(:,:) :: lbuf
874             integer, intent(out), dimension(:,:) :: gbuf
875             integer, optional, intent(in) :: mroot, idebug
876     
877             gbuf = lbuf
878     
879             return
880             end subroutine global_min_2i
881     
882             subroutine global_min_3i( lbuf, gbuf, mroot, idebug )
883             integer, intent(in), dimension(:,:,:) :: lbuf
884             integer, intent(out), dimension(:,:,:) :: gbuf
885             integer, optional, intent(in) :: mroot, idebug
886     
887             gbuf = lbuf
888     
889             return
890             end subroutine global_min_3i
891     
892             subroutine global_min_0r( lbuf, gbuf, mroot, idebug )
893             real, intent(in) :: lbuf
894             real, intent(out) :: gbuf
895             integer, optional, intent(in) :: mroot, idebug
896     
897             gbuf = lbuf
898     
899             return
900             end subroutine global_min_0r
901     
902     
903             subroutine global_min_1r( lbuf, gbuf, mroot, idebug )
904             real, intent(in), dimension(:) :: lbuf
905             real, intent(out), dimension(:) :: gbuf
906             integer, optional, intent(in) :: mroot, idebug
907     
908             gbuf = lbuf
909     
910             return
911             end subroutine global_min_1r
912     
913             subroutine global_min_2r( lbuf, gbuf, mroot, idebug )
914             real, intent(in), dimension(:,:) :: lbuf
915             real, intent(out), dimension(:,:) :: gbuf
916             integer, optional, intent(in) :: mroot, idebug
917     
918             gbuf = lbuf
919     
920             return
921             end subroutine global_min_2r
922     
923             subroutine global_min_3r( lbuf, gbuf, mroot, idebug )
924             real, intent(in), dimension(:,:,:) :: lbuf
925             real, intent(out), dimension(:,:,:) :: gbuf
926             integer, optional, intent(in) :: mroot, idebug
927     
928             gbuf = lbuf
929     
930             return
931             end subroutine global_min_3r
932     
933             subroutine global_min_0d( lbuf, gbuf, mroot, idebug )
934             double precision, intent(in) :: lbuf
935             double precision, intent(out) :: gbuf
936             integer, optional, intent(in) :: mroot, idebug
937     
938             gbuf = lbuf
939     
940             return
941             end subroutine global_min_0d
942     
943     
944             subroutine global_min_1d( lbuf, gbuf, mroot, idebug )
945             double precision, intent(in), dimension(:) :: lbuf
946             double precision, intent(out), dimension(:) :: gbuf
947             integer, optional, intent(in) :: mroot, idebug
948     
949             gbuf = lbuf
950     
951             return
952             end subroutine global_min_1d
953     
954             subroutine global_min_2d( lbuf, gbuf, mroot, idebug )
955             double precision, intent(in), dimension(:,:) :: lbuf
956             double precision, intent(out), dimension(:,:) :: gbuf
957             integer, optional, intent(in) :: mroot, idebug
958     
959             gbuf = lbuf
960     
961             return
962             end subroutine global_min_2d
963     
964             subroutine global_min_3d( lbuf, gbuf, mroot, idebug )
965             double precision, intent(in), dimension(:,:,:) :: lbuf
966             double precision, intent(out), dimension(:,:,:) :: gbuf
967             integer, optional, intent(in) :: mroot, idebug
968     
969             gbuf = lbuf
970     
971             return
972             end subroutine global_min_3d
973     
974             subroutine global_all_min_onevar_0d( gbuf )
975             doubleprecision, intent(inout) :: gbuf
976             doubleprecision :: lbuf
977     
978             return
979             end subroutine global_all_min_onevar_0d
980     
981     
982             subroutine global_all_min_onevar_1d( gbuf )
983             doubleprecision, dimension(:), intent(inout) :: gbuf
984             doubleprecision, dimension(size(gbuf)) :: lbuf
985     
986             return
987             end subroutine global_all_min_onevar_1d
988     
989             subroutine global_all_min_onevar_2d( gbuf )
990             doubleprecision, dimension(:,:), intent(inout) :: gbuf
991             doubleprecision, dimension(size(gbuf,1),size(gbuf,2)) :: lbuf
992     
993             return
994             end subroutine global_all_min_onevar_2d
995     
996     
997             subroutine global_all_min_onevar_3d( gbuf )
998             doubleprecision, dimension(:,:,:), intent(inout) :: gbuf
999             doubleprecision, dimension(size(gbuf,1),size(gbuf,2),size(gbuf,3)) :: lbuf
1000     
1001             return
1002             end subroutine global_all_min_onevar_3d
1003     
1004     
1005     
1006     
1007             subroutine global_all_min_onevar_0i( gbuf )
1008             integer, intent(inout) :: gbuf
1009             integer :: lbuf
1010     
1011             return
1012             end subroutine global_all_min_onevar_0i
1013     
1014     
1015             subroutine global_all_min_onevar_1i( gbuf )
1016             integer, dimension(:), intent(inout) :: gbuf
1017             integer, dimension(size(gbuf)) :: lbuf
1018     
1019             return
1020             end subroutine global_all_min_onevar_1i
1021     
1022             subroutine global_all_min_onevar_2i( gbuf )
1023             integer, dimension(:,:), intent(inout) :: gbuf
1024             integer, dimension(size(gbuf,1),size(gbuf,2)) :: lbuf
1025     
1026             return
1027             end subroutine global_all_min_onevar_2i
1028     
1029     
1030             subroutine global_all_min_onevar_3i( gbuf )
1031             integer, dimension(:,:,:), intent(inout) :: gbuf
1032             integer, dimension(size(gbuf,1),size(gbuf,2),size(gbuf,3)) :: lbuf
1033     
1034             return
1035             end subroutine global_all_min_onevar_3i
1036     
1037             subroutine global_all_min_onevar_0r( gbuf )
1038             real, intent(inout) :: gbuf
1039             real :: lbuf
1040     
1041             return
1042             end subroutine global_all_min_onevar_0r
1043     
1044     
1045             subroutine global_all_min_onevar_1r( gbuf )
1046             real, dimension(:), intent(inout) :: gbuf
1047             real, dimension(size(gbuf)) :: lbuf
1048     
1049             return
1050             end subroutine global_all_min_onevar_1r
1051     
1052             subroutine global_all_min_onevar_2r( gbuf )
1053             real, dimension(:,:), intent(inout) :: gbuf
1054             real, dimension(size(gbuf,1),size(gbuf,2)) :: lbuf
1055     
1056             return
1057             end subroutine global_all_min_onevar_2r
1058     
1059     
1060     
1061             subroutine global_all_min_onevar_3r( gbuf )
1062             real, dimension(:,:,:), intent(inout) :: gbuf
1063             real, dimension(size(gbuf,1),size(gbuf,2),size(gbuf,3)) :: lbuf
1064     
1065             return
1066             end subroutine global_all_min_onevar_3r
1067     
1068     
1069             subroutine global_all_min_0i( lbuf, gbuf, mroot, idebug )
1070             integer, intent(in) :: lbuf
1071             integer, intent(out) :: gbuf
1072             integer, optional, intent(in) :: mroot, idebug
1073     
1074             gbuf = lbuf
1075     
1076             return
1077             end subroutine global_all_min_0i
1078     
1079     
1080             subroutine global_all_min_1i( lbuf, gbuf, mroot, idebug )
1081             integer, intent(in), dimension(:) :: lbuf
1082             integer, intent(out), dimension(:) :: gbuf
1083             integer, optional, intent(in) :: mroot, idebug
1084     
1085             gbuf = lbuf
1086     
1087             return
1088             end subroutine global_all_min_1i
1089     
1090             subroutine global_all_min_2i( lbuf, gbuf, mroot, idebug )
1091             integer, intent(in), dimension(:,:) :: lbuf
1092             integer, intent(out), dimension(:,:) :: gbuf
1093             integer, optional, intent(in) :: mroot, idebug
1094     
1095             gbuf = lbuf
1096     
1097             return
1098             end subroutine global_all_min_2i
1099     
1100             subroutine global_all_min_3i( lbuf, gbuf, mroot, idebug )
1101             integer, intent(in), dimension(:,:,:) :: lbuf
1102             integer, intent(out), dimension(:,:,:) :: gbuf
1103             integer, optional, intent(in) :: mroot, idebug
1104     
1105             gbuf = lbuf
1106     
1107             return
1108             end subroutine global_all_min_3i
1109     
1110             subroutine global_all_min_0r( lbuf, gbuf, mroot, idebug )
1111             real, intent(in) :: lbuf
1112             real, intent(out) :: gbuf
1113             integer, optional, intent(in) :: mroot, idebug
1114     
1115             gbuf = lbuf
1116     
1117             return
1118             end subroutine global_all_min_0r
1119     
1120     
1121             subroutine global_all_min_1r( lbuf, gbuf, mroot, idebug )
1122             real, intent(in), dimension(:) :: lbuf
1123             real, intent(out), dimension(:) :: gbuf
1124             integer, optional, intent(in) :: mroot, idebug
1125     
1126             gbuf = lbuf
1127     
1128             return
1129             end subroutine global_all_min_1r
1130     
1131             subroutine global_all_min_2r( lbuf, gbuf, mroot, idebug )
1132             real, intent(in), dimension(:,:) :: lbuf
1133             real, intent(out), dimension(:,:) :: gbuf
1134             integer, optional, intent(in) :: mroot, idebug
1135     
1136             gbuf = lbuf
1137     
1138             return
1139             end subroutine global_all_min_2r
1140     
1141             subroutine global_all_min_3r( lbuf, gbuf, mroot, idebug )
1142             real, intent(in), dimension(:,:,:) :: lbuf
1143             real, intent(out), dimension(:,:,:) :: gbuf
1144             integer, optional, intent(in) :: mroot, idebug
1145     
1146             gbuf = lbuf
1147     
1148             return
1149             end subroutine global_all_min_3r
1150     
1151             subroutine global_all_min_0d( lbuf, gbuf, mroot, idebug )
1152             double precision, intent(in) :: lbuf
1153             double precision, intent(out) :: gbuf
1154             integer, optional, intent(in) :: mroot, idebug
1155     
1156             gbuf = lbuf
1157     
1158             return
1159             end subroutine global_all_min_0d
1160     
1161     
1162             subroutine global_all_min_1d( lbuf, gbuf, mroot, idebug )
1163             double precision, intent(in), dimension(:) :: lbuf
1164             double precision, intent(out), dimension(:) :: gbuf
1165             integer, optional, intent(in) :: mroot, idebug
1166     
1167             gbuf = lbuf
1168     
1169             return
1170             end subroutine global_all_min_1d
1171     
1172             subroutine global_all_min_2d( lbuf, gbuf, mroot, idebug )
1173             double precision, intent(in), dimension(:,:) :: lbuf
1174             double precision, intent(out), dimension(:,:) :: gbuf
1175             integer, optional, intent(in) :: mroot, idebug
1176     
1177             gbuf = lbuf
1178     
1179             return
1180             end subroutine global_all_min_2d
1181     
1182             subroutine global_all_min_3d( lbuf, gbuf, mroot, idebug )
1183             double precision, intent(in), dimension(:,:,:) :: lbuf
1184             double precision, intent(out), dimension(:,:,:) :: gbuf
1185             integer, optional, intent(in) :: mroot, idebug
1186     
1187             gbuf = lbuf
1188     
1189             return
1190             end subroutine global_all_min_3d
1191     
1192             subroutine global_max_0i( lbuf, gbuf, mroot, idebug )
1193             integer, intent(in) :: lbuf
1194             integer, intent(out) :: gbuf
1195             integer, optional, intent(in) :: mroot, idebug
1196     
1197             gbuf = lbuf
1198     
1199             return
1200             end subroutine global_max_0i
1201     
1202     
1203             subroutine global_max_1i( lbuf, gbuf, mroot, idebug )
1204             integer, intent(in), dimension(:) :: lbuf
1205             integer, intent(out), dimension(:) :: gbuf
1206             integer, optional, intent(in) :: mroot, idebug
1207     
1208             gbuf = lbuf
1209     
1210             return
1211             end subroutine global_max_1i
1212     
1213             subroutine global_max_2i( lbuf, gbuf, mroot, idebug )
1214             integer, intent(in), dimension(:,:) :: lbuf
1215             integer, intent(out), dimension(:,:) :: gbuf
1216             integer, optional, intent(in) :: mroot, idebug
1217     
1218             gbuf = lbuf
1219     
1220             return
1221             end subroutine global_max_2i
1222     
1223             subroutine global_max_3i( lbuf, gbuf, mroot, idebug )
1224             integer, intent(in), dimension(:,:,:) :: lbuf
1225             integer, intent(out), dimension(:,:,:) :: gbuf
1226             integer, optional, intent(in) :: mroot, idebug
1227     
1228             gbuf = lbuf
1229     
1230             return
1231             end subroutine global_max_3i
1232     
1233             subroutine global_max_0r( lbuf, gbuf, mroot, idebug )
1234             real, intent(in) :: lbuf
1235             real, intent(out) :: gbuf
1236             integer, optional, intent(in) :: mroot, idebug
1237     
1238             gbuf = lbuf
1239     
1240             return
1241             end subroutine global_max_0r
1242     
1243     
1244             subroutine global_max_1r( lbuf, gbuf, mroot, idebug )
1245             real, intent(in), dimension(:) :: lbuf
1246             real, intent(out), dimension(:) :: gbuf
1247             integer, optional, intent(in) :: mroot, idebug
1248     
1249             gbuf = lbuf
1250     
1251             return
1252             end subroutine global_max_1r
1253     
1254             subroutine global_max_2r( lbuf, gbuf, mroot, idebug )
1255             real, intent(in), dimension(:,:) :: lbuf
1256             real, intent(out), dimension(:,:) :: gbuf
1257             integer, optional, intent(in) :: mroot, idebug
1258     
1259             gbuf = lbuf
1260     
1261             return
1262             end subroutine global_max_2r
1263     
1264             subroutine global_max_3r( lbuf, gbuf, mroot, idebug )
1265             real, intent(in), dimension(:,:,:) :: lbuf
1266             real, intent(out), dimension(:,:,:) :: gbuf
1267             integer, optional, intent(in) :: mroot, idebug
1268     
1269             gbuf = lbuf
1270     
1271             return
1272             end subroutine global_max_3r
1273     
1274             subroutine global_max_0d( lbuf, gbuf, mroot, idebug )
1275             double precision, intent(in) :: lbuf
1276             double precision, intent(out) :: gbuf
1277             integer, optional, intent(in) :: mroot, idebug
1278     
1279             gbuf = lbuf
1280     
1281             return
1282             end subroutine global_max_0d
1283     
1284     
1285             subroutine global_max_1d( lbuf, gbuf, mroot, idebug )
1286             double precision, intent(in), dimension(:) :: lbuf
1287             double precision, intent(out), dimension(:) :: gbuf
1288             integer, optional, intent(in) :: mroot, idebug
1289     
1290             gbuf = lbuf
1291     
1292             return
1293             end subroutine global_max_1d
1294     
1295             subroutine global_max_2d( lbuf, gbuf, mroot, idebug )
1296             double precision, intent(in), dimension(:,:) :: lbuf
1297             double precision, intent(out), dimension(:,:) :: gbuf
1298             integer, optional, intent(in) :: mroot, idebug
1299     
1300             gbuf = lbuf
1301     
1302             return
1303             end subroutine global_max_2d
1304     
1305             subroutine global_max_3d( lbuf, gbuf, mroot, idebug )
1306             double precision, intent(in), dimension(:,:,:) :: lbuf
1307             double precision, intent(out), dimension(:,:,:) :: gbuf
1308             integer, optional, intent(in) :: mroot, idebug
1309     
1310             gbuf = lbuf
1311     
1312             return
1313             end subroutine global_max_3d
1314     
1315             subroutine global_all_max_onevar_0d( gbuf )
1316             doubleprecision, intent(inout) :: gbuf
1317             doubleprecision :: lbuf
1318     
1319             return
1320             end subroutine global_all_max_onevar_0d
1321     
1322     
1323             subroutine global_all_max_onevar_1d( gbuf )
1324             doubleprecision, dimension(:), intent(inout) :: gbuf
1325             doubleprecision, dimension(size(gbuf)) :: lbuf
1326     
1327             return
1328             end subroutine global_all_max_onevar_1d
1329     
1330             subroutine global_all_max_onevar_2d( gbuf )
1331             doubleprecision, dimension(:,:), intent(inout) :: gbuf
1332             doubleprecision, dimension(size(gbuf,1),size(gbuf,2)) :: lbuf
1333     
1334             return
1335             end subroutine global_all_max_onevar_2d
1336     
1337     
1338             subroutine global_all_max_onevar_3d( gbuf )
1339             doubleprecision, dimension(:,:,:), intent(inout) :: gbuf
1340             doubleprecision, dimension(size(gbuf,1),size(gbuf,2),size(gbuf,3)) :: lbuf
1341     
1342             return
1343             end subroutine global_all_max_onevar_3d
1344     
1345     
1346     
1347     
1348             subroutine global_all_max_onevar_0i( gbuf )
1349             integer, intent(inout) :: gbuf
1350             integer :: lbuf
1351     
1352             return
1353             end subroutine global_all_max_onevar_0i
1354     
1355     
1356             subroutine global_all_max_onevar_1i( gbuf )
1357             integer, dimension(:), intent(inout) :: gbuf
1358             integer, dimension(size(gbuf)) :: lbuf
1359     
1360             return
1361             end subroutine global_all_max_onevar_1i
1362     
1363             subroutine global_all_max_onevar_2i( gbuf )
1364             integer, dimension(:,:), intent(inout) :: gbuf
1365             integer, dimension(size(gbuf,1),size(gbuf,2)) :: lbuf
1366     
1367             return
1368             end subroutine global_all_max_onevar_2i
1369     
1370     
1371             subroutine global_all_max_onevar_3i( gbuf )
1372             integer, dimension(:,:,:), intent(inout) :: gbuf
1373             integer, dimension(size(gbuf,1),size(gbuf,2),size(gbuf,3)) :: lbuf
1374     
1375             return
1376             end subroutine global_all_max_onevar_3i
1377     
1378             subroutine global_all_max_onevar_0r( gbuf )
1379             real, intent(inout) :: gbuf
1380             real :: lbuf
1381     
1382             return
1383             end subroutine global_all_max_onevar_0r
1384     
1385             subroutine global_all_max_onevar_1r( gbuf )
1386             real, dimension(:), intent(inout) :: gbuf
1387             real, dimension(size(gbuf)) :: lbuf
1388     
1389             return
1390             end subroutine global_all_max_onevar_1r
1391     
1392             subroutine global_all_max_onevar_2r( gbuf )
1393             real, dimension(:,:), intent(inout) :: gbuf
1394             real, dimension(size(gbuf,1),size(gbuf,2)) :: lbuf
1395     
1396             return
1397             end subroutine global_all_max_onevar_2r
1398     
1399     
1400             subroutine global_all_max_onevar_3r( gbuf )
1401             real, dimension(:,:,:), intent(inout) :: gbuf
1402             real, dimension(size(gbuf,1),size(gbuf,2),size(gbuf,3)) :: lbuf
1403     
1404             return
1405             end subroutine global_all_max_onevar_3r
1406     
1407     
1408     
1409             subroutine global_all_max_0i( lbuf, gbuf, mroot, idebug )
1410             integer, intent(in) :: lbuf
1411             integer, intent(out) :: gbuf
1412             integer, optional, intent(in) :: mroot, idebug
1413     
1414             gbuf = lbuf
1415     
1416             return
1417             end subroutine global_all_max_0i
1418     
1419     
1420             subroutine global_all_max_1i( lbuf, gbuf, mroot, idebug )
1421             integer, intent(in), dimension(:) :: lbuf
1422             integer, intent(out), dimension(:) :: gbuf
1423             integer, optional, intent(in) :: mroot, idebug
1424     
1425             gbuf = lbuf
1426     
1427             return
1428             end subroutine global_all_max_1i
1429     
1430             subroutine global_all_max_2i( lbuf, gbuf, mroot, idebug )
1431             integer, intent(in), dimension(:,:) :: lbuf
1432             integer, intent(out), dimension(:,:) :: gbuf
1433             integer, optional, intent(in) :: mroot, idebug
1434     
1435             gbuf = lbuf
1436     
1437             return
1438             end subroutine global_all_max_2i
1439     
1440             subroutine global_all_max_3i( lbuf, gbuf, mroot, idebug )
1441             integer, intent(in), dimension(:,:,:) :: lbuf
1442             integer, intent(out), dimension(:,:,:) :: gbuf
1443             integer, optional, intent(in) :: mroot, idebug
1444     
1445             gbuf = lbuf
1446     
1447             return
1448             end subroutine global_all_max_3i
1449     
1450             subroutine global_all_max_0r( lbuf, gbuf, mroot, idebug )
1451             real, intent(in) :: lbuf
1452             real, intent(out) :: gbuf
1453             integer, optional, intent(in) :: mroot, idebug
1454     
1455             gbuf = lbuf
1456     
1457             return
1458             end subroutine global_all_max_0r
1459     
1460     
1461             subroutine global_all_max_1r( lbuf, gbuf, mroot, idebug )
1462             real, intent(in), dimension(:) :: lbuf
1463             real, intent(out), dimension(:) :: gbuf
1464             integer, optional, intent(in) :: mroot, idebug
1465     
1466             gbuf = lbuf
1467     
1468             return
1469             end subroutine global_all_max_1r
1470     
1471             subroutine global_all_max_2r( lbuf, gbuf, mroot, idebug )
1472             real, intent(in), dimension(:,:) :: lbuf
1473             real, intent(out), dimension(:,:) :: gbuf
1474             integer, optional, intent(in) :: mroot, idebug
1475     
1476             gbuf = lbuf
1477     
1478             return
1479             end subroutine global_all_max_2r
1480     
1481             subroutine global_all_max_3r( lbuf, gbuf, mroot, idebug )
1482             real, intent(in), dimension(:,:,:) :: lbuf
1483             real, intent(out), dimension(:,:,:) :: gbuf
1484             integer, optional, intent(in) :: mroot, idebug
1485     
1486             gbuf = lbuf
1487     
1488             return
1489             end subroutine global_all_max_3r
1490     
1491             subroutine global_all_max_0d( lbuf, gbuf, mroot, idebug )
1492             double precision, intent(in) :: lbuf
1493             double precision, intent(out) :: gbuf
1494             integer, optional, intent(in) :: mroot, idebug
1495     
1496             gbuf = lbuf
1497     
1498             return
1499             end subroutine global_all_max_0d
1500     
1501     
1502             subroutine global_all_max_1d( lbuf, gbuf, mroot, idebug )
1503             double precision, intent(in), dimension(:) :: lbuf
1504             double precision, intent(out), dimension(:) :: gbuf
1505             integer, optional, intent(in) :: mroot, idebug
1506     
1507             gbuf = lbuf
1508     
1509             return
1510             end subroutine global_all_max_1d
1511     
1512             subroutine global_all_max_2d( lbuf, gbuf, mroot, idebug )
1513             double precision, intent(in), dimension(:,:) :: lbuf
1514             double precision, intent(out), dimension(:,:) :: gbuf
1515             integer, optional, intent(in) :: mroot, idebug
1516     
1517             gbuf = lbuf
1518     
1519             return
1520             end subroutine global_all_max_2d
1521     
1522             subroutine global_all_max_3d( lbuf, gbuf, mroot, idebug )
1523             double precision, intent(in), dimension(:,:,:) :: lbuf
1524             double precision, intent(out), dimension(:,:,:) :: gbuf
1525             integer, optional, intent(in) :: mroot, idebug
1526     
1527             gbuf = lbuf
1528     
1529             return
1530             end subroutine global_all_max_3d
1531     
1532     
1533     
1534             subroutine global_all_or_onevar_0d( gbuf )
1535             logical, intent(inout) :: gbuf
1536             logical :: lbuf
1537     
1538             return
1539             end subroutine global_all_or_onevar_0d
1540     
1541             subroutine global_all_or_onevar_1d( gbuf )
1542             logical, dimension(:), intent(inout) :: gbuf
1543             logical, dimension(size(gbuf)) :: lbuf
1544     
1545             return
1546             end subroutine global_all_or_onevar_1d
1547     
1548             subroutine global_all_and_onevar_0d( gbuf )
1549             logical, intent(inout) :: gbuf
1550             logical :: lbuf
1551     
1552             return
1553             end subroutine global_all_and_onevar_0d
1554     
1555             subroutine global_all_and_onevar_1d( gbuf )
1556             logical, dimension(:), intent(inout) :: gbuf
1557             logical, dimension(size(gbuf)) :: lbuf
1558     
1559             return
1560             end subroutine global_all_and_onevar_1d
1561     
1562     
1563             subroutine global_all_and_0d( lvalue, gvalue, mroot, idebug )
1564             logical, intent(in) :: lvalue
1565             logical, intent(out) :: gvalue
1566             integer, optional, intent(in) :: mroot, idebug
1567     
1568             gvalue = lvalue
1569     
1570             return
1571             end subroutine  global_all_and_0d
1572     
1573     
1574             subroutine global_all_and_1d( lvalue, gvalue, mroot, idebug )
1575             logical, intent(in), dimension(:) :: lvalue
1576             logical, intent(out), dimension(:) :: gvalue
1577             integer, optional, intent(in) :: mroot, idebug
1578     
1579             gvalue = lvalue
1580     
1581             return
1582             end subroutine global_all_and_1d
1583     
1584     
1585     
1586             subroutine global_all_or_0d( lvalue, gvalue, mroot, idebug )
1587             logical, intent(in) :: lvalue
1588             logical, intent(out) :: gvalue
1589             integer, optional, intent(in) :: mroot, idebug
1590     
1591             gvalue = lvalue
1592     
1593             return
1594             end subroutine global_all_or_0d
1595     
1596     
1597             subroutine global_all_or_1d( lvalue, gvalue, mroot, idebug )
1598             logical, intent(in), dimension(:) :: lvalue
1599             logical, intent(out), dimension(:) :: gvalue
1600             integer, optional, intent(in) :: mroot, idebug
1601     
1602             gvalue = lvalue
1603     
1604             return
1605             end subroutine global_all_or_1d
1606     
1607     
1608           SUBROUTINE ExitMPI(myid)
1609           USE funits
1610           integer, optional, intent(in) :: myid
1611     
1612           RETURN
1613           END subroutine exitMPI
1614     
1615     
1616     
1617             subroutine MPI_BARRIER(MPI_COMM_WORLD, mpierr)
1618             integer, intent(in) :: MPI_COMM_WORLD, mpierr
1619     
1620             return
1621             end subroutine MPI_BARRIER
1622     
1623             subroutine MPI_ABORT(MPI_COMM_WORLD, mpierr, ierr)
1624             integer, intent(in) :: MPI_COMM_WORLD, mpierr, ierr
1625     
1626             STOP
1627             end subroutine MPI_ABORT
1628     
1629             end module mpi_utility
1630     
1631     
1632