31 1 NEL ,NUVAR ,IP ,ILAY ,NPG ,TIME ,
32 2 TIMESTEP,UPARAM ,NGL ,OFF ,LOFF ,NOFF ,
33 3 SIGNXX ,SIGNYY ,SIGNZZ ,SIGNXY ,SIGNYZ ,SIGNZX ,
34 4 UVAR ,NUPARAM ,DFMAX ,LF_DAMMX,TDELE ,DMG_SCALE)
38#include "implicit_f.inc"
45 INTEGER,
INTENT(IN) :: NEL,NUPARAM,NUVAR,
46 . ILAY,IP,NPG,NGL(NEL),LF_DAMMX
47 my_real,
INTENT(IN) ::
48 . TIME,TIMESTEP,UPARAM(NUPARAM)
49 my_real,
INTENT(INOUT) ::
50 . signxx(nel),signyy(nel),signzz(nel),
51 . signxy(nel),signyz(nel),signzx(nel)
55 INTEGER,
INTENT(INOUT) :: NOFF(NEL)
56 my_real,
INTENT(INOUT) ::
57 . UVAR(NEL,NUVAR),OFF(NEL),
58 . TDELE(NEL),DMG_SCALE(NEL),LOFF(NEL)
59 my_real ,
DIMENSION(NEL,LF_DAMMX),
INTENT(INOUT) :: dfmax
64 . I,J,INDX(NEL),NINDX,INDX0(NEL),NINDX0,
67 . x11,x22,s12,tmax,fcut
69 . asrate,sxx(nel),syy(nel),szz(nel),
70 . sxy(nel),syz(nel),szx(nel),findex
81 ifail_so = int(uparam(7))
86 asrate = two*pi*fcut*timestep
87 asrate = asrate/(one+asrate)
88 sxx(i) = asrate*signxx(i) + (one - asrate)*uvar(i,2)
89 syy(i) = asrate*signyy(i) + (one - asrate)*uvar(i,3)
90 szz(i) = asrate*signzz(i) + (one - asrate)*uvar(i,4)
91 sxy(i) = asrate*signxy(i) + (one - asrate)*uvar(i,5)
92 syz(i) = asrate*signyz(i) + (one - asrate)*uvar(i,6)
93 szx(i) = asrate*signzx(i) + (one - asrate)*uvar(i,7)
115 ! initialization of element failure index
125 IF (dfmax(i,1)<one)
THEN
128 findex = (sxx(i)/x11)**2 - ((sxx(i)*syy(i))/(x11**2)) +
129 . (syy(i)/x22)**2 + (sxy(i)/s12)**2 -
130 . ((sxx(i)*szz(i))/(x11**2)) + (szz(i)/x22)**2 +
132 findex =
max(zero,findex)
135 dfmax(i,2) = one/
max(sqrt(findex),em20)
138 dfmax(i,1) =
min(one ,
max(findex,dfmax(i,1)))
139 IF (dfmax(i,1) >= one)
THEN
142 IF (ifail_so > 0)
THEN
149 IF ((uvar(i,1) > zero).AND.(loff(i) /= zero).AND.
150 . (ifail_so > 0).AND.(off(i) /= zero))
THEN
151 dmg_scale(i) = exp(-(time - uvar(i,1))/tmax)
152 IF (dmg_scale(i) < em02)
THEN
156 IF (ifail_so == 1)
THEN
160 ELSEIF (ifail_so == 2)
THEN
161 noff(i) = noff(i) + 1
162 IF (int(noff(i)) >= npg)
THEN
179 WRITE(iout, 1000) ngl(i),ip,ilay
180 WRITE(istdo,1100) ngl(i),ip,ilay,time
181#include "lockoff.inc"
189 WRITE(iout, 1200) ngl(i),time
190 WRITE(istdo,1200) ngl(i),time
191#include "lockoff.inc"
195 1000
FORMAT(1x,
'FAILURE (TSAIHILL) OF SOLID ELEMENT ',i10,1x,
196 .
',GAUSS PT',i5,1x,
',LAYER',i5)
197 1100
FORMAT(1x,
'FAILURE (TSAIHILL) OF SOLID ELEMENT ',i10,1x,
198 .
',GAUSS PT',i5,1x,
',LAYER',i5,1x,
'AT TIME :',1pe20.13)
199 1200
FORMAT(1x,
'-- RUPTURE OF SOLID ELEMENT : ',i10,1x,
200 .
'AT TIME :',1pe20.13)
subroutine fail_tsaihill_s(nel, nuvar, ip, ilay, npg, time, timestep, uparam, ngl, off, loff, noff, signxx, signyy, signzz, signxy, signyz, signzx, uvar, nuparam, dfmax, lf_dammx, tdele, dmg_scale)