29 1 NEL , NUPARAM ,NIPARAM, NUVAR , ISMSTR ,
30 2 TIME , TIMESTEP,UPARAM , IPARAM , RHO0 ,
31 3 DEPSXX , DEPSYY , DEPSXY , DEPSYZ , DEPSZX ,
32 4 EPSXX , EPSYY , EPSXY , THKN , THKLYL ,
33 5 SIGNXX , SIGNYY , SIGNXY , SIGNYZ , SIGNZX ,
34 6 SIGOYZ , SIGOZX , SOUNDSP, GS , UVAR ,
39#include "implicit_f.inc"
53 INTEGER :: IPARAM(NIPARAM)
54 my_real :: UPARAM(NUPARAM)
55 my_real :: time,timestep
56 my_real ,
DIMENSION(NEL) :: thkn,thklyl,rho0,gs,
57 . depsxx,depsyy,depsxy
58 my_real ,
DIMENSION(NEL) INTENT(IN)
62 my_real ,
DIMENSION(NEL) :: signxx,signyy,signxy,signyz,signzx,soundsp
66 my_real :: uvar(nel,nuvar), off(nel)
70 INTEGER :: I,II,NPRONY,NORDER,ITER,JNV,NITER
71 my_real :: SUM,FAC,FSCAL,TENSCUT,SUMDWDL,PARTP,AMAX
72 my_real :: EMAX,GMAX,GVMAX,NU,RBULK,A11
73 my_real ,
DIMENSION(3) :: lam_al
74 my_real ,
DIMENSION(10) :: mu,al
75 my_real ,
DIMENSION(NEL) :: rvt,gtmax,dlam3
76 my_real ,
DIMENSION(NEL) :: invrv,dezz,rv,trav,rootv
77 my_real ,
DIMENSION(NEL) :: kt3,rho,kir3
78 my_real ,
DIMENSION(NEL,3) :: t,sv,evv,ev,evm,cii,s_ldwdl
79 my_real ,
DIMENSION(NEL,3,2) :: eigv(nel,3,2)
80 my_real :: dav,h0(4),depszz,taux
81 my_real ,
DIMENSION(NEL) :: a1,a2
82 my_real ,
DIMENSION(NEL,4) :: devs
83 my_real,
DIMENSION(:) ,
ALLOCATABLE :: gi,beta
84 my_real,
DIMENSION(:,:) ,
ALLOCATABLE :: aa,bb,h11
91 ALLOCATE(aa(nel,nprony))
92 ALLOCATE(bb(nel,nprony))
93 ALLOCATE(h11(6,nprony))
95 ALLOCATE(beta(nprony))
111 gi(i) = uparam(24 + i)
112 taux = uparam(24 + nprony + i)
113 gvmax = gvmax + gi(i)
117 gmax = gmax + mu(i)*al(i)
124 trav(i) = epsxx(i)+epsyy(i)
125 rootv(i) = sqrt((epsxx(i)-epsyy(i))*(epsxx(i)-epsyy(i))
126 . + epsxy(i)*epsxy(i))
127 evv(i,1) = half*(trav(i)+rootv(i))
128 evv(i,2) = half*(trav(i)-rootv(i))
132 IF (ismstr == 10)
THEN
134 IF (
min(evv(i,1),evv(i,2)) <= -one)
THEN
143 IF (abs(evv(i,2)-evv(i,1)) < em10)
THEN
151 invrv(i) = one / rootv(i)
152 eigv(i,1,1) = (epsxx(i)-evv(i,2)) * invrv(i)
153 eigv(i,2,1) = (epsyy(i)-evv(i,2)) * invrv(i)
154 eigv(i,3,1) = (half*epsxy(i)) * invrv(i)
155 eigv(i,1,2) = (evv(i,1)-epsxx(i)) * invrv(i)
156 eigv(i,2,2) = (evv(i,1)-epsyy(i)) * invrv(i)
157 eigv(i,3,2) =-(half*epsxy(i)) * invrv(i)
161 IF (ismstr == 1 .OR. ismstr == 3 .OR. ismstr == 11)
THEN
163 ev(i,1)=evv(i,1)+ one
164 ev(i,2)=evv(i,2)+ one
165 ev(i,3)=one/ev(i,1)/ev(i,2)
167 ELSEIF(ismstr == 10)
THEN
169 ev(i,1)=sqrt(evv(i,1)+ one)
170 ev(i,2)=sqrt(evv(i,2)+ one)
171 ev(i,3)=one/ev(i,1)/ev(i,2)
175 ev(i,1)=exp(evv(i,1))
176 ev(i,2)=exp(evv(i,2))
177 ev(i,3)=one/ev(i,1)/ev(i,2)
181 IF (off(i)==zero.OR.off(i)==four_over_5) ev(i,1:3)=one
189 ev(1:nel,3) = uvar(1:nel,3)+dlam3(1:nel)
191 rv(i) = ev(i,1)*ev(i,2)*ev(i,3)
192 rvt(i) = exp( (-third)* log(rv(i)) )
193 evm(i,1:3) = ev(i,1:3)*rvt(i)
198 IF (mu(ii)*al(ii) /= zero)
THEN
200 IF (off(i)==zero.OR.off(i)==four_over_5) cycle
201 lam_al(1:3) = exp(al(ii)*log(evm(i,1:3)))
202 sumdwdl = third*(lam_al(1)+lam_al(2)+lam_al(3))
203 sum = mu(ii)*(lam_al(3)-sumdwdl)
204 kir3(i) = kir3(i) + sum
205 kt3(i) = kt3(i) + al(ii)*sum
210 IF (off(i)==zero.OR.off(i)==four_over_5) cycle
211 partp = rbulk*(rv(i)- one)
212 t(i,3)= kir3(i) + partp*rv(i)
213 kt3(i)= two_third*kt3(i)/ev(i,3)+ rbulk*(two*rv(i)-one)*ev(i,1)*ev(i,2)
214 IF (kt3(i)>em20) dlam3(i) = dlam3(i) -t(i,3)/kt3(i)
217 ev(1:nel,3) = uvar(1:nel,3)+dlam3(1:nel)
218 dezz(1:nel) = log(one+dlam3(1:nel)/uvar(1:nel,3))
219 uvar(1:nel,3) = ev(1:nel,3)
220! compute t1,t2 cauchy stress
222 rv(i) = ev(i,1)*ev(i,2)*ev(i,3)
223 rvt(i) = exp((-third)*log(rv(i)))
224 evm(i,1:3) = ev(i,1:3)*rvt(i)
225 invrv(i) = one / rv(i)
227 s_ldwdl(1:nel,1:3) = zero
229 IF (mu(ii)*al(ii) /= zero)
THEN
231 lam_al(1:3) = exp(al(ii)*log(evm(i,1:3)))
232 s_ldwdl(i,1:3) = s_ldwdl(i,1:3) + mu(ii)*lam_al(1:3)
237 sumdwdl = (s_ldwdl(i,1) + s_ldwdl(i,2) + s_ldwdl(i,3)) * third
238 partp = rbulk*(rv(i)- one)
239 t(i,1) = (s_ldwdl(i,1) - sumdwdl) *invrv(i) + partp
240 t(i,2) = (s_ldwdl(i,2) - sumdwdl) *invrv(i) + partp
242 IF (nprony > 0 )
THEN
248 aa(i,ii) = exp(-beta(ii)*timestep)
249 bb(i,ii) = gi(ii)*exp(-half*beta(ii)*timestep) !bb/dt, and
use directly despsij
251 h0(3) = uvar(i,jnv + (ii - 1)*4 + 3)
252 a1(i) = a1(i) + aa(i,ii)*h0(3)
253 a2(i) = a2(i) + bb(i,ii)
257 fac = one/
max(em20,two_third*a2(i))
258 depszz = -a1(i)*fac + half*(depsxx(i) + depsyy(i))
259 dav = third*(depsxx(i) + depsyy(i) + depszz)
260 devs(i,1) = depsxx(i) - dav
261 devs(i,2) = depsyy(i) - dav
262 devs(i,3) = depszz - dav
263 devs(i,4) = half*depsxy(i)
264 dezz(i) = dezz(i) + depszz
269 h0(1:4) = uvar(i,jnv + (ii - 1)*4 +1:4)
270 h11(1:4,ii) = aa(i,ii)*h0(1:4) + bb(i,ii)*devs(i,1:4)
271 sv(i,1:2) = sv(i,1:2) + h11(1:2,ii)
272 sv(i,3) = sv(i,3) + h11(4,ii)
273 uvar(i,jnv + (ii - 1)*4 +1:4) = h11(1:4,ii)
280 IF (off(i) /= zero .AND.
281 . (t(i,1) > abs(tenscut) .OR. t(i,2) > abs(tenscut)))
THEN
289 cii(1:nel,1:3) = zero
291 IF (mu(ii)*al(ii) /= zero)
THEN
293 lam_al(1:3) = exp(al(ii)*log(evm(i,1:3)))
294 amax = third*(lam_al(1)+lam_al(2)+lam_al(3))
295 cii(i,1:3) = cii(i,1:3) + mu(ii)*al(ii)*(lam_al(1:3)+amax)
300 gtmax(i) = gvmax+half*
max(cii(i,1),cii(i,2),cii(i,3))
304 signxx(i) = eigv(i,1,1)*t(i,1) + eigv(i,1,2)*t(i,2) + sv(i,1)
305 signyy(i) = eigv(i,2,1)*t(i,1) + eigv(i,2,2)*t(i,2) + sv(i,2)
306 signxy(i) = eigv(i,3,1)*t(i,1) + eigv(i,3,2)*t(i,2) + sv(i,3)
308 signyz(i) = sigoyz(i)+gs(i)*depsyz(i)
309 signzx(i) = sigozx(i)+gs(i)*depszx(i)
310 rho(i) = rho0(i)*invrv(i)
311 thkn(i) = thkn(i) + dezz(i)*thklyl(i)*off(i)
314 emax =
max(gmax,gtmax(i))*(one + nu)
315 a11 = emax/(one - nu**2)
316 soundsp(i)= sqrt(a11/rho0(i))