34 1 BUFS ,LBUFS,IXS ,IXC ,IXTG ,
35 2 IXQ ,IPARG ,ITAGL ,NODES,
36 3 IRSIZE,IRECV ,CNEL ,ADDCNEL,OFC ,
37 4 OFT ,OFTG ,OFUR ,OFR ,OFP ,
38 5 LINDEX,IXP ,IXR ,IXT ,GEO ,
44 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
45#include "implicit_f.inc"
60 TYPE(nodal_arrays_),
INTENT(INOUT) :: NODES
61 INTEGER IXS(NIXS,*), IXQ(NIXQ,*), IXC(NIXC,*), IXP(NIXP,*),
62 . IXR(NIXR,*), IXT(NIXT,*), TAGEL(*),
63 . IXTG(NIXTG,*), IPARG(NPARG,*),
64 . BUFS(*),ITAGL(*), IRECV(*), CNEL(0:*), ADDCNEL(0:*),
65 . IRSIZE, LBUFS, OFC, OFT, OFTG, OFUR, OFR, OFP, LINDEX
66 INTEGER,
DIMENSION(2,NSPMD+1),
INTENT(in) :: IAD_ELEM
75 INTEGER MSGOFF2 ,MSGOFF3, MSGTYP, LOC_PROC,
76 . IERROR,I, IDEB, LEN, N1, N2, N3, N4,
77 . K, IX, LFT, LLT, II, NN, J, IOFF,
78 . JD(50), KD(50), NG, IDEL, ITYP, NBEL,
79 . ITY, MLW, NEL, NFT, , NPT, ISTRA, ,
80 . REQ_S2(NSPMD),REQ_S3(NSPMD),STATUS(MPI_STATUS_SIZE),
82 INTEGER,
DIMENSION(:),
ALLOCATABLE :: BUFR, BUFS2
87 ALLOCATE(BUFR(IRSIZE))
93 req_r1(1:nspmd) = mpi_request_null
98 . bufr(ideb),irecv(i),mpi_integer,it_spmd(i),msgtyp,
99 . spmd_comm_world,req_r1(i),ierror)
107 siz = (iad_elem(1,i+1)-iad_elem(1,i))
108 IF(i.NE.loc_proc.AND.lbufs.GT.0.AND.siz>0)
THEN
111 c bufs,lbufs,mpi_integer,it_spmd(i),msgtyp,
112 g spmd_comm_world,req_s2(i),ierror)
122 CALL mpi_wait(req_r1(i),status,ierror)
131 nbel = bufr(ideb+2)+bufr(ideb+3)
134 IF(((ityp==7.OR.ityp==10.OR.ityp==3.OR.ityp==5.OR.
135 + ityp==20.OR.ityp==22.OR.ityp==23.OR.ityp==24.OR.
136 + ityp==25.OR.ityp==2 ).AND.idel==2) )
THEN
138 n1 = get_local_node_id(nodes, bufr(ideb-1+4*(nn-1)+1))
141 n2 = get_local_node_id(nodes, bufr(ideb-1+4*(nn-1)+2))
143 n3 = get_local_node_id(nodes, bufr(ideb-1+4*(nn-1)+3))
145 n4 = get_local_node_id(nodes, bufr(ideb-1+4*(nn-1)+4))
147 DO j=addcnel(n1),addcnel(n1+1)-1
159 ELSEIF(ii>ofc.AND.ii<=oft)
THEN
165 ELSEIF(ii>oftg.AND.ii<=ofur)
THEN
172 IF(itagl(n1)+itagl(n2)+itagl(n3)+itagl(n4)==4)
THEN
185 ELSEIF(((ityp==7.OR.ityp==10.OR.ityp==3.OR.ityp==5
186 + .OR.ityp==20.OR.ityp==22.OR.ityp==23.OR.ityp==24
187 + .OR.ityp==25.OR.ityp==2) .AND. idel == 1))
THEN
189 n1 = get_local_node_id(nodes, bufr(ideb-1+4*(nn-1)+1))
192 n2 = get_local_node_id(nodes, bufr(ideb-1+4*(nn-1)+2))
194 n3 = get_local_node_id(nodes, bufr(ideb-1+4*(nn-1)+3))
196 n4 = get_local_node_id(nodes, bufr(ideb-1+4*(nn-1)+4))
198 DO j=addcnel(n1),addcnel(n1+1)-1
210 ELSEIF(ii>ofc.AND.ii<=oft)
THEN
216 ELSEIF(ii>oftg.AND.ii<=ofur)
THEN
223 IF(itagl(n1)+itagl(n2)+itagl(n3)+itagl(n4)==4)
THEN
236 ELSEIF((ityp==11.OR.ityp==-20).AND.idel==2)
THEN
238 n1 = get_local_node_id(nodes, bufr(ideb-1+2*(nn-1)+1))
241 n2 = get_local_node_id(nodes, bufr(ideb-1+2*(nn-1)+2))
243 DO j=addcnel(n1),addcnel(n1+1)-1
253 ELSEIF(ii>ofc.AND.ii<=oft)
THEN
259 ELSEIF(ii>oftg.AND.ii<=ofur)
THEN
265 ELSEIF(ii>oft.AND.ii<=ofp)
THEN
271 ELSEIF(ii>ofp.AND.ii<=ofr)
THEN
277 ELSEIF(ii>ofr.AND.ii<=oftg)
THEN
283 IF(nint(geo(12,ixr(1,ii)))==12)
THEN
288 IF(itagl(n1)+itagl(n2)==2)
THEN
300 ELSEIF((ityp==11.OR.ityp==-20).AND.idel==1)
THEN
302 n1 = get_local_node_id(nodes
305 n2 = get_local_node_id(nodes, bufr
307 DO j=addcnel(n1),addcnel(n1+1)-1
317 ELSEIF(ii>ofc.AND.ii<=oft)
THEN
323 ELSEIF(ii>oftg.AND.ii<=ofur)
THEN
329 ELSEIF(ii>oft.AND.ii<=ofp)
THEN ! truss actif
335 ELSEIF(ii>ofp.AND.ii<=ofr)
THEN ! poutre actif
341 ELSEIF(ii>ofr.AND.ii<=oftg)
THEN
347 IF(nint(geo(12,ixr(1,ii)))==12)
THEN
352 IF(itagl(n1)+itagl(n2)==2)
THEN
367 irecv(i)=irecv(i)+nbel
380 c bufr(ideb),len,mpi_integer,it_spmd(i),msgtyp,
381 g spmd_comm_world,req_s3(i),ierror)
389 siz = (iad_elem(1,i+1)-iad_elem(1,i))
390 IF(i.NE.loc_proc.AND.lbufs.GT.0.AND.siz>0)
THEN
391 CALL mpi_wait(req_s2(i),status,ierror)
397 ALLOCATE(bufs2(lindex))
403 siz = (iad_elem(1,i+1)-iad_elem(1,i))
404 IF(i.NE.loc_proc.AND.lindex.GT.0.AND.siz>0)
THEN
408 . spmd_comm_world,status,ierror)
410 bufs(j) =
max(bufs(j),bufs2(j))
422 CALL mpi_wait(req_s3(i),status,ierror)