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
69 INTEGER I,IMATLY,JFLAG,FAIL
70 INTEGER ICC(MVSIZ),IFLAG(MVSIZ),FAIL_OLD(MVSIZ)
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 . eps1t1(mvsiz), eps2t1(mvsiz), sigrst1(mvsiz),
82 . eps1t2(mvsiz), eps2t2(mvsiz), sigrst2(mvsiz),
83 . eps1c1(mvsiz), eps2c1(mvsiz), sigrsc1(mvsiz),
84 . eps1c2(mvsiz), eps2c2(mvsiz), sigrsc2(mvsiz),
85 . eps1t12(mvsiz), eps2t12(mvsiz), sigrst12(mvsiz),
86 . cc(mvsiz),epdr(mvsiz), fyld(mvsiz),
87 . f1(mvsiz), f2(mvsiz), f12(mvsiz), f11(mvsiz), f22(mvsiz),
88 . f33(mvsiz),wplaref(mvsiz),beta(mvsiz),soft(3),
89 . scale, cnn, scale1, scale2, dam1, dam2,sigyt1,sigyt2,sigyc1,
90 . sigyc2,sigyt12,
alpha,strp12,coefa,coefb,delta
96 nu12(i) =pm(35,imatly)
97 nu21(i) =pm(36,imatly)
100 g31(i) =pm(39,imatly)
103 f11(i) =pm(56,imatly)
104 f22(i) =pm(57,imatly)
105 f33(i) =pm(58,imatly)
106 f12(i) =pm(59,imatly)
107 wplamx(i) =pm(41,imatly)
108 wplaref(i)=pm(68,imatly)
111 fmax(i) =pm(49,imatly)
113 epdr(i) =pm(51,imatly)
114 icc(i) =nint(pm(53,imatly))
115 IF (tt == zero) damt(i,1)=one
116 IF (tt == zero) damt(i,2)=one
128 IF (damt(i,2) < one)
THEN
132 s1(i) = sigoxx(i)/de1(i)-nu12(i)*sigoyy(i)*scale
133 s2(i) = sigoyy(i)/de2(i)-nu21(i)*sigoxx(i)*scale
136 s3(i) = sigoxy(i)/de1(i)/de2(i)/g12(i)
137 s4(i) = sigoyz(i)/
max(de2(i)*g23(i)*shf(i),em30)
138 s5(i) = sigozx(i)/
max(de1(i)*g31(i)*shf(i),em30)
142 s1(i)=s1(i)+depsxx(i)
143 s2(i)=s2(i)+depsyy(i)
144 s3(i)=s3(i)+depsxy(i)
145 s4(i)=s4(i)+depsyz(i)
146 s5(i)=s5(i)+depszx(i)
153 scale2 = one-nu12(i)*nu21(i)*scale1
154 IF (damt(i,2) < one)
THEN
159 a11(i) = e11(i)*de1(i)/scale2
160 a22(i) = e22(i)*de2(i)/scale2
161 a12(i) = nu21(i)*a11(i)*scale1
167 t1(i) = a11(i)*s1(i)+a12(i)*s2(i)
168 t2(i) = a12(i)*s1(i)+a22(i)*s2(i)
169 t3(i) = de1(i)*de2(i)*g12(i)*s3(i)
170 signyz(i)= de2(i)*g23(i)*shf(i)*s4(i)
171 signzx(i)= de1(i)*g31(i)*shf(i)*s5(i)
177 IF (israte == 0)
THEN
178 epsd(i) =
max(abs(depsxx(i)),abs(depsyy(i)),abs(depsxy(i)),
179 . abs(depsyz(i)),abs(depszx(i))) /
max(dt1,em20)
181 epsd(i) = asrate*epsd_pg(i) + (one-asrate)*epsd(i)
183 IF (epsd(i) > epdr(i))
THEN
184 epsd(i)=log(epsd(i)/epdr(i))
192 epsd(i) = one + cc(i) * epsd(i)
193 fyld(i) = (one+cb(i)*wpla(i)**cn(i))*epsd(i)
194 IF (icc(i) == 1 .OR. icc(i) == 3)
THEN
195 fmax(i) = fmax(i)*epsd(i)
197 IF (icc(i) == 3 .OR. icc(i) == 4)
THEN
198 wplamx(i) = wplamx(i)*epsd(i)
200 fyld(i)=
min(fmax(i),fyld(i))
206 wvec(i)=f1(i) *t1(i) + f2(i) *t2(i) +
207 . f11(i)*t1(i)*t1(i) + f22(i)*t2(i)*t2(i) +
208 . f33(i)*t3(i)*t3(i) + two*f12(i)*t1(i)*t2(i)
209 tsaiwu(i) =
max(
min(wvec(i)/fyld(i),one),tsaiwu(i))
215 IF (wpla(i) > zero .AND. fyld(i) < fmax(i))
216 . wvec(i)=epsd(i)*wpla(i)**cnn
221 so1(i)=beta(i)*sigoxx(i)
222 so2(i)=beta(i)*sigoyy(i)
223 so3(i)=beta(i)*sigoxy(i)
227 dp1(i)=f1(i)+2*f11(i)*so1(i)+2*f12(i)*so2(i)
228 dp2(i)=f2(i)+2*f22(i)*so2(i)+2*f12(i)*so1(i)
229 dp3(i)=2*f33(i)*so3(i)
239 lamda(i)=(dp1(i)*ds1(i)+dp2(i)*ds2(i)+dp3(i)*ds3(i))*coef(i)
240 IF (lamda(i) == zero) cycle
241 lamda(i)=lamda(i)*coef(i)/
242 . (dp1(i)*(a11(i)*dp1(i)+a12(i)*dp2(i))+
243 . dp2(i)*(a12(i)*dp1(i)+a22(i)*dp2(i))+
244 . two*dp3(i)*g12(i)*de1(i)*de2(i)*dp3(i) +
245 . (so1(i)*dp1(i)+so2(i)*dp2(i)+2.*so3(i)*dp3(i))
246 . *cn(i)*cb(i)*wvec(i))
250 dp1(i)=lamda(i)*dp1(i)
251 dp2(i)=lamda(i)*dp2(i)
252 dp3(i)=lamda(i)*dp3(i)
256 t1(i)=t1(i)-a11(i)*dp1(i)-a12(i)*dp2(i)
257 t2(i)=t2(i)-a12(i)*dp1(i)-a22(i)*dp2(i)
258 t3(i)=t3(i)-g12(i)*de1(i)*de2(i)*dp3(i)*two
262 wpla(i)=wpla(i)+half*(dp1(i)*(t1(i)+so1(i))+
263 . dp2(i)*(t2(i)+so2(i))+
264 . two*dp3(i)*(t3(i)+so3(i)))
265 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)
subroutine sigeps15c(jft, jlt, pm, damt, imat, shf, ngl, dmg_flag, ilayer, nel, pla, sigdmg, israte, asrate, epsd_pg, epsd, depsxx, depsyy, depsxy, depsyz, depszx, sigoxx, sigoyy, sigoxy, sigoyz, sigozx, signxx, signyy, signxy, signyz, signzx, sigr, tsaiwu)