32 1 NEL ,NUVAR ,ILAY ,NPT0 ,
33 2 TIME ,TIMESTEP,UPARAM ,
34 3 NGL ,OFF ,NOFF ,SIGNXX ,
35 4 SIGNYY ,SIGNZZ ,SIGNXY ,SIGNYZ ,SIGNZX ,
36 5 UVAR ,NUPARAM ,DFMAX ,LF_DAMMX,TDELE )
40#include "implicit_f.inc"
83 INTEGER NEL,NUPARAM, NUVAR,ILAY,NPT0
85 INTEGER,
INTENT(IN) :: LF_DAMMX
87 . TIME,TIMESTEP(NEL),UPARAM(NUPARAM),
88 . signxx(nel),signyy(nel),signzz(nel),
89 . signxy(nel),signyz(nel),signzx(nel)
94 my_real (NEL,NUVAR), OFF(NEL), TDELE(NEL)
95 my_real ,
DIMENSION(NEL,LF_DAMMX),
INTENT(INOUT) :: DFMAX
100 . i,j,idel,idel_l,iflag,indx(mvsiz),iadbuf,nindx,
101 . nindex,index(mvsiz),ifail,jj,imatly,
102 . iunidir,ifabric,indx0(mvsiz),nindx0,fsmooth
104 . sigt1,sigt2, sigc1,sigc2,
105 . fsig12,f1,fa,fb,fc,pn12,pp12,pn22,
106 . fac,tmax,fa_2,fb_2,fc_2,fcut,asrate,
107 . sxx(nel),syy(nel),szz(nel),
108 . sxy(nel),syz(nel),szx(nel)
119 iflag = int(uparam(11))
121 IF (fcut > zero)
THEN
123 asrate = two*pi*fcut*timestep(1)
124 asrate = asrate/(one+asrate)
134 IF ((uvar(1,8) == zero).AND.(off(1) == one))
THEN
144 IF(off(i)<em01) off(i)=zero
145 IF(off(i)<one) off(i)=off(i)*four_over_5
146 IF (fsmooth > 0)
THEN
147 sxx(i) = asrate*signxx(i) + (one - asrate)*uvar(i,9)
148 syy(i) = asrate*signyy(i) + (one - asrate)*uvar(i,10)
149 szz(i) = asrate*signzz(i) + (one - asrate)*uvar(i,11)
150 sxy(i) = asrate*signxy(i) + (one - asrate)*uvar(i,12)
151 syz(i) = asrate*signyz(i) + (one - asrate)*uvar(i,13)
152 szx(i) = asrate*signzx(i) + (one - asrate)*uvar(i,14)
185 IF (off(i) == one )
THEN
191 IF (uvar(i,8) < one)
THEN
192 uvar(i,8) = exp(-(time - uvar(i,7))/tmax
193 IF (uvar(i,8) < em02) uvar(i,8) = zero
194 signxx(i) = uvar(i,1)*uvar(i,8)
195 signyy(i) = uvar(i,2)*uvar(i,8)
196 signzz(i) = uvar(i,3)*uvar(i,8)
197 signxy(i) = uvar(i,4)*uvar(i,8)
198 signyz(i) = uvar(i,5)*uvar(i,8)
199 signzx(i) = uvar(i,6)*uvar(i,8)
200 IF (uvar(i,8) == zero )
THEN
210 IF (sxx(i) >= zero)
THEN
212 dfmax(i,2) =
max(dfmax(i,2),f1)
213 dfmax(i,2) =
min(dfmax(i,2),one)
217 dfmax(i,3) =
min(dfmax(i,3),one)
223 fac = one - pp12*sigt2/fsig12
225 fa = sqrt((sxy(i)/fsig12)**2 + fac*fac)
227 dfmax(i,4) =
max(dfmax(i,4),fa)
228 dfmax(i,4) =
min(dfmax(i,4),one)
230 fac = half/(one + pn22)/fsig12
233 dfmax(i,6) =
max(dfmax(i,6),fc)
234 dfmax(i,6) =
min(dfmax(i,6),one)
245 fb = sqrt(sxy(i)**2 + (pn12*syy(i))**2 )
248 dfmax(i,5) =
max(dfmax(i,5),fb)
249 dfmax(i,5) =
min(dfmax(i,5),one)
253 IF (szz(i) >= zero)
THEN
254 fac = one - pp12*sigt2/fsig12
255 fac = fac*szz(i)/sigt2
256 fa_2 = sqrt((szx(i)/fsig12)**2 + fac*fac)
257 . + pp12*szz(i)/fsig12
258 dfmax(i,4) =
max(dfmax(i,4),fa_2)
259 dfmax(i,4) =
min(dfmax(i,4),one)
261 fac = half/(one + pn22)/fsig12
262 fc_2 = (szx(i)*fac)**2 + (szz(i)/sigc2)**2
263 fc_2 =-fc_2*sigc2/szz(i)
264 dfmax(i,6) =
max(dfmax(i,6),fc_2)
265 dfmax(i,6) =
min(dfmax(i,6),one)
276 fb_2 = sqrt(szx(i)**2 + (pn12*szz(i))**2 )
279 dfmax(i,5) =
max(dfmax(i,5),fb_2)
280 dfmax(i,5) =
min(dfmax(i,5),one)
282 dfmax(i,1) =
min(one,
max(dfmax(i
284 IF (f1 >= one .OR. fa >= one .OR. fb >= one .OR.
285 . fc >= one .OR. fa_2 >= one .OR. fb_2 >= one .OR.
287 uvar(i,1) = signxx(i)
288 uvar(i,2) = signyy(i)
289 uvar(i,3) = signzz(i)
290 uvar(i,4) = signxy(i)
291 uvar(i,5) = signyz(i)
292 uvar(i,6) = signzx(i)
294 uvar(i,8) = four_over_5
302 IF(uvar(i,8) == zero )
THEN
309 ELSE IF(uvar(i,8) < one)
THEN
310 uvar(i,8)= exp(-(time - uvar(i,7))/tmax)
311 IF(uvar(i,8) < em02)uvar(i,8) = zero
312 signxx(i) = uvar(i,1)*uvar(i,8)
313 signyy(i) = uvar(i,2)*uvar(i,8)
314 signzz(i) = uvar(i,3)*uvar(i,8)
315 signxy(i) = uvar(i,4)*uvar(i,8)
317 signzx(i) = uvar(i,6)*uvar(i,8)
318 IF(uvar(i,8) == zero )
THEN
319 noff(i) = noff(i) + 1
320 IF(npt0 == 1 .OR. noff(i) == npt0 )
THEN
333 dfmax(i,2) =
max(dfmax(i,2),f1)
334 dfmax(i,2) =
min(dfmax(i,2),one)
337 dfmax(i,3) =
max(dfmax(i,3),f1)
338 dfmax(i,3) =
min(dfmax(i,3),one)
343 IF(syy(i) >= zero)
THEN
344 fac = one - pp12*sigt2/fsig12
345 fac = fac*syy(i)/sigt2
346 fa = sqrt((sxy(i)/fsig12)**2 + fac*fac)
347 . + pp12*syy(i)/fsig12
348 dfmax(i,4) =
max(dfmax(i,4),fa)
349 dfmax(i,4) =
min(dfmax(i,4),one)
351 fac = half/(one + pn22)/fsig12
352 fc = (sxy(i)*fac)**2 + (syy(i)/sigc2)**2
354 dfmax(i,6) =
max(dfmax(i,6),fc)
355 dfmax(i,6) =
min(dfmax(i,6),one)
365 fb = sqrt(sxy(i)**2 + (pn12*syy(i))**2 )
368 dfmax(i,5) =
max(dfmax(i,5),fb)
369 dfmax(i,5) =
min(dfmax(i,5),one)
373 IF(szz(i) >= zero)
THEN
374 fac = one - pp12*sigt2/fsig12
375 fac = fac*szz(i)/sigt2
376 fa_2 = sqrt((szx(i)/fsig12)**2 + fac*fac)
377 . + pp12*szz(i)/fsig12
378 dfmax(i,4) =
max(dfmax(i,4),fa_2)
379 dfmax(i,4) =
min(dfmax(i,4),one)
381 fac = half/(one + pn22)/fsig12
382 fc_2 = (szx(i)*fac)**2 + (szz(i)/sigc2)**2
383 fc_2 =-fc_2*sigc2/szz(i)
384 dfmax(i,6) =
max(dfmax(i,6),fc_2)
385 dfmax(i,6) =
min(dfmax(i,6),one)
396 fb_2 = sqrt(szx(i)**2 + (pn12*szz(i))**2 )
399 dfmax(i,5) =
max(dfmax(i,5),fb_2)
400 dfmax(i,5) =
min(dfmax(i,5),one)
402 dfmax(i,1) =
min(one,
max(dfmax(i,1),f1,fa,fb,fc,fa_2,fb_2,fc_2))
404 IF(f1 >= one .OR. fa >= one .OR. fb >= one .OR.
405 . fc >= one .OR. fa_2 >= one .OR. fb_2 >= one .OR.
407 uvar(i,1) = signxx(i)
408 uvar(i,2) = signyy(i)
409 uvar(i,3) = signzz(i)
410 uvar(i,4) = signxy(i)
411 uvar(i,5) = signyz(i)
412 uvar(i,6) = signzx(i)
414 uvar(i,8) = four_over_5
429 WRITE(iout, 1200) ngl(i),time
430 WRITE(istdo,1200) ngl(i),time
431#include "lockoff.inc"
439 WRITE(iout, 1100) ngl(i),ilay,time
440 WRITE(istdo,1100) ngl(i),ilay,time
441#include "lockoff.inc"
445 1100
FORMAT(1x,
'FAILURE ELEMENT #',i10,1x,
446 .
'IP #',i10,1x,
'AT TIME #:',1pe20.13)
448 1200
FORMAT(1x,
'DELETE SOLID ELEMENT (PUCK MODEL) #',i10,1x,
449 .
'AT TIME # ',1pe20.13)