Nek5000
SEM for Incompressible NS
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
mpi_dummy.F90
Go to the documentation of this file.
1 !*********************************************************************72
2  subroutine mpi_scan(data1, data2, n, datatype, &
3  operation, comm, ierror )
4 
5  implicit none
6 
7  include "mpi_dummy.h"
8 
9  integer :: n
10 
11  integer :: comm
12  integer :: data1(n)
13  integer :: data2(n)
14  integer :: datatype
15  integer :: ierror
16  integer :: operation ! currently hardwired only for sum only
17 
18  ierror = mpi_success
19 
20  if ( datatype == mpi_double_precision ) then
21 
22  call copy( data2, data1, n )
23 
24  else if ( datatype == mpi_integer ) then
25 
26  data2 = data1
27 
28  else if ( datatype == mpi_integer8 ) then
29 
30  data2 = data1
31 
32  else if ( datatype == mpi_real ) then
33 
34  data2 = data1
35 
36  else
37 
38  ierror = mpi_failure
39 
40  end if
41 
42  return
43  end subroutine mpi_scan
44 
45 !*********************************************************************72
46  subroutine mpi_abort ( comm, errorcode, ierror )
47 
48 !*********************************************************************72
49 
50 !c MPI_ABORT shuts down the processes in a given communicator.
51 
52  implicit none
53 
54  integer :: comm
55  integer :: errorcode
56  integer :: ierror
57  integer :: MPI_FAILURE
58  parameter( mpi_failure = 1 )
59  integer :: MPI_SUCCESS
60  parameter( mpi_success = 0 )
61 
62  ierror = mpi_success
63 
64  write ( *, '(a)' ) ' '
65  write ( *, '(a)' ) 'MPI_ABORT:'
66  write ( *, '(a,i12)' ) &
67  ' Shut down with error code = ', errorcode
68 
69  stop
70  end subroutine mpi_abort
71  subroutine mpi_allgather ( data1, nsend, sendtype, data2, &
72  nrecv, recvtype, comm, ierror )
73 
74 !*********************************************************************72
75 
76 !c MPI_ALLGATHER gathers data from all the processes in a communicator.
77 
78  implicit none
79 
80  include "mpi_dummy.h"
81 
82  integer :: nsend
83 
84  integer :: comm
85  integer :: data1(nsend)
86  integer :: data2(nsend)
87  integer :: ierror
88  integer :: nrecv
89  integer :: recvtype
90  integer :: sendtype
91 
92  ierror = mpi_success
93 
94  if ( sendtype == mpi_double_precision ) then
95  call mpi_copy_double_precision( data1, data2, nsend, ierror )
96  else if ( sendtype == mpi_integer ) then
97  call mpi_copy_integer( data1, data2, nsend, ierror )
98  else if ( sendtype == mpi_real ) then
99  call mpi_copy_real( data1, data2, nsend, ierror )
100  else
101  ierror = mpi_failure
102  end if
103 
104  return
105  end subroutine mpi_allgather
106  subroutine mpi_allgatherv ( data1, nsend, sendtype, &
107  data2, nrecv, ndispls, recvtype, comm, ierror )
108 
109 !*********************************************************************72
110 
111 !c MPI_ALLGATHERV gathers data from all the processes in a communicator.
112 
113  implicit none
114 
115  include "mpi_dummy.h"
116 
117  integer :: nsend
118 
119  integer :: comm
120  integer :: data1(nsend)
121  integer :: data2(nsend)
122  integer :: ierror
123  integer :: ndispls
124  integer :: nrecv
125  integer :: recvtype
126  integer :: sendtype
127 
128  ierror = mpi_success
129 
130  if ( sendtype == mpi_double_precision ) then
131  call mpi_copy_double_precision( data1, data2, nsend, ierror )
132  else if ( sendtype == mpi_integer ) then
133  call mpi_copy_integer( data1, data2, nsend, ierror )
134  else if ( sendtype == mpi_real ) then
135  call mpi_copy_real( data1, data2, nsend, ierror )
136  else
137  ierror = mpi_failure
138  end if
139 
140  return
141  end subroutine mpi_allgatherv
142  subroutine mpi_allreduce ( data1, data2, n, datatype, &
143  operation, comm, ierror )
144 
145 !*********************************************************************72
146 
147 !c MPI_ALLREDUCE carries out a reduction operation.
148 
149  implicit none
150 
151  include "mpi_dummy.h"
152 
153  integer :: n
154 
155  integer :: comm
156  integer :: data1(n)
157  integer :: data2(n)
158  integer :: datatype
159  integer :: ierror
160  integer :: operation
161 
162  ierror = mpi_success
163 
164  if ( datatype == mpi_double_precision ) then
165 
167  data1, data2, n, operation, ierror )
168 
169  else if ( datatype == mpi_integer ) then
170 
171  call mpi_reduce_integer( &
172  data1, data2, n, operation, ierror )
173 
174  else if ( datatype == mpi_integer8 ) then
175 
176  call mpi_reduce_integer8( &
177  data1, data2, n, operation, ierror )
178 
179  else if ( datatype == mpi_real ) then
180 
181  call mpi_reduce_real( &
182  data1, data2, n, operation, ierror )
183 
184  else
185 
186  ierror = mpi_failure
187 
188  end if
189 
190  return
191  end subroutine mpi_allreduce
192 
193  subroutine mpi_barrier ( comm, ierror )
194 
195 !*********************************************************************72
196 
197 !c MPI_BARRIER forces processes within a communicator to wait together.
198 
199  implicit none
200 
201  integer :: comm
202  integer :: ierror
203  integer :: MPI_FAILURE
204  parameter( mpi_failure = 1 )
205  integer :: MPI_SUCCESS
206  parameter( mpi_success = 0 )
207 
208  ierror = mpi_failure
209 
210  return
211  end subroutine mpi_barrier
212  subroutine mpi_bcast ( data, n, datatype, node, comm, ierror )
213 
214 !*********************************************************************72
215 
216 !c MPI_BCAST broadcasts data from one process to all others.
217 
218  implicit none
219 
220  integer :: n
221 
222  integer :: comm
223  integer :: data(n)
224  integer :: datatype
225  integer :: ierror
226  integer :: MPI_FAILURE
227  parameter( mpi_failure = 1 )
228  integer :: MPI_SUCCESS
229  parameter( mpi_success = 0 )
230  integer :: node
231 
232  ierror = mpi_success
233 
234  return
235  end subroutine mpi_bcast
236  subroutine mpi_bsend ( data, n, datatype, iproc, itag, &
237  comm, ierror )
238 
239 !*********************************************************************72
240 
241 !c MPI_BSEND sends data from one process to another, using buffering.
242 
243  implicit none
244 
245  integer :: n
246 
247  integer :: comm
248  integer :: data(n)
249  integer :: datatype
250  integer :: ierror
251  integer :: iproc
252  integer :: itag
253  integer :: MPI_FAILURE
254  parameter( mpi_failure = 1 )
255  integer :: MPI_SUCCESS
256  parameter( mpi_success = 0 )
257 
258  ierror = mpi_failure
259 
260  write ( *, '(a)' ) ' '
261  write ( *, '(a)' ) 'MPI_BSEND - Error!'
262  write ( *, '(a)' ) ' Should not send message to self.'
263 
264  return
265  end subroutine mpi_bsend
266  subroutine mpi_cart_create ( comm, ndims, dims, periods, &
267  reorder, comm_cart, ierror )
268 
269 !*********************************************************************72
270 
271 !c MPI_CART_CREATE creates a communicator for a Cartesian topology.
272 
273  implicit none
274 
275  integer :: ndims
276 
277  integer :: comm
278  integer :: comm_cart
279  integer :: dims(*)
280  integer :: ierror
281  integer :: MPI_FAILURE
282  parameter( mpi_failure = 1 )
283  integer :: MPI_SUCCESS
284  parameter( mpi_success = 0 )
285  logical :: periods(*)
286  logical :: reorder
287 
288  ierror = mpi_success
289 
290  return
291  end subroutine mpi_cart_create
292  subroutine mpi_cart_get ( comm, ndims, dims, periods, &
293  coords, ierror )
294 
295 !*********************************************************************72
296 
297 !c MPI_CART_GET returns the "Cartesian coordinates" of the calling process.
298 
299  implicit none
300 
301  integer :: ndims
302 
303  integer :: comm
304  integer :: coords(*)
305  integer :: dims(*)
306  integer :: i
307  integer :: ierror
308  integer :: MPI_FAILURE
309  parameter( mpi_failure = 1 )
310  integer :: MPI_SUCCESS
311  parameter( mpi_success = 0 )
312  logical :: periods(*)
313 
314  ierror = mpi_success
315 
316  do i = 1, ndims
317  coords(i) = 0
318  end do
319 
320  return
321  end subroutine mpi_cart_get
322  subroutine mpi_cart_shift ( comm, idir, idisp, isource, &
323  idest, ierror )
324 
325 !*********************************************************************72
326 
327 !c MPI_CART_SHIFT finds the destination and source for Cartesian shifts.
328 
329  implicit none
330 
331  integer :: comm
332  integer :: idest
333  integer :: idir
334  integer :: idisp
335  integer :: ierror
336  integer :: isource
337  integer :: MPI_FAILURE
338  parameter( mpi_failure = 1 )
339  integer :: MPI_SUCCESS
340  parameter( mpi_success = 0 )
341 
342  ierror = mpi_success
343  isource = 0
344  idest = 0
345 
346  return
347  end subroutine mpi_cart_shift
348  subroutine mpi_comm_dup ( comm, comm_out, ierror )
349 
350 !*********************************************************************72
351 
352 !c MPI_COMM_DUP duplicates a communicator.
353 
354  implicit none
355 
356  integer :: comm
357  integer :: comm_out
358  integer :: ierror
359  integer :: MPI_FAILURE
360  parameter( mpi_failure = 1 )
361  integer :: MPI_SUCCESS
362  parameter( mpi_success = 0 )
363 
364  ierror = mpi_success
365  comm_out = comm
366 
367  return
368  end subroutine mpi_comm_dup
369  subroutine mpi_comm_free ( comm, ierror )
370 
371 !*********************************************************************72
372 
373 !c MPI_COMM_FREE "frees" a communicator.
374 
375  implicit none
376 
377  integer :: comm
378  integer :: ierror
379  integer :: MPI_FAILURE
380  parameter( mpi_failure = 1 )
381  integer :: MPI_SUCCESS
382  parameter( mpi_success = 0 )
383 
384  ierror = mpi_success
385 
386  return
387  end subroutine mpi_comm_free
388  subroutine mpi_comm_rank ( comm, me, ierror )
389 
390 !*********************************************************************72
391 
392 !c MPI_COMM_RANK reports the rank of the calling process.
393 
394  implicit none
395 
396  integer :: comm
397  integer :: ierror
398  integer :: me
399  integer :: MPI_FAILURE
400  parameter( mpi_failure = 1 )
401  integer :: MPI_SUCCESS
402  parameter( mpi_success = 0 )
403 
404  ierror = mpi_success
405  me = 0
406 
407  return
408  end subroutine mpi_comm_rank
409  subroutine mpi_comm_size ( comm, nprocs, ierror )
410 
411 !*********************************************************************72
412 
413 !c MPI_COMM_SIZE reports the number of processes in a communicator.
414 
415  implicit none
416 
417  integer :: comm
418  integer :: ierror
419  integer :: MPI_FAILURE
420  parameter( mpi_failure = 1 )
421  integer :: MPI_SUCCESS
422  parameter( mpi_success = 0 )
423  integer :: nprocs
424 
425  ierror = mpi_success
426  nprocs = 1
427 
428  return
429  end subroutine mpi_comm_size
430  subroutine mpi_comm_split ( comm, icolor, ikey, comm_new, &
431  ierror )
432 
433 !*********************************************************************72
434 
435 !c MPI_COMM_SPLIT splits up a communicator based on a key.
436 
437  implicit none
438 
439  integer :: comm
440  integer :: comm_new
441  integer :: icolor
442  integer :: ierror
443  integer :: ikey
444  integer :: MPI_FAILURE
445  parameter( mpi_failure = 1 )
446  integer :: MPI_SUCCESS
447  parameter( mpi_success = 0 )
448 
449  ierror = mpi_success
450 
451  return
452  end subroutine mpi_comm_split
453  subroutine mpi_copy_double_precision ( data1, data2, n, ierror )
454 
455 !*********************************************************************72
456 
457 !c MPI_COPY_DOUBLE copies a real*8 vector.
458 
459  implicit none
460 
461  integer :: n
462 
463  real*8 :: data1(n)
464  real*8 :: data2(n)
465  integer :: i
466  integer :: ierror
467  integer :: MPI_FAILURE
468  parameter( mpi_failure = 1 )
469  integer :: MPI_SUCCESS
470  parameter( mpi_success = 0 )
471 
472  ierror = mpi_success
473 
474  do i = 1, n
475  data2(i) = data1(i)
476  end do
477 
478  return
479  end subroutine mpi_copy_double_precision
480  subroutine mpi_copy_integer ( data1, data2, n, ierror )
481 
482 !*********************************************************************72
483 
484 !c MPI_COPY_INTEGER copies an integer vector.
485 
486  implicit none
487 
488  integer :: n
489 
490  integer :: data1(n)
491  integer :: data2(n)
492  integer :: i
493  integer :: ierror
494  integer :: MPI_FAILURE
495  parameter( mpi_failure = 1 )
496  integer :: MPI_SUCCESS
497  parameter( mpi_success = 0 )
498 
499  ierror = mpi_success
500 
501  do i = 1, n
502  data2(i) = data1(i)
503  end do
504 
505  return
506  end subroutine mpi_copy_integer
507  subroutine mpi_copy_real ( data1, data2, n, ierror )
508 
509 !*********************************************************************72
510 
511  implicit none
512 
513  integer :: n
514 
515  real :: data1(n)
516  real :: data2(n)
517  integer :: i
518  integer :: ierror
519  integer :: MPI_FAILURE
520  parameter( mpi_failure = 1 )
521  integer :: MPI_SUCCESS
522  parameter( mpi_success = 0 )
523 
524  ierror = mpi_success
525 
526  do i = 1, n
527  data2(i) = data1(i)
528  end do
529 
530  return
531  end subroutine mpi_copy_real
532  subroutine mpi_finalize ( ierror )
533 
534 !*********************************************************************72
535 
536 !c MPI_FINALIZE shuts down the MPI library.
537 
538  implicit none
539 
540  integer :: ierror
541  integer :: MPI_FAILURE
542  parameter( mpi_failure = 1 )
543  integer :: MPI_SUCCESS
544  parameter( mpi_success = 0 )
545 
546  ierror = mpi_success
547 
548  return
549  end subroutine mpi_finalize
550  subroutine mpi_get_count ( istatus, datatype, icount, ierror )
551 
552 !*********************************************************************72
553 
554 !c MPI_GET_COUNT reports the actual number of items transmitted.
555 
556  implicit none
557 
558  integer :: datatype
559  integer :: icount
560  integer :: ierror
561  integer :: istatus
562  integer :: MPI_FAILURE
563  parameter( mpi_failure = 1 )
564  integer :: MPI_SUCCESS
565  parameter( mpi_success = 0 )
566 
567  ierror = mpi_failure
568 
569  write ( *, '(a)' ) ' '
570  write ( *, '(a)' ) 'MPI_GET_COUNT - Error!'
571  write ( *, '(a)' ) ' Should not query message from self.'
572 
573  return
574  end subroutine mpi_get_count
575  subroutine mpi_init ( ierror )
576 
577 !*********************************************************************72
578 
579 !c MPI_INIT initializes the MPI library.
580 
581  implicit none
582 
583  integer :: ierror
584  integer :: MPI_FAILURE
585  parameter( mpi_failure = 1 )
586  integer :: MPI_SUCCESS
587  parameter( mpi_success = 0 )
588 
589  ierror = mpi_success
590 
591  return
592  end subroutine mpi_init
593  subroutine mpi_irecv ( data, n, datatype, iproc, itag, &
594  comm, irequest, ierror )
595 
596 !*********************************************************************72
597 
598 !c MPI_IRECV receives data from another process.
599 
600  implicit none
601 
602  integer :: n
603 
604  integer :: comm
605  integer :: data(n)
606  integer :: datatype
607  integer :: ierror
608  integer :: iproc
609  integer :: irequest
610  integer :: itag
611  integer :: MPI_FAILURE
612  parameter( mpi_failure = 1 )
613  integer :: MPI_SUCCESS
614  parameter( mpi_success = 0 )
615 
616  ierror = mpi_failure
617 
618  write ( *, '(a)' ) ' '
619  write ( *, '(a)' ) 'MPI_IRECV - Error!'
620  write ( *, '(a)' ) ' Should not recv message from self.'
621 
622  return
623  end subroutine mpi_irecv
624  subroutine mpi_isend ( data, n, datatype, iproc, itag, &
625  comm, request, ierror )
626 
627 !*********************************************************************72
628 
629 !c MPI_ISEND sends data from one process to another using nonblocking transmission.
630 
631  implicit none
632 
633  integer :: n
634 
635  integer :: comm
636  integer :: data(n)
637  integer :: datatype
638  integer :: ierror
639  integer :: iproc
640  integer :: itag
641  integer :: MPI_FAILURE
642  parameter( mpi_failure = 1 )
643  integer :: MPI_SUCCESS
644  parameter( mpi_success = 0 )
645  integer :: request
646 
647  request = 0
648  ierror = mpi_failure
649 
650  write ( *, '(a)' ) ' '
651  write ( *, '(a)' ) 'MPI_ISEND - Error!'
652  write ( *, '(a)' ) ' Should not send message to self.'
653 
654  return
655  end subroutine mpi_isend
656  subroutine mpi_recv ( data, n, datatype, iproc, itag, &
657  comm, istatus, ierror )
658 
659 !*********************************************************************72
660 
661 !c MPI_RECV receives data from another process within a communicator.
662 
663  implicit none
664 
665  integer :: n
666 
667  integer :: comm
668  integer :: data(n)
669  integer :: datatype
670  integer :: ierror
671  integer :: iproc
672  integer :: istatus
673  integer :: itag
674  integer :: MPI_FAILURE
675  parameter( mpi_failure = 1 )
676  integer :: MPI_SUCCESS
677  parameter( mpi_success = 0 )
678 
679  ierror = mpi_failure
680 
681  write ( *, '(a)' ) ' '
682  write ( *, '(a)' ) 'MPI_RECV - Error!'
683  write ( *, '(a)' ) ' Should not recv message from self.'
684 
685  return
686  end subroutine mpi_recv
687  subroutine mpi_reduce ( data1, data2, n, datatype, operation, &
688  receiver, comm, ierror )
689 
690 !*********************************************************************72
691 
692 !c MPI_REDUCE carries out a reduction operation.
693 
694  implicit none
695 
696  include "mpi_dummy.h"
697 
698  integer :: n
699 
700  integer :: comm
701  integer :: data1(n)
702  integer :: data2
703  integer :: datatype
704  integer :: ierror
705  integer :: operation
706  integer :: receiver
707 
708  ierror = mpi_success
709 
710  if ( datatype == mpi_double_precision ) then
711 
713  data1, data2, n, operation, ierror )
714 
715  else if ( datatype == mpi_integer ) then
716 
717  call mpi_reduce_integer( &
718  data1, data2, n, operation, ierror )
719 
720  else if ( datatype == mpi_real ) then
721 
722  call mpi_reduce_real( &
723  data1, data2, n, operation, ierror )
724 
725  else
726 
727  ierror = mpi_failure
728 
729  end if
730 
731  return
732  end subroutine mpi_reduce
734  data1, data2, n, operation, ierror )
735 
736 !*********************************************************************72
737 
738 !c MPI_REDUCE_DOUBLE_PRECISION carries out a reduction operation on real*8 values.
739 
740  implicit none
741 
742  include "mpi_dummy.h"
743 
744  integer :: n
745 
746  real*8 :: data1(n)
747  real*8 :: data2(n)
748  integer :: i
749  integer :: ierror
750  integer :: operation
751 
752 
753  ierror = mpi_success
754 
755  do i = 1, n
756  data2(i) = data1(i)
757  end do
758 
759  return
760  end subroutine mpi_reduce_double_precision
761 
762  subroutine mpi_reduce_integer8 ( &
763  data1, data2, n, operation, ierror )
764 
765 !*********************************************************************72
766 
767  implicit none
768 
769  include "mpi_dummy.h"
770 
771  integer :: n
772 
773  integer*8 :: data1(n)
774  integer*8 :: data2(n)
775  integer :: i
776  integer :: ierror
777  integer :: operation
778 
779  ierror = mpi_success
780 
781  do i = 1, n
782  data2(i) = data1(i)
783  end do
784 
785  ierror = mpi_failure
786 
787  return
788  end subroutine mpi_reduce_integer8
789 
790  subroutine mpi_reduce_integer ( &
791  data1, data2, n, operation, ierror )
792 
793 !*********************************************************************72
794 
795  implicit none
796 
797  include "mpi_dummy.h"
798 
799  integer :: n
800 
801  integer :: data1(n)
802  integer :: data2(n)
803  integer :: i
804  integer :: ierror
805  integer :: operation
806 
807  ierror = mpi_success
808 
809  do i = 1, n
810  data2(i) = data1(i)
811  end do
812 
813  ierror = mpi_failure
814 
815  return
816  end subroutine mpi_reduce_integer
817 
818  subroutine mpi_reduce_real ( &
819  data1, data2, n, operation, ierror )
820 
821 !*********************************************************************72
822 
823 !c MPI_REDUCE_REAL carries out a reduction operation on reals.
824 
825 ! Discussion:
826 
827  implicit none
828 
829  include "mpi_dummy.h"
830 
831  integer :: n
832 
833  real :: data1(n)
834  real :: data2(n)
835  integer :: i
836  integer :: ierror
837  integer :: operation
838 
839  ierror = mpi_success
840 
841  do i = 1, n
842  data2(i) = data1(i)
843  end do
844 
845  return
846  end subroutine mpi_reduce_real
847  subroutine mpi_reduce_scatter ( data1, data2, n, datatype, &
848  operation, comm, ierror )
849 
850 !*********************************************************************72
851 
852 !c MPI_REDUCE_SCATTER collects a message of the same length from each process.
853 
854  implicit none
855 
856  include "mpi_dummy.h"
857 
858  integer :: n
859 
860  integer :: comm
861  integer :: data1(n)
862  integer :: data2(n)
863  integer :: datatype
864  integer :: ierror
865  integer :: operation
866 
867  ierror = mpi_success
868 
869  if ( datatype == mpi_double_precision ) then
870  call mpi_copy_double_precision( data1, data2, n, ierror )
871  else if ( datatype == mpi_integer ) then
872  call mpi_copy_integer( data1, data2, n, ierror )
873  else if ( datatype == mpi_real ) then
874  call mpi_copy_real( data1, data2, n, ierror )
875  else
876  ierror = mpi_failure
877  end if
878 
879  return
880  end subroutine mpi_reduce_scatter
881  subroutine mpi_rsend ( data, n, datatype, iproc, itag, &
882  comm, ierror )
883 
884 !*********************************************************************72
885 
886 !c MPI_RSEND "ready sends" data from one process to another.
887 
888  implicit none
889 
890  integer :: n
891 
892  integer :: comm
893  integer :: data(n)
894  integer :: datatype
895  integer :: ierror
896  integer :: iproc
897  integer :: itag
898  integer :: MPI_FAILURE
899  parameter( mpi_failure = 1 )
900  integer :: MPI_SUCCESS
901  parameter( mpi_success = 0 )
902 
903  ierror = mpi_failure
904 
905  write ( *, '(a)' ) ' '
906  write ( *, '(a)' ) 'MPI_RSEND - Error!'
907  write ( *, '(a)' ) ' Should not send message to self.'
908 
909  return
910  end subroutine mpi_rsend
911  subroutine mpi_send ( data, n, datatype, iproc, itag, &
912  comm, ierror )
913 
914 !*********************************************************************72
915 
916 !c MPI_SEND sends data from one process to another.
917 
918  implicit none
919 
920  integer :: n
921 
922  integer :: comm
923  integer :: data(n)
924  integer :: datatype
925  integer :: ierror
926  integer :: iproc
927  integer :: itag
928  integer :: MPI_FAILURE
929  parameter( mpi_failure = 1 )
930  integer :: MPI_SUCCESS
931  parameter( mpi_success = 0 )
932 
933  ierror = mpi_failure
934 
935  write ( *, '(a)' ) ' '
936  write ( *, '(a)' ) 'MPI_SEND - Error!'
937  write ( *, '(a)' ) ' Should not send message to self.'
938 
939  return
940  end subroutine mpi_send
941  subroutine mpi_wait ( irequest, istatus, ierror )
942 
943 !*********************************************************************72
944 
945 !c MPI_WAIT waits for an I/O request to complete.
946 
947  implicit none
948 
949  integer :: ierror
950  integer :: irequest
951  integer :: istatus
952  integer :: MPI_FAILURE
953  parameter( mpi_failure = 1 )
954  integer :: MPI_SUCCESS
955  parameter( mpi_success = 0 )
956 
957  ierror = mpi_failure
958 
959  write ( *, '(a)' ) ' '
960  write ( *, '(a)' ) 'MPI_WAIT - Error!'
961  write ( *, '(a)' ) ' Should not wait on message from self.'
962 
963  return
964  end subroutine mpi_wait
965  subroutine mpi_waitall ( icount, irequest, istatus, ierror )
966 
967 !*********************************************************************72
968 
969 !c MPI_WAITALL waits until all I/O requests have completed.
970 
971  implicit none
972 
973  integer :: icount
974  integer :: ierror
975  integer :: irequest
976  integer :: istatus
977  integer :: MPI_FAILURE
978  parameter( mpi_failure = 1 )
979  integer :: MPI_SUCCESS
980  parameter( mpi_success = 0 )
981 
982  ierror = mpi_failure
983 
984  write ( *, '(a)' ) ' '
985  write ( *, '(a)' ) 'MPI_WAITALL - Error!'
986  write ( *, '(a)' ) ' Should not wait on message from self.'
987 
988  return
989  end subroutine mpi_waitall
990  subroutine mpi_waitany ( icount, array_of_requests, index, &
991  istatus, ierror )
992 
993 !*********************************************************************72
994 
995 !c MPI_WAITANY waits until one I/O requests has completed.
996 
997  implicit none
998 
999  integer :: array_of_requests(*)
1000  integer :: icount
1001  integer :: ierror
1002  integer :: index
1003  integer :: istatus
1004  integer :: MPI_FAILURE
1005  parameter( mpi_failure = 1 )
1006  integer :: MPI_SUCCESS
1007  parameter( mpi_success = 0 )
1008 
1009  ierror = mpi_failure
1010 
1011  write ( *, '(a)' ) ' '
1012  write ( *, '(a)' ) 'MPI_WAITANY - Error!'
1013  write ( *, '(a)' ) ' Should not wait on message from self.'
1014 
1015  return
1016  end subroutine mpi_waitany
1017  function mpi_wtick ( )
1018 
1019 !*********************************************************************72
1020 
1021 !c MPI_WTICK returns the time between clock ticks.
1022 
1023  implicit none
1024 
1025  real*8 :: mpi_wtick
1026 
1027  mpi_wtick = 1.0d+00
1028 
1029  return
1030  end function mpi_wtick
1031  function mpi_wtime ( )
1032 
1033 !*********************************************************************72
1034 
1035 !c MPI_WTIME returns the elapsed wall clock time.
1036 
1037  implicit none
1038 
1039  real*8 :: mpi_wtime
1040  real*4 :: a(2),etime
1041  a(1)=0.0
1042  a(2)=0.0
1043  mpi_wtime = etime(a)
1044 
1045  return
1046  end function mpi_wtime
1047 
1048  subroutine mpi_initialized(mpi_is_initialized, ierr)
1049 
1050  mpi_is_initialized = 0
1051  ierr = 0
1052 
1053  return
1054  end subroutine mpi_initialized
1055 
1056  subroutine mpi_comm_create(icomm,igroup,icommd,ierr)
1057 
1058  icommd = 1
1059 
1060  return
1061  end subroutine mpi_comm_create
1062 
1063  subroutine mpi_comm_group(icomm,igroup,ierr)
1064 
1065  igroup = 1
1066  ierr = 0
1067 
1068  return
1069  end subroutine mpi_comm_group
1070 
1071  subroutine mpi_group_free
1072 
1073  return
1074  end subroutine mpi_group_free
1075 
1076  subroutine mpi_attr_get(icomm,ikey,ival,iflag,ierr)
1077 
1078  logical :: iflag
1079 
1080  ival = 9 999 999 ! dummy
1081 
1082  return
1083  end subroutine mpi_attr_get
1084 !-----------------------------------------------------------------------
subroutine mpi_copy_integer(data1, data2, n, ierror)
Definition: mpi_dummy.F90:480
subroutine mpi_group_free
Definition: mpi_dummy.F90:1071
subroutine mpi_comm_create(icomm, igroup, icommd, ierr)
Definition: mpi_dummy.F90:1056
subroutine mpi_send(data, n, datatype, iproc, itag, comm, ierror)
Definition: mpi_dummy.F90:911
subroutine mpi_comm_dup(comm, comm_out, ierror)
Definition: mpi_dummy.F90:348
subroutine mpi_reduce(data1, data2, n, datatype, operation, receiver, comm, ierror)
Definition: mpi_dummy.F90:687
subroutine mpi_copy_real(data1, data2, n, ierror)
Definition: mpi_dummy.F90:507
subroutine mpi_recv(data, n, datatype, iproc, itag, comm, istatus, ierror)
Definition: mpi_dummy.F90:656
subroutine mpi_wait(irequest, istatus, ierror)
Definition: mpi_dummy.F90:941
subroutine mpi_scan(data1, data2, n, datatype, operation, comm, ierror)
Definition: mpi_dummy.F90:2
n
Definition: xxt_test.m:73
subroutine mpi_reduce_double_precision(data1, data2, n, operation, ierror)
Definition: mpi_dummy.F90:733
subroutine mpi_init(ierror)
Definition: mpi_dummy.F90:575
subroutine mpi_get_count(istatus, datatype, icount, ierror)
Definition: mpi_dummy.F90:550
subroutine mpi_waitany(icount, array_of_requests, index, istatus, ierror)
Definition: mpi_dummy.F90:990
subroutine mpi_reduce_integer8(data1, data2, n, operation, ierror)
Definition: mpi_dummy.F90:762
subroutine mpi_cart_shift(comm, idir, idisp, isource, idest, ierror)
Definition: mpi_dummy.F90:322
Definition: comm.h:85
subroutine mpi_bcast(data, n, datatype, node, comm, ierror)
Definition: mpi_dummy.F90:212
real *8 function mpi_wtick()
Definition: mpi_dummy.F90:1017
subroutine mpi_comm_group(icomm, igroup, ierr)
Definition: mpi_dummy.F90:1063
subroutine mpi_reduce_real(data1, data2, n, operation, ierror)
Definition: mpi_dummy.F90:818
subroutine mpi_allgather(data1, nsend, sendtype, data2, nrecv, recvtype, comm, ierror)
Definition: mpi_dummy.F90:71
subroutine mpi_comm_split(comm, icolor, ikey, comm_new, ierror)
Definition: mpi_dummy.F90:430
subroutine mpi_reduce_scatter(data1, data2, n, datatype, operation, comm, ierror)
Definition: mpi_dummy.F90:847
subroutine mpi_irecv(data, n, datatype, iproc, itag, comm, irequest, ierror)
Definition: mpi_dummy.F90:593
subroutine mpi_barrier(comm, ierror)
Definition: mpi_dummy.F90:193
subroutine mpi_bsend(data, n, datatype, iproc, itag, comm, ierror)
Definition: mpi_dummy.F90:236
subroutine mpi_rsend(data, n, datatype, iproc, itag, comm, ierror)
Definition: mpi_dummy.F90:881
subroutine copy(a, b, n)
Definition: math.F90:52
subroutine mpi_finalize(ierror)
Definition: mpi_dummy.F90:532
subroutine mpi_allreduce(data1, data2, n, datatype, operation, comm, ierror)
Definition: mpi_dummy.F90:142
subroutine mpi_copy_double_precision(data1, data2, n, ierror)
Definition: mpi_dummy.F90:453
subroutine mpi_abort(comm, errorcode, ierror)
Definition: mpi_dummy.F90:46
subroutine mpi_cart_create(comm, ndims, dims, periods, reorder, comm_cart, ierror)
Definition: mpi_dummy.F90:266
subroutine mpi_reduce_integer(data1, data2, n, operation, ierror)
Definition: mpi_dummy.F90:790
subroutine mpi_cart_get(comm, ndims, dims, periods, coords, ierror)
Definition: mpi_dummy.F90:292
subroutine mpi_comm_rank(comm, me, ierror)
Definition: mpi_dummy.F90:388
subroutine mpi_allgatherv(data1, nsend, sendtype, data2, nrecv, ndispls, recvtype, comm, ierror)
Definition: mpi_dummy.F90:106
subroutine mpi_attr_get(icomm, ikey, ival, iflag, ierr)
Definition: mpi_dummy.F90:1076
subroutine mpi_comm_free(comm, ierror)
Definition: mpi_dummy.F90:369
subroutine mpi_comm_size(comm, nprocs, ierror)
Definition: mpi_dummy.F90:409
real *8 function mpi_wtime()
Definition: mpi_dummy.F90:1031
subroutine mpi_waitall(icount, irequest, istatus, ierror)
Definition: mpi_dummy.F90:965
subroutine mpi_isend(data, n, datatype, iproc, itag, comm, request, ierror)
Definition: mpi_dummy.F90:624
subroutine mpi_initialized(mpi_is_initialized, ierr)
Definition: mpi_dummy.F90:1048