52
53
54
55#include "implicit_f.inc"
56
57
58
59#include "mvsiz_p.inc"
60
61
62
63#include "com01_c.inc"
64#include "param_c.inc"
65#include "units_c.inc"
66#include "com08_c.inc"
67#include "scr17_c.inc"
68#include "comlock.inc"
69
70
71
72 INTEGER, INTENT(IN) :: JCVT
73 INTEGER, INTENT(IN) :: JSPH
74 INTEGER NGL(NEL),NEL
76 my_real pm(npropm), off(nel), sig(nel,6), eint(nel), siga(nel,3),
77 . epxa(nel,3), dam(nel,3), ang(nel,6), eps_f(nel,3), vk0(nel),vk(nel),
78 . strain(nel,6), crak(nel,3), damsum(nel), rob(nel), sigc(nel,6),
79 . rx(nel),ry(nel),rz(nel),sx(nel),sy(nel),sz(nel),pla(nel,7),
80 . d1(nel), d2(nel), d3(nel), d4(nel), d5(nel), d6(nel),seq(nel),rho(nel),
81 . epsvp(nel)
82 my_real,
DIMENSION(NEL) :: r11,r12,r13,r21,r22,r23,r31,r32,r33
83
84
85
86 INTEGER I,J,I1,I2,ICAP,NBDAMA
87 INTEGER INDEX1(NEL), INDEX2(NEL),DAMAI(NEL)
88 my_real :: yms,y0s,ets,vmax,epsmax,rt,arma,plus,diff,etest
89 my_real,
DIMENSION(3) :: dam0,eps_f0,crak0
90 my_real,
DIMENSION(6) :: ang0,sigc0
91 my_real,
DIMENSION(NEL) :: deps1,deps2,deps3,deps4,deps5,deps6,
92 . arm1,arm2,arm3,scle1, scle2, scle3,scal1, scal2, scal3,
93 . h1, h2, h3, h4, h5, h6, s01, s02, s03, s04, s05, s06,
94 . sm, dsm, s1,s2,s3,s4,s5,s6,de1,de2, de3, c44, c55, c66
95 my_real,
DIMENSION(NEL,3,3) :: cdam
96
97 IF (n2d == 1) THEN
98 DO i=1,nel
99 strain(i,1) = strain(i,1) + d1(i)*dt1
100 strain(i,2) = strain(i,2) + d2(i)*dt1
101 strain(i,3) = strain(i,3) + d3(i)*dt1
102 strain(i,4) = strain(i,4) + d4(i)*dt1
103 strain(i,5) = strain(i,5) + d5(i)*dt1
104 strain(i,6) = strain(i,6) + d6(i)*dt1
105 ENDDO
106 END IF
107
108
109
110 DO i=1,nel
111 arm1(i) = pm(53)
112 arm2(i) = pm(54)
113 arm3(i) = pm(55)
114 ENDDO
115 vmax = pm(27)
116 rt = pm(34)
117 epsmax = pm(47)
118 yms = pm(50)
119 y0s = pm(51)
120 ets = pm(52)
121 icap = nint(pm(57))
122
123 arma = zero
124 DO i=1,nel
125 arma = arma + arm1(i) + arm2(i) + arm3(i)
126 ENDDO
127
129 1 nel, gama, rx, ry,
130 2 rz, sx, sy, sz,
131 3 r11, r12, r13, r21,
132 4 r22, r23, r31, r32,
133 5 r33, jcvt, jsph)
134
135 CALL gloa24(nel,strain,dt1,arm1,arm2,arm3,
136 . d1,d2,d3,d4,d5,d6,
137 . r11,r12,r13,r21,r22,
138 . r23,r31,r32,r33,
139 . deps1,deps2,deps3,deps4,deps5,deps6)
140
141 IF (arma > zero ) THEN
142 CALL carm24(nel,yms,y0s,ets,
143 . epxa,siga,deps1,deps2,deps3,
144 . deps4,deps5,deps6)
145 ENDIF
146
147
148
149
150
151
153 . cdam ,sigc ,dam ,ang ,eps_f,crak ,
154 . c44 ,c55 ,c66 ,de1 ,de2 ,de3 ,
155 . deps1,deps2,deps3,deps4,deps5,deps6,
156 . s01 ,s02 ,s03 ,s04 ,s05 ,s06 ,
157 . scal1,scal2,scal3)
158
159
160
161 CALL crit24(nel,pm,sigc,vk0,vk,off,
162 . rob,ngl,seq,
163 . s01,s02,s03,s04,s05,s06,
164 . s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
165 . scal1,scal2,scal3,scle1,scle2,scle3,
166 . sm,dsm)
167
168
169
170 i1 = 0
171 i2 = 0
172
173 DO i=1,nel
174 IF (off(i) /= zero) THEN
175
176
177
178 IF (scle3(i) < zero) THEN
179 sigc(i,1)=s01(i)
180 sigc(i,2)=s02(i)
181 sigc(i,3)=s03(i)
182 sigc(i,4)=s04(i)
183 sigc(i,5)=s05(i)
184 sigc(i,6)=s06(i)
185
186
187
188 ELSEIF (sm(i) + scle2(i)*dsm(i) >= rt) THEN
189 sigc(i,1)=s01(i)
190 sigc(i,2)=s02(i)
191 sigc(i,3)=s03(i)
192 sigc(i,4)=s04(i)
193 sigc(i,5)=s05(i)
194 sigc(i,6)=s06(i)
195 IF (dam(i,1) == zero .or. dam(i,2) == zero .or. dam(i,3) == zero) THEN
196 i1 = i1 + 1
197 index1(i1) = i
198 ENDIF
199
200
201
202 ELSEIF (strain(i,1) + strain(i,2) + strain(i,3) > vmax) THEN
203 i2 = i2 + 1
204 index2(i2) = i
205
206
207
208 ELSE
209 sigc(i,1)=s01(i)
210 sigc(i,2)=s02(i)
211 sigc(i,3)=s03(i)
212 sigc(i,4)=s04(i)
213 sigc(i,5)=s05(i)
214 sigc(i,6)=s06(i)
215 ENDIF
216 ENDIF
217 ENDDO
218
219
220 IF (i1 > 0) THEN
221 CALL dama24(nel ,i1 ,index1,ngl ,pm ,scle2 ,
222 . sigc ,dam ,ang ,eps_f ,crak ,cdam ,
223 . s01 ,s02 ,s03 ,s04 ,s05 ,s06 ,
224 . deps1 ,deps2 ,deps3 ,deps4 ,deps5 ,deps6 ,
225 . de1 ,de2 ,de3 ,scal1 ,scal2 ,scal3 )
226 ENDIF
227
228 IF (i2 > 0) THEN
229 IF (icap < 2) THEN
230 CALL plas24(nel ,i2 ,index2,ngl ,pm ,
231 . sigc ,dam ,crak ,
232 . rho ,eint ,vk0 ,vk ,rob ,cdam ,
233 . deps1 ,deps2 ,deps3 ,deps4 ,deps5 ,deps6 ,
234 . s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
235 . scal1 ,scal2 ,scal3 ,scle2 )
236 ELSE
237 CALL plas24b(nel ,i2 ,index2,ngl ,pm ,
238 . sigc ,dam ,crak ,epsvp ,cdam ,
239 . rho ,eint ,vk0 ,vk ,rob ,pla ,
240 . deps1 ,deps2 ,deps3 ,deps4 ,deps5 ,deps6 ,
241 . s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
242 . scal1 ,scal2 ,scal3 ,scle2 )
243 ENDIF
244 ENDIF
245
246 DO i=1,nel
247 sig(i,1)=sigc(i,1)
248 sig(i,2)=sigc(i,2)
249 sig(i,3)=sigc(i,3)
250 sig(i,4)=sigc(i,4)
251 sig(i,5)=sigc(i,5)
252 sig(i,6)=sigc(i,6)
253 ENDDO
254
255 damsum(1:nel) = dam(1:nel,1) + dam(1:nel,2) + dam(1:nel,3)
256
257
258
259
260 DO i=1,nel
261 IF(off(i) < em01) off(i)=zero
262 IF(off(i) < one) off(i)=off(i)*four_over_5
263 ENDDO
264
265 i1 = 0
266 IF(n2d/=1) THEN
267 DO i=1,nel
268 IF (off(i)>=one) THEN
269 etest=
max(crak(i,1),crak(i,2),crak(i,3))
270 IF(etest>=epsmax)THEN
271 off(i)=off(i)*four_over_5
272 i1 = i1 + 1
273 index1(i1) = i
274 ENDIF
275 ENDIF
276 ENDDO
277 ELSE
278 DO i=1,nel
279 IF(off(i)>=one) THEN
280 plus=strain(i,1)+strain(i,2)
281 diff=strain(i,1)-strain(i,2)
282 etest=half*(plus+sqrt(diff**2+strain(i,4)**2))
283 IF (etest>=epsmax)THEN
284 off(i) = off(i)*four_over_5
285 i1 = i1 + 1
286 index1(i1) = i
287 ENDIF
288 ENDIF
289 ENDDO
290 ENDIF
291
292 IF (i1/=0) THEN
293 DO j = 1, i1
294 i = index1(j)
295#include "lockon.inc"
296 WRITE(iout,1000) ngl(i)
297 WRITE(istdo,1000)ngl(i)
298#include "lockoff.inc"
299 ENDDO
300 ENDIF
301
302
303
304 nbdama = 0
305 DO i=1,nel
306 IF (damsum(i) > zero) THEN
307 nbdama = nbdama + 1
308 damai(nbdama)=i
309 ENDIF
310 ENDDO
311
312 CALL udam24n(sig,ang,nbdama,damai,nel)
313
314
315 IF (arma > zero) THEN
316 DO i=1,nel
317 sig(i,1) = sig(i,1) * (one - arm1(i)) + arm1(i)*siga(i,1)
318 sig(i,2) = sig(i,2) * (one - arm2(i)) + arm2(i)*siga(i,2)
319 sig(i,3) =
320 ENDDO
321 ENDIF
322
323 CALL aglo24(nel,sig,r11,r12,r13,
324 . r21,r22,r23,r31,r32,r33)
325
326 DO i=1,nel
327 sig(i,1)=sig(i,1)*off(i)
328 sig(i,2)=sig(i,2)*off(i)
329 sig(i,3)=sig(i,3)*off(i)
330 sig(i,4)=sig(i,4)*off(i)
331 sig(i,5)=sig(i,5)*off(i)
332 sig(i,6)=sig(i,6)*off(i)
333 ENDDO
334
335 1000 FORMAT(1x,'*** TOTAL FAILURE ELEMENT #',i10)
336
337 RETURN
subroutine aglo24(nel, sig, r11, r12, r13, r21, r22, r23, r31, r32, r33)
subroutine carm24(nel, yms, y0s, ets, epxa, siga, deps1, deps2, deps3, deps4, deps5, deps6)
subroutine crit24(nel, pm, sig, vk0, vk, off, rob, ngl, seq, s01, s02, s03, s04, s05, s06, s1, s2, s3, s4, s5, s6, scal1, scal2, scal3, scle1, scle2, scle3, sm, dsm)
subroutine dama24(nel, nindx, indx, ngl, pm, scle2, sig, dam, ang, eps_f, crak, cdam, s01, s02, s03, s04, s05, s06, deps1, deps2, deps3, deps4, deps5, deps6, de1, de2, de3, scal1, scal2, scal3)
subroutine elas24(nel, pm, cdam, sigc, dam, ang, eps_f, crak, c44, c55, c66, de1, de2, de3, deps1, deps2, deps3, deps4, deps5, deps6, s01, s02, s03, s04, s05, s06, scal1, scal2, scal3)
subroutine gloa24(nel, strain, dt1, arm1, arm2, arm3, d1, d2, d3, d4, d5, d6, r11, r12, r13, r21, r22, r23, r31, r32, r33, deps1, deps2, deps3, deps4, deps5, deps6)
subroutine plas24(nel, nindx, indx, ngl, pm, sig, dam, crak, rho, eint, vk0, vk, rob, cdam, e1, e2, e3, e4, e5, e6, s1, s2, s3, s4, s5, s6, scal1, scal2, scal3, scle2)
subroutine plas24b(nel, nindx, indx, ngl, pm, sig, dam, crak, epsvp, cdam, rho, eint, vk0, vk, rob, pla, deps1, deps2, deps3, deps4, deps5, deps6, s1, s2, s3, s4, s5, s6, scal1, scal2, scal3, scle2)
subroutine rotloc(nel, gama, rx, ry, rz, sx, sy, sz, r11, r12, r13, r21, r22, r23, r31, r32, r33, jcvt, jsph)
subroutine udam24n(sig, ang, nbdama, damai, nel)