33 1 NEL , NUPARAM, NUVAR , NFUNC , IFUNC , NPF ,
34 2 TF , TIME , TIMESTEP, UPARAM, RHO0 , RHO ,
35 3 VOLUME , EINT , NGL ,
36 4 EPSPXX , EPSPYY , EPSPZZ , EPSPXY, EPSPYZ, EPSPZX,
37 5 DEPSXX , DEPSYY , DEPSZZ , DEPSXY, DEPSYZ, DEPSZX,
38 6 EPSXX , EPSYY , EPSZZ , EPSXY , EPSYZ , EPSZX ,
39 7 SIGOXX , SIGOYY , SIGOZZ , SIGOXY, SIGOYZ, SIGOZX,
40 8 SIGNXX , SIGNYY , SIGNZZ , SIGNXY, SIGNYZ, SIGNZX,
41 9 SIGVXX , SIGVYY , SIGVZZ , SIGVXY, SIGVYZ, SIGVZX,
42 A SOUNDSP, VISCMAX, UVAR , OFF , ISMSTR, ET ,
43 B IHET ,OFFG , EPSTH3, IEXPAN)
47#include "implicit_f.inc"
60 INTEGER NEL, NUPARAM, NUVAR,ISMSTR,NGL(*),IHET,IEXPAN
62 . TIME , TIMESTEP , UPARAM(NUPARAM),
70 . SIGOXX(NEL), SIGOYY(NEL), SIGOZZ(),
71 . sigoxy(nel), sigoyz(nel), sigozx(nel),offg(nel),
77 . signxx(nel), signyy(nel), signzz(nel),
78 . signxy(nel), signyz(nel), signzx(nel),
79 . sigvxx(nel), sigvyy(nel), sigvzz(nel),
80 . sigvxy(nel), sigvyz(nel), sigvzx(nel),
81 . soundsp(nel), viscmax(nel), et(nel)
86 . uvar(nel,nuvar), off(nel)
90 INTEGER NPF(*), NFUNC, IFUNC(NFUNC)
91 my_real FINTER,,TF(*),FINT2V
92 EXTERNAL FINTER,FINTTE
99 . G,RBULK,AA,BB,CC,P,TRACE,C(5),
100 . T1(MVSIZ), T2(MVSIZ),T3(MVSIZ),AV(MVSIZ,6),EV(MVSIZ,3),
101 . evv(mvsiz,3),rv(mvsiz),rvd,l1di1lam1,l2di1lam2,l3di1lam3,
102 . dirprv(mvsiz,3,3),evd(3),c0(3),d(3),invr,eti,et1,et2,et3,
103 . ev2(3),clam(3),lam_2(3),lam_4(3),amax,clp
104 my_real ,
DIMENSION(NEL,3) :: evm,cii
105 my_real ,
DIMENSION(NEL) :: gtmax,rkmax,trac3
148 IF(ismstr==0.OR.ismstr==2.OR.ismstr==4)
THEN
151 ev(i,1)=exp(evv(i,1))
152 ev(i,2)=exp(evv(i,2))
153 ev(i,3)=exp(evv(i,3))
155 ELSEIF(ismstr==10)
THEN
157 IF(offg(i)<=one)
THEN
158 ev(i,1)=sqrt(evv(i,1)+ one)
159 ev(i,2)=sqrt(evv(i,2)+ one)
160 ev(i,3)=sqrt(evv(i,3)+ one)
162 ev(i,1)=evv(i,1)+ one
163 ev(i,2)=evv(i,2)+ one
164 ev(i,3)=evv(i,3)+ one
170 ev(i,1)=evv(i,1)+ one
171 ev(i,2)=evv(i,2)+ one
172 ev(i,3)=evv(i,3)+ one
176 IF (impl_s > 0 .OR. ihet > 1)
THEN
179 ev2(1) = ev(i,1)*ev(i,1)
180 ev2(2) = ev(i,2)*ev(i,2)
181 ev2(3) = ev(i,3)*ev(i,3)
183 trace = ev2(1) + ev2(2) + ev2(3)
186 cc = (c0(1) + two*c0(2)*aa + three*c0(3)*bb)
187 et1 = ev2(1)*cc + ev2(1)**2*(two*c0(2) + six*c0(3)*aa)
188 et2 = ev2(2)*cc + ev2(2)**2*(two*c0(2) + six*c0(3)*aa)
189 et3 = ev2(3)*cc + ev2(3)**2*(two*c0(2) + six*c0(3)*aa)
192 et(i)=
max(one,et(i)/
max(em20
200 rv(i) = ev(i,1)*ev(i,2)*ev(i,3)
203 IF(iexpan > 0.AND.(ismstr==10.OR.ismstr==11.OR.ismstr==12))
THEN
205 rv(i) = rv(i) -epsth3(i)
210 invr = one/(
max(rv(i), em20))
216 IF(rv(i) > zero) rvd = exp((-third)*log(rv(i)))
221 evm(i,1:3) = evd(1:3)
223 trace = evd(1)*evd(1) + evd(2)*evd(2) + evd(3)*evd(3)
224 l1di1lam1 = two*(evd(1)**2 - third*trace)
225 l2di1lam2 = two*(evd(2)**2 - third*trace)
226 l3di1lam3 = two*(evd(3)**2 - third*trace)
230 cc = (c0(1) + two*c0(2)*aa + three*c0(3)*bb)*invr
238 p = rbulk*(rv(i) - one) + four*d(2)*(rv(i) - one)**3 + six*d(3)*(rv(i) - one)**5
248 cii(1:nel,1:3) = zero
252 IF (abs(trac3(i))<em10) cycle
253 lam_2(1:3) = evm(i,1:3)*evm(i,1:3)
254 lam_4(1:3) = lam_2(1:3)*lam_2(1:3)
255 aa = one_over_9*ii*trac3(i)**ii
258 IF (ii>1) bb =third*(3-ii)*trac3(i)**(ii-1)
259 IF (ii>2) cc =(ii-1)*trac3(i)**(ii-2)
260 cii(i,1:3) = cii(i,1:3) +clp*(aa+bb*lam_2(1:3) +cc*lam_4(1:3))
264 amax=
max(cii(i,1),cii(i,2),cii(i,3))
266 eti =
max(one,amax*0.81)
269 rkmax(i) = rbulk+twelve*d(2)*(rv(i)
270 rkmax(i) =
max(rbulk,rkmax(i))
275 signxx(i) = dirprv(i,1,1)*dirprv(i,1,1)*t1(i)
276 . + dirprv(i,1,2)*dirprv(i,1,2)*t2(i)
277 . + dirprv(i,1,3)*dirprv(i,1,3)*t3(i)
279 signyy(i) = dirprv(i,2,2)*dirprv(i,2,2)*t2(i)
280 . + dirprv(i,2,3)*dirprv(i,2,3)*t3(i)
281 . + dirprv(i,2,1)*dirprv(i,2,1)*t1(i)
283 signzz(i) = dirprv(i,3,3)*dirprv(i,3,3)*t3(i)
284 . + dirprv(i,3,1)*dirprv(i,3,1)*t1(i)
285 . + dirprv(i,3,2)*dirprv(i,3,2)*t2(i)
287 signxy(i) = dirprv(i,1,1)*dirprv(i,2,1)*t1(i)
288 . + dirprv(i,1,2)*dirprv(i,2,2)*t2(i)
289 . + dirprv(i,1,3)*dirprv(i,2,3)*t3(i)
291 signyz(i) = dirprv(i,2,2)*dirprv(i,3,2)*t2(i)
292 . + dirprv(i,2,3)*dirprv(i,3,3)*t3(i)
293 . + dirprv(i,2,1)*dirprv(i,3,1)*t1(i)
295 signzx(i) = dirprv(i,3,3)*dirprv(i,1,3)*t3(i)
296 . + dirprv(i,3,1)*dirprv(i,1,1)*t1(i)
297 . + dirprv(i,3,2)*dirprv(i,1,2)*t2(i)
300 soundsp(i)=sqrt((four_over_3*gtmax(i) + rkmax(i))/rho(i))
subroutine sigeps94(nel, nuparam, nuvar, nfunc, ifunc, npf, tf, time, timestep, uparam, rho0, rho, volume, eint, ngl, 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, ismstr, et, ihet, offg, epsth3, iexpan)