30 1 NEL ,NUPARAM,NUVAR ,MFUNC ,KFUNC ,NPF ,
31 2 TF ,TIME ,TIMESTEP,UPARAM ,RHO0 ,RHO ,
33 4 EPSPXX ,EPSPYY ,EPSPZZ ,EPSPXY ,EPSPYZ ,EPSPZX ,
34 5 DEPSXX ,DEPSYY ,DEPSZZ ,DEPSXY ,DEPSYZ ,DEPSZX ,
35 6 EPSXX ,EPSYY ,EPSZZ ,EPSXY ,EPSYZ ,EPSZX ,
36 7 SIGOXX ,SIGOYY ,SIGOZZ ,SIGOXY ,SIGOYZ ,SIGOZX ,
37 8 SIGNXX ,SIGNYY ,SIGNZZ ,SIGNXY ,SIGNYZ ,SIGNZX ,
38 9 SIGVXX ,SIGVYY ,SIGVZZ ,SIGVXY ,SIGVYZ ,SIGVZX ,
39 A SOUNDSP,VISCMAX,UVAR ,OFF ,NGL ,IPT ,
40 B IPM ,MAT ,EPSP ,SIGY ,DEFP ,DPLA1 ,
45#include "implicit_f.inc"
97 INTEGER NEL, NUPARAM, NUVAR,IPT,
98 . IPM(NPROPMI,*),NGL(NEL),MAT(NEL)
99 my_real TIME,TIMESTEP,UPARAM(*),
100 . RHO(NEL),RHO0(NEL),VOLUME(NEL),EINT(NEL),
101 . EPSPXX(NEL),EPSPYY(NEL),EPSPZZ(NEL),
102 . EPSPXY(NEL),EPSPYZ(NEL),EPSPZX(NEL),
103 . DEPSXX(NEL),DEPSYY(NEL),DEPSZZ(NEL),
104 . DEPSXY(NEL),DEPSYZ(NEL),DEPSZX(NEL),
105 . EPSXX(NEL) ,EPSYY() ,EPSZZ(NEL) ,
106 . EPSXY(NEL) ,EPSYZ(NEL) ,EPSZX(NEL) ,
107 . SIGOXX(NEL),SIGOYY(NEL),SIGOZZ(NEL),
108 . SIGOXY(NEL),SIGOYZ(NEL),SIGOZX(NEL),
114 . signxx(nel),signyy(nel),signzz(nel),
115 . signxy(nel),signyz(nel),signzx(nel),
116 . sigvxx(nel),sigvyy(nel),sigvzz(nel),
117 . sigvxy(nel),sigvyz(nel),sigvzx(nel),
118 . soundsp(nel),viscmax(nel),sigy(nel),defp(nel),
124 . uvar(nel,nuvar), off(nel)
128 INTEGER NPF(*),MFUNC,KFUNC(MFUNC)
137 . E,NU,P,DAV,VM,R,DPLA,EPST,E1,E2,E3,E4,E5,E6,C,CD,D,
138 . Y,YP,E42,E52,E62,EPST2,PA,PB,PC,PDA,PDB,YY,
139 . C1(MVSIZ),C2(MVSIZ),C3(MVSIZ),
140 . g(mvsiz),g2(mvsiz),g3(mvsiz),epsgm(mvsiz),
141 . epmax(mvsiz),smax(mvsiz),pla(mvsiz),fail(mvsiz),
142 . epsr1(mvsiz),epsr2(mvsiz),yld(mvsiz),h(mvsiz),
143 . ca(mvsiz),cb(mvsiz),cn(mvsiz),cc(mvsiz),co(mvsiz),
144 . cm(mvsiz),ce(mvsiz),ck(mvsiz),eps0(mvsiz)
157 nu = uparam(iadbuf+2)
158 ca(i) = uparam(iadbuf+3)
159 smax(i) = uparam(iadbuf+4)
160 epmax(i)= uparam(iadbuf+5)
161 epsr1(i)= uparam(iadbuf+6)
162 epsr2(i)= uparam(iadbuf+7)
163 cb(i) = uparam(iadbuf+8)
164 cn(i) = uparam(iadbuf+9)
165 cc(i) = uparam(iadbuf+10)
166 co(i) = uparam(iadbuf+11)
167 cm(i) = uparam(iadbuf+12)
168 g(i) = uparam(iadbuf+16)
169 g2(i) = uparam(iadbuf+17)
170 g3(i) = uparam(iadbuf+18)
171 c1(i) = uparam(iadbuf+19)
172 c2(i) = uparam(iadbuf+20)
173 c3(i) = uparam(iadbuf+21)
174 epsgm(i)= uparam(iadbuf+22)
175 eps0(i) = uparam(iadbuf+23)
176 ce(i) = uparam(iadbuf+24)
177 ck(i) = uparam(iadbuf+25)
184 p = -(sigoxx(i)+sigoyy(i)+sigozz(i))* third
185 dav = (depsxx(i)+depsyy(i)+depszz(i))* third
186 signxx(i)=sigoxx(i) + p + g2(i)*(depsxx(i)-dav)
187 signyy(i)=sigoyy(i) + p + g2(i)*(depsyy(i)-dav)
188 signzz(i)=sigozz(i) + p + g2(i)*(depszz(i)-dav)
189 signxy(i)=sigoxy(i) + g(i)*depsxy(i)
190 signyz(i)=sigoyz(i) + g(i)*depsyz(i)
191 signzx(i)=sigozx(i) + g(i)*depszx(i)
193 soundsp(i) = sqrt((c1(i)+four*g(i)/three)/rho0(i))
203 dav = (epsxx(i)+epsyy(i)+epszz(i))*third
219 c = - e1*e1 - e2*e2 - e3*e3 - e42 - e52 - e62
220 d = - e1*e2*e3 + e1*e52 + e2*e62 + e3*e42
225 y = (epst2 + c)* epst + d
229 y = (epst2 + c)* epst + d
231 IF(yp/=zero)epst = epst - y/yp
233 y = (epst2 + c)* epst + d
235 IF(yp/=zero)epst = epst - y/yp
237 y = (epst2 + c)* epst + d
239 IF(yp/=zero)epst = epst - y/yp
241 y = (epst2 + c)* epst + d
243 IF(yp/=zero)epst = epst - y/yp
249 fail(i) =
max(zero,
min(one,
250 . (epsr2(i)-epst)/(epsr2(i)-epsr1(i)) ))
260 IF(pla(i)<=zero)
THEN
262 ELSEIF(pla(i)>epmax(i))
THEN
263 pa=ca(i)+cb(i)*epmax(i)**cn(i)
265 pa=ca(i)+cb(i)*pla(i)**cn(i)
267 IF(epsp(i)<=eps0(i))
THEN
269 ELSEIF(pla(i)<=zero)
THEN
270 pb=cc(i)*log(epsp(i)/eps0(i))
272 pb=(cc(i)-co(i)*pla(i)**cm(i))*log(epsp(i)/eps0(i))
274 IF(epsp(i)<=zero)
THEN
277 pc=ce(i)*epsp(i)**ck(i)
280 IF(pla(i)>zero. and .cn(i)>=one)
THEN
281 pda = cb(i)*cn(i)*pla(i)**(cn(i)- one)
282 ELSEIF(pla(i)>zero. and .cn(i)<one)
THEN
283 pda = cb(i)*cn(i)*pla(i)**(one-cn(i))
287 IF(pla(i)<=zero. or .epsp(i)<=eps0(i))
THEN
289 ELSEIF(cm(i)>=one)
THEN
290 pdb = co(i)*cm(i)*pla(i)**(cm(i)- one)*log(epsp(i)/eps0(i))
292 pdb = co(i)*cm(i)*pla(i)**(one - cm(i))*log(epsp(i)/eps0(i))
296 yld(i)=
min(smax(i)+pc, yy)
298 IF (yld(i)<yy) h(i) = zero
299 yld(i)= fail(i)*yld(i)
302 IF(pla(i)>epmax(i)) yld(i)=zero
309 vm =half*(signxx(i)**2+signyy(i)**2+signzz(i)**2)
310 1 +signxy(i)**2+signyz(i)**2+signzx(i)**2
312 r =
min(one,yld(i)/
max(vm,em20))
314 dpla=(one -r)*vm/
max(g3(i)+h(i),em20)
316 yld(i)=yld(i)+dpla*h(i)
317 IF(pla(i)>epmax(i)) yld(i)=zero
318 r =
min(one,yld(i)/
max(vm,em20))
322 signxx(i)=signxx(i)*r-p
323 signyy(i)=signyy(i)*r-p
324 signzz(i)=signzz(i)*r-p
325 signxy(i)=signxy(i)*r
326 signyz(i)=signyz(i)*r
327 signzx(i)=signzx(i)*r
334 sigy(i)=
max(sigy(i),yld(i))
subroutine sigeps48(nel, nuparam, nuvar, mfunc, kfunc, npf, tf, time, timestep, uparam, rho0, rho, volume, eint, epspxx, epspyy, epspzz, epspxy, epspyz, epspzx, depsxx, depsyy, depszz, depsxy, depsyz, depszx, epsxx, epsyy, epszz, epsxy, epsyz, epszx, sigoxx, sigoyy, sigozz, sigoxy, sigoyz, sigozx, signxx, signyy, signzz, signxy, signyz, signzx, sigvxx, sigvyy, sigvzz, sigvxy, sigvyz, sigvzx, soundsp, viscmax, uvar, off, ngl, ipt, ipm, mat, epsp, sigy, defp, dpla1, amu)