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 MFXX , MFXY , MFXZ , MFYX , MFYY , MFYZ ,
44 C MFZX , MFZY , MFZZ , IHET ,OFFG ,EPSTH3 ,
49#include "implicit_f.inc"
62 INTEGER NEL, NUPARAM, NUVAR,ISMSTR,NGL(*),IHET,IEXPAN
64 . TIME , TIMESTEP , UPARAM(NUPARAM),
65 . RHO (NEL), RHO0 (NEL), VOLUME(), (NEL),
66 . EPSPXX(NEL), EPSPYY(NEL), EPSPZZ(NEL),
67 . EPSPXY(NEL), EPSPYZ(NEL), EPSPZX(NEL),
68 . DEPSXX(NEL), DEPSYY(NEL), DEPSZZ(NEL),
69 . DEPSXY(NEL), DEPSYZ(NEL), DEPSZX(NEL),
70 . EPSXX (NEL), EPSYY (NEL), EPSZZ (NEL),
71 . EPSXY (NEL), EPSYZ (NEL), EPSZX (NEL),
72 . SIGOXX(NEL), SIGOYY(NEL), SIGOZZ(NEL),
73 . (NEL), SIGOYZ(NEL), SIGOZX(NEL),
74 . MFXX(NEL) , MFXY(NEL), MFXZ(NEL),
75 . mfyx(nel) , mfyy(nel), mfyz(nel),
76 . mfzx(nel) , mfzy(nel), mfzz(nel),offg(nel),
82 . signxx(nel), signyy(nel), signzz(nel),
83 . signxy(nel), signyz(nel), signzx(nel),
84 . sigvxx(nel), sigvyy(nel), sigvzz(nel),
85 . sigvxy(nel), sigvyz(nel), sigvzx(nel),
86 . soundsp(nel), viscmax(nel), et(nel)
91 . uvar(nel,nuvar), off(nel)
95 INTEGER NPF(*), NFUNC, IFUNC(NFUNC)
96 my_real FINTER,FINTTE,TF(*),FINT2V
97 EXTERNAL FINTER,FINTTE
101 INTEGER I,J,K,II,NORDRE,NMAXW,JJ
103 . mu(100),al(100),s(mvsiz,3),dd,pp,gmax,
104 . d(mvsiz),av(mvsiz,6),rbulk,ev(mvsiz,3),
105 . evd(mvsiz,3),rv(mvsiz),evv(mvsiz,3),
106 . dirprv(mvsiz,3,3),pui,pui_tab(3),lam_al(3)
108 . a(3,3),dpra(3,3),eigen(3) ,amax ,eti,p,efac
109 my_real ,
DIMENSION(NEL,3) :: cii
110 my_real ,
DIMENSION(NEL) :: gtmax,rkmax
116 nordre = nint(uparam(1))
118 mu(i) = uparam(1 + i)
119 al(i) = uparam(1 + nordre + i)
120 d(i) = uparam(1 + 2*nordre + i)
156 IF(ismstr==0.OR.ismstr==2.OR.ismstr==4)
THEN
159 ev(i,1)=exp(evv(i,1))
160 ev(i,2)=exp(evv(i,2))
161 ev(i,3)=exp(evv(i,3))
163 ELSEIF(ismstr==10.OR.ismstr==12)
THEN
165 IF(offg(i)<=one)
THEN
166 ev(i,1)=sqrt(evv(i,1)+ one)
167 ev(i,2)=sqrt(evv(i,2)+ one)
168 ev(i,3)=sqrt(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
178 ev(i,1)=evv(i,1)+ one
179 ev(i,2)=evv(i,2)+ one
180 ev(i,3)=evv(i,3)+ one
184 IF (impl_s > 0 .OR. ihet > 1)
THEN
191 eti = eti + mu(k)*amax**(al(k)-one)
194 et(i)=
max(eti,et(i))
199 et(i)=
max(one,et(i)/gmax)
207 rv(i) = ev(i,1)*ev(i,2)*ev(i,3)
210 IF(iexpan > 0.AND.(ismstr==10.OR.ismstr==11.OR.ismstr==12))
THEN
212 rv(i) = rv(i) -epsth3(i)
218 pui = rv(i)**(-third)
222 evd(i,1) = ev(i,1)*pui
223 evd(i,2) = ev(i,2)*pui
224 evd(i,3) = ev(i,3)*pui
237 IF(evd(i,ii)/=zero)
THEN
238 pui_tab(ii) = evd(i,ii)**al(j)
245 IF(evd(i,ii)/=zero)
THEN
254 IF(d(j) /= zero)pp = one/d(j)
255 s(i,1) = s(i,1) + dd*(two_third*pui_tab(1)
256 . - third*(pui_tab(2) + pui_tab(3)))
258 s(i,2) = s(i,2) + dd*(two_third*pui_tab(2)
259 . - third*(pui_tab(1) + pui_tab(3)))
261 s(i,3) = s(i,3) + dd*(two_third*pui_tab(3)
262 . - third*(pui_tab(2) + pui_tab(1)))
264 p = p + 2*j*pp*(rv(i) - one)**(2*j - 1)
276 cii(1:nel,1:3) = zero
278 IF(mu(ii)/=zero)
THEN
280 lam_al(1:3) = exp(al(ii)*log(evd(i,1:3)))
281 amax = third*(lam_al(1)+lam_al(2)+lam_al(3))
282 cii(i,1:3) = cii(i,1:3) + mu(ii) * (lam_al(1:3)+amax)
287 IF (d(ii)==zero) cycle
288 pp = 2*ii*(2*ii-1)/d(ii)
291 IF (abs(rv(i)- one)<em20) cycle
292 rkmax(i) = rkmax(i) + pp * (rv(i)- one)**jj
297 amax= half*
max(cii(i,1),cii(i,2),cii(i,3))/gmax
299 eti =
max(one,amax*0.81)
301 rkmax(i) =
max(rbulk,rkmax(i))
307 signxx(i) = dirprv(i,1,1)*dirprv(i,1,1)*s(i,1)
308 . + dirprv(i,1,2)*dirprv(i,1,2)*s(i,2)
309 . + dirprv(i,1,3)*dirprv(i,1,3)*s(i,3)
311 signyy(i) = dirprv(i,2,2)*dirprv(i,2,2)*s(i,2)
312 . + dirprv(i,2,3)*dirprv(i,2,3)*s(i,3)
313 . + dirprv(i,2,1)*dirprv(i,2,1)*s(i,1)
315 signzz(i) = dirprv(i,3,3)*dirprv(i,3,3)*s(i,3)
316 . + dirprv(i,3,1)*dirprv(i,3,1)*s(i,1)
317 . + dirprv(i,3,2)*dirprv(i,3,2)*s(i,2)
319 signxy(i) = dirprv(i,1,1)*dirprv(i,2,1)*s(i,1)
320 . + dirprv(i,1,2)*dirprv(i,2,2)*s(i,2)
321 . + dirprv(i,1,3)*dirprv(i,2,3)*s(i,3)
323 signyz(i) = dirprv(i,2,2)*dirprv(i,3,2)*s(i,2)
324 . + dirprv(i,2,3)*dirprv(i,3,3)*s(i,3)
325 . + dirprv(i,2,1)*dirprv(i,3,1)*s(i,1)
327 signzx(i) = dirprv(i,3,3)*dirprv(i,1,3)*s(i,3)
328 . + dirprv(i,3,1)*dirprv(i,1,1)*s(i,1)
329 . + dirprv(i,3,2)*dirprv(i,1,2)*s(i,2)
332 soundsp(i)=sqrt((four_over_3*gtmax(i) + rkmax(i))/rho(i))
subroutine sigeps82(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, mfxx, mfxy, mfxz, mfyx, mfyy, mfyz, mfzx, mfzy, mfzz, ihet, offg, epsth3, iexpan)