34 1 JLT ,FSAV ,GAP ,FRIC ,MS ,
35 2 VISC ,VISCF ,NOINT ,ITAB ,CS_LOC ,
36 3 CM_LOC ,STIF ,DT2T ,HS1 ,HS2 ,
37 4 HM1 ,HM2 ,N1 ,N2 , M1 ,
38 5 M2 ,IVIS2 ,NELTST ,ITYPTST ,NX ,
39 6 NY ,NZ ,GAPV ,PENIS ,PENIM ,
40 7 INACTI ,NEWFRONT ,NRTS ,MS1 ,MS2 ,
41 8 MM1 ,MM2 ,VXS1 ,VYS1 ,VZS1 ,
42 9 VXS2 ,VYS2 ,VZS2 ,VXM1 ,VYM1 ,
43 A VZM1 ,VXM2 ,VYM2 ,VZM2 ,NIN ,
44 B DTMINI ,IFORM ,CAND_FX ,CAND_FY ,CAND_FZ ,
45 C INDEX ,IFPEN ,STFS ,FNI ,
46 E FX1 ,FY1 ,FZ1 ,FX2 ,FY2 ,
47 F FZ2 ,FX3 ,FY3 ,FZ3 ,FX4 ,
48 G FY4 ,FZ4 ,K1 ,K2 ,K3 ,
49 H K4 ,C1 ,C2 ,C3 ,C4 ,
50 I INTTH ,DRAD ,PENRAD ,ISENSINT,FSAVPARIT,
51 J NISUB ,NFT ,ADDSUBS ,ADDSUBM ,LISUBS ,
52 K LISUBM ,LISUB ,FSAVSUB ,FRICC ,VISCFFRIC,
53 L TAGNCONT ,KLOADPINTER,LOADPINTER,LOADP_HYD_INTER,
54 M TYPSUB ,INFLG_SUBS ,INFLG_SUBM,NINLOADP ,
55 N DGAPLOADINT,S_LOADPINTER )
60 USE output_mod,
ONLY : output_
64#include "implicit_f.inc"
88 TYPE(output_),
INTENT(INOUT) :: OUTPUT
89 INTEGER NELTST,ITYPTST,JLT,IVIS2,INACTI,NRTS,NIN,INTTH
91 . NOINT,NEWFRONT,NISUB,NFT
92 INTEGER N1(MVSIZ), N2(MVSIZ), M1(MVSIZ), M2(MVSIZ),
93 . CS_LOC(MVSIZ), CM_LOC(MVSIZ),
94 . IFORM,(*),(*), ISENSINT(*),
95 . ADDSUBS(*),ADDSUBM(*),LISUBS(*),LISUBM(*),LISUB(*),
96 . TAGNCONT(NLOADP_HYD_INTER,NUMNOD),
97 . TYPSUB(*),INFLG_SUBS(*), INFLG_SUBM(*)
98 INTEGER ,
INTENT(IN) :: NINLOADP,S_LOADPINTER
99 INTEGER ,
INTENT(IN) :: KLOADPINTER(NINTER+1),LOADPINTER(),
100 . LOADP_HYD_INTER(NLOADP_HYD)
104 . PENIS(2,*), PENIM(2,*),
105 . GAP, FRIC,VISC,VISCF,VIS,DT2T,DTMINI,DRAD
107 . HS1(MVSIZ), HS2(MVSIZ), HM1(MVSIZ), HM2(MVSIZ),
108 . NX(MVSIZ), NY(MVSIZ), NZ(MVSIZ), STIF(MVSIZ),
109 . MS1(MVSIZ),MS2(MVSIZ),MM1(MVSIZ),MM2(MVSIZ),
110 . vxs1(mvsiz),vys1(mvsiz),vzs1(mvsiz),vxs2(mvsiz),vys2(mvsiz),
111 . vzs2(mvsiz),vxm1(mvsiz),vym1(mvsiz),vzm1(mvsiz),vxm2(mvsiz),
112 . vym2(mvsiz),vzm2(mvsiz),cand_fx(*),cand_fy(*),
114 . fx1(mvsiz), fx2(mvsiz), fx3(mvsiz), fx4(mvsiz),
115 . fy1(mvsiz), fy2(mvsiz), fy3(mvsiz), fy4(mvsiz),
116 . fz1(mvsiz), fz2(mvsiz), fz3(mvsiz), fz4(mvsiz),
117 . k1(mvsiz),k2(mvsiz),k3(mvsiz),k4(mvsiz),
118 . c1(mvsiz),c2(mvsiz),c3(mvsiz),c4(mvsiz),penrad(mvsiz),
119 . fsavparit(nisub+1,11,*),fsavsub(nthvki,*),fricc(mvsiz),
121 my_real ,
INTENT(IN) :: dgaploadint(s_loadpinter)
128 INTEGER IDTM,IM,IS,JSUB,KSUB,JJ,KK,NSUB,PP,PPL,
129 . ITYPSUB,ISS1,ISS2,IMS1,IMS2
131 . VX(MVSIZ), VY(MVSIZ), VZ(MVSIZ), VN(MVSIZ),
132 . FXI(), FYI(MVSIZ), FZI(MVSIZ),
134 . PENE(MVSIZ),MASMIN(MVSIZ),
135 . VIS2(MVSIZ), DTMI(MVSIZ),
136 . VNX, VNY, VNZ, AA, VMAX,S2,DIST,RDIST,
137 . V2, FM2, DT1INV, , FAC, FF,
138 . FX, FY, FZ, F2, MAS2, DTI,
139 . FACM1, ECONTT, ECONVT, A2,MASM,ECONTDT,
140 . FSAV1, FSAV2, FSAV3, FSAV4, FSAV5, FSAV6,
141 . FSAV8, FSAV9, FSAV10, FSAV11, FSAV12,
142 . FSAV13, FSAV14, FSAV15, DTI2, PPLUS,DTMI0
143 my_real prec,beta,dgapload,gapp
145 . st1(mvsiz),st2(mvsiz),st3(mvsiz),st4(mvsiz),
146 . kt(mvsiz),c(mvsiz),cf(mvsiz),
147 . cx,cy,cfi,aux,dtm,ft,fn,ftn,fxt(mvsiz),fyt(mvsiz),
164 IF(intth/=0.OR.ninloadp/=0 )
THEN
167 dist = sqrt(nx(i)**2 + ny(i)**2 + nz(i)**2)
168 penrad(i)=dist-gapv(i)
173 s2 = sqrt(nx(i)**2 + ny(i)**2 + nz(i)**2)
174 pene(i) =
max(zero,gapv(i) - s2)
175 s2 = one/
max(em30,s2)
184 IF(cs_loc(i)<=nrts)
THEN
185 penis(2,cs_loc(i)) =
max(penis(2,cs_loc(i)),half*pene(i))
190 penim(2,cm_loc(i)) =
max(penim(2,cm_loc(i)),half*pene(i))
192#include "lockoff.inc"
194 IF(cs_loc(i)<=nrts)
THEN
195 pene(i) = pene(i) - penis(1,cs_loc(i)) - penim(1,cm_loc(i))
196 pene(i) =
max(pene(i),zero)
197 IF(pene(i)==zero)stif(i)=zero
198 gapv(i) = gapv(i) - penis(1,cs_loc(i)) - penim(1,cm_loc(i))
201 pene(i) = pene(i) -
penfi(nin)%P(1,ni) - penim(1,cm_loc(i))
202 pene(i) =
max(pene(i),zero)
203 IF(pene(i)==zero)stif(i)=zero
204 gapv(i) = gapv(i) -
penfi(nin)%P(1,ni) - penim(1,cm_loc(i))
207 ELSE IF(inacti==6)
THEN
210 pplus=half*(pene(i)+fiveem2*(gapv(i)-pene(i)))
211 IF(cs_loc(i)<=nrts)
THEN
212 penis(2,cs_loc(i)) =
max(penis(2,cs_loc(i)),pplus)
217 penim(2,cm_loc(i)) =
max(penim(2,cm_loc(i)),pplus)
219#include "lockoff.inc"
221 IF(cs_loc(i)<=nrts)
THEN
222 pene(i) = pene(i) - penis(1,cs_loc(i)) - penim(1,cm_loc(i))
223 pene(i) =
max(pene(i),zero)
224 IF(pene(i)==zero)stif(i)=zero
225 gapv(i) = gapv(i) - penis(1,cs_loc(i)) - penim(1,cm_loc(i))
228 pene(i) = pene(i) -
penfi(nin)%P(1,ni) - penim(1,cm_loc(i))
229 pene(i) =
max(pene(i),zero)
230 IF(pene(i)==zero)stif(i)=zero
231 gapv(i) = gapv(i) -
penfi(nin)%P(1,ni) - penim(1,cm_loc(i))
236 IF( pene(i)==zero ) stif(i) = zero
242 gapv(i) = zep9*gapv(i)
243 vx(i) = hs1(i)*vxs1(i) + hs2(i)*vxs2(i)
244 . - hm1(i)*vxm1(i) - hm2(i)*vxm2(i)
245 vy(i) = hs1(i)*vys1(i) + hs2(i)*vys2(i)
246 . - hm1(i)*vym1(i) - hm2(i)*vym2(i)
247 vz(i) = hs1(i)*vzs1(i) + hs2(i)*vzs2(i)
248 . - hm1(i)*vzm1(i) - hm2(i)*vzm2(i)
249 vn(i) = nx(i)*vx(i) + ny(i)*vy(i) + nz(i)*vz
253 fac = gapv(i)/
max( em10,( gapv(i)-pene(i) ) )
255 IF(( (gapv(i)-pene(i))/gapv(i) )<prec .AND.
256 . stif(i)>zero )
THEN
261 IF(cs_loc(i)<=nrts)
THEN
262 stfs(cs_loc(i)) = -abs(stfs(cs_loc(i)))
263 WRITE(istdo,*)
'WARNING INTERFACE NB',noint
264 WRITE(istdo,*)
'LINE ',itab(n1(i)),
265 . itab(n2(i)),
'DE-ACTIVATED FROM',
'INTERFACE'
266 WRITE(iout,*)
'WARNING INTERFACE NB',noint
267 WRITE(iout,*)
'GAP=',gapv(i),
'PENE=',pene(i)
268 WRITE(iout,*)
'LINE ',itab(n1(i)),
269 . itab(n2(i)),
'DE-ACTIVATED FROM',
'INTERFACE'
273 WRITE(istdo,*)
'WARNING INTERFACE NB',noint
274 WRITE(istdo,*)
'LINE ',
itafi(nin)%P(n1(i)),
275 .
itafi(nin)%P(n2(i)),
'DE-ACTIVATED FROM',
'INTERFACE'
276 WRITE(iout,*)
'WARNING INTERFACE NB',noint
277 WRITE(iout,*)
'GAP=',gapv(i),
'PENE=',pene(i)
278 WRITE(iout,*)
'LINE ',
itafi(nin)%P(n1(i)),
279 .
itafi(nin)%P(n2(i)),
'DE-ACTIVATED FROM',
'INTERFACE'
281#include "lockoff.inc"
285 econtt = econtt + half*stif(i)*gapv(i)**2 *( facm1 - one -
287 stif(i) = half*stif(i) * fac
288 fni(i)= -stif(i) * pene(i)
295 rdist = half*dist /
max(em30,-vn(i))
312 IF (dtmini>zero)
THEN
323 dti2 = half*dist /
max(em30,-vn(i))
326 IF(cs_loc(i)<=nrts)
THEN
327 WRITE(iout,
'(A,E12.4,A,I10,A,E12.4,A)')
328 .
' **WARNING MINIMUM TIME STEP ',dti2,
329 .
'IN INTERFACE NB',noint,
'(DTMIN=',dtm,
')'
330 WRITE(iout,*)
'SECONDARY NODES NB',itab(n1(i)),
332 WRITE(iout,*)
'MAIN NODES NB',itab(m1(i)),
335 WRITE(iout,
'(A,E12.4,A,I10,A,E12.4,A)')
336 .
' **WARNING MINIMUM TIME STEP ',dti2,
337 .
'IN INTERFACE NB',noint,
'(DTMIN=',dtm,
')'
338 WRITE(iout,*)
'SECONDARY NODES NB',
itafi(nin)%P(n1(i)),
339 .
itafi(nin)%P(n2(i))
340 WRITE(iout,*)
'MAIN NODES NB',itab(m1(i)),
343#include "lockoff.inc"
348 WRITE(iout,*)
'REMOVE SECONDARY LINE FROM INTERFACE'
349 IF(cs_loc(i)<=nrts)
THEN
350 stfs(cs_loc(i)) = -abs(stfs(cs_loc(i)))
355#include "lockoff.inc"
380 masmin(i) =
min(mas2,masm)
381 vis2(i) = two * stif(i) *
min(mas2,masm)
385 IF(viscffric(i)/=zero)
THEN
390 masmin(i) =
min(mas2,masm)
391 vis2(i) = two * stif(i) *
min(mas2,masm)
398 IF(ivis2==0.OR.ivis2==1)
THEN
404 . vis2(i) = vis2(i)/(
max(em10,(gapv(i)-pene(i))/gapv(i)))
408 IF(kdtint==0.AND.(idtmins/=2.AND.idtmins_int==0))
THEN
410 fac = stif(i) /
max(em30,stif(i))
414 . visca**2 * two * masmin(i) *
max(zero,-vn(i)) /
415 .
max((gapv(i) - pene(i)),em10) )
416 stif(i) = stif(i) * gapv(i)/
max((gapv(i)-pene(i)),em10)
417 stif(i) = stif(i) + ff * dt1inv
418 stif(i) =
max(stif(i) ,fac*sqrt(viscffric(i))*vis*dt1inv)
419 ff =
min(ff * vn(i),-fni(i))
427 fac = stif(i) /
max(em30,stif(i))
431 . visca**2 * two * masmin(i) *
max(zero,-vn(i)) /
432 .
max((gapv(i) - pene(i)),em10) )
433 stif(i) = stif(i) * gapv(i) /
max((gapv(i) - pene(i)),em10)
435 stif(i) = stif(i) + c(i) * dt1inv
436 ff =
min(c(i) * vn(i),-fni(i))
439 cf(i) = fac*sqrt(viscffric(i))*vis
440 stif(i) =
max(stif(i) ,cf(i)*dt1inv)
450 vis2(i) = vis2(i)/(
max(em10,(gapv(i)-pene(i))/gapv(i)))
455 fac = stif(i) /
max(em30,stif(i))
459 . visca**2 * two * masmin(i) * abs(vn(i)) /
460 .
max((gapv(i) - pene(i)),em10) )
461 stif(i) = stif(i) * gapv(i) /
max((gapv(i)-pene(i)),em10)
462 stif(i) = stif(i) + two * ff * dt1inv
463 stif(i) =
max(stif(i) ,fac*sqrt(viscffric(i))*vis*dt1inv)
464 ff =
min(ff * vn(i),-fni(i))
472 fac = stif(i) /
max(em30,stif(i))
474 ff = fac * ( visc * vis ) /
475 .
max((gapv(i) - pene(i)),em10)
476 stif(i) = stif(i) * gapv(i) /
max((gapv(i)-pene(i)),em10)
477 stif(i) = stif(i) + two * ff * dt1inv
478 stif(i) =
max(stif(i) ,fac*sqrt(viscffric(i))*vis*dt1inv)
479 ff =
min(ff * vn(i),-fni(i))
488 stif(i) = stif(i) * gapv(i) /
max((gapv(i)-pene(i)),em10)
489 stif(i) =
max(stif(i) ,fac*sqrt(viscffric(i))*vis*dt1inv)
502 vis = 2. * visc * dt1inv * masm * mas2 /
503 .
max(em30,masm+mas2)
504 stif(i) = stif(i) * gapv(i) /
max((gapv(i) -pene(i)),em10)
505 stif(i) =
max(stif(i) ,fac*sqrt(viscffric(i)*vis2(i))*dt1inv)
507 econtdt = econtdt +
min(zero,ff-fni(i)) * vn(i) * dt1
508 fni(i) =
min(fni(i),ff)
514 stif(i) = stif(i) * gapv(i) /
max((gapv(i) - pene(i)),em10)
531 fsav1=fsav1+fxi(i)*dt12
532 fsav2=fsav2+fyi(i)*dt12
533 fsav3=fsav3+fzi(i)*dt12
534 fsav8=fsav8+abs(fxi(i)*dt12)
535 fsav9=fsav9+abs(fyi(i)*dt12)
536 fsav10=fsav10+abs(fzi(i)*dt12)
537 fsav11=fsav11+abs(fni(i))*dt12
541 fsav(1)=fsav(1)+fsav1
542 fsav(2)=fsav(2)+fsav2
543 fsav(3)=fsav(3)+fsav3
544 fsav(8)=fsav(8)+fsav8
545 fsav(9)=fsav(9)+fsav9
546 fsav(10)=fsav(10)+fsav10
547 fsav(11)=fsav(11)+fsav11
548#include "lockoff.inc"
551 IF(isensint(1)/=0)
THEN
553 fsavparit(1,1,i+nft) = fxi(i)
554 fsavparit(1,2,i+nft) = fyi(i)
555 fsavparit(1,3,i+nft) = fzi(i)
566 IF (cs_loc(i)<=nrts)
THEN
570 DO WHILE(jj<addsubs(is+1))
572 itypsub = typsub(jsub)
574 IF(itypsub == 1 )
THEN
578 DO WHILE((ksub<=jsub).AND.(kk<addsubm(im+1)))
585 fsav8=abs(fxi(i)*dt12)
586 fsav9=abs(fyi(i)*dt12)
587 fsav10=abs(fzi(i)*dt12)
588 fsav11=abs(fni(i))*dt12
591 fsavsub(1,nsub)=fsavsub(1,nsub)+fsav1
592 fsavsub(2,nsub)=fsavsub(2,nsub)+fsav2
593 fsavsub(3,nsub)=fsavsub(3,nsub)+fsav3
594 fsavsub(8,nsub)=fsavsub(8,nsub)+fsav8
595 fsavsub(9,nsub)=fsavsub(9,nsub)+fsav9
596 fsavsub(10,nsub)=fsavsub(10,nsub)+fsav10
597 fsavsub(11,nsub)=fsavsub(11,nsub)+fsav11
599 IF(isensint(jsub+1)/=0)
THEN
600 fsavparit(jsub+1,1,i+nft) = fxi(i)
601 fsavparit(jsub+1,2,i+nft) = fyi(i)
602 fsavparit(jsub+1,3,i+nft) = fzi(i)
612 ELSEIF(itypsub == 2 )
THEN
617 fsav8=abs(fxi(i)*dt12)
618 fsav9=abs(fyi(i)*dt12)
619 fsav10=abs(fzi(i)*dt12)
620 fsav11=abs(fni(i))*dt12
623 fsavsub(1,nsub)=fsavsub
624 fsavsub(2,nsub)=fsavsub(2,nsub)+fsav2
625 fsavsub(3,nsub)=fsavsub(3,nsub)+fsav3
626 fsavsub(8,nsub)=fsavsub(8,nsub)+fsav8
627 fsavsub(9,nsub)=fsavsub(9,nsub)+fsav9
628 fsavsub(10,nsub)=fsavsub(10,nsub)+fsav10
629 fsavsub(11,nsub)=fsavsub(11,nsub)+fsav11
631 IF(isensint(jsub+1)/=0)
THEN
632 fsavparit(jsub+1,1,i+nft) = fxi(i)
633 fsavparit(jsub+1,2,i+nft) = fyi(i)
634 fsavparit(jsub+1,3,i+nft) = fzi(i)
639 ELSEIF(itypsub == 3 )
THEN
641 iss2 = bitget(inflg_subs(jj),0)
642 iss1 = bitget(inflg_subs(jj),1)
644 DO WHILE((ksub<=jsub).AND.(kk<addsubm(im+1)))
645 ims2 = bitget(inflg_subm(kk),0)
646 ims1 = bitget(inflg_subm(kk),1)
648 IF(.NOT.((ims1 == 1 .AND. iss2 == 1).OR.
649 . (ims2 == 1 .AND. iss1 == 1)))
THEN
658 fsav8=abs(fxi(i)*dt12)
659 fsav9=abs(fyi(i)*dt12)
660 fsav10=abs(fzi(i)*dt12)
661 fsav11=abs(fni(i))*dt12
665 fsavsub(1,nsub)=fsavsub(1,nsub)-fsav1
666 fsavsub(2,nsub)=fsavsub(2,nsub)-fsav2
667 fsavsub(3,nsub)=fsavsub(3,nsub)-fsav3
670 fsavsub(1,nsub)=fsavsub(1,nsub)+fsav1
671 fsavsub(2,nsub)=fsavsub(2,nsub)+fsav2
672 fsavsub(3,nsub)=fsavsub(3,nsub)+fsav3
674 fsavsub(8,nsub)=fsavsub(8,nsub)+fsav8
675 fsavsub(9,nsub)=fsavsub(9,nsub)+fsav9
676 fsavsub(10,nsub)=fsavsub(10,nsub)+fsav10
677 fsavsub(11,nsub)=fsavsub(11,nsub)+fsav11
679 IF(isensint(jsub+1)/=0)
THEN
681 fsavparit(jsub+1,1,i+nft) = -fxi(i)
682 fsavparit(jsub+1,2,i+nft) = -fyi(i)
683 fsavparit(jsub+1,3,i+nft) = -fzi(i)
685 fsavparit(jsub+1,1,i+nft) = fxi(i)
686 fsavparit(jsub+1,2,i+nft) = fyi(i)
687 fsavparit(jsub+1,3,i+nft) = fzi(i)
702 DO WHILE(kk<addsubm(im+1))
705 itypsub = typsub(ksub)
706 IF(itypsub == 2 )
THEN
711 fsav8=abs(fxi(i)*dt12)
712 fsav9=abs(fyi(i)*dt12)
713 fsav10=abs(fzi(i)*dt12)
714 fsav11=abs(fni(i))*dt12
717 fsavsub(1,nsub)=fsavsub(1,nsub)-fsav1
718 fsavsub(2,nsub)=fsavsub(2,nsub)-fsav2
719 fsavsub(3,nsub)=fsavsub(3,nsub)-fsav3
720 fsavsub(8,nsub)=fsavsub(8,nsub)+fsav8
721 fsavsub(9,nsub)=fsavsub(9,nsub)+fsav9
722 fsavsub(10,nsub)=fsavsub(10,nsub)+fsav10
723 fsavsub(11,nsub)=fsavsub(11,nsub)+fsav11
725 IF(isensint(jsub+1)/=0)
THEN
726 fsavparit(jsub+1,1,i+nft) = -fxi(i)
727 fsavparit(jsub+1,2,i+nft) = -fyi(i)
728 fsavparit(jsub+1,3,i+nft) = -fzi(i)
744 itypsub = typsub(jsub)
746 IF(itypsub == 1 )
THEN
749 DO WHILE((ksub<=jsub).AND.(kk<addsubm(im+1)))
756 fsav8=abs(fxi(i)*dt12)
757 fsav9=abs(fyi(i)*dt12)
758 fsav10=abs(fzi(i)*dt12)
759 fsav11=abs(fni(i))*dt12
762 fsavsub(1,nsub)=fsavsub(1,nsub)+fsav1
763 fsavsub(2,nsub)=fsavsub(2,nsub)+fsav2
764 fsavsub(3,nsub)=fsavsub(3,nsub)+fsav3
765 fsavsub(8,nsub)=fsavsub(8,nsub)+fsav8
766 fsavsub(9,nsub)=fsavsub(9,nsub)+fsav9
767 fsavsub(10,nsub)=fsavsub(10,nsub)+fsav10
768 fsavsub(11,nsub)=fsavsub(11,nsub)+fsav11
770 IF(isensint(jsub+1)/=0)
THEN
771 fsavparit(jsub+1,1,i+nft) = fxi(i)
772 fsavparit(jsub+1,2,i+nft) = fyi(i)
773 fsavparit(jsub+1,3,i+nft) = fzi(i)
783 ELSEIF(itypsub == 2 )
THEN
788 fsav8=abs(fxi(i)*dt12)
789 fsav9=abs(fyi(i)*dt12)
790 fsav10=abs(fzi(i)*dt12)
791 fsav11=abs(fni(i))*dt12
794 fsavsub(1,nsub)=fsavsub(1,nsub)+fsav1
795 fsavsub(2,nsub)=fsavsub(2,nsub)+fsav2
796 fsavsub(3,nsub)=fsavsub(3,nsub)+fsav3
797 fsavsub(8,nsub)=fsavsub(8,nsub)+fsav8
798 fsavsub(9,nsub)=fsavsub(9,nsub)+fsav9
799 fsavsub(10,nsub)=fsavsub(10,nsub)+fsav10
800 fsavsub(11,nsub)=fsavsub(11,nsub)+fsav11
802 IF(isensint(jsub+1)/=0)
THEN
803 fsavparit(jsub+1,1,i+nft) = fxi(i)
804 fsavparit(jsub+1,2,i+nft) = fyi(i)
805 fsavparit(jsub+1,3,i+nft) = fzi(i)
811 ELSEIF(itypsub == 3 )
THEN
816 DO WHILE((ksub<=jsub).AND.(kk<addsubm(im+1)))
817 ims2 = bitget(inflg_subm(kk),0)
818 ims1 = bitget(inflg_subm(kk),1)
820 IF(.NOT.((ims1 == 1 .AND. iss2 == 1).OR.
821 . (ims2 == 1 .AND. iss1 == 1)))
THEN
830 fsav8=abs(fxi(i)*dt12)
831 fsav9=abs(fyi(i)*dt12)
832 fsav10=abs(fzi(i)*dt12)
833 fsav11=abs(fni(i))*dt12
837 fsavsub(1,nsub)=fsavsub(1,nsub)-fsav1
838 fsavsub(2,nsub)=fsavsub(2,nsub)-fsav2
839 fsavsub(3,nsub)=fsavsub(3,nsub)-fsav3
842 fsavsub(1,nsub)=fsavsub(1,nsub)+fsav1
843 fsavsub(2,nsub)=fsavsub(2,nsub)+fsav2
844 fsavsub(3,nsub)=fsavsub(3,nsub)+fsav3
846 fsavsub(8,nsub)=fsavsub(8,nsub)+fsav8
847 fsavsub(9,nsub)=fsavsub
848 fsavsub(10,nsub)=fsavsub(10,nsub)+fsav10
849 fsavsub(11,nsub)=fsavsub(11,nsub)+fsav11
851 IF(isensint(jsub+1)/=0)
THEN
853 fsavparit(jsub+1,1,i+nft) = -fxi
854 fsavparit(jsub+1,2,i+nft) = -fyi(i)
855 fsavparit(jsub+1,3,i+nft) = -fzi(i)
857 fsavparit(jsub+1,1,i+nft) = fxi(i)
858 fsavparit(jsub+1,2,i+nft) = fyi(i)
859 fsavparit(jsub+1,3,i+nft) = fzi(i)
880 IF(ninloadp > 0)
THEN
881 DO k = kloadpinter(nin)+1, kloadpinter(nin+1)
883 ppl = loadp_hyd_inter(pp)
884 dgapload = dgaploadint(k)
886 dist = penrad(i) + gapv(i)
887 gapp= gapv(i) + dgapload
888 IF(pene(i) > zero .OR.dist <= gapp)
THEN
889 tagncont(ppl,m1(i)) = 1
890 tagncont(ppl,m2(i)) = 1
891 IF(cs_loc(i)<=nrts)
THEN
893 tagncont(ppl,n1(i)) = 1
894 tagncont(ppl,n2(i)) = 1
913 IF(fricc(i)*viscffric(i)/=0.)
THEN
920 v2 = vx(i)**2 + vy(i)**2 + vz(i)**2
921 vis2(i) = viscffric(i) * vis2(i)
922 fm2 = (fricc(i)*fni(i))**2
924 a2 =
min(f2,fm2) /
max(em30,f2)
925 aa = sqrt(a2 * vis2(i))
929 fsav4 = fsav4 + fxt(i)*dt12
930 fsav5 = fsav5 + fyt(i)*dt12
931 fsav6 = fsav6 + fzt(i)*dt12
932 fxi(i)=fxi(i) + fxt(i)
933 fyi(i)=fyi(i) + fyt(i)
934 fzi(i)=fzi(i) + fzt(i)
935 fsav12 = fsav12 + abs(fxi(i)*dt12)
936 fsav13 = fsav13 + abs(fyi(i)*dt12)
937 fsav14 = fsav14 + abs(fzi(i)*dt12)
938 fsav15 = fsav15 + sqrt(fxi(i)*fxi(i)+fyi(i)*fyi(i)+fzi(i)*fzi(i))*dt12
939 econvt = econvt + aa * v2 * dt1
944 fsav(4) = fsav(4) + fsav4
945 fsav(5) = fsav(5) + fsav5
946 fsav(6) = fsav(6) + fsav6
947 fsav(12) = fsav(12) + fsav12
948 fsav(13) = fsav(13) + fsav13
949 fsav(14) = fsav(14) + fsav14
950 fsav(15) = fsav(15) + fsav15
951#include "lockoff.inc"
965 fx = stif(i)*vx(i)*dt12
966 fy = stif(i)*vy(i)*dt12
967 fz = stif(i)*vz(i)*dt12
968 fx = cand_fx(index(i)) + fx
969 fy = cand_fy(index(i)) + fy
970 fz = cand_fz(index(i)) + fz
971 ftn = fx*nx(i) + fy*ny(i) + fz*nz(i)
975 ft = fx*fx + fy*fy + fz*fz
977 fn = fxi(i)**2+fyi(i)**2+fzi(i)**2
978 beta =
min(one,fricc(i)*sqrt(fn/ft))
982 fsav4 = fsav4 + fxt(i)*dt12
983 fsav5 = fsav5 + fyt(i)*dt12
984 fsav6 = fsav6 + fzt(i)*dt12
985 cand_fx(index(i)) = fxt(i)
986 cand_fy(index(i)) = fyt(i)
987 cand_fz(index(i)) = fzt(i)
989 fxi(i)=fxi(i) + fxt(i)
990 fyi(i)=fyi(i) + fyt(i)
991 fzi(i)=fzi(i) + fzt(i)
992 fsav12 = fsav12 + abs(fxi(i)*dt12)
993 fsav13 = fsav13 + abs(fyi(i)*dt12)
994 fsav14 = fsav14 + abs(fzi(i)*dt12)
995 fsav15 = fsav15 + sqrt(fxi(i)*fxi(i)+fyi(i)*fyi(i)+fzi(i)*fzi(i))*dt12
997 . + dt1*(vx(i)*fxt(i)+vy(i)*fyt(i)+vz(i)*fzt(i))
1000#include "lockon.inc"
1001 fsav(4) = fsav(4) + fsav4
1002 fsav(5) = fsav(5) + fsav5
1003 fsav(6) = fsav(6) + fsav6
1004 fsav(12) = fsav(12) + fsav12
1005 fsav(13) = fsav(13) + fsav13
1006 fsav(14) = fsav(14) + fsav14
1007 fsav(15) = fsav(15) + fsav15
1008#include "lockoff.inc"
1013 IF(isensint(1)/=0)
THEN
1015 fsavparit(1,4,i+nft) = fxt(i)
1016 fsavparit(1,5,i+nft) = fyt(i)
1017 fsavparit(1,6,i+nft) = fzt(i)
1029 IF (cs_loc(i)<=nrts)
THEN
1034 DO WHILE(jj<addsubs(is+1))
1036 itypsub = typsub(jsub)
1037 IF(itypsub == 1 )
THEN
1040 DO WHILE((ksub<=jsub).AND.(kk<addsubm(im+1)))
1046 fsav12 = abs(fxi(i)*dt12)
1047 fsav13 = abs(fyi(i)*dt12)
1048 fsav14 = abs(fzi(i)*dt12)
1049 fsav15 = sqrt(fxi(i)*fxi(i)+fyi(i)*fyi(i)+fzi(i)*fzi(i))*dt12
1052 fsavsub(4,nsub)=fsavsub(4,nsub)+fsav4
1053 fsavsub(5,nsub)=fsavsub(5,nsub)+fsav5
1054 fsavsub(6,nsub)=fsavsub(6,nsub)+fsav6
1055 fsavsub(12,nsub)=fsavsub(12,nsub)+fsav12
1056 fsavsub(13,nsub)=fsavsub(13,nsub)+fsav13
1057 fsavsub(14,nsub)=fsavsub(14,nsub)+fsav14
1058 fsavsub(15,nsub)=fsavsub(15,nsub)+fsav15
1060 IF(isensint(jsub+1)/=0)
THEN
1061 fsavparit(jsub+1,4,i+nft) = fxt(i)
1062 fsavparit(jsub+1,5,i+nft) = fyt(i)
1063 fsavparit(jsub+1,6,i+nft) = fzt(i)
1072 ELSEIF(itypsub == 2 )
THEN
1077 fsav12 = abs(fxi(i)*dt12)
1078 fsav13 = abs(fyi(i)*dt12)
1079 fsav14 = abs(fzi(i)*dt12)
1080 fsav15 = sqrt(fxi(i)*fxi(i)+fyi(i)*fyi(i)+fzi(i)*fzi(i))*dt12
1083 fsavsub(4,nsub)=fsavsub(4,nsub)+fsav4
1084 fsavsub(5,nsub)=fsavsub(5,nsub)+fsav5
1085 fsavsub(6,nsub)=fsavsub(6,nsub)+fsav6
1086 fsavsub(12,nsub)=fsavsub(12,nsub)+fsav12
1087 fsavsub(13,nsub)=fsavsub(13,nsub)+fsav13
1088 fsavsub(14,nsub)=fsavsub(14,nsub)+fsav14
1089 fsavsub(15,nsub)=fsavsub(15,nsub)+fsav15
1091 IF(isensint(jsub+1)/=0)
THEN
1092 fsavparit(jsub+1,4,i+nft) = fxt(i)
1093 fsavparit(jsub+1,5,i+nft) = fyt(i)
1094 fsavparit(jsub+1,6,i+nft) = fzt(i)
1098 ELSEIF(itypsub == 3)
THEN
1100 iss2 = bitget(inflg_subs(jj),0)
1101 iss1 = bitget(inflg_subs(jj),1)
1103 DO WHILE((ksub<=jsub).AND.(kk<addsubm(im+1)))
1104 ims2 = bitget(inflg_subm(kk),0)
1105 ims1 = bitget(inflg_subm(kk),1)
1107 IF(.NOT.((ims1 == 1 .AND. iss2 == 1).OR.
1117 fsav12 = abs(fxi(i)*dt12)
1118 fsav13 = abs(fyi(i)*dt12)
1119 fsav14 = abs(fzi(i)*dt12)
1120 fsav15 = sqrt(fxi(i)*fxi(i)+fyi(i)*fyi(i)+fzi(i)*fzi(i))*dt12
1124 fsavsub(4,nsub)=fsavsub(4,nsub)-fsav4
1125 fsavsub(5,nsub)=fsavsub(5,nsub)-fsav5
1126 fsavsub(6,nsub)=fsavsub(6,nsub)-fsav6
1129 fsavsub(5,nsub)=fsavsub(5,nsub)+fsav5
1130 fsavsub(6,nsub)=fsavsub(6,nsub)+fsav6
1132 fsavsub(12,nsub)=fsavsub(12,nsub)+fsav12
1133 fsavsub(13,nsub)=fsavsub(13,nsub)+fsav13
1134 fsavsub(14,nsub)=fsavsub(14,nsub)+fsav14
1135 fsavsub(15,nsub)=fsavsub(15,nsub)+fsav15
1137 IF(isensint(jsub+1)/=0)
THEN
1139 fsavparit(jsub+1,4,i+nft) = fxt(i)
1140 fsavparit(jsub+1,5,i+nft) = fyt(i)
1141 fsavparit(jsub+1,6,i+nft) = fzt(i)
1143 fsavparit(jsub+1,4,i+nft) = -fxt(i)
1144 fsavparit(jsub+1,5,i+nft) = -fyt(i)
1145 fsavparit(jsub+1,6,i+nft) = -fzt(i)
1158 DO WHILE(kk<addsubm(im+1))
1161 itypsub = typsub(ksub)
1162 IF(itypsub == 2 )
THEN
1167 fsav12 = abs(fxi(i)*dt12)
1168 fsav13 = abs(fyi(i)*dt12)
1169 fsav14 = abs(fzi(i)*dt12)
1170 fsav15 = sqrt(fxi(i)*fxi(i)+fyi(i)*fyi(i)+fzi(i)*fzi(i))*dt12
1173 fsavsub(4,nsub)=fsavsub(4,nsub)+fsav4
1174 fsavsub(5,nsub)=fsavsub(5,nsub)+fsav5
1175 fsavsub(6,nsub)=fsavsub(6,nsub)+fsav6
1176 fsavsub(12,nsub)=fsavsub(12,nsub)+fsav12
1177 fsavsub(13,nsub)=fsavsub(13,nsub)+fsav13
1178 fsavsub(14,nsub)=fsavsub(14,nsub)+fsav14
1179 fsavsub(15,nsub)=fsavsub(15,nsub)+fsav15
1181 IF(isensint(jsub+1)/=0)
THEN
1182 fsavparit(jsub+1,4,i+nft) = -fxt(i)
1183 fsavparit(jsub+1,5,i+nft) = -fyt(i)
1184 fsavparit(jsub+1,6,i+nft) = -fzt(i)
1198 itypsub = typsub(jsub)
1200 IF(itypsub == 1 )
THEN
1203 DO WHILE((ksub<=jsub).AND.(kk<addsubm(im+1)))
1209 fsav12 = abs(fxi(i)*dt12)
1210 fsav13 = abs(fyi(i)*dt12)
1211 fsav14 = abs(fzi(i)*dt12)
1212 fsav15 = sqrt(fxi(i)*fxi(i)+fyi(i)*fyi(i)+fzi(i)*fzi(i))*dt12
1215 fsavsub(4,nsub)=fsavsub(4,nsub)+fsav4
1216 fsavsub(5,nsub)=fsavsub(5,nsub)+fsav5
1217 fsavsub(6,nsub)=fsavsub(6,nsub)+fsav6
1218 fsavsub(12,nsub)=fsavsub(12,nsub)+fsav12
1219 fsavsub(13,nsub)=fsavsub(13,nsub)+fsav13
1220 fsavsub(14,nsub)=fsavsub(14,nsub)+fsav14
1221 fsavsub(15,nsub)=fsavsub(15,nsub)+fsav15
1223 IF(isensint(jsub+1)/=0)
THEN
1225 fsavparit(jsub+1,5,i+nft) = fyt(i)
1226 fsavparit(jsub+1,6,i+nft) = fzt(i)
1235 ELSEIF(itypsub == 2 )
THEN
1240 fsav12 = abs(fxi(i)*dt12)
1241 fsav13 = abs(fyi(i)*dt12)
1242 fsav14 = abs(fzi(i)*dt12)
1243 fsav15 = sqrt(fxi(i)*fxi(i)+fyi(i)*fyi(i)+fzi(i)*fzi(i))*dt12
1246 fsavsub(4,nsub)=fsavsub(4,nsub)+fsav4
1247 fsavsub(5,nsub)=fsavsub(5,nsub)+fsav5
1248 fsavsub(6,nsub)=fsavsub(6,nsub)+fsav6
1249 fsavsub(12,nsub)=fsavsub(12,nsub)+fsav12
1250 fsavsub(13,nsub)=fsavsub(13,nsub)+fsav13
1251 fsavsub(14,nsub)=fsavsub(14,nsub)+fsav14
1252 fsavsub(15,nsub)=fsavsub(15,nsub)+fsav15
1254 IF(isensint(jsub+1)/=0)
THEN
1255 fsavparit(jsub+1,4,i+nft) = fxt(i)
1256 fsavparit(jsub+1,5,i+nft) = fyt(i)
1257 fsavparit(jsub+1,6,i+nft) = fzt(i)
1262 ELSEIF(itypsub == 3 )
THEN
1267 DO WHILE((ksub<=jsub).AND.(kk<addsubm(im+1)))
1268 ims2 = bitget(inflg_subm(kk),0)
1269 ims1 = bitget(inflg_subm(kk),1)
1271 IF(.NOT.((ims1 == 1 .AND. iss2 == 1).OR.
1272 . (ims2 == 1 .AND. iss1 == 1)))
THEN
1282 fsav13 = abs(fyi(i)*dt12
1283 fsav14 = abs(fzi(i)*dt12)
1284 fsav15 = sqrt(fxi(i)*fxi(i)+fyi(i)*fyi(i)+fzi(i)*fzi(i))*dt12
1288 fsavsub(4,nsub)=fsavsub(4,nsub)-fsav4
1289 fsavsub(5,nsub)=fsavsub(5,nsub)-fsav5
1290 fsavsub(6,nsub)=fsavsub(6,nsub)-fsav6
1292 fsavsub(4,nsub)=fsavsub(4,nsub)+fsav4
1293 fsavsub(5,nsub)=fsavsub(5,nsub)+fsav5
1294 fsavsub(6,nsub)=fsavsub(6,nsub)+fsav6
1296 fsavsub(12,nsub)=fsavsub(12,nsub)+fsav12
1297 fsavsub(13,nsub)=fsavsub(13,nsub)+fsav13
1298 fsavsub(14,nsub)=fsavsub(14,nsub)+fsav14
1299 fsavsub(15,nsub)=fsavsub(15,nsub)+fsav15
1301 IF(isensint(jsub+1)/=0)
THEN
1303 fsavparit(jsub+1,4,i+nft) = -fxt(i)
1304 fsavparit(jsub+1,5,i+nft) = -fyt(i)
1305 fsavparit(jsub+1,6,i+nft) = -fzt(i)
1307 fsavparit(jsub+1,4,i+nft) = fxt(i)
1308 fsavparit(jsub+1,5,i+nft) = fyt(i)
1309 fsavparit(jsub+1,6,i+nft) = fzt(i)
1328#include "lockon.inc"
1329 econtv = econtv + econvt
1330 econt = econt + econtt
1331 econtd = econtd + econtdt
1332 fsav(26) = fsav(26) + econtt
1333 fsav(27) = fsav(27) + econvt
1334 fsav(28) = fsav(28) + econtdt
1335#include "lockoff.inc"
1339 fx1(i)=-fxi(i)*hs1(i)
1340 fy1(i)=-fyi(i)*hs1(i)
1341 fz1(i)=-fzi(i)*hs1(i)
1343 fx2(i)=-fxi(i)*hs2(i)
1344 fy2(i)=-fyi(i)*hs2(i)
1345 fz2(i)=-fzi(i)*hs2(i)
1347 fx3(i)=fxi(i)*hm1(i)
1348 fy3(i)=fyi(i)*hm1(i)
1349 fz3(i)=fzi(i)*hm1(i)
1351 fx4(i)=fxi(i)*hm2(i)
1352 fy4(i)=fyi(i)*hm2(i)
1353 fz4(i)=fzi(i)*hm2(i)
1359#include "mic_lockon.inc"
1361 IF(cs_loc(i)>nrts)
THEN
1368#include "mic_lockoff.inc"
1372 stif(i) = two*stif(i)
1376 IF(kdtint==1.OR.idtmins==2.OR.idtmins_int/=0)
THEN
1378 . .AND.(ivis2==0.OR.ivis2==1))
THEN
1382 IF(ms1(i)==zero)
THEN
1386 k1(i)=kt(i)*abs(hs1(i))
1387 c1(i)=c(i)*abs(hs1(i))
1388 cx =four*c1(i)*c1(i)
1389 cy =eight*ms1(i)*k1(i)
1390 aux = sqrt(cx+cy)+two*c1(i)
1391 st1(i)= k1(i)*aux*aux/
max(cy,em30)
1392 cfi = cf(i)*abs(hs1(i))
1393 aux = two*cfi*cfi/
max(ms1(i),em20)
1400 IF(ms2(i)==zero)
THEN
1404 k2(i)=kt(i)*abs(hs2(i))
1405 c2(i)=c(i)*abs(hs2(i))
1406 cx =four*c2(i)*c2(i)
1407 cy =eight*ms2(i)*k2(i)
1408 aux = sqrt(cx+cy)+two*c2(i)
1409 st2(i)= k2(i)*aux*aux/
max(cy,em30)
1410 cfi = cf(i)*abs(hs2(i))
1411 aux = two*cfi*cfi/
max(ms2(i),em20)
1418 IF(mm1(i)==zero)
THEN
1422 k3(i)=kt(i)*abs(hm1(i))
1423 c3(i)=c(i)*abs(hm1(i))
1424 cx =four*c3(i)*c3(i)
1425 cy =eight*mm1(i)*k3(i)
1426 aux = sqrt(cx+cy)+two*c3(i)
1427 st3(i)= k3(i)*aux*aux/
max(cy,em30)
1428 cfi = cf(i)*abs(hm1(i))
1429 aux = two*cfi*cfi/
max(mm1(i),em20)
1436 IF(mm2(i)==zero)
THEN
1440 k4(i)=kt(i)*abs(hm2(i))
1441 c4(i)=c(i)*abs(hm2(i))
1442 cx =four*c4(i)*c4(i)
1443 cy =eight*mm2(i)*k4(i)
1444 aux = sqrt(cx+cy)+two*c4(i)
1445 st4(i)= k4(i)*aux*aux/
max(cy,em30)
1446 cfi = cf(i)*abs(hm2(i))
1447 aux = two*cfi*cfi/
max(mm2(i),em20)
1456 k1(i) =stif(i)*abs(hs1(i))
1458 k2(i) =stif(i)*abs(hs2(i))
1460 k3(i) =stif(i)*abs(hm1(i))
1462 k4(i) =stif(i)*abs(hm2(i))
1469 IF(idtm==1.OR.idtm==2)
THEN
1473 mas2 = two * masmin(i)
1474 IF(mas2>zero.AND.stif(i)>zero)
THEN
1475 dtmi(i) =
min(dtmi(i),dtfac1(10)*sqrt(mas2/stif(i)))
1477 dtmi0 =
min(dtmi0,dtmi(i))
1481 IF(dtmi(i)<=dtm)
THEN
1483#include "lockon.inc"
1484 IF(cs_loc(i)<=nrts)
THEN
1485 WRITE(iout,
'(A,E12.4,A,I10,A,E12.4,A)')
1486 .
' **WARNING MINIMUM TIME STEP ',dtmi(i),
1487 .
' IN INTERFACE NB',noint,
'(DTMIN=',dtm,
')'
1488 WRITE(iout,*)
'SECONDARY NODES NB',itab(n1(i)),
1490 WRITE(iout,*)
'MAIN NODES NB',itab(m1(i)),
1493 WRITE(iout,
'(A,E12.4,A,I10,A,E12.4,A)')
1494 .
' **WARNING MINIMUM TIME STEP ',dtmi(i),
1495 .
' IN INTERFACE NB',noint,
'(DTMIN=',dtm,
')'
1496 WRITE(iout,*)
'SECONDARY NODES NB',
itafi(nin)%P(n1(i)),
1497 .
itafi(nin)%P(n2(i))
1498 WRITE(iout,*)
'MAIN NODES NB',itab(m1(i)),
1501#include "lockoff.inc"
1504#include "lockon.inc"
1505 IF(cs_loc(i)<=nrts)
THEN
1506 WRITE(iout,
'(A,E12.4,A,I10,A,E12.4,A)')
1507 .
' **WARNING MINIMUM TIME STEP ',dtmi(i),
1508 .
' IN INTERFACE NB',noint,
'(DTMIN=',dtm,
')'
1509 WRITE(iout,*)'secondary nodes nb
',ITAB(N1(I)),
1511 WRITE(IOUT,*)'main nodes nb
',ITAB(M1(I)),
1513 WRITE(IOUT,*)'delete secondary line from interface
'
1514 STFS(CS_LOC(I)) = -ABS(STFS(CS_LOC(I)))
1517 WRITE(IOUT,'(a,e12.4,a,i10,a,e12.4,a)
')
1518 . ' **warning minimum time step
',DTMI(I),
1519 . ' in
INTERFACE nb
',NOINT,'(dtmin=
',DTM,')
'
1520 WRITE(IOUT,*)'secondary nodes nb
',ITAFI(NIN)%P(N1(I)),
1521 . ITAFI(NIN)%P(N2(I))
1522 WRITE(IOUT,*)'main nodes nb
',ITAB(M1(I)),
1524 WRITE(IOUT,*)'delete secondary line from interface
'
1525 STIFI(NIN)%P(NI) = -ABS(STIFI(NIN)%P(NI))
1527#include "lockoff.inc"
1530#include "lockon.inc"
1531 IF(CS_LOC(I)<=NRTS) THEN
1532 WRITE(IOUT,'(a,e12.4,a,i10,a,e12.4,a)
')
1533 . ' **warning minimum time step
',DTMI(I),
1534 . ' in
INTERFACE nb
',NOINT,'(dtmin=
',DTM,')
'
1535 WRITE(IOUT,*)'secondary nodes nb
',ITAB(N1(I)),
1537 WRITE(IOUT,*)'main nodes nb
',ITAB(M1(I)),
1540 WRITE(IOUT,'(a,e12.4,a,i10,a,e12.4,a)
')
1541 . ' **warning minimum time step
',DTMI(I),
1542 . ' in
INTERFACE nb
',NOINT,'(dtmin=
',DTM,')
'
1543 WRITE(IOUT,*)'secondary nodes nb
',ITAFI(NIN)%P(N1(I)),
1544 . ITAFI(NIN)%P(N2(I))
1545 WRITE(IOUT,*)'main nodes nb
',ITAB(M1(I)),
1548#include "lockoff.inc"