30 . INDEX_RCV_NEIGH,INDEX_SEND_NEIGH,LENCOM,
31 . TMP_NB_RCV_NEIGH,TMP_NB_SEND_NEIGH,
32 . TMP_INDEX_RCV_NEIGH,TMP_INDEX_SEND_NEIGH)
46 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
47#include "implicit_f.inc"
58#include "tabsiz_c.inc"
62 INTEGER,
DIMENSION(SNESDVOIS),
INTENT(IN) :: NB_SEND_NEIGH
63 INTEGER,
DIMENSION(SNERCVOIS),
INTENT(IN) :: NB_RCV_NEIGH
64 INTEGER,
DIMENSION(SLESDVOIS),
INTENT(IN) :: INDEX_SEND_NEIGH
65 INTEGER,
DIMENSION(SLERCVOIS),
INTENT(IN) :: INDEX_RCV_NEIGH
67 INTEGER,
DIMENSION(SNESDVOIS),
INTENT(INOUT) :: TMP_NB_SEND_NEIGH
68 INTEGER,
DIMENSION(SNERCVOIS),
INTENT(INOUT) :: TMP_NB_RCV_NEIGH
69 INTEGER,
DIMENSION(SLESDVOIS),
INTENT(INOUT) :: TMP_INDEX_SEND_NEIGH
70 INTEGER,
DIMENSION(SLERCVOIS),
INTENT(INOUT) :: TMP_INDEX_RCV_NEIGH
71 INTEGER,
INTENT(IN) :: LENCOM
72 LOGICAL,
DIMENSION(NUMELS+NUMELQ+NUMELTG),
INTENT(IN) :: ACTIVE_ELEMENT
77 INTEGER I, IDEB, IDEB2, MSGOFF, IERROR,,IAD_RECV(NSPMD),
78 . STATUS(MPI_STATUS_SIZE), REQ_S(NSPMD), REQ_R(NSPMD),
79 . LOC_PROC, N, NN, NBIRECV, IRINDEX(NSPMD), II, INDEX,
82 LOGICAL,
DIMENSION(:),
ALLOCATABLE :: WA
84 ALLOCATE( wa(lencom) )
95 IF(nb_rcv_neigh(i)>0)
THEN
99 CALL mpi_irecv( wa(ideb2+1),len,mpi_logical,it_spmd(i),msgtyp,
100 . spmd_comm_world,req_r(nbirecv),ierror)
111 len = nb_send_neigh(i)
112 tmp_nb_send_neigh(i) = 0
115 nn = index_send_neigh(ideb+n)
119 tmp_index_send_neigh(ideb+tmp_nb_send_neigh(i)) = index_send_neigh(ideb+n)
122 CALL mpi_isend( wa(ideb2+1),len,mpi_logical,it_spmd(i),msgtyp,
123 . spmd_comm_world,req_s(i),ierror)
133 CALL mpi_waitany(nbirecv,req_r,index,status,ierror)
135 tmp_nb_rcv_neigh(i) = 0
137 DO n = 1, nb_rcv_neigh(i)
138 nn = index_rcv_neigh(ideb+n)
140 tmp_nb_rcv_neigh(i) = tmp_nb_rcv_neigh(i) + 1
141 tmp_index_rcv_neigh(ideb+tmp_nb_rcv_neigh(i)) = index_rcv_neigh(ideb+n)
150 IF(nb_send_neigh(i)>0)
THEN
151 CALL mpi_wait(req_s(i),status,ierror)
subroutine mpi_isend(buf, cnt, datatype, dest, tag, comm, ireq, ierr)
subroutine mpi_irecv(buf, cnt, datatype, source, tag, comm, ireq, ierr)
subroutine spmd_check_ale_neighbour(active_element, nb_rcv_neigh, nb_send_neigh, index_rcv_neigh, index_send_neigh, lencom, tmp_nb_rcv_neigh, tmp_nb_send_neigh, tmp_index_rcv_neigh, tmp_index_send_neigh)