38 1 PROC ,NBDDACC ,NBDDKIN ,NODLOCAL,
39 2 NBDDPROC,NBDDBOUN,NODGLOB ,NUMNOD_L,NBDDNRB ,
40 3 NPBY ,LPBY ,NPRW ,LPRW ,LEN_IA ,
41 4 DD_RBY2 ,ITABI2M ,NBDDI2M ,CEP ,MONVOL ,
42 5 NNLINK ,LLLINK ,LJOINT ,
43 6 NBDDNCJ ,IBVEL ,LBVEL ,NBDDNRBM,DD_RBM2 ,
44 7 NSTRF ,NNODT_L ,NNODL_L ,IEXMAD ,ISP0 ,
45 8 NRCVVOIS,NSNDVOIS,NERVOIS ,NESVOIS ,
47 A NUMEL ,ALE_CONNECTIVITY ,NBCFD ,IXS ,IXQ , IXTG,
48 B NUMELS_L,NUMELQ_L,NUMELTG_L,CEL ,GEO ,PORNOD ,
49 C NUMPOR_L,NUMEL_L ,IPARI ,INTBUF_TAB,NBI18_L ,
50 D IEXLNK ,IGRNOD ,DD_LAGF ,NLAGF_L ,IADLL ,
51 E LLL ,ISKWP ,NSKWP ,ISENSP ,NSENSP ,
52 F IACCP ,NACCP ,IRBE3 ,LRBE3 ,ITABRBE3M,
53 G NBDDRBE3M,IRBYM ,LCRBYM ,FRONT_RM ,DD_RBYM2,
54 H NBDDNRBYM,IRBE2 ,LRBE2 ,NBDDRBE2,ITABRBE2M,
55 I IEDGE_TMP,NODEDGE,EDGELOCAL,NBDDEDGE_L,
56 J IGAUP ,NGAUP ,FRONTB_R2R,SDD_R2R_ELEM,ADDCSRECT,
57 K CSRECT,NBDDNORT ,NBDDNOR_MAX,NBCCFR25 ,NBCCNOR ,
58 L NUMNOR_L,NBDDEDGT,NBDDEDG_MAX,INTERCEP,NBDDCNDM,
59 M ITABCNDM,MULTI_FVM,IGRSURF,ISKWP_L,ALE_ELM,
60 N SIZE_ALE_ELM,NSENSOR,NLOC_DMG,constraint_struct,ITHERM)
73 use constraint_mod ,
only : constraint_
74 use element_mod ,
only : nixs,nixq,nixtg
78#include "implicit_f.inc"
84#include "com_xfem1.inc"
92 INTEGER ,
INTENT(IN) :: NSENSOR
93 INTEGER ,
INTENT(IN) :: ITHERM
94 INTEGER PROC, NBDDACC, NBDDKIN, NBDDPROC, NBDDBOUN, NUMELS_L,
95 . numnod_l, nbddnrb, len_ia, nbddi2m, nbddncj,nbddnrbm,
96 . nnodt_l, nnodl_l, isp0, nrcvvois, nsndvois, nervois,
97 . nesvois, nsegfl_l, numel, nbcfd, numelq_l,numeltg_l,
98 . numpor_l, numel_l, nbi18_l, inacti, nlagf_l,
99 . nbddnort, nbddnor_max, nbccfr25, nbccnor, numnor_l,
100 . nbddedgt,nbddedg_max,
101 . nodlocal(*), nodglob(*), npby(nnpby,*),
102 . lpby(*), nprw(*), lprw(*), dd_rby2(3,nrbykin),
103 . itabi2m(*), cep(*), monvol(*),
104 . nnlink(10,*), lllink(*), ljoint(*),
105 . ibvel(nbvelp,*), lbvel(*), dd_rbm2(3,nibvel), nstrf(*),
107 . ixs(nixs,*), ixq(nixq,*), ixtg(nixtg, *),cel(*),
pornod(*),
108 . ipari(npari,*), iexlnk(nr2r,nr2rlnk),
109 . dd_lagf(3,nspmd+1), iadll(*), lll(*),
110 . iskwp(*), nskwp(*),iexmad(*),
111 . isensp(2,*), nsensp(*), iaccp(*), naccp(*),
112 . irbe3(nrbe3l,*), lrbe3(*),itabrbe3m(*),nbddrbe3m,
113 . irbym(nirbym,*), dd_rbym2(3,nrbym), front_rm(nrbym,*),
114 . lcrbym(*),nbddnrbym,irbe2(nrbe2l,*), lrbe2(*),nbddrbe2,
115 . itabrbe2m(*),iedge_tmp(3,*),nodedge(2,*),
116 . edgelocal(*),nbddedge_l, igaup(*), ngaup(*),
117 . frontb_r2r(sfrontb_r2r,nspmd),sdd_r2r_elem,
118 . addcsrect(*), csrect(*),nbddcndm,itabcndm(*)
122 TYPE(intbuf_struct_) INTBUF_TAB(*)
123 TYPE(INTERSURFP) :: INTERCEP(3,NINTER)
124 TYPE(MULTI_FVM_STRUCT) :: MULTI_FVM
125 TYPE (GROUP_) ,
DIMENSION(NGRNOD) :: IGRNOD
126 TYPE (SURF_) ,
DIMENSION(NSURF) :: IGRSURF
127 INTEGER,
DIMENSION(*),
INTENT(IN) :: ISKWP_L
128 INTEGER,
INTENT(IN) :: SIZE_ALE_ELM
129 TYPE(split_cfd_type),
INTENT(IN) :: ALE_ELM
130 TYPE(t_ale_connectivity),
INTENT(INOUT) :: ALE_CONNECTIVITY
131 TYPE (NLOCAL_STR_),
TARGET,
INTENT(IN) :: NLOC_DMG
132 type(constraint_),
intent(inout) :: constraint_struct
141 INTEGER I, N, P, PP, IPACC, IPKIN, NBDDNOD, IS,ITY,
142 . msr, nsl, pmain, islocal, ideb, ifin, offc, offtg, iad,
143 . iskin, nbrb, j, k, kk, k0, k1, k2, k6, iso, imax, isbound,
144 . nbcj, nsn, m, nn, n1, n2, n3, n4, nnod, ifram, off, ip, ip0,
145 . nnod_s, nsels_s, nselq_s, nselc_s, nselt_s, nselp_s,
146 . nselr_s, nseltg_s, nsint_s, nnl_l, nnt_l, typ, nn_l,nad_l,
147 . eshift, nmad_l, ng, nft, nel, ilaw, jtur, jthe, isolnod,
149 . iv_loc, nw_l, ilw, nimp, ilp, nbe, nad, nrts, nrtm,
151 . ishift, lshift, nadmsr, nadmsr_l, ni, nty, ni25, nbddnor,
152 . lcsrect_l, nbddedg, nrtm_l, ic, ik0, ikn, ik,ijk,nb
157 INTEGER,
DIMENSION(:),
ALLOCATABLE :: DD_R2R_ELEM
158INTEGER,
DIMENSION(:),
ALLOCATABLE :: PLIST
159 INTEGER,
DIMENSION(:),
ALLOCATABLE :: TAG_SM, TAG_MS
162 INTEGER IAD_EDGE(NSPMD+1),LENR,TAG_EDGE,FRNODES,IED_GL,OK,IED_FR,
163 . FR_EDGE_OLD,FR_EDGE0,FR_NBEDGE(NSPMD+1)
164 INTEGER,
DIMENSION(:),
ALLOCATABLE :: FR_EDGE,TAG_IED_FR
165 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: TAG_IED_FR0
167 INTEGER,
DIMENSION(:),
ALLOCATABLE :: WEIGHT,TAGE,NEWFRONT,TAG,TAGER,
169 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: TAGE_L,TAG_L
170 INTEGER :: IAD1, LGTH
186 INTEGER,
DIMENSION(:),
ALLOCATABLE :: ACCKIN
187 INTEGER,
DIMENSION(:),
ALLOCATABLE :: ADDCSRECT_L
188 INTEGER,
DIMENSION(:),
ALLOCATABLE :: CPULOCALER
189 INTEGER,
DIMENSION(:),
ALLOCATABLE :: CPULOCALES
190 INTEGER,
DIMENSION(:),
ALLOCATABLE :: CPULOCALF
191 INTEGER,
DIMENSION(:),
ALLOCATABLE :: CPULOCALR
192 INTEGER,
DIMENSION(:),
ALLOCATABLE :: CPULOCALS
193 INTEGER,
DIMENSION(:),
ALLOCATABLE :: DD_CJ
194 INTEGER,
DIMENSION(:),
ALLOCATABLE :: DD_CNDM
195 INTEGER,
DIMENSION(:),
ALLOCATABLE :: DD_CUT
196 INTEGER,
DIMENSION(:),
ALLOCATABLE :: DD_ELEM
197 INTEGER,
DIMENSION(:),
ALLOCATABLE :: DD_I2M
198 INTEGER,
DIMENSION(:),
ALLOCATABLE :: DD_P
199 INTEGER,
DIMENSION(:),
ALLOCATABLE :: DD_RBE2
200 INTEGER,
DIMENSION(:),
ALLOCATABLE :: DD_RBE3M
201 INTEGER,
DIMENSION(:),
ALLOCATABLE :: DD_RBM
202 INTEGER,
DIMENSION(:),
ALLOCATABLE :: DD_RBY
203 INTEGER,
DIMENSION(:),
ALLOCATABLE :: DD_RBYM
204 INTEGER,
DIMENSION(:),
ALLOCATABLE :: DP_RBE3M
205 INTEGER,
DIMENSION(:),
ALLOCATABLE :: D_RBY
206 INTEGER,
DIMENSION(:),
ALLOCATABLE :: FR_NOR
207 INTEGER,
DIMENSION(:),
ALLOCATABLE :: IAD_CNDM
208 INTEGER,
DIMENSION(:),
ALLOCATABLE :: IAD_I2M
209 INTEGER,
DIMENSION(:),
ALLOCATABLE :: IAD_RBE2 !(NSPMD+1)
210 INTEGER,
DIMENSION(:),
ALLOCATABLE :: IAD_RBE3
211 INTEGER,
DIMENSION(:),
ALLOCATABLE :: IAD_RBE3M
212 INTEGER,
DIMENSION(:),
ALLOCATABLE :: IAD_RBM
213 INTEGER,
DIMENSION(:),
ALLOCATABLE :: IAD_RBY
214 INTEGER,
DIMENSION(:),
ALLOCATABLE :: IAD_RBYM
215 INTEGER,
DIMENSION(:),
ALLOCATABLE :: INDEX
216 INTEGER,
DIMENSION(:),
ALLOCATABLE :: INDEX2
217 INTEGER,
DIMENSION(:),
ALLOCATABLE :: INDEX3
218 INTEGER,
DIMENSION(:),
ALLOCATABLE :: INDEX4
219 INTEGER,
DIMENSION(:),
ALLOCATABLE :: INDEX5
220 INTEGER,
DIMENSION(:),
ALLOCATABLE :: ISOM
221 INTEGER,
DIMENSION(:),
ALLOCATABLE :: ISOM_R2R_R
222 INTEGER,
DIMENSION(:),
ALLOCATABLE :: ISOM_R2R_S
223 INTEGER,
DIMENSION(:),
ALLOCATABLE :: LERCVOIS
224 INTEGER,
DIMENSION(:),
ALLOCATABLE :: LESDVOIS
225 INTEGER,
DIMENSION(:),
ALLOCATABLE :: LLAGF
226 INTEGER,
DIMENSION(:),
ALLOCATABLE
227 INTEGER,
DIMENSION(:),
ALLOCATABLE :: LNRCVOIS
228 INTEGER,
DIMENSION(:),
ALLOCATABLE :: LNSDVOIS
229 INTEGER,
DIMENSION(:),
ALLOCATABLE :: LSEGCOM
230 INTEGER,
DIMENSION(:),
ALLOCATABLE :: NBRCVOIS
231 INTEGER,
DIMENSION(:),
ALLOCATABLE :: NBSDVOIS
232 INTEGER,
DIMENSION(:),
ALLOCATABLE :: NERCVOIS
233 INTEGER,
DIMENSION(:),
ALLOCATABLE :: NESDVOIS
234 INTEGER,
DIMENSION(:),
ALLOCATABLE :: NPORGEO
235 INTEGER,
DIMENSION(:),
ALLOCATABLE :: NPSEGCOM
236 INTEGER,
DIMENSION(:),
ALLOCATABLE :: PROCNOR
237 INTEGER,
DIMENSION(:),
ALLOCATABLE :: PROC_REM
238 INTEGER,
DIMENSION(:),
ALLOCATABLE :: PROC_REM1
239 INTEGER,
DIMENSION(:),
ALLOCATABLE :: RG_CUT
240 INTEGER,
DIMENSION(:),
ALLOCATABLE :: SECVU
241 INTEGER,
DIMENSION(:),
ALLOCATABLE :: WORK
242 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: DD_I18
243 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: DD_LL
244 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: DD_MAD
245 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: DD_MV
246 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: DD_R2R
247 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: DD_SEC
248 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: DD_WALL
249 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: FR_EDG
250 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: FR_SAV
251 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: IAD_CJ
252 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: IAD_CUT
253 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: IAD_ELEM
254 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: IAD_FREDG
255 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: IAD_FRNOR
256 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: IAD_RBM2
257 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: IAD_RBY2
258 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: IAD_RBYM2
259 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: IAD_SEC
260 INTEGER,
DIMENSION(:),
ALLOCATABLE :: INDEX25
261 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: ITRI
262 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: ITRI2
263 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: ITRI25
264 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: ITRI25_NORMAL
265 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: ITRI3
266 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: ITRI4
267 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: ITRI5
268 INTEGER,
DIMENSION(:),
ALLOCATABLE :: PROC_REM25
269 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: TAGS !(NSPMD,SEGINDX)
270 INTEGER,
DIMENSION(:),
ALLOCATABLE :: PROC_REM_CYL_JOINT
271 INTEGER :: COMPTR_NL,COMPTS_NL
272 INTEGER :: NDOF_NLOCAL,OFFSET_S_NL,OFFSET_R_NL
273 INTEGER,
DIMENSION(:),
ALLOCATABLE :: ISOM_R2R_R_NL
274 INTEGER,
DIMENSION(:),
ALLOCATABLE :: ISOM_R2R_S_NL
275 INTEGER,
POINTER,
DIMENSION(:) :: IDXI,POSI
277 ALLOCATE(acckin(nbddacc+nbddkin))
278 ALLOCATE(addcsrect_l(numnor_l+1))
279 ALLOCATE(cpulocaler(nervois))
280 ALLOCATE(cpulocales(nesvois))
281 ALLOCATE(cpulocalf(nsegfl_l))
282 ALLOCATE(cpulocalr(nrcvvois))
283 ALLOCATE(cpulocals(nsndvois))
284 ALLOCATE(dd_cj(nbddncj))
285 ALLOCATE(dd_cndm(nbddcndm))
286 ALLOCATE(dd_cut(nnodt_l))
287 ALLOCATE(dd_elem(nbddacc+nbddkin))
288 ALLOCATE(dd_i2m(nbddi2m))
289 ALLOCATE(dd_p(nspmd))
290 ALLOCATE(dd_rbe2(nbddrbe2))
291 ALLOCATE(dd_rbe3m(nbddrbe3m))
292 ALLOCATE(dd_rbm(nbddnrbm))
293 ALLOCATE(dd_rby(nbddnrb))
294 ALLOCATE(dd_rbym(nbddnrbym))
295 ALLOCATE(dp_rbe3m(nbddrbe3m))
296 ALLOCATE(d_rby(nspmd+1))
297 ALLOCATE(fr_nor(nbddnort))
298 ALLOCATE(iad_cndm(nspmd+1))
299 ALLOCATE(iad_i2m(nspmd+1))
300 ALLOCATE(iad_rbe2(nspmd+1))
301 ALLOCATE(iad_rbe3(nspmd+1))
302 ALLOCATE(iad_rbe3m(nspmd+1))
303 ALLOCATE(iad_rbm(nspmd+1))
304 ALLOCATE(iad_rby(nspmd+1))
305 ALLOCATE(iad_rbym(nspmd+1))
306 ALLOCATE(index(2*(nbddacc+nbddkin)))
307 ALLOCATE(index2(2*(nbddnrb)))
308 ALLOCATE(index3(2*nbddncj))
309 ALLOCATE(index4(2*nbcfd))
310 ALLOCATE(index5(2*(nbddnrbym)))
311 ALLOCATE(isom(nspmd))
312 ALLOCATE(isom_r2r_r(nspmd))
313 ALLOCATE(isom_r2r_s(nspmd))
314 ALLOCATE(lercvois(nervois))
315 ALLOCATE(lesdvois(nesvois))
316 ALLOCATE(llagf(nlagf_l))
317 ALLOCATE(lnodpor(numpor_l))
318 ALLOCATE(lnrcvois(nrcvvois))
319 ALLOCATE(lnsdvois(nsndvois))
320 ALLOCATE(lsegcom(nsegfl_l))
321 ALLOCATE(nbrcvois(nspmd+1))
322 ALLOCATE(nbsdvois(nspmd+1))
323 ALLOCATE(nercvois(nspmd+1))
324 ALLOCATE(nesdvois(nspmd+1))
325 ALLOCATE(nporgeo(numgeo))
326 ALLOCATE(npsegcom(nspmd+1))
327 ALLOCATE(procnor(nbccnor))
328 ALLOCATE(proc_rem(nbddacc+nbddkin))
329 ALLOCATE(proc_rem1(nbddnrbym))
330 ALLOCATE(rg_cut(nnodl_l))
331 ALLOCATE(secvu(nspmd))
332 ALLOCATE(work(70000))
333 ALLOCATE(dd_i18(nspmd+2,nbi18_l))
334 ALLOCATE(dd_ll(nspmd+2,nlink))
335 ALLOCATE(dd_mad(5,nspmd+1))
336 ALLOCATE(dd_mv(nspmd+2,nvolu))
337 ALLOCATE(dd_r2r(nspmd+1,nl_ddr2r))
338 ALLOCATE(dd_sec(nspmd+1,nsect))
339 ALLOCATE(dd_wall(nspmd+2,nrwall))
340 ALLOCATE(fr_edg(2,nbddedgt))
341 ALLOCATE(fr_sav(2,nbddedg_max))
342 ALLOCATE(iad_cj(nspmd+1,njoint))
343 ALLOCATE(iad_cut(nspmd+2,nsect*isecut*isp0))
344 ALLOCATE(iad_elem(2,nspmd+1))
345 ALLOCATE(iad_fredg(ninter25,nspmd+1))
346 ALLOCATE(iad_frnor(ninter25,nspmd+1))
347 ALLOCATE(iad_rbm2(4,nspmd+1))
348 ALLOCATE(iad_rby2(4,nspmd+1))
349 ALLOCATE(iad_rbym2(4,nspmd+1))
350 ALLOCATE(iad_sec(4,nspmd+1))
352 ALLOCATE(itri(3,nbddacc+nbddkin))
353 ALLOCATE(itri2(2,nbddnrb))
354 ALLOCATE(itri25(3,
max(nbddnor_max,nbddedg_max)))
355 ALLOCATE(itri25_normal(5,
max(nbddnor_max,nbddedg_max)))
356 ALLOCATE(itri3(2,nbddncj))
357 ALLOCATE(itri4(2,nbcfd))
358 ALLOCATE(itri5(2,nbddnrbym))
359 ALLOCATE(proc_rem25(
max(nbddnor_max,nbddedg_max)))
360 ALLOCATE(tags(nspmd,segindx))
361 ALLOCATE( weight(numnod_l),tage(numel) )
362 ALLOCATE( newfront(ninter),tag(numnod) )
363 ALLOCATE( tager(nervois),tages(nesvois) )
364 ALLOCATE( tage_l(nspmd,numel_l),tag_l(nspmd,numnod_l) )
373 ALLOCATE(plist(nspmd))
386 nbddnod = nbddnod + 1
388 proc_rem(nbddnod) = p
392 IF(
flagkin(i)==1.AND.(proc==1.OR.p==1))
THEN
400 nbddboun = nbddboun + isbound
406 itri(1,i) = proc_rem(i)
407 itri(2,i) = acckin(i)
408 itri(3,i) = dd_elem(i)
411 CALL my_orders(0,work,itri,index,nbddnod,3)
413 proc_rem(i)= itri(1,index(i))
414 acckin(i) = itri(2,index(i))
415 dd_elem(i) = nodlocal(itri(3,index(i)))
423 isom(p) = isom(p) + 1
428 iad_elem(1,p+1) = iad_elem(1,p) + isom(p)
429 iad_elem(2,p+1) = iad_elem(1,p+1)
434 IF ((nsubdom>0).AND.(iddom==0))
THEN
442 n = nodglob(dd_elem(i))
443 IF (frontb_r2r(n,proc)==-1)
THEN
444 IF (frontb_r2r(n,p)>0)
THEN
445 isom_r2r_s(p) = isom_r2r_s(p) + 1
448 ELSEIF (frontb_r2r(n,proc)>0)
THEN
449 IF (frontb_r2r(n,p)==-1)
THEN
450 isom_r2r_r(p) = isom_r2r_r(p) + 1
458 dd_r2r(p+1,1) = dd_r2r(p,1) + isom_r2r_s(p)
459 dd_r2r(p+1,2) = dd_r2r(p,2)
464 IF (nloc_dmg%IMOD > 0)
THEN
465 idxi => nloc_dmg%IDXI(1:numnod)
466 posi => nloc_dmg%POSI(1:nloc_dmg%NNOD)
467 ALLOCATE(isom_r2r_r_nl(nspmd))
468 ALLOCATE(isom_r2r_s_nl(nspmd))
475 n = nodglob(dd_elem(i))
477 ndof_nlocal = posi(nn+1)-posi(nn)
478 IF (frontb_r2r(n,proc)==-1)
THEN
479 IF (frontb_r2r(n,p)>0)
THEN
480 isom_r2r_s_nl(p) = isom_r2r_s_nl(p) + ndof_nlocal
483 IF (frontb_r2r(n,proc)>0)
THEN
484 IF (frontb_r2r(n,p)==-1)
THEN
485 isom_r2r_r_nl(p) = isom_r2r_r_nl(p) + ndof_nlocal
490 compts_nl = compts_nl+isom_r2r_s_nl(p)
491 comptr_nl = compts_nl+isom_r2r_r_nl(p)
492 dd_r2r(p+1,3) = dd_r2r(p,3) + isom_r2r_s_nl(p)
493 dd_r2r(p+1,4) = dd_r2r(p,4) + isom_r2r_r_nl(p)
495 DEALLOCATE(isom_r2r_r_nl,isom_r2r_s_nl)
503 ALLOCATE (dd_r2r_elem(sdd_r2r_elem),stat=ierr)
504 dd_r2r_elem(1:sdd_r2r_elem) = 0
506 WRITE(iout,*)
' ** ERROR IN MEMORY ALLOCATION'
507 WRITE(istdo,*)
' ** ERROR IN MEMORY ALLOCATION'
514 n = nodglob(dd_elem(i))
516 IF (frontb_r2r(n,proc)==-1)
THEN
517 IF (frontb_r2r(n,p)>0)
THEN
519 dd_r2r_elem(compts) = dd_elem(i)
521 ELSEIF (frontb_r2r(n,proc)>0)
THEN
522 IF (frontb_r2r(n,p)==-1)
THEN
524 dd_r2r_elem(offset+comptr) = dd_elem(i)
530 IF (nloc_dmg%IMOD > 0)
THEN
531 offset_s_nl = compts + comptr
532 offset_r_nl = compts + comptr + compts_nl
536 n = nodglob(dd_elem(i))
539 ndof_nlocal = posi(nn+1)-posi(nn)
540 IF (frontb_r2r(n,proc)==-1)
THEN
541 IF (frontb_r2r(n,p)>0)
THEN
542 DO kk = 1,ndof_nlocal
543 compts_nl = compts_nl+1
544 dd_r2r_elem(offset_s_nl+compts_nl) = dd_elem(i)
547 ELSEIF (frontb_r2r(n,proc)>0)
THEN
548 IF (frontb_r2r(n,p)==-1)
THEN
549 DO kk = 1,ndof_nlocal
550 comptr_nl = comptr_nl+1
551 dd_r2r_elem(offset_r_nl+comptr_nl) = dd_elem(i)
560 IF (nspmd>1.AND.(nbddacc+nbddkin)>0)
THEN
564 DO WHILE (iskin==0.AND.i<iad_elem(1,p+1))
571 iad_elem(2,p) = iad_elem(1,p+1)
574 iad_elem(2,nspmd+1) = iad_elem(1,nspmd+1)
578 IF(isom(p)>0)nbddproc=nbddproc+1
585 IF(nlocal(n,p)==1)
GOTO 10
596 IF(nlocal(m,proc)==1)
THEN
599 IF(nlocal(m,p)==1)
THEN
611 itri2(1,i) = proc_rem(i)
612 itri2(2,i) = dd_rby(i)
615 CALL my_orders(0,work,itri2,index2,nbrb,2)
617 proc_rem(i)= itri2(1,index2(i))
618 dd_rby(i) = nodlocal(itri2(2,index2(i)))
626 isom(p) = isom(p) + 1
630 iad_rby(p+1) = iad_rby(p) + isom(p)
642 IF(mod(front_rm(m,proc),10)==1)
THEN
645 IF(mod(front_rm(m,p),10)==1)
THEN
656 itri5(1,i) = proc_rem1(i)
657 itri5(2,i) = dd_rbym(i)
660 CALL my_orders(0,work,itri5,index5,nbrb,2)
662 proc_rem1(i)= itri5(1,index5(i))
663 dd_rbym(i) = itri5(2,index5(i))
671 isom(p) = isom(p) + 1
675 iad_rbym(p+1) = iad_rbym(p) + isom(p)
680 dd_wall(1:nspmd+2,1:nrwall) = 0
682 dd_wall(1:nspmd+2,n) = constraint_struct%rwall%dd(1:nspmd+2,n)
702 IF(nlocal(msr,p)==1)
THEN
705 IF(nlocal(nn,p)==1)
THEN
718 IF(nlocal(msr,proc)==1)
THEN
719 dd_rby2(1,n) = dd_p(proc)
723 iad_rby2(1,pmain) = iad_rby2(1,pmain) + dd_p(proc)
724 iad_rby2(4,pmain) = iad_rby2(4,pmain) + 1
729 iad_rby2(2,p) = iad_rby2(2,p) + dd_p(p)
730 iad_rby2(3,p) = iad_rby2(3,p) + 1
751 IF(islocal==0) dd_rby2(3,n) = -pmain
764 IF(pmain>0) dd_p(pmain) = dd_p(pmain)+1
767 IF(iad_rby2(3,p)/=0)
THEN
768 iad_rby2(3,p) = dd_p(proc)
770 IF(iad_rby2(4,p)/=0)
THEN
771 iad_rby2(4,p) = dd_p(p)
776 iad_rby2(1,nspmd+1) = iad_rby2(1,nspmd+1) + iad_rby2(1,p)
777 iad_rby2(2,nspmd+1) = iad_rby2(2,nspmd+1) + iad_rby2(2,p)
778 iad_rby2(3,nspmd+1) = iad_rby2(3,nspmd+1) + iad_rby2(3,p)
779 iad_rby2(4,nspmd+1) = iad_rby2(4,nspmd+1) + iad_rby2(4,p)
799 IF(mod(front_rm(msr,p),10)==1)
THEN
802 IF(nlocal(nn,p)==1)
THEN
804 IF(nlocal(nn,pp)==1)
THEN
808 dd_p(p) = dd_p(p) + 1
822 IF(mod(front_rm(msr,proc),10)==1)
THEN
823 dd_rbym2(1,n) = dd_p(proc)
825 dd_rbym2(3,n) = pmain
828 iad_rbym2(1,pmain) = iad_rbym2(1,pmain) + dd_p(proc)
829 iad_rbym2(4,pmain) = iad_rbym2(4,pmain) + 1
834 iad_rbym2(2,p) = iad_rbym2(2,p) + dd_p(p)
835 iad_rbym2(3,p) = iad_rbym2(3,p) + 1
844 dd_rbym2(3,n) = pmain
857 IF(islocal==0) dd_rbym2(3,n) = -pmain
867 pmain = dd_rbym2(3,n)
869 IF(pmain>0) dd_p(pmain) = dd_p(pmain)+1
872 IF(iad_rbym2(3,p)/=0)
THEN
873 iad_rbym2(3,p) = dd_p(proc)
875 IF(iad_rbym2(4,p)/=0)
THEN
876 iad_rbym2(4,p) = dd_p(p)
881 iad_rbym2(1,nspmd+1) = iad_rbym2(1,nspmd+1) + iad_rbym2(1,p)
882 iad_rbym2(2,nspmd+1) = iad_rbym2(2,nspmd+1) + iad_rbym2(2,p)
883 iad_rbym2(3,nspmd+1) = iad_rbym2(3,nspmd+1) + iad_rbym2(3,p)
884 iad_rbym2(4,nspmd+1) = iad_rbym2(4,nspmd+1) + iad_rbym2(4,p)
895 ifin = iad_elem(1,p+1)-1
898 IF(itabi2m(dd_elem(i))==1)
THEN
899 dd_i2m(n) = dd_elem(i)
906 print*,
'error decomp I2',n-1,nbddi2m
913 offtg =numels+numelq+ numelc+numelt+numelp+numelr
923 nn = igrsurf(is)%NSEG
925 ity = igrsurf(is)%ELTYP(j)
926 i = igrsurf(is)%ELEM(j)
929 dd_mv(p,n) = dd_mv(p,n) + 1
932 dd_mv(p,n) = dd_mv(p,n) + 1
939 IF(dd_mv(p,n)>imax)
THEN
944 dd_mv(nspmd+1,n) = nn
945 dd_mv(nspmd+2,n) = pmain
950 IF (ity==6.OR.ity==8)
THEN
953 dd_mv(nspmd+2,n) = pmain
972 IF (nlocal(n,p)==1)
THEN
973 dd_ll(p,i) = dd_ll(p,i) + 1
982 IF(dd_ll(p,i)>imax)
THEN
987 dd_ll(nspmd+1,i) = nn
988 dd_ll(nspmd+2,i) = pmain
1001 ALLOCATE( proc_rem_cyl_joint(nbcj) )
1011 IF(nlocal(m,proc)==1)
THEN
1013 dd_cj(nad+nbcj-1) = m
1014 proc_rem_cyl_joint(nbcj) = 1
1019 IF(nlocal(m,p)==1)
THEN
1021 dd_cj(nad+nbcj-1) = m
1022 proc_rem_cyl_joint(nbcj) = p
1029 itri3(1,i) = proc_rem_cyl_joint(i)
1030 itri3(2,i) = dd_cj(nad+i-1)
1033 CALL my_orders(0,work,itri3,index3,nbcj,2)
1035 proc_rem_cyl_joint(i)= itri3(1,index3(i))
1036 dd_cj(nad+i-1) = nodlocal(itri3(2,index3(i)))
1043 p = proc_rem_cyl_joint(i)
1044 isom(p) = isom(p) + 1
1048 iad_cj(p+1,n) = iad_cj(p,n) + isom(p)
1051 nad = nad + iad_cj(nspmd+1,n) - iad_cj(1,n)
1054 DEALLOCATE( proc_rem_cyl_joint )
1064 IF(nlocal(m,proc)==1.AND.
1065 + nlocal(m,p)==1)
THEN
1071 iad_rbm(p+1) = nbrb+1
1091 IF(nlocal(msr,p)==1)
THEN
1094 IF(nlocal(nn,p)==1)
THEN
1096 IF(nlocal(nn,pp)==1)
THEN
1100 dd_p(p) = dd_p(p) + 1
1104 IF(dd_p(p)>imax)
THEN
1113 IF(nlocal(msr,proc)==1)
THEN
1114 dd_rbm2(1,n) = dd_p(proc)
1116 dd_rbm2(3,n) = pmain
1117 IF(pmain/=proc)
THEN
1118 iad_rbm2(1,pmain) = iad_rbm2(1,pmain) + dd_p(proc)
1119 iad_rbm2(4,pmain) = iad_rbm2(4,pmain) + 1
1123 IF(dd_p(p)/=-1)
THEN
1124 iad_rbm2(2,p) = iad_rbm2(2,p) + dd_p(p)
1125 iad_rbm2(3,p) = iad_rbm2(3,p) + 1
1134 dd_rbm2(3,n) = pmain
1140 IF(dd_p(p)/=-1)
THEN
1146 IF(islocal==0) dd_rbm2(3,n) = -pmain
1157 pmain = dd_rbm2(3,n)
1159 IF(pmain>0) dd_p(pmain) = dd_p(pmain)+1
1162 IF(iad_rbm2(3,p)/=0)
THEN
1163 iad_rbm2(3,p) = dd_p(proc)
1165 IF(iad_rbm2(4,p)/=0)
THEN
1166 iad_rbm2(4,p) = dd_p(p)
1171 iad_rbm2(1,nspmd+1) = iad_rbm2(1,nspmd+1) + iad_rbm2(1,p)
1172 iad_rbm2(2,nspmd+1) = iad_rbm2(2,nspmd+1) + iad_rbm2(2,p)
1173 iad_rbm2(3,nspmd+1) = iad_rbm2(3,nspmd+1) + iad_rbm2(3,p)
1174 iad_rbm2(4,nspmd+1) = iad_rbm2(4,nspmd+1) + iad_rbm2(4,p)
1182 IF(nbddrbe3m>0)
THEN
1185 ideb = iad_elem(1,p)
1186 ifin = iad_elem(1,p+1)-1
1189 IF(itabrbe3m(dd_elem(i))>0)
THEN
1190 dd_rbe3m(n) = dd_elem(i)
1191 dp_rbe3m(n) = itabrbe3m(dd_elem(i))
1196 iad_rbe3m(nspmd+1) = n
1197 if(n-1/=nbddrbe3m)
then
1198 print*,
'error decomp RBE3',n-1,nbddrbe3m
1210 ideb = iad_elem(1,p)
1211 ifin = iad_elem(1,p+1)-1
1214 IF(itabrbe2m(dd_elem(i))>0)
THEN
1215 dd_rbe2(n) = itabrbe2m(dd_elem(i))
1220 iad_rbe2(nspmd+1) = n
1221 if(n-1/=nbddrbe2)
then
1222 print*,
'error decomp RBE2',n-1,nbddrbe2
1234 ideb = iad_elem(1,p)
1235 ifin = iad_elem(1,p+1)-1
1238 IF(itabcndm(dd_elem(i))>0)
THEN
1239 dd_cndm(n) = dd_elem(i)
1245 iad_cndm(nspmd+1) = n
1246 if(n-1/=nbddcndm)
then
1247 print*,
'error decomp Itet2 of S10',n-1,nbddcndm
1255 IF (nsect>0) k0=nstrf(25)
1260 IF(isecut*isp0==1)
THEN
1271 ifram = nstrf(k0+26)
1272 k2 = k0+30+nstrf(k0+14)
1273 IF (ifram<=10.OR.n1/=0)
THEN
1276 IF (nlocal(n1,p)==1)
THEN
1277 dd_sec(p,i) = dd_sec(p,i) + 1
1285 IF (nlocal(n2,p)==1)
THEN
1286 dd_sec(p,i) = dd_sec(p,i) + 1
1294 IF (nlocal(n3,p)==1)
THEN
1295 dd_sec(p,i) = dd_sec(p,i) + 1
1302 IF(mod(ifram,10)==1.OR.mod(ifram,10)==2)
THEN
1308 IF (nlocal(nstrf(k2+nn-1),p)==1)
THEN
1316 dd_sec(p,i) = dd_sec(p,i) + secvu(p)
1323 IF (nlocal(nstrf(k2+nn-1),proc)==1)
THEN
1335 IF(nlocal(k,p)==1)
THEN
1337 dd_cut(nnt_l+nn_l) = nn
1340 nnt_l = nnt_l + nn_l
1342 iad_cut(nspmd+1,i) = iad_cut(nspmd+1,i)+nn_l
1345 iad_cut(nspmd+2,i) = nnod
1354 IF(dd_sec(p,i)>imax)
THEN
1359 dd_sec(nspmd+1,i) = pmain
1370 pmain = dd_sec(nspmd+1,i)
1371 IF(proc==pmain)
THEN
1374 iad_sec(2,p) = iad_sec(2,p) + dd_sec(p,i)
1378 iad_sec(1,pmain) = iad_sec(1,pmain) + dd_sec(proc,i)
1391 ifram = nstrf(ip+27)
1392 nnod_s = nstrf(ip+7)
1393 nsels_s = nstrf(ip+8)
1394 nselq_s = nstrf(ip+9)
1395 nselc_s = nstrf(ip+10)
1396 nselt_s = nstrf(ip+11)
1397 nselp_s = nstrf(ip+12)
1398 nselr_s = nstrf(ip+13)
1399 nseltg_s= nstrf(ip+14)
1400 nsint_s = nstrf(ip+15)
1401 ip = ip + 30 + nsint_s + nnod_s
1403 pmain = dd_sec(nspmd+1,i)
1405 dd_p(pmain) = dd_p(pmain) + 1
1406 IF(proc==pmain)
THEN
1413 k = nstrf(ip + j*2 - 1)
1414 IF(cep(k+off)+1==p) imax = 1
1416 IF(imax==1)
GO TO 3000
1420 k = nstrf(ip + j*2 - 1)
1421 IF(cep(k+off)+1==p) imax = 1
1423 IF(imax==1)
GO TO 3000
1428 k = nstrf(ip + j*2 - 1)
1429 IF(cep(k+off)+1==p) imax = 1
1431 IF(imax==1)
GO TO 3000
1435 k = nstrf(ip + j*2 - 1)
1436 IF(cep(k+off)+1==p) imax = 1
1438 IF(imax==1)
GO TO 3000
1442 k = nstrf(ip + j*2 - 1)
1443 IF(cep(k+off)+1==p) imax = 1
1445 IF(imax==1)
GO TO 3000
1449 k = nstrf(ip + j*2 - 1)
1450 IF(cep(k+off)+1==p) imax = 1
1452 IF(imax==1)
GO TO 3000
1456 k = nstrf(ip + j*2 - 1)
1457 IF(cep(k+off)+1==p) imax = 1
1459 ip = ip + 2*nseltg_s
1463 IF(imax==1.OR.isecut==1)
THEN
1465 iad_sec(3,p) = iad_sec(3,p) + 1
1474 k = nstrf(ip + j*2 - 1)
1475 IF(cep(k+off)+1==proc) imax = 1
1477 IF(imax==1)
GO TO 4000
1481 k = nstrf(ip + j*2 - 1)
1482 IF(cep(k+off)+1==proc) imax = 1
1484 IF(imax==1)
GO TO 4000
1488 k = nstrf(ip + j*2 - 1)
1489 IF(cep(k+off)+1==proc) imax = 1
1491 IF(imax==1)
GO TO 4000
1495 k = nstrf(ip + j*2 - 1)
1496 IF(cep(k+off)+1==proc) imax = 1
1498 IF(imax==1)
GO TO 4000
1502 k = nstrf(ip + j*2 - 1)
1503 IF(cep(k+off)+1==proc) imax = 1
1505 IF(imax==1)
GO TO 4000
1509 k = nstrf(ip + j*2 - 1)
1510 IF(cep(k+off)+1==proc) imax = 1
1512 IF(imax==1)
GO TO 4000
1516 k = nstrf(ip + j*2 - 1)
1517 IF(cep(k+off)+1==proc) imax = 1
1519 ip = ip + 2*nseltg_s
1522 IF(imax==1.OR.isecut==1)
THEN
1523 iad_sec(4,pmain) = iad_sec(4,pmain) + 1
1527 ip = ip0 + 2*(nsels_s+nselq_s+nselc_s+
1528 + nselt_s+nselp_s+nselr_s+nseltg_s)
1532 IF(iad_sec(3,p)/=0)
THEN
1533 iad_sec(3,p) = dd_p(proc)
1535 IF(iad_sec(4,p)/=0)
THEN
1536 iad_sec(4,p) = dd_p(p)
1541 iad_sec(1,nspmd+1) = iad_sec(1,nspmd+1) + iad_sec(1,p)
1542 iad_sec(2,nspmd+1) = iad_sec(2,nspmd+1) + iad_sec(2,p)
1543 iad_sec(3,nspmd+1) = iad_sec(3,nspmd+1) + iad_sec(3,p)
1544 iad_sec(4,nspmd+1) = iad_sec(4,nspmd+1) + iad_sec(4,p)
1558 dd_mad(5,nspmd+1) = nconx
1565 ideb = 1 + 7*nconx + nmadprt
1566 eshift = numels+numelq
1569 k = iexmad(ideb+i-1)
1570 IF(cep(k+eshift)==p-1)
THEN
1574 dd_mad(1,p) = nmad_l
1578 ideb = ideb + nmadsh4
1579 eshift = numels+numelq+numelc+numelt+numelp+numelr
1582 k = iexmad(ideb+i-1)
1583 IF(cep(k+eshift)==p-1)
THEN
1587 dd_mad(2,p) = nmad_l
1591 ideb = ideb + nmadsh3
1595 k = iexmad(ideb+i-1)
1596 IF(cep(k+eshift)==p-1)
THEN
1600 dd_mad(3,p) = nmad_l
1604 ideb = ideb + nmadsol
1607 k = iexmad(ideb+i-1)
1608 IF(nlocal(k,p)==1)
THEN
1610 IF(nlocal(k,pp)==1)
GOTO 888
1616 dd_mad(4,p) = nmad_l
1618 dd_mad(1,nspmd+1) = nmadsh4
1619 dd_mad(2,nspmd+1) = nmadsh3
1620 dd_mad(3,nspmd+1) = nmadsol
1621 dd_mad(4,nspmd+1) = nmadnod
1632 IF(iale+ieuler+itherm+ialelag/=0)
THEN
1673 IF(iparg(32,ng)+1==proc)
THEN
1678 isolnod = iparg(28,ng)
1685 iad1 = ale_connectivity%ee_connect%iad_connect(ie)
1686 lgth = ale_connectivity%ee_connect%iad_connect(ie+1)-ale_connectivity%ee_connect%iad_connect(ie)
1688 iv = ale_connectivity%ee_connect%connected(iad1 + j - 1)
1691 IF(proc2/=proc)
THEN
1692 IF(tage(iv)==0)
THEN
1695 cpulocaler(ii)=proc2
1697 lercvois(ii) = numels_l+ii
1699 nercvois(proc2) = nercvois(proc2)+1
1701 IF(tage_l(proc2,ie_loc)==0)
THEN
1704 cpulocales(jj)=proc2
1705 lesdvois(jj) = ie_loc
1706 tage_l(proc2,ie_loc)=proc2
1707 nesdvois(proc2) = nesdvois(proc2)+1
1710 ELSEIF(proc/=1.AND.iv<0)
THEN
1712 IF(tags(1,-iv)==0)
THEN
1717 npsegcom(1) = npsegcom(1)+1
1727 iad1 = ale_connectivity%ee_connect%iad_connect(ie)
1728 lgth = ale_connectivity%ee_connect%iad_connect(ie+1)-ale_connectivity%ee_connect%iad_connect(ie)
1734 IF(proc2/=proc)
THEN
1735 IF(tage(iv)==0)
THEN
1738 cpulocaler(ii)=proc2
1740 lercvois(ii) = numelq_l+ii
1742 nercvois(proc2) = nercvois(proc2)+1
1744 IF(tage_l(proc2,ie_loc)==0)
THEN
1747 cpulocales(jj)=proc2
1748 lesdvois(jj) = ie_loc
1749 tage_l(proc2,ie_loc)=proc2
1750 nesdvois(proc2) = nesdvois(proc2)+1
1757 ELSEIF(ity==7 .AND. (n2d /= 0 .AND. multi_fvm%IS_USED))
THEN
1761 iad1 = ale_connectivity%ee_connect%iad_connect(ie)
1762 lgth = ale_connectivity%ee_connect%iad_connect(ie+1)-ale_connectivity%ee_connect%iad_connect(ie)
1765 iv = ale_connectivity%ee_connect%connected(iad1 + j - 1)
1768 IF(proc2/=proc)
THEN
1769 IF(tage(iv)==0)
THEN
1772 cpulocaler(ii)=proc2
1774 lercvois(ii) = numeltg_l+ii
1776 nercvois(proc2) = nercvois(proc2)+1
1778 IF(tage_l(proc2,ie_loc)==0)
THEN
1781 cpulocales(jj)=proc2
1782 lesdvois(jj) = ie_loc
1783 tage_l(proc2,ie_loc)=proc2
1784 nesdvois(proc2) = nesdvois(proc2)+1
1792 ELSEIF(segindx>0.AND.proc==1)
THEN
1799 isolnod = iparg(28,ng)
1805 iad1 = ale_connectivity%ee_connect%iad_connect(ie)
1806 lgth = ale_connectivity%ee_connect%iad_connect(ie+1)-ale_connectivity%ee_connect%iad_connect(ie)
1808 iv = ale_connectivity%ee_connect%connected(iad1 + j - 1)
1811 IF(tags(p,-iv)==0)
THEN
1816 npsegcom(p) = npsegcom(p)+1
1834 IF ( (nodlocal(ns)/=0) .AND. (nodlocal(ns)<=numnod_l) )
THEN
1835 iad1 = ale_connectivity%ee_connect%iad_connect(i)
1836 lgth = ale_connectivity%ee_connect%iad_connect(i+1)-ale_connectivity%ee_connect%iad_connect(i)
1838 ie = ale_connectivity%ee_connect%connected(iad1 + k - 1)
1843 IF ( (nodlocal(n)==0).OR.(nodlocal(n)>numnod_l) )
THEN
1850 IF(iad <= 0) psearch = .false.
1856 cpulocalr(nr_l) = proc2
1857 nbrcvois(proc2) = nbrcvois(proc2)+1
1860 IF(
ifront%P(2,iad)==0) psearch = .false.
1872 DO ijk=1,size_ale_elm
1873 i = ale_elm%SOL_ID(ijk)
1874 iad1 = ale_connectivity%ee_connect%iad_connect(i)
1875 lgth = ale_connectivity%ee_connect%iad_connect(i+1)-ale_connectivity%ee_connect%iad_connect(i)
1879 solv = ale_connectivity%ee_connect%connected(iad1 + k - 1)
1883 IF ( (nodlocal(n)/=0).AND.(nodlocal(n)<=numnod_l) )
THEN
1884 IF(
ifront%IENTRY(n) /=0)
THEN
1890 IF(iad <= 0) psearch = .false.
1894 IF(tag_l(p,nodlocal(n))==0)
THEN
1895 IF(nlocal(n,p)==0)
THEN
1899 nbsdvois(p) = nbsdvois(p)+1
1900 tag_l(p,nodlocal(n)) = 1
1904 IF(
ifront%P(2,iad)==0) psearch = .false.
1915 iad1 = ale_connectivity%ee_connect%iad_connect(i)
1916 lgth = ale_connectivity%ee_connect%iad_connect(i+1)-ale_connectivity%ee_connect%iad_connect(i)
1919 IF ( (nodlocal(ns)/=0).AND.(nodlocal(ns)<=numnod_l) )
THEN
1921 ie = ale_connectivity%ee_connect%connected(iad1 + k - 1)
1926 IF ( (nodlocal(n)==0).OR.(nodlocal(n)>numnod_l) )
THEN
1931 IF(proc2/=proc)
THEN
1932 IF(nlocal(n,proc2)==1)
THEN
1933 cpulocalr(nr_l) = proc2
1934 nbrcvois(proc2) = nbrcvois(proc2)+1
1951 solv = ale_connectivity%ee_connect%connected(iad1 + k - 1)
1955 IF ( (nodlocal(n)/=0).AND.(nodlocal(n)<=numnod_l) )
THEN
1956 DO proc2 = 1, proc-1
1957 IF(nlocal(n,proc2)==1)
GOTO 1112
1961 IF(tag_l(p,nodlocal(n))==0)
THEN
1962 IF(nlocal(ns,p)==1)
THEN
1963 IF(nlocal(n,p)==0)
THEN
1967 nbsdvois(p) = nbsdvois(p)+1
1968 tag_l(p,nodlocal(n)) = 1
1982 IF (n2d /= 0 .AND. multi_fvm%IS_USED)
THEN
1984 iad1 = ale_connectivity%ee_connect%iad_connect(i)
1985 lgth = ale_connectivity%ee_connect%iad_connect(i+1)-ale_connectivity%ee_connect%iad_connect(i)
1988 IF ( (nodlocal(ns)/=0).AND.(nodlocal(ns)<=numnod_l) )
THEN
1990 ie = ale_connectivity%ee_connect%connected(iad1 + k - 1)
1995 IF ( (nodlocal(n)==0).OR.(nodlocal(n)>numnod_l) )
THEN
2000 IF(proc2/=proc)
THEN
2001 IF(nlocal(n,proc2)==1)
THEN
2002 cpulocalr(nr_l) = proc2
2003 nbrcvois(proc2) = nbrcvois(proc2)+1
2020 solv = ale_connectivity%ee_connect%connected(iad1 + k - 1)
2024 IF ( (nodlocal(n)/=0).AND.(nodlocal(n)<=numnod_l) )
THEN
2025 DO proc2 = 1, proc-1
2026 IF(nlocal(n,proc2)==1)
GOTO 1113
2030 IF(tag_l(p,nodlocal(n))==0)
THEN
2031 IF(nlocal(ns,p)==1)
THEN
2032 IF(nlocal(n,p)==0)
THEN
2036 nbsdvois(p) = nbsdvois(p)+1
2037 tag_l(p,nodlocal(n)) = 1
2054 if(nr_l/=nrcvvois)print*,
'error cfd node boundaries:',nr_l,
2057 itri4(1,i) = cpulocalr(i)
2058 itri4(2,i) = lnrcvois(i)
2060 CALL my_orders(0,work,itri4,index4,nrcvvois,2)
2063 lnrcvois(i) = nodlocal(itri4(2,index4(i)))
2068 if(ns_l/=nsndvois)print*,
'error cfd node boundaries :',ns_l,
2071 itri4(1,i) = cpulocals(i)
2072 itri4(2,i) = lnsdvois(i)
2074 CALL my_orders(0,work,itri4,index4,nsndvois,2)
2077 lnsdvois(i) = nodlocal(itri4(2,index4(i)))
2083 if(ii/=nervois)print*,
'error cfd elem boundaries:',ii,
2086 itri4(1,i) = cpulocaler(i)
2087 itri4(2,i) = tager(i)
2089 CALL my_orders(0,work,itri4,index4,nervois,2)
2091 itri4(2,i) = lercvois(i)
2094 lercvois(i) = itri4(2,index4(i))
2099 if(jj/=nesvois)print*,
'error cfd elem boundaries :',jj,
2102 itri4(1,i) = cpulocales(i)
2103 itri4(2,i) = tages(i)
2105 CALL my_orders(0,work,itri4,index4,nesvois,2)
2107 itri4(2,i) = lesdvois(i)
2110 lesdvois(i) = itri4(2,index4(i))
2115 if(nf_l/=nsegfl_l)print*,
'error cfd segment boundaries:',nf_l,
2118 itri4(1,i) = cpulocalf(i)
2119 itri4(2,i) = lsegcom(i)
2121 CALL my_orders(0,work,itri4,index4,nsegfl_l,2)
2124 lsegcom(i) = itri4(2,index4(i))
2128 npsegcom(nspmd+1)=npsegcom(nspmd+1)+npsegcom(p)
2129 nbrcvois(nspmd+1)=nbrcvois(nspmd+1)+nbrcvois(p)
2130 nbsdvois(nspmd+1)=nbsdvois(nspmd+1)+nbsdvois(p)
2131 nercvois(nspmd+1)=nercvois(nspmd+1)+nercvois(p)
2132 nesdvois(nspmd+1)=nesdvois(nspmd+1)+nesdvois(p)
2142 IF(int(geo(12,ig))==15)
THEN
2148 IF ( nodlocal(nn)/=0.AND.nodlocal(nn)<=numnod_l )
THEN
2150 lnodpor(nad_l+nn_l)=j-nad
2168 inacti = ipari(22,n)
2169 IF((ity==7.OR.ity==22).AND.inacti==7)
THEN
2178 n1 = intbuf_tab(n)%IRECTM(4*(k-1)+1)
2179 n2 = intbuf_tab(n)%IRECTM(4*(k-1)+2)
2180 n3 = intbuf_tab(n)%IRECTM(4*(k-1)+3)
2181 n4 = intbuf_tab(n)%IRECTM(4*(k-1)+4)
2183 IF(nlocal(n1,p)==1)
THEN
2184 IF(nlocal(n2,p)==1)
THEN
2185 IF(nlocal(n3,p)==1)
THEN
2186 IF(nlocal(n4,p)==1)
THEN
2187 dd_i18(p,nn) = dd_i18(p,nn) + 1
2197 dd_i18(nspmd+1,nn) = nrtm
2201 IF(dd_i18(p,nn)>dd_i18(pmain,nn))
THEN
2205 dd_i18(nspmd+2,nn) = pmain
2210 IF ((nr2rlnk>0).AND.(nsubdom==0))
THEN
2213 nng = igrnod(nn)%NENTITY
2217 dd_r2r(nspmd+1,n) = nng
2219 nod = igrnod(nn)%ENTITY(i)
2221 IF(nlocal(nod,p)==1)
THEN
2222 dd_r2r(p,n) = dd_r2r(p,n) + 1
2234 dd_lagf(1,nspmd+1) = dd_lagf(1,nspmd+1)+dd_lagf(1,p)
2235 dd_lagf(2,nspmd+1) = dd_lagf(2,nspmd+1)+dd_lagf(2,p)
2255 IF(nlocal(n,p)==1)
THEN
2256 dd_lagf(3,p) = dd_lagf(3,p) + 1
2258 llagf(dd_lagf(3,p)) = nodlocal(n)
2267 IF(dd_lagf(3,proc)/=nlagf_l)print*,
2268 +
'error : wrong lag mult decomposition !'
2270 dd_lagf(3,nspmd+1) = dd_lagf(3,nspmd+1)+dd_lagf(3,p)
2275 IF(icrack3d > 0)
THEN
2284 IF(nbddedge_l > 0)
THEN
2285 ALLOCATE(tag_ied_fr0(2,nbddedge_l))
2288 ALLOCATE(tag_ied_fr0(0,0))
2293 DO ied_gl=1,numedges
2295 IF(iedge_tmp(3,ied_gl) < 0)
THEN
2296 n1 = nodedge(1,ied_gl)
2297 n2 = nodedge(2,ied_gl)
2298 IF((nlocal(n1,proc)==1).AND.
2299 . (nlocal(n2,proc)==1))
THEN
2301 IF((nlocal(n1,p)==1).AND.
2302 . (nlocal(n2,p)==1))
THEN
2305 tag_ied_fr0(1,ied_fr) = ied_gl
2306 tag_ied_fr0(2,ied_fr) = p
2307 fr_nbedge(p) = fr_nbedge(p) + 1
2319 IF(nb_fredge > 0)
THEN
2320 ALLOCATE(fr_edge(nb_fredge))
2323 ALLOCATE(fr_edge(0))
2326 IF(nb_fredge == 0)
GOTO 113
2331 IF(tag_ied_fr0(2,i) == p)
THEN
2332 ied_gl = tag_ied_fr0(1,i)
2335 fr_edge(ied_fr) = edgelocal(ied_gl)
2349 iad_edge(i+1)=iad_edge(i)+fr_nbedge(i)
2353 fr_nbedge(nspmd+1) = fr_nbedge(nspmd+1) + fr_nbedge(p)
2358 IF(
ALLOCATED(tag_ied_fr0))
DEALLOCATE(tag_ied_fr0)
2382 ALLOCATE(tag_sm(nadmsr),tag_ms(nadmsr))
2387 IF(intercep(1,ni)%P(k)==proc)
THEN
2388 n1 = intbuf_tab(ni)%ADMSR(4*(k-1)+1)
2389 n2 = intbuf_tab(ni)%ADMSR(4*(k-1)+2)
2390 n3 = intbuf_tab(ni)%ADMSR(4*(k-1)+3)
2391 n4 = intbuf_tab(ni)%ADMSR(4*(k-1)+4)
2392 IF(tag_sm(n1)==0)
THEN
2396 IF(tag_sm(n2)==0)
THEN
2400 IF(tag_sm(n3)==0)
THEN
2404 IF(tag_sm(n4)==0)
THEN
2420 n = tag_ms(i) + ishift
2424 DO j = addcsrect(n), addcsrect(n+1)-1
2426 p = intercep(1,ni)%P(k)
2427 IF(p /= proc.AND.tagp(p)==0)
THEN
2428 nbddnor = nbddnor + 1
2429 fr_nor(lshift+nbddnor) = tag_ms(i)
2430 proc_rem25(nbddnor) = p
2433 lcsrect_l = lcsrect_l + 1
2434 procnor(lcsrect_l)=p
2437 addcsrect_l(nl+1)=addcsrect_l(nl)+nb
2442 itri25(1,i) = proc_rem25(i)
2443 itri25(2,i) = fr_nor(lshift+i)
2447 CALL my_orders(0,work,itri25,index25,nbddnor,3)
2449 proc_rem25(i)= itri25(1,index25(i))
2450 fr_nor(lshift+i) = tag_sm(itri25(2,index25(i)))
2458 isom(p) = isom(p) + 1
2460 iad_frnor(ni25,1) = lshift + 1
2462 iad_frnor(ni25,p+1) = iad_frnor(ni25,p) + isom(p)
2465 DEALLOCATE(tag_sm,tag_ms)
2467 ishift=ishift+nadmsr
2468 lshift=lshift+nbddnor
2471 addcsrect_l(1:numnor_l+1)=0
2488 ALLOCATE(tag_sm(nrtm),tag_ms(nrtm))
2493 IF(intercep(1,ni)%P(k)==proc)
THEN
2509 k = intbuf_tab(ni)%MVOISIN(4*(n-1)+j)
2511 p = intercep(1,ni)%P(k)
2513 nbddedg = nbddedg + 1
2514 fr_sav(1,nbddedg) = i
2515 fr_sav(2,nbddedg) = j
2516 proc_rem25(nbddedg) = p
2518 itri25_normal(1,nbddedg) = p
2519 n1=intbuf_tab(ni)%ADMSR(4*(n-1)+j)
2520 n2=intbuf_tab(ni)%ADMSR(4*(n-1)+mod(j,4)+1)
2526 itri25_normal(2,nbddedg) =
min(k,n)
2527 itri25_normal(3,nbddedg) =
max(k,n)
2528 itri25_normal(4,nbddedg) =
min(n1,n2)
2529 itri25_normal(5,nbddedg) =
max(n1,n2)
2538 CALL my_orders(0,work,itri25_normal,index25,nbddedg,5)
2540 proc_rem25(i) = itri25_normal(1,index25(i))
2541 fr_edg(1,lshift+i) = fr_sav(1,index25(i))
2542 fr_edg(2,lshift+i) = fr_sav(2,index25(i))
2550 isom(p) = isom(p) + 1
2552 iad_fredg(ni25,1) = lshift + 1
2554 iad_fredg(ni25,p+1) = iad_fredg(ni25,p) + isom(p)
2557 DEALLOCATE(tag_sm,tag_ms)
2559 lshift=lshift+nbddedg
2569 len_ia = len_ia + nvolu*(nspmd+2)
2571 len_ia = len_ia + 2*(nspmd+1)
2573 len_ia = len_ia + nspmd+1
2575 len_ia = len_ia + 4*(nspmd+1)
2577 len_ia = len_ia + nspmd+1
2579 len_ia = len_ia + nspmd+1
2581 len_ia = len_ia + nspmd+1
2583 len_ia = len_ia + 4*(nspmd+1)
2586 len_ia = len_ia + nspmd+1
2588 len_ia = len_ia + nspmd+1
2590 len_ia = len_ia + 4*(nspmd+1)
2591 CALL write_i_c(iad_cut,isecut*isp0*nsect*(nspmd+2))
2592 len_ia = len_ia + isecut*isp0*nsect*(nspmd+2)
2595 len_ia = len_ia + nspmd+1
2597 len_ia = len_ia + 4*(nspmd+1)
2600 len_ia = len_ia + nbddacc+nbddkin
2602 len_ia = len_ia + nbddnrb
2603 CALL write_i_c(dd_wall,nrwall*(nspmd+2))
2604 len_ia = len_ia + nrwall*(nspmd+2)
2606 len_ia = len_ia + 3*nrbykin
2608 len_ia = len_ia + nbddi2m
2610 len_ia = len_ia + nlink*(nspmd+2)
2612 len_ia = len_ia + nbddncj
2614 len_ia = len_ia + nbddnrbm
2616 len_ia = len_ia + 3*nibvel
2619 len_ia = len_ia + nbddrbe2
2621 len_ia = len_ia + nbddrbe3m
2623 len_ia = len_ia + nbddrbe3m
2625 len_ia = len_ia + (nspmd+1)*nsect
2627 len_ia = len_ia + nnodt_l
2629 len_ia = len_ia + nnodl_l
2631 len_ia = len_ia + 5*(nspmd+1)
2632 CALL write_i_c(dd_i18,(nspmd+2)*nbi18_l)
2633 len_ia = len_ia + (nspmd+2)*nbi18_l
2634 CALL write_i_c(dd_r2r,(nspmd+1)*nl_ddr2r)
2635 len_ia = len_ia + (nspmd+1)*nl_ddr2r
2636 IF(sdd_r2r_elem > 0)
THEN
2637 CALL write_i_c(dd_r2r_elem,sdd_r2r_elem)
2638 len_ia = len_ia + sdd_r2r_elem
2642 len_ia = len_ia + nbddnrbym
2644 len_ia = len_ia + 3*nrbym
2647 len_ia = len_ia + numnor_l+1
2649 len_ia = len_ia + nbddnort
2650 CALL write_i_c(iad_frnor,(nspmd+1)*ninter25)
2651 len_ia = len_ia + (nspmd+1)*ninter25
2652 if(lcsrect_l /= nbccnor) print *,
'internal error'
2654 len_ia = len_ia + lcsrect_l
2656 len_ia = len_ia + 2*nbddedgt
2657 CALL write_i_c(iad_fredg,(nspmd+1)*ninter25)
2658 len_ia = len_ia + (nspmd+1)*ninter25
2664 len_ia = len_ia + nspmd + numskw+1 + nskwp
2669 len_ia = len_ia + 2*nsensor + nspmd
2674 len_ia = len_ia +naccelm +nspmd
2679 len_ia = len_ia +nbgauge +nspmd
2683 len_ia = len_ia + 3*(nspmd+1)
2685 len_ia = len_ia + ninter
2689 IF(iale+ieuler+itherm+ialelag/=0)
THEN
2691 len_ia = len_ia + nspmd+1
2693 len_ia = len_ia + nrcvvois
2695 len_ia = len_ia + nspmd+1
2697 len_ia = len_ia + nsndvois
2699 len_ia = len_ia + nspmd+1
2701 len_ia = len_ia + nervois
2703 len_ia = len_ia + nspmd+1
2705 len_ia = len_ia + nesvois
2708 len_ia = len_ia + nspmd+1
2710 len_ia = len_ia + nsegfl_l
2714 len_ia = len_ia + numgeo
2716 len_ia = len_ia + numpor_l
2721 len_ia = len_ia + nlagf_l
2723 IF ((nsubdom>0).AND.(iddom==0))
THEN
2724 DEALLOCATE(dd_r2r_elem)
2727 IF(icrack3d > 0)
THEN
2729 len_ia = len_ia + nspmd+1
2731 len_ia = len_ia + nb_fredge
2733 len_ia = len_ia + nspmd+1
2734 IF(
ALLOCATED(fr_edge))
DEALLOCATE(fr_edge)
2738 len_ia = len_ia + nspmd+1
2740 len_ia = len_ia + nbddcndm
2742 DEALLOCATE( acckin )
2743 DEALLOCATE( addcsrect_l )
2744 DEALLOCATE( cpulocaler )
2745 DEALLOCATE( cpulocales )
2746 DEALLOCATE( cpulocalf )
2747 DEALLOCATE( cpulocalr )
2748 DEALLOCATE( cpulocals )
2750 DEALLOCATE( dd_cndm )
2751 DEALLOCATE( dd_cut )
2752 DEALLOCATE( dd_elem )
2753 DEALLOCATE( dd_i2m )
2755 DEALLOCATE( dd_rbe2 )
2756 DEALLOCATE( dd_rbe3m )
2757 DEALLOCATE( dd_rbm )
2758 DEALLOCATE( dd_rby )
2759 DEALLOCATE( dd_rbym )
2760 DEALLOCATE( dp_rbe3m )
2762 DEALLOCATE( fr_nor )
2763 DEALLOCATE( iad_cndm )
2764 DEALLOCATE( iad_i2m )
2765 DEALLOCATE( iad_rbe2 )
2766 DEALLOCATE( iad_rbe3 )
2767 DEALLOCATE( iad_rbe3m )
2768 DEALLOCATE( iad_rbm )
2769 DEALLOCATE( iad_rby )
2770 DEALLOCATE( iad_rbym )
2772 DEALLOCATE( index2 )
2773 DEALLOCATE( index3 )
2774 DEALLOCATE( index4 )
2775 DEALLOCATE( index5 )
2777 DEALLOCATE( isom_r2r_r )
2778 DEALLOCATE( isom_r2r_s )
2779 DEALLOCATE( lercvois )
2780 DEALLOCATE( lesdvois )
2782 DEALLOCATE( lnodpor )
2783 DEALLOCATE( lnrcvois )
2784 DEALLOCATE( lnsdvois )
2785 DEALLOCATE( lsegcom )!(nsegfl_l)
2786 DEALLOCATE( nbrcvois )
2787 DEALLOCATE( nbsdvois )
2788 DEALLOCATE( nercvois )
2789 DEALLOCATE( nesdvois )
2790 DEALLOCATE( nporgeo )
2791 DEALLOCATE( npsegcom )
2792 DEALLOCATE( procnor )
2793 DEALLOCATE( proc_rem )
2794 DEALLOCATE( proc_rem1 )
2795 DEALLOCATE( rg_cut )
2798 DEALLOCATE( dd_i18 )
2800 DEALLOCATE( dd_mad )
2802 DEALLOCATE( dd_r2r )
2803 DEALLOCATE( dd_sec )
2804 DEALLOCATE( dd_wall )
2805 DEALLOCATE( fr_edg )
2806 DEALLOCATE( fr_sav )
2807 DEALLOCATE( iad_cj )
2808 DEALLOCATE( iad_cut )
2809 DEALLOCATE( iad_elem )
2810 DEALLOCATE( iad_fredg )
2811 DEALLOCATE( iad_frnor )
2812 DEALLOCATE( iad_rbm2 )
2813 DEALLOCATE( iad_rby2 )
2814 DEALLOCATE( iad_rbym2 )
2815 DEALLOCATE( iad_sec )
2816 DEALLOCATE( index25 )
2819 DEALLOCATE( itri25 )
2820 DEALLOCATE( itri25_normal )
2824 DEALLOCATE( proc_rem25 )
2829 DEALLOCATE( weight,tage )
2830 DEALLOCATE( newfront,tag )
2831 DEALLOCATE( tager,tages )
2833 DEALLOCATE( tage_l,tag_l )