29 1 NEL , NUPARAM, NUVAR , UPARAM , RHO0 , RHO ,
30 2 DEPSXX , DEPSYY , DEPSZZ , DEPSXY , DEPSYZ , DEPSZX ,
31 3 SIGOXX , SIGOYY , SIGOZZ , SIGOXY , SIGOYZ , SIGOZX ,
32 4 SIGNXX , SIGNYY , SIGNZZ , SIGNXY , SIGNYZ , SIGNZX ,
33 5 SOUNDSP, UVAR , OFF , ET ,
34 6 PSH , PNEW , DPDM , SSP , PLA )
38#include "implicit_f.inc"
42 INTEGER NEL,NVARF,NUPARAM,NUVAR
43 my_real :: TIME,TIMESTEP
44 my_real :: UPARAM(NUPARAM)
45 my_real ,
DIMENSION(NEL) :: RHO, RHO0,
46 . DEPSXX, DEPSYY, DEPSZZ, DEPSXY, DEPSYZ, DEPSZX,
47 . SIGOXX, SIGOYY, SIGOZZ, SIGOXY, SIGOYZ, SIGOZX,
48 . ssp , dpdm , pnew, psh, pla
53 . signxx(nel), signyy(nel), signzz(nel),
54 . signxy(nel), signyz(nel), signzx(nel),
55 . soundsp(nel), et(nel)
60 . uvar(nel,nuvar), off(nel) ,mu
64 my_real :: a0,a1,a2,amax
65 my_real :: dav,pold(nel)
66 my_real :: t1(nel),t2(nel),t3(nel),t4(nel),t5(nel),t6(nel)
67 my_real :: ptot,g0(nel),ratio(nel),yield2(nel)
68 my_real :: pstar,g,gg,scrt(nel),aj2(nel),dpla(nel)
69 my_real :: i3(nel),cos3t(nel),sqrt_j2,theta,c,phi,k
83 iform = nint(uparam(9))
88 pold(i) = -(sigoxx(i)+sigoyy(i)+sigozz(i))*third
89 scrt(i) = (depsxx(i)+depsyy(i)+depszz(i))*third
90 mu(i) = rho(i)/rho0(i) - one
91 mu2(i) = mu(i) *
max(zero,mu(i))
97 t1(i)=sigoxx(i)+pold(i)+gg*(depsxx(i)-scrt(i))
98 t2(i)=sigoyy(i)+pold(i)+gg*(depsyy(i)-scrt(i))
99 t3(i)=sigozz(i)+pold(i)+gg*(depszz(i)-scrt(i))
100 t4(i)=sigoxy(i) + g*depsxy(i)
101 t5(i)=sigoyz(i) + g*depsyz(i)
102 t6(i)=sigozx(i) + g*depszx(i)
108 dpdm(i) = dpdm(i) + onep333*g
109 ssp(i) = sqrt(abs(dpdm(i))/rho0(i))
115 aj2(i)= half*(t1(i)**2+t2(i)**2+t3(i)**2)+t4(i)**2+t5(i)**2+t6(i)**2
121 i3(i) = t2(i)*t3(i)*t1(i)-t2(i)*t6(i)*t6(i)-t3(i)*t4(i)*t4(i)-t5(i)*t5(i)*t1(i)+2*t5(i)*t4(i)*t6(i)
122 sqrt_j2 = sqrt(aj2(i))
123 cos3t(i) = nine*i3(i)/two/sqrt(three)/sqrt_j2/sqrt_j2/sqrt_j2
124 theta = acos(
max(zero,
min(one,cos3t(i))))
125 ptot = pnew(i)+psh(i)
126 g0(i) = -ptot*sin(phi)+sqrt_j2*(cos(theta)-k*sin(theta)*sin(phi))-c*cos(phi)
127 g0(i) =
max(zero,g0(i))
128 yield2(i)= aj2(i)-g0(i)
133 ptot = pnew(i)+psh(i)
135 g0(i) =
min(amax,g0(i))
136 g0(i) =
max(zero,g0(i))
137 IF(ptot <= pstar)g0(i)=zero
138 yield2(i)=aj2(i)-g0(i)
147 IF(yield2(i)<=zero .AND. g0
THEN
150 ratio(i)=sqrt(g0(i)/(aj2(i)+ em14))
157 signxx(i)=ratio(i)*t1(i)*off(i) - pnew(i)
158 signyy(i)=ratio(i)*t2(i)*off(i) - pnew(i)
159 signzz(i)=ratio(i)*t3(i)*off(i) - pnew(i)
160 signxy(i)=ratio(i)*t4(i)*off(i)
161 signyz(i)=ratio(i)*t5(i)*off(i)
162 signzx(i)=ratio(i)*t6(i)*off(i)
163 dpla(i) =(one -ratio(i))*sqrt
165 pla(1:nel) = pla(1:nel) + dpla(1:nel)
subroutine sigeps102(nel, nuparam, nuvar, uparam, rho0, rho, depsxx, depsyy, depszz, depsxy, depsyz, depszx, sigoxx, sigoyy, sigozz, sigoxy, sigoyz, sigozx, signxx, signyy, signzz, signxy, signyz, signzx, soundsp, uvar, off, et, psh, pnew, dpdm, ssp, pla)