41 1 JLT ,A ,V ,IBC ,ICODT ,
42 2 FSAV ,GAP ,FRIC ,MS ,VISC ,
43 3 VISCF ,NOINT ,ITAB ,CS_LOC ,CM_LOC ,
44 4 STIGLO ,STIFN ,STIF ,FSKYI ,ISKY ,
45 5 FCONT ,DT2T ,IBM ,HS1 ,
46 6 HS2 ,HM1 ,HM2 ,N1 ,N2 ,
47 7 M1 ,M2 ,IVIS2 ,NELTST ,ITYPTST,
48 8 NX ,NY ,NZ ,GAPVE ,INACTI ,
49 9 INDEX ,CAND_P ,NISKYFIE,NEWFRONT,ISECIN ,
50 A NSTRF ,SECFCUM,VISCN ,NEDGE ,MS1 ,
51 B MS2 ,MM1 ,MM2 ,VXS1 ,VYS1 ,
52 C VZS1 ,VXS2 ,VYS2 ,VZS2 ,VXM1 ,
53 D VYM1 ,VZM1 ,VXM2 ,VYM2 ,VZM2 ,
54 E NIN ,NISUB ,LISUB ,ADDSUBE ,LISUBE ,
55 F INFLG_SUBE ,FSAVSUB,MSKYI_SMS,ISKYI_SMS,NSMS,
56 G JTASK ,ISENSINT, FSAVPARIT ,NFT ,H3D_DATA,
57 H ILEV ,EBINFLG ,EDGE_ID,FRICC ,IFQ ,
58 I CAND_FX ,CAND_FY,CAND_FZ ,IFPEN,
59 J TAGNCONT ,KLOADPINTER,LOADPINTER ,LOADP_HYD_INTER,
60 K TYPSUB ,STARTT ,NINLOADP ,DGAPLOADINT,S_LOADPINTER)
70#include "implicit_f.inc"
96 INTEGER NELTST,ITYPTST,JLT,IBC,IVIS2,INACTI,NEDGE,NISKYFIE,NIN,ILEV,
98 INTEGER ICODT(*), ITAB(*), ISKY(*),
99 . NOINT,NEWFRONT,ISECIN, NSTRF(*), ISKYI_SMS(*),
100 . NISUB, LISUB(*), ADDSUBE(*), LISUBE(*), INFLG_SUBE(*),
102 INTEGER N1(MVSIZ), N2(MVSIZ), M1(MVSIZ), M2(MVSIZ),
103 . CS_LOC(MVSIZ), CM_LOC(MVSIZ), NSMS(MVSIZ),JTASK,
104 . ISENSINT(*), NFT, (*), EBINFLG(*), IBM(*),IFPEN(*),
105 . TAGNCONT(NLOADP_HYD_INTER,NUMNOD)
106 INTEGER :: EDGE_ID(2,MVSIZ)
107 INTEGER ,
INTENT(IN) :: NINLOADP,S_LOADPINTER
108 INTEGER ,
INTENT(IN) :: KLOADPINTER(NINTER+1),LOADPINTER(S_LOADPINTER),
109 . LOADP_HYD_INTER(NLOADP_HYD)
112 . (3,*), MS(*), V(3,*), FSAV(*),(3,*),
113 . STIFN(*),FSKYI(LSKYI,NFSKYI),FSAVSUB(NTHVKI,*),
114 . MSKYI_SMS(*), GAPVE(*), CAND_P(*),
115 . GAP,FRIC,VISC,VISCF,VIS,DT2T, STARTT
117 . hs1(mvsiz), hs2(mvsiz), hm1(mvsiz), hm2(mvsiz),
118 . nx(mvsiz), ny(mvsiz), nz(mvsiz), stif(mvsiz),
119 . secfcum(7,numnod,nsect), viscn(*),
120 . ms1(mvsiz),ms2(mvsiz),mm1(mvsiz),mm2(mvsiz),
121 . vxs1(mvsiz),vys1(mvsiz),vzs1(mvsiz),vxs2(mvsiz),vys2(mvsiz),
122 . vzs2(mvsiz),vxm1(mvsiz),vym1(mvsiz),vzm1(mvsiz),vxm2(mvsiz),
123 . vym2(mvsiz),vzm2(mvsiz),fsavparit(nisub+1,11,*),fricc(mvsiz),
124 . cand_fx(*),cand_fy(*),cand_fz(*)
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(MVSIZ), VY(MVSIZ), VZ(MVSIZ), VN(MVSIZ),
136 . fxi(mvsiz), fyi(mvsiz), fzi(mvsiz), fni(mvsiz),
137 . fx1(mvsiz), fx2(mvsiz), fx3(mvsiz), fx4(mvsiz),
138 . fy1(mvsiz), fy2(mvsiz), fy3(mvsiz), fy4(mvsiz),
139 . fz1(mvsiz), fz2(mvsiz), fz3(mvsiz), fz4
140 . fxt(mvsiz), fyt(mvsiz), fzt(mvsiz),
141 . pene(mvsiz),dist(mvsiz),
146 . econtt, econvt,masm,
147 . fsav1, fsav2, fsav3, fsav4, fsav5
148 . fsav9, fsav10, fsav11, fsav12, fsav13, fsav14, fsav15,
150 . fsavsub1(24,nisub), impx, impy, impz,ftn ,fn , ft,beta
154 . st1(mvsiz),st2(mvsiz),st3(mvsiz),st4(mvsiz),stif0(mvsiz),
155 . kt(mvsiz),c(mvsiz),cf(mvsiz),
156 . k1(mvsiz),k2(mvsiz),k3(mvsiz),k4(mvsiz),
157 . c1(mvsiz),c2(mvsiz),c3(mvsiz),c4(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)
187 s2 = one/
max(em30,s2)
195 debug_e2e(edge_id(1,i)==d_em.AND.edge_id(2,i)==d_es,cand_p(index(i)))
196 IF(cand_p(index(i))==zero)cand_p(index(i))=pene(i)
202 IF(cand_p(index(i))<zero)
THEN
204 cand_p(index(i))=pene(i)
206 cand_p(index(i))=-cand_p(index(i))
210 IF(pene(i)/=cand_p(index(i)))
211 . cand_p(index(i))=
min(cand_p(index(i)),
212 . ((one-fiveem2)*cand_p(index(i))+fiveem2*pene(i)) )
213 pene(i)=
max(zero,pene(i)-cand_p(index(i)))
214 IF( pene(i)==zero ) stif(i) = zero
218 IF(cand_p(index(i)) < zero)
THEN
221 cand_p(index(i)) = -cand_p(index(i))
222 IF(pene(i)/=cand_p(index(i)))
223 . cand_p(index(i)) =
min(cand_p(index(i)),
224 . ((one-fiveem2)*cand_p(index(i))+fiveem2*pene(i)) )
225 cand_p(index(i)) = -cand_p(index(i))
226 IF( pene(i)==zero ) stif(i) = zero
231 IF(pene(i)/=cand_p(index(i)))
232 . cand_p(index(i))=
min(cand_p(index(i)),
233 . ((one-fiveem2)*cand_p(index(i))+fiveem2*pene
235 pene(i)=
max(zero,pene(i)-cand_p(index(i)))
236 IF( pene(i)==zero ) stif(i) = zero
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(i)
253 stif(i)= half*stif(i)
254 fni(i) = -stif(i) * pene(i)
255 econvt = econvt+fni(i)*vn(i)*dt1
262 IF(kdtint==0.AND.(idtmins/=2.AND.idtmins_int==0))
THEN
264 fac = stif(i) /
max(em30,stif(i))
269 vis2(i) = two * stif(i) *
min(mas2,masm)
271 ff = fac * visc * vis
272 stif(i) = stif0(i) + ff * dt1inv
273 stif(i) =
max(stif(i) ,fac*sqrt(viscf)*vis*dt1inv)
275 econvt = econvt + ff * vn(i) * dt1
281 fac = stif(i) /
max(em30,stif(i))
286 vis2(i) = two * stif(i) *
min(mas2,masm)
288 c(i)= fac * visc * vis
290 stif(i) = stif(i) + c(i) * dt1inv
292 econvt = econvt + ff * vn(i) * dt1
294 cf(i) = fac*sqrt(viscf)*vis
295 stif(i) =
max(stif(i) ,cf(i)*dt1inv)
300 IF(kdtint==0.AND.(idtmins/=2.AND.idtmins_int==0))
THEN
307 vis2(i) = two* stif(i) * masm * mas2 /
308 .
max(em30,masm+mas2)
310 ff = fac * visc * vis
311 stif(i) = stif0(i) + ff * dt1inv
312 stif(i) =
max(stif(i) ,fac*sqrt(viscf)*vis*dt1inv)
314 econvt = econvt + ff * vn(i) * dt1
320 fac = stif(i) /
max(em30,stif(i))
325 vis2(i) = two* stif(i) * masm * mas2 /
326 .
max(em30,masm+mas2)
328 c(i)= fac * visc * vis
330 stif(i) = stif(i) + c(i) * dt1inv
332 econvt = econvt + ff * vn(i) * dt1
334 cf(i) = fac*sqrt(viscf)*vis
335 stif(i) =
max(stif(i) ,cf(i)*dt1inv)
344 fac = stif(i) /
max(em30,stif(i))
349 vis2(i) = two * stif(i) *
min(mas2,masm)
351 ff = fac * visc * vis
352 stif(i) = stif0(i) + two * ff * dt1inv
353 stif(i) =
max(stif(i) ,fac*sqrt(viscf)*vis*dt1inv)
355 econvt = econvt + ff * vn(i) * dt1
363 fac = stif(i) /
max(em30,stif(i))
368 vis2(i) = two * stif(i) *
min(mas2,masm)
370 ff = fac * visc * vis
371 stif(i) = stif0(i) + two* ff * dt1inv
372 stif(i) =
max(stif(i) ,fac*sqrt(viscf)*vis*dt1inv)
374 econvt = econvt + ff * vn(i) * dt1
382 fac = stif(i) /
max(em30,stif(i))
387 vis2(i) = two * stif(i) *
min
389 stif(i) =
max(stif(i) ,fac*sqrt(viscf)*vis*dt1inv)
398 fac = stif(i) /
max(em30,stif(i))
403 vis2(i) = two* stif(i) * masm * mas2 /
404 .
max(em30,masm+mas2)
405 vis = 2. * visc * dt1inv * masm * mas2 /
406 .
max(em30,masm+mas2)
407 stif(i) =
max(stif0(i) ,fac*sqrt(viscf*vis2(i))*dt1inv)
409 econvt = econvt + ff * vn(i) * dt1
410 fni(i) =
min(fni(i),ff)
428 IF(pene(i)==zero) cycle
430 ims2 = bitget(ebinflg(ie),1)
441 fsav11=fsav11-fni(i)*dt12
446 fsav11=fsav11+fni(i)*dt12
448 fsav8 =fsav8 +abs(impx)
449 fsav9 =fsav9 +abs(impy)
450 fsav10=fsav10+abs(impz)
451 IF(isensint(1)/=0)
THEN
453 fsavparit(1,1,i) = -fxi(i)
454 fsavparit(1,2,i) = -fyi(i)
457 fsavparit(1,1,i) = fxi(i)
458 fsavparit(1,2,i) = fyi(i)
459 fsavparit(1,3,i) = fzi(i)
465 IF(pene(i)==zero) cycle
475 fsav8 =fsav8 +abs(impx)
476 fsav9 =fsav9 +abs(impy)
477 fsav10=fsav10+abs(impz)
478 fsav11=fsav11+fni(i)*dt12
479 IF(isensint(1)/=0)
THEN
480 fsavparit(1,1,i) = fxi(i)
481 fsavparit(1,2,i) = fyi(i)
482 fsavparit(1,3,i) = fzi(i)
488 fsav(1)=fsav(1)+fsav1
489 fsav(2)=fsav(2)+fsav2
490 fsav(3)=fsav(3)+fsav3
491 fsav(8)=fsav(8)+fsav8
492 fsav(9)=fsav(9)+fsav9
493 fsav(10)=fsav(10)+fsav10
494 fsav(11)=fsav(11)+fsav11
495#include "lockoff.inc"
503 fsavsub1(j,jsub)=zero
508 IF(pene(i) == zero)cycle
517 DO WHILE(jj<addsube(il+1))
519 itypsub = typsub(jsub)
520 IF(itypsub == 1 )
THEN
521 iss1 = bitget(inflg_sube(jj),0)
522 iss2 = bitget(inflg_sube(jj),1)
523 IF(kk<addsube(ie+1))
THEN
525 DO WHILE((ksub<=jsub).AND.(kk<addsube(ie+1)))
526 ims1 = bitget(inflg_sube(kk),0)
527 ims2 = bitget(inflg_sube(kk),1)
529 IF(.NOT.((ims1 == 1 .AND. iss2 == 1).OR.
530 . (ims2 == 1 .AND. iss1 == 1)))
THEN
532 IF(kk<addsube(ie+1)) ksub=lisube(kk)
540 fsavsub1(1,jsub)=fsavsub1(1,jsub)-impx
541 fsavsub1(2,jsub)=fsavsub1(2,jsub)-impy
542 fsavsub1(3,jsub)=fsavsub1(3,jsub)-impz
543 fsavsub1(11,jsub)=fsavsub1(11,jsub)-fni(i)*dt12
545 fsavsub1(1,jsub)=fsavsub1(1,jsub)+impx
546 fsavsub1(2,jsub)=fsavsub1(2,jsub)+impy
547 fsavsub1(3,jsub)=fsavsub1(3,jsub)+impz
548 fsavsub1(11,jsub)=fsavsub1(11,jsub)+fni(i)*dt12
551 IF(isensint(jsub+1)/=0)
THEN
553 fsavparit(jsub+1,1,i) = -fxi(i)
554 fsavparit(jsub+1,2,i) = -fyi(i)
555 fsavparit(jsub+1,3,i) = -fzi(i)
557 fsavparit(jsub+1,1,i) = fxi(i)
558 fsavparit(jsub+1,2,i) = fyi(i)
559 fsavparit(jsub+1,3,i) = fzi(i)
563 fsavsub1(8,jsub) =fsavsub1(8,jsub) +abs(impx)
564 fsavsub1(9,jsub) =fsavsub1(9,jsub) +abs(impy)
565 fsavsub1(10,jsub)=fsavsub1(10,jsub)+abs(impz)
574 ELSEIF(itypsub == 2 )
THEN
581 fsavsub1(1,jsub)=fsavsub1(1,jsub)+impx
582 fsavsub1(2,jsub)=fsavsub1(2,jsub)+impy
583 fsavsub1(3,jsub)=fsavsub1(3,jsub)+impz
585 fsavsub1(8,jsub) =fsavsub1(8,jsub) +abs(impx)
586 fsavsub1(9,jsub) =fsavsub1(9,jsub) +abs(impy)
587 fsavsub1(10,jsub)=fsavsub1(10,jsub)+abs(impz)
589 fsavsub1(11,jsub)=fsavsub1(11,jsub)+fni(i)*dt12
591 IF(isensint(jsub+1)/=0)
THEN
592 fsavparit(jsub+1,1,i) = fxi(i)
593 fsavparit(jsub+1,2,i) = fyi(i)
594 fsavparit(jsub+1,3,i) = fzi(i)
599 ELSEIF(itypsub == 3 )
THEN
601 iss2 = bitget(inflg_sube(jj),0)
602 iss1 = bitget(inflg_sube(jj),1)
603 IF(kk<addsube(ie+1))
THEN
605 DO WHILE((ksub<=jsub).AND.(kk<addsube(ie+1)))
606 ims2 = bitget(inflg_sube(kk),0)
607 ims1 = bitget(inflg_sube(kk),1)
609 IF(.NOT.((ims1 == 1 .AND. iss2 == 1).OR.
610 . (ims2 == 1 .AND. iss1 == 1)))
THEN
612 IF(kk<addsube(ie+1)) ksub=lisube(kk)
617 fsavsub1(1,jsub)=fsavsub1(1,jsub)-impx
618 fsavsub1(2,jsub)=fsavsub1(2,jsub)-impy
619 fsavsub1(3,jsub)=fsavsub1(3,jsub)-impz
620 fsavsub1(11,jsub)=fsavsub1(11,jsub)-fni(i)*dt12
622 fsavsub1(1,jsub)=fsavsub1(1,jsub)+impx
623 fsavsub1(2,jsub)=fsavsub1(2,jsub)+impy
624 fsavsub1(3,jsub)=fsavsub1(3,jsub)+impz
625 fsavsub1(11,jsub)=fsavsub1(11,jsub)+fni(i)*dt12
628 fsavsub1(8,jsub) =fsavsub1(8,jsub) +abs(impx)
629 fsavsub1(9,jsub) =fsavsub1(9,jsub) +abs(impy)
630 fsavsub1(10,jsub)=fsavsub1(10,jsub)+abs(impz)
632 IF(isensint(jsub+1)/=0)
THEN
634 fsavparit(jsub+1,1,i) = -fxi(i)
636 fsavparit(jsub+1,3,i) = -fzi(i)
638 fsavparit(jsub+1,1,i) = fxi(i)
639 fsavparit(jsub+1,2,i) = fyi(i)
640 fsavparit(jsub+1,3,i) = fzi(i)
658 DO WHILE(kk<addsube(ie+1))
660 itypsub = typsub(ksub)
661 IF(itypsub == 2 )
THEN
667 fsavsub1(1,ksub)=fsavsub1(1,ksub)+impx
668 fsavsub1(2,ksub)=fsavsub1(2,ksub)+impy
669 fsavsub1(3,ksub)=fsavsub1(3,ksub)+impz
671 fsavsub1(8,ksub) =fsavsub1(8,ksub) +abs(impx)
672 fsavsub1(9,ksub) =fsavsub1(9,ksub) +abs(impy)
673 fsavsub1(10,ksub)=fsavsub1(10,ksub)+abs(impz)
675 fsavsub1(11,ksub)=fsavsub1(11,ksub)-fni(i)*dt12
677 IF(isensint(ksub+1)/=0)
THEN
678 fsavparit(ksub+1,1,i) = -fxi(i)
679 fsavparit(ksub+1,2,i) = -fyi(i)
680 fsavparit(ksub+1,3,i) = -fzi(i)
693 s_addsubfie = s_addsubfie +
nsnfie(nin)%P(p)
694 s_lisubsfie = s_lisubsfie +
nisubsfie(nin)%P(p)
698 IF(pene(i) == zero)cycle
710 assert(il <= s_addsubfie)
719 assert(jj <= s_lisubsfie)
721 itypsub = typsub(jsub)
722 IF(itypsub == 1 )
THEN
723 assert(jsub <= nisub)
726 IF(kk<addsube(ie+1))
THEN
728 DO WHILE((ksub<=jsub).AND.(kk<addsube(ie+1)))
729 assert(ksub <= nisub)
730 ims1 = bitget(inflg_sube(kk),0)
731 ims2 = bitget(inflg_sube(kk),1)
733 IF(.NOT.((ims1 == 1 .AND. iss2 == 1).OR.
734 . (ims2 == 1 .AND. iss1 == 1)))
THEN
736 IF(kk<addsube(ie+1)) ksub=lisube(kk)
744 fsavsub1(1,jsub)=fsavsub1(1,jsub)-impx
745 fsavsub1(2,jsub)=fsavsub1(2,jsub)-impy
746 fsavsub1(3,jsub)=fsavsub1(3,jsub)-impz
747 fsavsub1(11,jsub)=fsavsub1(11,jsub)-fni(i)*dt12
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
755 IF(isensint(jsub+1)/=0)
THEN
757 fsavparit(jsub+1,1,i) = -fxi(i)
758 fsavparit(jsub+1,2,i) = -fyi(i)
759 fsavparit(jsub+1,3,i) = -fzi(i)
761 fsavparit(jsub+1,1,i) = fxi(i)
762 fsavparit(jsub+1,2,i) = fyi(i)
763 fsavparit(jsub+1,3,i) = fzi(i)
767 fsavsub1(8,jsub) =fsavsub1(8,jsub) +abs(impx)
768 fsavsub1(9,jsub) =fsavsub1(9,jsub) +abs(impy)
769 fsavsub1(10,jsub)=fsavsub1(10,jsub)+abs(impz)
773 IF(kk<addsube(ie+1)) ksub=lisube(kk)
778 ELSEIF(itypsub == 2 )
THEN
785 fsavsub1(1,jsub)=fsavsub1(1,jsub)+impx
786 fsavsub1(2,jsub)=fsavsub1(2,jsub)+impy
787 fsavsub1(3,jsub)=fsavsub1(3,jsub)+impz
789 fsavsub1(8,jsub) =fsavsub1(8,jsub) +abs(impx)
790 fsavsub1(9,jsub) =fsavsub1(9,jsub) +abs(impy)
791 fsavsub1(10,jsub)=fsavsub1(10,jsub)+abs(impz)
793 fsavsub1(11,jsub)=fsavsub1(11,jsub)+fni(i)*dt12
795 IF(isensint(jsub+1)/=0)
THEN
796 fsavparit(jsub+1,1,i) = fxi(i)
797 fsavparit(jsub+1,2,i) = fyi(i)
798 fsavparit(jsub+1,3,i) = fzi(i)
803 ELSEIF(itypsub == 3 )
THEN
807 IF(kk<addsube(ie+1))
THEN
809 DO WHILE((ksub<=jsub).AND.(kk<addsube(ie+1)))
810 ims2 = bitget(inflg_sube(kk),0)
811 ims1 = bitget(inflg_sube(kk),1)
813 IF(.NOT.((ims1 == 1 .AND. iss2 == 1).OR.
814 . (ims2 == 1 .AND. iss1 == 1)))
THEN
816 IF(kk<addsube(ie+1)) ksub=lisube(kk)
825 fsavsub1(1,jsub)=fsavsub1(1,jsub)-impx
826 fsavsub1(2,jsub)=fsavsub1(2,jsub)-impy
827 fsavsub1(3,jsub)=fsavsub1(3,jsub)-impz
828 fsavsub1(11,jsub)=fsavsub1(11,jsub)-fni(i)*dt12
830 fsavsub1(1,jsub)=fsavsub1(1,jsub)+impx
831 fsavsub1(2,jsub)=fsavsub1(2,jsub)+impy
832 fsavsub1(3,jsub)=fsavsub1(3,jsub)+impz
833 fsavsub1(11,jsub)=fsavsub1(11,jsub)+fni(i)*dt12
836 fsavsub1(8,jsub) =fsavsub1(8,jsub) +abs(impx)
837 fsavsub1(9,jsub) =fsavsub1(9,jsub) +abs(impy)
838 fsavsub1(10,jsub)=fsavsub1(10,jsub)+abs(impz)
843 IF(kk<addsube(ie+1)) ksub=lisube(kk)
873 IF(pene(i) == zero)cycle
875 fx = stif0(i)*vx(i)*dt12
876 fy = stif0(i)*vy(i)*dt12
877 fz = stif0(i)*vz(i)*dt12
879 fx = cand_fx(index(i)) + fx
880 fy = cand_fy(index(i)) + fy
881 fz = cand_fz(index(i)) + fz
883 ftn = fx*nx(i) + fy*ny(i) + fz*nz(i)
887 ft = fx*fx + fy*fy + fz*fz
890 fn = fxi(i)**2+fyi(i)**2+fzi(i)**2
891 beta =
min(one,fricc(i)*sqrt(fn/ft))
896 cand_fx(index(i)) = fxt(i)
897 cand_fy(index(i)) = fyt(i)
898 cand_fz(index(i)) = fzt(i)
902 fxi(i)=fxi(i) + fxt(i)
903 fyi(i)=fyi(i) + fyt(i)
904 fzi(i)=fzi(i) + fzt(i)
906 fsav4 = fsav4 + fxt(i)*dt12
907 fsav5 = fsav5 + fyt(i)*dt12
908 fsav6 = fsav6 + fzt(i)*dt12
910 fsav12 = fsav12 + abs(fxi(i)*dt12)
911 fsav13 = fsav13 + abs(fyi(i)*dt12)
912 fsav14 = fsav14 + abs(fzi(i)*dt12)
913 fsav15 = fsav15 + sqrt(fxi(i)*fxi(i)+fyi(i)*fyi(i)+fzi(i)*fzi(i))*dt12
915 . + dt1*(vx(i)*fxt(i)+vy(i)*fyt(i)+vz(i)*fzt(i))
922 fsav(4) = fsav(4) + fsav4
923 fsav(5) = fsav(5) + fsav5
924 fsav(6) = fsav(6) + fsav6
925 fsav(12) = fsav(12) + fsav12
926 fsav(13) = fsav(13) + fsav13
927 fsav(14) = fsav(14) + fsav14
928 fsav(15) = fsav(15) + fsav15
929#include "lockoff.inc"
941 IF(pene(i) == zero)cycle
950 DO WHILE(jj<addsube(il+1))
952 itypsub = typsub(jsub)
954 IF(itypsub == 1 )
THEN
955 iss1 = bitget(inflg_sube(jj),0)
956 iss2 = bitget(inflg_sube(jj),1)
957 IF(kk<addsube(ie+1))
THEN
959 DO WHILE((ksub<=jsub).AND.(kk<addsube(ie+1)))
960 ims1 = bitget(inflg_sube(kk),0)
961 ims2 = bitget(inflg_sube(kk),1)
963 IF(.NOT.((ims1 == 1 .AND. iss2 == 1).OR.
964 . (ims2 == 1 .AND. iss1 == 1)))
THEN
966 IF(kk<addsube(ie+1)) ksub=lisube(kk)
973 fsavsub1(4,jsub)=fsavsub1(4,jsub)+impx
974 fsavsub1(5,jsub)=fsavsub1(5,jsub)+impy
975 fsavsub1(6,jsub)=fsavsub1(6,jsub)+impz
980 fsavsub1(12,jsub)=fsavsub1(12,jsub)+abs(impx)
981 fsavsub1(13,jsub)=fsavsub1(13,jsub)+abs(impy)
982 fsavsub1(14,jsub)=fsavsub1(14,jsub)+abs(impz)
984 IF(isensint(jsub+1)/=0)
THEN
985 fsavparit(jsub+1,4,i) = fxt(i)
986 fsavparit(jsub+1,5,i) = fyt(i)
987 fsavparit(jsub+1,6,i) = fzt(i)
990 fsavsub1(15,jsub)= fsavsub1(15,jsub)
991 . +sqrt(impx*impx+impy*impy+impz*impz)
996 IF(kk<addsube(ie+1)) ksub=lisube(kk)
1002 ELSEIF(itypsub == 2 )
THEN
1008 fsavsub1(4,jsub)=fsavsub1(4,jsub)+impx
1009 fsavsub1(5,jsub)=fsavsub1(5,jsub)+impy
1010 fsavsub1(6,jsub)=fsavsub1(6,jsub)+impz
1015 fsavsub1(12,jsub)=fsavsub1(12,jsub)+abs(impx)
1016 fsavsub1(13,jsub)=fsavsub1(13,jsub)+abs(impy)
1017 fsavsub1(14,jsub)=fsavsub1(14,jsub)+abs(impz)
1019 IF(isensint(jsub+1)/=0)
THEN
1020 fsavparit(jsub+1,4,i) = fxt(i)
1021 fsavparit(jsub+1,5,i) = fyt(i)
1022 fsavparit(jsub+1,6,i) = fzt(i)
1025 fsavsub1(15,jsub)= fsavsub1(15,jsub)
1026 . +sqrt(impx*impx+impy*impy+impz*impz)
1031 ELSEIF(itypsub == 3 )
THEN
1033 iss2 = bitget(inflg_sube(jj),0)
1034 iss1 = bitget(inflg_sube(jj),1)
1035 IF(kk<addsube(ie+1))
THEN
1037 DO WHILE((ksub<=jsub).AND.(kk<addsube(ie+1)))
1038 ims2 = bitget(inflg_sube(kk),0)
1039 ims1 = bitget(inflg_sube(kk),1)
1041 IF(.NOT.((ims1 == 1 .AND. iss2 == 1).OR.
1042 . (ims2 == 1 .AND. iss1 == 1)))
THEN
1044 IF(kk<addsube(ie+1)) ksub=lisube(kk)
1053 fsavsub1(4,jsub)=fsavsub1(4,jsub)-impx
1054 fsavsub1(5,jsub)=fsavsub1(5,jsub)-impy
1055 fsavsub1(6,jsub)=fsavsub1(6,jsub)-impz
1058 fsavsub1(4,jsub)=fsavsub1(4,jsub)+impx
1059 fsavsub1(5,jsub)=fsavsub1(5,jsub)+impy
1060 fsavsub1(6,jsub)=fsavsub1(6,jsub)+impz
1066 fsavsub1(12,jsub)=fsavsub1(12,jsub)+abs(impx)
1067 fsavsub1(13,jsub)=fsavsub1(13,jsub)+abs(impy)
1068 fsavsub1(14,jsub)=fsavsub1(14,jsub)+abs(impz)
1070 IF(isensint(jsub+1)/=0)
THEN
1072 fsavparit(jsub+1,4,i) = -fxt(i)
1073 fsavparit(jsub+1,5,i) = -fyt(i)
1074 fsavparit(jsub+1,6,i) = -fzt(i)
1076 fsavparit(jsub+1,4,i) = fxt(i)
1077 fsavparit(jsub+1,5,i) = fyt(i)
1078 fsavparit(jsub+1,6,i) = fzt(i)
1082 fsavsub1(15,jsub)= fsavsub1(15,jsub)
1083 . +sqrt(impx*impx+impy*impy+impz*impz)
1087 IF(kk<addsube(ie+1))ksub=lisube(kk)
1099 DO WHILE(kk<addsube(ie+1))
1101 itypsub = typsub(ksub)
1102 IF(itypsub == 2 )
THEN
1108 fsavsub1(4,ksub)=fsavsub1(4,ksub)+impx
1109 fsavsub1(5,ksub)=fsavsub1(5,ksub)+impy
1110 fsavsub1(6,ksub)=fsavsub1(6,ksub)+impz
1115 fsavsub1(12,ksub)=fsavsub1(12,jsub)+abs(impx)
1116 fsavsub1(13,ksub)=fsavsub1(13,jsub)+abs(impy)
1117 fsavsub1(14,ksub)=fsavsub1(14,jsub)+abs(impz)
1119 IF(isensint(ksub+1)/=0)
THEN
1120 fsavparit(ksub+1,4,i) = -fxt(i)
1121 fsavparit(ksub+1,5,i) = -fyt(i)
1122 fsavparit(ksub+1,6,i) = -fzt(i)
1125 fsavsub1(15,ksub)= fsavsub1(15,ksub)
1126 . +sqrt(impx*impx+impy*impy+impz*impz)
1135 IF(pene(i) == zero)cycle
1147 itypsub = typsub(jsub)
1149 IF(itypsub == 1 )
THEN
1152 IF(kk<addsube(ie+1))
THEN
1154 DO WHILE((ksub<=jsub).AND.(kk<addsube(ie+1)))
1155 ims1 = bitget(inflg_sube(kk),0)
1156 ims2 = bitget(inflg_sube(kk),1)
1158 IF(.NOT.((ims1 == 1 .AND. iss2 == 1).OR.
1159 . (ims2 == 1 .AND. iss1 == 1)))
THEN
1161 IF(kk<addsube(ie+1)) ksub=lisube(kk)
1168 fsavsub1(4,jsub)=fsavsub1(4,jsub)+impx
1169 fsavsub1(5,jsub)=fsavsub1(5,jsub)+impy
1170 fsavsub1(6,jsub)=fsavsub1(6,jsub)+impz
1175 fsavsub1(12,jsub)=fsavsub1(12,jsub)+abs(impx)
1176 fsavsub1(13,jsub)=fsavsub1(13,jsub)+abs(impy)
1177 fsavsub1(14,jsub)=fsavsub1(14,jsub)+abs(impz)
1179 IF(isensint(jsub+1)/=0)
THEN
1180 fsavparit(jsub+1,4,i) = fxt(i)
1181 fsavparit(jsub+1,5,i) = fyt(i)
1182 fsavparit(jsub+1,6,i) = fzt(i)
1185 fsavsub1(15,jsub)= fsavsub1(15,jsub)
1186 . +sqrt(impx*impx+impy*impy+impz*impz)
1191 IF(kk<addsube(ie+1)) ksub=lisube(kk)
1198 ELSEIF(itypsub == 2 )
THEN
1204 fsavsub1(4,jsub)=fsavsub1(4,jsub)+impx
1205 fsavsub1(5,jsub)=fsavsub1(5,jsub)+impy
1206 fsavsub1(6,jsub)=fsavsub1(6,jsub)+impz
1211 fsavsub1(12,jsub)=fsavsub1(12,jsub)+abs(impx)
1212 fsavsub1(13,jsub)=fsavsub1(13,jsub)+abs(impy)
1213 fsavsub1(14,jsub)=fsavsub1(14,jsub)+abs(impz)
1215 IF(isensint(jsub+1)/=0)
THEN
1216 fsavparit(jsub+1,4,i) = fxt(i)
1217 fsavparit(jsub+1,5,i) = fyt(i)
1218 fsavparit(jsub+1,6,i) = fzt(i)
1221 fsavsub1(15,jsub)= fsavsub1(15,jsub)
1222 . +sqrt(impx*impx+impy*impy+impz*impz)
1227 ELSEIF(itypsub == 3 )
THEN
1231 IF(kk<addsube(ie+1))
THEN
1233 DO WHILE((ksub<=jsub).AND.(kk<addsube(ie+1)))
1234 ims2 = bitget(inflg_sube(kk),0)
1235 ims1 = bitget(inflg_sube(kk),1)
1237 IF(.NOT.((ims1 == 1 .AND. iss2 == 1).OR.
1238 . (ims2 == 1 .AND. iss1 == 1)))
THEN
1240 IF(kk<addsube(ie+1)) ksub=lisube(kk)
1249 fsavsub1(4,jsub)=fsavsub1(4,jsub)-impx
1250 fsavsub1(5,jsub)=fsavsub1(5,jsub)-impy
1251 fsavsub1(6,jsub)=fsavsub1(6,jsub)-impz
1254 fsavsub1(4,jsub)=fsavsub1(4,jsub)+impx
1255 fsavsub1(5,jsub)=fsavsub1(5,jsub)+impy
1256 fsavsub1(6,jsub)=fsavsub1(6,jsub)+impz
1262 fsavsub1(12,jsub)=fsavsub1(12,jsub)+abs(impx)
1263 fsavsub1(13,jsub)=fsavsub1(13,jsub)+abs(impy)
1264 fsavsub1(14,jsub)=fsavsub1(14,jsub)+abs(impz)
1266 IF(isensint(jsub+1)/=0)
THEN
1268 fsavparit(jsub+1,4,i) = -fxt(i)
1269 fsavparit(jsub+1,5,i) = -fyt(i)
1270 fsavparit(jsub+1,6,i) = -fzt(i)
1272 fsavparit(jsub+1,4,i) =
1273 fsavparit(jsub+1,5,i) = fyt(i)
1274 fsavparit(jsub+1,6,i) = fzt(i)
1278 fsavsub1(15,jsub)= fsavsub1(15,jsub)
1279 . +sqrt(impx*impx+impy*impy+impz*impz)
1284 IF(kk<addsube(ie+1)) ksub=lisube(kk)
1297#include "lockon.inc"
1301 fsavsub(j,nsub)=fsavsub(j,nsub)+fsavsub1(j,jsub)
1303 fsavsub(22,nsub)=fsavsub(22,nsub)+fsavsub1(22,jsub)
1304 fsavsub(23,nsub)=fsavsub(23,nsub)+fsavsub1(23,jsub)
1305 fsavsub(24,nsub)=fsavsub(24,nsub)+fsavsub1(24,jsub)
1307#include "lockoff.inc"
1311#include "lockon.inc"
1312 econtv = econtv + econvt
1313 econt = econt + econtt
1314#include "lockoff.inc"
1319 IF(pene(i) == zero)cycle
1321 fx1(i)=-fxi(i)*hs1(i)
1322 fy1(i)=-fyi(i)*hs1(i)
1323 fz1(i)=-fzi(i)*hs1(i)
1325 fx2(i)=-fxi(i)*hs2(i)
1326 fy2(i)=-fyi(i)*hs2(i)
1327 fz2(i)=-fzi(i)*hs2(i)
1329 fx3(i)=fxi(i)*hm1(i)
1330 fy3(i)=fyi(i)*hm1(i)
1331 fz3(i)=fzi(i)*hm1(i)
1333 fx4(i)=fxi(i)*hm2(i)
1334 fy4(i)=fyi(i)*hm2(i)
1335 fz4(i)=fzi(i)*hm2(i)
1340 stif(i) = two*stif(i)
1344 IF(kdtint==1.OR.idtmins==2)
THEN
1346 . .AND.(ivis2==0.OR.ivis2==1))
THEN
1350 IF(ms1(i)==zero)
THEN
1354 k1(i)=kt(i)*abs(hs1(i))
1355 c1(i)=c(i)*abs(hs1(i))
1356 cx =four*c1(i)*c1(i)
1357 cy =eight*ms1(i)*k1(i)
1358 aux = sqrt(cx+cy)+two*c1(i)
1359 st1(i)= k1(i)*aux*aux/
max(cy,em30)
1360 cfi = cf(i)*abs(hs1(i))
1361 aux = two*cfi*cfi/
max(ms1(i),em20)
1368 IF(ms2(i)==zero)
THEN
1372 k2(i)=kt(i)*abs(hs2(i))
1373 c2(i)=c(i)*abs(hs2(i))
1374 cx =four*c2(i)*c2(i)
1375 cy =eight*ms2(i)*k2(i)
1376 aux = sqrt(cx+cy)+two*c2(i)
1377 st2(i)= k2(i)*aux*aux/
max(cy,em30)
1378 cfi = cf(i)*abs(hs2(i))
1379 aux = two*cfi*cfi/
max(ms2(i),em20)
1386 IF(mm1(i)==zero)
THEN
1390 k3(i)=kt(i)*abs(hm1(i))
1391 c3(i)=c(i)*abs(hm1(i))
1392 cx =four*c3(i)*c3(i)
1393 cy =eight*mm1(i)*k3(i)
1394 aux = sqrt(cx+cy)+two*c3(i)
1395 st3(i)= k3(i)*aux*aux/
max(cy,em30)
1396 cfi = cf(i)*abs(hm1(i))
1397 aux = two*cfi*cfi/
max(mm1(i),em20)
1404 IF(mm2(i)==zero)
THEN
1408 k4(i)=kt(i)*abs(hm2(i))
1409 c4(i)=c(i)*abs(hm2(i))
1410 cx =four*c4(i)*c4(i)
1411 cy =eight*mm2(i)*k4(i)
1412 aux = sqrt(cx+cy)+two*c4(i)
1413 st4(i)= k4(i)*aux*aux/
max(cy,em30)
1414 cfi = cf(i)*abs(hm2(i))
1415 aux = two*cfi*cfi/
max(mm2(i),em20)
1424 k1(i) =stif(i)*abs(hs1(i))
1426 k2(i) =stif(i)*abs(hs2(i))
1428 k3(i) =stif(i)*abs(hm1(i))
1430 k4(i) =stif(i)*abs(hm2(i))
1437 IF(ninloadp > 0)
THEN
1438 DO k = kloadpinter(nin)+1, kloadpinter(nin+1)
1440 ppl = loadp_hyd_inter(pp)
1441 dgapload = dgaploadint(k)
1443 gapp= gapve(i) + dgapload
1444 IF(pene(i) > zero .OR.dist(i) <= gapp)
THEN
1446 tagncont(ppl,m1(i)) = 1
1447 tagncont(ppl,m2(i)) = 1
1448 IF(cs_loc(i)<=nedge)
THEN
1450 tagncont(ppl,n1(i)) = 1
1451 tagncont(ppl,n2(i)) = 1
1464 CALL i25asse0(jlt ,cs_loc ,n1 ,n2 ,m1 ,
1465 2 m2 ,hs1 ,hs2 ,hm1 ,hm2 ,
1466 3 fx1 ,fy1 ,fz1 ,fx2 ,fy2 ,
1467 4 fz2 ,fx3 ,fy3 ,fz3 ,fx4 ,
1468 5 fy4 ,fz4 ,a ,stifn,stif ,
1469 6 nedge,nin ,jtask,pene
1471 CALL i25asse05(jlt ,cs_loc ,n1 ,n2 ,m1 ,
1472 2 m2 ,hs1 ,hs2 ,hm1 ,hm2 ,
1473 3 fx1 ,fy1 ,fz1 ,fx2 ,fy2 ,
1474 4 fz2 ,fx3 ,fy3 ,fz3 ,fx4 ,
1475 5 fy4 ,fz4 ,a ,stifn,nedge,
1476 6 k1 ,k2 ,k3 ,k4 ,c1 ,
1477 7 c2 ,c3 ,c4 ,viscn,nin ,
1478 8 jtask ,pene ,ibm )
1482 CALL i25asse2(jlt ,cs_loc ,n1 ,n2 ,m1 ,
1483 2 m2 ,hs1 ,hs2 ,hm1 ,hm2 ,
1484 3 fx1 ,fy1 ,fz1 ,fx2 ,fy2 ,
1485 4 fz2 ,fx3 ,fy3 ,fz3 ,fx4 ,
1486 5 fy4 ,fz4 ,fskyi ,isky ,niskyfie,
1487 6 stif ,nedge ,nin ,noint ,pene ,
1488 7 ibm ,edge_id,tagip )
1490 CALL i25asse25(jlt ,cs_loc ,n1 ,n2 ,m1 ,
1491 2 m2 ,hs1 ,hs2 ,hm1 ,hm2 ,
1492 3 fx1 ,fy1 ,fz1 ,fx2 ,fy2 ,
1493 4 fz2 ,fx3 ,fy3 ,fz3 ,fx4 ,
1494 5 fy4 ,fz4 ,isky ,niskyfie,nedge ,
1495 6 k1 ,k2 ,k3 ,k4 ,c1 ,
1496 7 c2 ,c3 ,c4 ,nin , noint,
1497 8 pene ,ibm ,tagip )
1504 CALL i25sms0e(jlt ,cs_loc ,n1 ,n2 ,m1 ,
1505 2 m2 ,hs1 ,hs2 ,hm1 ,hm2 ,
1506 3 stif ,nin ,noint ,mskyi_sms ,iskyi_sms,
1507 4 nsms ,k1 ,k2 ,k3 ,k4 ,
1508 5 c1 ,c2 ,c3 ,c4 ,nedge ,
1511 CALL i25sms2e(jlt ,cs_loc ,n1 ,n2 ,m1 ,
1512 2 m2 ,hs1 ,hs2 ,hm1 ,hm2 ,
1513 3 stif ,nin ,noint ,mskyi_sms ,iskyi_sms,
1514 4 nsms ,k1 ,k2 ,k3 ,k4 ,
1515 5 c1 ,c2 ,c3 ,c4 ,nedge ,
1524#include "mic_lockon.inc"
1526 IF(cs_loc(i)>nedge)
THEN
1527 ni = cs_loc(i)-nedge
1532 IF(pene(i) /= zero.OR.tagip(i)==1)
THEN
1538#include "mic_lockoff.inc"
1542 IF(anim_v(4)+outp_v(4)+h3d_data%N_VECT_CONT>0)
THEN
1543#include "lockon.inc"
1547 IF(pene(i)==zero) cycle
1549 IF(cs_loc(i)<=nedge)
THEN
1550 fcont(1,n1(i)) =fcont(1,n1(i)) + fx1(i)
1551 fcont(2,n1(i)) =fcont(2,n1(i)) + fy1(i)
1552 fcont(3,n1(i)) =fcont(3,n1(i)) + fz1(i)
1553 fcont(1,n2(i)) =fcont(1,n2(i)) + fx2(i)
1554 fcont(2,n2(i)) =fcont(2,n2(i)) + fy2(i)
1555 fcont(3,n2(i)) =fcont(3,n2(i)) + fz2(i)
1557 fcont(1,m1(i)) =fcont(1,m1(i)) + fx3(i)
1558 fcont(2,m1(i)) =fcont(2,m1(i)) + fy3(i)
1559 fcont(3,m1(i)) =fcont(3,m1(i)) + fz3(i)
1560 fcont(1,m2(i)) =fcont(1,m2(i)) + fx4(i)
1561 fcont(2,m2(i)) =fcont(2,m2(i)) + fy4(i)
1562 fcont(3,m2(i)) =fcont(3,m2(i)) + fz4(i)
1564#include "lockoff.inc"
1570 IF(nstrf(1)+nstrf(2)/=0)
THEN
1572 nbinter=nstrf(k0+14)
1575 IF(nstrf(k1s)==noint)
THEN
1577#include "lockon.inc"
1580 IF(pene(k) == zero)cycle
1582 IF(cs_loc(k)<=nedge)
THEN
1583 IF(secfcum(4,n1(k),i)==1.)
THEN
1584 secfcum(1,n1(k),i)=secfcum(1,n1(k),i)-fx1(k)
1585 secfcum(2,n1(k),i)=secfcum(2,n1(k),i)-fy1(k)
1586 secfcum(3,n1(k),i)=secfcum(3,n1(k),i)-fz1(k)
1588 IF(secfcum(4,n2(k),i)==1.)
THEN
1589 secfcum(1,n2(k),i)=secfcum(1,n2(k),i)-fx2(k)
1590 secfcum(2,n2(k),i)=secfcum(2,n2(k),i)-fy2(k)
1591 secfcum(3,n2(k),i)=secfcum(3,n2(k),i)-fz2(k)
1594 IF(secfcum(4,m1(k),i)==1.)
THEN
1595 secfcum(1,m1(k),i)=secfcum(1,m1(k),i)-fx3(k)
1596 secfcum(2,m1(k),i)=secfcum(2,m1(k),i)-fy3(k)
1597 secfcum(3,m1(k),i)=secfcum(3,m1(k),i)-fz3(k)
1599 IF(secfcum(4,m2(k),i)==1.)
THEN
1600 secfcum(1,m2(k),i)=secfcum(1,m2(k),i)-fx4(k)
1601 secfcum(2,m2(k),i)=secfcum(2,m2(k),i)-fy4(k)
1602 secfcum(3,m2(k),i)=secfcum(3,m2(k),i)-fz4(k)
1605#include
"lockoff.inc"