31 1 NEL ,NUVAR ,IP ,ILAY ,NPG ,TIME ,
32 2 TIMESTEP,UPARAM ,NGL ,OFF ,LOFF ,NOFF ,
33 3 EPSXX ,EPSYY ,EPSZZ ,EPSXY ,EPSYZ ,EPSZX ,
34 4 UVAR ,NUPARAM ,DFMAX ,LF_DAMMX,TDELE ,DMG_SCALE)
38#include "implicit_f.inc"
45 INTEGER,
INTENT(IN) :: NEL,,NUVAR,
46 . ILAY,IP,NPG,NGL(NEL),
47 my_real,
INTENT(IN) ::
48 . TIME,TIMESTEP,UPARAM(NUPARAM)
49 my_real,
INTENT(INOUT) ::
50 . epsxx(nel),epsyy(nel),epszz(nel),
51 . epsxy(nel),epsyz(nel),epszx(nel)
55 INTEGER,
INTENT(INOUT) :: NOFF(NEL)
56 my_real,
INTENT(INOUT) ::
57 . (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 . eps1_max,eps2_max,gam12_max,tmax,fcut
69 . asrate,exx(nel),eyy(nel),ezz(nel),
70 . exy(nel),eyz(nel),ezx(nel),findex,rfactr
81 ifail_so = int(uparam(7))
86 asrate = two*pi*fcut*timestep
87 asrate = asrate/(one+asrate)
88 exx(i) = asrate*epsxx(i) + (one - asrate)*uvar(i,2)
89 eyy(i) = asrate*epsyy(i) + (one - asrate)*uvar(i,3)
90 ezz(i) = asrate*epszz(i) + (one - asrate)*uvar(i,4)
91 exy(i) = asrate*epsxy(i) + (one - asrate)*uvar(i,5)
92 eyz(i) = asrate*epsyz(i) + (one - asrate)*uvar(i,6)
93 ezx(i) = asrate*epszx(i) + (one - asrate)*uvar(i,7)
125 IF (dfmax(i,1)<one)
THEN
128 findex =
max(abs(exx(i))/eps1_max,
129 . abs(eyy(i))/eps2_max,
130 . abs(exy(i))/gam12_max,
131 . abs(ezz(i))/eps2_max,
132 . abs(ezx(i))/gam12_max)
133 findex =
max(zero,findex)
136 dfmax(i,2) = one/
max(sqrt(findex),em20)
138 IF (findex > zero)
THEN
139 rfactr = one/sqrt(findex)
145 dfmax(i,1) =
min(one ,
max(findex,dfmax(i,1)))
146 IF (dfmax(i,1) >= one)
THEN
149 IF (ifail_so > 0)
THEN
156 IF ((uvar(i,1) > zero).AND.(loff(i) /= zero).AND.
157 . (ifail_so > 0).AND.(off(i) /= zero))
THEN
158 dmg_scale(i) = exp(-(time - uvar(i,1))/tmax)
159 IF (dmg_scale(i) < em02)
THEN
167 ELSEIF (ifail_so == 2)
THEN
168 noff(i) = noff(i) + 1
169 IF (int(noff(i)) >= npg)
THEN
186 WRITE(iout, 1000) ngl(i),ip,ilay
187 WRITE(istdo,1100) ngl(i),ip,ilay,time
188#include "lockoff.inc"
196 WRITE(iout, 1200) ngl(i),time
197 WRITE(istdo,1200) ngl(i),time
198#include "lockoff.inc"
202 1000
FORMAT(1x,
'FAILURE (MAXSTRAIN) OF SOLID ELEMENT ',i10,1x,
203 .
',GAUSS PT',i5,1x,
',LAYER',i5)
204 1100
FORMAT(1x,
'FAILURE (MAXSTRAIN) OF SOLID ELEMENT ',i10,1x,
205 .
',GAUSS PT',i5,1x,
',LAYER',i5,1x,
'AT TIME :',1pe20.13
206 1200
FORMAT(1x,'-- rupture of solid element :
',I10,1X,
207 .'at time :
',1PE20.13)
subroutine fail_maxstrain_s(nel, nuvar, ip, ilay, npg, time, timestep, uparam, ngl, off, loff, noff, epsxx, epsyy, epszz, epsxy, epsyz, epszx, uvar, nuparam, dfmax, lf_dammx, tdele, dmg_scale)