31 . NEL ,NGL ,NUPARAM ,UPARAM ,
32 . TIME ,EPSD ,OFF ,DFMAX ,
33 . TDEL ,IOUT ,ISTDO ,IFUNC ,
36 . TF ,ISMSTR ,NUVAR ,UVAR ,
43#include "implicit_f.inc"
51 INTEGER ,
INTENT(IN) :: NEL
52 INTEGER INTENT(IN) :: NUPARAM
53 INTEGER INTENT(IN) :: IOUT
54 INTEGER ,
INTENT(IN) ::
55 INTEGER ,
INTENT(IN) :: SNPC
56 INTEGER ,
INTENT(IN) :: STF
57 INTEGER ,
DIMENSION(NEL) ,
INTENT(IN) :: NGL
58 INTEGER ,
DIMENSION(100) ,
INTENT(IN)
59 INTEGER ,
DIMENSION(SNPC) ,
INTENT(IN) :: NPF
60 INTEGER ,
INTENT(IN) :: ISMSTR
61 INTEGER ,
INTENT(IN) :: NUVAR
63 my_real ,
DIMENSION(NUPARAM) ,
INTENT(IN) :: uparam
64 my_real ,
DIMENSION(NEL) ,
INTENT(IN) :: epsd
65 my_real ,
DIMENSION(NEL) ,
INTENT(IN) :: tstar
66 my_real ,
DIMENSION(NEL) ,
INTENT(IN) :: al
67 my_real ,
DIMENSION(NEL) ,
INTENT(IN) :: epsxx
68 my_real ,
DIMENSION(STF) ,
INTENT(IN) :: tf
69 my_real ,
DIMENSION(NEL) ,
INTENT(INOUT) :: off
70 my_real ,
DIMENSION(NEL) ,
INTENT(INOUT) :: dfmax
71 my_real ,
DIMENSION(NEL) ,
INTENT(INOUT) :: tdel
72 my_real ,
DIMENSION(NEL,NUVAR),
INTENT(INOUT) :: uvar
73 my_real,
DIMENSION(NEL) ,
INTENT(INOUT) :: dmgscl
77 INTEGER I,J,NINDXD,NINDXF,NINDX1,NINDX2,S_FLAG,SCALE_FLAG,STRDEF,STRFLAG
78 INTEGER ,
DIMENSION(NEL) :: INDXD,INDXF,,INDX2
79 my_real r1,r2,epsf1,epsf2,lambda,fac,df,
80 . el_ref,sc_el,scale_temp,rfac,rfac2,
81 . unit_t,epsp_unit,finter,dydx,epst1,epst2
83 my_real ,
DIMENSION(NEL) :: eps_eq,damage,epsrate,eps11,epsi
91 scale_temp = uparam(7)
92 s_flag = int(uparam(8))
94 strdef = int(uparam(10))
105 uvar(i,2) = uvar(i,2) + epsxx(i)
107 IF (uvar(1,1) == zero)
THEN
110 IF (ifunc(2) > 0)
THEN
112 lambda = al(i) / el_ref
113 fac = sc_el * finter(ifunc(2),lambda,npf,tf,df)
122 IF (ifunc(2) > 0)
THEN
124 lambda = al(i) / el_ref
125 fac = sc_el * finter(ifunc(2),lambda,npf,tf,df)
143 IF (strdef == 2 .AND. (ismstr == 0 .OR. ismstr == 4) )
THEN
146 eps11(i) = exp(uvar(i,2)) - one
147 epsrate(i) = exp(epsd(i)) - one
150 ELSE IF (strdef == 3 .AND. ismstr == 1)
THEN
153 eps11(i) = log(uvar(i,2) + one)
154 epsrate(i) = log(epsd(i) + one)
168 IF (off(i) == one )
THEN
169 eps_eq(i) = abs(eps11(i))
175 IF (off(i) == one )
THEN
176 eps_eq(i) = abs(eps11(i))
181 IF (off(i) == one )
THEN
201 IF (off(i) == one )
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))
224 IF ( eps_eq(i) >= r2)
THEN
238 IF (off(i) == one )
THEN
239 IF (ifunc(1) > 0)
THEN
240 epsp_unit = epsrate(i) * unit_t
241 rfac = finter(ifunc(1),epsp_unit,npf,tf,dydx)
242 rfac =
max(rfac,em20)
246 IF (ifunc(3) > 0)
THEN
247 rfac2 = finter(ifunc(3),tstar(i),npf,tf,dydx)
248 rfac2 =
max(rfac2,em20)
252 r1 = epst1*rfac*rfac2*uvar(i,1)
253 r2 = epst2*rfac*rfac2*uvar(i,1)
254 IF (epsi(i) > r1)
THEN
255 IF (dfmax(i) == zero)
THEN
259 damage(i) =
min(one, (epsi(i)-r1)/(r2-r1))
261 IF (epsi(i) >= r2)
THEN
275 IF (off(i) == one )
THEN
276 IF (ifunc(1) > 0)
THEN
277 epsp_unit = epsrate(i) * unit_t
278 rfac = finter(ifunc(1),epsp_unit,npf,tf,dydx)
279 rfac =
max(rfac,em20)
285 IF ( eps_eq(i) > r1)
THEN
286 IF (dfmax(i) == zero)
THEN
290 damage(i) =
min(one, ( eps_eq(i)-r1)/(r2-r1))
292 IF ( eps_eq(i) >= r2)
THEN
298 IF (epsf1 > zero .OR. epsf2 > zero)
THEN
304 ELSEIF (epsi(i) > epsf2 .AND. epsf2 > zero)
THEN
311 dfmax(i) =
max(dfmax(i),
min( one, ( eps_eq(i) / uvar(i,1))))
325 dmgscl(i) = one - damage(i)
338 IF (s_flag == 3)
THEN
340 WRITE(iout, 2001) ngl(i),epsi(i)
341 WRITE(istdo,2001) ngl(i),epsi(i)
342#include "lockoff.inc"
345 WRITE(iout, 2002) ngl(i), eps_eq(i)
346 WRITE(istdo,2002) ngl(i), eps_eq(i)
347#include "lockoff.inc"
356 IF (s_flag == 3)
THEN
358 WRITE(iout, 3001) ngl(i),epsi(i)
359 WRITE(istdo,3001) ngl(i),epsi(i)
360#include "lockoff.inc"
362 WRITE(iout, 3101) ngl(i), eps_eq(i)
363 WRITE(istdo,3101) ngl(i), eps_eq(i)
372 WRITE(iout, 4000) ngl(i), eps_eq
373 WRITE(istdo,4100) ngl(i
374#include "lockoff.inc"
382 WRITE(iout, 5000) ngl(i), eps_eq(i),time
383 WRITE(istdo,5100) ngl(i), eps_eq(i),time
384#include "lockoff.inc"
390 2001
FORMAT(1x,
'START DAMAGE (TENSSTRAIN) OF BEAM ELEMENT ',i10,1x,
391 . 1x,
'PRINCIPAL STRAIN=',g11.4)
392 2002
FORMAT(1x,
'START DAMAGE (TENSSTRAIN) OF BEAM ELEMENT ',i10,1x,
393 .
'EQUIVALENT STRAIN=',g11.4)
395 3001
FORMAT(1x,
'FAILURE (TENSSTRAIN) OF BEAM ELEMENT ',i10,1x,
396 .
'PRINCIPAL STRAIN=',g11.4)
397 3101
FORMAT(1x,
'FAILURE (TENSSTRAIN) OF BEAM ELEMENT ',i10,1x,
398 .
'EQUIVALENT STRAIN=',g11.4)
400 4000
FORMAT(1x,
'FAILURE (TENSSTRAIN) OF BEAM ELEMENT ',i10,1x,
401 .
'EQUIVALENT STRAIN=',g11.4,1x,
'AT TIME :',1pe12.4)
402 4100
FORMAT(1x,
'FAILURE (TENSSTRAIN) OF BEAM ELEMENT ',i10,1x,
403 .
'EQUIVALENT STRAIN=',g11.4,1x,
'AT TIME :',1pe12.4)
405 5000
FORMAT(1x,
'FAILURE (TENSSTRAIN) OF BEAM ELEMENT ',i10,1x,
406 .
'PRINCIPAL STRAIN=',g11.4,1x,
'AT TIME :',1pe12.4)
407 5100
FORMAT(1x,
'FAILURE (TENSSTRAIN) OF BEAM ELEMENT ',i10,1x,
408 .
'PRINCIPAL STRAIN=',g11.4,1x,
'AT TIME :',1pe12.4)
subroutine fail_beam3(elbuf_str, fail, nummat, npropm, snpc, stf, nel, imat, jthe, dpla, tempel, ngl, pm, off, epsd, npf, tf, time, iout, istdo, svm, pressure, area, al, f1, f2, f3, m1, m2, m3, ismstr, epsxx, epsxy, epsxz, kxx, kyy, kzz, dtime, ntable, table, pla, sigy)
subroutine fail_tensstrain_b(nel, ngl, nuparam, uparam, time, epsd, off, dfmax, tdel, iout, istdo, ifunc, epsxx, al, tstar, snpc, npf, stf, tf, ismstr, nuvar, uvar, dmgscl)