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 . ,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 . f1,f2,f11,f22,f66,f12,tmax,fcut
69 . asrate,sxx(nel),syy(nel),szz(nel),
70 . sxy(nel),syz(nel),szx(nel),a,b,findex,rfactr
84 ifail_so = int(uparam(10))
89 asrate = two*pi*fcut*timestep
90 asrate = asrate/(one+asrate)
91 sxx(i) = asrate*signxx(i) + (one - asrate)*uvar(i,2)
92 syy(i) = asrate*signyy(i) + (one - asrate)*uvar(i,3)
93 szz(i) = asrate*signzz(i) + (one - asrate)*uvar(i,4)
94 sxy(i) = asrate*signxy(i) + (one - asrate)*uvar
95 syz(i) = asrate*signyz(i) + (one - asrate)*uvar(i,6)
96 szx(i) = asrate*signzx(i) + (one - asrate)*uvar(i,7)
128 IF (dfmax(i,1)<one)
THEN
131 a = f11*(sxx(i)**2) + f22*(syy(i)**2) +
132 . f22*(szz(i)**2) + f66*(sxy(i)**2) +
133 . f66*(szx(i)**2) + f12*sxx(i)*syy(i) +
135 b = f1*sxx(i) + f2*syy(i) + f2*szz(i)
139 findex =
max(zero,findex)
142 rfactr = (-b + sqrt((b**2)+four*a))/
max((two*a),em20)
146 dfmax(i,1) =
min(one ,
max(findex,dfmax(i,1)))
147 IF (dfmax(i,1) >= one)
THEN
150 IF (ifail_so > 0)
THEN
157 IF ((uvar(i,1) > zero).AND.(loff(i) /= zero).AND.
158 . (ifail_so > 0).AND.(off(i) /= zero))
THEN
159 dmg_scale(i) = exp(-(time - uvar(i,1))/tmax)
160 IF (dmg_scale(i) < em02)
THEN
164 IF (ifail_so == 1)
THEN
168 ELSEIF (ifail_so == 2)
THEN
169 noff(i) = noff(i) + 1
170 IF (int(noff(i)) >= npg)
THEN
187 WRITE(iout, 1000) ngl(i),ip,ilay
188 WRITE(istdo,1100) ngl(i),ip,ilay,time
189#include "lockoff.inc"
197 WRITE(iout, 1200) ngl(i),time
198 WRITE(istdo,1200) ngl(i),time
199#include "lockoff.inc"
203 1000
FORMAT(1x,
'FAILURE (HOFFMAN) OF SOLID ELEMENT '
204 .
',GAUSS PT',i5,1x,
',LAYER',i5)
205 1100
FORMAT(1x,
'FAILURE (HOFFMAN) OF SOLID ELEMENT ',i10,1x,
206 .
',GAUSS PT',i5,1x,
',LAYER',i5,1x,
'AT TIME :',1pe20.13)
207 1200
FORMAT(1x,
'-- RUPTURE OF SOLID ELEMENT : ',i10,1x,
208 .
'AT TIME :',1pe20.13)
subroutine fail_hoffman_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)