32 1 NEL , NUPARAM, NUVAR , NFUNC , IFUNC , 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 , ISRATE, ASRATE,
47#include "implicit_f.inc"
58 INTEGER NEL, NUPARAM, NUVAR , ISRATE
61 . TIME , TIMESTEP , UPARAM(NUPARAM),
62 . RHO (NEL), RHO0 (NEL), VOLUME(NEL), EINT(NEL),
63 . EPSPXX(NEL), EPSPYY(NEL), EPSPZZ(NEL),
64 . EPSPXY(NEL), EPSPYZ(), (NEL),
65 . DEPSXX(NEL), DEPSYY(NEL), DEPSZZ(NEL),
66 . DEPSXY(NEL), DEPSYZ(NEL), DEPSZX(NEL),
67 . EPSXX (NEL), EPSYY (NEL), EPSZZ (NEL),
68 . EPSXY (NEL), EPSYZ (NEL), EPSZX (NEL),
69 . sigoxx(nel), sigoyy(nel), sigozz(nel),
70 . sigoxy(nel), sigoyz(nel), sigozx(nel), asrate
75 . signxx(nel), signyy(nel), signzz(nel),
76 . signxy(nel), signyz(nel), signzx(nel),
77 . sigvxx(nel), sigvyy(nel), sigvzz(nel),
78 . sigvxy(nel), sigvyz(nel), sigvzx(nel),
79 . soundsp(nel), viscmax(nel)
83 my_real uvar(nel,nuvar), off(nel) , edot(nel)
87 INTEGER NPF(*), NFUNC, IFUNC(NFUNC)
94 INTEGER I,,KF,IFLAG,ICORRECT
97 . E,POISSON,A,B,ET,POISSONT,FAC,EPSP
101 . vmu,vlamda,vmu2,vlamda3
103 . c1,c2,c3,pmin,dpdmu(mvsiz)
107 . enew(mvsiz),dedot(mvsiz)
109 . dpdgama(mvsiz),gama(mvsiz),amu(mvsiz)
111 . sm(mvsiz),em(mvsiz),dedtm(mvsiz)
113 . g2(mvsiz),bulk(mvsiz),bulk3(mvsiz)
115 . dsxx(mvsiz),dsyy(mvsiz),dszz(mvsiz)
117 . dsxy(mvsiz),dsyz(mvsiz),dszx(mvsiz)
119 . dexx(mvsiz),deyy(mvsiz),dezz(mvsiz)
121 . dexy(mvsiz),deyz(mvsiz),dezx(mvsiz)
123 . dedtxx(mvsiz),dedtyy(mvsiz),dedtzz(mvsiz)
125 . dedtxy(mvsiz),dedtyz(mvsiz),dedtzx(mvsiz)
127 . dsdtxx(mvsiz),dsdtyy(mvsiz),dsdtzz(mvsiz)
129 . dsdtxy(mvsiz),dsdtyz(mvsiz),dsdtzx(mvsiz)
131 . dpdro(mvsiz),p(mvsiz),pdot(mvsiz),relvol(mvsiz)
136 . small,tiny , aux1, aux2,
154 vlamda3 = uparam(8)*three
172 gt2 = et/(one+poissont)
173 bulkt3 = et/(one-two*poissont)
176 IF(nuparam>=19) icorrect=nint(uparam(19))
185 epsxx(i)=epsxx(i)-dt05*epspxx(i)
186 epsyy(i)=epsyy(i)-dt05*epspyy(i)
187 epszz(i)=epszz(i)-dt05*epspzz(i)
188 epsxy(i)=epsxy(i)-dt05*epspxy(i)
189 epsyz(i)=epsyz(i)-dt05*epspyz(i)
190 epszx(i)=epszx(i)-dt05*epspzx(i)
194 gama(i) = (rho0(i)/rho(i)-one+gama0)
195 IF(one+gama(i)-phi<=small) gama(i)=-(one-phi-small)
196 sm(i)=third*(sigoxx(i)+sigoyy(i)+sigozz(i))+uvar(i,1)
197 em(i)=third*(epsxx(i)+epsyy(i)+epszz(i))
198 dedtm(i)=third*(epspxx(i)+epspyy(i)+epspzz(i))
199 sigair(i)=
max(zero,-(p0*gama(i))/(one+gama(i)-phi))
204 dsxx(i)=sigoxx(i)-sm(i)+uvar(i,1)
205 dsyy(i)=sigoyy(i)-sm(i)+uvar(i,1)
206 dszz(i)=sigozz(i)-sm(i)+uvar(i,1)
212 dexx(i)=epsxx(i)-em(i)
213 deyy(i)=epsyy(i)-em(i)
214 dezz(i)=epszz(i)-em(i)
215 dexy(i)=epsxy(i)* half
216 deyz(i)=epsyz(i)* half
217 dezx(i)=epszx(i)* half
220 dedtxx(i)=epspxx(i)-dedtm(i)
221 dedtyy(i)=epspyy(i)-dedtm(i)
222 dedtzz(i)=epspzz(i)-dedtm(i)
223 dedtxy(i)=epspxy(i)*half
224 dedtyz(i)=epspyz(i)*half
225 dedtzx(i)=epspzx(i)*half
229 relvol(i)=rho0(i)/rho(i)
231 & abs(epspxx(i)),abs(epspyy(i)),abs(epspzz(i)),
232 & abs(epspxy(i)),abs(epspyz(i)),abs(epspzx(i)))
233 IF (israte == 0)
THEN
236 edot(i) = asrate*epsp + (one - asrate)*uvar(i,4)
242 IF(relvexp/=zero)
THEN
244 enew(i)=(
max(e,a*edot(i)+b))/(exp(relvexp*log(relvol(i))))
248 enew(i)=(
max(e,a*edot(i)+b))
253 aux1 = one / (one+poisson)
254 aux2 = one / (one-two*poisson)
257 bulk3(i)=enew(i)*aux2
261 dsdtxx(i)=g2(i)*dedtxx(i)-(g2(i)+gt2)*dsxx(i)/vmu2+
262 & g2(i)*gt2*dexx(i)/vmu2
263 dsdtyy(i)=g2(i)*dedtyy(i)-(g2(i)+gt2)*dsyy(i)/vmu2+
264 & g2(i)*gt2*deyy(i)/vmu2
265 dsdtzz(i)=g2(i)*dedtzz(i)-(g2(i)+gt2)*dszz(i)/vmu2+
266 & g2(i)*gt2*dezz(i)/vmu2
267 dsdtxy(i)=g2(i)*dedtxy(i)-(g2(i)+gt2)*dsxy(i)/vmu2+
268 & g2(i)*gt2*dexy(i)/vmu2
269 dsdtyz(i)=g2(i)*dedtyz(i)-(g2(i)+gt2)*dsyz(i)/vmu2+
270 & g2(i)*gt2*deyz(i)/vmu2
271 dsdtzx(i)=g2(i)*dedtzx(i)-(g2(i)+gt2)*dszx(i)/vmu2+
272 & g2(i)*gt2*dezx(i)/vmu2
273 midstep=one/(one+(g2(i)+gt2)/vmu2*dt05)
274 dsdtxx(i)=dsdtxx(i)*midstep
275 dsdtyy(i)=dsdtyy(i)*midstep
276 dsdtzz(i)=dsdtzz(i)*midstep
277 dsdtxy(i)=dsdtxy(i)*midstep
278 dsdtyz(i)=dsdtyz(i)*midstep
279 dsdtzx(i)=dsdtzx(i)*midstep
286 amu(i)=rho(i)/rho0(i)-one
288 p(i)=-fac*finter(kf,amu(i),npf,tf,dpdmu(i))
290 pdot(i)=( c1*(bulk3(i)*dedtm(i))
291 & -c2*((bulk3(i)+bulkt3)*sm(i)/(vlamda3+vmu2))
295 & -fac*finter(kf,amu(i),npf,tf,dpdmu(i))
298 pdot(i)=( c1*(bulk3(i)*dedtm(i))
299 & -c2*((bulk3(i)+bulkt3
300 & +c3*((bulk3(i)*bulkt3)*em(i)/(vlamda3+vmu2)))
301 & / (one+c2*(bulk3(i)+bulkt3)/(vlamda3+vmu2)*dt05
302 p(i)=sm(i)+pdot(i)*timestep
304 IF(p(i)<=pmin) p(i)=pmin
311 & +p0*(one-phi)/(one+gama(i)-phi)**2
316 dpdro(i)=two_third*g2(i)
318 & +p0*(one-phi)/(one+gama(i)-phi)**2
322 dpdro(i)=two_third*g2(i)+third*bulk3(i)+abs(fac*dpdmu(i))
323 & +p0*(one-phi)/(one+gama(i)-phi)**2
328 soundsp(i)=sqrt(dpdro(i)/rho(i))
333 signxx(i)=dsxx(i)+dsdtxx(i)*timestep+p(i)-sigair(i)
334 signyy(i)=dsyy(i)+dsdtyy(i)*timestep+p(i)-sigair(i)
335 signzz(i)=dszz(i)+dsdtzz(i)*timestep+p(i)-sigair(i)
336 signxy(i)=dsxy(i)+dsdtxy(i)*timestep
337 signyz(i)=dsyz(i)+dsdtyz(i)*timestep
338 signzx(i)=dszx(i)+dsdtzx(i)*timestep
subroutine sigeps35(nel, nuparam, nuvar, nfunc, ifunc, 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, israte, asrate, edot)