35 1 BUFS ,LBUFS ,IXS ,IXC ,IXTG ,
36 2 IXQ ,IPARG ,ITAGL ,NODES,TAGEL ,
37 3 IRSIZE,IRECV ,CNEL ,ADDCNEL,OFC ,
38 4 OFT ,OFTG ,OFUR ,OFR ,OFP ,
39 5 OFQ ,LINDEX,IXP ,IXR ,IXT ,
45 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
46#include "implicit_f.inc"
61 TYPE(),
INTENT(IN) :: NODES
68 INTEGER,
DIMENSION(2,NSPMD+1),
INTENT(in) :: IAD_ELEM
82 INTEGER,
DIMENSION(:),
ALLOCATABLE :: BUFR, BUFS2
88 ALLOCATE(bufr(irsize))
94 req_r1(1:nspmd) = mpi_request_null
96 siz = (iad_elem(1,i+1)-iad_elem(1,i))
97 IF(i/=loc_proc.AND.irecv(i)>0.AND.siz>0)
THEN
100 . bufr(ideb),irecv(i),mpi_integer,it_spmd(i),msgtyp,
101 . spmd_comm_world,req_r1(i),ierror)
110 siz = (iad_elem(1,i+1)-iad_elem(1,i))
111 IF(i/=loc_proc.AND.lbufs>0.AND.siz>0)
THEN
114 c bufs,lbufs,mpi_integer,it_spmd(i),msgtyp,
115 g spmd_comm_world,req_s2(i),ierror)
125 siz = (iad_elem(1,i+1)-iad_elem(1,i))
126 IF(i/=loc_proc.AND.irecv(i)>0.AND.siz>0)
THEN
128 CALL mpi_wait(req_r1(i),status,ierror)
134 n1 = get_local_node_id(nodes, bufr(ideb+4*(nn-1)+1))
138 n2 = get_local_node_id(nodes, bufr(ideb+4*(nn-1)+2))
141 n3 = get_local_node_id(nodes, bufr(ideb+4*(nn-1)+3))
144 n4 = get_local_node_id(nodes, bufr(ideb+4*(nn-1)+4))
147 DO j=addcnel(n1),addcnel(n1+1)-1
159 ELSEIF(ii>ofq.AND.ii<=ofc)
THEN
165 ELSEIF(ii>ofc.AND.ii<=oft)
THEN
171 ELSEIF(ii>oftg.AND.ii<=ofur)
THEN
179 IF(itagl(n1)+itagl(n2)+itagl(n3)+itagl(n4)==4)
THEN
197 irecv(i)=irecv(i)+nbel
206 siz = (iad_elem(1,i+1)-iad_elem(1,i))
207 IF(i/=loc_proc.AND.irecv(i)>0.AND.siz>0)
THEN
211 c bufr(ideb),len,mpi_integer,it_spmd(i),msgtyp,
212 g spmd_comm_world,req_s3(i),ierror)
220 siz = (iad_elem(1,i+1)-iad_elem(1,i))
221 IF(i/=loc_proc.AND.lbufs>0.AND.siz>0)
THEN
222 CALL mpi_wait(req_s2(i),status,ierror)
228 ALLOCATE(bufs2(lindex))
234 siz = (iad_elem(1,i+1)-iad_elem(1,i))
235 IF(i/=loc_proc.AND.lindex>0.AND.siz>0)
THEN
238 . bufs2,lindex,mpi_integer,it_spmd(i),msgtyp,
239 . spmd_comm_world,status,ierror)
241 bufs(j) =
max(bufs(j),bufs2(j))
252 siz = (iad_elem(1,i+1)-iad_elem(1,i))
253 IF(i/=loc_proc.AND.siz>0.AND.irecv(i)>0)
THEN
254 CALL mpi_wait(req_s3(i),status,ierror)
subroutine spmd_exchseg_idel(bufs, lbufs, ixs, ixc, ixtg, ixq, iparg, itagl, nodes, tagel, irsize, irecv, cnel, addcnel, ofc, oft, oftg, ofur, ofr, ofp, ofq, lindex, ixp, ixr, ixt, geo, iad_elem)