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), (MVSIZ),JTASK,
104 . ISENSINT(*), NFT, INDEX(*), 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(+1),LOADPINTER(S_LOADPINTER),
109 . LOADP_HYD_INTER(NLOADP_HYD)
112 . A(3,*), MS(*), V(3,*), FSAV(*),FCONT(3,*),
113 . (*),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, J1, J , K0,NBINTER,K1S,K, NI, IL, IE, IG, PP, PPL
131 INTEGER NISKYL,NISKYL1,ISIGN
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(mvsiz),
140 . fxt(mvsiz), fyt(mvsiz), fzt(mvsiz),
141 . pene(mvsiz),masmin(mvsiz),dist(mvsiz),
142 . vis2(mvsiz), dtmi(mvsiz),
143 . vnx, vny, vnz, aa, vmax,s2,
144 . v2, fm2, dt1inv, visca, fac, ff,
145 . fx, fy, fz, f2, mas2, dtmi0,dti,
146 . facm1, econtt, econvt, a2,masm,
147 . fsav1, fsav2, fsav3, fsav4, fsav5, fsav6, fsav7, fsav8,
148 . fsav9, fsav10, fsav11, fsav12, fsav13, fsav14, fsav15,
149 . fsav22, fsav23, fsav24,dgapload,
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),
158 . cx,cy,cfi,aux,aaa,gapp
160 . fx6(6,mvsiz), fy6(6,mvsiz), fz6(6,mvsiz)
161 INTEGER :: S_ADDSUBFIE,S_LISUBSFIE,P
183 s2 = sqrt(nx(i)**2 + ny(i)**2 + nz(i)**2)
185 IF(gapve(i)/=zero)
THEN
186 pene(i) =
max(zero,gapve(i) - s2)
190 s2 = one/
max(em30,s2)
198 debug_e2e(edge_id(1,i)==d_em.AND.edge_id(2,i)==d_es,cand_p(index(i)))
199 IF(cand_p(index(i))==zero)cand_p(index(i))=pene(i)
205 IF(cand_p(index(i))<zero)
THEN
207 cand_p(index(i))=pene(i)
209 cand_p(index(i))=-cand_p(index(i))
213 IF(pene(i)/=cand_p(index(i)))
214 . cand_p(index(i))=
min(cand_p(index(i)),
215 . ((one-fiveem2)*cand_p(index(i))+fiveem2*pene(i)) )
216 pene(i)=
max(zero,pene(i)-cand_p(index(i)))
217 IF( pene(i)==zero ) stif(i) = zero
221 IF(cand_p(index(i)) < zero)
THEN
224 cand_p(index(i)) = -cand_p(index(i))
225 IF(pene(i)/=cand_p(index(i)))
226 . cand_p(index(i)) =
min(cand_p(index(i)),
227 . ((one-fiveem2)*cand_p(index(i))+fiveem2*pene(i)) )
228 cand_p(index(i)) = -cand_p(index(i))
229 IF( pene(i)==zero ) stif(i) = zero
234 IF(pene(i)/=cand_p(index(i)))
235 . cand_p(index(i))=
min(cand_p(index(i)),
236 . ((one-fiveem2)*cand_p(index(i
238 pene(i)=
max(zero,pene(i)-cand_p(index(i)))
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)
256 stif(i)= half*stif(i)
257 fni(i) = -stif(i) * pene(i)
258 econvt = econvt+fni(i)*vn(i)*dt1
265 IF(kdtint==0.AND.(idtmins/=2.AND.idtmins_int==0))
THEN
267 fac = stif(i) /
max(em30,stif(i))
272 vis2(i) = two * stif(i) *
min(mas2,masm)
274 ff = fac * visc * vis
275 stif(i) = stif0(i) + ff * dt1inv
276 stif(i) =
max(stif(i) ,fac*sqrt(viscf)*vis*dt1inv)
278 econvt = econvt + ff * vn(i) * dt1
284 fac = stif(i) /
max(em30,stif(i))
289 vis2(i) = two * stif(i) *
min(mas2,masm)
291 c(i)= fac * visc * vis
293 stif(i) = stif(i) + c(i) * dt1inv
295 econvt = econvt + ff * vn(i) * dt1
297 cf(i) = fac*sqrt(viscf)*vis
298 stif(i) =
max(stif(i) ,cf(i)*dt1inv)
303 IF(kdtint==0.AND.(idtmins/=2.AND.idtmins_int==0))
THEN
305 fac = stif(i) /
max(em30,stif(i))
310 vis2(i) = two* stif(i) * masm * mas2 /
311 .
max(em30,masm+mas2)
313 ff = fac * visc * vis
314 stif(i) = stif0(i) + ff * dt1inv
315 stif(i) =
max(stif(i) ,fac*sqrt(viscf)*vis*dt1inv)
317 econvt = econvt + ff * vn(i) * dt1
323 fac = stif(i) /
max(em30,stif(i))
328 vis2(i) = two* stif(i) * masm * mas2 /
329 .
max(em30,masm+mas2)
331 c(i)= fac * visc * vis
333 stif(i) = stif(i) + c(i) * dt1inv
335 econvt = econvt + ff * vn(i) * dt1
337 cf(i) = fac*sqrt(viscf)*vis
338 stif(i) =
max(stif(i) ,cf(i)*dt1inv)
347 fac = stif(i) /
max(em30,stif(i))
352 vis2(i) = two * stif(i) *
min(mas2,masm)
354 ff = fac * visc * vis
355 stif(i) = stif0(i) + two * ff * dt1inv
356 stif(i) =
max(stif(i) ,fac*sqrt(viscf)*vis*dt1inv)
358 econvt = econvt + ff * vn(i) * dt1
366 fac = stif(i) /
max(em30,stif(i))
371 vis2(i) = two * stif(i) *
min(mas2,masm)
373 ff = fac * visc * vis
374 stif(i) = stif0(i) + two* ff * dt1inv
375 stif(i) =
max(stif(i) ,fac*sqrt(viscf)*vis*dt1inv)
377 econvt = econvt + ff * vn(i) * dt1
385 fac = stif(i) /
max(em30,stif(i))
390 vis2(i) = two * stif(i) *
min(mas2,masm)
392 stif(i) =
max(stif(i) ,fac*sqrt(viscf)*vis*dt1inv)
401 fac = stif(i) /
max(em30,stif(i))
406 vis2(i) = two* stif(i) * masm * mas2 /
407 .
max(em30,masm+mas2)
408 vis = 2. * visc * dt1inv * masm * mas2 /
409 .
max(em30,masm+mas2)
410 stif(i) =
max(stif0(i) ,fac*sqrt(viscf*vis2(i))*dt1inv)
412 econvt = econvt + ff * vn(i) * dt1
413 fni(i) =
min(fni(i),ff)
431 IF(pene(i)==zero) cycle
433 ims2 = bitget(ebinflg(ie),1)
444 fsav11=fsav11-fni(i)*dt12
449 fsav11=fsav11+fni(i)*dt12
451 fsav8 =fsav8 +abs(impx)
452 fsav9 =fsav9 +abs(impy)
453 fsav10=fsav10+abs(impz)
454 IF(isensint(1)/=0)
THEN
456 fsavparit(1,1,i) = -fxi(i)
457 fsavparit(1,2,i) = -fyi(i)
458 fsavparit(1,3,i) = -fzi(i)
460 fsavparit(1,1,i) = fxi(i)
461 fsavparit(1,2,i) = fyi(i)
462 fsavparit(1,3,i) = fzi(i)
468 IF(pene(i)==zero) cycle
478 fsav8 =fsav8 +abs(impx)
479 fsav9 =fsav9 +abs(impy)
480 fsav10=fsav10+abs(impz)
481 fsav11=fsav11+fni(i)*dt12
482 IF(isensint(1)/=0)
THEN
483 fsavparit(1,1,i) = fxi(i)
484 fsavparit(1,2,i) = fyi(i)
485 fsavparit(1,3,i) = fzi(i)
491 fsav(1)=fsav(1)+fsav1
492 fsav(2)=fsav(2)+fsav2
493 fsav(3)=fsav(3)+fsav3
494 fsav(8)=fsav(8)+fsav8
495 fsav(9)=fsav(9)+fsav9
496 fsav(10)=fsav(10)+fsav10
497 fsav(11)=fsav(11)+fsav11
498#include "lockoff.inc"
506 fsavsub1(j,jsub)=zero
511 IF(pene(i) == zero)cycle
520 DO WHILE(jj<addsube(il+1))
522 itypsub = typsub(jsub)
523 IF(itypsub == 1 )
THEN
524 iss1 = bitget(inflg_sube(jj),0)
525 iss2 = bitget(inflg_sube(jj),1)
527 DO WHILE((ksub<=jsub).AND.(kk<addsube(ie+1)))
528 ims1 = bitget(inflg_sube(kk),0)
529 ims2 = bitget(inflg_sube(kk),1)
531 IF(.NOT.((ims1 == 1 .AND. iss2 == 1).OR.
532 . (ims2 == 1 .AND. iss1 == 1)))
THEN
542 fsavsub1(1,jsub)=fsavsub1(1,jsub)-impx
543 fsavsub1(2,jsub)=fsavsub1(2,jsub)-impy
545 fsavsub1(11,jsub)=fsavsub1(11,jsub)-fni(i)*dt12
547 fsavsub1(1,jsub)=fsavsub1(1,jsub)+impx
548 fsavsub1(2,jsub)=fsavsub1(2,jsub)+impy
549 fsavsub1(3,jsub)=fsavsub1(3,jsub)+impz
550 fsavsub1(11,jsub)=fsavsub1(11,jsub)+fni(i)*dt12
553 IF(isensint(jsub+1)/=0)
THEN
555 fsavparit(jsub+1,1,i) =
556 fsavparit(jsub+1,2,i) = -fyi(i)
557 fsavparit(jsub+1,3,i) = -fzi(i)
559 fsavparit(jsub+1,1,i) = fxi(i)
560 fsavparit(jsub+1,2,i) = fyi(i)
561 fsavparit(jsub+1,3,i) = fzi(i)
565 fsavsub1(8,jsub) =fsavsub1(8,jsub) +abs(impx)
566 fsavsub1(9,jsub) =fsavsub1(9,jsub) +abs(impy)
567 fsavsub1(10,jsub)=fsavsub1(10,jsub)+abs(impz)
575 ELSEIF(itypsub == 2 )
THEN
582 fsavsub1(1,jsub)=fsavsub1(1,jsub)+impx
583 fsavsub1(2,jsub)=fsavsub1(2,jsub)+impy
584 fsavsub1(3,jsub)=fsavsub1(3,jsub)+impz
586 fsavsub1(8,jsub) =fsavsub1(8,jsub) +abs(impx)
587 fsavsub1(9,jsub) =fsavsub1(9,jsub) +abs(impy)
588 fsavsub1(10,jsub)=fsavsub1(10,jsub)+abs(impz)
590 fsavsub1(11,jsub)=fsavsub1(11,jsub)+fni(i)*dt12
592 IF(isensint(jsub+1)/=0)
THEN
593 fsavparit(jsub+1,1,i) = fxi(i)
594 fsavparit(jsub+1,2,i) = fyi(i)
595 fsavparit(jsub+1,3,i) = fzi(i)
600 ELSEIF(itypsub == 3 )
THEN
602 iss2 = bitget(inflg_sube(jj),0)
603 iss1 = bitget(inflg_sube(jj),1)
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
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)
635 fsavparit(jsub+1,2,i) = -fyi(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)
657 DO WHILE(kk<addsube(ie+1))
659 itypsub = typsub(ksub)
660 IF(itypsub == 2 )
THEN
666 fsavsub1(1,ksub)=fsavsub1(1,ksub)+impx
667 fsavsub1(2,ksub)=fsavsub1(2,ksub)+impy
668 fsavsub1(3,ksub)=fsavsub1(3,ksub)+impz
670 fsavsub1(8,ksub) =fsavsub1(8,ksub) +abs(impx)
671 fsavsub1(9,ksub) =fsavsub1(9,ksub) +abs(impy)
672 fsavsub1(10,ksub)=fsavsub1(10,ksub)+abs(impz)
674 fsavsub1(11,ksub)=fsavsub1(11,ksub)-fni(i)*dt12
676 IF(isensint(ksub+1)/=0)
THEN
677 fsavparit(ksub+1,1,i) = -fxi(i)
678 fsavparit(ksub+1,2,i) = -fyi(i)
679 fsavparit(ksub+1,3,i) = -fzi(i)
692 s_addsubfie = s_addsubfie +
nsnfie(nin)%P(p)
693 s_lisubsfie = s_lisubsfie +
nisubsfie(nin)%P(p)
697 IF(pene(i) == zero)cycle
709 assert(il <= s_addsubfie)
718 assert(jj <= s_lisubsfie)
720 itypsub = typsub(jsub)
721 IF(itypsub == 1 )
THEN
722 assert(jsub <= nisub)
726 DO WHILE((ksub<=jsub).AND.(kk<addsube(ie+1)))
727 assert(ksub <= nisub)
728 ims1 = bitget(inflg_sube(kk),0)
729 ims2 = bitget(inflg_sube(kk),1)
731 IF(.NOT.((ims1 == 1 .AND. iss2 == 1).OR.
732 . (ims2 == 1 .AND. iss1 == 1)))
THEN
742 fsavsub1(1,jsub)=fsavsub1(1,jsub)-impx
743 fsavsub1(2,jsub)=fsavsub1(2,jsub)-impy
744 fsavsub1(3,jsub)=fsavsub1(3,jsub)-impz
745 fsavsub1(11,jsub)=fsavsub1(11,jsub)-fni(i)*dt12
747 fsavsub1(1,jsub)=fsavsub1(1,jsub)+impx
748 fsavsub1(2,jsub)=fsavsub1(2,jsub)+impy
749 fsavsub1(3,jsub)=fsavsub1(3,jsub)+impz
750 fsavsub1(11,jsub)=fsavsub1(11,jsub)+fni(i)*dt12
753 IF(isensint(jsub+1)/=0)
THEN
755 fsavparit(jsub+1,1,i) = -fxi(i)
756 fsavparit(jsub+1,2,i) = -fyi(i)
757 fsavparit(jsub+1,3,i) = -fzi(i)
759 fsavparit(jsub+1,1,i) = fxi(i)
760 fsavparit(jsub+1,2,i) = fyi(i)
761 fsavparit(jsub+1,3,i) = fzi(i)
765 fsavsub1(8,jsub) =fsavsub1(8,jsub) +abs(impx)
766 fsavsub1(9,jsub) =fsavsub1(9,jsub) +abs(impy)
767 fsavsub1(10,jsub)=fsavsub1(10,jsub)+abs(impz)
775 ELSEIF(itypsub == 2 )
THEN
782 fsavsub1(1,jsub)=fsavsub1(1,jsub)+impx
783 fsavsub1(2,jsub)=fsavsub1(2,jsub)+impy
784 fsavsub1(3,jsub)=fsavsub1(3,jsub)+impz
786 fsavsub1(8,jsub) =fsavsub1(8,jsub) +abs(impx)
787 fsavsub1(9,jsub) =fsavsub1(9,jsub) +abs(impy)
788 fsavsub1(10,jsub)=fsavsub1(10,jsub)+abs(impz)
790 fsavsub1(11,jsub)=fsavsub1(11,jsub)+fni(i)*dt12
792 IF(isensint(jsub+1)/=0)
THEN
793 fsavparit(jsub+1,1,i) = fxi(i)
794 fsavparit(jsub+1,2,i) = fyi(i)
795 fsavparit(jsub+1,3,i) = fzi(i)
800 ELSEIF(itypsub == 3 )
THEN
805 DO WHILE((ksub<=jsub).AND.(kk<addsube(ie+1)))
806 ims2 = bitget(inflg_sube(kk),0)
807 ims1 = bitget(inflg_sube(kk),1)
809 IF(.NOT.((ims1 == 1 .AND. iss2 == 1).OR.
810 . (ims2 == 1 .AND. iss1 == 1)))
THEN
821 fsavsub1(1,jsub)=fsavsub1(1,jsub)-impx
822 fsavsub1(2,jsub)=fsavsub1(2,jsub)-impy
823 fsavsub1(3,jsub)=fsavsub1(3,jsub)-impz
824 fsavsub1(11,jsub)=fsavsub1(11,jsub)-fni(i)*dt12
826 fsavsub1(1,jsub)=fsavsub1(1,jsub)+impx
827 fsavsub1(2,jsub)=fsavsub1(2,jsub)+impy
828 fsavsub1(3,jsub)=fsavsub1(3,jsub)+impz
829 fsavsub1(11,jsub)=fsavsub1(11,jsub)+fni(i)*dt12
832 fsavsub1(8,jsub) =fsavsub1(8,jsub) +abs(impx)
833 fsavsub1(9,jsub) =fsavsub1(9,jsub) +abs(impy)
834 fsavsub1(10,jsub)=fsavsub1(10,jsub)+abs(impz)
868 IF(pene(i) == zero)cycle
870 fx = stif0(i)*vx(i)*dt12
871 fy = stif0(i)*vy(i)*dt12
872 fz = stif0(i)*vz(i)*dt12
874 fx = cand_fx(index(i)) + fx
875 fy = cand_fy(index(i)) + fy
876 fz = cand_fz(index(i)) + fz
878 ftn = fx*nx(i) + fy*ny(i) + fz*nz(i)
882 ft = fx*fx + fy*fy + fz*fz
885 fn = fxi(i)**2+fyi(i)**2+fzi(i)**2
886 beta =
min(one,fricc(i)*sqrt(fn/ft))
891 cand_fx(index(i)) = fxt(i)
892 cand_fy(index(i)) = fyt(i)
893 cand_fz(index(i)) = fzt(i)
897 fxi(i)=fxi(i) + fxt(i)
898 fyi(i)=fyi(i) + fyt(i)
899 fzi(i)=fzi(i) + fzt(i)
901 fsav4 = fsav4 + fxt(i)*dt12
902 fsav5 = fsav5 + fyt(i)*dt12
903 fsav6 = fsav6 + fzt(i)*dt12
905 fsav12 = fsav12 + abs(fxi(i)*dt12)
906 fsav13 = fsav13 + abs(fyi(i)*dt12)
907 fsav14 = fsav14 + abs(fzi(i)*dt12)
908 fsav15 = fsav15 + sqrt(fxi(i)*fxi(i)+fyi(i)*fyi(i)+fzi(i)*fzi(i))*dt12
910 . + dt1*(vx(i)*fxt(i)+vy(i)*fyt(i)+vz(i)*fzt(i))
917 fsav(4) = fsav(4) + fsav4
918 fsav(5) = fsav(5) + fsav5
919 fsav(6) = fsav(6) + fsav6
920 fsav(12) = fsav(12) + fsav12
921 fsav(13) = fsav(13) + fsav13
922 fsav(14) = fsav(14) + fsav14
923 fsav(15) = fsav(15) + fsav15
924#include "lockoff.inc"
936 IF(pene(i) == zero)cycle
945 DO WHILE(jj<addsube(il+1))
947 itypsub = typsub(jsub)
949 IF(itypsub == 1 )
THEN
950 iss1 = bitget(inflg_sube(jj),0)
951 iss2 = bitget(inflg_sube(jj),1)
953 DO WHILE((ksub<=jsub).AND.(kk<addsube(ie+1)))
954 ims1 = bitget(inflg_sube(kk),0)
955 ims2 = bitget(inflg_sube(kk),1)
957 IF(.NOT.((ims1 == 1 .AND. iss2 == 1).OR.
958 . (ims2 == 1 .AND. iss1 == 1)))
THEN
967 fsavsub1(4,jsub)=fsavsub1(4,jsub)+impx
968 fsavsub1(5,jsub)=fsavsub1(5,jsub)+impy
969 fsavsub1(6,jsub)=fsavsub1(6,jsub)+impz
974 fsavsub1(12,jsub)=fsavsub1(12,jsub)+abs(impx)
975 fsavsub1(13,jsub)=fsavsub1(13,jsub)+abs(impy)
976 fsavsub1(14,jsub)=fsavsub1(14,jsub)+abs(impz)
978 IF(isensint(jsub+1)/=0)
THEN
979 fsavparit(jsub+1,4,i) = fxt(i)
980 fsavparit(jsub+1,5,i) = fyt(i)
981 fsavparit(jsub+1,6,i) = fzt(i)
984 fsavsub1(15,jsub)= fsavsub1(15,jsub)
985 . +sqrt(impx*impx+impy*impy+impz*impz)
995 ELSEIF(itypsub == 2 )
THEN
1001 fsavsub1(4,jsub)=fsavsub1(4,jsub)+impx
1002 fsavsub1(5,jsub)=fsavsub1(5,jsub)+impy
1003 fsavsub1(6,jsub)=fsavsub1(6,jsub)+impz
1008 fsavsub1(12,jsub)=fsavsub1(12,jsub)+abs(impx)
1009 fsavsub1(13,jsub)=fsavsub1(13,jsub)+abs(impy)
1010 fsavsub1(14,jsub)=fsavsub1(14,jsub)+abs(impz)
1012 IF(isensint(jsub+1)/=0)
THEN
1013 fsavparit(jsub+1,4,i) = fxt(i)
1014 fsavparit(jsub+1,5,i) = fyt(i)
1015 fsavparit(jsub+1,6,i) = fzt(i)
1018 fsavsub1(15,jsub)= fsavsub1(15,jsub)
1019 . +sqrt(impx*impx+impy*impy+impz*impz)
1024 ELSEIF(itypsub == 3 )
THEN
1026 iss2 = bitget(inflg_sube(jj),0)
1027 iss1 = bitget(inflg_sube(jj),1)
1029 DO WHILE((ksub<=jsub).AND.(kk<addsube(ie+1)))
1030 ims2 = bitget(inflg_sube(kk),0)
1031 ims1 = bitget(inflg_sube(kk),1)
1033 IF(.NOT.((ims1 == 1 .AND. iss2 == 1).OR.
1034 . (ims2 == 1 .AND. iss1 == 1)))
THEN
1045 fsavsub1(4,jsub)=fsavsub1(4,jsub)-impx
1046 fsavsub1(5,jsub)=fsavsub1(5,jsub)-impy
1047 fsavsub1(6,jsub)=fsavsub1(6,jsub)-impz
1050 fsavsub1(4,jsub)=fsavsub1(4,jsub)+impx
1051 fsavsub1(5,jsub)=fsavsub1(5,jsub)+impy
1052 fsavsub1(6,jsub)=fsavsub1(6,jsub)+impz
1058 fsavsub1(12,jsub)=fsavsub1(12,jsub)+abs(impx)
1059 fsavsub1(13,jsub)=fsavsub1(13,jsub)+abs(impy)
1060 fsavsub1(14,jsub)=fsavsub1(14,jsub)+abs(impz)
1062 IF(isensint(jsub+1)/=0)
THEN
1064 fsavparit(jsub+1,4,i) = -fxt(i)
1065 fsavparit(jsub+1,5,i) = -fyt(i)
1066 fsavparit(jsub+1,6,i) = -fzt(i)
1068 fsavparit(jsub+1,4,i) = fxt(i)
1069 fsavparit(jsub+1,5,i) = fyt(i)
1070 fsavparit(jsub+1,6,i) = fzt(i)
1074 fsavsub1(15,jsub)= fsavsub1(15,jsub)
1075 . +sqrt(impx*impx+impy*impy+impz*impz)
1090 DO WHILE(kk<addsube(ie+1))
1092 itypsub = typsub(ksub)
1093 IF(itypsub == 2 )
THEN
1099 fsavsub1(4,ksub)=fsavsub1(4,ksub)+impx
1100 fsavsub1(5,ksub)=fsavsub1(5,ksub)+impy
1101 fsavsub1(6,ksub)=fsavsub1(6,ksub)+impz
1106 fsavsub1(12,ksub)=fsavsub1(12,jsub)+abs(impx)
1107 fsavsub1(13,ksub)=fsavsub1(13,jsub)+abs(impy)
1108 fsavsub1(14,ksub)=fsavsub1(14,jsub)+abs(impz)
1110 IF(isensint(ksub+1)/=0)
THEN
1111 fsavparit(ksub+1,4,i) = -fxt(i)
1112 fsavparit(ksub+1,5,i) = -fyt(i)
1113 fsavparit(ksub+1,6,i) = -fzt(i)
1116 fsavsub1(15,ksub)= fsavsub1(15,ksub)
1117 . +sqrt(impx*impx+impy*impy+impz*impz)
1138 itypsub = typsub(jsub)
1140 IF(itypsub == 1 )
THEN
1144 DO WHILE((ksub<=jsub).AND.(kk<addsube(ie+1)))
1145 ims1 = bitget(inflg_sube(kk),0)
1146 ims2 = bitget(inflg_sube(kk),1)
1148 IF(.NOT.((ims1 == 1 .AND. iss2 == 1).OR.
1149 . (ims2 == 1 .AND. iss1 == 1)))
THEN
1158 fsavsub1(4,jsub)=fsavsub1(4,jsub)+impx
1159 fsavsub1(5,jsub)=fsavsub1(5,jsub)+impy
1160 fsavsub1(6,jsub)=fsavsub1(6,jsub)+impz
1165 fsavsub1(12,jsub)=fsavsub1(12,jsub)+abs(impx)
1166 fsavsub1(13,jsub)=fsavsub1(13,jsub)+abs(impy)
1167 fsavsub1(14,jsub)=fsavsub1(14,jsub)+abs(impz
1169 IF(isensint(jsub+1)/=0)
THEN
1170 fsavparit(jsub+1,4,i) = fxt(i)
1171 fsavparit(jsub+1,5,i) = fyt(i)
1172 fsavparit(jsub+1,6,i) = fzt(i)
1175 fsavsub1(15,jsub)= fsavsub1(15,jsub)
1176 . +sqrt(impx*impx+impy*impy+impz*impz)
1187 ELSEIF(itypsub == 2 )
THEN
1193 fsavsub1(4,jsub)=fsavsub1(4,jsub)+impx
1194 fsavsub1(5,jsub)=fsavsub1(5,jsub)+impy
1195 fsavsub1(6,jsub)=fsavsub1(6,jsub)+impz
1200 fsavsub1(12,jsub)=fsavsub1(12,jsub)+abs
1201 fsavsub1(13,jsub)=fsavsub1(13,jsub)+abs(impy)
1202 fsavsub1(14,jsub)=fsavsub1(14,jsub)+abs(impz)
1204 IF(isensint(jsub+1)/=0)
THEN
1205 fsavparit(jsub+1,4,i) =
1206 fsavparit(jsub+1,5,i) = fyt(i)
1207 fsavparit(jsub+1,6,i) = fzt(i)
1210 fsavsub1(15,jsub)= fsavsub1(15,jsub)
1211 . +sqrt(impx*impx+impy*impy+impz*impz)
1216 ELSEIF(itypsub == 3 )
THEN
1221 DO WHILE((ksub<=jsub).AND.(kk<addsube(ie+1)))
1222 ims2 = bitget(inflg_sube(kk),0)
1223 ims1 = bitget(inflg_sube(kk),1)
1225 IF(.NOT.((ims1 == 1 .AND. iss2 == 1).OR.
1226 . (ims2 == 1 .AND. iss1 == 1)))
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
1242 fsavsub1(4,jsub)=fsavsub1(4,jsub)+impx
1243 fsavsub1(5,jsub)=fsavsub1(5,jsub)+impy
1244 fsavsub1(6,jsub)=fsavsub1(6,jsub)+impz
1250 fsavsub1(12,jsub)=fsavsub1(12,jsub)+abs(impx)
1251 fsavsub1(13,jsub)=fsavsub1(13,jsub)+abs(impy)
1252 fsavsub1(14,jsub)=fsavsub1
1254 IF(isensint(jsub+1)/=0)
THEN
1256 fsavparit(jsub+1,4,i) = -fxt(i)
1257 fsavparit(jsub+1,5,i) = -fyt(i)
1258 fsavparit(jsub+1,6,i) = -fzt(i)
1260 fsavparit(jsub+1,4,i) = fxt(i)
1261 fsavparit(jsub+1,5,i) = fyt(i)
1262 fsavparit(jsub+1,6,i) = fzt(i)
1266 fsavsub1(15,jsub)= fsavsub1(15,jsub)
1267 . +sqrt(impx*impx+impy*impy+impz*impz)
1284#include "lockon.inc"
1288 fsavsub(j,nsub)=fsavsub(j,nsub)+fsavsub1(j,jsub)
1290 fsavsub(22,nsub)=fsavsub(22,nsub)+fsavsub1(22,jsub)
1291 fsavsub(23,nsub)=fsavsub(23,nsub)+fsavsub1(23,jsub)
1292 fsavsub(24,nsub)=fsavsub(24,nsub)+fsavsub1(24,jsub)
1294#include "lockoff.inc"
1298#include "lockon.inc"
1299 econtv = econtv + econvt
1300 econt = econt + econtt
1301#include "lockoff.inc"
1306 IF(pene(i) == zero)cycle
1308 fx1(i)=-fxi(i)*hs1(i)
1309 fy1(i)=-fyi(i)*hs1(i)
1310 fz1(i)=-fzi(i)*hs1(i)
1312 fx2(i)=-fxi(i)*hs2(i)
1313 fy2(i)=-fyi(i)*hs2(i)
1314 fz2(i)=-fzi(i)*hs2(i)
1316 fx3(i)=fxi(i)*hm1(i)
1317 fy3(i)=fyi(i)*hm1(i)
1318 fz3(i)=fzi(i)*hm1(i)
1320 fx4(i)=fxi(i)*hm2(i)
1321 fy4(i)=fyi(i)*hm2(i)
1322 fz4(i)=fzi(i)*hm2(i)
1327 stif(i) = two*stif(i)
1331 IF(kdtint==1.OR.idtmins==2)
THEN
1333 . .AND.(ivis2==0.OR.ivis2==1))
THEN
1337 IF(ms1(i)==zero)
THEN
1341 k1(i)=kt(i)*abs(hs1(i))
1342 c1(i)=c(i)*abs(hs1(i))
1343 cx =four*c1(i)*c1(i)
1344 cy =eight*ms1(i)*k1(i)
1345 aux = sqrt(cx+cy)+two*c1(i)
1346 st1(i)= k1(i)*aux*aux/
max(cy,em30)
1347 cfi = cf(i)*abs(hs1(i))
1348 aux = two*cfi*cfi/
max(ms1(i),em20)
1355 IF(ms2(i)==zero)
THEN
1359 k2(i)=kt(i)*abs(hs2(i))
1360 c2(i)=c(i)*abs(hs2(i))
1361 cx =four*c2(i)*c2(i)
1362 cy =eight*ms2(i)*k2(i)
1363 aux = sqrt(cx+cy)+two*c2(i)
1364 st2(i)= k2(i)*aux*aux/
max(cy,em30)
1365 cfi = cf(i)*abs(hs2(i))
1366 aux = two*cfi*cfi/
max(ms2(i),em20)
1373 IF(mm1(i)==zero)
THEN
1377 k3(i)=kt(i)*abs(hm1(i))
1378 c3(i)=c(i)*abs(hm1(i))
1379 cx =four*c3(i)*c3(i)
1380 cy =eight*mm1(i)*k3(i)
1381 aux = sqrt(cx+cy)+two*c3(i)
1382 st3(i)= k3(i)*aux*aux/
max(cy,em30)
1383 cfi = cf(i)*abs(hm1(i))
1384 aux = two*cfi*cfi/
max(mm1(i),em20)
1391 IF(mm2(i)==zero)
THEN
1395 k4(i)=kt(i)*abs(hm2(i))
1396 c4(i)=c(i)*abs(hm2(i))
1397 cx =four*c4(i)*c4(i)
1398 cy =eight*mm2(i)*k4(i)
1399 aux = sqrt(cx+cy)+two*c4(i)
1400 st4(i)= k4(i)*aux*aux/
max(cy,em30)
1401 cfi = cf(i)*abs(hm2(i))
1402 aux = two*cfi*cfi/
max(mm2(i),em20)
1411 k1(i) =stif(i)*abs(hs1(i))
1413 k2(i) =stif(i)*abs(hs2(i))
1415 k3(i) =stif(i)*abs(hm1(i))
1417 k4(i) =stif(i)*abs(hm2(i))
1424 IF(ninloadp > 0)
THEN
1425 DO k = kloadpinter(nin)+1, kloadpinter(nin+1)
1427 ppl = loadp_hyd_inter(pp)
1428 dgapload = dgaploadint(k)
1430 gapp= gapve(i) + dgapload
1431 IF(pene(i) > zero .OR.dist(i) <= gapp)
THEN
1433 tagncont(ppl,m1(i)) = 1
1434 tagncont(ppl,m2(i)) = 1
1435 IF(cs_loc(i)<=nedge)
THEN
1437 tagncont(ppl,n1(i)) = 1
1438 tagncont(ppl,n2(i)) = 1
1451 CALL i25asse0(jlt ,cs_loc ,n1 ,n2 ,m1 ,
1452 2 m2 ,hs1 ,hs2 ,hm1 ,hm2 ,
1453 3 fx1 ,fy1 ,fz1 ,fx2 ,fy2 ,
1454 4 fz2 ,fx3 ,fy3 ,fz3 ,fx4 ,
1455 5 fy4 ,fz4 ,a ,stifn,stif ,
1456 6 nedge,nin ,jtask,pene ,ibm )
1458 CALL i25asse05(jlt ,cs_loc ,n1 ,n2 ,m1 ,
1459 2 m2 ,hs1 ,hs2 ,hm1 ,hm2 ,
1460 3 fx1 ,fy1 ,fz1 ,fx2 ,fy2 ,
1461 4 fz2 ,fx3 ,fy3 ,fz3 ,fx4 ,
1462 5 fy4 ,fz4 ,a ,stifn,nedge,
1463 6 k1 ,k2 ,k3 ,k4 ,c1 ,
1464 7 c2 ,c3 ,c4 ,viscn,nin ,
1465 8 jtask ,pene ,ibm )
1469 CALL i25asse2(jlt ,cs_loc ,n1 ,n2 ,m1 ,
1470 2 m2 ,hs1 ,hs2 ,hm1 ,hm2 ,
1471 3 fx1 ,fy1 ,fz1 ,fx2 ,fy2 ,
1472 4 fz2 ,fx3 ,fy3 ,fz3 ,fx4 ,
1473 5 fy4 ,fz4 ,fskyi ,isky ,niskyfie,
1474 6 stif ,nedge ,nin ,noint ,pene ,
1475 7 ibm ,edge_id,tagip )
1477 CALL i25asse25(jlt ,cs_loc ,n1 ,n2 ,m1 ,
1478 2 m2 ,hs1 ,hs2 ,hm1 ,hm2 ,
1479 3 fx1 ,fy1 ,fz1 ,fx2 ,fy2 ,
1480 4 fz2 ,fx3 ,fy3 ,fz3 ,fx4 ,
1481 5 fy4 ,fz4 ,isky ,niskyfie,nedge ,
1482 6 k1 ,k2 ,k3 ,k4 ,c1 ,
1483 7 c2 ,c3 ,c4 ,nin , noint,
1484 8 pene ,ibm ,tagip )
1491 CALL i25sms0e(jlt ,cs_loc ,n1 ,n2 ,m1 ,
1492 2 m2 ,hs1 ,hs2 ,hm1 ,hm2 ,
1493 3 stif ,nin ,noint ,mskyi_sms ,iskyi_sms,
1494 4 nsms ,k1 ,k2 ,k3 ,k4 ,
1495 5 c1 ,c2 ,c3 ,c4 ,nedge ,
1498 CALL i25sms2e(jlt ,cs_loc ,n1 ,n2 ,m1 ,
1499 2 m2 ,hs1 ,hs2 ,hm1 ,hm2 ,
1500 3 stif ,nin ,noint ,mskyi_sms ,iskyi_sms,
1501 4 nsms ,k1 ,k2 ,k3 ,k4 ,
1502 5 c1 ,c2 ,c3 ,c4 ,nedge ,
1511#include "mic_lockon.inc"
1513 IF(cs_loc(i)>nedge)
THEN
1514 ni = cs_loc(i)-nedge
1519 IF(pene(i) /= zero.OR.tagip(i)==1)
THEN
1525#include "mic_lockoff.inc"
1529 IF(anim_v(4)+outp_v(4)+h3d_data%N_VECT_CONT>0)
THEN
1530#include "lockon.inc"
1534 IF(pene(i)==zero) cycle
1536 IF(cs_loc(i)<=nedge)
THEN
1537 fcont(1,n1(i)) =fcont(1,n1(i)) + fx1(i)
1538 fcont(2,n1(i)) =fcont(2,n1(i)) + fy1(i)
1539 fcont(3,n1(i)) =fcont(3,n1(i)) + fz1(i)
1540 fcont(1,n2(i)) =fcont(1,n2(i)) + fx2(i)
1541 fcont(2,n2(i)) =fcont(2,n2(i)) + fy2(i)
1542 fcont(3,n2(i)) =fcont(3,n2(i)) + fz2(i)
1544 fcont(1,m1(i)) =fcont(1,m1(i)) + fx3(i)
1545 fcont(2,m1(i)) =fcont(2,m1(i)) + fy3(i)
1546 fcont(3,m1(i)) =fcont(3,m1(i)) + fz3(i)
1547 fcont(1,m2(i)) =fcont(1,m2(i)) + fx4(i)
1548 fcont(2,m2(i)) =fcont(2,m2(i)) + fy4(i)
1549 fcont(3,m2(i)) =fcont(3,m2(i)) + fz4(i)
1551#include "lockoff.inc"
1557 IF(nstrf(1)+nstrf(2)/=0)
THEN
1559 nbinter=nstrf(k0+14)
1562 IF(nstrf(k1s)==noint)
THEN
1564#include "lockon.inc"
1567 IF(pene(k) == zero)cycle
1569 IF(cs_loc(k)<=nedge)
THEN
1570 IF(secfcum(4,n1(k),i)==1.)
THEN
1571 secfcum(1,n1(k),i)=secfcum(1,n1(k),i)-fx1(k)
1572 secfcum(2,n1(k),i)=secfcum(2,n1(k),i)-fy1(k)
1573 secfcum(3,n1(k),i)=secfcum(3,n1(k),i)-fz1(k)
1575 IF(secfcum(4,n2(k),i)==1.)
THEN
1576 secfcum(1,n2(k),i)=secfcum(1,n2(k),i)-fx2(k)
1577 secfcum(2,n2(k),i)=secfcum(2,n2(k),i)-fy2(k)
1578 secfcum(3,n2(k),i)=secfcum(3,n2(k),i)-fz2(k)
1581 IF(secfcum(4,m1(k),i)==1.)
THEN
1582 secfcum(1,m1(k),i)=secfcum(1,m1(k),i)-fx3(k)
1583 secfcum(2,m1(k),i)=secfcum(2,m1(k),i)-fy3(k)
1584 secfcum(3,m1(k),i)=secfcum(3,m1(k),i)-fz3(k)
1586 IF(secfcum(4,m2(k),i)==1.)
THEN
1587 secfcum(1,m2(k),i)=secfcum(1,m2(k),i)-fx4(k)
1588 secfcum(2,m2(k),i)=secfcum(2,m2(k),i)-fy4(k)
1589 secfcum(3,m2(k),i)=secfcum(3,m2(k),i)-fz4(k)
1592#include "lockoff.inc"