31 1 NEL , NUPARAM, NUVAR , NFUNC , IFUNC ,
32 2 NPF , NPT0 , IPT , IFLAG ,
33 2 TF , TIME , TIMESTEP,
34 3 UPARAM , RHO0 ,AREA , EINT , THKLYL,
35 4 EPSPXX , EPSPYY , EPSPXY, EPSPYZ, EPSPZX,
36 5 DEPSXX , DEPSYY , DEPSXY, DEPSYZ, DEPSZX,
37 6 EPSXX , EPSYY , EPSXY , EPSYZ , EPSZX ,
38 7 SIGOXX , SIGOYY , SIGOXY, SIGOYZ, SIGOZX,
39 8 SIGNXX , SIGNYY , SIGNXY, SIGNYZ, SIGNZX,
40 9 SIGVXX , SIGVYY , SIGVXY, SIGVYZ, SIGVZX,
41 A SOUNDSP, VISCMAX, THKN , UVAR ,
42 B NGL , OFF , ISMSTR , IPM , GS )
46#include "implicit_f.inc"
54 INTEGER NEL,NUPARAM, NUVAR,ISMSTR, IPM(NPROPMI,*),MAT(NEL) ,
55 . NPT0,IPT,IFLAG(*),NGL(NEL)
57 . TIME,TIMESTEP,UPARAM(NUPARAM),THKN(NEL),THKLYL(NEL),
58 . RHO0(NEL),AREA(NEL),EINT(NEL,2),GS(NEL),
59 . EPSPXX(NEL),EPSPYY(NEL),EPSPXY(NEL),EPSPYZ(NEL),EPSPZX(NEL),
60 . DEPSXX(NEL),DEPSYY(NEL),DEPSXY(NEL),DEPSYZ(NEL),DEPSZX(NEL),
61 . EPSXX (NEL),EPSYY (NEL),EPSXY (NEL),EPSYZ (NEL),EPSZX (NEL),
62 . SIGOXX(NEL),SIGOYY(NEL),SIGOXY(NEL),SIGOYZ(NEL),SIGOZX(NEL)
67 . signxx(nel),signyy(nel),signxy(nel),signyz(nel),signzx(nel),
68 . sigvxx(nel),sigvyy(nel),sigvxy(nel),sigvyz(nel),sigvzx(nel),
69 . soundsp(nel),viscmax(nel),et(nel)
74 . uvar(nel,nuvar), off(nel)
78 INTEGER NPF(*), NFUNC, (NFUNC)
79 my_real FINTER,FINTTE,TF(*),FINT2V
80 EXTERNAL FINTER,FINTTE
84 INTEGER I,K,ITER,NORDRE,I_K2
86 . nu,tenscut,gmax,rbulk,ffac,rvt,partt(nel),partp(nel),sum,dd,k2
88 . evv(nel,3),ev(nel,3),evm(nel,3),rv(nel),rho(nel),dwdl(nel,3),
89 . dezz(nel),eigv(nel,3,2),trav(nel),rootv(nel),t(nel,3)
91 . mu(100),al(100),d(100),evma1(nel,100),evma2(nel,100),evma3(nel,100)
95 nordre = nint(uparam(1))
98 al(i) = uparam(1 + nordre + i)
99 d(i) = uparam(1 + 2*nordre + i)
103 nu = (three*rbulk-two*gmax)/(two*gmax+six*rbulk)
104 IF (nu == half) nu = 0.495
105 IF (time == zero) uvar(1:nel,1)=one
108 trav(i) = epsxx(i)+epsyy(i)
109 rootv(i) = sqrt((epsxx(i)-epsyy(i))*(epsxx(i)-epsyy(i))
110 . + epsxy(i)*epsxy(i))
111 evv(i,1) = half*(trav(i)+rootv(i))
112 evv(i,2) = half*(trav(i)-rootv(i))
117 IF (abs(evv(i,2)-evv(i,1)) < em10)
THEN
125 eigv(i,1,1) = one/rootv(i)*(epsxx(i)-evv(i,2))
126 eigv(i,2,1) = one/rootv(i)*(epsyy(i)-evv(i,2))
127 eigv(i,1,2) = one/rootv(i)*(evv(i,1)-epsxx(i))
128 eigv(i,2,2) = one/rootv(i)*(evv(i,1)-epsyy(i))
129 eigv(i,3,1) = one/rootv(i)*(half*epsxy(i))
130 eigv(i,3,2) =-one/rootv(i)*(half*epsxy(i))
134 IF (ismstr == 1 .OR. ismstr == 3)
THEN
136 ev(i,1) = evv(i,1) + one
137 ev(i,2) = evv(i,2) + one
142 ev(i,1) = exp(evv(i,1))
143 ev(i,2) = exp(evv(i,2))
151 rv(1:nel) = ev(1:nel,1)*ev(1:nel,2)*ev(1:nel,3)
156 rvt = rv(i)**(-third)
160 evm(i,1) = ev(i,1)*rvt
161 evm(i,2) = ev(i,2)*rvt
162 evm(i,3) = ev(i,3)*rvt
166 IF(evm(i,1)/=zero)
THEN
167 evma1(i,k) = evm(i,1)**al(k)
171 IF(evm(i,2)/=zero)
THEN
172 evma2(i,k) = evm(i,2)**al(k)
176 IF(evm(i,3)/=zero)
THEN
177 evma3(i,k) = evm(i,3)**al(k)
189 sum = third*(evma1(i,k) + evma2(i,k) + evma3(i,k))
190 partt(i) = partt(i) + dd*(evma3(i,k) - sum)
195 IF (d(k) /= zero)
THEN
200 partp(i) = partp(i) + dd*(rv(i)-one)**(i_k2-1)
205 t(1:nel,3) = partt(1:nel)/rv(1:nel) + partp(1:nel)
210 partt(1:nel) = partt(1:nel)
211 . + two*mu(k)*(evma1(1:nel,k)+evma2(1:nel,k)+four*evma3(1:nel,k))/nine
215 IF (d(k) /= zero)
THEN
218 dd = k2*(k2-one)/d(k)
220 partp(1:nel) = partp(1:nel) + dd*(rv
223 partt(1:nel) = partt(1:nel) / rv(1:nel)+ partp(1:nel) - t(1:nel,3)
224 ev(1:nel,3) = ev(1:nel,3)*(one - t(1:nel
229 rv(i) = ev(i,1)*ev(i,2)*ev(i,3)
232 rvt = rv(i)**(-third)
236 evm(i,1) = ev(i,1)*rvt
237 evm(i,2) = ev(i,2)*rvt
238 evm(i,3) = ev(i,3)*rvt
242 IF(evm(i,1)/=zero)
THEN
243 evma1(i,k) = evm(i,1)**al(k)
247 IF(evm(i,2)/=zero)
THEN
248 evma2(i,k) = evm(i,2)**al(k)
252 IF(evm(i,3)>zero)
THEN
253 evma3(i,k) = evm(i,3)**al(k)
265 sum = third*(evma1(i,k) + evma2(i,k) + evma3(i,k))
266 dwdl(i,1) = dwdl(i,1) + dd*(evma1(i,k) - sum)
267 dwdl(i,2) = dwdl(i,2) + dd*(evma2(i,k) - sum)
268 dwdl(i,3) = dwdl(i,3) + dd*(evma3(i,k) - sum)
273 IF (d(k) /= zero)
THEN
277 partp(1:nel) = partp(1:nel) + dd*(rv(1:nel)-one)**(i_k2-1)
281 t(1:nel,1) = two*dwdl(1:nel,1)/rv(1:nel) + partp(1:nel)
282 t(1:nel,2) = two*dwdl(1:nel,2)/rv(1:nel) + partp(1:nel)
283 t(1:nel,3) = two*dwdl(1:nel,3)/rv(1:nel) + partp(1:nel)
291 signxx(i) = eigv(i,1,1)*t(i,1) + eigv(i,1,2)*t(i,2)
292 signyy(i) = eigv(i,2,1)*t(i,1) + eigv(i,2,2)*t(i,2)
293 signxy(i) = eigv(i,3,1)*t(i,1) + eigv(i,3,2)*t(i,2)
294 signyz(i) = sigoyz(i) + gs(i)*depsyz(i)
295 signzx(i) = sigozx(i) + gs(i)*depszx(i)
300 dezz(i) =-nu/(one-nu)*(depsxx(i)+depsyy(i))
301 thkn(i) = thkn(i) + dezz(i)*thklyl(i)
302 rho(i) = rho0(i)/rv(i)
303 soundsp(i) = sqrt((two_third*gmax+rbulk)/rho(i))
subroutine sigeps82c(nel, nuparam, nuvar, nfunc, ifunc, npf, npt0, ipt, iflag, tf, time, timestep, uparam, rho0, area, eint, thklyl, epspxx, epspyy, epspxy, epspyz, epspzx, depsxx, depsyy, depsxy, depsyz, depszx, epsxx, epsyy, epsxy, epsyz, epszx, sigoxx, sigoyy, sigoxy, sigoyz, sigozx, signxx, signyy, signxy, signyz, signzx, sigvxx, sigvyy, sigvxy, sigvyz, sigvzx, soundsp, viscmax, thkn, uvar, ngl, off, ismstr, ipm, gs)