30 SUBROUTINE i7keg3(JLT ,A ,V ,MS ,FRIC ,
31 1 NX1 ,NX2 ,NX3 ,NX4 ,NY1 ,
32 2 NY2 ,NY3 ,NY4 ,NZ1 ,NZ2 ,
33 3 NZ3 ,NZ4 ,LB1 ,LB2 ,LB3 ,
34 4 LB4 ,LC1 ,LC2 ,LC3 ,LC4 ,
35 5 P1 ,P2 ,P3 ,P4 ,NIN ,
36 6 IX1 ,IX2 ,IX3 ,IX4 ,NSVG ,
37 7 GAPV ,INACTI ,CAND_P ,INDEX ,STIGLO ,
38 8 STIF ,VXI ,VYI ,VZI ,MSI ,
39 9 KI11 ,KI12 ,KJ11 ,KJ12 ,KK11 ,
40 A KK12 ,KL11 ,KL12 ,OFF ,SCALK ,
42 2 X1 ,X2 ,X3 ,X4 ,Y1 ,
43 3 Y2 ,Y3 ,Y4 ,Z1 ,Z2 ,
44 4 Z3 ,Z4 ,XI ,YI ,ZI )
52#include "implicit_f.inc"
67 INTEGER JLT, ,NIN,LREM
68 INTEGER IX1(), IX2(MVSIZ), IX3(MVSIZ), IX4(MVSIZ),
69 . NSVG(MVSIZ), INDEX(MVSIZ),ICURV(3)
71 . A(3,*), MS(*), (3,*),
72 . STIGLO,CAND_P(*),FRIC,OFF(*),SCALK,
73 . VXI(MVSIZ),VYI(),VZI(MVSIZ),MSI()
75 . NX1(MVSIZ), NX2(MVSIZ), NX3(MVSIZ), NX4(MVSIZ),
76 . NY1(MVSIZ), NY2(), NY3(MVSIZ), NY4(MVSIZ),
77 . NZ1(MVSIZ), NZ2(MVSIZ), NZ3(MVSIZ), NZ4(MVSIZ),
78 . (MVSIZ), LB2(MVSIZ), LB3(MVSIZ), LB4(MVSIZ),
79 . LC1(MVSIZ), LC2(MVSIZ), LC3(MVSIZ), LC4(MVSIZ),
80 . P1(MVSIZ), P2(), P3(MVSIZ), P4(MVSIZ), STIF(MVSIZ),
81 . gapv(mvsiz),ki11(3,3,mvsiz),kj11
82 . kk11(3,3,mvsiz),kl11(3,3,mvsiz),ki12(3,3,mvsiz),
83 . kj12(3,3,mvsiz),kk12(3,3,mvsiz),kl12(3,3,mvsiz)
85 . x1(mvsiz),y1(mvsiz),z1(mvsiz),
86 . x2(mvsiz),y2(mvsiz),z2(mvsiz),
87 . x3(mvsiz),y3(mvsiz),z3(mvsiz),
88 . x4(mvsiz),y4(mvsiz),z4(mvsiz),
89 . xi(mvsiz),yi(mvsiz),zi(mvsiz),x(3,*)
93 INTEGER I, J1, J, K,IG,ISF,NN,NS,JLTF,NE
95 . N1(MVSIZ), N2(MVSIZ), N3(MVSIZ), PENE(MVSIZ),
96 . H1(MVSIZ), H2(MVSIZ), H3(MVSIZ), H4(MVSIZ),
97 . (MVSIZ), VY(MVSIZ), VZ(MVSIZ), VN(MVSIZ),
98 . s2,fac,facf, h0, la1, la2, la3, la4,fact(mvsiz),
99 . d1,d2,d3,d4,a1,a2,a3,a4,kn(4,mvsiz),q(3,3,mvsiz)
101 . prec,q11,q12,q13,q22,q23,q33,h00,vtx,vty,vtz,vt,
102 . kt1,kt2,kt3,kt4,q1,q2
117 IF (imp_int7==3)
THEN
120 p1(i) = fourth*gapv(i)
122 p2(i) = fourth*gapv(i)
124 p3(i) = fourth*gapv(i)
126 p4(i) = fourth*gapv(i)
127 a1 = p1(i)/
max(em20,d1)
128 a2 = p2(i)/
max(em20,d2)
129 a3 = p3(i)/
max(em20,d3)
130 a4 = p4(i)/
max(em20,d4)
131 n1(i) = a1*nx1(i) + a2*nx2(i) + a3*nx3(i) + a4*nx4(i)
132 n2(i) = a1*ny1(i) + a2*ny2(i) + a3
133 n3(i) = a1*nz1(i) + a2*nz2(i)
139 p1(i) =
max(zero, gapv(i) - d1)
142 p2(i) =
max(zero, gapv(i) - d2)
145 p3(i) =
max(zero, gapv(i) - d3)
148 p4(i) =
max(zero, gapv(i) - d4)
150 a1 = p1(i)/
max(em20,d1)
151 a2 = p2(i)/
max(em20,d2)
152 a3 = p3(i)/
max(em20,d3)
153 a4 = p4(i)/
max(em20,d4)
154 n1(i) = a1*nx1(i) + a2*nx2(i) + a3*nx3(i) + a4*nx4(i)
155 n2(i) = a1*ny1(i) + a2*ny2(i) + a3*ny3(i) + a4*ny4(i)
156 n3(i) = a1*nz1(i) + a2*nz2(i) + a3*nz3(i) + a4*nz4(i)
161 IF(ix3(i)/=ix4(i))
THEN
162 pene(i) =
max(p1(i),p2(i),p3(i),p4(i))
164 la1 = one - lb1(i) - lc1(i)
165 la2 = one - lb2(i) - lc2(i)
166 la3 = one - lb3(i) - lc3(i)
167 la4 = one - lb4(i) - lc4(i)
170 . (p1(i)*la1 + p2(i)*la2 + p3(i)*la3 + p4(i)*la4)
171 h1(i) = h0 + p1(i) * lb1(i) + p4(i) * lc4(i)
172 h2(i) = h0 + p2(i) * lb2(i) + p1(i) * lc1(i)
173 h3(i) = h0 + p3(i) * lb3(i) + p2(i) * lc2(i)
174 h4(i) = h0 + p4(i) * lb4(i) + p3(i) * lc3(i)
175 h00 = one/
max(em20,h1(i) + h2(i) + h3(i) + h4(i))
188 h3(i) = one - lb1(i) - lc1(i)
207 rr =
min(rr , rx*rx + ry*ry + rz*rz)
211 rr =
min(rr , rx*rx + ry*ry + rz*rz)
215 rr =
min(rr , rx*rx + ry*ry + rz*rz)
216 IF(ix3(i)/=ix4(i))
THEN
220 rr =
min(rr , rx*rx + ry*ry + rz*rz)
225 rs = sqrt(rx*rx + ry*ry + rz*rz)
227 IF(rs-rr+gapv(i)<0.)
THEN
230 ELSEIF(rs-rr+gapv(i)<pene(i))
THEN
231 pene(i) = rs-rr+gapv(i)
237 ELSEIF(icurv(1)==2)
THEN
249 aan = 1. / (anx*anx + any*any + anz*anz)
254 aaa = (aax*anx + aay*any + aaz*anz) * aan
258 rr =
min(rr , rx*rx + ry*ry + rz*rz)
262 aaa = (aax*anx + aay*any + aaz*anz) * aan
266 rr =
min(rr , rx*rx + ry*ry + rz*rz)
270 aaa = (aax*anx + aay*any + aaz*anz) * aan
274 rr =
min(rr , rx*rx + ry*ry + rz*rz)
275 IF(ix3(i)/=ix4(i))
THEN
279 aaa = (aax*anx + aay*any + aaz*anz) * aan
283 rr =
min(rr , rx*rx + ry*ry + rz*rz)
288 aaa = (aax*anx + aay*any + aaz*anz) * aan
292 rs = sqrt(rx*rx + ry*ry + rz*rz)
294 IF(rs-rr+gapv(i)<0.)
THEN
297 ELSEIF(rs-rr+gapv(i)<pene(i))
THEN
298 pene(i) = rs-rr+gapv(i)
304 ELSEIF(icurv(1) == 3)
THEN
309 s2 = one/
max(em30,sqrt(n1(i)**2 + n2
316 vx(i) = vxi(i) - h1(i)*v(1,ix1(i)) - h2(i)*v(1,ix2(i))
317 . - h3(i)*v(1,ix3(i)) - h4(i)*v(1,ix4(i))
318 vy(i) = vyi(i) - h1(i)*v(2,ix1(i))
319 . - h3(i)*v(2,ix3(i)) - h4(i)*v(2,ix4(i))
320 vz(i) = vzi(i) - h1(i)*v(3,ix1(i)) - h2(i)*v(3,ix2(i))
321 . - h3(i)*v(3,ix3(i)) - h4(i)*v(3,ix4(i))
322 vn(i) = n1(i)*vx(i) + n2(i)*vy(i) + n3(i)*vz(i)
324 h0 = -.25*(h1(i) - h2(i) + h3(i) - h4(i))
325 h0 =
min(h0,h2(i),h4(i))
326 h0 =
max(h0,-h1(i),-h3(i))
327 IF(ix3(i)==ix4(i))h0 = zero
338 pene(i)=
max(zero,pene(i)-cand_p(index(i)))
339 IF( pene(i)==zero ) stif(i) = zero
340 gapv(i)=gapv(i)-cand_p(index(i))
342 ELSE IF(inacti==6)
THEN
344 cand_p(index(i))=
min(cand_p(index(i)),
345 . ( (one-fiveem2)*cand_p(index(i))
346 . +fiveem2*(pene(i)+fiveem2*(gapv(i)-pene(i)))) )
347 pene(i)=
max(zero,pene(i)-cand_p(index(i)))
348 IF( pene(i)==zero ) stif(i) = zero
349 gapv(i)=gapv(i)-cand_p(index(i))
357 stif(i) = half*stif(i)
358 ELSEIF(stif(i)/=zero)
THEN
362 ELSEIF(imp_int7==1)
THEN
364 fac = gapv(i)/
max( em10,( gapv(i)-pene(i) ) )
365 IF( (gapv(i)-pene(i))/gapv(i) <prec .AND.
366 . stif(i)>0. ) stif(i) = 0.
368 stif(i) = half*stif(i) * fac
369 ELSEIF(stif(i)/=zero)
THEN
370 stif(i) = stiglo * fac
376 fac = gapv(i)/
max( em10,( gapv(i)-pene(i) ) )
377 IF( (gapv(i)-pene(i))/gapv(i) <prec .AND.
378 . stif(i)>0. ) stif(i) = 0.
380 stif(i) = half*stif(i) * fac
381 ELSEIF(stif(i)/=zero)
THEN
382 stif(i) = stiglo * fac
386 stif(i) = stif(i) * gapv(i) /
387 .
max((gapv(i) - pene(i)),em10)
393 vtx = vx(i) -vn(i)*n1(i)
394 vty = vy(i) -vn(i)*n2(i)
395 vtz = vz(i) -vn(i)*n3(i)
396 vt = vtx*vtx+vty*vty+vtz*vtz
405 q(2,1,i)=q(3,2,i)*q(1,3,i)-q(3,3,i)*q(1,2,i)
406 q(2,2,i)=q(3,3,i)*q(1,1,i)-q(3,1,i)*q(1,3,i)
407 q(2,3,i)=q(3,1,i)*q(1,2,i)-q(3,2,i)*q(1,1,i)
423 ELSEIF (vn(i)<zero)
THEN
451 ki11(1,1,i)=kn(1,i)*q11
452 ki11(1,2,i)=kn(1,i)*q12
453 ki11(1,3,i)=kn(1,i)*q13
454 ki11(2,2,i)=kn(1,i)*q22
455 ki11(2,3,i)=kn(1,i)*q23
456 ki11(3,3,i)=kn(1,i)*q33
457 kj11(1,1,i)=kn(2,i)*q11
458 kj11(1,2,i)=kn(2,i)*q12
459 kj11(1,3,i)=kn(2,i)*q13
460 kj11(2,2,i)=kn(2,i)*q22
461 kj11(2,3,i)=kn(2,i)*q23
462 kj11(3,3,i)=kn(2,i)*q33
463 kk11(1,1,i)=kn(3,i)*q11
464 kk11(1,2,i)=kn(3,i)*q12
465 kk11(1,3,i)=kn(3,i)*q13
466 kk11(2,2,i)=kn(3,i)*q22
467 kk11(2,3,i)=kn(3,i)*q23
468 kk11(3,3,i)=kn(3,i)*q33
469 kl11(1,1,i)=kn(4,i)*q11
470 kl11(1,2,i)=kn(4,i)*q12
472 kl11(2,2,i)=kn(4,i)*q22
473 kl11(2,3,i)=kn(4,i)*q23
474 kl11(3,3,i)=kn(4,i)*q33
480 IF (fact(i)>zero)
THEN
481 q1 =q(1,j,i)*q(1,k,i)
482 q2 =q(2,j,i)*q(2,k,i)
485 ki11(j,k,i)=ki11(j,k,i)+kt1
487 kj11(j,k,i)=kj11(j,k,i)+kt2
489 kk11(j,k,i)=kk11(j,k,i)+kt3
491 kl11(j,k,i)=kl11(j,k,i)+kt4
500 ki12(j,k,i)=-ki11(j,k,i)
501 kj12(j,k,i)=-kj11(j,k,i)
502 kk12(j,k,i)=-kk11(j,k,i)
503 kl12(j,k,i)=-kl11(j,k,i)
510 ki12(k,j,i)=-ki11(j,k,i)
511 kj12(k,j,i)=-kj11(j,k,i)
512 kk12(k,j,i)=-kk11(j,k,i)
513 kl12(k,j,i)=-kl11(j,k,i)
522 IF (
intp_d <= 0 .AND. nspmd > 1)
THEN
552 1 N1 ,N2 ,N3 ,H1 ,H2 ,
553 2 H3 ,H4 ,IX1 ,IX2 ,IX3 ,
554 2 IX4 ,INDEX ,VXI ,VYI ,VZI ,
555 3 MSI ,DXI ,DYI ,DZI ,STIF ,
564#include "implicit_f.inc"
568#include "mvsiz_p.inc"
572 INTEGER JLT, INACTI,NIN
573 INTEGER IX1(), IX2(MVSIZ), IX3(MVSIZ), IX4(MVSIZ),
576 . A(3,*), MS(*), V(3,*),D(3,*),
577 . FRIC,SCALK,DXI(MVSIZ),DYI(MVSIZ),DZI(MVSIZ),
578 . H1(MVSIZ), H2(MVSIZ), H3(MVSIZ), H4(),
579 . vxi(mvsiz),vyi(mvsiz),vzi(mvsiz),msi(mvsiz)
581 . n1(mvsiz), n2(mvsiz), n3(mvsiz),stif(mvsiz)
585 INTEGER I, J1, J, K,,ISF,NN,NS,NI
587 . VX(MVSIZ), VY(), VZ(), VN(MVSIZ),
588 . DX(MVSIZ), DY(MVSIZ), DZ(MVSIZ), DN(MVSIZ),
589 . DNI(),DT(MVSIZ), DTI(MVSIZ),
590 . S2,FACN(MVSIZ),FACF, FACT(MVSIZ)
592 . fx,fy,fz,fn,ft,fni,fti,vtx,vty,vtz,vt,
593 . t1(mvsiz), t2(mvsiz), t3(mvsiz),
594 . kt1,kt2,kt3,kt4,q1,q2,h0
599 vx(i) = vxi(i) - h1(i)*v(1,ix1(i)) - h2(i)*v(1,ix2(i))
600 . - h3(i)*v(1,ix3(i)) - h4(i)*v(1,ix4(i))
601 vy(i) = vyi(i) - h1(i)*v(2,ix1(i)) - h2(i)*v(2,ix2(i))
602 . - h3(i)*v(2,ix3(i)) - h4(i)*v(2,ix4(i))
603 vz(i) = vzi(i) - h1(i)*v(3,ix1(i)) - h2(i)*v(3,ix2(i))
604 . - h3(i)*v(3,ix3(i)) - h4(i)*v(3,ix4(i))
605 vn(i) = n1(i)*vx(i) + n2(i)*vy(i) + n3(i)*vz(i)
606 dx(i) = dxi(i) - h1(i)*d(1,ix1(i)) - h2(i)*d(1,ix2(i))
607 . - h3(i)*d(1,ix3(i)) - h4(i)*d(1,ix4(i))
608 dy(i) = dyi(i) - h1(i)*d(2,ix1(i)) - h2(i)*d(2,ix2(i))
609 . - h3(i)*d(2,ix3(i)) - h4(i)*d(2,ix4(i))
610 dz(i) = dzi(i) - h1(i)*d(3,ix1(i)) - h2(i)*d(3,ix2(i))
611 . - h3(i)*d(3,ix3(i)) - h4(i)*d(3,ix4(i))
612 dn(i) = n1(i)*dx(i) + n2(i)*dy(i) + n3
613 dni(i) = n1(i)*dxi(i) + n2(i)*dyi(i) + n3(i)*dzi(i)
617 vtx = vx(i) -vn(i)*n1(i)
618 vty = vy(i) -vn(i)*n2(i)
619 vtz = vz(i) -vn(i)*n3(i)
620 vt = vtx*vtx+vty*vty+vtz*vtz
635 dt(i) = t1(i)*dx(i) + t2(i)*dy(i) + t3(i)*dz(i)
636 dti(i) = t1(i)*dxi(i) + t2(i)*dyi(i) + t3(i)*dzi(i)
648 ELSEIF (vn(i)<zero)
THEN
653 fact(i)=facn(i)*fact(i)
658 fact(i)=facn(i)*fact(i)
667 IF (fact(i)/=zero)
THEN
673 a(1,ix1(i))=a(1,ix1(i))+fx*h1(i)
674 a(1,ix2(i))=a(1,ix2(i))+fx*h2(i)
675 a(1,ix3(i))=a(1,ix3(i))+fx*h3(i)
676 a(1,ix4(i))=a(1,ix4(i))+fx*h4(i)
677 a(2,ix1(i))=a(2,ix1(i))+fy*h1(i)
678 a(2,ix2(i))=a(2,ix2(i))+fy*h2(i)
679 a(2,ix3(i))=a(2,ix3(i))+fy*h3(i)
680 a(2,ix4(i))=a(2,ix4(i))+fy*h4(i)
681 a(3,ix1(i))=a(3,ix1(i))+fz*h1(i)
682 a(3,ix2(i))=a(3,ix2(i))+fz*h2(i)
683 a(3,ix3(i))=a(3,ix3(i))+fz*h3(i)
684 a(3,ix4(i))=a(3,ix4(i))+fz*h4(i)
690 ffi(1,ni)=ffi(1,ni)+fni*n1(i)
691 ffi(2,ni)=ffi(2,ni)+fni*n2(i)
692 ffi(3,ni)=ffi(3,ni)+fni*n3(i)
693 IF (fact(i)/=zero)
THEN
695 ffi(1,ni)=ffi(1,ni)+fti*t1(i)
696 ffi(2,ni)=ffi(2,ni)+fti*t2(i)
697 ffi(3,ni)=ffi(3,ni)+fti*t3(i)
711 1 NX1 ,NX2 ,NX3 ,NX4 ,NY1 ,
712 2 NY2 ,NY3 ,NY4 ,NZ1 ,NZ2 ,
713 3 NZ3 ,NZ4 ,LB1 ,LB2 ,LB3 ,
714 4 LB4 ,LC1 ,LC2 ,LC3 ,LC4 ,
715 5 P1 ,P2 ,P3 ,P4 ,NIN ,
716 6 IX1 ,IX2 ,IX3 ,IX4 ,NSVG ,
717 7 GAPV ,INACTI ,CAND_P ,INDEX ,STIGLO ,
718 8 STIF ,VXI ,VYI ,VZI ,MSI ,
719 F X ,IRECT ,CE_LOC ,MFROT ,IFQ ,
720 G FROT_P ,CAND_FX,CAND_FY,CAND_FZ,ALPHA0,
721 H DXI ,DYI ,DZI ,D ,SCALK ,
722 2 X1 ,X2 ,X3 ,X4 ,Y1 ,
723 3 Y2 ,Y3 ,Y4 ,Z1 ,Z2 ,
724 4 Z3 ,Z4 ,XI ,YI ,ZI ,
733#include "implicit_f.inc"
734#include "comlock.inc"
738#include
"mvsiz_p.inc"
742#include "com08_c.inc"
743#include "scr05_c.inc"
744#include "impl1_c.inc"
748 INTEGER JLT,INACTI,NIN,MFROT, IFQ, NOINT,IRECT(4,*)
749 INTEGER IX1(MVSIZ), IX2(MVSIZ), IX3(MVSIZ), IX4(MVSIZ),
750 . CE_LOC(MVSIZ),INDEX(MVSIZ),NSVG(MVSIZ)
752 . STIGLO,CAND_P(*),FROT_P(*), X(3,*),A(3,*), MS(*), V(3,*),
753 . CAND_FX(*),CAND_FY(*),CAND_FZ(*),ALPHA0,FRIC,SCALK,ICURV(3)
755 . NX1(MVSIZ), NX2(MVSIZ), NX3(MVSIZ), NX4(MVSIZ),
756 . NY1(MVSIZ), NY2(MVSIZ), NY3(MVSIZ), NY4(MVSIZ),
757 . NZ1(MVSIZ), NZ2(MVSIZ), NZ3(MVSIZ), NZ4(MVSIZ),
758 . LB1(MVSIZ), LB2(MVSIZ), LB3(MVSIZ), LB4(MVSIZ),
759 . LC1(MVSIZ), LC2(MVSIZ), LC3(MVSIZ), LC4(MVSIZ),
760 . (MVSIZ), P2(MVSIZ), P3(MVSIZ), P4(MVSIZ), STIF(MVSIZ),
761 . GAPV(MVSIZ),VXI(MVSIZ),VYI(MVSIZ),VZI(MVSIZ),MSI(MVSIZ),
762 . DXI(MVSIZ),DYI(MVSIZ),DZI(MVSIZ),D(3,*)
764 . x1(mvsiz),y1(mvsiz),z1(mvsiz),
765 . x2(mvsiz),y2(mvsiz),z2(mvsiz),
766 . x3(mvsiz),y3(mvsiz),z3(mvsiz),
767 . x4(mvsiz),y4(mvsiz),z4(mvsiz),
768 . xi(mvsiz),yi(mvsiz),zi(mvsiz)
772 INTEGER I, J1, IG, J, JG , K0,NBINTER,K1S,K,IL,IE, NN, NI,NS
774 . FXI(MVSIZ), FYI(MVSIZ), FZI(MVSIZ), FNI(MVSIZ),
775 . FXT(MVSIZ),FYT(MVSIZ),FZT(MVSIZ),STIF0(MVSIZ),
776 . N1(MVSIZ), N2(MVSIZ), N3(MVSIZ), PENE(MVSIZ),
777 . H1(MVSIZ), H2(MVSIZ), H3(), H4(MVSIZ),
778 . VX(), VY(MVSIZ), VZ(MVSIZ), VN(MVSIZ),XMU(),
779 . (MVSIZ), DY(), DZ(MVSIZ), DN0(MVSIZ),
781 . VNX, VNY, VNZ, AA, CRIT,S2,DIST,RDIST,
782 . v2, fm2, fac,ff,alphi,
alpha,beta,
783 . fx, fy, fz, f2, mas2, m2sk, dti,ft,fn,fmax,ftn,
784 . h0, la1, la2, la3, la4,d1,d2,d3,d4,a1,a2,a3,a4, ff0,
785 . vv,ax1,ax2,ay1,ay2,az1,az2,ax,ay,az,t1,t2,t3,dxt,
786 .
area,p,vv1,vv2,v21,dmu, dti2,h00 ,a0x,a0y,a0z,rx,ry,rz,
787 . anx,any,anz,aan,aax,aay,aaz ,rr,rs,aaa ,gap2 ,pene2,prec
798 IF(inacti==5.OR.inacti==6)
THEN
800 IF(stif(i)==zero)
THEN
811 d1 =
max(zero, gap2 - p1(i))
812 d2 =
max(zero, gap2 - p2(i))
813 d3 =
max(zero, gap2 - p3(i))
814 d4 =
max(zero, gap2 - p4(i))
815 pene2 =
max(d1,d2,d3,d4)
816 IF (pene2<=zero) stif(i) = zero
823 p1(i) =
max(zero, gapv(i) - d1)
826 p2(i) =
max(zero, gapv(i) - d2)
829 p3(i) =
max(zero, gapv(i) - d3)
832 p4(i) =
max(zero, gapv(i) - d4)
834 a1 = p1(i)/
max(em20,d1)
835 a2 = p2(i)/
max(em20,d2)
836 a3 = p3(i)/
max(em20,d3)
837 a4 = p4(i)/
max(em20,d4)
838 n1(i) = a1*nx1(i) + a2*nx2(i) + a3*nx3(i) + a4*nx4(i)
839 n2(i) = a1*ny1(i) + a2*ny2(i) + a3*ny3(i) + a4*ny4(i)
840 n3(i) = a1*nz1(i) + a2*nz2(i) + a3*nz3(i) + a4*nz4(i)
844 IF(ix3(i)/=ix4(i))
THEN
845 pene(i) =
max(p1(i),p2(i),p3(i),p4(i))
847 la1 = one - lb1(i) - lc1(i)
848 la2 = one - lb2(i) - lc2(i)
849 la3 = one - lb3(i) - lc3(i)
850 la4 = one - lb4(i) - lc4(i)
853 . (p1(i)*la1 + p2(i)*la2 + p3(i)*la3 + p4(i)*la4)
854 h1(i) = h0 + p1(i) * lb1(i) + p4(i) * lc4(i)
855 h2(i) = h0 + p2(i) * lb2(i) + p1(i) * lc1(i)
856 h3(i) = h0 + p3(i) * lb3(i) + p2(i) * lc2(i)
857 h4(i) = h0 + p4(i) * lb4(i) + p3(i) * lc3(i)
858 h00 = one/
max(em20,h1(i) + h2(i) + h3(i) + h4(i))
871 h3(i) = one - lb1(i) - lc1(i)
890 rr =
min(rr , rx*rx + ry*ry + rz*rz)
894 rr =
min(rr , rx*rx + ry*ry + rz*rz)
898 rr =
min(rr , rx*rx + ry*ry + rz*rz)
899 IF(ix3(i)/=ix4(i))
THEN
903 rr =
min(rr , rx*rx + ry*ry + rz*rz)
908 rs = sqrt(rx*rx + ry*ry + rz*rz)
910 IF(rs-rr+gapv(i)<0.)
THEN
913 ELSEIF(rs-rr+gapv(i)<pene(i))
THEN
914 pene(i) = rs-rr+gapv(i)
920 ELSEIF(icurv(1)==2)
THEN
932 aan = 1. / (anx*anx + any*any + anz*anz)
937 aaa = (aax*anx + aay*any + aaz*anz) * aan
941 rr =
min(rr , rx*rx + ry*ry + rz*rz)
945 aaa = (aax*anx + aay*any + aaz*anz) * aan
949 rr =
min(rr , rx*rx + ry*ry + rz*rz)
953 aaa = (aax*anx + aay*any + aaz*anz) * aan
957 rr =
min(rr , rx*rx + ry*ry + rz*rz)
958 IF(ix3(i)/=ix4(i))
THEN
962 aaa = (aax*anx + aay*any + aaz*anz) * aan
966 rr =
min(rr , rx*rx + ry*ry + rz*rz)
971 aaa = (aax*anx + aay*any + aaz*anz) * aan
975 rs = sqrt(rx*rx + ry*ry + rz*rz)
977 IF(rs-rr+gapv(i)<0.)
THEN
980 ELSEIF(rs-rr+gapv(i)<pene(i))
THEN
981 pene(i) = rs-rr+gapv(i)
987 ELSEIF(icurv(1) == 3)
THEN
992 s2 = one/
max(em30,sqrt(n1(i)**2 + n2(i)**2 + n3(i)**2))
999 dx(i) = dxi(i) - h1(i)*d(1,ix1(i)) - h2(i)*d(1,ix2(i))
1000 . - h3(i)*d(1,ix3(i)) - h4(i)*d(1,ix4(i))
1001 dy(i) = dyi(i) - h1(i)*d(2,ix1(i)) - h2(i)*d(2,ix2(i))
1002 . - h3(i)*d(2,ix3(i)) - h4(i)*d(2,ix4(i))
1003 dz(i) = dzi(i) - h1(i)*d(3,ix1(i)) - h2(i)*d(3,ix2(i))
1004 . - h3(i)*d(3,ix3(i)) - h4(i)*d(3,ix4(i))
1005 dn0(i) = n1(i)*dx(i) + n2(i)*dy(i) + n3(i)*dz(i)
1009 vx(i) = vxi(i) - h1(i)*v(1,ix1(i)) - h2(i)*v(1,ix2(i))
1010 . - h3(i)*v(1,ix3(i)) - h4(i)*v(1,ix4(i))
1011 vy(i) = vyi(i) - h1(i)*v(2,ix1(i)) - h2(i)*v(2,ix2(i))
1012 . - h3(i)*v(2,ix3(i)) - h4(i)*v(2,ix4(i))
1013 vz(i) = vzi(i) - h1(i)*v(3,ix1(i)) - h2(i)*v(3,ix2(i))
1014 . - h3(i)*v(3,ix3(i)) - h4(i)*v(3,ix4(i))
1015 vn(i) = n1(i)*vx(i) + n2(i)*vy(i) + n3(i)*vz(i)
1017 h0 = -.25*(h1(i) - h2(i) + h3(i) - h4(i))
1018 h0 =
min(h0,h2(i),h4(i))
1019 h0 =
max(h0,-h1(i),-h3(i))
1020 IF(ix3(i)==ix4(i))h0 = zero
1032 cand_p(index(i))=
min(cand_p(index(i)),
1033 . ((one-fiveem2)*cand_p(index(i))+fiveem2*pene(i)) )
1035 pene(i)=
max(zero,pene(i)-cand_p(index(i)))
1036 IF( pene(i)==zero ) stif(i) = zero
1037 gapv(i)=gapv(i)-cand_p(index(i))
1039 ELSE IF(inacti==6)
THEN
1043 cand_p(index(i))=
min(cand_p(index(i)),
1044 . ( (one-fiveem2)*cand_p(index(i))
1045 . +fiveem2*(pene(i)+fiveem2*(gapv(i)-pene(i)))) )
1047 pene(i)=
max(zero,pene(i)-cand_p(index(i)))
1048 IF( pene(i)==zero ) stif(i) = zero
1049 gapv(i)=gapv(i)-cand_p(index(i))
1059 IF(stiglo<=zero)
THEN
1060 stif(i) = half*stif(i)
1061 ELSEIF(stif(i)/=zero)
THEN
1065 ELSEIF(imp_int7==1)
THEN
1067 fac = gapv(i)/
max( em10,( gapv(i)-pene(i) ) )
1068 IF( (gapv(i)-pene(i))/gapv(i) <prec .AND.
1069 . stif(i)>0. ) stif(i) = 0.
1070 IF(stiglo<=zero)
THEN
1071 stif(i) = half*stif(i) * fac
1072 ELSEIF(stif(i)/=zero)
THEN
1073 stif(i) = stiglo * fac
1078 fac = gapv(i)/
max( em10,( gapv(i)-pene(i) ) )
1079 IF( (gapv(i)-pene(i))/gapv(i) <prec .AND.
1080 . stif(i)>0. ) stif(i) = 0.
1081 IF(stiglo<=zero)
THEN
1082 stif(i) = half*stif(i) * fac
1083 ELSEIF(stif(i)/=zero)
THEN
1084 stif(i) = stiglo * fac
1088 stif(i) = stif(i) * gapv(i) /
1089 .
max((gapv(i) - pene(i)),em10)
1096 fni(i)= -stif(i) * dn0(i)
1112 ELSEIF (mfrot==1)
THEN
1116 aa = n1(i)*vx(i) + n2(i)*vy(i) + n3(i)*vz(i)
1117 v2 = (vx(i) - n1(i)*aa)**2
1118 . + (vy(i) - n2(i)*aa)**2
1119 . + (vz(i) - n3(i)*aa)**2
1120 vv = sqrt(
max(em30,v2))
1121 ax1 = x(1,irect(3,ie)) - x(1,irect(1,ie))
1122 ay1 = x(2,irect(3,ie)) - x(2,irect(1,ie))
1123 az1 = x(3,irect(3,ie)) - x(3,irect(1,ie))
1124 ax2 = x(1,irect(4,ie)) - x(1,irect(2,ie))
1125 ay2 = x(2,irect(4,ie)) - x(2,irect(2,ie))
1126 az2 = x(3,irect(4,ie)) - x(3,irect(2,ie))
1127 ax = ay1*az2 - az1*ay2
1128 ay = az1*ax2 - ax1*az2
1129 az = ax1*ay2 - ay1*ax2
1130 area = half*sqrt(ax*ax+ay*ay+az*az)
1132 xmu(i) = fric + (frot_p(1) + frot_p(4)*p ) * p
1133 . +(frot_p(2) + frot_p(3)*p) * vv + frot_p(5)*v2
1135 ELSEIF(mfrot==2)
THEN
1139 aa = n1(i)*vx(i) + n2(i)*vy(i) + n3(i)*vz(i)
1140 v2 = (vx(i) - n1(i)*aa)**2
1141 . + (vy(i) - n2(i)*aa)**2
1142 . + (vz(i) - n3(i)*aa)**2
1143 vv = sqrt(
max(em30,v2))
1144 ax1 = x(1,irect(3,ie)) - x(1,irect(1,ie))
1145 ay1 = x(2,irect(3,ie)) - x(2,irect(1,ie))
1146 az1 = x(3,irect(3,ie)) - x(3,irect(1,ie))
1147 ax2 = x(1,irect(4,ie)) - x(1,irect(2,ie))
1148 ay2 = x(2,irect(4,ie)) - x(2,irect(2,ie))
1149 az2 = x(3,irect(4,ie)) - x(3,irect(2,ie))
1150 ax = ay1*az2 - az1*ay2
1151 ay = az1*ax2 - ax1*az2
1152 az = ax1*ay2 - ay1*ax2
1153 area = half*sqrt(ax*ax+ay*ay+az*az)
1155 xmu(i) = frot_p(1)*exp(frot_p(2)*vv)*p*p
1156 . + frot_p(3)*exp(frot_p(4)*vv)*p
1157 . + frot_p(5)*exp(frot_p(6)*vv)
1159 ELSEIF (mfrot==3)
THEN
1162 aa = n1(i)*vx(i) + n2(i)*vy(i) + n3(i)*vz(i)
1163 v2 = (vx(i) - n1(i)*aa)**2
1164 . + (vy(i) - n2(i)*aa)**2
1165 . + (vz(i) - n3(i)*aa)**2
1166 vv = sqrt(
max(em30,v2))
1167 IF(vv>=0.AND.vv<=frot_p(5))
THEN
1168 dmu = frot_p(3)-frot_p(1)
1169 vv1 = vv / frot_p(5)
1170 xmu(i) = frot_p(1)+ dmu*vv1*(two-vv1)
1171 ELSEIF(vv>frot_p(5).AND.vv<frot_p(6))
THEN
1172 dmu = frot_p(4)-frot_p(3)
1173 vv1 = (vv - frot_p(5))/(frot_p(6)-frot_p(5))
1174 xmu(i) = frot_p(3)+ dmu * (three-two*vv1)*vv1**2
1176 dmu = frot_p(2)-frot_p(4)
1177 vv2 = (vv - frot_p(6))**2
1178 xmu(i) = frot_p(2) - dmu / (one + dmu*vv2)
1186 IF (ifq>=10.AND.scalk<zero)
THEN
1196 fx = cand_fx(index(i)) +
alpha*fx
1197 fy = cand_fy(index(i)) +
alpha*fy
1198 fz = cand_fz(index(i)) +
alpha*fz
1199 ftn = fx*n1(i) + fy*n2(i) + fz*n3(i)
1203 ft = fx*fx + fy*fy + fz*fz
1205 fn = fxi(i)**2+fyi(i)**2+fzi(i)**2
1206 beta =
min(one,xmu(i)*sqrt(fn/ft))
1211 fxi(i)=fxi(i) + fxt(i)
1212 fyi(i)=fyi(i) + fyt(i)
1213 fzi(i)=fzi(i) + fzt(i)
1227 v2 = vx(i)**2 + vy(i)**2 + vz(i)**2
1229 aa = dxt/
max(em30,v2)
1233 ftn = -xmu(i)*stif(i) * dxt
1238 fxi(i)=fxi(i) + fxt(i)
1239 fyi(i)=fyi(i) + fyt(i)
1240 fzi(i)=fzi(i) + fzt(i)
1251 a(1,ix1(i))=a(1,ix1(i))+fx*h1(i)
1252 a(1,ix2(i))=a(1,ix2(i))+fx*h2(i)
1253 a(1,ix3(i))=a(1,ix3(i))+fx*h3(i)
1254 a(1,ix4(i))=a(1,ix4(i))+fx*h4(i)
1255 a(2,ix1(i))=a(2,ix1(i))+fy*h1(i)
1256 a(2,ix2(i))=a(2,ix2(i))+fy*h2(i)
1257 a(2,ix3(i))=a(2,ix3(i))+fy*h3(i)
1258 a(2,ix4(i))=a(2,ix4(i))+fy*h4(i)
1259 a(3,ix1(i))=a(3,ix1(i))+fz*h1(i)
1260 a(3,ix2(i))=a(3,ix2(i))+fz*h2(i)
1261 a(3,ix3(i))=a(3,ix3(i))+fz*h3(i)
1262 a(3,ix4(i))=a(3,ix4(i))+fz*h4(i)
1269 a(1,ig)=a(1,ig)-fxi(i)
1270 a(2,ig)=a(2,ig)-fyi(i)
1271 a(3,ig)=a(3,ig)-fzi(i)
1275 ffi(1,ns)=ffi(1,ns)-fxi(i)
1276 ffi(2,ns)=ffi(2,ns)-fyi(i)
1277 ffi(3,ns)=ffi(3,ns)-fzi(i)
subroutine i7kfor3(jlt, a, v, ms, fric, nx1, nx2, nx3, nx4, ny1, ny2, ny3, ny4, nz1, nz2, nz3, nz4, lb1, lb2, lb3, lb4, lc1, lc2, lc3, lc4, p1, p2, p3, p4, nin, ix1, ix2, ix3, ix4, nsvg, gapv, inacti, cand_p, index, stiglo, stif, vxi, vyi, vzi, msi, x, irect, ce_loc, mfrot, ifq, frot_p, cand_fx, cand_fy, cand_fz, alpha0, dxi, dyi, dzi, d, scalk, x1, x2, x3, x4, y1, y2, y3, y4, z1, z2, z3, z4, xi, yi, zi, icurv)
subroutine i7keg3(jlt, a, v, ms, fric, nx1, nx2, nx3, nx4, ny1, ny2, ny3, ny4, nz1, nz2, nz3, nz4, lb1, lb2, lb3, lb4, lc1, lc2, lc3, lc4, p1, p2, p3, p4, nin, ix1, ix2, ix3, ix4, nsvg, gapv, inacti, cand_p, index, stiglo, stif, vxi, vyi, vzi, msi, ki11, ki12, kj11, kj12, kk11, kk12, kl11, kl12, off, scalk, lrem, icurv, x, x1, x2, x3, x4, y1, y2, y3, y4, z1, z2, z3, z4, xi, yi, zi)