34
35
36
37#include "implicit_f.inc"
38
39
40
41#include "mvsiz_p.inc"
42
43
44
45
46#include "com08_c.inc"
47#include "param_c.inc"
48
49
50
51 INTEGER NGL(MVSIZ)
52 INTEGER NEL, ISRATE
53
55 . pm(npropm,*),wpla(*),damt(nel,2),shf(*),
56 . sige(mvsiz,5),
57 . depsxx(mvsiz),depsyy(mvsiz),depsxy(mvsiz),depsyz(mvsiz),
58 . depszx(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 ! global element strain rate
64 my_real,
DIMENSION(NEL),
INTENT(INOUT) :: epsd
66
67
68
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
91
92 DO i=1,nel
93 de(i) =pm(44,imatly)
94 e11(i) =pm(33,imatly)
95 e22(i) =pm(34,imatly)
96 nu12(i) =pm(35,imatly)
97 nu21(i) =pm(36,imatly)
98 g12(i) =pm(37,imatly)
99 g23(i) =pm(38,imatly)
100 g31(i) =pm(39,imatly)
101 f1(i) =pm(54,imatly)
102 f2(i) =pm(55,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)
109 cb(i) =pm(46,imatly)
110 cn(i) =pm(47,imatly)
111 fmax(i) =pm(49,imatly)
112 cc(i) =pm(50,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
117 ENDDO
118
119
120
121
122
123
124 DO i=1,nel
125 de1(i)=one
126 de2(i)=one
127 scale =one
128 IF (damt(i,2) < one) THEN
129 nu12(i)=em20
130 nu21(i)=em20
131 ENDIF
132 s1(i) = sigoxx(i)/de1(i)-nu12(i)*sigoyy(i)*scale
133 s2(i) = sigoyy(i)/de2(i)-nu21(i)*sigoxx(i)*scale
134 s1(i) = s1(i)/e11(i)
135 s2(i) = s2(i)/e22(i)
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)
139 ENDDO
140
141 DO i=1,nel
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)
147 ENDDO
148
149 DO i=1,nel
150 de1(i)=one
151 de2(i)=one
152 scale1=one
153 scale2 = one-nu12(i)*nu21(i)*scale1
154 IF (damt(i,2) < one) THEN
155 e22(i)=em20
156 nu12(i)=em20
157 nu21(i)=em20
158 ENDIF
159 a11(i) = e11(i)*de1(i)/scale2
160 a22(i) = e22(i)*de2(i)/scale2
161 a12(i) = nu21(i)*a11(i)*scale1
162 ENDDO
163
164
165
166 DO i=1,nel
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)
172 ENDDO
173
174
175
176 DO i=1,nel
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)
180 ELSE
181 epsd(i) = asrate*epsd_pg(i) + (one-asrate)*epsd(i)
182 END IF
183 IF (epsd(i) > epdr(i)) THEN
184 epsd(i)=log(epsd(i)/epdr(i))
185 ELSE
186 epsd(i)=zero
187 ENDIF
188 coef(i)=zero
189 ENDDO
190
191 DO i=1,nel
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)
196 ENDIF
197 IF (icc(i) == 3 .OR. icc(i) == 4) THEN
198 wplamx(i) = wplamx(i)*epsd(i)
199 ENDIF
200 fyld(i)=
min(fmax(i),fyld(i))
201 ENDDO
202
203
204
205 DO i=1,nel
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))
210 ENDDO
211
212 DO i=1,nel
213 cnn=cn(i)-one
214 wvec(i)=zero
215 IF (wpla(i) > zero .AND. fyld(i) < fmax(i))
216 . wvec(i)=epsd(i)*wpla(i)**cnn
217 ENDDO
218
219 DO i=1,nel
220 beta(i) = one
221 so1(i)=beta(i)*sigoxx(i)
222 so2(i)=beta(i)*sigoyy(i)
223 so3(i)=beta(i)*sigoxy(i)
224 ENDDO
225
226 DO i=1,nel
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)
230 ENDDO
231
232 DO i=1,nel
233 ds1(i)=t1(i)-so1(i)
234 ds2(i)=t2(i)-so2(i)
235 ds3(i)=t3(i)-so3(i)
236 ENDDO
237
238 DO i=1,nel
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))
247 ENDDO
248
249 DO i=1,nel
250 dp1(i)=lamda(i)*dp1(i)
251 dp2(i)=lamda(i)*dp2(i)
252 dp3(i)=lamda(i)*dp3(i)
253 ENDDO
254
255 DO i=1,nel
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
259 ENDDO
260
261 DO i=1,nel
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)
266 ENDDO
267
268 DO i=1,nel
269 signxx(i)=t1(i)
270 signyy(i)=t2(i)
271 signxy(i)=t3(i)
272 ENDDO
273
274
275
276 DO i=1,nel
277 sige(i,1)=signxx(i)
278 sige(i,2)=signyy(i)
279 sige(i,3)=signxy(i)
280 sige(i,4)=signyz(i)
281 sige(i,5)=signzx(i)
282 ENDDO
283
284 RETURN