30 1 NEL ,NUPARAM ,NUVAR ,UPARAM ,UVAR ,
31 2 TIME ,NGL ,IPG ,ILAY ,IPT ,
32 3 EPSXX ,EPSYY ,EPSXY ,EPSYZ ,EPSZX ,
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,ILAY,IPT,LF_DAMMX
50 INTEGER ,
DIMENSION(NEL) ,
INTENT(IN) :: NGL
51 my_real ,
INTENT(IN) :: TIME,TIMESTEP
52 my_real ,
DIMENSION(NEL) ,
INTENT(IN) :: OFF,
53 . EPSXX,EPSYY,EPSXY,EPSYZ,
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 my_real ,
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) :: INDX
69 . EPS1_MAX,EPS2_MAX,GAM12_MAX,TMAX,FCUT
71 . exx(nel),eyy(nel),exy(nel),findex,rfactr,asrate
82 ifail_sh = int(uparam(6))
89 asrate = two*pi*fcut*timestep
90 asrate = asrate/(one+asrate)
92 exx(i) = asrate*epsxx(i) + (one - asrate)*uvar(i,2)
93 eyy(i) = asrate*epsyy(i) + (one - asrate)*uvar(i,3)
94 exy(i) = asrate*epsxy(i) + (one - asrate)*uvar(i,4)
118 IF (dfmax(i,1)<one)
THEN
121 findex =
max(abs(exx(i))/eps1_max,
122 . abs(eyy(i))/eps2_max,
123 . abs(exy(i))/gam12_max)
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 (MAXSTRAIN) OF SHELL ELEMENT ',i10,1x,
',GAUSS PT',
165 . i2,1x,
',LAYER',i3,1x,
',INTEGRATION PT',i3)
166 2100
FORMAT(1x,
'FAILURE (MAXSTRAIN) OF SHELL ELEMENT ',i10,1x,
',GAUSS PT',
167 . i2,1x,
',LAYER',i3,1x,
',INTEGRATION PT',i3,1x,
'AT TIME :',1pe12.4)
subroutine fail_maxstrain_c(nel, nuparam, nuvar, uparam, uvar, time, ngl, ipg, ilay, ipt, epsxx, epsyy, epsxy, epsyz, epszx, off, foff, dmg_flag, dmg_scale, dfmax, lf_dammx, tdel, timestep)