36 1 X ,IRECT ,STF ,IXS ,PM ,
37 2 GEO ,NRT ,IXC ,NINT ,STFAC ,
39 4 STFN ,NSN ,MS ,NSV ,IXTG ,
40 5 IGAP ,WA ,GAP_S ,GAP_M ,GAPMIN,
41 6 IXT ,IXP ,GAPINF,GAPMAX_S,
42 9 INACTI ,KNOD2ELS ,KNOD2ELC ,KNOD2ELTG ,NOD2ELS ,
43 A NOD2ELC,NOD2ELTG ,IGRSURF ,INTTH,
44 B IELES ,IELEC ,AREAS ,SH4TREE ,SH3TREE ,
45 C IPART ,IPARTC ,IPARTTG ,THK ,THK_PART ,
46 D IXR ,ITAB ,BGAPSMX ,IXS10 ,MSEGTYP ,
47 E NRT_SH ,IXS16 ,IXS20 ,GAP_N ,MVOISN ,
48 F ILEV ,IGRSURF2 ,GAPMAX_M ,ID,TITR ,IGAP0 ,
49 G PEN_OLD,IPARTNS ,IPARTS ,IGEO ,FILLSOL ,
50 H PM_STACK, IWORKSH ,INTFRIC ,TAGPRT_FRIC,IPARTFRICS,
51 G IPARTFRICM,INTBUF_FRIC_TAB ,INTNITSCHE,NRTS,IRECTS,
52 I IELNRTS ,ADRECTS ,FACNRTS ,NMN ,MSR ,
53 J IPARTT ,IPARTP ,IPARTR ,ELEM_LINKED_TO_SEGMENT,
54 K IGSTI ,FLAG_ELEM_INTER25 )
65#include "implicit_f.inc"
72#include "remesh_c.inc"
79 INTEGER NRT, NINT, , NOINT,NSN,IGAP,INTFRIC,NMN,IGSTI,
80 . inacti,nrt_sh ,ilev ,igap0,intnitsche,nrts,igeo(npropgi,*)
81 INTEGER IRECT(4,*), IXS(NIXS,*), IXC(NIXC,*),
82 . NSV(*), IXTG(NIXTG,*), IXT(NIXT,*), IXP(NIXP,*),
83 . KNOD2ELS(*), KNOD2ELC(*), KNOD2ELTG(*), NOD2ELS(*), NOD2ELC(*),
84 . NOD2ELTG(*), IELES(*), INTTH, IELEC(*),
85 . SH3TREE(KSH3TREE,*), SH4TREE(KSH4TREE,*),IXR(NIXR,*) ,
86 . IPART(LIPART1,*), (*), IPARTTG(*),
87 . ITAB(*), IXS10(6,*),MSEGTYP(*), IXS16(8,*), IXS20(12,*),MVOISN(4,*),
88 . IWORKSH(3,*),TAGPRT_FRIC(*),IPARTFRICS(*),(*),
89 . IRECTS(4,*),IELNRTS(*),ADRECTS(4,*),(*),MSR(*)
92 . , GAP,GAPMIN,, GAPMAX_S, ,GAPMAX_M
95 . X(3,*), STF(*), PM(NPROPM,*), GEO(NPROPG,*), STFN(*),
96 . MS(*),WA(*),GAP_S(*),GAP_M(*),GAP_N(12,*),
97 . AREAS(*),THK(*),THK_PART(*),PEN_OLD(5,NSN), FILLSOL(*),
99 INTEGER ID,IPARTNS(*),IPARTS(*)
100 INTEGER,
DIMENSION(NUMELT),
INTENT(IN) :: IPARTT
101 INTEGER,
DIMENSION(NUMELP),
INTENT(IN) :: IPARTP
102 INTEGER,
DIMENSION(NUMELR),
INTENT(IN) :: IPARTR
103 INTEGER,
DIMENSION(NUMELS),
INTENT(INOUT):: ELEM_LINKED_TO_SEGMENT
104 CHARACTER(LEN=NCHARTITLE) :: TITR
105 TYPE(INTBUF_FRIC_STRUCT_) INTBUF_FRIC_TAB(*)
106 TYPE (SURF_) :: IGRSURF
107 TYPE (SURF_) :: IGRSURF2
108 INTEGER,
INTENT(IN) :: FLAG_ELEM_INTER25(NINTER25,NUMELS)
112 INTEGER NDX, I, J, INRT, NELS, MT, JJ, JJJ, NELC,
113 . mg, num, npt, ll, l, nn, neltg,n1,n2,n3,n4,ie,
114 . ip, nlev, mylev, k, p, r, t,nrt1,nrt2,nshif,
115 . ns,igtyp,nrtt,ipl,ipfmax,
116 . ipflmax,nm,nel,fc,perm,nshiff,n,ipg
118 INTEGER JPERM(4) ,FACES(4,6),TAB1(4),TAB2(4),FACES10(3,16)
121 . dxm, gapmx, gapmn,
area, vol, dx,gaps1,gaps2, gapm, ddx,
122 . gaptmp, gapscale,sx1,sy1,sz1,sx2,sy2,sz2,sx3,sy3,sz3,
124 INTEGER,
DIMENSION(:),
ALLOCATABLE ::TAGNOD,TAGB
132 DATA faces10/1,11,14,
173 ALLOCATE(tagb(numnod))
181 IF ( thk_part(ip) /= zero .AND. iintthick == 0)
THEN
183 ELSEIF ( thk(i) /= zero .AND. iintthick == 0)
THEN
185 ELSEIF(igtyp == 17 .OR. igtyp ==51 .OR. igtyp ==52)
THEN
190 wa(ixc(2,i))=
max(wa(ixc(2,i)),dx)
191 wa(ixc(3,i))=
max(wa(ixc(3,i)),dx)
192 wa(ixc(4,i))=
max(wa(ixc(4,i)),dx)
193 wa(ixc(5,i))=
max(wa(ixc(5,i)),dx)
199 IF ( thk_part(ip) /= zero .AND. iintthick == 0
THEN
201 ELSEIF ( thk(numelc+i) /= zero .AND. iintthick == 0)
THEN
202 dx=half*thk(numelc+i)
203 ELSEIF(igtyp == 17 .OR. igtyp ==51 .OR. igtyp ==52)
THEN
204 dx=half*thk(numelc+i)
208 wa(ixtg(2,i))=
max(wa(ixtg(2,i)),dx)
209 wa(ixtg(3,i))=
max(wa(ixtg(3,i)),dx)
210 wa(ixtg(4,i))=
max(wa(ixtg(4,i)),dx)
226 IF (tagb(i)==0) wa(i)=0
233 IF ( thk_part(ip) > zero )
THEN
236 dx=half*sqrt(geo(1,mg))
238 wa(ixt(2,i))=
max(wa(ixt(2,i)),dx)
239 wa(ixt(3,i))=
max(wa(ixt(3,i)),dx)
244 IF ( thk_part(ip) > zero )
THEN
247 dx=half*sqrt(geo(1,mg))
249 wa(ixp(2,i))=
max(wa(ixp(2,i)),dx)
250 wa(ixp(3,i))=
max(wa(ixp(3,i)),dx)
254 IF ( thk_part(ip) > zero )
THEN
258 wa(ixr(2,i))=
max(wa(ixr(2,i)),dx)
259 wa(ixr(3,i))=
max(wa(ixr(3,i)),dx)
260 IF (igtyp==12) wa(ixr(4,i))=
max(wa(ixr(4,i)),dx)
264 gap_s(i)=gapscale * wa(nsv(i))
265 gap_s(i)=
min(gap_s(i),gapmax_s)
274 CALL i24bord(igrsurf2%NSEG ,igrsurf2%NODES ,tagb)
277 CALL i24bord(igrsurf%NSEG ,igrsurf%NODES ,tagb)
281 IF( tagb(ns) > 0 ) gap_s(i) = em20
286 gaps1=
max(gaps1,gap_s(i))
287 gaps_mn=
min(gaps_mn,gap_s(i))
294 DO j= knod2elc(nsv(i))+1,knod2elc(nsv(i)+1)
296 sx1 = x(1,ixc(4,ie)) - x(1,ixc(2,ie))
297 sy1 = x(2,ixc(4,ie)) - x(2,ixc(2,ie))
299 sx2 = x(1,ixc(5,ie)) - x(1,ixc(3,ie))
300 sy2 = x(2,ixc(5,ie)) - x(2,ixc(3,ie))
301 sz2 = x(3,ixc(5,ie)) - x(3,ixc(3,ie))
303 sy3 = sz1*sx2 - sx1*sz2
304 sz3 = sx1*sy2 - sy1*sx2
306 . + one_over_8*sqrt(sx3*sx3+sy3*sy3+sz3*sz3)
311 DO j= knod2eltg(nsv(i))+1,knod2eltg(nsv(i)+1)
313 sx1 = x(1,ixtg(3,ie)) - x(1,ixtg(2,ie))
314 sy1 = x(2,ixtg(3,ie)) - x(2,ixtg(2,ie))
315 sz1 = x(3,ixtg(3,ie)) - x(3,ixtg(2,ie))
316 sx2 = x(1,ixtg(4,ie)) - x(1,ixtg(2,ie))
317 sy2 = x(2,ixtg(4,ie)) - x(2,ixtg(2,ie))
318 sz2 = x(3,ixtg(4,ie)) - x(3,ixtg(2,ie))
319 sx3 = sy1*sz2 - sz1*sy2
320 sy3 = sz1*sx2 - sx1*sz2
321 sz3 = sx1*sy2 - sy1*sx2
323 . + one_over_6*sqrt(sx3*sx3+sy3*sy3+sz3*sz3)
325 ielec(i) = ixtg(1,ie)
331 DO j= knod2elc(nsv(i))+1,knod2elc(nsv(i)+1)
337 IF(mylev < 0) mylev=-(mylev+1)
340 sx1 = x(1,ixc(4,ie)) - x(1,ixc(2,ie))
341 sy1 = x(2,ixc(4,ie)) - x(2,ixc(2,ie))
342 sz1 = x(3,ixc(4,ie)) - x(3,ixc(2,ie))
343 sx2 = x(1,ixc(5,ie)) - x(1,ixc(3,ie))
344 sy2 = x(2,ixc(5,ie)) - x(2,ixc(3,ie))
345 sz2 = x(3,ixc(5,ie)) - x(3,ixc(3,ie))
346 sx3 = sy1*sz2 - sz1*sy2
347 sy3 = sz1*sx2 - sx1*sz2
348 sz3 = sx1*sy2 - sy1*sx2
350 . + one_over_8*sqrt(sx3*sx3+sy3*sy3+sz3*sz3)
357 DO j= knod2eltg(nsv(i))+1,knod2eltg(nsv(i)+1)
363 IF(mylev < 0) mylev=-(mylev+1)
366 sx1 = x(1,ixtg(3,ie)) - x(1,ixtg(2,ie))
367 sy1 = x(2,ixtg(3,ie)) - x(2,ixtg(2,ie))
368 sz1 = x(3,ixtg(3,ie)) - x(3,ixtg(2,ie))
369 sx2 = x(1,ixtg(4,ie)) - x(1,ixtg(2,ie))
370 sy2 = x(2,ixtg(4,ie)) - x(2,ixtg(2,ie))
371 sz2 = x(3,ixtg(4,ie)) - x(3,ixtg(2,ie))
372 sx3 = sy1*sz2 - sz1*sy2
373 sy3 = sz1*sx2 - sx1*sz2
374 sz3 = sx1*sy2 - sy1*sx2
376 . + one_over_6*sqrt(sx3*sx3+sy3*sy3+sz3*sz3)
378 ielec(i) = ixtg(1,ie)
395 DO j= knod2els(nsv(i))+1,knod2els(nsv(i)+1)
398 ipg = tagprt_fric(ip)
399 IF(ipg > 0.AND.ip>ipfmax)
THEN
401 . ipg,intbuf_fric_tab(intfric)%S_TABPARTS_FRIC,
402 . intbuf_fric_tab(intfric)%TABPARTS_FRIC,ipl)
412 ipartfrics(i) = ipflmax
418 IF(numelc/=0.OR.numeltg/=0)
THEN
422 DO j= knod2elc(nsv(i))+1,knod2elc(nsv(i)+1)
425 ipg = tagprt_fric(ip)
426 IF(ipg > 0.AND.ip>ipfmax)
THEN
428 . ipg,intbuf_fric_tab(intfric)%S_TABPARTS_FRIC,
429 . intbuf_fric_tab(intfric)%TABPARTS_FRIC,ipl)
438 DO j= knod2eltg(nsv(i))+1,knod2eltg(nsv(i)+1)
441 ipg = tagprt_fric(ip)
442 IF(ipg > 0.AND.ip>ipfmax)
THEN
444 . ipg,intbuf_fric_tab(intfric)%S_TABPARTS_FRIC,
445 . intbuf_fric_tab(intfric)%TABPARTS_FRIC,ipl)
455 ipartfrics(i) = ipflmax
464 IF(intnitsche > 0 )
THEN
468 ALLOCATE(tagnod(numnod))
476 nm = tagnod(irect(j,i))
488 IF(igrsurf2%ELTYP(i)==1 )
THEN
496 IF(igrsurf%ELTYP(i) == 1 )
THEN
497 ielnrts(nshiff+i) = nel
503 IF(igrsurf%ELTYP(i) == 1 )
THEN
510 adrects(1:4,1:nrt) = 0
521 IF (ie <= numels8 )
THEN
525 IF(adrects(k,i)==0)
THEN
527 IF(n==irect(k,i))
THEN
536 IF(adrects(k,i) == 5)
THEN
538 ELSEIF(adrects(k,i) == 6)
THEN
544 ELSEIF(ie <= numels8+numels10 )
THEN
548 IF(n==irect(k,i))
THEN
553 IF(adrects(k,i)==0)
THEN
556 IF(n==irect(k,i))
THEN
563 ELSEIF(ie <= numels8+numels10+numels20 )
THEN
566 n=ixs20(j,ie-numels8-numels10)
567 IF(n==irect(k,i))
THEN
572 IF(adrects(k,i)==0)
THEN
574 IF(n==irect(k,i))
THEN
580 ELSEIF(ie <= numels8+numels10+numels20+numels16)
THEN
583 n=ixs20(j,ie-numels8-numels10-numels20)
589 IF(adrects(k,i)==0)
THEN
591 IF(n==irect(k,i))
THEN
614 IF(ie<= numels8 )
THEN
622 IF(tab1(j+1) < tab1(j))
THEN
631 tab2(1) = ixs(faces(1,fc)+1,ie)
632 tab2(2) = ixs(faces(2,fc)+1,ie)
633 tab2(3) = ixs(faces(3,fc)+1,ie)
634 tab2(4) = ixs(faces(4,fc)+1,ie)
637 IF(tab2(j+1) < tab2(j))
THEN
644 IF(tab1(1)==tab2(1).AND.tab1(2)==tab2(2).AND.tab1(3)==tab2(3))
THEN
656 IF(tab1(j+1) < tab1(j))
THEN
665 n1 = ixs(faces(1,fc)+1,ie)
666 n2 = ixs(faces(2,fc)+1,ie)
667 n3 = ixs(faces(3,fc)+1,ie)
668 n4 = ixs(faces(4,fc)+1,ie)
670 IF(n1/=n2.AND.n2/=n3)
THEN
684 IF(tab2(j+1) < tab2(j))
THEN
691 IF(tab1(1)==tab2(1).AND.tab1(2)
THEN
698 ELSEIF(ie<= numels8+numels10 )
THEN
699 tab1(1) = adrects(1,i)
700 tab1(2) = adrects(2,i)
701 tab1(3) = adrects(3,i)
704 IF(tab1(j+1) < tab1(j))
THEN
712 IF(tab1(1)==faces10(1,fc).AND.tab1(2)==faces10(2,fc).AND.tab1(3)==faces10(3,fc))
THEN
718 ELSEIF(ie <= numels8+numels10+numels20 )
THEN
736 1 x ,irect ,stf ,ixs ,pm ,
737 2 geo ,nrt1 ,ixc ,nint ,stfac ,
738 3 nty ,gap ,noint ,stfn ,nsn ,
739 4 ms ,nsv ,ixtg ,igap ,gap_m ,
740 6 ixt ,ixp ,slsfac,dxm ,ndx ,
741 9 knod2els ,knod2elc ,knod2eltg ,nod2els ,
742 a nod2elc,nod2eltg ,igrsurf2 ,intth,
743 b ieles ,ielec ,areas ,sh4tree ,sh3tree ,
744 c ipart ,ipartc ,iparttg ,thk ,thk_part ,
745 d ixr ,itab ,bgapsmx ,ixs10 ,msegtyp ,
746 e ixs16 ,ixs20 ,gap_n ,gaps1 ,gaps2 ,
747 f gapmx , gapmn ,gapscale ,nshif ,gapmax_m,
748 g id ,titr ,igeo ,fillsol ,nrtt ,
749 h pm_stack, iworksh,intfric ,tagprt_fric,ipartfrics,
750 i ipartfricm,iparts,intbuf_fric_tab ,elem_linked_to_segment,
751 j igsti , flag_elem_inter25)
755 1 x ,irect ,stf ,ixs ,pm ,
756 2 geo ,nrt2 ,ixc ,nint ,stfac ,
757 3 nty ,gap ,noint ,stfn ,nsn ,
758 4 ms ,nsv ,ixtg ,igap ,gap_m ,
761 9 knod2els ,knod2elc ,knod2eltg ,nod2els ,
762 a nod2elc,nod2eltg ,igrsurf ,intth,
763 b ieles ,ielec ,areas ,sh4tree ,sh3tree ,
764 c ipart ,ipartc ,iparttg ,thk ,thk_part ,
765 d ixr ,itab ,bgapsmx ,ixs10 ,msegtyp ,
766 e ixs16 ,ixs20 ,gap_n ,gaps1 ,gaps2 ,
767 f gapmx , gapmn ,gapscale ,nshif ,gapmax_m,
768 g id ,titr ,igeo ,fillsol ,nrtt ,
769 h pm_stack , iworksh,intfric,tagprt_fric,ipartfrics,
770 i ipartfricm,iparts,intbuf_fric_tab ,elem_linked_to_segment,
771 j igsti , flag_elem_inter25)
774 1 x ,irect ,stf ,ixs ,pm ,
775 2 geo ,nrt ,ixc ,nint ,stfac ,
776 3 nty ,gap ,noint ,stfn ,nsn ,
777 4 ms ,nsv ,ixtg ,igap ,gap_m ,
778 6 ixt ,ixp ,slsfac,dxm ,ndx ,
779 9 knod2els ,knod2elc ,knod2eltg ,nod2els ,
780 a nod2elc,nod2eltg ,igrsurf ,intth,
781 b ieles ,ielec ,areas ,sh4tree ,sh3tree ,
782 c ipart ,ipartc ,iparttg ,thk ,thk_part ,
783 d ixr ,itab ,bgapsmx ,ixs10 ,msegtyp ,
784 e ixs16 ,ixs20 ,gap_n ,gaps1 ,gaps2 ,
785 f gapmx , gapmn ,gapscale ,nshif ,gapmax_m,
786 g id ,titr ,igeo ,fillsol ,nrtt ,
787 h pm_stack , iworksh,intfric,tagprt_fric,ipartfrics,
788 i ipartfricm,iparts,intbuf_fric_tab ,elem_linked_to_segment,
789 j igsti , flag_elem_inter25)
797 gapmx=
min(gapmx,gapmax_m)
804 gapmin =
min(half*gapmx,gapmin)
817 gapmx=
max(gapmx,gap_m(i))
818 gapmn=
min(gapmn,gap_m(i))
822 WRITE(iout,1400)gaps_mn,gaps1
823 WRITE(iout,1500)gapmn,gapmx
840 gapinf =
min(gapinf,gap_s(i))
841 bgapsmx =
max(bgapsmx,gap_s(i))
844 gapinf =
min(gapinf,gap_m(i))
846 gapinf=
max(gapinf,gapmin)
849 CALL insol3et(x ,irect ,ixs ,nint ,mvoisn(2,i),i ,
850 .
area ,noint ,knod2els,nod2els,ixs10 ,
851 . ixs16,ixs20 ,mvoisn(1,i))
853 IF (mvoisn(1,i)==10)
THEN
855 gap_n(1,i) = three*one_over_8*gap_n(1,i)
856 stf(i) = sixteen*stf(i)
857 ELSEIF (mvoisn(1,i)==16)
THEN
858 gap_n(1,i) = gap_n(1,i)/4
872 IF (msegtyp(i) > 0 .AND.msegtyp(i)<=nrtt )
THEN
876 IF(intth > 0 ) ieles(j) = ieles(i)
877 IF(intfric > 0) ipartfricm(j)=ipartfricm(i)
887 1 x ,irect ,nrt ,nsn ,nsv ,pen_old, stf)
918 IF (mvoisn(2,i)>0)
THEN
919 ip = iparts(mvoisn(2,i))
928 ipartns(i) = tagb(ns)
930 IF (ipartns(i)==0) ipartns(i) =-1
935 IF (msegtyp(i) > 0 .AND.msegtyp(i)<=nrtt)
THEN
937 ip = tagb(irect(1,i))
947 1400
FORMAT(2x,
'MIN,MAX OF SECONDARY GAP: ',2(1pg20.13))
948 1500
FORMAT(2x,
'MIN,MAX OF MAIN GAP: ',2(1pg20.13)/)
1090 1 X ,IRECT ,STF ,IXS ,PM ,
1091 2 GEO ,NRT ,IXC ,NINT ,STFAC ,
1092 3 NTY ,GAP ,NOINT ,STFN ,NSN ,
1093 4 MS ,NSV ,IXTG ,IGAP ,GAP_M ,
1094 6 IXT ,IXP ,SLSFAC,DXM ,NDX ,
1095 9 KNOD2ELS ,KNOD2ELC ,KNOD2ELTG ,NOD2ELS ,
1096 A NOD2ELC,NOD2ELTG ,IGRSURF ,INTTH,
1097 B IELES ,IELEC ,AREAS ,SH4TREE ,SH3TREE ,
1098 C IPART ,IPARTC ,IPARTTG ,THK ,THK_PART ,
1099 D IXR ,ITAB ,BGAPSMX ,IXS10 ,MSEGTYP ,
1100 E IXS16 ,IXS20 ,GAP_N ,GAPS1 ,GAPS2 ,
1101 F GAPMX , GAPMN ,GAPSCALE ,NSHIFT ,GAPMAX_M,
1102 G ID ,TITR ,IGEO ,FILLSOL ,NRTT ,
1103 H PM_STACK , IWORKSH ,INTFRIC,TAGPRT_FRIC,IPARTFRICS,
1104 I IPARTFRICM,IPARTS,INTBUF_FRIC_TAB,ELEM_LINKED_TO_SEGMENT,IGSTI,
1105 J FLAG_ELEM_INTER25 )
1116#include "implicit_f.inc"
1120#include "com01_c.inc"
1121#include "com04_c.inc"
1122#include "param_c.inc"
1123#include "scr17_c.inc"
1124#include "scr08_c.inc"
1128 INTEGER NRT, NINT, NTY, NOINT,NSN,IGAP, NDDIM,NDX,INTFRIC,IGSTI
1129 INTEGER IRECT(4,*), IXS(NIXS,*), IXC(NIXC,*),
1130 . NSV(*), IXTG(NIXTG,*), IXT(NIXT,*), IXP(NIXP,*),
1131 . KNOD2ELS(*), KNOD2ELC(*), KNOD2ELTG(*), NOD2ELS(*), NOD2ELC(*),
1132 . NOD2ELTG(*), IELES(*), INTTH, IELEC(*),
1133 . SH3TREE(KSH3TREE,*), SH4TREE(KSH4TREE,*),IXR(NIXR,*) ,
1134 . IPART(LIPART1,*), IPARTC(*), IPARTTG(*),
1135 . ITAB(*), IXS10(6,*),MSEGTYP(*), IXS16(*), IXS20(*),NSHIFT,
1136 . IGEO(NPROPGI,*),NRTT,IWORKSH(3,*),TAGPRT_FRIC(*),IPARTFRICS(*),
1137 . IPARTFRICM(*),IPARTS(*)
1138 INTEGER,
DIMENSION(NUMELS),
INTENT(INOUT):: ELEM_LINKED_TO_SEGMENT
1141 . STFAC, GAP,BGAPSMX,GAPS1 ,GAPS2,GAPMX ,GAPMN ,GAPSCALE
1144 . X(3,*), STF(*), (NPROPM,*), GEO(NPROPG,*), STFN(*),
1145 . MS(*),GAP_M(*),GAP_N(12,*),
1146 . areas(*),thk(*),thk_part(*),slsfac,dxm ,gapmax_m, fillsol(*),
1149 CHARACTER(LEN=NCHARTITLE) :: TITR
1150 TYPE() INTBUF_FRIC_TAB(*)
1151 TYPE (SURF_) :: IGRSURF
1152 INTEGER,
INTENT(IN) :: FLAG_ELEM_INTER25(,NUMELS)
1156 INTEGER I, J, INRT, NELS, MT, JJ, JJJ, NELC,
1158 . IP, NREV,IGTYP,IPGMAT,IGMAT,
1159 . ISUBSTACK,IPL,IPG,NINV,ICONTR,NIN25
1160 INTEGER,
DIMENSION(:),
ALLOCATABLE :: TAGELEMS,INDEXE
1163 . AREA, VOL, DX, GAPM, DDX,
1166 LOGICAL :: PRINT_ERROR
1167 INTEGER,
DIMENSION(4) :: NODE_ID
1172 CALL my_alloc(tagelems,numels)
1174 CALL my_alloc(indexe,numels)
1178 DO i=1+nshift,nrt+nshift
1180 IF(intth > 0 ) ieles(i) = 0
1181 IF(slsfac<zero)stf(i)=slsfac
1185 CALL i4gmx3(x,irect,i,gapmx)
1187 CALL inelts_np(x ,irect(1,1+nshift),ixs ,nrev ,nels ,
1188 . inrt ,area ,noint,0 ,igrsurf%ELTYP,
1193 icontr = igeo(97,mg)
1202 IF (icontr==1 .OR. igsti==-1)
THEN
1208 stf(i)=slsfac*fillsol(nels)*area*area*bulk/vol
1212 . msgtype=msgwarning,
1213 . anmode=aninfo_blind_2,
1216 . i2=ixs(nixs,nels),
1222 . msgtype=msgwarning,
1223 . anmode=aninfo_blind_2,
1226 . i2=ixs(nixs,nels),
1233 IF(INTFRIC > 0) THEN
1235 IPG = TAGPRT_FRIC(IP)
1237 CALL FRICTION_PARTS_SEARCH (
1238 . IPG,INTBUF_FRIC_TAB(INTFRIC)%S_TABPARTS_FRIC,
1239 . INTBUF_FRIC_TAB(INTFRIC)%TABPARTS_FRIC,IPL)
1246 CALL INELTC(NELC ,NELTG ,INRT ,IGRSURF%ELTYP, IGRSURF%ELEM)
1253.AND.
IF ( THK_PART(IP) /= ZERO IINTTHICK == 0) THEN
1254 DX=THK_PART(IP)*GAPSCALE
1255.AND.
ELSEIF ( THK(NUMELC+NELTG) /= ZERO IINTTHICK==0)THEN
1256 DX=THK(NUMELC+NELTG)*GAPSCALE
1257.OR..OR.
ELSEIF(IGTYP == 17 IGTYP == 51 IGTYP ==52) THEN
1258 DX=THK(NUMELC+NELTG)*GAPSCALE
1260 DX=GEO(1,MG)*GAPSCALE
1263 GAPS2=MAX(GAPS2,GAPM)
1264 GAPMN = MIN(GAPMN,DX)
1268.AND.
IF(IGTYP == 11 IGMAT > 0) THEN
1269.AND.
IF ( THK(NUMELC+NELTG) /= ZERO IINTTHICK ==0)THEN
1270 STF(I)=SLSFAC*THK(NUMELC+NELTG)*GEO(IPGMAT + 2 ,MG)
1272 STF(I)=SLSFAC*GEO(1,MG)*GEO(IPGMAT + 2 ,MG)
1274.OR.
ELSEIF(IGTYP ==52
1275.OR..AND.
. ((IGTYP == 17 IGTYP == 51) IGMAT > 0))THEN
1276 ISUBSTACK = IWORKSH(3,NUMELC+NELTG)
1277 ST=PM_STACK(2,ISUBSTACK)
1278 STF(I)=SLSFAC*THK(NUMELC+NELTG)*ST
1280.AND.
IF ( THK(NUMELC+NELTG) /= ZERO IINTTHICK ==0)THEN
1281 STF(I)=SLSFAC*THK(NUMELC+NELTG)*PM(20,MT)
1282.OR.
ELSEIF(IGTYP == 17 IGTYP == 51) THEN
1283 STF(I)=SLSFAC*THK(NUMELC+NELTG)*PM(20,MT)
1285 STF(I)=SLSFAC*GEO(1,MG)*PM(20,MT)
1290 CALL ANCMSG(MSGID=95,
1291 . MSGTYPE=MSGWARNING,
1292 . ANMODE=ANINFO_BLIND_2,
1295 . I2=IXTG(NIXTG,NELTG),
1300 CALL ANCMSG(MSGID=96,
1301 . MSGTYPE=MSGWARNING,
1302 . ANMODE=ANINFO_BLIND_2,
1305 . I2=IXTG(NIXTG,NELTG),
1312 IF(INTFRIC > 0) THEN
1314 IPG = TAGPRT_FRIC(IP)
1316 CALL FRICTION_PARTS_SEARCH (
1317 . IPG,INTBUF_FRIC_TAB(INTFRIC)%S_TABPARTS_FRIC,
1318 . INTBUF_FRIC_TAB(INTFRIC)%TABPARTS_FRIC,IPL)
1323 IF (MSEGTYP(I)>NRTT) THEN
1324 PRINT_ERROR = .FALSE.
1326 CALL INSOL3D(X,IRECT,IXS,NINT,NELS,I ,
1327 . AREA,NOINT,KNOD2ELS ,NOD2ELS ,0,
1328 . IXS10,IXS16,IXS20,TAGELEMS,INDEXE,
1329 . NINV,IELEM,ELEM_LINKED_TO_SEGMENT,PRINT_ERROR,
1330 . NIN25,NTY, FLAG_ELEM_INTER25 )
1331 IF(PRINT_ERROR) THEN
1332 NODE_ID(1:4) = ITAB(IRECT(1:4,I))
1334 CALL ANCMSG(MSGID=3062,
1335 . MSGTYPE=MSGWARNING,
1336 . ANMODE=ANINFO_BLIND_1,
1355 STF(I)=MAX(STF(I),SLSFAC*AREA*AREA*PM(32,MT)/VOL)
1359 IF(INTFRIC > 0) THEN
1361 IPG = TAGPRT_FRIC(IP)
1363 CALL FRICTION_PARTS_SEARCH (
1364 . IPG,INTBUF_FRIC_TAB(INTFRIC)%S_TABPARTS_FRIC,
1365 . INTBUF_FRIC_TAB(INTFRIC)%TABPARTS_FRIC,IPL)
1369 END IF!(NELS/=0) THEN
1370 END IF !(MSEGTYP==8) THEN
1373 ELSEIF(NELC/=0) THEN
1379.AND.
IF ( THK_PART(IP) /= ZERO IINTTHICK == 0) THEN
1380 DX=THK_PART(IP)*GAPSCALE
1381.AND.
ELSEIF ( THK(NELC) /= ZERO IINTTHICK == 0) THEN
1382 DX=THK(NELC)*GAPSCALE
1383.OR..OR.
ELSEIF(IGTYP == 17 IGTYP == 51 IGTYP ==52)THEN
1384 DX=THK(NELC)*GAPSCALE
1386 DX=GEO(1,MG)*GAPSCALE
1389 GAPS2=MAX(GAPS2,GAPM)
1390 GAPMN = MIN(GAPMN,DX)
1394.AND.
IF(IGTYP == 11 IGMAT > 0) THEN
1395.AND.
IF ( THK(NELC) /= ZERO IINTTHICK == 0) THEN
1396 STF(I)=SLSFAC*THK(NELC)*GEO(IPGMAT + 2 ,MG)
1398 STF(I)=SLSFAC*GEO(1,MG)*GEO(IPGMAT + 2 ,MG)
1400.OR.
ELSEIF(IGTYP ==52
1401.OR..AND.
. ((IGTYP == 17 IGTYP == 51) IGMAT > 0))THEN
1402 ISUBSTACK = IWORKSH(3,NELC)
1403 ST=PM_STACK(2,ISUBSTACK)
1404 STF(I)=SLSFAC*THK(NELC)*ST
1406.AND.
IF ( THK(NELC) /= ZERO IINTTHICK == 0) THEN
1407 STF(I)=SLSFAC*THK(NELC)*PM(20,MT)
1408.OR.
ELSEIF(IGTYP == 17 IGTYP ==51) THEN
1409 STF(I)=SLSFAC*THK(NELC)*PM(20,MT)
1411 STF(I)=SLSFAC*GEO(1,MG)*PM(20,MT)
1416 CALL ANCMSG(MSGID=95,
1417 . MSGTYPE=MSGWARNING,
1418 . ANMODE=ANINFO_BLIND_2,
1421 . I2=IXC(NIXC,NELC),
1426 CALL ANCMSG(MSGID=96,
1427 . MSGTYPE=MSGWARNING,
1428 . ANMODE=ANINFO_BLIND_2,
1431 . I2=IXC(NIXC,NELC),
1438 IF(INTFRIC > 0) THEN
1440 IPG = TAGPRT_FRIC(IP)
1442 CALL FRICTION_PARTS_SEARCH (
1443 . IPG,INTBUF_FRIC_TAB(INTFRIC)%S_TABPARTS_FRIC,
1444 . INTBUF_FRIC_TAB(INTFRIC)%TABPARTS_FRIC,IPL )
1450 IF (MSEGTYP(I)>NRTT) THEN
1451 PRINT_ERROR = .FALSE.
1453 CALL INSOL3D(X,IRECT,IXS,NINT,NELS,I ,
1454 . AREA,NOINT,KNOD2ELS ,NOD2ELS ,0,
1455 . IXS10,IXS16,IXS20,TAGELEMS,INDEXE ,
1456 . NINV,IELEM,ELEM_LINKED_TO_SEGMENT,PRINT_ERROR,
1457 . NIN25,NTY, FLAG_ELEM_INTER25)
1458 IF(PRINT_ERROR) THEN
1459 NODE_ID(1:4) = ITAB(IRECT(1:4,I))
1461 CALL ANCMSG(MSGID=3062,
1462 . MSGTYPE=MSGWARNING,
1463 . ANMODE=ANINFO_BLIND_1,
1482 STF(I)=MAX(STF(I),SLSFAC*AREA*AREA*PM(32,MT)/VOL)
1486 IF(INTFRIC > 0) THEN
1488 IPG = TAGPRT_FRIC(IP)
1490 CALL FRICTION_PARTS_SEARCH (
1491 . IPG,INTBUF_FRIC_TAB(INTFRIC)%S_TABPARTS_FRIC,
1492 . INTBUF_FRIC_TAB(INTFRIC)%TABPARTS_FRIC,IPL )
1497 END IF!(NELS/=0) THEN
1498 END IF !(MSEGTYP==8) THEN
1505 PRINT_ERROR = .FALSE.
1507 CALL INSOL3D(X,IRECT,IXS,NINT,NELS,I ,
1508 . AREA,NOINT,KNOD2ELS ,NOD2ELS ,0,
1509 . IXS10,IXS16,IXS20,TAGELEMS,INDEXE,
1510 . NINV ,IELEM,ELEM_LINKED_TO_SEGMENT,PRINT_ERROR,
1511 . NIN25,NTY, FLAG_ELEM_INTER25)
1512 IF(PRINT_ERROR) THEN
1513 NODE_ID(1:4) = ITAB(IRECT(1:4,I))
1515 CALL ANCMSG(MSGID=3062,
1516 . MSGTYPE=MSGWARNING,
1517 . ANMODE=ANINFO_BLIND_1,
1528 IF(INTTH > 0 ) IELES(I) = NELS
1537 STF(I)=SLSFAC*FILLSOL(NELS)*AREA*AREA*PM(32,MT)/VOL
1540 CALL ANCMSG(MSGID=95,
1541 . MSGTYPE=MSGWARNING,
1542 . ANMODE=ANINFO_BLIND_2,
1545 . I2=IXS(NIXS,NELS),
1550 CALL ANCMSG(MSGID=96,
1551 . MSGTYPE=MSGWARNING,
1552 . ANMODE=ANINFO_BLIND_2,
1555 . I2=IXS(NIXS,NELS),
1562 IF(INTFRIC > 0) THEN
1564 IPG = TAGPRT_FRIC(IP)
1566 CALL FRICTION_PARTS_SEARCH (
1567 . IPG,INTBUF_FRIC_TAB(INTFRIC)%S_TABPARTS_FRIC,
1568 . INTBUF_FRIC_TAB(INTFRIC)%TABPARTS_FRIC,IPL)
1578 CALL INCOQ3(IRECT,IXC ,IXTG ,NINT ,NELC ,
1579 . NELTG,I ,GEO ,PM ,KNOD2ELC ,
1580 . KNOD2ELTG ,NOD2ELC ,NOD2ELTG,THK,NTY,IGEO,
1581 . PM_STACK , IWORKSH )
1588.AND.
IF ( THK_PART(IP) /= ZERO IINTTHICK == 0) THEN
1589 DX=THK_PART(IP)*GAPSCALE
1590.AND.
ELSEIF ( THK(NUMELC+NELTG) /= ZERO IINTTHICK == 0)THEN
1591 DX=THK(NUMELC+NELTG)*GAPSCALE
1592.OR..OR.
ELSEIF(IGTYP == 17 IGTYP ==51 IGTYP ==52) THEN
1593 DX=THK(NUMELC+NELTG)*GAPSCALE
1595 DX=GEO(1,MG)*GAPSCALE
1598 GAPS2=MAX(GAPS2,GAPM)
1599 GAPMN = MIN(GAPMN,DX)
1602 GAP_M(I)=MAX(GAP_M(I),GAPM)
1604.AND.
IF(IGTYP ==11 IGMAT > 0) THEN
1605.AND.
IF ( THK(NUMELC+NELTG) /= ZERO IINTTHICK == 0) THEN
1606 STF(I)=SLSFAC*THK(NUMELC+NELTG)*GEO(IPGMAT + 2 ,MG)
1608 STF(I)=SLSFAC*GEO(1,MG)*GEO(IPGMAT + 2 ,MG)
1610.OR.
ELSEIF(IGTYP == 52
1611.OR..AND.
. ((IGTYP == 17 IGTYP == 51)IGMAT >0)) THEN
1612 ISUBSTACK = IWORKSH(3,NUMELC+NELTG)
1613 STF(I)=SLSFAC*THK(NUMELC+NELTG)*PM_STACK( 2 ,ISUBSTACK)
1615.AND.
IF ( THK(NUMELC+NELTG) /= ZERO IINTTHICK == 0) THEN
1616 STF(I)=MAX(STF(I),SLSFAC*THK(NUMELC+NELTG)*PM(20,MT))
1617.OR.
ELSEIF(IGTYP == 17 IGTYP ==51) THEN
1618 STF(I)=MAX(STF(I),SLSFAC*THK(NUMELC+NELTG)*PM(20,MT))
1620 STF(I)=MAX(STF(I),SLSFAC*GEO(1,MG)*PM(20,MT))
1626 CALL ANCMSG(MSGID=95,
1627 . MSGTYPE=MSGWARNING,
1628 . ANMODE=ANINFO_BLIND_2,
1631 . I2=IXTG(NIXTG,NELTG),
1636 CALL ANCMSG(MSGID=96,
1637 . MSGTYPE=MSGWARNING,
1638 . ANMODE=ANINFO_BLIND_2,
1641 . I2=IXTG(NIXTG,NELTG),
1647 IF(INTFRIC > 0) THEN
1649 IPG = TAGPRT_FRIC(IP)
1651 CALL FRICTION_PARTS_SEARCH (
1652 . IPG,INTBUF_FRIC_TAB(INTFRIC)%S_TABPARTS_FRIC,
1653 . INTBUF_FRIC_TAB(INTFRIC)%TABPARTS_FRIC,IPL)
1658 ELSEIF(NELC/=0) THEN
1664.AND.
IF ( THK_PART(IP) /= ZERO IINTTHICK == 0) THEN
1665 DX=THK_PART(IP)*GAPSCALE
1666.AND.
ELSEIF ( THK(NELC) /= ZERO IINTTHICK == 0) THEN
1667 DX=THK(NELC)*GAPSCALE
1668.OR..OR.
ELSEIF(IGTYP == 17 IGTYP == 51 IGTYP ==52) THEN
1669 DX=THK(NELC)*GAPSCALE
1671 DX=GEO(1,MG)*GAPSCALE
1674 GAPS2=MAX(GAPS2,GAPM)
1675 GAPMN = MIN(GAPMN,DX)
1678 GAP_M(I)=MAX(GAP_M(I),GAPM)
1680.AND.
IF(IGTYP == 11 IGMAT > 0) THEN
1681.AND.
IF ( THK(NELC) /= ZERO IINTTHICK == 0) THEN
1682 STF(I)=SLSFAC*THK(NELC)*GEO(IPGMAT + 2 ,MG)
1684 STF(I)=SLSFAC*GEO(1,MG)*GEO(IPGMAT + 2 ,MG)
1686.OR.
ELSEIF(IGTYP ==52
1687.OR..AND.
. ((IGTYP == 17 IGTYP == 51) IGMAT > 0))THEN
1688 ISUBSTACK = IWORKSH(3,NELC)
1689 ST=PM_STACK(2,ISUBSTACK)
1690 STF(I)=SLSFAC*THK(NELC)*ST
1692.AND.
IF ( THK(NELC) /= ZERO IINTTHICK == 0) THEN
1693 STF(I)=MAX(STF(I),SLSFAC*THK(NELC)*PM(20,MT))
1694.OR.
ELSEIF(IGTYP == 17 IGTYP == 51 ) THEN
1695 STF(I)=MAX(STF(I),SLSFAC*THK(NELC)*PM(20,MT))
1697 STF(I)=MAX(STF(I),SLSFAC*GEO(1,MG)*PM(20,MT))
1702 CALL ANCMSG(MSGID=95,
1703 . MSGTYPE=MSGWARNING,
1704 . ANMODE=ANINFO_BLIND_2,
1707 . I2=IXC(NIXC,NELC),
1712 CALL ANCMSG(MSGID=96,
1713 . MSGTYPE=MSGWARNING,
1714 . ANMODE=ANINFO_BLIND_2,
1717 . I2=IXC(NIXC,NELC),
1723 IF(INTFRIC > 0) THEN
1725 IPG = TAGPRT_FRIC(IP)
1727 CALL FRICTION_PARTS_SEARCH (
1728 . IPG,INTBUF_FRIC_TAB(INTFRIC)%S_TABPARTS_FRIC,
1729 . INTBUF_FRIC_TAB(INTFRIC)%TABPARTS_FRIC,IPL )
1736 IF(NELS+NELC+NELTG==0)THEN
1740 CALL ANCMSG(MSGID=481,
1742 . ANMODE=ANINFO_BLIND_2,
1748 CALL ANCMSG(MSGID=482,
1750 . ANMODE=ANINFO_BLIND_2,
1759 IF(NUMELS > 0) DEALLOCATE(TAGELEMS,INDEXE)
1761 CALL ANCMSG(MSGID=3022,
1762 . MSGTYPE=MSGWARNING,
1763 . ANMODE=ANINFO_BLIND_1,
1767 CALL ANCMSG(MSGID=3024,
1768 . MSGTYPE=MSGWARNING,
1769 . ANMODE=ANINFO_BLIND_1,
1773.AND.
IF(NINV > 0 NINT>0)
1774 . CALL ANCMSG(MSGID=3023,
1775 . MSGTYPE=MSGWARNING,
1776 . ANMODE=ANINFO_BLIND_1,
1781.AND.
IF(NINV > 0 NINT< 0)
1782 . CALL ANCMSG(MSGID=3025,
1783 . MSGTYPE=MSGWARNING,
1784 . ANMODE=ANINFO_BLIND_1,
1791 DO I=1+NSHIFT,NRT+NSHIFT
1792 GAP_M(I)=MIN(GAP_M(I),GAPMAX_M)
1796 !1400 FORMAT(I10,' main segments
',' of interface
',I10,
1797 ! + ' are reversed
the normal direction
')