31 1 NEL , NUPARAM, NUVAR , NFUNC , IFUNC , NPF ,
32 2 NPT0 , ILAYER , NGL , OFF , ISMSTR, GS ,
33 2 TF , TIME , TIMESTEP, UPARAM, RHO0 ,
34 3 AREA , EINT , THKLYL,
35 5 DEPSXX , DEPSYY , DEPSXY, DEPSYZ, DEPSZX,
36 6 EPSXX , EPSYY , EPSXY , EPSYZ , EPSZX ,
37 7 SIGOXX , SIGOYY , SIGOXY, SIGOYZ, SIGOZX,
38 8 SIGNXX , SIGNYY , SIGNXY, SIGNYZ, SIGNZX,
39 A SOUNDSP, VISCMAX, THKN , UVAR )
43#include "implicit_f.inc"
47#include "tabsiz_c.inc"
51 INTEGER NEL,NUPARAM,NUVAR,ISMSTR,NPT0,ILAYER
52 INTEGER,
DIMENSION(NEL) ::
55 my_real ,
DIMENSION(NEL,2) :: EINT
58 my_real,
DIMENSION(NEL) ::
59 . THKN,THKLYL, RHO0,,GS,
60 . depsxx,depsyy,depsxy,depsyz,depszx,
61 . epsxx ,epsyy ,epsxy ,epsyz ,epszx ,
62 . sigoxx,sigoyy,sigoxy,sigoyz,sigozx
66 my_real,
DIMENSION(NEL) ::
67 . signxx ,signyy ,signxy ,signyz ,signzx,soundsp,viscmax
72 . uvar(nel,nuvar), off(nel)
76 INTEGER NPF(SNPC), NFUNC, IFUNC(NFUNC)
77 my_real FINTER,FINTTE,TF(STF),FINT2V
78 EXTERNAL FINTER,FINTTE
82 INTEGER IUNL_FOR,ICASE,I,ITER,NLOAD,NN,J,INDX_L(NEL),INDX_UNL(NEL)
86 . dflam3, emax, fac,y33,df, p,invr,yfac(nfunc),rate(nfunc),yfac_unl,
88 my_real,
DIMENSION(NEL) :: t1,t2,t3,epsz,trav,rootv,f1,f2,f3,gmax,
89 . rv,dezz,epszz,ecurent,deint,eps_eq,deps_eq
91 my_real :: ee(nel,3),evv(nel,3),ev(nel,3), eigv(nel,3,3)
97 nload = int(uparam(4))
98 iunl_for = int(uparam(5))
101 icase = nint(uparam(9))
103 rate(j) = uparam(9 + 2*j - 1 )
104 yfac(j) = uparam(9 + 2*j )
106 yfac_unl = uparam(9 + 2*nload + 2 )
109 uvar(1:nel,1:nuvar) = zero
113 g_ini = three_half*rbulk*(one - two*nu)/(one + nu)
117 trav(i) = epsxx(i)+epsyy(i)
118 rootv(i) = sqrt((epsxx(i)-epsyy(i))*(epsxx(i)-epsyy(i))
119 . + epsxy(i)*epsxy(i))
120 evv(i,1) = half*(trav(i)+rootv(i))
121 evv(i,2) = half*(trav(i)-rootv(i))
126 IF(abs(evv(i,2)-evv(i,1))<em10)
THEN
134 eigv(i,1,1) = (epsxx(i)-evv(i,2)) /rootv(i)
135 eigv(i,2,1) = (epsyy(i)-evv(i,2)) /rootv(i)
136 eigv(i,1,2) = (evv(i,1)-epsxx(i)) /rootv(i)
137 eigv(i,2,2) = (evv(i,1)-epsyy(i)) /rootv(i)
138 eigv(i,3,1) = (half*epsxy(i)) /rootv(i)
139 eigv(i,3,2) =-(half*epsxy(i)) /rootv(i)
143 IF (ismstr == 1 .OR. ismstr == 3 .OR. ismstr == 11)
THEN
145 ev(i,1)=evv(i,1)+ one
146 ev(i,2)=evv(i,2)+ one
149 ELSEIF(ismstr == 10)
THEN
151 ev(i,1)=sqrt(evv(i,1)+ one)
152 ev(i,2)=sqrt(evv(i,2)+ one)
153 ev(i,3)=one/ev(i,1)/ev(i,2)
157 ev(i,1)=exp(evv(i,1))
158 ev(i,2)=exp(evv(i,2))
162 ee(1:nel, 1) = ev(1:nel, 1) - one
163 ee(1:nel, 2) = ev(1:nel, 2) - one
164 ee(1:nel, 3) = ev(1:nel, 3) - one
165 eps_eq(1:nel) = sqrt(ee(1:nel,1)**2 + ee(1:nel,2)**2 + ee(1:nel,3)**2 )
166 deps_eq(1:nel)= eps_eq(1:nel) - uvar(1:nel,2)
167 uvar(1:nel,2)= eps_eq(1:nel)
170 f1(i) = ev(i,1)*yfac(1)*finter(ifunc(1),ee(i,1),npf,tf,df1)
171 f2(i) = ev(i,2)*yfac(1)*finter(ifunc(1),ee(i,2),npf,tf,df2)
173 gmax(i) =
max(gmax(i), yfac(1)*df1, yfac(1)*df2 )
175 dd1 = ev(i,1)**fac - one
179 . (dd1 + one)*yfac(1)*finter(ifunc(1),dd1,npf,tf
181 dd1 = ev(i,1)**fac - one
185 dd2 = ev(i,2)**fac - one
189 . (dd2 + one)*yfac(1)*finter(ifunc(1),dd2,npf,tf,df)
191 dd2 = ev(i,2)**fac - one
201 rv(i) = ev(i,1)*ev(i,2)*ev(i,3)
202 ee(i,3) = ev(i,3) - one
203 y3 = yfac(1)*finter(ifunc(1),ee(i,3),npf,tf,df3)
205 gmax(i) =
max(gmax(i), yfac(1)*df3 )
211 DO WHILE (abs(dd3) >= em03 .AND. nn <= 20 )
212 y33 = yfac(1)*finter(ifunc(1),dd3,npf,tf,df)
213 f3(i) = f3(i) + scale*y33
214 dflam3 = dflam3 + y33*fac * scale/ev(i,3) + yfac(1)*fac*scale**2*df/ev(i,3)
221 invr = one/
max(em20,rv(i))
222 p = invr*rbulk*(rv(i) - one)
223 t1(i) = invr*(two_third*f1(i) - third*(f2(i) + f3(i))) + p
224 t2(i) = invr*(two_third*f2(i) - third*(f1(i) + f3(i))) + p
225 t3(i) = invr*(two_third*f3(i) - third*(f1(i) + f2(i))) + p
227 kt = y3 + ev(i,3)*yfac(1)*df3 + dflam3
228 kt = two_third*kt*invr + rbulk*invr/ev(i,3) -
229 . invr*(two_third*f3(i) - third*(f1(i)+f2(i)))/ev(i,3)
230 IF(kt /= zero) ev(i,3) = ev(i,3) - t3(i)/kt
236 ecurent(i)= half*(ee(i,1)*t1(i) + ee(i,2)*t2(i))
237 uvar(i,17)=
max(uvar(i,17), ecurent(i))
238 deint(i) = ecurent(i) - uvar(i,16)
239 uvar(i,16) = ecurent(i)
240 IF(deint(i) >= zero .OR. deps_eq(i) >= zero)
THEN
244 IF(uvar(i,18) == one )uvar(i,17) = uvar(i,16)
251 IF(uvar(i,17) > zero .AND. ecurent(i) <= uvar(i,17))
THEN
252 dam = one - (ecurent(i)/uvar(i,17))**shape
253 dam = one - (one - hys)*dam
263 IF (ismstr == 1 .OR. ismstr == 3 .OR. ismstr == 11)
THEN
265 epszz(i) =ev(i,3) - one
268 ELSEIF (ismstr == 10)
THEN
270 epszz(i) =ev(i,3) - one
275 epszz(i) =log(ev(i,3))
280 rv(i) = ev(i,1)*ev(i,2)*ev(i,3)
281 dezz(i) =-nu/(one-nu)*(depsxx(i)+depsyy(i))
282 signxx(i) =eigv(i,1,1)*t1(i)+eigv(i,1,2)*t2(i)
283 signyy(i) =eigv(i,2,1)*t1(i)+eigv(i,2,2)*t2(i)
284 signxy(i) =eigv(i,3,1)*t1(i)+eigv(i,3,2)*t2(i)
286 signyz(i) = sigoyz(i)+gs(i)*depsyz(i)
287 signzx(i) = sigozx(i)+gs(i)*depszx(i)
288 thkn(i) = thkn(i) + dezz(i)*thklyl(i)*off(i)
290 emax = two*g_ini*(one + nu)
291 a11 = emax/(one - nu**2)
292 soundsp(i)= sqrt(a11/rho0(i))
subroutine sigeps88c(nel, nuparam, nuvar, nfunc, ifunc, npf, npt0, ilayer, ngl, off, ismstr, gs, tf, time, timestep, uparam, rho0, area, eint, thklyl, depsxx, depsyy, depsxy, depsyz, depszx, epsxx, epsyy, epsxy, epsyz, epszx, sigoxx, sigoyy, sigoxy, sigoyz, sigozx, signxx, signyy, signxy, signyz, signzx, soundsp, viscmax, thkn, uvar)