29 2 IMATLY ,DAMT ,SHF ,NGL ,SIGE ,
30 3 DEPSXX ,DEPSYY ,DEPSXY ,DEPSYZ ,DEPSZX,
31 4 SIGOXX ,SIGOYY ,SIGOXY ,SIGOYZ ,SIGOZX,
32 5 SIGNXX ,SIGNYY ,SIGNXY ,SIGNYZ ,SIGNZX,
33 6 EPSD_PG,EPSD ,ISRATE ,ASRATE ,TSAIWU )
37#include "implicit_f.inc"
55 . PM(NPROPM,*),WPLA(*),DAMT(NEL,2),SHF(*),
57 . depsxx(mvsiz),depsyy(mvsiz),depsxy(mvsiz),depsyz(mvsiz),
59 . sigoxx(nel),sigoyy(nel),
60 . sigoxy(nel),sigoyz(nel),sigozx(nel),
61 . signxx(nel),signyy(nel),signxy(nel),
62 . signyz(nel),signzx(nel),tsaiwu(nel)
63 my_real,
DIMENSION(NEL),
INTENT(IN) :: epsd_pg
64 my_real,
DIMENSION(NEL),
INTENT(INOUT) :: epsd
65 my_real,
INTENT(IN) :: asrate
72 . DP1(MVSIZ), DP2(MVSIZ), DP3(MVSIZ),CB(MVSIZ),CN(MVSIZ),
73 . E11(MVSIZ), E22(MVSIZ), NU12(MVSIZ), NU21(MVSIZ),
74 . g12(mvsiz), g23(mvsiz), g31(mvsiz), fmax(mvsiz),
75 . s1(mvsiz), s2(mvsiz), s3(mvsiz), s4(mvsiz), s5(mvsiz),
76 . ds1(mvsiz), ds2(mvsiz), ds3(mvsiz), de(mvsiz),
77 . de1(mvsiz), de2(mvsiz), wvec(mvsiz), t1(mvsiz),
78 . t2(mvsiz), t3(mvsiz),lamda(mvsiz), coef(mvsiz),
79 . a11(mvsiz), a12(mvsiz), a22(mvsiz),
80 . so1(mvsiz), so2(mvsiz), so3(mvsiz),wplamx(mvsiz),
81 . cc(mvsiz),epdr(mvsiz), fyld(mvsiz),
82 . f1(mvsiz), f2(mvsiz), f12(mvsiz), f11(mvsiz), f22(mvsiz),
83 . f33(mvsiz),wplaref(mvsiz),beta(mvsiz),
84 . scale, cnn, scale1, scale2
90 nu12(i) =pm(35,imatly)
91 nu21(i) =pm(36,imatly)
100 f12(i) =pm(59,imatly)
101 wplamx(i) =pm(41,imatly)
102 wplaref(i)=pm(68,imatly)
105 fmax(i) =pm(49,imatly)
107 epdr(i) =pm(51,imatly)
108 icc(i) =nint(pm(53,imatly))
109 IF (tt == zero) damt(i,1)=one
110 IF (tt == zero) damt(i,2)=one
122 IF (damt(i,2) < one)
THEN
126 s1(i) = sigoxx(i)/de1(i)-nu12(i)*sigoyy(i)*scale
127 s2(i) = sigoyy(i)/de2(i)-nu21(i)*sigoxx(i)*scale
130 s3(i) = sigoxy(i)/de1(i)/de2(i)/g12(i)
131 s4(i) = sigoyz(i)/
max(de2(i)*g23(i)*shf(i),em30)
132 s5(i) = sigozx(i)/
max(de1(i)*g31(i)*shf(i),em30)
136 s1(i)=s1(i)+depsxx(i)
137 s2(i)=s2(i)+depsyy(i)
138 s3(i)=s3(i)+depsxy(i)
139 s4(i)=s4(i)+depsyz(i)
140 s5(i)=s5(i)+depszx(i)
147 scale2 = one-nu12(i)*nu21(i)*scale1
148 IF (damt(i,2) < one)
THEN
153 a11(i) = e11(i)*de1(i)/scale2
154 a22(i) = e22(i)*de2(i)/scale2
155 a12(i) = nu21(i)*a11(i)*scale1
161 t1(i) = a11(i)*s1(i)+a12(i)*s2(i)
162 t2(i) = a12(i)*s1(i)+a22(i)*s2(i)
163 t3(i) = de1(i)*de2(i)*g12(i)*s3(i)
164 signyz(i)= de2(i)*g23(i)*shf(i)*s4(i)
165 signzx(i)= de1(i)*g31(i)*shf(i)*s5(i)
171 IF (israte == 0)
THEN
172 epsd(i) =
max(abs(depsxx(i)),abs(depsyy(i)),abs(depsxy(i)),
173 . abs(depsyz(i)),abs(depszx(i))) /
max(dt1,em20)
175 epsd(i) = asrate*epsd_pg(i) + (one-asrate)*epsd(i)
177 IF (epsd(i) > epdr(i))
THEN
178 epsd(i)=log(epsd(i)/epdr(i))
186 epsd(i) = one + cc(i) * epsd(i)
187 fyld(i) = (one+cb(i)*wpla(i)**cn(i))*epsd(i)
188 IF (icc(i) == 1 .OR. icc(i) == 3)
THEN
189 fmax(i) = fmax(i)*epsd(i)
191 IF (icc(i) == 3 .OR. icc(i) == 4)
THEN
192 wplamx(i) = wplamx(i)*epsd(i)
194 fyld(i)=
min(fmax(i),fyld(i))
200 wvec(i)=f1(i) *t1(i) + f2(i) *t2(i) +
201 . f11(i)*t1(i)*t1(i) + f22(i)*t2(i)*t2(i) +
202 . f33(i)*t3(i)*t3(i) + two*f12(i)*t1(i)*t2(i)
203 tsaiwu(i) =
max(
min(wvec(i)/fyld(i),one),tsaiwu(i))
209 IF (wpla(i) > zero .AND. fyld(i) < fmax(i))
210 . wvec(i)=epsd(i)*wpla(i)**cnn
215 so1(i)=beta(i)*sigoxx(i)
216 so2(i)=beta(i)*sigoyy(i)
217 so3(i)=beta(i)*sigoxy(i)
221 dp1(i)=f1(i)+2*f11(i)*so1(i)+2*f12(i)*so2(i)
222 dp2(i)=f2(i)+2*f22(i)*so2(i)+2*f12(i)*so1(i)
223 dp3(i)=2*f33(i)*so3(i)
233 lamda(i)=(dp1(i)*ds1(i)+dp2(i)*ds2(i)+dp3(i)*ds3(i))*coef(i)
234 IF (lamda(i) == zero) cycle
235 lamda(i)=lamda(i)*coef(i)/
236 . (dp1(i)*(a11(i)*dp1(i)+a12(i)*dp2(i))+
237 . dp2(i)*(a12(i)*dp1(i)+a22(i)*dp2(i))+
238 . two*dp3(i)*g12(i)*de1(i)*de2(i)*dp3(i) +
239 . (so1(i)*dp1(i)+so2(i)*dp2(i)+2.*so3(i)*dp3(i))
240 . *cn(i)*cb(i)*wvec(i))
244 dp1(i)=lamda(i)*dp1(i)
245 dp2(i)=lamda(i)*dp2(i)
246 dp3(i)=lamda(i)*dp3(i)
250 t1(i)=t1(i)-a11(i)*dp1(i)-a12(i)*dp2(i)
251 t2(i)=t2(i)-a12(i)*dp1(i)-a22(i)*dp2(i)
252 t3(i)=t3(i)-g12(i)*de1(i)*de2(i)*dp3(i)*two
256 wpla(i)=wpla(i)+half*(dp1(i)*(t1(i)+so1(i))+
257 . dp2(i)*(t2(i)+so2(i))+
258 . two*dp3(i)*(t3(i)+so3(i)))
259 wpla(i)=
max(wpla(i),zero) / wplaref(i)
subroutine m15cplrc(nel, pm, wpla, imatly, damt, shf, ngl, sige, depsxx, depsyy, depsxy, depsyz, depszx, sigoxx, sigoyy, sigoxy, sigoyz, sigozx, signxx, signyy, signxy, signyz, signzx, epsd_pg, epsd, israte, asrate, tsaiwu)