33 1 JLT ,FSAV ,GAP ,FRIC ,MS ,
34 2 VISC ,VISCF ,NOINT ,ITAB ,CS_LOC ,
35 3 CM_LOC ,STIF ,DT2T ,HS1 ,HS2 ,
36 4 HM1 ,HM2 ,N1 ,N2 , M1 ,
37 5 M2 ,IVIS2 ,NELTST ,ITYPTST ,NX ,
38 6 NY ,NZ ,GAPV ,PENIS ,PENIM ,
39 7 INACTI ,NEWFRONT ,NRTS ,MS1 ,MS2 ,
40 8 MM1 ,MM2 ,VXS1 ,VYS1 ,VZS1 ,
41 9 VXS2 ,VYS2 ,VZS2 ,VXM1 ,VYM1 ,
42 A VZM1 ,VXM2 ,VYM2 ,VZM2 ,NIN ,
43 B DTMINI ,IFORM ,CAND_FX ,CAND_FY ,CAND_FZ ,
44 C INDEX ,IFPEN ,STFS ,FNI ,
45 E FX1 ,FY1 ,FZ1 ,FX2 ,FY2 ,
46 F FZ2 ,FX3 ,FY3 ,FZ3 ,FX4 ,
47 G FY4 ,FZ4 ,K1 ,K2 ,K3 ,
48 H K4 ,C1 ,C2 ,C3 ,C4 ,
49 I INTTH ,DRAD ,PENRAD ,ISENSINT,FSAVPARIT,
50 J NISUB ,NFT ,ADDSUBS ,ADDSUBM ,LISUBS ,
51 K LISUBM ,LISUB ,FSAVSUB ,FRICC ,VISCFFRIC,
52 L TAGNCONT ,KLOADPINTER,LOADPINTER,LOADP_HYD_INTER,
53 M TYPSUB ,INFLG_SUBS ,INFLG_SUBM,NINLOADP ,
54 N DGAPLOADINT,S_LOADPINTER )
62#include "implicit_f.inc"
86 INTEGER NELTST,ITYPTST,JLT,IBC,IVIS2,INACTI,NRTS,NIN,INTTH
88 . NOINT,NEWFRONT,NISUB,NFT
89 INTEGER N1(MVSIZ), N2(MVSIZ), M1(MVSIZ), M2(MVSIZ),
90 . CS_LOC(MVSIZ), CM_LOC(MVSIZ),
91 . NSMS(MVSIZ),IFORM,INDEX(*),IFPEN(*), ISENSINT(*),
92 . (*),ADDSUBM(*),LISUBS(*),LISUBM(*),LISUB(*),
93 . TAGNCONT(NLOADP_HYD_INTER,NUMNOD),
94 . TYPSUB(*),INFLG_SUBS(*), INFLG_SUBM(*)
95 INTEGER ,
INTENT(IN) :: NINLOADP,S_LOADPINTER
96 INTEGER ,
INTENT(IN) :: KLOADPINTER(NINTER+1),LOADPINTER(S_LOADPINTER),
97 . LOADP_HYD_INTER(NLOADP_HYD)
101 . PENIS(2,*), PENIM(2,*),
102 . GAP, FRIC,VISC,VISCF,VIS,DT2T,DTMINI,DRAD
104 . HS1(MVSIZ), HS2(MVSIZ), HM1(MVSIZ), HM2(MVSIZ),
105 . NX(MVSIZ), NY(MVSIZ), NZ(MVSIZ), STIF(MVSIZ),
106 . MS1(MVSIZ),MS2(MVSIZ),MM1(MVSIZ),MM2(MVSIZ),
107 . VXS1(MVSIZ),VYS1(MVSIZ),VZS1(MVSIZ),VXS2(),VYS2(MVSIZ),
108 . vzs2(mvsiz),vxm1(mvsiz),vym1(mvsiz),vzm1(mvsiz),vxm2(mvsiz),
109 . vym2(mvsiz),vzm2(mvsiz),cand_fx(*),cand_fy(*),
111 . fx1(mvsiz), fx2(mvsiz), fx3(mvsiz), fx4(mvsiz),
112 . fy1(mvsiz), fy2(mvsiz), fy3(mvsiz), fy4(mvsiz),
113 . fz1(mvsiz), fz2(mvsiz), fz3(mvsiz), fz4(mvsiz),
114 . k1(mvsiz),k2(mvsiz),k3(mvsiz),k4(mvsiz),
115 . c1(mvsiz),c2(mvsiz),c3(mvsiz),c4(mvsiz),penrad(mvsiz),
116 . fsavparit(nisub+1,11,*),fsavsub(nthvki,*),fricc(mvsiz),
118 my_real ,
INTENT(IN) :: dgaploadint(s_loadpinter)
124 INTEGER I, J1, J , K0,NBINTER,K1S,K, NI
125 INTEGER NISKYL,NISKYL1,IDTM,IM,IS,JSUB,KSUB,JJ,KK,NSUB,PP,PPL,
126 . ITYPSUB,ISS1,ISS2,IMS1,IMS2
128 . VX(MVSIZ), VY(MVSIZ), VZ(MVSIZ), (MVSIZ),
129 . FXI(MVSIZ), FYI(), FZI(),
131 . PENE(MVSIZ),MASMIN(MVSIZ),
132 . VIS2(MVSIZ), DTMI(MVSIZ),
133 . VNX, VNY, VNZ, , VMAX
134, FM2, DT1INV, VISCA, FAC, FF,
135 . FX, FY, , F2, MAS2, DTI,
136 . FACM1, ECONTT, ECONVT, A2,MASM,ECONTDT,
137 . FSAV1, FSAV2, FSAV3, , FSAV5, FSAV6,
138 . FSAV8, FSAV9, FSAV10, FSAV11, FSAV12,
139 . FSAV13, FSAV14, FSAV15, DTI2, PPLUS,DTMI0
140 my_real prec,beta,dgapload
142 . st1(mvsiz),st2(mvsiz),st3(mvsiz),st4(mvsiz),
143 . kt(mvsiz),c(mvsiz),cf(mvsiz),
144 . cx,cy,cfi,aux,dtm,ft,fn,ftn,fxt(mvsiz),fyt(mvsiz),
161 IF(intth/=0.OR.ninloadp/=0 )
THEN
164 dist = sqrt(nx(i)**2 + ny(i)**2 + nz(i)**2)
165 penrad(i)=dist-gapv(i)
170 s2 = sqrt(nx(i)**2 + ny(i)**2 + nz(i)**2)
171 pene(i) =
max(zero,gapv(i) - s2)
172 s2 = one/
max(em30,s2)
181 IF(cs_loc(i)<=nrts)
THEN
182 penis(2,cs_loc(i)) =
max(penis(2,cs_loc(i)),half*pene(i))
187 penim(2,cm_loc(i)) =
max(penim(2,cm_loc(i)),half*pene(i))
189#include
"lockoff.inc"
191 IF(cs_loc(i)<=nrts)
THEN
192 pene(i) = pene(i) - penis(1,cs_loc(i)) - penim(1,cm_loc(i))
193 pene(i) =
max(pene(i),zero)
194 IF(pene(i)==zero)stif(i)=zero
195 gapv(i) = gapv(i) - penis(1,cs_loc(i)) - penim(1,cm_loc(i))
198 pene(i) = pene(i) -
penfi(nin)%P(1,ni) - penim(1,cm_loc(i))
199 pene(i) =
max(pene(i),zero)
200 IF(pene(i)==zero)stif(i)=zero
201 gapv(i) = gapv(i) -
penfi(nin)%P(1,ni) - penim(1,cm_loc(i))
204 ELSE IF(inacti==6)
THEN
207 pplus=half*(pene(i)+fiveem2*(gapv(i)-pene(i)))
208 IF(cs_loc(i)<=nrts)
THEN
209 penis(2,cs_loc(i)) =
max(penis(2,cs_loc(i)),pplus)
214 penim(2,cm_loc(i)) =
max(penim(2,cm_loc(i)),pplus)
216#include "lockoff.inc"
218 IF(cs_loc(i)<=nrts)
THEN
219 pene(i) = pene(i) - penis(1,cs_loc(i)) - penim
220 pene(i) =
max(pene(i),zero)
221 IF(pene(i)==zero)stif(i)=zero
222 gapv(i) = gapv(i) - penis(1,cs_loc(i)) - penim(1,cm_loc(i))
225 pene(i) = pene(i) -
penfi(nin)%P(1,ni) - penim(1,cm_loc(i))
226 pene(i) =
max(pene(i),zero)
227 IF(pene(i)==zero)stif(i)=zero
228 gapv(i) = gapv(i) -
penfi(nin)%P(1,ni) - penim(1
239 gapv(i) = zep9*gapv(i)
240 vx(i) = hs1(i)*vxs1(i) + hs2(i)*vxs2(i)
241 . - hm1(i)*vxm1(i) - hm2(i)*vxm2(i)
242 vy(i) = hs1(i)*vys1(i) + hs2(i)*vys2(i)
243 . - hm1(i)*vym1(i) - hm2(i)*vym2(i)
244 vz(i) = hs1(i)*vzs1(i) + hs2(i)*vzs2
245 . - hm1(i)*vzm1(i) - hm2(i)*vzm2(i)
246 vn(i) = nx(i)*vx(i) + ny(i)*vy(i) + nz(i)*vz(i)
250 fac = gapv(i)/
max( em10,( gapv(i)-pene(i) ) )
252 IF(( (gapv(i)-pene(i))/gapv(i) )<prec .AND.
253 . stif(i)>zero )
THEN
258 IF(cs_loc(i)<=nrts)
THEN
259 stfs(cs_loc(i)) = -abs(stfs(cs_loc(i)))
260 WRITE(istdo,*)
'WARNING INTERFACE NB',noint
261 WRITE(istdo,*)
'LINE ',itab(n1(i)),
262 . itab(n2(i)),
'DE-ACTIVATED FROM',
'INTERFACE'
263 WRITE(iout,*)
'WARNING INTERFACE NB',noint
264 WRITE(iout,*)
'GAP=',gapv(i),
'PENE=',pene(i)
265 WRITE(iout,*)
'LINE ',itab(n1(i)),
266 . itab(n2(i)),
'DE-ACTIVATED FROM',
'INTERFACE'
270 WRITE(istdo,*)
'WARNING INTERFACE NB',noint
271 WRITE(istdo,*)
'LINE ',
itafi(nin)%P(n1(i)),
272 .
itafi(nin)%P(n2(i)),
'DE-ACTIVATED FROM',
'INTERFACE'
273 WRITE(iout,*)
'WARNING INTERFACE NB',noint
274 WRITE(iout,*)
'GAP=',gapv(i),
'PENE=',pene(i)
275 WRITE(iout,*)
'LINE ',
itafi(nin)%P(n1(i)),
276 .
itafi(nin)%P(n2(i)),
'DE-ACTIVATED FROM',
'INTERFACE'
278#include "lockoff.inc"
282 econtt = econtt + half*stif(i)*gapv(i)**2 *( facm1 - one -
284 stif(i) = half*stif(i) * fac
285 fni(i)= -stif(i) * pene(i)
309 IF (dtmini>zero)
THEN
320 dti2 = half*dist /
max(em30,-vn(i))
323 IF(cs_loc(i)<=nrts)
THEN
324 WRITE(iout,
'(A,E12.4,A,I10,A,E12.4,A)')
325 .
' **WARNING MINIMUM TIME STEP ',dti2,
326 .
'IN INTERFACE NB',noint,
'(DTMIN=',dtm,
')'
327 WRITE(iout,*)'secondary nodes nb
',ITAB(N1(I)),
329 WRITE(IOUT,*)'main nodes nb
',ITAB(M1(I)),
332 WRITE(IOUT,'(a,e12.4,a,i10,a,e12.4,a)
')
333 . ' **warning minimum time step
',DTI2,
334 . 'in
INTERFACE nb
',NOINT,'(dtmin=
',DTM,')
'
335 WRITE(IOUT,*)'secondary nodes nb
',ITAFI(NIN)%P(N1(I)),
336 . ITAFI(NIN)%P(N2(I))
337 WRITE(IOUT,*)'main nodes nb
',ITAB(M1(I)),
340#include "lockoff.inc"
345 WRITE(IOUT,*)'remove secondary line from interface
'
346 IF(CS_LOC(I)<=NRTS)THEN
347 STFS(CS_LOC(I)) = -ABS(STFS(CS_LOC(I)))
350 STIFI(NIN)%P(NI) = -ABS(STIFI(NIN)%P(NI))
352#include "lockoff.inc"
377 MASMIN(I) = MIN(MAS2,MASM)
378 VIS2(I) = TWO * STIF(I) * MIN(MAS2,MASM)
382 IF(VISCFFRIC(I)/=ZERO) THEN
387 MASMIN(I) = MIN(MAS2,MASM)
388 VIS2(I) = TWO * STIF(I) * MIN(MAS2,MASM)
395.OR.
IF(IVIS2==0IVIS2==1)THEN
401 . VIS2(I) = VIS2(I)/(MAX(EM10,(GAPV(I)-PENE(I))/GAPV(I)))
405.AND..AND.
IF(KDTINT==0(IDTMINS/=2IDTMINS_INT==0))THEN
407 FAC = STIF(I) / MAX(EM30,STIF(I))
411 . VISCA**2 * TWO * MASMIN(I) * MAX(ZERO,-VN(I)) /
412 . MAX((GAPV(I) - PENE(I)),EM10) )
413 STIF(I) = STIF(I) * GAPV(I)/MAX((GAPV(I)-PENE(I)),EM10)
414 STIF(I) = STIF(I) + FF * DT1INV
415 STIF(I) = MAX(STIF(I) ,FAC*SQRT(VISCFFRIC(I))*VIS*DT1INV)
416 FF = MIN(FF * VN(I),-FNI(I))
424 FAC = STIF(I) / MAX(EM30,STIF(I))
428 . VISCA**2 * TWO * MASMIN(I) * MAX(ZERO,-VN(I)) /
429 . MAX((GAPV(I) - PENE(I)),EM10) )
430 STIF(I) = STIF(I) * GAPV(I) / MAX((GAPV(I) - PENE(I)),EM10)
432 STIF(I) = STIF(I) + C(I) * DT1INV
433 FF = MIN(C(I) * VN(I),-FNI(I))
436 CF(I) = FAC*SQRT(VISCFFRIC(I))*VIS
437 STIF(I) = MAX(STIF(I) ,CF(I)*DT1INV)
447 VIS2(I) = VIS2(I)/( MAX(EM10,(GAPV(I)-PENE(I))/GAPV(I)))
452 FAC = STIF(I) / MAX(EM30,STIF(I))
456 . VISCA**2 * TWO * MASMIN(I) * ABS(VN(I)) /
457 . MAX((GAPV(I) - PENE(I)),EM10) )
458 STIF(I) = STIF(I) * GAPV(I) / MAX((GAPV(I)-PENE(I)),EM10)
459 STIF(I) = STIF(I) + TWO * FF * DT1INV
460 STIF(I) = MAX(STIF(I) ,FAC*SQRT(VISCFFRIC(I))*VIS*DT1INV)
461 FF = MIN(FF * VN(I),-FNI(I))
469 FAC = STIF(I) / MAX(EM30,STIF(I))
471 FF = FAC * ( VISC * VIS ) /
472 . MAX((GAPV(I) - PENE(I)),EM10)
473 STIF(I) = STIF(I) * GAPV(I) / MAX((GAPV(I)-PENE(I)),EM10)
474 STIF(I) = STIF(I) + TWO * FF * DT1INV
475 STIF(I) = MAX(STIF(I) ,FAC*SQRT(VISCFFRIC(I))*VIS*DT1INV)
476 FF = MIN(FF * VN(I),-FNI(I))
485 STIF(I) = STIF(I) * GAPV(I) / MAX((GAPV(I)-PENE(I)),EM10)
486 STIF(I) = MAX(STIF(I) ,FAC*SQRT(VISCFFRIC(I))*VIS*DT1INV)
499 VIS = 2. * VISC * DT1INV * MASM * MAS2 /
500 . MAX(EM30,MASM+MAS2)
501 STIF(I) = STIF(I) * GAPV(I) / MAX((GAPV(I) -PENE(I)),EM10)
502 STIF(I) = MAX(STIF(I) ,FAC*SQRT(VISCFFRIC(I)*VIS2(I))*DT1INV)
504 ECONTDT = ECONTDT + MIN(ZERO,FF-FNI(I)) * VN(I) * DT1
505 FNI(I) = MIN(FNI(I),FF)
511 STIF(I) = STIF(I) * GAPV(I) / MAX((GAPV(I) - PENE(I)),EM10)
528 FSAV1=FSAV1+FXI(I)*DT12
529 FSAV2=FSAV2+FYI(I)*DT12
530 FSAV3=FSAV3+FZI(I)*DT12
531 FSAV8=FSAV8+ABS(FXI(I)*DT12)
532 FSAV9=FSAV9+ABS(FYI(I)*DT12)
533 FSAV10=FSAV10+ABS(FZI(I)*DT12)
534 FSAV11=FSAV11+ABS(FNI(I))*DT12
538 FSAV(1)=FSAV(1)+FSAV1
539 FSAV(2)=FSAV(2)+FSAV2
540 FSAV(3)=FSAV(3)+FSAV3
541 FSAV(8)=FSAV(8)+FSAV8
542 FSAV(9)=FSAV(9)+FSAV9
543 FSAV(10)=FSAV(10)+FSAV10
544 FSAV(11)=FSAV(11)+FSAV11
545#include "lockoff.inc"
548 IF(ISENSINT(1)/=0) THEN
550 FSAVPARIT(1,1,I+NFT) = FXI(I)
551 FSAVPARIT(1,2,I+NFT) = FYI(I)
552 FSAVPARIT(1,3,I+NFT) = FZI(I)
563 IF (CS_LOC(I)<=NRTS) THEN
567 DO WHILE(JJ<ADDSUBS(IS+1))
569 ITYPSUB = TYPSUB(JSUB)
571 IF(ITYPSUB == 1 ) THEN ! Defining specific inter
575.AND.
DO WHILE((KSUB<=JSUB)(KK<ADDSUBM(IM+1)))
582 FSAV8=ABS(FXI(I)*DT12)
583 FSAV9=ABS(FYI(I)*DT12)
584 FSAV10=ABS(FZI(I)*DT12)
585 FSAV11=ABS(FNI(I))*DT12
588 FSAVSUB(1,NSUB)=FSAVSUB(1,NSUB)+FSAV1
589 FSAVSUB(2,NSUB)=FSAVSUB(2,NSUB)+FSAV2
590 FSAVSUB(3,NSUB)=FSAVSUB(3,NSUB)+FSAV3
591 FSAVSUB(8,NSUB)=FSAVSUB(8,NSUB)+FSAV8
592 FSAVSUB(9,NSUB)=FSAVSUB(9,NSUB)+FSAV9
593 FSAVSUB(10,NSUB)=FSAVSUB(10,NSUB)+FSAV10
594 FSAVSUB(11,NSUB)=FSAVSUB(11,NSUB)+FSAV11
596 IF(ISENSINT(JSUB+1)/=0) THEN
597 FSAVPARIT(JSUB+1,1,I+NFT) = FXI(I)
598 FSAVPARIT(JSUB+1,2,I+NFT) = FYI(I)
599 FSAVPARIT(JSUB+1,3,I+NFT) = FZI(I)
609 ELSEIF(ITYPSUB == 2 ) THEN ! Inter =0 : collecting forces from all inter with only 1 surface : secondary side
614 FSAV8=ABS(FXI(I)*DT12)
615 FSAV9=ABS(FYI(I)*DT12)
616 FSAV10=ABS(FZI(I)*DT12)
617 FSAV11=ABS(FNI(I))*DT12
620 FSAVSUB(1,NSUB)=FSAVSUB(1,NSUB)+FSAV1
621 FSAVSUB(2,NSUB)=FSAVSUB(2,NSUB)+FSAV2
622 FSAVSUB(3,NSUB)=FSAVSUB(3,NSUB)+FSAV3
623 FSAVSUB(8,NSUB)=FSAVSUB(8,NSUB)+FSAV8
624 FSAVSUB(9,NSUB)=FSAVSUB(9,NSUB)+FSAV9
625 FSAVSUB(10,NSUB)=FSAVSUB(10,NSUB)+FSAV10
626 FSAVSUB(11,NSUB)=FSAVSUB(11,NSUB)+FSAV11
628 IF(ISENSINT(JSUB+1)/=0) THEN
629 FSAVPARIT(JSUB+1,1,I+NFT) = FXI(I)
630 FSAVPARIT(JSUB+1,2,I+NFT) = FYI(I)
631 FSAVPARIT(JSUB+1,3,I+NFT) = FZI(I)
636 ELSEIF(ITYPSUB == 3 ) THEN ! Inter =0 : collecting forces from all inter with 2 surfacec
638 ISS2 = BITGET(INFLG_SUBS(JJ),0)
639 ISS1 = BITGET(INFLG_SUBS(JJ),1)
641.AND.
DO WHILE((KSUB<=JSUB)(KK<ADDSUBM(IM+1)))
642 IMS2 = BITGET(INFLG_SUBM(KK),0)
643 IMS1 = BITGET(INFLG_SUBM(KK),1)
645.NOT..AND..OR.
IF(((IMS1 == 1 ISS2 == 1)
646.AND.
. (IMS2 == 1 ISS1 == 1))) THEN
655 FSAV8=ABS(FXI(I)*DT12)
656 FSAV9=ABS(FYI(I)*DT12)
657 FSAV10=ABS(FZI(I)*DT12)
658 FSAV11=ABS(FNI(I))*DT12
662 FSAVSUB(1,NSUB)=FSAVSUB(1,NSUB)-FSAV1
663 FSAVSUB(2,NSUB)=FSAVSUB(2,NSUB)-FSAV2
664 FSAVSUB(3,NSUB)=FSAVSUB(3,NSUB)-FSAV3
667 FSAVSUB(1,NSUB)=FSAVSUB(1,NSUB)+FSAV1
668 FSAVSUB(2,NSUB)=FSAVSUB(2,NSUB)+FSAV2
669 FSAVSUB(3,NSUB)=FSAVSUB(3,NSUB)+FSAV3
671 FSAVSUB(8,NSUB)=FSAVSUB(8,NSUB)+FSAV8
672 FSAVSUB(9,NSUB)=FSAVSUB(9,NSUB)+FSAV9
673 FSAVSUB(10,NSUB)=FSAVSUB(10,NSUB)+FSAV10
674 FSAVSUB(11,NSUB)=FSAVSUB(11,NSUB)+FSAV11
676 IF(ISENSINT(JSUB+1)/=0) THEN
678 FSAVPARIT(JSUB+1,1,I+NFT) = -FXI(I)
679 FSAVPARIT(JSUB+1,2,I+NFT) = -FYI(I)
680 FSAVPARIT(JSUB+1,3,I+NFT) = -FZI(I)
682 FSAVPARIT(JSUB+1,1,I+NFT) = FXI(I)
683 FSAVPARIT(JSUB+1,2,I+NFT) = FYI(I)
684 FSAVPARIT(JSUB+1,3,I+NFT) = FZI(I)
699 DO WHILE(KK<ADDSUBM(IM+1))
702 ITYPSUB = TYPSUB(KSUB)
703 IF(ITYPSUB == 2 ) THEN ! Inter =0 : collecting forces from all inter with only 1 surface : main side
708 FSAV8=ABS(FXI(I)*DT12)
709 FSAV9=ABS(FYI(I)*DT12)
710 FSAV10=ABS(FZI(I)*DT12)
711 FSAV11=ABS(FNI(I))*DT12
714 FSAVSUB(1,NSUB)=FSAVSUB(1,NSUB)-FSAV1
715 FSAVSUB(2,NSUB)=FSAVSUB(2,NSUB)-FSAV2
716 FSAVSUB(3,NSUB)=FSAVSUB(3,NSUB)-FSAV3
717 FSAVSUB(8,NSUB)=FSAVSUB(8,NSUB)+FSAV8
718 FSAVSUB(9,NSUB)=FSAVSUB(9,NSUB)+FSAV9
719 FSAVSUB(10,NSUB)=FSAVSUB(10,NSUB)+FSAV10
720 FSAVSUB(11,NSUB)=FSAVSUB(11,NSUB)+FSAV11
722 IF(ISENSINT(JSUB+1)/=0) THEN
723 FSAVPARIT(JSUB+1,1,I+NFT) = -FXI(I)
724 FSAVPARIT(JSUB+1,2,I+NFT) = -FYI(I)
725 FSAVPARIT(JSUB+1,3,I+NFT) = -FZI(I)
738 JJ =ADDSUBSFI(NIN)%P(IS)
739 DO WHILE(JJ<ADDSUBSFI(NIN)%P(IS+1))
740 JSUB=LISUBSFI(NIN)%P(JJ)
741 ITYPSUB = TYPSUB(JSUB)
743 IF(ITYPSUB == 1 ) THEN ! Defining specific inter
746.AND.
DO WHILE((KSUB<=JSUB)(KK<ADDSUBM(IM+1)))
753 FSAV8=ABS(FXI(I)*DT12)
754 FSAV9=ABS(FYI(I)*DT12)
755 FSAV10=ABS(FZI(I)*DT12)
756 FSAV11=ABS(FNI(I))*DT12
759 FSAVSUB(1,NSUB)=FSAVSUB(1,NSUB)+FSAV1
760 FSAVSUB(2,NSUB)=FSAVSUB(2,NSUB)+FSAV2
761 FSAVSUB(3,NSUB)=FSAVSUB(3,NSUB)+FSAV3
762 FSAVSUB(8,NSUB)=FSAVSUB(8,NSUB)+FSAV8
763 FSAVSUB(9,NSUB)=FSAVSUB(9,NSUB)+FSAV9
764 FSAVSUB(10,NSUB)=FSAVSUB(10,NSUB)+FSAV10
765 FSAVSUB(11,NSUB)=FSAVSUB(11,NSUB)+FSAV11
767 IF(ISENSINT(JSUB+1)/=0) THEN
768 FSAVPARIT(JSUB+1,1,I+NFT) = FXI(I)
769 FSAVPARIT(JSUB+1,2,I+NFT) = FYI(I)
770 FSAVPARIT(JSUB+1,3,I+NFT) = FZI(I)
780 ELSEIF(ITYPSUB == 2 ) THEN ! Inter =0 : collecting forces from all inter with only 1 surface
785 FSAV8=ABS(FXI(I)*DT12)
786 FSAV9=ABS(FYI(I)*DT12)
787 FSAV10=ABS(FZI(I)*DT12)
788 FSAV11=ABS(FNI(I))*DT12
791 FSAVSUB(1,NSUB)=FSAVSUB(1,NSUB)+FSAV1
792 FSAVSUB(2,NSUB)=FSAVSUB(2,NSUB)+FSAV2
793 FSAVSUB(3,NSUB)=FSAVSUB(3,NSUB)+FSAV3
794 FSAVSUB(8,NSUB)=FSAVSUB(8,NSUB)+FSAV8
795 FSAVSUB(9,NSUB)=FSAVSUB(9,NSUB)+FSAV9
796 FSAVSUB(10,NSUB)=FSAVSUB(10,NSUB)+FSAV10
797 FSAVSUB(11,NSUB)=FSAVSUB(11,NSUB)+FSAV11
799 IF(ISENSINT(JSUB+1)/=0) THEN
800 FSAVPARIT(JSUB+1,1,I+NFT) = FXI(I)
801 FSAVPARIT(JSUB+1,2,I+NFT) = FYI(I)
802 FSAVPARIT(JSUB+1,3,I+NFT) = FZI(I)
808 ELSEIF(ITYPSUB == 3 ) THEN ! Inter =0 : collecting forces from all inter with 2 surfacec
810 ISS2 = BITGET(INFLG_SUBSFI(NIN)%P(JJ),0)
811 ISS1 = BITGET(INFLG_SUBSFI(NIN)%P(JJ),1)
813.AND.
DO WHILE((KSUB<=JSUB)(KK<ADDSUBM(IM+1)))
814 IMS2 = BITGET(INFLG_SUBM(KK),0)
815 IMS1 = BITGET(INFLG_SUBM(KK),1)
817.NOT..AND..OR.
IF(((IMS1 == 1 ISS2 == 1)
818.AND.
. (IMS2 == 1 ISS1 == 1))) THEN
827 FSAV8=ABS(FXI(I)*DT12)
828 FSAV9=ABS(FYI(I)*DT12)
829 FSAV10=ABS(FZI(I)*DT12)
830 FSAV11=ABS(FNI(I))*DT12
834 FSAVSUB(1,NSUB)=FSAVSUB(1,NSUB)-FSAV1
835 FSAVSUB(2,NSUB)=FSAVSUB(2,NSUB)-FSAV2
836 FSAVSUB(3,NSUB)=FSAVSUB(3,NSUB)-FSAV3
839 FSAVSUB(1,NSUB)=FSAVSUB(1,NSUB)+FSAV1
840 FSAVSUB(2,NSUB)=FSAVSUB(2,NSUB)+FSAV2
841 FSAVSUB(3,NSUB)=FSAVSUB(3,NSUB)+FSAV3
843 FSAVSUB(8,NSUB)=FSAVSUB(8,NSUB)+FSAV8
844 FSAVSUB(9,NSUB)=FSAVSUB(9,NSUB)+FSAV9
845 FSAVSUB(10,NSUB)=FSAVSUB(10,NSUB)+FSAV10
846 FSAVSUB(11,NSUB)=FSAVSUB(11,NSUB)+FSAV11
848 IF(ISENSINT(JSUB+1)/=0) THEN
850 FSAVPARIT(JSUB+1,1,I+NFT) = -FXI(I)
851 FSAVPARIT(JSUB+1,2,I+NFT) = -FYI(I)
852 FSAVPARIT(JSUB+1,3,I+NFT) = -FZI(I)
854 FSAVPARIT(JSUB+1,1,I+NFT) = FXI(I)
855 FSAVPARIT(JSUB+1,2,I+NFT) = FYI(I)
856 FSAVPARIT(JSUB+1,3,I+NFT) = FZI(I)
877 IF(NINLOADP > 0) THEN
878 DO K = KLOADPINTER(NIN)+1, KLOADPINTER(NIN+1)
880 PPL = LOADP_HYD_INTER(PP)
881 DGAPLOAD = DGAPLOADINT(K)
883 DIST = PENRAD(I) + GAPV(I)
884 GAPP= GAPV(I) + DGAPLOAD
885.OR.
IF(PENE(I) > ZERO DIST <= GAPP) THEN
886 TAGNCONT(PPL,M1(I)) = 1
887 TAGNCONT(PPL,M2(I)) = 1
888 IF(CS_LOC(I)<=NRTS) THEN
890 TAGNCONT(PPL,N1(I)) = 1
891 TAGNCONT(PPL,N2(I)) = 1
910 IF(FRICC(I)*VISCFFRIC(I)/=0.)THEN
917 V2 = VX(I)**2 + VY(I)**2 + VZ(I)**2
918 VIS2(I) = VISCFFRIC(I) * VIS2(I)
919 FM2 = (FRICC(I)*FNI(I))**2
921 A2 = MIN(F2,FM2) / MAX(EM30,F2)
922 AA = SQRT(A2 * VIS2(I))
926 FSAV4 = FSAV4 + FXT(I)*DT12
927 FSAV5 = FSAV5 + FYT(I)*DT12
928 FSAV6 = FSAV6 + FZT(I)*DT12
929 FXI(I)=FXI(I) + FXT(I)
930 FYI(I)=FYI(I) + FYT(I)
931 FZI(I)=FZI(I) + FZT(I)
932 FSAV12 = FSAV12 + ABS(FXI(I)*DT12)
933 FSAV13 = FSAV13 + ABS(FYI(I)*DT12)
934 FSAV14 = FSAV14 + ABS(FZI(I)*DT12)
935 FSAV15 = FSAV15 + SQRT(FXI(I)*FXI(I)+FYI(I)*FYI(I)+FZI(I)*FZI(I))*DT12
936 ECONVT = ECONVT + AA * V2 * DT1
941 FSAV(4) = FSAV(4) + FSAV4
942 FSAV(5) = FSAV(5) + FSAV5
943 FSAV(6) = FSAV(6) + FSAV6
944 FSAV(12) = FSAV(12) + FSAV12
945 FSAV(13) = FSAV(13) + FSAV13
946 FSAV(14) = FSAV(14) + FSAV14
947 FSAV(15) = FSAV(15) + FSAV15
948#include "lockoff.inc"
962 FX = STIF(I)*VX(I)*DT12
963 FY = STIF(I)*VY(I)*DT12
964 FZ = STIF(I)*VZ(I)*DT12
965 FX = CAND_FX(INDEX(I)) + FX
966 FY = CAND_FY(INDEX(I)) + FY
967 FZ = CAND_FZ(INDEX(I)) + FZ
968 FTN = FX*NX(I) + FY*NY(I) + FZ*NZ(I)
972 FT = FX*FX + FY*FY + FZ*FZ
974 FN = FXI(I)**2+FYI(I)**2+FZI(I)**2
975 BETA = MIN(ONE,FRICC(I)*SQRT(FN/FT))
979 FSAV4 = FSAV4 + FXT(I)*DT12
980 FSAV5 = FSAV5 + FYT(I)*DT12
981 FSAV6 = FSAV6 + FZT(I)*DT12
982 CAND_FX(INDEX(I)) = FXT(I)
983 CAND_FY(INDEX(I)) = FYT(I)
984 CAND_FZ(INDEX(I)) = FZT(I)
986 FXI(I)=FXI(I) + FXT(I)
987 FYI(I)=FYI(I) + FYT(I)
988 FZI(I)=FZI(I) + FZT(I)
989 FSAV12 = FSAV12 + ABS(FXI(I)*DT12)
990 FSAV13 = FSAV13 + ABS(FYI(I)*DT12)
991 FSAV14 = FSAV14 + ABS(FZI(I)*DT12)
992 FSAV15 = FSAV15 + SQRT(FXI(I)*FXI(I)+FYI(I)*FYI(I)+FZI(I)*FZI(I))*DT12
994 . + DT1*(VX(I)*FXT(I)+VY(I)*FYT(I)+VZ(I)*FZT(I))
998 FSAV(4) = FSAV(4) + FSAV4
999 FSAV(5) = FSAV(5) + FSAV5
1000 FSAV(6) = FSAV(6) + FSAV6
1001 FSAV(12) = FSAV(12) + FSAV12
1002 FSAV(13) = FSAV(13) + FSAV13
1003 FSAV(14) = FSAV(14) + FSAV14
1004 FSAV(15) = FSAV(15) + FSAV15
1005#include "lockoff.inc"
1010 IF(ISENSINT(1)/=0) THEN
1012 FSAVPARIT(1,4,I+NFT) = FXT(I)
1013 FSAVPARIT(1,5,I+NFT) = FYT(I)
1014 FSAVPARIT(1,6,I+NFT) = FZT(I)
1026 IF (CS_LOC(I)<=NRTS) THEN
1031 DO WHILE(JJ<ADDSUBS(IS+1))
1033 ITYPSUB = TYPSUB(JSUB)
1034 IF(ITYPSUB == 1 ) THEN ! Defining specific inter
1037.AND.
DO WHILE((KSUB<=JSUB)(KK<ADDSUBM(IM+1)))
1043 FSAV12 = ABS(FXI(I)*DT12)
1044 FSAV13 = ABS(FYI(I)*DT12)
1045 FSAV14 = ABS(FZI(I)*DT12)
1046 FSAV15 = SQRT(FXI(I)*FXI(I)+FYI(I)*FYI(I)+FZI(I)*FZI(I))*DT12
1049 FSAVSUB(4,NSUB)=FSAVSUB(4,NSUB)+FSAV4
1050 FSAVSUB(5,NSUB)=FSAVSUB(5,NSUB)+FSAV5
1051 FSAVSUB(6,NSUB)=FSAVSUB(6,NSUB)+FSAV6
1052 FSAVSUB(12,NSUB)=FSAVSUB(12,NSUB)+FSAV12
1053 FSAVSUB(13,NSUB)=FSAVSUB(13,NSUB)+FSAV13
1054 FSAVSUB(14,NSUB)=FSAVSUB(14,NSUB)+FSAV14
1055 FSAVSUB(15,NSUB)=FSAVSUB(15,NSUB)+FSAV15
1057 IF(ISENSINT(JSUB+1)/=0) THEN
1058 FSAVPARIT(JSUB+1,4,I+NFT) = FXT(I)
1059 FSAVPARIT(JSUB+1,5,I+NFT) = FYT(I)
1060 FSAVPARIT(JSUB+1,6,I+NFT) = FZT(I)
1069 ELSEIF(ITYPSUB == 2 ) THEN ! Inter =0 : collecting forces from all inter with only 1 surface
1074 FSAV12 = ABS(FXI(I)*DT12)
1075 FSAV13 = ABS(FYI(I)*DT12)
1076 FSAV14 = ABS(FZI(I)*DT12)
1077 FSAV15 = SQRT(FXI(I)*FXI(I)+FYI(I)*FYI(I)+FZI(I)*FZI(I))*DT12
1080 FSAVSUB(4,NSUB)=FSAVSUB(4,NSUB)+FSAV4
1081 FSAVSUB(5,NSUB)=FSAVSUB(5,NSUB)+FSAV5
1082 FSAVSUB(6,NSUB)=FSAVSUB(6,NSUB)+FSAV6
1083 FSAVSUB(12,NSUB)=FSAVSUB(12,NSUB)+FSAV12
1084 FSAVSUB(13,NSUB)=FSAVSUB(13,NSUB)+FSAV13
1085 FSAVSUB(14,NSUB)=FSAVSUB(14,NSUB)+FSAV14
1086 FSAVSUB(15,NSUB)=FSAVSUB(15,NSUB)+FSAV15
1088 IF(ISENSINT(JSUB+1)/=0) THEN
1089 FSAVPARIT(JSUB+1,4,I+NFT) = FXT(I)
1090 FSAVPARIT(JSUB+1,5,I+NFT) = FYT(I)
1091 FSAVPARIT(JSUB+1,6,I+NFT) = FZT(I)
1095 ELSEIF(ITYPSUB == 3) THEN
1097 ISS2 = BITGET(INFLG_SUBS(JJ),0)
1098 ISS1 = BITGET(INFLG_SUBS(JJ),1)
1100.AND.
DO WHILE((KSUB<=JSUB)(KK<ADDSUBM(IM+1)))
1101 IMS2 = BITGET(INFLG_SUBM(KK),0)
1102 IMS1 = BITGET(INFLG_SUBM(KK),1)
1104.NOT..AND..OR.
IF(((IMS1 == 1 ISS2 == 1)
1105.AND.
. (IMS2 == 1 ISS1 == 1))) THEN
1114 FSAV12 = ABS(FXI(I)*DT12)
1115 FSAV13 = ABS(FYI(I)*DT12)
1116 FSAV14 = ABS(FZI(I)*DT12)
1117 FSAV15 = SQRT(FXI(I)*FXI(I)+FYI(I)*FYI(I)+FZI(I)*FZI(I))*DT12
1121 FSAVSUB(4,NSUB)=FSAVSUB(4,NSUB)-FSAV4
1122 FSAVSUB(5,NSUB)=FSAVSUB(5,NSUB)-FSAV5
1123 FSAVSUB(6,NSUB)=FSAVSUB(6,NSUB)-FSAV6
1125 FSAVSUB(4,NSUB)=FSAVSUB(4,NSUB)+FSAV4
1126 FSAVSUB(5,NSUB)=FSAVSUB(5,NSUB)+FSAV5
1127 FSAVSUB(6,NSUB)=FSAVSUB(6,NSUB)+FSAV6
1129 FSAVSUB(12,NSUB)=FSAVSUB(12,NSUB)+FSAV12
1130 FSAVSUB(13,NSUB)=FSAVSUB(13,NSUB)+FSAV13
1131 FSAVSUB(14,NSUB)=FSAVSUB(14,NSUB)+FSAV14
1132 FSAVSUB(15,NSUB)=FSAVSUB(15,NSUB)+FSAV15
1134 IF(ISENSINT(JSUB+1)/=0) THEN
1136 FSAVPARIT(JSUB+1,4,I+NFT) = FXT(I)
1137 FSAVPARIT(JSUB+1,5,I+NFT) = FYT(I)
1138 FSAVPARIT(JSUB+1,6,I+NFT) = FZT(I)
1140 FSAVPARIT(JSUB+1,4,I+NFT) = -FXT(I)
1141 FSAVPARIT(JSUB+1,5,I+NFT) = -FYT(I)
1142 FSAVPARIT(JSUB+1,6,I+NFT) = -FZT(I)
1155 DO WHILE(KK<ADDSUBM(IM+1))
1158 ITYPSUB = TYPSUB(KSUB)
1159 IF(ITYPSUB == 2 ) THEN ! Inter =0 : collecting forces from all inter with only 1 surface : main side
1164 FSAV12 = ABS(FXI(I)*DT12)
1165 FSAV13 = ABS(FYI(I)*DT12)
1166 FSAV14 = ABS(FZI(I)*DT12)
1167 FSAV15 = SQRT(FXI(I)*FXI(I)+FYI(I)*FYI(I)+FZI(I)*FZI(I))*DT12
1170 FSAVSUB(4,NSUB)=FSAVSUB(4,NSUB)+FSAV4
1171 FSAVSUB(5,NSUB)=FSAVSUB(5,NSUB)+FSAV5
1172 FSAVSUB(6,NSUB)=FSAVSUB(6,NSUB)+FSAV6
1173 FSAVSUB(12,NSUB)=FSAVSUB(12,NSUB)+FSAV12
1174 FSAVSUB(13,NSUB)=FSAVSUB(13,NSUB)+FSAV13
1175 FSAVSUB(14,NSUB)=FSAVSUB(14,NSUB)+FSAV14
1176 FSAVSUB(15,NSUB)=FSAVSUB(15,NSUB)+FSAV15
1178 IF(ISENSINT(JSUB+1)/=0) THEN
1179 FSAVPARIT(JSUB+1,4,I+NFT) = -FXT(I)
1180 FSAVPARIT(JSUB+1,5,I+NFT) = -FYT(I)
1181 FSAVPARIT(JSUB+1,6,I+NFT) = -FZT(I)
1192 JJ =ADDSUBSFI(NIN)%P(IS)
1193 DO WHILE(JJ<ADDSUBSFI(NIN)%P(IS+1))
1194 JSUB=LISUBSFI(NIN)%P(JJ)
1195 ITYPSUB = TYPSUB(JSUB)
1197 IF(ITYPSUB == 1 ) THEN ! Defining specific inter
1200.AND.
DO WHILE((KSUB<=JSUB)(KK<ADDSUBM(IM+1)))
1206 FSAV12 = ABS(FXI(I)*DT12)
1207 FSAV13 = ABS(FYI(I)*DT12)
1208 FSAV14 = ABS(FZI(I)*DT12)
1209 FSAV15 = SQRT(FXI(I)*FXI(I)+FYI(I)*FYI(I)+FZI(I)*FZI(I))*DT12
1212 FSAVSUB(4,NSUB)=FSAVSUB(4,NSUB)+FSAV4
1213 FSAVSUB(5,NSUB)=FSAVSUB(5,NSUB)+FSAV5
1214 FSAVSUB(6,NSUB)=FSAVSUB(6,NSUB)+FSAV6
1215 FSAVSUB(12,NSUB)=FSAVSUB(12,NSUB)+FSAV12
1216 FSAVSUB(13,NSUB)=FSAVSUB(13,NSUB)+FSAV13
1217 FSAVSUB(14,NSUB)=FSAVSUB(14,NSUB)+FSAV14
1218 FSAVSUB(15,NSUB)=FSAVSUB(15,NSUB)+FSAV15
1220 IF(ISENSINT(JSUB+1)/=0) THEN
1221 FSAVPARIT(JSUB+1,4,I+NFT) = FXT(I)
1222 FSAVPARIT(JSUB+1,5,I+NFT) = FYT(I)
1223 FSAVPARIT(JSUB+1,6,I+NFT) = FZT(I)
1232 ELSEIF(ITYPSUB == 2 ) THEN ! Inter =0 : collecting forces from all inter with only 1 surf
1237 FSAV12 = ABS(FXI(I)*DT12)
1238 FSAV13 = ABS(FYI(I)*DT12)
1239 FSAV14 = ABS(FZI(I)*DT12)
1240 FSAV15 = SQRT(FXI(I)*FXI(I)+FYI(I)*FYI(I)+FZI(I)*FZI(I))*DT12
1243 FSAVSUB(4,NSUB)=FSAVSUB(4,NSUB)+FSAV4
1244 FSAVSUB(5,NSUB)=FSAVSUB(5,NSUB)+FSAV5
1245 FSAVSUB(6,NSUB)=FSAVSUB(6,NSUB)+FSAV6
1246 FSAVSUB(12,NSUB)=FSAVSUB(12,NSUB)+FSAV12
1247 FSAVSUB(13,NSUB)=FSAVSUB(13,NSUB)+FSAV13
1248 FSAVSUB(14,NSUB)=FSAVSUB(14,NSUB)+FSAV14
1249 FSAVSUB(15,NSUB)=FSAVSUB(15,NSUB)+FSAV15
1251 IF(ISENSINT(JSUB+1)/=0) THEN
1252 FSAVPARIT(JSUB+1,4,I+NFT) = FXT(I)
1253 FSAVPARIT(JSUB+1,5,I+NFT) = FYT(I)
1254 FSAVPARIT(JSUB+1,6,I+NFT) = FZT(I)
1259 ELSEIF(ITYPSUB == 3 ) THEN ! Inter =0 : collecting forces from all inter with 2 Surfs
1261 ISS2 = BITGET(INFLG_SUBSFI(NIN)%P(JJ),0)
1262 ISS1 = BITGET(INFLG_SUBSFI(NIN)%P(JJ),1)
1264.AND.
DO WHILE((KSUB<=JSUB)(KK<ADDSUBM(IM+1)))
1265 IMS2 = BITGET(INFLG_SUBM(KK),0)
1266 IMS1 = BITGET(INFLG_SUBM(KK),1)
1268.NOT..AND..OR.
IF(((IMS1 == 1 ISS2 == 1)
1269.AND.
. (IMS2 == 1 ISS1 == 1))) THEN
1278 FSAV12 = ABS(FXI(I)*DT12)
1279 FSAV13 = ABS(FYI(I)*DT12)
1280 FSAV14 = ABS(FZI(I)*DT12)
1281 FSAV15 = SQRT(FXI(I)*FXI(I)+FYI(I)*FYI(I)+FZI(I)*FZI(I))*DT12
1285 FSAVSUB(4,NSUB)=FSAVSUB(4,NSUB)-FSAV4
1286 FSAVSUB(5,NSUB)=FSAVSUB(5,NSUB)-FSAV5
1287 FSAVSUB(6,NSUB)=FSAVSUB(6,NSUB)-FSAV6
1289 FSAVSUB(4,NSUB)=FSAVSUB(4,NSUB)+FSAV4
1290 FSAVSUB(5,NSUB)=FSAVSUB(5,NSUB)+FSAV5
1291 FSAVSUB(6,NSUB)=FSAVSUB(6,NSUB)+FSAV6
1293 FSAVSUB(12,NSUB)=FSAVSUB(12,NSUB)+FSAV12
1294 FSAVSUB(13,NSUB)=FSAVSUB(13,NSUB)+FSAV13
1295 FSAVSUB(14,NSUB)=FSAVSUB(14,NSUB)+FSAV14
1296 FSAVSUB(15,NSUB)=FSAVSUB(15,NSUB)+FSAV15
1298 IF(ISENSINT(JSUB+1)/=0) THEN
1300 FSAVPARIT(JSUB+1,4,I+NFT) = -FXT(I)
1301 FSAVPARIT(JSUB+1,5,I+NFT) = -FYT(I)
1302 FSAVPARIT(JSUB+1,6,I+NFT) = -FZT(I)
1304 FSAVPARIT(JSUB+1,4,I+NFT) = FXT(I)
1305 FSAVPARIT(JSUB+1,5,I+NFT) = FYT(I)
1306 FSAVPARIT(JSUB+1,6,I+NFT) = FZT(I)
1325#include "lockon.inc"
1326 ECONTV = ECONTV + ECONVT ! Frictional Energy
1327 ECONT = ECONT + ECONTT ! Elastic Energy
1328 ECONTD = ECONTD + ECONTDT ! Damping Energy
1329 FSAV(26) = FSAV(26) + ECONTT
1330 FSAV(27) = FSAV(27) + ECONVT
1331 FSAV(28) = FSAV(28) + ECONTDT
1332#include "lockoff.inc"
1336 FX1(I)=-FXI(I)*HS1(I)
1337 FY1(I)=-FYI(I)*HS1(I)
1338 FZ1(I)=-FZI(I)*HS1(I)
1340 FX2(I)=-FXI(I)*HS2(I)
1341 FY2(I)=-FYI(I)*HS2(I)
1342 FZ2(I)=-FZI(I)*HS2(I)
1344 FX3(I)=FXI(I)*HM1(I)
1345 FY3(I)=FYI(I)*HM1(I)
1346 FZ3(I)=FZI(I)*HM1(I)
1348 FX4(I)=FXI(I)*HM2(I)
1349 FY4(I)=FYI(I)*HM2(I)
1350 FZ4(I)=FZI(I)*HM2(I)
1356#include "mic_lockon.inc"
1358 IF(CS_LOC(I)>NRTS)THEN
1361 NSVFI(NIN)%P(NI) = -ABS(NSVFI(NIN)%P(NI))
1365#include "mic_lockoff.inc"
1369 STIF(I) = TWO*STIF(I)
1373.OR..OR.
IF(KDTINT==1IDTMINS==2IDTMINS_INT/=0)THEN
1375.AND..OR.
. (IVIS2==0IVIS2==1))THEN
1379 IF(MS1(I)==ZERO)THEN
1383 K1(I)=KT(I)*ABS(HS1(I))
1384 C1(I)=C(I)*ABS(HS1(I))
1385 CX =FOUR*C1(I)*C1(I)
1386 CY =EIGHT*MS1(I)*K1(I)
1387 AUX = SQRT(CX+CY)+TWO*C1(I)
1388 ST1(I)= K1(I)*AUX*AUX/MAX(CY,EM30)
1389 CFI = CF(I)*ABS(HS1(I))
1390 AUX = TWO*CFI*CFI/MAX(MS1(I),EM20)
1397 IF(MS2(I)==ZERO)THEN
1401 K2(I)=KT(I)*ABS(HS2(I))
1402 C2(I)=C(I)*ABS(HS2(I))
1403 CX =FOUR*C2(I)*C2(I)
1404 CY =EIGHT*MS2(I)*K2(I)
1405 AUX = SQRT(CX+CY)+TWO*C2(I)
1406 ST2(I)= K2(I)*AUX*AUX/MAX(CY,EM30)
1407 CFI = CF(I)*ABS(HS2(I))
1408 AUX = TWO*CFI*CFI/MAX(MS2(I),EM20)
1415 IF(MM1(I)==ZERO)THEN
1419 K3(I)=KT(I)*ABS(HM1(I))
1420 C3(I)=C(I)*ABS(HM1(I))
1421 CX =FOUR*C3(I)*C3(I)
1422 CY =EIGHT*MM1(I)*K3(I)
1423 AUX = SQRT(CX+CY)+TWO*C3(I)
1424 ST3(I)= K3(I)*AUX*AUX/MAX(CY,EM30)
1425 CFI = CF(I)*ABS(HM1(I))
1426 AUX = TWO*CFI*CFI/MAX(MM1(I),EM20)
1433 IF(MM2(I)==ZERO)THEN
1437 K4(I)=KT(I)*ABS(HM2(I))
1438 C4(I)=C(I)*ABS(HM2(I))
1439 CX =FOUR*C4(I)*C4(I)
1440 CY =EIGHT*MM2(I)*K4(I)
1441 AUX = SQRT(CX+CY)+TWO*C4(I)
1442 ST4(I)= K4(I)*AUX*AUX/MAX(CY,EM30)
1443 CFI = CF(I)*ABS(HM2(I))
1444 AUX = TWO*CFI*CFI/MAX(MM2(I),EM20)
1453 K1(I) =STIF(I)*ABS(HS1(I))
1455 K2(I) =STIF(I)*ABS(HS2(I))
1457 K3(I) =STIF(I)*ABS(HM1(I))
1459 K4(I) =STIF(I)*ABS(HM2(I))
1466.OR.
IF(IDTM==1IDTM==2)THEN
1470 MAS2 = TWO * MASMIN(I)
1471.AND.
IF(MAS2>ZEROSTIF(I)>ZERO)THEN
1472 DTMI(I) = MIN(DTMI(I),DTFAC1(10)*SQRT(MAS2/STIF(I)))
1474 DTMI0 = MIN(DTMI0,DTMI(I))
1478 IF(DTMI(I)<=DTM)THEN
1480#include "lockon.inc"
1481 IF(CS_LOC(I)<=NRTS) THEN
1482 WRITE(IOUT,'(a,e12.4,a,i10,a,e12.4,a)
')
1483 . ' **warning minimum time step
',DTMI(I),
1484 . ' in
INTERFACE nb
',NOINT,'(dtmin=
',DTM,')
'
1485 WRITE(IOUT,*)'secondary nodes nb
',ITAB(N1(I)),
1487 WRITE(IOUT,*)'main nodes nb
',ITAB(M1(I)),
1490 WRITE(IOUT,'(a,e12.4,a,i10,a,e12.4,a)
')
1491 . ' **warning minimum time step
',DTMI(I),
1492 . ' in
INTERFACE nb
',NOINT,'(dtmin=
',DTM,')
'
1493 WRITE(IOUT,*)'secondary nodes nb
',ITAFI(NIN)%P(N1(I)),
1494 . ITAFI(NIN)%P(N2(I))
1495 WRITE(IOUT,*)'main nodes nb
',ITAB(M1(I)),
1498#include "lockoff.inc"
1501#include "lockon.inc"
1502 IF(CS_LOC(I)<=NRTS) THEN
1503 WRITE(IOUT,'(a,e12.4,a,i10,a,e12.4,a)
')
1504 . ' **warning minimum time step
',DTMI(I),
1505 . ' in
INTERFACE nb
',NOINT,'(dtmin=
',DTM,')
'
1506 WRITE(IOUT,*)'secondary nodes nb',itab(n1(i)),
1508 WRITE(iout,*)
'MAIN NODES NB',itab(m1(i)),
1510 WRITE(iout,*)
'DELETE SECONDARY LINE FROM INTERFACE'
1511 stfs(cs_loc(i)) = -abs(stfs(cs_loc(i)))
1514 WRITE(iout,
'(A,E12.4,A,I10,A,E12.4,A)')
1515 .
' **WARNING MINIMUM TIME STEP ',dtmi(i),
1516 .
' IN INTERFACE NB',noint,
'(DTMIN=',dtm,
')'
1517 WRITE(iout,*)
'SECONDARY NODES NB',
itafi(nin)%P(n1(i)),
1518 .
itafi(nin)%P(n2(i))
1519 WRITE(iout,*)
'MAIN NODES NB',itab(m1(i)),
1521 WRITE(iout,*)
'DELETE SECONDARY LINE FROM INTERFACE'
1524#include "lockoff.inc"
1527#include "lockon.inc"
1528 IF(cs_loc(i)<=nrts)
THEN
1529 WRITE(iout,
'(A,E12.4,A,I10,A,E12.4,A)')
1530 .
' **WARNING MINIMUM TIME STEP ',dtmi(i),
1531 .
' IN INTERFACE NB',noint,'(dtmin=
',DTM,')
'
1532 WRITE(IOUT,*)'secondary nodes nb
',ITAB(N1(I)),
1534 WRITE(IOUT,*)'main nodes nb
',ITAB(M1(I)),
1537 WRITE(IOUT,'(a,e12.4,a,i10,a,e12.4,a)
')
1538 . ' **warning minimum time step
',DTMI(I),
1539 . ' in
INTERFACE nb
',NOINT,'(dtmin=
',DTM,')
'
1540 WRITE(IOUT,*)'secondary nodes nb
',ITAFI(NIN)%P(N1(I)),
1541 . ITAFI(NIN)%P(N2(I))
1542 WRITE(IOUT,*)'main nodes nb
',ITAB(M1(I)),
1545#include "lockoff.inc"
subroutine i11for3(jlt, fsav, gap, fric, ms, visc, viscf, noint, itab, cs_loc, cm_loc, stif, dt2t, hs1, hs2, hm1, hm2, n1, n2, m1, m2, ivis2, neltst, ityptst, nx, ny, nz, gapv, penis, penim, inacti, newfront, nrts, ms1, ms2, mm1, mm2, vxs1, vys1, vzs1, vxs2, vys2, vzs2, vxm1, vym1, vzm1, vxm2, vym2, vzm2, nin, dtmini, iform, cand_fx, cand_fy, cand_fz, index, ifpen, stfs, fni, fx1, fy1, fz1, fx2, fy2, fz2, fx3, fy3, fz3, fx4, fy4, fz4, k1, k2, k3, k4, c1, c2, c3, c4, intth, drad, penrad, isensint, fsavparit, nisub, nft, addsubs, addsubm, lisubs, lisubm, lisub, fsavsub, fricc, viscffric, tagncont, kloadpinter, loadpinter, loadp_hyd_inter, typsub, inflg_subs, inflg_subm, ninloadp, dgaploadint, s_loadpinter)