35 1 NEL ,NUPARAM ,NUVAR ,NFUNC ,IFUNC ,NPF ,
36 2 TF ,TIME ,TIMESTEP ,UPARAM ,NGL ,EPSP ,
37 3 UVAR ,OFF ,DFMAX ,TDELE ,DMGSCL ,
38 4 SIGNXX ,SIGNYY ,SIGNZZ ,SIGNXY ,SIGNYZ ,SIGNZX ,
39 5 DEPSXX ,DEPSYY ,DEPSZZ ,DEPSXY ,DEPSYZ ,DEPSZX )
43#include "implicit_f.inc"
77 INTEGER,
INTENT(IN) :: NEL,NUPARAM,NUVAR
78 INTEGER,
DIMENSION(NEL),
INTENT(IN) :: NGL
79 my_real,
INTENT(IN) :: TIME,TIMESTEP
80 my_real,
DIMENSION(NUPARAM),
INTENT(IN) :: UPARAM
81 my_real,
DIMENSION(NEL),
INTENT(IN) :: SIGNXX,SIGNYY,SIGNZZ,
82 . signxy,signyz,signzx,depsxx,depsyy,depszz
87 my_real,
DIMENSION(NEL),
INTENT(INOUT) :: off,dfmax,dmgscl,tdele
88 my_real,
DIMENSION(NEL,NUVAR),
INTENT(INOUT) :: uvar
92 INTEGER NPF(*), NFUNC, IFUNC(NFUNC)
105 INTEGER I,J,IDEL,IDEV,IFLAG(MVSIZ),INDX(MVSIZ),IADBUF,NINDX,
106 . NINDEX,INDEX(MVSIZ),IR,IFAIL,JJ,
109 . E1,E2,E3,E4,E5,E6,RFAC,E42,E52,E62,C,D, EPST,EPST2,
110 . r1,r2,y,yp,dav,dydx,ie_sp,p,scale,cc
112 . eps_max(mvsiz),damage(mvsiz),epsf1(mvsiz),epsf2(mvsiz),
121 uvar(i,1) = uvar(i,1) + signxx(i)*depsxx(i) +
122 . signyy(i)*depsyy(i) +
123 . signzz(i)*depszz(i) +
124 . signxy(i)*depsxy(i) +
125 . signyz(i)*depsyz(i) +
126 . signzx(i)*depszx(i)
130 IF(off(i)<em01) off(i)=zero
131 IF(off(i)<one) off(i)=off(i)*four_over_5
138 rfac=finter(ifunc(1),epsp(i)*xfac,npf,tf,dydx)
139 rfac =
max(rfac,em20)
145 IF(ie_sp>r1.AND.r1<r2)
THEN
146 damage(i)= (ie_sp-r1)/(r2-r1)
147 damage(i)=
min(one,damage(i))
149 dfmax(i) =
max(dfmax(i),damage(i))
160 IF(nindx>0.AND.imconv==1)
THEN
163 WRITE(iout, 1000) ngl(indx(j))
164 WRITE(istdo,1100) ngl(indx(j)),time
165#include "lockoff.inc"
169 dmgscl(i) = one - dfmax(i)
172 1000
FORMAT(1x,
'DELETE SOLID ELEMENT NUMBER ',i10)
173 1100
FORMAT(1x,
'DELETE SOLID ELEMENT NUMBER ',i10,
174 .
' AT TIME :',1pe20.13)
subroutine fail_energy_s(nel, nuparam, nuvar, nfunc, ifunc, npf, tf, time, timestep, uparam, ngl, epsp, uvar, off, dfmax, tdele, dmgscl, signxx, signyy, signzz, signxy, signyz, signzx, depsxx, depsyy, depszz, depsxy, depsyz, depszx)