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_
77#include "implicit_f.inc"
83#include "com_xfem1.inc"
91 INTEGER ,
INTENT(IN) :: NSENSOR
92 INTEGER ,
INTENT(IN) :: ITHERM
93 INTEGER PROC, NBDDACC, NBDDKIN, , NBDDBOUN, NUMELS_L,
94 . numnod_l, nbddnrb, len_ia, nbddi2m, nbddncj,nbddnrbm,
95 . nnodt_l, nnodl_l, isp0, nrcvvois, nsndvois, nervois,
96 . nesvois, nsegfl_l, numel, nbcfd, numelq_l,numeltg_l,
98 . nbddnort, nbddnor_max, nbccfr25, nbccnor, numnor_l,
99 . nbddedgt,nbddedg_max,
100 . nodlocal(*), nodglob(*), npby(nnpby,*),
101 . lpby(*), nprw(*), lprw(*), dd_rby2(3,nrbykin),
102 . itabi2m(*), cep(*), monvol(*),
103 . nnlink(10,*), lllink(*), ljoint(*),
104 . ibvel(nbvelp,*), lbvel(*), dd_rbm2(3,nibvel), nstrf(*),
106 . ixs(nixs,*), ixq(nixq,*), ixtg(nixtg, *),cel(*),
pornod(*),
107 . ipari(npari,*), iexlnk(nr2r,nr2rlnk),
108 . dd_lagf(3,nspmd+1), iadll(*), lll(*),
109 . iskwp(*), nskwp(*),iexmad(*),
110 . isensp(2,*), nsensp(*), iaccp(*), naccp(*),
111 . irbe3(nrbe3l,*), lrbe3(*),itabrbe3m(*),nbddrbe3m,
112 . irbym(nirbym,*), dd_rbym2(3,nrbym), front_rm(nrbym,*),
113 . lcrbym(*),nbddnrbym,irbe2(nrbe2l,*), lrbe2(*),nbddrbe2,
114 . itabrbe2m(*),iedge_tmp(3,*),nodedge(2,*),
115 . edgelocal(*),nbddedge_l, igaup(*), ngaup(*),
116 . frontb_r2r(sfrontb_r2r,nspmd),sdd_r2r_elem,
117 . addcsrect(*), csrect(*),nbddcndm,itabcndm(*)
121 TYPE(intbuf_struct_) INTBUF_TAB(
122TYPE(INTERSURFP) :: INTERCEP(3,NINTER)
123 TYPE(MULTI_FVM_STRUCT) :: MULTI_FVM
124 TYPE (GROUP_) ,
DIMENSION(NGRNOD) :: IGRNOD
125 TYPE (SURF_) ,
DIMENSION(NSURF) :: IGRSURF
126 INTEGER,
DIMENSION(*),
INTENT(IN) :: ISKWP_L
127 INTEGER,
INTENT(IN) :: SIZE_ALE_ELM
128 TYPE(split_cfd_type),
INTENT(IN) :: ALE_ELM
129 TYPE(t_ale_connectivity),
INTENT(INOUT) :: ALE_CONNECTIVITY
130 TYPE (NLOCAL_STR_),
TARGET,
INTENT(IN) :: NLOC_DMG
131 type(constraint_),
intent(inout) :: constraint_struct
140 INTEGER I, N, P, PP, IPACC, IPKIN,
142 . iskin, nbrb, j, k, kk, k0, k1, k2, k6, iso, imax, isbound,
143 . nbcj, nsn, m, nn, n1, n2, n3, n4, nnod, ifram, off, ip, ip0,
144 . nnod_s, nsels_s, nselq_s, nselc_s, nselt_s, nselp_s,
145 . nselr_s, nseltg_s, nsint_s, nnl_l, nnt_l, typ, nn_l,nad_l,
146 . eshift, nmad_l, ng, nft, nel, ilaw, jtur, jthe, isolnod,
147 . iv, ie, proc2, ie_loc, ns_l, ii, jj, ig, nr_l, nf_l,
148 . iv_loc, nw_l, ilw, nimp, ilp, nbe, nad, nrts, nrtm,
150 . ishift, lshift, nadmsr, nadmsr_l, ni, nty, ni25, nbddnor,
151 . lcsrect_l, nbddedg, nrtm_l, ic, ik0, ikn, ik,ijk,nb
156 INTEGER,
DIMENSION(:),
ALLOCATABLE ::
157 INTEGER,
DIMENSION(:),
ALLOCATABLE :: PLIST
158 INTEGER,
DIMENSION(:),
ALLOCATABLE :: TAG_SM, TAG_MS
161 INTEGER IAD_EDGE(NSPMD+1),LENR,TAG_EDGE,FRNODES,IED_GL,OK,IED_FR,
162 . FR_EDGE_OLD,FR_EDGE0,FR_NBEDGE(NSPMD+1)
163 INTEGER,
DIMENSION(:),
ALLOCATABLE :: ,TAG_IED_FR
164 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: TAG_IED_FR0
166 INTEGER,
DIMENSION(:),
ALLOCATABLE :: WEIGHT,TAGE,NEWFRONT,TAG,TAGER,
168 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: TAGE_L,TAG_L
169 INTEGER :: IAD1, LGTH
185 INTEGER,
DIMENSION(:),
ALLOCATABLE :: ACCKIN
186 INTEGER,
DIMENSION(:),
ALLOCATABLE :: ADDCSRECT_L
187 INTEGER,
DIMENSION(:),
ALLOCATABLE :: CPULOCALER
188 INTEGER,
DIMENSION(:),
ALLOCATABLE :: CPULOCALES
189 INTEGER,
DIMENSION(:),
ALLOCATABLE :: CPULOCALF
190 INTEGER,
DIMENSION(:),
ALLOCATABLE :: CPULOCALR
191 INTEGER,
DIMENSION(:),
ALLOCATABLE :: CPULOCALS !(NSNDVOIS)
192 INTEGER,
DIMENSION(:),
ALLOCATABLE :: DD_CJ
193 INTEGER,
DIMENSION(:),
ALLOCATABLE :: DD_CNDM
194 INTEGER,
DIMENSION(:),
ALLOCATABLE :: DD_CUT
195 INTEGER,
DIMENSION(:),
ALLOCATABLE :: DD_ELEM
196 INTEGER,
DIMENSION(:)ALLOCATABLE :: DD_I2M
197 INTEGER,
DIMENSION(:),
ALLOCATABLE :: DD_P
198 INTEGER,
DIMENSION(:),
ALLOCATABLE :: DD_RBE2
199 INTEGER,
DIMENSION(:),
ALLOCATABLE :: DD_RBE3M
200 INTEGER,
DIMENSION(:),
ALLOCATABLE :: DD_RBM
201 INTEGER,
DIMENSION(:)ALLOCATABLE
202 INTEGER,
DIMENSION(:),
ALLOCATABLE :: DD_RBYM
203 INTEGER,
DIMENSION(:),
ALLOCATABLE :: DP_RBE3M
204 INTEGER,
DIMENSION(:),
ALLOCATABLE :: D_RBY
205 INTEGER,
DIMENSION(:),
ALLOCATABLE :: FR_NOR
206 INTEGER,
DIMENSION(:),
ALLOCATABLE :: IAD_CNDM
207 INTEGER,
DIMENSION(:),
ALLOCATABLE :: IAD_I2M
208 INTEGER,
DIMENSION(:),
ALLOCATABLE :: IAD_RBE2
209 INTEGER,
DIMENSION(:),
ALLOCATABLE :: IAD_RBE3
210 INTEGER,
DIMENSION(:),
ALLOCATABLE :: IAD_RBE3M
211 INTEGER,
DIMENSION(:),
ALLOCATABLE :: IAD_RBM
212 INTEGER,
DIMENSION(:),
ALLOCATABLE :: IAD_RBY
213 INTEGER,
DIMENSION(:),
ALLOCATABLE :: IAD_RBYM
214 INTEGER,
DIMENSION(:),
ALLOCATABLE :: INDEX
215 INTEGER,
DIMENSION(:),
ALLOCATABLE :: INDEX2 !(2*(NBDDNRB))
216 INTEGER,
DIMENSION(:),
ALLOCATABLE :: INDEX3
217 INTEGER,
DIMENSION(:),
ALLOCATABLE :: INDEX4
218 INTEGER,
DIMENSION(:),
ALLOCATABLE :: INDEX5
219 INTEGER,
DIMENSION(:),
ALLOCATABLE :: ISOM
220 INTEGER,
DIMENSION(:),
ALLOCATABLE :: ISOM_R2R_R
221 INTEGER,
DIMENSION(:),
ALLOCATABLE :: ISOM_R2R_S
222 INTEGER,
DIMENSION(:),
ALLOCATABLE :: LERCVOIS
223 INTEGER,
DIMENSION(:),
ALLOCATABLE :: LESDVOIS !(NESVOIS)
224 INTEGER,
DIMENSION(:),
ALLOCATABLE :: LLAGF
225 INTEGER,
DIMENSION(:),
ALLOCATABLE :: LNODPOR
226 INTEGER,
DIMENSION(:),
ALLOCATABLE :: LNRCVOIS
227 INTEGER,
DIMENSION(:),
ALLOCATABLE :: LNSDVOIS
228 INTEGER,
DIMENSION(:),
ALLOCATABLE :: LSEGCOM
229 INTEGER,
DIMENSION(:),
ALLOCATABLE :: NBRCVOIS
230 INTEGER,
DIMENSION(:),
ALLOCATABLE :: NBSDVOIS
231 INTEGER,
DIMENSION(:),
ALLOCATABLE :: NERCVOIS
232 INTEGER,
DIMENSION(:),
ALLOCATABLE :: NESDVOIS
233 INTEGER,
DIMENSION(:),
ALLOCATABLE :: NPORGEO
234 INTEGER,
DIMENSION(:),
ALLOCATABLE :: NPSEGCOM
235 INTEGER,
DIMENSION(:),
ALLOCATABLE :: PROCNOR
236 INTEGER,
DIMENSION(:),
ALLOCATABLE :: PROC_REM
237 INTEGER,
DIMENSION(:),
ALLOCATABLE :: PROC_REM1
238 INTEGER,
DIMENSION(:),
ALLOCATABLE :: RG_CUT
239 INTEGER,
DIMENSION(:),
ALLOCATABLE :: SECVU
240 INTEGER,
DIMENSION(:),
ALLOCATABLE :: WORK
241 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: DD_I18
242 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: DD_LL
243 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: DD_MAD
244 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: DD_MV
245 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: DD_R2R
246 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: DD_SEC
247 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: DD_WALL
248 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: FR_EDG
249 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: FR_SAV
250 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: IAD_CJ
251 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: IAD_CUT
252 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: IAD_ELEM
253 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: IAD_FREDG
254 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: IAD_FRNOR
255 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: IAD_RBM2
256 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: IAD_RBY2
257 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: IAD_RBYM2
258 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: IAD_SEC
259 INTEGER,
DIMENSION(:),
ALLOCATABLE :: INDEX25
260 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: ITRI
261 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: ITRI2
262 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: ITRI25
263 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: ITRI25_NORMAL
264 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: ITRI3
265 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: ITRI4
266 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: ITRI5
267 INTEGER,
DIMENSION(:),
ALLOCATABLE :: PROC_REM25
268 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: TAGS
269 INTEGER,
DIMENSION(:),
ALLOCATABLE :: PROC_REM_CYL_JOINT
270 INTEGER :: COMPTR_NL,COMPTS_NL
271 INTEGER :: NDOF_NLOCAL,OFFSET_S_NL,OFFSET_R_NL
272 INTEGER,
DIMENSION(:),
ALLOCATABLE :: ISOM_R2R_R_NL
273 INTEGER,
DIMENSION(:),
ALLOCATABLE :: ISOM_R2R_S_NL
274 INTEGER,
POINTER,
DIMENSION(:) :: IDXI,
276 ALLOCATE(acckin(nbddacc+nbddkin))
277 ALLOCATE(addcsrect_l(numnor_l+1))
278 ALLOCATE(cpulocaler(nervois))
279 ALLOCATE(cpulocales(nesvois))
280 ALLOCATE(cpulocalf(nsegfl_l
282 ALLOCATE(cpulocals(nsndvois))
283 ALLOCATE(dd_cj(nbddncj
284 ALLOCATE(dd_cndm(nbddcndm))
285 ALLOCATE(dd_cut(nnodt_l))
286 ALLOCATE(dd_elem(nbddacc+nbddkin
287 ALLOCATE(dd_i2m(nbddi2m))
288 ALLOCATE(dd_p(nspmd))
289 ALLOCATE(dd_rbe2(nbddrbe2))
290 ALLOCATE(dd_rbe3m(nbddrbe3m))
291 ALLOCATE(dd_rbm(nbddnrbm))
292 ALLOCATE(dd_rby(nbddnrb))
293 ALLOCATE(dd_rbym(nbddnrbym))
294 ALLOCATE(dp_rbe3m(nbddrbe3m))
295 ALLOCATE(d_rby(nspmd+1))
296 ALLOCATE(fr_nor(nbddnort))
297 ALLOCATE(iad_cndm(nspmd+1))
298 ALLOCATE(iad_i2m(nspmd+1))
299 ALLOCATE(iad_rbe2(nspmd+1))
300 ALLOCATE(iad_rbe3(nspmd+1))
301 ALLOCATE(iad_rbe3m(nspmd+1))
302 ALLOCATE(iad_rbm(nspmd+1))
303 ALLOCATE(iad_rby(nspmd+1))
304 ALLOCATE(iad_rbym(nspmd+1))
305 ALLOCATE(index(2*(nbddacc+nbddkin)))
306 ALLOCATE(index2(2*(nbddnrb)))
307 ALLOCATE(index3(2*nbddncj))
308 ALLOCATE(index4(2*nbcfd))
309 ALLOCATE(index5(2*(nbddnrbym)))
310 ALLOCATE(isom(nspmd))
311 ALLOCATE(isom_r2r_r(nspmd))
312 ALLOCATE(isom_r2r_s(nspmd))
313 ALLOCATE(lercvois(nervois))
314 ALLOCATE(lesdvois(nesvois))
315 ALLOCATE(llagf(nlagf_l))
316 ALLOCATE(lnodpor(numpor_l))
317 ALLOCATE(lnrcvois(nrcvvois))
318 ALLOCATE(lnsdvois(nsndvois))
319 ALLOCATE(lsegcom(nsegfl_l))
320 ALLOCATE(nbrcvois(nspmd+1))
321 ALLOCATE(nbsdvois(nspmd+1))
322 ALLOCATE(nercvois(nspmd+1))
323 ALLOCATE(nesdvois(nspmd+1))
324 ALLOCATE(nporgeo(numgeo))
325 ALLOCATE(npsegcom(nspmd+1))
326 ALLOCATE(procnor(nbccnor))
327 ALLOCATE(proc_rem(nbddacc+nbddkin))
328 ALLOCATE(proc_rem1(nbddnrbym))
329 ALLOCATE(rg_cut(nnodl_l))
330 ALLOCATE(secvu(nspmd))
331 ALLOCATE(work(70000))
332 ALLOCATE(dd_i18(nspmd+2,nbi18_l))
333 ALLOCATE(dd_ll(nspmd+2,nlink))
334 ALLOCATE(dd_mad(5,nspmd+1))
335 ALLOCATE(dd_mv(nspmd+2,nvolu))
336 ALLOCATE(dd_r2r(nspmd+1,nl_ddr2r))
337 ALLOCATE(dd_sec(nspmd+1,nsect))
338 ALLOCATE(dd_wall(nspmd+2,nrwall))
339 ALLOCATE(fr_edg(2,nbddedgt))
341 ALLOCATE(iad_cj(nspmd+1,njoint))
342 ALLOCATE(iad_cut(nspmd+2,nsect*isecut*isp0))
343 ALLOCATE(iad_elem(2,nspmd+1))
344 ALLOCATE(iad_fredg(ninter25,nspmd+1))
345 ALLOCATE(iad_frnor(ninter25,nspmd+1))
346 ALLOCATE(iad_rbm2(4,nspmd+1))
347 ALLOCATE(iad_rby2(4,nspmd+1))
348 ALLOCATE(iad_rbym2(4,nspmd+1))
349 ALLOCATE(iad_sec(4,nspmd+1))
350 ALLOCATE(index25(2*
max(nbddnor_max,nbddedg_max)))
351 ALLOCATE(itri(3,nbddacc+nbddkin))
352 ALLOCATE(itri2(2,nbddnrb))
353 ALLOCATE(itri25(3,
max(nbddnor_max,nbddedg_max)))
354 ALLOCATE(itri25_normal(5,
max(nbddnor_max,nbddedg_max)))
355 ALLOCATE(itri3(2,nbddncj))
356 ALLOCATE(itri4(2,nbcfd))
357 ALLOCATE(itri5(2,nbddnrbym))
358 ALLOCATE(proc_rem25(
max(nbddnor_max,nbddedg_max)))
359 ALLOCATE(tags(nspmd,segindx))
360 ALLOCATE( weight(numnod_l),tage(numel) )
361 ALLOCATE( newfront(ninter),tag(numnod) )
362 ALLOCATE( tager(nervois),tages(nesvois) )
363 ALLOCATE( tage_l(nspmd,numel_l),tag_l(nspmd
372 ALLOCATE(plist(nspmd))
387 proc_rem(nbddnod) = p
391 IF(
flagkin(i)==1.AND.(proc==1.OR.p==1))
THEN
399 nbddboun = nbddboun + isbound
405 itri(1,i) = proc_rem(i)
406 itri(2,i) = acckin(i)
407 itri(3,i) = dd_elem(i)
410 CALL my_orders(0,work,itri,index,nbddnod,3)
412 proc_rem(i)= itri(1,index(i))
413 acckin(i) = itri(2,index(i))
414 dd_elem(i) = nodlocal(itri(3,index(i)))
422 isom(p) = isom(p) + 1
427 iad_elem(1,p+1) = iad_elem(1,p) + isom(p)
428 iad_elem(2,p+1) = iad_elem(1,p+1)
433 IF ((nsubdom>0).AND.(iddom==0))
THEN
441 n = nodglob(dd_elem(i))
442 IF (frontb_r2r(n,proc)==-1)
THEN
443 IF (frontb_r2r(n,p)>0)
THEN
444 isom_r2r_s(p) = isom_r2r_s(p) + 1
447 ELSEIF (frontb_r2r(n,proc)>0)
THEN
448 IF (frontb_r2r(n,p)==-1)
THEN
449 isom_r2r_r(p) = isom_r2r_r(p) + 1
457 dd_r2r(p+1,1) = dd_r2r(p,1) + isom_r2r_s(p)
458 dd_r2r(p+1,2) = dd_r2r(p,2) + isom_r2r_r(p)
463 IF (nloc_dmg%IMOD > 0)
THEN
464 idxi => nloc_dmg%IDXI(1:numnod)
465 posi => nloc_dmg%POSI(1:nloc_dmg%NNOD)
466 ALLOCATE(isom_r2r_r_nl(nspmd))
467 ALLOCATE(isom_r2r_s_nl(nspmd))
474 n = nodglob(dd_elem(i))
476 ndof_nlocal = posi(nn+1)-posi(nn)
477 IF (frontb_r2r(n,proc)==-1)
THEN
478 IF (frontb_r2r(n,p)>0)
THEN
479 isom_r2r_s_nl(p) = isom_r2r_s_nl(p) + ndof_nlocal
482 IF (frontb_r2r(n,proc)>0)
THEN
483 IF (frontb_r2r(n,p)==-1)
THEN
484 isom_r2r_r_nl(p) = isom_r2r_r_nl(p) + ndof_nlocal
489 compts_nl = compts_nl+isom_r2r_s_nl(p)
490 comptr_nl = compts_nl+isom_r2r_r_nl(p)
491 dd_r2r(p+1,3) = dd_r2r(p,3) + isom_r2r_s_nl(p)
492 dd_r2r(p+1,4) = dd_r2r(p,4) + isom_r2r_r_nl(p)
494 DEALLOCATE(isom_r2r_r_nl,isom_r2r_s_nl)
502 ALLOCATE (dd_r2r_elem(sdd_r2r_elem),stat=ierr)
503 dd_r2r_elem(1:sdd_r2r_elem) = 0
505 WRITE(iout,*)
' ** ERROR IN MEMORY ALLOCATION'
506 WRITE(istdo,*)
' ** ERROR IN MEMORY ALLOCATION'
513 n = nodglob(dd_elem(i))
515 IF (frontb_r2r(n,proc)==-1)
THEN
516 IF (frontb_r2r(n,p)>0)
THEN
518 dd_r2r_elem(compts) = dd_elem(i)
520 ELSEIF (frontb_r2r(n,proc)>0)
THEN
521 IF (frontb_r2r(n,p)==-1)
THEN
523 dd_r2r_elem(offset+comptr) = dd_elem(i)
529 IF (nloc_dmg%IMOD > 0)
THEN
530 offset_s_nl = compts + comptr
531 offset_r_nl = compts + comptr + compts_nl
535 n = nodglob(dd_elem(i))
538 ndof_nlocal = posi(nn+1)-posi(nn)
539 IF (frontb_r2r(n,proc)==-1)
THEN
540 IF (frontb_r2r(n,p)>0)
THEN
541 DO kk = 1,ndof_nlocal
542 compts_nl = compts_nl+1
543 dd_r2r_elem(offset_s_nl+compts_nl) = dd_elem(i)
546 ELSEIF (frontb_r2r(n,proc)>0)
THEN
547 IF (frontb_r2r(n,p)==-1)
THEN
548 DO kk = 1,ndof_nlocal
549 comptr_nl = comptr_nl+1
550 dd_r2r_elem(offset_r_nl+comptr_nl) = dd_elem(i)
559 IF (nspmd>1.AND.(nbddacc+nbddkin)>0)
THEN
563 DO WHILE (iskin==0.AND.i<iad_elem(1,p
570 iad_elem(2,p) = iad_elem(1,p+1)
573 iad_elem(2,nspmd+1) = iad_elem(1,nspmd+1)
577 IF(isom(p)>0)nbddproc=nbddproc+1
584 IF(nlocal(n,p)==1)
GOTO 10
595 IF(nlocal(m,proc)==1)
THEN
598 IF(nlocal(m,p)==1)
THEN
610 itri2(1,i) = proc_rem(i)
611 itri2(2,i) = dd_rby(i)
614 CALL my_orders(0,work,itri2,index2,nbrb,2)
616 proc_rem(i)= itri2(1,index2(i))
617 dd_rby(i) = nodlocal(itri2(2,index2(i)))
625 isom(p) = isom(p) + 1
629 iad_rby(p+1) = iad_rby(p) + isom(p)
641 IF(mod(front_rm(m,proc),10)==1)
THEN
644 IF(mod(front_rm(m,p),10)==1)
THEN
655 itri5(1,i) = proc_rem1(i)
656 itri5(2,i) = dd_rbym(i)
659 CALL my_orders(0,work,itri5,index5,nbrb,2)
661 proc_rem1(i)= itri5(1,index5(i))
662 dd_rbym(i) = itri5(2,index5(i))
670 isom(p) = isom(p) + 1
674 iad_rbym(p+1) = iad_rbym(p) + isom(p)
679 dd_wall(1:nspmd+2,1:nrwall) = 0
681 dd_wall(1:nspmd+2,n) = constraint_struct%rwall%dd(1:nspmd+2,n)
701 IF(nlocal(msr,p)==1)
THEN
704 IF(nlocal(nn,p)==1)
THEN
705 IF(
ifront%P(1,
ifront%IENTRY(nn)) >= p) dd_p(p) = dd_p(p) + 1
717 IF(nlocal(msr,proc)==1)
THEN
718 dd_rby2(1,n) = dd_p(proc)
722 iad_rby2(1,pmain) = iad_rby2(1,pmain) + dd_p(proc)
723 iad_rby2(4,pmain) = iad_rby2(4,pmain) + 1
728 iad_rby2(2,p) = iad_rby2(2,p) + dd_p(p)
729 iad_rby2(3,p) = iad_rby2(3,p) + 1
750 IF(islocal==0) dd_rby2(3,n) = -pmain
763 IF(pmain>0) dd_p(pmain) = dd_p(pmain)+1
766 IF(iad_rby2(3,p)/=0)
THEN
767 iad_rby2(3,p) = dd_p(proc)
769 IF(iad_rby2(4,p)/=0)
THEN
770 iad_rby2(4,p) = dd_p(p)
775 iad_rby2(1,nspmd+1) = iad_rby2(1,nspmd+1) + iad_rby2(1,p)
776 iad_rby2(2,nspmd+1) = iad_rby2(2,nspmd+1) + iad_rby2(2,p)
777 iad_rby2(3,nspmd+1) = iad_rby2(3,nspmd+1) + iad_rby2(3,p)
778 iad_rby2(4,nspmd+1) = iad_rby2(4,nspmd
798 IF(mod(front_rm(msr,p),10)==1)
THEN
801 IF(nlocal(nn,p)==1)
THEN
803 IF(nlocal(nn,pp)==1)
THEN
807 dd_p(p) = dd_p(p) + 1
821 IF(mod(front_rm(msr,proc),10)==1)
THEN
822 dd_rbym2(1,n) = dd_p(proc)
824 dd_rbym2(3,n) = pmain
827 iad_rbym2(1,pmain) = iad_rbym2(1,pmain) + dd_p(proc)
828 iad_rbym2(4,pmain) = iad_rbym2(4,pmain) + 1
833 iad_rbym2(2,p) = iad_rbym2(2,p) + dd_p(p)
834 iad_rbym2(3,p) = iad_rbym2(3,p) + 1
843 dd_rbym2(3,n) = pmain
856 IF(islocal==0) dd_rbym2(3,n) = -pmain
866 pmain = dd_rbym2(3,n)
868 IF(pmain>0) dd_p(pmain) = dd_p(pmain)+1
871 IF(iad_rbym2(3,p)/=0)
THEN
872 iad_rbym2(3,p) = dd_p(proc)
874 IF(iad_rbym2(4,p)/=0)
THEN
875 iad_rbym2(4,p) = dd_p(p)
880 iad_rbym2(1,nspmd+1) = iad_rbym2(1,nspmd+1) + iad_rbym2(1,p)
881 iad_rbym2(2,nspmd+1) = iad_rbym2(2,nspmd+1) + iad_rbym2(2,p)
882 iad_rbym2(3,nspmd+1) = iad_rbym2(3,nspmd+1) + iad_rbym2(3,p)
883 iad_rbym2(4,nspmd+1) = iad_rbym2(4,nspmd+1) + iad_rbym2(4,p)
894 ifin = iad_elem(1,p+1)-1
897 IF(itabi2m(dd_elem(i))==1)
THEN
898 dd_i2m(n) = dd_elem(i)
905 print*,
'error decomp I2',n-1,nbddi2m
912 offtg =numels+numelq+ numelc+numelt+numelp+numelr
924 ity = igrsurf(is)%ELTYP(j)
925 i = igrsurf(is)%ELEM(j)
928 dd_mv(p,n) = dd_mv(p,n) + 1
931 dd_mv(p,n) = dd_mv(p,n) + 1
938 IF(dd_mv(p,n)>imax)
THEN
943 dd_mv(nspmd+1,n) = nn
944 dd_mv(nspmd+2,n) = pmain
949 IF (ity==6.OR.ity==8)
THEN
952 dd_mv(nspmd+2,n) = pmain
971 IF (nlocal(n,p)==1)
THEN
972 dd_ll(p,i) = dd_ll(p,i) + 1
981 IF(dd_ll(p,i)>imax)
THEN
986 dd_ll(nspmd+1,i) = nn
987 dd_ll(nspmd+2,i) = pmain
1000 ALLOCATE( proc_rem_cyl_joint(nbcj) )
1010 IF(nlocal(m,proc)==1)
THEN
1012 dd_cj(nad+nbcj-1) = m
1013 proc_rem_cyl_joint(nbcj) = 1
1018 IF(nlocal(m,p)==1)
THEN
1020 dd_cj(nad+nbcj-1) = m
1021 proc_rem_cyl_joint(nbcj) = p
1028 itri3(1,i) = proc_rem_cyl_joint(i)
1029 itri3(2,i) = dd_cj(nad+i-1)
1032 CALL my_orders(0,work,itri3,index3,nbcj,2)
1034 proc_rem_cyl_joint(i)= itri3(1,index3
1035 dd_cj(nad+i-1) = nodlocal(itri3(2,index3(i)))
1042 p = proc_rem_cyl_joint(i)
1043 isom(p) = isom(p) + 1
1047 iad_cj(p+1,n) = iad_cj(p,n) + isom(p)
1050 nad = nad + iad_cj(nspmd+1,n) - iad_cj(1,n)
1053 DEALLOCATE( proc_rem_cyl_joint )
1063 IF(nlocal(m,proc)==1.AND.
1064 + nlocal(m,p)==1)
THEN
1070 iad_rbm(p+1) = nbrb+1
1090 IF(nlocal(msr,p)==1)
THEN
1093 IF(nlocal(nn,p)==1)
THEN
1095 IF(nlocal(nn,pp)==1)
THEN
1099 dd_p(p) = dd_p(p) + 1
1103 IF(dd_p(p)>imax)
THEN
1112 IF(nlocal(msr,proc)==1)
THEN
1113 dd_rbm2(1,n) = dd_p(proc)
1115 dd_rbm2(3,n) = pmain
1116 IF(pmain/=proc)
THEN
1117 iad_rbm2(1,pmain) = iad_rbm2(1,pmain) + dd_p(proc)
1118 iad_rbm2(4,pmain) = iad_rbm2(4,pmain) + 1
1122 IF(dd_p(p)/=-1)
THEN
1123 iad_rbm2(2,p) = iad_rbm2(2,p) + dd_p(p)
1124 iad_rbm2(3,p) = iad_rbm2(3,p) + 1
1133 dd_rbm2(3,n) = pmain
1139 IF(dd_p(p)/=-1)
THEN
1145 IF(islocal==0) dd_rbm2(3,n) = -pmain
1156 pmain = dd_rbm2(3,n)
1158 IF(pmain>0) dd_p(pmain) = dd_p(pmain)+1
1161 IF(iad_rbm2(3,p)/=0)
THEN
1162 iad_rbm2(3,p) = dd_p(proc)
1164 IF(iad_rbm2(4,p)/=0)
THEN
1165 iad_rbm2(4,p) = dd_p(p)
1170 iad_rbm2(1,nspmd+1) = iad_rbm2(1,nspmd+1) + iad_rbm2(1,p)
1171 iad_rbm2(2,nspmd+1) = iad_rbm2(2,nspmd+1) + iad_rbm2(2,p)
1172 iad_rbm2(3,nspmd+1) = iad_rbm2(3,nspmd+1) + iad_rbm2(3,p)
1173 iad_rbm2(4,nspmd+1) = iad_rbm2(4,nspmd+1) + iad_rbm2(4,p)
1181 IF(nbddrbe3m>0)
THEN
1184 ideb = iad_elem(1,p)
1185 ifin = iad_elem(1,p+1)-1
1188 IF(itabrbe3m(dd_elem(i))>0)
THEN
1189 dd_rbe3m(n) = dd_elem(i)
1190 dp_rbe3m(n) = itabrbe3m(dd_elem(i))
1195 iad_rbe3m(nspmd+1) = n
1196 if(n-1/=nbddrbe3m)
then
1197 print*,
'error decomp RBE3',n-1,nbddrbe3m
1209 ideb = iad_elem(1,p)
1210 ifin = iad_elem(1,p+1)-1
1213 IF(itabrbe2m(dd_elem(i))>0)
THEN
1214 dd_rbe2(n) = itabrbe2m(dd_elem(i))
1219 iad_rbe2(nspmd+1) = n
1220 if(n-1/=nbddrbe2)
then
1221 print*,
'error decomp RBE2',n-1,nbddrbe2
1233 ideb = iad_elem(1,p)
1234 ifin = iad_elem(1,p+1)-1
1237 IF(itabcndm(dd_elem(i))>0)
THEN
1238 dd_cndm(n) = dd_elem(i)
1244 iad_cndm(nspmd+1) = n
1245 if(n-1/=nbddcndm)
then
1246 print*,
'error decomp Itet2 of S10',n-1,nbddcndm
1254 IF (nsect>0) k0=nstrf(25)
1259 IF(isecut*isp0==1)
THEN
1270 ifram = nstrf(k0+26)
1271 k2 = k0+30+nstrf(k0+14)
1272 IF (ifram<=10.OR.n1/=0)
THEN
1275 IF (nlocal(n1,p)==1)
THEN
1276 dd_sec(p,i) = dd_sec(p,i) + 1
1284 IF (nlocal(n2,p)==1)
THEN
1285 dd_sec(p,i) = dd_sec(p,i) + 1
1293 IF (nlocal(n3,p)==1)
THEN
1294 dd_sec(p,i) = dd_sec(p,i) + 1
1301 IF(mod(ifram,10)==1.OR.mod(ifram,10)==2)
THEN
1307 IF (nlocal(nstrf(k2+nn-1),p)==1)
THEN
1315 dd_sec(p,i) = dd_sec(p,i) + secvu(p)
1322 IF (nlocal(nstrf(k2+nn-1),proc)==1)
THEN
1334 IF(nlocal(k,p)==1)
THEN
1336 dd_cut(nnt_l+nn_l) = nn
1339 nnt_l = nnt_l + nn_l
1341 iad_cut(nspmd+1,i) = iad_cut(nspmd+1,i)+nn_l
1344 iad_cut(nspmd+2,i) = nnod
1353 IF(dd_sec(p,i)>imax)
THEN
1358 dd_sec(nspmd+1,i) = pmain
1369 pmain = dd_sec(nspmd+1,i)
1370 IF(proc==pmain)
THEN
1373 iad_sec(2,p) = iad_sec(2,p
1377 iad_sec(1,pmain) = iad_sec(1,pmain) + dd_sec(proc,i)
1390 ifram = nstrf(ip+27)
1391 nnod_s = nstrf(ip+7)
1392 nsels_s = nstrf(ip+8)
1393 nselq_s = nstrf(ip+9)
1394 nselc_s = nstrf(ip+10)
1395 nselt_s = nstrf(ip+11)
1396 nselp_s = nstrf(ip+12)
1397 nselr_s = nstrf(ip+13)
1398 nseltg_s= nstrf(ip+14)
1399 nsint_s = nstrf(ip+15)
1400 ip = ip + 30 + nsint_s + nnod_s
1402 pmain = dd_sec(nspmd+1,i)
1404 dd_p(pmain) = dd_p(pmain) + 1
1405 IF(proc==pmain)
THEN
1412 k = nstrf(ip + j*2 - 1)
1413 IF(cep(k+off)+1==p) imax = 1
1415 IF(imax==1)
GO TO 3000
1419 k = nstrf(ip + j*2 - 1)
1420 IF(cep(k+off)+1==p) imax = 1
1422 IF(imax==1)
GO TO 3000
1427 k = nstrf(ip + j*2 - 1)
1428 IF(cep(k+off)+1==p) imax = 1
1430 IF(imax==1)
GO TO 3000
1434 k = nstrf(ip + j*2 - 1)
1435 IF(cep(k+off)+1==p) imax = 1
1437 IF(imax==1)
GO TO 3000
1441 k = nstrf(ip + j*2 - 1)
1442 IF(cep(k+off)+1==p) imax
1444 IF(imax==1)
GO TO 3000
1448 k = nstrf(ip + j*2 - 1)
1449 IF(cep(k+off)+1==p) imax = 1
1451 IF(imax==1)
GO TO 3000
1455 k = nstrf(ip + j*2 - 1)
1456 IF(cep(k+off)+1==p) imax = 1
1458 ip = ip + 2*nseltg_s
1462 IF(imax==1.OR.isecut==1)
THEN
1464 iad_sec(3,p) = iad_sec(3,p) + 1
1474 IF(cep(k+off)+1==proc) imax = 1
1476 IF(imax==1)
GO TO 4000
1480 k = nstrf(ip + j*2 - 1)
1481 IF(cep(k+off)+1==proc) imax = 1
1483 IF(imax==1)
GO TO 4000
1487 k = nstrf(ip + j*2 - 1)
1488 IF(cep(k+off)+1==proc) imax = 1
1490 IF(imax==1)
GO TO 4000
1494 k = nstrf(ip + j*2 - 1)
1495 IF(cep(k+off)+1==proc) imax = 1
1497 IF(imax==1)
GO TO 4000
1501 k = nstrf(ip + j*2 - 1)
1502 IF(cep(k+off)+1==proc) imax = 1
1504 IF(imax==1)
GO TO 4000
1508 k = nstrf(ip + j*2 - 1)
1509 IF(cep(k+off)+1==proc) imax = 1
1511 IF(imax==1)
GO TO 4000
1515 k = nstrf(ip + j*2 - 1)
1516 IF(cep(k+off)+1==proc) imax = 1
1518 ip = ip + 2*nseltg_s
1521 IF(imax==1.OR.isecut==1)
THEN
1522 iad_sec(4,pmain) = iad_sec(4,pmain) + 1
1526 ip = ip0 + 2*(nsels_s+nselq_s+nselc_s+
1527 + nselt_s+nselp_s+nselr_s+nseltg_s)
1531 IF(iad_sec(3,p)/=0)
THEN
1532 iad_sec(3,p) = dd_p(proc)
1534 IF(iad_sec(4,p)/=0)
THEN
1535 iad_sec(4,p) = dd_p(p)
1540 iad_sec(1,nspmd+1) = iad_sec(1,nspmd+1) + iad_sec(1,p)
1541 iad_sec(2,nspmd+1) = iad_sec(2,nspmd+1) + iad_sec(2,p)
1542 iad_sec(3,nspmd+1) = iad_sec(3,nspmd+1) + iad_sec(3,p)
1543 iad_sec(4,nspmd+1) = iad_sec(4,nspmd+1) + iad_sec(4,p)
1557 dd_mad(5,nspmd+1) = nconx
1564 ideb = 1 + 7*nconx + nmadprt
1565 eshift = numels+numelq
1568 k = iexmad(ideb+i-1)
1569 IF(cep(k+eshift)==p-1)
THEN
1573 dd_mad(1,p) = nmad_l
1577 ideb = ideb + nmadsh4
1578 eshift = numels+numelq+numelc+numelt+numelp+numelr
1581 k = iexmad(ideb+i-1)
1582 IF(cep(k+eshift)==p-1)
THEN
1586 dd_mad(2,p) = nmad_l
1590 ideb = ideb + nmadsh3
1594 k = iexmad(ideb+i-1)
1595 IF(cep(k+eshift)==p-1)
THEN
1599 dd_mad(3,p) = nmad_l
1603 ideb = ideb + nmadsol
1606 k = iexmad(ideb+i-1)
1607 IF(nlocal(k,p)==1)
THEN
1609 IF(nlocal(k,pp)==1)
GOTO 888
1615 dd_mad(4,p) = nmad_l
1617 dd_mad(1,nspmd+1) = nmadsh4
1619 dd_mad(3,nspmd+1) = nmadsol
1620 dd_mad(4,nspmd+1) = nmadnod
1631 IF(iale+ieuler+itherm+ialelag/=0)
THEN
1672 IF(iparg(32,ng)+1==proc)
THEN
1677 isolnod = iparg(28,ng)
1684 iad1 = ale_connectivity%ee_connect%iad_connect(ie)
1685 lgth = ale_connectivity%ee_connect%iad_connect(ie+1)-ale_connectivity%ee_connect%iad_connect(ie)
1687 iv = ale_connectivity%ee_connect%connected(iad1 + j - 1)
1690 IF(proc2/=proc)
THEN
1691 IF(tage(iv)==0)
THEN
1694 cpulocaler(ii)=proc2
1696 lercvois(ii) = numels_l+ii
1698 nercvois(proc2) = nercvois(proc2)+1
1700 IF(tage_l(proc2,ie_loc)==0)
THEN
1703 cpulocales(jj)=proc2
1704 lesdvois(jj) = ie_loc
1705 tage_l(proc2,ie_loc)=proc2
1706 nesdvois(proc2) = nesdvois(proc2)+1
1709 ELSEIF(proc/=1.AND.iv<0)
THEN
1711 IF(tags(1,-iv)==0)
THEN
1716 npsegcom(1) = npsegcom(1)+1
1726 iad1 = ale_connectivity%ee_connect%iad_connect(ie)
1727 lgth = ale_connectivity%ee_connect%iad_connect(ie+1)-ale_connectivity%ee_connect%iad_connect(ie)
1730 iv = ale_connectivity%ee_connect%connected(iad1 + j - 1)
1733 IF(proc2/=proc)
THEN
1737 cpulocaler(ii)=proc2
1739 lercvois(ii) = numelq_l+ii
1741 nercvois(proc2) = nercvois(proc2)+1
1743 IF(tage_l(proc2,ie_loc)==0)
THEN
1746 cpulocales(jj)=proc2
1747 lesdvois(jj) = ie_loc
1748 tage_l(proc2,ie_loc)=proc2
1749 nesdvois(proc2) = nesdvois(proc2)+1
1756 ELSEIF(ity==7 .AND. (n2d /= 0 .AND. multi_fvm%IS_USED))
THEN
1760 iad1 = ale_connectivity%ee_connect%iad_connect(ie)
1761 lgth = ale_connectivity%ee_connect%iad_connect(ie+1)-ale_connectivity%ee_connect%iad_connect(ie)
1764 iv = ale_connectivity%ee_connect%connected(iad1 + j - 1)
1767 IF(proc2/=proc)
THEN
1768 IF(tage(iv)==0)
THEN
1771 cpulocaler(ii)=proc2
1773 lercvois(ii) = numeltg_l+ii
1775 nercvois(proc2) = nercvois(proc2)+1
1777 IF(tage_l(proc2,ie_loc)==0)
THEN
1780 cpulocales(jj)=proc2
1781 lesdvois(jj) = ie_loc
1782 tage_l(proc2,ie_loc)=proc2
1783 nesdvois(proc2) = nesdvois(proc2)+1
1791 ELSEIF(segindx>0.AND.proc==1)
THEN
1798 isolnod = iparg(28,ng)
1804 iad1 = ale_connectivity%ee_connect%iad_connect(ie)
1805 lgth = ale_connectivity%ee_connect%iad_connect(ie+1)-ale_connectivity%ee_connect%iad_connect(ie)
1807 iv = ale_connectivity%ee_connect%connected(iad1 + j
1810 IF(tags(p,-iv)==0)
THEN
1815 npsegcom(p) = npsegcom(p)+1
1833 IF ( (nodlocal(ns)/=0) .AND. (nodlocal(ns)<=numnod_l) )
THEN
1834 iad1 = ale_connectivity%ee_connect%iad_connect(i)
1835 lgth = ale_connectivity%ee_connect%iad_connect(i+1)-ale_connectivity%ee_connect%iad_connect
1837 ie = ale_connectivity%ee_connect%connected(iad1 + k - 1)
1842 IF ( (nodlocal(n)==0).OR.(nodlocal(n)>numnod_l) )
THEN
1849 IF(iad <= 0) psearch = .false.
1855 cpulocalr(nr_l) = proc2
1856 nbrcvois(proc2) = nbrcvois(proc2)+1
1859 IF(
ifront%P(2,iad)==0) psearch = .false.
1871 DO ijk=1,size_ale_elm
1872 i = ale_elm%SOL_ID(ijk)
1873 iad1 = ale_connectivity%ee_connect%iad_connect(i)
1874 lgth = ale_connectivity%ee_connect%iad_connect(i+1)-ale_connectivity%ee_connect%iad_connect(i)
1878 solv = ale_connectivity%ee_connect%connected(iad1 + k - 1)
1882 IF ( (nodlocal(n)/=0).AND.(nodlocal
THEN
1883 IF(
ifront%IENTRY(n) /=0)
THEN
1889 IF(iad <= 0) psearch = .false.
1893 IF(tag_l(p,nodlocal(n))==0)
THEN
1894 IF(nlocal(n,p)==0)
THEN
1898 nbsdvois(p) = nbsdvois(p)+1
1899 tag_l(p,nodlocal(n)) = 1
1903 IF(
ifront%P(2,iad)==0) psearch = .false.
1914 iad1 = ale_connectivity%ee_connect%iad_connect(i)
1915 lgth = ale_connectivity%ee_connect%iad_connect(i+1)-ale_connectivity%ee_connect%iad_connect(i)
1918 IF ( (nodlocal(ns)/=0).AND.(nodlocal(ns)<=numnod_l) )
THEN
1920 ie = ale_connectivity%ee_connect%connected(iad1 + k - 1)
1925 IF ( (nodlocal(n)==0).OR.(nodlocal(n)>numnod_l) )
THEN
1930 IF(proc2/=proc)
THEN
1931 IF(nlocal(n,proc2)==1)
THEN
1932 cpulocalr(nr_l) = proc2
1933 nbrcvois(proc2) = nbrcvois(proc2)+1
1950 solv = ale_connectivity%ee_connect%connected(iad1 + k - 1)
1954 IF ( (nodlocal(n)/=0).AND.(nodlocal(n)<=numnod_l) )
THEN
1955 DO proc2 = 1, proc-1
1956 IF(nlocal(n,proc2)==1)
GOTO 1112
1960 IF(tag_l(p,nodlocal(n))==0)
THEN
1961 IF(nlocal(ns,p)==1)
THEN
1962 IF(nlocal(n,p)==0)
THEN
1966 nbsdvois(p) = nbsdvois(p)+1
1967 tag_l(p,nodlocal(n)) = 1
1981 IF (n2d /= 0 .AND. multi_fvm%IS_USED)
THEN
1983 iad1 = ale_connectivity%ee_connect%iad_connect(i)
1984 lgth = ale_connectivity%ee_connect%iad_connect(i+1)-ale_connectivity%ee_connect%iad_connect(i)
1987 IF ( (nodlocal(ns)/=0).AND.(nodlocal(ns)<=numnod_l) )
THEN
1989 ie = ale_connectivity%ee_connect%connected(iad1 + k - 1)
1994 IF ( (nodlocal(n)==0).OR.(nodlocal(n)>numnod_l) )
THEN
1999 IF(proc2/=proc)
THEN
2000 IF(nlocal(n,proc2)==1)
THEN
2001 cpulocalr(nr_l) = proc2
2002 nbrcvois(proc2) = nbrcvois(proc2)+1
2019 solv = ale_connectivity%ee_connect%connected(iad1 + k - 1)
2023 IF ( (nodlocal(n)/=0).AND.(nodlocal(n)<=numnod_l) )
THEN
2024 DO proc2 = 1, proc-1
2025 IF(nlocal(n,proc2)==1)
GOTO 1113
2029 IF(tag_l(p,nodlocal(n))==0)
THEN
2030 IF(nlocal(ns,p)==1)
THEN
2031 IF(nlocal(n,p)==0)
THEN
2035 nbsdvois(p) = nbsdvois(p)+1
2036 tag_l(p,nodlocal(n)) = 1
2053 if(nr_l/=nrcvvois)print*,
'error cfd node boundaries:',nr_l,
2056 itri4(1,i) = cpulocalr(i)
2057 itri4(2,i) = lnrcvois(i)
2059 CALL my_orders(0,work,itri4,index4,nrcvvois,2)
2062 lnrcvois(i) = nodlocal(itri4(2,index4(i)))
2067 if(ns_l/=nsndvois)print*,
'error cfd node boundaries :',ns_l,
2070 itri4(1,i) = cpulocals(i)
2071 itri4(2,i) = lnsdvois(i)
2073 CALL my_orders(0,work,itri4,index4,nsndvois,2)
2076 lnsdvois(i) = nodlocal(itri4(2,index4(i)))
2082 if(ii/=nervois)print*,
'error cfd elem boundaries:',ii,
2085 itri4(1,i) = cpulocaler(i)
2086 itri4(2,i) = tager(i)
2088 CALL my_orders(0,work,itri4,index4,nervois,2)
2090 itri4(2,i) = lercvois(i)
2093 lercvois(i) = itri4(2,index4(i))
2098 if(jj/=nesvois)print*,
'error cfd elem boundaries :',jj,
2101 itri4(1,i) = cpulocales(i)
2102 itri4(2,i) = tages(i)
2104 CALL my_orders(0,work,itri4,index4,nesvois,2)
2106 itri4(2,i) = lesdvois(i)
2109 lesdvois(i) = itri4(2,index4(i))
2114 if(nf_l/=nsegfl_l)print*,
'error cfd segment boundaries:',nf_l,
2117 itri4(1,i) = cpulocalf(i)
2118 itri4(2,i) = lsegcom(i)
2120 CALL my_orders(0,work,itri4,index4,nsegfl_l,2)
2123 lsegcom(i) = itri4(2,index4(i))
2127 npsegcom(nspmd+1)=npsegcom(nspmd+1)+npsegcom(p)
2128 nbrcvois(nspmd+1)=nbrcvois(nspmd+1)+nbrcvois(p)
2129 nbsdvois(nspmd+1)=nbsdvois(nspmd+1)+nbsdvois(p)
2130 nercvois(nspmd+1)=nercvois(nspmd+1)+nercvois(p)
2131 nesdvois(nspmd+1)=nesdvois(nspmd+1)+nesdvois(p)
2141 IF(int(geo(12,ig))==15)
THEN
2147 IF ( nodlocal(nn)/=0.AND.nodlocal(nn)<=numnod_l )
THEN
2149 lnodpor(nad_l+nn_l)=j-nad
2167 inacti = ipari(22,n)
2168 IF((ity==7.OR.ity==22).AND.inacti==7)
THEN
2177 n1 = intbuf_tab(n)%IRECTM(4*(k-1)+1)
2178 n2 = intbuf_tab(n)%IRECTM(4*(k-1)+2)
2179 n3 = intbuf_tab(n)%IRECTM(4*(k-1)+3)
2180 n4 = intbuf_tab(n)%IRECTM(4*(k-1)+4)
2182 IF(nlocal(n1,p)==1)
THEN
2183 IF(nlocal(n2,p)==1)
THEN
2184 IF(nlocal(n3,p)==1)
THEN
2185 IF(nlocal(n4,p)==1)
THEN
2186 dd_i18(p,nn) = dd_i18(p,nn) + 1
2196 dd_i18(nspmd+1,nn) = nrtm
2200 IF(dd_i18(p,nn)>dd_i18(pmain,nn))
THEN
2204 dd_i18(nspmd+2,nn) = pmain
2209 IF ((nr2rlnk>0).AND.(nsubdom==0))
THEN
2212 nng = igrnod(nn)%NENTITY
2216 dd_r2r(nspmd+1,n) = nng
2218 nod = igrnod(nn)%ENTITY(i)
2220 IF(nlocal(nod,p)==1)
THEN
2221 dd_r2r(p,n) = dd_r2r(p,n) + 1
2233 dd_lagf(1,nspmd+1) = dd_lagf(1,nspmd+1)+dd_lagf(1,p)
2234 dd_lagf(2,nspmd+1) = dd_lagf(2,nspmd+1)+dd_lagf(2,p)
2254 IF(nlocal(n,p)==1)
THEN
2255 dd_lagf(3,p) = dd_lagf(3,p) + 1
2257 llagf(dd_lagf(3,p)) = nodlocal(n)
2266 IF(dd_lagf(3,proc)/=nlagf_l)print*,
2267 +
'error : wrong lag mult decomposition !'
2269 dd_lagf(3,nspmd+1) = dd_lagf(3,nspmd+1)+dd_lagf(3,p)
2274 IF(icrack3d > 0)
THEN
2283 IF(nbddedge_l > 0)
THEN
2284 ALLOCATE(tag_ied_fr0(2,nbddedge_l))
2287 ALLOCATE(tag_ied_fr0(0,0))
2292 DO ied_gl=1,numedges
2294 IF(iedge_tmp(3,ied_gl) < 0)
THEN
2295 n1 = nodedge(1,ied_gl)
2296 n2 = nodedge(2,ied_gl)
2297 IF((nlocal(n1,proc)==1).AND.
2298 . (nlocal(n2,proc)==1))
THEN
2300 IF((nlocal(n1,p)==1).AND.
2301 . (nlocal(n2,p)==1))
THEN
2304 tag_ied_fr0(1,ied_fr) = ied_gl
2305 tag_ied_fr0(2,ied_fr) = p
2306 fr_nbedge(p) = fr_nbedge(p) + 1
2318 IF(nb_fredge > 0)
THEN
2319 ALLOCATE(fr_edge(nb_fredge))
2322 ALLOCATE(fr_edge(0))
2325 IF(nb_fredge == 0)
GOTO 113
2330 IF(tag_ied_fr0(2,i) == p)
THEN
2331 ied_gl = tag_ied_fr0(1,i)
2334 fr_edge(ied_fr) = edgelocal(ied_gl)
2348 iad_edge(i+1)=iad_edge(i)+fr_nbedge(i)
2352 fr_nbedge(nspmd+1) = fr_nbedge(nspmd+1) + fr_nbedge(p)
2357 IF(
ALLOCATED(tag_ied_fr0))
DEALLOCATE(tag_ied_fr0)
2381 ALLOCATE(tag_sm(nadmsr),tag_ms(nadmsr))
2386 IF(intercep(1,ni)%P(k)==proc)
THEN
2387 n1 = intbuf_tab(ni)%ADMSR(4*(k-1)+1)
2388 n2 = intbuf_tab(ni)%ADMSR(4*(k-1)+2)
2389 n3 = intbuf_tab(ni)%ADMSR(4*(k-1)+3)
2390 n4 = intbuf_tab(ni)%ADMSR(4*(k-1)+4)
2391 IF(tag_sm(n1)==0)
THEN
2395 IF(tag_sm(n2)==0)
THEN
2399 IF(tag_sm(n3)==0)
THEN
2403 IF(tag_sm(n4)==0)
THEN
2419 n = tag_ms(i) + ishift
2423 DO j = addcsrect(n), addcsrect(n+1)-1
2425 p = intercep(1,ni)%P(k)
2426 IF(p /= proc.AND.tagp(p)==0)
THEN
2427 nbddnor = nbddnor + 1
2428 fr_nor(lshift+nbddnor) = tag_ms(i)
2429 proc_rem25(nbddnor) = p
2432 lcsrect_l = lcsrect_l + 1
2433 procnor(lcsrect_l)=p
2436 addcsrect_l(nl+1)=addcsrect_l(nl)+nb
2441 itri25(1,i) = proc_rem25(i)
2442 itri25(2,i) = fr_nor(lshift+i)
2446 CALL my_orders(0,work,itri25,index25,nbddnor,3)
2448 proc_rem25(i)= itri25(1,index25(i))
2449 fr_nor(lshift+i) = tag_sm(itri25(2,index25(i)))
2457 isom(p) = isom(p) + 1
2459 iad_frnor(ni25,1) = lshift + 1
2461 iad_frnor(ni25,p+1) = iad_frnor(ni25,p) + isom(p)
2464 DEALLOCATE(tag_sm,tag_ms)
2466 ishift=ishift+nadmsr
2467 lshift=lshift+nbddnor
2470 addcsrect_l(1:numnor_l+1)=0
2487 ALLOCATE(tag_sm(nrtm),tag_ms(nrtm))
2492 IF(intercep(1,ni)%P(k)==proc)
THEN
2508 k = intbuf_tab(ni)%MVOISIN(4*(n-1)+j)
2510 p = intercep(1,ni)%P(k)
2512 nbddedg = nbddedg + 1
2513 fr_sav(1,nbddedg) = i
2514 fr_sav(2,nbddedg) = j
2515 proc_rem25(nbddedg) = p
2517 itri25_normal(1,nbddedg) = p
2518 n1=intbuf_tab(ni)%ADMSR(4*(n-1)+j)
2519 n2=intbuf_tab(ni)%ADMSR(4*(n-1)+mod(j,4)+1)
2525 itri25_normal(2,nbddedg) =
min(k,n)
2526 itri25_normal(3,nbddedg) =
max(k,n)
2527 itri25_normal(4,nbddedg) =
min(n1,n2)
2528 itri25_normal(5,nbddedg) =
max(n1,n2)
2537 CALL my_orders(0,work,itri25_normal,index25,nbddedg,5)
2539 proc_rem25(i) = itri25_normal(1,index25(i))
2540 fr_edg(1,lshift+i) = fr_sav(1,index25(i))
2541 fr_edg(2,lshift+i) = fr_sav(2,index25(i))
2549 isom(p) = isom(p) + 1
2551 iad_fredg(ni25,1) = lshift + 1
2553 iad_fredg(ni25,p+1) = iad_fredg(ni25,p) + isom(p)
2556 DEALLOCATE(tag_sm,tag_ms)
2558 lshift=lshift+nbddedg
2568 len_ia = len_ia + nvolu*(nspmd+2)
2570 len_ia = len_ia + 2*(nspmd+1)
2572 len_ia = len_ia + nspmd+1
2574 len_ia = len_ia + 4*(nspmd+1)
2576 len_ia = len_ia + nspmd+1
2578 len_ia = len_ia + nspmd+1
2580 len_ia = len_ia + nspmd+1
2582 len_ia = len_ia + 4*(nspmd+1)
2585 len_ia = len_ia + nspmd+1
2587 len_ia = len_ia + nspmd+1
2589 len_ia = len_ia + 4*(nspmd+1)
2590 CALL write_i_c(iad_cut,isecut*isp0*nsect*(nspmd+2))
2591 len_ia = len_ia + isecut*isp0*nsect*(nspmd+2)
2594 len_ia = len_ia + nspmd+1
2596 len_ia = len_ia + 4*(nspmd+1)
2599 len_ia = len_ia + nbddacc+nbddkin
2601 len_ia = len_ia + nbddnrb
2602 CALL write_i_c(dd_wall,nrwall*(nspmd+2))
2603 len_ia = len_ia + nrwall*(nspmd+2)
2605 len_ia = len_ia + 3*nrbykin
2607 len_ia = len_ia + nbddi2m
2609 len_ia = len_ia + nlink*(nspmd+2)
2611 len_ia = len_ia + nbddncj
2613 len_ia = len_ia + nbddnrbm
2615 len_ia = len_ia + 3*nibvel
2618 len_ia = len_ia + nbddrbe2
2620 len_ia = len_ia + nbddrbe3m
2622 len_ia = len_ia + nbddrbe3m
2624 len_ia = len_ia + (nspmd+1)*nsect
2626 len_ia = len_ia + nnodt_l
2628 len_ia = len_ia + nnodl_l
2630 len_ia = len_ia + 5*(nspmd+1)
2631 CALL write_i_c(dd_i18,(nspmd+2)*nbi18_l)
2632 len_ia = len_ia + (nspmd+2)*nbi18_l
2633 CALL write_i_c(dd_r2r,(nspmd+1)*nl_ddr2r)
2634 len_ia = len_ia + (nspmd+1)*nl_ddr2r
2635 IF(sdd_r2r_elem > 0)
THEN
2636 CALL write_i_c(dd_r2r_elem,sdd_r2r_elem)
2637 len_ia = len_ia + sdd_r2r_elem
2641 len_ia = len_ia + nbddnrbym
2643 len_ia = len_ia + 3*nrbym
2646 len_ia = len_ia + numnor_l+1
2648 len_ia = len_ia + nbddnort
2649 CALL write_i_c(iad_frnor,(nspmd+1)*ninter25)
2650 len_ia = len_ia + (nspmd+1)*ninter25
2651 if(lcsrect_l /= nbccnor) print *,
'internal error'
2653 len_ia = len_ia + lcsrect_l
2655 len_ia = len_ia + 2*nbddedgt
2656 CALL write_i_c(iad_fredg,(nspmd+1)*ninter25)
2657 len_ia = len_ia + (nspmd+1)*ninter25
2663 len_ia = len_ia + nspmd + numskw+1 + nskwp(proc)
2668 len_ia = len_ia + 2*nsensor + nspmd
2673 len_ia = len_ia +naccelm +nspmd
2678 len_ia = len_ia +nbgauge +nspmd
2682 len_ia = len_ia + 3*(nspmd+1)
2684 len_ia = len_ia + ninter
2688 IF(iale+ieuler+itherm+ialelag/=0)
THEN
2690 len_ia = len_ia + nspmd+1
2692 len_ia = len_ia + nrcvvois
2694 len_ia = len_ia + nspmd+1
2696 len_ia = len_ia + nsndvois
2698 len_ia = len_ia + nspmd+1
2700 len_ia = len_ia + nervois
2702 len_ia = len_ia + nspmd+1
2704 len_ia = len_ia + nesvois
2707 len_ia = len_ia + nspmd+1
2709 len_ia = len_ia + nsegfl_l
2713 len_ia = len_ia + numgeo
2715 len_ia = len_ia + numpor_l
2720 len_ia = len_ia + nlagf_l
2722 IF ((nsubdom>0).AND.(iddom==0))
THEN
2723 DEALLOCATE(dd_r2r_elem)
2726 IF(icrack3d > 0)
THEN
2728 len_ia = len_ia + nspmd+1
2730 len_ia = len_ia + nb_fredge
2732 len_ia = len_ia + nspmd+1
2733 IF(
ALLOCATED(fr_edge))
DEALLOCATE(fr_edge)
2737 len_ia = len_ia + nspmd+1
2739 len_ia = len_ia + nbddcndm
2741 DEALLOCATE( acckin )
2742 DEALLOCATE( addcsrect_l )
2743 DEALLOCATE( cpulocaler )!(nervois)
2744 DEALLOCATE( cpulocales )
2745 DEALLOCATE( cpulocalf )
2746 DEALLOCATE( cpulocalr )
2747 DEALLOCATE( cpulocals )
2749 DEALLOCATE( dd_cndm )
2750 DEALLOCATE( dd_cut )
2751 DEALLOCATE( dd_elem )
2752 DEALLOCATE( dd_i2m )
2754 DEALLOCATE( dd_rbe2 )
2755 DEALLOCATE( dd_rbe3m )
2756 DEALLOCATE( dd_rbm )
2757 DEALLOCATE( dd_rby )
2758 DEALLOCATE( dd_rbym )
2759 DEALLOCATE( dp_rbe3m )
2761 DEALLOCATE( fr_nor )
2762 DEALLOCATE( iad_cndm )
2763 DEALLOCATE( iad_i2m )
2764 DEALLOCATE( iad_rbe2 )
2765 DEALLOCATE( iad_rbe3 )
2766 DEALLOCATE( iad_rbe3m )
2767 DEALLOCATE( iad_rbm )
2768 DEALLOCATE( iad_rby )
2769 DEALLOCATE( iad_rbym )
2771 DEALLOCATE( index2 )
2772 DEALLOCATE( index3 )
2774 DEALLOCATE( index5 )
2776 DEALLOCATE( isom_r2r_r )
2777 DEALLOCATE( isom_r2r_s )
2778 DEALLOCATE( lercvois )
2779 DEALLOCATE( lesdvois )
2781 DEALLOCATE( lnodpor )
2782 DEALLOCATE( lnrcvois )
2783 DEALLOCATE( lnsdvois )
2784 DEALLOCATE( lsegcom )!(nsegfl_l)
2785 DEALLOCATE( nbrcvois )
2786 DEALLOCATE( nbsdvois )
2787 DEALLOCATE( nercvois )
2788 DEALLOCATE( nesdvois )
2789 DEALLOCATE( nporgeo )
2790 DEALLOCATE( npsegcom )
2791 DEALLOCATE( procnor )
2792 DEALLOCATE( proc_rem )
2793 DEALLOCATE( proc_rem1 )
2794 DEALLOCATE( rg_cut )
2797 DEALLOCATE( dd_i18 )
2799 DEALLOCATE( dd_mad )
2801 DEALLOCATE( dd_r2r )!(nspmd+1,nl_ddr2r)
2802 DEALLOCATE( dd_sec )
2803 DEALLOCATE( dd_wall )
2804 DEALLOCATE( fr_edg )
2805 DEALLOCATE( fr_sav )
2806 DEALLOCATE( iad_cj )
2807 DEALLOCATE( iad_cut )
2808 DEALLOCATE( iad_elem )
2809 DEALLOCATE( iad_fredg )
2810 DEALLOCATE( iad_frnor )
2811 DEALLOCATE( iad_rbm2 )
2812 DEALLOCATE( iad_rby2 )
2813 DEALLOCATE( iad_rbym2 )
2814 DEALLOCATE( iad_sec )
2815 DEALLOCATE( index25 )
2818 DEALLOCATE( itri25 )
2819 DEALLOCATE( itri25_normal )
2823 DEALLOCATE( proc_rem25 )
2828 DEALLOCATE( weight,tage )
2829 DEALLOCATE( newfront,tag )
2830 DEALLOCATE( tager,tages )
2832 DEALLOCATE( tage_l,tag_l )