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, WW)
47#include "implicit_f.inc"
60 INTEGER , NUPARAM, NUVAR,ISMSTR,NGL(*),IHET,IEXPAN
62 . TIME , TIMESTEP , UPARAM(NUPARAM),
63 . RHO (NEL), RHO0 (NEL), VOLUME(NEL), EINT(NEL),
64 . EPSPXX(NEL), EPSPYY(NEL), EPSPZZ(NEL),
65 . EPSPXY(NEL), EPSPYZ(NEL), EPSPZX(NEL),
66 . DEPSXX(), DEPSYY(NEL), DEPSZZ(NEL),
67 . DEPSXY(NEL), DEPSYZ(NEL), DEPSZX(NEL),
68 . (NEL), EPSYY (NEL), EPSZZ (NEL),
69 . EPSXY (NEL), EPSYZ (NEL), EPSZX (NEL),
70 . SIGOXX(NEL), SIGOYY(NEL), SIGOZZ(NEL),
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) ,ww(nel)
90 INTEGER NPF(*), NFUNC, IFUNC(NFUNC)
91 my_real FINTER,FINTTE,TF(*),FINT2V
92 EXTERNAL FINTER,FINTTE
96 INTEGER I,J,MULLINS,II
99 . MU,D,LAM,G,RBULK,AA,BB,CC,P,TRACE(MVSIZ),C(5),BETA,
100 . T1(MVSIZ), T2(MVSIZ),T3(MVSIZ),AV(MVSIZ,6),EV(MVSIZ,3),
101 . evv(mvsiz,3),rv(mvsiz),rvd,di1lam1(mvsiz),di1lam2(mvsiz),di1lam3(mvsiz),
102 . dirprv(mvsiz,3,3),evd(3),eti(mvsiz)
104 . clam(5),lam_2(3),lam_4(3),amax,clp
105 my_real ,
DIMENSION(NEL,3) :: evm,cii
106 my_real ,
DIMENSION(NEL) :: gtmax,rkmax,rv_1
119 mullins = int(uparam(13))
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.OR.ismstr==12)
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 bb = one/lam**(2*j - 2)
182 trace(i) = ev(i,1)*ev(i,1)+ ev(i,2)*ev(i,2) + ev(i,3)*ev(i,3)
190 et(i)=
max(one,et(i)/g)
198 rv(i) = ev(i,1)*ev(i,2)*ev(i,3)
201 IF(iexpan > 0.AND.(ismstr==10.OR.ismstr==11.OR.ismstr==12))
THEN
203 rv(i) = rv(i) -epsth3(i)
214 rvd = exp((-third)*log(rv(i)))
221 evm(i,1:3) = evd(1:3)
223 trace(i) = evd(1)**2 + evd(2)**2 + evd(3)**2
224 di1lam1(i) = two*evd(1)**2 - two_third*trace(i)
225 di1lam2(i) = two*evd(2)**2 - two_third*trace(i)
226 di1lam3(i) = two*evd(3)**2 - two_third*trace(i)
232 bb = one/lam**(2*j - 2)
236 cc = aa*bb*trace(i)**(j-1)
237 t1(i) = t1(i) + cc*di1lam1(i)
238 t2(i) = t2(i) + cc*di1lam2(i)
239 t3(i) = t3(i) + cc*di1lam3(i)
245 p = rv_1(i)*rbulk*(rv(i)**2 - one)/two
246 t1(i) = (mu*t1(i) + p)*rv_1(i)
247 t2(i) = (mu*t2(i) + p)*rv_1(i)
248 t3(i) = (mu*t3(i) + p)*rv_1(i)
254 ww(i) = mu *(c(1)*(trace(i)- three)+c
255 . + c(3) * beta**2 *(trace(i)**3- three**3)
256 . + c(4) * beta**3 *(trace(i)**4- three**4)
257 . + c(5) * beta**4 *(trace(i)**5- three**5) )
263 rkmax(1:nel) = rbulk/two
264 cii(1:nel,1:3) = zero
266 clp = four*ii*clam(ii)
268 lam_2(1:3) = evm(i,1:3)**2
269 lam_4(1:3) = lam_2(1:3)**2
270 aa = one_over_9*ii*trace(i)**ii
273 IF (ii>1) bb =third*(3-ii)*trace(i)**(ii-1)
274 IF (ii>2) cc =(ii-1)*trace(i)**(ii-2)
275 cii(i,1:3) = cii(i,1:3) +clp*(aa+bb*lam_2(1:3) +cc*lam_4(1:3))
279 amax=
max(cii(i,1),cii(i,2),cii(i,3))
281 eti(i) =
max(one,amax*0.81)
283 rkmax(i) = rkmax(i)*(one+rv_1(i)*rv_1(i))
284 rkmax(i) =
max(rbulk,rkmax(i))
291 signxx(i) = dirprv(i,1,1)*dirprv(i,1,1)*t1(i)
292 . + dirprv(i,1,2)*dirprv(i,1,2)*t2(i)
293 . + dirprv(i,1,3)*dirprv(i,1,3)*t3(i)
295 signyy(i) = dirprv(i,2,2)*dirprv(i,2,2)*t2(i)
296 . + dirprv(i,2,3)*dirprv(i,2,3)*t3(i)
297 . + dirprv(i,2,1)*dirprv
299 signzz(i) = dirprv(i,3,3)*dirprv(i,3,3)*t3(i)
300 . + dirprv(i,3,1)*dirprv(i,3,1)*t1(i)
301 . + dirprv(i,3,2)*dirprv(i,3,2)*t2(i)
303 signxy(i) = dirprv(i,1,1)*dirprv(i,2,1)*t1(i)
304 . + dirprv(i,1,2)*dirprv(i,2,2)*t2(i)
305 . + dirprv(i,1,3)*dirprv(i,2,3)*t3(i)
307 signyz(i) = dirprv(i,2,2)*dirprv(i,3,2)*t2(i)
308 . + dirprv(i,2,3)*dirprv(i,3,3)*t3(i)
309 . + dirprv(i,2,1)*dirprv(i,3,1)*t1(i)
311 signzx(i) = dirprv(i,3,3)*dirprv(i,1,3)*t3(i)
312 . + dirprv(i,3,1)*dirprv(i,1,1)*t1(i)
313 . + dirprv(i,3,2)*dirprv(i
316 soundsp(i)=sqrt((four_over_3*gtmax(i) + rkmax(i))/rho(i))
subroutine sigeps92(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, ww)