40 1 JLT ,A ,V ,IBC ,ICODT ,
41 2 FSAV ,GAP ,FRIC ,MS ,VISC ,
42 3 VISCF ,NOINT ,ITAB ,CS_LOC ,CM_LOC ,
43 4 STIGLO ,STIFN ,STIF ,FSKYI ,ISKY ,
44 5 FCONT ,DT2T ,NRTM ,MSEGTYP ,HS1 ,
45 6 HS2 ,HM1 ,HM2 ,N1 ,N2 ,
46 7 M1 ,M2 ,IVIS2 ,NELTST ,ITYPTST,
47 8 NX ,NY ,NZ ,GAPVE ,INACTI ,
48 9 INDEX ,CAND_P ,NISKYFIE,NEWFRONT,ISECIN ,
49 A NSTRF ,SECFCUM,VISCN ,NEDGE ,MS1 ,
50 B MS2 ,MM1 ,MM2 ,VXS1 ,VYS1 ,
51 C VZS1 ,VXS2 ,VYS2 ,VZS2 ,VXM1 ,
52 D VYM1 ,VZM1 ,VXM2 ,VYM2 ,VZM2 ,
53 E NIN ,NISUB ,LISUB ,ADDSUBE ,ADDSUBM,
54 F LISUBE ,LISUBM ,INFLG_SUBE,INFLG_SUBM,FSAVSUB,
55 G MSKYI_SMS,ISKYI_SMS,NSMS ,JTASK ,ISENSINT,
56 H FSAVPARIT,NFT ,H3D_DATA,INDX1 ,INDX2 ,
57 I ILEV ,MBINFLG, EDGE_ID, NEDGE_REM ,FRICC ,
58 J IFQ ,CAND_FX, CAND_FY, CAND_FZ ,IFPEN ,
59 K TAGNCONT ,KLOADPINTER,LOADPINTER ,LOADP_HYD_INTER,
60 L TYPSUB ,STARTT,NINLOADP ,DGAPLOADINT,S_LOADPINTER)
70#include "implicit_f.inc"
96 INTEGER :: EDGE_ID(2,4*MVSIZ),NEDGE_REM
97 INTEGER NELTST,ITYPTST,JLT,IBC,IVIS2,INACTI,NEDGE,NISKYFIE,NIN,,ILEV,
99 INTEGER ICODT(*), ITAB(*), ISKY(*),
100 . ,NEWFRONT,ISECIN, (*), ISKYI_SMS(*), MSEGTYP(*),
101 . NISUB, LISUB(*), ADDSUBE(*), ADDSUBM(*), LISUBE(*), LISUBM(*),
103INTEGER N1(*), N2(*), M1(*), M2(*), NSMS(*),
104 . (4*MVSIZ), CM_LOC(4*MVSIZ), JTASK,
105 . ISENSINT(*),NFT,INDEX(*), INDX1(4*MVSIZ), INDX2(4*MVSIZ),
106 . TAGNCONT(NLOADP_HYD_INTER,NUMNOD)
107 INTEGER ,
INTENT(IN) :: NINLOADP,S_LOADPINTER
108 INTEGER ,
INTENT(IN) :: KLOADPINTER(NINTER+1),LOADPINTER(S_LOADPINTER),
112 . A(3,*), MS(*), V(3,*), FSAV(*),FCONT(3,*),
113 . STIFN(*),FSKYI(LSKYI,NFSKYI),FSAVSUB(,*),
114 . MSKYI_SMS(*), GAPVE(*), CAND_P(4,*),
115 . GAP,FRIC,VISC,VISCF,VIS,DT2T,STARTT
117 . hs1(*), hs2(*), hm1(*), hm2(*),
118 . nx(*), ny(*), nz(*), stif(*),
119 . secfcum(7,numnod,nsect), viscn(*),
120 . ms1(*),ms2(*),mm1(*),mm2(*),
121 . vxs1(*),vys1(*),vzs1(*),vxs2(*),vys2(*),
122 . vzs2(*),vxm1(*),vym1(*),vzm1(*),vxm2(*),
123 . vym2(*),vzm2(*),fsavparit(nisub+1,11,*),
124 . fricc(*),cand_fx(4,*),cand_fy(4,*),cand_fz(4,*)
125 my_real ,
INTENT(IN) :: dgaploadint(s_loadpinter)
130 INTEGER I, J, K0, NBINTER, K1S, K, NI, IL, IE, PP, PPL
132 INTEGER JSUB,KSUB,NSUB,JJ,KK,ISS1,ISS2,IMS1,IMS2,ITYPSUB,
135 . VX(4*MVSIZ), VY(4*MVSIZ), VZ(4*MVSIZ), VN(4*MVSIZ),
136 . FXI(4*MVSIZ), FYI(4*MVSIZ), FZI(4*MVSIZ), FNI(4*MVSIZ),
137 . fx1(4*mvsiz), fx2(4*mvsiz), fx3(4*mvsiz), fx4(4*mvsiz),
138 . fy1(4*mvsiz), fy2(4*mvsiz), fy3(4*mvsiz), fy4(4*mvsiz),
139 . fz1(4*mvsiz), fz2(4*mvsiz), fz3(4*mvsiz), fz4(4*mvsiz),
140 . fxt(4*mvsiz), fyt(4*mvsiz), fzt(4*mvsiz),
141 . vis2(4*mvsiz),pene(4*mvsiz),dist(4*mvsiz),
144 . fx, fy, fz, mas2,dti,
145 . econtt, econvt,masm,
146 . fsav1, fsav2, fsav3, fsav4, fsav5, fsav6, fsav8,
147 . fsav9, fsav10, fsav11, fsav12, fsav13, fsav14, fsav15,
149 . fsavsub1(24,nisub), impx, impy, impz,ftn ,fn , ft,beta
153 . st1(4*mvsiz),st2(4*mvsiz),st3(4*mvsiz),st4(4*mvsiz),stif0(4*mvsiz),
154 . kt(4*mvsiz),c(4*mvsiz),cf(4*mvsiz),
155 . k1(4*mvsiz),k2(4*mvsiz),k3(4*mvsiz),k4(4*mvsiz),
156 . c1(4*mvsiz),c2(4*mvsiz),c3(4*mvsiz),c4(4*mvsiz),
180 s2 = sqrt(nx(i)**2 + ny(i)**2 + nz(i)**2)
182 IF(gapve(i)/=zero)
THEN
183 pene(i) =
max(zero,gapve(i) - s2)
188 s2 = one/
max(em30,s2)
196 debug_e2e(edge_id(1,i)==d_em .AND. edge_id(2,i) == d_es,cand_p(indx2(i),indx1(i)))
197 debug_e2e(edge_id(1,i)==d_em .AND. edge_id(2,i) == d_es,pene(i))
198 IF(cand_p(indx2(i),indx1(i))==zero)cand_p(indx2(i),indx1(i))=pene(i)
204 IF(cand_p(indx2(i),indx1(i))<zero)
THEN
206 cand_p(indx2(i),indx1(i))=pene(i)
208 cand_p(indx2(i),indx1(i))=-cand_p(indx2(i),indx1(i))
213 IF(pene(i)/=cand_p(indx2(i),indx1(i)))
214 . cand_p(indx2(i),indx1(i))=
min(cand_p(indx2(i),indx1(i)),
215 . ((one-fiveem2)*cand_p(indx2(i),indx1
217 pene(i)=
max(zero,pene(i)-cand_p(indx2(i),indx1(i)))
218 IF( pene(i)==zero ) stif(i) = zero
222 IF(cand_p(indx2(i),indx1(i)) < zero)
THEN
225 cand_p(indx2(i),indx1(i)) = -cand_p(indx2(i
226 IF(pene(i)/=cand_p(indx2(i),indx1(i)))
227 . cand_p(indx2(i),indx1(i)) =
min(cand_p(indx2(i),indx1(i)),
228 . ((one-fiveem2)*cand_p(indx2(i),indx1(i))+fiveem2*pene(i)) )
229 cand_p(indx2(i),indx1(i)) = -cand_p(indx2(i),indx1(i))
230 IF( pene(i)==zero ) stif(i) = zero
234 IF(pene(i)/=cand_p(indx2(i),indx1(i)))
235 . cand_p(indx2(i),indx1(i))=
min(cand_p(indx2(i),indx1(i)),
236 . ((one-fiveem2)*cand_p(indx2(i),indx1(i))+fiveem2*pene(i)) )
238 pene(i)=
max(zero,pene(i)-cand_p(indx2
239 IF( pene(i)==zero ) stif(i) = zero
246 vx(i) = hs1(i)*vxs1(i) + hs2(i)*vxs2(i)
247 . - hm1(i)*vxm1(i) - hm2(i)*vxm2(i)
248 vy(i) = hs1(i)*vys1(i) + hs2(i)*vys2(i)
249 . - hm1(i)*vym1(i) - hm2(i)*vym2(i)
250 vz(i) = hs1(i)*vzs1(i) + hs2(i)*vzs2(i)
251 . - hm1(i)*vzm1(i) - hm2(i)*vzm2(i)
252 vn(i) = nx(i)*vx(i) + ny(i)*vy(i) + nz(i)*vz(i)
257 stif(i)= half*stif(i)
258 fni(i) = -stif(i) * pene(i)
259 econvt = econvt+fni(i)*vn(i)*dt1
266 IF(kdtint==0.AND.(idtmins/=2.AND.idtmins_int==0))
THEN
268 fac = stif(i) /
max(em30,stif(i))
273 vis2(i) = two * stif(i) *
min(mas2,masm)
275 ff = fac * visc * vis
276 stif(i) = stif0(i) + ff * dt1inv
277 stif(i) =
max(stif(i) ,fac*sqrt(viscf)*vis
279 econvt = econvt + ff * vn(i) * dt1
285 fac = stif(i) /
max(em30,stif(i))
290 vis2(i) = two * stif(i) *
min(mas2,masm)
292 c(i)= fac * visc * vis
294 stif(i) = stif(i) + c(i) * dt1inv
296 econvt = econvt + ff * vn(i) * dt1
298 cf(i) = fac*sqrt(viscf)*vis
299 stif(i) =
max(stif(i) ,cf(i)*dt1inv)
304 IF(kdtint==0.AND.(idtmins/=2.AND.idtmins_int==0))
THEN
306 fac = stif(i) /
max(em30,stif(i))
316 vis2(i) = two* stif(i) * masm * mas2 /
317 .
max(em30,masm+mas2)
319 ff = fac * visc * vis
320 stif(i) = stif0(i) + ff * dt1inv
321 stif(i) =
max(stif(i) ,fac*sqrt(viscf)*vis*dt1inv)
323 econvt = econvt + ff * vn(i) * dt1
329 fac = stif(i) /
max(em30,stif(i))
335 .
max(em30,masm+mas2)
337 c(i)= fac * visc * vis
339 stif(i) = stif(i) + c(i) * dt1inv
341 econvt = econvt + ff * vn(i) * dt1
343 cf(i) = fac*sqrt(viscf)*vis
344 stif(i) =
max(stif(i) ,cf(i)*dt1inv)
353 fac = stif(i) /
max(em30,stif(i))
358 vis2(i) = two * stif(i) *
min(mas2,masm)
360 ff = fac * visc * vis
361 stif(i) = stif0(i) + two * ff * dt1inv
362 stif(i) =
max(stif(i) ,fac*sqrt(viscf)*vis*dt1inv)
364 econvt = econvt + ff * vn(i) * dt1
372 fac = stif(i) /
max(em30,stif(i))
377 vis2(i) = two * stif(i) *
min(mas2,masm)
379 ff = fac * visc * vis
380 stif(i) = stif0(i) + two* ff * dt1inv
381 stif(i) =
max(stif(i) ,fac*sqrt(viscf)*vis*dt1inv)
383 econvt = econvt + ff * vn(i) * dt1
391 fac = stif(i) /
max(em30,stif(i))
396 vis2(i) = two * stif(i) *
min(mas2,masm)
398 stif(i) =
max(stif(i) ,fac*sqrt(viscf)*vis*dt1inv)
407 fac = stif(i) /
max(em30,stif(i))
412 vis2(i) = two* stif(i) * masm * mas2 /
413 .
max(em30,masm+mas2)
414 vis = 2. * visc * dt1inv * masm * mas2 /
415 .
max(em30,masm+mas2)
416 stif(i) =
max(stif0(i) ,fac*sqrt(viscf*vis2(i))*dt1inv)
418 econvt = econvt + ff * vn(i) * dt1
419 fni(i) =
min(fni(i),ff)
437 IF(pene(i) == zero)cycle
439 ims2 = bitget(mbinflg(ie),1)
450 fsav11=fsav11-fni(i)*dt12
455 fsav11=fsav11+fni(i)*dt12
457 fsav8 =fsav8 +abs(impx)
458 fsav9 =fsav9 +abs(impy)
459 fsav10=fsav10+abs(impz)
460 IF(isensint(1)/=0)
THEN
462 fsavparit(1,1,i) = -fxi(i)
463 fsavparit(1,2,i) = -fyi(i)
464 fsavparit(1,3,i) = -fzi(i)
466 fsavparit(1,1,i) = fxi(i)
467 fsavparit(1,2,i) = fyi(i)
468 fsavparit(1,3,i) = fzi(i)
474 IF(pene(i) == zero)cycle
484 fsav11=fsav11-fni(i)*dt12
485 fsav8 =fsav8 +abs(impx)
486 fsav9 =fsav9 +abs(impy)
487 fsav10=fsav10+abs(impz)
488 IF(isensint(1)/=0)
THEN
489 fsavparit(1,1,i) = fxi(i)
490 fsavparit(1,2,i) = fyi(i)
491 fsavparit(1,3,i) = fzi(i)
497 fsav(1)=fsav(1)+fsav1
498 fsav(2)=fsav(2)+fsav2
499 fsav(3)=fsav(3)+fsav3
500 fsav(8)=fsav(8)+fsav8
501 fsav(9)=fsav(9)+fsav9
502 fsav(10)=fsav(10)+fsav10
503 fsav(11)=fsav(11)+fsav11
504#include "lockoff.inc"
512 fsavsub1(j,jsub)=zero
517 IF(pene(i) == zero)cycle
522 IF (msegtyp(cm_loc(i)) < 0)
THEN
523 ie= - msegtyp(cm_loc(i))
527 IF(ie > nrtm) ie=ie-nrtm
531 DO WHILE(jj<addsube(il+1))
533 itypsub = typsub(jsub)
535 IF(itypsub == 1 )
THEN
537 iss1 = bitget(inflg_sube(jj),0)
538 iss2 = bitget(inflg_sube(jj),1)
540 DO WHILE((ksub<=jsub).AND.(kk<addsube(ie+1)))
541 ims1 = bitget(inflg_subm(kk),0)
542 ims2 = bitget(inflg_subm(kk),1)
544 IF(.NOT.((ims1 == 1 .AND. iss2 == 1).OR.
545 . (ims2 == 1 .AND. iss1 == 1)))
THEN
555 fsavsub1(1,jsub)=fsavsub1(1,jsub)-impx
556 fsavsub1(2,jsub)=fsavsub1(2,jsub)-impy
557 fsavsub1(3,jsub)=fsavsub1(3,jsub)-impz
558 fsavsub1(11,jsub)=fsavsub1(11,jsub)-fni(i)*dt12
560 fsavsub1(1,jsub)=fsavsub1(1,jsub)+impx
561 fsavsub1(2,jsub)=fsavsub1(2,jsub)+impy
562 fsavsub1(3,jsub)=fsavsub1(3,jsub)+impz
563 fsavsub1(11,jsub)=fsavsub1(11,jsub)+fni(i)*dt12
566 IF(isensint(jsub+1)/=0)
THEN
568 fsavparit(jsub+1,1,i) = -fxi(i)
569 fsavparit(jsub+1,2,i) = -fyi(i)
570 fsavparit(jsub+1,3,i) = -fzi(i)
572 fsavparit(jsub+1,1,i) = fxi(i)
573 fsavparit(jsub+1,2,i) = fyi(i)
574 fsavparit(jsub+1,3,i) = fzi(i)
578 fsavsub1(8,jsub) =fsavsub1(8,jsub) +abs(impx)
579 fsavsub1(9,jsub) =fsavsub1(9,jsub) +abs(impy)
580 fsavsub1(10,jsub)=fsavsub1(10,jsub)+abs(impz)
588 ELSEIF(itypsub == 2 )
THEN
595 fsavsub1(1,jsub)=fsavsub1(1,jsub)+impx
596 fsavsub1(2,jsub)=fsavsub1(2,jsub)+impy
597 fsavsub1(3,jsub)=fsavsub1(3,jsub)+impz
599 fsavsub1(8,jsub) =fsavsub1(8,jsub) +abs(impx)
600 fsavsub1(9,jsub) =fsavsub1(9,jsub) +abs(impy)
601 fsavsub1(10,jsub)=fsavsub1(10,jsub)+abs(impz)
603 fsavsub1(11,jsub)=fsavsub1(11,jsub)+fni(i)*dt12
605 IF(isensint(jsub+1)/=0)
THEN
606 fsavparit(jsub+1,1,i) = fxi(i)
607 fsavparit(jsub+1,2,i) = fyi(i)
608 fsavparit(jsub+1,3,i) = fzi(i)
613 ELSEIF(itypsub == 3 )
THEN
615 iss2 = bitget(inflg_sube(jj),0)
616 iss1 = bitget(inflg_sube(jj),1)
618 DO WHILE((ksub<=jsub).AND.(kk<addsube(ie+1)))
619 ims2 = bitget(inflg_subm(kk),0)
620 ims1 = bitget(inflg_subm(kk),1)
622 IF(.NOT.((ims1 == 1 .AND. iss2 == 1).OR.
623 . (ims2 == 1 .AND. iss1 == 1)))
THEN
630 fsavsub1(1,jsub)=fsavsub1(1,jsub)-impx
632 fsavsub1(3,jsub)=fsavsub1(3,jsub)-impz
633 fsavsub1(11,jsub)=fsavsub1(11,jsub)-fni(i)*dt12
635 fsavsub1(1,jsub)=fsavsub1(1,jsub)+impx
636 fsavsub1(2,jsub)=fsavsub1(2,jsub)+impy
637 fsavsub1(3,jsub)=fsavsub1(3,jsub)+impz
638 fsavsub1(11,jsub)=fsavsub1(11,jsub)+fni(i)*dt12
641 fsavsub1(8,jsub) =fsavsub1(8,jsub) +abs(impx)
642 fsavsub1(9,jsub) =fsavsub1(9,jsub) +abs(impy)
643 fsavsub1(10,jsub)=fsavsub1(10,jsub)+abs(impz)
645 IF(isensint(jsub+1)/=0)
THEN
647 fsavparit(jsub+1,1,i) = -fxi(i)
648 fsavparit(jsub+1,2,i) = -fyi(i)
649 fsavparit(jsub+1,3,i) = -fzi(i)
651 fsavparit(jsub+1,1,i) = fxi(i)
652 fsavparit(jsub+1,2,i) = fyi(i)
653 fsavparit(jsub+1,3,i) = fzi(i)
670 IF (msegtyp(cm_loc(i)) < 0)
THEN
671 ie= - msegtyp(cm_loc(i))
675 IF(ie > nrtm) ie=ie-nrtm
678 DO WHILE(kk<addsube(ie+1))
680 itypsub = typsub(ksub)
681 IF(itypsub == 2 )
THEN
687 fsavsub1(1,ksub)=fsavsub1(1,ksub)+impx
688 fsavsub1(2,ksub)=fsavsub1(2,ksub)+impy
689 fsavsub1(3,ksub)=fsavsub1(3,ksub)+impz
691 fsavsub1(8,ksub) =fsavsub1(8,ksub) +abs(impx)
692 fsavsub1(9,ksub) =fsavsub1(9,ksub) +abs(impy)
693 fsavsub1(10,ksub)=fsavsub1(10,ksub)+abs(impz)
695 fsavsub1(11,ksub)=fsavsub1(11,ksub)-fni(i)*dt12
697 IF(isensint(ksub+1)/=0)
THEN
698 fsavparit(ksub+1,1,i) = -fxi(i)
699 fsavparit(ksub+1,2,i) = -fyi(i)
700 fsavparit(ksub+1,3,i) = -fzi(i)
711 IF(pene(i) == zero)cycle
716 IF (msegtyp(cm_loc(i)) < 0)
THEN
717 ie= - msegtyp(cm_loc(i))
721 IF(ie > nrtm) ie=ie-nrtm
728 itypsub = typsub(jsub)
730 IF(itypsub == 1 )
THEN
734 DO WHILE((ksub<=jsub).AND.(kk<addsube(ie+1)))
735 ims1 = bitget(inflg_subm(kk),0)
736 ims2 = bitget(inflg_subm(kk),1)
739 . (ims2 == 1 .AND. iss1 == 1)))
THEN
749 fsavsub1(1,jsub)=fsavsub1(1,jsub)-impx
750 fsavsub1(2,jsub)=fsavsub1(2,jsub)-impy
751 fsavsub1(3,jsub)=fsavsub1(3,jsub)-impz
752 fsavsub1(11,jsub)=fsavsub1(11,jsub)-fni(i)*dt12
754 fsavsub1(1,jsub)=fsavsub1(1,jsub)+impx
755 fsavsub1(2,jsub)=fsavsub1(2,jsub)+impy
756 fsavsub1(3,jsub)=fsavsub1(3,jsub)+impz
757 fsavsub1(11,jsub)=fsavsub1(11,jsub)+fni(i)*dt12
760 IF(isensint(jsub+1)/=0)
THEN
762 fsavparit(jsub+1,1,i) = -fxi(i)
763 fsavparit(jsub+1,2,i) = -fyi(i)
764 fsavparit(jsub+1,3,i) = -fzi(i)
766 fsavparit(jsub+1,1,i) = fxi(i)
767 fsavparit(jsub+1,2,i) = fyi(i)
768 fsavparit(jsub+1,3,i) = fzi(i)
772 fsavsub1(8,jsub) =fsavsub1(8,jsub) +abs(impx)
773 fsavsub1(9,jsub) =fsavsub1(9,jsub) +abs(impy)
774 fsavsub1(10,jsub)=fsavsub1(10,jsub)+abs(impz)
782 ELSEIF(itypsub == 2 )
THEN
789 fsavsub1(1,jsub)=fsavsub1(1,jsub)+impx
790 fsavsub1(2,jsub)=fsavsub1(2,jsub)+impy
791 fsavsub1(3,jsub)=fsavsub1(3,jsub)+impz
793 fsavsub1(8,jsub) =fsavsub1(8,jsub) +abs(impx)
794 fsavsub1(9,jsub) =fsavsub1(9,jsub) +abs(impy)
795 fsavsub1(10,jsub)=fsavsub1(10,jsub)+abs(impz)
797 fsavsub1(11,jsub)=fsavsub1(11,jsub)+fni(i)*dt12
799 IF(isensint(jsub+1)/=0)
THEN
800 fsavparit(jsub+1,1,i) = fxi(i)
801 fsavparit(jsub+1,2,i) = fyi(i)
802 fsavparit(jsub+1,3,i) = fzi(i)
807 ELSEIF(itypsub == 3 )
THEN
812 DO WHILE((ksub<=jsub).AND.(kk<addsube(ie+1)))
813 ims2 = bitget(inflg_subm(kk),0)
814 ims1 = bitget(inflg_subm(kk),1)
816 IF(.NOT.((ims1 == 1 .AND. iss2 == 1).OR.
817 . (ims2 == 1 .AND. iss1 == 1)))
THEN
828 fsavsub1(1,jsub)=fsavsub1(1,jsub)-impx
829 fsavsub1(2,jsub)=fsavsub1(2,jsub)-impy
830 fsavsub1(3,jsub)=fsavsub1(3,jsub)-impz
831 fsavsub1(11,jsub)=fsavsub1(11,jsub)-fni(i)*dt12
833 fsavsub1(1,jsub)=fsavsub1(1,jsub)+impx
834 fsavsub1(2,jsub)=fsavsub1(2,jsub)+impy
835 fsavsub1(3,jsub)=fsavsub1(3,jsub)+impz
836 fsavsub1(11,jsub)=fsavsub1(11,jsub)+fni(i)*dt12
839 fsavsub1(8,jsub) =fsavsub1(8,jsub) +abs(impx)
840 fsavsub1(9,jsub) =fsavsub1(9,jsub) +abs(impy)
841 fsavsub1(10,jsub)=fsavsub1(10,jsub)+abs(impz)
843 IF(isensint(jsub+1)/=0)
THEN
845 fsavparit(jsub+1,1,i) = -fxi(i)
846 fsavparit(jsub+1,2,i) = -fyi(i)
847 fsavparit(jsub+1,3,i) = -fzi(i)
849 fsavparit(jsub+1,1,i) = fxi(i)
850 fsavparit(jsub+1,2,i) = fyi(i)
851 fsavparit(jsub+1,3,i) = fzi(i)
888 IF(pene(i) == zero)cycle
890 fx = stif0(i)*vx(i)*dt12
891 fy = stif0(i)*vy(i)*dt12
892 fz = stif0(i)*vz(i)*dt12
894 fx = cand_fx(indx2(i),indx1(i)) + fx
895 fy = cand_fy(indx2(i),indx1(i)) + fy
896 fz = cand_fz(indx2(i),indx1(i)) + fz
898 ftn = fx*nx(i) + fy*ny(i) + fz*nz(i)
902 ft = fx*fx + fy*fy + fz*fz
905 fn = fxi(i)**2+fyi(i)**2+fzi(i)**2
906 beta =
min(one,fricc(i)*sqrt(fn/ft))
911 cand_fx(indx2(i),indx1(i)) = fxt(i)
912 cand_fy(indx2(i),indx1(i)) = fyt(i)
913 cand_fz(indx2(i),indx1(i)) = fzt(i)
915 fxi(i)=fxi(i) + fxt(i)
916 fyi(i)=fyi(i) + fyt(i)
917 fzi(i)=fzi(i) + fzt(i)
921 fsav4 = fsav4 + fxt(i)*dt12
922 fsav5 = fsav5 + fyt(i)*dt12
923 fsav6 = fsav6 + fzt(i)*dt12
925 fsav12 = fsav12 + abs(fxi(i)*dt12)
926 fsav13 = fsav13 + abs(fyi(i)*dt12)
927 fsav14 = fsav14 + abs(fzi(i)*dt12)
928 fsav15 = fsav15 + sqrt(fxi(i)*fxi(i)+fyi(i)*fyi(i)+fzi(i)*fzi(i))*dt12
930 . + dt1*(vx(i)*fxt(i)+vy(i)*fyt(i)+vz(i)*fzt(i))
936 fsav(4) = fsav(4) + fsav4
937 fsav(5) = fsav(5) + fsav5
938 fsav(6) = fsav(6) + fsav6
939 fsav(12) = fsav(12) + fsav12
940 fsav(13) = fsav(13) + fsav13
941 fsav(14) = fsav(14) + fsav14
942 fsav(15) = fsav(15) + fsav15
943#include "lockoff.inc"
952 IF(pene(i) == zero)cycle
957 IF (msegtyp(cm_loc(i)) < 0)
THEN
958 ie= - msegtyp(cm_loc(i))
962 IF(ie > nrtm) ie=ie-nrtm
966 DO WHILE(jj<addsube(il+1))
969 itypsub = typsub(jsub)
971 IF(itypsub == 1 )
THEN
973 iss1 = bitget(inflg_sube(jj),0)
974 iss2 = bitget(inflg_sube(jj),1)
976 DO WHILE((ksub<=jsub).AND.(kk<addsube(ie+1)))
977 ims1 = bitget(inflg_subm(kk),0)
978 ims2 = bitget(inflg_subm(kk),1)
980 IF(.NOT.((ims1 == 1 .AND. iss2 == 1).OR.
981 . (ims2 == 1 .AND. iss1 == 1)))
THEN
990 fsavsub1(4,jsub)=fsavsub1(4,jsub)+impx
991 fsavsub1(5,jsub)=fsavsub1(5,jsub)+impy
992 fsavsub1(6,jsub)=fsavsub1(6,jsub)+impz
997 fsavsub1(12,jsub)=fsavsub1(12,jsub)+abs(impx)
998 fsavsub1(13,jsub)=fsavsub1(13,jsub)+abs(impy)
999 fsavsub1(14,jsub)=fsavsub1(14,jsub)+abs(impz)
1001 IF(isensint(jsub+1)/=0)
THEN
1002 fsavparit(jsub+1,4,i) = fxt(i)
1003 fsavparit(jsub+1,5,i) = fyt(i)
1004 fsavparit(jsub+1,6,i) = fzt(i)
1007 fsavsub1(15,jsub)= fsavsub1(15,jsub)
1008 . +sqrt(impx*impx+impy*impy+impz*impz)
1022 ELSEIF(itypsub == 2 )
THEN
1028 fsavsub1(4,jsub)=fsavsub1(4,jsub)+impx
1029 fsavsub1(5,jsub)=fsavsub1(5,jsub)+impy
1030 fsavsub1(6,jsub)=fsavsub1(6,jsub)+impz
1035 fsavsub1(12,jsub)=fsavsub1(12,jsub)+abs(impx)
1036 fsavsub1(13,jsub)=fsavsub1(13,jsub)+abs(impy)
1037 fsavsub1(14,jsub)=fsavsub1(14,jsub)+abs(impz)
1039 IF(isensint(jsub+1)/=0)
THEN
1040 fsavparit(jsub+1,4,i) = fxt(i)
1041 fsavparit(jsub+1,5,i) = fyt(i)
1042 fsavparit(jsub+1,6,i) = fzt(i)
1045 fsavsub1(15,jsub)= fsavsub1(15,jsub)
1046 . +sqrt(impx*impx+impy*impy+impz*impz)
1051 ELSEIF(itypsub == 3 )
THEN
1053 iss2 = bitget(inflg_sube(jj),0)
1054 iss1 = bitget(inflg_sube(jj),1)
1056 DO WHILE((ksub<=jsub).AND.(kk<addsube(ie+1)))
1057 ims2 = bitget(inflg_subm(kk),0)
1058 ims1 = bitget(inflg_subm(kk),1)
1060 IF(.NOT.((ims1 == 1 .AND. iss2 == 1).OR.
1061 . (ims2 == 1 .AND. iss1 == 1)))
THEN
1072 fsavsub1(4,jsub)=fsavsub1(4,jsub)-impx
1073 fsavsub1(5,jsub)=fsavsub1(5,jsub)-impy
1074 fsavsub1(6,jsub)=fsavsub1(6,jsub)-impz
1077 fsavsub1(4,jsub)=fsavsub1(4,jsub)+impx
1078 fsavsub1(5,jsub)=fsavsub1(5,jsub)+impy
1079 fsavsub1(6,jsub)=fsavsub1(6,jsub)+impz
1086 fsavsub1(12,jsub)=fsavsub1(12,jsub)+abs(impx)
1087 fsavsub1(13,jsub)=fsavsub1(13,jsub)+abs(impy)
1088 fsavsub1(14,jsub)=fsavsub1(14,jsub)+abs(impz)
1090 IF(isensint(jsub+1)/=0)
THEN
1092 fsavparit(jsub+1,4,i) = -fxt(i)
1093 fsavparit(jsub+1,5,i) = -fyt(i)
1094 fsavparit(jsub+1,6,i) = -fzt(i)
1096 fsavparit(jsub+1,4,i) = fxt(i)
1097 fsavparit(jsub+1,5,i) = fyt(i)
1102 fsavsub1(15,jsub)= fsavsub1(15,jsub)
1103 . +sqrt(impx*impx+impy*impy+impz*impz)
1116 IF (msegtyp(cm_loc(i)) < 0)
THEN
1117 ie= - msegtyp(cm_loc(i))
1121 IF(ie > nrtm) ie=ie-nrtm
1124 DO WHILE(kk<addsube(ie+1))
1126 itypsub = typsub(ksub)
1127 IF(itypsub == 2 )
THEN
1133 fsavsub1(4,ksub)=fsavsub1(4,ksub)+impx
1134 fsavsub1(5,ksub)=fsavsub1(5,ksub)+impy
1135 fsavsub1(6,ksub)=fsavsub1(6,ksub)+impz
1140 fsavsub1(12,ksub)=fsavsub1(12,jsub)+abs(impx)
1141 fsavsub1(13,ksub)=fsavsub1(13,jsub)+abs(impy)
1142 fsavsub1(14,ksub)=fsavsub1(14,jsub)+abs(impz)
1144 IF(isensint(ksub+1)/=0)
THEN
1145 fsavparit(ksub+1,4,i) = -fxt(i)
1146 fsavparit(ksub+1,5,i) = -fyt(i)
1147 fsavparit(ksub+1,6,i) = -fzt(i)
1150 fsavsub1(15,ksub)= fsavsub1(15,ksub)
1151 . +sqrt(impx*impx+impy*impy+impz*impz)
1161 IF(pene(i) == zero)cycle
1166 IF (msegtyp(cm_loc(i)) < 0)
THEN
1167 ie= - msegtyp(cm_loc(i))
1171 IF(ie > nrtm) ie=ie-nrtm
1177 itypsub = typsub(jsub)
1179 IF(itypsub == 1 )
THEN
1184 DO WHILE((ksub<=jsub).AND.(kk<addsube(ie+1)))
1185 ims1 = bitget(inflg_subm(kk),0)
1186 ims2 = bitget(inflg_subm(kk),1)
1188 IF(.NOT.((ims1 == 1 .AND. iss2 == 1).OR.
1189 . (ims2 == 1 .AND. iss1 == 1)))
THEN
1198 fsavsub1(4,jsub)=fsavsub1(4,jsub)+impx
1199 fsavsub1(5,jsub)=fsavsub1(5,jsub)+impy
1200 fsavsub1(6,jsub)=fsavsub1(6,jsub)+impz
1205 fsavsub1(12,jsub)=fsavsub1(12,jsub)+abs(impx)
1206 fsavsub1(13,jsub)=fsavsub1(13,jsub)+abs(impy)
1207 fsavsub1(14,jsub)=fsavsub1(14,jsub)+abs(impz)
1209 IF(isensint(jsub+1)/=0)
THEN
1210 fsavparit(jsub+1,4,i) = fxt(i)
1211 fsavparit(jsub+1,5,i) = fyt(i)
1212 fsavparit(jsub+1,6,i) = fzt(i)
1215 fsavsub1(15,jsub)= fsavsub1(15,jsub)
1216 . +sqrt(impx*impx+impy*impy+impz*impz)
1231 ELSEIF(itypsub == 2 )
THEN
1237 fsavsub1(4,jsub)=fsavsub1(4,jsub)+impx
1238 fsavsub1(5,jsub)=fsavsub1(5,jsub)+impy
1239 fsavsub1(6,jsub)=fsavsub1(6,jsub)+impz
1244 fsavsub1(12,jsub)=fsavsub1(12,jsub)+abs(impx)
1245 fsavsub1(13,jsub)=fsavsub1(13,jsub)+abs(impy)
1246 fsavsub1(14,jsub)=fsavsub1(14,jsub)+abs(impz)
1248 IF(isensint(jsub+1)/=0)
THEN
1249 fsavparit(jsub+1,4,i) = fxt(i)
1250 fsavparit(jsub+1,5,i) = fyt(i)
1251 fsavparit(jsub+1,6,i) = fzt(i)
1254 fsavsub1(15,jsub)= fsavsub1(15,jsub)
1255 . +sqrt(impx*impx+impy*impy+impz*impz)
1260 ELSEIF(itypsub == 3 )
THEN
1265 DO WHILE((ksub<=jsub).AND.(kk<addsube(ie+1)))
1266 ims2 = bitget(inflg_subm(kk),0)
1267 ims1 = bitget(inflg_subm(kk),1)
1269 IF(.NOT.((ims1 == 1 .AND. iss2 == 1).OR.
1270 . (ims2 == 1 .AND. iss1 == 1)))
THEN
1281 fsavsub1(4,jsub)=fsavsub1(4,jsub)-impx
1282 fsavsub1(5,jsub)=fsavsub1(5,jsub)-impy
1283 fsavsub1(6,jsub)=fsavsub1(6,jsub)-impz
1286 fsavsub1(4,jsub)=fsavsub1(4,jsub)+impx
1287 fsavsub1(5,jsub)=fsavsub1(5,jsub)+impy
1288 fsavsub1(6,jsub)=fsavsub1(6,jsub)+impz
1294 fsavsub1(12,jsub)=fsavsub1(12,jsub)+abs(impx)
1295 fsavsub1(13,jsub)=fsavsub1(13,jsub)+abs(impy)
1296 fsavsub1(14,jsub)=fsavsub1(14,jsub)+abs(impz)
1298 IF(isensint(jsub+1)/=0)
THEN
1300 fsavparit(jsub+1,4,i) = -fxt(i)
1301 fsavparit(jsub+1,5,i) = -fyt(i)
1302 fsavparit(jsub+1,6,i) = -fzt(i)
1304 fsavparit(jsub+1,4,i) = fxt(i)
1305 fsavparit(jsub+1,5,i) = fyt(i)
1306 fsavparit(jsub+1,6,i) = fzt(i)
1310 fsavsub1(15,jsub)= fsavsub1(15,jsub)
1311 . +sqrt(impx*impx+impy*impy+impz*impz)
1325#include "lockon.inc"
1329 fsavsub(j,nsub)=fsavsub(j,nsub)+fsavsub1(j,jsub)
1331 fsavsub(22,nsub)=fsavsub(22,nsub)+fsavsub1(22,jsub)
1332 fsavsub(23,nsub)=fsavsub(23,nsub)+fsavsub1(23,jsub)
1333 fsavsub(24,nsub)=fsavsub(24,nsub)+fsavsub1(24,jsub)
1335#include "lockoff.inc"
1339#include "lockon.inc"
1340 econtv = econtv + econvt
1341 econt = econt + econtt
1342#include "lockoff.inc"
1347 IF(pene(i) == zero)cycle
1349 fx1(i)=-fxi(i)*hs1(i)
1350 fy1(i)=-fyi(i)*hs1(i)
1351 fz1(i)=-fzi(i)*hs1(i)
1353 fx2(i)=-fxi(i)*hs2(i)
1354 fy2(i)=-fyi(i)*hs2(i)
1355 fz2(i)=-fzi(i)*hs2(i)
1357 fx3(i)=fxi(i)*hm1(i)
1358 fy3(i)=fyi(i)*hm1(i)
1359 fz3(i)=fzi(i)*hm1(i)
1361 fx4(i)=fxi(i)*hm2(i)
1362 fy4(i)=fyi(i)*hm2(i)
1363 fz4(i)=fzi(i)*hm2(i)
1368 stif(i) = two*stif(i)
1372 IF(kdtint==1.OR.idtmins==2)
THEN
1374 . .AND.(ivis2==0.OR.ivis2==1))
THEN
1378 IF(ms1(i)==zero)
THEN
1382 k1(i)=kt(i)*abs(hs1(i))
1383 c1(i)=c(i)*abs(hs1(i))
1384 cx =four*c1(i)*c1(i)
1385 cy =eight*ms1(i)*k1(i)
1386 aux = sqrt(cx+cy)+two*c1(i)
1387 st1(i)= k1(i)*aux*aux/
max(cy,em30)
1388 cfi = cf(i)*abs(hs1(i))
1389 aux = two*cfi*cfi/
max(ms1(i),em20)
1396 IF(ms2(i)==zero)
THEN
1400 k2(i)=kt(i)*abs(hs2(i))
1401 c2(i)=c(i)*abs(hs2(i))
1402 cx =four*c2(i)*c2(i)
1403 cy =eight*ms2(i)*k2(i)
1404 aux = sqrt(cx+cy)+two*c2(i)
1405 st2(i)= k2(i)*aux*aux/
max(cy,em30)
1406 cfi = cf(i)*abs(hs2(i))
1407 aux = two*cfi*cfi/
max(ms2(i),em20)
1414 IF(mm1(i)==zero)
THEN
1418 k3(i)=kt(i)*abs(hm1(i))
1419 c3(i)=c(i)*abs(hm1(i))
1420 cx =four*c3(i)*c3(i)
1421 cy =eight*mm1(i)*k3(i)
1422 aux = sqrt(cx+cy)+two*c3(i)
1423 st3(i)= k3(i)*aux*aux/
max(cy,em30)
1424 cfi = cf(i)*abs(hm1(i))
1425 aux = two*cfi*cfi/
max(mm1(i),em20)
1432 IF(mm2(i)==zero)
THEN
1436 k4(i)=kt(i)*abs(hm2(i))
1437 c4(i)=c(i)*abs(hm2(i))
1438 cx =four*c4(i)*c4(i)
1439 cy =eight*mm2(i)*k4(i)
1440 aux = sqrt(cx+cy)+two*c4(i)
1441 st4(i)= k4(i)*aux*aux/
max(cy,em30)
1442 cfi = cf(i)*abs(hm2(i))
1443 aux = two*cfi*cfi/
max(mm2(i),em20)
1452 k1(i) =stif(i)*abs(hs1(i))
1454 k2(i) =stif(i)*abs(hs2(i))
1456 k3(i) =stif(i)*abs(hm1(i))
1458 k4(i) =stif(i)*abs(hm2(i))
1466 IF(nintloadp > 0)
THEN
1467 DO k = kloadpinter(nin)+1, kloadpinter(nin+1)
1469 ppl = loadp_hyd_inter(pp)
1470 dgapload = dgaploadint(k)
1472 IF(pene(i) > zero .OR.dist(i) <= dgapload)
THEN
1474 tagncont(ppl,m1(i)) = 1
1475 tagncont(ppl,m2(i)) = 1
1476 IF(cs_loc(i)<=nedge)
THEN
1478 tagncont(ppl,n1(i)) = 1
1479 tagncont(ppl,n2(i)) = 1
1493 2 m2 ,hs1 ,hs2 ,hm1 ,hm2 ,
1494 3 fx1 ,fy1 ,fz1 ,fx2 ,fy2 ,
1495 4 fz2 ,fx3 ,fy3 ,fz3 ,fx4 ,
1496 5 fy4 ,fz4 ,a ,stifn,stif ,
1497 6 nedge,nin ,jtask,pene )
1500 2 m2 ,hs1 ,hs2 ,hm1 ,hm2 ,
1501 3 fx1 ,fy1 ,fz1 ,fx2 ,fy2 ,
1502 4 fz2 ,fx3 ,fy3 ,fz3 ,fx4 ,
1503 5 fy4 ,fz4 ,a ,stifn,nedge,
1504 6 k1 ,k2 ,k3 ,k4 ,c1 ,
1505 7 c2 ,c3 ,c4 ,viscn,nin ,
1511 2 m2 ,hs1 ,hs2 ,hm1 ,hm2 ,
1512 3 fx1 ,fy1 ,fz1 ,fx2 ,fy2 ,
1513 4 fz2 ,fx3 ,fy3 ,fz3 ,fx4 ,
1514 5 fy4 ,fz4 ,fskyi ,isky ,niskyfie,
1515 6 stif ,nedge ,nin ,noint ,pene ,
1521 4 fz2 ,fx3 ,fy3 ,fz3 ,fx4 ,
1522 5 fy4 ,fz4 ,isky ,niskyfie,nedge ,
1523 6 k1 ,k2 ,k3 ,k4 ,c1 ,
1524 7 c2 ,c3 ,c4 ,nin , noint,
1532 2 m2 ,hs1 ,hs2 ,hm1 ,hm2 ,
1533 3 stif ,nin ,noint ,mskyi_sms ,iskyi_sms,
1534 4 nsms ,k1 ,k2 ,k3 ,k4 ,
1535 5 c1 ,c2 ,c3 ,c4 ,nedge , edge_id)
1540#include "mic_lockon.inc"
1543 assert(i <= 4*mvsiz)
1544 assert(cs_loc(i) > 0)
1545 printif(cs_loc(i) < 0,i)
1546 printif(cs_loc(i) < 0,cs_loc(i))
1547 IF(cs_loc(i)>nedge)
THEN
1548 ni = cs_loc(i)-nedge
1551 IF(pene(i) /= 0.OR.tagip(i)==1)
THEN
1556#include "mic_lockoff.inc"
1559 IF(anim_v(4)+outp_v(4)+h3d_data%N_VECT_CONT>0)
THEN
1560#include "lockon.inc"
1564 IF(pene(i) == zero)cycle
1566 IF(cs_loc(i)<=nedge)
THEN
1567 fcont(1,n1(i)) =fcont(1,n1(i)) + fx1(i
1568 fcont(2,n1(i)) =fcont(2,n1(i)) + fy1(i)
1569 fcont(3,n1(i)) =fcont(3,n1(i)) + fz1(i)
1570 fcont(1,n2(i)) =fcont(1,n2(i)) + fx2(i)
1571 fcont(2,n2(i)) =fcont(2,n2(i)) + fy2(i)
1572 fcont(3,n2(i)) =fcont(3,n2(i)) + fz2(i)
1574 fcont(1,m1(i)) =fcont(1,m1(i)) + fx3(i)
1575 fcont(2,m1(i)) =fcont(2,m1(i)) + fy3(i)
1576 fcont(3,m1(i)) =fcont(3,m1(i)) + fz3(i)
1577 fcont(1,m2(i)) =fcont(1,m2(i)) + fx4(i)
1578 fcont(2,m2(i)) =fcont(2,m2(i)) + fy4(i)
1579 fcont(3,m2(i)) =fcont(3,m2(i)) + fz4(i)
1582#include "lockoff.inc"
1588 IF(nstrf(1)+nstrf(2)/=0)
THEN
1590 nbinter=nstrf(k0+14)
1593 IF(nstrf(k1s)==noint)
THEN
1595#include "lockon.inc"
1598 IF(pene(k) == zero)cycle
1600 IF(cs_loc(k)<=nedge)
THEN
1601 IF(secfcum(4,n1(k),i)==1.)
THEN
1602 secfcum(1,n1(k),i)=secfcum(1,n1(k),i)-fx1(k)
1603 secfcum(2,n1(k),i)=secfcum(2,n1(k),i)-fy1(k)
1604 secfcum(3,n1(k),i)=secfcum(3,n1(k),i)-fz1(k)
1606 IF(secfcum(4,n2(k),i)==1.)
THEN
1607 secfcum(1,n2(k),i)=secfcum(1,n2(k),i)-fx2(k)
1608 secfcum(2,n2(k),i)=secfcum(2,n2(k),i)-fy2(k)
1609 secfcum(3,n2(k),i)=secfcum(3,n2(k),i)-fz2(k)
1612 IF(secfcum(4,m1(k),i)==1.)
THEN
1613 secfcum(1,m1(k),i)=secfcum(1,m1(k),i)-fx3(k)
1614 secfcum(2,m1(k),i)=secfcum(2,m1(k),i)-fy3(k)
1615 secfcum(3,m1(k),i)=secfcum(3,m1(k),i)-fz3(k)
1617 IF(secfcum(4,m2(k),i)==1.)
THEN
1618 secfcum(1,m2(k),i)=secfcum(1,m2(k),i)-fx4(k)
1619 secfcum(2,m2(k),i)=secfcum(2,m2(k),i)-fy4(k)
1620 secfcum(3,m2(k),i)=secfcum(3,m2(k),i)-fz4(k)
1623#include "lockoff.inc"