80 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
81#include "implicit_f.inc"
97#include "timeri_c.inc"
102 INTEGER,
INTENT(IN) :: STAB
103 INTEGER,
INTENT(IN) :: TAB(STAB)
111 INTEGER STATUS (MPI_STATUS_SIZE)
117 ALLOCATE(my_struct%TAB(stab),stat=ierror)
118 ALLOCATE(my_struct%BUFFER_TAB(stab,nspmd),stat=ierror)
119 ALLOCATE(my_struct%BUFFER_VAL(nspmd) ,stat=ierror)
120 ALLOCATE(my_struct%RQ_SEND_VAL(nspmd),stat=ierror)
121 ALLOCATE(my_struct%RQ_RECV_VAL(nspmd),stat=ierror)
122 ALLOCATE(my_struct%RQ_SEND_TAB(nspmd),stat=ierror)
123 ALLOCATE(my_struct%RQ_RECV_TAB(nspmd),stat=ierror)
125 my_struct%LENGTH_TAB = stab
127 my_struct%TAB(1:stab) = tab(1:stab)
128 my_struct%BUFFER_VAL(ispmd+1) = val
129 my_struct%BUFFER_TAB(1:stab,ispmd+1) = tab(1:stab)
133 IF( p /= ispmd +1 )
THEN
136 1 my_struct%BUFFER_VAL(p) ,1,real,it_spmd(p),msgtyp,
137 2 spmd_comm_world,my_struct%RQ_RECV_VAL(p),ierror)
141 1 my_struct%BUFFER_TAB(1,p),my_struct%LENGTH_TAB,mpi_integer,it_spmd(p),msgtyp,
142 2 spmd_comm_world,my_struct%RQ_RECV_TAB(p),ierror)
146 IF( p /= ispmd +1 )
THEN
149 1 my_struct%VAL ,1,real,it_spmd(p),msgtyp,
150 2 spmd_comm_world,my_struct%RQ_SEND_VAL(p),ierror)
154 1 my_struct%TAB,my_struct%LENGTH_TAB,mpi_integer,it_spmd(p),msgtyp,
155 2 spmd_comm_world,my_struct%RQ_SEND_TAB(p),ierror)
180 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
181#include "implicit_f.inc"
190#include "com01_c.inc"
191#include "com04_c.inc"
192#include "scr02_c.inc"
193#include "scr18_c.inc"
195#include "units_c.inc"
197#include "timeri_c.inc"
202 INTEGER,
INTENT(IN) :: STAB
203 INTEGER,
INTENT(INOUT) :: TAB(STAB)
211 INTEGER STATUS (MPI_STATUS_SIZE)
215 IF(ispmd + 1 /= p)
THEN
216 CALL mpi_wait(my_struct%RQ_SEND_VAL(p),status,ierror)
217 CALL mpi_wait(my_struct%RQ_SEND_TAB(p),status,ierror)
218 CALL mpi_wait(my_struct%RQ_RECV_VAL(p),status,ierror)
219 CALL mpi_wait(my_struct%RQ_RECV_TAB(p),status,ierror)
226 val = my_struct%BUFFER_VAL(1)
228 IF(val > my_struct%BUFFER_VAL(p))
THEN
229 val = my_struct%BUFFER_VAL(p)
235 tab(1:stab) = my_struct%BUFFER_TAB(1:stab,pmin)
237 DEALLOCATE(my_struct%TAB)
238 DEALLOCATE(my_struct%BUFFER_TAB)
239 DEALLOCATE(my_struct%BUFFER_VAL )
240 DEALLOCATE(my_struct%RQ_SEND_VAL)
241 DEALLOCATE(my_struct%RQ_RECV_VAL)
242 DEALLOCATE(my_struct%RQ_SEND_TAB)
243 DEALLOCATE(my_struct%RQ_RECV_TAB)
subroutine mpi_isend(buf, cnt, datatype, dest, tag, comm, ireq, ierr)
subroutine mpi_irecv(buf, cnt, datatype, source, tag, comm, ireq, ierr)