42 1 X ,IRECT ,STF ,IXS ,PM ,
43 2 GEO ,NRT ,IXC ,NINT ,STFAC ,
44 3 NTY ,GAP ,NOINT ,STFN ,NSN ,
45 4 MS ,NSV ,IXTG ,IGAP ,WA ,
46 5 GAP_S ,GAP_M ,GAPMIN ,IXT ,IXP ,
47 6 GAPINF ,GAPMAX ,INACTI ,KNOD2ELS ,KNOD2ELC ,
48 7 KNOD2ELTG ,NOD2ELS ,NOD2ELC ,NOD2ELTG ,IGRSURF ,
49 8 INTTH ,IELES ,IELEC ,AREAS ,SH4TREE ,
50 9 SH3TREE ,IPART ,IPARTC ,IPARTTG ,THK ,
51 B THK_PART ,PERCENT_SIZE,GAP_S_L ,GAP_M_L ,NOD2EL1D ,
52 C KNOD2EL1D ,IXR ,ITAB ,BGAPSMX ,IXS10 ,
53 D IXS16 ,IXS20 ,ID ,TITR ,IDDLEVEL ,
54 E DRAD ,IGEO ,FILLSOL ,PM_STACK ,IWORKSH ,
55 F IT19 ,KXIG3D ,IXIG3D ,INTFRIC ,IPARTS ,
56 G TAGPRT_FRIC,IPARTFRICS,IPARTFRICM ,INTBUF_FRIC_TAB,NRT_IGE,
57 I IREM_GAP ,GAPM_MX,GAPS_MX ,GAPM_L_MX,GAPS_L_MX,
58 J IPARTT ,IPARTP ,IPARTR ,ELEM_LINKED_TO_SEGMENT,
68 use element_mod ,
only :nixs,nixc,nixtg,nixt,nixp,nixr
72#include "implicit_f.inc"
79#include "remesh_c.inc"
86 INTEGER NRT, NINT, NTY, NOINT,NSN,IGAP,
87 . INACTI,INTFRIC, NRT_IGE
88 INTEGER IRECT(4,*), IXS(NIXS,*), IXC(NIXC,*),
89 . NSV(*), IXTG(NIXTG,*), IXT(NIXT,*), IXP(NIXP,*),
90 . KNOD2ELS(*), KNOD2ELC(*), KNOD2ELTG(*), NOD2ELS(*), NOD2ELC(*),
91 . NOD2ELTG(*), IELES(*), INTTH, IELEC(*),
92 . SH3TREE(KSH3TREE,*), SH4TREE(KSH4TREE,*),IXR(NIXR,*) ,
93 . IPART(LIPART1,*),IPARTC(*),IPARTTG(*),NOD2EL1D(*),KNOD2EL1D(*),
94 . ITAB(*), IXS10(6,*), IXS16(*), IXS20(*),IDDLEVEL,IGEO(NPROPGI,*),
95 . IWORKSH(3,*),IT19,KXIG3D(NIXIG3D,*),IXIG3D(*),TAGPRT_FRIC(*),
96 . IPARTFRICS(*),IPARTFRICM(*),IPARTS(*),IREM_GAP
98 . STFAC, GAP,GAPMIN,GAPINF, GAPMAX,PERCENT_SIZE, BGAPSMX,
99 . GAPINF_S, GAPINF_M, DRAD, GAPM_MX, GAPS_MX, GAPS_L_MX, GAPM_L_MX
101 . X(3,*), STF(*), PM(NPROPM,*), GEO(NPROPG,*), STFN(*),
102 . MS(*),WA(*),GAP_S(*),GAP_M(*),
103 . AREAS(*),THK(*),THK_PART(*),
104 . gap_s_l(*),gap_m_l(*), fillsol(*),pm_stack(20,*)
105 INTEGER,
DIMENSION(NUMELT),
INTENT(IN) :: IPARTT
106 INTEGER,
DIMENSION(NUMELP),
INTENT(IN) :: IPARTP
107 INTEGER,
DIMENSION(NUMELR),
INTENT(IN) :: IPARTR
108 INTEGER,
INTENT(IN) :: ID
109 CHARACTER(LEN=NCHARTITLE)::TITR
110 TYPE(INTBUF_FRIC_STRUCT_) INTBUF_FRIC_TAB(*)
111 TYPE (SURF_) :: IGRSURF
112 INTEGER,
DIMENSION(NUMELS),
INTENT(INOUT):: ELEM_LINKED_TO_SEGMENT
113 INTEGER,
INTENT(IN) :: FLAG_ELEM_INTER25(NINTER25,NUMELS)
117 INTEGER NDX, I, J, INRT, NELS, MT, JJ, JJJ, NELC,
118 . mg, l, neltg,n1,n2,ie,
119 . ip, nlev, mylev, k, p, r, t,igtyp,ipgmat,igmat,
120 . isubstack,nelig3d, coin_ige(8), ipid, px, py, pz ,ipfmax,ipl,
121 . ipflmax,ipg,ninv,icontr,nin25
125 . dxm, gapmx, gapmn,
area, vol, dx, gapm,
126 . gaptmp, gapscale,sx1,sy1,sz1,sx2,sy2,sz2,sx3,sy3,sz3,
128 my_real,
dimension(:),
allocatable :: gap_s_l_tmp
129 INTEGER,
DIMENSION(:),
ALLOCATABLE :: TAGELEMS,INDEXE
130 LOGICAL :: PRINT_ERROR
131 INTEGER,
DIMENSION(4) :: NODE_ID
141 ALLOCATE( gap_s_l_tmp(numnod) )
143 IF(inacti == 7)type18=.true.
171 IF(iddlevel == 1) igap = 1
174 ELSEIF(igap == 3)
THEN
187 IF(n1 /= n2 .AND. n1 /= 0)xl=
min(xl,sqrt((x(1,n1)-x(1,n2))**2+(x(2,n1)-x(2,n2))**2+(x(3,n1)-x(3,n2))**2))
190 IF(gap_s_l_tmp(irect(j,i)) == zero)
THEN
191 gap_s_l_tmp(irect(j,i))= percent_size*xl
193 gap_s_l_tmp(irect(j,i))=
min(gap_s_l_tmp(irect(j,i)),percent_size*xl)
199 DO k=knod2el1d(n1)+1,knod2el1d(n1+1)
200 IF (nod2el1d(k) <= numelt .AND. nod2el1d(k) /= zero)
THEN
202 xl=
min(xl,sqrt((x(1,ixt(2,t))-x(1,ixt(3,t)))**2 + (x(2,ixt(2,t))-x(2,ixt(3,t)))**2 + (x(3,ixt(2,t))-x(3,ixt(3,t)))**2))
203 ELSEIF (nod2el1d(k) <= numelt+numelp .AND. nod2el1d(k) /= zero)
THEN
204 p=nod2el1d(k) - numelt
205 xl=
min(xl,sqrt((x(1,ixp(2,p))-x(1,ixp(3,p)))**2 + (x(2,ixp(2,p))-x(2,ixp(3,p)))**2 + (x(3,ixp(2,p))-x(3,ixp(3,p)))**2))
206 ELSEIF (nod2el1d(k) <= numelt+numelp+numelr .AND. nod2el1d(k) /= zero)
THEN
207 r=nod2el1d(k) - numelt - numelp
208 xl=
min(xl,sqrt((x(1,ixr(2,r))-x(1,ixr(3,r)))**2 + (x(2,ixr(2,r))-x(2,ixr(3,r)))**2 + (x(3,ixr(2,r))-x(3,ixr(3,r)))**2))
212 gap_m_l(i)=percent_size*xl
213 gapm_l_mx =
max(gapm_l_mx,gap_m_l(i))
215 gap_s_l_tmp(irect(j,i))=
min(gap_s_l_tmp(irect(j,i)),percent_size*xl)
230 IF ( thk_part(ip) /= zero .AND. iintthick == 0)
THEN
232 ELSEIF ( thk(i) /= zero .AND. iintthick == 0)
THEN
234 ELSEIF(igtyp == 17 .OR. igtyp ==51 .OR. igtyp == 52)
THEN
239 wa(ixc(2,i))=
max(wa(ixc(2,i)),dx)
240 wa(ixc(3,i))=
max(wa(ixc(3,i)),dx)
241 wa(ixc(4,i))=
max(wa(ixc(4,i)),dx)
242 wa(ixc(5,i))=
max(wa(ixc(5,i)),dx)
248 IF ( thk_part(ip) /= zero .AND. iintthick == 0)
THEN
250 ELSEIF ( thk(numelc+i) /= zero .AND. iintthick == 0)
THEN
251 dx=half*thk(numelc+i)
252 ELSEIF(igtyp == 17 .OR. igtyp ==51 .OR. igtyp == 52)
THEN
253 dx=half*thk(numelc+i)
257 wa(ixtg(2,i))=
max(wa(ixtg(2,i)),dx)
258 wa(ixtg(3,i))=
max(wa(ixtg(3,i)),dx)
259 wa(ixtg(4,i))=
max(wa(ixtg(4,i)),dx)
264 IF ( thk_part(ip) > zero )
THEN
267 dx=half*sqrt(geo(1,mg))
269 wa(ixt(2,i))=
max(wa(ixt(2,i)),dx)
270 wa(ixt(3,i))=
max(wa(ixt(3,i)),dx)
275 IF ( thk_part(ip) > zero )
THEN
278 dx=half*sqrt(geo(1,mg))
280 wa(ixp(2,i))=
max(wa(ixp(2,i)),dx)
281 wa(ixp(3,i))=
max(wa(ixp(3,i)),dx)
285 IF ( thk_part(ip) > zero )
THEN
289 wa(ixr(2,i))=
max(wa(ixr(2,i)),dx)
290 wa(ixr(3,i))=
max(wa(ixr(3,i)),dx)
291 IF (igtyp==12) wa(ixr(4,i))=
max(wa(ixr(4,i)),dx)
299 gap_s(i)=gapscale * wa(nsv(i))
301 IF(gap_s_l_tmp(nsv(i)) /= zero)gap_s_l(i)=
min(gap_s_l(i),gap_s_l_tmp(nsv(i)))
302 gaps_mx =
max(gaps_mx,gap_s(i))
303 gaps_l_mx =
max(gaps_l_mx,gap_s_l(i))
305 gaps_mx=
max(gaps_mx,gap_s
316 DO j= knod2elc(nsv(i))+1,knod2elc(nsv(i)+1)
318 sx1 = x(1,ixc(4,ie)) - x(1,ixc(2,ie))
319 sy1 = x(2,ixc(4,ie)) - x(2,ixc(2,ie))
320 sz1 = x(3,ixc(4,ie)) - x(3,ixc(2,ie))
321 sx2 = x(1,ixc(5,ie)) - x(1,ixc(3,ie))
322 sy2 = x(2,ixc(5,ie)) - x(2,ixc(3,ie))
323 sz2 = x(3,ixc(5,ie)) - x(3,ixc(3,ie))
324 sx3 = sy1*sz2 - sz1*sy2
325 sy3 = sz1*sx2 - sx1*sz2
326 sz3 = sx1*sy2 - sy1*sx2
327 areas(i) = areas(i) + one_over_8*sqrt(sx3*sx3+sy3*sy3+sz3*sz3)
332 DO j= knod2eltg(nsv(i))+1,knod2eltg(nsv(i)+1)
334 sx1 = x(1,ixtg(3,ie)) - x(1,ixtg(2,ie))
335 sy1 = x(2,ixtg(3,ie)) - x(2,ixtg(2,ie))
336 sz1 = x(3,ixtg(3,ie)) - x(3,ixtg(2,ie))
337 sx2 = x(1,ixtg(4,ie)) - x(1,ixtg(2,ie))
338 sy2 = x(2,ixtg(4,ie)) - x(2,ixtg(2,ie))
339 sz2 = x(3,ixtg(4,ie)) - x(3,ixtg(2,ie))
340 sx3 = sy1*sz2 - sz1*sy2
341 sy3 = sz1*sx2 - sx1*sz2
342 sz3 = sx1*sy2 - sy1*sx2
343 areas(i) = areas(i) + one_over_6*sqrt(sx3*sx3+sy3*sy3+sz3*sz3)
345 ielec(i) = ixtg(1,ie)
351 DO j=knod2elc(nsv(i))+1,knod2elc(nsv(i)+1)
357 IF(mylev < 0) mylev=-(mylev+1)
359 IF(mylev == nlev)
THEN
360 sx1 = x(1,ixc(4,ie)) - x(1,ixc(2,ie))
361 sy1 = x(2,ixc(4,ie)) - x(2,ixc(2,ie))
362 sz1 = x(3,ixc(4,ie)) - x(3,ixc(2,ie))
363 sx2 = x(1,ixc(5,ie)) - x(1,ixc(3,ie))
364 sy2 = x(2,ixc(5,ie)) - x(2,ixc(3,ie))
365 sz2 = x(3,ixc(5,ie)) - x(3,ixc(3,ie))
366 sx3 = sy1*sz2 - sz1*sy2
367 sy3 = sz1*sx2 - sx1*sz2
368 sz3 = sx1*sy2 - sy1*sx2
369 areas(i) = areas(i) + one_over_8*sqrt(sx3*sx3+sy3*sy3+sz3*sz3)
376 DO j= knod2eltg(nsv(i))+1,knod2eltg(nsv(i)+1)
381 IF(mylev < 0) mylev=-(mylev+1)
382 IF(mylev == nlev)
THEN
383 sx1 = x(1,ixtg(3,ie)) - x(1,ixtg(2,ie))
384 sy1 = x(2,ixtg(3,ie)) - x(2,ixtg(2,ie))
385 sz1 = x(3,ixtg(3,ie)) - x(3,ixtg(2,ie))
386 sx2 = x(1,ixtg(4,ie)) - x(1,ixtg(2,ie))
387 sy2 = x(2,ixtg(4,ie)) - x(2,ixtg(2,ie))
388 sz2 = x(3,ixtg(4,ie)) - x(3,ixtg(2,ie))
389 sx3 = sy1*sz2 - sz1*sy2
390 sy3 = sz1*sx2 - sx1*sz2
391 sz3 = sx1*sy2 - sy1*sx2
392 areas(i) = areas(i) + one_over_6*sqrt(sx3*sx3+sy3*sy3+sz3*sz3)
394 ielec(i) = ixtg(1,ie)
406 CALL my_alloc(tagelems,numels)
408 CALL my_alloc(indexe,numels)
414 IF(intth > 0 ) ieles(i) = 0
415 IF(slsfac < zero)stf(i)=slsfac
418 CALL i4gmx3(x,irect,inrt,gapmx)
420 CALL inelts(x ,irect,ixs ,nint,nels ,
421 . inrt ,
area ,noint,0 ,igrsurf%ELTYP,
444 stf(i)=slsfac*fillsol(nels)*
area*
area*bulk/vol
448 . msgtype=msgwarning,
449 . anmode=aninfo_blind_2,
458 . msgtype=msgwarning,
459 . anmode=aninfo_blind_2,
467 IF(igap /= 0 .OR. (nty /=7 .AND. nty /= 20)) gap_m(i)=gapm
471 ipg = tagprt_fric(ip)
474 . ipg,intbuf_fric_tab(intfric)%S_TABPARTS_FRIC,
475 . intbuf_fric_tab(intfric)%TABPARTS_FRIC,ipl )
476 ipartfricm(inrt) = ipl
484 CALL ineltc(nelc ,neltg ,inrt ,igrsurf%ELTYP, igrsurf%ELEM)
494 IF (thk_part(ip) /= zero .AND. iintthick == 0)
THEN
495 dx=thk_part(ip)*gapscale
496 ELSEIF ( thk(numelc+neltg) /= zero .AND. iintthick == 0)
THEN
497 dx=thk(numelc+neltg)*gapscale
498 ELSEIF(igtyp == 17 .OR. igtyp == 51 .OR. igtyp == 52)
THEN
499 dx=thk(numelc+neltg)*gapscale
501 dx=geo(1,mg)*gapscale
504 gapm_mx=
max(gapm_mx,gapm)
509 IF(igtyp == 11 .AND. igmat > 0)
THEN
510 IF(slsfac < zero)
THEN
512 ELSEIF ( thk(numelc+neltg) /= zero .AND. iintthick == 0)
THEN
513 stf(i)=slsfac*thk(numelc+neltg)*geo(ipgmat + 2 ,mg)
515 stf(i)=slsfac*geo(1,mg)*geo(ipgmat + 2 ,mg)
517 ELSEIF(igtyp == 52 .OR. ((igtyp == 17 .OR. igtyp == 51) .AND. igmat > 0))
THEN
518 isubstack = iworksh(3,numelc + neltg)
519 IF(slsfac < zero)
THEN
522 stf(i)=slsfac*thk(numelc+neltg)*pm_stack(2 ,isubstack)
525 IF(slsfac < zero)
THEN
527 ELSEIF ( thk(numelc+neltg) /= zero .AND. iintthick == 0)
THEN
528 stf(i)=slsfac*thk(numelc+neltg)*pm(20,mt)
530 stf(i)=slsfac*geo(1,mg)*pm(20,mt)
536 . msgtype=msgwarning,
537 . anmode=aninfo_blind_2,
540 . i2=ixtg(nixtg,neltg),
546 . msgtype=msgwarning,
547 . anmode=aninfo_blind_2,
550 . i2=ixtg(nixtg,neltg),
555 IF(igap /= 0 .OR. (nty /= 7 .AND. nty /= 20)) gap_m(i)=gapm
559 ipg = tagprt_fric(ip)
562 . ipg,intbuf_fric_tab(intfric)%S_TABPARTS_FRIC,
563 . intbuf_fric_tab(intfric)%TABPARTS_FRIC,ipl )
564 ipartfricm(inrt) = ipl
580 IF (thk_part(ip) /= zero .AND. iintthick == 0)
THEN
581 dx=thk_part(ip)*gapscale
582 ELSEIF (thk(nelc) /= zero .AND. iintthick == 0)
THEN
583 dx=thk(nelc)*gapscale
584 ELSEIF(igtyp == 17 .OR. igtyp == 51 .OR. igtyp == 52)
THEN
585 dx=thk(nelc)*gapscale
587 dx=geo(1,mg)*gapscale
590 gapm_mx=
max(gapm_mx,gapm)
591 gapmn =
min(gapmn,dx)
596 IF(igtyp == 11 .AND. igmat > 0)
THEN
597 IF(slsfac < zero)
THEN
599 ELSEIF ( thk(nelc) /= zero .AND. iintthick == 0)
THEN
600 stf(i)=slsfac*thk(nelc)*geo(ipgmat + 2 ,mg)
602 stf(i)=slsfac*geo(1,mg)*geo(ipgmat + 2 ,mg)
604 ELSEIF(igtyp == 52 .OR. ((igtyp == 17 .OR. igtyp == 51) .AND. igmat > 0))
THEN
605 isubstack = iworksh(3,nelc)
606 IF(slsfac < zero)
THEN
609 stf(i)=slsfac*thk(nelc)*pm_stack(2 ,isubstack )
612 IF(slsfac < zero)
THEN
614 ELSEIF (thk(nelc) /= zero .AND. iintthick == 0)
THEN
615 stf(i)=slsfac*thk(nelc)*pm(20,mt)
617 stf(i)=slsfac*geo(1,mg)*pm(20,mt)
623 . msgtype=msgwarning,
624 . anmode=aninfo_blind_2,
633 . msgtype=msgwarning,
634 . anmode=aninfo_blind_2,
642 IF(igap /=0 .OR. (nty /=7 .AND. nty /= 20)) gap_m(i)=gapm
646 ipg = tagprt_fric(ip)
649 . ipg,intbuf_fric_tab(intfric)%S_TABPARTS_FRIC,
650 . intbuf_fric_tab(intfric)%TABPARTS_FRIC,ipl )
651 ipartfricm(inrt) = ipl
661 print_error = .false.
663 CALL insol3d(x ,irect ,ixs ,nint ,nels,inrt,
664 .
area ,noint ,knod2els ,nod2els ,0 ,
665 . ixs10 ,ixs16 ,ixs20 ,tagelems,indexe,ninv,ielem,
666 . elem_linked_to_segment ,print_error,
667 . nin25,nty, flag_elem_inter25 )
669 node_id(1:4) = itab(irect(1:4,inrt))
672 . msgtype=msgwarning,
673 . anmode=aninfo_blind_1,
688 IF(intth > 0 ) ieles(i) = nels
697 stf(i)=slsfac*fillsol(nels)*
area*
area*pm(32,mt)/vol
701 . msgtype=msgwarning,
702 . anmode=aninfo_blind_2,
711 . msgtype=msgwarning,
712 . anmode=aninfo_blind_2,
723 ipg = tagprt_fric(ip)
726 . ipg , intbuf_fric_tab(intfric)%S_TABPARTS_FRIC,
727 . intbuf_fric_tab(intfric)%TABPARTS_FRIC, ipl )
728 ipartfricm(inrt) = ipl
737 CALL incoq3(irect ,ixc ,ixtg ,nint ,nelc ,
738 . neltg ,inrt ,geo ,pm ,knod2elc ,
739 . knod2eltg ,nod2elc ,nod2eltg ,thk ,nty ,
740 . igeo ,pm_stack ,iworksh )
750 IF ( thk_part(ip) /= zero .AND. iintthick == 0)
THEN
751 dx=thk_part(ip)*gapscale
752 ELSEIF (thk(numelc+neltg) /= zero .AND. iintthick == 0)
THEN
753 dx=thk(numelc+neltg)*gapscale
754 ELSEIF(igtyp == 17 .OR. igtyp == 51 .OR. igtyp == 52)
THEN
755 dx=thk(numelc+neltg)*gapscale
757 dx=geo(1,mg)*gapscale
760 gapm_mx=
max(gapm_mx,gapm)
761 gapmn =
min(gapmn,dx)
765 IF(igtyp == 11 .AND. igmat > 0)
THEN
766 IF(slsfac < zero)
THEN
768 ELSEIF ( thk(numelc+neltg) /= zero .AND. iintthick == 0)
THEN
769 stf(i)=slsfac*thk(numelc+neltg)*geo(ipgmat + 2 ,mg)
771 stf(i)=slsfac*geo(1,mg)*geo(ipgmat + 2 ,mg)
773 ELSEIF(igtyp == 52 .OR. ((igtyp == 17 .OR. igtyp == 51) .AND. igmat > 0))
THEN
774 isubstack = iworksh(3,numelc+neltg)
775 IF(slsfac < zero)
THEN
778 stf(i)=slsfac*thk(numelc+neltg)*pm_stack(2 ,isubstack)
781 IF(slsfac < zero)
THEN
783 ELSEIF ( thk(numelc+neltg) /= zero .AND. iintthick == 0)
THEN
784 stf(i)=slsfac*thk(numelc+neltg)*pm(20,mt)
786 stf(i)=slsfac*geo(1,mg)*pm(20,mt)
792 . msgtype=msgwarning,
793 . anmode=aninfo_blind_2,
796 . i2=ixtg(nixtg,neltg),
802 . msgtype=msgwarning,
803 . anmode=aninfo_blind_2,
806 . i2=ixtg(nixtg,neltg),
814 ipg = tagprt_fric(ip)
817 . ipg,intbuf_fric_tab(intfric)%S_TABPARTS_FRIC,
818 . intbuf_fric_tab(intfric)%TABPARTS_FRIC,ipl )
819 ipartfricm(inrt) = ipl
827 ELSEIF(nelc /= 0)
THEN
833 IF ( thk_part(ip) /= zero .AND. iintthick == 0)
THEN
834 dx=thk_part(ip)*gapscale
835 ELSEIF ( thk(nelc) /= zero .AND. iintthick == 0)
THEN
836 dx=thk(nelc)*gapscale
837 ELSEIF(igtyp == 17 .OR. igtyp == 51 .OR. igtyp == 52)
THEN
838 dx=thk(nelc)*gapscale
840 dx=geo(1,mg)*gapscale
843 gapm_mx=
max(gapm_mx,gapm)
844 gapmn =
min(gapmn,dx)
848 IF(igtyp == 11 .AND. igmat > 0)
THEN
849 IF(slsfac < zero)
THEN
851 ELSEIF (thk(nelc) /= zero .AND. iintthick == 0)
THEN
852 stf(i)=slsfac*thk(nelc)*geo(ipgmat + 2 ,mg)
854 stf(i)=slsfac*geo(1,mg)*geo(ipgmat + 2 ,mg)
856 ELSEIF(igtyp == 52 .OR. ((igtyp == 17 .OR. igtyp == 51) .AND. igmat > 0))
THEN
857 isubstack = iworksh(3,nelc)
858 IF(slsfac < zero)
THEN
861 stf(i)=slsfac*thk(nelc)*pm_stack(2 ,isubstack)
864 IF(slsfac < zero)
THEN
866 ELSEIF ( thk(nelc) /= zero .AND. iintthick == 0)
THEN
867 stf(i)=slsfac*thk(nelc)*pm(20,mt)
869 stf(i)=slsfac*geo(1,mg)*pm(20,mt)
875 . msgtype=msgwarning,
876 . anmode=aninfo_blind_2,
885 . msgtype=msgwarning,
886 . anmode=aninfo_blind_2,
897 ipg = tagprt_fric(ip)
900 . ipg,intbuf_fric_tab(intfric)%S_TABPARTS_FRIC,
901 . intbuf_fric_tab(intfric)%TABPARTS_FRIC,ipl )
902 ipartfricm(inrt) = ipl
908 IF(igap /= 0 .OR. (nty /= 7 .AND. nty /= 20)) gap_m(i)=gapm
914 IF(nels+nelc+neltg == 0)
THEN
920 . anmode=aninfo_blind_2,
928 . anmode=aninfo_blind_2,
938 IF(numels > 0)
DEALLOCATE(tagelems,indexe)
941 . msgtype=msgwarning,
942 . anmode=aninfo_blind_1,
947 . msgtype=msgwarning,
948 . anmode=aninfo_blind_1,
952 IF(ninv > 0 .AND.nint>0)
954 . msgtype=msgwarning,
955 . anmode=aninfo_blind_1,
960 IF(ninv > 0 .AND.nint< 0)
962 . msgtype=msgwarning,
963 . anmode=aninfo_blind_1,
970 DO i=nrt+1,nrt+nrt_ige
972 IF(intth > 0) ieles(i) = 0
973 IF(slsfac < zero)stf(i)=slsfac
976 CALL i4gmx3(x,irect,inrt,gapmx)
980 CALL ineltigeo(x ,irect ,ixs ,nint ,nelig3d ,
981 . inrt ,
area ,noint ,0 ,igrsurf%ELTYP_IGE,
982 . ixig3d ,kxig3d ,igeo ,igrsurf%ELEM_IGE)
986 ipid = kxig3d(2,nelig3d)
990 coin_ige(1) = (px+1)*py+1
991 coin_ige(2) = (px+1)*(py+1)
994 coin_ige(5) = (px+1)*(py+1)*pz+(px+1)*py+1
995 coin_ige(6) = (px+1)*(py+1)*(pz+1)
996 coin_ige(7) = (px+1)*(py+1)*pz+px+1
997 coin_ige(8) = (px+1)*(py+1)*pz+1
999 xc(jj)=x(1,ixig3d(kxig3d(4,nelig3d)+coin_ige(jj)-1))
1000 yc(jj)=x(2,ixig3d(kxig3d(4,nelig3d)+coin_ige(jj)-1))
1001 zc(jj)=x(3,ixig3d(kxig3d(4,nelig3d)+coin_ige(jj)-1))
1004 stf(i)=slsfac*
area*
area*pm(32,mt)/vol
1005 stf(i)=stf(i)*((px+1)*(py+1)+(py+1)*(pz+1)+(pz+1)*(px+1))/3
1009 . msgtype=msgwarning,
1010 . anmode=aninfo_blind_2,
1013 . i2=kxig3d(5,nelig3d),
1014 . c2=
'ISOGEOMETRIC SOLID',
1019 . msgtype=msgwarning,
1020 . anmode=aninfo_blind_2,
1023 . i2=kxig3d(5,nelig3d),
1024 . c2=
'ISOGEOMETRIC SOLID',
1028 ELSEIF(nelig3d == 0)
THEN
1034 . anmode=aninfo_blind_2,
1042 . anmode=aninfo_blind_2,
1060 gap =
min(half*gapmx,gap)
1064 IF (it19 <= 0 .AND. .NOT.type18)
WRITE(iout,1300)gap
1068 IF (gapmin <= 0)
THEN
1075 IF ((inacti /= 7).AND.(gap > 0.5*gapmx) .AND. (irem_gap /= 2))
THEN
1078 . msgtype=msgwarning,
1079 . anmode=aninfo_blind_2,
1092 gapmin =
min(half*gapmx,gapmin)
1094 gapmin = em01 * gapmx
1096 IF (gapmin <= 0)
THEN
1103 IF (it19 <= 0 .AND. .NOT.type18)
WRITE(iout,1300)gapmin
1109 gap =
max(
min(gaps_mx+gapm_mx,gaps_l_mx+gapm_l_mx) ,gapmin)
1111 gap =
max(gaps_mx+gapm_mx,gapmin)
1114 IF ((igap /= 3).AND.(irem_gap /= 2))
THEN
1115 IF(inacti /= 7.AND.gap > half*gapmx .AND. iddlevel == 1)
THEN
1118 . msgtype=msgwarning,
1119 . anmode=aninfo_blind_2,
1128 IF(drad == zero)
THEN
1131 ELSEIF(drad < gap)
THEN
1135 WRITE(iout,2001)drad
1138 IF(drad > gapmx)
THEN
1140 . msgtype=msgwarning,
1141 . anmode=aninfo_blind_2,
1151 IF(intfric > 0)
THEN
1156 DO j= knod2els(nsv(i))+1,knod2els(nsv(i)+1)
1159 ipg = tagprt_fric(ip)
1160 IF(ipg > 0 .AND. ip > ipfmax)
THEN
1162 . ipg,intbuf_fric_tab(intfric)%S_TABPARTS_FRIC,
1163 . intbuf_fric_tab(intfric)%TABPARTS_FRIC,ipl )
1170 IF(ipfmax /= 0)
THEN
1171 ipartfrics(i) = ipflmax
1177 IF(numelc /= 0 .OR. numeltg /= 0)
THEN
1181 DO j= knod2elc(nsv(i))+1,knod2elc(nsv(i)+1)
1184 ipg = tagprt_fric(ip)
1185 IF(ipg > 0 .AND. ip > ipfmax)
THEN
1187 . ipg,intbuf_fric_tab(intfric)%S_TABPARTS_FRIC,
1188 . intbuf_fric_tab(intfric)%TABPARTS_FRIC,ipl )
1196 DO j= knod2eltg(nsv(i))+1,knod2eltg(nsv(i)+1)
1199 ipg = tagprt_fric(ip)
1200 IF(ipg > 0.AND.ip > ipfmax)
THEN
1202 . ipg,intbuf_fric_tab(intfric)%S_TABPARTS_FRIC,
1203 . intbuf_fric_tab(intfric)%TABPARTS_FRIC,ipl )
1211 IF(ipfmax /= 0)
THEN
1212 ipartfrics(i) = ipflmax
1237 gapinf_s =
min(gapinf_s,gap_s(i))
1238 bgapsmx =
max(bgapsmx,gap_s(i))
1240 DO i = 1, nrt+nrt_ige
1241 gapinf_m =
min(gapinf_m,gap_m(i))
1243 gapinf=gapinf_s+gapinf_m
1244 gapinf=
max(gapinf,gapmin)
1246 DEALLOCATE( gap_s_l_tmp )
1248 1300
FORMAT(2x,
'GAP MIN = ',1pg20.13)
1249 2001
FORMAT(2x,
'Maximum distance for radiation computation = ',