45
46
47
48 USE mat_elem_mod
49 USE elbufdef_mod
50
51
52
53#include "implicit_f.inc"
54#include "comlock.inc"
55
56
57
58#include "mvsiz_p.inc"
59
60
61
62#include "param_c.inc"
63#include "com08_c.inc"
64
65
66
67 INTEGER ,INTENT(IN) :: NUMMAT
68 INTEGER JFT,JLT,IR,IS,NPT,NEL
69 INTEGER MAT_IPLY(MVSIZ,*),IPM(NPROPMI,*),NGL(*),NPF(*),PID(*)
70
72 . pm(npropm,*), th_iply(mvsiz,npt),
73 . del_ply(mvsiz,3,npt),off(*),tf(*),dt1c(*),
74 . bufmat(*), sig(mvsiz,3,npt),offi(mvsiz,*),a11(mvsiz,npt),
75 . thk0(*),
for(nel,5),ply_f(mvsiz,5,npt),
76 . exz(*),eyz(*),shf(*),
area(*),mom(nel,3),ssp(*),geo(npropg,*),
77 . posly(*),thkly(*), kxx(*), kyy(*), kxy(*), dexz(*), deyz(*),
78 . eint(jlt,2), gstr(nel,8)
79 TYPE (ELBUF_STRUCT_), TARGET :: ELBUF_STR
80 TYPE (MATPARAM_STRUCT_) ,DIMENSION(NUMMAT) ,INTENT(IN) :: MAT_PARAM
81
82
83
84 INTEGER I,J,K,JJ,IG,IC,II,IFL,IPLY,NVARF,NFAIL,JVAR,NVARF_MAX,
85 . IPMAT_IPLY,JINF,JSUP,
86 . ILAW,IRUPT,IMAT,JJINF,JJSUP,NBDEL,NF,NL,KK(5)
87 INTEGER MAT(MVSIZ),IFAIL(MVSIZ),MATF(MVSIZ),
88 . NBIPLY_DEL(MVSIZ),NIPLY_DEL(MVSIZ,NPT),JLY,
89 . NINDX,INDX(MVSIZ)
90
92 . syz(mvsiz),sxz(mvsiz),szz(mvsiz) , du_iply(3,mvsiz),
93 . syz0(mvsiz),sxz0(mvsiz),szz0(mvsiz),
94 . epsyz_ip(mvsiz),epsxz_ip(mvsiz),epszz_ip(mvsiz),reduc(mvsiz,npt),
95 . degmb(mvsiz),degfx(mvsiz)
97 . nu, g, e33,f4,f5,vol,g0,dd,fac,dtinv,sspi,visc,
98 . wmc,thky,scale,th(npt),
99 . dezz_ip(mvsiz),deyz_ip(mvsiz),dexz_ip(mvsiz),thi(mvsiz)
100
102 . DIMENSION(:) ,POINTER :: uvarf
103 TYPE(BUF_INTLAY_) ,POINTER :: INTLAY
104 TYPE(BUF_INTLOC_) ,POINTER :: ILBUF
105 TYPE(BUF_FAIL_) ,POINTER :: FBUF
106 TYPE(L_BUFEL_) ,POINTER :: LBUF
107
108
109
110
111
112 sig(jft:jlt,1:3,1:elbuf_str%NINTLAY)=zero
113
114 DO i=1,5
115 kk(i) = nel*(i-1)
116 ENDDO
117
118
119 nindx=0
120 DO i=jft,jlt
121 thi(i)= zero
122 IF(off(i)/=zero)THEN
123 nindx=nindx+1
124 indx(nindx)=i
125 END IF
126 ENDDO
127
128 DO k=1,nindx
129 i=indx(k)
130 nbiply_del(i) = 0
131 DO iply = 1,elbuf_str%NINTLAY
132 niply_del(i,iply) = 0
133 thi(i) = thi(i) + th_iply(i,iply)
134 ENDDO
135 ENDDO
136
137 DO iply = 1,elbuf_str%NINTLAY
138 jinf = iply
139 jsup = iply + 1
140 intlay => elbuf_str%INTLAY(iply)
141 ilbuf => elbuf_str%INTLAY(iply)%ILBUF(ir,is)
142 fbuf => elbuf_str%INTLAY(iply)%FAIL(ir,is)
143 nfail = intlay%NFAIL
144 imat = intlay%IMAT
145 ilaw = intlay%ILAW
146
147 DO k=1,nindx
148 i=indx(k)
149
150
151
152
153
154 e33 = pm(20, mat_iply(i, iply))*off(i)
155 g = pm(22, mat_iply(i, iply))*off(i)
156 g0 = g*th_iply(i,iply)*off(i)
157
158 fac= th_iply(i,iply)/thi(i)
159
160 a11(i,iply) = e33 + g
161 IF(ilaw /= 59) THEN
162 g = two*g/th_iply(i,iply)*off(i)
163 e33 = e33/th_iply(i,iply)*off(i)
164 a11(i,iply) = e33 + g
165 g0 = pm(22, mat_iply(i, iply))*off(i)
166 ENDIF
167 sxz0(i) = g*(del_ply(i,1,jsup) - del_ply(i,1,jinf))
168 syz0(i) = g*(del_ply(i,2,jsup) - del_ply(i,2,jinf))
169
170
171 sig(i,2,iply)= g*(del_ply(i,1,jsup) - del_ply(i,1,jinf))
172 . + g0*gstr(i,5)
173 sig(i,1,iply)= g*(del_ply(i,2,jsup) - del_ply(i,2,jinf))
174 . + g0*gstr(i,4)
175 sig(i,3,iply)= e33*(del_ply(i,3,jsup) - del_ply(i,3,jinf))
176
177 mat(i) = mat_iply(i,iply)
178 syz(i) = sig(i,1,iply)
179 sxz(i) = sig(i,2,iply)
180 szz(i) = sig(i,3,iply)
181 szz0(i) = szz(i)
182
183
184
185 du_iply(1,i) = (del_ply(i,1,jsup) - del_ply(i,1,jinf))
186 du_iply(2,i) = (del_ply(i,2,jsup) - del_ply(i,2,jinf))
187 du_iply(3,i) = (del_ply(i,3,jsup) - del_ply(i,3,jinf))
188
189
190 epszz_ip(i)= du_iply(3,i)/th_iply(i,iply)
191 epsyz_ip(i)= du_iply(2,i)/th_iply(i,iply)
192 epsxz_ip(i)= du_iply(1,i)/th_iply(i,iply)
193
194 ii = 3*(i-1)
195 dezz_ip(i) = epszz_ip(i) - ilbuf%EPS(ii + 1)
196 deyz_ip(i) = epsyz_ip(i) - ilbuf%EPS(ii + 2)
197 dexz_ip(i) = epsxz_ip(i) - ilbuf%EPS(ii + 3)
198
199 ilbuf%EPS(ii + 1) = epszz_ip(i)
200 ilbuf%EPS(ii + 2) = epsyz_ip(i)
201 ilbuf%EPS(ii + 3) = epsxz_ip(i)
202 ENDDO
203
204
205
206 DO ifl = 1, nfail
207 uvarf => fbuf%FLOC(ifl)%VAR
208 nvarf = fbuf%FLOC(ifl)%NVAR
209 irupt = fbuf%FLOC(ifl)%ILAWF
210
211 IF (irupt == 18) THEN
212
213 CALL delm01law(mat_param(imat)%FAIL(ifl),
214 1 jlt ,nvarf ,tt ,dt1c ,
215 3 ngl ,iply ,
216 4 off ,syz0 ,sxz0 ,szz ,uvarf ,
217 5 offi(1,iply),reduc(1,iply),intlay%COUNT,
218 . syz, sxz)
219
220 ELSEIF (irupt == 19) THEN
221 CALL delm02law(mat_param(imat)%FAIL(ifl),
222 1 jlt ,nvarf ,tt ,dt1c ,
223 3 ngl ,iply ,
224 4 off ,syz0 ,sxz0 ,szz ,du_iply,
225 5 uvarf ,offi(1,iply),reduc(1,iply),
226 . intlay%COUNT)
227
228 ELSEIF(irupt == 24) THEN
229 CALL delm24law(mat_param(imat)%FAIL(ifl),
230 1 jlt ,nvarf ,tt ,dt1c ,
231 3 ngl ,iply ,
232 4 off ,syz0 ,sxz0 ,szz ,epsyz_ip,
233 5 epsxz_ip,epszz_ip,uvarf ,offi(1,iply),reduc(1,iply),
234 6 intlay%COUNT)
235 ENDIF
236
237 ENDDO
238
239
240 DO k=1,nindx
241 i=indx(k)
242
243 IF (int(intlay%COUNT(i)) == 4) THEN
244 fac = th_iply(i,iply)/thk0(i)
245 IF(reduc(i,iply) < 0 ) reduc(i,iply) = zero
246 sig(i,1,iply) = syz0(i) *reduc(i,iply)
247 sig(i,2,iply) = sxz0(i) *reduc(i,iply)
248 sig(i,3,iply) = szz(i) *reduc(i,iply)
249 IF(szz0(i) < zero)sig(i,3,iply) = szz0(i)
250
251 nbiply_del(i) = nbiply_del(i) + 1
252 nbdel = nbiply_del(i)
253 niply_del(i,nbdel) = iply
254
255 offi(i,iply) = reduc(i,iply)
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274 ELSEIF(offi(i,iply) < one) THEN
275
276 sig(i,1,iply) = syz0(i) *offi(i,iply)
277 sig(i,2,iply) = sxz0(i) *offi(i,iply)
278 sig(i,3,iply) = szz(i) *offi(i,iply)
279 IF(szz0(i) < zero)sig(i,3,iply) = szz0(i)
280
281 ELSE
282 sig(i,1,iply) = syz0(i)
283 sig(i,2,iply) = sxz0(i)
284 sig(i,3,iply) = szz(i)
285 ENDIF
286
287 visc =geo(20,pid(i))
288
289
290 fac = visc + sqrt(visc**2 + one)
291 dtinv =dt1c(i)/
max(dt1c(i)**2,em20)
292 sspi=sqrt(a11(i,iply)*th_iply(i,iply)/pm(1,mat_iply(i,iply)))
293 visc =onep414*visc*pm(1,mat_iply(i,iply))*sspi
294 visc =visc*sqrt(
area(i))*dtinv
295
296 sig(i,1,iply)= sig(i,1,iply) + visc*deyz_ip(i)*offi(i,iply)
297 sig(i,2,iply)= sig(i,2,iply) + visc*dexz_ip(i)*offi(i,iply)
298 IF(sig(i,3,iply) < zero)THEN
299 sig(i,3,iply)= sig(i,3,iply) + visc*dezz_ip(i)
300 ELSE
301 sig(i,3,iply)= sig(i,3,iply) + visc*dezz_ip(i)*offi(i,iply)
302 END IF
303
304
305
306 ilbuf%SIG(kk(1) + i) = sig(i,3,iply)
307 ilbuf%SIG(kk(2) + i) = sig(i,1,iply)
308 ilbuf%SIG(kk(3) + i) = sig(i,2,iply)
309
310
311 a11(i,iply) = a11(i,iply) * fac*fac
312
313
314
315
316
317
318
319
320
321
322 IF (ir == 1 .and. is == 1) intlay%EINT(i) = zero
323 vol =
area(i)*th_iply(i,iply)
324 intlay%EINT(i) = intlay%EINT(i) + half*(
325 . sig(i,3,iply)*epszz_ip(i) +
326 . sig(i,1,iply)*epsyz_ip(i)+ sig(i,2,iply)*epsxz_ip(i))*vol
327
328 ENDDO
329 ENDDO
330
331
332 DO k=1,nindx
333 i=indx(k)
334 nbdel = nbiply_del(i)
335 IF(nbdel > 0 ) THEN
336 DO jj =1,nbdel + 1
337 th(jj) = zero
338 ENDDO
339 nf = 1
340 DO jj =1,nbdel
343 jly = (j-1)*jlt + i
344 th(jj) = th(jj) + thkly(jly)
345 ENDDO
347 ENDDO
348 jj = nbdel + 1
349 nl = elbuf_str%NINTLAY + 1
351 jly = (j-1)*jlt + i
352 th(jj) = th(jj) + thkly(jly)
353 ENDDO
354 scale =zero
355 DO jj =1,nbdel + 1
356 scale = scale + th(jj)**3
357 ENDDO
358 scale =
max(scale,em01)
359
360 degfx(i) = - mom(i,1)*kxx(i) - mom(i,2)*kyy(i)
361 + - mom(i,3)*kxy(i)
362 mom(i,1) = scale*mom(i,1)
363 mom(i,2) = scale*mom(i,2)
364 mom(i,3) = scale*mom(i,3)
365
366 degfx(i) = degfx(i) + mom(i,1)*kxx(i)+mom(i,2)*kyy(i)
367 + + mom(i,3)*kxy(i)
368 eint(i,2)= eint(i,2) + degfx(i)*half*thk0(i)*thk0(i)*
area(i)
369 ENDIF
370 ENDDO
371
372 RETURN
subroutine delm01law(fail, nel, nuvar, time, timestep, ngl, iply, off, signyz0, signxz0, signzz, uvar, offi, reduc, count, signyz, signxz)
subroutine delm02law(fail, nel, nuvar, time, timestep, ngl, iply, off, signyz, signxz, signzz, du, uvar, offi, reduc, count)
subroutine delm24law(fail, nel, nuvar, time, timestep, ngl, iply, off, signyz, signxz, signzz, epsyz, epsxz, epszz, uvar, offi, reduc, count)
subroutine area(d1, x, x2, y, y2, eint, stif0)
for(i8=*sizetab-1;i8 >=0;i8--)
character *2 function nl()