33 1 NEL ,NUPARAM,NUVAR ,
34 2 TIME ,TIMESTEP ,UPARAM ,NGL ,
35 4 SIGNXX ,SIGNYY ,SIGNZZ ,SIGNXY ,SIGNYZ ,SIGNZX ,
36 5 DPLA ,PLA ,UVAR ,OFF ,DFMAX ,
43#include "implicit_f.inc"
73 INTEGER NEL, NUPARAM, NUVAR,(NEL)
74 my_real TIME,TIMESTEP,UPARAM(*),
75 . SIGNXX(NEL),SIGNYY(NEL),SIGNZZ(NEL),
76 . SIGNXY(NEL),SIGNYZ(NEL),SIGNZX(NEL),
86 my_real uvar(nel,nuvar), off(nel),dfmax(nel),tdele(nel)
90 INTEGER I,J,IDEL,IDEV,IFLAG,INDX(MVSIZ),IADBUF,NINDX,
91 . nindex,index(mvsiz),ifail,jj,imoy
94 . cn,p,epsf,svm,j3,eta,xi,sxx,syy,szz,delta,
95 . xi_old, eta_old,pla_old,epsf_old
103 iflag = int(uparam(8))
104 imoy = int( uparam(9))
116 IF(off(i)<0.1) off(i)=0.0
117 IF(off(i)<1.0) off(i)=off(i)*0.8
124 IF(iflag==1.AND.off(i)==1.AND.dpla(i)/=zero)
THEN
125 p = third*(signxx(i) + signyy(i) + signzz(i))
130 svm =half*(sxx**2 + syy**2 + szz**2)
131 . +signxy(i)**2 + signzx(i)**2 + signyz(i)**2
134 j3 = sxx*syy*szz + two*signxy(i)*signzx(i)*signyz(i)
135 . - syy*signzx(i)**2 - sxx*signyz(i)**2
137 eta = p /
max(em20,svm)
138 xi = half*(twenty + seven)*j3/
max(em20,svm**3)
141 uvar(i,1) = uvar(i,1) + eta*dpla(i)
142 uvar(i,2) = uvar(i,2) + xi*dpla(i)
143 eta = uvar(i,1)/
max(em20,pla(i))
144 xi = uvar(i,2)/
max(em20,pla(i))
147 epsf = (c1*exp(-c2*eta))**cn
148 . - (c3*exp(-c4*eta))**cn
149 epsf = epsf *
max(zero,(one - xi**cm))**(one/cm)
150 epsf = ((c1*exp(-c2*eta))**cn - epsf)**(one/cn)
152 . dfmax(i) = dfmax(i) + dpla(i)*(one/epsf)
153 IF(dfmax(i)>=one.AND.off(i)==one)
THEN
161 IF(nindx>0.AND.imconv==1)
THEN
164 WRITE(iout, 1000) ngl(indx(j))
165 WRITE(istdo,1100) ngl(indx(j)),time
166#include "lockoff.inc"
175 IF(iflag==2.AND.off(i)==one)
THEN
177 p = third*(signxx(i) + signyy(i) + signzz(i))
182 svm =half*(sxx**2 + syy**2 + szz**2)
183 . +signxy(i)**2 + signzx(i)**2 + signyz(i)**2
186 j3 = sxx*syy*szz + two*signxy
187 . - syy*signzx(i)**2 - sxx*signyz(i)**2
189 eta = p /
max(em20,svm)
190 xi = half*(twenty + seven)*j3/
max(em20,svm**3)
193 uvar(i,1) = uvar(i,1) + eta*dpla(i)
194 uvar(i,2) = uvar(i,2) + xi*dpla(i)
195 eta = uvar(i,1)/
max(em20,pla(i))
196 xi = uvar(i,2)/
max(em20,pla(i))
199 epsf = (c1*exp(-c2*eta))**cn
200 . - (c3*exp(-c4*eta))**cn
201 epsf = epsf *
max(zero,(one - xi**cm))**(one/cm)
202 epsf = ((c1*exp(-c2*eta))**cn - epsf)**(one/cn)
203 IF(epsf>zero) dfmax(i) = dfmax(i) + dpla(i)/epsf
204 IF(dfmax(i)>=one.AND.off(i)==one)
THEN
216 p = third*(signxx(i) + signyy(i) + signzz(i))
226 IF(nindx>0.AND.imconv==1)
THEN
230 WRITE(iout, 2000) ngl(i)
231 WRITE(istdo,2100) ngl(i),time
232#include "lockoff.inc"
238 dfmax(i)=
min(one,dfmax(i))
241 1000
FORMAT(1x,
'DELETE SOLID ELEMENT NUMBER ',i10)
242 1100
FORMAT(1x,
'DELETE SOLID ELEMENT NUMBER ',i10,
243 .
' AT TIME :',1pe20.13)
245 2000
FORMAT(1x,
' DEVIATORIC STRESS WILL BE VANISHED',i10)
246 2100
FORMAT(1x,
' DEVIATORIC STRESS WILL BE VANISHED',i10,
247 .
' AT TIME :',1pe20.13)
subroutine fail_wierzbicki_s(nel, nuparam, nuvar, time, timestep, uparam, ngl, signxx, signyy, signzz, signxy, signyz, signzx, dpla, pla, uvar, off, dfmax, tdele)