32 1 NEL ,KFUNC ,IPT ,NPF ,TF ,
33 2 NGL ,TIME ,TIMESTEP,UPARAM ,IPM ,
34 3 IMAT ,E ,G ,OFF ,DEPSXX ,
35 4 DEPSXY ,DEPSXZ ,SIGOXX ,SIGOXY ,SIGOXZ ,
36 5 SIGNXX ,SIGNXY ,SIGNXZ ,ETSE ,PLA ,
37 6 EPSP ,NVARTMP ,VARTMP ,SIGY)
68#include "implicit_f.inc"
81 INTEGER ,
INTENT(IN) ::
82 INTEGER NEL,NUPARAM,IPT,NVARTMP
83 INTEGER NGL(NEL),NPF(*),IPM(NPROPMI,*),(*)
93 . signxx(nel),signxy(nel),signxz(nel),etse(nel),
95 INTEGER,
INTENT(INOUT) :: VARTMP(NEL,NVARTMP)
96 my_real,
INTENT(INOUT) :: SIGY(NEL)
106 INTEGER I,J,J1,J2,N,NINDX,IADBUF,NFUNC,IPLAS,IFAIL,MFUNCE,
107 INTEGER (NEL),IAD1(NEL),IPOS1(NEL),ILEN1(NEL),
108 . iad2(nel),ipos2(nel),ilen2(nel),jj(nel),
109 . ifunc(nel,100),opte(nel)
110 my_real :: g3(nel),dydx1(nel),dydx2(nel),rate(nel,2),
111 . y1(nel),y2(nel),dr(nel),yfac(nel,2),
112 . pp(nel),qq(nel),fail(nel),svm(nel),h(nel),
113 . epsmax(nel),epsr1(nel),epsr2(nel),
114 . sigexx(nel),sigeyy(nel),sigexy(nel),
115 . hk(nel),nu(nel),nu1(nel),epsf(nel),yld(nel),
116 . aa(nel),bb(nel),cc(nel),einf(nel),ce(nel),
117 . escale(nel),dydxe(nel)
118 my_real :: r,umr,fac,gs,svm1,shfact,epsp1,epsp2,rfac
125 ifunc(i,j)=ipm(10+j,imat)
130 iadbuf = ipm(7,imat)-1
133 e(i) = uparam(iadbuf+2)
134 g(i) = uparam(iadbuf+5)
136 nu(i) = uparam(iadbuf+6)
137 nrate(i) = nint(uparam(iadbuf+1))
138 epsmax(i)= uparam(iadbuf+6+2*nrate(i)+1)
140 opte(i) = uparam(iadbuf+2*nrate(i) + 23)
141 einf(i) = uparam(iadbuf+2*nrate(i) + 24)
142 ce(i) = uparam(iadbuf+2*nrate(i) + 25)
143 ifail = nint(uparam(iadbuf+2*nrate(i) + 27))
144 ismooth = nint(uparam(iadbuf+2*nrate(i) + 29))
146 IF (opte(i) == 1)
THEN
147 IF(pla(i) > zero)
THEN
148 mfunce= uparam(iadbuf+2*nrate(i)+ 22)
149 escale(i) = finter(ifunc(i,mfunce),pla(i),npf,tf,dydxe(i))
150 e(i) = escale(i)* e(i)
151 g(i) = half*e(i)/(one+nu(i))
154 ELSEIF (ce(i) /= zero)
THEN
155 IF(pla(i) > zero)
THEN
156 e(i) = e(i)-(e(i)-einf(i))*(one-exp(-ce(i)*pla(i)))
157 g(i) = half*e(i)/(one+nu(i))
178 signxx(i) = sigoxx(i) + e(i)*depsxx(i)
179 signxy(i) = sigoxy(i) + gs*depsxy(i)
180 signxz(i) = sigoxz(i) + gs*depsxz(i)
188 iadbuf = ipm(7,imat)-1
190 IF (epsp(i) > uparam(iadbuf+6+j)) jj(i) = j
194 iadbuf = ipm(7,imat)-1
195 rate(i,1) = uparam(iadbuf+6+jj(i))
196 yfac(i,1) = uparam(iadbuf+6+nrate(i)+jj(i))
197 IF (nrate(i) > 1)
THEN
198 rate(i,2) = uparam(iadbuf+6+jj(i)+1)
199 yfac(i,2) = uparam(iadbuf+6+nrate(i)+jj(i)+1)
209 ipos1(i) = vartmp(i,j1)
210 iad1(i) = npf(ifunc(i,j1)) / 2 + 1
211 ilen1(i) = npf(ifunc(i,j1)+1) / 2 - iad1(i) - ipos1(i)
212 IF (nrate(i) > 1)
THEN
213 ipos2(i) = vartmp(i,j2)
214 iad2(i) = npf(ifunc(i,j2)) / 2 + 1
215 ilen2(i) = npf(ifunc(i,j2)+1) / 2 - iad2(i) - ipos2(i)
219 CALL vinter(tf,iad1,ipos1,ilen1,nel,pla,dydx1,y1)
220 CALL vinter(tf,iad2,ipos2,ilen2,nel,pla,dydx2,y2)
223 IF (nrate(i) == 1)
THEN
225 yld(i) = fail(i)*y1(i) * yfac(i,1)
226 yld(i) =
max(yld(i),em20)
227 h(i) = fail(i)*dydx1(i)*yfac(i,1)
228 vartmp(i,j1) = ipos1(i)
232 y1(i) = y1(i)*yfac(i,1)
233 y2(i) = y2(i)*yfac(i,2)
234 IF (ismooth == 2)
THEN
235 epsp1 =
max(rate(i,1), em20)
237 fac = log(
max(epsp(i),em20)/epsp1) / log(epsp2/epsp1)
241 fac = (epsp(i) - epsp1) / (epsp2 - epsp1)
243 yld(i) = fail(i)*(y1(i) + fac*(y2(i)-y1(i)))
244 yld(i) =
max(yld(i),em20)
245 dydx1(i)= dydx1(i)*yfac(i,1)
246 dydx2(i)= dydx2(i)*yfac(i,2)
247 h(i) = fail(i)*(dydx1(i) + fac*(dydx2(i)-dydx1(i)))
248 vartmp(i,j1) = ipos1(i)
249 vartmp(i,j2) = ipos2(i)
259 svm1 = signxx(i)**2 + three*(signxy(i)**2 + signxz(i)**2)
261 r =
min( one, yld(i)/
max(em20,svm1) )
262 signxx(i)=signxx(i)*r
263 signxy(i)=signxy(i)*r
264 signxz(i)=signxz(i)*r
266 pla(i) = pla(i) + off(i)*svm1*umr/(g3(i)+h(i))
267 IF (r < one) etse(i)= h(i)/(h(i)+e(i))
327 IF (pla(i) > epsmax(i) .AND. off(i)==one)
THEN
330 WRITE(iout, 1000) ngl(i),pla(i),epsp(i)
331#include "lockoff.inc"
336 1000
FORMAT(5x,
'FAILURE BEAM ELEMENT NUMBER ',i10,
337 .
' PLASTIC STRAIN =',1pe16.9,
' STRAIN RATE =',1pe16.9)
subroutine sigeps36pi(nel, kfunc, ipt, npf, tf, ngl, time, timestep, uparam, ipm, imat, e, g, off, depsxx, depsxy, depsxz, sigoxx, sigoxy, sigoxz, signxx, signxy, signxz, etse, pla, epsp, nvartmp, vartmp, sigy)