37 SUBROUTINE i7for3(JLT ,A ,V ,IBCC ,ICODT ,
38 2 FSAV ,GAP ,FRIC ,MS ,VISC ,
39 3 VISCF ,NOINT ,STFN ,ITAB ,CN_LOC ,
40 4 STIGLO ,STIFN ,STIF ,FSKYI ,ISKY ,
41 5 NX1 ,NX2 ,NX3 ,NX4 ,NY1 ,
42 6 NY2 ,NY3 ,NY4 ,NZ1 ,NZ2 ,
43 7 NZ3 ,NZ4 ,LB1 ,LB2 ,LB3 ,
44 8 LB4 ,LC1 ,LC2 ,LC3 ,LC4 ,
45 9 P1 ,P2 ,P3 ,P4 ,FCONT ,
46 A IX1 ,IX2 ,IX3 ,IX4 ,NSVG ,
47 B IVIS2 ,NELTST ,ITYPTST ,DT2T ,GAPV ,
48 C INACTI ,CAND_P ,INDEX ,KINET ,NEWFRONT,
49 D ISECIN ,NSTRF ,X ,IRECT ,CE_LOC ,
50 E MFROT ,IFQ ,CAND_FX ,CAND_FY ,
51 F CAND_FZ ,ALPHA0 ,IFPEN ,IBAG ,
52 H ICONTACT ,VISCN ,VXI ,VYI ,VZI ,
53 I MSI ,KINI ,NIN ,NISUB ,LISUB ,
54 J ADDSUBS ,ADDSUBM ,LISUBS ,LISUBM ,FSAVSUB ,
55 K CAND_N ,ILAGM ,ICURV ,NOD_NORMAL ,FNCONT ,
56 L FTCONT ,X1 ,X2 ,X3 ,X4 ,
57 M Y1 ,Y2 ,Y3 ,Y4 ,Z1 ,
58 N Z2 , Z3 ,Z4 ,XI ,YI ,
59 O ZI , IADM ,RCURVI ,RCONTACT ,ACONTACT,
60 P PCONTACT ,ANGLMI ,PADM ,INTTH ,TEMP ,
61 Q TEMPI ,IFORM ,NPC ,TF ,CMAJ ,
62 R DTMINI ,DRAD ,FHEATS ,FHEATM ,EFRICT ,
65 U H2 ,H3 ,H4 ,KS ,KT ,
66 V K1 ,K2 ,K3 ,K4 ,C1 ,
68 X CF ,TINT ,XFRIC ,FXI ,FYI ,
69 Y FZI ,FX1 ,FY1 ,FZ1 ,FX2 ,
70 Z FY2 ,FZ2 ,FX3 ,FY3 ,FZ3 ,
71 1 FX4 ,FY4 ,FZ4 ,ISENSINT ,FSAVPARIT,
72 5 NFT ,SYM_FLAG_TYPE19,H3D_DATA,FRICC ,VISCFFRIC,
73 6 FRIC_COEFS ,ITIED ,JLT_TIED ,CAND_F ,IORTHFRIC,
74 7 FRIC_COEFS2,FRICC2 ,VISCFFRIC2,NFORTH ,NFISOT ,
75 8 INDEXORTH ,INDEXISOT ,DIR1 ,DIR2 ,TAGNCONT ,
76 9 KLOADPINTER,LOADPINTER,LOADP_HYD_INTER,TYPSUB,INFLG_SUBS,
77 A INFLG_SUBM,NINLOADP ,DGAPLOADINT,S_LOADPINTER,DGAPLOADP,
90#include "implicit_f.inc"
100#include "com04_c.inc"
101#include "com06_c.inc"
102#include "com08_c.inc"
103#include "scr05_c.inc"
104#include "scr07_c.inc"
105#include "scr11_c.inc"
106#include "scr14_c.inc"
107#include "scr16_c.inc"
108#include "scr18_c.inc"
110#include "units_c.inc"
111#include "parit_c.inc"
112#include "param_c.inc"
113#include "impl1_c.inc"
114#include "kincod_c.inc"
118 INTEGER NELTST,ITYPTST,JLT,IBCC,IBCM,IBCS,IVIS2,INACTI,IBAG,NIN,
119 . IFRIC,IFORM,INTFRIC,ITIED,JLT_TIED,IORTHFRIC,NFORTH ,NFISOT ,
120 . ICODT(*), ITAB(*), ISKY(*), KINET(*),
121 . MFROT, IFQ, NOINT,NEWFRONT,ISECIN, NSTRF(*),
122 . IRECT(4,*),IFPEN(*) ,ICONTACT(*), CAND_N(*),
123 . KINI(*),NPC(*),JTASK,TAGNCONT(NLOADP_HYD_INTER,NUMNOD),
125 . iset, iadm,intth,nft
126 INTEGER IX1(MVSIZ), IX2(MVSIZ), IX3(MVSIZ), IX4(MVSIZ),
127 . cn_loc(mvsiz),ce_loc(mvsiz),index(mvsiz),nsvg(mvsiz),
128 . nisub, lisub(*), addsubs(*), addsubm(*), lisubs(*),
129 . lisubm(*),ilagm,icurv(3), isensint(*),sym_flag_type19,
130 . indexorth(mvsiz) ,indexisot(mvsiz),inflg_subs(*), inflg_subm(*)
131 INTEGER ,
INTENT(IN) :: NINLOADP,S_LOADPINTER
132 INTEGER ,
INTENT(IN) :: KLOADPINTER(NINTER+1),LOADPINTER(S_LOADPINTER),
133 . LOADP_HYD_INTER(NLOADP_HYD)
134 INTEGER ,
INTENT(IN) :: INTEREFRIC
136 . STIGLO,CAND_P(*), X(3,*),
137 . (3,*), MS(*), V(3,*), FSAV(*),FCONT(3,*),
138 . CAND_FX(*),CAND_FY(*),CAND_FZ(*),ALPHA0,
139 . GAP, FRIC,VISC,VISCF,VIS,DT2T,STFN(*),STIFN(*),
140 . FSKYI(LSKYI,NFSKYI),FSAVSUB(NTHVKI,*), FNCONT(3,*),FTCONT(3,*),
141 . DTMINI,FHEATS,FHEATM,
142 . FSAVPARIT(NISUB+1,11,*), CAND_F(8,*)
144 . NX1(MVSIZ), NX2(MVSIZ), NX3(MVSIZ), NX4(MVSIZ),
145 . NY1(MVSIZ), NY2(MVSIZ), NY3(MVSIZ), NY4(MVSIZ),
146 . NZ1(MVSIZ), NZ2(MVSIZ), NZ3(MVSIZ), NZ4(MVSIZ),
147 . LB1(MVSIZ), LB2(MVSIZ), LB3(MVSIZ), LB4(MVSIZ),
148 . LC1(MVSIZ), LC2(MVSIZ), LC3(MVSIZ), LC4(MVSIZ),
149 . P1(MVSIZ), P2(MVSIZ), P3(MVSIZ), P4(MVSIZ), STIF(MVSIZ),
152 . STIFSAV(MVSIZ), VISCN(*),TF(*),
153 . VXI(MVSIZ),VYI(MVSIZ),VZI(MVSIZ),MSI(MVSIZ),
154 . X1(MVSIZ),Y1(MVSIZ),Z1(MVSIZ),
155 . X2(MVSIZ),Y2(MVSIZ),Z2(MVSIZ),
156 . X3(MVSIZ),Y3(MVSIZ),Z3(MVSIZ),
157 . X4(MVSIZ),Y4(MVSIZ),Z4(MVSIZ),
158 . XI(MVSIZ),YI(MVSIZ),ZI(MVSIZ),
159 . temp(*), tempi(mvsiz),
160 . fni(mvsiz), fns(mvsiz)
162 . nod_normal(3,*), rcurvi(*), rcontact(*), acontact(*),
163 . pcontact(*),padm, anglmi(*),cmaj(mvsiz), efrict(mvsiz),
164 . qfric,drad,tint,xfric,fric_coefs(mvsiz,10), fricc(mvsiz),
165 . viscffric(mvsiz),fric_coefs2(mvsiz,10),fricc2(mvsiz),
166 . viscffric2(mvsiz),dir1(mvsiz,3) ,dir2(mvsiz,3)
168 . ks(mvsiz),k1(mvsiz),k2(mvsiz),k3(mvsiz),k4(mvsiz),
169 . cs(mvsiz),c1(mvsiz),c2(mvsiz),c3(mvsiz),c4(mvsiz),
170 . kt(mvsiz),c(mvsiz),cf(mvsiz),
171 . fxi(mvsiz), fyi(mvsiz), fzi(mvsiz),
172 . fx1(mvsiz), fx2(mvsiz), fx3(mvsiz), fx4(mvsiz),
173 . fy1(mvsiz), fy2(mvsiz), fy3(mvsiz), fy4(mvsiz),
174 . fz1(mvsiz), fz2(mvsiz), fz3(mvsiz), fz4(mvsiz)
176 my_real ,
INTENT(IN) :: dgaploadp, dgaploadint(s_loadpinter)
180 INTEGER I, J1, IG, J, JG , K0,NBINTER,K1S,K,IL,IE, NN, NI, II,
181 . NA1,NA2,IPROJ,IDTM,PP,PPL,ITYPSUB,ISS1,ISS2,IMS1,IMS2
182 INTEGER JSUB,KSUB,JJ,KK,IN,NSUB
184 . fxr(mvsiz), fyr(mvsiz), fzr(mvsiz)
186 . fxt(mvsiz),fyt(mvsiz),fzt(mvsiz),
187 . n1(mvsiz), n2(mvsiz), n3(mvsiz), pene(mvsiz),
188 . vis2(mvsiz), dtmi(mvsiz), xmu(mvsiz),stif0(mvsiz),
189 . h1(mvsiz), h2(mvsiz), h3(mvsiz), h4(mvsiz),
190 . vx(mvsiz), vy(mvsiz), vz(mvsiz), vn(mvsiz),
191 . xp(mvsiz), yp(mvsiz), zp(mvsiz),efric_l(mvsiz),
192 . vnx, vny, vnz, aa, crit,s2,dist,rdist,
195 . facm1, econtt, econvt, h0, la1, la2, la3, la4,
196 . d1,d2,d3,d4,a1,a2,a3,a4,econtdt,econttied,
197 . fsav1, fsav2, fsav3, fsav4, fsav5, fsav6, fsav7, fsav8,
198 . fsav9, fsav10, fsav11, fsav12, fsav13, fsav14, fsav15,
199 . fsav22, fsav23, fsav24, ffo,
200 . e10, h0d, s2d, sum,
201 . la1d,la2d,la3d,la4d,t1,t1d,t2,t2d,ffd,visd,facd,d1d,
202 . p1s(mvsiz),p2s(mvsiz),p3s(mvsiz),p4s(mvsiz),
203 . d2d,d3d,d4d,vnxd,vnyd,vnzd,v2d,fm2d,f2d,aad,fxd,fyd,fzd,
205 .
area,p,vv1,vv2,v21,dmu, dti2,h00 ,a0x,a0y,a0z,rx,ry,rz,
206 . anx,any,anz,aan,aax,aay,aaz ,rr,rs,aaa,stfr,visr ,tm,ts
208 . prec,nn1,nn2,nn3,nn4,xn1,yn1,zn1,xn2,yn2,zn2,xn3,yn3,zn3,
209 . xn4,yn4,zn4,efric_ls,efric_lm
211 . st1(mvsiz),st2(mvsiz),st3(mvsiz),st4(mvsiz),stv(mvsiz),
212 . cx,cy,cfi,aux, fx6(6,mvsiz), fy6(6,mvsiz), fz6(6,mvsiz),
213 . dtm, phim,qfrict,dydx,th,thi(mvsiz),frict(mvsiz),forc_sign,
214 . vt1(mvsiz), vt2(mvsiz),
215 . ft1(mvsiz),ft2(mvsiz),
216 . nx(mvsiz), ny(mvsiz), nz(mvsiz),
217 . t1x(mvsiz),t1y(mvsiz),t1z(mvsiz),
218 . t2x(mvsiz),t2y(mvsiz),t2z(mvsiz), dt05, norminv,
220 . an(nforth) ,bn(nforth) ,nep1 ,nep2 ,nep ,c11 ,c22 ,ans , ep ,signc
222 . fsavsub1(24,nisub),impx,impy,impz,bb,gapr,dgap,gapp
253 efric_l(1:jlt) = zero
259 IF (sym_flag_type19 > 0) forc_sign = -one
264 IF((intth == 0.OR.drad == zero).AND.dgaploadp==zero)
THEN
265 IF(icurv(1) == 3)
THEN
270 p1(i) =
max(zero, bb - d1)
273 p2(i) =
max(zero, bb - d2)
276 p3(i) =
max(zero, bb - d3)
281 a1 = p1(i)/
max(em20,d1)
283 a3 = p3(i)/
max(em20,d3)
284 a4 = p4(i)/
max(em20,d4)
285 n1(i) = a1*nx1(i) + a2*nx2(i) + a3*nx3(i) + a4*nx4(i)
286 n2(i) = a1*ny1(i) + a2*ny2(i) + a3*ny3(i) + a4*ny4(i)
287 n3(i) = a1*nz1(i) + a2*nz2(i) + a3*nz3(i) + a4*nz4(i)
293 p1(i) =
max(zero, gapv(i) - d1)
296 p2(i) =
max(zero, gapv(i) - d2)
299 p3(i) =
max(zero, gapv(i) - d3)
302 p4(i) =
max(zero, gapv(i) - d4)
304 a1 = p1(i)/
max(em20,d1)
305 a2 = p2(i)/
max(em20,d2)
306 a3 = p3(i)/
max(em20,d3)
307 a4 = p4(i)/
max(em20,d4)
308 n1(i) = a1*nx1(i) + a2*nx2(i) + a3*nx3(i) + a4*nx4(i)
309 n2(i) = a1*ny1(i) + a2*ny2(i) + a3*ny3(i) + a4*ny4(i)
310 n3(i) = a1*nz1(i) + a2*nz2(i) + a3*nz3(i) + a4*nz4(i)
315 IF(ix3(i)/=ix4(i))
THEN
316 pene(i) =
max(p1(i),p2(i),p3(i),p4(i))
318 la1 = one - lb1(i) - lc1(i)
319 la2 = one - lb2(i) - lc2(i)
320 la3 = one - lb3(i) - lc3(i)
321 la4 = one - lb4(i) - lc4(i)
324 . (p1(i)*la1 + p2(i)*la2 + p3(i)*la3 + p4(i)*la4)
325 h1(i) = h0 + p1(i) * lb1(i) + p4(i) * lc4(i)
326 h2(i) = h0 + p2(i) * lb2(i) + p1(i) * lc1(i)
327 h3(i) = h0 + p3(i) * lb3(i) + p2(i) * lc2(i)
328 h4(i) = h0 + p4(i) * lb4(i) + p3(i) * lc3(i)
329 h00 = one/
max(em20,h1(i) + h2(i) + h3(i) + h4(i))
342 h3(i) = one - lb1(i) - lc1(i)
347 IF(icurv(1) == 3)
THEN
349 bb = gapv(i)+cmaj(i)+dgaploadp
353 p1(i) =
max(zero, gapr - d1)
356 p2(i) =
max(zero, gapr - d2)
359 p3(i) =
max(zero, gapr - d3)
362 p4(i) =
max(zero, gapr - d4)
364 distp(i) =
max(d1,d2,d3,d4)
365 a1 = p1(i)/
max(em20,d1)
366 a2 = p2(i)/
max(em20,d2)
367 a3 = p3(i)/
max(em20,d3)
368 a4 = p4(i)/
max(em20,d4)
369 n1(i) = a1*nx1(i) + a2*nx2(i) + a3*nx3(i) + a4*nx4(i)
370 n2(i) = a1*ny1(i) + a2*ny2(i) + a3*ny3(i) + a4*ny4(i)
371 n3(i) = a1*nz1(i) + a2*nz2(i) + a3*nz3(i) + a4*nz4(i)
375 gapr =
max(gapv(i)+dgaploadp,drad)
378 p1(i) =
max(zero, gapr - d1)
381 p2(i) =
max(zero, gapr - d2)
384 p3(i) =
max(zero, gapr - d3)
387 p4(i) =
max(zero, gapr - d4)
389 distp(i) =
max(d1,d2,d3,d4)
391 a1 = p1(i)/
max(em20,d1)
392 a2 = p2(i)/
max(em20,d2)
393 a3 = p3(i)/
max(em20,d3)
394 a4 = p4(i)/
max(em20,d4)
395 n1(i) = a1*nx1(i) + a2*nx2(i) + a3*nx3(i) + a4*nx4(i)
396 n2(i) = a1*ny1(i) + a2*ny2(i) + a3*ny3(i) + a4*ny4(i)
397 n3(i) = a1*nz1(i) + a2*nz2(i
402 IF(ix3(i)/=ix4(i))
THEN
403 pene(i) =
max(p1(i),p2(i),p3(i),p4(i))
404 pene(i) =
max(zero,pene(i)+gapv(i)-
max(gapv
406 la1 = one - lb1(i) - lc1(i)
407 la2 = one - lb2(i) - lc2(i)
408 la3 = one - lb3(i) - lc3(i)
409 la4 = one - lb4(i) - lc4(i)
412 . (p1(i)*la1 + p2(i)*la2 + p3(i)*la3
414 h1(i) = h0 + p1(i) * lb1(i) + p4(i) * lc4(i)
415 h2(i) = h0 + p2(i) * lb2(i) + p1(i) * lc1(i)
416 h3(i) = h0 + p3(i) * lb3(i) + p2(i) * lc2(i)
417 h4(i) = h0 + p4(i) * lb4(i) + p3(i) * lc3(i)
418 h00 = one/
max(em20,h1(i) + h2(i) + h3(i) + h4(i))
427 pene(i) =
max(zero,pene(i)+gapv(i)-
max(gapv(i)+dgaploadp,drad))
433 h3(i) = one - lb1(i) - lc1(i)
453 rr =
min(rr , rx*rx + ry*ry + rz*rz)
457 rr =
min(rr , rx*rx + ry*ry + rz*rz)
461 rr =
min(rr , rx*rx + ry*ry + rz*rz)
462 IF(ix3(i)/=ix4(i))
THEN
466 rr =
min(rr , rx*rx + ry*ry + rz*rz)
471 rs = sqrt(rx*rx + ry*ry + rz*rz)
473 IF(rs-rr+gapv(i)<0.)
THEN
476 ELSEIF(rs-rr+gapv(i)<pene(i))
THEN
477 pene(i) = rs-rr+gapv(i)
483 ELSEIF(icurv(1)==2)
THEN
494 aan = 1. / (anx*anx + any*any + anz*anz)
499 aaa = (aax*anx + aay*any + aaz*anz) * aan
503 rr =
min(rr , rx*rx + ry*ry + rz*rz)
507 aaa = (aax*anx + aay*any + aaz*anz) * aan
511 rr =
min(rr , rx*rx + ry*ry + rz*rz)
519 rr =
min(rr , rx*rx + ry*ry + rz*rz)
520 IF(ix3(i)/=ix4(i))
THEN
524 aaa = (aax*anx + aay*any + aaz*anz) * aan
528 rr =
min(rr , rx*rx + ry*ry + rz*rz)
533 aaa = (aax*anx + aay*any + aaz*anz) * aan
537 rs = sqrt(rx*rx + ry*ry + rz*rz)
540 IF(rs-rr+gapv(i)<0.)
THEN
543 ELSEIF(rs-rr+gapv(i)<pene(i))
THEN
544 pene(i) = rs-rr+gapv(i)
548 ELSEIF(rs-rr-gapv(i)>0.)
THEN
551 ELSEIF(rs-rr-gapv(i) < pene(i))
THEN
563 . (zn1*xn2-zn2*xn1) * ry
564 . (xn1*yn2-xn2*yn1) * rz
565 nn2 = (yn2*zn3-yn3*zn2) * rx +
566 . (zn2*xn3-zn3*xn2) * ry +
567 . (xn2*yn3-xn3*yn2) * rz
568 IF(ix3(i)/=ix4(i))
THEN
572 nn3 = (yn3*zn4-yn4*zn3) * rx +
573 . (zn3*xn4-zn4*xn3) * ry +
574 . (xn3*yn4-xn4*yn3) * rz
575 nn4 = (yn4*zn1-yn1*zn4) * rx +
576 . (zn4*xn1-zn1*xn4) * ry +
577 . (xn4*yn1-xn1*yn4) * rz
579 nn3 = (yn3*zn1-yn1*zn3) * rx +
580 . (zn3*xn1-zn1*xn3) * ry +
581 . (xn3*yn1-xn1*yn3) * rz
584 IF( nn1>=zero .AND. nn2>=zero
585 . .AND. nn3>=zero .AND. nn4>=zero)
THEN
587 ELSEIF( nn1<=zero .AND. nn2<=zero
588 . .AND. nn3<=zero .AND. nn4<=zero)
THEN
595 pene(i) = -rs+rr+gapv(i)
602 ELSEIF(icurv(1) == 3)
THEN
603 CALL i7curv(jlt ,pene ,n1 ,n2 ,
604 1 n3 ,gapv ,x ,nod_normal,
605 2 ix1 ,ix2 ,ix3 ,ix4 ,
607 4 x1 ,x2 ,x3 ,x4 ,y1 ,
608 5 y2 ,y3 ,y4 ,z1 ,z2 ,
619 s2 = one/
max(em30,sqrt(n1(i)**2 + n2(i)**2 + n3(i)**2))
626 vx(i) = vxi(i) - h1(i)*v(1,ix1(i)) - h2(i)*v(1,ix2(i))
627 . - h3(i)*v(1,ix3(i)) - h4(i)*v(1,ix4(i))
628 vy(i) = vyi(i) - h1(i)*v(2,ix1
629 . - h3(i)*v(2,ix3(i)) - h4(i)*v(2,ix4(i))
630 vz(i) = vzi(i) - h1(i)*v(3,ix1(i)) - h2(i)*v(3,ix2(i))
631 . - h3(i)*v(3,ix3(i)) - h4(i)*v(3,ix4(i))
632 vn(i) = n1(i)*vx(i) + n2(i)*vy(i) + n3(i)*vz(i)
634 h0 = -.25*(h1(i) - h2(i) + h3(i) - h4(i))
635 h0 =
min(h0,h2(i),h4(i))
636 h0 =
max(h0,-h1(i),-h3(i))
637 IF(ix3(i)==ix4(i))h0 = zero
646 DO i=jlt-jlt_tied+1,jlt
651 h4(i) = one - h1(i) - h2(i) - h3(i)
654 DO i=jlt-jlt_tied+1,jlt
657 p1(i) =
max(zero, gapv(i) - d1)
660 p2(i) =
max(zero, gapv(i) - d2)
663 p3(i) =
max(zero, gapv(i) - d3)
666 p4(i) =
max(zero, gapv(i) - d4)
668 IF(ix3(i)/=ix4(i))
THEN
669 pene(i) =
max(p1(i),p2(i),p3(i),p4(i))
681 t1x(i) = x3(i) - x1(i)
682 t1y(i) = y3(i) - y1(i)
683 t1z(i) = z3(i) - z1(i)
685 t1x(i) = t1x(i)*norminv
686 t1y(i) = t1y(i)*norminv
687 t1z(i) = t1z(i)*norminv
689 t2x(i) = x4(i) - x2(i)
690 t2y(i) = y4(i) - y2(i)
691 t2z(i) = z4(i) - z2(i)
693 nx(i) = t1y(i)*t2z(i) - t1z(i)*t2y(i)
694 ny(i) = t1z(i)*t2x(i) - t1x(i)*t2z(i)
695 nz(i) = t1x(i)*t2y(i) - t1y(i)*t2x(i)
696 norminv = one/sqrt(nx(i)**2+ny(i)**2+nz(i)**2)
697 nx(i) = nx(i)*norminv
698 ny(i) = ny(i)*norminv
699 nz(i) = nz(i)*norminv
701 t2x(i) = ny(i)*t1z(i) - nz(i)*t1y(i)
702 t2y(i) = nz(i)*t1x(i) - nx(i)*t1z(i)
703 t2z(i) = nx(i)*t1y(i) - ny(i)*t1x(i)
706 xh=h1(i)*x1(i)+h2(i)*x2(i)+h3(i)*x3(i)+h4(i)*x4(i)
707 yh=h1(i)*y1(i)+h2(i)*y2(i)+h3(i)*y3(i)+h4(i)*y4(i)
708 zh=h1(i)*z1(i)+h2(i)*z2(i)+h3(i)*z3(i)+h4(i)*z4(i)
709 side(i)=(xi(i)-xh)*nx(i)+(yi(i)-yh)*ny(i)+(zi(i)-zh)*nz(i)
714 DO i=jlt-jlt_tied+1,jlt
720 DO i=jlt-jlt_tied+1,jlt
721 vx(i) = vxi(i) - h1(i)*v(1,ix1(i)) - h2(i)*v(1,ix2(i))
722 . - h3(i)*v(1,ix3(i)) - h4(i)*v(1,ix4(i))
723 vy(i) = vyi(i) - h1(i)*v(2,ix1(i)) - h2(i)*v(2,ix2(i))
724 . - h3(i)*v(2,ix3(i)) - h4(i)*v(2,ix4(i))
725 vz(i) = vzi(i) - h1(i)*v(3,ix1(i)) - h2(i)*v(3,ix2(i))
726 . - h3(i)*v(3,ix3(i)) - h4(i)*v(3,ix4(i))
727 vn(i) = vx(i)*nx(i) + vy(i)*ny(i) + vz(i)*nz(i)
728 vt1(i) = vx(i)*t1x(i) + vy(i)*t1y(i) + vz(i)*t1z(i)
729 vt2(i) = vx(i)*t2x(i) + vy(i)*t2y(i) + vz(i)*t2z(i)
738 cand_p(index(i))=
min(cand_p(index(i)),
739 . ((one-fiveem2)*cand_p(index(i))+fiveem2*pene(i)) )
741 pene(i)=
max(zero,pene(i)-cand_p(index(i)))
742 IF( pene(i)==zero ) stif(i) = zero
743 gapv(i)=gapv(i)-cand_p(index(i))
746 DO i=jlt-jlt_tied+1,jlt
749 pene(i)=
max(zero,pene(i)-cand_p(index(i)))
750 gapv(i)=gapv(i)-cand_p(index(i))
753 ELSE IF(inacti==6)
THEN
757 cand_p(index(i))=
min(cand_p(index(i)),
758 . ( (one-fiveem2)*cand_p(index(i))
759 . +fiveem2*(pene(i)+fiveem2*(gapv(i)-pene(i)))) )
761 pene(i)=
max(zero,pene(i)-cand_p(index(i)))
762 IF( pene(i)==zero ) stif(i) = zero
763 gapv(i)=gapv(i)-cand_p(index(i
766 DO i=jlt-jlt_tied+1,jlt
769 pene(i)=
max(zero,pene(i)-cand_p(index(i)))
770 gapv(i)=gapv(i)-cand_p(index(i))
781 rdist = half*dist /
max(em30,-vn(i))
786 IF (dtmini>zero)
THEN
797 dist =gapv(i)-pene(i)
798 dti2 = half*dist /
max(em30,-vn(i))
801 WRITE(iout,
'(A,E12.4,A,I10,A,E12.4,A)')
802 .
' **WARNING MINIMUM TIME STEP ',dti2,
803 .
' IN INTERFACE ',noint,
'(DTMIN=',dtm,
')'
804 IF ( istamping == 1)
THEN
805 WRITE(istdo,'(a)
')'the run encountered a problem in an in
807 WRITE(ISTDO,'(a)
')'you may need to check
if there is enou
808 .gh clearance between
the tools,
'
809 WRITE(ISTDO,'(a)
')'and that they
do not penetrate each ot
810 .her during their travel
'
811 WRITE(IOUT, '(a)
')'the run encountered a problem in an in
813 WRITE(IOUT, '(a)
')'you may need to check
if there is enou
814 .gh clearance between
the tools,
'
815 WRITE(IOUT, '(a)
')'and that they
do not penetrate each ot
816 .her during their travel
'
822 NI = ITAFI(NIN)%P(-NN)
824#include "lockoff.inc"
827 WRITE(IOUT,'(a,i10)
') ' secondary node :
',NI
828 WRITE(IOUT,'(a,4i10)
')' main nodes :
',
829 . ITAB(IX1(I)),ITAB(IX2(I)),ITAB(IX3(I)),ITAB(IX4(I))
830#include "lockoff.inc"
834 WRITE(IOUT,'(a,i10,a,i10)
')' remove secondary node
',
835 . NI,' from
INTERFACE ',NOINT
837 STFN(CN_LOC(I)) = -ABS(STFN(CN_LOC(I)))
839 STIFI(NIN)%P(-NN) = -ABS(STIFI(NIN)%P(-NN))
841#include "lockoff.inc"
848 WRITE(IOUT,'(a,i10)
') ' secondary node :
',NI
849 WRITE(IOUT,'(a,4i10)
')' main nodes :
',
850 . ITAB(IX1(I)),ITAB(IX2(I)),ITAB(IX3(I)),ITAB(IX4(I))
851#include "lockoff.inc"
853.AND.
ELSEIF(IDTM==6ILAGM==2)THEN
855 IF(KINET(IG)+KINET(IX1(I))+KINET(IX2(I))
856 . +KINET(IX3(I))+KINET(IX4(I))==0)THEN
857 CAND_N(INDEX(I)) = -IABS(CAND_N(INDEX(I)))
861 WRITE(IOUT,'(a,i10)
') ' secondary node :
',ITAB(NSVG(I))
862 WRITE(IOUT,'(a,4i10)
')' main nodes :
',
863 . ITAB(IX1(I)),ITAB(IX2(I)),ITAB(IX3(I)),ITAB(IX4(I))
864#include "lockoff.inc"
877 ENDIF ! IF(ITIED == 0)THEN
885 STIF(I) = HALF*STIF(I)
886 ELSEIF(STIF(I)/=ZERO)THEN
889 FNI(I)= -STIF(I) * PENE(I)
893 FAC = GAPV(I)/MAX( EM10,( GAPV(I)-PENE(I) ) )
895.AND.
IF( (GAPV(I)-PENE(I))/GAPV(I) <PREC
903 STFN(CN_LOC(I)) = -ABS(STFN(CN_LOC(I)))
905 NI = ITAFI(NIN)%P(-NN)
906 STIFI(NIN)%P(-NN) = -ABS(STIFI(NIN)%P(-NN))
908 WRITE(ISTDO,'(a,i10)
')' warning
INTERFACE ',NOINT
909 WRITE(ISTDO,'(a,i10,a)
')' node
',NI,
910 . ' de-activated from interface
'
911 WRITE(IOUT ,'(a,i10)
')' warning
INTERFACE ',noint
912 WRITE(iout ,
'(A,I10,A)')
' NODE ',ni,
913 .
' DE-ACTIVATED FROM INTERFACE'
914 IF ( istamping == 1)
THEN
915 WRITE'(A)')
'The run encountered a problem in an inter
917 WRITE(istdo,
'(A)')
'You may need to check if there is enough
918 .clearance between the tools,'
919 WRITE(istdo,
'(A)')
'and that they do not penetrate each other
920 . during their travel'
921 WRITE(iout,
'(A)')
'The run encountered a problem in an inter
923 WRITE(iout,
'(A)')
'You may need to check if there is enough
924 .clearance between the tools,'
925 WRITE(iout,
'(A)')
'and that they do not penetrate each other
926 . during their travel'
928#include "lockoff.inc"
931 IF(inconv==1) econtt = econtt + half*stif(i)*gapv(i)**2 *
932 . ( facm1 -one -log(
max(tiny(facm1),facm1) ))
933 stif(i) = half*stif(i) * fac
934 ELSEIF(stif(i)/=zero)
THEN
935 IF(inconv==1)econtt = econtt + stiglo*gapv(i)**2 *
936 . ( facm1 - one -log(
max(tiny(facm1),facm1) ))
937 stif(i) = stiglo * fac
939 fni(i)= -stif(i) * pene(i)
944 stif0(i) = half*stif0(i)
949 fac = gapv(i)/
max( em10,( gapv(i)-pene(i) ) )
951 IF( (gapv(i)-pene(i))/gapv(i) <prec .AND.
952 . stif(i)>zero )
THEN
959 stfn(cn_loc(i)) = -abs(stfn(cn_loc(i)))
961 ni =
itafi(nin)%P(-nn)
964 WRITE(istdo,
'(A,I10)')
' WARNING INTERFACE ',noint
965 WRITE(istdo,
'(A,I10,A)')
' NODE ',ni,
966 .
' DE-ACTIVATED FROM INTERFACE'
967 WRITE(iout ,
'(A,I10)')
' WARNING INTERFACE ',noint
968 WRITE(iout ,
'(A,I10,A)')
' NODE ',ni,
969 .
' DE-ACTIVATED FROM INTERFACE'
970 IF ( istamping == 1)
THEN
971 WRITE(istdo,
'(A)')
'The run encountered a problem in an inter
973 WRITE(istdo,
'(A)')
'You may need to check if there is enough
974 .clearance between the tools,'
975 WRITE(istdo,
'(A)')
'and that they do not penetrate each other
976 . during their travel'
977 WRITE(iout,
'(A)')
'The run encountered a problem in an inter
979 WRITE(iout,
'(A)')
'You may need to check if there is enough
980 .clearance between the tools,'
981 WRITE(iout,
'(A)')
'and that they do not penetrate each other
982 . during their travel'
984#include "lockoff.inc"
987 econtt = econtt + half*stif(i)*gapv(i)**2 *( facm1 - one -
988 . log(
max(tiny(facm1),facm1)) )
989 stif(i) = half*stif(i) * fac
990 ELSEIF(stif(i)/=zero)
THEN
991 econtt = econtt + stiglo*gapv(i)**2 *( facm1 - one -
992 . log(
max(tiny(facm1),facm1)) )
993 stif(i) = stiglo * fac
995 fni(i)= -stif(i) * pene(i)
1008 DO i=jlt-jlt_tied+1,jlt
1011 IF(pene(i)==zero.AND.side(i)*cand_f(8,ii) > zero)
THEN
1023 DO i=jlt-jlt_tied+1,jlt
1026 fac = gapv(i)/
max( em10,( gapv(i)-
min(pene(i),cand_f(7,ii)) ) )
1027 stif(i) = half*stif0(i) * fac**2
1029 econttied = econttied + cand_f(1,ii) * vn(i) * dt05
1030 econttied = econttied + cand_f(2,ii) * vt1(i) * dt05
1031 econttied = econttied + cand_f(3,ii) * vt2(i) * dt05
1033 fni(i) = cand_f(1,ii) + vn(i) * dt1 * stif(i)
1034 ft1(i) = cand_f(2,ii) + vt1(i) * dt1 * stif(i)
1035 ft2(i) = cand_f(3,ii) + vt2(i) * dt1 * stif(i)
1039 DO i=jlt-jlt_tied+1,jlt
1042 IF(pene(i)==zero.AND.side(i)*cand_f(8,ii) > zero)
THEN
1053 ELSEIF(fni(i)==zero)
THEN
1054 cand_f(1,ii) = sign(em30,cand_f(1,ii))
1056 IF (inconv==1) cand_f(1,ii) =fni(i)
1059 cand_f(2,ii) = ft1(i)
1060 cand_f(3,ii) = ft2(i)
1063 ELSEIF(itied == 2)
THEN
1064 DO i=jlt-jlt_tied+1,jlt
1067 IF(fni(i)==zero.AND.pene(i)/=zero)
THEN
1070 IF (inconv==1) cand_f(1,ii) =fni(i)
1073 cand_f(2,ii) = ft1(i)
1074 cand_f(3,ii) = ft2(i)
1079 DO i=jlt-jlt_tied+1,jlt
1081 econttied = econttied + cand_f(1,ii) * vn(i) * dt05
1082 econttied = econttied + cand_f(2,ii) * vt1(i) * dt05
1083 econttied = econttied + cand_f(3,ii) * vt2(i) * dt05
1091 IF(ivis2==0.OR.ivis2==1)
THEN
1096 vis2(i) = two * stif(i) * msi(i)
1097 IF(vn(i)<zero) vis2(i) = vis2(i) /
1098 . (
max(em10,(gapv(i)-pene(i))/gapv(i)) )
1102 IF(kdtint==0.AND.(idtmins/=2.AND.idtmins_int==0))
THEN
1104 fac = stif(i) /
max(em30,stif(i))
1108 . visca**2 * two* msi(i) *
max(zero,-vn(i)) /
1109 .
max((gapv(i) - pene(i)),em10) )
1110 stif(i) = stif(i) * gapv(i) /
max((gapv(i) - pene(i)),em10)
1111 stif(i) = stif(i) + ff * dt1inv
1112 stif(i) =
max(stif(i) ,fac*sqrt(viscffric(i))*vis*dt1inv)
1115 fni(i) = fni(i) + ff
1119 fac = stif(i) /
max(em30,stif(i))
1123 . visca**2 * two * msi(i) *
max(zero,-vn(i)) /
1124 .
max((gapv(i) - pene(i)),em10) )
1125 stif(i) = stif(i) * gapv(i) /
max((gapv(i) - pene(i)),em10)
1127 stif(i) = stif(i) + c(i) * dt1inv
1129 fni(i) = fni(i) + ff
1130 cf(i) = fac*sqrt(viscffric(i))*vis
1131 stif(i) =
max(stif(i) ,cf(i)*dt1inv)
1134 ELSEIF(ivis2==2)
THEN
1139 vis2(i) = two* stif(i) * msi(i)
1141 . (
max(em10,(gapv(i)-pene(i))/gapv(i)) )
1146 fac = stif(i) /
max(em30,stif(i))
1150 . visca**2 * two * msi(i) * abs(vn(i)) /
1151 .
max((gapv(i) - pene(i)),em10) )
1152 stif(i) = stif(i) * gapv(i) /
max((gapv(i) - pene(i)),em10)
1153 stif(i) = stif(i) + two * ff * dt1inv
1154 stif(i) =
max(stif(i) ,fac*sqrt(viscffric(i))*vis*dt1inv)
1156 fni(i) = fni(i) + ff
1158 ELSEIF(ivis2==3)
THEN
1163 vis2(i) = two * stif(i) * msi(i)
1167 fac = stif(i) /
max(em30,stif(i))
1169 ff = fac * ( visc * vis ) /
1170 .
max((gapv(i) - pene(i)),em10)
1171 stif(i) = stif(i) * gapv(i) /
1172 .
max((gapv(i) - pene(i)),em10)
1173 stif(i) = stif(i) + two* ff * dt1inv
1174 stif(i) =
max(stif(i) ,fac*sqrt(viscffric(i))*vis*dt1inv)
1176 fni(i) = fni(i) + ff
1178 ELSEIF(ivis2==4)
THEN
1183 vis2(i) = two* stif(i) * msi(i)
1185 stif(i) = stif(i) * gapv(i) /
1186 .
max((gapv(i) - pene(i)),em10)
1187 stif(i) =
max(stif(i) ,fac*sqrt(viscffric(i))*vis*dt1inv)
1189 ELSEIF(ivis2==5)
THEN
1196 mas2 = ms(ix1(i))*h1(i)
1197 . + ms(ix2(i))*h2(i)
1198 . + ms(ix3(i))*h3(i)
1199 . + ms(ix4(i))*h4(i)
1200 vis2(i) = two* stif(i) * msi(i)
1201 vis = 2. * visc * dt1inv * msi(i) * mas2 /
1202 .
max(em30,msi(i)+mas2)
1203 stif(i) = stif(i) * gapv(i) /
1204 .
max((gapv(i) - pene(i)),em10)
1205 stif(i) =
max(stif(i) ,fac*sqrt(viscffric(i)*vis2(i))*dt1inv)
1207 econtdt = econtdt +
min(zero,ff-fni(i)) * vn(i) * dt1
1208 fni(i) =
min(fni(i),ff)
1214 IF(viscffric(i)/=zero)
THEN
1215 IF(ivis2==0.OR.ivis2==1)
THEN
1219 vis2(i) = two * stif(i) * msi(i)
1220 IF(vn(i)<zero) vis2(i) = vis2(i) /
1221 . (
max(em10,(gapv(i)-pene(i))/gapv(i)) )
1225 IF(kdtint==0.AND.(idtmins/=2.AND.idtmins_int==0))
THEN
1226 fac = stif(i) /
max(em30,stif(i))
1230 . visca**2 * two* msi(i) *
max(zero,-vn(i)) /
1231 .
max((gapv(i) - pene(i)),em10) )
1232 stif(i) = stif(i) * gapv(i) /
max((gapv(i) - pene(i)),em10)
1233 stif(i) = stif(i) + ff * dt1inv
1235 stif(i) =
max(stif(i) ,fac*sqrt(viscffric(i))*vis*dt1inv)
1238 fni(i) = fni(i) + ff
1240 fac = stif(i) /
max(em30,stif(i))
1244 . visca**2 * two * msi(i) *
max(zero,-vn(i)) /
1245 .
max((gapv(i) - pene(i)),em10) )
1246 stif(i) = stif(i) * gapv(i) /
max((gapv(i) - pene(i)),em10)
1248 stif(i) = stif(i) + c(i) * dt1inv
1250 fni(i) = fni(i) + ff
1251 cf(i) = fac*sqrt(viscffric(i))*vis
1252 stif(i) =
max(stif(i) ,cf(i)*dt1inv)
1254 ELSEIF(ivis2==2)
THEN
1258 vis2(i) = two* stif(i) * msi(i)
1260 . (
max(em10,(gapv(i)-pene(i))/gapv(i)) )
1263 fac = stif(i) /
max(em30,stif(i))
1267 . visca**2 * two * msi(i) * abs(vn(i)) /
1268 .
max((gapv(i) - pene(i)),em10) )
1269 stif(i) = stif(i) * gapv(i) /
max((gapv(i) - pene(i)),em10)
1270 stif(i) = stif(i) + two * ff * dt1inv
1271 stif(i) =
max(stif(i) ,fac*sqrt(viscffric(i))*vis*dt1inv)
1273 fni(i) = fni(i) + ff
1274 ELSEIF(ivis2==3)
THEN
1278 vis2(i) = two * stif(i) * msi(i)
1280 fac = stif(i) /
max(em30,stif(i))
1282 ff = fac * ( visc * vis ) /
1283 .
max((gapv(i) - pene(i)),em10)
1284 stif(i) = stif(i) * gapv(i) /
1285 .
max((gapv(i) - pene(i)),em10)
1286 stif(i) = stif(i) + two* ff * dt1inv
1287 stif(i) =
max(stif(i) ,fac*sqrt(viscffric(i))*vis*dt1inv)
1289 fni(i) = fni(i) + ff
1290 ELSEIF(ivis2==4)
THEN
1294 vis2(i) = two* stif(i) * msi(i)
1296 stif(i) = stif(i) * gapv(i) /
1297 .
max((gapv(i) - pene(i)),em10)
1298 stif(i) =
max(stif(i) ,fac*sqrt(viscffric(i))*vis*dt1inv)
1299 ELSEIF(ivis2==5)
THEN
1305 mas2 = ms(ix1(i))*h1(i)
1306 . + ms(ix2(i))*h2(i)
1307 . + ms(ix3(i))*h3(i)
1308 . + ms(ix4(i))*h4(i)
1309 vis2(i) = two* stif(i) * msi(i)
1310 vis = 2. * visc * dt1inv * msi(i) * mas2 /
1311 .
max(em30,msi(i)+mas2)
1312 stif(i) = stif(i) * gapv(i) /
1313 .
max((gapv(i) - pene(i)),em10)
1314 stif(i) =
max(stif(i) ,fac*sqrt(viscffric(i)*vis2(i))*dt1inv)
1316 econtdt = econtdt +
min(zero,ff-fni(i)) * vn(i) * dt1
1317 fni(i) =
min(fni(i),ff)
1323 stif(i) = stif(i) * gapv(i) /
1324 .
max((gapv(i) - pene(i)),em10)
1333 IF(ivis2==0.OR.ivis2==1)
THEN
1337 IF(kdtint==0.AND.(idtmins/=2.AND.idtmins_int==0))
THEN
1338 DO i=jlt-jlt_tied+1,jlt
1339 fac = gapv(i)/
max( em10,( gapv(i)-
min(pene(i),cand_f(7,index(i))) ) )
1340 stif(i) = half*stif0(i) * fac
1342 vis = visc * sqrt(two * stif(i) * msi(i))
1343 fni(i) = fni(i) + vn(i) * vis
1344 ft1(i) = ft1(i) + vt1(i) * vis
1345 ft2(i) = ft2(i) + vt2(i) * vis
1347 stif(i) = stif(i)*fac
1348 stif(i) = stif(i) + two * vis * dt1inv
1351 . + vis * (vx(i)*vx(i)+vy(i)*vy(i)+vz(i)*vz(i)) * dt1
1355 DO i=jlt-jlt_tied+1,jlt
1356 fac = gapv(i)/
max( em10,( gapv(i)-
min(pene(i),cand_f(7,index(i))) ) )
1357 stif(i) = half*stif0(i) * fac
1359 vis = visc * sqrt(two * stif(i) * msi(i))
1360 fni(i) = fni(i) + vn(i) * vis
1361 ft1(i) = ft1(i) + vt1(i) * vis
1362 ft2(i) = ft2(i) + vt2(i) * vis
1365 stif(i) = stif(i)*fac
1367 stif(i) = stif(i) + two * vis * dt1inv
1370 . + vis * (vx(i)*vx(i)+vy(i)*vy(i)+vz(i)*vz(i)) * dt1
1373 ELSEIF(ivis2==2)
THEN
1377 DO i=jlt-jlt_tied+1,jlt
1378 fac = gapv(i)/
max( em10,( gapv(i)-
min(pene(i),cand_f(7,index(i))) ) )
1379 stif(i) = half*stif0(i) * fac
1381 vis = sqrt(two* stif(i) * msi(i))
1382 fni(i) = fni(i) + vn(i) * vis
1383 ft1(i) = ft1(i) + vt1(i) * vis
1384 ft2(i) = ft2(i) + vt2(i) * vis
1386 stif(i) = stif(i)*fac
1387 stif(i) = stif(i) + two * vis * dt1inv
1390 . + vis * (vx(i)*vx(i)+vy(i)*vy(i)+vz(i)*vz(i)) * dt1
1392 ELSEIF(ivis2==3)
THEN
1396 DO i=jlt-jlt_tied+1,jlt
1397 fac = gapv(i)/
max( em10,( gapv(i)-
min(pene(i),cand_f(7,index(i))) ) )
1398 stif(i) = half*stif0(i) * fac
1400 vis = sqrt(two* stif(i) * msi(i))
1401 fni(i) = fni(i) + vn(i) * vis
1402 ft1(i) = ft1(i) + vt1(i) * vis
1403 ft2(i) = ft2(i) + vt2(i) * vis
1405 stif(i) = stif(i)*fac
1406 stif(i) = stif(i) + two * vis * dt1inv
1409 . + vis * (vx(i)*vx(i)+vy(i)*vy(i)+vz(i)*vz(i)) * dt1
1411 ELSEIF(ivis2==4)
THEN
1415 ELSEIF(ivis2==5)
THEN
1421 DO i=jlt-jlt_tied+1,jlt
1422 fac = gapv(i)/
max( em10,( gapv(i)-
min(pene(i),cand_f(7,index(i))) ) )
1423 stif(i) = half*stif0(i) * fac
1425 mas2 = ms(ix1(i))*h1(i)
1426 . + ms(ix2(i))*h2(i)
1427 . + ms(ix3(i))*h3(i)
1428 . + ms(ix4(i))*h4(i)
1429 vis = sqrt(two* stif(i) * msi(i))
1430 fni(i) = fni(i) + vn(i) * vis
1431 ft1(i) = ft1(i) + vt1(i) * vis
1432 ft2(i) = ft2(i) + vt2(i) * vis
1434 stif(i) = stif(i)*fac
1435 stif(i) = stif(i) + two * vis * dt1inv
1438 . + vis * (vx(i)*vx(i)+vy(i)*vy(i)+vz(i)*vz(i)) * dt1
1441 DO i=jlt-jlt_tied+1,jlt
1442 fac = gapv(i)/
max( em10,( gapv(i)-
min(pene(i),cand_f(7,index(i))) ) )
1443 stif(i) = half*stif0(i) * fac
1444 stif(i) = stif(i)*fac
1448 DO i=jlt-jlt_tied+1,jlt
1449 fac = gapv(i)/
max( em10,( gapv(i)-
min(pene(i),cand_f(7,index(i))) ) )
1450 stif(i) = half*stif0(i) * fac
1451 stif(i) = stif(i)*fac
1472 impx=forc_sign*fxi(i)*dt12
1473 impy=forc_sign*fyi(i)*dt12
1474 impz=forc_sign*fzi(i)*dt12
1478 fsav8 =fsav8 +abs(impx)
1479 fsav9 =fsav9 +abs(impy)
1480 fsav10=fsav10+abs(impz)
1481 fsav11=fsav11+abs(fni(i))*dt12
1483#include "lockon.inc"
1484 fsav(1)=fsav(1)+fsav1
1485 fsav(2)=fsav(2)+fsav2
1486 fsav(3)=fsav(3)+fsav3
1487 fsav(8)=fsav(8)+fsav8
1488 fsav(9)=fsav(9)+fsav9
1489 fsav(10)=fsav(10)+fsav10
1490 fsav(11)=fsav(11)+fsav11
1492#include "lockoff.inc"
1494 IF(isensint(1)/=0)
THEN
1496 fsavparit(1,1,i+nft) = forc_sign*fxi(i)
1497 fsavparit(1,2,i+nft) = forc_sign*fyi(i)
1498 fsavparit(1,3,i+nft) = forc_sign*fzi(i)
1502 IF((anim_v(12)+outp_v(12)+h3d_data%N_VECT_PCONT>0.AND.
1503 . ((tt>=tanim .AND. tt<=tanim_stop).OR.tt>=toutp.OR.(tt>=h3d_data%TH3D.AND.tt<=h3d_data%TH3D_STOP).OR.
1504 . (manim>=4.AND.manim<=15).OR.h3d_data%MH3D/=0))
1505 . .OR.h3d_data%N_VECT_PCONT_MAX>0)
THEN
1507#include "lockon.inc"
1509 fncont(1,ix1(i)) =fncont(1,ix1(i)) + fxi(i)*h1(i)
1510 fncont(2,ix1(i)) =fncont(2,ix1(i)) + fyi(i)*h1(i)
1511 fncont(3,ix1(i)) =fncont(3,ix1(i)) + fzi(i)*h1(i)
1512 fncont(1,ix2(i)) =fncont(1,ix2(i)) + fxi(i)*h2(i)
1513 fncont(2,ix2(i)) =fncont(2,ix2(i)) + fyi(i)*h2(i)
1514 fncont(3,ix2(i)) =fncont(3,ix2(i)) + fzi(i)*h2(i)
1515 fncont(1,ix3(i)) =fncont(1,ix3(i)) + fxi(i)*h3(i)
1516 fncont(2,ix3(i)) =fncont(2,ix3(i)) + fyi(i)*h3(i)
1517 fncont(3,ix3(i)) =fncont(3,ix3(i)) + fzi(i)*h3(i)
1518 fncont(1,ix4(i)) =fncont(1,ix4(i)) + fxi(i)*h4(i)
1519 fncont(2,ix4(i)) =fncont(2,ix4(i)) + fyi(i)*h4(i)
1520 fncont(3,ix4(i)) =fncont(3,ix4(i)) + fzi(i)*h4(i)
1524 fncont(1,jg)=fncont(1,jg)- fxi(i)
1526 fncont(3,jg)=fncont(3,jg)- fzi(i)
1534#include "lockoff.inc"
1545 fsavsub1(j,jsub)=zero
1555 DO WHILE(jj<addsubs(in+1))
1557 itypsub = typsub(jsub)
1559 IF(itypsub == 1 )
THEN
1564 DO WHILE((ksub<=jsub).AND.(kk<addsubm(ie+1)))
1568 impx=forc_sign*fxi(i)*dt12
1569 impy=forc_sign*fyi(i)*dt12
1570 impz=forc_sign*fzi(i)*dt12
1572 fsavsub1(1,jsub)=fsavsub1(1,jsub)+impx
1573 fsavsub1(2,jsub)=fsavsub1(2,jsub)+impy
1574 fsavsub1(3,jsub)=fsavsub1(3,jsub)+impz
1576 IF(isensint(jsub+1)/=0)
THEN
1577 fsavparit(jsub+1,1,i+nft) = forc_sign*fxi(i)
1578 fsavparit(jsub+1,2,i+nft) = forc_sign*fyi(i)
1579 fsavparit(jsub+1,3,i+nft) = forc_sign*fzi(i)
1582 fsavsub1(8,jsub) =fsavsub1(8,jsub) +abs(impx)
1583 fsavsub1(9,jsub) =fsavsub1(9,jsub) +abs(impy)
1584 fsavsub1(10,jsub)=fsavsub1(10,jsub)+abs(impz
1586 fsavsub1(11,jsub)=fsavsub1(11,jsub)+abs(fni(i))*dt12
1596 ELSEIF(itypsub == 2 )
THEN
1598 impx=forc_sign*fxi(i)*dt12
1599 impy=forc_sign*fyi(i)*dt12
1600 impz=forc_sign*fzi(i)*dt12
1602 fsavsub1(1,jsub)=fsavsub1(1,jsub)+impx
1603 fsavsub1(2,jsub)=fsavsub1(2,jsub)+impy
1604 fsavsub1(3,jsub)=fsavsub1(3,jsub)+impz
1606 fsavsub1(8,jsub) =fsavsub1(8,jsub) +abs(impx)
1607 fsavsub1(9,jsub) =fsavsub1(9,jsub) +abs(impy)
1608 fsavsub1(10,jsub)=fsavsub1(10,jsub)+abs(impz)
1610 fsavsub1(11,jsub)=fsavsub1(11,jsub)+abs(fni(i))*dt12
1612 IF(isensint(jsub+1)/=0)
THEN
1613 fsavparit(jsub+1,1,i+nft) = forc_sign*fxi(i)
1614 fsavparit(jsub+1,2,i+nft) = forc_sign*fyi(i)
1615 fsavparit(jsub+1,3,i+nft) = forc_sign*fzi(i)
1620 ELSEIF(itypsub == 3 )
THEN
1622 iss2 = bitget(inflg_subs(jj
1623 iss1 = bitget(inflg_subs(jj),1)
1625 DO WHILE((ksub<=jsub).AND.(kk<addsubm(ie+1)))
1626 ims2 = bitget(inflg_subm(kk),0)
1627 ims1 = bitget(inflg_subm(kk),1)
1629 IF(.NOT.((ims1 == 1 .AND. iss2 == 1).OR.
1630 . (ims2 == 1 .AND. iss1 == 1)))
THEN
1636 impx=forc_sign*fxi(i)*dt12
1637 impy=forc_sign*fyi(i)*dt12
1638 impz=forc_sign*fzi(i)*dt12
1642 fsavsub1(1,jsub)=fsavsub1(1,jsub)-impx
1643 fsavsub1(2,jsub)=fsavsub1(2,jsub)-impy
1644 fsavsub1(3,jsub)=fsavsub1(3,jsub)-impz
1646 fsavsub1(1,jsub)=fsavsub1(1,jsub)+impx
1647 fsavsub1(2,jsub)=fsavsub1(2,jsub)+impy
1648 fsavsub1(3,jsub)=fsavsub1(3,jsub)+impz
1651 fsavsub1(8,jsub) =fsavsub1(8,jsub) +abs(impx)
1652 fsavsub1(9,jsub) =fsavsub1(9,jsub) +abs(impy)
1653 fsavsub1(10,jsub)=fsavsub1(10,jsub)+abs(impz)
1655 fsavsub1(11,jsub)=fsavsub1(11,jsub)+abs(fni(i))*dt12
1658 IF(isensint(jsub+1)/=0)
THEN
1660 fsavparit(jsub+1,1,i+nft) = -forc_sign*fxi(i)
1661 fsavparit(jsub+1,2,i+nft) = -forc_sign*fyi(i)
1662 fsavparit(jsub+1,3,i+nft) = -forc_sign*fzi(i)
1664 fsavparit(jsub+1,1,i+nft) = forc_sign*fxi(i)
1666 fsavparit(jsub+1,3,i+nft) = forc_sign*fzi(i)
1682 DO WHILE(kk<addsubm(ie+1))
1685 itypsub = typsub(ksub)
1686 IF(itypsub == 2 )
THEN
1688 impx=-forc_sign*fxi(i)*dt12
1689 impy=-forc_sign*fyi(i)*dt12
1690 impz=-forc_sign*fzi(i)*dt12
1692 fsavsub1(1,ksub)=fsavsub1(1,ksub)+impx
1693 fsavsub1(2,ksub)=fsavsub1(2,ksub)+impy
1694 fsavsub1(3,ksub)=fsavsub1(3,ksub)+impz
1696 fsavsub1(8,ksub) =fsavsub1(8,ksub) +abs(impx)
1697 fsavsub1(9,ksub) =fsavsub1(9,ksub) +abs(impy)
1698 fsavsub1(10,ksub)=fsavsub1(10,ksub)+abs(impz)
1700 fsavsub1(11,ksub)=fsavsub1(11,ksub)+abs(fni(i))*dt12
1702 IF(isensint(ksub+1)/=0)
THEN
1703 fsavparit(ksub+1,1,i+nft) = fxi(i)
1704 fsavparit(ksub+1,2,i+nft) = fyi(i)
1705 fsavparit(ksub+1,3,i+nft) = fzi(i)
1725 itypsub = typsub(jsub)
1727 IF(itypsub == 1 )
THEN
1730 DO WHILE((ksub<=jsub).AND.(kk<addsubm(ie+1)))
1733 impx=forc_sign*fxi(i)*dt12
1734 impy=forc_sign*fyi(i)*dt12
1735 impz=forc_sign*fzi(i)*dt12
1737 fsavsub1(1,jsub)=fsavsub1(1,jsub)+impx
1738 fsavsub1(2,jsub)=fsavsub1(2,jsub)+impy
1739 fsavsub1(3,jsub)=fsavsub1(3,jsub)+impz
1741 IF(isensint(jsub+1)/=0)
THEN
1742 fsavparit(jsub+1,1,i+nft) = forc_sign*fxi(i)
1743 fsavparit(jsub+1,2,i+nft) = forc_sign*fyi(i)
1744 fsavparit(jsub+1,3,i+nft) = forc_sign*fzi(i)
1747 fsavsub1(8,jsub) =fsavsub1(8,jsub) +abs(impx)
1748 fsavsub1(9,jsub) =fsavsub1(9,jsub) +abs(impy)
1749 fsavsub1(10,jsub)=fsavsub1(10,jsub)+abs(impz)
1751 fsavsub1(11,jsub)=fsavsub1(11,jsub)+abs(fni(i))*dt12
1760 ELSEIF(itypsub == 2 )
THEN
1762 impx=forc_sign*fxi(i)*dt12
1763 impy=forc_sign*fyi(i)*dt12
1764 impz=forc_sign*fzi(i)*dt12
1766 fsavsub1(1,jsub)=fsavsub1(1,jsub)+impx
1767 fsavsub1(2,jsub)=fsavsub1(2,jsub)+impy
1768 fsavsub1(3,jsub)=fsavsub1(3,jsub)+impz
1770 fsavsub1(8,jsub) =fsavsub1(8,jsub) +abs(impx)
1771 fsavsub1(9,jsub) =fsavsub1(9,jsub) +abs(impy)
1772 fsavsub1(10,jsub)=fsavsub1(10,jsub)+abs(impz)
1774 fsavsub1(11,jsub)=fsavsub1(11,jsub)+fni(i)*dt12
1776 IF(isensint(jsub+1)/=0)
THEN
1777 fsavparit(jsub+1,1,i+nft) = forc_sign*fxi(i)
1778 fsavparit(jsub+1,2,i+nft) = forc_sign*fyi(i)
1779 fsavparit(jsub+1,3,i+nft) = forc_sign*fzi(i)
1784 ELSEIF(itypsub == 3 )
THEN
1789 DO WHILE((ksub<=jsub).AND.(kk<addsubm(ie+1)))
1790 ims2 = bitget(inflg_subm(kk),0)
1791 ims1 = bitget(inflg_subm(kk),1)
1793 IF(.NOT.((ims1 == 1 .AND. iss2 == 1).OR.
1794 . (ims2 == 1 .AND. iss1 == 1)))
THEN
1800 impx=forc_sign*fxi(i)*dt12
1801 impy=forc_sign*fyi(i)*dt12
1802 impz=forc_sign*fzi(i)*dt12
1805 fsavsub1(1,jsub)=fsavsub1(1,jsub)-impx
1806 fsavsub1(2,jsub)=fsavsub1(2,jsub)-impy
1807 fsavsub1(3,jsub)=fsavsub1(3,jsub)-impz
1808 fsavsub1(11,jsub)=fsavsub1(11,jsub)-fni(i)*dt12
1810 fsavsub1(1,jsub)=fsavsub1(1,jsub)+impx
1811 fsavsub1(2,jsub)=fsavsub1(2,jsub)+impy
1812 fsavsub1(3,jsub)=fsavsub1(3,jsub)+impz
1813 fsavsub1(11,jsub)=fsavsub1(11,jsub)+fni(i)*dt12
1816 IF(isensint(jsub+1)/=0)
THEN
1818 fsavparit(jsub+1,1,i+nft) = -forc_sign*fxi(i)
1819 fsavparit(jsub+1,2,i+nft) = -forc_sign*fyi(i)
1820 fsavparit(jsub+1,3,i+nft) = -forc_sign*fzi(i)
1822 fsavparit(jsub+1,1,i+nft) = forc_sign*fxi(i)
1823 fsavparit(jsub+1,2,i+nft) = forc_sign*fyi(i)
1824 fsavparit(jsub+1,3,i+nft) = forc_sign*fzi(i)
1828 fsavsub1(8,jsub) =fsavsub1(8,jsub) +abs(impx)
1829 fsavsub1(9,jsub) =fsavsub1(9,jsub) +abs(impy)
1830 fsavsub1(10,jsub)=fsavsub1(10,jsub)+abs(impz)
1846 IF(ninloadp > 0)
THEN
1847 DO k = kloadpinter(nin)+1, kloadpinter(nin+1)
1849 ppl = loadp_hyd_inter(pp)
1850 dgap = dgaploadint(k)
1852 gapp= gapv(i) + dgap
1853 IF(pene(i) > zero .OR.(distp(i
THEN
1854 tagncont(ppl,ix1(i)) = 1
1855 tagncont(ppl,ix2(i)) = 1
1856 tagncont(ppl,ix3(i)) = 1
1857 tagncont(ppl,ix4(i)) = 1
1861 tagncont(ppl,jg) = 1
1872 IF(iorthfric == 0)
THEN
1880 ELSEIF (mfrot==1)
THEN
1884 aa = n1(i)*vx(i) + n2(i)*vy(i) + n3(i)*vz(i)
1885 v2 = (vx(i) - n1(i)*aa)**2
1886 . + (vy(i) - n2(i)*aa)**2
1887 . + (vz(i) - n3(i)*aa)**2
1888 vv = sqrt(
max(em30,v2))
1889 ax1 = x(1,irect(3,ie)) - x(1,irect(1,ie))
1890 ay1 = x(2,irect(3,ie)) - x(2,irect(1,ie))
1891 az1 = x(3,irect(3,ie)) - x(3,irect(1,ie))
1892 ax2 = x(1,irect(4,ie)) - x(1,irect(2,ie))
1893 ay2 = x(2,irect(4,ie)) - x(2,irect(2,ie))
1894 az2 = x(3,irect(4,ie)) - x(3,irect(2,ie))
1895 ax = ay1*az2 - az1*ay2
1896 ay = az1*ax2 - ax1*az2
1897 az = ax1*ay2 - ay1*ax2
1898 area = half*sqrt(ax*ax+ay*ay+az*az
1900 xmu(i) = fricc(i) + (fric_coefs(i,1) + fric_coefs(i,4)*p ) * p
1901 . +(fric_coefs(i,2) + fric_coefs(i,3)*p) * vv + fric_coefs(i,5)*v2
1902 xmu(i) =
max(xmu(i),em30)
1904 ELSEIF(mfrot==2)
THEN
1908 aa = n1(i)*vx(i) + n2(i)*vy(i) + n3(i)*vz(i)
1909 v2 = (vx(i) - n1(i)*aa)**2
1910 . + (vy(i) - n2(i)*aa)**2
1911 . + (vz(i) - n3(i)*aa)**2
1912 vv = sqrt(
max(em30,v2))
1913 ax1 = x(1,irect(3,ie)) - x(1,irect(1,ie))
1914 ay1 = x(2,irect(3,ie)) - x(2,irect(1,ie))
1915 az1 = x(3,irect(3,ie)) - x(3,irect(1,ie))
1916 ax2 = x(1,irect(4,ie)) - x(1,irect(2,ie))
1917 ay2 = x(2,irect(4,ie)) - x(2,irect(2,ie))
1918 az2 = x(3,irect(4,ie)) - x(3,irect(2,ie))
1919 ax = ay1*az2 - az1*ay2
1920 ay = az1*ax2 - ax1*az2
1921 az = ax1*ay2 - ay1*ax2
1922 area = half*sqrt(ax*ax+ay*ay+az*az)
1925 . + fric_coefs(i,1)*exp(fric_coefs(i,2)*vv)*p*p
1926 . + fric_coefs(i,3)*exp(fric_coefs(i,4)*vv)*p
1927 . + fric_coefs(i,5)*exp(fric_coefs(i,6)*vv)
1928 xmu(i) =
max(xmu(i),em30)
1930 ELSEIF (mfrot==3)
THEN
1933 aa = n1(i)*vx(i) + n2(i)*vy(i) + n3(i)*vz(i)
1934 v2 = (vx(i) - n1(i)*aa)**2
1935 . + (vy(i) - n2(i)*aa)**2
1936 . + (vz(i) - n3(i)*aa)**2
1937 vv = sqrt(
max(em30,v2))
1938 IF(vv>=0.AND.vv<=fric_coefs(i,5))
THEN
1939 dmu = fric_coefs(i,3)-fric_coefs(i,1)
1940 vv1 = vv / fric_coefs
1941 xmu(i) = fric_coefs(i,1)+ dmu*vv1*(two-vv1)
1942 ELSEIF(vv>fric_coefs(i,5).AND.vv<fric_coefs(i,6))
THEN
1943 dmu = fric_coefs(i,4)-fric_coefs(i,3)
1944 vv1 = (vv - fric_coefs(i,5))/(fric_coefs(i,6)-fric_coefs(i,5))
1945 xmu(i) = fric_coefs(i,3)+ dmu * (three-two*vv1)*vv1**2
1947 dmu = fric_coefs(i,2)-fric_coefs(i,4)
1948 vv2 = (vv - fric_coefs(i,6))**2
1949 xmu(i) = fric_coefs(i,2) - dmu / (one + dmu*vv2)
1951 xmu(i) =
max(xmu(i),em30)
1954 ELSEIF(mfrot==4)
THEN
1957 aa = n1(i)*vx(i) + n2(i)*vy(i) + n3(i)*vz(i)
1958 v2 = (vx(i) - n1(i)*aa)**2
1959 . + (vy(i) - n2(i)*aa)**2
1960 . + (vz(i) - n3(i)*aa)**2
1961 vv = sqrt(
max(em30,v2))
1962 xmu(i) = fric_coefs(i,1)
1963 . + (fricc(i)-fric_coefs(i,1))*exp(-fric_coefs(i,2)*vv)
1964 xmu(i) =
max(xmu(i),em30)
1972#include "vectorize.inc"
1977#include "vectorize.inc"
1982 IF(xmu(i)<=em30)
THEN
1990 IF(xmu2(i)<=em30)
THEN
2001 ELSEIF (mfrot==1)
THEN
2003#include "vectorize.inc"
2007 aa = n1(i)*vx(i) + n2(i)*vy(i) + n3(i)*vz(i)
2008 v2 = (vx(i) - n1(i)*aa)**2
2009 . + (vy(i) - n2(i)*aa)**2
2010 . + (vz(i) - n3(i)*aa)**2
2011 vv = sqrt(
max(em30,v2))
2013 ax1 = x(1,irect(3,ie)) - x(1,irect(1,ie))
2014 ay1 = x(2,irect(3,ie)) - x(2,irect(1,ie))
2015 az1 = x(3,irect(3,ie)) - x(3,irect(1,ie))
2016 ax2 = x(1,irect(4,ie)) - x(1,irect(2,ie))
2017 ay2 = x(2,irect(4,ie)) - x(2,irect(2,ie))
2018 az2 = x(3,irect(4,ie)) - x(3,irect(2,ie))
2019 ax = ay1*az2 - az1*ay2
2020 ay = az1*ax2 - ax1*az2
2021 az = ax1*ay2 - ay1*ax2
2022 area = half*sqrt(ax*ax+ay*ay+az*az)
2024 xmu(i) = fricc(i) + (fric_coefs(i,1) + fric_coefs(i,4)*p ) * p
2025 . +(fric_coefs(i,2) + fric_coefs(i,3)*p) * vv + fric_coefs(i,5)*v2
2026 xmu(i) =
max(xmu(i),em30)
2029#include "vectorize.inc"
2030 DO k=1,nforth ! orthotropic friction couples
2034 ax1 = x(1,irect(3,ie)) - x(1,irect(1,ie))
2035 ay1 = x(2,irect(3,ie)) - x(2,irect(1,ie))
2036 az1 = x(3,irect(3,ie)) - x(3,irect(1,ie))
2037 ax2 = x(1,irect(4,ie)) - x(1,irect(2,ie))
2038 ay2 = x(2,irect(4,ie)) - x(2,irect(2,ie))
2039 az2 = x(3,irect(4,ie)) - x(3,irect(2,ie))
2040 ax = ay1*az2 - az1*ay2
2041 ay = az1*ax2 - ax1*az2
2042 az = ax1*ay2 - ay1*ax2
2043 area = half*sqrt(ax*ax+ay*ay+az*az)
2046 v2 = vx(i)*dir1(i,1) +vy(i)*dir1(i,2)+vz(i)*dir1(i,3)
2048 xmu(i) = fricc(i) + (fric_coefs(i,1) + fric_coefs(i,4)*p ) * p
2049 . +(fric_coefs(i,2) + fric_coefs(i,3)*p) * vv + fric_coefs(i,5)*vv*vv
2051 v2 = vx(i)*dir2(i,1) +vy(i)*dir2(i,2)+vz(i)*dir2(i,3)
2053 xmu2(i) = fricc2(i) + (fric_coefs2(i,1) + fric_coefs2(i,4)*p ) * p
2054 . +(fric_coefs2(i,2) + fric_coefs2(i,3)*p) * vv + fric_coefs2(i,5)*vv*vv
2056 xmu(i) =
max(xmu(i),em30)
2057 xmu2(i) =
max(xmu2(i),em30)
2060#include "vectorize.inc"
2063 IF(xmu(i)<=em30)
THEN
2071 IF(xmu2(i)<=em30)
THEN
2081 ELSEIF(mfrot==2)
THEN
2083#include "vectorize.inc"
2087 aa = n1(i)*vx(i) + n2(i)*vy(i) + n3(i)*vz(i)
2088 v2 = (vx(i) - n1(i)*aa)**2
2089 . + (vy(i) - n2(i)*aa)**2
2090 . + (vz(i) - n3(i)*aa)**2
2091 vv = sqrt(
max(em30,v2))
2092 ax1 = x(1,irect(3,ie)) - x(1,irect(1,ie))
2093 ay1 = x(2,irect(3,ie)) - x(2,irect(1,ie))
2094 az1 = x(3,irect(3,ie)) - x(3,irect(1,ie))
2095 ax2 = x(1,irect(4,ie)) - x(1,irect(2,ie))
2096 ay2 = x(2,irect(4,ie)) - x(2,irect(2,ie))
2097 az2 = x(3,irect(4,ie)) - x(3,irect(2,ie))
2098 ax = ay1*az2 - az1*ay2
2099 ay = az1*ax2 - ax1*az2
2100 az = ax1*ay2 - ay1*ax2
2101 area = half*sqrt(ax*ax+ay*ay+az*az)
2104 . + fric_coefs(i,1)*exp(fric_coefs(i,2)*vv)*p
2105 . + fric_coefs(i,3)*exp
2106 . + fric_coefs(i,5)*exp(fric_coefs(i,6)*vv)
2107 xmu(i) =
max(xmu(i),em30)
2110#include "vectorize.inc"
2115 ax1 = x(1,irect(3,ie)) - x(1,irect(1,ie))
2116 ay1 = x(2,irect(3,ie)) - x(2,irect(1,ie))
2117 az1 = x(3,irect(3,ie)) - x(3,irect(1,ie))
2118 ax2 = x(1,irect(4,ie)) - x(1,irect(2,ie))
2119 ay2 = x(2,irect(4,ie)) - x(2,irect(2,ie))
2120 az2 = x(3,irect(4,ie)) - x(3,irect(2,ie))
2121 ax = ay1*az2 - az1*ay2
2122 ay = az1*ax2 - ax1*az2
2123 az = ax1*ay2 - ay1*ax2
2124 area = half*sqrt(ax*ax+ay*ay+az*az)
2127 v2 = vx(i)*dir1(i,1) +vy(i)*dir1(i,2)+vz(i)*dir1(i,3)
2130 . + fric_coefs(i,1)*exp(fric_coefs(i,2)*vv)*p*p
2131 . + fric_coefs(i,3)*exp(fric_coefs(i,4)*vv)*p
2132 . + fric_coefs(i,5)*exp(fric_coefs(i,6)*vv)
2134 v2 = vx(i)*dir2(i,1) +vy(i)*dir2(i,2)+vz(i)*dir2(i,3)
2137 . + fric_coefs2(i,1)*exp(fric_coefs2(i,2)*vv)*p*p
2138 . + fric_coefs2(i,3)*exp(fric_coefs2(i,4)*vv)*p
2139 . + fric_coefs2(i,5)*exp(fric_coefs2(i,6)*vv)
2140 xmu(i) =
max(xmu(i),em30)
2141 xmu2(i) =
max(xmu2(i),em30)
2144#include "vectorize.inc"
2147 IF(xmu(i)<=em30)
THEN
2155 IF(xmu2(i)<=em30)
THEN
2165 ELSEIF (mfrot==3)
THEN
2167#include "vectorize.inc"
2170 aa = n1(i)*vx(i) + n2(i)*vy(i) + n3(i)*vz(i)
2171 v2 = (vx(i) - n1(i)*aa)**2
2172 . + (vy(i) - n2(i)*aa)**2
2173 . + (vz(i) - n3(i)*aa)**2
2174 vv = sqrt(
max(em30,v2))
2175 IF(vv>=0.AND.vv<=fric_coefs(i,5))
THEN
2176 dmu = fric_coefs(i,3)-fric_coefs(i,1)
2177 vv1 = vv / fric_coefs(i,5)
2178 xmu(i) = fric_coefs(i,1)+ dmu*vv1*(two-vv1)
2179 ELSEIF(vv>fric_coefs(i,5).AND.vv<fric_coefs(i,6))
THEN
2180 dmu = fric_coefs(i,4)-fric_coefs(i,3)
2181 vv1 = (vv - fric_coefs(i,5))/(fric_coefs(i,6)-fric_coefs(i,5))
2182 xmu(i) = fric_coefs(i,3)+ dmu * (three-two*vv1)*vv1**2
2184 dmu = fric_coefs(i,2)-fric_coefs(i,4)
2185 vv2 = (vv - fric_coefs(i,6))**2
2186 xmu(i) = fric_coefs(i,2) - dmu / (one + dmu*vv2)
2188 xmu(i) =
max(xmu(i),em30)
2191#include "vectorize.inc"
2195 v2 = vx(i)*dir1(i,1) +vy(i)*dir1(i,2)+vz(i)*dir1(i,3)
2197 IF(vv>=0.AND.vv<=fric_coefs(i,5))
THEN
2198 dmu = fric_coefs(i,3)-fric_coefs(i,1)
2199 vv1 = vv / fric_coefs(i,5)
2200 xmu(i) = fric_coefs(i,1)+ dmu*vv1*(two-vv1)
2201 ELSEIF(vv>fric_coefs(i,5).AND.vv<fric_coefs(i,6))
THEN
2202 dmu = fric_coefs(i,4)-fric_coefs(i,3)
2203 vv1 = (vv - fric_coefs(i,5))/(fric_coefs(i,6)-fric_coefs(i,5))
2204 xmu(i) = fric_coefs(i,3)+ dmu * (three-two*vv1)*vv1**2
2206 dmu = fric_coefs(i,2)-fric_coefs(i,4)
2207 vv2 = (vv - fric_coefs(i,6))**2
2208 xmu(i) = fric_coefs(i,2) - dmu / (one + dmu*vv2)
2211 v2 = vx(i)*dir2(i,1) +vy(i)*dir2(i,2)+vz(i)*dir2(i,3)
2213 IF(vv>=0.AND.vv<=fric_coefs2(i,5))
THEN
2214 dmu = fric_coefs2(i,3)-fric_coefs2(i,1)
2215 vv1 = vv / fric_coefs2(i,5)
2216 xmu2(i) = fric_coefs2(i,1)+ dmu*vv1*(two-vv1)
2217 ELSEIF(vv>fric_coefs2(i,5).AND.vv<fric_coefs2(i,6))
THEN
2218 dmu = fric_coefs2(i,4)-fric_coefs2(i,3)
2219 vv1 = (vv - fric_coefs2(i,5))/(fric_coefs2(i,6)-fric_coefs2(i,5))
2220 xmu2(i) = fric_coefs2(i,3)+ dmu * (three-two*vv1)*vv1**2
2222 dmu = fric_coefs2(i,2)-fric_coefs2(i,4)
2223 vv2 = (vv - fric_coefs2(i,6))**2
2224 xmu2(i) = fric_coefs2(i,2) - dmu / (one + dmu*vv2)
2226 xmu(i) =
max(xmu(i),em30)
2227 xmu2(i) =
max(xmu2(i),em30)
2230#include "vectorize.inc"
2233 IF(xmu(i)<=em30)
THEN
2241 IF(xmu2(i)<=em30)
THEN
2251 ELSEIF(mfrot==4)
THEN
2253#include "vectorize.inc"
2256 aa = n1(i)*vx(i) + n2(i)*vy(i) + n3(i)*vz(i)
2257 v2 = (vx(i) - n1(i)*aa)**2
2258 . + (vy(i) - n2(i)*aa)**2
2259 . + (vz(i) - n3(i)*aa)**2
2260 vv = sqrt(
max(em30,v2))
2261 xmu(i) = fric_coefs(i,1)
2262 . + (fricc(i)-fric_coefs(i,1))*exp(-fric_coefs(i,2)*vv)
2263 xmu(i) =
max(xmu(i),em30)
2266#include "vectorize.inc"
2270 v2 = vx(i)*dir1(i,1) +vy(i)*dir1(i,2)+vz(i)*dir1(i,3)
2273 . + (fric_coefs(i,1)-fricc(i))*exp(-fric_coefs(i,2)*vv)
2275 v2 = vx(i)*dir2(i,1) +vy(i)*dir2(i,2)+vz(i)*dir2(i,3)
2277 xmu2(i) = fric_coefs2(i,1)
2278 . + (fricc2(i)-fric_coefs2(i,1))*exp(-fric_coefs2(i,2)*vv)
2280 xmu(i) =
max(xmu(i),em30)
2281 xmu2(i) =
max(xmu2(i),em30)
2284#include "vectorize.inc"
2287 IF(xmu(i)<=em30)
THEN
2295 IF(xmu2(i)<=em30)
THEN
2320 IF(iorthfric ==0 )
THEN
2334 fx = stif0(i)*vx(i)*dt12
2335 fy = stif0(i)*vy(i)*dt12
2336 fz = stif0(i)*vz(i)*dt12
2337 fx = cand_fx(index(i)) +
alpha*fx
2338 fy = cand_fy(index(i)) +
alpha*fy
2339 fz = cand_fz(index(i)) +
alpha*fz
2340 ftn = fx*n1(i) + fy*n2
2344 ft = fx*fx + fy*fy + fz*fz
2346 fn = fxi(i)**2+fyi(i)**2+fzi(i)**2
2347 beta =
min(one,xmu(i)*sqrt(fn/ft))
2351 cand_fx(index(i)) = fxt(i)
2352 cand_fy(index(i)) = fyt(i)
2353 cand_fz(index(i)) = fzt(i)
2356 fxi(i)=fxi(i) + fxt(i)
2357 fyi(i)=fyi(i) + fyt(i)
2358 fzi(i)=fzi(i) + fzt(i)
2362 IF( intth > 0 .AND.beta/=zero)
THEN
2363 efrict(i) = (fx-fxt(i))*fxt(i) + (fy-fyt(i))*fyt(i) +
2364 . (fz-fzt(i))*fzt(i)
2365 efrict(i) = efrict(i)/stif0(i)
2366 qfrict = qfrict + efrict(i)
2368 efric_l(i) = dt1*(vx(i)*fxt(i)+vy(i)*fyt(i)+vz(i)*fzt(i))
2369 econvt = econvt + efric_l(i)
2377 fx = stif0(i)*vx(i)*dt12
2378 fy = stif0(i)*vy(i)*dt12
2379 fz = stif0(i)*vz(i)*dt12
2380 fx = cand_fx(index(i)) +
alpha*fx
2381 fy = cand_fy(index(i)) +
alpha*fy
2382 fz = cand_fz(index(i)) +
alpha*fz
2383 ftn = fx*n1(i) + fy*n2(i) + fz*n3(i)
2387 ft = fx*fx + fy*fy + fz*fz
2389 fn = fxi(i)**2+fyi(i)**2+fzi(i)**2
2390 beta =
min(one,xmu(i)*sqrt(fn/ft))
2394 fxi(i)=fxi(i) + fxt(i)
2395 fyi(i)=fyi(i) + fyt(i)
2396 fzi(i)=fzi(i) + fzt(i)
2417 v2 = vx(i)**2 + vy(i)**2 + vz(i)**2
2418 vis2(i) = viscffric(i) * vis2(i)
2419 fm2 = (xmu(i)*fni(i))**2
2421 a2 =
min(f2,fm2) /
max(em30,f2)
2422 aa = sqrt(a2 * vis2(i))
2426 fxt(i) =
alpha*fx + alphi*cand_fx(index(i))
2427 fyt(i) =
alpha*fy + alphi*cand_fy(index(i))
2428 fzt(i) =
alpha*fz + alphi*cand_fz(index(i))
2429 cand_fx(index(i)) = fxt(i)
2430 cand_fy(index(i)) = fyt(i)
2431 cand_fz(index(i)) = fzt(i)
2434 fxi(i) = fxi(i) + fxt(i)
2435 fyi(i) = fyi(i) + fyt(i)
2436 fzi(i) = fzi(i) + fzt(i)
2442 efrict(i) = dt1*(fxt(i)*vx(i) + fyt(i)*vy(i) + fzt(i)*vz(i))
2443 qfrict = qfrict + efrict(i)
2445 efric_l(i) = dt1*(vx
2459 v2 = vx(i)**2 + vy(i)**2 + vz(i)**2
2460 vis2(i) = viscffric(i) * vis2(i)
2461 fm2 = (xmu(i)*fni(i))**2
2463 a2 =
min(f2,fm2) /
max(em30,f2)
2464 aa = sqrt(a2 * vis2(i))
2469 fxi(i)=fxi(i) + fxt(i)
2470 fyi(i)=fyi(i) + fyt(i)
2471 fzi(i)=fzi(i) + fzt(i)
2477 efrict(i) = aa * v2 * dt1
2478 qfrict = qfrict + efrict(i)
2480 efric_l(i) = aa * v2 * dt1
2481 econvt = econvt + efric_l(i)
2500#include "vectorize.inc"
2503 fx = stif0(i)*vx(i)*dt12
2504 fy = stif0(i)*vy(i)*dt12
2505 fz = stif0(i)*vz(i)*dt12
2506 fx = cand_fx(index(i)) +
alpha*fx
2507 fy = cand_fy(index(i)) +
alpha*fy
2508 fz = cand_fz(index(i)) +
alpha*fz
2509 ftn = fx*n1(i) + fy*n2(i) + fz*n3(i)
2513 ft = fx*fx + fy*fy + fz*fz
2515 fn = fxi(i)**2+fyi(i)**2+fzi(i)**2
2517 beta =
min(one,xmu(i)*sqrt(fn/ft))
2523 cand_fx(index(i)) = fxt(i)
2524 cand_fy(index(i)) = fyt(i)
2525 cand_fz(index(i)) = fzt(i)
2528 fxi(i)=fxi(i) + fxt(i)
2529 fyi(i)=fyi(i) + fyt(i)
2530 fzi(i)=fzi(i) + fzt(i)
2536 IF( intth > 0 .AND.beta/=zero)
THEN
2537 efrict(i) = (fx-fxt(i))*fxt(i) + (fy-fyt(i))*fyt(i) +
2538 . (fz-fzt(i))*fzt(i)
2539 efrict(i) = efrict(i)/stif0(i)
2540 qfrict = qfrict + efrict(i)
2542 efric_l(i)= dt1*(vx(i)*fxt(i)+vy(i)*fyt(i)+vz(i)*fzt(i))
2543 econvt = econvt + efric_l(i)
2546#include "vectorize.inc"
2549 fx = stif0(i)*vx(i)*dt12
2550 fy = stif0(i)*vy(i)*dt12
2551 fz = stif0(i)*vz(i)*dt12
2552 fx = cand_fx(index(i)) +
alpha*fx
2553 fy = cand_fy(index(i)) +
alpha*fy
2554 fz = cand_fz(index(i)) +
alpha*fz
2556 ftn = fx*n1(i) + fy*n2(i) + fz*n3(i)
2562 ftt1= fx*dir1(i,1) + fy*dir1(i,2) + fz*dir1(i,3)
2563 ftt2= fx*dir2(i,1) + fy*dir2(i,2) + fz*dir2(i,3)
2565 ft = ftt1*ftt1*an(k) + ftt2*ftt2*bn(k)
2567 fn = fxi(i)**2+fyi(i)**2+fzi(i)**2
2575 ELSEIF(beta > 1)
THEN
2585 nep =nep1*nep1+nep2*nep2
2588 ep=nep1*ftt1+nep2*ftt2
2590 ans=(ep-sqrt(ep))/
max(em20,nep)
2591 nep1 =nep1/
max(em20,nep)
2592 nep2 =nep2/
max(em20,nep)
2598 alphaf = atan(c22/c11)
2600 signc = ftt1/
max(em20,abs(ftt1))
2601 csa = signc*abs(cos(alphaf))
2602 signc = ftt2/
max(em20,abs(ftt2))
2603 sna = signc*abs(sin(alphaf))
2605 ft = sqrt(fn / (csa*csa*an(k) + sna*sna*bn(k)))
2609 fxt(i) = ftt1 * dir1(i,1) + ftt2 * dir2(i,1)
2610 fyt(i) = ftt1 * dir1(i,2) + ftt2 * dir2(i,2)
2611 fzt(i) = ftt1 * dir1(i,3) + ftt2 * dir2(i,3)
2614 cand_fx(index(i)) = fxt(i)
2615 cand_fy(index(i)) = fyt(i)
2616 cand_fz(index(i)) = fzt(i)
2619 fxi(i)=fxi(i) + fxt(i)
2620 fyi(i)=fyi(i) + fyt(i)
2621 fzi(i)=fzi(i) + fzt(i)
2627 IF( intth > 0 .AND.beta/=zero)
THEN
2628 efrict(i) = (fx-fxt(i))*fxt(i) + (fy-fyt
2629 . (fz-fzt(i))*fzt(i)
2630 efrict(i) = efrict(i)/stif0(i)
2631 qfrict = qfrict + efrict(i)
2633 efric_l(i)= dt1*(vx(i)*fxt(i)+vy(i)*fyt(i)+vz(i)*fzt(i))
2634 econvt = econvt + efric_l(i)
2639#include "vectorize.inc"
2642 fx = stif0(i)*vx(i)*dt12
2643 fy = stif0(i)*vy(i)*dt12
2644 fz = stif0(i)*vz(i)*dt12
2645 fx = cand_fx(index(i)) +
alpha*fx
2646 fy = cand_fy(index(i)) +
alpha*fy
2647 fz = cand_fz(index(i)) +
alpha*fz
2648 ftn = fx*n1(i) + fy*n2(i) + fz*n3(i)
2652 ft = fx*fx + fy*fy + fz*fz
2654 fn = fxi(i)**2+fyi(i)**2+fzi(i)**2
2655 beta =
min(one,xmu(i)*sqrt(fn/ft))
2659 fxi(i)=fxi(i) + fxt(i)
2660 fyi(i)=fyi(i) + fyt(i)
2661 fzi(i)=fzi(i) + fzt(i)
2665#include "vectorize.inc"
2668 fx = stif0(i)*vx(i)*dt12
2669 fy = stif0(i)*vy(i)*dt12
2670 fz = stif0(i)*vz(i)*dt12
2671 fx = cand_fx(index(i)) +
alpha*fx
2672 fy = cand_fy(index(i)) +
alpha*fy
2673 fz = cand_fz(index(i)) +
alpha*fz
2675 ftn = fx*n1(i) + fy*n2(i) + fz*n3(i)
2681 ftt1= fx*dir1(i,1) + fy*dir1(i,2) + fz*dir1(i,3)
2682 ftt2= fx*dir2(i,1) + fy*dir2(i,2) + fz*dir2(i
2683 ft = ftt1*ftt1*an(k) + ftt2*ftt2*bn(k)
2685 fn = fxi(i)**2+fyi(i)**2+fzi(i)**2
2693 ELSEIF(beta > 1)
THEN
2703 nep =nep1*nep1+nep2*nep2
2706 ep=nep1*ftt1+nep2*ftt2
2709 nep1 =nep1/
max(em20,nep)
2710 nep2 =nep2/
max(em20,nep)
2716 alphaf = atan(c22/c11)
2718 signc = ftt1/
max(em20,abs(ftt1))
2719 csa = signc*abs(cos(alphaf))
2720 signc = ftt2/
max(em20,abs(ftt2))
2721 sna = signc*abs(sin(alphaf))
2723 ft = sqrt(fn / (csa*csa*an(k) + sna*sna*bn(k)))
2727 fxt(i) = ftt1 * dir1(i,1) + ftt2 * dir2(i,1)
2728 fyt(i) = ftt1 * dir1(i,2) + ftt2 * dir2(i
2729 fzt(i) = ftt1 * dir1(i,3) + ftt2 * dir2(i,3)
2733 fxi(i)=fxi(i) + fxt(i)
2734 fyi(i)=fyi(i) + fyt(i)
2735 fzi(i)=fzi(i) + fzt(i)
2751#include "vectorize.inc"
2760 v2 = vx(i)**2 + vy(i)**2 + vz(i)**2
2761 vis2(i) = viscffric(i) * vis2(i)
2762 fm2 = (xmu(i)*fni(i))**2
2764 a2 =
min(f2,fm2) /
max(em30,f2)
2765 aa = sqrt(a2 * vis2(i))
2769 fxt(i) =
alpha*fx + alphi*cand_fx(index(i))
2770 fyt(i) =
alpha*fy + alphi*cand_fy(index(i))
2771 fzt(i) =
alpha*fz + alphi*cand_fz(index(i))
2772 cand_fx(index(i)) = fxt(i)
2773 cand_fy(index(i)) = fyt(i)
2774 cand_fz(index(i)) = fzt(i)
2777 fxi(i) = fxi(i) + fxt(i)
2778 fyi(i) = fyi(i) + fyt(i)
2779 fzi(i) = fzi(i) + fzt(i)
2785 efrict(i) = dt1*(fxt(i)*vx(i) + fyt(i)*vy(i) + fzt(i)*vz(i))
2786 qfrict = qfrict + efrict(i)
2788 efric_l(i)= dt1*(vx(i)*fxt(i)+vy(i)*fyt(i)+vz(i)*fzt(i))
2789 econvt = econvt + efric_l(i)
2792#include "vectorize.inc"
2802 vis2(i) = viscffric(i) * vis2(i)
2809 ftt1= fx*dir1(i,1) + fy*dir1(i,2) + fz*dir1(i,3)
2810 ftt2= fx*dir2(i,1) + fy*dir2(i,2) + fz*dir2(i,3)
2811 ft = ftt1*ftt1*an(k) + ftt2*ftt2*bn(k)
2821 ELSEIF(beta > 1)
THEN
2831 nep =nep1*nep1+nep2*nep2
2834 ep=nep1*ftt1+nep2*ftt2
2836 ans=(ep-sqrt(ep))/
max(em20,nep)
2837 nep1 =nep1/
max(em20,nep)
2838 nep2 =nep2/
max(em20,nep)
2844 alphaf = atan(c22/c11)
2846 signc = ftt1/
max(em20,abs(ftt1))
2847 csa = signc*abs(cos(alphaf))
2848 signc = ftt2/
max(em20,abs(ftt2))
2849 sna = signc*abs(sin(alphaf))
2851 ft = fni(i) /sqrt( (csa*csa*an(k) + sna*sna*bn(k)))
2855 fxt(i) = ftt1 * dir1(i,1) + ftt2 * dir2(i,1)
2856 fyt(i) = ftt1 * dir1(i,2) + ftt2 * dir2(i,2)
2857 fzt(i) = ftt1 * dir1(i,3) + ftt2 * dir2(i,3)
2861 fxt(i) =
alpha*fxt(i) + alphi*cand_fx(index(i))
2862 fyt(i) =
alpha*fyt(i) + alphi*cand_fy(index(i))
2863 fzt(i) =
alpha*fzt(i) + alphi*cand_fz(index(i))
2864 cand_fx(index(i)) = fxt(i)
2865 cand_fy(index(i)) = fyt(i)
2866 cand_fz(index(i)) = fzt(i)
2869 fxi(i) = fxi(i) + fxt(i)
2870 fyi(i) = fyi(i) + fyt(i)
2871 fzi(i) = fzi(i) + fzt(i)
2877 efrict(i) = dt1*(fxt(i)*vx(i) + fyt(i)*vy(i) + fzt(i)*vz(i))
2878 qfrict = qfrict + efrict(i)
2880 efric_l(i)= dt1*(vx(i)*fxt(i)+vy(i)*fyt(i)+vz(i)*fzt(i))
2881 econvt = econvt + efric_l(i)
2890#include "vectorize.inc"
2899 v2 = vx(i)**2 + vy(i)**2 + vz(i)**2
2900 vis2(i) = viscffric(i) * vis2(i)
2901 fm2 = (xmu(i)*fni(i))**2
2903 a2 =
min(f2,fm2) /
max(em30,f2)
2904 aa = sqrt(a2 * vis2(i))
2909 fxi(i) = fxi(i) + fxt(i)
2910 fyi(i) = fyi(i) + fyt(i)
2911 fzi(i) = fzi(i) + fzt(i)
2917 efrict(i) = aa * v2 * dt1
2918 qfrict = qfrict + efrict(i)
2920 efric_l(i)= aa * v2 * dt1
2921 econvt = econvt + efric_l(i)
2924#include "vectorize.inc"
2933 vis2(i) = viscffric(i) * vis2(i)
2940 ftt1= fx*dir1(i,1) + fy*dir1(i,2) + fz*dir1(i,3)
2941 ftt2= fx*dir2(i,1) + fy*dir2(i,2) + fz*dir2(i,3)
2942 ft = ftt1*ftt1*an(k) + ftt2*ftt2*bn(k)
2952 ELSEIF(beta > 1)
THEN
2962 nep =nep1*nep1+nep2*nep2
2965 ep=nep1*ftt1+nep2*ftt2
2967 ans=(ep-sqrt(ep))/
max(em20,nep)
2968 nep1 =nep1/
max(em20,nep)
2969 nep2 =nep2/
max(em20,nep)
2975 alphaf = atan(c22/c11)
2977 signc = ftt1/
max(em20,abs(ftt1))
2978 csa = signc*abs(cos(alphaf))
2979 signc = ftt2/
max(em20,abs(ftt2))
2980 sna = signc*abs(sin(alphaf))
2982 ft = fni(i) /sqrt( (csa*csa*an(k) + sna*sna*bn(k)))
2986 fxt(i) = ftt1 * dir1(i,1) + ftt2 * dir2(i,1)
2987 fyt(i) = ftt1 * dir1(i,2) + ftt2 * dir2(i,2)
2988 fzt(i) = ftt1 * dir1(i,3) + ftt2 * dir2(i,3)
2994 fxi(i)=fxi(i) + fxt(i)
2995 fyi(i)=fyi(i) + fyt(i)
2996 fzi(i)=fzi(i) + fzt(i)
3002 efrict(i) = aa * v2 * dt1
3003 qfrict = qfrict + efrict(i)
3005 efric_l(i)= aa * v2 * dt1
3006 econvt = econvt + efric_l(i)
3015 DO i=jlt-jlt_tied+1,jlt
3016 fxt(i)= t1x(i)*ft1(i) + t2x(i)*ft2(i)
3017 fyt(i)= t1y(i)*ft1(i) + t2y(i)*ft2(i)
3018 fzt(i)= t1z(i)*ft1(i) + t2z(i)*ft2(i
3020 fxi(i)=fxi(i) + fxt(i)
3021 fyi(i)=fyi(i) + fyt(i)
3022 fzi(i)=fzi(i) + fzt(i)
3026 IF((anim_v(12)+outp_v(12)+h3d_data%N_VECT_PCONT>0.AND.
3027 . ((tt>=tanim .AND. tt<=tanim_stop).OR.tt>=toutp.OR.(tt>=h3d_data%TH3D.AND.tt<=h3d_data%TH3D_STOP).OR.
3028 . (manim>=4.AND.manim<=15).OR.h3d_data%MH3D/=0))
3029 . .OR.h3d_data%N_VECT_PCONT_MAX>0)
THEN
3031#include "lockon.inc"
3033 ftcont(1,ix1(i)) =ftcont(1,ix1(i)) + fxt(i)*h1(i)
3034 ftcont(2,ix1(i)) =ftcont(2,ix1(i)) + fyt(i)*h1(i)
3035 ftcont(3,ix1(i)) =ftcont(3,ix1(i)) + fzt(i)*h1(i)
3036 ftcont(1,ix2(i)) =ftcont(1,ix2(i)) + fxt(i)*h2(i)
3037 ftcont(2,ix2(i)) =ftcont(2,ix2(i)) + fyt(i)*h2(i)
3038 ftcont(3,ix2(i)) =ftcont(3,ix2(i)) + fzt(i)*h2(i)
3039 ftcont(1,ix3(i)) =ftcont(1,ix3(i)) + fxt(i)*h3(i)
3040 ftcont(2,ix3(i)) =ftcont(2,ix3(i)) + fyt(i)*h3(i)
3041 ftcont(3,ix3(i)) =ftcont(3,ix3(i)) + fzt(i)*h3(i)
3042 ftcont(1,ix4(i)) =ftcont(1,ix4(i)) + fxt(i)*h4(i)
3043 ftcont(2,ix4(i)) =ftcont(2,ix4(i)) + fyt(i)*h4(i)
3044 ftcont(3,ix4(i)) =ftcont(3,ix4(i)) + fzt(i)*h4(i)
3048 ftcont(1,jg)=ftcont(1,jg)- fxt(i)
3049 ftcont(2,jg)=ftcont(2,jg)- fyt(i)
3050 ftcont(3,jg)=ftcont(3,jg)- fzt(i)
3058#include "lockoff.inc"
3068 impx=forc_sign*fxt(i)*dt12
3069 impy=forc_sign*fyt(i)*dt12
3070 impz=forc_sign*fzt(i)*dt12
3075 impx=forc_sign*fxi(i)*dt12
3076 impy=forc_sign*fyi(i)*dt12
3077 impz=forc_sign*fzi(i)*dt12
3078 fsav12=fsav12+abs(impx)
3079 fsav13=fsav13+abs(impy)
3080 fsav14=fsav14+abs(impz)
3081 fsav15=fsav15+sqrt(impx*impx+impy*impy+impz*impz)
3082 xp(i)=xi(i)+pene(i)*n1(i)
3083 yp(i)=yi(i)+pene(i)*n2(i)
3084 zp(i)=zi(i)+pene(i)*n3(i)
3085 fsav22=fsav22+yp(i)*impz-zp(i)*impy
3086 fsav23=fsav23+zp(i)*impx-xp(i)*impz
3087 fsav24=fsav24+xp(i)*impy-yp(i)*impx
3089#include "lockon.inc"
3090 fsav(4) = fsav(4) + fsav4
3091 fsav(5) = fsav(5) + fsav5
3092 fsav(6) = fsav(6) + fsav6
3093 fsav(12) = fsav(12) + fsav12
3094 fsav(13) = fsav(13) + fsav13
3095 fsav(14) = fsav(14) + fsav14
3096 fsav(15) = fsav(15) + fsav15
3097 fsav(22) = fsav(22) + fsav22
3098 fsav(23) = fsav(23) + fsav23
3099 fsav(24) = fsav(24) + fsav24
3100 fsav(25) = fsav(25) + (fheats+fheatm)*qfrict
3101 fsav(26) = fsav(26) + econtt
3102 fsav(27) = fsav(27) + econvt- (fheats+fheatm)*qfrict
3103 fsav(28) = fsav(28) + econtdt
3104#include "lockoff.inc"
3106 IF(isensint(1)/=0)
THEN
3108 fsavparit(1,4,i+nft) = forc_sign*fxt(i)
3109 fsavparit(1,5,i+nft) = forc_sign*fyt(i)
3110 fsavparit(1,6,i+nft) = forc_sign*fzt(i)
3124 DO WHILE(jj<addsubs(in+1))
3126 itypsub = typsub(jsub)
3128 IF(itypsub == 1 )
THEN
3131 DO WHILE((ksub<=jsub).AND.(kk<addsubm(ie+1)))
3134 impx=forc_sign*fxt(i)*dt12
3135 impy=forc_sign*fyt(i)*dt12
3136 impz=forc_sign*fzt(i)*dt12
3138 fsavsub1(4,jsub)=fsavsub1(4,jsub)+impx
3139 fsavsub1(5,jsub)=fsavsub1(5,jsub)+impy
3140 fsavsub1(6,jsub)=fsavsub1(6,jsub)+impz
3143 impx=forc_sign*fxi(i)*dt12
3144 impy=forc_sign*fyi(i)*dt12
3145 impz=forc_sign*fzi(i)*dt12
3146 fsavsub1(12,jsub)=fsavsub1(12,jsub)+abs(impx)
3147 fsavsub1(13,jsub)=fsavsub1(13,jsub)+abs(impy)
3148 fsavsub1(14,jsub)=fsavsub1(14,jsub)+abs(impz)
3150 IF(isensint(jsub+1)/=0)
THEN
3151 fsavparit(jsub+1,4,i+nft) = forc_sign*fxt(i)
3152 fsavparit(jsub+1,5,i+nft) = forc_sign*fyt(i)
3153 fsavparit(jsub+1,6,i+nft) = forc_sign*fzt(i)
3156 fsavsub1(15,jsub)= fsavsub1(15,jsub)
3157 . +sqrt(impx*impx+impy*impy+impz*impz)
3158 fsavsub1(22,jsub)=fsavsub1(22,jsub)
3159 . +yp(i)*impz-zp(i)*impy
3160 fsavsub1(23,jsub)=fsavsub1(23,jsub)
3161 . +zp(i)*impx-xp(i)*impz
3162 fsavsub1(24,jsub)=fsavsub1(24,jsub
3163 . +xp(i)*impy-yp(i)*impx
3172 ELSEIF(itypsub == 2 )
THEN
3175 impx=forc_sign*fxt(i)*dt12
3176 impy=forc_sign*fyt(i)*dt12
3177 impz=forc_sign*fzt(i)*dt12
3179 fsavsub1(4,jsub)=fsavsub1(4,jsub)+impx
3180 fsavsub1(5,jsub)=fsavsub1(5,jsub)+impy
3181 fsavsub1(6,jsub)=fsavsub1(6,jsub)+impz
3184 impx=forc_sign*fxi(i)*dt12
3185 impy=forc_sign*fyi(i)*dt12
3186 impz=forc_sign*fzi(i)*dt12
3187 fsavsub1(12,jsub)=fsavsub1(12,jsub)+abs(impx)
3188 fsavsub1(13,jsub)=fsavsub1(13,jsub)+abs(impy)
3189 fsavsub1(14,jsub)=fsavsub1(14,jsub)+abs(impz)
3191 IF(isensint(jsub+1)/=0)
THEN
3192 fsavparit(jsub+1,4,i+nft) = forc_sign*fxt(i)
3193 fsavparit(jsub+1,5,i+nft) = forc_sign*fyt(i)
3194 fsavparit(jsub+1,6,i+nft) = forc_sign*fzt(i)
3197 fsavsub1(15,jsub)= fsavsub1(15,jsub)
3198 . +sqrt(impx*impx+impy*impy+impz*impz)
3199 fsavsub1(22,jsub)=fsavsub1(22,jsub)
3200 . +yp(i)*impz-zp(i)*impy
3201 fsavsub1(23,jsub)=fsavsub1(23,jsub)
3202 . +zp(i)*impx-xp(i)*impz
3203 fsavsub1(24,jsub)=fsavsub1(24,jsub)
3204 . +xp(i)*impy-yp(i)*impx
3208 ELSEIF(itypsub == 3 )
THEN
3211 iss2 = bitget(inflg_subs(jj),0)
3212 iss1 = bitget(inflg_subs(jj),1)
3214 DO WHILE((ksub<=jsub).AND.(kk<addsubm(ie+1)))
3215 ims2 = bitget(inflg_subm(kk),0)
3216 ims1 = bitget(inflg_subm(kk),1)
3219 IF(.NOT.((ims1 == 1 .AND. iss2 == 1).OR.
3220 . (ims2 == 1 .AND. iss1 == 1)))
THEN
3226 impx=forc_sign*fxt(i)*dt12
3227 impy=forc_sign*fyt(i)*dt12
3228 impz=forc_sign*fzt(i)*dt12
3231 fsavsub1(4,jsub)=fsavsub1(4,jsub)-impx
3232 fsavsub1(5,jsub)=fsavsub1(5,jsub)-impy
3233 fsavsub1(6,jsub)=fsavsub1(6,jsub)-impz
3235 fsavsub1(4,jsub)=fsavsub1(4,jsub)+impx
3236 fsavsub1(5,jsub)=fsavsub1(5,jsub)+impy
3237 fsavsub1(6,jsub)=fsavsub1(6,jsub)+impz
3240 impx=forc_sign*fxi(i)*dt12
3241 impy=forc_sign*fyi(i)*dt12
3242 impz=forc_sign*fzi(i)*dt12
3243 fsavsub1(12,jsub)=fsavsub1(12,jsub)+abs(impx)
3244 fsavsub1(13,jsub)=fsavsub1(13,jsub)+abs(impy)
3245 fsavsub1(14,jsub)=fsavsub1(14,jsub)+abs(impz)
3247 IF(isensint(jsub+1)/=0)
THEN
3249 fsavparit(jsub+1,4,i+nft) = -forc_sign*fxt(i)
3250 fsavparit(jsub+1,5,i+nft) = -forc_sign*fyt(i)
3251 fsavparit(jsub+1,6,i+nft) = -forc_sign*fzt(i)
3253 fsavparit(jsub+1,4,i+nft) = forc_sign*fxt(i)
3254 fsavparit(jsub+1,5,i+nft) = forc_sign*fyt(i)
3255 fsavparit(jsub+1,6,i+nft) = forc_sign*fzt(i)
3259 fsavsub1(15,jsub)= fsavsub1(15,jsub)
3260 . +sqrt(impx*impx+impy*impy+impz*impz)
3261 fsavsub1(22,jsub)=fsavsub1(22,jsub)
3262 . +yp(i)*impz-zp(i)*impy
3263 fsavsub1(23,jsub)=fsavsub1(23,jsub)
3264 . +zp(i)*impx-xp(i)*impz
3265 fsavsub1(24,jsub)=fsavsub1(24,jsub)
3266 . +xp(i)*impy-yp(i)*impx
3281 DO WHILE(kk<addsubm(ie+1))
3285 itypsub = typsub(ksub)
3286 IF(itypsub == 2 )
THEN
3287 impx=-forc_sign*fxt(i)*dt12
3288 impy=-forc_sign*fyt(i)*dt12
3289 impz=-forc_sign*fzt(i)*dt12
3291 fsavsub1(4,ksub)=fsavsub1(4,ksub)+impx
3292 fsavsub1(5,ksub)=fsavsub1(5,ksub)+impy
3293 fsavsub1(6,ksub)=fsavsub1(6,ksub)+impz
3298 fsavsub1(12,ksub)=fsavsub1(12,ksub)+abs(impx)
3299 fsavsub1(13,ksub)=fsavsub1(13,ksub)+abs(impy)
3300 fsavsub1(14,ksub)=fsavsub1(14,ksub)+abs(impz)
3302 IF(isensint(ksub+1)/=0)
THEN
3303 fsavparit(ksub+1,4,i+nft) = -forc_sign*fxt(i)
3304 fsavparit(ksub+1,5,i+nft) = -forc_sign*fyt(i)
3305 fsavparit(ksub+1,6,i+nft) = -forc_sign*fzt(i)
3308 fsavsub1(15,ksub)= fsavsub1(15,ksub)
3309 . +sqrt(impx*impx+impy*impy+impz*impz)
3310 fsavsub1(22,ksub)=fsavsub1(22,ksub)
3311 . +yp(i)*impz-zp(i)*impy
3312 fsavsub1(23,ksub)=fsavsub1(23,ksub)
3313 . +zp(i)*impx-xp(i)*impz
3314 fsavsub1(24,ksub)=fsavsub1(24,ksub)
3315 . +xp(i)*impy-yp(i)*impx
3332 itypsub = typsub(jsub)
3334 IF(itypsub == 1 )
THEN
3337 DO WHILE((ksub<=jsub).AND.(kk<addsubm(ie+1)))
3340 impx=forc_sign*fxt(i)*dt12
3341 impy=forc_sign*fyt(i)*dt12
3342 impz=forc_sign*fzt(i)*dt12
3344 fsavsub1(4,jsub)=fsavsub1(4,jsub)+impx
3345 fsavsub1(5,jsub)=fsavsub1(5,jsub)+impy
3349 impx=forc_sign*fxi(i)*dt12
3350 impy=forc_sign*fyi(i)*dt12
3351 impz=forc_sign*fzi(i)*dt12
3352 fsavsub1(12,jsub)=fsavsub1
3353 fsavsub1(13,jsub)=fsavsub1(13,jsub)+abs(impy)
3354 fsavsub1(14,jsub)=fsavsub1(14,jsub)+abs(impz)
3356 IF(isensint(jsub+1)/=0)
THEN
3357 fsavparit(jsub+1,4,i+nft) = forc_sign*fxt(i
3358 fsavparit(jsub+1,5,i+nft) = forc_sign*fyt(i)
3359 fsavparit(jsub+1,6,i+nft) = forc_sign*fzt(i)
3362 fsavsub1(15,jsub)= fsavsub1(15,jsub)
3363 . +sqrt(impx*impx+impy*impy+impz*impz)
3364 fsavsub1(22,jsub)=fsavsub1(22,jsub)
3365 . +yp(i)*impz-zp(i)*impy
3366 fsavsub1(23,jsub)=fsavsub1(23,jsub)
3367 . +zp(i)*impx-xp(i)*impz
3368 fsavsub1(24,jsub)=fsavsub1(24,jsub)
3369 . +xp(i)*impy-yp(i)*impx
3378 ELSEIF(itypsub == 2 )
THEN
3381 impx=forc_sign*fxt(i)*dt12
3382 impy=forc_sign*fyt(i)*dt12
3383 impz=forc_sign*fzt(i)*dt12
3385 fsavsub1(4,jsub)=fsavsub1(4,jsub)+impx
3386 fsavsub1(5,jsub)=fsavsub1(5,jsub)+impy
3387 fsavsub1(6,jsub)=fsavsub1(6,jsub)+impz
3390 impx=forc_sign*fxi(i)*dt12
3391 impy=forc_sign*fyi(i)*dt12
3392 impz=forc_sign*fzi(i)*dt12
3393 fsavsub1(12,jsub)=fsavsub1(12,jsub)+abs(impx)
3394 fsavsub1(13,jsub)=fsavsub1(13,jsub)+abs(impy)
3395 fsavsub1(14,jsub)=fsavsub1(14,jsub)+abs(impz)
3397 IF(isensint(jsub+1)/=0)
THEN
3398 fsavparit(jsub+1,4,i+nft) = forc_sign*fxt(i)
3399 fsavparit(jsub+1,5,i+nft) = forc_sign*fyt(i)
3400 fsavparit(jsub+1,6,i+nft) = forc_sign*fzt(i)
3403 fsavsub1(15,jsub)= fsavsub1(15,jsub)
3404 . +sqrt(impx*impx+impy*impy+impz*impz)
3405 fsavsub1(22,jsub)=fsavsub1(22,jsub)
3406 . +yp(i)*impz-zp(i)*impy
3407 fsavsub1(23,jsub)=fsavsub1(23,jsub)
3408 . +zp(i)*impx-xp(i)*impz
3409 fsavsub1(24,jsub)=fsavsub1(24,jsub)
3410 . +xp(i)*impy-yp(i)*impx
3413 ELSEIF(itypsub == 3 )
THEN
3418 DO WHILE((ksub<=jsub).AND.(kk<addsubm(ie+1)))
3419 ims2 = bitget(inflg_subm(kk),0)
3420 ims1 = bitget(inflg_subm(kk),1)
3422 IF(.NOT.((ims1 == 1 .AND. iss2 == 1).OR.
3423 . (ims2 == 1 .AND. iss1 == 1)))
THEN
3429 impx=forc_sign*fxt(i)*dt12
3430 impy=forc_sign*fyt(i)*dt12
3431 impz=forc_sign*fzt(i)*dt12
3434 fsavsub1(4,jsub)=fsavsub1(4,jsub)-impx
3435 fsavsub1(5,jsub)=fsavsub1(5,jsub)-impy
3436 fsavsub1(6,jsub)=fsavsub1(6,jsub)-impz
3438 fsavsub1(4,jsub)=fsavsub1(4,jsub)+impx
3439 fsavsub1(5,jsub)=fsavsub1(5,jsub)+impy
3440 fsavsub1(6,jsub)=fsavsub1(6,jsub)+impz
3446 fsavsub1(12,jsub)=fsavsub1(12,jsub)+abs(impx)
3447 fsavsub1(13,jsub)=fsavsub1(13,jsub)+abs(impy)
3448 fsavsub1(14,jsub)=fsavsub1(14,jsub)+abs(impz)
3450 IF(isensint(jsub+1)/=0)
THEN
3452 fsavparit(jsub+1,4,i) = forc_sign
3453 fsavparit(jsub+1,5,i) = forc_sign*fyt(i)
3456 fsavparit(jsub+1,4,i) = -forc_sign*fxt(i)
3457 fsavparit(jsub+1,5,i) = -forc_sign*fyt(i)
3458 fsavparit(jsub+1,6,i) = -forc_sign*fzt(i)
3462 fsavsub1(15,jsub)= fsavsub1(15,jsub)
3463 . +sqrt(impx*impx+impy*impy+impz*impz)
3464 fsavsub1(22,jsub)=fsavsub1(22,jsub)
3465 . +yp(i)*impz-zp(i)*impy
3466 fsavsub1(23,jsub)=fsavsub1(23,jsub)
3467 . +zp(i)*impx-xp(i)*impz
3468 fsavsub1(24,jsub)=fsavsub1(24,jsub)
3469 . +xp(i)*impy-yp(i)*impx
3481#include "lockon.inc"
3485 fsavsub(j,nsub)=fsavsub(j,nsub)+fsavsub1(j,jsub)
3487 fsavsub(22,nsub)=fsavsub
3488 fsavsub(23,nsub)=fsavsub(23,nsub)+fsavsub1(23,jsub)
3489 fsavsub(24,nsub)=fsavsub(24,nsub)+fsavsub1(24,jsub)
3491#include "lockoff.inc"
3494#include "lockon.inc"
3496 econtv = econtv + econvt
3497 econt = econt + econtt
3498 econtd = econtd + econtdt
3499 econt_cumu = econt_cumu + econttied
3502 qfric = qfric + (fheats+fheatm)*qfrict
3503 econtv = econtv - (fheats+fheatm)*qfrict
3505#include "lockoff.inc"
3507 IF(interefric >0)
THEN
3509#include "lockon.inc"
3511 efric_lm = half*efric_l(i)
3512 efric(interefric,ix1(i)) = efric(interefric,ix1(i)) + h1(i)*(efric_lm-fheatm*efrict(i))
3513 efric(interefric,ix2(i)) = efric(interefric,ix2(i)) + h2(i)*(efric_lm-fheatm*efrict(i))
3514 efric(interefric,ix3(i)) = efric(interefric,ix3(i)) + h3(i)*(efric_lm-fheatm*efrict(i))
3515 efric(interefric,ix4(i)) = efric(interefric,ix4(i)) + h4(i)*(efric_lm-fheatm*efrict(i))
3517 efric_ls = half*efric_l(i)
3519 efric(interefric,jg) = efric(interefric,jg) + (efric_ls-fheats*efrict(i))
3522 efricfi(nin)%P(jg)=
efricfi(nin)%P(jg)+ (efric_ls-fheats*efrict(i))
3525#include "lockoff.inc"
3529 IF(h3d_data%N_SCAL_CSE_FRIC >0)
THEN
3531#include "lockon.inc"
3533 efric_lm = half*efric_l(i)
3534 efricg(ix1(i)) = efricg(ix1(i)) + h1(i)*(efric_lm-fheatm*efrict(i))
3535 efricg(ix2(i)) = efricg(ix2(i)) + h2(i)*(efric_lm-fheatm*efrict(i))
3536 efricg(ix3(i)) = efricg(ix3(i)) + h3(i)*(efric_lm-fheatm*efrict(i))
3537 efricg(ix4(i)) = efricg(ix4(i)) + h4(i)*(efric_lm-fheatm*efrict(i))
3539 efric_ls = half*efric_l(i)
3541 efricg(jg) = efricg(jg) + (efric_ls-fheats*efrict(i))
3547#include "lockoff.inc"
3553 . .AND.(ivis2==0.OR.ivis2==1))
THEN
3557 IF(msi(i)==zero)
THEN
3563 cy = eight*msi(i)*kt(i)
3564 aux = sqrt(cx+cy)+two*c(i)
3565 stv(i)= kt(i)*aux*aux/
max(cy,em30)
3566 aux = two*cf(i)*cf(i)/
max(msi(i),em20)
3578 IF(ms(j1)==zero)
THEN
3583 k1(i)=kt(i)*abs(h1(i))
3584 c1(i)=c(i)*abs(h1(i))
3585 cx =four*c1(i)*c1(i)
3586 cy =eight*ms(j1)*k1(i)
3587 aux = sqrt(cx+cy)+two*c1(i)
3588 st1(i)= k1(i)*aux*aux/
max(cy,em30)
3589 cfi = cf(i)*abs(h1(i))
3590 aux = two*cfi*cfi/
max(ms(j1),em20)
3599 IF(ms(j1)==zero)
THEN
3604 k2(i)=kt(i)*abs(h2(i))
3605 c2(i)=c(i)*abs(h2(i))
3606 cx =four*c2(i)*c2(i)
3607 cy =eight*ms(j1)*k2(i)
3608 aux = sqrt(cx+cy)+two*c2(i)
3609 st2(i)= k2(i)*aux*aux/
max(cy,em30)
3610 cfi = cf(i)*abs(h2(i))
3611 aux = two*cfi*cfi/
max(ms(j1),em20)
3620 IF(ms(j1)==zero)
THEN
3625 k3(i)=kt(i)*abs(h3(i))
3626 c3(i)=c(i)*abs(h3(i))
3627 cx =four*c3(i)*c3(i)
3628 cy =eight*ms(j1)*k3(i)
3629 aux = sqrt(cx+cy)+two*c3(i)
3630 st3(i)= k3(i)*aux*aux/
max(cy,em30)
3631 cfi = cf(i)*abs(h3(i))
3632 aux = two*cfi*cfi/
max(ms(j1),em20)
3641 IF(ms(j1)==zero)
THEN
3646 k4(i)=kt(i)*abs(h4(i))
3647 c4(i)=c(i)*abs(h4(i))
3648 cx =four*c4(i)*c4(i)
3649 cy =eight*ms(j1)*k4(i)
3650 aux = sqrt(cx+cy)+two*c4(i)
3651 st4(i)= k4(i)*aux*aux/
max(cy,em30)
3652 cfi = cf(i)*abs(h4(i))
3653 aux = two*cfi*cfi/
max(ms(j1),em20)
3664 IF( (viscffric(i)/=zero)
3665 . .AND.(ivis2==0.OR.ivis2==1))
THEN
3666 IF(msi(i)==zero)
THEN
3672 cy = eight*msi(i)*kt(i)
3673 aux = sqrt(cx+cy)+two*c(i)
3674 stv(i)= kt(i)*aux*aux/
max(cy,em30)
3675 aux = two*cf(i)*cf(i)/
max(msi(i),em20)
3687 IF(ms(j1)==zero)
THEN
3692 k1(i)=kt(i)*abs(h1(i))
3693 c1(i)=c(i)*abs(h1(i))
3694 cx =four*c1(i)*c1(i)
3695 cy =eight*ms(j1)*k1(i)
3696 aux = sqrt(cx+cy)+two*c1(i)
3697 st1(i)= k1(i)*aux*aux/
max(cy,em30)
3698 cfi = cf(i)*abs(h1(i))
3699 aux = two*cfi*cfi/
max(ms(j1),em20)
3708 IF(ms(j1)==zero)
THEN
3713 k2(i)=kt(i)*abs(h2(i))
3714 c2(i)=c(i)*abs(h2(i))
3715 cx =four*c2(i)*c2(i)
3716 cy =eight*ms(j1)*k2(i)
3717 aux = sqrt(cx+cy)+two*c2(i)
3718 st2(i)= k2(i)*aux*aux/
max(cy,em30)
3719 cfi = cf(i)*abs(h2(i))
3720 aux = two*cfi*cfi/
max(ms(j1),em20)
3729 IF(ms(j1)==zero)
THEN
3734 k3(i)=kt(i)*abs(h3(i))
3735 c3(i)=c(i)*abs(h3(i))
3736 cx =four*c3(i)*c3(i)
3737 cy =eight*ms(j1)*k3(i)
3738 aux = sqrt(cx+cy)+two*c3(i)
3739 st3(i)= k3(i)*aux*aux/
max(cy,em30)
3740 cfi = cf(i)*abs(h3(i))
3741 aux = two*cfi*cfi/
max(ms(j1),em20)
3750 IF(ms(j1)==zero)
THEN
3755 k4(i)=kt(i)*abs(h4(i))
3756 c4(i)=c(i)*abs(h4(i))
3757 cx =four*c4(i)*c4(i)
3758 cy =eight*ms(j1)*k4(i)
3759 aux = sqrt(cx+cy)+two*c4(i)
3760 st4(i)= k4(i)*aux*aux/
max(cy,em30)
3761 cfi = cf(i)*abs(h4(i))
3762 aux = two*cfi*cfi/
max(ms(j1),em20)
3773 k1(i) =stif(i)*abs(h1(i))
3776 k2(i) =stif(i)*abs(h2(i))
3779 k3(i) =stif(i)*abs(h3(i))
3782 k4(i) =stif(i)*abs(h4(i))
3796 dist = gapv(i)-pene(i)
3797 rdist = half*dist /
max(em30,-vn(i))
3798 dti =
min(rdist,dti)
3801 IF (dtmini>zero)
THEN
3810 dist =gapv(i)-pene(i)
3811 dti2 = half*dist /
max(em30,-vn(i))
3812 IF(dti2<=dtm.AND.cand_f(1,index(i))==zero)
THEN
3817 ni =
itafi(nin)%P(-nn)
3819#include "lockon.inc"
3820 WRITE(iout,
'(A,E12.4,A,I10,A,E12.4,A)')
3821 .
' **WARNING MINIMUM TIME STEP ',dti2,
3822 .
' IN INTERFACE ',noint,
'(DTMIN=',dtm,
')'
3823 WRITE(iout,
'(A,I10,A,I10)')
' TYING SECONDARY NODE VS MAIN SEGMENT',
3824 . ni,
' IN INTERFACE ',noint
3825 WRITE(iout,
'(A,4I10)')
' MAIN NODES : ',
3826 . itab(ix1(i)),itab(ix2(i)),itab(ix3(i)),itab(ix4(i))
3827#include "lockoff.inc"
3828 cand_f(1,index(i))= fns(i)*sign(one,side(i))
3829 cand_f(2,index(i))= fxt(i)*t1x(i)+fyt(i)*t1y(i)+fzt(i)*t1z(i)
3830 cand_f(3,index(i))= fxt(i)*t2x(i)+fyt(i)*t2y(i)+fzt(i)*t2z(i)
3831 cand_f(4,index(i))= h1(i)
3832 cand_f(5,index(i))= h2(i)
3833 cand_f(6,index(i))= h3(i)
3834 cand_f(7,index(i))= pene(i)
3835 cand_f(8,index(i))= side(i)
3846 IF(idtm==1.OR.idtm==2.OR.
3847 . idtm==5.OR.idtm==6)
THEN
3853 IF(mas2>zero.AND.stif(i)>zero.AND.
3854 . irb(kini(i))==0.AND.irb2(kini(i))==0)
THEN
3855 dtmi(i) =
min(dtmi(i),dtfac1(10)*sqrt(mas2/stif(i)))
3857 mas2 = two* ms(ix1(i))
3858 IF(mas2>zero.AND.h1(i)*stif(i)>zero.AND.
3859 . irb(kinet(ix1(i)))==0.AND.irb2(kinet(ix1(i)))==0)
THEN
3860 dtmi(i) =
min(dtmi(i),dtfac1(10)*sqrt(mas2/(h1(i)*stif(i))))
3862 mas2 = two * ms(ix2(i))
3863 IF(mas2>zero.AND.h2(i)*stif(i)>zero.AND.
3864 . irb(kinet(ix2(i)))==0.AND.irb2(kinet(ix2(i)))==0)
THEN
3865 dtmi(i) =
min(dtmi(i),dtfac1(10)*sqrt(mas2/(h2(i)*stif(i))))
3867 mas2 = two* ms(ix3(i))
3868 IF(mas2>zero.AND.h3(i)*stif(i)>zero.AND.
3869 . irb(kinet(ix3(i)))==0.AND.irb2(kinet(ix3(i)))==0)
THEN
3870 dtmi(i) =
min(dtmi(i),dtfac1(10)*sqrt(mas2/(h3(i)*stif(i))))
3872 mas2 = two * ms(ix4(i))
3873 IF(mas2>zero.AND.h4(i)*stif(i)>zero.AND.
3874 . irb(kinet(ix4(i)))==0.AND.irb2(kinet(ix4(i)))==0)
THEN
3875 dtmi(i) =
min(dtmi(i),dtfac1(10)*sqrt(mas2/(h4(i)*stif(i))))
3877 dtmi0 =
min(dtmi0,dtmi(i))
3883 IF(mas2>zero.AND.stv(i)>zero.AND.
3884 . irb(kini(i))==0.AND.irb2(kini(i))==0)
THEN
3887 mas2 = two * ms(ix1(i))
3888 IF(mas2>zero.AND.st1(i)>zero.AND.
3889 . irb(kinet(ix1(i)))==0.AND.irb2(kinet(ix1(i)))==0)
THEN
3890 dtmi(i) =
min(dtmi(i),dtfac1(10)*sqrt(mas2/(st1(i))))
3892 mas2 = two * ms(ix2(i))
3893 IF(mas2>zero.AND.st2(i)>zero.AND.
3894 . irb(kinet(ix2(i)))==0.AND.irb2(kinet(ix2(i)))==0)
THEN
3895 dtmi(i) =
min(dtmi(i),dtfac1(10)*sqrt(mas2/(st2(i))))
3897 mas2 = two * ms(ix3(i))
3898 IF(mas2>zero.AND.st3(i)>zero.AND.
3899 . irb(kinet(ix3(i)))==0.AND.irb2(kinet(ix3(i)))==0)
THEN
3900 dtmi(i) =
min(dtmi(i),dtfac1(10)*sqrt(mas2/(st3(i))))
3902 mas2 = two * ms(ix4(i))
3903 IF(mas2>zero.AND.st4(i)>zero.AND.
3904 . irb(kinet(ix4(i)))==0.AND.irb2(kinet(ix4(i)))==0)
THEN
3905 dtmi(i) =
min(dtmi(i),dtfac1(10)*sqrt(mas2/(st4(i))))
3907 dtmi0 =
min(dtmi0,dtmi(i))
3912 IF(dtmi(i)<=dtm)
THEN
3917 ni =
itafi(nin)%P(-jg)
3920#include "lockon.inc"
3921 WRITE(iout,
'(A,E12.4,A,I10,A,E12.4,A)')
3922 .
' **WARNING MINIMUM TIME STEP ',dtmi(i),
3923 .
' IN INTERFACE ',noint,
'(DTMIN=',dtm,
')'
3924 WRITE(iout,
'(A,I10)')
' SECONDARY NODE : ',ni
3925 WRITE(iout,
'(A,4I10)')
' MAIN NODES : ',
3926 . itab(ix1(i)),itab(ix2(i)),itab(ix3(i)),itab(ix4(i))
3927#include "lockoff.inc"
3929 IF ( istamping == 1)
THEN
3930 WRITE(istdo,
'(A)')
'The run encountered a problem in an in
3932 WRITE(istdo,
'(A)')
'You may need to check if there is enou
3933 .gh clearance between the tools,'
3934 WRITE(istdo,
'(A)')
'and that they do not penetrate each ot
3935 .her during their travel'
3936 WRITE(iout,
'(A)')
'The run encountered a problem in an in
3938 WRITE(iout,
'(A)')
'You may need to check if there is enou
3939 .gh clearance between the tools,'
3940 WRITE(iout,
'(A)')
'and that they do not penetrate each ot
3941 .her during their travel'
3944#include "lockon.inc"
3945 WRITE(iout,
'(A,E12.4,A,I10,A,E12.4,A)')
3946 .
' **WARNING MINIMUM TIME STEP ',dtmi(i),
3947 .
' IN INTERFACE ',noint,
'(DTMIN=',dtm,
')'
3948 WRITE(iout,
'(A,I10,A,I10)')
' DELETE SECONDARY NODE ',
3949 . ni,
' FROM INTERFACE ',noint
3950 WRITE(iout,
'(A,4I10)')
' MAIN NODES : ',
3951 . itab(ix1(i)),itab(ix2(i)),itab(ix3(i)),itab(ix4(i))
3953 stfn(cn_loc(i)) = -abs(stfn(cn_loc(i)))
3957 IF ( istamping == 1)
THEN
3958 WRITE(istdo,
'(A)')
'The run encountered a problem in an in
3960 WRITE(istdo,
'(A)')
'You may need to check if there is enou
3961 .gh clearance between the tools,'
3962 WRITE(istdo,
'(A)')
'and that they do not penetrate each ot
3963 .her during their travel'
3964 WRITE(iout,
'(A)')
'The run encountered a problem in an in
3966 WRITE(iout,
'(A)')
'You may need to check if there is enou
3967 .gh clearance between the tools,'
3968 WRITE(iout,
'(A)')
'and that they do not penetrate each ot
3969 .her during their travel'
3971#include "lockoff.inc"
3974#include "lockon.inc"
3975 WRITE(iout,
'(A,E12.4,A,I10,A,E12.4,A)')
3976 .
' **WARNING MINIMUM TIME STEP ',dtmi(i),
3977 .
' IN INTERFACE ',noint,
'(DTMIN=',dtm
')'
3978 WRITE(iout,
'(A,I10)')
' SECONDARY NODE : ',ni
3979 WRITE(iout,
'(A,4I10)')
' MAIN NODES : ',
3980 . itab(ix1(i)),itab(ix2(i)),itab(ix3(i)),itab(ix4(i))
3981#include "lockoff.inc"
3983 IF ( istamping == 1)
THEN
3984 WRITE(istdo,
'(A)')
'The run encountered a problem in an in
3986 WRITE(istdo,
'(A)')
'You may need to check if there is enou
3987 .gh clearance between the tools,'
3988 WRITE(istdo,
'(A)')
'and that they do not penetrate each ot
3989 .her during their travel'
3990 WRITE(iout,
'(A)')
'The run encountered a problem in an in
3992 WRITE(iout,
'(A)')'you may need to check
if there is enou
3993 .gh clearance between
the tools,
'
3994 WRITE(IOUT, '(a)
')'and that they
do not penetrate each ot
3995 .her during their travel
'
3997.AND.
ELSEIF(IDTM==6ILAGM==2)THEN
3998 IF(KINET(JG)+KINET(IX1(I))+KINET(IX2(I))
3999 . +KINET(IX3(I))+KINET(IX4(I))==0 )THEN
4000 CAND_N(INDEX(I)) = -IABS(CAND_N(INDEX(I)))
4012 ELSE ! IF(ITIED == 0)THEN
4014 IF (DTMINI>ZERO) THEN
4025.AND..AND.
IF(MAS2>ZEROSTIF(I)>ZERO
4026.AND.
. IRB(KINI(I))==0IRB2(KINI(I))==0)THEN
4027 DTMI(I) = MIN(DTMI(I),SQRT(MAS2/STIF(I)))
4029 MAS2 = TWO* MS(IX1(I))
4030.AND..AND.
IF(MAS2>ZEROH1(I)*STIF(I)>ZERO
4031.AND.
. IRB(KINET(IX1(I)))==0IRB2(KINET(IX1(I)))==0)THEN
4032 DTMI(I) = MIN(DTMI(I),SQRT(MAS2/(H1(I)*STIF(I))))
4034 MAS2 = TWO * MS(IX2(I))
4035.AND..AND.
IF(MAS2>ZEROH2(I)*STIF(I)>ZERO
4036.AND.
. IRB(KINET(IX2(I)))==0IRB2(KINET(IX2(I)))==0)THEN
4037 DTMI(I) = MIN(DTMI(I),SQRT(MAS2/(H2(I)*STIF(I))))
4039 MAS2 = TWO* MS(IX3(I))
4040.AND..AND.
IF(MAS2>ZEROH3(I)*STIF(I)>ZERO
4041.AND.
. IRB(KINET(IX3(I)))==0IRB2(KINET(IX3(I)))==0)THEN
4042 DTMI(I) = MIN(DTMI(I),SQRT(MAS2/(H3(I)*STIF(I))))
4044 MAS2 = TWO * MS(IX4(I))
4045.AND..AND.
IF(MAS2>ZEROH4(I)*STIF(I)>ZERO
4046.AND.
. IRB(KINET(IX4(I)))==0IRB2(KINET(IX4(I)))==0)THEN
4047 DTMI(I) = MIN(DTMI(I),SQRT(MAS2/(H4(I)*STIF(I))))
4049 DTMI0 = MIN(DTMI0,DTMI(I))
4055.AND..AND.
IF(MAS2>ZEROSTV(I)>ZERO
4056.AND.
. IRB(KINI(I))==0IRB2(KINI(I))==0)THEN
4057 DTMI(I) = MIN(DTMI(I),SQRT(MAS2/STV(I)))
4059 MAS2 = TWO * MS(IX1(I))
4060.AND..AND.
IF(MAS2>ZEROST1(I)>ZERO
4061.AND.
. IRB(KINET(IX1(I)))==0IRB2(KINET(IX1(I)))==0)THEN
4062 DTMI(I) = MIN(DTMI(I),SQRT(MAS2/(ST1(I))))
4064 MAS2 = TWO * MS(IX2(I))
4065.AND..AND.
IF(MAS2>ZEROST2(I)>ZERO
4066.AND.
. IRB(KINET(IX2(I)))==0IRB2(KINET(IX2(I)))==0)THEN
4067 DTMI(I) = MIN(DTMI(I),SQRT(MAS2/(ST2(I))))
4069 MAS2 = TWO * MS(IX3(I))
4070.AND..AND.
IF(MAS2>ZEROST3(I)>ZERO
4071.AND.
. IRB(KINET(IX3(I)))==0IRB2(KINET(IX3(I)))==0)THEN
4072 DTMI(I) = MIN(DTMI(I),SQRT(MAS2/(ST3(I))))
4074 MAS2 = TWO * MS(IX4(I))
4075.AND..AND.
IF(MAS2>ZEROST4(I)>ZERO
4076.AND.
. IRB(KINET(IX4(I)))==0IRB2(KINET(IX4(I)))==0)THEN
4077 DTMI(I) = MIN(DTMI(I),SQRT(MAS2/(ST4(I))))
4079 DTMI0 = MIN(DTMI0,DTMI(I))
4084.AND.
IF(DTMI(I)<=DTMCAND_F(1,INDEX(I))==ZERO)THEN
4089 NI = ITAFI(NIN)%P(-JG)
4091#include "lockon.inc"
4092 WRITE(IOUT,'(a,e12.4,a,i10,a,e12.4,a)
')
4093 . ' **warning minimum time step
',DTMI(I),
4094 . ' in
INTERFACE ',NOINT,'(dtmin=
',DTM,')
'
4095 WRITE(IOUT,'(a,i10,a,i10)
')' freeze secondary node vs
main segment
',
4096 . NI,' in
INTERFACE ',NOINT
4097 WRITE(IOUT,'(a,4i10)
')' main nodes :
',
4098 . ITAB(IX1(I)),ITAB(IX2(I)),ITAB(IX3(I)),ITAB(IX4(I))
4099#include "lockoff.inc"
4100 CAND_F(1,INDEX(I))= FNS(I)*SIGN(ONE,SIDE(I)) ! negative vs NX NY NZ
4101 CAND_F(2,INDEX(I))= FXT(I)*T1X(I)+FYT(I)*T1Y(I)+FZT(I)*T1Z(I)
4102 CAND_F(3,INDEX(I))= FXT(I)*T2X(I)+FYT(I)*T2Y(I)+FZT(I)*T2Z(I)
4103 CAND_F(4,INDEX(I))= H1(I)
4104 CAND_F(5,INDEX(I))= H2(I)
4105 CAND_F(6,INDEX(I))= H3(I)
4106 CAND_F(7,INDEX(I))= PENE(I)
4107 CAND_F(8,INDEX(I))= SIDE(I)
4112 ENDIF ! IF(ITIED == 0)THEN, ELSE
4135#include "mic_lockon.inc"
4140 NSVFI(NIN)%P(-NN) = -ABS(NSVFI(NIN)%P(-NN))
4144#include "mic_lockoff.inc"
4148.OR..OR.
IF((IBAG/=0)(IADM/=0)(IDAMP_RDOF/=0)) THEN
4152.OR..OR.
IF(FXI(I)/=ZEROFYI(I)/=ZEROFZI(I)/=ZERO)THEN
4169#include "lockon.inc"
4172 RCONTACT(JG)=MIN(RCONTACT(JG),RCURVI(I))
4174 RCONTACT(IX1(I))=MIN(RCONTACT(IX1(I)),RCURVI(I))
4175 RCONTACT(IX2(I))=MIN(RCONTACT(IX2(I)),RCURVI(I))
4176 RCONTACT(IX3(I))=MIN(RCONTACT(IX3(I)),RCURVI(I))
4177 RCONTACT(IX4(I))=MIN(RCONTACT(IX4(I)),RCURVI(I))
4178#include "lockoff.inc"
4184#include "lockon.inc"
4187 PCONTACT(JG)=MAX(PCONTACT(JG),PENE(I)/(PADM*GAPV(I)))
4188 ACONTACT(JG)=MIN(ACONTACT(JG),ANGLMI(I))
4190#include "lockoff.inc"
4197 IF(PENE(I)==ZERO)GOTO 400
4199 IBCS = IBCC - 8 * IBCM
4204 CALL IBCOFF(IBCS,ICODT(IG))
4209 CALL IBCOFF(IBCM,ICODT(IG))
4211 CALL IBCOFF(IBCM,ICODT(IG))
4213 CALL IBCOFF(IBCM,ICODT(IG))
4215 CALL IBCOFF(IBCM,ICODT(IG))