35 1 JLT ,X ,IRECT ,NSV ,CAND_E ,
36 2 CAND_N ,CAND_T ,STF ,STFN ,STIF ,
37 3 XX0 ,YY0 ,ZZ0 ,VX ,VY ,
38 5 VZ ,XI ,YI ,ZI ,VXI ,
39 7 VYI ,VZI ,IXX ,NSVG ,NVOISIN ,
40 9 MS ,MSI ,NSN ,V ,KINET ,
41 A KINI ,ITY ,NIN ,IGSTI ,KMIN ,
42 B KMAX ,GAP_S ,GAPS ,NODNX_SMS,NSMS ,
43 C ITRIV ,XFIC ,VFIC ,MSF ,IRTSE ,
44 D IS2SE ,IS2PT ,ISEGPT ,NSNE ,
45 E IRTLM ,NPT ,NRTSE ,IEDG4 ,ISPT2 ,
46 F ISPT2_LOC,INTFRIC ,IPARTFRICS,IPARTFRICSI,
47 G IPARTFRICM,IPARTFRICMI,INTNITSCHE,FORNEQS,FORNEQSI,
48 H IORTHFRIC,IREP_FRICM,DIR_FRICM,IREP_FRICMI,DIR_FRICMI,
49 I IXX3 ,IXX4 , XX1 ,XX2 ,XX3 ,
50 3 XX4 ,YY1 ,YY2 ,YY3 ,YY4 ,
51 4 ZZ1 ,ZZ2 ,ZZ3 ,ZZ4 ,NINLOADP ,
52 5 DIST ,ISTIF_MSDT,DTSTIF ,STIFMSDT_S,STIFMSDT_M,
63#include "implicit_f.inc"
76 INTEGER IRECT(4,*), NSV(*), CAND_E(*), (*),KINET(*),KINI(*),
77 . jlt,idt, noint ,nddim, nsn, ity, nin, igsti,nrtse,
78 . nvoisin(8,*), nodnx_sms(*), cand_t(*),irtlm(2,*),npt,
79 . iedg4,intfric,intnitsche ,iorthfric
80 INTEGER IXX(MVSIZ,13), NSVG(MVSIZ), NSMS(MVSIZ),ITRIV(4,MVSIZ),
81 . IRTSE(5,*),IS2SE(2,*),IS2PT(*),ISEGPT(*),NSNE,ISPT2(NSN),
82 * ISPT2_LOC(MVSIZ),IPARTFRICS(*),IPARTFRICSI(MVSIZ),IPARTFRICM(*),
83 . IPARTFRICMI(MVSIZ),IREP_FRICM(*),(MVSIZ),
84 . IXX3(MVSIZ),IXX4(MVSIZ)
85 INTEGER ,
INTENT(IN) :: NINLOADP
86 INTEGER ,
INTENT(IN) :: ISTIF_MSDT
87 INTEGER ,
INTENT(IN) :: NRTM
90 . X(3,*), STF(*), STFN(*),
91 . MS(*), V(3,*),GAPS(MVSIZ),GAP_S(*)
94 . XI(MVSIZ), YI(MVSIZ), ZI(MVSIZ), STIF(MVSIZ),
95 . xx0(mvsiz,17),yy0(mvsiz,17),zz0(mvsiz,17),
96 . vx(mvsiz,17),vy(mvsiz,17),vz(mvsiz,17),
97 . vxi(mvsiz), vyi(mvsiz), vzi(mvsiz), msi(mvsiz),
98 . kmin, kmax,xfic(3,*),vfic(3,*),msf(*), forneqs(3,*),forneqsi(mvsiz,3),
99 . dir_fricm(2,*) ,dir_fricmi(mvsiz,2) ,
100 . xx1(mvsiz), xx2(mvsiz), xx3(mvsiz), xx4(mvsiz),
101 . yy1(mvsiz), yy2(mvsiz), yy3(mvsiz), yy4(mvsiz),
102 . zz1(mvsiz), zz2(mvsiz), zz3(mvsiz), zz4(mvsiz),
104 my_real ,
INTENT(INOUT) :: dist(mvsiz)
105 my_real ,
INTENT(IN) :: dtstif
106 my_real ,
INTENT(IN) :: stifmsdt_s(nsn) ,stifmsdt_m(nrtm)
107 TYPE (PARAMETERS_) ,
INTENT(IN):: PARAMETERS
111 INTEGER I ,J ,IL, L, NN, IG,JFT, IX, NI,,IPT,IE,NS1,NS2,
112 . icont1,icont2,nsi,ipt2,ns
114 . sx1, sy1, sz1, sx2, sy2, sz2,
norm, dts
127 ispt2_loc(i) = ispt2(ni)
147 IF (ig <= numnod)
THEN
172 kini(i) =
kinfi(nin)%P(nn)
173 xi(i) =
xfi(nin)%P(1,nn)
174 yi(i) =
xfi(nin)%P(2,nn)
175 zi(i) =
xfi(nin)%P(3,nn)
176 vxi(i)=
vfi(nin)%P(1,nn)
177 vyi(i)=
vfi(nin)%P(2,nn)
178 vzi(i)=
vfi(nin)%P(3,nn)
179 msi(i)=
msfi(nin)%P(nn)
180 gaps(i) =
gapfi(nin)%P(nn)
219 IF(ixx(i,3) /= ixx(i,4))
THEN
220 xx0(i,5) = fourth*(xx0(i,1)+xx0(i,2)+xx0(i,3)+xx0(i,4))
221 yy0(i,5) = fourth*(yy0(i,1)+yy0(i,2)+yy0(i,3)+yy0(i,4))
222 zz0(i,5) = fourth*(zz0(i,1)+zz0(i,2)+zz0(i,3)+zz0(i,4))
223 vx(i,5) = fourth*(vx(i,1)+vx(i,2)+vx(i,3)+vx(i,4))
224 vy(i,5) = fourth*(vy(i,1)+vy
225 vz(i,5) = fourth*(vz(i,1)+vz(i,2)+vz(i,3)+vz(i,4))
235 ix=iabs(nvoisin(1,l))
253 IF(nvoisin(2,l)/=0)ix=iabs(nvoisin(2,l))
271 IF(nvoisin(1,l)<0)
THEN
272 IF(nvoisin(2,l)<0)
THEN
277 ELSEIF(nvoisin(2,l)<0)
THEN
283 ix=iabs(nvoisin(3,l))
301 IF(nvoisin(4,l)/=0)ix=iabs(nvoisin(4,l))
319 IF(nvoisin(3,l)<0)
THEN
320 IF(nvoisin(4,l)<0)
THEN
325 ELSEIF(nvoisin(4,l)<0)
THEN
332 ix=iabs(nvoisin(5,l))
350 IF(nvoisin(6,l)/=0)ix=iabs(nvoisin(6,l))
369 IF(nvoisin(5,l)<0)
THEN
370 IF(nvoisin(6,l)<0)
THEN
375 ELSEIF(nvoisin(6,l)<0)
THEN
381 ix=iabs(nvoisin(7,l))
399 IF(nvoisin(8,l)/=0)ix=iabs(nvoisin(8,l))
417 IF(nvoisin(7,l)<0)
THEN
418 IF(nvoisin(8,l)<0)
THEN
423 ELSEIF(nvoisin(8,l)<0)
THEN
429 IF(ixx(i,6)==ixx(i,7))
THEN
437 xx0(i,14) = fourth*(xx0(i,2)+xx0(i,1)+xx0(i,6)+xx0(i,7))
438 yy0(i,14) = fourth*(yy0(i,2)+yy0(i,1)+yy0(i,6)+yy0(i,7))
439 zz0(i,14) = fourth*(zz0(i,2)+zz0(i,1)+zz0(i,6)+zz0(i,7))
440 vx(i,14) = fourth*(vx(i,2)+vx(i,1)+vx(i,6)+vx(i,7))
441 vy(i,14) = fourth*(vy(i,2)+vy(i,1)+vy(i,6)+vy(i,7))
442 vz(i,14) = fourth*(vz(i,2)+vz(i,1)+vz(i,6)+vz(i,7))
444 IF(ixx(i, 8)==ixx(i, 9))
THEN
452 xx0(i,15) = fourth*(xx0(i,3)+xx0(i,2)+xx0(i,8)+xx0(i,9))
453 yy0(i,15) = fourth*(yy0(i,3)+yy0(i,2)+yy0(i,8)+yy0(i,9))
454 zz0(i,15) = fourth*(zz0(i,3)+zz0(i,2)+zz0(i,8)+zz0(i,9))
455 vx(i,15) = fourth*(vx(i,3)+vx(i,2)+vx(i,8)+vx(i,9))
456 vy(i,15) = fourth*(vy(i,3)+vy(i,2)+vy(i,8)+vy(i,9))
457 vz(i,15) = fourth*(vz(i,3)+vz(i,2)+vz(i,8)+vz(i,9))
459 IF(ixx(i,10)==ixx(i,11))
THEN
460 xx0(i,16) = xx0(i,10)
461 yy0(i,16) = yy0(i,10)
462 zz0(i,16) = zz0(i,10)
467 xx0(i,16) = fourth*(xx0(i,4)+xx0(i,3)+xx0(i,10)+xx0(i,11))
468 yy0(i,16) = fourth*(yy0(i,4)+yy0(i,3)+yy0(i,10)+yy0(i,11))
469 zz0(i,16) = fourth*(zz0(i,4)+zz0(i,3)+zz0(i,10)+zz0(i,11))
470 vx(i,16) = fourth*(vx(i,4)+vx(i,3)+vx(i,10)+vx(i,11))
471 vy(i,16) = fourth*(vy(i,4)+vy(i,3)+vy(i,10)+vy(i,11))
472 vz(i,16) = fourth*(vz(i,4)+vz(i,3)+vz(i,10)+vz(i,11))
474 IF(ixx(i,12)==ixx(i,13))
THEN
475 xx0(i,17) = xx0(i,12)
476 yy0(i,17) = yy0(i,12)
477 zz0(i,17) = zz0(i,12)
482 xx0(i,17) = fourth*(xx0(i,1)+xx0(i,4)+xx0(i,12)+xx0(i,13))
483 yy0(i,17) = fourth*(yy0(i,1)+yy0(i,4)+yy0(i,12)+yy0(i,13))
484 zz0(i,17) = fourth*(zz0(i,1)+zz0(i,4)+zz0(i,12)+zz0(i,13))
485 vx(i,17) = fourth*(vx(i,1)+vx(i,4)+vx(i,12)+vx(i,13))
486 vy(i,17) = fourth*(vy(i,1)+vy(i,4)+vy(i,12)+vy(i,13))
487 vz(i,17) = fourth*(vz(i,1)+vz(i,4)+vz(i,12)+vz(i,13))
497 stif(i)=stf(l)*abs(stfn(ni))
500 stif(i)=stf(l)*abs(
stifi(nin)%P(nn))
508 stif(i)=abs(stfn(ni))
511 stif(i)=abs(
stifi(nin)%P(nn))
513 stif(i)=half*(stf(l)+stif(i))
521 stif(i)=abs(stfn(ni))
524 stif(i)=abs(
stifi(nin)%P(nn))
526 stif(i)=
max(stf(l),stif(i))
529 ELSEIF(igsti==4.OR.igsti==6)
THEN
534 stif(i)=abs(stfn(ni))
537 stif(i)=abs(
stifi(nin)%P(nn))
539 stif(i)=
min(stf(l),stif(i))
547 stif(i)=abs(stfn(ni))
550 stif(i)=abs(
stifi(nin)%P(nn))
552 stif(i)=stf(l)*stif(i)/
553 .
max(em30,(stf(l)+stif(i)))
577 IF(istif_msdt > 0)
THEN
578 IF(dtstif > zero)
THEN
581 dts = parameters%DT_STIFINT
587 stif_msdt(i) = stifmsdt_s(ni)
592 stif_msdt(i) = stifmsdt_m(l)*stif_msdt(i)/(stifmsdt_m(l)+stif_msdt(i))
593 stif_msdt(i) = stif_msdt(i)/(dts*dts)
594 stif(i)=
max(stif(i),stif_msdt(i))
599 stif(i)=
max(kmin,
min(stif(i),kmax))
609 IF (nsvg(i) <= numnod)
THEN
610 nn = nodnx_sms(nsvg(i))
615 nn =
max(nodnx_sms(ns1),nodnx_sms(ns2))
618 . +nodnx_sms(ixx(i,1))+nodnx_sms(ixx(i,2))
619 . +nodnx_sms(ixx(i,3))+nodnx_sms(ixx(i,4))
623 . +nodnx_sms(ixx(i,1))+nodnx_sms(ixx(i,2))
624 . +nodnx_sms(ixx(i,3))+nodnx_sms(ixx(i,4))
627 IF(idtmins_int/=0)
THEN
629 IF(nsms(i)==0)nsms(i)=-1
632 ELSEIF(idtmins_int/=0)
THEN
644 ipartfricsi(i)= ipartfrics(ni)
650 ipartfricmi(i) = ipartfricm(l)
653 irep_fricmi(i) =irep_fricm(l)
654 dir_fricmi(i,1:2)=dir_fricm(1:2,l)
674 IF(intnitsche > 0)
THEN
679 forneqsi(i,1)= forneqs(1,ig)
680 forneqsi(i,2)= forneqs(2,ig)
681 forneqsi(i,3)= forneqs(3,ig)
691 IF(ninloadp > 0)
THEN
698 sx1=(yy0(i,1)-yy0(i,3))*(zz0(i,2)-zz0(i,4)) - (zz0(i,1)-zz0(i,3))*(yy0(i,2)-yy0(i,4))
699 sy1=(zz0(i,1)-zz0(i,3))*(xx0(i,2)-xx0(i,4)) - (xx0(i,1)-xx0(i,3))*(zz0(i,2)-zz0(i,4))
700 sz1=(xx0(i,1)-xx0(i,3))*(yy0(i,2)-yy0(i,4)) - (yy0(i,1)-yy0(i,3))*(xx0(i,2)-xx0(i,4))
702 norm = sqrt(sx1**2 + sy1**2 + sz1**2)
704 IF(ixx(i,4)/=ixx(i,3))
THEN
705 sx2 = fourth*(xx0(i,1) + xx0(i,2) + xx0(i,3) + xx0(i,4)) - xi(i)
706 sy2 = fourth*(yy0(i,1) + yy0(i,2) + yy0(i,3) + yy0(i,4)) - yi(i)
707 sz2 = fourth*(zz0(i,1) + zz0(i,2) + zz0(i,3) + zz0(i,4)) - zi(i)
709 sx2 = third*(xx0(i,1) + xx0(i,2) + xx0(i,3)) - xi(i)
710 sy2 = third*(yy0(i,1) + yy0(i,2) + yy0(i,3)) - yi(i)
711 sz2 = third*(zz0(i,1) + zz0(i,2) + zz0(i,3)) - zi(i)
714 dist(i) = abs(dist(i))
subroutine i24cor3(jlt, x, irect, nsv, cand_e, cand_n, cand_t, stf, stfn, stif, xx0, yy0, zz0, vx, vy, vz, xi, yi, zi, vxi, vyi, vzi, ixx, nsvg, nvoisin, ms, msi, nsn, v, kinet, kini, ity, nin, igsti, kmin, kmax, gap_s, gaps, nodnx_sms, nsms, itriv, xfic, vfic, msf, irtse, is2se, is2pt, isegpt, nsne, irtlm, npt, nrtse, iedg4, ispt2, ispt2_loc, intfric, ipartfrics, ipartfricsi, ipartfricm, ipartfricmi, intnitsche, forneqs, forneqsi, iorthfric, irep_fricm, dir_fricm, irep_fricmi, dir_fricmi, ixx3, ixx4, xx1, xx2, xx3, xx4, yy1, yy2, yy3, yy4, zz1, zz2, zz3, zz4, ninloadp, dist, istif_msdt, dtstif, stifmsdt_s, stifmsdt_m, nrtm, parameters)