43 character(len=80),
parameter :: name =
'des_mpi_barrier' 46 call mpi_barrier(mpi_comm_world, lerr)
47 call mpi_check( name //
':mpi_barrier ', lerr )
59 double precision,
dimension(:) :: precvbuf
60 integer :: precvcnt,ptoproc,ptag,preq,perr
62 call mpi_irecv(precvbuf,precvcnt,mpi_double_precision,ptoproc,ptag,mpi_comm_world,preq,perr)
74 double precision,
dimension(:) :: psendbuf
75 integer :: psendcnt,ptoproc,ptag,preq,perr
77 call mpi_isend(psendbuf,psendcnt,mpi_double_precision,ptoproc,ptag,mpi_comm_world,preq,perr)
92 integer :: lmpi_status(mpi_status_size)
93 call mpi_wait(preq,lmpi_status,perr)
103 pprocbuf,precvcnt,proot,perr )
106 double precision,
dimension(:):: prootbuf,pprocbuf
107 integer,
dimension (:) :: pdispls,pscattercnts
108 integer :: precvcnt,proot,perr
111 call mpi_scatterv(prootbuf,pscattercnts,pdispls,mpi_double_precision, &
112 pprocbuf,precvcnt,mpi_double_precision,proot,mpi_comm_world,perr )
123 pprocbuf, precvcnt,proot,perr )
126 integer,
dimension(:) :: prootbuf,pprocbuf
127 integer,
dimension (:) :: pdispls,pscattercnts
128 integer :: precvcnt,proot,perr
131 call mpi_scatterv(prootbuf,pscattercnts,pdispls,mpi_integer, &
132 pprocbuf,precvcnt,mpi_integer,proot,mpi_comm_world,perr )
143 precvcnts, pdispls,proot,perr )
146 double precision,
dimension(:) :: psendbuf,precvbuf
147 integer,
dimension (:) :: pdispls,precvcnts
148 integer :: psendcnt,proot,perr
151 call mpi_gatherv(psendbuf,psendcnt,mpi_double_precision,precvbuf,precvcnts, &
152 pdispls,mpi_double_precision,proot,mpi_comm_world,perr )
163 precvcnts, pdispls,proot,perr )
166 integer,
dimension(:) :: psendbuf,precvbuf
167 integer,
dimension (:) :: pdispls,precvcnts
168 integer :: psendcnt,proot,perr
171 call mpi_gatherv(psendbuf,psendcnt,mpi_integer,precvbuf,precvcnts, &
172 pdispls,mpi_integer,proot,mpi_comm_world,perr )
188 integer,
optional,
intent(in) :: myid
192 INTEGER :: mylid, ERRORCODE
194 if (.not.
present(myid))
then 203 100
format(/,
'*****************',&
204 '********************************************',/, &
205 '(PE ',i2,
') : A fatal error occurred in des routines',/,9x, &
206 '*.LOG file may contain other error messages ',/,
'*****************', &
207 '********************************************',/)
210 call mpi_abort(mpi_comm_world, errorcode,
mpierr)
211 write(*,
"('(PE ',I2,') : MPI_ABORT return = ',I2)") &
216 error_stop
'MPI terminated from des_mpi_stop' 218 error_stop
'terminated from des_mpi_stop'
subroutine des_mpi_stop(myid)
subroutine des_mpi_isend_db(psendbuf, psendcnt, ptoproc, ptag, preq, perr)
subroutine des_mpi_gatherv_db(psendbuf, psendcnt, precvbuf, precvcnts, pdispls, proot, perr)
subroutine des_mpi_wait(preq, perr)
subroutine des_mpi_scatterv_db(prootbuf, pscattercnts, pdispls, pprocbuf, precvcnt, proot, perr)
subroutine des_mpi_barrier
subroutine des_mpi_irecv_db(precvbuf, precvcnt, ptoproc, ptag, preq, perr)
integer, parameter unit_log
subroutine mpi_check(msg, ierr)
subroutine des_mpi_scatterv_i(prootbuf, pscattercnts, pdispls, pprocbuf, precvcnt, proot, perr)
subroutine des_mpi_gatherv_i(psendbuf, psendcnt, precvbuf, precvcnts, pdispls, proot, perr)