35 1 ADDCNE ,CNE ,LCNE ,NUMNOD_L ,NODGLOB ,
36 2 LCNE_L ,CEP ,CEL ,IXS ,IXS10 ,
37 3 IXS20 ,IXS16 ,IXQ ,IXC ,IXT ,
38 4 IXP ,IXR ,IXTG ,MONVOL ,
39 5 IB ,GEO ,IGEO ,PROC ,
40 6 NUMELS_L ,NUMELS8_L,NUMELS10_L,NUMELS16_L,NUMELS20_L,
41 7 NUMELQ_L ,NUMELC_L ,NUMELT_L ,NUMELP_L ,NUMELR_L ,
42 8 NUMELTG_L,NSKYRW_L ,NPRW ,LPRW ,
43 9 NSKYRBK_L,NPBY ,LPBY ,DD_RBY2 ,
44 A I2NSNT ,I2NSN_L ,IPARI ,NIR ,
45 B LCNI2_L ,NISKYI2_L,CEPI2 ,CELI2 ,CNI2 ,
46 C ADDCNI2 ,NBDDI2M ,NCONLD_L ,IXTG6 ,NUMELTG6_L,
47 D NNMV_L ,NNMVC_L ,NSKYLL_L ,NNLINK ,LLLINK ,
48 E NSKYRBM_L,DD_RBM2 ,IBVEL ,LBVEL ,NBI18_L ,
49 F NSKYI18_L,LEN_IA ,NCONV_L ,IBCV ,NSKYRBE3_L,
50 G IRBE3 ,LRBE3 ,NSKYRBMK_L, IRBYM , LCRBYM ,
51 H FRONT_RM ,DD_RBYM2,IBCR ,NRADIA_L ,ADDCNE_PXFEM,
52 I CNE_PXFEM ,CEL_PXFEM ,LCNEPXFEM_L,INOD_PXFEM,IEL_PXFEM,
53 J NUMELCPXFEM_L,NUMNODPXFEM_L ,LLOADP ,ILOADP ,
54 K LLLOADP_L,ADDCNE_CRKXFEM,CNE_CRKXFEM,CEL_CRKXFEM,
55 L LCNECRKXFEM_L,INOD_CRKXFEM,IEL_CRKXFEM,NUMELCCRKXFE_L,
56 M NUMNODCRKXFE_L,NUMELTGCRKXFE_L,CEP_CRKXFEM,INOD_CRK_L,
57 N CRKNODIAD, INTBUF_TAB,NUMELIG3D_L,KXIG3D,IXIG3D,
58 O IBFFLUX ,NFXFLUX_L ,CEPCND ,CELCND ,ADDCNCND ,
59 P CNCND ,NS10E_L ,ICNDS10 ,LCNCND_L ,ITAGND ,IGRSURF,
60 Q IGRSURF_PROC ,LOCAL_NEBCS, EBCS_TAB_LOC_2,
61 R NUMBER_LOAD_CYL,LOADS,LOADS_PER_PROC,GLOB_THERM)
70 use get_fsky_address_mod ,
only : get_fsky_address
71 use element_mod ,
only : nixs,nixq,nixc,nixp,nixt,nixr,nixtg
75#include "implicit_f.inc"
76#include "tabsiz_c.inc"
83#include "com_xfem1.inc"
87 type (glob_therm_) ,
intent(in) :: glob_therm
88 INTEGER LCNE, NUMNOD_L, LCNE_L, PROC, I2NSNT, I2NSN_L, NIR,
89 . LCNI2_L, NISKYI2_L, NBDDI2M, NSKYLL_L, NBI18_L,NSKYI18_L,
90 . NUMELS_L ,NUMELS8_L ,NUMELS10_L,NUMELS16_L,NUMELS20_L,
91 . NUMELC_L ,NUMELT_L ,NUMELP_L ,NUMELR_L ,NUMELTG_L,
92 . numelq_l , nskyrw_l, nskyrbk_l, nconld_l,
93 . numeltg6_l, nnmv_l, nnmvc_l, nskyrbm_l,
94 . addcne(0:numnod+1), cne(*), nodglob(*), cep(*), cel(*),
95 . ixs(nixs,*),ixs10(6,*),ixs20(12,*),ixs16(8,*),
96 . ixq(nixq,*),ixc(nixc,*),ixt(nixt,*),ixp(nixp,*),
97 . ixr(nixr,*),ixtg(nixtg,*),ixtg6(4,*),
98 . ib(nibcld,*),monvol(*), nprw(*),
99 . lprw(*), npby(nnpby,*), lpby(*),
100 . dd_rby2(3,nrbykin), ipari(npari,*),
101 . cepi2(*), celi2(*), cni2(*), addcni2(0:numnod+1),
102 . nnlink(10,*), lllink(*),
103 . dd_rbm2(3,nibvel), ibvel(nbvelp,*), lbvel(*),len_ia,
104 . nconv_l ,ibcv(glob_therm%NICONV,*),nskyrbe3_l,
105 . irbe3(nrbe3l,*),lrbe3(*),nskyrbmk_l,
106 . irbym(nirbym,*) , lcrbym(*) ,front_rm(nrbym,*),
107 . dd_rbym2(3,nrbym), ibcr(glob_therm%NIRADIA,*), nradia_l,
108 . cne_pxfem(*),addcne_pxfem(0:nplyxfe + 1),cel_pxfem(*),
109 . numelcpxfem_l,numnodpxfem_l,inod_pxfem(*),iel_pxfem(*),
110 . lcnepxfem_l,lloadp(*),iloadp(sizloadp,*),llloadp_l,
111 . cne_crkxfem(*),addcne_crkxfem(0:ncrkxfe+1),
112 . cel_crkxfem(*),numelccrkxfe_l,numnodcrkxfe_l,
113 . inod_crkxfem(*),iel_crkxfem(*),lcnecrkxfem_l,
114 . numeltgcrkxfe_l,cep_crkxfem(*),inod_crk_l(*),
115 . crknodiad(*),numelig3d_l,kxig3d(nixig3d,*),ixig3d(*),
116 . cepcnd(*),celcnd(*),addcncnd(0:*),cncnd(*),ns10e_l,icnds10(3,*),
117 . lcncnd_l,itagnd(*),igeo(npropgi,*)
118 INTEGER NFXFLUX_L,IBFFLUX(GLOB_THERM%NITFLUX,*)
121 TYPE(INTBUF_STRUCT_) INTBUF_TAB(*)
122 TYPE (SURF_) ,
DIMENSION(NSURF) :: IGRSURF
124 TYPE(SURF_),
DIMENSION(NSURF,NSPMD),
INTENT(IN) :: IGRSURF_PROC
131! -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-*-*-*-*-*-*-*-*-*-*-*-*
132 INTEGER,
INTENT(IN) :: LOCAL_NEBCS
133 TYPE(T_EBCS_TAB),
INTENT(INOUT) ::
135 INTEGER,
INTENT(IN) :: NUMBER_LOAD_CYL
136 TYPE(LOADS_),
INTENT(IN) :: LOADS
137 TYPE(LOADS_),
INTENT(INOUT) :: LOADS_PER_PROC
146 INTEGER N, I, PROC_L, CC, CC_L, N1, N2, N3, N4,
147 . K, K0, K1, K6, NV, , JJ, INACTI,NG,NUMG0,
148 . is,nn,iad,j,ity,cload,numl,numg, ii,
main,j_l,ipvent,
149 . nsl, nsl_l, kk, p,k_ l, msr, pmain, nty, nrts,nl_l,n0,
150 . nrtm, nsn, nmn, k10, k11, k12, k13, k14, l, nsn_l, offtg,
151 . offc,ityp,nvent,iv,iadhol,kibhol,kibjet,k2,nnc,kad,nav,j0,
152 . nrtm_fe, nrts_fe, n_l
153 INTEGER :: IDEBRBK(NSPMD)
154 INTEGER :: PROCNE_PXFEM(LCNEPXFEM_L)
155 INTEGER :: IADC_PXFEM(4,NUMELCPXFEM_L)
156 INTEGER :: ADDCNEPXFEM_L(NUMNODPXFEM_L+1)
157 INTEGER :: PROCNE_CRKXFEM(LCNECRKXFEM_L)
158 INTEGER :: ADDCNECRKXFEM_L(NUMNODCRKXFE_L+1)
159 INTEGER :: IADC_CRKXFEM(4,NUMELCCRKXFE_L)
160 INTEGER :: CNE_CRKXFEM_L(LCNECRKXFEM_L)
161 INTEGER :: IADTG_CRKXFEM(3,NUMELTGCRKXFE_L)
162 INTEGER :: CEL_CRKXFEM_L(LCNECRKXFEM_L)
163 INTEGER :: CRKNODIAD_L(LCNECRKXFEM_L)
165 INTEGER,
ALLOCATABLE :: PROCNE(:)
166 INTEGER,
ALLOCATABLE :: ITAGIB(:)
167 INTEGER,
ALLOCATABLE :: IADMV(:,:)
168 INTEGER,
ALLOCATABLE :: IADMV2(:)
169 INTEGER,
ALLOCATABLE :: IADMV3(:)
170 INTEGER,
ALLOCATABLE :: IADWAL(:)
171 INTEGER,
ALLOCATABLE :: IADRBK(:)
172 INTEGER,
ALLOCATABLE :: IADI2(:,:)
173 INTEGER,
ALLOCATABLE :: I2TMP(:,:)
174 INTEGER,
ALLOCATABLE :: IADLL(:)
175 INTEGER,
ALLOCATABLE :: PROCNI2(:)
176 INTEGER,
ALLOCATABLE :: IADRBM(:)
177 INTEGER,
ALLOCATABLE :: IADI18(:)
178 INTEGER,
ALLOCATABLE :: IADIBCV(:,:)
179 INTEGER,
ALLOCATABLE :: IADIBFX(:,:)
180 INTEGER,
ALLOCATABLE :: IADRBMK(:)
181 INTEGER,
ALLOCATABLE :: IADIBCR(:,:)
182 INTEGER,
ALLOCATABLE :: ITAGLOADP(:)
183 INTEGER,
ALLOCATABLE :: IADLOAD(:,:)
184 INTEGER,
ALLOCATABLE :: ICNDTMP(:,:)
185 INTEGER,
ALLOCATABLE :: PROCNCND(:)
186 INTEGER,
ALLOCATABLE :: IADCND(:,:)
189 INTEGER IUN,EMPL,COORD,SHFT,TESTVAL,KD(50),KFI
190 INTEGER,
DIMENSION(:),
ALLOCATABLE :: SOLTAG,SOL10TAG,
191 . SOL20TAG,SOL16TAG,QUADTAG,SHTAG,TTAG,PTAG,RTAG,TGTAG,TG6TAG,
192 . ibtag,ibcvtag,ibcrtag,ibfxtag,iltag,tagig3d
193 INTEGER,
DIMENSION(:),
ALLOCATABLE :: ITAGC, ITAGTG,ADDCNE_L,ADDCNI2_L,
195 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: IADS,IADS10,
196 . iads16,iads20,iadq,iadc,iadt,
197 . iadp,iadr,iadtg,iadib,
199 TYPE(ebcs_parith_on),
DIMENSION(:),
ALLOCATABLE :: EBCS_PARITHON_L
200 LOGICAL,
DIMENSION(:),
ALLOCATABLE :: EBCS_TAG
201 INTEGER :: LOCAL_NODE_ID,ELEM_ID,NUMG_SAVE
204 INTEGER :: GLOBAL_SEGMENT_ID
205 INTEGER :: LOCAL_PROC_ID
206 INTEGER :: LOCAL_SEGMENT_ID
207 INTEGER :: GLOBAL_LOAD_ID,LOCAL_LOAD_ID
210 integer,
parameter :: nixs10 = 6
211 integer,
parameter :: nixs20 = 12
212 integer,
parameter :: nixs16 = 8
214 integer :: solid_offset,tetra10_offset,hexa20_offset
215 integer :: solid16_offset,quad_offset,shell_offset
216 integer :: truss_offset,beam_offset,spring_offset
217 integer :: triangle_offset,low_triangle6_offset,bc_offset
218 integer :: thermal_conv_offset,thermal_rad_offset,thermal_flux_offset
219 integer :: load_offset,ig3d_offset,,last_offset
221 integer,
parameter :: s_iads = 8
222 integer,
parameter :: s_iads10 = 6
223 integer,
parameter :: s_iads16 = 8
224 integer,
parameter :: s_iads20 = 12
225 integer,
parameter :: s_iadq = 4
226 integer,
parameter :: s_iadc = 4
227 integer,
parameter :: s_iadt = 2
228 integer,
parameter :: s_iadp = 2
229 integer,
parameter :: s_iadr = 3
230 integer,
parameter :: s_iadtg = 3
231 integer,
parameter :: s_iadib = 4
232 integer,
parameter :: s_iadtg1 = 3
233 integer,
parameter :: s_iadig3d = 100
234 integer,
parameter :: s_iadload = 4
235 integer,
parameter :: s_iadibcv = 4
236 integer,
parameter :: s_iadibfx = 4
237 integer,
parameter :: s_iadibcr = 4
240 logical,
parameter :: ref = .false.
243 ALLOCATE(procne(lcne_l))
244 ALLOCATE(itagib(nconld))
245 ALLOCATE(iadmv(4, nnmv_l))
246 ALLOCATE(iadmv2(nnmv_l))
247 ALLOCATE(iadmv3(nnmvc_l))
248 ALLOCATE(iadwal(nskyrw_l))
249 ALLOCATE(iadrbk(nskyrbk_l))
250 ALLOCATE(iadi2(nir, i2nsn_l))
251 ALLOCATE(i2tmp(nir, i2nsn_l))
252 ALLOCATE(iadll(nskyll_l))
253 ALLOCATE(procni2(lcni2_l))
254 ALLOCATE(iadrbm(nskyrbm_l))
255 ALLOCATE(iadi18(nskyi18_l))
256 ALLOCATE(iadibcv(4, nconv_l))
257 ALLOCATE(iadibfx(4, nfxflux_l))
258 ALLOCATE(iadrbmk(nskyrbmk_l))
259 ALLOCATE(iadibcr(4, nradia_l))
260 ALLOCATE(itagloadp(slloadp))
261 ALLOCATE(iadload(4, llloadp_l))
262 ALLOCATE(icndtmp(3, ns10e_l))
263 ALLOCATE(procncnd(lcncnd_l))
264 ALLOCATE(iadcnd(2, ns10e_l))
267 ALLOCATE(soltag(numels))
270 ALLOCATE(sol10tag(numels10))
271 sol10tag(1:numels10)=0
273 ALLOCATE(sol20tag(numels20))
274 sol20tag(1:numels20)=0
276 ALLOCATE(sol16tag(numels16))
277 sol16tag(1:numels16)=0
279 ALLOCATE(quadtag(numelq))
282 ALLOCATE(shtag(numelc))
285 ALLOCATE(ttag(numelt))
288 ALLOCATE(ptag(numelp))
291 ALLOCATE(rtag(numelr))
294 ALLOCATE(tgtag(numeltg))
297 ALLOCATE(tg6tag(numeltg6))
300 ALLOCATE(ibtag(nconld))
303 ALLOCATE(ibcvtag(glob_therm%NUMCONV))
304 ibcvtag(1:glob_therm%NUMCONV)=0
306 ALLOCATE(ibcrtag(glob_therm%NUMRADIA))
307 ibcrtag(1:glob_therm%NUMRADIA)=0
309 ALLOCATE(ibfxtag(glob_therm%NFXFLUX))
310 ibfxtag(1:glob_therm%NFXFLUX)=0
312 ALLOCATE(iltag(slloadp/4))
315 ALLOCATE(tagig3d(numelig3d))
316 tagig3d(1:numelig3d)=0
317! ------------------------------
319 ALLOCATE( itagc(numelc),itagtg(numeltg) )
320 ALLOCATE( addcne_l(numnod_l+1),addcni2_l(numnod_l+1))
321 addcne_l(1:numnod_l + 1) = 0
322 ALLOCATE( addcncnd_l(numnod_l+1))
324 ALLOCATE( iads(8,numels_l),iads10(6,numels10_l) )
325 ALLOCATE( iads16(8,numels16_l),iads20(12,numels20_l) )
326 ALLOCATE( iadq(4,numelq_l),iadc(4,numelc_l) )
327 ALLOCATE( iadt(2,numelt_l),iadp(2,numelp_l) )
328 ALLOCATE( iadr(3,numelr_l),iadtg(3,numeltg_l) )
329 iadr(1:3,1:numelr_l) = 0
330 iadtg(1:3,1:numeltg_l) = 0
331 ALLOCATE(iadib(4,nconld_l) )
332 if(nconld_l >0) iadib(1:4,1:nconld_l) = -huge(i)
333 ALLOCATE( iadtg1(3,numeltg6_l),iadig3d(100,numelig3d_l) )
373 kibhol = kibjet + libagjet
376 offtg =numels+numelq+ numelc+numelt+numelp+numelr
382 nvent = monvol(k1+10)
383 nn = igrsurf(is)%NSEG
384 iadhol= kibhol+monvol(k1+11)
387 ity = igrsurf(is)%ELTYP(j)
388 i = igrsurf(is)%ELEM(j)
391 IF(cep(i+offc)==proc-1)
THEN
399 IF(cep(i+offtg)==proc-1)
THEN
411 IF(ityp==3.OR.ityp==4.OR.ityp==5.OR.ityp==7.OR.ityp==9)
THEN
413 ipvent = monvol(iadhol+nibhol*(iv-1)+2-1)
415 nnc=igrsurf(ipvent)%NSEG
417 ity = igrsurf(ipvent)%ELTYP(j)
418 i = igrsurf(ipvent)%ELEM(j)
420 IF(cep(i+offc)==proc-1)
THEN
423 iadmv3(k0) = itagc(i)
426 IF(cep(i+offtg)==proc-1)
THEN
429 iadmv3(k0) = itagtg(i)
436 IF(ityp==4.OR.ityp==5.OR.ityp==7.OR.ityp==9)
THEN
438 ipvent = monvol(k2+nicbag*(iv-1)+2-1)
440 nnc=igrsurf(ipvent)%NSEG
442 ity = igrsurf(ipvent)%ELTYP(j)
443 i = igrsurf(ipvent)%ELEM(j)
445 IF(cep(i+offc)==proc-1)
THEN
448 iadmv3(k0) = itagc(i)
451 IF(cep(i+offtg)==proc-1)
THEN
454 iadmv3(k0) = itagtg(i)
462 k2 = k2 + nicbag * nav
485 ALLOCATE( ebcs_tag(numels+numelq+numeltg) )
486 ebcs_tag(1:numels+numelq+numeltg) = .false.
487 ALLOCATE(ebcs_parithon_l(local_nebcs))
488 IF(local_nebcs>0)
THEN
493 ALLOCATE( ebcs_parithon_l(i)%ELEM_ADRESS(4,ebcs_tab_loc_2%tab(i)%poly%nb_elem) )
494 ebcs_parithon_l(i)%ELEM_ADRESS(1:4,1:ebcs_tab_loc_2%tab(i)%poly%nb_elem) = 0
496 IF(ebcs_tab_loc_2%tab(i)%poly%surf_id>0)
THEN
499 DO j=1,ebcs_tab_loc_2%tab(i)%poly%nb_elem
500 elem_id = ebcs_tab_loc_2%tab(i)%poly%global_ielem(j)
502 IF(elem_id>numels+numelq)
THEN
503 elem_id = elem_id - (numelc+numelt+numelp+numelr)
506 ebcs_tag(elem_id) = .true.
530 tetra10_offset = numels8
531 hexa20_offset = tetra10_offset + numels10
532 solid16_offset = hexa20_offset + numels20
533 quad_offset = solid_offset + numels
534 shell_offset = quad_offset + numelq
535 truss_offset = shell_offset + numelc
536 beam_offset = truss_offset + numelt
537 spring_offset = beam_offset + numelp
538 triangle_offset = spring_offset + numelr
539 low_triangle6_offset = triangle_offset + numeltg - numeltg6
540 bc_offset = triangle_offset + numeltg + numelx
541 thermal_conv_offset = bc_offset + nconld
542 thermal_rad_offset = thermal_conv_offset + glob_therm%numconv
543 thermal_flux_offset = thermal_rad_offset + glob_therm%numradia
544 load_offset = thermal_flux_offset + glob_therm%nfxflux
545 ig3d_offset = load_offset + slloadp/4
546 load_cyl_offset = ig3d_offset + numelig3d
547 last_offset = load_cyl_offset + number_load_cyl
556 addcne_l(i+1) = addcne_l(i) + n2-n1
563 procne(cc_l) = proc_l
566 IF (proc==proc_l)
THEN
569 IF (numg>solid_offset.and.numg<=quad_offset)
THEN
570 numg = numg - solid_offset
573 call get_fsky_address(bool,nixs,1,numg,numl,cc_l,8,n,numels,numels_l,soltag,ixs,s_iads,iads)
578 if(numels10>0.and.numg>tetra10_offset.and.numg<=hexa20_offset)
then
580 call get_fsky_address(bool,nixs10,0,numg,numl-numels8_l,cc_l,6,n,numels10,numels10_l,
581 . sol10tag,ixs10,s_iads10,iads10)
585 elseif(numels20>0.and.numg>hexa20_offset.and.numg<=solid16_offset)
then
586 numg=numg-numels8-numels10
587 call get_fsky_address(bool,nixs20,0,numg,numl-numels8_l-numels10_l,cc_l,12,n,numels20,numels20_l,
588 . sol20tag,ixs20,s_iads20,iads20)
592 elseif(numels16>0.and.numg>solid16_offset)
then
593 numg=numg-numels8-numels10-numels20
594 call get_fsky_address(bool,nixs16,0,numg,numl-numels8_l-numels10_l-numels20_l,cc_l,8,n,numels16,numels16_l,
595 . sol16tag,ixs16,s_iads16,iads16)
602 IF(ebcs_tag(numg_save))
THEN
605 IF(ebcs_tab_loc_2%tab(ii)%poly%surf_id>0)
THEN
608 DO j=1,ebcs_tab_loc_2%tab(ii)%poly%nb_elem
609 elem_id = ebcs_tab_loc_2%tab(ii)%poly%global_ielem(j)
618 IF(elem_id==numg_save)
THEN
620 local_node_id = ebcs_tab_loc_2%tab(ii)%poly%elem_list(k,j)
621 local_node_id = ebcs_tab_loc_2%tab(ii)%poly%node_list(local_node_id)
622 IF(n==nodglob(local_node_id))
THEN
623 IF(ebcs_parithon_l(ii)%ELEM_ADRESS(k,j)==0)
THEN
624 ebcs_parithon_l(ii)%ELEM_ADRESS(k,j) = cc_l
639 ELSEIF(numg>quad_offset.and.numg<=shell_offset)
THEN
641 call get_fsky_address(bool,nixq,1,numg,numl,cc_l,4,n,numelq,numelq_l,quadtag,ixq,s_iadq,iadq)
646 IF(ebcs_tag(numg_save))
THEN
649 IF(ebcs_tab_loc_2%tab(ii)%poly%surf_id>0)
THEN
652 DO j=1,ebcs_tab_loc_2%tab(ii)%poly%nb_elem
653 elem_id = ebcs_tab_loc_2%tab(ii)%poly%global_ielem(j)
662 IF(elem_id==numg_save)
THEN
664 local_node_id = ebcs_tab_loc_2%tab(ii)%poly%elem_list(k,j)
665 local_node_id = ebcs_tab_loc_2%tab(ii)%poly%node_list(local_node_id)
666 IF(n==nodglob(local_node_id))
THEN
667 IF(ebcs_parithon_l(ii)%ELEM_ADRESS(k,j)==0)
THEN
668 ebcs_parithon_l(ii)%ELEM_ADRESS(k,j) = cc_l
683 ELSEIF(numg>shell_offset.and.numg<=truss_offset)
THEN
685 numg = numg - shell_offset
686 call get_fsky_address(bool,nixc,1,numg,numl,cc_l,4,n,numelc,numelc_l,shtag,ixc,s_iadc,iadc)
692 IF(itagc(numg)>0)
THEN
697 nn = igrsurf_proc(is,proc)%NSEG
700 ity = igrsurf_proc(is,proc)%ELTYP(j)
701 ii = igrsurf_proc(is,proc)%ELEM(j)
703 IF(cep(offc+ii)==proc-1)
THEN
707 IF(ixc(k,ii)==n.AND.iadmv(k-1,k6+jj)==0)
THEN
708 iadmv(k-1,k6+jj) = cc_l
715 IF(cep(offtg+ii)==proc-1)
THEN
728 ELSEIF(numg>truss_offset.and.numg<=beam_offset)
THEN
729 numg = numg - truss_offset
730 call get_fsky_address(bool,nixt,1,numg,numl,cc_l,2,n,numelt,numelt_l,ttag,ixt,s_iadt,iadt)
735 ELSEIF(numg>beam_offset.and.numg<=spring_offset)
THEN
736 numg = numg - beam_offset
737 call get_fsky_address(bool,nixp,1,numg,numl,cc_l,2,n,numelp,numelp_l,ptag,ixp,s_iadp,iadp)
742 ELSEIF(numg>spring_offset.and.numg<=triangle_offset)
THEN
743 numg = numg - spring_offset
744 call get_fsky_address(bool,nixr,1,numg,numl,cc_l,2,n,numelr,numelr_l,rtag,ixr,s_iadr,iadr
748 IF(igeo(11,ixr(1,numg))==12)
THEN
750 testval =iand(rtag(numg),shft)
751 IF (ixr(4,numg)==n.AND.testval==0)
THEN
753 rtag(numg)=rtag(numg)+shft
759 ELSEIF(numg>triangle_offset.and.numg<=bc_offset)
THEN
762 numg = numg - triangle_offset
763 call get_fsky_address(bool,nixtg,1,numg,numl,cc_l,3,n,numeltg,numeltg_l,tgtag,ixtg,s_iadtg,iadtg)
769 if(numeltg6>0.and.numg>low_triangle6_offset.and.numg<=bc_offset)
then
770 numg = numg - numeltg + numeltg6
771 call get_fsky_address(bool,nixtg,0,numg,numl,cc_l,3,n,numeltg,numeltg_l,tg6tag,ixtg6,s_iadtg1,iadtg1)
779 IF(itagtg(numg)>0)
THEN
784 nn = igrsurf_proc(is,proc)%NSEG
787 ity = igrsurf_proc(is,proc)%ELTYP(j)
788 ii = igrsurf_proc(is,proc)%ELEM(j)
790 IF(cep(offtg+ii)==proc-1)
THEN
794 IF(ixtg(k,ii)==n.AND.iadmv(k-1,k6+jj)==0)
THEN
795 iadmv(k-1,k6+jj) = cc_l
802 IF(cep(offc+ii)==proc-1)
THEN
816 IF(ebcs_tag(numg_save-(numelc+numelt+numelp+numelr)))
THEN
819 IF(ebcs_tab_loc_2%tab(ii)%poly%surf_id>0)
THEN
822 DO j=1,ebcs_tab_loc_2%tab(ii)%poly%nb_elem
823 elem_id = ebcs_tab_loc_2%tab(ii)%poly%global_ielem(j)
833 IF(elem_id==numg_save)
THEN
835 local_node_id = ebcs_tab_loc_2%tab(ii)%poly%elem_list(k,j)
836 IF(local_node_id>0)
THEN
837 IF(n==nodglob(local_node_id))
THEN
838 IF(ebcs_parithon_l(ii)%ELEM_ADRESS(k,j)==0)
THEN
839 ebcs_parithon_l(ii)%ELEM_ADRESS(k,j) = cc_l
855 ELSEIF(numg>bc_offset.and.numg<=thermal_conv_offset)
THEN
856 numg = numg - bc_offset
857 IF(itagib(numg)==0.AND.n2d==0)
THEN
859 ELSEIF(itagib(numg)==0.AND.n2d/=0)
THEN
864 call get_fsky_address(bool,nibcld,0,numg,numl,cc_l,kn,n,nconld,nconld_l,ibtag,ib,s_iadib,iadib)
868 ELSEIF(numg>thermal_conv_offset.and.numg<=thermal_rad_offset)
THEN
869 numg = numg - thermal_conv_offset
877 call get_fsky_address(bool,glob_therm%niconv,0,numg,numl,cc_l,kn,n,glob_therm%numconv,nconv_l,
878 . ibcvtag,ibcv,s_iadibcv,iadibcv)
882 ELSEIF(numg>thermal_rad_offset.and.numg<=thermal_flux_offset)
THEN
883 numg = numg - thermal_rad_offset
891 call get_fsky_address(bool,glob_therm%niradia,0,numg,numl,cc_l,kn,n,glob_therm%numradia,nradia_l,
892 . ibcrtag,ibcr,s_iadibcr,iadibcr)
896 ELSEIF(numg>thermal_flux_offset.and.numg<=load_offset)
THEN
897 numg = numg - thermal_flux_offset
905 call get_fsky_address(bool,glob_therm%nitflux,0,numg,numl,cc_l,kn,n,glob_therm%nfxflux,nfxflux_l,
906 . ibfxtag,ibfflux,s_iadibfx,iadibfx)
910 ELSEIF(numg>load_offset.and.numg<=ig3d_offset)
THEN
911 numg = numg - load_offset
912 IF(itagloadp(numg)==0.AND.n2d==0)
THEN
914 ELSEIF(itagloadp(numg)==0.AND.n2d/=0)
THEN
919 call get_fsky_address(bool,4,0,numg,numl,cc_l,kn,n,slloadp/4,llloadp_l,iltag,lloadp,s_iadload,iadload)
923 ELSEIF(numg>ig3d_offset.and.numg<=load_cyl_offset)
THEN
924 numg = numg - ig3d_offset
926 shft = ishft(iun,k-1)
927 testval = iand(tagig3d(numg),shft)
928 IF (ixig3d(kxig3d(4,numg)+k-1)==n.AND.testval==0)
THEN
929 iadig3d(k,numl) = cc_l
930 tagig3d(numg)=tagig3d(numg)+shft
936 ELSEIF(numg>load_cyl_offset.and.numg<=last_offset)
THEN
940 global_segment_id = numg - load_cyl_offset
941 local_proc_id = loads%GLOBAL_SEGMENT_ID(global_segment_id,1)
942 local_segment_id = loads%GLOBAL_SEGMENT_ID(global_segment_id,2)
943 global_load_id = loads%GLOBAL_SEGMENT_ID(global_segment_id,3)
944 local_load_id = loads_per_proc%INDEX_LOAD(global_load_id,2)
948 IF(n==loads_per_proc%LOAD_CYL(local_load_id)%SEGNOD(local_segment_id,j))
THEN
949 loads_per_proc%LOAD_CYL(local_load_id)%SEGMENT_ADRESS(j,local_segment_id) = cc_l
956 print *,
'**error assadd2 unknown elem type'
971 IF(iplyxfem > 0)
THEN
982 n2 = addcne_pxfem(n+1)
983 addcnepxfem_l(nl_l + 1) = addcnepxfem_l(nl_l) + n2 - n1
985 numg0 = cne_pxfem(cc)
986 n0 = iel_pxfem(numg0)
988 numg = numg0 + numels + numelq
992 procne_pxfem(cc_l) = proc_l
996 IF (proc==proc_l)
THEN
998 IF(numg<=numels+numelq+numelc)
THEN
999 numg = numg - (numels+numelq)
1001 shft = ishft(iun,k-1)
1002 testval =iand(shtag(numg),shft)
1003 IF (ixc(k+1,numg)==ng.AND.testval/=0)
THEN
1004 iadc_pxfem(k,numl) = cc_l
1005 shtag(numg)=shtag(numg)-shft
1021 IF (icrack3d > 0)
THEN
1024 addcnecrkxfem_l(1) = 1
1031 IF (inod_crk_l(i) > 0)
THEN
1032 n = inod_crkxfem(ng)
1033 n1 = addcne_crkxfem(n)
1034 n2 = addcne_crkxfem(n+1)
1037 addcnecrkxfem_l(nl_l+1) = addcnecrkxfem_l(nl_l) + n2 - n1
1040 numg0 = cne_crkxfem(cc)
1041 n0 = iel_crkxfem(numg0)
1042 numl = cel_crkxfem(n0)
1045 proc_l = cep_crkxfem(n0) + 1
1048 procne_crkxfem(cc_l) = proc_l
1052 IF (proc == proc_l)
THEN
1053 IF (n0 <= ecrkxfec)
THEN
1056 shft = ishft(iun,k-1)
1057 testval = iand(shtag(numg),shft)
1058 IF (ixc(k+1,numg) == ng .AND. testval /= 0)
THEN
1059 iadc_crkxfem(k,numl) = cc_l
1061 cne_crkxfem_l(cc_l) = numl
1062 crknodiad_l(cc_l) = crknodiad(cc)
1063 shtag(numg) = shtag(numg)-shft
1066 ELSEIF (n0 > ecrkxfec .AND. n0 <= ecrkxfec+ecrkxfetg)
THEN
1067 numg = numg0 -numelc
1069 shft = ishft(iun,k-1)
1070 testval = iand(tgtag(numg),shft)
1071 IF (ixtg(k+1,numg) == ng .AND. testval /= 0)
THEN
1072 iadtg_crkxfem(k,numl) = cc_l
1074 cne_crkxfem_l(cc_l) = numl + numelccrkxfe_l
1075 crknodiad_l(cc_l) = crknodiad(cc)
1076 tgtag(numg)=tgtag(numg)-shft
1095 IF(nlocal(msr,proc)==1)
THEN
1099 IF(nlocal(nn,proc)==1)
THEN
1103 IF(nlocal(nn,p)==1)
THEN
1108 200
IF(
main==1)
THEN
1109 iadwal(k_l+nsl_l) = kk
1111 iadwal(k_l+nsl_l) = 0
1132 pmain = abs(dd_rby2(3,n))
1133 IF(nlocal(msr,proc)==1)
THEN
1136 IF(nlocal(nn,proc)==1)
THEN
1140 IF(nlocal(nn,p)==1)
THEN
1145 300
IF(
main==1)
THEN
1147 iadrbk(nsl_l) = kk+idebrbk(pmain)
1155 idebrbk(pmain) = idebrbk(pmain) + nsl
1162 IF(nskyrbmk_l>0)
THEN
1171 pmain = abs(dd_rbym2(3,n))
1172 IF(mod(front_rm(msr,proc),10)==1)
THEN
1175 IF(nlocal(nn,proc)==1)
THEN
1179 IF(nlocal(nn,p)==1)
THEN
1184 333
IF(
main==1)
THEN
1186 iadrbmk(nsl_l) = kk+idebrbk(pmain)
1194 idebrbk(pmain) = idebrbk(pmain) + nsl
1213 l = intbuf_tab(n)%IRTLM(i)
1214 k = intbuf_tab(n)%NSV(i)
1215 IF(nlocal(k,proc)==1)
THEN
1217 IF(nlocal(k,p)==1)
GO TO 202
1221 kk = intbuf_tab(n)%IRECTM((l-1)*4+j)
1230 if(nsn_l/=i2nsn_l)print *,
'error decomp i2 p/on'
1238 addcni2_l(i+1) = addcni2_l(i) + n2-n1
1242 proc_l = cepi2(numg)+1
1244 procni2(cc_l) = proc_l
1248 IF (proc==proc_l)
THEN
1250 IF(i2tmp(k,numl)==n)
THEN
1251 iadi2(k,numl) = cc_l
1271 IF (nlocal(n,proc)==1)
THEN
1273 iadll(k_l+nsl_l) = j
1291 pmain = abs(dd_rbm2(3,n))
1292 IF(nlocal(msr,proc)==1)
THEN
1295 IF(nlocal(nn,proc)==1)
THEN
1299 IF(nlocal(nn,p)==1)
THEN
1304 3000
IF(
main==1)
THEN
1306 iadrbm(nsl_l) = kk+idebrbk(pmain)
1314 idebrbk(pmain) = idebrbk(pmain) + nsl
1320 IF(nskyrbe3_l>0)
THEN
1335 IF(nlocal(k,proc)==1.AND.itagnd(k)<=ns10e)
THEN
1338 IF(nlocal(k,p)==1)
GO TO 332
1342 icndtmp(1,nsn_l) = n1
1343 icndtmp(2,nsn_l) = n2
1344 icndtmp(3,nsn_l) = n_l
1349 if(n_l/=ns10e_l)print *,
'error decomp Itet2of S10 p/on',n_l,ns10e_l
1352 iadcnd(1:2,1:ns10e_l) = 0
1359 addcncnd_l(i+1) = addcncnd_l(i) + n2-n1
1364 proc_l = cepcnd(numg)+1
1366 procncnd(cc_l) = proc_l
1370 IF (proc==proc_l)
THEN
1372 IF(icndtmp(k,numl)==n)
THEN
1373 n_l = icndtmp(3,numl)
1374 iadcnd(k,n_l) = cc_l
1375 icndtmp(k,numl) = -n
1391 inacti = ipari(22,n)
1392 IF((ity==7.OR.ity==22).AND.inacti==7)
THEN
1397 n1 = intbuf_tab(n)%IRECTM(4*(k-1)+1)
1398 n2 = intbuf_tab(n)%IRECTM(4*(k-1)+2)
1399 n3 = intbuf_tab(n)%IRECTM(4*(k-1)+3)
1400 n4 = intbuf_tab(n)%IRECTM(4*(k-1)+4)
1401 IF(nlocal(n1,proc)==1.AND.
1402 . nlocal(n2,proc)==1.AND.
1403 . nlocal(n3,proc)==1.AND.
1404 . nlocal(n4,proc)==1)
THEN
1406 IF(nlocal(n1,p)==1.AND.
1407 . nlocal(n2,p)==1.AND.
1408 . nlocal(n3,p)==1.AND.
1409 . nlocal(n4,p)==1)
THEN
1427 len_ia = len_ia + numnod_l+1
1429 len_ia = len_ia + lcne_l
1433 len_ia = len_ia + numnod_l+1
1436 len_ia = len_ia + lcni2_l
1440 len_ia = len_ia + numnod_l+1
1443 len_ia = len_ia + lcncnd_l
1446 len_ia = len_ia + 8*numels_l
1448 len_ia = len_ia + 6*numels10_l
1450 len_ia = len_ia +12*numels20_l
1452 len_ia = len_ia + 8*numels16_l
1454 len_ia = len_ia + 4*numelq_l
1456 len_ia = len_ia + 4*numelc_l
1458 len_ia = len_ia + 2*numelt_l
1460 len_ia = len_ia + 2*numelp_l
1462 len_ia = len_ia + 3*numelr_l
1464 len_ia = len_ia + 3*numeltg_l
1466 len_ia = len_ia + 3*numeltg6_l
1468 len_ia = len_ia + 4*nnmv_l
1470 len_ia = len_ia + 4*nconld_l
1472 len_ia = len_ia + 4*nconv_l
1474 len_ia = len_ia + 4*nradia_l
1476 len_ia = len_ia + 4*nfxflux_l
1478 len_ia = len_ia + llloadp_l
1481 len_ia = len_ia + nskyrw_l
1484 len_ia = len_ia + nskyrbk_l
1487 len_ia = len_ia + niskyi2_l
1490 len_ia = len_ia + 2*ns10e_l
1493 len_ia = len_ia + nnmv_l
1496 len_ia = len_ia + nnmvc_l
1499 len_ia = len_ia + nskyll_l
1502 len_ia = len_ia + nskyrbm_l
1507 len_ia = len_ia + nskyi18_l
1510 len_ia = len_ia + nskyrbmk_l
1513 IF(iplyxfem > 0 )
THEN
1514 CALL write_i_c(addcnepxfem_l,numnodpxfem_l+1)
1515 len_ia = len_ia + numnodpxfem_l+1
1516 CALL write_i_c(procne_pxfem,lcnepxfem_l)
1517 len_ia = len_ia + lcnepxfem_l
1518 CALL write_i_c(iadc_pxfem,4*numelcpxfem_l)
1519 len_ia = len_ia + 4*numelcpxfem_l
1524 IF (icrack3d > 0)
THEN
1525 CALL write_i_c(addcnecrkxfem_l,numnodcrkxfe_l+1)
1526 len_ia = len_ia + numnodcrkxfe_l+1
1527 CALL write_i_c(cne_crkxfem_l,lcnecrkxfem_l)
1528 len_ia = len_ia + lcnecrkxfem_l
1529 CALL write_i_c(procne_crkxfem,lcnecrkxfem_l)
1530 len_ia = len_ia + lcnecrkxfem_l
1531 CALL write_i_c(iadc_crkxfem,4*numelccrkxfe_l)
1532 len_ia = len_ia + 4*numelccrkxfe_l
1533 CALL write_i_c(iadtg_crkxfem,3*numeltgcrkxfe_l)
1534 len_ia = len_ia + 3*numeltgcrkxfe_l
1535 CALL write_i_c(crknodiad_l,lcnecrkxfem_l)
1536 len_ia = len_ia + lcnecrkxfem_l
1541 IF(local_nebcs>0)
THEN
1543 CALL write_i_c(ebcs_parithon_l(i)%ELEM_ADRESS,4*ebcs_tab_loc_2%tab(i)%poly%nb_elem)
1544 len_ia = len_ia + 4*ebcs_tab_loc_2%tab(i)%poly%nb_elem
1550 DEALLOCATE (sol10tag)
1551 DEALLOCATE (sol20tag)
1552 DEALLOCATE (sol16tag)
1553 DEALLOCATE (quadtag)
1561 DEALLOCATE (ibcvtag)
1562 DEALLOCATE (ibcrtag)
1563 DEALLOCATE (ibfxtag)
1565 DEALLOCATE (tagig3d)
1568 DEALLOCATE( itagc,itagtg )
1569 DEALLOCATE( addcne_l,addcni2_l,addcncnd_l )
1571 DEALLOCATE( iads,iads10 )
1572 DEALLOCATE( iads16,iads20 )
1573 DEALLOCATE( iadq,iadc )
1574 DEALLOCATE( iadt,iadp )
1575 DEALLOCATE( iadr,iadtg )
1577 DEALLOCATE( iadtg1,iadig3d )
1580 DEALLOCATE( ebcs_tag )
1581 IF(local_nebcs>0)
THEN
1583 DEALLOCATE( ebcs_parithon_l(i)%ELEM_ADRESS )
1586 DEALLOCATE(ebcs_parithon_l)
1604 DEALLOCATE(itagloadp)
1607 DEALLOCATE(procncnd)