29 A NEL ,NUPARAM ,NUVAR ,TIME ,UPARAM ,UVAR ,
30 C RHO0 ,RHO ,VOLUME ,EINT ,EPSD ,TEMP ,
31 D DEPSXX ,DEPSYY ,DEPSZZ ,DEPSXY ,DEPSYZ ,DEPSZX ,
32 E EPSXX ,EPSYY ,EPSZZ ,EPSXY ,EPSYZ ,EPSZX ,
33 F SIGOXX ,SIGOYY ,SIGOZZ ,SIGOXY ,SIGOYZ ,SIGOZX ,
34 G SIGNXX ,SIGNYY ,SIGNZZ ,SIGNXY ,SIGNYZ ,SIGNZX ,
35 H SIGVXX ,SIGVYY ,SIGVZZ ,SIGVXY ,SIGVYZ ,SIGVZX ,
36 I SOUNDSP ,OFF ,DPDM ,PLA ,JTHE )
47#include "implicit_f.inc"
51 INTEGER NEL, NUPARAM, JTHE,NUVAR
53 . TIME , UPARAM(NUPARAM),
54 . RHO(NEL) , RHO0(NEL) , VOLUME(NEL), EINT(NEL)
63 . signxx(nel), signyy(nel), signzz(nel),
64 . signxy(nel), signyz(nel), signzx(nel),
65 . sigvxx(nel), sigvyy(nel), sigvzz(nel),
66 . sigvxy(nel), sigvyz(nel), sigvzx(nel),
71 my_real ,
DIMENSION(NEL,NUVAR) ,
INTENT(INOUT) :: uvar
72 my_real ,
DIMENSION(NEL) ,
INTENT(INOUT)
73 my_real ,
DIMENSION(NEL) ,
INTENT(INOUT) :: temp
78 my_real :: DAVG(NEL), POLD(NEL), THETA(NEL), HM(NEL), EPS(NEL)
79 my_real :: yld(nel), yld_h(nel), yld_sr(nel), yld_t(nel), svm(nel)
80 my_real :: a0, eps0, time_fac, rhocp, tini, eta, t0k, ratio, dpla, g, g2, g3, j2
81 my_real :: m1, m2, m3, m4, m5, m7
102 IF (time == zero)
THEN
107 pold(i) = -(sigoxx(i)+sigoyy(i)+sigozz(i))*third
108 davg(i) = (depsxx(i)+depsyy(i)+depszz(i))*third
109 eps(i) = eps0 + pla(i)
115 signxx(i)=sigoxx(i)+pold(i)+g2*(depsxx(i)-davg(i))
116 signyy(i)=sigoyy(i)+pold(i)+g2*(depsyy(i)-davg(i))
117 signzz(i)=sigozz(i)+pold(i)+g2*(depszz(i)-davg(i))
118 signxy(i)=sigoxy(i)+g*depsxy(i)
119 signyz(i)=sigoyz(i)+g*depsyz
120 signzx(i)=sigozx(i)+g*depszx(i)
126 dpdm(i) = dpdm(i) + four_over_3*g
127 soundsp(i) = sqrt(abs(dpdm(i))/rho0(i))
133 j2 =half*(signxx(i)**2+signyy(i)**2+signzz(i)**2)+signxy(i)**2+signyz(i)**2+signzx(i)**2
134 svm(i) =sqrt(three*j2)
140 theta(1:nel) = uvar(1:nel,1) - t0k
142 theta(1:nel) = temp(1:nel) - t0k
153 IF(eps(i) > zero) yld_h(i) = yld_h(i)*eps(i)**m2
158 IF(eps(i) > zero) yld_h(i) = yld_h(i) * exp(m4/eps(i))
163 IF(eps(i) > zero) yld_h(i) = yld_h(i) * exp(m7*eps(i))
169 yld_sr(i) = (epsd(i)*time_fac)**m3
177 IF(m1 /= zero .AND. m5 /= zero)
THEN
181 ELSEIF(m1 /= zero)
THEN
183 yld_t(i) = exp(theta(i)*m1)
185 ELSEIF(m5 /= zero)
THEN
187 yld_t(i) = (one+eps(i))**(theta(i)*m5)
196 yld(i) = a0 * yld_h(i) * yld_sr(i) * yld_t(i)
205 IF(eps(i) > zero) hm(i) = hm(i) + yld(i)*(m2-m4/eps(i))/eps(i)
211 ratio =
min(one,yld(i)/
max(svm(i),em20))
213 dpla = (one-ratio)*svm(i)/
max(g3+hm(i),em20)
215 yld(i) =
max(yld(i)+dpla*hm(i),zero)
216 ratio =
min(one,yld(i)/
max(svm(i),em20))
217 signxx(i) = signxx(i)*ratio
218 signyy(i) = signyy(i)*ratio
219 signzz(i) = signzz(i)*ratio
220 signxy(i) = signxy(i)*ratio
221 signyz(i) = signyz(i)*ratio
222 signzx(i) = signzx(i)*ratio
223 pla(i) = pla(i) + dpla
224 theta(i) = uvar(i,1) + eta*yld(i)*dpla/rhocp
237 temp(1:nel) = theta(1:nel) + t0k
subroutine sigeps103(nel, nuparam, nuvar, time, uparam, uvar, rho0, rho, volume, eint, epsd, temp, depsxx, depsyy, depszz, depsxy, depsyz, depszx, epsxx, epsyy, epszz, epsxy, epsyz, epszx, sigoxx, sigoyy, sigozz, sigoxy, sigoyz, sigozx, signxx, signyy, signzz, signxy, signyz, signzx, sigvxx, sigvyy, sigvzz, sigvxy, sigvyz, sigvzx, soundsp, off, dpdm, pla, jthe)