38 1 X ,IRECT ,STF ,IXS ,PM ,
39 2 GEO ,NRT ,IXC ,NINT ,STFAC ,
41 4 STFN ,NSN ,MS ,NSV ,IXTG ,
42 5 IGAP ,WA ,GAP_S ,GAP_M ,GAPMIN ,
43 6 GAPSCALE ,IXT ,IXP ,GAPINF ,GAPMAX_S ,
44 9 INACTI ,KNOD2ELS ,KNOD2ELC ,KNOD2ELTG ,NOD2ELS ,
45 A NOD2ELC ,NOD2ELTG ,INTTH,
46 B IELES ,IELEM ,AREAS ,SH4TREE ,SH3TREE ,
47 C IPART ,IPARTC ,IPARTTG ,THK ,THK_PART ,
48 D IXR ,ITAB ,BGAPSMX ,IXS10 ,MSEGTYP ,
49 E NRT_SH ,IXS16 ,IXS20 ,GAP_N ,
50 F ILEV ,GAPMAX_M ,ID,TITR ,IGAP0 ,
51 G PEN_OLD ,IPARTS ,IGEO ,FILLSOL ,
52 H PM_STACK , IWORKSH ,PERCENT_SIZE,GAP_S_L ,GAP_M_L ,
53 I KNOD2EL1D ,NOD2EL1D ,INTFRIC ,TAGPRT_FRIC,IPARTFRICS,
54 J IPARTFRICM,INTBUF_FRIC_TAB,IVIS2 ,GAPM_MX ,GAPS_MX ,
55 K GAPM_L_MX ,GAPS_L_MX ,IPARTSM ,DRAD ,IPARTT ,
56 J IPARTP ,IPARTR ,IELEM_M ,IDEL_SOLID,ELEM_LINKED_TO_SEGMENT,
57 K NIN25 , FLAG_ELEM_INTER25,THK_S,THK_M ,THK_S_SCALE,
64 use element_mod ,
only :nixs,nixc,nixtg,nixt,nixp,nixr
68#include "implicit_f.inc"
75#include "remesh_c.inc"
82 INTEGER NRT, NINT, NTY, NOINT,NSN,IGAP,INTFRIC,
83 . inacti,nrt_sh ,ilev ,igap0,igeo(npropgi,*), ivis2
84 INTEGER IRECT(4,*), IXS(NIXS,*), IXC(NIXC,*),
85 . nsv(*), ixtg(nixtg,*), ixt(nixt,*), ixp(nixp,*),
86 . knod2els(*), knod2elc(*), knod2eltg(*), nod2els(*), nod2elc(*),
88 . sh3tree(ksh3tree,*), sh4tree(ksh4tree,*),ixr(nixr,*) ,
89 . ipart(lipart1,*), ipartc(*), iparttg(*),
90 . itab(*), ixs10(6,*),msegtyp(*), ixs16(*), ixs20(*),
91 . iworksh(3,*), knod2el1d(*),nod2el1d(*),tagprt_fric(*),
92 . ipartfrics(*),ipartfricm(*),ipartsm(*),ieles(*),ielem(*)
95 . stfac, gap, gapscale, gapmin,gapinf, gapmax_s,bgapsmx ,gapmax_m,
96 . percent_size, gapm_mx, gaps_mx, gaps_l_mx, gapm_l_mx,drad
99 . x(3,*), stf(*), pm(npropm,*), geo(npropg,*), stfn(*),
100 . ms(*),wa(*),gap_s(*),gap_m(*),gap_n(4,*),
101 . areas(*),thk(*),thk_part(*),pen_old(5,nsn), fillsol(*),
102 . pm_stack(20,*),gap_s_l(*),gap_m_l(*)
104 INTEGER,
DIMENSION(NUMELT),
INTENT(IN) :: IPARTT
105 INTEGER,
DIMENSION(NUMELP),
INTENT(IN) :: IPARTP
106 INTEGER,
DIMENSION(NUMELR),
INTENT(IN) :: IPARTR
107 CHARACTER(LEN=NCHARTITLE) :: TITR
108 TYPE(INTBUF_FRIC_STRUCT_) INTBUF_FRIC_TAB(*)
109 INTEGER ,
INTENT(INOUT) :: IDEL_SOLID
110 INTEGER ,
INTENT(INOUT) :: IELEM_M(2,NRT+NRT_SH)
111 INTEGER,
DIMENSION(NUMELS),
INTENT(INOUT):: ELEM_LINKED_TO_SEGMENT
112 INTEGER,
INTENT(IN) :: NIN25
113 INTEGER,
INTENT(IN) :: FLAG_ELEM_INTER25(NINTER25,NUMELS)
114 my_real,
INTENT(IN) :: THK_S,THK_M ,THK_S_SCALE,THK_M_SCALE
118 INTEGER NDX, I, , INRT, NELS,
119 . mg, l, nn,n1,n2,n3,n4,ie,
121 . ns,igtyp,nrtt,nnod,ipfmax,ipl,
122 . ipflmax,ipg,nelem,stat
123 INTEGER,
DIMENSION(:),
ALLOCATABLE :: TAGB
127 . dxm, gapmx, gapmn,
area, dx,
128 . sx1,sy1,sz1,sx2,sy2,sz2,sx3,sy3,sz3,
131 INTEGER,
DIMENSION(:),
ALLOCATABLE ::INRTIE
139 ALLOCATE(tagb(numnod))
167 nelem = numelc+numeltg+numels+numelr
168 + + numelp+numelt+numelq+numelr+numelx+numelig3d
169 ALLOCATE(inrtie(nelem),stat=stat)
170 IF (stat /= 0)
CALL ancmsg(msgid=268,anmode=aninfo,
186 IF(n1 /= n2 .AND. n1 /= 0)
187 . xl=
min(xl,sqrt((x(1,n1)-x(1,n2))**2+(x(2,n1)-x(2,n2))**2+
188 . (x(3,n1)-x(3,n2))**2))
191 gap_m_l(i)=
min(percent_size*xl,gapmax_m)
192 gapm_l_mx =
max(gapm_l_mx,gap_m_l(i))
195 wa(irect(j,i)) =
min(wa(irect(j,i)),percent_size*xl)
200 gap_s_l(i)=wa(nsv(i))
201 gap_s_l(i)=
min(gap_s_l(i),gapmax_s)
215 IF ( igap == 5.AND.thk_s /= zero)
THEN
217 ELSEIF ( thk_part(ip) /= zero .AND. iintthick == 0)
THEN
219 ELSEIF ( thk(i) /= zero .AND. iintthick == 0)
THEN
221 ELSEIF(igtyp == 17 .OR. igtyp == 51 .OR.igtyp ==52)
THEN
226 wa(ixc(2,i))=
max(wa(ixc(2,i)),dx)
227 wa(ixc(3,i))=
max(wa(ixc(3,i)),dx)
228 wa(ixc(4,i))=
max(wa(ixc(4,i)),dx)
229 wa(ixc(5,i))=
max(wa(ixc(5,i)),dx)
235 IF ( igap == 5.AND.thk_s /= zero )
THEN
237 ELSEIF ( thk_part(ip) /= zero .AND. iintthick == 0)
THEN
239 ELSEIF ( thk(numelc+i) /= zero .AND. iintthick == 0)
THEN
240 dx=half*thk(numelc+i)
241 ELSEIF(igtyp == 17 .OR. igtyp == 51 .OR. igtyp ==52)
THEN
242 dx=half*thk(numelc+i)
246 wa(ixtg(2,i))=
max(wa(ixtg(2,i)),dx)
247 wa(ixtg(3,i))=
max(wa(ixtg(3,i)),dx)
248 wa(ixtg(4,i))=
max(wa(ixtg(4,i)),dx)
257 IF (msegtyp(i) /= 0)
THEN
265 IF (tagb(i)==0) wa(i)=0
272 IF ( igap == 5.AND.thk_s /= zero)
THEN
274 ELSEIF ( thk_part(ip) > zero )
THEN
277 dx=half*sqrt(geo(1,mg))
279 wa(ixt(2,i))=
max(wa(ixt(2,i)),dx)
280 wa(ixt(3,i))=
max(wa(ixt(3,i)),dx)
285 IF ( igap == 5.AND.thk_s /= zero)
THEN
287 ELSEIF ( thk_part(ip) > zero )
THEN
290 dx=half*sqrt(geo(1,mg))
292 wa(ixp(2,i))=
max(wa(ixp(2,i)),dx)
293 wa(ixp(3,i))=
max(wa(ixp(3,i)),dx)
299 IF ( igap == 5.AND.thk_s /= zero)
THEN
301 wa(ixr(2,i))=
max(wa(ixr(2,i)),dx)
302 wa(ixr(3,i))=
max(wa(ixr(3,i)),dx)
303 IF (igtyp==12) wa(ixr(4,i))=
max(wa(ixr(4,i)),dx)
304 ELSEIF ( thk_part(ip) > zero )
THEN
306 wa(ixr(2,i))=
max(wa(ixr(2,i)),dx)
307 wa(ixr(3,i))=
max(wa(ixr(3,i)),dx)
308 IF (igtyp==12) wa(ixr(4,i))=
max(wa(ixr(4,i)),dx)
312 IF ( igap == 5.AND.thk_s /= zero)
THEN
313 gap_s(i)= thk_s_scale*wa(nsv(i))
315 gap_s(i)=gapscale * wa(nsv(i))
317 gap_s(i)=
min(gap_s(i),gapmax_s)
326 CALL i25bord(nrt ,irect ,tagb )
336 IF( tagb(ns) > 0 ) gap_s(i) = zero
342 gaps_mx=
max(gaps_mx,gap_s(i))
343 gaps_mn=
min(gaps_mn,gap_s(i))
345 gaps_mx =
max(gaps_mx,gap_s(i))
346 gaps_l_mx =
max(gaps_l_mx,gap_s_l(i))
347 gaps_mn =
min(gaps_mn,gap_s(i),gap_s_l(i))
360 DO j= knod2els(nsv(i))+1,knod2els(nsv(i)+1)
363 ipg = tagprt_fric(ip)
364 IF(ipg > 0.AND.ip>ipfmax)
THEN
366 . ipg,intbuf_fric_tab(intfric)%S_TABPARTS_FRIC,
367 . intbuf_fric_tab(intfric)%TABPARTS_FRIC,ipl )
377 ipartfrics(i) = ipflmax
383 IF(numelc/=0.OR.numeltg/=0)
THEN
387 DO j= knod2elc(nsv(i))+1,knod2elc(nsv(i)+1)
390 ipg = tagprt_fric(ip)
391 IF(ipg > 0.AND.ip>ipfmax)
THEN
393 . ipg,intbuf_fric_tab(intfric)%S_TABPARTS_FRIC,
394 . intbuf_fric_tab(intfric)%TABPARTS_FRIC,ipl )
402 DO j= knod2eltg(nsv(i))+1,knod2eltg(nsv(i)+1)
405 ipg = tagprt_fric(ip)
406 IF(ipg > 0.AND.ip>ipfmax)
THEN
408 . ipg,intbuf_fric_tab(intfric)%S_TABPARTS_FRIC,
409 . intbuf_fric_tab(intfric)%TABPARTS_FRIC,ipl )
419 ipartfrics(i) = ipflmax
434 1 x ,irect ,stf ,ixs ,pm ,
435 2 geo ,nrt ,ixc ,nint ,stfac ,
436 3 nty ,gap ,noint ,stfn ,nsn ,
437 4 ms ,nsv ,ixtg ,igap ,gap_m ,
440 9 knod2els ,knod2elc ,knod2eltg ,nod2els ,
441 a nod2elc,nod2eltg ,intth,
442 b ieles ,ielem ,areas ,sh4tree ,sh3tree ,
443 c ipart ,ipartc ,iparttg ,thk ,thk_part ,
444 d ixr ,itab ,bgapsmx ,ixs10 ,msegtyp ,
445 e ixs16 ,ixs20 ,gap_n ,gaps_mx ,gapm_mx ,
446 f gapmx , gapmn ,gapscale ,gapmax_m,
447 g id ,titr ,igeo ,fillsol ,nrtt ,
448 h pm_stack, iworksh,intfric,tagprt_fric,ipartfrics,
449 i ipartfricm,iparts,intbuf_fric_tab,ipartsm,inrtie,
450 j ivis2 ,ielem_m ,idel_solid,elem_linked_to_segment,
451 k nin25 ,flag_elem_inter25 ,thk_m ,thk_m_scale)
456 gapmx=
min(gapmx,gapmax_m)
463 gapmin =
min(half*gapmx,gapmin)
476 gapmx=
max(gapmx,gap_m(i))
477 gapmn=
min(gapmn,gap_m(i))
481 WRITE(iout,1400)gaps_mn,gaps_mx
482 WRITE(iout,1500)gapmn,gapm_mx
488 gap =
min(gaps_mx+gapm_mx,gaps_l_mx+gapm_l_mx)
490 gap = gaps_mx+gapm_mx
504 bgapsmx =
max(bgapsmx,gap_s(i))
509 IF(msegtyp(i)/=0) gapinf =
min(gapinf,gap_m(i))
511 gapinf=
max(gapinf,gapmin)
514 CALL insol3et(x ,irect ,ixs ,nint ,nels,i ,
515 .
area ,noint ,knod2els,nod2els,ixs10 ,
519 gap_n(1,i) = three*one_over_8*gap_n(1,i)
520 stf(i) = sixteen*stf(i)
521 ELSEIF (nnod==16)
THEN
522 gap_n(1,i) = gap_n(1,i)/4
527 1 x ,irect ,nrt ,nsn ,nsv ,pen_old,stf )
530 IF(intth > 0 .OR. ivis2==-1)
THEN
537 DO j= knod2elc(nsv(i))+1,knod2elc(nsv(i)+1)
539 sx1 = x(1,ixc(4,ie)) - x(1,ixc(2,ie))
540 sy1 = x(2,ixc(4,ie)) - x(2,ixc(2,ie))
541 sz1 = x(3,ixc(4,ie)) - x(3,ixc(2,ie))
542 sx2 = x(1,ixc(5,ie)) - x(1,ixc(3,ie))
543 sy2 = x(2,ixc(5,ie)) - x(2,ixc(3,ie))
544 sz2 = x(3,ixc(5,ie)) - x(3,ixc(3,ie))
545 sx3 = sy1*sz2 - sz1*sy2
546 sy3 = sz1*sx2 - sx1*sz2
547 sz3 = sx1*sy2 - sy1*sx2
549 . + one_over_8*sqrt(sx3*sx3+sy3*sy3+sz3*sz3)
556 DO j= knod2eltg(nsv(i))+1,knod2eltg(nsv(i)+1)
558 sx1 = x(1,ixtg(3,ie)) - x(1,ixtg(2,ie))
559 sy1 = x(2,ixtg(3,ie)) - x(2,ixtg(2,ie))
560 sz1 = x(3,ixtg(3,ie)) - x(3,ixtg(2,ie))
561 sx2 = x(1,ixtg(4,ie)) - x(1,ixtg(2,ie))
562 sy2 = x(2,ixtg(4,ie)) - x(2,ixtg(2,ie))
563 sz2 = x(3,ixtg(4,ie)) - x(3,ixtg(2,ie))
564 sx3 = sy1*sz2 - sz1*sy2
565 sy3 = sz1*sx2 - sx1*sz2
566 sz3 = sx1*sy2 - sy1*sx2
568 . + one_over_6*sqrt(sx3*sx3+sy3*sy3+sz3*sz3)
571 ieles(i) = ixtg(1,ie)
578 DO j= knod2elc(nsv(i))+1,knod2elc(nsv(i)+1)
584 IF(mylev < 0) mylev=-(mylev+1)
587 sx1 = x(1,ixc(4,ie)) - x(1,ixc(2,ie))
588 sy1 = x(2,ixc(4,ie)) - x(2,ixc(2,ie))
589 sz1 = x(3,ixc(4,ie)) - x(3,ixc(2,ie))
590 sx2 = x(1,ixc(5,ie)) - x(1,ixc(3,ie))
591 sy2 = x(2,ixc(5,ie)) - x(2,ixc(3,ie))
592 sz2 = x(3,ixc(5,ie)) - x(3,ixc(3,ie))
593 sx3 = sy1*sz2 - sz1*sy2
594 sy3 = sz1*sx2 - sx1*sz2
595 sz3 = sx1*sy2 - sy1*sx2
597 . + one_over_8*sqrt(sx3*sx3+sy3*sy3+sz3*sz3)
606 DO j= knod2eltg(nsv(i))+1,knod2eltg(nsv(i)+1)
612 IF(mylev < 0) mylev=-(mylev+1)
615 sx1 = x(1,ixtg(3,ie)) - x(1,ixtg(2,ie))
616 sy1 = x(2,ixtg(3,ie)) - x(2,ixtg(2,ie))
617 sz1 = x(3,ixtg(3,ie)) - x(3,ixtg(2,ie))
618 sx2 = x(1,ixtg(4,ie)) - x(1,ixtg(2,ie))
619 sy2 = x(2,ixtg(4,ie)) - x(2,ixtg(2,ie))
620 sz2 = x(3,ixtg(4,ie)) - x(3,ixtg(2,ie))
621 sx3 = sy1*sz2 - sz1*sy2
622 sy3 = sz1*sx2 - sx1*sz2
623 sz3 = sx1*sy2 - sy1*sx2
625 . + one_over_6*sqrt(sx3*sx3+sy3*sy3+sz3*sz3)
628 ieles(i) = ixtg(1,ie)
645 DO j= knod2els(nsv(i))+1,knod2els(nsv(i)+1)
655 sx1 = x(1,n3) - x(1,n1)
656 sy1 = x(2,n3) - x(2,n1)
657 sz1 = x(3,n3) - x(3,n1)
658 sx2 = x(1,n4) - x(1,n2)
659 sy2 = x(2,n4) - x(2,n2)
660 sz2 = x(3,n4) - x(3,n2)
661 sx3 = sy1*sz2 - sz1*sy2
662 sy3 = sz1*sx2 - sx1*sz2
663 sz3 = sx1*sy2 - sy1*sx2
664 area = one_over_8*sqrt(sx3*sx3+sy3*sy3+sz3*sz3)
665 areas(i) = areas(i) +
area
669 sx1 = x(1,n2) - x(1,n1)
670 sy1 = x(2,n2) - x(2,n1)
671 sz1 = x(3,n2) - x(3,n1)
672 sx2 = x(1,n3) - x(1,n1)
673 sy2 = x(2,n3) - x(2,n1)
674 sz2 = x(3,n3) - x(3,n1)
675 sx3 = sy1*sz2 - sz1*sy2
676 sy3 = sz1*sx2 - sx1*sz2
677 sz3 = sx1*sy2 - sy1*sx2
678 area = one_over_6*sqrt(sx3*sx3+sy3*sy3+sz3*sz3)
679 areas(i) = areas(i) +
area
702 . msgtype=msgwarning,
703 . anmode=aninfo_blind_2,
712 IF(intth > 0)
DEALLOCATE(inrtie)
717 1300
FORMAT(2x,
'GAP MIN = ',1pg20.13)
718 1400
FORMAT(2x,
'MIN,MAX OF SECONDARY GAP: ',2(1pg20.13))
719 1500
FORMAT(2x,
'MIN,MAX OF MAIN GAP: ',2(1pg20.13)/)
720 2001
FORMAT(2x,
'Maximum distance for radiation computation = ',
738 1 X ,IRECT ,STF ,IXS ,PM ,
739 2 GEO ,NRT ,IXC ,NINT ,STFAC ,
740 3 NTY ,GAP ,NOINT ,STFN ,NSN ,
741 4 MS ,NSV ,IXTG ,IGAP ,GAP_M ,
744 9 KNOD2ELS ,KNOD2ELC ,KNOD2ELTG ,NOD2ELS ,
745 A NOD2ELC,NOD2ELTG ,INTTH,
746 B IELES ,IELEM ,AREAS ,SH4TREE ,SH3TREE ,
747 C IPART ,IPARTC ,IPARTTG ,THK ,THK_PART ,
748 D IXR ,ITAB ,BGAPSMX ,IXS10 ,MSEGTYP ,
749 E IXS16 ,IXS20 ,GAP_N ,GAPS1 ,GAPS2 ,
750 F GAPMX , GAPMN ,GAPSCALE ,GAPMAX_M,
751 G ID ,TITR ,IGEO ,FILLSOL ,NRTT ,
752 H PM_STACK, IWORKSH,INTFRIC,TAGPRT_FRIC,IPARTFRICS,
753 I IPARTFRICM,IPARTS,INTBUF_FRIC_TAB,IPARTSM,INRTIE,
754 J IVIS2 ,IELEM_M ,IDEL_SOLID,ELEM_LINKED_TO_SEGMENT,
755 F NIN25 ,FLAG_ELEM_INTER25,THK_M ,THK_M_SCALE)
761 use element_mod ,
only : nixs,nixc,nixtg,nixt,nixp,nixr
765#include "implicit_f.inc"
769#include "com01_c.inc"
770#include "com04_c.inc"
771#include "param_c.inc"
772#include "scr17_c.inc"
773#include "scr08_c.inc"
777 INTEGER NRT, NINT, NTY, NOINT,NSN,IGAP, NDX,INTFRIC
778 INTEGER IRECT(4,*), IXS(NIXS,*), IXC(NIXC,*),
779 . NSV(*), IXTG(NIXTG,*), IXT(NIXT,*), IXP(NIXP,*),
780 . KNOD2ELS(*), KNOD2ELC(*), KNOD2ELTG(*), NOD2ELS(*), NOD2ELC(*),
781 . NOD2ELTG(*), IELES(*), INTTH, IELEM(*),
782 . SH3TREE(KSH3TREE,*), SH4TREE(KSH4TREE,*),IXR(NIXR,*) ,
783 . IPART(LIPART1,*), IPARTC(*), IPARTTG(*),IPARTS(*),
784 . ITAB(*), IXS10(6,*),MSEGTYP(*), IXS16(*), IXS20(*),
785 . IGEO(NPROPGI,*),NRTT,IWORKSH(3,*),TAGPRT_FRIC(*),IPARTFRICS(*),
786 . IPARTFRICM(*) ,IPARTSM(*),INRTIE(*)
787 INTEGER ,
INTENT(IN) :: IVIS2
789 . STFAC, GAP,BGAPSMX,GAPS1 ,GAPS2,GAPMX ,GAPMN ,GAPSCALE
791 . X(3,*), STF(*), PM(NPROPM,*), GEO(NPROPG,*), STFN(*),
792 . MS(*),GAP_M(*),GAP_N(4,*),
793 . AREAS(*),THK(*),THK_PART(*),SLSFAC,DXM ,GAPMAX_M, FILLSOL(*),
796 CHARACTER(LEN=NCHARTITLE) :: TITR
797 TYPE(intbuf_fric_struct_) INTBUF_FRIC_TAB(*)
798 INTEGER ,
INTENT(INOUT) :: IELEM_M(2,NRTT)
799 INTEGER ,
INTENT(INOUT) :: IDEL_SOLID
800 INTEGER,
DIMENSION(NUMELS),
INTENT(INOUT):: ELEM_LINKED_TO_SEGMENT
801 INTEGER,
INTENT(IN) :: NIN25
802 INTEGER,
INTENT(INOUT) :: FLAG_ELEM_INTER25(NINTER25,NUMELS)
803 my_real,
INTENT(IN) :: THK_M ,THK_M_SCALE
807 INTEGER I, J, NELS, MT, JJ, JJJ, NELC,
809 . IP,NREV,IGTYP,IPGMAT,IGMAT,
810 . ISUBSTACK,IPL,IPG,ISOL,NINV,NSOL_INT,NELS2,MT2,OFC,OFTG,ICONTR
811 INTEGER,
DIMENSION(:),
ALLOCATABLE :: TAGELEMS,INDEXE
812 LOGICAL :: PRINT_ERROR
813 INTEGER,
DIMENSION(4) :: NODE_ID
816 .
area, vol, dx, gapm,
818 . stc,stf2,stf1,vol2,bulk
825 oftg=ofc+numelc+numelt+numelp+numelr
829 CALL my_alloc(tagelems,numels)
831 CALL my_alloc(indexe,numels)
840 IF(intth > 0 ) ielem(i) = 0
841 IF(slsfac<zero)stf(i)=slsfac
844 CALL i4gmx3(x,irect,i,gapmx)
848 print_error = .false.
849 CALL insol3d(x,irect,ixs,nint,nels,i ,
850 .
area,noint,knod2els ,nod2els ,0,
851 . ixs10,ixs16,ixs20,tagelems,indexe,
852 . ninv ,ielem_m(1,i),
853 . elem_linked_to_segment ,print_error,
854 . nin25,nty, flag_elem_inter25 )
857 node_id(1:4) = itab(irect(1:4,i))
860 . msgtype=msgwarning,
861 . anmode=aninfo_blind_1,
875 IF(intth > 0 ) ielem(i) = mt
876 IF(intth > 0 ) inrtie(nels) = i
890 stf(i)=slsfac*fillsol(nels)*
area*
area*bulk/vol
891 IF(ielem_m(2,i) > 0)
THEN
901 stf2 = slsfac*fillsol(nels2)*
area*
area*pm(32,mt2)/vol2
903 stf(i) = half*(stf2+stf1)
908 . msgtype=msgwarning,
909 . anmode=aninfo_blind_2,
918 . msgtype=msgwarning,
919 . anmode=aninfo_blind_2,
929 IF(ielem_m(2,i) > 0) gap_n(1,i) = half*(gap_n(1,i) + vol2/
area)
930 IF(ielem_m(2,i) > 0) nsol_int = nsol_int + 1
932 IF(nels>numels8.AND.nels<=numels8+numels10)
THEN
933 gap_n(1,i) = three*one_over_8*gap_n(1,i)
934 stf(i) = sixteen*stf(i)
935 ELSEIF(nels>numels8+numels10+numels20.AND.nels<=numels8+numels10+numels20+numels16)
THEN
936 gap_n(1,i) = gap_n(1,i)/4
943 ipg = tagprt_fric(ip)
946 . ipg,intbuf_fric_tab(intfric)%S_TABPARTS_FRIC,
947 . intbuf_fric_tab(intfric)%TABPARTS_FRIC,ipl )
952 IF(ielem_m(2,i) > 0) stf(i) = - stf(i)
959 CALL incoq3(irect,ixc ,ixtg ,nint ,nelc ,
960 . neltg,i ,geo ,pm ,knod2elc ,
961 . knod2eltg ,nod2elc ,nod2eltg,thk,nty,igeo,
962 . pm_stack , iworksh)
970 ielem_m(1,i) = oftg+neltg
973 IF(intth > 0 ) ielem(i) = mt
974 IF ( igap == 5.AND.thk_m /= zero)
THEN
976 ELSEIF ( thk_part(ip) /= zero .AND. iintthick == 0)
THEN
977 dx=thk_part(ip)*gapscale
978 ELSEIF ( thk(numelc+neltg) /= zero .AND. iintthick == 0)
THEN
979 dx=thk(numelc+neltg)*gapscale
980 ELSEIF(igtyp == 17 .OR. igtyp == 51 .OR. igtyp ==52)
THEN
981 dx=thk(numelc+neltg)*gapscale
983 dx=geo(1,mg)*gapscale
986 gaps2=
max(gaps2,gapm)
987 gapmn =
min(gapmn,dx)
990 gap_m(i)=
max(gap_m(i),gapm)
995 ipg = tagprt_fric(ip)
998 . ipg,intbuf_fric_tab(intfric)%S_TABPARTS_FRIC,
999 . intbuf_fric_tab(intfric)%TABPARTS_FRIC,ipl )
1006 IF(igtyp ==11 .AND. igmat > 0 )
THEN
1007 IF ( thk(numelc+neltg) /= zero .AND. iintthick == 0)
THEN
1008 stc=slsfac*thk(numelc+neltg)*geo(ipgmat + 2 ,mg)
1010 stc=slsfac*geo(1,mg)*geo(ipgmat + 2 ,mg)
1012 ELSEIF(igtyp ==52.OR.
1013 . ((igtyp == 17 .OR. igtyp == 51) .AND. igmat > 0))
THEN
1017 IF ( thk(numelc+neltg) /= zero .AND. iintthick == 0)
THEN
1018 stc=slsfac*thk(numelc+neltg)*pm(20,mt)
1019 ELSEIF(igtyp == 17 .OR. igtyp == 51)
THEN
1020 stc=slsfac*thk(numelc+neltg)*pm(20,mt)
1022 stc=slsfac*geo(1,mg)*pm(20,mt)
1026 stf(i)=
max(stf(i),stc)
1027 IF (msegtyp(i) > 0)
THEN
1029 IF(j > nrtt) j=j-nrtt
1032 IF(intth > 0 ) ielem(j) = ielem(i)
1033 IF(intfric > 0) ipartfricm(j)=ipartfricm(i)
1034 ielem_m(1,j) = ielem_m(1,i)
1036 IF(intfric > 0)ipartsm(j) = ip
1042 . msgtype=msgwarning,
1043 . anmode=aninfo_blind_2,
1046 . i2=ixtg(nixtg,neltg),
1052 . msgtype=msgwarning,
1053 . anmode=aninfo_blind_2,
1056 . i2=ixtg(nixtg,neltg),
1061 ELSEIF(nelc/=0)
THEN
1067 ielem_m(1,i) = ofc+nelc
1070 IF(intth > 0 ) ielem(i) = mt
1071 IF ( igap == 5.AND.thk_m /= zero)
THEN
1072 dx=thk_m_scale*thk_m
1073 ELSEIF (thk_part(ip) /= zero .AND. iintthick == 0)
THEN
1074 dx=thk_part(ip)*gapscale
1075 ELSEIF ( thk(nelc) /= zero .AND. iintthick == 0)
THEN
1076 dx=thk(nelc)*gapscale
1077 ELSEIF(igtyp == 17 .OR. igtyp == 51 .OR. igtyp ==52)
THEN
1078 dx=thk(nelc)*gapscale
1080 dx=geo(1,mg)*gapscale
1083 gaps2=
max(gaps2,gapm)
1084 gapmn =
min(gapmn,dx)
1087 gap_m(i)=
max(gap_m(i),gapm)
1089 IF(intfric > 0)
THEN
1092 ipg = tagprt_fric(ip)
1095 . ipg,intbuf_fric_tab(intfric)%S_TABPARTS_FRIC,
1096 . intbuf_fric_tab(intfric)%TABPARTS_FRIC,ipl )
1103 IF(igtyp == 11 .AND. igmat > 0)
THEN
1104 IF ( thk(nelc) /= zero .AND. iintthick == 0)
THEN
1105 stc=slsfac*thk(nelc)*geo(ipgmat + 2 ,mg)
1107 stc=slsfac*geo(1,mg)*geo(ipgmat + 2 ,mg)
1109 ELSEIF(igtyp ==52.OR.
1110 . ((igtyp == 17 .OR. igtyp == 51) .AND. igmat > 0))
THEN
1111 isubstack = iworksh(3,nelc)
1112 stc=slsfac*thk(nelc)*pm_stack(2,isubstack)
1114 IF ( thk(nelc) /= zero .AND. iintthick == 0)
THEN
1115 stc=slsfac*thk(nelc)*pm(20,mt)
1116 ELSEIF(igtyp == 17 .OR. igtyp == 51)
THEN
1117 stc=slsfac*thk(nelc)*pm(20,mt)
1119 stc=slsfac*geo(1,mg)*pm(20,mt)
1123 stf(i)=
max(stf(i),stc)
1124 IF (msegtyp(i) > 0)
THEN
1126 IF(j > nrtt) j=j-nrtt
1129 IF(intth > 0 ) ielem(j) = ielem(i)
1130 IF(intfric > 0) ipartfricm(j)=ipartfricm(i)
1131 ielem_m(1,j) = ielem_m(1,i)
1133 IF(intfric > 0) ipartsm(j) = ip
1139 . msgtype=msgwarning,
1140 . anmode=aninfo_blind_2,
1143 . i2=ixc(nixc,nelc),
1149 . msgtype=msgwarning,
1150 . anmode=aninfo_blind_2,
1153 . i2=ixc(nixc,nelc),
1160 IF(nels+nelc+neltg==0)
THEN
1165 . anmode=aninfo_blind_2,
1173 . anmode=aninfo_blind_2,
1181 IF(numels > 0)
DEALLOCATE(tagelems,indexe)
1184 . msgtype=msgwarning,
1185 . anmode=aninfo_blind_1,
1190 . msgtype=msgwarning,
1191 . anmode=aninfo_blind_1,
1195 IF(ninv > 0 .AND.nint>0)
1196 .
CALL ancmsg(msgid=3023,
1197 . msgtype=msgwarning,
1198 . anmode=aninfo_blind_1,
1203 IF(ninv > 0 .AND.nint< 0)
1204 .
CALL ancmsg(msgid=3025,
1205 . msgtype=msgwarning,
1206 . anmode=aninfo_blind_1,
1211 IF(ivis2 ==-1.AND.isol /=0)
THEN
1214 . anmode=aninfo_blind_2,
1223 IF(nsol_int == 0)
THEN
1229 1400
FORMAT(i10,
' MAIN SEGMENTS',
' OF INTERFACE',i10,
1230 +
' ARE REVERSED THE NORMAL DIRECTION')
subroutine i25gapm(x, irect, stf, ixs, pm, geo, nrt, ixc, nint, stfac, nty, gap, noint, stfn, nsn, ms, nsv, ixtg, igap, gap_m, ixt, ixp, slsfac, dxm, ndx, knod2els, knod2elc, knod2eltg, nod2els, nod2elc, nod2eltg, intth, ieles, ielem, areas, sh4tree, sh3tree, ipart, ipartc, iparttg, thk, thk_part, ixr, itab, bgapsmx, ixs10, msegtyp, ixs16, ixs20, gap_n, gaps1, gaps2, gapmx, gapmn, gapscale, gapmax_m, id, titr, igeo, fillsol, nrtt, pm_stack, iworksh, intfric, tagprt_fric, ipartfrics, ipartfricm, iparts, intbuf_fric_tab, ipartsm, inrtie, ivis2, ielem_m, idel_solid, elem_linked_to_segment, nin25, flag_elem_inter25, thk_m, thk_m_scale)
subroutine i25sti3(x, irect, stf, ixs, pm, geo, nrt, ixc, nint, stfac, nty, gap, noint, stfn, nsn, ms, nsv, ixtg, igap, wa, gap_s, gap_m, gapmin, gapscale, ixt, ixp, gapinf, gapmax_s, inacti, knod2els, knod2elc, knod2eltg, nod2els, nod2elc, nod2eltg, intth, ieles, ielem, areas, sh4tree, sh3tree, ipart, ipartc, iparttg, thk, thk_part, ixr, itab, bgapsmx, ixs10, msegtyp, nrt_sh, ixs16, ixs20, gap_n, ilev, gapmax_m, id, titr, igap0, pen_old, iparts, igeo, fillsol, pm_stack, iworksh, percent_size, gap_s_l, gap_m_l, knod2el1d, nod2el1d, intfric, tagprt_fric, ipartfrics, ipartfricm, intbuf_fric_tab, ivis2, gapm_mx, gaps_mx, gapm_l_mx, gaps_l_mx, ipartsm, drad, ipartt, ipartp, ipartr, ielem_m, idel_solid, elem_linked_to_segment, nin25, flag_elem_inter25, thk_s, thk_m, thk_s_scale, thk_m_scale)