5 &(nhp,nhm,indpu,npoin2,nachb,nplan,mesh,nb_neighb,
6 & nb_neighb_seg,nelem2,ifapar,modass)
78 INTEGER,
INTENT(IN) :: NPOIN2,NPLAN,NELEM2,MODASS
79 INTEGER,
INTENT(INOUT) :: NB_NEIGHB,NB_NEIGHB_SEG
80 INTEGER,
INTENT(INOUT) :: NHP(nbmaxdshare,nptir)
81 INTEGER,
INTENT(INOUT) :: NHM(nbmaxdshare,nptir)
82 INTEGER,
INTENT(IN) :: NACHB(nbmaxnshare,nptir)
83 INTEGER,
INTENT(IN) :: IFAPAR(6,nelem2)
84 INTEGER,
INTENT(INOUT) :: INDPU(npoin2)
85 TYPE(bief_mesh),
INTENT(INOUT) :: MESH
89 INTEGER IKP(nbmaxdshare,2),IKM(nbmaxdshare,2)
90 INTEGER I,J,IL,IZH,II,IMAX,IMIN,ILMAX,IELEM,IFACE
91 INTEGER ILP,ILM,IPA,IKA,IPB,IKB,NB_PT_MX,DIM1HCOM,CHECKSUM
119 IF (ipid.NE.ncsize-1)
THEN 121 DO il=ipid+1,ncsize-1
125 IF(nachb(j,i).EQ.il)
THEN 126 IF(izh.GT.nbmaxdshare)
THEN 127 WRITE(
lu,*)
'PARINI: NBMAXDSHARE TOO SMALL' 132 nhp(izh,ii)=nachb(1,i)
156 IF(nachb(j,i).EQ.il)
THEN 157 IF(izh.GT.nbmaxdshare)
THEN 158 WRITE(
lu,*)
'PARINI: NBMAXDSHARE TOO SMALL' 163 nhm(izh,ii)=nachb(1,i)
178 ilmax=max(imax-ipid,ipid-imin)
192 IF(ipa.EQ.ipid+il.AND.ika.NE.0)
THEN 193 nb_neighb = nb_neighb + 1
194 IF(ika.GT.nb_pt_mx) nb_pt_mx=ika
196 IF(ipa.EQ.ipid+il) ilp=ilp+1
202 IF(ipb.EQ.ipid-il.AND.ikb.NE.0)
THEN 203 nb_neighb = nb_neighb + 1
204 IF(ikb.GT.nb_pt_mx) nb_pt_mx=ikb
206 IF(ipb.EQ.ipid-il) ilm=ilm+1
212 & nb_neighb,1,0,mesh)
214 & nb_neighb,1,0,mesh)
218 dim1hcom = nb_pt_mx/4
219 IF(mod(nb_pt_mx,4).EQ.0)
THEN 220 dim1hcom = dim1hcom*4
222 dim1hcom = dim1hcom*4 + 4
225 & dim1hcom,nb_neighb,0,mesh)
235 IF(ipa.EQ.ipid+il.AND.ika.NE.0)
THEN 236 nb_neighb = nb_neighb + 1
237 mesh%NB_NEIGHB_PT%I(nb_neighb) = ika
238 mesh%LIST_SEND%I(nb_neighb) = ipa
240 mesh%NH_COM%I(dim1hcom*(nb_neighb-1)+i)=nhp(ilp,i)
243 IF(ipa.EQ.ipid+il) ilp=ilp+1
248 IF(ipb.EQ.ipid-il.AND.ikb.NE.0)
THEN 249 nb_neighb = nb_neighb + 1
250 mesh%NB_NEIGHB_PT%I(nb_neighb) = ikb
251 mesh%LIST_SEND%I(nb_neighb) = ipb
253 mesh%NH_COM%I(dim1hcom*(nb_neighb-1)+i)=nhm(ilm,i)
256 IF(ipb.EQ.ipid-il) ilm=ilm+1
265 nb_pt_mx = nb_pt_mx * nplan
267 IF(mod(nb_pt_mx,2).EQ.0)
THEN 272 CALL bief_allvec(1,mesh%BUF_SEND,
'BUSEND',il*3,nb_neighb,0,mesh)
273 CALL bief_allvec(1,mesh%BUF_RECV,
'BURECV',il*3,nb_neighb,0,mesh)
274 IF (modass .EQ.3)
THEN 276 & il*3,nb_neighb,0,mesh)
278 & il*3,nb_neighb,0,mesh)
283 ALLOCATE(mesh%BUF_SEND%I(il*3*nb_neighb))
284 ALLOCATE(mesh%BUF_RECV%I(il*3*nb_neighb))
289 ALLOCATE(mesh%BUF_SENDI8(il*3*nb_neighb))
290 ALLOCATE(mesh%BUF_RECVI8(il*3*nb_neighb))
304 & nb_neighb,1,0,mesh)
306 & nb_neighb,1,0,mesh)
308 & dim1hcom,nb_neighb,0,mesh)
314 DO i=1,dim1hcom*nb_neighb
315 mesh%NH_COM_SEG%I(i)=-999999
323 checksum=ifapar(1,ielem)**2+
324 & ifapar(2,ielem)**2+
327 IF(checksum.NE.0)
THEN 330 ilm=ifapar(iface,ielem)
331 IF(ilm.GE.0.AND.ilm.NE.ipid)
THEN 333 IF(nb_neighb_seg.EQ.0)
THEN 336 mesh%NB_NEIGHB_PT_SEG%I(1)=1
337 mesh%LIST_SEND_SEG%I(1)=ilm
338 mesh%NH_COM_SEG%I(1)=4*ielem+iface
343 DO il=1,nb_neighb_seg
344 IF(ilm.EQ.mesh%LIST_SEND_SEG%I(il))
THEN 346 mesh%NB_NEIGHB_PT_SEG%I(il)=
347 & mesh%NB_NEIGHB_PT_SEG%I(il)+1
348 i=mesh%NB_NEIGHB_PT_SEG%I(il)
349 mesh%NH_COM_SEG%I(dim1hcom*(il-1)+i)=4*ielem+iface
356 nb_neighb_seg=nb_neighb_seg+1
357 mesh%NB_NEIGHB_PT_SEG%I(nb_neighb_seg)=1
358 mesh%LIST_SEND_SEG%I(nb_neighb_seg)=ilm
359 mesh%NH_COM_SEG%I(dim1hcom*(nb_neighb_seg-1)+1)=
370 IF(nb_neighb_seg.GT.nb_neighb)
THEN 371 WRITE(
lu,*)
'IN PARINI NB_NEIGHB =',nb_neighb
372 WRITE(
lu,*)
' NB_NEIGHB_SEG=',nb_neighb_seg
subroutine parini(NHP, NHM, INDPU, NPOIN2, NACHB, NPLAN, MESH, NB_NEIGHB, NB_NEIGHB_SEG, NELEM2, IFAPAR, MODASS)
subroutine bief_allvec(NAT, VEC, NOM, IELM, DIM2, STATUT, MESH)