31 . NEL ,NGL ,NUPARAM ,UPARAM ,
32 . TIME ,EPSD ,OFF ,DFMAX ,
33 . TDEL ,IOUT ,ISTDO ,IFUNC ,
34 . DAMSCL ,UVAR ,NVAR ,
37 . SIGNXX ,SIGNXY ,SIGNXZ ,
38 . DEPSXX ,DEPSXY ,DEPSXZ ,UELR ,NPG)
44#include "implicit_f.inc"
52 INTEGER ,
INTENT(IN) :: NEL
53 INTEGER ,
INTENT(IN) :: NUPARAM
54 INTEGER ,
INTENT(IN) :: IPT
55 INTEGER ,
INTENT(IN) :: IOUT
56 INTEGER ,
INTENT(IN) :: ISTDO
57 INTEGER ,
INTENT(IN) :: SNPC
58 INTEGER ,
INTENT(IN) :: STF
59 INTEGER ,
INTENT(IN) :: NVAR
60 INTEGER ,
DIMENSION(NEL) ,
INTENT(IN) :: NGL
61 INTEGER ,
DIMENSION(100) ,
INTENT(IN) :: IFUNC
62 INTEGER ,
DIMENSION(SNPC) ,
INTENT(IN) :: NPF
63 INTEGER ,
DIMENSION(NEL) ,
INTENT(INOUT) :: FOFF
65 my_real ,
DIMENSION(NUPARAM) ,
INTENT(IN) :: uparam
66 my_real ,
DIMENSION(NEL) ,
INTENT(IN) :: epsd
67 my_real ,
DIMENSION(STF) ,
INTENT(IN) :: tf
68 my_real ,
DIMENSION(NEL) ,
INTENT(INOUT) :: off
69 my_real ,
DIMENSION(NEL) ,
INTENT(INOUT) :: dfmax
70 my_real ,
DIMENSION(NEL) ,
INTENT(INOUT) :: damscl
71 my_real ,
DIMENSION(NEL) ,
INTENT(INOUT) :: tdel
72 my_real ,
DIMENSION(NEL) ,
INTENT(IN) :: signxx,signxy,signxz
73 my_real ,
DIMENSION(NEL) ,
INTENT(IN) :: depsxx,depsxy,depsxz
74 my_real ,
DIMENSION(NEL,NVAR),
INTENT(INOUT) :: uvar
75 my_real,
DIMENSION(NEL) ,
INTENT(INOUT) :: uelr
76 INTEGER ,
INTENT(IN) :: NPG
80 INTEGER :: I,J,NINDX,NINDXD,FAILIP
81 INTEGER ,
DIMENSION(NEL) :: INDX,INDXD
82 my_real :: rfac,r1,r2,dydx,rief1,rief2,xfac,finter
84 my_real ,
DIMENSION(NEL) :: damage,ie_sp
91 failip =
min(nint(uparam(6)),npg)
95 uvar(i,1) = uvar(i,1) + (signxx(i)*depsxx(i) +
96 . signxy(i)*depsxy(i) +
97 . signxz(i)*depsxz(i))
101 IF (off(i) == one .AND. foff(i) == 1)
THEN
102 IF (ifunc(1) /= 0)
THEN
103 rfac = finter(ifunc(1),epsd(i)*xfac,npf,tf,dydx)
104 rfac =
max(rfac,em20)
111 IF (ie_sp(i) > r1)
THEN
112 damage(i) = (ie_sp(i)-r1)/(r2-r1)
114 IF (dfmax(i) == zero)
THEN
118 dfmax(i) =
max(dfmax(i) ,damage(i))
119 damscl(i) = one - damage(i)
122 damscl(i) = one - damage(i)
126 IF (ie_sp(i) > r2 )
THEN
133 uelr(i) = uelr(i) + one
134 IF (nint(uelr(i)) >= failip)
THEN
146 WRITE(iout, 2000) ngl(i),ipt,time,ie_sp(i)
147 WRITE(istdo,2000) ngl(i),ipt,time,ie_sp(i)
148#include "lockoff.inc"
156 WRITE(iout, 1000) ngl(i),ipt,time,ie_sp(i)
157 WRITE(istdo,1000) ngl(i),ipt,time,ie_sp(i)
158 IF (off(i) == four_over_5)
THEN
159 WRITE(iout, 1111) ngl(i),time
160 WRITE(istdo,1111) ngl(i),time
162#include "lockoff.inc"
166 1000
FORMAT(5x,
'FAILURE (ENERGY) OF BEAM ELEMENT ',i10,1x,
',INTEGRATION PT',i5
167 . ,2x,
'AT TIME :',1pe12.4,1x,
' , ENERGY PER VOLUME : ',1pe12.4 )
168 2000
FORMAT(5x,
'START DAMAGE (ENERGY) OF BEAM ELEMENT ',i10,1x,
',INTEGRATION PT',i5
169 . ,2x,
'AT TIME :',1pe12.4,1x,
' , ENERGY PER VOLUME : ',1pe12.4 )
170 1111
FORMAT(1x,
'DELETED BEAM ELEMENT ',i10,1x,
'AT TIME :',1pe12.4)
subroutine fail_energy_ib(nel, ngl, nuparam, uparam, time, epsd, off, dfmax, tdel, iout, istdo, ifunc, damscl, uvar, nvar, snpc, npf, stf, tf, ipt, foff, signxx, signxy, signxz, depsxx, depsxy, depsxz, uelr, npg)