54
55
56
57
58
59
60
61#include "implicit_f.inc"
62#include "comlock.inc"
63
64
65
66#include "mvsiz_p.inc"
67
68
69
70#include "com01_c.inc"
71#include "com06_c.inc"
72#include "com08_c.inc"
73#include "scr05_c.inc"
74#include "scr11_c.inc"
75#include "sms_c.inc"
76#include "scr18_c.inc"
77#include "units_c.inc"
78#include "kincod_c.inc"
79
80
81
82 INTEGER JLT, IBCC, INACTI, IBAG, NIN, NOINT, IADM,
83 . MFROT, IFQ, ICURV(3), IGAP, IROT, ILEV,INTTH,IFRIC,
84 . NELTST,ITYPTST,IFTLIM,
85 . ICODT(*), ITAB(*),IFPEN(*) ,ICONTACT(*), NPC(*),KINET(*)
86 INTEGER NSVG(MVSIZ),CAND_N_N(MVSIZ), WEIGHT(*),
87 . IX1(MVSIZ), IX2(MVSIZ), (MVSIZ), IX4(MVSIZ), NISUB,
88 . ISENSINT(*),NFT,PSKIDFLAG
89 INTEGER , INTENT(IN) :: INTEREFRIC
91 . stiglo, peni(*), fsav(*), tf(*),
92 . alpha0, gap, visc,dt2t,pmaxskid ,
93 . fni(mvsiz),
94 . fxn(mvsiz), fyn(mvsiz), fzn(mvsiz),
95 . fxt(mvsiz), fyt(mvsiz), fzt(mvsiz)
97 . stif(mvsiz), gapv(mvsiz),
98 . vxi(mvsiz),vyi(mvsiz),vzi(mvsiz),msi(mvsiz),
99 . x1(mvsiz),y1(mvsiz),z1(mvsiz),
100 . x2(mvsiz),y2(mvsiz),z2(mvsiz),
101 . x3(mvsiz),y3(mvsiz),z3(mvsiz),
102 . x4(mvsiz),y4(mvsiz),z4(mvsiz),
103 . xi(mvsiz),yi(mvsiz),zi(mvsiz),
104 . nx(mvsiz),ny(mvsiz),nz(mvsiz),pene(mvsiz),
105 . gap0(mvsiz), area0(mvsiz), pmax, ftmax,
106 . vxm, vym, vzm, wxm, wym, wzm,
107 . xp(mvsiz), yp(mvsiz), zp(mvsiz)
109 . rcurvi(*), rcontact(*), acontact(*),
110 . pcontact(*), padm, anglmi(*),
111 . xg(3), mxi(mvsiz), myi(mvsiz), mzi(mvsiz),
stri(mvsiz),
112 . kt(mvsiz), c(mvsiz), fheat,efrict(mvsiz),qfric,
113 . tempi(mvsiz),tempm(mvsiz),xfric,dydx,
114 . fsavparit(nisub+1,11,*),pratio(mvsiz)
115 my_real ,
INTENT(INOUT) :: efric_l(mvsiz)
116 my_real ,
INTENT(IN) :: fric_coefs(mvsiz,10), fricc(mvsiz)
117
118
119
120 INTEGER I, J1, IG, J, JG , K0,NBINTER,K1S,K,IL,IE, NN, NI,
121 . NA1,NA2,IBCM,IBCS
123 . fxi(mvsiz), fyi(mvsiz), fzi(mvsiz),
124 . xmu(mvsiz),
125 . vx(mvsiz), vy(mvsiz), vz(mvsiz), vn(mvsiz), dtmi(mvsiz),
126 . vnx, vny, vnz, aa, s2,
127 . v2, ff,
alpha, beta,
128 . fx, fy, fz, ft, fn, fmax, ftn,
129 . econtt, econvt, fs2,econtdt,
130 . fsav1, fsav2, fsav3, fsav4, fsav5, fsav6, fsav7, fsav8,
131 . fsav9, fsav10, fsav11, fsav12, fsav13, fsav14, fsav15,fsav25,
132 . vv,ax1,ax2,ay1,ay2,az1,az2,ax,ay,az,
area,p,vv1,vv2,dmu,
133 . dt1inv, vis, pa, plin, fs, qfrict, dti,dti2,dtmi0, mas2,beta1
135 . prec
137 . st1(mvsiz),st2(mvsiz),st3(mvsiz),st4(mvsiz),stv(mvsiz),
138 . penx(mvsiz),stif0(mvsiz),frict(mvsiz)
140 . impx,impy,impz,xx,yy,zz,th
142 . finter
143 EXTERNAL finter
144
145
146 IF (iresp==1) THEN
147 prec = fiveem4
148 ELSE
149 prec = em10
150 ENDIF
151 IF(dt1>zero)THEN
152 dt1inv = one/dt1
153 ELSE
154 dt1inv =zero
155 ENDIF
156 IF(pskidflag >0) THEN
157 DO i=1,jlt
158 pratio(i) = zero
159 ENDDO
160 ENDIF
161 efric_l(1:jlt) = zero
162 efrict(1:jlt) = zero
163
164
165
166 IF(ilev==0)THEN
167 IF(igap<=1)THEN
168 IF(inacti==5)THEN
169 DO i=1,jlt
170
171 peni(cand_n_n(i))=
min(peni(cand_n_n(i)),
172 . ((one-fiveem2)*peni(cand_n_n(i))+fiveem2*pene(i)) )
173
174 pene(i)=
max(zero,pene(i)-peni(cand_n_n(i)))
175 IF( pene(i)==zero ) stif(i) = zero
176 gapv(i)=gapv(i)-peni(cand_n_n(i))
177 ENDDO
178 ELSEIF(inacti==6)THEN
179 DO i=1,jlt
180
181 peni(cand_n_n(i))=
min(peni(cand_n_n(i)),
182 . ( (one-fiveem2)*peni(cand_n_n(i))
183 . +fiveem2*(pene(i)+fiveem2*(gapv(i)-pene(i)))) )
184
185 pene(i)=
max(zero,pene(i)-peni(cand_n_n(i)))
186 IF( pene(i)==zero ) stif(i) = zero
187 gapv(i)=gapv(i)-peni(cand_n_n(i))
188 ENDDO
189 ELSE
190 DO i=1,jlt
191 IF( pene(i)==zero ) stif(i) = zero
192 ENDDO
193 ENDIF
194 ELSE
195 IF(inacti==5)THEN
196 DO i=1,jlt
197
198 penx(i)=pene(i)
199 IF(penx(i) >
max(gapv(i)-gap0(i),zero))
200 . penx(i) = penx(i)-
max(gapv(i)-gap0(i),zero)
201 peni(cand_n_n(i))=
min(peni(cand_n_n(i)),
202 . ((one-fiveem2)*peni(cand_n_n(i))+fiveem2*penx(i)) )
203
204 pene(i)=
max(zero,pene(i)-peni(cand_n_n(i)))
205 IF( pene(i)==zero ) stif(i) = zero
206 gapv(i)=gapv(i)-peni(cand_n_n(i))
207 gap0(i)=gap0(i)-peni(cand_n_n(i))
208 ENDDO
209 ELSEIF(inacti==6)THEN
210 DO i=1,jlt
211
212 penx(i)=pene(i)
213 IF(penx(i) >
max(gapv(i)-gap0(i),zero))
214 . penx(i) = penx(i)-
max(gapv(i)-gap0(i),zero)
215 peni(cand_n_n(i))=
min(peni(cand_n_n(i)),
216 . ( (one-fiveem2)*peni(cand_n_n(i))
217 . +fiveem2*(penx(i)+fiveem2*(gap0(i)-penx(i)))) )
218
219 pene(i)=
max(zero,pene(i)-peni(cand_n_n(i)))
220 IF( pene(i)==zero ) stif(i) = zero
221 gapv(i)=gapv(i)-peni(cand_n_n(i))
222 gap0(i)=gap0(i)-peni(cand_n_n(i))
223 ENDDO
224 ELSE
225 DO i=1,jlt
226 IF( pene(i)==zero ) stif(i) = zero
227 ENDDO
228 ENDIF
229 END IF
230 ELSE
231
232
233 IF(inacti==6)THEN
234 DO i=1,jlt
235
236 peni(cand_n_n(i))=
min(peni(cand_n_n(i)),
237 . ( (one-fiveem2)*peni(cand_n_n(i))
238 . +fiveem2*(pene(i)+fiveem2*abs(gapv(i)-pene(i)))) )
239
240 pene(i)=
max(zero,pene(i)-peni(cand_n_n(i)))
241 IF( pene(i)==zero .AND.
242 . ( ifpen(cand_n_n(i))/=1 .OR.tt==zero ) ) stif(i) = zero
243 ENDDO
244 ELSE
245 DO i=1,jlt
246
247 peni(cand_n_n(i))=
min(peni(cand_n_n(i)),
248 . ((one-fiveem2)*peni(cand_n_n(i))+fiveem2*pene(i)) )
249
250 pene(i)=
max(zero,pene(i)-peni(cand_n_n(i)))
251 IF( pene(i)==zero .AND.
252 . (ifpen(cand_n_n(i))/=1 .OR.
253 . (inacti==5.AND.tt==zero) ) ) stif(i) = zero
254 ENDDO
255
256 END IF
257 END IF
258
259 DO i=1,jlt
260 stif0(i) = stif(i)
261 ENDDO
262
263
264
265
266 econtt = zero
267 econvt = zero
268 qfrict = zero
269 econtdt = zero
270 IF(igap<=1)THEN
271 DO i=1,jlt
272 ig=nsvg(i)
273 IF(stiglo<=zero)THEN
274 econtt = econtt - half*stiglo*stif(i)*pene(i)**2
275 . * weight(ig)
276 stif(i) = -stiglo*stif(i)
277
278 ELSEIF(stif(i)/=zero)THEN
279 econtt = econtt + stiglo**pene(i)**2 * weight(ig)
280 stif(i) = stiglo
281 ENDIF
282 fni(i)= - stif(i) * pene(i)
283 END DO
284 ELSE
285 DO i=1,jlt
286 ig=nsvg(i)
287 IF(stiglo<=zero)THEN
288 stif(i) = -stiglo*stif(i)
289 ELSEIF(stif(i)/=zero)THEN
290 stif(i) = stiglo
291 ENDIF
292 pa = area0(i)*pmax
293 IF(stif(i)*
max(gapv(i)-gap0(i),zero) <= pa)
THEN
294 fni(i)= - stif(i)*pene(i)
295 econtt = econtt - half * pene(i) * fni(i)* weight(ig)
296 ELSE
297 fni(i)= - stif(i)*
max(pene(i)-
max(gapv(i)-gap0(i),zero),zero)
298 . -
min(pa,stif(i)*pene(i))
299 plin = -fni(i)/
max(em20,stif(i))
300 econtt = econtt + weight(ig)*
301 . (
max(pene(i)-plin,zero)*area0(i)*pmax - half *plin *fni(i) )
302 END IF
303 END DO
304 END IF
305
306
307
308 DO i=1,jlt
309 xx=xp(i)-xg(1)
310 yy=yp(i)-xg(2)
311 zz=zp(i)-xg(3)
312 vx(i)=vxi(i)-(vxm + wym*zz-wzm*yy)
313 vy(i)=vyi(i)-(vym + wzm*xx-wxm*zz)
314 vz(i)=vzi(i)-(vzm + wxm*yy-wym*xx)
315 vn(i) = nx(i)*vx(i) + ny(i)*vy(i) + nz(i)*vz(i)
316 ENDDO
317
318
319
320 IF(idtmins/=2.AND.idtmins_int==0)THEN
321 DO i=1,jlt
322 vis = visc * sqrt(two * stif(i) * msi(i))
323 stif(i) = stif(i) + vis *dt1inv
324 fni(i) = fni(i) + vis * vn(i)
325 ig=nsvg(i)
326 econtdt = econtdt + vis * vn(i) * vn(i) * dt1 * weight(ig)
327 ENDDO
328 ELSE
329 DO i=1,jlt
330 c(i) = visc * sqrt(two * stif(i) * msi(i))
331 kt(i)= stif(i)
332 stif(i) = stif(i) + c(i) *dt1inv
333 fni(i) = fni(i) + c(i) * vn(i)
334 ig=nsvg(i)
335 econtdt = econtdt + c(i) * vn(i) * vn(i) * dt1 * weight(ig)
336 ENDDO
337 END IF
338
339
340
341 DO i=1,jlt
342 fxn(i)=fni(i)*nx(i)
343 fyn(i)=fni(i)*ny(i)
344 fzn(i)=fni(i)*nz(i)
345 END DO
346
347
348
349 fsav1 = zero
350 fsav2 = zero
351 fsav3 = zero
352 fsav8 = zero
353 fsav9 = zero
354 fsav10= zero
355 fsav11= zero
356 DO i=1,jlt
357 ig=nsvg(i)
358 impx=fxn(i)*dt12*weight(ig)
359 impy=fyn(i)*dt12*weight(ig)
360 impz=fzn(i)*dt12*weight(ig)
361 fsav1 =fsav1 +impx
362 fsav2 =fsav2 +impy
363 fsav3 =fsav3 +impz
364 fsav8 =fsav8 +abs(impx)
365 fsav9 =fsav9 +abs(impy)
366 fsav10=fsav10+abs(impz)
367 fsav11=fsav11+fni(i)*dt12
368 ENDDO
369
370#include "lockon.inc"
371 FSAV(1)=FSAV(1)+FSAV1
372 FSAV(2)=FSAV(2)+FSAV2
373 FSAV(3)=FSAV(3)+FSAV3
374 FSAV(8)=FSAV(8)+FSAV8
375 FSAV(9)=FSAV(9)+FSAV9
376 FSAV(10)=FSAV(10)+FSAV10
377 FSAV(11)=FSAV(11)+FSAV11
378#include "lockoff.inc"
379
380 IF(ISENSINT(1)/=0) THEN
381 DO I=1,JLT
382 IG=NSVG(I)
383 FSAVPARIT(1,1,I+NFT) = FXN(I)*WEIGHT(IG)
384 FSAVPARIT(1,2,I+NFT) = FYN(I)*WEIGHT(IG)
385 FSAVPARIT(1,3,I+NFT) = FZN(I)*WEIGHT(IG)
386 ENDDO
387 ENDIF
388
389
390
391
392 IF (MFROT==0) THEN
393
394 DO I=1,JLT
395 XMU(I) = FRICC(I)
396 ENDDO
397 ELSEIF (MFROT==1) THEN
398
399 DO I=1,JLT
400
401 AA = NX(I)*VX(I) + NY(I)*VY(I) + NZ(I)*VZ(I)
402 V2 = (VX(I) - NX(I)*AA)**2
403 . + (VY(I) - NY(I)*AA)**2
404 . + (VZ(I) - NZ(I)*AA)**2
405 VV = SQRT(MAX(EM30,V2))
406
407
408 AREA = AREA0(I)
409 P = -FNI(I)/AREA
410 XMU(I) = FRICC(I)+ (FRIC_COEFS(I,1) + FRIC_COEFS(I,4)*P ) * P
411 . +(FRIC_COEFS(I,2) + FRIC_COEFS(I,3)*P) * VV + FRIC_COEFS(I,5)*V2
412 XMU(I) = MAX(XMU(I),EM30)
413 ENDDO
414 ELSEIF(MFROT==2)THEN
415
416 DO I=1,JLT
417
418 AA = NX(I)*VX(I) + NY(I)*VY(I) + NZ(I)*VZ(I)
419 V2 = (VX(I) - NX(I)*AA)**2
420 . + (VY(I) - NY(I)*AA)**2
421 . + (VZ(I) - NZ(I)*AA)**2
422 VV = SQRT(MAX(EM30,V2))
423
424
425 AREA = AREA0(I)
426 P = -FNI(I)/AREA
427 XMU(I) = FRICC(I)
428 . + FRIC_COEFS(I,1)*EXP(FRIC_COEFS(I,2)*VV)*P*P
429 . + FRIC_COEFS(I,3)*EXP(FRIC_COEFS(I,4)*VV)*P
430 . + FRIC_COEFS(I,5)*EXP(FRIC_COEFS(I,6)*VV)
431 XMU(I) = MAX(XMU(I),EM30)
432 ENDDO
433 ELSEIF (MFROT==3) THEN
434
435 DO I=1,JLT
436
437 AA = NX(I)*VX(I) + NY(I)*VY(I) + NZ(I)*VZ(I)
438 V2 = (VX(I) - NX(I)*AA)**2
439 . + (VY(I) - NY(I)*AA)**2
440 . + (VZ(I) - NZ(I)*AA)**2
441 VV = SQRT(MAX(EM30,V2))
442.AND. IF(VV>=0VV<=FRIC_COEFS(I,5)) THEN
443 DMU = FRIC_COEFS(I,3)-FRIC_COEFS(I,1)
444 VV1 = VV / FRIC_COEFS(I,5)
445 XMU(I) = FRIC_COEFS(I,1)+ DMU*VV1*(TWO-VV1)
446.AND. ELSEIF(VV>FRIC_COEFS(I,5)VV<FRIC_COEFS(I,6)) THEN
447 DMU = FRIC_COEFS(I,4)-FRIC_COEFS(I,3)
448 VV1 = (VV - FRIC_COEFS(I,5))/(FRIC_COEFS(I,6)-FRIC_COEFS(I,5))
449 XMU(I) = FRIC_COEFS(I,3)+ DMU * (THREE-TWO*VV1)*VV1**2
450 ELSE
451 DMU = FRIC_COEFS(I,2)-FRIC_COEFS(I,4)
452 VV2 = (VV - FRIC_COEFS(I,6))**2
453 XMU(I) = FRIC_COEFS(I,2) - DMU / (ONE + DMU*VV2)
454 ENDIF
455 XMU(I) = MAX(XMU(I),EM30)
456 ENDDO
457 ELSEIF(MFROT==4)THEN
458
459 DO I=1,JLT
460 AA = NX(I)*VX(I) + NY(I)*VY(I) + NZ(I)*VZ(I)
461 V2 = (VX(I) - NX(I)*AA)**2
462 . + (VY(I) - NY(I)*AA)**2
463 . + (VZ(I) - NZ(I)*AA)**2
464 VV = SQRT(MAX(EM30,V2))
465 XMU(I) = FRIC_COEFS(I,1)
466 . + (FRIC_COEFS(I,1)-FRICC(I))*EXP(-FRIC_COEFS(I,2)*VV)
467 XMU(I) = MAX(XMU(I),EM30)
468 ENDDO
469 ENDIF
470
471
472
473 FSAV4 = ZERO
474 FSAV5 = ZERO
475 FSAV6 = ZERO
476 FSAV12= ZERO
477 FSAV13= ZERO
478 FSAV14= ZERO
479 FSAV15= ZERO
480 FSAV25= ZERO
481
482
483
484 IF (IFQ==13) THEN
485 ALPHA = MAX(ONE,ALPHA0*DT12)
486 ELSE
487 ALPHA = ALPHA0
488 ENDIF
489 IF(IFTLIM == 0 ) THEN ! if flag to limit tangential force is ON : FT<= YIELD/(S*sqrt(3))
490 FTMAX = PMAX
491 ELSE
492 FTMAX = EP30
493 ENDIF
494 DO I=1,JLT
495 FX = STIF0(I)*VX(I)*DT12
496 FY = STIF0(I)*VY(I)*DT12
497 FZ = STIF0(I)*VZ(I)*DT12
498
499 FX = FXT(I) + ALPHA*FX
500 FY = FYT(I) + ALPHA*FY
501 FZ = FZT(I) + ALPHA*FZ
502
503 FTN = FX*NX(I) + FY*NY(I) + FZ*NZ(I)
504
505 FX = FX - FTN*NX(I)
506 FY = FY - FTN*NY(I)
507 FZ = FZ - FTN*NZ(I)
508
509 FT = FX*FX + FY*FY + FZ*FZ
510 FT = MAX(FT,EM30)
511
512 FN = FNI(I)*FNI(I)
513
514 FN = SQRT(FN)
515 FT = SQRT(FT)
516
517 BETA1 = XMU(I)*FN/FT
518 BETA = MIN(ONE,BETA1)
519
520
521 AREA = AREA0(I)
522 FS = FTMAX/SQRT(THREE)*AREA
523 BETA = MIN(BETA,FS/FT)
524 IF(PSKIDFLAG >0) THEN
525 BETA1 = MIN(BETA1,FS/FT)
526 IF(BETA1 <= ONE) THEN
527 FS2 = PMAXSKID/SQRT(THREE)*AREA
528 PRATIO(I) = MIN(ONE,BETA*FT/FS2)
529 ENDIF
530 ENDIF
531
532 FXT(I) = FX * BETA
533 FYT(I) = FY * BETA
534 FZT(I) = FZ * BETA
535
536 FXI(I)=FXN(I) + FXT(I)
537 FYI(I)=FYN(I) + FYT(I)
538 FZI(I)=FZN(I) + FZT(I)
539 IG=NSVG(I)
540
541
542
543 EFRIC_L(I) = DT1*(VX(I)*FXT(I)+VY(I)*FYT(I)+VZ(I)*FZT(I))
544 . * WEIGHT(IG)
545 ECONVT = ECONVT + EFRIC_L(I)
546
547.AND. IF( INTTH > 0 BETA/=ZERO) THEN
548 EFRICT(I) = (FX-FXT(I))*FXT(I) + (FY-FYT(I))*FYT(I) +
549 . (FZ-FZT(I))*FZT(I) ! FRICTIONAL ENERGY
550 EFRICT(I) = EFRICT(I)/STIF0(I)
551 QFRICT = QFRICT + EFRICT(I)
552 ENDIF
553 ENDDO
554
555 DO I=1,JLT
556 IG=NSVG(I)
557 IMPX=FXT(I)*DT12*WEIGHT(IG)
558 IMPY=FYT(I)*DT12*WEIGHT(IG)
559 IMPZ=FZT(I)*DT12*WEIGHT(IG)
560 FSAV4 =FSAV4 +IMPX
561 FSAV5 =FSAV5 +IMPY
562 FSAV6 =FSAV6 +IMPZ
563 IMPX=FXI(I)*DT12
564 IMPY=FYI(I)*DT12
565 IMPZ=FZI(I)*DT12
566 FSAV12=FSAV12+ABS(IMPX)
567 FSAV13=FSAV13+ABS(IMPY)
568 FSAV14=FSAV14+ABS(IMPZ)
569 FSAV15=FSAV15+SQRT(IMPX*IMPX+IMPY*IMPY+IMPZ*IMPZ)
570 ENDDO
571
572#include "lockon.inc"
573 FSAV(4) = FSAV(4) + FSAV4
574 FSAV(5) = FSAV(5) + FSAV5
575 FSAV(6) = FSAV(6) + FSAV6
576 FSAV(12) = FSAV(12) + FSAV12
577 FSAV(13) = FSAV(13) + FSAV13
578 FSAV(14) = FSAV(14) + FSAV14
579 FSAV(15) = FSAV(15) + FSAV15
580 FSAV(25) = FSAV(25) + FHEAT*QFRICT
581 FSAV(26) = FSAV(26) + ECONTT
582 FSAV(27) = FSAV(27) + ECONVT- FHEAT*QFRICT
583 FSAV(28) = FSAV(28) + ECONTDT
584#include "lockoff.inc"
585
586 IF(ISENSINT(1)/=0) THEN
587 DO I=1,JLT
588 IG=NSVG(I)
589 FSAVPARIT(1,4,I+NFT) = FXT(I)*WEIGHT(IG)
590 FSAVPARIT(1,5,I+NFT) = FYT(I)*WEIGHT(IG)
591 FSAVPARIT(1,6,I+NFT) = FZT(I)*WEIGHT(IG)
592 ENDDO
593 ENDIF
594
595#include "lockon.inc"
596 ECONTV = ECONTV + ECONVT ! Frictional Energy
597 ECONT = ECONT + ECONTT ! Elastic Energy
598 ECONTD = ECONTD + ECONTDT ! Damping Energy
599 IF (INTTH/=0) THEN
600 QFRIC = QFRIC + FHEAT*QFRICT ! FRICTIONAL HEAT ADDED TO INTERNAL ENERGY
601 ECONTV = ECONTV - FHEAT*QFRICT ! FRICTIONAL HEAT REMOVED FROM CONTACT ENERGY
602 ENDIF
603#include "lockoff.inc"
604
605 IF(IROT/=0)THEN
606 DO I=1,JLT
607 XX=XP(I)-XG(1)
608 YY=YP(I)-XG(2)
609 ZZ=ZP(I)-XG(3)
610 MXI(I) =YY*FZI(I)-ZZ*FYI(I)
611 MYI(I) =ZZ*FXI(I)-XX*FZI(I)
612 MZI(I) =XX*FYI(I)-YY*FXI(I)
613 STRI(I)= STIF(I)*(XX*XX+YY*YY+ZZ*ZZ)
614 END DO
615 END IF
616
617
618
619
620 IF(IDTMIN(10)==1)THEN
621 DTMI0 = EP20
622 DO I=1,JLT
623 DTMI(I) = EP20
624 MAS2 = TWO * MSI(I)
625 JG = NSVG(I)
626.AND..AND. IF(MAS2>ZEROSTIF(I)>ZERO
627.AND. . IRB(KINET(JG))==0IRB2(KINET(JG))==0)THEN
628 DTMI(I) = MIN(DTMI(I),DTFAC1(10)*SQRT(MAS2/STIF(I)))
629 ENDIF
630 DTMI0 = MIN(DTMI0,DTMI(I))
631 ENDDO
632
633 IF(DTMI0<=DTMIN1(10))THEN
634 DO I=1,JLT
635 IF(DTMI(I)<=DTMIN1(10))THEN
636 JG = NSVG(I)
637 NI = ITAB(JG)
638 IF(IDTMIN(10)==1)THEN
639#include "lockon.inc"
640 WRITE(IOUT,'(A,E12.4,A,I10,A,E12.4,A)')
641 . ' **WARNING MINIMUM TIME STEP ',DTMI(I),
642 . ' IN INTERFACE ',NOINT,'(DTMIN =',DTMIN1(10),')'
643 WRITE(IOUT,'(A,I10)') ' SECONDARY NODE : ',NI
644
645
646#include "lockoff.inc"
647 TSTOP = TT
648 IF ( ISTAMPING == 1) THEN
649 WRITE(ISTDO,'(A)')'The run encountered a problem in an in
650 .terface Type 21.'
651 WRITE(ISTDO,'(A)')'Maximum penetration may be reached'
652 WRITE(ISTDO,'(A)')'You may need to check if contact normals
653 .of tools are oriented toward the blank,'
654 WRITE(IOUT, '(A)')'The run encountered a problem in an in
655 .terface Type 21.'
656 WRITE(IOUT, '(A)')'Maximum penetration may be reached'
657 WRITE(IOUT, '(A)')'You may need to check if contact normals
658 .of tools are oriented toward the blank,'
659 ENDIF
660 ENDIF
661 ENDIF
662 ENDDO
663 ENDIF
664 ENDIF
665
666.OR. IF(IBAG/=0IADM/=0)THEN
667 DO I=1,JLT
668 IF(PENE(I)/=ZERO)THEN
669 JG = NSVG(I)
670 ICONTACT(JG)=1
671 ENDIF
672 ENDDO
673 ENDIF
674 IF(IADM/=0)THEN
675 DO I=1,JLT
676 JG = NSVG(I)
677#include "lockon.inc"
678 RCONTACT(JG)=MIN(RCONTACT(JG),RCURVI(I))
679#include "lockoff.inc"
680 END DO
681 END IF
682 IF(IADM>=2)THEN
683 DO I=1,JLT
684 JG = NSVG(I)
685#include "lockon.inc"
686 PCONTACT(JG)=MAX(PCONTACT(JG),PENE(I)/(PADM*GAPV(I)))
687 ACONTACT(JG)=MIN(ACONTACT(JG),ANGLMI(I))
688#include "lockoff.inc"
689 END DO
690 END IF
691
692 IF(IBCC==0) RETURN
693
694 DO 400 I=1,JLT
695 IF(PENE(I)==ZERO)GOTO 400
696 IBCM = IBCC / 8
697 IBCS = IBCC - 8 * IBCM
698 IF(IBCS>0) THEN
699 IG=NSVG(I)
700 CALL IBCOFF(IBCS,ICODT(IG))
701 ENDIF
702 400 CONTINUE
703
704 RETURN
subroutine area(d1, x, x2, y, y2, eint, stif0)