33 1 NEL ,NUPARAM,NUVAR ,
34 2 TIME ,TIMESTEP ,UPARAM ,NGL ,
35 4 SIGNXX ,SIGNYY ,SIGNZZ ,SIGNXY ,SIGNYZ ,SIGNZX ,
36 5 DPLA ,UVAR ,OFF ,DFMAX ,TDELE )
42#include "implicit_f.inc"
88 INTEGER NEL, NUPARAM, NUVAR,NGL(NEL)
89 my_real TIME,TIMESTEP,UPARAM(*),
90 . SIGNXX(NEL),SIGNYY(NEL),SIGNZZ(NEL),
91 . SIGNXY(NEL),SIGNYZ(NEL),SIGNZX(NEL),
101 my_real uvar(nel,nuvar), off(nel),dfmax(nel),tdele(nel)
105 INTEGER I,J,IDEL,IDEV,IFLAG,INDX(MVSIZ),IADBUF,NINDX,
106 . NINDEX,INDEX(MVSIZ),JJ,IFAIL
109 . p,scale,s1,s2,s3,ss,e1,e2,e3,e4,e5,e6,
110 . epst2, a, cc1, b, y ,yp, d, e42, e52, c, e62,w1,w2
116 iflag = int(uparam(6))
129 IF(off(i)<0.1) off(i)=0.0
130 IF(off(i)<1.0) off(i)=off(i)*0.8
141 IF(iflag==1.AND.off(i)==1.)
THEN
145 p = third*(signxx(i) + signyy(i) + signzz(i))
161 c = - half * (e1*e1 + e2*e2 + e3*e3) - e42 - e52 - e62
162 d = - e1*e2*e3 + e1*e52 + e2*e62 + e3*e42
167 y = (epst2 + c)* s1 + d
171 y = (epst2 + c)* s1 + d
173 IF(yp/=zero)s1 = s1 - y/yp
175 y = (epst2 + c)* s1 + d
177 IF(yp/=zero)s1 = s1 - y/yp
179 y = (epst2 + c)* s1 + d
181 IF(yp/=zero)s1 = s1 - y/yp
183 y = (epst2 + c)* s1 + d
185 IF(yp/=zero)s1 = s1 - y/yp
189 s2 = half*(-s1 + sqrt(
max(zero,(s1**2 - four*c))))
190 ss = half*(-s1 - sqrt(
max(zero,(s1**2 - four*c))))
197 IF(s1/=zero.AND.s3==zero) a = s2/s1
198 IF(s1==zero.AND.s3/=zero) a = s2/s3
199 IF(s1/=zero.AND.s3/=zero)
200 . a =
max(s2/s3, s2/s1)
201 w2 =
max(em20,(two - a))**be
203 w1 = (
max(em20,one/w1))**al
204 uvar(i,1) = uvar(i,1) + w1*w2*dpla(i)
205 IF(uvar(i,1)>=dc)
THEN
213 IF(nindx>0.AND.imconv==1)
THEN
217 WRITE(istdo,1000)ngl(i)
218 WRITE(iout,1100)ngl(i),time
219#include "lockoff.inc"
230 IF(iflag==2.AND.off(i)==one)
THEN
232 p = third*(signxx(i) + signyy(i) + signzz(i))
248 c = - half * (e1*e1 + e2*e2 + e3*e3) - e42 - e52 - e62
249 d = - e1*e2*e3 + e1*e52 + e2*e62 + e3*e42
254 y = (epst2 + c)* s1 + d
258 y = (epst2 + c)* s1 + d
260 IF(yp/=zero)s1 = s1 - y/yp
262 y = (epst2 + c)* s1 + d
264 IF(yp/=zero)s1 = s1 - y/yp
266 y = (epst2 + c)* s1 + d
268 IF(yp/=zero)s1 = s1 - y/yp
270 y = (epst2 + c)* s1 + d
272 IF(yp/=zero)s1 = s1 - y/yp
276 s2 = half*(-s1 + sqrt(
max(zero,(s1**2 - four*c))))
277 ss = half*(-s1 - sqrt(
max(zero,(s1**2 - four*c))))
284 IF(s1/=zero.AND.s3==zero) a = s2/s1
285 IF(s1==zero.AND.s3/=zero) a = s2/s3
286 IF(s1/=zero.AND.s3/=zero)
287 . a =
max(s2/s3, s2/s1)
288 w2 =
max(em20,(two - a))**be
290 w1 = (
max(em20,one/w1))**al
291 uvar(i,1) = uvar(i,1) + w1*w2*dpla(i)
292 IF(uvar(i,1)>=dc)
THEN
304 p = third*(signxx(i) + signyy(i) + signzz(i))
314 IF(nindx>0.AND.imconv==1)
THEN
318 WRITE(iout, 2000) ngl(i)
319 WRITE(istdo,2100) ngl(i),time
320#include "lockoff.inc"
329 1000
FORMAT(1x,
'DELETE SOLID ELEMENT NUMBER ',i10)
330 1100
FORMAT(1x,
'DELETE SOLID ELEMENT NUMBER ',i10,
331 .
' AT TIME :',1pe20.13)
333 2000
FORMAT(1x,
' DEVIATORIC STRESS WILL BE VANISHED',i10)
334 2100
FORMAT(1x,
' DEVIATORIC STRESS WILL BE VANISHED',i10,
335 .
' AT TIME :',1pe20.13)
subroutine fail_wilkins_s(nel, nuparam, nuvar, time, timestep, uparam, ngl, signxx, signyy, signzz, signxy, signyz, signzx, dpla, uvar, off, dfmax, tdele)