28 SUBROUTINE m25cplrp2(JFT ,JLT ,WPLAREF,THK ,OFF ,ETSE ,
29 2 WPLA ,DIR ,NPT ,CC ,EPDR ,ICC ,
30 3 WWPLA ,SHF ,FMAX ,CB ,CN ,NEL ,
31 4 DEGMB ,F1 ,F2 ,F12 ,F11 ,F22 ,
32 5 F33 ,E11 ,E22 ,NU12 ,NU21 ,G12 ,
33 6 G23 ,G31 ,DE ,EPSD ,ISRATE ,SIGY ,
34 7 DEPSXX ,DEPSYY ,DEPSXY ,DEPSYZ ,DEPSZX ,SIGOXX ,
35 8 SIGOYY ,SIGOXY ,SIGOYZ ,SIGOZX ,SIGNXX ,SIGNYY ,
36 9 SIGNXY ,SIGNYZ ,SIGNZX ,TSAIWU ,ASRATE ,EPSD_PG)
40#include "implicit_f.inc"
52 INTEGER JFT, JLT, NPT,ICC(*), ISRATE,NEL
54 my_real ,
INTENT(IN) :: ASRATE
55 my_real ,
DIMENSION(NEL) ,
INTENT(IN) :: EPSD_PG
56 my_real ,
DIMENSION(NEL) ,
INTENT(INOUT) :: EPSD
58 . THK(*), OFF(*), WPLA(*), DIR(*),CC(*),
59 . EPDR(*),WWPLA(*),SHF(*),FMAX(MVSIZ),
60 . cb(mvsiz), cn(mvsiz), degmb(mvsiz),
61 . e11(mvsiz), e22(mvsiz), nu12(mvsiz), nu21(mvsiz),
62 . g12(mvsiz), g23(mvsiz), g31(mvsiz),
63 . f1(mvsiz), f2(mvsiz), f12(mvsiz), f11(mvsiz), f22(mvsiz),
64 . f33(mvsiz), wplaref(mvsiz),sigy(*),etse(*),
65 . depsxx(mvsiz),depsyy(mvsiz),depsxy(mvsiz),depsyz(mvsiz),
66 . depszx(mvsiz),sigoxx(nel),sigoyy(nel),sigoxy(nel),
67 . sigoyz(nel),sigozx(nel),signxx(nel),signyy(nel),signxy(nel),
68 . signyz(nel),signzx(nel),tsaiwu(nel)
75 . DP1(MVSIZ), DP2(MVSIZ), DP3(MVSIZ),
76 . LAMDA(MVSIZ), COEF(MVSIZ),
77 . S1(MVSIZ), S2(MVSIZ), S3(MVSIZ), S4(MVSIZ), S5(MVSIZ),
78 . DS1(MVSIZ), DS2(MVSIZ), DS3(MVSIZ), DE(MVSIZ),
79 . DE1(MVSIZ), DE2(MVSIZ), WVEC(MVSIZ), T1(MVSIZ),
80 . t2(mvsiz), t3(mvsiz), epspfac(mvsiz),
81 . a11(mvsiz), a12(mvsiz), a22(mvsiz),
82 . so1(mvsiz), so2(mvsiz), so3(mvsiz),
83 . scale, fyld, cnn,ht,yld(mvsiz),sig(nel,5)
115 de1(i)=
max(de(i),sign(one,sig(i,1)))
116 de2(i)=
max(de(i),sign(one,sig(i,2)))
117 scale = (half+sign(half,de1(i)-one))
118 * *(half+sign(half,de2(i)-one))
120 s1(i) = sig(i,1)/de1(i)-nu12(i)*sig(i,2)*scale
121 s2(i) = sig(i,2)/de2(i)-nu21(i)*sig(i,1)*scale
124 s3(i)=sig(i,3)/de1(i)/de2(i)/g12(i)
125 s4(i)=sig(i,4)/
max(de2(i)*g23(i)*shf(i),em30)
126 s5(i)=sig(i,5)/
max(de1(i)*g31(i)*shf(i),em30)
132 . -(sig(i,1)*s1(i)+sig(i,2)*s2(i)+sig(i,3)*s3(i))
137 s1(i)=s1(i)+depsxx(i)
138 s2(i)=s2(i)+depsyy(i)
139 s3(i)=s3(i)+depsxy(i)
140 s4(i)=s4(i)+depsyz(i)
141 s5(i)=s5(i)+depszx(i)
143 de1(i)=
max(de(i),sign(one,s1(i)))
144 de2(i)=
max(de(i),sign(one,s2(i)))
145 scale = (half+sign(half,de1(i)-one))
146 * *(half+sign(half,de2(i)-one))
148 a12(i)=one -nu12(i)*nu21(i)*scale
149 a11(i)=e11(i)*de1(i)/a12(i)
150 a22(i)=e22(i)*de2(i)/a12(i)
151 a12(i) = nu21(i)*a11(i)*scale
157 t1(i) =a11(i)*s1(i)+a12(i)*s2(i)
158 t2(i) =a12(i)*s1(i)+a22(i)*s2(i)
159 t3(i) =de1(i)*de2(i)*g12(i)*s3(i)
160 sig(i,4)=de2(i)*g23(i)*shf(i)*s4(i)
161 sig(i,5)=de1(i)*g31(i)*shf(i)*s5(i)
166 degmb(i) = degmb(i)+(t1(i)*s1(i)+t2(i)*s2(i)+t3(i)*s3(i))
179 wvec(i)=f1(i) *t1(i) +f2
181 . f33(i)*t3(i)*t3(i)+
182 . two*f12(i)*t1(i)*t2(i)
188 IF (israte == 0)
THEN
189 epsd(i) =
max(abs(depsxx(i)),abs(depsyy(i)),abs(depsxy(i)),
190 . abs(depsyz(i)),abs(depszx(i)))/
max(dt1,em20)
192 epsd(i) = asrate*epsd_pg(i) + (one-asrate)*epsd(i)
194 IF (epsd(i) > epdr(i) .AND. cc(i) /= zero)
THEN
195 epspfac(i)=one + cc(i) * log(epsd(i)/epdr(i))
200 fyld= (one +cb(i)*wpla(i)**cn(i))*epspfac(i)
201 IF(icc(i) == 1 .OR. icc(i) == 3)
THEN
202 fmax(i) = fmax(i)*epspfac(i)
204 IF (icc(i) == 2 .OR. icc(i) == 4)
THEN
205 wwpla(i) = epspfac(i)
209 fyld=
min(fmax(i),fyld)
210 IF (wvec(i) > fyld .AND. off(i) == one) coef(i) = one
213 IF(wpla(i)>zero) wvec(i)=epspfac(i)*wpla(i)**cnn
215 tsaiwu(i) =
max(
min(wvec(i)/fyld,one),tsaiwu(i))
219 dp1(i)=f1(i)+2*f11(i)*so1(i)+2*f12(i)*so2(i)
220 dp2(i)=f2(i)+2*f22(i)*so2(i)+2*f12(i)*so1(i)
221 dp3(i)=two*f33(i)*so3(i)
231 lamda(i)=(dp1(i)*ds1(i)+dp2(i)*ds2(i)+dp3(i)*ds3(i))*coef(i)
235 IF (lamda(i) == zero) cycle
236 lamda(i)=lamda(i)*coef(i)/
237 . (dp1(i)*(a11(i)*dp1(i)+a12(i)*dp2(i))+
238 . dp2(i)*(a12(i)*dp1(i)+a22(i)*dp2(i))+
239 . two*dp3(i)*g12(i)*dp3(i)+
240 . (so1(i)*dp1(i)+so2(i)*dp2(i)+two*so3(i)*dp3(i))
241 . *cn(i)*cb(i)*wvec(i) )
245 dp1(i)=lamda(i)*dp1(i)
246 dp2(i)=lamda(i)*dp2(i)
247 dp3(i)=lamda(i)*dp3(i)
251 t1(i)=t1(i)-a11(i)*dp1(i)-a12(i)*dp2(i)
252 t2(i)=t2(i)-a12(i)*dp1(i)-a22(i)*dp2(i)
253 t3(i)=t3(i)-g12(i)*dp3(i)*two
257 wpla(i)=wpla(i)+half*
258 . (dp1(i)*(t1(i)+so1(i))+
259 . dp2(i)*(t2(i)+so2(i))+
260 . two*dp3(i)*(t3(i)+so3(i))) / wplaref(i)
261 wpla(i)=
max(wpla(i),zero)
262 wwpla(i)= wpla(i)/wwpla(i)
275 sigy(i)=yld(i)*sigy(i)
276 IF (coef(i) == one)
THEN
277 ht=cn(i)*cb(i)*exp((cn(i)-one)*log(
max(wpla(i),em20)))
278 IF(yld(i)>=fmax(i)) ht=em10
279 etse(i)= ht/(ht+e11(i))
subroutine m25cplrp2(jft, jlt, wplaref, thk, off, etse, wpla, dir, npt, cc, epdr, icc, wwpla, shf, fmax, cb, cn, nel, degmb, f1, f2, f12, f11, f22, f33, e11, e22, nu12, nu21, g12, g23, g31, de, epsd, israte, sigy, depsxx, depsyy, depsxy, depsyz, depszx, sigoxx, sigoyy, sigoxy, sigoyz, sigozx, signxx, signyy, signxy, signyz, signzx, tsaiwu, asrate, epsd_pg)