32 1 NEL ,NUPARAM,NUVAR ,MFUNC ,KFUNC ,NPF ,
33 2 TF ,TIME ,TIMESTEP,UPARAM ,RHO0 ,RHO ,
35 4 EPSPXX ,EPSPYY ,EPSPZZ ,EPSPXY ,EPSPYZ ,EPSPZX ,
36 5 DEPSXX ,DEPSYY ,DEPSZZ ,DEPSXY ,DEPSYZ ,DEPSZX ,
37 6 EPSXX ,EPSYY ,EPSZZ ,EPSXY ,EPSYZ ,EPSZX ,
38 7 SIGOXX ,SIGOYY ,SIGOZZ ,SIGOXY ,SIGOYZ ,SIGOZX ,
39 8 SIGNXX ,SIGNYY ,SIGNZZ ,SIGNXY ,SIGNYZ ,SIGNZX ,
40 9 SIGVXX ,SIGVYY ,SIGVZZ ,SIGVXY ,SIGVYZ ,SIGVZX ,
41 A SOUNDSP,VISCMAX,UVAR ,OFF ,NGL ,IPT ,
42 B IPM ,MAT ,EPSP ,SIGY ,DEFP ,DPLA1 ,
47#include
"implicit_f.inc"
99 INTEGER NEL, NUPARAM, NUVAR,IPT,
100 . IPM(NPROPMI,*),NGL(NEL),MAT(NEL)
101 my_real TIME,TIMESTEP,UPARAM(*),
102 . RHO(NEL),RHO0(),(NEL),EINT(NEL),
103 . EPSPXX(NEL),EPSPYY(NEL),EPSPZZ(NEL),
104 . EPSPXY(NEL),EPSPYZ(NEL),EPSPZX(NEL),
105 . DEPSXX(NEL),DEPSYY(NEL),DEPSZZ(NEL),
106 . DEPSXY(NEL),DEPSYZ(NEL),DEPSZX(NEL),
107 . EPSXX(NEL) ,EPSYY(NEL) ,EPSZZ(NEL) ,
108 . EPSXY(NEL) ,EPSYZ(NEL) ,EPSZX(NEL) ,
109 . SIGOXX(NEL),SIGOYY(NEL),SIGOZZ(NEL),
110 . SIGOXY(NEL),(NEL),SIGOZX(NEL),
116 . signxx(nel),signyy(nel),signzz(nel),
117 . signxy(nel),signyz(nel),signzx(nel),
118 . sigvxx(nel),sigvyy(nel),sigvzz(nel),
119 . sigvxy(nel),sigvyz(nel),sigvzx(nel),
120 . soundsp(nel),viscmax(nel),sigy(nel),defp(nel),
126 . uvar(nel,nuvar), off(nel)
130 INTEGER NPF(*),MFUNC,KFUNC(MFUNC)
137 INTEGER I,IADBUF,ICC(MVSIZ),MX
139 . E,NU,P,,VM,R,DPLA,EPST,E1,E2,E3,E4,E5,E6,C,CD,D,
140 . Y,YP,E42,E52,E62,EPST2,PA,PB,PC,PDA,PDB,,
141 . C1(MVSIZ),C2(MVSIZ),C3(MVSIZ),
142 . g(mvsiz),g2(mvsiz),g3(mvsiz),epsgm(mvsiz),
143 . epmax(mvsiz),smax(mvsiz),pla(mvsiz),fail(mvsiz),
144 . epsr1(mvsiz),epsr2(mvsiz),yld(mvsiz),h(mvsiz),
145 . ca(mvsiz),cb(mvsiz),cn(mvsiz),cc(mvsiz),co(mvsiz),
146 . cm(mvsiz),ce(mvsiz),ck(mvsiz),eps0(mvsiz)
159 nu = uparam(iadbuf+2)
160 ca(i) = uparam(iadbuf+3)
161 smax(i) = uparam(iadbuf+4)
162 epmax(i)= uparam(iadbuf+5)
163 epsr1(i)= uparam(iadbuf+6)
164 epsr2(i)= uparam(iadbuf+7)
165 cb(i) = uparam(iadbuf+8)
166 cn(i) = uparam(iadbuf+9)
167 cc(i) = uparam(iadbuf+10)
168 co(i) = uparam(iadbuf+11)
169 cm(i) = uparam(iadbuf+12)
170 g(i) = uparam(iadbuf+16)
171 g2(i) = uparam(iadbuf+17)
172 g3(i) = uparam(iadbuf+18)
173 c1(i) = uparam(iadbuf+19)
174 c2(i) = uparam(iadbuf+20)
175 c3(i) = uparam(iadbuf+21)
176 epsgm(i)= uparam(iadbuf+22)
177 eps0(i) = uparam(iadbuf+23)
178 ce(i) = uparam(iadbuf+24)
179 ck(i) = uparam(iadbuf+25)
186 p = -(sigoxx(i)+sigoyy(i)+sigozz(i))* third
187 dav = (depsxx(i)+depsyy(i)+depszz(i))* third
188 signxx(i)=sigoxx(i) + p + g2(i)*(depsxx(i)-dav)
189 signyy(i)=sigoyy(i) + p + g2(i)*(depsyy(i)-dav)
190 signzz(i)=sigozz(i) + p + g2(i)*(depszz(i)-dav)
191 signxy(i)=sigoxy(i) + g(i)*depsxy(i)
192 signyz(i)=sigoyz(i) + g(i)*depsyz(i)
193 signzx(i)=sigozx(i) + g(i)*depszx(i)
195 soundsp(i) = sqrt((c1(i)+four*g(i)/three)/rho0(i))
205 dav = (epsxx(i)+epsyy(i)+epszz(i))*third
221 c = - e1*e1 - e2*e2 - e3*e3 - e42 - e52 - e62
222 d = - e1*e2*e3 + e1*e52 + e2*e62 + e3*e42
227 y = (epst2 + c)* epst + d
231 y = (epst2 + c)* epst + d
233 IF(yp/=zero)epst = epst - y/yp
235 y = (epst2 + c)* epst + d
237 IF(yp/=zero)epst = epst - y/yp
239 y = (epst2 + c)* epst + d
241 IF(yp/=zero)epst = epst - y/yp
243 y = (epst2 + c)* epst + d
245 IF(yp/=zero)epst = epst - y/yp
251 fail(i) =
max(zero,
min(one,
252 . (epsr2(i)-epst)/(epsr2(i)-epsr1(i)) ))
262 IF(pla(i)<=zero)
THEN
264 ELSEIF(pla(i)>epmax(i))
THEN
265 pa=ca(i)+cb(i)*epmax(i)**cn(i)
267 pa=ca(i)+cb(i)*pla(i)**cn(i)
269 IF(epsp(i)<=eps0(i))
THEN
271 ELSEIF(pla(i)<=zero)
THEN
272 pb=cc(i)*log(epsp(i)/eps0(i))
274 pb=(cc(i)-co(i)*pla(i)**cm(i))*log(epsp(i)/eps0(i))
276 IF(epsp(i)<=zero)
THEN
279 pc=ce(i)*epsp(i)**ck(i)
282 IF(pla(i)>zero. and .cn(i)>=one)
THEN
283 pda = cb(i)*cn(i)*pla(i)**(cn(i)- one)
284 ELSEIF(pla(i)>zero. and .cn(i)<one)
THEN
285 pda = cb(i)*cn(i)*pla(i)**(one-cn(i))
289 IF(pla(i)<=zero. or .epsp(i)<=eps0(i))
THEN
291 ELSEIF(cm(i)>=one)
THEN
292 pdb = co(i)*cm(i)*pla(i)**(cm(i)- one)*log(epsp(i)/eps0(i))
294 pdb = co(i)*cm(i)*pla(i)**(one - cm(i))*log(epsp(i)/eps0(i))
298 yld(i)=
min(smax(i)+pc, yy)
300 IF (yld(i)<yy) h(i) = zero
301 yld(i)= fail(i)*yld(i)
304 IF(pla(i)>epmax(i)) yld(i)=zero
311 vm =half*(signxx(i)**2+signyy(i)**2+signzz(i)**2)
312 1 +signxy(i)**2+signyz(i)**2+signzx(i)**2
314 r =
min(one,yld(i)/
max(vm,em20))
316 dpla=(one -r)*vm/
max(g3(i)+h(i),em20)
318 yld(i)=yld(i)+dpla*h(i)
319 IF(pla(i)>epmax(i)) yld(i)=zero
320 r =
min(one,yld(i)/
max(vm,em20))
324 signxx(i)=signxx(i)*r-p
325 signyy(i)=signyy(i)*r-p
326 signzz(i)=signzz(i)*r-p
327 signxy(i)=signxy(i)*r
328 signyz(i)=signyz(i)*r
329 signzx(i)=signzx(i)*r
336 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)