33 1 NEL ,NUPARAM,NUVAR ,
34 2 TIME ,TIMESTEP ,UPARAM ,NGL ,
35 4 SIGNXX ,SIGNYY ,SIGNZZ ,SIGNXY ,SIGNYZ ,SIGNZX ,
36 5 DPLA ,EPSP ,TSTAR ,UVAR ,OFF ,
43#include "implicit_f.inc"
69 INTEGER NEL, NUPARAM, NUVAR,NGL(NEL)
70 my_real TIME,TIMESTEP,UPARAM(NUPARAM),
71 . SIGNXX(NEL),SIGNYY(NEL),SIGNZZ(NEL),
72 . SIGNXY(NEL),SIGNYZ(NEL),SIGNZX(NEL),UVAR(,NUVAR),
73 . DPLA(NEL),EPSP(NEL),TSTAR(NEL),OFF(NEL),DFMAX(NEL),TDELE(NEL)
78INTEGER ,
DIMENSION(NEL) :: INDX
79 my_real :: D1,D2,D3,D4,D5,EPSP0,P,EPSF,SVM,SCALE,SXX,SYY,SZZ,EPSF_MIN
87 isolid = int(uparam(8))
94 IF ((isolid==1).OR.(isolid == 4))
THEN
96 ELSEIF ((isolid==2).OR.(isolid == 3))
THEN
102 IF(off(i)<0.1) off(i)=0.0
103 IF(off(i)<1.0) off(i)=off(i)*0.8
110 IF ((isolid==1.AND.off(i)==one).OR.(isolid==4))
THEN
111 IF(dpla(i)/=zero)
THEN
112 p = third*(signxx(i) + signyy(i) + signzz(i))
116 svm =half*(sxx**2 + syy**2 + szz**2)
117 . +signxy(i)**2 + signzx(i)**2 + signyz(i)**2
119 epsf = d3*p/
max(em20,svm)
120 epsf = d1 + d2*exp(epsf)
121 IF(d4/=zero) epsf = epsf * (one + d4*log(
max(one,epsp(i)/epsp0)))
122 IF(d5/=zero) epsf = epsf * (one + d5*tstar(i))
123 epsf =
max(epsf,epsf_min)
124 IF(epsf>zero) dfmax(i) = dfmax(i) + dpla(i)/epsf
125 dfmax(i) =
min(one,dfmax(i))
127 IF (dfmax(i)>=one.AND.off(i)==one)
THEN
128 IF (isolid == 1)
THEN
133 ELSEIF (isolid == 4)
THEN
146 IF(nindx>0.AND.imconv==1)
THEN
149 WRITE(iout, 1000) ngl(indx(j))
150 WRITE(istdo,1100) ngl(indx(j)),time
151#include "lockoff.inc"
159 IF((isolid==2.OR.isolid
THEN
160 IF(dfmax(i)<one.AND.dpla(i)/=zero)
THEN
161 p = third*(signxx(i) + signyy(i) + signzz(i))
165 svm =half*(sxx**2+ syy**2 + szz**2)
166 . +signxy(i)**2 + signzx(i)**2 + signyz(i)**2
168 epsf = d3*p/
max(em20,svm)
171 . + d4*log(
max(one,epsp(i)/epsp0)))
172 . *(one + d5*tstar(i))
173 epsf =
max(epsf,epsf_min)
174 IF(epsf>zero) dfmax(i) = dfmax
175 dfmax(i) =
min(one,dfmax(i))
176 IF(dfmax(i)>=one.AND.off(i)==one)
THEN
180 IF (isolid == 2)
THEN
187 ELSEIF (isolid == 3)
THEN
188 signxx(i) =
min(p,zero)
189 signyy(i) =
min(p,zero)
190 signzz(i) =
min(p,zero)
197 ELSEIF(dfmax(i)>=one)
THEN
198 p = third*(signxx(i) + signyy(i) + signzz(i))
200 IF (isolid == 2)
THEN
207 ELSEIF (isolid == 3)
THEN
208 signxx(i) =
min(p,zero)
209 signyy(i) =
min(p,zero)
210 signzz(i) =
min(p,zero)
218 IF(nindx>0.AND.imconv==1)
THEN
222 WRITE(iout, 2000) ngl(i)
223 WRITE(istdo,2100) ngl(i),time
224#include "lockoff.inc"
235 1000
FORMAT(1x,
'DELETE SOLID ELEMENT NUMBER ',i10)
236 1100
FORMAT(1x,
'DELETE SOLID ELEMENT NUMBER ',i10,
237 .
' AT TIME :',1pe12.4)
239 2000
FORMAT(1x,
' DEVIATORIC STRESS WILL BE VANISHED',i10)
240 2100
FORMAT(1x,
' DEVIATORIC STRESS WILL BE VANISHED',i10,
241 .
' AT TIME :',1pe12.4)
subroutine fail_johnson(nel, nuparam, nuvar, time, timestep, uparam, ngl, signxx, signyy, signzz, signxy, signyz, signzx, dpla, epsp, tstar, uvar, off, dfmax, tdele)