29 1 NEL , NUPARAM, NUVAR ,NPT0 , ILAYER ,
30 2 TIME , TIMESTEP, UPARAM, RHO0 ,
31 3 AREA , EINT , THKLYL,
32 4 EPSPXX , EPSPYY , EPSPXY, EPSPYZ, EPSPZX,
33 5 DEPSXX , DEPSYY , DEPSXY, DEPSYZ, DEPSZX,
34 6 EPSXX , EPSYY , EPSXY , EPSYZ , EPSZX ,
35 7 SIGOXX , SIGOYY , SIGOXY, SIGOYZ, SIGOZX,
36 8 SIGNXX , SIGNYY , SIGNXY, SIGNYZ, SIGNZX,
37 9 SIGVXX , SIGVYY , SIGVXY, SIGVYZ, SIGVZX,
38 A SOUNDSP, VISCMAX, THKN , UVAR , NGL ,
43#include "implicit_f.inc"
52 INTEGER NEL,NUPARAM,NUVAR,ISMSTR,NPT0,ILAYER
54 my_real :: TIME,TIMESTEP
56 . UPARAM(*),THKN(),THKLYL(NEL),
57 . RHO0(NEL),AREA(NEL),EINT(NEL,2),GS(NEL),
58 . EPSPXX(NEL),EPSPYY(NEL),EPSPXY(NEL),EPSPYZ(NEL),EPSPZX(NEL),
59 . DEPSXX(NEL),DEPSYY(NEL),DEPSXY(NEL),DEPSYZ(NEL),DEPSZX(NEL),
60 . EPSXX (NEL),EPSYY (NEL),EPSXY (NEL),EPSYZ (NEL),EPSZX (NEL),
61 . SIGOXX(NEL),SIGOYY(NEL),SIGOXY(NEL),SIGOYZ(NEL),SIGOZX(NEL)
66 . signxx(nel),signyy(nel),signxy(nel),signyz(nel),signzx(nel),
67 . sigvxx(nel),sigvyy(nel),sigvxy(nel),sigvyz(nel),sigvzx(nel),
68 . soundsp(nel),viscmax(nel)
72 my_real :: uvar(nel,nuvar), off(nel)
76 INTEGER :: I,ITER,NORDER,NITER,II
77 my_real :: NU,RBULK,TENSCUT,GMAX,SUM,SUMDWDL,PARTP,EMAX,A11
79 my_real ,
DIMENSION(3) :: LAM_AL
80 my_real ,
DIMENSION(5) :: MU,AL
81 my_real ,
DIMENSION(NEL) :: RVT,GTMAX,DLAM3,KT3,RHO,KIR3
82 my_real ,
DIMENSION(NEL) :: INVRV,DEZZ,RV,TRAV,ROOTV
83 my_real ,
DIMENSION(NEL,3) :: t,evv,ev,evm,cii,s_ldwdl
84 my_real ,
DIMENSION(NEL,3,2) :: eigv(nel,3,2)
99 norder = nint(uparam(18))
103 gmax = gmax + mu(i)*al(i)
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))
116 IF (ismstr == 10)
THEN
118 IF (
min(evv(i,1),evv(i,2)) <= -one)
THEN
127 IF(abs(evv(i,2)-evv(i,1))<em10)
THEN
135 eigv(i,1,1) = (epsxx(i)-evv(i,2)) /rootv(i)
136 eigv(i,2,1) = (epsyy(i)-evv(i,2)) /rootv(i)
137 eigv(i,1,2) = (evv(i,1)-epsxx(i)) /rootv(i)
138 eigv(i,2,2) = (evv(i,1)-epsyy(i)) /rootv(i)
139 eigv(i,3,1) = (half*epsxy(i)) /rootv(i)
140 eigv(i,3,2) =-(half*epsxy(i)) /rootv(i)
144 IF (ismstr == 1 .OR. ismstr == 3 .OR. ismstr == 11)
THEN
146 ev(i,1)=evv(i,1)+ one
147 ev(i,2)=evv(i,2)+ one
150 ELSEIF(ismstr == 10)
THEN
152 ev(i,1)=sqrt(evv(i,1)+ one)
153 ev(i,2)=sqrt(evv(i,2)+ one)
154 ev(i,3)=one/ev(i,1)/ev(i,2)
158 ev(i,1)=exp(evv(i,1))
159 ev(i,2)=exp(evv(i,2))
169 ev(1:nel,3) = uvar(1:nel,3)+dlam3(1:nel)
171 rv(i) = ev(i,1)*ev(i,2)*ev(i,3)
172 rvt(i) = exp( (-third)* log(rv(i)) )
173 evm(i,1:3) = ev(i,1:3)*rvt(i)
178 IF (mu(ii)*al(ii) /= zero)
THEN
180 IF (off(i)==zero.OR.off(i)==four_over_5) cycle
181 lam_al(1:3) = exp(al(ii)*log(evm(i,1:3)))
182 sumdwdl = third*(lam_al(1)+lam_al(2)+lam_al(3))
183 sum = mu(ii)*(lam_al(3)-sumdwdl)
184 kir3(i) = kir3(i) + sum
185 kt3(i) = kt3(i) + al(ii)*sum
190 IF (off(i)==zero.OR.off(i)==four_over_5) cycle
191 partp = rbulk*(rv(i)- one)
192 t(i,3)= kir3(i) + partp*rv(i)
193 kt3(i)= two_third*kt3(i)/ev(i,3)+ rbulk*(two*rv(i)-one)*ev(i,1)*ev(i,2)
194 IF (kt3(i)>em20) dlam3(i) = dlam3(i) -t(i,3)/kt3(i)
197 ev(1:nel,3) = uvar(1:nel,3)+dlam3(1:nel)
198 dezz(1:nel) = log(one+dlam3(1:nel)/uvar(1:nel,3))
199 uvar(1:nel,3) = ev(1:nel,3)
202 rv(i) = ev(i,1)*ev(i,2)*ev(i,3)
203 rvt(i) = exp((-third)*log(rv(i)))
204 evm(i,1:3) = ev(i,1:3)*rvt(i)
205 invrv(i) = one / rv(i)
207 s_ldwdl(1:nel,1:3) = zero
209 IF (mu(ii)*al(ii) /= zero)
THEN
211 lam_al(1:3) = exp(al(ii)*log(evm(i,1:3)))
212 s_ldwdl(i,1:3) = s_ldwdl(i,1:3) + mu(ii)*lam_al(1:3)
217 sumdwdl = (s_ldwdl(i,1) + s_ldwdl(i,2) + s_ldwdl(i,3)) * third
218 partp = rbulk*(rv(i)- one)
219 t(i,1) = (s_ldwdl(i,1) - sumdwdl) *invrv(i) + partp
220 t(i,2) = (s_ldwdl(i,2) - sumdwdl) *invrv(i) + partp
225 IF (off(i) /= zero .AND.
226 . (t(i,1) > abs(tenscut) .OR. t(i,2) > abs(tenscut)))
THEN
234 cii(1:nel,1:3) = zero
236 IF (mu(ii)*al(ii) /= zero)
THEN
238 lam_al(1:3) = exp(al(ii)*log(evm(i,1:3)))
239 amax = third*(lam_al(1)+lam_al(2)+lam_al(3))
240 cii(i,1:3) = cii(i,1:3) + mu(ii)*al(ii)*(lam_al(1:3)+amax)
245 gtmax(i) = half*
max(cii(i,1),cii(i,2),cii(i,3))
249 signxx(i) = eigv(i,1,1)*t(i,1) + eigv(i,1,2)*t(i,2)
250 signyy(i) = eigv(i,2,1)*t(i,1) + eigv(i,2,2)*t(i,2)
251 signxy(i) = eigv(i,3,1)*t(i,1) + eigv(i,3,2)*t(i,2)
253 signyz(i) = sigoyz(i)+gs(i)*depsyz(i)
254 signzx(i) = sigozx(i)+gs(i)*depszx(i)
255 rho(i) = rho0(i)*invrv(i)
256 thkn(i) = thkn(i) + dezz(i)*thklyl(i)*off(i)
259 emax =
max(gmax,gtmax(i))*(one + nu)
260 a11 = emax/(one - nu**2)
261 soundsp(i)= sqrt(a11/rho0(i))
subroutine sigeps69c(nel, nuparam, nuvar, npt0, ilayer, 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, gs)