36 SUBROUTINE i7for3(OUTPUT,JLT ,A ,V ,IBCC ,ICODT ,
37 2 FSAV ,GAP ,FRIC ,MS ,VISC ,
38 3 VISCF ,NOINT ,STFN ,ITAB ,CN_LOC ,
39 4 STIGLO ,STIFN ,STIF ,FSKYI ,ISKY ,
40 5 NX1 ,NX2 ,NX3 ,NX4 ,NY1 ,
41 6 NY2 ,NY3 ,NY4 ,NZ1 ,NZ2 ,
42 7 NZ3 ,NZ4 ,LB1 ,LB2 ,LB3 ,
43 8 LB4 ,LC1 ,LC2 ,LC3 ,LC4 ,
44 9 P1 ,P2 ,P3 ,P4 ,FCONT ,
45 A IX1 ,IX2 ,IX3 ,IX4 ,NSVG ,
46 B IVIS2 ,NELTST ,ITYPTST ,DT2T ,GAPV ,
47 C INACTI ,CAND_P ,INDEX ,KINET ,NEWFRONT,
48 D ISECIN ,NSTRF ,X ,IRECT ,CE_LOC ,
49 E MFROT ,IFQ ,CAND_FX ,CAND_FY ,
50 F CAND_FZ ,ALPHA0 ,IFPEN ,IBAG ,
51 H ICONTACT ,VISCN ,VXI ,VYI ,VZI ,
52 I MSI ,KINI ,NIN ,NISUB ,LISUB ,
53 J ADDSUBS ,ADDSUBM ,LISUBS ,LISUBM ,FSAVSUB ,
54 K CAND_N ,ILAGM ,ICURV ,NOD_NORMAL ,FNCONT ,
55 L FTCONT ,X1 ,X2 ,X3 ,X4 ,
56 M Y1 ,Y2 ,Y3 ,Y4 ,Z1 ,
57 N Z2 , Z3 ,Z4 ,XI ,YI ,
58 O ZI , IADM ,RCURVI ,RCONTACT ,ACONTACT,
59 P PCONTACT ,ANGLMI ,PADM ,INTTH ,TEMP ,
60 Q TEMPI ,IFORM ,NPC ,TF ,CMAJ ,
61 R DTMINI ,DRAD ,FHEATS ,FHEATM ,EFRICT ,
64 U H2 ,H3 ,H4 ,KS ,KT ,
65 V K1 ,K2 ,K3 ,K4 ,C1 ,
67 X CF ,TINT ,XFRIC ,FXI ,FYI ,
68 Y FZI ,FX1 ,FY1 ,FZ1 ,FX2 ,
69 Z FY2 ,FZ2 ,FX3 ,FY3 ,FZ3 ,
70 1 FX4 ,FY4 ,FZ4 ,ISENSINT ,FSAVPARIT,
71 5 NFT ,SYM_FLAG_TYPE19,H3D_DATA,FRICC ,VISCFFRIC,
72 6 FRIC_COEFS ,ITIED ,JLT_TIED ,CAND_F ,IORTHFRIC,
73 7 FRIC_COEFS2,FRICC2 ,VISCFFRIC2,NFORTH ,NFISOT ,
74 8 INDEXORTH ,INDEXISOT ,DIR1 ,DIR2 ,TAGNCONT ,
75 9 KLOADPINTER,LOADPINTER,LOADP_HYD_INTER,TYPSUB,INFLG_SUBS,
76 A INFLG_SUBM,NINLOADP ,DGAPLOADINT,S_LOADPINTER,DGAPLOADP,
88#include "implicit_f.inc"
100#include "com08_c.inc"
101#include "scr05_c.inc"
102#include "scr07_c.inc"
103#include "scr11_c.inc"
104#include "scr14_c.inc"
105#include "scr16_c.inc"
106#include "scr18_c.inc"
108#include "units_c.inc"
109#include "parit_c.inc"
110#include "param_c.inc"
111#include "impl1_c.inc"
112#include "kincod_c.inc"
116 TYPE(output_),
INTENT(INOUT) :: OUTPUT
117 INTEGER NELTST,ITYPTST,JLT,IBCC,IBCM,IBCS,IVIS2,INACTI,IBAG,NIN,
118 . IFRIC,IFORM,INTFRIC,ITIED,JLT_TIED,IORTHFRIC,NFORTH ,NFISOT ,
119 . ICODT(*), ITAB(*), ISKY(*), KINET(*),
120 . MFROT, IFQ, NOINT,NEWFRONT,ISECIN, NSTRF(*),
121 . IRECT(4,*),IFPEN(*) ,ICONTACT(*), CAND_N(*),
122 . KINI(*),NPC(*),JTASK,TAGNCONT(NLOADP_HYD_INTER,NUMNOD),
124 . iset, iadm,intth,nft
125 INTEGER IX1(MVSIZ), IX2(MVSIZ), IX3(MVSIZ), IX4(MVSIZ),
126 . CN_LOC(MVSIZ),CE_LOC(MVSIZ),INDEX(MVSIZ),NSVG(MVSIZ),
127 . NISUB, LISUB(*), ADDSUBS(*), ADDSUBM(*), LISUBS(*),
128 . LISUBM(*),ILAGM,ICURV(3), ISENSINT(*),SYM_FLAG_TYPE19,
129 . INDEXORTH(MVSIZ) ,INDEXISOT(MVSIZ),INFLG_SUBS(*), INFLG_SUBM(*)
130 INTEGER ,
INTENT(IN) :: NINLOADP,S_LOADPINTER
131 INTEGER ,
INTENT(IN) :: KLOADPINTER(NINTER+1),LOADPINTER(S_LOADPINTER),
133 INTEGER ,
INTENT(IN) :: INTEREFRIC
135 . STIGLO,CAND_P(*), X(3,*),
136 . A(3,*), MS(*), V(3,*), FSAV(*),FCONT(3,*),
137 . CAND_FX(*),CAND_FY(*),CAND_FZ(*),ALPHA0,
138 . GAP, FRIC,VISC,VISCF,VIS,DT2T,STFN(*),STIFN(*),
139 . FSKYI(LSKYI,NFSKYI),FSAVSUB(NTHVKI,*), FNCONT(3,*),FTCONT(3,*),
140 . DTMINI,FHEATS,FHEATM,
141 . FSAVPARIT(NISUB+1,11,*), CAND_F(8,*)
143 . NX1(MVSIZ), NX2(MVSIZ), NX3(MVSIZ), NX4(MVSIZ),
144 . NY1(MVSIZ), NY2(MVSIZ), NY3(MVSIZ), NY4(MVSIZ),
145 . NZ1(MVSIZ), NZ2(MVSIZ), NZ3(MVSIZ), (MVSIZ),
146 . LB1(MVSIZ), LB2(MVSIZ), LB3(MVSIZ), LB4(MVSIZ),
147 . LC1(MVSIZ), LC2(MVSIZ), LC3(MVSIZ), LC4(MVSIZ),
148 . P1(MVSIZ), P2(MVSIZ), P3(MVSIZ), P4(MVSIZ), STIF(MVSIZ),
151 . STIFSAV(), VISCN(*),TF(*),
152 . VXI(MVSIZ),VYI(),VZI(MVSIZ),MSI(MVSIZ),
153 . X1(MVSIZ),Y1(MVSIZ),Z1(MVSIZ),
154 . X2(MVSIZ),Y2(MVSIZ),Z2(MVSIZ),
155 . X3(MVSIZ),Y3(MVSIZ),Z3(MVSIZ),
156 . X4(MVSIZ),Y4(MVSIZ),Z4(MVSIZ),
157 . xi(mvsiz),yi(mvsiz),zi(mvsiz),
158 . temp(*), tempi(mvsiz),
159 . fni(mvsiz), fns(mvsiz)
161 . nod_normal(3,*), rcurvi(*), rcontact(*), acontact(*),
162 . pcontact(*),padm, anglmi(*),cmaj(mvsiz), efrict(mvsiz),
163 . qfric,drad,tint,xfric,fric_coefs(mvsiz,10), fricc(mvsiz),
164 . viscffric(mvsiz),fric_coefs2(mvsiz,10),fricc2(mvsiz),
165 . viscffric2(mvsiz),dir1(mvsiz,3) ,dir2(mvsiz,3)
167 . ks(mvsiz),k1(mvsiz),k2(mvsiz),k3(mvsiz),k4(mvsiz),
168 . cs(mvsiz),c1(mvsiz),c2(mvsiz),c3(mvsiz),c4(mvsiz),
169 . kt(mvsiz),c(mvsiz),cf(mvsiz),
170 . fxi(mvsiz), fyi(mvsiz), fzi(mvsiz),
171 . fx1(mvsiz), fx2(mvsiz), fx3(mvsiz), fx4(mvsiz),
172 . fy1(mvsiz), fy2(mvsiz), fy3(mvsiz), fy4(mvsiz),
173 . fz1(mvsiz), fz2(mvsiz), fz3(mvsiz), fz4(mvsiz)
175 my_real ,
INTENT(IN) :: dgaploadp, dgaploadint(s_loadpinter)
179 INTEGER I, J1, IG, J, JG , K0,NBINTER,K1S,K,IL,IE, NN, NI, II,
180 . NA1,NA2,IPROJ,,PP,PPL,ITYPSUB,ISS1,ISS2,IMS1,IMS2
181 INTEGER JSUB,KSUB,JJ,KK,IN,NSUB
183 . fxr(mvsiz), fyr(mvsiz), fzr(mvsiz)
185 . fxt(mvsiz),fyt(mvsiz),fzt(mvsiz),
186 . n1(mvsiz), n2(mvsiz), n3(mvsiz), pene(mvsiz),
187 . vis2(mvsiz), dtmi(mvsiz), xmu(mvsiz),stif0(mvsiz),
188 . h1(mvsiz), h2(mvsiz), h3(mvsiz), h4(mvsiz),
189 . vx(mvsiz), vy(mvsiz), vz(mvsiz), vn(mvsiz),
190 . xp(mvsiz), yp(mvsiz), zp(mvsiz),efric_l(mvsiz),
191 . vnx, vny, vnz, aa, crit,s2,dist,rdist,
192 . v2, fm2, dt1inv, visca, fac,ff,alphi,
alpha,beta,
193 . fx, fy, fz, f2, mas2, m2sk, dtmi0,dti,ft,fn,fmax,ftn,
194 . facm1, econtt, econvt, h0, la1, la2, la3, la4,
195 . d1,d2,d3,d4,a1,a2,a3,a4,econtdt,econttied,
196 . fsav1, fsav2, fsav3, fsav4, fsav5, fsav6, fsav7, fsav8,
197 . fsav9, fsav10, fsav11, fsav12, fsav13, fsav14, fsav15,
198 . fsav22, fsav23, fsav24, ffo,
199 . e10, h0d, s2d, sum,
200 . la1d,la2d,la3d,la4d,t1,t1d,t2,t2d,ffd,visd,facd,d1d,
201 . p1s(mvsiz),p2s(mvsiz),p3s(mvsiz),p4s(mvsiz),
202 . d2d,d3d,d4d,vnxd,vnyd,vnzd,v2d,fm2d,f2d,aad,fxd,fyd,fzd,
203 . a1d,a2d,a3d,a4d,vv,ax1,ax2,ay1,ay2,az1,az2,ax,ay,az,
204 .
area,p,vv1,vv2,v21,dmu, dti2,h00 ,a0x,a0y,a0z,rx,ry,rz,
205 . anx,any,anz,aan,aax,aay,aaz ,rr,rs,aaa,stfr,visr ,tm,ts
207 . prec,nn1,nn2,nn3,nn4,xn1,yn1,zn1,xn2,yn2,zn2,xn3,yn3,zn3,
208 . xn4,yn4,zn4,efric_ls,efric_lm
210 . st1(mvsiz),st2(mvsiz),st3(mvsiz),st4(mvsiz),stv(mvsiz),
211 . cx,cy,cfi,aux, fx6(6,mvsiz), fy6(6,mvsiz), fz6(6,mvsiz),
212 . dtm, phim,qfrict,dydx,th,thi(mvsiz),frict(mvsiz),forc_sign,
213 . vt1(mvsiz), vt2(mvsiz),
214 . ft1(mvsiz),ft2(mvsiz),
215 . nx(mvsiz), ny(mvsiz), nz(mvsiz),
216 . t1x(mvsiz),t1y(mvsiz),t1z(mvsiz),
217 . t2x(mvsiz),t2y(mvsiz),t2z(mvsiz), dt05, norminv,
218 . xh, yh, zh, side(mvsiz),xmu2(mvsiz),csa ,sna ,alphaf ,ftt1 ,ftt2
219 . an(nforth) ,bn(nforth) ,nep1 ,nep2 ,nep ,c11 ,c22 ,ans , ep ,signc
221 . fsavsub1(24,nisub),impx,impy,impz,bb,gapr,dgap,gapp
252 efric_l(1:jlt) = zero
258 IF (sym_flag_type19 > 0) forc_sign = -one
263 IF((intth == 0.OR.drad == zero).AND.dgaploadp==zero)
THEN
264 IF(icurv(1) == 3)
THEN
272 p2(i) =
max(zero, bb - d2)
275 p3(i) =
max(zero, bb - d3)
278 p4(i) =
max(zero, bb - d4)
280 a1 = p1(i)/
max(em20,d1)
281 a2 = p2(i)/
max(em20,d2)
282 a3 = p3(i)/
max(em20,d3)
283 a4 = p4(i)/
max(em20,d4)
284 n1(i) = a1*nx1(i) + a2*nx2(i) + a3*nx3(i) + a4*nx4(i)
285 n2(i) = a1*ny1(i) + a2*ny2(i) + a3*ny3(i) + a4*ny4(i)
286 n3(i) = a1*nz1(i) + a2*nz2(i) + a3*nz3(i) + a4*nz4(i)
292 p1(i) =
max(zero, gapv(i) - d1)
295 p2(i) =
max(zero, gapv(i) - d2)
298 p3(i) =
max(zero, gapv(i) - d3)
301 p4(i) =
max(zero, gapv(i) - d4)
303 a1 = p1(i)/
max(em20,d1)
304 a2 = p2(i)/
max(em20,d2)
305 a3 = p3(i)/
max(em20,d3)
306 a4 = p4(i)/
max(em20,d4)
307 n1(i) = a1*nx1(i) + a2*nx2(i) + a3*nx3(i) + a4*nx4(i)
308 n2(i) = a1*ny1(i) + a2*ny2(i) + a3*ny3(i) + a4
309 n3(i) = a1*nz1(i) + a2*nz2(i) + a3*nz3(i) + a4*nz4(i)
314 IF(ix3(i)/=ix4(i))
THEN
315 pene(i) =
max(p1(i),p2(i),p3(i),p4(i))
317 la1 = one - lb1(i) - lc1(i)
318 la2 = one - lb2(i) - lc2(i)
319 la3 = one - lb3(i) - lc3(i)
320 la4 = one - lb4(i) - lc4(i)
323 . (p1(i)*la1 + p2(i)*la2 + p3(i)*la3 + p4(i)*la4)
324 h1(i) = h0 + p1(i) * lb1(i) + p4(i) * lc4(i)
325 h2(i) = h0 + p2(i) * lb2(i) + p1(i) * lc1(i)
326 h3(i) = h0 + p3(i) * lb3(i) + p2(i) * lc2(i)
327 h4(i) = h0 + p4(i) * lb4(i) + p3(i) * lc3(i)
328 h00 = one/
max(em20,h1(i) + h2(i) + h3(i) + h4(i))
341 h3(i) = one - lb1(i) - lc1(i)
346 IF(icurv(1) == 3)
THEN
348 bb = gapv(i)+cmaj(i)+dgaploadp
352 p1(i) =
max(zero, gapr - d1)
355 p2(i) =
max(zero, gapr - d2)
358 p3(i) =
max(zero, gapr - d3)
361 p4(i) =
max(zero, gapr - d4)
363 distp(i) =
max(d1,d2,d3,d4)
364 a1 = p1(i)/
max(em20,d1)
365 a2 = p2(i)/
max(em20,d2)
366 a3 = p3(i)/
max(em20,d3)
367 a4 = p4(i)/
max(em20,d4)
368 n1(i) = a1*nx1(i) + a2*nx2(i) + a3*nx3(i) + a4*nx4(i)
369 n2(i) = a1*ny1(i) + a2*ny2(i) + a3*ny3(i) + a4*ny4(i)
370 n3(i) = a1*nz1(i) + a2*nz2(i) + a3*nz3(i) + a4*nz4(i)
374 gapr =
max(gapv(i)+dgaploadp,drad)
377 p1(i) =
max(zero, gapr - d1)
380 p2(i) =
max(zero, gapr - d2)
383 p3(i) =
max(zero, gapr - d3)
386 p4(i) =
max(zero, gapr - d4)
388 distp(i) =
max(d1,d2,d3,d4)
390 a1 = p1(i)/
max(em20,d1)
391 a2 = p2(i)/
max(em20,d2)
392 a3 = p3(i)/
max(em20,d3)
393 a4 = p4(i)/
max(em20,d4)
394 n1(i) = a1*nx1(i) + a2*nx2(i) + a3*nx3(i) + a4*nx4(i)
395 n2(i) = a1*ny1(i) + a2*ny2(i) + a3*ny3(i) + a4*ny4(i)
396 n3(i) = a1*nz1(i) + a2*nz2(i) + a3*nz3(i) + a4*nz4(i)
401 IF(ix3(i)/=ix4(i))
THEN
402 pene(i) =
max(p1(i),p2(i),p3(i),p4(i))
403 pene(i) =
max(zero,pene(i)+gapv(i)-
max(gapv(i)+dgaploadp,drad))
405 la1 = one - lb1(i) - lc1(i)
406 la2 = one - lb2(i) - lc2(i)
407 la3 = one - lb3(i) - lc3(i)
408 la4 = one - lb4(i) - lc4(i)
411 . (p1(i)*la1 + p2(i)*la2 + p3(i)*la3
413 h1(i) = h0 + p1(i) * lb1(i) + p4(i) * lc4(i)
414 h2(i) = h0 + p2(i) * lb2(i) + p1(i) * lc1(i)
415 h3(i) = h0 + p3(i) * lb3(i) + p2(i) * lc2(i)
416 h4(i) = h0 + p4(i) * lb4(i) + p3(i) * lc3(i)
417 h00 = one/
max(em20,h1(i) + h2(i) + h3(i) + h4(i))
426 pene(i) =
max(zero,pene(i)+gapv(i)-
max(gapv(i)+dgaploadp,drad))
432 h3(i) = one - lb1(i) - lc1(i)
452 rr =
min(rr , rx*rx + ry*ry + rz*rz)
456 rr =
min(rr , rx*rx + ry*ry + rz*rz)
460 rr =
min(rr , rx*rx + ry*ry + rz*rz)
461 IF(ix3(i)/=ix4(i))
THEN
465 rr =
min(rr , rx*rx + ry*ry + rz*rz)
470 rs = sqrt(rx*rx + ry*ry + rz*rz)
472 IF(rs-rr+gapv(i)<0.)
THEN
475 ELSEIF(rs-rr+gapv(i)<pene(i))
THEN
476 pene(i) = rs-rr+gapv(i)
482 ELSEIF(icurv(1)==2)
THEN
493 aan = 1. / (anx*anx + any*any + anz*anz)
498 aaa = (aax*anx + aay*any + aaz*anz) * aan
502 rr =
min(rr , rx*rx + ry*ry + rz*rz)
506 aaa = (aax*anx + aay*any + aaz*anz) * aan
510 rr =
min(rr , rx*rx + ry*ry + rz*rz)
514 aaa = (aax*anx + aay*any + aaz*anz) * aan
518 rr =
min(rr , rx*rx + ry*ry + rz*rz)
519 IF(ix3(i)/=ix4(i))
THEN
523 aaa = (aax*anx + aay*any + aaz*anz) * aan
527 rr =
min(rr , rx*rx + ry*ry + rz*rz)
532 aaa = (aax*anx + aay*any + aaz*anz) * aan
536 rs = sqrt(rx*rx + ry*ry + rz*rz)
539 IF(rs-rr+gapv(i)<0.)
THEN
542 ELSEIF(rs-rr+gapv(i)<pene(i))
THEN
543 pene(i) = rs-rr+gapv(i)
547 ELSEIF(rs-rr-gapv(i)>0.)
THEN
550 ELSEIF(rs-rr-gapv(i) < pene(i))
THEN
562 . (zn1*xn2-zn2*xn1) * ry +
563 . (xn1*yn2-xn2*yn1) * rz
564 nn2 = (yn2*zn3-yn3*zn2) * rx +
565 . (zn2*xn3-zn3*xn2) * ry +
566 . (xn2*yn3-xn3*yn2) * rz
567 IF(ix3(i)/=ix4(i))
THEN
571 nn3 = (yn3*zn4-yn4*zn3) * rx +
572 . (zn3*xn4-zn4*xn3) * ry +
573 . (xn3*yn4-xn4*yn3) * rz
574 nn4 = (yn4*zn1-yn1*zn4) * rx +
575 . (zn4*xn1-zn1*xn4) * ry +
578 nn3 = (yn3*zn1-yn1*zn3) * rx +
579 . (zn3*xn1-zn1*xn3) * ry +
580 . (xn3*yn1-xn1*yn3) * rz
583 IF( nn1>=zero .AND. nn2>=zero
584 . .AND. nn3>=zero .AND. nn4>=zero)
THEN
586 ELSEIF( nn1<=zero .AND. nn2<=zero
587 . .AND. nn3<=zero .AND. nn4<=zero)
THEN
594 pene(i) = -rs+rr+gapv(i)
601 ELSEIF(icurv(1) == 3)
THEN
602 CALL i7curv(jlt ,pene ,n1 ,n2 ,
603 1 n3 ,gapv ,x ,nod_normal,
604 2 ix1 ,ix2 ,ix3 ,ix4 ,
606 4 x1 ,x2 ,x3 ,x4 ,y1 ,
607 5 y2 ,y3 ,y4 ,z1 ,z2 ,
608 6 z3 ,z4 ,xi ,yi ,zi )
618 s2 = one/
max(em30,sqrt(n1(i)**2 + n2(i)**2 + n3(i)**2))
625 vx(i) = vxi(i) - h1(i)*v(1,ix1(i)) - h2(i)*v(1,ix2(i))
626 . - h3(i)*v(1,ix3(i)) - h4(i)*v(1,ix4(i))
627 vy(i) = vyi(i) - h1(i)*v(2,ix1(i)) - h2(i)*v(2,ix2(i))
628 . - h3(i)*v(2,ix3(i)) - h4(i
629 vz(i) = vzi(i) - h1(i)*v(3,ix1(i)) - h2(i)*v(3,ix2(i))
630 . - h3(i)*v(3,ix3(i)) - h4(i)*v(3,ix4(i))
631 vn(i) = n1(i)*vx(i) + n2(i)*vy(i) + n3(i)*vz(i)
633 h0 = -.25*(h1(i) - h2(i) + h3(i) - h4(i))
634 h0 =
min(h0,h2(i),h4(i))
635 h0 =
max(h0,-h1(i),-h3(i))
636 IF(ix3(i)==ix4(i))h0 = zero
645 DO i=jlt-jlt_tied+1,jlt
650 h4(i) = one - h1(i) - h2(i) - h3(i)
653 DO i=jlt-jlt_tied+1,jlt
656 p1(i) =
max(zero, gapv(i) - d1)
659 p2(i) =
max(zero, gapv(i) - d2)
662 p3(i) =
max(zero, gapv(i) - d3)
665 p4(i) =
max(zero, gapv(i) - d4)
667 IF(ix3(i)/=ix4(i))
THEN
668 pene(i) =
max(p1(i),p2(i),p3(i),p4(i))
680 t1x(i) = x3(i) - x1(i)
681 t1y(i) = y3(i) - y1(i)
682 t1z(i) = z3(i) - z1(i)
683 norminv = one/sqrt(t1x(i)**2+t1y(i)**2+t1z(i)**2)
684 t1x(i) = t1x(i)*norminv
685 t1y(i) = t1y(i)*norminv
686 t1z(i) = t1z(i)*norminv
688 t2x(i) = x4(i) - x2(i)
689 t2y(i) = y4(i) - y2(i)
690 t2z(i) = z4(i) - z2(i)
692 nx(i) = t1y(i)*t2z(i) - t1z(i)*t2y(i)
693 ny(i) = t1z(i)*t2x(i) - t1x(i)*t2z(i)
694 nz(i) = t1x(i)*t2y(i) - t1y(i)*t2x(i)
695 norminv = one/sqrt(nx(i)**2+ny(i)**2+nz(i)**2)
696 nx(i) = nx(i)*norminv
697 ny(i) = ny(i)*norminv
698 nz(i) = nz(i)*norminv
700 t2x(i) = ny(i)*t1z(i) - nz(i)*t1y(i)
701 t2y(i) = nz(i)*t1x(i) - nx(i)*t1z(i)
702 t2z(i) = nx(i)*t1y(i) - ny(i)*t1x(i)
705 xh=h1(i)*x1(i)+h2(i)*x2(i)+h3(i)*x3(i)+h4(i)*x4(i)
706 yh=h1(i)*y1(i)+h2(i)*y2(i)+h3(i)*y3(i)+h4(i)*y4(i)
707 zh=h1(i)*z1(i)+h2(i)*z2(i)+h3(i)*z3(i)+h4(i)*z4(i)
708 side(i)=(xi(i)-xh)*nx(i)+(yi(i)-yh)*ny(i)+(zi(i)-zh)*nz(i)
713 DO i=jlt-jlt_tied+1,jlt
719 DO i=jlt-jlt_tied+1,jlt
720 vx(i) = vxi(i) - h1(i)*v(1,ix1(i)) - h2(i)*v(1,ix2(i))
721 . - h3(i)*v(1,ix3(i)) - h4(i)*v(1,ix4(i))
722 vy(i) = vyi(i) - h1(i)*v(2,ix1(i)) - h2(i)*v(2,ix2(i))
723 . - h3(i)*v(2,ix3(i)) - h4(i)*v(2,ix4(i))
724 vz(i) = vzi(i) - h1(i)*v(3,ix1(i)) - h2(i)*v(3,ix2(i))
725 . - h3(i)*v(3,ix3(i)) - h4(i)*v(3,ix4(i))
726 vn(i) = vx(i)*nx(i) + vy(i)*ny(i) + vz(i)*nz(i)
727 vt1(i) = vx(i)*t1x(i) + vy(i)*t1y(i) + vz(i)*t1z(i)
728 vt2(i) = vx(i)*t2x(i) + vy(i)*t2y(i) + vz(i)*t2z(i)
737 cand_p(index(i))=
min(cand_p(index(i)),
738 . ((one-fiveem2)*cand_p(index(i))+fiveem2*pene(i)) )
740 pene(i)=
max(zero,pene(i)-cand_p(index(i)))
741 IF( pene(i)==zero ) stif(i) = zero
742 gapv(i)=gapv(i)-cand_p(index(i))
745 DO i=jlt-jlt_tied+1,jlt
748 pene(i)=
max(zero,pene(i)-cand_p(index(i)))
749 gapv(i)=gapv(i)-cand_p(index(i))
752 ELSE IF(inacti==6)
THEN
756 cand_p(index(i))=
min(cand_p(index(i)),
757 . ( (one-fiveem2)*cand_p(index(i))
758 . +fiveem2*(pene(i)+fiveem2*(gapv(i)-pene(i)))) )
760 pene(i)=
max(zero,pene(i)-cand_p(index(i)))
761 IF( pene(i)==zero ) stif(i) = zero
762 gapv(i)=gapv(i)-cand_p(index(i))
765 DO i=jlt-jlt_tied+1,jlt
768 pene(i)=
max(zero,pene(i)-cand_p(index(i)))
769 gapv(i)=gapv(i)-cand_p(index(i))
780 rdist = half*dist /
max(em30,-vn(i))
785 IF (dtmini>zero)
THEN
796 dist =gapv(i)-pene(i)
797 dti2 = half*dist /
max(em30,-vn(i))
800 WRITE(iout,
'(A,E12.4,A,I10,A,E12.4,A)')
801 .
' **WARNING MINIMUM TIME STEP ',dti2,
802 .
' IN INTERFACE ',noint,'(dtmin=
',DTM,')
'
803 IF ( ISTAMPING == 1) THEN
804 WRITE(ISTDO,'(a)
')'the run encountered a problem in an in
806 WRITE(ISTDO,'(a)
')'you may need to check
if there is enou
807 .gh clearance between
the tools,
'
808 WRITE(ISTDO,'(a)
')'and that they
do not penetrate each ot
809 .her during their travel
'
810 WRITE(IOUT, '(a)
')'the run encountered a problem in an in
812 WRITE(IOUT, '(a)
')'you may need to check
if there is enou
813 .gh clearance between
the tools,
'
814 WRITE(IOUT, '(a)
')'and that they
do not penetrate each ot
815 .her during their travel
'
821 NI = ITAFI(NIN)%P(-NN)
823#include "lockoff.inc"
826 WRITE(IOUT,'(a,i10)
') ' secondary node :
',NI
827 WRITE(IOUT,'(a,4i10)
')' main nodes :
',
828 . ITAB(IX1(I)),ITAB(IX2(I)),ITAB(IX3(I)),ITAB(IX4(I))
829#include "lockoff.inc"
833 WRITE(IOUT,'(a,i10,a,i10)
')' remove secondary node
',
834 . NI,' from
INTERFACE ',NOINT
836 STFN(CN_LOC(I)) = -ABS(STFN(CN_LOC(I)))
838 STIFI(NIN)%P(-NN) = -ABS(STIFI(NIN)%P(-NN))
840#include "lockoff.inc"
847 WRITE(IOUT,'(a,i10)
') ' secondary node :
',NI
848 WRITE(IOUT,'(a,4i10)
')' main nodes :
',
849 . ITAB(IX1(I)),ITAB(IX2(I)),ITAB(IX3(I)),ITAB(IX4(I))
850#include "lockoff.inc"
852.AND.
ELSEIF(IDTM==6ILAGM==2)THEN
854 IF(KINET(IG)+KINET(IX1(I))+KINET(IX2(I))
855 . +KINET(IX3(I))+KINET(IX4(I))==0)THEN
856 CAND_N(INDEX(I)) = -IABS(CAND_N(INDEX(I)))
860 WRITE(IOUT,'(a,i10)
') ' secondary node :
',ITAB(NSVG(I))
861 WRITE(IOUT,'(a,4i10)
')' main nodes :
',
862 . ITAB(IX1(I)),ITAB(IX2(I)),ITAB(IX3(I)),ITAB(IX4(I))
863#include "lockoff.inc"
876 ENDIF ! IF(ITIED == 0)THEN
884 STIF(I) = HALF*STIF(I)
885 ELSEIF(STIF(I)/=ZERO)THEN
888 FNI(I)= -STIF(I) * PENE(I)
892 FAC = GAPV(I)/MAX( EM10,( GAPV(I)-PENE(I) ) )
894.AND.
IF( (GAPV(I)-PENE(I))/GAPV(I) <PREC
902 STFN(CN_LOC(I)) = -ABS(STFN(CN_LOC(I)))
904 NI = ITAFI(NIN)%P(-NN)
905 STIFI(NIN)%P(-NN) = -ABS(STIFI(NIN)%P(-NN))
907 WRITE(ISTDO,'(a,i10)
')' warning
INTERFACE ',NOINT
908 WRITE(ISTDO,'(a,i10,a)
')' node
',NI,
909 . ' de-activated from interface
'
910 WRITE(IOUT ,'(a,i10)
')' warning
INTERFACE ',NOINT
911 WRITE(IOUT ,'(a,i10,a)
')' node
',NI,
912 . ' de-activated from interface
'
913 IF ( ISTAMPING == 1) THEN
914 WRITE(ISTDO,'(a)
')'the run encountered a problem in an inter
916 WRITE(ISTDO,'(a)
')'you may need to check
if there is enough
917 .clearance between
the tools,
'
918 WRITE(ISTDO,'(a)
')'and that they
do not penetrate each other
919 . during their travel
'
920 WRITE(IOUT, '(a)
')'the run encountered a problem in an inter
922 WRITE(IOUT, '(a)
')'you may need to check
if there is enough
923 .clearance between
the tools,
'
924 WRITE(IOUT, '(a)
')'and that they
do not penetrate each other
925 . during their travel
'
927#include "lockoff.inc"
930 IF(INCONV==1) ECONTT = ECONTT + HALF*STIF(I)*GAPV(I)**2 *
931 . ( FACM1 -ONE -LOG(MAX(TINY(FACM1),FACM1) ))
932 STIF(I) = HALF*STIF(I) * FAC
933 ELSEIF(STIF(I)/=ZERO)THEN
934 IF(INCONV==1)ECONTT = ECONTT + STIGLO*GAPV(I)**2 *
935 . ( FACM1 - ONE -LOG(MAX(TINY(FACM1),FACM1) ))
936 STIF(I) = STIGLO * FAC
938 FNI(I)= -STIF(I) * PENE(I)
943 STIF0(I) = HALF*STIF0(I)
948 FAC = GAPV(I)/MAX( EM10,( GAPV(I)-PENE(I) ) )
950.AND.
IF( (GAPV(I)-PENE(I))/GAPV(I) <PREC
951 . STIF(I)>ZERO ) THEN
958 STFN(CN_LOC(I)) = -ABS(STFN(CN_LOC(I)))
960 NI = ITAFI(NIN)%P(-NN)
961 STIFI(NIN)%P(-NN) = -ABS(STIFI(NIN)%P(-NN))
963 WRITE(ISTDO,'(a,i10)
')' warning
INTERFACE ',NOINT
964 WRITE(ISTDO,'(a,i10,a)
')' node
',NI,
965 . ' de-activated from interface
'
966 WRITE(IOUT ,'(a,i10)
')' warning
INTERFACE ',NOINT
967 WRITE(IOUT ,'(a,i10,a)')
' NODE ',ni,
968 .
' DE-ACTIVATED FROM INTERFACE'
969 IF ( istamping == 1)
THEN
970 WRITE(istdo,
'(A)')
'The run encountered a problem in an inter
972 WRITE(istdo,
'(A)')
'You may need to check if there is enough
973 .clearance between the tools,'
974 WRITE(istdo,
'(A)')
'and that they do not penetrate each other
975 . during their travel'
976 WRITE(iout,
'(A)')
'The run encountered a problem in an inter
978 WRITE(iout,
'(A)')
'You may need to check if there is enough
979 .clearance between the tools,'
980 WRITE(iout,
'(A)')
'and that they do not penetrate each other
981 . during their travel'
983#include "lockoff.inc"
986 econtt = econtt + half*stif(i)*gapv(i)**2 *( facm1 - one -
987 . log(
max(tiny(facm1),facm1)) )
988 stif(i) = half*stif(i) * fac
989 ELSEIF(stif(i)/=zero)
THEN
990 econtt = econtt + stiglo*gapv(i)**2 *( facm1 - one -
991 . log(
max(tiny(facm1),facm1)) )
992 stif(i) = stiglo * fac
994 fni(i)= -stif(i) * pene(i)
1007 DO i=jlt-jlt_tied+1,jlt
1010 IF(pene(i)==zero.AND.side(i)*cand_f(8,ii) > zero)
THEN
1022 DO i=jlt-jlt_tied+1,jlt
1025 fac = gapv(i)/
max( em10,( gapv(i)-
min(pene(i),cand_f(7,ii)) ) )
1026 stif(i) = half*stif0(i) * fac**2
1028 econttied = econttied + cand_f(1,ii) * vn(i) * dt05
1029 econttied = econttied + cand_f(2,ii) * vt1(i) * dt05
1030 econttied = econttied + cand_f(3,ii) * vt2(i) * dt05
1032 fni(i) = cand_f(1,ii) + vn(i) * dt1 * stif(i)
1033 ft1(i) = cand_f(2,ii) + vt1(i) * dt1 * stif(i)
1034 ft2(i) = cand_f(3,ii) + vt2(i) * dt1 * stif(i)
1038 DO i=jlt-jlt_tied+1,jlt
1041 IF(pene(i)==zero.AND.side(i)*cand_f(8,ii) > zero)
THEN
1052 ELSEIF(fni(i)==zero)
THEN
1053 cand_f(1,ii) = sign(em30,cand_f(1,ii))
1055 IF (inconv==1) cand_f(1,ii) =fni(i)
1058 cand_f(2,ii) = ft1(i)
1059 cand_f(3,ii) = ft2(i)
1062 ELSEIF(itied == 2)
THEN
1063 DO i=jlt-jlt_tied+1,jlt
1066 IF(fni(i)==zero.AND.pene(i)/=zero)
THEN
1069 IF (inconv==1) cand_f(1,ii) =fni(i)
1072 cand_f(2,ii) = ft1(i)
1073 cand_f(3,ii) = ft2(i)
1078 DO i=jlt-jlt_tied+1,jlt
1080 econttied = econttied + cand_f(1,ii) * vn(i) * dt05
1081 econttied = econttied + cand_f(2,ii) * vt1(i) * dt05
1082 econttied = econttied + cand_f(3,ii) * vt2(i) * dt05
1090 IF(ivis2==0.OR.ivis2==1)
THEN
1095 vis2(i) = two * stif(i) * msi(i)
1096 IF(vn(i)<zero) vis2(i) = vis2(i) /
1097 . (
max(em10,(gapv(i)-pene(i))/gapv(i)) )
1101 IF(kdtint==0.AND.(idtmins/=2.AND.idtmins_int==0))
THEN
1103 fac = stif(i) /
max(em30,stif(i))
1107 . visca**2 * two* msi(i) *
max(zero,-vn(i)) /
1108 .
max((gapv(i) - pene(i)),em10) )
1109 stif(i) = stif(i) * gapv(i) /
max((gapv(i) - pene(i)),em10)
1110 stif(i) = stif(i) + ff * dt1inv
1111 stif(i) =
max(stif(i) ,fac*sqrt(viscffric(i))*vis*dt1inv)
1114 fni(i) = fni(i) + ff
1118 fac = stif(i) /
max(em30,stif(i))
1122 . visca**2 * two * msi(i) *
max(zero,-vn(i)) /
1123 .
max((gapv(i) - pene(i)),em10) )
1124 stif(i) = stif(i) * gapv(i) /
max((gapv(i) - pene(i)),em10)
1126 stif(i) = stif(i) + c(i) * dt1inv
1128 fni(i) = fni(i) + ff
1129 cf(i) = fac*sqrt(viscffric(i))*vis
1130 stif(i) =
max(stif(i) ,cf(i)*dt1inv)
1133 ELSEIF(ivis2==2)
THEN
1138 vis2(i) = two* stif(i) * msi(i)
1140 . (
max(em10,(gapv(i)-pene(i))/gapv(i)) )
1145 fac = stif(i) /
max(em30,stif(i))
1149 . visca**2 * two * msi(i) * abs(vn(i)) /
1150 .
max((gapv(i) - pene(i)),em10) )
1151 stif(i) = stif(i) * gapv(i) /
max((gapv(i) - pene(i)),em10)
1152 stif(i) = stif(i) + two * ff * dt1inv
1153 stif(i) =
max(stif(i) ,fac*sqrt(viscffric(i))*vis*dt1inv)
1155 fni(i) = fni(i) + ff
1157 ELSEIF(ivis2==3)
THEN
1162 vis2(i) = two * stif(i) * msi(i)
1166 fac = stif(i) /
max(em30,stif(i))
1168 ff = fac * ( visc * vis ) /
1169 .
max((gapv(i) - pene(i)),em10)
1170 stif(i) = stif(i) * gapv(i) /
1171 .
max((gapv(i) - pene(i)),em10)
1172 stif(i) = stif(i) + two* ff * dt1inv
1173 stif(i) =
max(stif(i) ,fac*sqrt(viscffric(i))*vis*dt1inv)
1175 fni(i) = fni(i) + ff
1177 ELSEIF(ivis2==4)
THEN
1182 vis2(i) = two* stif(i) * msi(i)
1184 stif(i) = stif(i) * gapv(i) /
1185 .
max((gapv(i) - pene(i)),em10)
1186 stif(i) =
max(stif(i) ,fac*sqrt(viscffric(i))*vis*dt1inv)
1188 ELSEIF(ivis2==5)
THEN
1195 mas2 = ms(ix1(i))*h1(i)
1196 . + ms(ix2(i))*h2(i)
1197 . + ms(ix3(i))*h3(i)
1198 . + ms(ix4(i))*h4(i)
1199 vis2(i) = two* stif(i) * msi(i)
1200 vis = 2. * visc * dt1inv * msi(i) * mas2 /
1201 .
max(em30,msi(i)+mas2)
1202 stif(i) = stif(i) * gapv(i) /
1203 .
max((gapv(i) - pene(i)),em10)
1204 stif(i) =
max(stif(i) ,fac*sqrt(viscffric(i)*vis2(i))*dt1inv)
1206 econtdt = econtdt +
min(zero,ff-fni(i)) * vn(i) * dt1
1207 fni(i) =
min(fni(i),ff)
1213 IF(viscffric(i)/=zero)
THEN
1214 IF(ivis2==0.OR.ivis2==1)
THEN
1218 vis2(i) = two * stif(i) * msi(i)
1219 IF(vn(i)<zero) vis2(i) = vis2(i) /
1220 . (
max(em10,(gapv(i)-pene(i))/gapv(i)) )
1224 IF(kdtint==0.AND.(idtmins/=2.AND.idtmins_int==0))
THEN
1225 fac = stif(i) /
max(em30,stif(i))
1229 . visca**2 * two* msi(i) *
max(zero,-vn(i)) /
1230 .
max((gapv(i) - pene(i)),em10) )
1231 stif(i) = stif(i) * gapv(i) /
max((gapv(i) - pene(i)),em10)
1232 stif(i) = stif(i) + ff * dt1inv
1234 stif(i) =
max(stif(i) ,fac*sqrt(viscffric(i))*vis*dt1inv)
1237 fni(i) = fni(i) + ff
1239 fac = stif(i) /
max(em30,stif(i))
1243 . visca**2 * two * msi(i) *
max(zero,-vn(i)) /
1244 .
max((gapv(i) - pene(i)),em10)
1245 stif(i) = stif(i) * gapv(i) /
max((gapv(i) - pene(i)),em10)
1247 stif(i) = stif(i) + c(i) * dt1inv
1249 fni(i) = fni(i) + ff
1250 cf(i) = fac*sqrt(viscffric(i))*vis
1251 stif(i) =
max(stif(i) ,cf(i)*dt1inv)
1253 ELSEIF(ivis2==2)
THEN
1257 vis2(i) = two* stif(i) * msi(i)
1259 . (
max(em10,(gapv(i)-pene(i))/gapv(i)) )
1262 fac = stif(i) /
max(em30,stif(i))
1266 . visca**2 * two * msi(i) * abs(vn(i)) /
1267 .
max((gapv(i) - pene(i)),em10) )
1268 stif(i) = stif(i) * gapv(i) /
max((gapv(i) - pene(i)),em10)
1269 stif(i) = stif(i) + two * ff * dt1inv
1270 stif(i) =
max(stif(i) ,fac*sqrt(viscffric(i))*vis*dt1inv)
1272 fni(i) = fni(i) + ff
1273 ELSEIF(ivis2==3)
THEN
1277 vis2(i) = two * stif(i) * msi(i)
1279 fac = stif(i) /
max(em30,stif(i))
1281 ff = fac * ( visc * vis ) /
1282 .
max((gapv(i) - pene(i)),em10)
1283 stif(i) = stif(i) * gapv(i) /
1284 .
max((gapv(i) - pene(i)),em10)
1285 stif(i) = stif(i) + two* ff * dt1inv
1286 stif(i) =
max(stif(i) ,fac*sqrt(viscffric(i))*vis*dt1inv)
1288 fni(i) = fni(i) + ff
1289 ELSEIF(ivis2==4)
THEN
1293 vis2(i) = two* stif(i) * msi(i)
1295 stif(i) = stif(i) * gapv(i) /
1296 .
max((gapv(i) - pene(i)),em10)
1297 stif(i) =
max(stif(i) ,fac*sqrt(viscffric(i))*vis*dt1inv)
1298 ELSEIF(ivis2==5)
THEN
1304 mas2 = ms(ix1(i))*h1(i)
1305 . + ms(ix2(i))*h2(i)
1306 . + ms(ix3(i))*h3(i)
1307 . + ms(ix4(i))*h4(i)
1308 vis2(i) = two* stif(i) * msi(i)
1309 vis = 2. * visc * dt1inv * msi(i) * mas2 /
1310 .
max(em30,msi(i)+mas2)
1311 stif(i) = stif(i) * gapv(i) /
1312 .
max((gapv(i) - pene(i)),em10)
1313 stif(i) =
max(stif(i) ,fac*sqrt(viscffric(i)*vis2(i))*dt1inv)
1315 econtdt = econtdt +
min(zero,ff-fni(i)) * vn(i) * dt1
1316 fni(i) =
min(fni(i),ff)
1322 stif(i) = stif(i) * gapv(i) /
1323 .
max((gapv(i) - pene(i)),em10)
1332 IF(ivis2==0.OR.ivis2==1)
THEN
1336 IF(kdtint==0.AND.(idtmins/=2.AND.idtmins_int==0))
THEN
1337 DO i=jlt-jlt_tied+1,jlt
1338 fac = gapv(i)/
max( em10,( gapv(i)-
min(pene(i),cand_f(7,index(i))) ) )
1339 stif(i) = half*stif0(i) * fac
1341 vis = visc * sqrt(two * stif(i) * msi(i))
1342 fni(i) = fni(i) + vn(i) * vis
1343 ft1(i) = ft1(i) + vt1(i) * vis
1344 ft2(i) = ft2(i) + vt2(i) * vis
1346 stif(i) = stif(i)*fac
1347 stif(i) = stif(i) + two * vis * dt1inv
1350 . + vis * (vx(i)*vx(i)+vy(i)*vy(i)+vz(i)*vz(i)) * dt1
1354 DO i=jlt-jlt_tied+1,jlt
1355 fac = gapv(i)/
max( em10,( gapv(i)-
min(pene(i),cand_f(7,index(i))) ) )
1356 stif(i) = half*stif0(i) * fac
1358 vis = visc * sqrt(two * stif(i) * msi(i))
1359 fni(i) = fni(i) + vn(i) * vis
1360 ft1(i) = ft1(i) + vt1(i) * vis
1361 ft2(i) = ft2(i) + vt2(i) * vis
1364 stif(i) = stif(i)*fac
1366 stif(i) = stif(i) + two * vis * dt1inv
1369 . + vis * (vx(i)*vx(i)+vy(i)*vy(i)+vz(i)*vz(i)) * dt1
1372 ELSEIF(ivis2==2)
THEN
1376 DO i=jlt-jlt_tied+1,jlt
1377 fac = gapv(i)/
max( em10,( gapv(i)-
min(pene(i),cand_f(7,index(i))) ) )
1378 stif(i) = half*stif0(i) * fac
1380 vis = sqrt(two* stif(i) * msi(i))
1381 fni(i) = fni(i) + vn(i) * vis
1382 ft1(i) = ft1(i) + vt1(i) * vis
1383 ft2(i) = ft2(i) + vt2(i) * vis
1385 stif(i) = stif(i)*fac
1386 stif(i) = stif(i) + two * vis * dt1inv
1389 . + vis * (vx(i)*vx(i)+vy(i)*vy(i)+vz(i)*vz(i)) * dt1
1391 ELSEIF(ivis2==3)
THEN
1395 DO i=jlt-jlt_tied+1,jlt
1396 fac = gapv(i)/
max( em10,( gapv(i)-
min(pene(i),cand_f(7,index(i))) ) )
1397 stif(i) = half*stif0(i) * fac
1399 vis = sqrt(two* stif(i) * msi(i))
1400 fni(i) = fni(i) + vn(i) * vis
1401 ft1(i) = ft1(i) + vt1(i) * vis
1402 ft2(i) = ft2(i) + vt2(i) * vis
1404 stif(i) = stif(i)*fac
1405 stif(i) = stif(i) + two * vis * dt1inv
1408 . + vis * (vx(i)*vx(i)+vy(i)*vy(i)+vz(i)*vz(i)) * dt1
1410 ELSEIF(ivis2==4)
THEN
1414 ELSEIF(ivis2==5)
THEN
1420 DO i=jlt-jlt_tied+1,jlt
1421 fac = gapv(i)/
max( em10,( gapv(i)-
min(pene(i),cand_f(7,index(i))) ) )
1422 stif(i) = half*stif0(i) * fac
1424 mas2 = ms(ix1(i))*h1(i)
1425 . + ms(ix2(i))*h2(i)
1426 . + ms(ix3(i))*h3(i)
1427 . + ms(ix4(i))*h4(i)
1428 vis = sqrt(two* stif(i) * msi(i))
1429 fni(i) = fni(i) + vn(i) * vis
1430 ft1(i) = ft1(i) + vt1(i) * vis
1431 ft2(i) = ft2(i) + vt2(i) * vis
1433 stif(i) = stif(i)*fac
1434 stif(i) = stif(i) + two * vis * dt1inv
1437 . + vis * (vx(i)*vx(i)+vy(i)*vy(i)+vz(i)*vz(i)) * dt1
1440 DO i=jlt-jlt_tied+1,jlt
1441 fac = gapv(i)/
max( em10,( gapv(i)-
min(pene(i),cand_f(7,index(i))) ) )
1442 stif(i) = half*stif0(i) * fac
1443 stif(i) = stif(i)*fac
1447 DO i=jlt-jlt_tied+1,jlt
1448 fac = gapv(i)/
max( em10,( gapv(i)-
min(pene(i),cand_f(7,index(i))) ) )
1449 stif(i) = half*stif0(i) * fac
1450 stif(i) = stif(i)*fac
1471 impx=forc_sign*fxi(i)*dt12
1472 impy=forc_sign*fyi(i)*dt12
1473 impz=forc_sign*fzi(i)*dt12
1477 fsav8 =fsav8 +abs(impx)
1478 fsav9 =fsav9 +abs(impy)
1479 fsav10=fsav10+abs(impz)
1480 fsav11=fsav11+abs(fni(i))*dt12
1482#include "lockon.inc"
1483 fsav(1)=fsav(1)+fsav1
1484 fsav(2)=fsav(2)+fsav2
1485 fsav(3)=fsav(3)+fsav3
1486 fsav(8)=fsav(8)+fsav8
1487 fsav(9)=fsav(9)+fsav9
1488 fsav(10)=fsav(10)+fsav10
1489 fsav(11)=fsav(11)+fsav11
1491#include "lockoff.inc"
1493 IF(isensint(1)/=0)
THEN
1495 fsavparit(1,1,i+nft) = forc_sign*fxi(i)
1496 fsavparit(1,2,i+nft) = forc_sign*fyi(i)
1497 fsavparit(1,3,i+nft) = forc_sign*fzi(i)
1501 IF((anim_v(12)+outp_v(12)+h3d_data%N_VECT_PCONT>0.AND.
1502 . ((tt>=output%TANIM .AND. tt<=output%TANIM_STOP).OR.tt>=toutp.OR.(tt>=h3d_data%TH3D.AND.tt<=h3d_data%TH3D_STOP).OR.
1503 . (manim>=4.AND.manim<=15).OR.h3d_data%MH3D/=0))
1504 . .OR.h3d_data%N_VECT_PCONT_MAX>0)
THEN
1506#include "lockon.inc"
1508 fncont(1,ix1(i)) =fncont(1,ix1(i)) + fxi(i)*h1(i)
1509 fncont(2,ix1(i)) =fncont(2,ix1(i)) + fyi(i)*h1(i)
1510 fncont(3,ix1(i)) =fncont(3,ix1(i)) + fzi(i)*h1(i)
1511 fncont(1,ix2(i)) =fncont(1,ix2(i)) + fxi(i)*h2(i)
1512 fncont(2,ix2(i)) =fncont(2,ix2(i)) + fyi(i)*h2(i)
1513 fncont(3,ix2(i)) =fncont(3,ix2(i)) + fzi(i)*h2(i)
1514 fncont(1,ix3(i)) =fncont(1,ix3(i)) + fxi(i)*h3(i)
1515 fncont(2,ix3(i)) =fncont(2,ix3(i)) + fyi(i)*h3(i)
1516 fncont(3,ix3(i)) =fncont(3,ix3(i)) + fzi(i)*h3(i)
1517 fncont(1,ix4(i)) =fncont(1,ix4(i)) + fxi(i)*h4(i)
1518 fncont(2,ix4(i)) =fncont(2,ix4(i)) + fyi(i)*h4(i)
1519 fncont(3,ix4(i)) =fncont(3,ix4(i)) + fzi(i)*h4(i)
1523 fncont(1,jg)=fncont(1,jg)- fxi(i)
1525 fncont(3,jg)=fncont(3,jg)- fzi(i)
1533#include "lockoff.inc"
1544 fsavsub1(j,jsub)=zero
1554 DO WHILE(jj<addsubs(in+1))
1556 itypsub = typsub(jsub)
1558 IF(itypsub == 1 )
THEN
1563 DO WHILE((ksub<=jsub).AND.(kk<addsubm(ie+1)))
1567 impx=forc_sign*fxi(i)*dt12
1568 impy=forc_sign*fyi(i)*dt12
1569 impz=forc_sign*fzi(i)*dt12
1571 fsavsub1(1,jsub)=fsavsub1(1,jsub)+impx
1572 fsavsub1(2,jsub)=fsavsub1(2,jsub)+impy
1573 fsavsub1(3,jsub)=fsavsub1(3,jsub)+impz
1575 IF(isensint(jsub+1)/=0)
THEN
1576 fsavparit(jsub+1,1,i+nft) = forc_sign*fxi(i)
1577 fsavparit(jsub+1,2,i+nft) = forc_sign*fyi(i)
1578 fsavparit(jsub+1,3,i+nft) = forc_sign
1581 fsavsub1(8,jsub) =fsavsub1(8,jsub) +abs(impx)
1582 fsavsub1(9,jsub) =fsavsub1(9,jsub) +abs(impy)
1583 fsavsub1(10,jsub)=fsavsub1(10,jsub)+abs(impz)
1585 fsavsub1(11,jsub)=fsavsub1(11,jsub)+abs(fni(i
1595 ELSEIF(itypsub == 2 )
THEN
1597 impx=forc_sign*fxi(i)*dt12
1598 impy=forc_sign*fyi(i)*dt12
1599 impz=forc_sign*fzi(i)*dt12
1601 fsavsub1(1,jsub)=fsavsub1(1,jsub)+impx
1602 fsavsub1(2,jsub)=fsavsub1(2,jsub)+impy
1603 fsavsub1(3,jsub)=fsavsub1(3,jsub)+impz
1605 fsavsub1(8,jsub) =fsavsub1(8,jsub) +abs(impx)
1606 fsavsub1(9,jsub) =fsavsub1(9,jsub) +abs(impy)
1607 fsavsub1(10,jsub)=fsavsub1(10,jsub)+abs(impz)
1609 fsavsub1(11,jsub)=fsavsub1(11,jsub)+abs(fni(i))*dt12
1611 IF(isensint(jsub+1)/=0)
THEN
1612 fsavparit(jsub+1,1,i+nft) = forc_sign*fxi(i)
1613 fsavparit(jsub+1,2,i+nft) = forc_sign*fyi(i)
1614 fsavparit(jsub+1,3,i+nft) = forc_sign*fzi(i)
1619 ELSEIF(itypsub == 3 )
THEN
1621 iss2 = bitget(inflg_subs(jj),0)
1622 iss1 = bitget(inflg_subs(jj),1)
1624 DO WHILE((ksub<=jsub).AND.(kk<addsubm(ie+1)))
1625 ims2 = bitget(inflg_subm(kk),0)
1626 ims1 = bitget(inflg_subm(kk),1)
1628 IF(.NOT.((ims1 == 1 .AND. iss2 == 1).OR.
1629 . (ims2 == 1 .AND. iss1 == 1)))
THEN
1635 impx=forc_sign*fxi(i)*dt12
1636 impy=forc_sign*fyi(i)*dt12
1637 impz=forc_sign*fzi(i)*dt12
1641 fsavsub1(1,jsub)=fsavsub1(1,jsub)-impx
1642 fsavsub1(2,jsub)=fsavsub1(2,jsub)-impy
1643 fsavsub1(3,jsub)=fsavsub1(3,jsub)-impz
1645 fsavsub1(1,jsub)=fsavsub1(1,jsub)+impx
1646 fsavsub1(2,jsub)=fsavsub1(2,jsub)+impy
1647 fsavsub1(3,jsub)=fsavsub1(3,jsub)+impz
1650 fsavsub1(8,jsub) =fsavsub1(8,jsub) +abs(impx)
1652 fsavsub1(10,jsub)=fsavsub1(10,jsub)+abs(impz)
1654 fsavsub1(11,jsub)=fsavsub1(11,jsub)+abs(fni(i))*dt12
1657 IF(isensint(jsub+1)/=0)
THEN
1659 fsavparit(jsub+1,1,i+nft) = -forc_sign*fxi(i)
1660 fsavparit(jsub+1,2,i+nft) = -forc_sign*fyi(i)
1661 fsavparit(jsub+1,3,i+nft) = -forc_sign*fzi(i)
1663 fsavparit(jsub+1,1,i+nft) = forc_sign*fxi(i)
1664 fsavparit(jsub+1,2,i+nft) = forc_sign*fyi(i)
1665 fsavparit(jsub+1,3,i+nft) = forc_sign*fzi
1681 DO WHILE(kk<addsubm(ie+1))
1684 itypsub = typsub(ksub)
1685 IF(itypsub == 2 )
THEN
1687 impx=-forc_sign*fxi(i)*dt12
1688 impy=-forc_sign*fyi(i)*dt12
1689 impz=-forc_sign*fzi(i)*dt12
1691 fsavsub1(1,ksub)=fsavsub1(1,ksub)+impx
1692 fsavsub1(2,ksub)=fsavsub1(2,ksub)+impy
1693 fsavsub1(3,ksub)=fsavsub1(3,ksub)+impz
1695 fsavsub1(8,ksub) =fsavsub1(8,ksub) +abs(impx)
1696 fsavsub1(9,ksub) =fsavsub1(9,ksub) +abs(impy)
1697 fsavsub1(10,ksub)=fsavsub1(10,ksub)+abs(impz)
1699 fsavsub1(11,ksub)=fsavsub1(11,ksub)+abs(fni(i))*dt12
1701 IF(isensint(ksub+1)/=0)
THEN
1702 fsavparit(ksub+1,1,i+nft) = fxi(i)
1703 fsavparit(ksub+1,2,i+nft) = fyi(i)
1704 fsavparit(ksub+1,3,i+nft) = fzi(i)
1724 itypsub = typsub(jsub)
1729 DO WHILE((ksub<=jsub).AND.
1732 impx=forc_sign*fxi(i)*dt12
1733 impy=forc_sign*fyi(i)*dt12
1734 impz=forc_sign*fzi(i)*dt12
1736 fsavsub1(1,jsub)=fsavsub1(1,jsub)+impx
1737 fsavsub1(2,jsub)=fsavsub1(2,jsub)+impy
1738 fsavsub1(3,jsub)=fsavsub1(3,jsub)+impz
1740 IF(isensint(jsub+1)/=0)
THEN
1741 fsavparit(jsub+1,1,i+nft) = forc_sign*fxi(i)
1742 fsavparit(jsub+1,2,i+nft) = forc_sign*fyi(i
1743 fsavparit(jsub+1,3,i+nft) = forc_sign*fzi(i)
1746 fsavsub1(8,jsub) =fsavsub1(8,jsub) +abs(impx)
1747 fsavsub1(9,jsub) =fsavsub1(9,jsub) +abs(impy)
1748 fsavsub1(10,jsub)=fsavsub1(10,jsub)+abs(impz)
1750 fsavsub1(11,jsub)=fsavsub1(11,jsub)+abs(fni(i))*dt12
1759 ELSEIF(itypsub == 2 )
THEN
1761 impx=forc_sign*fxi(i)*dt12
1762 impy=forc_sign*fyi(i)*dt12
1763 impz=forc_sign*fzi(i)*dt12
1765 fsavsub1(1,jsub)=fsavsub1(1,jsub)+impx
1766 fsavsub1(2,jsub)=fsavsub1(2,jsub)+impy
1767 fsavsub1(3,jsub)=fsavsub1(3,jsub)+impz
1769 fsavsub1(8,jsub) =fsavsub1(8,jsub) +abs(impx)
1770 fsavsub1(9,jsub) =fsavsub1(9,jsub) +abs(impy)
1771 fsavsub1(10,jsub)=fsavsub1(10,jsub)+abs(impz)
1773 fsavsub1(11,jsub)=fsavsub1(11,jsub)+fni(i)*dt12
1775 IF(isensint(jsub+1)/=0)
THEN
1776 fsavparit(jsub+1,1,i+nft) = forc_sign*fxi(i)
1777 fsavparit(jsub+1,2,i+nft) = forc_sign*fyi(i)
1778 fsavparit(jsub+1,3,i+nft) = forc_sign*fzi(i)
1783 ELSEIF(itypsub == 3 )
THEN
1788 DO WHILE((ksub<=jsub).AND.(kk<addsubm(ie
1789 ims2 = bitget(inflg_subm(kk),0)
1790 ims1 = bitget(inflg_subm(kk),1)
1792 IF(.NOT.((ims1 == 1 .AND. iss2 == 1).OR.
1793 . (ims2 == 1 .AND. iss1 == 1)))
THEN
1799 impx=forc_sign*fxi(i)*dt12
1800 impy=forc_sign*fyi(i)*dt12
1801 impz=forc_sign*fzi(i)*dt12
1804 fsavsub1(1,jsub)=fsavsub1(1,jsub)-impx
1805 fsavsub1(2,jsub)=fsavsub1(2,jsub)-impy
1806 fsavsub1(3,jsub)=fsavsub1(3,jsub)-impz
1807 fsavsub1(11,jsub)=fsavsub1(11,jsub)-fni(i)*dt12
1809 fsavsub1(1,jsub)=fsavsub1(1,jsub)+impx
1811 fsavsub1(3,jsub)=fsavsub1(3,jsub)+impz
1812 fsavsub1(11,jsub)=fsavsub1(11,jsub)+fni(i
1815 IF(isensint(jsub+1)/=0)
THEN
1817 fsavparit(jsub+1,1,i+nft) = -forc_sign*fxi(i)
1818 fsavparit(jsub+1,2,i+nft) = -forc_sign*fyi(i)
1819 fsavparit(jsub+1,3,i+nft) = -forc_sign*fzi(i)
1821 fsavparit(jsub+1,1,i+nft) = forc_sign*fxi(i)
1822 fsavparit(jsub+1,2,i+nft) = forc_sign*fyi(i)
1823 fsavparit(jsub+1,3,i+nft) = forc_sign*fzi(i)
1827 fsavsub1(8,jsub) =fsavsub1(8,jsub) +abs(impx
1828 fsavsub1(9,jsub) =fsavsub1(9,jsub) +abs(impy)
1829 fsavsub1(10,jsub)=fsavsub1(10,jsub)+abs(impz)
1845 IF(ninloadp > 0)
THEN
1846 DO k = kloadpinter(nin)+1, kloadpinter(nin+1)
1848 ppl = loadp_hyd_inter(pp)
1849 dgap = dgaploadint(k)
1851 gapp= gapv(i) + dgap
1852 IF(pene(i) > zero .OR.(distp(i) <= gapp))
THEN
1853 tagncont(ppl,ix1(i)) = 1
1854 tagncont(ppl,ix2(i)) = 1
1855 tagncont(ppl,ix3(i)) = 1
1856 tagncont(ppl,ix4(i)) = 1
1860 tagncont(ppl,jg) = 1
1871 IF(iorthfric == 0)
THEN
1879 ELSEIF (mfrot==1)
THEN
1883 aa = n1(i)*vx(i) + n2(i)*vy(i) + n3(i)*vz(i)
1884 v2 = (vx(i) - n1(i)*aa)**2
1885 . + (vy(i) - n2(i)*aa)**2
1887 vv = sqrt(
max(em30,v2))
1888 ax1 = x(1,irect(3,ie)) - x(1,irect(1,ie))
1889 ay1 = x(2,irect(3,ie)) - x(2,irect(1,ie))
1890 az1 = x(3,irect(3,ie)) - x(3,irect(1,ie))
1891 ax2 = x(1,irect(4,ie)) - x(1,irect(2,ie))
1892 ay2 = x(2,irect(4,ie)) - x(2,irect(2,ie))
1893 az2 = x(3,irect(4,ie)) - x(3,irect(2,ie))
1894 ax = ay1*az2 - az1*ay2
1895 ay = az1*ax2 - ax1*az2
1896 az = ax1*ay2 - ay1*ax2
1897 area = half*sqrt(ax*ax+ay*ay+az*az)
1899 xmu(i) = fricc(i) + (fric_coefs(i,1) + fric_coefs(i,4)*p ) * p
1900 . +(fric_coefs(i,2) + fric_coefs(i,3)*p) * vv + fric_coefs(i,5)*v2
1901 xmu(i) =
max(xmu(i),em30)
1903 ELSEIF(mfrot==2)
THEN
1907 aa = n1(i)*vx(i) + n2(i)*vy(i) + n3(i)*vz(i)
1908 v2 = (vx(i) - n1(i)*aa)**2
1909 . + (vy(i) - n2(i)*aa)**2
1910 . + (vz(i) - n3(i)*aa)**2
1911 vv = sqrt(
max(em30,v2))
1912 ax1 = x(1,irect(3,ie)) - x(1,irect(1,ie))
1913 ay1 = x(2,irect(3,ie)) - x(2,irect(1,ie))
1914 az1 = x(3,irect(3,ie)) - x(3,irect(1,ie))
1915 ax2 = x(1,irect(4,ie)) - x(1,irect(2,ie))
1916 ay2 = x(2,irect(4,ie)) - x(2,irect(2,ie))
1917 az2 = x(3,irect(4,ie)) - x(3,irect(2,ie))
1918 ax = ay1*az2 - az1*ay2
1919 ay = az1*ax2 - ax1*az2
1920 az = ax1*ay2 - ay1*ax2
1921 area = half*sqrt(ax*ax+ay*ay+az*az)
1924 . + fric_coefs(i,1)*exp(fric_coefs(i,2)*vv)*p*p
1925 . + fric_coefs(i,3)*exp(fric_coefs(i,4)*vv)*p
1926 . + fric_coefs(i,5)*exp(fric_coefs(i,6)*vv)
1927 xmu(i) =
max(xmu(i),em30)
1929 ELSEIF (mfrot==3)
THEN
1932 aa = n1(i)*vx(i) + n2(i)*vy(i) + n3(i)*vz(i)
1933 v2 = (vx(i) - n1(i)*aa)**2
1934 . + (vy(i) - n2(i)*aa)**2
1935 . + (vz(i) - n3(i)*aa)**2
1936 vv = sqrt(
max(em30,v2))
1937 IF(vv>=0.AND.vv<=fric_coefs(i,5))
THEN
1938 dmu = fric_coefs(i,3)-fric_coefs(i,1)
1939 vv1 = vv / fric_coefs(i,5)
1940 xmu(i) = fric_coefs(i,1)+ dmu*vv1*(two-vv1)
1941 ELSEIF(vv>fric_coefs(i,5).AND.vv<fric_coefs(i,6))
THEN
1942 dmu = fric_coefs(i,4)-fric_coefs(i,3)
1943 vv1 = (vv - fric_coefs(i,5))/(fric_coefs(i,6)-fric_coefs(i,5))
1944 xmu(i) = fric_coefs(i,3)+ dmu * (three-two*vv1)*vv1**2
1946 dmu = fric_coefs(i,2)-fric_coefs(i,4)
1947 vv2 = (vv - fric_coefs(i,6))**2
1948 xmu(i) = fric_coefs(i,2) - dmu / (one + dmu*vv2)
1950 xmu(i) =
max(xmu(i),em30)
1953 ELSEIF(mfrot==4)
THEN
1956 aa = n1(i)*vx(i) + n2(i)*vy(i) + n3(i)*vz(i)
1957 v2 = (vx(i) - n1(i)*aa)**2
1958 . + (vy(i) - n2(i)*aa)**2
1959 . + (vz(i) - n3(i)*aa)**2
1960 vv = sqrt(
max(em30,v2))
1961 xmu(i) = fric_coefs(i,1)
1962 . + (fricc(i)-fric_coefs(i,1))*exp(-fric_coefs(i,2)*vv)
1963 xmu(i) =
max(xmu(i),em30)
1971#include "vectorize.inc"
1976#include "vectorize.inc"
1981 IF(xmu(i)<=em30)
THEN
1989 IF(xmu2(i)<=em30)
THEN
2000 ELSEIF (mfrot==1)
THEN
2002#include "vectorize.inc"
2006 aa = n1(i)*vx(i) + n2(i)*vy(i) + n3(i)*vz(i)
2007 v2 = (vx(i) - n1(i)*aa)**2
2008 . + (vy(i) - n2(i)*aa)**2
2009 . + (vz(i) - n3(i)*aa)**2
2010 vv = sqrt(
max(em30,v2))
2012 ax1 = x(1,irect(3,ie)) - x(1,irect(1,ie))
2013 ay1 = x(2,irect(3,ie)) - x(2,irect(1,ie))
2014 az1 = x(3,irect(3,ie)) - x(3,irect(1,ie))
2015 ax2 = x(1,irect(4,ie)) - x(1,irect(2,ie))
2016 ay2 = x(2,irect(4,ie)) - x(2,irect(2,ie))
2017 az2 = x(3,irect(4,ie)) - x(3,irect(2,ie))
2018 ax = ay1*az2 - az1*ay2
2019 ay = az1*ax2 - ax1*az2
2020 az = ax1*ay2 - ay1*ax2
2021 area = half*sqrt(ax*ax+ay*ay+az*az)
2023 xmu(i) = fricc(i) + (fric_coefs(i,1) + fric_coefs(i,4)*p ) * p
2024 . +(fric_coefs(i,2) + fric_coefs(i,3)*p) * vv + fric_coefs(i,5)*v2
2025 xmu(i) =
max(xmu(i),em30)
2028#include "vectorize.inc"
2033 ax1 = x(1,irect(3,ie)) - x(1,irect(1,ie))
2034 ay1 = x(2,irect(3,ie)) - x(2,irect(1,ie))
2035 az1 = x(3,irect(3,ie)) - x(3,irect(1,ie))
2036 ax2 = x(1,irect(4,ie)) - x(1,irect(2,ie))
2037 ay2 = x(2,irect(4,ie)) - x(2,irect(2,ie))
2038 az2 = x(3,irect(4,ie)) - x(3,irect(2,ie))
2039 ax = ay1*az2 - az1*ay2
2040 ay = az1*ax2 - ax1*az2
2041 az = ax1*ay2 - ay1*ax2
2042 area = half*sqrt(ax*ax+ay*ay+az*az)
2047 xmu(i) = fricc(i) + (fric_coefs(i,1) + fric_coefs(i,4)*p ) * p
2048 . +(fric_coefs(i,2) + fric_coefs(i,3)*p) * vv + fric_coefs(i,5)*vv*vv
2050 v2 = vx(i)*dir2(i,1) +vy(i)*dir2(i,2)+vz(i)*dir2(i,3)
2052 xmu2(i) = fricc2(i) + (fric_coefs2(i,1) + fric_coefs2(i,4)*p ) * p
2053 . +(fric_coefs2(i,2) + fric_coefs2(i,3)*p) * vv + fric_coefs2(i,5)*vv*vv
2055 xmu(i) =
max(xmu(i),em30)
2056 xmu2(i) =
max(xmu2(i),em30)
2059#include "vectorize.inc"
2062 IF(xmu(i)<=em30)
THEN
2070 IF(xmu2(i)<=em30)
THEN
2080 ELSEIF(mfrot==2)
THEN
2082#include "vectorize.inc"
2086 aa = n1(i)*vx(i) + n2(i)*vy(i) + n3(i)*vz(i)
2087 v2 = (vx(i) - n1(i)*aa)**2
2088 . + (vy(i) - n2(i)*aa)**2
2089 . + (vz(i) - n3(i)*aa)**2
2090 vv = sqrt(
max(em30,v2))
2091 ax1 = x(1,irect(3,ie)) - x(1,irect(1,ie))
2092 ay1 = x(2,irect(3,ie)) - x(2,irect(1,ie))
2093 az1 = x(3,irect(3,ie)) - x(3,irect(1,ie))
2094 ax2 = x(1,irect(4,ie)) - x(1,irect(2,ie))
2095 ay2 = x(2,irect(4,ie)) - x(2,irect(2,ie))
2096 az2 = x(3,irect(4,ie)) - x(3,irect(2,ie))
2097 ax = ay1*az2 - az1*ay2
2098 ay = az1*ax2 - ax1*az2
2099 az = ax1*ay2 - ay1*ax2
2100 area = half*sqrt(ax*ax+ay*ay+az*az)
2103 . + fric_coefs(i,1)*exp(fric_coefs(i,2)*vv)*p*p
2104 . + fric_coefs(i,3)*exp(fric_coefs(i,4)*vv)*p
2105 . + fric_coefs(i,5)*exp(fric_coefs(i,6)*vv)
2106 xmu(i) =
max(xmu(i),em30)
2109#include "vectorize.inc"
2114 ax1 = x(1,irect(3,ie)) - x(1,irect(1,ie))
2115 ay1 = x(2,irect(3,ie)) - x(2,irect(1,ie))
2116 az1 = x(3,irect(3,ie)) - x(3,irect(1,ie))
2117 ax2 = x(1,irect(4,ie)) - x(1,irect(2,ie))
2118 ay2 = x(2,irect(4,ie)) - x(2,irect(2,ie))
2119 az2 = x(3,irect(4,ie)) - x(3,irect(2,ie))
2120 ax = ay1*az2 - az1*ay2
2121 ay = az1*ax2 - ax1*az2
2122 az = ax1*ay2 - ay1*ax2
2123 area = half*sqrt(ax*ax+ay*ay+az*az)
2126 v2 = vx(i)*dir1(i,1) +vy(i)*dir1(i,2)+vz(i)*dir1(i,3)
2129 . + fric_coefs(i,1)*exp(fric_coefs(i,2)*vv)*p*p
2130 . + fric_coefs(i,3)*exp(fric_coefs(i,4)*vv)*p
2131 . + fric_coefs(i,5)*exp(fric_coefs(i,6)*vv)
2133 v2 = vx(i)*dir2(i,1) +vy(i)*dir2(i,2)+vz(i)*dir2(i,3)
2136 . + fric_coefs2(i,1)*exp(fric_coefs2(i,2)*vv)*p*p
2137 . + fric_coefs2(i,3)*exp(fric_coefs2(i,4)*vv)*p
2138 . + fric_coefs2(i,5)*exp(fric_coefs2(i,6)*vv)
2139 xmu(i) =
max(xmu(i),em30)
2140 xmu2(i) =
max(xmu2(i),em30)
2143#include "vectorize.inc"
2146 IF(xmu(i)<=em30)
THEN
2154 IF(xmu2(i)<=em30)
THEN
2164 ELSEIF (mfrot==3)
THEN
2166#include "vectorize.inc"
2167 DO k=1,nfisot ! isotropic friction couples
2169 aa = n1(i)*vx(i) + n2(i)*vy(i) + n3(i)*vz(i)
2170 v2 = (vx(i) - n1(i)*aa)**2
2171 . + (vy(i) - n2(i)*aa
2172 . + (vz(i) - n3(i)*aa)**2
2173 vv = sqrt(
max(em30,v2))
2174 IF(vv>=0.AND.vv<=fric_coefs(i,5))
THEN
2175 dmu = fric_coefs(i,3)-fric_coefs(i,1)
2176 vv1 = vv / fric_coefs(i,5)
2177 xmu(i) = fric_coefs(i,1)+ dmu*vv1*(two-vv1)
2178 ELSEIF(vv>fric_coefs(i,5).AND.vv<fric_coefs(i,6))
THEN
2179 dmu = fric_coefs(i,4)-fric_coefs(i,3)
2180 vv1 = (vv - fric_coefs(i,5))/(fric_coefs(i,6)-fric_coefs(i,5))
2181 xmu(i) = fric_coefs(i,3)+ dmu * (three-two*vv1)*vv1**2
2183 dmu = fric_coefs(i,2)-fric_coefs(i,4)
2184 vv2 = (vv - fric_coefs(i,6))**2
2185 xmu(i) = fric_coefs(i,2) - dmu / (one + dmu*vv2)
2187 xmu(i) =
max(xmu(i),em30)
2190#include "vectorize.inc"
2194 v2 = vx(i)*dir1(i,1) +vy(i)*dir1(i,2)+vz(i)*dir1(i,3)
2196 IF(vv>=0.AND.vv<=fric_coefs(i,5))
THEN
2197 dmu = fric_coefs(i,3)-fric_coefs(i,1)
2198 vv1 = vv / fric_coefs(i,5)
2199 xmu(i) = fric_coefs(i,1)+ dmu*vv1*(two-vv1)
2200 ELSEIF(vv>fric_coefs(i,5).AND.vv<fric_coefs(i,6))
THEN
2201 dmu = fric_coefs(i,4)-fric_coefs(i,3)
2202 vv1 = (vv - fric_coefs(i,5))/(fric_coefs(i,6)-fric_coefs(i,5))
2203 xmu(i) = fric_coefs(i,3)+ dmu * (three-two*vv1)*vv1**2
2205 dmu = fric_coefs(i,2)-fric_coefs(i,4)
2206 vv2 = (vv - fric_coefs(i,6))**2
2207 xmu(i) = fric_coefs(i,2) - dmu / (one + dmu*vv2)
2210 v2 = vx(i)*dir2(i,1) +vy(i)*dir2(i,2)+vz(i)*dir2(i,3)
2212 IF(vv>=0.AND.vv<=fric_coefs2(i,5))
THEN
2213 dmu = fric_coefs2(i,3)-fric_coefs2(i,1)
2214 vv1 = vv / fric_coefs2(i,5)
2215 xmu2(i) = fric_coefs2(i,1)+ dmu*vv1*(two-vv1)
2216 ELSEIF(vv>fric_coefs2(i,5).AND.vv<fric_coefs2(i,6))
THEN
2217 dmu = fric_coefs2(i,4)-fric_coefs2(i,3)
2218 vv1 = (vv - fric_coefs2(i,5))/(fric_coefs2(i,6)-fric_coefs2(i,5))
2219 xmu2(i) = fric_coefs2(i,3)+ dmu * (three-two*vv1)*vv1**2
2221 dmu = fric_coefs2(i,2)-fric_coefs2(i,4)
2222 vv2 = (vv - fric_coefs2(i,6))**2
2223 xmu2(i) = fric_coefs2(i,2) - dmu / (one + dmu*vv2)
2225 xmu(i) =
max(xmu(i),em30)
2226 xmu2(i) =
max(xmu2(i),em30)
2229#include "vectorize.inc"
2232 IF(xmu(i)<=em30)
THEN
2240 IF(xmu2(i)<=em30)
THEN
2250 ELSEIF(mfrot==4)
THEN
2252#include "vectorize.inc"
2255 aa = n1(i)*vx(i) + n2(i)*vy(i) + n3(i)*vz(i)
2256 v2 = (vx(i) - n1(i)*aa)**2
2257 . + (vy(i) - n2(i)*aa)**2
2258 . + (vz(i) - n3(i)*aa)**2
2259 vv = sqrt(
max(em30,v2))
2260 xmu(i) = fric_coefs(i,1)
2261 . + (fricc(i)-fric_coefs(i,1))*exp(-fric_coefs(i,2)*vv)
2262 xmu(i) =
max(xmu(i),em30)
2265#include "vectorize.inc"
2269 v2 = vx(i)*dir1(i,1) +vy(i)*dir1(i,2)+vz(i)*dir1(i,3)
2272 . + (fric_coefs(i,1)-fricc(i))*exp(-fric_coefs(i,2)*vv)
2274 v2 = vx(i)*dir2(i,1) +vy(i)*dir2(i,2)+vz(i)*dir2(i,3)
2276 xmu2(i) = fric_coefs2(i,1)
2277 . + (fricc2(i)-fric_coefs2(i,1))*exp(-fric_coefs2(i,2)*vv)
2279 xmu(i) =
max(xmu(i),em30)
2280 xmu2(i) =
max(xmu2(i),em30)
2283#include "vectorize.inc"
2286 IF(xmu(i)<=em30)
THEN
2294 IF(xmu2(i)<=em30)
THEN
2319 IF(iorthfric ==0 )
THEN
2333 fx = stif0(i)*vx(i)*dt12
2334 fy = stif0(i)*vy(i)*dt12
2335 fz = stif0(i)*vz(i)*dt12
2336 fx = cand_fx(index(i)) +
alpha*fx
2337 fy = cand_fy(index(i)) +
alpha*fy
2338 fz = cand_fz(index(i)) +
alpha*fz
2339 ftn = fx*n1(i) + fy*n2(i) + fz*n3(i)
2343 ft = fx*fx + fy*fy + fz*fz
2345 fn = fxi(i)**2+fyi(i)**2+fzi(i)**2
2346 beta =
min(one,xmu(i)*sqrt(fn/ft))
2350 cand_fx(index(i)) = fxt(i)
2351 cand_fy(index(i)) = fyt(i)
2352 cand_fz(index(i)) = fzt(i)
2355 fxi(i)=fxi(i) + fxt(i)
2356 fyi(i)=fyi(i) + fyt(i)
2357 fzi(i)=fzi(i) + fzt(i)
2361 IF( intth > 0 .AND.beta/=zero)
THEN
2362 efrict(i) = (fx-fxt(i))*fxt(i) + (fy-fyt(i))*fyt(i) +
2363 . (fz-fzt(i))*fzt(i)
2364 efrict(i) = efrict(i)/stif0(i)
2365 qfrict = qfrict + efrict(i)
2367 efric_l(i) = dt1*(vx(i)*fxt(i)+vy(i)*fyt(i)+vz(i)*fzt(i))
2368 econvt = econvt + efric_l(i)
2376 fx = stif0(i)*vx(i)*dt12
2377 fy = stif0(i)*vy(i)*dt12
2378 fz = stif0(i)*vz(i)*dt12
2379 fx = cand_fx(index(i)) +
alpha*fx
2380 fy = cand_fy(index(i)) +
alpha*fy
2381 fz = cand_fz(index(i)) +
alpha*fz
2382 ftn = fx*n1(i) + fy*n2(i) + fz*n3(i)
2386 ft = fx*fx + fy*fy + fz*fz
2388 fn = fxi(i)**2+fyi(i)**2+fzi(i)**2
2389 beta =
min(one,xmu(i)*sqrt(fn/ft))
2393 fxi(i)=fxi(i) + fxt(i)
2394 fyi(i)=fyi(i) + fyt(i)
2395 fzi(i)=fzi(i) + fzt(i)
2416 v2 = vx(i)**2 + vy(i)**2 + vz(i)**2
2417 vis2(i) = viscffric(i) * vis2(i)
2418 fm2 = (xmu(i)*fni(i))**2
2420 a2 =
min(f2,fm2) /
max(em30,f2)
2421 aa = sqrt(a2 * vis2(i))
2425 fxt(i) =
alpha*fx + alphi*cand_fx(index(i))
2426 fyt(i) =
alpha*fy + alphi*cand_fy(index(i))
2427 fzt(i) =
alpha*fz + alphi*cand_fz(index(i))
2428 cand_fx(index(i)) = fxt(i)
2429 cand_fy(index(i)) = fyt(i)
2430 cand_fz(index(i)) = fzt(i)
2433 fxi(i) = fxi(i) + fxt(i)
2434 fyi(i) = fyi(i) + fyt(i)
2435 fzi(i) = fzi(i) + fzt(i)
2441 efrict(i) = dt1*(fxt(i)*vx(i) + fyt(i)*vy(i) + fzt(i)*vz(i))
2442 qfrict = qfrict + efrict(i)
2444 efric_l(i) = dt1*(vx(i)*fxt(i)+vy(i)*fyt(i)+vz(i)*fzt(i))
2445 econvt = econvt + efric_l(i)
2458 v2 = vx(i)**2 + vy(i)**2 + vz(i)**2
2459 vis2(i) = viscffric(i) * vis2(i)
2460 fm2 = (xmu(i)*fni(i))**2
2462 a2 =
min(f2,fm2) /
max(em30,f2)
2463 aa = sqrt(a2 * vis2(i))
2468 fxi(i)=fxi(i) + fxt(i)
2469 fyi(i)=fyi(i) + fyt(i)
2470 fzi(i)=fzi(i) + fzt(i)
2476 efrict(i) = aa * v2 * dt1
2477 qfrict = qfrict + efrict(i)
2479 efric_l(i) = aa * v2 * dt1
2480 econvt = econvt + efric_l(i)
2499#include "vectorize.inc"
2502 fx = stif0(i)*vx(i)*dt12
2503 fy = stif0(i)*vy(i)*dt12
2504 fz = stif0(i)*vz(i)*dt12
2505 fx = cand_fx(index(i)) +
alpha*fx
2506 fy = cand_fy(index(i)) +
alpha*fy
2507 fz = cand_fz(index(i)) +
alpha*fz
2508 ftn = fx*n1(i) + fy*n2(i) + fz*n3(i)
2512 ft = fx*fx + fy*fy + fz*fz
2514 fn = fxi(i)**2+fyi(i)**2+fzi(i)**2
2516 beta =
min(one,xmu(i)*sqrt(fn/ft))
2522 cand_fx(index(i)) = fxt(i)
2523 cand_fy(index(i)) = fyt(i)
2524 cand_fz(index(i)) = fzt(i)
2527 fxi(i)=fxi(i) + fxt(i)
2528 fyi(i)=fyi(i) + fyt(i)
2529 fzi(i)=fzi(i) + fzt(i)
2535 IF( intth > 0 .AND.beta/=zero)
THEN
2536 efrict(i) = (fx-fxt(i))*fxt(i) + (fy-fyt(i))*fyt(i) +
2537 . (fz-fzt(i))*fzt(i)
2538 efrict(i) = efrict(i)/stif0(i)
2539 qfrict = qfrict + efrict(i)
2541 efric_l(i)= dt1*(vx(i)*fxt(i)+vy(i)*fyt(i)+vz(i)*fzt(i))
2542 econvt = econvt + efric_l(i)
2545#include "vectorize.inc"
2548 fx = stif0(i)*vx(i)*dt12
2549 fy = stif0(i)*vy(i)*dt12
2550 fz = stif0(i)*vz(i)*dt12
2551 fx = cand_fx(index(i)) +
alpha*fx
2552 fy = cand_fy(index(i)) +
alpha*fy
2553 fz = cand_fz(index(i)) +
alpha*fz
2555 ftn = fx*n1(i) + fy*n2(i) + fz*n3(i)
2561 ftt1= fx*dir1(i,1) + fy*dir1(i,2) + fz*dir1(i,3)
2562 ftt2= fx*dir2(i,1) + fy*dir2(i,2) + fz*dir2(i,3)
2564 ft = ftt1*ftt1*an(k) + ftt2*ftt2*bn(k)
2566 fn = fxi(i)**2+fyi(i)**2+fzi(i)**2
2574 ELSEIF(beta > 1)
THEN
2584 nep =nep1*nep1+nep2*nep2
2587 ep=nep1*ftt1+nep2*ftt2
2589 ans=(ep-sqrt(ep))/
max(em20,nep)
2590 nep1 =nep1/
max(em20,nep)
2591 nep2 =nep2/
max(em20,nep)
2597 alphaf = atan(c22/c11)
2599 signc = ftt1/
max(em20,abs(ftt1))
2600 csa = signc*abs(cos(alphaf))
2601 signc = ftt2/
max(em20,abs(ftt2))
2602 sna = signc*abs(sin(alphaf))
2604 ft = sqrt(fn / (csa*csa*an(k) + sna*sna*bn(k)))
2608 fxt(i) = ftt1 * dir1(i,1) + ftt2 * dir2(i,1)
2609 fyt(i) = ftt1 * dir1(i,2) + ftt2 * dir2(i,2)
2610 fzt(i) = ftt1 * dir1(i,3) + ftt2 * dir2(i,3)
2613 cand_fx(index(i)) = fxt(i)
2614 cand_fy(index(i)) = fyt(i)
2615 cand_fz(index(i)) = fzt(i)
2618 fxi(i)=fxi(i) + fxt(i)
2619 fyi(i)=fyi(i) + fyt(i)
2620 fzi(i)=fzi(i) + fzt(i)
2626 IF( intth > 0 .AND.beta/=zero)
THEN
2627 efrict(i) = (fx-fxt(i))*fxt(i) + (fy-fyt(i))*fyt(i) +
2628 . (fz-fzt(i))*fzt(i)
2629 efrict(i) = efrict(i)/stif0(i)
2630 qfrict = qfrict + efrict(i)
2632 efric_l(i)= dt1*(vx(i)*fxt(i)+vy(i)*fyt(i)+vz(i)*fzt(i))
2633 econvt = econvt + efric_l(i)
2638#include "vectorize.inc"
2641 fx = stif0(i)*vx(i)*dt12
2642 fy = stif0(i)*vy(i)*dt12
2643 fz = stif0(i)*vz(i)*dt12
2644 fx = cand_fx(index(i)) +
alpha*fx
2645 fy = cand_fy(index(i)) +
alpha*fy
2646 fz = cand_fz(index(i)) +
alpha*fz
2647 ftn = fx*n1(i) + fy*n2(i) + fz*n3(i)
2651 ft = fx*fx + fy*fy + fz*fz
2653 fn = fxi(i)**2+fyi(i)**2+fzi(i)**2
2654 beta =
min(one,xmu(i)*sqrt(fn/ft))
2658 fxi(i)=fxi(i) + fxt(i)
2660 fzi(i)=fzi(i) + fzt(i)
2664#include "vectorize.inc"
2667 fx = stif0(i)*vx(i)*dt12
2668 fy = stif0(i)*vy(i)*dt12
2669 fz = stif0(i)*vz(i)*dt12
2670 fx = cand_fx(index(i)) +
alpha*fx
2671 fy = cand_fy(index(i)) +
alpha*fy
2672 fz = cand_fz(index(i)) +
alpha*fz
2674 ftn = fx*n1(i) + fy*n2(i) + fz*n3(i)
2680 ftt1= fx*dir1(i,1) + fy*dir1(i,2) + fz*dir1(i,3)
2681 ftt2= fx*dir2(i,1) + fy*dir2(i,2) + fz*dir2(i,3)
2682 ft = ftt1*ftt1*an(k) + ftt2*ftt2*bn(k)
2684 fn = fxi(i)**2+fyi(i)**2+fzi(i)**2
2692 ELSEIF(beta > 1)
THEN
2702 nep =nep1*nep1+nep2*nep2
2707 ans=(ep-sqrt(ep))/
max(em20,nep)
2709 nep2 =nep2/
max(em20,nep)
2715 alphaf = atan(c22/c11)
2717 signc = ftt1/
max(em20,abs(ftt1))
2718 csa = signc*abs(cos(alphaf))
2719 signc = ftt2/
max(em20,abs(ftt2))
2720 sna = signc*abs(sin(alphaf))
2722 ft = sqrt(fn / (csa*csa*an(k) + sna*sna*bn(k)))
2726 fxt(i) = ftt1 * dir1(i,1) + ftt2 * dir2(i,1)
2727 fyt(i) = ftt1 * dir1(i,2) + ftt2 * dir2(i,2)
2728 fzt(i) = ftt1 * dir1(i,3) + ftt2 * dir2(i,3)
2732 fxi(i)=fxi(i) + fxt(i)
2733 fyi(i)=fyi(i) + fyt(i)
2734 fzi(i)=fzi(i) + fzt(i)
2750#include "vectorize.inc"
2759 v2 = vx(i)**2 + vy(i)**2 + vz(i)**2
2760 vis2(i) = viscffric(i) * vis2(i)
2761 fm2 = (xmu(i)*fni(i))**2
2763 a2 =
min(f2,fm2) /
max(em30,f2)
2764 aa = sqrt(a2 * vis2(i))
2768 fxt(i) =
alpha*fx + alphi*cand_fx(index(i))
2769 fyt(i) =
alpha*fy + alphi*cand_fy(index(i))
2770 fzt(i) =
alpha*fz + alphi*cand_fz(index(i))
2771 cand_fx(index(i)) = fxt(i)
2772 cand_fy(index(i)) = fyt(i)
2773 cand_fz(index(i)) = fzt(i)
2776 fxi(i) = fxi(i) + fxt(i)
2777 fyi(i) = fyi(i) + fyt(i)
2778 fzi(i) = fzi(i) + fzt(i)
2784 efrict(i) = dt1*(fxt(i)*vx(i) + fyt(i)*vy(i) + fzt(i)*vz(i))
2785 qfrict = qfrict + efrict(i)
2787 efric_l(i)= dt1*(vx(i)*fxt(i)+vy(i)*fyt(i)+vz(i)*fzt(i))
2788 econvt = econvt + efric_l(i)
2791#include "vectorize.inc"
2792 DO k=1,nforth ! orthotropic friction couples
2801 vis2(i) = viscffric(i) * vis2(i)
2808 ftt1= fx*dir1(i,1) + fy*dir1(i,2) + fz*dir1(i,3)
2809 ftt2= fx*dir2(i,1) + fy*dir2(i,2) + fz*dir2(i,3)
2810 ft = ftt1*ftt1*an(k) + ftt2*ftt2*bn(k)
2820 ELSEIF(beta > 1)
THEN
2826! projection on local tangent of ellipse(outside of ellipse)
2830 nep =nep1*nep1+nep2*nep2
2833 ep=nep1*ftt1+nep2*ftt2
2835 ans=(ep-sqrt(ep))/
max(em20,nep)
2836 nep1 =nep1/
max(em20,nep)
2837 nep2 =nep2/
max(em20,nep)
2843 alphaf = atan(c22/c11)
2845 signc = ftt1/
max(em20,abs(ftt1))
2846 csa = signc*abs(cos(alphaf))
2847 signc = ftt2/
max(em20,abs(ftt2))
2848 sna = signc*abs(sin(alphaf))
2850 ft = fni(i) /sqrt( (csa*csa*an(k) + sna*sna*bn(k)))
2854 fxt(i) = ftt1 * dir1(i,1) + ftt2 * dir2(i,1)
2855 fyt(i) = ftt1 * dir1(i,2) + ftt2 * dir2(i,2)
2856 fzt(i) = ftt1 * dir1(i,3) + ftt2 * dir2(i,3)
2860 fxt(i) =
alpha*fxt(i) + alphi*cand_fx(index(i))
2861 fyt(i) =
alpha*fyt(i) + alphi*cand_fy(index(i))
2862 fzt(i) =
alpha*fzt(i) + alphi*cand_fz(index(i))
2863 cand_fx(index(i)) = fxt(i)
2864 cand_fy(index(i)) = fyt(i)
2865 cand_fz(index(i)) = fzt(i)
2868 fxi(i) = fxi(i) + fxt(i)
2869 fyi(i) = fyi(i) + fyt(i)
2870 fzi(i) = fzi(i) + fzt(i)
2876 efrict(i) = dt1*(fxt(i)*vx(i) + fyt(i)*vy(i) + fzt(i)*vz(i))
2877 qfrict = qfrict + efrict(i)
2879 efric_l(i)= dt1*(vx(i)*fxt(i)+vy(i)*fyt(i)+vz(i)*fzt(i))
2880 econvt = econvt + efric_l(i)
2889#include "vectorize.inc"
2898 v2 = vx(i)**2 + vy(i)**2 + vz(i)**2
2899 vis2(i) = viscffric(i) * vis2(i)
2900 fm2 = (xmu(i)*fni(i))**2
2902 a2 =
min(f2,fm2) /
max(em30,f2)
2903 aa = sqrt(a2 * vis2(i))
2908 fxi(i) = fxi(i) + fxt(i)
2909 fyi(i) = fyi(i) + fyt(i)
2910 fzi(i) = fzi(i) + fzt(i)
2916 efrict(i) = aa * v2 * dt1
2917 qfrict = qfrict + efrict(i)
2919 efric_l(i)= aa * v2 * dt1
2920 econvt = econvt + efric_l(i)
2923#include "vectorize.inc"
2932 vis2(i) = viscffric(i) * vis2(i)
2939 ftt1= fx*dir1(i,1) + fy*dir1(i,2) + fz*dir1(i,3)
2940 ftt2= fx*dir2(i,1) + fy*dir2(i,2) + fz*dir2(i,3)
2941 ft = ftt1*ftt1*an(k) + ftt2*ftt2*bn(k)
2951 ELSEIF(beta > 1)
THEN
2961 nep =nep1*nep1+nep2*nep2
2964 ep=nep1*ftt1+nep2*ftt2
2966 ans=(ep-sqrt(ep))/
max(em20,nep)
2967 nep1 =nep1/
max(em20,nep)
2968 nep2 =nep2/
max(em20,nep)
2974 alphaf = atan(c22/c11)
2976 signc = ftt1/
max(em20,abs(ftt1))
2977 csa = signc*abs(cos(alphaf))
2978 signc = ftt2/
max(em20,abs(ftt2))
2979 sna = signc*abs(sin(alphaf))
2981 ft = fni(i) /sqrt( (csa*csa*an(k) + sna*sna*bn(k)))
2985 fxt(i) = ftt1 * dir1(i,1) + ftt2 * dir2(i,1)
2986 fyt(i) = ftt1 * dir1(i,2) + ftt2 * dir2(i,2)
2987 fzt(i) = ftt1 * dir1(i,3) + ftt2 * dir2(i,3)
2993 fxi(i)=fxi(i) + fxt(i)
2994 fyi(i)=fyi(i) + fyt(i)
2995 fzi(i)=fzi(i) + fzt(i)
3001 efrict(i) = aa * v2 * dt1
3002 qfrict = qfrict + efrict(i)
3004 efric_l(i)= aa * v2 * dt1
3005 econvt = econvt + efric_l(i)
3014 DO i=jlt-jlt_tied+1,jlt
3015 fxt(i)= t1x(i)*ft1(i) + t2x(i)*ft2(i)
3016 fyt(i)= t1y(i)*ft1(i) + t2y(i)*ft2(i)
3017 fzt(i)= t1z(i)*ft1(i) + t2z(i)*ft2(i)
3019 fxi(i)=fxi(i) + fxt(i)
3020 fyi(i)=fyi(i) + fyt(i)
3021 fzi(i)=fzi(i) + fzt(i)
3025 IF((anim_v(12)+outp_v(12)+h3d_data%N_VECT_PCONT>0.AND.
3026 . ((tt>=output%TANIM .AND. tt<=output%TANIM_STOP).OR.tt>=toutp.OR.(tt>=h3d_data%TH3D.AND.tt<=h3d_data%TH3D_STOP).OR.
3027 . (manim>=4.AND.manim<=15).OR.h3d_data%MH3D/=0))
3028 . .OR.h3d_data%N_VECT_PCONT_MAX>0)
THEN
3030#include "lockon.inc"
3032 ftcont(1,ix1(i)) =ftcont(1,ix1(i)) + fxt(i)*h1(i)
3033 ftcont(2,ix1(i)) =ftcont(2,ix1(i)) + fyt(i)*h1(i)
3034 ftcont(3,ix1(i)) =ftcont(3,ix1(i)) + fzt(i)*h1(i)
3035 ftcont(1,ix2(i)) =ftcont(1,ix2(i)) + fxt(i)*h2(i)
3036 ftcont(2,ix2(i)) =ftcont(2,ix2(i)) + fyt(i)*h2(i)
3037 ftcont(3,ix2(i)) =ftcont(3,ix2(i)) + fzt(i)*h2(i)
3038 ftcont(1,ix3(i)) =ftcont(1,ix3(i)) + fxt(i)*h3(i)
3039 ftcont(2,ix3(i)) =ftcont(2,ix3(i)) + fyt(i)*h3(i)
3040 ftcont(3,ix3(i)) =ftcont(3,ix3(i)) + fzt(i)*h3(i)
3041 ftcont(1,ix4(i)) =ftcont(1,ix4(i)) + fxt(i)*h4(i)
3042 ftcont(2,ix4(i)) =ftcont(2,ix4(i)) + fyt(i)*h4(i)
3043 ftcont(3,ix4(i)) =ftcont(3,ix4(i)) + fzt(i)*h4(i)
3047 ftcont(1,jg)=ftcont(1,jg)- fxt(i)
3048 ftcont(2,jg)=ftcont(2,jg)- fyt(i)
3049 ftcont(3,jg)=ftcont(3,jg)- fzt(i)
3057#include "lockoff.inc"
3067 impx=forc_sign*fxt(i)*dt12
3068 impy=forc_sign*fyt(i)*dt12
3069 impz=forc_sign*fzt(i)*dt12
3074 impx=forc_sign*fxi(i)*dt12
3075 impy=forc_sign*fyi(i)*dt12
3076 impz=forc_sign*fzi(i)*dt12
3077 fsav12=fsav12+abs(impx)
3078 fsav13=fsav13+abs(impy)
3079 fsav14=fsav14+abs(impz)
3080 fsav15=fsav15+sqrt(impx*impx+impy*impy+impz*impz)
3081 xp(i)=xi(i)+pene(i)*n1(i)
3082 yp(i)=yi(i)+pene(i)*n2(i)
3083 zp(i)=zi(i)+pene(i)*n3(i)
3084 fsav22=fsav22+yp(i)*impz-zp(i)*impy
3085 fsav23=fsav23+zp(i)*impx-xp(i)*impz
3086 fsav24=fsav24+xp(i)*impy-yp(i)*impx
3088#include "lockon.inc"
3089 fsav(4) = fsav(4) + fsav4
3090 fsav(5) = fsav(5) + fsav5
3091 fsav(6) = fsav(6) + fsav6
3092 fsav(12) = fsav(12) + fsav12
3093 fsav(13) = fsav(13) + fsav13
3094 fsav(14) = fsav(14) + fsav14
3095 fsav(15) = fsav(15) + fsav15
3096 fsav(22) = fsav(22) + fsav22
3097 fsav(23) = fsav(23) + fsav23
3098 fsav(24) = fsav(24) + fsav24
3099 fsav(25) = fsav(25) + (fheats+fheatm)*qfrict
3100 fsav(26) = fsav(26) + econtt
3101 fsav(27) = fsav(27) + econvt- (fheats+fheatm)*qfrict
3102 fsav(28) = fsav(28) + econtdt
3103#include "lockoff.inc"
3105 IF(isensint(1)/=0)
THEN
3107 fsavparit(1,4,i+nft) = forc_sign*fxt(i)
3108 fsavparit(1,5,i+nft) = forc_sign*fyt(i)
3109 fsavparit(1,6,i+nft) = forc_sign*fzt(i)
3123 DO WHILE(jj<addsubs(in+1))
3125 itypsub = typsub(jsub)
3127 IF(itypsub == 1 )
THEN
3130 DO WHILE((ksub<=jsub).AND.(kk<addsubm(ie+1)))
3133 impx=forc_sign*fxt(i)*dt12
3134 impy=forc_sign*fyt(i)*dt12
3135 impz=forc_sign*fzt(i)*dt12
3137 fsavsub1(4,jsub)=fsavsub1(4,jsub)+impx
3138 fsavsub1(5,jsub)=fsavsub1(5,jsub)+impy
3139 fsavsub1(6,jsub)=fsavsub1(6,jsub)+impz
3142 impx=forc_sign*fxi(i)*dt12
3143 impy=forc_sign*fyi(i)*dt12
3144 impz=forc_sign*fzi(i)*dt12
3145 fsavsub1(12,jsub)=fsavsub1(12,jsub)+abs(impx)
3146 fsavsub1(13,jsub)=fsavsub1(13,jsub)+abs(impy)
3147 fsavsub1(14,jsub)=fsavsub1(14,jsub)+abs(impz)
3149 IF(isensint(jsub+1)/=0)
THEN
3150 fsavparit(jsub+1,4,i+nft) = forc_sign*fxt(i)
3151 fsavparit(jsub+1,5,i+nft) = forc_sign*fyt(i)
3152 fsavparit(jsub+1,6,i+nft) = forc_sign*fzt(i)
3155 fsavsub1(15,jsub)= fsavsub1(15,jsub)
3156 . +sqrt(impx*impx+impy*impy+impz*impz)
3157 fsavsub1(22,jsub)=fsavsub1(22,jsub)
3158 . +yp(i)*impz-zp(i)*impy
3159 fsavsub1(23,jsub)=fsavsub1(23,jsub)
3160 . +zp(i)*impx-xp(i)*impz
3161 fsavsub1(24,jsub)=fsavsub1(24,jsub)
3162 . +xp(i)*impy-yp(i)*impx
3171 ELSEIF(itypsub == 2 )
THEN
3174 impx=forc_sign*fxt(i)*dt12
3175 impy=forc_sign*fyt(i)*dt12
3176 impz=forc_sign*fzt(i)*dt12
3178 fsavsub1(4,jsub)=fsavsub1(4,jsub)+impx
3179 fsavsub1(5,jsub)=fsavsub1(5,jsub)+impy
3180 fsavsub1(6,jsub)=fsavsub1(6,jsub)+impz
3183 impx=forc_sign*fxi(i)*dt12
3184 impy=forc_sign*fyi(i)*dt12
3185 impz=forc_sign*fzi(i)*dt12
3186 fsavsub1(12,jsub)=fsavsub1(12,jsub)+abs(impx)
3187 fsavsub1(13,jsub)=fsavsub1(13,jsub)+abs(impy)
3188 fsavsub1(14,jsub)=fsavsub1(14,jsub)+abs(impz)
3190 IF(isensint(jsub+1)/=0)
THEN
3191 fsavparit(jsub+1,4,i+nft) = forc_sign*fxt(i)
3192 fsavparit(jsub+1,5,i+nft) = forc_sign*fyt(i)
3193 fsavparit(jsub+1,6,i+nft) = forc_sign*fzt(i)
3196 fsavsub1(15,jsub)= fsavsub1(15,jsub)
3197 . +sqrt(impx*impx+impy*impy+impz*impz)
3198 fsavsub1(22,jsub)=fsavsub1(22,jsub)
3199 . +yp(i)*impz-zp(i)*impy
3200 fsavsub1(23,jsub)=fsavsub1(23,jsub)
3201 . +zp(i)*impx-xp(i)*impz
3202 fsavsub1(24,jsub)=fsavsub1(24,jsub)
3203 . +xp(i)*impy-yp(i)*impx
3207 ELSEIF(itypsub == 3 )
THEN
3210 iss2 = bitget(inflg_subs(jj),0)
3211 iss1 = bitget(inflg_subs(jj),1)
3213 DO WHILE((ksub<=jsub).AND.(kk<addsubm(ie+1)))
3214 ims2 = bitget(inflg_subm(kk),0)
3215 ims1 = bitget(inflg_subm(kk),1)
3218 IF(.NOT.((ims1 == 1 .AND. iss2 == 1).OR.
3219 . (ims2 == 1 .AND. iss1 == 1)))
THEN
3225 impx=forc_sign*fxt(i)*dt12
3226 impy=forc_sign*fyt(i)*dt12
3227 impz=forc_sign*fzt(i)*dt12
3230 fsavsub1(4,jsub)=fsavsub1(4,jsub)-impx
3231 fsavsub1(5,jsub)=fsavsub1(5,jsub)-impy
3232 fsavsub1(6,jsub)=fsavsub1(6,jsub)-impz
3234 fsavsub1(4,jsub)=fsavsub1(4,jsub)+impx
3235 fsavsub1(5,jsub)=fsavsub1(5,jsub)+impy
3236 fsavsub1(6,jsub)=fsavsub1(6,jsub)+impz
3239 impx=forc_sign*fxi(i)*dt12
3240 impy=forc_sign*fyi(i)*dt12
3241 impz=forc_sign*fzi(i)*dt12
3242 fsavsub1(12,jsub)=fsavsub1(12,jsub)+abs(impx)
3243 fsavsub1(13,jsub)=fsavsub1(13,jsub)+abs(impy)
3244 fsavsub1(14,jsub)=fsavsub1(14,jsub)+abs
3246 IF(isensint(jsub+1)/=0)
THEN
3248 fsavparit(jsub+1,4,i+nft) = -forc_sign*fxt(i)
3249 fsavparit(jsub+1,5,i+nft) = -forc_sign*fyt(i)
3250 fsavparit(jsub+1,6,i+nft) = -forc_sign*fzt(i)
3252 fsavparit(jsub+1,4,i+nft) = forc_sign*fxt(i)
3253 fsavparit(jsub+1,5,i+nft) = forc_sign*fyt(i)
3254 fsavparit(jsub+1,6,i+nft) = forc_sign*fzt(i)
3258 fsavsub1(15,jsub)= fsavsub1(15,jsub)
3259 . +sqrt(impx*impx+impy*impy+impz*impz)
3260 fsavsub1(22,jsub)=fsavsub1(22,jsub)
3261 . +yp(i)*impz-zp(i)*impy
3262 fsavsub1(23,jsub)=fsavsub1(23,jsub)
3263 . +zp(i)*impx-xp(i)*impz
3264 fsavsub1(24,jsub)=fsavsub1(24,jsub)
3265 . +xp(i)*impy-yp(i)*impx
3280 DO WHILE(kk<addsubm(ie+1))
3284 itypsub = typsub(ksub)
3285 IF(itypsub == 2 )
THEN
3286 impx=-forc_sign*fxt(i)*dt12
3287 impy=-forc_sign*fyt(i)*dt12
3288 impz=-forc_sign*fzt(i)*dt12
3290 fsavsub1(4,ksub)=fsavsub1(4,ksub)+impx
3291 fsavsub1(5,ksub)=fsavsub1(5,ksub)+impy
3292 fsavsub1(6,ksub)=fsavsub1(6,ksub)+impz
3297 fsavsub1(12,ksub)=fsavsub1(12,ksub)+abs(impx)
3298 fsavsub1(13,ksub)=fsavsub1(13,ksub)+abs(impy)
3299 fsavsub1(14,ksub)=fsavsub1(14,ksub)+abs(impz)
3301 IF(isensint(ksub+1)/=0)
THEN
3302 fsavparit(ksub+1,4,i+nft) = -forc_sign*fxt(i)
3303 fsavparit(ksub+1,5,i+nft) = -forc_sign*fyt(i)
3304 fsavparit(ksub+1,6,i+nft) = -forc_sign*fzt(i)
3307 fsavsub1(15,ksub)= fsavsub1(15,ksub)
3308 . +sqrt(impx*impx+impy*impy+impz*impz)
3309 fsavsub1(22,ksub)=fsavsub1(22,ksub)
3310 . +yp(i)*impz-zp(i)*impy
3311 fsavsub1(23,ksub)=fsavsub1(23,ksub)
3312 . +zp(i)*impx-xp(i)*impz
3313 fsavsub1(24,ksub)=fsavsub1(24,ksub)
3314 . +xp(i)*impy-yp(i)*impx
3331 itypsub = typsub(jsub)
3333 IF(itypsub == 1 )
THEN
3336 DO WHILE((ksub<=jsub).AND.(kk<addsubm(ie+1)))
3339 impx=forc_sign*fxt(i)*dt12
3340 impy=forc_sign*fyt(i)*dt12
3341 impz=forc_sign*fzt(i)*dt12
3343 fsavsub1(4,jsub)=fsavsub1(4,jsub)+impx
3344 fsavsub1(5,jsub)=fsavsub1(5,jsub)+impy
3345 fsavsub1(6,jsub)=fsavsub1(6,jsub)+impz
3348 impx=forc_sign*fxi(i)*dt12
3349 impy=forc_sign*fyi(i)*dt12
3350 impz=forc_sign*fzi(i)*dt12
3351 fsavsub1(12,jsub)=fsavsub1(12,jsub)+abs(impx)
3352 fsavsub1(13,jsub)=fsavsub1(13,jsub)+abs(impy)
3353 fsavsub1(14,jsub)=fsavsub1(14,jsub)+abs(impz)
3355 IF(isensint(jsub+1)/=0)
THEN
3356 fsavparit(jsub+1,4,i+nft) = forc_sign*fxt(i)
3357 fsavparit(jsub+1,5,i+nft) = forc_sign*fyt(i)
3358 fsavparit(jsub+1,6,i+nft) = forc_sign*fzt(i)
3361 fsavsub1(15,jsub)= fsavsub1(15,jsub)
3362 . +sqrt(impx*impx+impy*impy+impz*impz)
3363 fsavsub1(22,jsub)=fsavsub1(22,jsub)
3364 . +yp(i)*impz-zp(i)*impy
3365 fsavsub1(23,jsub)=fsavsub1(23,jsub)
3366 . +zp(i)*impx-xp(i)*impz
3367 fsavsub1(24,jsub)=fsavsub1(24,jsub)
3368 . +xp(i)*impy-yp(i)*impx
3377 ELSEIF(itypsub == 2 )
THEN
3380 impx=forc_sign*fxt(i)*dt12
3381 impy=forc_sign*fyt(i)*dt12
3382 impz=forc_sign*fzt(i)*dt12
3384 fsavsub1(4,jsub)=fsavsub1(4,jsub)+impx
3385 fsavsub1(5,jsub)=fsavsub1(5,jsub)+impy
3386 fsavsub1(6,jsub)=fsavsub1(6,jsub)+impz
3389 impx=forc_sign*fxi(i)*dt12
3390 impy=forc_sign*fyi(i)*dt12
3391 impz=forc_sign*fzi(i)*dt12
3392 fsavsub1(12,jsub)=fsavsub1(12,jsub)+abs(impx)
3393 fsavsub1(13,jsub)=fsavsub1(13,jsub)+abs(impy)
3394 fsavsub1(14,jsub)=fsavsub1(14,jsub)+abs(impz)
3396 IF(isensint(jsub+1)/=0)
THEN
3397 fsavparit(jsub+1,4,i+nft) = forc_sign*fxt(i)
3398 fsavparit(jsub+1,5,i+nft) = forc_sign*fyt(i)
3399 fsavparit(jsub+1,6,i+nft) = forc_sign*fzt(i)
3402 fsavsub1(15,jsub)= fsavsub1(15,jsub)
3403 . +sqrt(impx*impx+impy*impy+impz*impz)
3404 fsavsub1(22,jsub)=fsavsub1(22,jsub)
3405 . +yp(i)*impz-zp(i)*impy
3406 fsavsub1(23,jsub)=fsavsub1(23,jsub)
3407 . +zp(i)*impx-xp(i)*impz
3408 fsavsub1(24,jsub)=fsavsub1(24,jsub)
3409 . +xp(i)*impy-yp(i)*impx
3412 ELSEIF(itypsub == 3 )
THEN
3417 DO WHILE((ksub<=jsub).AND.(kk<addsubm(ie+1)))
3418 ims2 = bitget(inflg_subm(kk),0)
3419 ims1 = bitget(inflg_subm(kk),1)
3421 IF(.NOT.((ims1 == 1 .AND. iss2 == 1).OR.
3422 . (ims2 == 1 .AND. iss1 == 1)))
THEN
3428 impx=forc_sign*fxt(i)*dt12
3429 impy=forc_sign*fyt(i)*dt12
3430 impz=forc_sign*fzt(i)*dt12
3433 fsavsub1(4,jsub)=fsavsub1(4,jsub)-impx
3434 fsavsub1(5,jsub)=fsavsub1(5,jsub)-impy
3435 fsavsub1(6,jsub)=fsavsub1(6,jsub)-impz
3437 fsavsub1(4,jsub)=fsavsub1(4,jsub)+impx
3438 fsavsub1(5,jsub)=fsavsub1(5,jsub)+impy
3439 fsavsub1(6,jsub)=fsavsub1(6,jsub)+impz
3445 fsavsub1(12,jsub)=fsavsub1(12,jsub)+abs(impx)
3446 fsavsub1(13,jsub)=fsavsub1(13,jsub)+abs(impy)
3447 fsavsub1(14,jsub)=fsavsub1(14,jsub)+abs(impz)
3449 IF(isensint(jsub+1)/=0)
THEN
3451 fsavparit(jsub+1,4,i) = forc_sign*fxt(i)
3452 fsavparit(jsub+1,5,i) = forc_sign*fyt(i)
3453 fsavparit(jsub+1,6,i) = forc_sign*fzt(i)
3455 fsavparit(jsub+1,4,i) = -forc_sign*fxt(i)
3456 fsavparit(jsub+1,5,i) = -forc_sign*fyt(i)
3457 fsavparit(jsub+1,6,i) = -forc_sign*fzt(i)
3461 fsavsub1(15,jsub)= fsavsub1(15,jsub)
3462 . +sqrt(impx*impx+impy*impy+impz*impz)
3463 fsavsub1(22,jsub)=fsavsub1(22,jsub)
3464 . +yp(i)*impz-zp(i)*impy
3465 fsavsub1(23,jsub)=fsavsub1(23,jsub)
3466 . +zp(i)*impx-xp(i)*impz
3467 fsavsub1(24,jsub)=fsavsub1(24,jsub)
3468 . +xp(i)*impy-yp(i)*impx
3480#include "lockon.inc"
3484 fsavsub(j,nsub)=fsavsub(j,nsub)+fsavsub1(j,jsub)
3486 fsavsub(22,nsub)=fsavsub(22,nsub)+fsavsub1(22,jsub)
3487 fsavsub(23,nsub)=fsavsub(23,nsub)+fsavsub1(23,jsub)
3488 fsavsub(24,nsub)=fsavsub(24,nsub)+fsavsub1(24,jsub)
3490#include "lockoff.inc"
3493#include "lockon.inc"
3495 econtv = econtv + econvt
3496 econt = econt + econtt
3497 econtd = econtd + econtdt
3498 econt_cumu = econt_cumu + econttied
3501 qfric = qfric + (fheats+fheatm)*qfrict
3502 econtv = econtv - (fheats+fheatm)*qfrict
3504#include "lockoff.inc"
3506 IF(interefric >0)
THEN
3508#include "lockon.inc"
3510 efric_lm = half*efric_l(i)
3511 output%DATA%EFRIC(interefric,ix1(i)) = output%DATA%EFRIC(interefric,ix1(i)) + h1(i)*(efric_lm-fheatm*efrict(i))
3512 output%DATA%EFRIC(interefric,ix2(i)) = output%DATA%EFRIC(interefric,ix2(i)) + h2(i)*(efric_lm-fheatm*efrict(i))
3513 output%DATA%EFRIC(interefric,ix3(i)) = output%DATA%EFRIC(interefric,ix3(i)) + h3(i)*(efric_lm-fheatm*efrict(i))
3514 output%DATA%EFRIC(interefric,ix4(i)) = output%DATA%EFRIC(interefric,ix4(i)) + h4(i)*(efric_lm-fheatm*efrict(i))
3516 efric_ls = half*efric_l(i)
3518 output%DATA%EFRIC(interefric,jg) = output%DATA%EFRIC(interefric,jg) + (efric_ls-fheats*efrict(i))
3521 efricfi(nin)%P(jg)=
efricfi(nin)%P(jg)+ (efric_ls-fheats*efrict(i))
3524#include "lockoff.inc"
3528 IF(h3d_data%N_SCAL_CSE_FRIC >0)
THEN
3530#include "lockon.inc"
3532 efric_lm = half*efric_l(i)
3533 output%DATA%EFRICG(ix1(i)) = output%DATA%EFRICG(ix1(i)) + h1(i)*(efric_lm-fheatm*efrict(i))
3534 output%DATA%EFRICG(ix2(i)) = output%DATA%EFRICG(ix2(i)) + h2(i)*(efric_lm-fheatm*efrict(i))
3535 output%DATA%EFRICG(ix3(i)) = output%DATA%EFRICG(ix3(i)) + h3(i)*(efric_lm-fheatm*efrict(i))
3536 output%DATA%EFRICG(ix4(i)) = output%DATA%EFRICG(ix4(i)) + h4(i)*(efric_lm-fheatm*efrict(i))
3538 efric_ls = half*efric_l(i)
3540 output%DATA%EFRICG(jg) = output%DATA%EFRICG(jg) + (efric_ls-fheats*efrict(i))
3546#include "lockoff.inc"
3552 . .AND.(ivis2==0.OR.ivis2==1))
THEN
3556 IF(msi(i)==zero)
THEN
3562 cy = eight*msi(i)*kt(i)
3563 aux = sqrt(cx+cy)+two*c(i)
3564 stv(i)= kt(i)*aux*aux/
max(cy,em30)
3565 aux = two*cf(i)*cf(i)/
max(msi(i),em20)
3577 IF(ms(j1)==zero)
THEN
3582 k1(i)=kt(i)*abs(h1(i))
3583 c1(i)=c(i)*abs(h1(i))
3584 cx =four*c1(i)*c1(i)
3585 cy =eight*ms(j1)*k1(i)
3586 aux = sqrt(cx+cy)+two*c1(i)
3587 st1(i)= k1(i)*aux*aux/
max(cy,em30)
3588 cfi = cf(i)*abs(h1(i))
3589 aux = two*cfi*cfi/
max(ms(j1),em20)
3598 IF(ms(j1)==zero)
THEN
3603 k2(i)=kt(i)*abs(h2(i))
3604 c2(i)=c(i)*abs(h2(i))
3605 cx =four*c2(i)*c2(i)
3606 cy =eight*ms(j1)*k2(i)
3607 aux = sqrt(cx+cy)+two*c2(i)
3608 st2(i)= k2(i)*aux*aux/
max(cy,em30)
3609 cfi = cf(i)*abs(h2(i))
3610 aux = two*cfi*cfi/
max(ms(j1),em20)
3619 IF(ms(j1)==zero)
THEN
3624 k3(i)=kt(i)*abs(h3(i))
3625 c3(i)=c(i)*abs(h3(i))
3626 cx =four*c3(i)*c3(i)
3627 cy =eight*ms(j1)*k3(i)
3628 aux = sqrt(cx+cy)+two*c3(i)
3629 st3(i)= k3(i)*aux*aux/
max(cy,em30)
3630 cfi = cf(i)*abs(h3(i))
3631 aux = two*cfi*cfi/
max(ms(j1),em20)
3640 IF(ms(j1)==zero)
THEN
3645 k4(i)=kt(i)*abs(h4(i))
3646 c4(i)=c(i)*abs(h4(i))
3647 cx =four*c4(i)*c4(i)
3648 cy =eight*ms(j1)*k4(i)
3649 aux = sqrt(cx+cy)+two*c4(i)
3650 st4(i)= k4(i)*aux*aux/
max(cy,em30)
3651 cfi = cf(i)*abs(h4(i))
3652 aux = two*cfi*cfi/
max(ms(j1),em20)
3663 IF( (viscffric(i)/=zero)
3664 . .AND.(ivis2==0.OR.ivis2==1))
THEN
3665 IF(msi(i)==zero)
THEN
3671 cy = eight*msi(i)*kt(i)
3672 aux = sqrt(cx+cy)+two*c(i)
3673 stv(i)= kt(i)*aux*aux/
max(cy,em30)
3674 aux = two*cf(i)*cf(i)/
max(msi(i),em20)
3686 IF(ms(j1)==zero)
THEN
3691 k1(i)=kt(i)*abs(h1(i))
3692 c1(i)=c(i)*abs(h1(i))
3693 cx =four*c1(i)*c1(i)
3694 cy =eight*ms(j1)*k1(i)
3695 aux = sqrt(cx+cy)+two*c1(i)
3696 st1(i)= k1(i)*aux*aux/
max(cy,em30)
3697 cfi = cf(i)*abs(h1(i))
3698 aux = two*cfi*cfi/
max(ms(j1),em20)
3707 IF(ms(j1)==zero)
THEN
3712 k2(i)=kt(i)*abs(h2(i))
3713 c2(i)=c(i)*abs(h2(i))
3714 cx =four*c2(i)*c2(i)
3715 cy =eight*ms(j1)*k2(i)
3716 aux = sqrt(cx+cy)+two*c2(i)
3717 st2(i)= k2(i)*aux*aux/
max(cy,em30)
3718 cfi = cf(i)*abs(h2(i))
3719 aux = two*cfi*cfi/
max(ms(j1),em20)
3728 IF(ms(j1)==zero)
THEN
3733 k3(i)=kt(i)*abs(h3(i))
3734 c3(i)=c(i)*abs(h3(i))
3735 cx =four*c3(i)*c3(i)
3736 cy =eight*ms(j1)*k3(i)
3737 aux = sqrt(cx+cy)+two*c3(i)
3738 st3(i)= k3(i)*aux*aux/
max(cy,em30)
3739 cfi = cf(i)*abs(h3(i))
3740 aux = two*cfi*cfi/
max(ms(j1),em20)
3749 IF(ms(j1)==zero)
THEN
3754 k4(i)=kt(i)*abs(h4(i))
3755 c4(i)=c(i)*abs(h4(i))
3756 cx =four*c4(i)*c4(i)
3757 cy =eight*ms(j1)*k4(i)
3758 aux = sqrt(cx+cy)+two*c4(i)
3759 st4(i)= k4(i)*aux*aux/
max(cy,em30)
3760 cfi = cf(i)*abs(h4(i))
3761 aux = two*cfi*cfi/
max(ms(j1),em20)
3772 k1(i) =stif(i)*abs(h1(i))
3775 k2(i) =stif(i)*abs(h2(i))
3778 k3(i) =stif(i)*abs(h3(i))
3781 k4(i) =stif(i)*abs(h4(i))
3795 dist = gapv(i)-pene(i)
3796 rdist = half*dist /
max(em30,-vn(i))
3797 dti =
min(rdist,dti)
3800 IF (dtmini>zero)
THEN
3809 dist =gapv(i)-pene(i)
3810 dti2 = half*dist /
max(em30,-vn(i))
3811 IF(dti2<=dtm.AND.cand_f(1,index(i))==zero)
THEN
3816 ni =
itafi(nin)%P(-nn)
3818#include "lockon.inc"
3819 WRITE(iout,
'(A,E12.4,A,I10,A,E12.4,A)')
3820 .
' **WARNING MINIMUM TIME STEP ',dti2,
3821 .
' IN INTERFACE ',noint,
'(DTMIN=',dtm,
')'
3822 WRITE(iout,
'(A,I10,A,I10)')
' TYING SECONDARY NODE VS MAIN SEGMENT',
3823 . ni,
' IN INTERFACE ',noint
3824 WRITE(iout,
'(A,4I10)')
' MAIN NODES : ',
3825 . itab(ix1(i)),itab(ix2(i)),itab(ix3(i)),itab(ix4(i))
3826#include "lockoff.inc"
3827 cand_f(1,index(i))= fns(i)*sign(one,side(i))
3828 cand_f(2,index(i))= fxt(i)*t1x(i)+fyt(i)*t1y(i)+fzt(i)*t1z(i)
3829 cand_f(3,index(i))= fxt(i)*t2x(i)+fyt(i)*t2y(i)+fzt(i)*t2z(i)
3830 cand_f(4,index(i))= h1(i)
3831 cand_f(5,index(i))= h2(i)
3832 cand_f(6,index(i))= h3(i)
3833 cand_f(7,index(i))= pene(i)
3834 cand_f(8,index(i))= side(i)
3845 IF(idtm==1.OR.idtm==2.OR.
3846 . idtm==5.OR.idtm==6)
THEN
3852 IF(mas2>zero.AND.stif(i)>zero.AND.
3853 . irb(kini(i))==0.AND.irb2(kini(i))==0)
THEN
3854 dtmi(i) =
min(dtmi(i),dtfac1(10)*sqrt(mas2/stif(i)))
3856 mas2 = two* ms(ix1(i))
3857 IF(mas2>zero.AND.h1(i)*stif(i)>zero.AND.
3858 . irb(kinet(ix1(i)))==0.AND.irb2(kinet(ix1(i)))==0)
THEN
3859 dtmi(i) =
min(dtmi(i),dtfac1(10)*sqrt(mas2/(h1(i)*stif(i))))
3861 mas2 = two * ms(ix2(i))
3862 IF(mas2>zero.AND.h2(i)*stif(i)>zero.AND.
3863 . irb(kinet(ix2(i)))==0.AND.irb2(kinet(ix2(i)))==0)
THEN
3864 dtmi(i) =
min(dtmi(i),dtfac1(10)*sqrt(mas2/(h2(i)*stif(i))))
3866 mas2 = two* ms(ix3(i))
3867 IF(mas2>zero.AND.h3(i)*stif(i)>zero.AND.
3868 . irb(kinet(ix3(i)))==0.AND.irb2(kinet(ix3(i)))==0)
THEN
3869 dtmi(i) =
min(dtmi(i),dtfac1(10)*sqrt(mas2/(h3(i)*stif(i))))
3871 mas2 = two * ms(ix4(i))
3872 IF(mas2>zero.AND.h4(i)*stif(i)>zero.AND.
3873 . irb(kinet(ix4(i)))==0.AND.irb2(kinet(ix4(i)))==0)
THEN
3874 dtmi(i) =
min(dtmi(i),dtfac1(10)*sqrt(mas2/(h4(i)*stif(i))))
3876 dtmi0 =
min(dtmi0,dtmi(i))
3882 IF(mas2>zero.AND.stv(i)>zero.AND.
3883 . irb(kini(i))==0.AND.irb2(kini(i))==0)
THEN
3884 dtmi(i) =
min(dtmi(i),dtfac1(10)*sqrt(mas2/stv(i)))
3886 mas2 = two * ms(ix1(i))
3887 IF(mas2>zero.AND.st1(i)>zero.AND.
3888 . irb(kinet(ix1(i)))==0.AND.irb2(kinet(ix1(i)))==0)
THEN
3889 dtmi(i) =
min(dtmi(i),dtfac1(10)*sqrt(mas2/(st1(i))))
3891 mas2 = two * ms(ix2(i))
3892 IF(mas2>zero.AND.st2(i)>zero.AND.
3893 . irb(kinet(ix2(i)))==0.AND.irb2(kinet(ix2(i)))==0)
THEN
3894 dtmi(i) =
min(dtmi(i),dtfac1(10)*sqrt(mas2/(st2(i))))
3896 mas2 = two * ms(ix3(i))
3897 IF(mas2>zero.AND.st3(i)>zero.AND.
3898 . irb(kinet(ix3(i)))==0.AND.irb2(kinet(ix3(i)))==0)
THEN
3899 dtmi(i) =
min(dtmi(i),dtfac1(10)*sqrt(mas2/(st3(i))))
3901 mas2 = two * ms(ix4(i))
3902 IF(mas2>zero.AND.st4(i)>zero.AND.
3903 . irb(kinet(ix4(i)))==0.AND.irb2(kinet(ix4(i)))==0)
THEN
3904 dtmi(i) =
min(dtmi(i),dtfac1(10)*sqrt(mas2/(st4(i))))
3906 dtmi0 =
min(dtmi0,dtmi(i))
3911 IF(dtmi(i)<=dtm)
THEN
3916 ni =
itafi(nin)%P(-jg)
3919#include "lockon.inc"
3920 WRITE(iout,
'(A,E12.4,A,I10,A,E12.4,A)')
3921 .
' **WARNING MINIMUM TIME STEP ',dtmi(i),
3922 .
' IN INTERFACE ',noint,
'(DTMIN=',dtm,
')'
3923 WRITE(iout,
'(A,I10)')
' SECONDARY NODE : ',ni
3924 WRITE(iout,
'(A,4I10)')
' MAIN NODES : ',
3925 . itab(ix1(i)),itab(ix2(i)),itab(ix3(i)),itab(ix4(i))
3926#include "lockoff.inc"
3928 IF ( istamping == 1)
THEN
3929 WRITE(istdo,
'(A)')
'The run encountered a problem in an in
3931 WRITE(istdo,
'(A)')
'You may need to check if there is enou
3932 .gh clearance between the tools,'
3933 WRITE(istdo,
'(A)')
'and that they do not penetrate each ot
3934 .her during their travel'
3935 WRITE(iout,
'(A)')
'The run encountered a problem in an in
3937 WRITE(iout,
'(A)')
'You may need to check if there is enou
3938 .gh clearance between the tools,'
3939 WRITE(iout,
'(A)')
'and that they do not penetrate each ot
3940 .her during their travel'
3943#include "lockon.inc"
3944 WRITE(iout,
'(A,E12.4,A,I10,A,E12.4,A)')
3945 .
' **WARNING MINIMUM TIME STEP ',dtmi(i),
3946 .
' IN INTERFACE ',noint,
'(DTMIN=',dtm,
')'
3947 WRITE(iout,
'(A,I10,A,I10)')
' DELETE SECONDARY NODE ',
3948 . ni,
' FROM INTERFACE ',noint
3949 WRITE(iout,
'(A,4I10)')
' MAIN NODES : ',
3950 . itab(ix1(i)),itab(ix2(i)),itab(ix3(i)),itab(ix4(i))
3952 stfn(cn_loc(i)) = -abs(stfn(cn_loc(i)))
3956 IF ( istamping == 1)
THEN
3957 WRITE(istdo,
'(A)')
'The run encountered a problem in an in
3959 WRITE(istdo,
'(A)')
'You may need to check if there is enou
3960 .gh clearance between the tools,'
3961 WRITE(istdo,
'(A)')
'and that they do not penetrate each ot
3962 .her during their travel'
3963 WRITE(iout,
'(A)')
'The run encountered a problem in an in
3965 WRITE(iout,
'(A)')
'You may need to check if there is enou
3966 .gh clearance between the tools,'
3967 WRITE(iout,
'(A)')
'and that they do not penetrate each ot
3968 .her during their travel'
3970#include "lockoff.inc"
3973#include "lockon.inc"
3974 WRITE(iout,
'(A,E12.4,A,I10,A,E12.4,A)')
3975 .
' **WARNING MINIMUM TIME STEP ',dtmi(i),
3976 .
' IN INTERFACE ',noint,
'(DTMIN=',dtm,
')'
3977 WRITE(iout,
'(A,I10)')
' SECONDARY NODE : ',ni
3978 WRITE(iout,
'(A,4I10)')
' MAIN NODES : ',
3979 . itab(ix1(i)),itab(ix2(i)),itab(ix3(i)),itab(ix4(i))
3980#include "lockoff.inc"
3982 IF ( istamping == 1)
THEN
3983 WRITE(istdo,
'(A)')
'The run encountered a problem in an in
3985 WRITE(istdo,
'(A)')
'You may need to check if there is enou
3986 .gh clearance between the tools,'
3987 WRITE(istdo,
'(A)')
'and that they do not penetrate each ot
3988 .her during their travel'
3989 WRITE(iout,
'(A)')
'The run encountered a problem in an in
3991 WRITE(iout,
'(A)')
'You may need to check if there is enou
3992 .gh clearance between the tools,'
3993 WRITE(iout,
'(A)')
'and that they do not penetrate each ot
3994 .her during their travel'
3996 ELSEIF(idtm==6.AND.ilagm==2)
THEN
3997 IF(kinet(jg)+kinet(ix1(i))+kinet(ix2(i))
3998 . +kinet(ix3(i))+kinet(ix4(i))==0 )
THEN
3999 cand_n(index(i)) = -iabs(cand_n(index(i)))
4013 IF (dtmini>zero)
THEN
4024 IF(mas2>zero.AND.stif(i)>zero.AND.
4025 . irb(kini(i))==0.AND.irb2(kini(i))==0)
THEN
4026 dtmi(i) =
min(dtmi(i),sqrt(mas2/stif(i)))
4028 mas2 = two* ms(ix1(i))
4029 IF(mas2>zero.AND.h1(i)*stif(i)>zero.AND.
4030 . irb(kinet(ix1(i)))==0.AND.irb2(kinet(ix1(i)))==0)
THEN
4031 dtmi(i) =
min(dtmi(i),sqrt(mas2/(h1(i)*stif(i))))
4033 mas2 = two * ms(ix2(i))
4034 IF(mas2>zero.AND.h2(i)*stif(i)>zero.AND.
4035 . irb(kinet(ix2(i)))==0.AND.irb2(kinet(ix2(i)))==0)
THEN
4036 dtmi(i) =
min(dtmi(i),sqrt(mas2/(h2(i)*stif(i))))
4038 mas2 = two* ms(ix3(i))
4039 IF(mas2>zero.AND.h3(i)*stif(i)>zero.AND.
4040 . irb(kinet(ix3(i)))==0.AND.irb2(kinet(ix3(i)))==0)
THEN
4041 dtmi(i) =
min(dtmi(i),sqrt(mas2/(h3(i)*stif(i))))
4043 mas2 = two * ms(ix4(i))
4044 IF(mas2>zero.AND.h4(i)*stif(i)>zero.AND.
4045 . irb(kinet(ix4(i)))==0.AND.irb2(kinet(ix4(i)))==0)
THEN
4046 dtmi(i) =
min(dtmi(i),sqrt(mas2/(h4(i)*stif(i))))
4048 dtmi0 =
min(dtmi0,dtmi(i))
4054 IF(mas2>zero.AND.stv(i)>zero.AND.
4055 . irb(kini(i))==0.AND.irb2(kini(i))==0)
THEN
4056 dtmi(i) =
min(dtmi(i),sqrt(mas2/stv(i)))
4058 mas2 = two * ms(ix1(i))
4059 IF(mas2>zero.AND.st1(i)>zero.AND.
4060 . irb(kinet(ix1(i)))==0.AND.irb2(kinet(ix1(i)))==0)
THEN
4061 dtmi(i) =
min(dtmi(i),sqrt(mas2/(st1
4063 mas2 = two * ms(ix2(i))
4064 IF(mas2>zero.AND.st2(i)>zero.AND.
4065 . irb(kinet(ix2(i)))==0.AND.irb2(kinet(ix2(i)))==0)
THEN
4066 dtmi(i) =
min(dtmi(i),sqrt(mas2/(st2(i))))
4068 mas2 = two * ms(ix3(i))
4069 IF(mas2>zero.AND.st3(i)>zero.AND.
4070 . irb(kinet(ix3(i)))==0.AND.irb2(kinet(ix3(i)))==0)
THEN
4071 dtmi(i) =
min(dtmi(i),sqrt(mas2/(st3(i))))
4073 mas2 = two * ms(ix4(i))
4074 IF(mas2>zero.AND.st4(i)>zero.AND.
4075 . irb(kinet(ix4(i)))==0.AND.irb2(kinet(ix4(i)))==0)
THEN
4076 dtmi(i) =
min(dtmi(i),sqrt(mas2/(st4(i))))
4078 dtmi0 =
min(dtmi0,dtmi(i))
4083 IF(dtmi(i)<=dtm.AND.cand_f(1,index(i))==zero)
THEN
4088 ni =
itafi(nin)%P(-jg)
4090#include "lockon.inc"
4091 WRITE(iout,
'(A,E12.4,A,I10,A,E12.4,A)')
4092 .
' **WARNING MINIMUM TIME STEP ',dtmi(i),
4093 .
' IN INTERFACE ',noint,
'(DTMIN=',dtm,
')'
4094 WRITE(iout,
'(A,I10,A,I10)')
' FREEZE SECONDARY NODE VS MAIN SEGMENT',
4095 . ni,
' IN INTERFACE ',noint
4096 WRITE(iout,
'(A,4I10)')
' MAIN NODES : ',
4097 . itab(ix1(i)),itab(ix2(i)),itab(ix3(i)),itab(ix4(i))
4098#include "lockoff.inc"
4099 cand_f(1,index(i))= fns(i)*sign(one,side(i))
4100 cand_f(2,index(i))= fxt(i)*t1x(i)+fyt(i)*t1y(i)+fzt(i)*t1z(i)
4101 cand_f(3,index(i))= fxt(i)*t2x(i)+fyt(i)*t2y(i)+fzt(i)*t2z
4102 cand_f(4,index(i))= h1(i)
4103 cand_f(5,index(i))= h2(i)
4104 cand_f(6,index(i))= h3(i)
4105 cand_f(7,index(i))= pene(i)
4106 cand_f(8,index(i))= side(i)
4134#include "mic_lockon.inc"
4143#include "mic_lockoff.inc"
4147 IF((ibag/=0).OR.(iadm/=0).OR.(idamp_rdof/=0))
THEN
4151 IF(fxi(i)/=zero.OR.fyi(i)/=zero.OR.fzi(i)/=zero)
THEN
4168#include "lockon.inc"
4173 rcontact(ix1(i))=
min(rcontact(ix1(i)),rcurvi(i))
4174 rcontact(ix2(i))=
min(rcontact(ix2(i)),rcurvi(i))
4175 rcontact(ix3(i))=
min(rcontact(ix3(i)),rcurvi(i))
4176 rcontact(ix4(i))=
min(rcontact(ix4(i)),rcurvi(i))
4177#include "lockoff.inc"
4183#include "lockon.inc"
4186 pcontact(jg)=
max(pcontact(jg),pene(i)/(padm*gapv(i)))
4187 acontact(jg)=
min(acontact(jg),anglmi(i))
4189#include "lockoff.inc"
4196 IF(pene(i)==zero)
GOTO 400
4198 ibcs = ibcc - 8 * ibcm
4203 CALL ibcoff(ibcs,icodt(ig))
4208 CALL ibcoff(ibcm,icodt(ig))
4210 CALL ibcoff(ibcm,icodt(ig))
4212 CALL ibcoff(ibcm,icodt(ig))
4214 CALL ibcoff(ibcm,icodt(ig))