31 . NEL ,NGL ,NUPARAM ,UPARAM ,
32 . TIME ,EPSD ,OFF ,DFMAX ,
33 . TDEL ,IOUT ,ISTDO ,IFUNC ,
34 . EPSXX ,AL ,TSTAR ,DAMSCL ,
35 . SNPC ,NPF , STF , UVAR ,NVARF,
36 . TF ,IPT ,FOFF ,ISMSTR, UELR, NPG)
42#include "implicit_f.inc"
50 INTEGER ,
INTENT(IN) :: NEL
51 INTEGER ,
INTENT(IN) :: NUPARAM
52 INTEGER ,
INTENT(IN) :: IPT
53 INTEGER ,
INTENT(IN) :: IOUT
54 INTEGER ,
INTENT(IN) :: ISTDO
55 INTEGER ,
INTENT(IN) :: SNPC
56 INTEGER ,
INTENT(IN) :: STF
57 INTEGER ,
INTENT(IN) :: ISMSTR
58 INTEGER ,
INTENT(IN) :: NVARF
59 INTEGER ,
DIMENSION(NEL) ,
INTENT(IN) :: NGL
60 INTEGER ,
DIMENSION(100) ,
INTENT(IN) :: IFUNC
61 INTEGER ,
DIMENSION(SNPC) ,
INTENT(IN) :: NPF
62 INTEGER ,
DIMENSION(NEL) ,
INTENT(INOUT) :: FOFF
64 my_real ,
DIMENSION(NUPARAM) ,
INTENT(IN) :: uparam
65 my_real ,
DIMENSION(NEL) ,
INTENT(IN) :: epsd
66 my_real ,
DIMENSION(NEL) ,
INTENT(IN) :: tstar
67 my_real ,
DIMENSION(NEL) ,
INTENT(IN) :: al
68 my_real ,
DIMENSION(NEL) ,
INTENT(IN) :: epsxx
69 my_real ,
DIMENSION(STF) ,
INTENT(IN) :: tf
70 my_real ,
DIMENSION(NEL) ,
INTENT(INOUT) :: off
71 my_real ,
DIMENSION(NEL) ,
INTENT(INOUT) :: dfmax
72 my_real ,
DIMENSION(NEL) ,
INTENT(INOUT) :: damscl
73 my_real ,
DIMENSION(NEL,NVARF),
INTENT(INOUT) :: uvar
74 my_real ,
DIMENSION(NEL) ,
INTENT(INOUT) :: tdel
75 my_real ,
DIMENSION(NEL) ,
INTENT(INOUT) :: uelr
76 INTEGER ,
INTENT(IN) :: NPG
80 INTEGER ,J,NINDXD,NINDXF,NINDX1,NINDX2,S_FLAG,SCALE_FLAG,,STRFLAG,FAILIP
81 INTEGER ,
DIMENSION(NEL) :: INDXD,INDXF,INDX1,INDX2
82 my_real r1,r2,epsf1,epsf2,lambda,fac,df,
83 . el_ref,sc_el,scale_temp,rfac,rfac2,
86 my_real ,
DIMENSION(NEL) :: eps_max,damage,epsrate,eps11,epsi,eps_eq
94 scale_temp = uparam(7)
95 s_flag = int(uparam(8))
97 strdef = int(uparam(10))
98 failip =
min(nint(uparam(11)),npg)
109 IF (uvar(1,1) == zero)
THEN
112 IF (ifunc(2) > 0)
THEN
114 lambda = al(i) / el_ref
115 fac = sc_el * finter(ifunc(2),lambda,npf,tf,df)
124 IF (ifunc(2) > 0)
THEN
126 lambda = al(i) / el_ref
127 fac = sc_el * finter(ifunc(2),lambda,npf,tf,df)
144 IF (strdef == 2 .AND. (ismstr == 0 .OR. ismstr == 4) )
THEN
147 eps11(i) = exp(epsxx(i)) - one
148 epsrate(i) = exp(epsd(i)) - one
151 ELSE IF (strdef == 3 .AND. ismstr == 1)
THEN
154 eps11(i) = log(epsxx(i) + one)
155 epsrate(i) = log(epsd(i) + one)
169 IF (off(i) == one )
THEN
170 eps_eq(i) = abs(eps11(i))
176 IF (off(i) == one )
THEN
177 eps_eq(i) = abs(eps11(i))
182 IF (off(i) == one )
THEN
201 IF (off(i) == one .and. foff(i) == 1)
THEN
202 IF (ifunc(1) > 0)
THEN
203 epsp_unit = epsrate(i) * unit_t
204 rfac = finter(ifunc(1),epsp_unit,npf,tf,dydx)
205 rfac =
max(rfac,em20)
209 IF (ifunc(3) > 0)
THEN
210 rfac2 = finter(ifunc(3),tstar(i),npf,tf,dydx)
211 rfac2 =
max(rfac2,em20)
215 r1 = epst1*rfac*rfac2*uvar(i,1)
216 r2 = epst2*rfac*rfac2*uvar(i,1)
217 IF (eps_eq(i) > r1)
THEN
218 IF (dfmax(i) == zero)
THEN
222 damage(i) =
min(one, (eps_eq(i)-r1)/(r2-r1))
223 dfmax(i) =
max(dfmax(i) ,damage(i))
225 IF (eps_eq(i) >= r2)
THEN
231 uelr(i) = uelr(i) + one
232 IF (nint(uelr(i)) >= failip)
THEN
244 IF (off(i) == one .and. foff(i) == 1)
THEN
245 IF (ifunc(1) > 0)
THEN
246 epsp_unit = epsrate(i) * unit_t
247 rfac = finter(ifunc(1),epsp_unit,npf,tf,dydx)
248 rfac =
max(rfac,em20)
252 IF (ifunc(3) > 0)
THEN
253 rfac2 = finter(ifunc(3),tstar(i),npf,tf,dydx)
254 rfac2 =
max(rfac2,em20)
258 r1 = epst1*rfac*rfac2*uvar(i,1)
260 IF (epsi(i) > r1)
THEN
261 IF (dfmax(i) == zero)
THEN
265 damage(i) =
min(one, (epsi(i)-r1)/(r2-r1))
266 dfmax(i) =
max(dfmax(i) ,damage(i))
268 IF (epsi(i) >= r2)
THEN
274 uelr(i) = uelr(i) + one
275 IF (nint(uelr(i)) >= failip)
THEN
287 IF (off(i) == one .and. foff(i) == 1)
THEN
288 IF (ifunc(1) > 0)
THEN
289 epsp_unit = epsrate(i) * unit_t
290 rfac = finter(ifunc(1),epsp_unit,npf,tf,dydx)
291 rfac =
max(rfac,em20)
297 IF (eps_eq(i) > r1)
THEN
298 IF (dfmax(i) == zero)
THEN
302 damage(i) =
min(one, (eps_eq(i)-r1)/(r2-r1))
303 dfmax(i) =
max(dfmax(i), damage(i))
305 IF (eps_eq(i) >= r2)
THEN
311 uelr(i) = uelr(i) + one
312 IF (nint(uelr(i)) >= failip)
THEN
316 IF (epsf1 > zero .OR. epsf2 > zero)
THEN
317 IF ( eps_eq(i) > uvar(i,1) .AND. uvar(i,1) /= zero)
THEN
322 uelr(i) = uelr(i) + one
323 IF (nint(uelr(i)) >= failip)
THEN
326 ELSEIF (epsi(i) > epsf2 .AND. epsf2 > zero)
THEN
332 uelr(i) = uelr(i) + one
333 IF (nint(uelr(i)) >= failip)
THEN
337 dfmax(i) =
max(dfmax(i),
min( one, (eps_eq(i) / uvar(i,1))))
347 damscl(i) = one - dfmax(i)
357 IF (s_flag == 3)
THEN
359 WRITE(iout, 2001) ngl(i),ipt,epsi(i)
360 WRITE(istdo,2001) ngl(i),ipt,epsi(i)
361 IF (off(i) == four_over_5)
THEN
362 WRITE(iout, 1111) ngl(i),time
363 WRITE(istdo,1111) ngl(i),time
365#include "lockoff.inc"
368 WRITE(iout, 2002) ngl(i),ipt,eps_eq(i)
369 WRITE(istdo,2002) ngl(i),ipt,eps_eq(i)
370 IF (off(i) == four_over_5)
THEN
371 WRITE(iout, 1111) ngl(i),time
372 WRITE(istdo,1111) ngl(i),time
374#include "lockoff.inc"
380 IF (nindxf > 0)
THEN ! failure
383 IF (s_flag == 3)
THEN
385 WRITE(iout, 3001) ngl(i),ipt,epsi(i)
386 WRITE(istdo,3001) ngl(i),ipt,epsi(i)
387 IF (off(i) == four_over_5)
THEN
388 WRITE(iout, 1111) ngl(i),time
389 WRITE(istdo,1111) ngl(i),time
391#include "lockoff.inc"
393 WRITE(iout, 3101) ngl(i),ipt,eps_eq(i)
394 WRITE(istdo,3101) ngl(i),ipt,eps_eq(i)
395 IF (off(i) == four_over_5)
THEN
396 WRITE(iout, 1111) ngl(i),time
397 WRITE(istdo,1111) ngl(i),time
407 WRITE(iout, 4000) ngl(i),ipt,eps_eq(i),time
408 WRITE(istdo,4100) ngl(i),ipt,eps_eq(i),time
409 IF (off(i) == four_over_5)
THEN
410 WRITE(iout, 1111) ngl(i),time
411 WRITE(istdo,1111) ngl(i),time
413#include "lockoff.inc"
421 WRITE(iout, 5000) ngl(i),ipt,eps_eq(i)
422 WRITE(istdo,5100) ngl(i),ipt,eps_eq(i),time
423 IF (off(i) == four_over_5)
THEN
424 WRITE(iout, 1111) ngl(i),time
425 WRITE(istdo,1111) ngl(i),time
427#include "lockoff.inc"
433 1111
FORMAT(1x,
'DELETED BEAM ELEMENT ',i10,1x,
'AT TIME :',1pe12.4)
434 2001
FORMAT(1x,
'START DAMAGE (TENSSTRAIN) OF BEAM ELEMENT ',i10,1x,
',INTEGRATION PT',i2,
435 . 1x,
'PRINCIPAL STRAIN=',g11.4)
436 2002
FORMAT(1x,
'START DAMAGE (TENSSTRAIN) OF BEAM ELEMENT ',i10,1x,
',INTEGRATION PT',i2,
437 . 1x,
'EQUIVALENT STRAIN=',g11.4)
439 3001
FORMAT(1x,
'FAILURE (TENSSTRAIN) OF BEAM ELEMENT ',i10,1x,
',INTEGRATION PT',i2,
440 . 1x,
'PRINCIPAL STRAIN=',g11.4)
441 3101
FORMAT(1x,
'FAILURE (TENSSTRAIN) OF BEAM ELEMENT ',i10,1x,
',INTEGRATION PT',i2,
442 . 1x,
'EQUIVALENT STRAIN=',g11.4)
444 4000
FORMAT(1x,'failure(tensstrain) of beam element
',I10,1X,',integration pt
',I2,
445 . 1X,'equivalent strain=
',G11.4,1X,'at time :
',1PE12.4)
446 4100 FORMAT(1X,'failure(tensstrain) of beam element
',I10,1X,',integration pt
',I2,
447 . 1X,'equivalent strain=
',G11.4,1X,'at time :
',1PE12.4)
449 5000 FORMAT(1X,'failure(tensstrain) of beam element
',I10,1X,',integration pt
',I2,
450 . 1X,'principal strain=
',G11.4,1X,'at time :
',1PE12.4)
451 5100 FORMAT(1X,'failure(tensstrain) of beam element
',I10,1X,',integration pt
',I2,
452 . 1X,'principal strain=
',G11.4,1X,'at time :
',1PE12.4)
subroutine fail_tensstrain_ib(nel, ngl, nuparam, uparam, time, epsd, off, dfmax, tdel, iout, istdo, ifunc, epsxx, al, tstar, damscl, snpc, npf, stf, uvar, nvarf, tf, ipt, foff, ismstr, uelr, npg)