31 1 NEL ,TIME ,TIMESTEP,UPARAM ,OFF ,
32 2 EPSD ,STIFM ,NUPARAM ,
33 3 IFUNC ,MAXFUNC ,NPF ,TF ,AREA ,
34 4 EPSZZ ,EPSYZ ,EPSZX ,DEPSZZ ,DEPSYZ ,DEPSZX ,
35 5 SIGOZZ ,SIGOYZ ,SIGOZX ,SIGNZZ ,SIGNYZ ,SIGNZX ,
36 6 EPLASN ,EPLAST ,JSMS ,DMELS )
40#include "implicit_f.inc"
83 INTEGER NEL,NUPARAM,NUVAR,MAXFUNC, JSMS
84 INTEGER IFUNC(*),NPF(*)
88 . UPARAM(NUPARAM),OFF(NEL),TF(*),EPLASN(NEL),EPLAST(NEL),AREA(NEL),
89 . epsd(nel),depszz(nel),depsyz(nel),depszx(nel),
90 . epszz(nel) ,epsyz(nel) ,epszx(nel) ,
91 . sigozz(nel),sigoyz(nel),sigozx(nel),
92 . stifm(nel),signzz(nel),signyz(nel),signzx(nel),
97 INTEGER I1,I2,I,J,IEL,IRATE,NRATE,IFILTR,NTRAC
98 INTEGER IFUNN(MAXFUNC),IFUNT(MAXFUNC),JJ(NEL),ELTRAC(NEL),II(NEL)
100 . E,,G,G3,G12,G23,FCUT,DYDX1,DYDX2,Y1,Y2,,DSIG,DEPLA,
103 . dsigx(nel),dsigy(nel),dsigz(nel),yfac(maxfunc),rate(maxfunc),
104 . yld(2,nel),hc(2,nel),depst(nel),stf(nel),fac(nel)
116 nrate = nint(uparam(3))
117 ifiltr= nint(uparam(4))
126 stf(iel) = (e+g) * area(iel)
131 stf(iel) = (ecomp+g) * area(iel)
132 dsigz(iel) = ecomp*depszz(iel)
136 dsigy(iel) = g*depsyz(iel)
137 dsigx(iel) = g*depszx(iel)
138 signzz(iel) = sigozz(iel) + dsigz(iel)
139 signyz(iel) = sigoyz(iel) + dsigy(iel)
140 signzx(iel) = sigozx(iel) + dsigx(iel)
141 stifm(iel) = stifm(iel) + stf(iel)*off(iel)
147 stf(iel) = (e+g) * area(iel)
148 dsigz(iel) = e*depszz(iel)
149 dsigy(iel) = g*depsyz(iel)
150 dsigx(iel) = g*depszx(iel)
151 signzz(iel) = sigozz(iel) + dsigz(iel)
152 signyz(iel) = sigoyz(iel) + dsigy(iel)
153 signzx(iel) = sigozx(iel) + dsigx(iel)
154 stifm(iel) = stifm(iel) + stf(iel)*off(iel)
158 IF (idtmins==2 .AND. jsms/=0)
THEN
159 dtb = (dtmins/dtfacs)**2
162 dmels(iel) =
max(dmels(iel),half*dtb*stf(iel)*off(iel))
170 ifunn(irate) = ifunc(j+1)
171 ifunt(irate) = ifunc(j+2)
172 yfac(irate) = uparam(7+irate)
173 rate(irate) = uparam(7+irate+nrate)
183 IF (epsd(iel) > rate(j)) ii(iel) = j
191 fac(iel) = (epsd(iel) - rate(i1)) / (rate(i2) - rate(i1))
192 y1 = finter(ifunt(i1),eplast(iel
193 y2 = finter(ifunt(i2),eplast(iel),npf,tf,dydx2)*yfac(i2)
196 dydx1 = dydx1*yfac(i1)
197 dydx2 = dydx2*yfac(i2)
198 yld(2,iel) = y1 + fac(iel)*(y2 - y1)
199 hc(2,iel) = dydx1 + fac(iel)*(dydx2-dydx1)
205 y1 = finter(ifunn(i1),eplasn(iel),npf,tf,dydx1)*yfac(i1)
206 y2 = finter(ifunn(i2),eplasn(iel),npf,tf,dydx2)*yfac(i2)
209 dydx1 = dydx1*yfac(i1)
210 dydx2 = dydx2*yfac(i2)
211 yld(1,iel) = y1 + fac(iel)*(y2 - y1)
212 hc(1,iel) = dydx1 + fac(iel)*(dydx2-dydx1)
215 ELSEIF (nrate == 1)
THEN
219 yld(2,iel) =
max(zero,
220 . finter(ifunt(i1),eplast(iel),npf,tf,dydx1)*yfac(i1))
221 hc(2,iel) = dydx1*yfac(i1)
226 yld(1,iel) =
max(zero,
227 . finter(ifunn(i1),eplasn(iel),npf,tf,dydx1)*yfac(i1))
228 hc(1,iel) = dydx1*yfac(i1)
236 svm = abs(signzz(iel))
237 dsig = svm - yld(1,iel)
238 IF (dsig > zero)
THEN
239 depla = dsig /
max((e + hc(1,iel)),em20)
240 r =
min(one, ((yld(1,iel)+depla*hc(1,iel))/
max(em20,svm)))
241 eplasn(iel) = eplasn(iel) + depla*off(iel)
242 signzz(iel) = signzz(iel)*r
249 svm = sqrt(signyz(iel)**2 + signzx(iel)**2)
250 dsig = svm - yld(2,iel)
251 IF (dsig > zero)
THEN
252 depla = dsig /
max((g + hc
253 r =
min(one, ((yld(2,iel)+depla*hc(2,iel))/
max(em20,svm)))
254 eplast(iel) = eplast(iel) + depla*off(iel)
255 signyz(iel) = signyz(iel)*r
256 signzx(iel) = signzx(iel)*r
259 signzz(iel) = signzz(iel)*off(iel)
261 signzx(iel) = signzx(iel)*off(iel)
subroutine sigeps59(nel, time, timestep, uparam, off, epsd, stifm, nuparam, ifunc, maxfunc, npf, tf, area, epszz, epsyz, epszx, depszz, depsyz, depszx, sigozz, sigoyz, sigozx, signzz, signyz, signzx, eplasn, eplast, jsms, dmels)