43 SUBROUTINE i20for3(OUTPUT,JLT ,A ,VA ,IBCC ,ICODT ,
44 2 FSAV ,GAP ,FRIC ,MS ,VISC ,
45 3 VISCF ,NOINT ,STFA ,ITAB ,CN_LOC ,
46 4 STIGLO ,STIFN ,STIF ,FSKYI ,ISKY ,
47 6 NX1 ,NX2 ,NX3 ,NX4 ,NY1 ,
48 7 NY2 ,NY3 ,NY4 ,NZ1 ,NZ2 ,
49 8 NZ3 ,NZ4 ,LB1 ,LB2 ,LB3 ,
50 9 LB4 ,LC1 ,LC2 ,LC3 ,LC4 ,
51 A P1 ,P2 ,P3 ,P4 ,FCONT ,
52 B IX1L ,IX2L ,IX3L ,IX4L ,NSVG ,
53 C IVIS2 ,NELTST ,ITYPTST,DT2T ,
54 D GAPV ,INACTI ,INDEX ,NISKYFI,
55 E KINET ,NEWFRONT,ISECIN,NSTRF ,SECFCUM,
56 F X ,XA ,CE_LOC ,MFROT ,IFQ ,
57 G FROT_P ,CAND_FX,CAND_FY,CAND_FZ,ALPHA0,
58 H IFPEN ,GAPR ,DXANC ,NLN ,NLG ,
59 I IBAG ,ICONTACT,NSV ,PENIS ,PENIM ,
60 J VISCN ,VXI ,VYI ,VZI ,MSI ,
61 K KINI ,NIN ,NISUB ,LISUB ,ADDSUBS,
62 L ADDSUBM,LISUBS ,LISUBM ,FSAVSUB,CAND_N ,
63 M ILAGM ,ICURV ,NOD_NORMAL ,FNCONT ,FTCONT ,
64 N X1 ,X2 ,X3 ,X4 ,Y1 ,
65 O Y2 ,Y3 ,Y4 ,Z1 ,Z2 ,
66 P Z3 ,Z4 ,XI ,YI ,ZI ,
67 Q IADM ,RCURVI ,RCONTACT,ACONTACT,PCONTACT,
68 R ANGLMI ,PADM ,INTTH ,PHI , FTHE ,
69 S FTHESKYI,DAANC6,TEMP ,TEMPI ,RSTIF ,
70 T IFORM ,GAP_S ,IGAP ,ALPHAK ,MSKYI_SMS,
71 U ISKYI_SMS,NSMS ,CMAJ ,JTASK,ISENSINT,
72 V FSAVPARIT ,NFT ,H3D_DATA)
82#include "implicit_f.inc"
100#include "scr18_c.inc"
101#include "units_c.inc"
102#include "parit_c.inc"
103#include "param_c.inc"
104#include "impl1_c.inc"
106#include
"kincod_c.inc"
110 TYPE(output_),
INTENT(INOUT) :: OUTPUT
111 INTEGER NELTST,ITYPTST,JLT,IBCC,IBCM,IBCS,IVIS2,INACTI,IBAG,NIN,
112 . NTY ,NLN,NLG(NLN),NSV(*),
113 . ICODT(*), ITAB(*), ISKY(*), KINET(*),
114 . MFROT, IFQ, NOINT,NEWFRONT,ISECIN, NSTRF(*),
115 . IFPEN(*) ,ICONTACT(*), CAND_N(*),
117 . ISET, NISKYFI,IADM,INTTH,IFORM, IGAP,JTASK
118 INTEGER IX1L(MVSIZ), IX2L(MVSIZ), IX3L(MVSIZ), IX4L(MVSIZ),
119 . CN_LOC(MVSIZ),CE_LOC(MVSIZ),INDEX(MVSIZ),NSVG(MVSIZ),
120 . NISUB, LISUB(*), ADDSUBS(*), ADDSUBM(*), LISUBS(*),
121 . LISUBM(*),ILAGM,ICURV(3),
122 . ISKYI_SMS(*), NSMS(*), ISENSINT(*),NFT
124 . STIGLO,FROT_P(*), X(3,*), XA(3,*),DXANC(3,*),
125 . A(3,*), MS(*), VA(3,*), FSAV(*),FCONT(3,*),
126 . CAND_FX(*),CAND_FY(*),CAND_FZ(*),ALPHA0,
127 . GAP, FRIC,VISC,VISCF,VIS,,STFA(*),STIFN(*),
128 . FSKYI(LSKYI,NFSKYI),FSAVSUB(NTHVKI,*), FNCONT(3,*),(3,*),
131 . NX1(MVSIZ), NX2(MVSIZ), NX3(MVSIZ), NX4(MVSIZ),
132 . NY1(MVSIZ), NY2(MVSIZ), NY3(MVSIZ), NY4(MVSIZ),
133 . NZ1(MVSIZ), NZ2(MVSIZ), NZ3(MVSIZ), NZ4(MVSIZ),
134 . LB1(MVSIZ), LB2(MVSIZ), LB3(MVSIZ), LB4(),
135 . LC1(MVSIZ), LC2(MVSIZ), LC3(MVSIZ), LC4(MVSIZ),
136 . P1(MVSIZ), P2(MVSIZ), P3(MVSIZ), P4(MVSIZ), STIF(MVSIZ),
137 . (MVSIZ),GAPR(MVSIZ),SECFCUM(7,NUMNOD,NSECT),
138 . TMP(MVSIZ),STIFSAV(MVSIZ), VISCN(*),
139 . vxi(mvsiz),vyi(mvsiz),vzi(mvsiz),msi(mvsiz),
140 . x1(mvsiz),y1(mvsiz),z1(mvsiz),
141 . x2(mvsiz),y2(mvsiz),z2(mvsiz),
142 . x3(mvsiz),y3(mvsiz),z3(mvsiz),
143 . x4(mvsiz),y4(mvsiz),z4(mvsiz),
144 . xi(mvsiz),yi(mvsiz),zi(mvsiz),penis(2,*),penim(2,*),
145 . phi(mvsiz), fthe(*),ftheskyi(lskyi),temp(*), tempi(mvsiz),
146 . rstif,fsavparit(nisub+1,11,*)
148 . nod_normal(3,*), rcurvi(*), rcontact(*), acontact(*),
149 . pcontact(*),padm, anglmi(*),gap_s(*),alphak(3,*),cmaj(mvsiz)
156 INTEGER I,J1,IG,J,JG,IM,IS,K0,NBINTER,K1S,K,IL,IE,NN,NI,NA1,NA2,
157 . JSUB,KSUB,JJ,KK,IN,NSUB,ISIGN,IPROJ,IBID
158 INTEGER IX1G(MVSIZ), IX2G(MVSIZ)
160 . fxr(mvsiz), fyr(mvsiz), fzr(mvsiz),
161 . fxi(mvsiz), fyi(mvsiz), fzi(mvsiz), fni(mvsiz),
162 . fxt(mvsiz),fyt(mvsiz),fzt(mvsiz),
163 . fx1(mvsiz), fx2(mvsiz), fx3(mvsiz), fx4(mvsiz),
164 . fy1(mvsiz), fy2(mvsiz), fy3(mvsiz), fy4(mvsiz),
165 . fz1(mvsiz), fz2(mvsiz), fz3(mvsiz), fz4(mvsiz),
166 . n1(mvsiz), n2(mvsiz), n3(mvsiz), pene(mvsiz),
167 . vis2(mvsiz), dtmi(mvsiz), xmu(mvsiz),stif0(mvsiz),
168 . h1(mvsiz), h2(mvsiz), h3(mvsiz), h4(mvsiz),
169 . vx(mvsiz), vy(mvsiz), vz(mvsiz), vn(mvsiz),
170 . st1(mvsiz),st2(mvsiz),st3(mvsiz),st4(mvsiz),stv(mvsiz),
171 . kt(mvsiz),c(mvsiz),cf(mvsiz),
172 . ks(mvsiz),k1(mvsiz),k2(mvsiz),k3(mvsiz),k4(mvsiz),
173 . cs(mvsiz),c1(mvsiz),c2(mvsiz),c3(mvsiz),c4(mvsiz),
174 . p1s(mvsiz),p2s(mvsiz),p3s(mvsiz),p4s(mvsiz),
175 . phi1(mvsiz),phi2(mvsiz),phi3(mvsiz),phi4(mvsiz),
176 . fsavsub1(15,nisub),masm(mvsiz)
178 . vnx, vny, vnz, aa, crit,s2,dist,rdist,
179 . v2, fm2, dt1inv, visca, fac,ff,alphi,
alpha
180 . fx, fy, fz, f2, mas2, m2sk, dtmi0,dti,ft,fn,fmax,ftn,
181 . facm1, econtt, econvt, h0, la1, la2, la3, la4,
182 . d1,d2,d3,d4,a1,a2,a3,a4,e10, h0d, s2d, sum,
183 . fsav1, fsav2, fsav3, fsav4, fsav5, fsav6, fsav7, fsav8,
184 . fsav9, fsav10, fsav11, fsav12, fsav13, fsav14, fsav15, ffo,
185 . la1d,la2d,la3d,la4d,t1,t1d,t2,t2d,ffd,visd,facd,d1d,
186 . d2d,d3d,d4d,vnxd,vnyd,vnzd,v2d,fm2d,f2d,aad,fxd,fyd,fzd,
187 . a1d,a2d,a3d,a4d,vv,ax1,ax2,ay1,ay2,az1,az2,ax,ay,az,
188 .
area,p,vv1,vv2,v21,dmu, dti2,h00 ,a0x,a0y,a0z,rx,ry,rz,
189 . anx,any,anz,aan,aax,aay,aaz ,rr,rs,aaa,stfr,visr,
190 . prec,ps,xsa,pis,pplus,cx,cy,cfi,aux,tm,ts,impx,impy,impz,bb,
191 . nn1,nn2,nn3,nn4,xn1,yn1,zn1,xn2,yn2,zn2,xn3,yn3,zn3,xn4,yn4,
194 DOUBLE PRECISION FX6(6,MVSIZ), FY6(6,MVSIZ), FZ6(6,MVSIZ)
211 ix1g(i) = nlg(ix1l(i))
212 ix2g(i) = nlg(ix2l(i))
213 ix3g(i) = nlg(ix3l(i))
214 ix4g(i) = nlg(ix4l(i))
222 IF(icurv(1) == 3)
THEN
228 p1(i) =
max(zero, bb - d1)
231 p2(i) =
max(zero, bb - d2)
234 p3(i) =
max(zero, bb - d3)
237 p4(i) =
max(zero, bb - d4)
239 a1 = p1(i)/
max(em20,d1)
240 a2 = p2(i)/
max(em20,d2)
241 a3 = p3(i)/
max(em20,d3)
242 a4 = p4(i)/
max(em20,d4)
243 n1(i) = a1*nx1(i) + a2*nx2(i) + a3*nx3(i) + a4*nx4(i)
244 n2(i) = a1*ny1(i) + a2*ny2(i) + a3*ny3(i) + a4*ny4(i)
245 n3(i) = a1*nz1(i) + a2*nz2(i) + a3*nz3(i) + a4*nz4(i)
251 p1(i) =
max(zero, gapv(i) - d1)
254 p2(i) =
max(zero, gapv(i) - d2)
257 p3(i) =
max(zero, gapv(i) - d3)
260 p4(i) =
max(zero, gapv(i) - d4)
262 a1 = p1(i)/
max(em20,d1)
263 a2 = p2(i)/
max(em20,d2)
264 a3 = p3(i)/
max(em20,d3)
265 a4 = p4(i)/
max(em20,d4)
266 n1(i) = a1*nx1(i) + a2*nx2(i) + a3*nx3(i) + a4*nx4(i)
267 n2(i) = a1*ny1(i) + a2*ny2(i) + a3*ny3(i) + a4*ny4(i)
268 n3(i) = a1*nz1(i) + a2*nz2(i) + a3*nz3(i) + a4*nz4(i)
274 pene(i) =
max(p1(i),p2(i),p3(i),p4(i))
276 la1 = one - lb1(i) - lc1(i)
277 la2 = one - lb2(i) - lc2(i)
278 la3 = one - lb3(i) - lc3(i)
279 la4 = one - lb4(i) - lc4(i)
282 . (p1(i)*la1 + p2(i)*la2 + p3(i)*la3 + p4(i)*la4)
283 h1(i) = h0 + p1(i) * lb1(i) + p4(i) * lc4(i)
284 h2(i) = h0 + p2(i) * lb2(i) + p1(i) * lc1(i)
285 h3(i) = h0 + p3(i) * lb3(i) + p2(i) * lc2(i)
286 h4(i) = h0 + p4(i) * lb4(i) + p3(i) * lc3(i)
288 h00 = one/
max(em20,h1(i) + h2(i) + h3(i) + h4(i))
301 h3(i) = one - lb1(i) - lc1(i)
320 rr =
min(rr , rx*rx + ry*ry + rz*rz)
324 rr =
min(rr , rx*rx + ry*ry + rz*rz)
328 rr =
min(rr , rx*rx + ry*ry + rz*rz)
329 IF(ix3g(i)/=ix4g(i))
THEN
333 rr =
min(rr , rx*rx + ry*ry + rz*rz)
338 rs = sqrt(rx*rx + ry*ry + rz*rz)
340 IF(rs-rr+gapv(i)<0.)
THEN
343 ELSEIF(rs-rr+gapv(i)<pene(i))
THEN
344 pene(i) = rs-rr+gapv(i)
350 ELSEIF(icurv(1)==2)
THEN
362 aan = 1. / (anx*anx + any*any + anz*anz)
367 aaa = (aax*anx + aay*any + aaz*anz) * aan
371 rr =
min(rr , rx*rx + ry*ry + rz*rz)
376 aaa = (aax*anx + aay*any + aaz*anz) * aan
380 rr =
min(rr , rx*rx + ry*ry + rz*rz)
385 aaa = (aax*anx + aay*any + aaz*anz) * aan
389 rr =
min(rr , rx*rx + ry*ry + rz*rz)
390 IF(ix3g(i)/=ix4g(i))
THEN
395 aaa = (aax*anx + aay*any + aaz*anz) * aan
399 rr =
min(rr , rx*rx + ry*ry + rz*rz)
405 aaa = (aax*anx + aay*any + aaz*anz) * aan
409 rs = sqrt(rx*rx + ry*ry + rz*rz)
411 IF(rs-rr+gapv(i)<0.)
THEN
414 ELSEIF(rs-rr+gapv(i)<pene(i))
THEN
415 pene(i) = rs-rr+gapv(i)
419 ELSEIF(rs-rr-gapv(i)>0.)
THEN
422 ELSEIF(rs-rr-gapv(i) < pene(i))
THEN
433 nn1 = (yn1*zn2-yn2*zn1) * rx +
434 . (zn1*xn2-zn2*xn1) * ry +
435 . (xn1*yn2-xn2*yn1) * rz
436 nn2 = (yn2*zn3-yn3*zn2) * rx +
437 . (zn2*xn3-zn3*xn2) * ry +
438 . (xn2*yn3-xn3*yn2) * rz
439 nn3 = (yn3*zn4-yn4*zn3) * rx +
440 . (zn3*xn4-zn4*xn3) * ry +
441 . (xn3*yn4-xn4*yn3) * rz
442 IF(ix3l(i)/=ix4l(i))
THEN
446 nn4 = (yn4*zn1-yn1*zn4) * rx +
447 . (zn4*xn1-zn1*xn4) * ry +
448 . (xn4*yn1-xn1*yn4) * rz
455 IF( nn1>=zero .AND. nn2>=zero
456 . .AND. nn3>=zero .AND. nn4>=zero)
THEN
458 ELSEIF( nn1<=zero .AND. nn2<=zero
459 . .AND. nn3<=zero .AND. nn4<=zero)
THEN
466 pene(i) = -rs+rr+gapv(i)
474 ELSEIF(icurv(1) == 3)
THEN
475 CALL i7curv(jlt ,pene ,n1 ,n2 ,
476 1 n3 ,gapv ,xa ,nod_normal,
477 2 ix1l ,ix2l ,ix3l ,ix4l ,
479 4 x1 ,x2 ,x3 ,x4 ,y1 ,
480 5 y2 ,y3 ,y4 ,z1 ,z2 ,
481 6 z3 ,z4 ,xi ,yi ,zi )
492 s2 = one/
max(em30,sqrt(n1(i)**2 + n2(i)**2 + n3(i)**2))
499 vx(i) = vxi(i) - h1(i)*va(1,ix1l(i)) - h2(i)*va(1,ix2l(i))
500 . - h3(i)*va(1,ix3l(i)) - h4(i)*va(1,ix4l(i))
501 vy(i) = vyi(i) - h1(i)*va(2,ix1l(i)) - h2(i)*va(2,ix2l(i))
502 . - h3(i)*va(2,ix3l(i)) - h4(i)*va(2,ix4l(i))
503 vz(i) = vzi(i) - h1(i)*va(3,ix1l(i)) - h2(i)*va(3,ix2l(i))
504 . - h3(i)*va(3,ix3l(i)) - h4(i)*va(3,ix4l(i))
505 vn(i) = n1(i)*vx(i) + n2(i)*vy(i) + n3(i)*vz(i)
510 h0 = -.25*(h1(i) - h2(i) + h3(i) - h4(i))
511 h0 =
min(h0,h2(i),h4(i))
512 h0 =
max(h0,-h1(i),-h3(i))
513 IF(ix3g(i)==ix4g(i))h0 = zero
522 IF(inacti==5.or.inacti==6)
THEN
541 pplus = pene(i) + zep05*(gapv(i)-pene(i))
543 IF (pplus < gap_s(is))
THEN
544 penis(2,is) =
max(penis(2,is),pplus)
546 penis(2,is) =
max(penis(2,is),gap_s(is))
547 penim(2,im) =
max(penim(2,im),pplus-gap_s(is))
550 IF (pplus <
gapfi(nin)%P(-nn))
THEN
555 penim(2,im) =
max(penim(2,im),pplus-
gapfi(nin)%P(-nn))
562 pplus = pene(i) + zep05*(gapv(i)-pene(i))
563 penim(2,im) =
max(penim(2,im),pplus)
579#include "lockoff.inc"
587 pis =
penfi(nin)%P(1,-nn)
589 pene(i) = pene(i) - pis - penim(1,im)
590 pene(i) =
max(pene(i),zero)
591 IF (pene(i) == zero )stif(i)=zero
592 gapv(i) = gapv(i) - pis - penim(1,im)
601 rdist = half*dist /
max(em30,-vn(i))
608 IF(dti<=dtmin1(10))
THEN
612 dti2 = half*dist /
max(em30,-vn(i))
613 IF(dti2<=dtmin1(10))
THEN
615 WRITE(iout,
'(A,E12.4,A,I10)')
616 .
' **WARNING MINIMUM TIME STEP ',dti2,
617 .
' IN INTERFACE ',noint
622 ni =
itafi(nin)%P(-nn)
624#include "lockoff.inc"
625 IF(idtmin(10)==1)
THEN
627 WRITE(iout,
'(A,I10)')
' SECONDARY NODE : ',ni
628 WRITE(iout,
'(A,4I10)')
' MAIN NODES : ',
629 . itab(ix1g(i)),itab(ix2g(i)),itab(ix3g(i)),itab(ix4g(i))
630#include "lockoff.inc"
632 ELSEIF(idtmin(10)==2)
THEN
634 WRITE(iout,
'(A,I10,A,I10)')
' REMOVE SECONDARY NODE ',
635 . ni,
' FROM INTERFACE ',noint
637 stfa(nsv(cn_loc(i))) = -abs(stfa(nsv(cn_loc(i))))
641#include "lockoff.inc"
645 ELSEIF(idtmin(10)==5)
THEN
647 WRITE(iout,
'(A,I10)')
' SECONDARY NODE : ',ni
648 WRITE(iout,
'(A,4I10)')
' MAIN NODES : ',
649 . itab(ix1g(i)),itab(ix2g(i)),itab(ix3g(i)),itab(ix4g(i))
650#include "lockoff.inc"
652 ELSEIF(idtmin(10)==6.AND.ilagm==2)
THEN
654 IF(kinet(ig)+kinet(ix1g(i))+kinet(ix2g(i))
655 . +kinet(ix3g(i))+kinet(ix4g(i))==0)
THEN
656 cand_n(index(i)) = -iabs(cand_n(index(i)))
660 WRITE(iout,
'(A,I10)')
' SECONDARY NODE : ',itab(nsvg(i))
661 WRITE(iout,'(a,4i10)
')' main nodes :
',
662 . ITAB(IX1G(I)),ITAB(IX2G(I)),ITAB(IX3G(I)),ITAB(IX4G(I))
663#include "lockoff.inc"
680 STIF(I) = HALF*STIF(I)
681 ELSEIF(STIF(I)/=ZERO)THEN
684 FNI(I)= -STIF(I) * PENE(I)
688 FAC = GAPV(I)/MAX( EM10,( GAPV(I)-PENE(I) ) )
690.AND.
IF( (GAPV(I)-PENE(I))/GAPV(I) <PREC
698 STFA(NSV(CN_LOC(I))) = -ABS(STFA(NSV(CN_LOC(I))))
700 NI = ITAFI(NIN)%P(-NN)
701 STIFI(NIN)%P(-NN) = -ABS(STIFI(NIN)%P(-NN))
703 WRITE(ISTDO,'(a,i10)
')' warning
INTERFACE ',NOINT
704 WRITE(ISTDO,'(a,i10,a)
')' node
',NI,
705 . ' de-activated from interface
'
706 WRITE(IOUT ,'(a,i10)
')' warning
INTERFACE ',NOINT
707 WRITE(IOUT ,'(a,i10,a)
')' node
',NI,
708 . ' de-activated from interface
'
709#include "lockoff.inc"
712 ECONTT = ECONTT + HALF*STIF(I)*GAPV(I)**2 *( FACM1 -
714 STIF(I) = HALF*STIF(I) * FAC
715 ELSEIF(STIF(I)/=ZERO)THEN
716 ECONTT = ECONTT + STIGLO*GAPV(I)**2 *( FACM1 - ONE -
718 STIF(I) = STIGLO * FAC
720 FNI(I)= -STIF(I) * PENE(I)
725 FAC = GAPV(I)/MAX( EM10,( GAPV(I)-PENE(I) ) )
727.AND.
IF( (GAPV(I)-PENE(I))/GAPV(I) <PREC
735 STFA(NSV(CN_LOC(I))) = -ABS(STFA(NSV(CN_LOC(I))))
737 NI = ITAFI(NIN)%P(-NN)
738 STIFI(NIN)%P(-NN) = -ABS(STIFI(NIN)%P(-NN))
740 WRITE(ISTDO,'(a,i10)
')' warning
INTERFACE ',NOINT
741 WRITE(ISTDO,'(a,i10,a)
')' node
',NI,
742 . ' de-activated from interface
'
743 WRITE(IOUT ,'(a,i10)
')' warning
INTERFACE ',NOINT
744 WRITE(IOUT ,'(a,i10,a)
')' node
',NI,
745 . ' de-activated from interface
'
746#include "lockoff.inc"
749 ECONTT = ECONTT + HALF*STIF(I)*GAPV(I)**2 *( FACM1 - ONE -
751 STIF(I) = HALF*STIF(I) * FAC
752 ELSEIF(STIF(I)/=ZERO)THEN
753 ECONTT = ECONTT + STIGLO*GAPV(I)**2 *(FACM1 - ONE - LOG(FACM1))
754 STIF(I) = STIGLO * FAC
756 FNI(I)= -STIF(I) * PENE(I)
762.OR.
IF(VISC/=ZEROVISCF/=ZERO)THEN
768 VIS2(I) = TWO * STIF(I) * MSI(I)
769 IF(VN(I)<ZERO) VIS2(I) = VIS2(I) /
770 . ( MAX(EM10,(GAPV(I)-PENE(I))/GAPV(I)) )
774.AND.
IF(KDTINT==0IDTMINS/=2)THEN
776 FAC = STIF(I) / MAX(EM30,STIF(I))
780 . VISCA**2 * TWO* MSI(I) * MAX(ZERO,-VN(I)) /
781 . MAX((GAPV(I) - PENE(I)),EM10) )
782 STIF(I) = STIF(I) * GAPV(I) / MAX((GAPV(I) - PENE(I)),EM10)
783 STIF(I) = STIF(I) + FF * DT1INV
784 STIF(I) = MAX(STIF(I) ,FAC*SQRT(VISCF)*VIS*DT1INV)
791 FAC = STIF(I) / MAX(EM30,STIF(I))
795 . VISCA**2 * TWO * MSI(I) * MAX(ZERO,-VN(I)) /
796 . MAX((GAPV(I) - PENE(I)),EM10) )
797 STIF(I) = STIF(I) * GAPV(I) / MAX((GAPV(I) - PENE(I)),EM10)
799 STIF(I) = STIF(I) + C(I) * DT1INV
802 CF(I) = FAC*SQRT(VISCF)*VIS
803 STIF(I) = MAX(STIF(I) ,CF(I)*DT1INV)
811 MASM(I) = MS(IX1G(I))*H1(I)
812 . + MS(IX2G(I))*H2(I)
813 . + MS(IX3G(I))*H3(I)
814 . + MS(IX4G(I))*H4(I)
815 MASM(I) = MSI(I) * MASM(I) / MAX(EM30,MSI(I)+MASM(I))
816 VIS2(I) = TWO * STIF(I) * MASM(I)
817 IF(VN(I)<ZERO) VIS2(I) = VIS2(I) /
818 . ( MAX(EM10,(GAPV(I)-PENE(I))/GAPV(I)) )
822.AND.
IF(KDTINT==0IDTMINS/=2)THEN
824 FAC = STIF(I) / MAX(EM30,STIF(I))
828 . VISCA**2 * TWO* MASM(I) * MAX(ZERO,-VN(I)) /
829 . MAX((GAPV(I) - PENE(I)),EM10) )
830 STIF(I) = STIF(I) * GAPV(I) / MAX((GAPV(I) - PENE(I)),EM10)
831 STIF(I) = STIF(I) + FF * DT1INV
832 STIF(I) = MAX(STIF(I) ,FAC*SQRT(VISCF)*VIS*DT1INV)
839 FAC = STIF(I) / MAX(EM30,STIF(I))
843 . VISCA**2 * TWO * MASM(I) * MAX(ZERO,-VN(I)) /
844 . MAX((GAPV(I) - PENE(I)),EM10) )
845 STIF(I) = STIF(I) * GAPV(I) / MAX((GAPV(I) - PENE(I)),EM10)
847 STIF(I) = STIF(I) + C(I) * DT1INV
850 CF(I) = FAC*SQRT(VISCF)*VIS
851 STIF(I) = MAX(STIF(I) ,CF(I)*DT1INV)
859 VIS2(I) = TWO* STIF(I) * MSI(I)
861 . ( MAX(EM10,(GAPV(I)-PENE(I))/GAPV(I)) )
865 FAC = STIF(I) / MAX(EM30,STIF(I))
869 . VISCA**2 * TWO * MSI(I) * ABS(VN(I)) /
870 . MAX((GAPV(I) - PENE(I)),EM10) )
871 STIF(I) = STIF(I) * GAPV(I) / MAX((GAPV(I) - PENE(I)),EM10)
872 STIF(I) = STIF(I) + TWO * FF * DT1INV
873 STIF(I) = MAX(STIF(I) ,FAC*SQRT(VISCF)*VIS*DT1INV)
882 VIS2(I) = TWO * STIF(I) * MSI(I)
886 FAC = STIF(I) / MAX(EM30,STIF(I))
888 FF = FAC * ( VISC * VIS ) /
889 . MAX((GAPV(I) - PENE(I)),EM10)
890 STIF(I) = STIF(I) * GAPV(I) /
891 . MAX((GAPV(I) - PENE(I)),EM10)
892 STIF(I) = STIF(I) + TWO* FF * DT1INV
893 STIF(I) = MAX(STIF(I) ,FAC*SQRT(VISCF)*VIS*DT1INV)
902 VIS2(I) = TWO* STIF(I) * MSI(I)
904 STIF(I) = STIF(I) * GAPV(I) /
905 . MAX((GAPV(I) - PENE(I)),EM10)
906 STIF(I) = MAX(STIF(I) ,FAC*SQRT(VISCF)*VIS*DT1INV)
915 MAS2 = MS(IX1G(I))*H1(I)
916 . + MS(IX2G(I))*H2(I)
917 . + MS(IX3G(I))*H3(I)
918 . + MS(IX4G(I))*H4(I)
919 VIS2(I) = TWO* STIF(I) * MSI(I)
920 VIS = 2. * VISC * DT1INV * MSI(I) * MAS2 /
921 . MAX(EM30,MSI(I)+MAS2)
922 STIF(I) = STIF(I) * GAPV(I) /
923 . MAX((GAPV(I) - PENE(I)),EM10)
924 STIF(I) = MAX(STIF(I) ,FAC*SQRT(VISCF*VIS2(I))*DT1INV)
926 ECONVT = ECONVT + MIN(ZERO,FF-FNI(I)) * VN(I) * DT1
927 FNI(I) = MIN(FNI(I),FF)
934 STIF(I) = STIF(I) * GAPV(I) /
935 . MAX((GAPV(I) - PENE(I)),EM10)
944 AAA = ONE-PENE(I)/GAPV(I)
946.OR.
IF(PENE(I)>ZEROALPHAK(2,IL)<ZERO)ISIGN=-1
947 ALPHAK(2,IL)=ISIGN*MIN(ABS(ALPHAK(2,IL)),AAA)
949.OR.
IF(PENE(I)>ZEROALPHAK(2,IL)<ZERO)ISIGN=-1
950 ALPHAK(2,IL)=ISIGN*MIN(ABS(ALPHAK(2,IL)),AAA)
952.OR.
IF(PENE(I)>ZEROALPHAK(2,IL)<ZERO)ISIGN=-1
953 ALPHAK(2,IL)=ISIGN*MIN(ABS(ALPHAK(2,IL)),AAA)
955.OR.
IF(PENE(I)>ZEROALPHAK(2,IL)<ZERO)ISIGN=-1
956 ALPHAK(2,IL)=ISIGN*MIN(ABS(ALPHAK(2,IL)),AAA)
959.OR.
IF(PENE(I)>ZEROALPHAK(2,IL)<ZERO)ISIGN=-1
960 ALPHAK(2,IL)=ISIGN*MIN(ABS(ALPHAK(2,IL)),AAA)
964.OR.
IF(PENE(I)>ZEROALPHAKFI(NIN)%P(IL)<ZERO)ISIGN=-1
965 ALPHAKFI(NIN)%P(IL)=ISIGN*MIN(ABS(ALPHAKFI(NIN)%P(IL)),AAA)
968#include "lockoff.inc"
990 FSAV8 =FSAV8 +ABS(IMPX)
991 FSAV9 =FSAV9 +ABS(IMPY)
992 FSAV10=FSAV10+ABS(IMPZ)
993 FSAV11=FSAV11+FNI(I)*DT12
996 FSAV(1)=FSAV(1)+FSAV1
997 FSAV(2)=FSAV(2)+FSAV2
998 FSAV(3)=FSAV(3)+FSAV3
1000 FSAV(8)=FSAV(8)+FSAV8
1001 FSAV(9)=FSAV(9)+FSAV9
1002 FSAV(10)=FSAV(10)+FSAV10
1003 FSAV(11)=FSAV(11)+FSAV11
1004#include "lockoff.inc"
1006 IF(ISENSINT(1)/=0) THEN
1008 FSAVPARIT(1,1,I+NFT) = FXI(I)
1009 FSAVPARIT(1,2,I+NFT) = FYI(I)
1010 FSAVPARIT(1,3,I+NFT) = FZI(I)
1014.AND.
IF((ANIM_V(12)+OUTP_V(12)+H3D_DATA%N_VECT_PCONT >0
1015.AND..OR..OR..AND..OR.
. ((TT>=OUTPUT%TANIM TT<=OUTPUT%TANIM_STOP)TT>=TOUTP(TT>=H3D_DATA%TH3DTT<=H3D_DATA%TH3D_STOP)
1016.AND..OR.
. (MANIM>=4MANIM<=15)H3D_DATA%MH3D/=0))
1017.OR.
. H3D_DATA%N_VECT_PCONT_MAX>0)THEN
1018#include "lockon.inc"
1020 FNCONT(1,IX1G(I)) =FNCONT(1,IX1G(I)) + FXI(I)*H1(I)
1021 FNCONT(2,IX1G(I)) =FNCONT(2,IX1G(I)) + FYI(I)*H1(I)
1022 FNCONT(3,IX1G(I)) =FNCONT(3,IX1G(I)) + FZI(I)*H1(I)
1023 FNCONT(1,IX2G(I)) =FNCONT(1,IX2G(I)) + FXI(I)*H2(I)
1024 FNCONT(2,IX2G(I)) =FNCONT(2,IX2G(I)) + FYI(I)*H2(I)
1025 FNCONT(3,IX2G(I)) =FNCONT(3,IX2G(I)) + FZI(I)*H2(I)
1026 FNCONT(1,IX3G(I)) =FNCONT(1,IX3G(I)) + FXI(I)*H3(I)
1027 FNCONT(2,IX3G(I)) =FNCONT(2,IX3G(I)) + FYI(I)*H3(I)
1028 FNCONT(3,IX3G(I)) =FNCONT(3,IX3G(I)) + FZI(I)*H3(I)
1029 FNCONT(1,IX4G(I)) =FNCONT(1,IX4G(I)) + FXI(I)*H4(I)
1030 FNCONT(2,IX4G(I)) =FNCONT(2,IX4G(I)) + FYI(I)*H4(I)
1031 FNCONT(3,IX4G(I)) =FNCONT(3,IX4G(I)) + FZI(I)*H4(I)
1035 FNCONT(1,JG)=FNCONT(1,JG)- FXI(I)
1036 FNCONT(2,JG)=FNCONT(2,JG)- FYI(I)
1037 FNCONT(3,JG)=FNCONT(3,JG)- FZI(I)
1038 ELSE ! cas noeud remote en SPMD
1040 FNCONTI(NIN)%P(1,JG)=FNCONTI(NIN)%P(1,JG)-FXI(I)
1041 FNCONTI(NIN)%P(2,JG)=FNCONTI(NIN)%P(2,JG)-FYI(I)
1042 FNCONTI(NIN)%P(3,JG)=FNCONTI(NIN)%P(3,JG)-FZI(I)
1045#include "lockoff.inc"
1053 FSAVSUB1(J,JSUB)=ZERO
1063 DO WHILE(JJ<ADDSUBS(IN+1))
1065 DO WHILE(KK<ADDSUBM(IE+1))
1072 FSAVSUB1(1,JSUB)=FSAVSUB1(1,JSUB)+IMPX
1073 FSAVSUB1(2,JSUB)=FSAVSUB1(2,JSUB)+IMPY
1074 FSAVSUB1(3,JSUB)=FSAVSUB1(3,JSUB)+IMPZ
1076 FSAVSUB1(8,JSUB) =FSAVSUB1(8,JSUB) +ABS(IMPX)
1077 FSAVSUB1(9,JSUB) =FSAVSUB1(9,JSUB) +ABS(IMPY)
1078 FSAVSUB1(10,JSUB)=FSAVSUB1(10,JSUB)+ABS(IMPZ)
1080 FSAVSUB1(11,JSUB)=FSAVSUB1(11,JSUB)+FNI(I)*DT12
1083 ELSE IF(KSUB<JSUB)THEN
1102 JJ =ADDSUBSFI(NIN)%P(NN)
1104 DO WHILE(JJ<ADDSUBSFI(NIN)%P(NN+1))
1105 JSUB=LISUBSFI(NIN)%P(JJ)
1106 DO WHILE(KK<ADDSUBM(IE+1))
1113 FSAVSUB1(1,JSUB)=FSAVSUB1(1,JSUB)+IMPX
1114 FSAVSUB1(2,JSUB)=FSAVSUB1(2,JSUB)+IMPY
1115 FSAVSUB1(3,JSUB)=FSAVSUB1(3,JSUB)+IMPZ
1117 FSAVSUB1(8,JSUB) =FSAVSUB1(8,JSUB) +ABS(IMPX)
1118 FSAVSUB1(9,JSUB) =FSAVSUB1(9,JSUB) +ABS(IMPY)
1119 FSAVSUB1(10,JSUB)=FSAVSUB1(10,JSUB)+ABS(IMPZ)
1121 FSAVSUB1(11,JSUB)=FSAVSUB1(11,JSUB)+FNI(I)*DT12
1124 ELSE IF(KSUB<JSUB)THEN
1148 ELSEIF (MFROT==1) THEN
1151 AA = N1(I)*VX(I) + N2(I)*VY(I) + N3(I)*VZ(I)
1152 V2 = (VX(I) - N1(I)*AA)**2
1153 . + (VY(I) - N2(I)*AA)**2
1154 . + (VZ(I) - N3(I)*AA)**2
1155 VV = SQRT(MAX(EM30,V2))
1162 AX = AY1*AZ2 - AZ1*AY2
1163 AY = AZ1*AX2 - AX1*AZ2
1164 AZ = AX1*AY2 - AY1*AX2
1165 AREA = HALF*SQRT(AX*AX+AY*AY+AZ*AZ)
1167 XMU(I) = FRIC + (FROT_P(1) + FROT_P(4)*P ) * P
1168 . +(FROT_P(2) + FROT_P(3)*P) * VV + FROT_P(5)*V2
1170 ELSEIF(MFROT==2)THEN
1173 AA = N1(I)*VX(I) + N2(I)*VY(I) + N3(I)*VZ(I)
1174 V2 = (VX(I) - N1(I)*AA)**2
1175 . + (VY(I) - N2(I)*AA)**2
1176 . + (VZ(I) - N3(I)*AA)**2
1177 VV = SQRT(MAX(EM30,V2))
1184 AX = AY1*AZ2 - AZ1*AY2
1185 AY = AZ1*AX2 - AX1*AZ2
1186 AZ = AX1*AY2 - AY1*AX2
1187 AREA = HALF*SQRT(AX*AX+AY*AY+AZ*AZ)
1190 . + FROT_P(1)*EXP(FROT_P(2)*VV)*P*P
1191 . + FROT_P(3)*EXP(FROT_P(4)*VV)*P
1192 . + FROT_P(5)*EXP(FROT_P(6)*VV)
1194 ELSEIF (MFROT==3) THEN
1197 AA = N1(I)*VX(I) + N2(I)*VY(I) + N3(I)*VZ(I)
1198 V2 = (VX(I) - N1(I)*AA)**2
1199 . + (VY(I) - N2(I)*AA)**2
1200 . + (VZ(I) - N3(I)*AA)**2
1201 VV = SQRT(MAX(EM30,V2))
1202.AND.
IF(VV>=0VV<=FROT_P(5)) THEN
1203 DMU = FROT_P(3)-FROT_P(1)
1204 VV1 = VV / FROT_P(5)
1205 XMU(I) = FROT_P(1)+ DMU*VV1*(TWO-VV1)
1206.AND.
ELSEIF(VV>FROT_P(5)VV<FROT_P(6)) THEN
1207 DMU = FROT_P(4)-FROT_P(3)
1208 VV1 = (VV - FROT_P(5))/(FROT_P(6)-FROT_P(5))
1209 XMU(I) = FROT_P(3)+ DMU * (THREE-TWO*VV1)*VV1**2
1211 DMU = FROT_P(2)-FROT_P(4)
1212 VV2 = (VV - FROT_P(6))**2
1213 XMU(I) = FROT_P(2) - DMU / (ONE + DMU*VV2)
1216 ELSEIF(MFROT==4)THEN
1219 AA = N1(I)*VX(I) + N2(I)*VY(I) + N3(I)*VZ(I)
1220 V2 = (VX(I) - N1(I)*AA)**2
1221 . + (VY(I) - N2(I)*AA)**2
1222 . + (VZ(I) - N3(I)*AA)**2
1223 VV = SQRT(MAX(EM30,V2))
1225 . + (FRIC-FROT_P(1))*EXP(-FROT_P(2)*VV)
1226 XMU(I) = MAX(XMU(I),EM30)
1246 ALPHA = MAX(ONE,ALPHA0*DT12)
1251 FX = STIF0(I)*VX(I)*DT12
1252 FY = STIF0(I)*VY(I)*DT12
1253 FZ = STIF0(I)*VZ(I)*DT12
1255 FX = CAND_FX(INDEX(I)) + ALPHA*FX
1256 FY = CAND_FY(INDEX(I)) + ALPHA*FY
1257 FZ = CAND_FZ(INDEX(I)) + ALPHA*FZ
1259 FTN = FX*N1(I) + FY*N2(I) + FZ*N3(I)
1263 FT = FX*FX + FY*FY + FZ*FZ
1266 FN = FXI(I)**2+FYI(I)**2+FZI(I)**2
1268 BETA = MIN(ONE,XMU(I)*SQRT(FN/FT))
1274 CAND_FX(INDEX(I)) = FXT(I)
1275 CAND_FY(INDEX(I)) = FYT(I)
1276 CAND_FZ(INDEX(I)) = FZT(I)
1280 FXI(I)=FXI(I) + FXT(I)
1281 FYI(I)=FYI(I) + FYT(I)
1282 FZI(I)=FZI(I) + FZT(I)
1284 . + DT1*(VX(I)*FXT(I)+VY(I)*FYT(I)+VZ(I)*FZT(I))
1292 ALPHA = MAX(ONE,ALPHA0*DT12)
1304 V2 = VX(I)**2 + VY(I)**2 + VZ(I)**2
1305 VIS2(I) = VISCF * VIS2(I)
1306 FM2 = (XMU(I)*FNI(I))**2
1308 A2 = MIN(F2,FM2) / MAX(EM30,F2)
1309 AA = SQRT(A2 * VIS2(I))
1314 FXT(I) = ALPHA*FX + ALPHI*CAND_FX(INDEX(I))
1315 FYT(I) = ALPHA*FY + ALPHI*CAND_FY(INDEX(I))
1316 FZT(I) = ALPHA*FZ + ALPHI*CAND_FZ(INDEX(I))
1317 CAND_FX(INDEX(I)) = FXT(I)
1318 CAND_FY(INDEX(I)) = FYT(I)
1319 CAND_FZ(INDEX(I)) = FZT(I)
1322 FXI(I) = FXI(I) + FXT(I)
1323 FYI(I) = FYI(I) + FYT(I)
1324 FZI(I) = FZI(I) + FZT(I)
1326 . + DT1*(VX(I)*FXT(I)+VY(I)*FYT(I)+VZ(I)*FZT(I))
1339 V2 = VX(I)**2 + VY(I)**2 + VZ(I)**2
1340 VIS2(I) = VISCF * VIS2(I)
1341 FM2 = (XMU(I)*FNI(I))**2
1343 A2 = MIN(F2,FM2) / MAX(EM30,F2)
1344 AA = SQRT(A2 * VIS2(I))
1349 FXI(I)=FXI(I) + FXT(I)
1350 FYI(I)=FYI(I) + FYT(I)
1351 FZI(I)=FZI(I) + FZT(I)
1352 ECONVT = ECONVT + AA * V2 * DT1
1356.AND.
IF((ANIM_V(12)+OUTP_V(12)+H3D_DATA%N_VECT_PCONT>0
1357.AND..OR..OR..AND..OR.
. ((TT>=OUTPUT%TANIM TT<=OUTPUT%TANIM_STOP)TT>=TOUTP(TT>=H3D_DATA%TH3DTT<=H3D_DATA%TH3D_STOP)
1358.AND..OR.
. (MANIM>=4MANIM<=15)H3D_DATA%MH3D/=0))
1359.OR.
. H3D_DATA%N_VECT_PCONT_MAX>0)THEN
1360#include "lockon.inc"
1362 FTCONT(1,IX1G(I)) =FTCONT(1,IX1G(I)) + FXT(I)*H1(I)
1363 FTCONT(2,IX1G(I)) =FTCONT(2,IX1G(I)) + FYT(I)*H1(I)
1364 FTCONT(3,IX1G(I)) =FTCONT(3,IX1G(I)) + FZT(I)*H1(I)
1365 FTCONT(1,IX2G(I)) =FTCONT(1,IX2G(I)) + FXT(I)*H2(I)
1366 FTCONT(2,IX2G(I)) =FTCONT(2,IX2G(I)) + FYT(I)*H2(I)
1367 FTCONT(3,IX2G(I)) =FTCONT(3,IX2G(I)) + FZT(I)*H2(I)
1368 FTCONT(1,IX3G(I)) =FTCONT(1,IX3G(I)) + FXT(I)*H3(I)
1369 FTCONT(2,IX3G(I)) =FTCONT(2,IX3G(I)) + FYT(I)*H3(I)
1370 FTCONT(3,IX3G(I)) =FTCONT(3,IX3G(I)) + FZT(I)*H3(I)
1371 FTCONT(1,IX4G(I)) =FTCONT(1,IX4G(I)) + FXT(I)*H4(I)
1372 FTCONT(2,IX4G(I)) =FTCONT(2,IX4G(I)) + FYT(I)*H4(I)
1373 FTCONT(3,IX4G(I)) =FTCONT(3,IX4G(I)) + FZT(I)*H4(I)
1377 FTCONT(1,JG)=FTCONT(1,JG)- FXT(I)
1378 FTCONT(2,JG)=FTCONT(2,JG)- FYT(I)
1379 FTCONT(3,JG)=FTCONT(3,JG)- FZT(I)
1380 ELSE ! cas noeud remote en SPMD
1382 FTCONTI(NIN)%P(1,JG)=FTCONTI(NIN)%P(1,JG)-FXT(I)
1383 FTCONTI(NIN)%P(2,JG)=FTCONTI(NIN)%P(2,JG)-FYT(I)
1384 FTCONTI(NIN)%P(3,JG)=FTCONTI(NIN)%P(3,JG)-FZT(I)
1387#include "lockoff.inc"
1401 FSAV12=FSAV12+ABS(IMPX)
1402 FSAV13=FSAV13+ABS(IMPY)
1403 FSAV14=FSAV14+ABS(IMPZ)
1404 FSAV15=FSAV15+SQRT(IMPX*IMPX+IMPY*IMPY+IMPZ*IMPZ)
1406#include "lockon.inc"
1407 FSAV(4) = FSAV(4) + FSAV4
1408 FSAV(5) = FSAV(5) + FSAV5
1409 FSAV(6) = FSAV(6) + FSAV6
1411 FSAV(12) = FSAV(12) + FSAV12
1412 FSAV(13) = FSAV(13) + FSAV13
1413 FSAV(14) = FSAV(14) + FSAV14
1414 FSAV(15) = FSAV(15) + FSAV15
1415#include "lockoff.inc"
1417 IF(ISENSINT(1)/=0) THEN
1419 FSAVPARIT(1,4,I+NFT) = FXT(I)
1420 FSAVPARIT(1,5,I+NFT) = FYT(I)
1421 FSAVPARIT(1,6,I+NFT) = FZT(I)
1436 DO WHILE(JJ<ADDSUBS(IN+1))
1438 DO WHILE(KK<ADDSUBM(IE+1))
1445 FSAVSUB1(4,JSUB)=FSAVSUB1(4,JSUB)+IMPX
1446 FSAVSUB1(5,JSUB)=FSAVSUB1(5,JSUB)+IMPY
1447 FSAVSUB1(6,JSUB)=FSAVSUB1(6,JSUB)+IMPZ
1452 FSAVSUB1(12,JSUB)=FSAVSUB1(12,JSUB)+ABS(IMPX)
1453 FSAVSUB1(13,JSUB)=FSAVSUB1(13,JSUB)+ABS(IMPY)
1454 FSAVSUB1(14,JSUB)=FSAVSUB1(14,JSUB)+ABS(IMPZ)
1456 FSAVSUB1(15,JSUB)= FSAVSUB1(15,JSUB)
1457 . +SQRT(IMPX*IMPX+IMPY*IMPY+IMPZ*IMPZ)
1460 ELSE IF(KSUB<JSUB)THEN
1480 JJ =ADDSUBSFI(NIN)%P(NN)
1482 DO WHILE(JJ<ADDSUBSFI(NIN)%P(NN+1))
1483 JSUB=LISUBSFI(NIN)%P(JJ)
1484 DO WHILE(KK<ADDSUBM(IE+1))
1491 FSAVSUB1(4,JSUB)=FSAVSUB1(4,JSUB)+IMPX
1492 FSAVSUB1(5,JSUB)=FSAVSUB1(5,JSUB)+IMPY
1493 FSAVSUB1(6,JSUB)=FSAVSUB1(6,JSUB)+IMPZ
1498 FSAVSUB1(12,JSUB)=FSAVSUB1(12,JSUB)+ABS(IMPX)
1499 FSAVSUB1(13,JSUB)=FSAVSUB1(13,JSUB)+ABS(IMPY)
1500 FSAVSUB1(14,JSUB)=FSAVSUB1(14,JSUB)+ABS(IMPZ)
1502 FSAVSUB1(15,JSUB)= FSAVSUB1(15,JSUB)
1503 . +SQRT(IMPX*IMPX+IMPY*IMPY+IMPZ*IMPZ)
1506 ELSE IF(KSUB<JSUB)THEN
1520#include "lockon.inc"
1524 FSAVSUB(J,NSUB)=FSAVSUB(J,NSUB)+FSAVSUB1(J,JSUB)
1527#include "lockoff.inc"
1530#include "lockon.inc"
1531 ECONTV = ECONTV + ECONVT
1532 ECONT = ECONT + ECONTT
1533#include "lockoff.inc"
1536.OR.
IF( (VISC/=ZEROVISCF/=ZERO)
1537.AND..OR.
. (IVIS2==0IVIS2==1))THEN
1540 IF(MSI(I)==ZERO)THEN
1546 CY = EIGHT*MSI(I)*KT(I)
1547 AUX = SQRT(CX+CY)+TWO*C(I)
1548 STV(I)= KT(I)*AUX*AUX/MAX(CY,EM30)
1549 AUX = TWO*CF(I)*CF(I)/MAX(MSI(I),EM20)
1561 IF(MS(J1)==ZERO)THEN
1566 K1(I)=KT(I)*ABS(H1(I))
1567 C1(I)=C(I)*ABS(H1(I))
1568 CX =FOUR*C1(I)*C1(I)
1569 CY =EIGHT*MS(J1)*K1(I)
1570 AUX = SQRT(CX+CY)+TWO*C1(I)
1571 ST1(I)= K1(I)*AUX*AUX/MAX(CY,EM30)
1572 CFI = CF(I)*ABS(H1(I))
1573 AUX = TWO*CFI*CFI/MAX(MS(J1),EM20)
1582 IF(MS(J1)==ZERO)THEN
1587 K2(I)=KT(I)*ABS(H2(I))
1588 C2(I)=C(I)*ABS(H2(I))
1589 CX =FOUR*C2(I)*C2(I)
1590 CY =EIGHT*MS(J1)*K2(I)
1591 AUX = SQRT(CX+CY)+TWO*C2(I)
1592 ST2(I)= K2(I)*AUX*AUX/MAX(CY,EM30)
1593 CFI = CF(I)*ABS(H2(I))
1594 AUX = TWO*CFI*CFI/MAX(MS(J1),EM20)
1603 IF(MS(J1)==ZERO)THEN
1608 K3(I)=KT(I)*ABS(H3(I))
1609 C3(I)=C(I)*ABS(H3(I))
1610 CX =FOUR*C3(I)*C3(I)
1611 CY =EIGHT*MS(J1)*K3(I)
1612 AUX = SQRT(CX+CY)+TWO*C3(I)
1613 ST3(I)= K3(I)*AUX*AUX/MAX(CY,EM30)
1614 CFI = CF(I)*ABS(H3(I))
1615 AUX = TWO*CFI*CFI/MAX(MS(J1),EM20)
1624 IF(MS(J1)==ZERO)THEN
1629 K4(I)=KT(I)*ABS(H4(I))
1630 C4(I)=C(I)*ABS(H4(I))
1631 CX =FOUR*C4(I)*C4(I)
1632 CY =EIGHT*MS(J1)*K4(I)
1633 AUX = SQRT(CX+CY)+TWO*C4(I)
1634 ST4(I)= K4(I)*AUX*AUX/MAX(CY,EM30)
1635 CFI = CF(I)*ABS(H4(I))
1636 AUX = TWO*CFI*CFI/MAX(MS(J1),EM20)
1650 K1(I) =STIF(I)*ABS(H1(I))
1653 K2(I) =STIF(I)*ABS(H2(I))
1656 K3(I) =STIF(I)*ABS(H3(I))
1659 K4(I) =STIF(I)*ABS(H4(I))
1666.OR..OR.
IF(IDTMIN(10)==1IDTMIN(10)==2
1667.OR.
. IDTMIN(10)==5IDTMIN(10)==6)THEN
1674.AND..AND.
IF(MAS2>ZEROSTIF(I)>ZERO
1675.AND.
. IRB(KINI(I))==0IRB2(KINI(I))==0)THEN
1676 DTMI(I) = MIN(DTMI(I),DTFAC1(10)*SQRT(MAS2/STIF(I)))
1678 MAS2 = TWO* MS(IX1G(I))
1679.AND..AND.
IF(MAS2>ZEROH1(I)*STIF(I)>ZERO
1680.AND.
. IRB(KINET(IX1G(I)))==0IRB2(KINET(IX1G(I)))==0)THEN
1681 DTMI(I) = MIN(DTMI(I),DTFAC1(10)*SQRT(MAS2/(H1(I)*STIF(I))))
1683 MAS2 = TWO * MS(IX2G(I))
1684.AND..AND.
IF(MAS2>ZEROH2(I)*STIF(I)>ZERO
1685.AND.
. IRB(KINET(IX2G(I)))==0IRB2(KINET(IX2G(I)))==0)THEN
1686 DTMI(I) = MIN(DTMI(I),DTFAC1(10)*SQRT(MAS2/(H2(I)*STIF(I))))
1688 MAS2 = TWO* MS(IX3G(I))
1689.AND..AND.
IF(MAS2>ZEROH3(I)*STIF(I)>ZERO
1690.AND.
. IRB(KINET(IX3G(I)))==0IRB2(KINET(IX3G(I)))==0)THEN
1691 DTMI(I) = MIN(DTMI(I),DTFAC1(10)*SQRT(MAS2/(H3(I)*STIF(I))))
1693 MAS2 = TWO * MS(IX4G(I))
1694.AND..AND.
IF(MAS2>ZEROH4(I)*STIF(I)>ZERO
1695.AND.
. IRB(KINET(IX4G(I)))==0IRB2(KINET(IX4G(I)))==0)THEN
1696 DTMI(I) = MIN(DTMI(I),DTFAC1(10)*SQRT(MAS2/(H4(I)*STIF(I))))
1698 DTMI0 = MIN(DTMI0,DTMI(I))
1706.AND..AND.
IF(MAS2>ZEROSTV(I)>ZERO
1707.AND.
. IRB(KINI(I))==0IRB2(KINI(I))==0)THEN
1708 DTMI(I) = MIN(DTMI(I),DTFAC1(10)*SQRT(MAS2/STV(I)))
1710 MAS2 = TWO * MS(IX1G(I))
1711.AND..AND.
IF(MAS2>ZEROST1(I)>ZERO
1712.AND.
. IRB(KINET(IX1G(I)))==0IRB2(KINET(IX1G(I)))==0)THEN
1713 DTMI(I) = MIN(DTMI(I),DTFAC1(10)*SQRT(MAS2/(ST1(I))))
1715 MAS2 = TWO * MS(IX2G(I))
1716.AND..AND.
IF(MAS2>ZEROST2(I)>ZERO
1717.AND.
. IRB(KINET(IX2G(I)))==0IRB2(KINET(IX2G(I)))==0)THEN
1718 DTMI(I) = MIN(DTMI(I),DTFAC1(10)*SQRT(MAS2/(ST2(I))))
1720 MAS2 = TWO * MS(IX3G(I))
1721.AND..AND.
IF(MAS2>ZEROST3(I)>ZERO
1722.AND.
. IRB(KINET(IX3G(I)))==0IRB2(KINET(IX3G(I)))==0)THEN
1723 DTMI(I) = MIN(DTMI(I),DTFAC1(10)*SQRT(MAS2/(ST3(I))))
1725 MAS2 = TWO * MS(IX4G(I))
1726.AND..AND.
IF(MAS2>ZEROST4(I)>ZERO
1727.AND.
. IRB(KINET(IX4G(I)))==0IRB2(KINET(IX4G(I)))==0)THEN
1728 DTMI(I) = MIN(DTMI(I),DTFAC1(10)*SQRT(MAS2/(ST4(I))))
1730 DTMI0 = MIN(DTMI0,DTMI(I))
1733 IF(DTMI0<=DTMIN1(10))THEN
1735 IF(DTMI(I)<=DTMIN1(10))THEN
1740 NI = ITAFI(NIN)%P(-JG)
1742 IF(IDTMIN(10)==1)THEN
1743#include "lockon.inc"
1744 WRITE(IOUT,'(a,e12.4,a,i10)
')
1745 . ' **warning minimum time step
',DTMI(I),
1746 . ' in
INTERFACE ',NOINT
1747 WRITE(IOUT,'(a,i10)
') ' secondary node :
',NI
1748 WRITE(IOUT,'(a,4i10)
')' main nodes :
',
1749 . ITAB(IX1G(I)),ITAB(IX2G(I)),ITAB(IX3G(I)),ITAB(IX4G(I))
1750#include "lockoff.inc"
1752 ELSEIF(IDTMIN(10)==2)THEN
1753#include "lockon.inc"
1754 WRITE(IOUT,'(a,e12.4,a,i10)
')
1755 . ' **warning minimum time step
',DTMI(I),
1756 . ' in
INTERFACE ',NOINT
1757 WRITE(IOUT,'(a,i10,a,i10)
')' delete secondary node
',
1758 . NI,' from
INTERFACE ',NOINT
1759 WRITE(IOUT,'(a,4i10)
')' main nodes :
',
1760 . ITAB(IX1G(I)),ITAB(IX2G(I)),ITAB(IX3G(I)),ITAB(IX4G(I))
1762 STFA(NSV(CN_LOC(I))) = -ABS(STFA(NSV(CN_LOC(I))))
1764 STIFI(NIN)%P(-JG) = -ABS(STIFI(NIN)%P(-JG))
1766#include "lockoff.inc"
1768 ELSEIF(IDTMIN(10)==5)THEN
1769#include "lockon.inc"
1770 WRITE(IOUT,'(a,e12.4,a,i10)
')
1771 . ' **warning minimum time step
',DTMI(I),
1772 . ' in
INTERFACE ',NOINT
1773 WRITE(IOUT,'(a,i10)
') ' secondary node :
',NI
1774 WRITE(IOUT,'(a,4i10)
')' main nodes : ',
1775 . itab(ix1g(i)),itab(ix2g(i)),itab(ix3g(i)),itab(ix4g(i))
1776#include "lockoff.inc"
1778 ELSEIF(idtmin(10)==6.AND.ilagm==2)
THEN
1779 IF(kinet(jg)+kinet(ix1g(i))+kinet(ix2g(i))
1780 . +kinet(ix3g(i))+kinet(ix4g(i))==0 )
THEN
1781 cand_n(index(i)) = -iabs(cand_n(index(i)))
1819#include "lockon.inc"
1826 daanc6(1,k,il) = daanc6(1,k,il) - fx6(k,i)
1827 daanc6(2,k,il) = daanc6(2,k,il) - fy6(k,i)
1828 daanc6(3,k,il) = daanc6(3,k,il) - fz6(k,i)
1851 daanc6(1,k,il) = daanc6(1,k,il) + fx6(k,i)
1852 daanc6(2,k,il) = daanc6(2,k,il) + fy6(k,i)
1853 daanc6(3,k,il) = daanc6(3,k,il) + fz6(k,i)
1863 daanc6(1,k,il) = daanc6(1,k,il) + fx6(k,i)
1864 daanc6(2,k,il) = daanc6(2,k,il) + fy6(k,i)
1865 daanc6(3,k,il) = daanc6(3,k,il) + fz6(k,i)
1875 daanc6(1,k,il) = daanc6(1,k,il) + fx6(k,i)
1876 daanc6(2,k,il) = daanc6(2,k,il) + fy6(k,i)
1877 daanc6(3,k,il) = daanc6(3,k,il) + fz6(k,i)
1887 daanc6(1,k,il) = daanc6(1,k,il) + fx6(k,i)
1888 daanc6(2,k,il) = daanc6(2,k,il) + fy6(k,i)
1889 daanc6(3,k,il) = daanc6(3,k,il) + fz6(k,i)
1892#include "lockoff.inc"
1899 IF(gapv(i) > gapr(i))
THEN
1903 xsa = n1(i)*(dxanc(1,il)-h1(i)*dxanc(1,ix1l(i))
1904 . -h2(i)*dxanc(1,ix2l(i))
1905 . -h3(i)*dxanc(1,ix3l(i))
1906 . -h4(i)*dxanc(1,ix4l(i)))
1907 . + n2(i)*(dxanc(2,il)-h1(i)*dxanc(2,ix1l(i))
1908 . -h2(i)*dxanc(2,ix2l(i))
1909 . -h3(i)*dxanc(2,ix3l(i))
1910 . -h4(i)*dxanc(2,ix4l(i)))
1911 . + n3(i)*(dxanc(3,il)-h1(i)*dxanc(3,ix1l(i))
1912 . -h2(i)*dxanc(3,ix2l(i))
1913 . -h3(i)*dxanc(3,ix3l(i))
1914 . -h4(i)*dxanc(3,ix4l(i)))
1922 xsa = n1(i)*(
dxancfi(nin)%P(1,il)-h1(i)*dxanc(1,ix1l(i))
1923 . -h2(i)*dxanc(1,ix2l(i))
1924 . -h3(i)*dxanc(1,ix3l(i))
1926 . + n2(i)*(
dxancfi(nin)%P(2,il)-h1(i)*dxanc(2,ix1l(i))
1927 . -h2(i)*dxanc(2,ix2l(i))
1928 . -h3(i)*dxanc(2,ix3l(i))
1929 . -h4(i)*dxanc(2,ix4l(i)))
1930 . + n3(i)*(
dxancfi(nin)%P(3,il)-h1(i)*dxanc(3,ix1l(i))
1931 . -h2(i)*dxanc(3,ix2l(i))
1932 . -h3(i)*dxanc(3,ix3l(i))
1933 . -h4(i)*dxanc(3,ix4l(i)))
1935 ps = pene(i) - xsa - gapv(i) + gapr(i)
1954 cand_fx(index(i)) = zero
1955 cand_fy(index(i)) = zero
1956 cand_fz(index(i)) = zero
1966 IF(intth == 0 .OR. iform == 0)
THEN
1974 ELSEIF(iform > 0)
THEN
1976 tm = h1(i)*temp(ix1g(i)) + h2(i)*temp(ix2g(i))
1977 . + h3(i)*temp(ix3g(i)) + h4(i)*temp(ix4g(i))
1981 ax1 = xa(1,ix3l(i)) - xa(1,ix1l(i))
1982 ay1 = xa(2,ix3l(i)) - xa(2,ix1l(i))
1983 az1 = xa(3,ix3l(i)) - xa(3,ix1l(i))
1984 ax2 = xa(1,ix4l(i)) - xa(1,ix2l(i))
1985 ay2 = xa(2,ix4l(i)) - xa(2,ix2l(i))
1986 az2 = xa(3,ix4l(i)) - xa(3,ix2l(i))
1988 ax = ay1*az2 - az1*ay2
1989 ay = az1*ax2 - ax1*az2
1990 az = ax1*ay2 - ay1*ax2
1992 area = one_over_8*sqrt(ax*ax+ay*ay+az*az)
1993 phi(i) =
area* (tm - ts)*dt1 / rstif
1994 phi1(i) = -phi(i) *h1(i)
1995 phi2(i) = -phi(i) *h2(i)
1996 phi3(i) = -phi(i) *h3(i)
1997 phi4(i) = -phi(i) *h4(i)
2003#include "mic_lockon.inc"
2012#include "mic_lockoff.inc"
2015 IF(idtmins==2.OR.idtmins_int/=0)
THEN
2017 CALL i7sms2(jlt ,ix1g ,ix2g ,ix3g ,ix4g ,
2018 2 nsvg ,h1 ,h2 ,h3 ,h4 ,stif ,
2019 3 nin ,noint ,mskyi_sms, iskyi_sms,nsms ,
2020 4 kt ,c ,cf ,dtmini,dti )
2028 IF(idtmins_int/=0)
THEN
2036 CALL i7ass3(jlt ,ix1g ,ix2g ,ix3g ,ix4g ,
2037 2 nsvg ,h1 ,h2 ,h3 ,h4 ,stif ,
2038 3 fx1 ,fy1 ,fz1 ,fx2 ,fy2 ,fz2 ,
2039 4 fx3 ,fy3 ,fz3 ,fx4 ,fy4 ,fz4 ,
2040 5 fxi ,fyi ,fzi ,a ,stifn)
2042 CALL i7ass35(jlt ,ix1g ,ix2g ,ix3g ,ix4g ,
2043 2 nsvg ,h1 ,h2 ,h3 ,h4 ,stif ,
2044 3 fx1 ,fy1 ,fz1 ,fx2 ,fy2 ,fz2 ,
2045 4 fx3 ,fy3 ,fz3 ,fx4 ,fy4 ,fz4 ,
2046 5 fxi ,fyi ,fzi ,a ,stifn,viscn,
2047 6 ks ,k1 ,k2 ,k3 ,k4 ,cs ,
2050 ELSEIF(iparit==0)
THEN
2052 CALL i7ass0(jlt ,ix1g ,ix2g ,ix3g ,ix4g ,
2053 2 nsvg ,h1 ,h2 ,h3 ,h4 ,stif ,
2054 3 fx1 ,fy1 ,fz1 ,fx2 ,fy2 ,fz2 ,
2055 4 fx3 ,fy3 ,fz3 ,fx4 ,fy4 ,fz4 ,
2056 5 fxi ,fyi ,fzi ,a ,stifn ,nin ,
2057 6 intth ,phi ,fthe ,phi1 , phi2 ,phi3 ,
2058 7 phi4 ,bid ,bid ,jtask,ibid ,ibid )
2062 CALL i7ass05(jlt ,ix1g ,ix2g ,ix3g ,ix4g ,
2063 2 nsvg ,h1 ,h2 ,h3 ,h4 ,
2064 3 fx1 ,fy1 ,fz1 ,fx2 ,fy2 ,fz2 ,
2065 4 fx3 ,fy3 ,fz3 ,fx4 ,fy4 ,fz4 ,
2066 5 fxi ,fyi ,fzi ,a ,stifn ,viscn ,
2067 6 ks ,k1 ,k2 ,k3 ,k4 ,cs ,
2070 9 bid ,bid ,ibid ,ibid )
2075 CALL i7ass2(jlt ,ix1g ,ix2g ,ix3g ,ix4g ,
2076 2 nsvg ,h1 ,h2 ,h3 ,h4 ,stif ,
2077 3 fx1 ,fy1 ,fz1 ,fx2 ,fy2 ,fz2 ,
2078 4 fx3 ,fy3 ,fz3 ,fx4 ,fy4 ,fz4 ,
2079 5 fxi ,fyi ,fzi ,fskyi,isky ,niskyfi,
2080 6 nin ,noint ,intth,phi ,ftheskyi,phi1,
2081 7 phi2 ,phi3 , phi4,bid ,bid ,
2084 CALL i7ass25(jlt ,ix1g ,ix2g ,ix3g ,ix4g ,
2085 2 nsvg ,h1 ,h2 ,h3 ,h4 ,
2086 3 fx1 ,fy1 ,fz1 ,fx2 ,fy2 ,fz2 ,
2087 4 fx3 ,fy3 ,fz3 ,fx4 ,fy4 ,fz4 ,
2088 5 fxi ,fyi ,fzi ,fskyi,niskyfi,nin ,
2089 6 ks ,k1 ,k2 ,k3 ,k4 ,cs ,
2090 7 c1 ,c2 ,c3 ,c4 ,isky ,noint ,
2091 8 intth ,phi ,ftheskyi,phi1,phi2 ,phi3,
2092 9 phi4 ,bid ,bid ,ibid ,ibid )
2096 IF(anim_v(4)+outp_v(4)+h3d_data%N_VECT_CONT>0)
THEN
2097#include "lockon.inc"
2100 fcont(1,ix1g(i)) =fcont(1,ix1g(i)) + fx1(i)
2101 fcont(2,ix1g(i)) =fcont(2,ix1g(i)) + fy1(i)
2102 fcont(3,ix1g(i)) =fcont(3,ix1g(i)) + fz1(i)
2103 fcont(1,ix2g(i)) =fcont(1,ix2g(i)) + fx2(i)
2104 fcont(2,ix2g(i)) =fcont(2,ix2g(i)) + fy2(i)
2105 fcont(3,ix2g(i)) =fcont(3,ix2g(i)) + fz2(i)
2106 fcont(1,ix3g(i)) =fcont(1,ix3g(i)) + fx3(i)
2107 fcont(2,ix3g(i)) =fcont(2,ix3g(i)) + fy3(i)
2108 fcont(3,ix3g(i)) =fcont(3,ix3g(i)) + fz3
2109 fcont(1,ix4g(i)) =fcont(1,ix4g(i)) + fx4(i)
2110 fcont(2,ix4g(i)) =fcont(2,ix4g(i)) + fy4(i)
2111 fcont(3,ix4g(i)) =fcont(3,ix4g(i)) + fz4(i)
2115 fcont(1,jg)=fcont(1,jg)- fxi(i)
2116 fcont(2,jg)=fcont(2,jg)- fyi(i)
2117 fcont(3,jg)=fcont(3,jg)- fzi(i)
2121#include "lockoff.inc"
2126 IF(nstrf(1)+nstrf(2)/=0)
THEN
2128 nbinter=nstrf(k0+14)
2131 IF(nstrf(k1s)==noint)
THEN
2133#include "lockon.inc"
2137 IF(secfcum(4,ix1g(k),i)==1.)
THEN
2138 secfcum(1,ix1g(k),i)=secfcum(1,ix1g(k),i)-fx1(k)
2139 secfcum(2,ix1g(k),i)=secfcum(2,ix1g(k),i)-fy1(k)
2140 secfcum(3,ix1g(k),i)=secfcum(3,ix1g(k),i)-fz1(k)
2142 IF(secfcum(4,ix2g(k),i)==1.)
THEN
2143 secfcum(1,ix2g(k),i)=secfcum(1,ix2g(k),i)-fx2(k)
2144 secfcum(2,ix2g(k),i)=secfcum(2,ix2g(k),i)-fy2(k)
2145 secfcum(3,ix2g(k),i)=secfcum(3,ix2g(k),i)-fz2(k)
2147 IF(secfcum(4,ix3g(k),i)==1.)
THEN
2148 secfcum(1,ix3g(k),i)=secfcum(1,ix3g(k),i)-fx3(k)
2149 secfcum(2,ix3g(k),i)=secfcum(2,ix3g(k),i)-fy3(k)
2150 secfcum(3,ix3g(k),i)=secfcum(3,ix3g(k),i)-fz3(k)
2152 IF(secfcum(4,ix4g(k),i)==1.)
THEN
2153 secfcum(1,ix4g(k),i)=secfcum(1,ix4g(k),i)-fx4(k)
2154 secfcum(2,ix4g(k),i)=secfcum(2,ix4g(k),i)-fy4(k)
2155 secfcum(3,ix4g(k),i)=secfcum(3,ix4g(k),i)-fz4(k)
2161 IF(secfcum(4,jg,i)==1.)
THEN
2162 secfcum(1,jg,i)=secfcum(1,jg,i)+fxi(k)
2163 secfcum(2,jg,i)=secfcum(2,jg,i)+fyi(k)
2164 secfcum(3,jg,i)=secfcum(3,jg,i)+fzi(k)
2169#include "lockoff.inc"
2181 IF(ibag/=0.OR.iadm/=0)
THEN
2186 IF(fxi(i)/=zero.OR.fyi(i)/=zero.OR.fzi(i)/=zero)
THEN
2205#include "lockon.inc"
2208 rcontact(jg)=
min(rcontact(jg),rcurvi(i))
2210 rcontact(ix1g(i))=
min(rcontact(ix1g(i)),rcurvi(i))
2211 rcontact(ix2g(i))=
min(rcontact(ix2g(i)),rcurvi(i))
2212 rcontact(ix3g(i))=
min(rcontact(ix3g(i)),rcurvi(i))
2213 rcontact(ix4g(i))=
min(rcontact(ix4g(i)),rcurvi(i))
2214#include
"lockoff.inc"
2220#include "lockon.inc"
2223 pcontact(jg)=
max(pcontact(jg),pene(i)/(padm*gapv(i)))
2224 acontact(jg)=
min(acontact(jg),anglmi(i))
2226#include "lockoff.inc"
2234 IF(pene(i)==zero)
GOTO 400
2236 ibcs = ibcc - 8 * ibcm
2241 CALL ibcoff(ibcs,icodt(ig))
2246 CALL ibcoff(ibcm,icodt(ig))
2248 CALL ibcoff(ibcm,icodt(ig))
2250 CALL ibcoff(ibcm,icodt(ig))
2252 CALL ibcoff(ibcm,icodt(ig))
2397 1 JLT ,A ,V ,IBC ,ICODT ,
2398 2 FSAV ,GAP ,FRIC ,MS ,VISC ,
2399 3 VISCF ,NOINT ,ITAB ,CS_LOC ,CM_LOC ,
2400 4 STIGLO ,STIFN ,STIF ,FSKYI ,ISKY ,
2401 5 FCONT ,STFS ,STFM ,DT2T ,HS1 ,
2402 6 HS2 ,HM1 ,HM2 ,N1 ,N2 ,
2403 7 M1 ,M2 ,IVIS2 ,NELTST ,ITYPTST,
2404 8 NX ,NY ,NZ ,GAPV ,PENISE ,
2405 9 PENIME ,INACTI,NISKYFIE,NEWFRONT,ISECIN ,
2406 A NSTRF ,SECFCUM,VISCN ,NLINSA ,MS1 ,
2407 B MS2 ,MM1 ,MM2 ,VXS1 ,VYS1 ,
2408 C VZS1 ,VXS2 ,VYS2 ,VZS2 ,VXM1 ,
2409 D VYM1 ,VZM1 ,VXM2 ,VYM2 ,VZM2 ,
2410 E NIN ,N1L ,N2L ,M1L ,M2L ,
2411 F DAANC6 ,ALPHAK ,MSKYI_SMS,ISKYI_SMS,NSMS,
2412 G JTASK ,ISENSINT, FSAVPARIT ,NISUB ,NFT,
2422#include "implicit_f.inc"
2423#include "comlock.inc"
2427#include "mvsiz_p.inc"
2431#include "com01_c.inc"
2432#include "com04_c.inc"
2433#include "com06_c.inc"
2434#include "com08_c.inc"
2435#include "scr05_c.inc"
2436#include "scr07_c.inc"
2437#include "scr11_c.inc"
2438#include "scr14_c.inc"
2439#include "scr16_c.inc"
2440#include "scr18_c.inc"
2441#include "units_c.inc"
2442#include "parit_c.inc"
2443#include "impl1_c.inc"
2448 INTEGER NELTST,ITYPTST,JLT,IBC,IVIS2,,NLINSA,NISKYFIE,NIN
2449 INTEGER ICODT(*), ITAB(*), ISKY(*),
2450 . NOINT,NEWFRONT,ISECIN, NSTRF(*), ISKYI_SMS(*)
2451 INTEGER N1(MVSIZ), N2(MVSIZ), M1(MVSIZ), M2(MVSIZ),
2452 . N1L(MVSIZ),N2L(MVSIZ),M1L(MVSIZ),M2L(),
2453 . CS_LOC(MVSIZ), CM_LOC(), NSMS(MVSIZ),JTASK,
2454 . ISENSINT(*),NISUB,NFT
2457 . A(3,*), MS(*), V(3,*), FSAV(*),FCONT(3,*),
2458 . STFS(*),STFM(*),STIFN(*),FSKYI(LSKYI,NFSKYI),GAPV(*),
2459 . PENISE(2,*), PENIME(2,*),ALPHAK(3,*), MSKYI_SMS(*),
2460 . GAP, FRIC,VISC,VISCF,VIS,DT2T
2462 . (MVSIZ), HS2(MVSIZ), HM1(MVSIZ), HM2(MVSIZ),
2463 . NX(MVSIZ), NY(MVSIZ), NZ(MVSIZ), STIF(MVSIZ),
2464 . SECFCUM(7,NUMNOD,NSECT), VISCN(*),
2465 . MS1(MVSIZ),MS2(MVSIZ),MM1(MVSIZ),MM2(MVSIZ),
2466 . vxs1(mvsiz),vys1(mvsiz),vzs1(mvsiz),vxs2(mvsiz),vys2(mvsiz),
2467 . vzs2(mvsiz),vxm1(mvsiz),vym1(mvsiz),vzm1(mvsiz),vxm2(mvsiz),
2468 . vym2(mvsiz),vzm2(mvsiz),fsavparit(nisub+1,11,*)
2469 DOUBLE PRECISION DAANC6(3,6,*)
2470 TYPE(H3D_DATABASE) :: H3D_DATA
2474 INTEGER I, J1, J , K0,NBINTER,K1S,K, NI, IL, IG
2475 INTEGER NISKYL,NISKYL1,ISIGN
2477 . VX(MVSIZ), VY(MVSIZ), VZ(MVSIZ), VN(MVSIZ),
2478 . FXI(MVSIZ), FYI(MVSIZ), FZI(MVSIZ), FNI(MVSIZ),
2479 . FX1(MVSIZ), FX2(MVSIZ), FX3(MVSIZ), FX4(MVSIZ),
2480 . FY1(MVSIZ), FY2(MVSIZ), FY3(MVSIZ), FY4(MVSIZ),
2481 . FZ1(MVSIZ), FZ2(MVSIZ), FZ3(MVSIZ), FZ4(MVSIZ),
2482 . PENE(MVSIZ),MASMIN(MVSIZ),
2483 . VIS2(MVSIZ), DTMI(MVSIZ),
2484 . VNX, VNY, VNZ, AA, VMAX,S2,DIST,RDIST,
2485 . V2, FM2, DT1INV, VISCA, FAC, FF,
2486 . FX, FY, FZ, F2, MAS2, DTMI0,DTI,
2487 . FACM1, ECONTT, ECONVT, A2,MASM,
2488 . FSAV1, FSAV2, FSAV3, FSAV4, FSAV5, FSAV6,
2492 . ST1(MVSIZ),ST2(MVSIZ),ST3(MVSIZ),ST4(MVSIZ),
2493 . KT(MVSIZ),C(MVSIZ),CF(MVSIZ),
2494 . K1(MVSIZ),K2(MVSIZ),K3(MVSIZ),K4(MVSIZ),
2495 . C1(MVSIZ),C2(),C3(MVSIZ),C4(MVSIZ),
2498 . fx6(6,mvsiz), fy6(6,mvsiz), fz6(6,mvsiz)
2500 IF (iresp == 1)
THEN
2514 s2 = sqrt(nx(i)**2 + ny(i)**2 + nz(i)**2)
2515 pene(i) = gapv(i) - s2
2516 s2 = one/
max(em30,s2)
2522 IF(inacti==5.or.inacti==6)
THEN
2523#include "lockon.inc"
2525 pplus=half*(pene(i)+fiveem2*(gapv(i)-pene(i)))
2526 IF(cs_loc(i)<=nlinsa)
THEN
2527 penise(2,cs_loc(i)) =
max(penise(2,cs_loc(i)),pplus)
2529 ni = cs_loc(i)-nlinsa
2532 penime(2,cm_loc(i)) =
max(penime(2,cm_loc(i)),pplus)
2534#include "lockoff.inc"
2536 IF(cs_loc(i)<=nlinsa)
THEN
2537 pene(i) = pene(i) - penise(1,cs_loc(i)) - penime(1,cm_loc(i))
2538 pene(i) =
max(pene(i),zero)
2539 IF(pene(i)==zero)stif(i)=zero
2540 gapv(i) = gapv(i) - penise(1,cs_loc(i)) - penime(1,cm_loc(i))
2542 ni = cs_loc(i)-nlinsa
2543 pene(i) = pene(i) -
penfie(nin)%P(1,ni) - penime(1,cm_loc(i))
2544 pene(i) =
max(pene(i),zero)
2545 IF(pene(i)==zero)stif(i)=zero
2546 gapv(i) = gapv(i) -
penfie(nin)%P(1,ni) - penime(1,cm_loc(i))
2553 gapv(i) = zep9*gapv(i)
2554 vx(i) = hs1(i)*vxs1(i) + hs2(i)*vxs2(i)
2555 . - hm1(i)*vxm1(i) - hm2(i)*vxm2(i)
2556 vy(i) = hs1(i)*vys1(i) + hs2(i)*vys2(i)
2557 . - hm1(i)*vym1(i) - hm2(i)*vym2(i)
2558 vz(i) = hs1(i)*vzs1(i) + hs2(i)*vzs2(i)
2559 . - hm1(i)*vzm1(i) - hm2(i)*vzm2(i)
2560 vn(i) = nx(i)*vx(i) + ny(i)*vy(i) + nz(i)*vz(i)
2564 fac = gapv(i)/
max( em10,( gapv(i)-pene(i) ) )
2566 IF(( (gapv(i)-pene(i))/gapv(i) )<prec .AND.
2567 . stif(i)>zero )
THEN
2571#include "lockon.inc"
2572 IF(cs_loc(i)<=nlinsa)
THEN
2573 stfs(cs_loc(i)) = -abs(stfs(cs_loc(i)))
2574 WRITE(istdo,*)
'WARNING INTERFACE NB',noint
2575 WRITE(istdo,*)
'LINE CONNECTING NODES ',itab(n1(i)),
2576 . itab(n2(i)),
'DE-ACTIVATED FROM INTERFACE'
2577 WRITE(istdo,*)
'IMPACTED ON ',itab(m1(i)),itab(m2(i))
2578 WRITE(iout,*)
'WARNING INTERFACE NB',noint
2579 WRITE(iout,*)
'GAP=',gapv(i),
'PENE=',pene(i)
2580 WRITE(iout,*)
'LINE CONNECTING NODES ',itab(n1(i)),
2581 . itab(n2(i)),
'DE-ACTIVATED FROM INTERFACE'
2582 WRITE(iout,*)
'IMPACTED ON ',itab(m1(i)),itab(m2(i))
2584 ni = cs_loc(i)-nlinsa
2586 WRITE(istdo,*)
'WARNING INTERFACE NB'
2587 WRITE(istdo,*)
'LINE CONNECTING NODES ',
itafie(nin)%P(n1(i)),
2588 .
itafie(nin)%P(n2(i)),
'DE-ACTIVATED FROM INTERFACE'
2589 WRITE(iout,*)
'WARNING INTERFACE NB',noint
2590 WRITE(iout,*)
'GAP=',gapv(i),
'PENE=',pene(i)
2591 WRITE(iout,*)
'LINE CONNECTING NODES ',
itafie(nin)%P(n1(i)),
2592 .
itafie(nin)%P(n2(i)),
'DE-ACTIVATED FROM INTERFACE'
2594#include "lockoff.inc"
2598 econtt = econtt + half*stif(i)*gapv(i)**2 *( facm1 - one -
2600 stif(i) = half*stif(i) * fac
2601 fni(i)= -stif(i) * pene(i)
2607 dist=gapv(i)-pene(i)
2608 rdist = half*dist /
max(em30,-vn(i))
2609 dti =
min(rdist,dti)
2612 IF(dti<=dtmin1(10))
THEN
2614 dist=gapv(i)-pene(i)
2615 dti2 = half*dist /
max(em30,-vn(i))
2616 IF(dti2<=dtmin1(10))
THEN
2617#include "lockon.inc"
2618 IF(cs_loc(i)<=nlinsa)
THEN
2620 .
' **WARNING MINIMUM TIME STEP ',dti2,
2621 .
'IN INTERFACE NB',noint
2622 WRITE(iout,*)
'SECONDARY NODES NB',itab(n1(i)),
2624 WRITE(iout,*)
'MAIN NODES NB',itab(m1(i)),
2628 .
' **WARNING MINIMUM TIME STEP ',dti2,
2629 .
'IN INTERFACE NB',noint
2630 WRITE(iout,*)
'SECONDARY NODES NB',
itafie(nin)%P(n1(i)),
2632 WRITE(iout,*)
'MAIN NODES NB',itab(m1(i)),
2635#include "lockoff.inc"
2636 IF(idtmin(10)==1)
THEN
2638 ELSEIF(idtmin(10)==2)
THEN
2639#include "lockon.inc"
2640 WRITE(iout,*)
'REMOVE SECONDARY LINE FROM INTERFACE'
2641 IF(cs_loc(i)<=nlinsa)
THEN
2642 stfs(cs_loc(i)) = -abs(stfs(cs_loc(i)))
2644 ni = cs_loc(i)-nlinsa
2647#include "lockoff.inc"
2651 ELSEIF(idtmin(10)==5)
THEN
2666 IF(visc/=zero.OR.viscf/=zero)
THEN
2668 mas2 = ms1(i)*hs1(i)
2670 masm = mm1(i)*hm1(i)
2672 masmin(i) =
min(mas2,masm)
2673 vis2(i) = two * stif(i) *
min(mas2,masm)
2678 IF(ivis2==0.OR.ivis2==1)
THEN
2684 . vis2(i) = vis2(i)/(
max(em10,(gapv(i)-pene(i))/gapv(i)))
2688 IF(kdtint==0.AND.idtmins/=2)
THEN
2690 fac = stif(i) /
max(em30,stif(i))
2694 . visca**2 * two * masmin(i) *
max(zero,-vn(i)) /
2695 .
max((gapv(i) - pene(i)),em10) )
2696 stif(i) = stif(i) * gapv(i)/
max((gapv(i)-pene(i)),em10)
2697 stif(i) = stif(i) + ff * dt1inv
2698 stif(i) =
max(stif(i) ,fac*sqrt(viscf)*vis*dt1inv)
2699 ff =
min(ff * vn(i),-fni(i))
2701 fni(i) = fni(i) + ff
2707 fac = stif(i) /
max(em30,stif(i))
2711 . visca**2 * two * masmin(i) *
max(zero,-vn(i)) /
2712 .
max((gapv(i) - pene(i)),em10) )
2713 stif(i) = stif(i) * gapv(i) /
max((gapv(i) - pene(i)),em10)
2715 stif(i) = stif(i) + c(i) * dt1inv
2716 ff =
min(c(i) * vn(i),-fni
2718 fni(i) = fni(i) + ff
2719 cf(i) = fac*sqrt(viscf)*vis
2720 stif(i) =
max(stif(i) ,cf(i)*dt1inv)
2725 ELSEIF(ivis2==2)
THEN
2730 vis2(i) = vis2(i)/(
max(em10,(gapv(i)-pene(i))/gapv(i)))
2735 fac = stif(i) /
max(em30,stif(i))
2739 . visca**2 * two * masmin(i) * abs(vn(i)) /
2740 .
max((gapv(i) - pene(i)),em10) )
2741 stif(i) = stif(i) * gapv(i) /
max((gapv(i)-pene(i)),em10)
2742 stif(i) = stif(i) + two * ff * dt1inv
2743 stif(i) =
max(stif(i) ,fac*sqrt(viscf)*vis*dt1inv)
2744 ff =
min(ff * vn(i),-fni(i))
2745 fni(i) = fni(i) + ff
2747 ELSEIF(ivis2==3)
THEN
2752 fac = stif(i) /
max(em30,stif(i))
2754 ff = fac * ( visc * vis ) /
2755 .
max((gapv(i) - pene(i)),em10)
2756 stif(i) = stif(i) * gapv(i) /
max((gapv(i)-pene(i)),em10)
2757 stif(i) = stif(i) + two * ff * dt1inv
2758 stif(i) =
max(stif(i) ,fac*sqrt(viscf)*vis*dt1inv)
2759 ff =
min(ff * vn(i),-fni(i))
2760 fni(i) = fni(i) + ff
2762 ELSEIF(ivis2==4)
THEN
2768 stif(i) = stif(i) * gapv(i) /
max((gapv(i)-pene(i)),em10)
2769 stif(i) =
max(stif(i) ,fac*sqrt(viscf)*vis*dt1inv)
2771 ELSEIF(ivis2==5)
THEN
2778 mas2 = ms1(i)*hs1(i)
2780 masm = mm1(i)*hm1(i)
2782 vis = 2. * visc * dt1inv * masm * mas2 /
2783 .
max(em30,masm+mas2)
2784 stif(i) = stif(i) * gapv(i) /
max((gapv(i) -pene(i)),em10)
2785 stif(i) =
max(stif(i) ,fac*sqrt(viscf*vis2(i))*dt1inv)
2787 econvt = econvt +
min(zero,ff-fni(i)) * vn(i) * dt1
2788 fni(i) =
min(fni(i),ff)
2794 stif(i) = stif(i) * gapv(i) /
max((gapv(i) - pene(i)),em10)
2800#include "lockon.inc"
2803 IF(pene(i)>zero)isign=-1
2804 aaa = one-pene(i)/gapv(i)
2806 IF(pene(i)>zero.OR.alphak(2,il)<zero)isign=-1
2807 alphak(2,il)=isign*
min(abs(alphak(2,il)),aaa)
2809 IF(pene(i)>zero.OR.alphak(2,il)<zero)isign=-1
2810 alphak(2,il)=isign*
min(abs(alphak(2,il)),aaa)
2811 IF(cs_loc(i) <= nlinsa)
THEN
2813 IF(pene(i)>zero.OR.alphak(2,il)<zero)isign=-1
2814 alphak(2,il)=isign*
min(abs(alphak(2,il)),aaa)
2816 IF(pene(i)>zero.OR.alphak(2,il)<zero)isign=-1
2817 alphak(2,il)=isign*
min(abs(alphak(2,il)),aaa)
2821 IF(pene(i)>zero.OR.alphak(2,il)<zero)isign=-1
2824 IF(pene(i)>zero.OR.alphak(2,il)<zero)isign=-1
2828#include "lockoff.inc"
2839 fsav1=fsav1+fxi(i)*dt12
2840 fsav2=fsav2+fyi(i)*dt12
2841 fsav3=fsav3+fzi(i)*dt12
2844#include
"lockon.inc"
2845 fsav(1)=fsav(1)+fsav1
2846 fsav(2)=fsav(2)+fsav2
2847 fsav(3)=fsav(3)+fsav3
2848#include "lockoff.inc"
2850 IF(isensint(1)/=0)
THEN
2852 fsavparit(1,1,i+nft) = fxi(i)
2853 fsavparit(1,2,i+nft) = fyi(i)
2854 fsavparit(1,3,i+nft) = fzi(i)
2860 IF(fric*viscf/=0.)
THEN
2871 v2 = vx(i)**2 + vy(i)**2 + vz(i)**2
2872 vis2(i) = viscf * vis2(i)
2873 fm2 = (fric*fni(i))**2
2875 a2 =
min(f2,fm2) /
max(em30,f2)
2876 aa = sqrt(a2 * vis2(i))
2880 fsav4 = fsav4 + fx*dt12
2881 fsav5 = fsav5 + fy*dt12
2882 fsav6 = fsav6 + fz*dt12
2886 econvt = econvt + aa * v2 * dt1
2889#include "lockon.inc"
2890 fsav(4) = fsav(4) + fsav4
2891 fsav(5) = fsav(5) + fsav5
2892 fsav(6) = fsav(6) + fsav6
2893#include "lockoff.inc"
2895 IF(isensint(1)/=0)
THEN
2897 fm2 = (fric*fni(i))**2
2899 a2 =
min(f2,fm2) /
max(em30,f2)
2900 aa = sqrt(a2 * vis2(i))
2901 fsavparit(1,4,i+nft) = aa * vx(i)
2902 fsavparit(1,5,i+nft) = aa * vy(i)
2903 fsavparit(1,6,i+nft) = aa * vz(i)
2909#include "lockon.inc"
2910 econtv = econtv + econvt
2911 econt = econt + econtt
2912#include "lockoff.inc"
2916 fx1(i)=-fxi(i)*hs1(i)
2917 fy1(i)=-fyi(i)*hs1(i)
2918 fz1(i)=-fzi(i)*hs1(i)
2920 fx2(i)=-fxi(i)*hs2(i)
2921 fy2(i)=-fyi(i)*hs2(i)
2922 fz2(i)=-fzi(i)*hs2(i)
2924 fx3(i)=fxi(i)*hm1(i)
2925 fy3(i)=fyi(i)*hm1(i)
2926 fz3(i)=fzi(i)*hm1(i)
2928 fx4(i)=fxi(i)*hm2(i)
2929 fy4(i)=fyi(i)*hm2(i)
2930 fz4(i)=fzi(i)*hm2(i)
2936#include "mic_lockon.inc"
2938 IF(cs_loc(i)>nlinsa)
THEN
2939 ni = cs_loc(i)-nlinsa
2945#include "mic_lockoff.inc"
2949 stif(i) = two*stif(i)
2953 IF(kdtint==1.OR.idtmins==2)
THEN
2955 . .AND.(ivis2==0.OR.ivis2==1))
THEN
2959 IF(ms1(i)==zero)
THEN
2963 k1(i)=kt(i)*abs(hs1(i))
2964 c1(i)=c(i)*abs(hs1(i))
2965 cx =four*c1(i)*c1(i)
2966 cy =eight*ms1(i)*k1(i)
2967 aux = sqrt(cx+cy)+two*c1(i)
2968 st1(i)= k1(i)*aux*aux/
max(cy,em30)
2969 cfi = cf(i)*abs(hs1(i))
2970 aux = two*cfi*cfi/
max(ms1(i),em20)
2977 IF(ms2(i)==zero)
THEN
2981 k2(i)=kt(i)*abs(hs2(i))
2982 c2(i)=c(i)*abs(hs2(i))
2983 cx =four*c2(i)*c2(i)
2984 cy =eight*ms2(i)*k2(i)
2985 aux = sqrt(cx+cy)+two*c2(i)
2986 st2(i)= k2(i)*aux*aux/
max(cy,em30)
2987 cfi = cf(i)*abs(hs2(i))
2988 aux = two*cfi*cfi/
max(ms2(i),em20)
2995 IF(mm1(i)==zero)
THEN
2999 k3(i)=kt(i)*abs(hm1(i))
3000 c3(i)=c(i)*abs(hm1(i))
3001 cx =four*c3(i)*c3(i)
3002 cy =eight*mm1(i)*k3(i)
3003 aux = sqrt(cx+cy)+two*c3(i)
3004 st3(i)= k3(i)*aux*aux/
max(cy,em30)
3005 cfi = cf(i)*abs(hm1(i))
3006 aux = two*cfi*cfi/
max(mm1(i),em20)
3013 IF(mm2(i)==zero)
THEN
3017 k4(i)=kt(i)*abs(hm2(i))
3018 c4(i)=c(i)*abs(hm2(i))
3019 cx =four*c4(i)*c4(i)
3020 cy =eight*mm2(i)*k4(i)
3021 aux = sqrt(cx+cy)+two*c4(i)
3022 st4(i)= k4(i)*aux*aux/
max(cy,em30)
3023 cfi = cf(i)*abs(hm2(i))
3024 aux = two*cfi*cfi/
max(mm2(i),em20)
3033 k1(i) =stif(i)*abs(hs1(i))
3035 k2(i) =stif(i)*abs(hs2(i))
3037 k3(i) =stif(i)*abs(hm1(i))
3039 k4(i) =stif(i)*abs(hm2(i))
3050#include "lockon.inc"
3052 IF(cs_loc(i)<=nlinsa)
THEN
3057 daanc6(1,k,il) = daanc6(1,k,il) + fx6(k,i)
3058 daanc6(2,k,il) = daanc6(2,k,il) + fy6(k,i)
3059 daanc6(3,k,il) = daanc6(3,k,il) + fz6(k,i)
3075#include "lockoff.inc"
3079#include "lockon.inc"
3081 IF(cs_loc(i)<=nlinsa)
THEN
3086 daanc6(1,k,il) = daanc6(1,k,il) + fx6(k,i)
3087 daanc6(2,k,il) = daanc6(2,k,il) + fy6(k,i)
3088 daanc6(3,k,il) = daanc6(3,k,il) + fz6(k,i)
3104#include "lockoff.inc"
3111#include "lockon.inc"
3115 daanc6(1,k,il) = daanc6(1,k,il) + fx6(k,i)
3116 daanc6(2,k,il) = daanc6(2,k,il) + fy6(k,i)
3117 daanc6(3,k,il) = daanc6(3,k,il) + fz6(k,i)
3120#include "lockoff.inc"
3124#include "lockon.inc"
3128 daanc6(1,k,il) = daanc6(1,k,il) + fx6(k,i)
3129 daanc6(2,k,il) = daanc6(2,k,il) + fy6(k,i)
3130 daanc6(3,k,il) = daanc6(3,k,il) + fz6(k,i)
3133#include "lockoff.inc"
3144 CALL i20ass0(jlt ,cs_loc,n1 ,n2 ,m1 ,
3145 2 m2 ,hs1 ,hs2 ,hm1 ,hm2 ,
3146 3 fx1 ,fy1 ,fz1 ,fx2 ,fy2 ,
3147 4 fz2 ,fx3 ,fy3 ,fz3 ,fx4 ,
3148 5 fy4 ,fz4 ,a ,stifn,stif ,
3149 6 nlinsa,nin ,jtask)
3151 CALL i20ass05(jlt ,cs_loc,n1 ,n2 ,m1 ,
3152 2 m2 ,hs1 ,hs2 ,hm1 ,hm2 ,
3153 3 fx1 ,fy1 ,fz1 ,fx2 ,fy2 ,
3154 4 fz2 ,fx3 ,fy3 ,fz3 ,fx4 ,
3155 5 fy4 ,fz4 ,a ,stifn,nlinsa,
3156 6 k1 ,k2 ,k3 ,k4 ,c1 ,
3157 7 c2 ,c3 ,c4 ,viscn,nin ,jtask )
3161 CALL i20ass2(jlt ,cs_loc ,n1 ,n2 ,m1 ,
3162 2 m2 ,hs1 ,hs2 ,hm1 ,hm2 ,
3163 3 fx1 ,fy1 ,fz1 ,fx2 ,fy2 ,
3164 4 fz2 ,fx3 ,fy3 ,fz3 ,fx4 ,
3165 5 fy4 ,fz4 ,fskyi ,isky ,niskyfie,
3166 6 stif ,nlinsa ,nin ,noint )
3168 CALL i20ass25(jlt ,cs_loc ,n1 ,n2 ,m1 ,
3169 2 m2 ,hs1 ,hs2 ,hm1 ,hm2 ,
3170 3 fx1 ,fy1 ,fz1 ,fx2 ,fy2 ,
3171 4 fz2 ,fx3 ,fy3 ,fz3 ,fx4 ,
3172 5 fy4 ,fz4 ,isky ,niskyfie,nlinsa ,
3173 6 k1 ,k2 ,k3 ,k4 ,c1 ,
3174 7 c2 ,c3 ,c4 ,nin , noint)
3179 .
CALL i20sms2e(jlt ,cs_loc ,n1 ,n2 ,m1 ,
3180 2 m2 ,hs1 ,hs2 ,hm1 ,hm2 ,
3181 3 stif ,nin ,noint ,mskyi_sms ,iskyi_sms,
3182 4 nsms ,k1 ,k2 ,k3 ,k4 ,
3183 5 c1 ,c2 ,c3 ,c4 ,nlinsa )
3185 IF(idtmin(10)==1.OR.idtmin(10)==2)
THEN
3189 mas2 = two * masmin(i)
3190 IF(mas2>zero.AND.stif(i)>zero)
THEN
3191 dtmi(i) =
min(dtmi(i),dtfac1(10)*sqrt(mas2/stif(i)))
3193 dtmi0 =
min(dtmi0,dtmi(i))
3195 IF(dtmi0<=dtmin1(10))
THEN
3197 IF(dtmi(i)<=dtmin1(10))
THEN
3198 IF(idtmin(10)==1)
THEN
3199#include "lockon.inc"
3200 IF(cs_loc(i)<=nlinsa)
THEN
3202 .
' **WARNING MINIMUM TIME STEP ',dtmi(i),
3203 .
' IN INTERFACE NB',noint
3204 WRITE(iout,*)
'SECONDARY NODES NB',itab(n1(i)),
3206 WRITE(iout,*)
'MAIN NODES NB',itab(m1(i)),
3210 .
' **WARNING MINIMUM TIME STEP ',dtmi(i),
3211 .
' IN INTERFACE NB',noint
3212 WRITE(iout,*)
'SECONDARY NODES NB',
itafie(nin)%P(n1(i)),
3214 WRITE(iout,*)
'MAIN NODES NB',itab(m1(i)),
3217#include "lockoff.inc"
3219 ELSEIF(idtmin(10)==2)
THEN
3220#include "lockon.inc"
3221 IF(cs_loc(i)<=nlinsa)
THEN
3223 .
' **WARNING MINIMUM TIME STEP ',dtmi(i),
3224 .
' IN INTERFACE NB',noint
3225 WRITE(iout,*)
'SECONDARY NODES NB',itab(n1(i)),
3227 WRITE(iout,*)
'MAIN NODES NB',itab(m1(i)),
3229 WRITE(iout,*)
'DELETE SECONDARY LINE FROM INTERFACE'
3230 stfs(cs_loc(i)) = -abs(stfs(cs_loc(i)))
3232 ni = cs_loc(i)-nlinsa
3234 .
' **WARNING MINIMUM TIME STEP ',dtmi(i),
3235 .
' IN INTERFACE NB',noint
3236 WRITE(iout,*)
'SECONDARY NODES NB',
itafie(nin)%P(n1(i)),
3238 WRITE(iout,*)
'MAIN NODES NB',itab(m1(i)),
3240 WRITE(iout,*)
'DELETE SECONDARY LINE FROM INTERFACE'
3243#include "lockoff.inc"
3245 ELSEIF(idtmin(10)==5)
THEN
3246#include "lockon.inc"
3247 IF(cs_loc(i)<=nlinsa)
THEN
3249 .
' **WARNING MINIMUM TIME STEP ',dtmi(i),
3250 .
' IN INTERFACE NB',noint
3251 WRITE(iout,*)
'SECONDARY NODES NB',itab(n1(i)),
3253 WRITE(iout,*)
'MAIN NODES NB',itab(m1(i)),
3257 .
' **WARNING MINIMUM TIME STEP ',dtmi(i),
3258 .
' IN INTERFACE NB',noint
3259 WRITE(iout,*)
'SECONDARY NODES NB',
itafie(nin)%P(n1(i)),
3261 WRITE(iout,*)
'MAIN NODES NB',itab(m1(i)),
3264#include "lockoff.inc"
3272 IF(anim_v(4)+outp_v(4)+h3d_data%N_VECT_CONT>0)
THEN
3273#include "lockon.inc"
3276 IF(cs_loc(i)<=nlinsa)
THEN
3277 fcont(1,n1(i)) =fcont(1,n1(i)) + fx1(i)
3278 fcont(2,n1(i)) =fcont(2,n1(i)) + fy1(i)
3279 fcont(3,n1(i)) =fcont(3,n1(i)) + fz1(i)
3280 fcont(1,n2(i)) =fcont(1,n2(i)) + fx2(i)
3281 fcont(2,n2(i)) =fcont(2,n2(i)) + fy2(i)
3282 fcont(3,n2(i)) =fcont(3,n2(i)) + fz2(i)
3284 fcont(1,m1(i)) =fcont(1,m1(i)) + fx3(i)
3285 fcont(2,m1(i)) =fcont(2,m1(i)) + fy3(i)
3286 fcont(3,m1(i)) =fcont(3,m1(i)) + fz3(i)
3287 fcont(1,m2(i)) =fcont(1,m2(i)) + fx4(i)
3288 fcont(2,m2(i)) =fcont(2,m2(i)) + fy4(i)
3289 fcont(3,m2(i)) =fcont(3,m2(i)) + fz4(i)
3292#include "lockoff.inc"
3297 IF(nstrf(1)+nstrf(2)/=0)
THEN
3299 nbinter=nstrf(k0+14)
3302 IF(nstrf(k1s)==noint)
THEN
3304#include "lockon.inc"
3306 IF(cs_loc(i)<=nlinsa)
THEN
3307 IF(secfcum(4,n1(k),i)==1.)
THEN
3308 secfcum(1,n1(k),i)=secfcum(1,n1(k),i)-fx1(k)
3309 secfcum(2,n1(k),i)=secfcum(2,n1(k),i)-fy1(k)
3310 secfcum(3,n1(k),i)=secfcum(3,n1(k),i)-fz1(k)
3312 IF(secfcum(4,n2(k),i)==1.)
THEN
3313 secfcum(1,n2(k),i)=secfcum(1,n2(k),i)-fx2(k)
3314 secfcum(2,n2(k),i)=secfcum(2,n2(k),i)-fy2(k)
3315 secfcum(3,n2(k),i)=secfcum(3,n2(k),i)-fz2(k)
3318 IF(secfcum(4,m1(k),i)==1.)
THEN
3319 secfcum(1,m1(k),i)=secfcum(1,m1(k),i)-fx3(k)
3320 secfcum(2,m1(k),i)=secfcum(2,m1(k),i)-fy3(k)
3321 secfcum(3,m1(k),i)=secfcum(3,m1(k),i)-fz3(k)
3323 IF(secfcum(4,m2(k),i)==1.)
THEN
3324 secfcum(1,m2(k),i)=secfcum(1,m2(k
3325 secfcum(2,m2(k),i)=secfcum(2,m2(k),i)-fy4
3326 secfcum(3,m2(k),i)=secfcum(3,m2(k),i)-fz4(k)
3329#include "lockoff.inc"