ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE-4/src/utils/oopseMPI.F90
Revision: 2262
Committed: Sun Jul 3 20:53:43 2005 UTC (19 years ago) by chuckv
File size: 27547 byte(s)
Log Message:
Added subroutine to set cuttoff for Interaction map and function in simulation.F90 to determine if a particular atype is present in a simulation.

File Contents

# User Rev Content
1 gezelter 1930 !!
2     !! Copyright (c) 2005 The University of Notre Dame. All Rights Reserved.
3     !!
4     !! The University of Notre Dame grants you ("Licensee") a
5     !! non-exclusive, royalty free, license to use, modify and
6     !! redistribute this software in source and binary code form, provided
7     !! that the following conditions are met:
8     !!
9     !! 1. Acknowledgement of the program authors must be made in any
10     !! publication of scientific results based in part on use of the
11     !! program. An acceptable form of acknowledgement is citation of
12     !! the article in which the program was described (Matthew
13     !! A. Meineke, Charles F. Vardeman II, Teng Lin, Christopher
14     !! J. Fennell and J. Daniel Gezelter, "OOPSE: An Object-Oriented
15     !! Parallel Simulation Engine for Molecular Dynamics,"
16     !! J. Comput. Chem. 26, pp. 252-271 (2005))
17     !!
18     !! 2. Redistributions of source code must retain the above copyright
19     !! notice, this list of conditions and the following disclaimer.
20     !!
21     !! 3. Redistributions in binary form must reproduce the above copyright
22     !! notice, this list of conditions and the following disclaimer in the
23     !! documentation and/or other materials provided with the
24     !! distribution.
25     !!
26     !! This software is provided "AS IS," without a warranty of any
27     !! kind. All express or implied conditions, representations and
28     !! warranties, including any implied warranty of merchantability,
29     !! fitness for a particular purpose or non-infringement, are hereby
30     !! excluded. The University of Notre Dame and its licensors shall not
31     !! be liable for any damages suffered by licensee as a result of
32     !! using, modifying or distributing the software or its
33     !! derivatives. In no event will the University of Notre Dame or its
34     !! licensors be liable for any lost revenue, profit or data, or for
35     !! direct, indirect, special, consequential, incidental or punitive
36     !! damages, however caused and regardless of the theory of liability,
37     !! arising out of the use of or inability to use software, even if the
38     !! University of Notre Dame has been advised of the possibility of
39     !! such damages.
40     !!
41    
42 gezelter 1612 !! Wrapper interfaces for mpi.
43     !! This wrapper should work independently of mpi implimentation.
44     !! We only provide an explicit interface for routines we use.
45     !! Access to other functions is external
46     module oopseMPI
47     use definitions, ONLY : dp
48     #ifdef IS_MPI
49     implicit none
50     PUBLIC !WARNING everything in this module is public
51    
52 gezelter 2204
53 gezelter 1612 include "mpif.h"
54    
55     private :: dp
56    
57    
58 gezelter 2204 ! interfaces for things that we use
59     ! These routines are not overloaded and only include one argument type.
60     interface
61     SUBROUTINE MPI_INIT(IERROR)
62     INTEGER IERROR
63     END SUBROUTINE MPI_INIT
64 gezelter 1612
65 gezelter 2204 SUBROUTINE MPI_FINALIZE(IERROR)
66     INTEGER IERROR
67     END SUBROUTINE MPI_FINALIZE
68 gezelter 1612
69 gezelter 2204 SUBROUTINE MPI_BARRIER(COMM, IERROR)
70     INTEGER COMM, IERROR
71     END SUBROUTINE MPI_BARRIER
72    
73     SUBROUTINE MPI_COMM_RANK(COMM, RANK, IERROR)
74     INTEGER COMM, RANK, IERROR
75     END SUBROUTINE MPI_COMM_RANK
76    
77     SUBROUTINE MPI_COMM_SIZE(COMM, SIZE, IERROR)
78     INTEGER COMM, SIZE, IERROR
79     END SUBROUTINE MPI_COMM_SIZE
80     !
81     SUBROUTINE MPI_COMM_SPLIT(COMM, COLOR, KEY, NEWCOMM, IERROR)
82     INTEGER COMM, COLOR, KEY, NEWCOMM, IERROR
83     END SUBROUTINE MPI_COMM_SPLIT
84    
85     SUBROUTINE MPI_GET_PROCESSOR_NAME( NAME, RESULTLEN, IERROR)
86     CHARACTER(len=*) :: NAME
87     INTEGER RESULTLEN,IERROR
88     END SUBROUTINE MPI_GET_PROCESSOR_NAME
89    
90     ! FUNCTION MPI_WTICK()
91     ! DOUBLE PRECISION MPI_WTICK
92     ! END FUNCTION MPI_WTICK
93     end interface
94    
95     !! These routines are overloaded and require multiple argument types
96 gezelter 1612 interface mpi_allreduce
97     module procedure mpi_allreduce_int
98     module procedure mpi_allreduce_int_1d
99     module procedure mpi_allreduce_int_2d
100     module procedure mpi_allreduce_dp
101     module procedure mpi_allreduce_dp_1d
102 chuckv 2262 module procedure mpi_allreduce_dp_2d
103     module procedure mpi_allreduce_logical
104     module procedure mpi_allreduce_logical_1d
105 gezelter 1612 end interface
106    
107 gezelter 2204 ! interface mpi_reduce
108     ! module procedure mpi_reduce_int
109     ! module procedure mpi_reduce_int_1d
110     ! module procedure mpi_reduce_int_2d
111     ! module procedure mpi_reduce_dp
112     ! module procedure mpi_reduce_dp_1d
113     ! module procedure mpi_reduce_dp_2d
114     ! end interface
115    
116 gezelter 1612 interface mpi_reduce_scatter
117     module procedure mpi_reduce_scatter_int
118     module procedure mpi_reduce_scatter_int_1d
119     module procedure mpi_reduce_scatter_int_2d
120     module procedure mpi_reduce_scatter_dp
121     module procedure mpi_reduce_scatter_dp_1d
122     module procedure mpi_reduce_scatter_dp_2d
123     end interface
124    
125     interface mpi_allgatherv
126     module procedure mpi_allgatherv_int
127     module procedure mpi_allgatherv_int_1d
128     module procedure mpi_allgatherv_int_2d
129     module procedure mpi_allgatherv_dp
130     module procedure mpi_allgatherv_dp_1d
131     module procedure mpi_allgatherv_dp_2d
132     end interface
133    
134     interface mpi_allgather
135     module procedure mpi_allgather_int
136     module procedure mpi_allgather_int_1d
137     module procedure mpi_allgather_int_2d
138     module procedure mpi_allgather_dp
139     module procedure mpi_allgather_dp_1d
140     module procedure mpi_allgather_dp_2d
141     end interface
142    
143     interface mpi_send
144     module procedure mpi_send_dp
145     module procedure mpi_send_dp_1d
146     module procedure mpi_send_dp_2d
147     module procedure mpi_send_int
148     module procedure mpi_send_int_1d
149     module procedure mpi_send_int_2d
150     module procedure mpi_send_logical
151     module procedure mpi_send_logical_1d
152     module procedure mpi_send_t
153     module procedure mpi_send_char
154     end interface
155    
156     interface mpi_bcast
157     module procedure mpi_bcast_dp
158     module procedure mpi_bcast_dp_1d
159     module procedure mpi_bcast_dp_2d
160     module procedure mpi_bcast_int
161     module procedure mpi_bcast_int_1d
162     module procedure mpi_bcast_int_2d
163     module procedure mpi_bcast_t
164     module procedure mpi_bcast_char
165     module procedure mpi_bcast_logical
166     module procedure mpi_bcast_logical_1d
167 gezelter 2204 end interface
168 gezelter 1612
169     interface mpi_recv
170     module procedure mpi_recv_int
171     module procedure mpi_recv_int_1d
172     module procedure mpi_recv_int_2d
173     module procedure mpi_recv_dp
174     module procedure mpi_recv_dp_1d
175     module procedure mpi_recv_dp_2d
176     module procedure mpi_recv_t
177     module procedure mpi_recv_char
178     module procedure mpi_recv_logical
179     module procedure mpi_recv_logical_1d
180 gezelter 2204 end interface
181 gezelter 1612
182    
183    
184     contains
185    
186    
187    
188 gezelter 2204 !! MPI BCAST FUNCTIONS
189 gezelter 1612 subroutine mpi_bcast_t(BUFFER, COUNT, DATATYPE, ROOT, COMM, &
190     IERROR)
191 gezelter 2204 character (len=*),dimension(:) :: BUFFER
192     integer :: COUNT, DATATYPE, ROOT, COMM, IERROR
193     external MPI_BCAST
194     call MPI_BCAST(BUFFER, COUNT, DATATYPE, ROOT, COMM, IERROR)
195 gezelter 1612 end subroutine mpi_bcast_t
196    
197     subroutine mpi_bcast_char(BUFFER, COUNT, DATATYPE, ROOT, COMM, &
198     IERROR)
199 gezelter 2204 character (len=*) :: BUFFER
200     integer :: COUNT, DATATYPE, ROOT, COMM, IERROR
201     external MPI_BCAST
202     call MPI_BCAST(BUFFER, COUNT, DATATYPE, ROOT, COMM, IERROR)
203 gezelter 1612 end subroutine mpi_bcast_char
204    
205     subroutine mpi_bcast_int(BUFFER, COUNT, DATATYPE, ROOT, COMM, &
206     IERROR)
207 gezelter 2204 integer :: BUFFER
208     integer :: COUNT, DATATYPE, ROOT, COMM, IERROR
209     external MPI_BCAST
210     call MPI_BCAST(BUFFER, COUNT, DATATYPE, ROOT, COMM, IERROR)
211 gezelter 1612 end subroutine mpi_bcast_int
212    
213     subroutine mpi_bcast_int_1d(BUFFER, COUNT, DATATYPE, ROOT, COMM, &
214     IERROR)
215 gezelter 2204 integer, dimension(:) :: BUFFER
216     integer :: COUNT, DATATYPE, ROOT, COMM, IERROR
217     external MPI_BCAST
218     call MPI_BCAST(BUFFER, COUNT, DATATYPE, ROOT, COMM, IERROR)
219 gezelter 1612 end subroutine mpi_bcast_int_1d
220    
221     subroutine mpi_bcast_int_2d(BUFFER, COUNT, DATATYPE, ROOT, COMM, &
222     IERROR)
223 gezelter 2204 integer, dimension(:,:) :: BUFFER
224     integer :: COUNT, DATATYPE, ROOT, COMM, IERROR
225     external MPI_BCAST
226     call MPI_BCAST(BUFFER, COUNT, DATATYPE, ROOT, COMM, IERROR)
227 gezelter 1612 end subroutine mpi_bcast_int_2d
228    
229     subroutine mpi_bcast_dp(BUFFER, COUNT, DATATYPE, ROOT, COMM, &
230     IERROR)
231 gezelter 2204 real(kind = dp) :: BUFFER
232     integer :: COUNT, DATATYPE, ROOT, COMM, IERROR
233     external MPI_BCAST
234     call MPI_BCAST(BUFFER, COUNT, DATATYPE, ROOT, COMM, IERROR)
235 gezelter 1612 end subroutine mpi_bcast_dp
236    
237     subroutine mpi_bcast_dp_1d(BUFFER, COUNT, DATATYPE, ROOT, COMM, &
238     IERROR)
239 gezelter 2204 real(kind = dp),dimension(:) :: BUFFER
240     integer :: COUNT, DATATYPE, ROOT, COMM, IERROR
241     external MPI_BCAST
242     call MPI_BCAST(BUFFER, COUNT, DATATYPE, ROOT, COMM, IERROR)
243 gezelter 1612 end subroutine mpi_bcast_dp_1d
244    
245     subroutine mpi_bcast_dp_2d(BUFFER, COUNT, DATATYPE, ROOT, COMM, &
246     IERROR)
247 gezelter 2204 real(kind = dp),dimension(:,:) :: BUFFER
248     integer :: COUNT, DATATYPE, ROOT, COMM, IERROR
249     external MPI_BCAST
250     call MPI_BCAST(BUFFER, COUNT, DATATYPE, ROOT, COMM, IERROR)
251 gezelter 1612 end subroutine mpi_bcast_dp_2d
252    
253     subroutine mpi_bcast_logical(BUFFER, COUNT, DATATYPE, ROOT, COMM, &
254     IERROR)
255     logical :: BUFFER
256     integer :: COUNT, DATATYPE, ROOT, COMM, IERROR
257     external MPI_BCAST
258     call MPI_BCAST(BUFFER, COUNT, DATATYPE, ROOT, COMM, IERROR)
259     end subroutine mpi_bcast_logical
260    
261     subroutine mpi_bcast_logical_1d(BUFFER, COUNT, DATATYPE, ROOT, COMM, &
262     IERROR)
263     logical,dimension(:) :: BUFFER
264     integer :: COUNT, DATATYPE, ROOT, COMM, IERROR
265     external MPI_BCAST
266     call MPI_BCAST(BUFFER, COUNT, DATATYPE, ROOT, COMM, IERROR)
267     end subroutine mpi_bcast_logical_1d
268    
269    
270    
271 gezelter 2204 !---------------------END MPIBCAST---------------------------------
272 gezelter 1612
273    
274 gezelter 2204 !--------------------MPISEND-------------------------------------
275 gezelter 1612 SUBROUTINE MPI_SEND_T(BUF, COUNT, DATATYPE, DEST, TAG, COMM, &
276     IERROR)
277     character(len=*), dimension(:) :: BUF
278     INTEGER COUNT, DATATYPE, DEST, TAG, COMM, IERROR
279     EXTERNAL MPI_SEND
280     CALL MPI_SEND(BUF, COUNT, DATATYPE, DEST, TAG, COMM, IERROR)
281     END SUBROUTINE MPI_SEND_T
282     SUBROUTINE MPI_SEND_CHAR(BUF, COUNT, DATATYPE, DEST, TAG, COMM, &
283     IERROR)
284     character(len=*) :: BUF
285     INTEGER COUNT, DATATYPE, DEST, TAG, COMM, IERROR
286     EXTERNAL MPI_SEND
287     CALL MPI_SEND(BUF, COUNT, DATATYPE, DEST, TAG, COMM, IERROR)
288     END SUBROUTINE MPI_SEND_CHAR
289    
290     SUBROUTINE MPI_SEND_DP(BUF, COUNT, DATATYPE, DEST, TAG, COMM, &
291     IERROR)
292     real(kind=dp) :: BUF
293     INTEGER COUNT, DATATYPE, DEST, TAG, COMM, IERROR
294     EXTERNAL MPI_SEND
295     CALL MPI_SEND(BUF, COUNT, DATATYPE, DEST, TAG, COMM, IERROR)
296     END SUBROUTINE MPI_SEND_DP
297    
298     SUBROUTINE MPI_SEND_DP_1D(BUF, COUNT, DATATYPE, DEST, TAG, COMM, &
299     IERROR)
300     real(kind=dp), dimension(:) :: BUF
301     INTEGER COUNT, DATATYPE, DEST, TAG, COMM, IERROR
302     EXTERNAL MPI_SEND
303     CALL MPI_SEND(BUF, COUNT, DATATYPE, DEST, TAG, COMM, IERROR)
304     END SUBROUTINE MPI_SEND_DP_1D
305    
306     SUBROUTINE MPI_SEND_DP_2D(BUF, COUNT, DATATYPE, DEST, TAG, COMM, &
307     IERROR)
308     real(kind=dp), dimension(:,:) :: BUF
309     INTEGER COUNT, DATATYPE, DEST, TAG, COMM, IERROR
310     EXTERNAL MPI_SEND
311     CALL MPI_SEND(BUF, COUNT, DATATYPE, DEST, TAG, COMM, IERROR)
312     END SUBROUTINE MPI_SEND_DP_2D
313    
314     SUBROUTINE MPI_SEND_INT(BUF, COUNT, DATATYPE, DEST, TAG, COMM, &
315     IERROR)
316     INTEGER :: BUF
317     INTEGER :: COUNT, DATATYPE, DEST, TAG, COMM, IERROR
318     EXTERNAL MPI_SEND
319     CALL MPI_SEND(BUF, COUNT, DATATYPE, DEST, TAG, COMM, IERROR)
320     END SUBROUTINE MPI_SEND_INT
321    
322     SUBROUTINE MPI_SEND_INT_1D(BUF, COUNT, DATATYPE, DEST, TAG, COMM, &
323     IERROR)
324     INTEGER, dimension(:) :: BUF
325     INTEGER COUNT, DATATYPE, DEST, TAG, COMM, IERROR
326     EXTERNAL MPI_SEND
327     CALL MPI_SEND(BUF, COUNT, DATATYPE, DEST, TAG, COMM, IERROR)
328     END SUBROUTINE MPI_SEND_INT_1D
329    
330     SUBROUTINE MPI_SEND_INT_2D(BUF, COUNT, DATATYPE, DEST, TAG, COMM, &
331     IERROR)
332     INTEGER, dimension(:,:) :: BUF
333     INTEGER COUNT, DATATYPE, DEST, TAG, COMM, IERROR
334     EXTERNAL MPI_SEND
335     CALL MPI_SEND(BUF, COUNT, DATATYPE, DEST, TAG, COMM, IERROR)
336     END SUBROUTINE MPI_SEND_INT_2D
337 gezelter 2204
338 gezelter 1612 SUBROUTINE MPI_SEND_LOGICAL(BUF, COUNT, DATATYPE, DEST, TAG, COMM, &
339     IERROR)
340     LOGICAL :: BUF
341     INTEGER COUNT, DATATYPE, DEST, TAG, COMM, IERROR
342     EXTERNAL MPI_SEND
343     CALL MPI_SEND(BUF, COUNT, DATATYPE, DEST, TAG, COMM, IERROR)
344     END SUBROUTINE MPI_SEND_LOGICAL
345    
346     SUBROUTINE MPI_SEND_LOGICAL_1D(BUF, COUNT, DATATYPE, DEST, TAG, COMM, &
347     IERROR)
348     LOGICAL,dimension(:) :: BUF
349     INTEGER COUNT, DATATYPE, DEST, TAG, COMM, IERROR
350     EXTERNAL MPI_SEND
351     CALL MPI_SEND(BUF, COUNT, DATATYPE, DEST, TAG, COMM, IERROR)
352     END SUBROUTINE MPI_SEND_LOGICAL_1D
353 gezelter 2204 ! ----------------END MPISEND------------------------------>
354 gezelter 1612
355 gezelter 2204 !------------------BEGIN MPIRECV-------------------------->
356 gezelter 1612
357     subroutine mpi_recv_T(BUF, COUNT, DATATYPE, SOURCE, TAG, COMM, &
358 gezelter 2204 STATUS, IERROR)
359     character(len=*), dimension(:) :: BUF
360     INTEGER COUNT, DATATYPE, SOURCE, TAG, COMM, &
361 gezelter 1612 STATUS(MPI_STATUS_SIZE), IERROR
362 gezelter 2204 EXTERNAL MPI_RECV
363     CALL MPI_RECV(BUF, COUNT, DATATYPE, SOURCE, TAG, COMM, STATUS, &
364 gezelter 1612 IERROR)
365     end subroutine mpi_recv_T
366    
367     subroutine mpi_recv_char(BUF, COUNT, DATATYPE, SOURCE, TAG, COMM, &
368 gezelter 2204 STATUS, IERROR)
369     character(len=*) :: BUF
370     INTEGER COUNT, DATATYPE, SOURCE, TAG, COMM, &
371 gezelter 1612 STATUS(MPI_STATUS_SIZE), IERROR
372 gezelter 2204 EXTERNAL MPI_RECV
373     CALL MPI_RECV(BUF, COUNT, DATATYPE, SOURCE, TAG, COMM, STATUS, &
374 gezelter 1612 IERROR)
375     end subroutine mpi_recv_char
376    
377     subroutine mpi_recv_int(BUF, COUNT, DATATYPE, SOURCE, TAG, COMM, &
378 gezelter 2204 STATUS, IERROR)
379     INTEGER :: BUF
380     INTEGER COUNT, DATATYPE, SOURCE, TAG, COMM, &
381 gezelter 1612 STATUS(MPI_STATUS_SIZE), IERROR
382 gezelter 2204 EXTERNAL MPI_RECV
383     CALL MPI_RECV(BUF, COUNT, DATATYPE, SOURCE, TAG, COMM, STATUS, &
384 gezelter 1612 IERROR)
385     end subroutine mpi_recv_int
386    
387     subroutine mpi_recv_int_1d(BUF, COUNT, DATATYPE, SOURCE, TAG, COMM, &
388 gezelter 2204 STATUS, IERROR)
389     INTEGER, dimension(:) :: BUF
390     INTEGER COUNT, DATATYPE, SOURCE, TAG, COMM, &
391 gezelter 1612 STATUS(MPI_STATUS_SIZE), IERROR
392 gezelter 2204 EXTERNAL MPI_RECV
393     CALL MPI_RECV(BUF, COUNT, DATATYPE, SOURCE, TAG, COMM, STATUS, &
394 gezelter 1612 IERROR)
395     end subroutine mpi_recv_int_1d
396     subroutine mpi_recv_int_2d(BUF, COUNT, DATATYPE, SOURCE, TAG, COMM, &
397     STATUS, IERROR)
398     INTEGER, dimension(:,:) :: BUF
399     INTEGER COUNT, DATATYPE, SOURCE, TAG, COMM, &
400 gezelter 2204 STATUS(MPI_STATUS_SIZE), IERROR
401 gezelter 1612 EXTERNAL MPI_RECV
402     CALL MPI_RECV(BUF, COUNT, DATATYPE, SOURCE, TAG, COMM, STATUS, &
403 gezelter 2204 IERROR)
404 gezelter 1612 end subroutine mpi_recv_int_2d
405    
406     subroutine mpi_recv_dp(BUF, COUNT, DATATYPE, SOURCE, TAG, COMM, &
407     STATUS, IERROR)
408     real(kind=dp) :: BUF
409     INTEGER COUNT, DATATYPE, SOURCE, TAG, COMM, &
410     STATUS(MPI_STATUS_SIZE), IERROR
411     EXTERNAL MPI_RECV
412     CALL MPI_RECV(BUF, COUNT, DATATYPE, SOURCE, TAG, COMM, STATUS, &
413     IERROR)
414     end subroutine mpi_recv_dp
415    
416     subroutine mpi_recv_dp_1d(BUF, COUNT, DATATYPE, SOURCE, TAG, COMM, &
417     STATUS, IERROR)
418     real(kind=dp), dimension(:) :: BUF
419     INTEGER COUNT, DATATYPE, SOURCE, TAG, COMM, &
420     STATUS(MPI_STATUS_SIZE), IERROR
421     EXTERNAL MPI_RECV
422     CALL MPI_RECV(BUF, COUNT, DATATYPE, SOURCE, TAG, COMM, STATUS, &
423     IERROR)
424     end subroutine mpi_recv_dp_1d
425    
426     subroutine mpi_recv_dp_2d(BUF, COUNT, DATATYPE, SOURCE, TAG, COMM, &
427     STATUS, IERROR)
428     real(kind=dp), dimension(:,:) :: BUF
429     INTEGER COUNT, DATATYPE, SOURCE, TAG, COMM, &
430     STATUS(MPI_STATUS_SIZE), IERROR
431     EXTERNAL MPI_RECV
432     CALL MPI_RECV(BUF, COUNT, DATATYPE, SOURCE, TAG, COMM, STATUS, &
433     IERROR)
434     end subroutine mpi_recv_dp_2d
435    
436     subroutine mpi_recv_logical_1d(BUF, COUNT, DATATYPE, SOURCE, TAG, COMM, &
437     STATUS, IERROR)
438     logical, dimension(:) :: BUF
439     INTEGER COUNT, DATATYPE, SOURCE, TAG, COMM, &
440     STATUS(MPI_STATUS_SIZE), IERROR
441     EXTERNAL MPI_RECV
442     CALL MPI_RECV(BUF, COUNT, DATATYPE, SOURCE, TAG, COMM, STATUS, &
443     IERROR)
444     end subroutine mpi_recv_logical_1d
445    
446     subroutine mpi_recv_logical(BUF, COUNT, DATATYPE, SOURCE, TAG, COMM, &
447     STATUS, IERROR)
448     logical :: BUF
449     INTEGER COUNT, DATATYPE, SOURCE, TAG, COMM, &
450     STATUS(MPI_STATUS_SIZE), IERROR
451     EXTERNAL MPI_RECV
452     CALL MPI_RECV(BUF, COUNT, DATATYPE, SOURCE, TAG, COMM, STATUS, &
453     IERROR)
454     end subroutine mpi_recv_logical
455 gezelter 2204 !-------------------------END MPIRECV------------------------------
456 gezelter 1612
457 gezelter 2204 !-------------------------MPI_ALLREDUCE----------------------------
458 gezelter 1612
459     SUBROUTINE MPI_ALLREDUCE_int(SENDBUF, RECVBUF, COUNT, DATATYPE, &
460 gezelter 2204 OP, COMM, IERROR)
461 gezelter 1612 INTEGER :: SENDBUF, RECVBUF
462     INTEGER COUNT, DATATYPE, OP, COMM, IERROR
463     EXTERNAL MPI_ALLREDUCE
464     CALL MPI_ALLREDUCE(SENDBUF, RECVBUF, COUNT, DATATYPE, OP, &
465 gezelter 2204 COMM, IERROR)
466 gezelter 1612 END SUBROUTINE MPI_ALLREDUCE_INT
467    
468     SUBROUTINE MPI_ALLREDUCE_INT_1d(SENDBUF, RECVBUF, COUNT, DATATYPE, &
469 gezelter 2204 OP, COMM, IERROR)
470 gezelter 1612 INTEGER,dimension(:) :: SENDBUF, RECVBUF
471     INTEGER COUNT, DATATYPE, OP, COMM, IERROR
472     EXTERNAL MPI_ALLREDUCE
473     CALL MPI_ALLREDUCE(SENDBUF, RECVBUF, COUNT, DATATYPE, OP, &
474 gezelter 2204 COMM, IERROR)
475 gezelter 1612 END SUBROUTINE MPI_ALLREDUCE_INT_1D
476    
477     SUBROUTINE MPI_ALLREDUCE_INT_2D(SENDBUF, RECVBUF, COUNT, DATATYPE, &
478 gezelter 2204 OP, COMM, IERROR)
479 gezelter 1612 integer,dimension(:,:) :: SENDBUF, RECVBUF
480     INTEGER COUNT, DATATYPE, OP, COMM, IERROR
481     EXTERNAL MPI_ALLREDUCE
482     CALL MPI_ALLREDUCE(SENDBUF, RECVBUF, COUNT, DATATYPE, OP, &
483 gezelter 2204 COMM, IERROR)
484 gezelter 1612 END SUBROUTINE MPI_ALLREDUCE_INT_2D
485    
486     SUBROUTINE MPI_ALLREDUCE_DP(SENDBUF, RECVBUF, COUNT, DATATYPE, &
487 gezelter 2204 OP, COMM, IERROR)
488 gezelter 1612 REAL(kind=dp) :: SENDBUF, RECVBUF
489     INTEGER COUNT, DATATYPE, OP, COMM, IERROR
490     EXTERNAL MPI_ALLREDUCE
491     CALL MPI_ALLREDUCE(SENDBUF, RECVBUF, COUNT, DATATYPE, OP, &
492 gezelter 2204 COMM, IERROR)
493 gezelter 1612 END SUBROUTINE MPI_ALLREDUCE_DP
494    
495     SUBROUTINE MPI_ALLREDUCE_DP_1d(SENDBUF, RECVBUF, COUNT, DATATYPE, &
496 gezelter 2204 OP, COMM, IERROR)
497 gezelter 1612 REAL(kind=dp),dimension(:) :: SENDBUF, RECVBUF
498     INTEGER COUNT, DATATYPE, OP, COMM, IERROR
499     EXTERNAL MPI_ALLREDUCE
500     CALL MPI_ALLREDUCE(SENDBUF, RECVBUF, COUNT, DATATYPE, OP, &
501 gezelter 2204 COMM, IERROR)
502 gezelter 1612 END SUBROUTINE MPI_ALLREDUCE_DP_1D
503    
504     SUBROUTINE MPI_ALLREDUCE_DP_2D(SENDBUF, RECVBUF, COUNT, DATATYPE, &
505 gezelter 2204 OP, COMM, IERROR)
506 gezelter 1612 real(kind=dp),dimension(:,:) :: SENDBUF, RECVBUF
507     INTEGER COUNT, DATATYPE, OP, COMM, IERROR
508     EXTERNAL MPI_ALLREDUCE
509     CALL MPI_ALLREDUCE(SENDBUF, RECVBUF, COUNT, DATATYPE, OP, &
510 gezelter 2204 COMM, IERROR)
511 gezelter 1612 END SUBROUTINE MPI_ALLREDUCE_DP_2D
512 chuckv 2262
513    
514     SUBROUTINE MPI_ALLREDUCE_LOGICAL(SENDBUF, RECVBUF, COUNT, DATATYPE, &
515     OP, COMM, IERROR)
516     LOGICAL :: SENDBUF, RECVBUF
517     INTEGER COUNT, DATATYPE, OP, COMM, IERROR
518     EXTERNAL MPI_ALLREDUCE
519     CALL MPI_ALLREDUCE(SENDBUF, RECVBUF, COUNT, DATATYPE, OP, &
520     COMM, IERROR)
521     END SUBROUTINE MPI_ALLREDUCE_LOGICAL
522    
523    
524     SUBROUTINE MPI_ALLREDUCE_LOGICAL_1D(SENDBUF, RECVBUF, COUNT, DATATYPE, &
525     OP, COMM, IERROR)
526     LOGICAL, dimension(:) :: SENDBUF, RECVBUF
527     INTEGER COUNT, DATATYPE, OP, COMM, IERROR
528     EXTERNAL MPI_ALLREDUCE
529     CALL MPI_ALLREDUCE(SENDBUF, RECVBUF, COUNT, DATATYPE, OP, &
530     COMM, IERROR)
531     end SUBROUTINE MPI_ALLREDUCE_LOGICAL_1D
532    
533 gezelter 2204 !-----------------END MPI_ALLREDUCE-------------------------->
534 gezelter 1612
535 gezelter 2204 !----------------BEGIN MPI_REDUCE_SCATTER
536 gezelter 1612 SUBROUTINE MPI_REDUCE_SCATTER_DP(SENDBUF, RECVBUF, RECVCOUNTS, &
537     DATATYPE, OP, COMM, IERROR)
538     real(kind=dp) :: SENDBUF, RECVBUF
539     INTEGER RECVCOUNTS(*), DATATYPE, OP, COMM, IERROR
540     EXTERNAL MPI_REDUCE_SCATTER
541     CALL MPI_REDUCE_SCATTER(SENDBUF, RECVBUF, RECVCOUNTS, &
542     DATATYPE, OP, COMM, IERROR)
543     END SUBROUTINE MPI_REDUCE_SCATTER_DP
544    
545     SUBROUTINE MPI_REDUCE_SCATTER_DP_1D(SENDBUF, RECVBUF, RECVCOUNTS, &
546     DATATYPE, OP, COMM, IERROR)
547     real(kind=dp),dimension(:) :: SENDBUF, RECVBUF
548     INTEGER RECVCOUNTS(*), DATATYPE, OP, COMM, IERROR
549     EXTERNAL MPI_REDUCE_SCATTER
550     CALL MPI_REDUCE_SCATTER(SENDBUF, RECVBUF, RECVCOUNTS, &
551     DATATYPE, OP, COMM, IERROR)
552     END SUBROUTINE MPI_REDUCE_SCATTER_DP_1D
553    
554     SUBROUTINE MPI_REDUCE_SCATTER_DP_2D(SENDBUF, RECVBUF, RECVCOUNTS, &
555     DATATYPE, OP, COMM, IERROR)
556     real(kind=dp),dimension(:,:) :: SENDBUF, RECVBUF
557     INTEGER RECVCOUNTS(*), DATATYPE, OP, COMM, IERROR
558     EXTERNAL MPI_REDUCE_SCATTER
559     CALL MPI_REDUCE_SCATTER(SENDBUF, RECVBUF, RECVCOUNTS, &
560     DATATYPE, OP, COMM, IERROR)
561     END SUBROUTINE MPI_REDUCE_SCATTER_DP_2D
562    
563     SUBROUTINE MPI_REDUCE_SCATTER_INT(SENDBUF, RECVBUF, RECVCOUNTS, &
564     DATATYPE, OP, COMM, IERROR)
565     integer :: SENDBUF, RECVBUF
566     INTEGER RECVCOUNTS(*), DATATYPE, OP, COMM, IERROR
567     EXTERNAL MPI_REDUCE_SCATTER
568     CALL MPI_REDUCE_SCATTER(SENDBUF, RECVBUF, RECVCOUNTS, &
569     DATATYPE, OP, COMM, IERROR)
570     END SUBROUTINE MPI_REDUCE_SCATTER_INT
571    
572     SUBROUTINE MPI_REDUCE_SCATTER_INT_1D(SENDBUF, RECVBUF, RECVCOUNTS, &
573     DATATYPE, OP, COMM, IERROR)
574     integer,dimension(:) :: SENDBUF, RECVBUF
575     INTEGER RECVCOUNTS(*), DATATYPE, OP, COMM, IERROR
576     EXTERNAL MPI_REDUCE_SCATTER
577     CALL MPI_REDUCE_SCATTER(SENDBUF, RECVBUF, RECVCOUNTS, &
578     DATATYPE, OP, COMM, IERROR)
579     END SUBROUTINE MPI_REDUCE_SCATTER_INT_1D
580    
581     SUBROUTINE MPI_REDUCE_SCATTER_INT_2D(SENDBUF, RECVBUF, RECVCOUNTS, &
582     DATATYPE, OP, COMM, IERROR)
583     integer,dimension(:,:) :: SENDBUF, RECVBUF
584     INTEGER RECVCOUNTS(*), DATATYPE, OP, COMM, IERROR
585     EXTERNAL MPI_REDUCE_SCATTER
586     CALL MPI_REDUCE_SCATTER(SENDBUF, RECVBUF, RECVCOUNTS, &
587     DATATYPE, OP, COMM, IERROR)
588     END SUBROUTINE MPI_REDUCE_SCATTER_INT_2D
589    
590 gezelter 2204 !end ---------------------MPI_REDUCE_SCATTER----------------->
591 gezelter 1612
592 gezelter 2204 !BEGIN------------------- MPI_ALLGATHERV--------------------->
593 gezelter 1612 SUBROUTINE MPI_ALLGATHERV_INT(SENDBUF, SENDCOUNT, SENDTYPE, &
594     RECVBUF, RECVCOUNTS, DISPLS, RECVTYPE, COMM, IERROR)
595     INTEGER :: SENDBUF
596     INTEGER,dimension(:) :: RECVBUF
597     INTEGER SENDCOUNT, SENDTYPE, RECVCOUNTS(*), DISPLS(*), &
598     RECVTYPE, COMM, IERROR
599     EXTERNAL MPI_ALLGATHERV
600     CALL MPI_ALLGATHERV(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, &
601     RECVCOUNTS, DISPLS, RECVTYPE, COMM, IERROR)
602     END SUBROUTINE MPI_ALLGATHERV_INT
603    
604     SUBROUTINE MPI_ALLGATHERV_INT_1D(SENDBUF, SENDCOUNT, SENDTYPE, &
605     RECVBUF, RECVCOUNTS, DISPLS, RECVTYPE, COMM, IERROR)
606     INTEGER,dimension(:) :: SENDBUF, RECVBUF
607     INTEGER SENDCOUNT, SENDTYPE, RECVCOUNTS(*), DISPLS(*), &
608     RECVTYPE, COMM, IERROR
609     EXTERNAL MPI_ALLGATHERV
610     CALL MPI_ALLGATHERV(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, &
611     RECVCOUNTS, DISPLS, RECVTYPE, COMM, IERROR)
612     END SUBROUTINE MPI_AlLGATHERV_INT_1D
613    
614     SUBROUTINE MPI_ALLGATHERV_INT_2D(SENDBUF, SENDCOUNT, SENDTYPE, &
615     RECVBUF, RECVCOUNTS, DISPLS, RECVTYPE, COMM, IERROR)
616     INTEGER,dimension(:,:) :: SENDBUF, RECVBUF
617     INTEGER SENDCOUNT, SENDTYPE, RECVCOUNTS(*), DISPLS(*), &
618     RECVTYPE, COMM, IERROR
619     EXTERNAL MPI_ALLGATHERV
620     CALL MPI_ALLGATHERV(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, &
621     RECVCOUNTS, DISPLS, RECVTYPE, COMM, IERROR)
622     END SUBROUTINE MPI_ALLGATHERV_INT_2D
623    
624 gezelter 2204 SUBROUTINE MPI_ALLGATHERV_DP(SENDBUF, SENDCOUNT, SENDTYPE, &
625 gezelter 1612 RECVBUF, RECVCOUNTS, DISPLS, RECVTYPE, COMM, IERROR)
626     real(kind=dp) :: SENDBUF
627     real(kind=dp),dimension(:) :: RECVBUF
628     INTEGER SENDCOUNT, SENDTYPE, RECVCOUNTS(*), DISPLS(*), &
629     RECVTYPE, ROOT, COMM, IERROR
630     EXTERNAL MPI_ALLGATHERV
631     CALL MPI_ALLGATHERV(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, &
632     RECVCOUNTS, DISPLS, RECVTYPE, COMM, IERROR)
633     END SUBROUTINE MPI_ALLGATHERV_DP
634    
635     SUBROUTINE MPI_ALLGATHERV_DP_1D(SENDBUF, SENDCOUNT, SENDTYPE, &
636     RECVBUF, RECVCOUNTS, DISPLS, RECVTYPE, COMM, IERROR)
637     real(kind=dp),dimension(:) :: SENDBUF, RECVBUF
638     INTEGER SENDCOUNT, SENDTYPE, RECVCOUNTS(*), DISPLS(*), &
639     RECVTYPE, COMM, IERROR
640     EXTERNAL MPI_ALLGATHERV
641     CALL MPI_ALLGATHERV(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, &
642     RECVCOUNTS, DISPLS, RECVTYPE, COMM, IERROR)
643     END SUBROUTINE MPI_AlLGATHERV_dp_1D
644    
645     SUBROUTINE MPI_ALLGATHERV_dp_2D(SENDBUF, SENDCOUNT, SENDTYPE, &
646     RECVBUF, RECVCOUNTS, DISPLS, RECVTYPE, COMM, IERROR)
647     REAL(kind=dp),dimension(:,:) :: SENDBUF, RECVBUF
648     INTEGER SENDCOUNT, SENDTYPE, RECVCOUNTS(*), DISPLS(*), &
649     RECVTYPE, COMM, IERROR
650     EXTERNAL MPI_ALLGATHERV
651     CALL MPI_ALLGATHERV(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, &
652     RECVCOUNTS, DISPLS, RECVTYPE, COMM, IERROR)
653     END SUBROUTINE MPI_ALLGATHERV_DP_2D
654 gezelter 2204 !--------------------------end MPI_ALLGATHERV----------------------->
655 gezelter 1612
656     SUBROUTINE MPI_ALLGATHER_DP(SENDBUF, SENDCOUNT, SENDTYPE, &
657 gezelter 2204 RECVBUF, RECVCOUNT, RECVTYPE, COMM, IERROR)
658 gezelter 1612 real(kind=dp) :: SENDBUF
659     real(kind=dp), dimension(:) :: RECVBUF
660     INTEGER SENDCOUNT, SENDTYPE, RECVCOUNT, RECVTYPE, COMM, IERROR
661     EXTERNAL MPI_ALLGATHER
662     CALL MPI_ALLGATHER(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, &
663     RECVCOUNT, RECVTYPE, COMM, IERROR)
664     END SUBROUTINE MPI_ALLGATHER_DP
665    
666     SUBROUTINE MPI_ALLGATHER_DP_1D(SENDBUF, SENDCOUNT, SENDTYPE, &
667 gezelter 2204 RECVBUF, RECVCOUNT, RECVTYPE, COMM, IERROR)
668 gezelter 1612 real(kind=dp),dimension(:) :: SENDBUF, RECVBUF
669     INTEGER SENDCOUNT, SENDTYPE, RECVCOUNT, RECVTYPE, COMM, IERROR
670     EXTERNAL MPI_ALLGATHER
671     CALL MPI_ALLGATHER(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, &
672     RECVCOUNT, RECVTYPE, COMM, IERROR)
673     END SUBROUTINE MPI_ALLGATHER_DP_1D
674    
675     SUBROUTINE MPI_ALLGATHER_DP_2D(SENDBUF, SENDCOUNT, SENDTYPE, &
676 gezelter 2204 RECVBUF, RECVCOUNT, RECVTYPE, COMM, IERROR)
677 gezelter 1612 real(kind=dp),dimension(:,:) :: SENDBUF, RECVBUF
678     INTEGER SENDCOUNT, SENDTYPE, RECVCOUNT, RECVTYPE, COMM, IERROR
679     EXTERNAL MPI_ALLGATHER
680     CALL MPI_ALLGATHER(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, &
681     RECVCOUNT, RECVTYPE, COMM, IERROR)
682     END SUBROUTINE MPI_ALLGATHER_DP_2D
683    
684     SUBROUTINE MPI_ALLGATHER_INT(SENDBUF, SENDCOUNT, SENDTYPE, &
685 gezelter 2204 RECVBUF, RECVCOUNT, RECVTYPE, COMM, IERROR)
686 gezelter 1612 integer :: SENDBUF
687     integer,dimension(:) :: RECVBUF
688     INTEGER SENDCOUNT, SENDTYPE, RECVCOUNT, RECVTYPE, COMM, IERROR
689     EXTERNAL MPI_ALLGATHER
690     CALL MPI_ALLGATHER(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, &
691     RECVCOUNT, RECVTYPE, COMM, IERROR)
692     END SUBROUTINE MPI_ALLGATHER_INT
693    
694     SUBROUTINE MPI_ALLGATHER_INT_1D(SENDBUF, SENDCOUNT, SENDTYPE, &
695 gezelter 2204 RECVBUF, RECVCOUNT, RECVTYPE, COMM, IERROR)
696 gezelter 1612 integer,dimension(:) :: SENDBUF, RECVBUF
697     INTEGER SENDCOUNT, SENDTYPE, RECVCOUNT, RECVTYPE, COMM, IERROR
698     EXTERNAL MPI_ALLGATHER
699     CALL MPI_ALLGATHER(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, &
700     RECVCOUNT, RECVTYPE, COMM, IERROR)
701     END SUBROUTINE MPI_ALLGATHER_INT_1D
702    
703     SUBROUTINE MPI_ALLGATHER_INT_2D(SENDBUF, SENDCOUNT, SENDTYPE, &
704 gezelter 2204 RECVBUF, RECVCOUNT, RECVTYPE, COMM, IERROR)
705 gezelter 1612 integer,dimension(:,:) :: SENDBUF, RECVBUF
706     INTEGER SENDCOUNT, SENDTYPE, RECVCOUNT, RECVTYPE, COMM, IERROR
707     EXTERNAL MPI_ALLGATHER
708     CALL MPI_ALLGATHER(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, &
709     RECVCOUNT, RECVTYPE, COMM, IERROR)
710     END SUBROUTINE MPI_ALLGATHER_INT_2D
711 gezelter 2204 !-----------------------END MPI_ALLGATHER---------------------------
712 gezelter 1612
713     #endif
714     end module oopseMPI