30 1 NEL ,NUPARAM ,NUVAR ,UPARAM ,UVAR ,
31 2 TIME ,NGL ,IPG ,ILAY ,IPT ,
32 3 SIGNXX ,SIGNYY ,SIGNXY ,SIGNYZ ,SIGNZX ,
33 4 OFF ,FOFF ,DMG_FLAG ,DMG_SCALE ,
34 5 DFMAX ,LF_DAMMX ,TDEL ,TIMESTEP )
40#include "implicit_f.inc"
49 INTEGER ,
INTENT(IN) :: NEL,NUPARAM,NUVAR,IPG
50INTEGER ,
DIMENSION(NEL) ,
INTENT(IN) :: NGL
51 my_real ,
INTENT(IN) :: TIME,TIMESTEP
52 ,
DIMENSION(NEL) ,
INTENT(IN) :: OFF,
53 . SIGNXX,SIGNYY,SIGNXY,SIGNYZ,SIGNZX
54 my_real,
DIMENSION(NUPARAM) ,
INTENT(IN) :: uparam
58 INTEGER ,
INTENT(OUT) ::DMG_FLAG
59 INTEGER ,
DIMENSION(NEL) ,
INTENT(INOUT) :: FOFF
60 my_real ,
DIMENSION(NEL,LF_DAMMX),
INTENT(INOUT) :: DFMAX
61 ,
DIMENSION(NEL) ,
INTENT(OUT) :: TDEL,DMG_SCALE
62 my_real ,
DIMENSION(NEL,NUVAR) ,
INTENT(INOUT) :: UVAR
66 INTEGER :: I,J,NINDX,IFAIL_SH
67 INTEGER ,
DIMENSION(NEL)
72 . sxx(nel),syy(nel),sxy(nel)
83 ifail_sh = int(uparam(6))
90 asrate = two*pi*fcut*timestep
91 asrate = asrate/(one+asrate)
93 sxx(i) = asrate*signxx(i) + (one - asrate)*uvar(i,2)
94 syy(i) = asrate*signyy(i) + (one - asrate)*uvar(i,3)
95 sxy(i) = asrate*signxy(i) + (one - asrate)*uvar(i,4)
119 IF (dfmax(i,1)<one)
THEN
122 findex = (sxx(i)/x11)**2 - ((sxx(i)*syy(i))/(x11**2)) +
123 . (syy(i)/x22)**2 + (sxy(i)/s12)**2
124 findex =
max(zero,findex)
127 dfmax(i,2) = one/
max(sqrt(findex),em20)
130 dfmax(i,1) =
min(one ,
max(findex,dfmax(i,1)))
131 IF (dfmax(i,1) >= one)
THEN
134 IF (ifail_sh > 0)
THEN
141 IF ((uvar(i,1) > zero).AND.(foff(i) /= 0).AND.(ifail_sh > 0))
THEN
142 dmg_scale(i) = exp(-(time - uvar(i,1))/tmax)
143 IF (dmg_scale(i) < em02)
THEN
158 WRITE(iout, 2000) ngl(i),ipg,ilay,ipt
159 WRITE(istdo,2100) ngl(i),ipg,ilay,ipt,time
160#include "lockoff.inc"
164 2000
FORMAT(1x,
'FAILURE (TSAIHILL) OF SHELL ELEMENT ',i10,1x,
',GAUSS PT',
165 . i2,1x,
',LAYER',i3,1x,
',INTEGRATION PT',i3)
166 2100
FORMAT(1x,
'FAILURE (TSAIHILL) OF SHELL ELEMENT ',i10,1x,
',GAUSS PT',
167 . i2,1x,
',LAYER',i3,1x,
',INTEGRATION PT',i3,1x,
'AT TIME :',1pe12.4)
subroutine fail_tsaihill_c(nel, nuparam, nuvar, uparam, uvar, time, ngl, ipg, ilay, ipt, signxx, signyy, signxy, signyz, signzx, off, foff, dmg_flag, dmg_scale, dfmax, lf_dammx, tdel, timestep)