29 1 NEL ,NGL ,NUPARAM ,NUVAR ,NFUNC ,IFUNC ,
30 2 NPF ,TF ,UPARAM ,UVAR ,JTHE ,
31 3 RHO ,TEMP ,DEFP ,SOUNDSP ,OFF ,EPSD ,
32 4 EPSPXX ,EPSPYY ,EPSPZZ ,EPSPXY ,EPSPYZ ,EPSPZX ,
33 5 DEPSXX ,DEPSYY ,DEPSZZ ,DEPSXY ,DEPSYZ ,DEPSZX ,
34 6 SIGOXX ,SIGOYY ,SIGOZZ ,SIGOXY ,SIGOYZ ,SIGOZX ,
35 7 SIGNXX ,SIGNYY ,SIGNZZ ,SIGNXY ,SIGNYZ ,SIGNZX )
39#include "implicit_f.inc"
72 INTEGER NEL,NUPARAM,NUVAR,NFUNC,JTHE
73 INTEGER(*),NGL(NEL),IFUNC(NFUNC)
74 my_real TF(*),UPARAM(NUPARAM)
75 my_real,
DIMENSION(NEL),
INTENT(IN) :: RHO,TEMP,OFF,
76 . EPSPXX,EPSPYY,EPSPZZ,EPSPXY,EPSPYZ,EPSPZX,
77 . DEPSXX,DEPSYY,DEPSZZ,DEPSXY,DEPSYZ,DEPSZX,
78 . SIGOXX,SIGOYY,SIGOZZ,SIGOXY,SIGOYZ,SIGOZX
82 my_real ,
DIMENSION(NEL),
INTENT(OUT) :: soundsp,
83 . signxx,signyy,signzz,signxy,signyz,signzx
87 my_real ,
DIMENSION(NEL,NUVAR),
INTENT(INOUT),
TARGET :: uvar
88 my_real ,
DIMENSION(NEL,2),
INTENT(INOUT),
TARGET :: defp
89 my_real ,
DIMENSION(NEL),
INTENT(INOUT) :: epsd
93 INTEGER I,ITER,NITER,IVARF,IFUNC_E,IFUNC_YLD
94 INTEGER,
DIMENSION(NEL) :: IPOS1,ILEN1,IAD1,IPOS2,ILEN2,
96 my_real tanb,tanp,eini,kini,gini,nu,yxi,kep,h,ho,hm,res,dres,
97 . sigy,siga,sigb,sigr,ra1,ra2,rb,rc,na,fac,q2,pp1,pp2,pla2,pla,dpla,
98 . dfdp,dfdc,dgdp,denom,ldot,dwpx2,qx2,depslv,depspv,depspd,
99 . e1,e2,e3,e4,e5,e6,tr,sy1,sy2,sy3,sy4,sy5,sy6,
100 . dfds1,dfds2,dfds3,dfds4,dfds5,dfds6,depsp1,depsp2,depsp3,depsp4,
101 . depsp5,depsp6,depsl1,depsl2,depsl3,depsl4,depsl5,depsl6,epsp,
102 . qy,fy,py,f1,f2,x,x1,x2,dx,
alpha
103 my_real,
DIMENSION(NEL) :: k,g,g2,ra,depsv,dav,d1,d2,d3,
104 . ds1,ds2,ds3,ds4,ds5,ds6,dp,de1,de2,de3,de4,de5,de6,dydx,
105 . fo,po,so1,so2,so3,so4,so5,so6,s1,s2,s3,s4,s5,s6,p,yld,
106 . s1n,s2n,s3n,s4n,s5n,s6n,pn,qn,q,f,fac_e,frate
107 my_real small,big,tol
108 my_real ,
DIMENSION(:),
POINTER :: epspd,epspv
136 epspd => defp(1:nel,1)
137 epspv => defp(1:nel,2)
164 IF (jthe == 1. and. ifunc_e > 0)
THEN
166 ipos1(i) = nint(uvar(i, ivarf + 1))
167 iad1(i) = npf(ifunc_e) / 2 + 1
168 ilen1(i) = npf(ifunc_e + 1) / 2 - iad1(i) - ipos1(i)
171 CALL vinter2(tf,iad1,ipos1,ilen1,nel,temp,dydx,fac_e)
172 uvar(1:nel,ivarf + 1) = ipos1(1:nel)
174 k(1:nel) = kini*fac_e(1:nel)
175 g(1:nel) = gini*fac_e(1:nel)
176 g2(1:nel) = g(1:nel)*two
184 IF (ifunc_yld > 0)
THEN
186 tr = (epspxx(i) + epspyy(i) + epspzz(i))*third
193 epsp = half*(e1**2 + e2**2 + e3**2) + e4**2 + e5**2 + e6**2
194 epsp = sqrt(three*epsp)/three_half
200 ipos2(i) = nint(uvar(i, ivarf + 1))
201 iad2(i) = npf(ifunc_yld) / 2 + 1
202 ilen2(i) = npf(ifunc_yld + 1) / 2 - iad2(i) - ipos2(i)
205 CALL vinter2(tf,iad2,ipos2,ilen2,nel,epsd,dydx,frate)
206 uvar(1:nel,ivarf + 1) = ipos2(1:nel)
210 uvar(1:nel,2) = epsd(1:nel)
213 ra(1:nel) = ra1*temp(1:nel)**na + ra2
215 ra(1:nel) = ra1 + ra2
225 yld(i) = sigy*frate(i) + siga*(one - exp(-ra(i)*pla))
226 . - sigb *(one - exp(-rb*pla))
227 . + sigr*pla*third*pp2 / pp1
229 depsv(i) = (depsxx(i) + depsyy(i) + depszz(i))
230 dav(i) = depsv(i)*third
231 d1(i) = depsxx(i)-dav(i)
232 d2(i) = depsyy(i)-dav(i)
233 d3(i) = depszz(i)-dav(i)
235 dp(i) =-k(i)* depsv(i)
239 ds4(i)= g(i) * depsxy(i)
240 ds5(i)= g(i) * depsyz(i)
241 ds6(i)= g(i) * depszx(i)
243 po(i) =-(sigoxx(i)+sigoyy(i)+sigozz(i))*third
244 so1(i) = sigoxx(i) + po(i)
245 so2(i) = sigoyy(i) + po(i)
246 so3(i) = sigozz(i) + po(i)
251 s1(i) = so1(i) + ds1(i)
252 s2(i) = so2(i) + ds2(i)
253 s3(i) = so3(i) + ds3(i)
254 s4(i) = so4(i) + ds4(i)
255 s5(i) = so5(i) + ds5(i)
256 s6(i) = so6(i) + ds6(i)
259 signxx(i) = s1(i) - p(i)
260 signyy(i) = s2(i) - p(i)
261 signzz(i) = s3(i) - p(i)
271 q2 = three_half*(so1(i)**2+so2(i)**2+so3(i)**2)
272 . + three*(so4(i)**2+so5(i)**2+so6(i)**2)
274 fo(i)= q(i) -
max(zero, po(i)*tanb + yld(i))
278 q2 = three_half*(s1(i)**2+s2(i)**2+s3(i)**2)
279 . + three*(s4(i)**2+s5(i)**2+s6(i)**2)
281 f(i)= q(i) -
max(zero, p(i)*tanb + yld(i))
289 IF (fo(i) < zero)
THEN
295 x = (x1*f2 - x2*f1) / (f2 - f1)
296 sy1 = s1(i) - x * ds1(i)
297 sy2 = s2(i) - x * ds2(i)
299 sy4 = s4(i) - x * ds4(i)
300 sy5 = s5(i) - x * ds5(i)
301 sy6 = s6(i) - x * ds6(i)
302 py = p(i) - x * dp(i)
303 qy = three_half*(sy1**2+sy2**2+sy3**2) + three*(sy4**2+sy5
305 fy = qy -
max(zero, py*tanb + yld(i))
310 ELSEIF (fy*f2 > 0)
THEN
357 IF (f(i) > zero)
THEN
362 IF (q(i) > em20)
THEN
363 fac = three_half/q(i)
379 ho = siga*ra(i)*exp(-ra(i)*epspd(i)) - sigb*rb*exp(-rb*epspd(i))
380 . + sigr*(one + two_third*rc*pla2 * pp2 / pp1**2)
381 denom = three*g(i) + k(i
382 IF (denom /= zero)
THEN
392 depspv = ldot*dgdp*third
397 depsp4 = ldot*dfds4 * two
398 depsp5 = ldot*dfds5 * two
399 depsp6 = ldot*dfds6 * two
403 depsl1 = de1(i) - depsp1
404 depsl2 = de2(i) - depsp2
405 depsl3 = de3(i) - depsp3
406 depsl4 = de4(i) - depsp4
407 depsl5 = de5(i) - depsp5
408 depsl6 = de6(i) - depsp6
409 depslv = depsv(i) + depspv
423 s1n(i) = s1(i) + ds1(i)
424 s2n(i) = s2(i) + ds2(i)
425 s3n(i) = s3(i) + ds3(i)
426 s4n(i) = s4(i) + ds4(i)
427 s5n(i) = s5(i) + ds5(i)
428 s6n(i) = s6(i) + ds6(i)
433 q2 = three_half*(s1n(i)**2 + s2n(i)**2 + s3n(i)
434 . + three*(s4n(i)**2 + s5n(i)**2 + s6n(i)**2)
438 pla = epspd(i) + dpla
442 yld(i) = sigy*frate(i) + siga*(one - exp(-ra(i)*pla))
443 . - sigb *(one - exp(-rb*pla))
444 . + sigr*pla*third*pp2 / pp1
445 yld(i) =
max(yld(i), zero)
452 res = qn(i) -
max(zero, pn(i)*tanb + yld(i))
453 dres = -(three*g(i) + k(i)*dfdp*dgdp - dfdc*hm)
455 IF (dres /= zero)
THEN
456 ldot = ldot - res / dres
463 fy = qn(i) -
max(zero, pn(i)*tanb + yld(i))
466 IF (tanb*pn(i) + yld(i) <= zero)
THEN
476 IF (qn(i) > small)
THEN
477 x = (pn(i)*tanb + yld(i)) / qn(i)
478 IF (x < one-em02 .OR. x > one)
THEN
479 WRITE(7,*)
'REPROJ Q',x,fy,pn(i),qn(i)
480 WRITE(6,*)
'REPROJ Q',x,fy,pn(i),qn(i)
491 epspd(i) = epspd(i) + ldot*kep
492 epspv(i) = epspv(i) + ldot*dgdp
496 signxx(i) = s1n(i) - pn(i)
497 signyy(i) = s2n(i) - pn(i)
498 signzz(i) = s3n(i) - pn(i)
512 soundsp(i) = sqrt((k(i) + four_over_3*g(i))/rho(i))
subroutine sigeps96(nel, ngl, nuparam, nuvar, nfunc, ifunc, npf, tf, uparam, uvar, jthe, rho, temp, defp, soundsp, off, epsd, epspxx, epspyy, epspzz, epspxy, epspyz, epspzx, depsxx, depsyy, depszz, depsxy, depsyz, depszx, sigoxx, sigoyy, sigozz, sigoxy, sigoyz, sigozx, signxx, signyy, signzz, signxy, signyz, signzx)