40 2 IXC, THK, EINT, PARTSAV,
41 3 AREA, MAT, IPARTC, X,
42 4 VR, VOL0, VOL00, THK0,
43 5 THK02, IFLA, OFF, NFT1,
44 6 GRESAV, GRTH, IGRTH, VL1,
45 7 VL2, VL3, VL4, VRL1,
46 8 VRL2, VRL3, VRL4, X1G,
49 B Z2G, Z3G, Z4G, IXFEM,
50 C IEXPAN, EINTTH, ITASK, GVOL,
51 D ACTIFXFEM,IGRE, SENSORS, NEL,
57 use element_mod ,
only : nixc
61#include "implicit_f.inc"
70#include "com_xfem1.inc"
74 INTEGER,
INTENT(IN) :: IGRE
75 INTEGER IXC(NIXC,*),MAT(MVSIZ), JFT, JLT,IFLA,IEXPAN,
76 . IPARTC(*),NFT1,GRTH(*),IGRTH(*),IXFEM,ITASK
77 INTEGER,
INTENT(IN) :: ACTIFXFEM
80 . PM(NPROPM,*), V(3,*), THK(*), EINT(JLT,2),
81 . PARTSAV(NPSAV,*), AREA(*),X(3,*),VR(3,*) ,VOL0(*),VOL00(*),
82 . THK0(*), THK02(*),OFF(*),
85 . X1G(MVSIZ), X2G(MVSIZ), X3G(MVSIZ), X4G(MVSIZ),
86 . Y1G(MVSIZ), Y2G(MVSIZ), Y3G(MVSIZ), Y4G(MVSIZ),
87 . Z1G(MVSIZ), Z2G(MVSIZ), Z3G(MVSIZ), Z4G(MVSIZ),
88 . vl1(mvsiz,3),vl2(mvsiz,3),vl3(mvsiz,3),vl4(mvsiz,3),
89 . vrl1(mvsiz,3),vrl2(mvsiz,3),vrl3(mvsiz,3),vrl4(mvsiz,3)
90 my_real,
INTENT(IN) :: gvol(mvsiz)
91 type (sensors_),
INTENT(INOUT) :: SENSORS
92 INTEGER,
INTENT(IN) :: NEL,G_WPLA
93 my_real,
DIMENSION(NEL*G_WPLA),
INTENT(IN) :: wpla
97 INTEGER I, MX, II, J, IC, JST(MVSIZ+1),FLAG,
98 . ixctmp2,ixctmp3,ixctmp4,ixctmp5
101 . in25,xx,yy,zz,va2, inel,
102 . vxa(mvsiz), vya(mvsiz), vza(mvsiz),
103 . xmas(mvsiz), rho, ei(mvsiz),rei(mvsiz),rek(mvsiz),
104 . ek(mvsiz), xm(mvsiz), ym(mvsiz), zm(mvsiz), xmas25(mvsiz),
105 . xxm(mvsiz), yym(mvsiz), zzm(mvsiz),
106 . xcg(mvsiz), ycg(mvsiz), zcg(mvsiz),
107 . ixx(mvsiz), iyy(mvsiz), izz(mvsiz),
108 . ixy(mvsiz), iyz(mvsiz), izx(mvsiz),
137 vl1(i,1)=v(1,ixctmp2)
138 vl1(i,2)=v(2,ixctmp2)
139 vl1(i,3)=v(3,ixctmp2)
140 vl2(i,1)=v(1,ixctmp3)
141 vl2(i,2)=v(2,ixctmp3)
142 vl2(i,3)=v(3,ixctmp3)
143 vl3(i,1)=v(1,ixctmp4)
144 vl3(i,2)=v(2,ixctmp4)
145 vl3(i,3)=v(3,ixctmp4)
146 vl4(i,1)=v(1,ixctmp5)
147 vl4(i,2)=v(2,ixctmp5)
148 vl4(i,3)=v(3,ixctmp5)
149 vrl1(i,1)=vr(1,ixctmp2)
150 vrl1(i,2)=vr(2,ixctmp2)
151 vrl1(i,3)=vr(3,ixctmp2)
152 vrl2(i,1)=vr(1,ixctmp3)
153 vrl2(i,2)=vr(2,ixctmp3)
154 vrl2(i,3)=vr(3,ixctmp3)
155 vrl3(i,1)=vr(1,ixctmp4)
156 vrl3(i,2)=vr(2,ixctmp4)
157 vrl3(i,3)=vr(3,ixctmp4)
158 vrl4(i,1)=vr(1,ixctmp5)
159 vrl4(i,2)=vr(2,ixctmp5)
160 vrl4(i,3)=vr(3,ixctmp5)
165 vxa(i)=vl1(i,1)+vl2(i,1)+vl3(i,1)+vl4(i,1)
166 vya(i)=vl1(i,2)+vl2(i,2)+vl3(i,2)+vl4(i,2)
167 vza(i)=vl1(i,3)+vl2(i,3)+vl3(i,3)+vl4(i,3)
176 va2 = vl1(i,1)*vl1(i,1)+vl2(i,1)*vl2(i,1)
177 2 +vl3(i,1)*vl3(i,1)+vl4(i,1)*vl4(i,1)
178 3 +vl1(i,2)*vl1(i,2)+vl2(i,2)*vl2(i,2)
179 4 +vl3(i,2)*vl3(i,2)+vl4(i,2)*vl4(i,2)
180 5 +vl1(i,3)*vl1(i,3)+vl2(i,3)*vl2(i,3)
181 6 +vl3(i,3)*vl3(i,3)+vl4(i,3)*vl4(i,3)
182 ei(i)= eint(i,1) + eint(i,2)
183 ek(i)= xmas(i)*va2*one_over_8
184 xmas25(i)= xmas(i)*fourth
185 xm(i)= xmas25(i)*vxa(i)
186 ym(i)= xmas25(i)*vya(i)
187 zm(i)= xmas25(i)*vza(i)
192 IF(ifla/=0.AND.npsav>=21)
THEN
194 xx= x1g(i)+x2g(i)+x3g(i)+x4g(i)
195 yy= y1g(i)+y2g(i)+y3g(i)+y4g(i)
196 zz= z1g(i)+z2g(i)+z3g(i)+z4g(i)
201 in25 = xmas25(i)*(thk02(i)+area(i))*one_over_12
212 ixx(i)= inel + yy + zz
213 iyy(i)= inel + zz + xx
214 izz(i)= inel + xx + yy
218 xxm(i)= vza(i)*ycg(i)-vya(i)*zcg(i)
220 . (vrl1(i,1)+vrl2(i,1)+vrl3(i,1)+vrl4(i,1))
221 yym(i)= vxa(i)*zcg(i)-vza(i)*xcg(i)
223 . (vrl1(i,2)+vrl2(i,2)+vrl3(i,2)+vrl4(i,2))
224 zzm(i)= vya(i)*xcg(i)-vxa(i)*ycg(i)
226 . (vrl1(i,3)+vrl2(i,3)+vrl3(i,3)+vrl4(i,3))
227 va2 = vrl1(i,1)*vrl1(i,1)+vrl2(i,1)*vrl2(i,1)
228 2 + vrl3(i,1)*vrl3(i,1)+vrl4(i,1)*vrl4(i,1)
229 3 + vrl1(i,2)*vrl1(i,2)+vrl2(i,2)*vrl2(i,2)
230 4 + vrl3(i,2)*vrl3(i,2)+vrl4(i,2)*vrl4(i,2)
231 5 + vrl1(i,3)*vrl1(i,3)+vrl2(i,3)*vrl2(i,3)
232 6 + vrl3(i,3)*vrl3(i,3)+vrl4(i,3)*vrl4(i,3)
234 rek(i)= in25*va2*half
239 CALL grelem_sav(jft ,jlt ,gresav,igrth ,grth ,
240 2 off ,ei ,ek ,xm ,ym ,
241 3 zm ,xmas ,xcg ,ycg ,zcg ,
242 4 xxm ,yym ,zzm ,ixx ,iyy ,
243 5 izz ,ixy ,iyz ,izx ,rei ,
250 IF (ipartc(j)/=ipartc(j-1))
THEN
259 IF (icrack3d > 0 .AND. ixfem > 0 .AND. actifxfem > 0)
THEN
261 partsav(1,mx)=partsav(1,mx) + ei(i)
262 IF (g_wpla > 0) partsav(29,mx)=partsav(29,mx) + wpla(i)
263 partsav(2,mx)=partsav(2,mx) + ek(i)
264 partsav(3,mx)=partsav(3,mx) + xm(i)
265 partsav(4,mx)=partsav(4,mx) + ym(i)
266 partsav(5,mx)=partsav(5,mx) + zm(i)
269 partsav(1,mx)=partsav(1,mx) + ei(i)
270 IF (g_wpla > 0) partsav(29,mx)=partsav(29,mx) + wpla(i)
271 partsav(2,mx)=partsav(2,mx) + ek(i)
272 partsav(3,mx)=partsav(3,mx) + xm(i)
273 partsav(4,mx)=partsav(4,mx) + ym(i)
274 partsav(5,mx)=partsav(5,mx) + zm(i)
277 partsav(6,mx)=partsav(6,mx) + xmas(i)
280 partsav(9,mx) =partsav(9,mx) + xcg(i)
281 partsav(10,mx)=partsav(10,mx) + ycg(i)
282 partsav(11,mx)=partsav(11,mx) + zcg(i)
283 partsav(12,mx)=partsav(12,mx) + xxm(i)
284 partsav(13,mx)=partsav(13,mx) + yym(i)
285 partsav(14,mx)=partsav(14,mx) + zzm(i)
286 partsav(15,mx)=partsav(15,mx) + ixx(i)
287 partsav(16,mx)=partsav(16,mx) + iyy(i)
288 partsav(17,mx)=partsav(17,mx) + izz(i)
289 partsav(18,mx)=partsav(18,mx) + ixy(i)
290 partsav(19,mx)=partsav(19,mx) + iyz(i)
291 partsav(20,mx)=partsav(20,mx) + izx(i)
292 partsav(21,mx)=partsav(21,mx) + rei(i)
293 partsav(22,mx)=partsav(22,mx) + rek(i)
299 IF (jst(ii+1)-jst(ii)>15)
THEN
300 DO i=jst(ii),jst(ii+1)-1
301 IF (icrack3d > 0 .AND. ixfem > 0 .AND. actifxfem > 0)
THEN
303 partsav(1,mx)=partsav(1,mx) + ei(i)
304 IF (g_wpla > 0) partsav(29,mx)=partsav(29,mx) + wpla(i)
305 partsav(2,mx)=partsav(2,mx) + ek(i)
306 partsav(3,mx)=partsav(3,mx) + xm(i)
307 partsav(4,mx)=partsav(4,mx) + ym(i)
308 partsav(5,mx)=partsav(5,mx) + zm(i)
311 partsav(1,mx)=partsav(1,mx) + ei(i)
312 IF (g_wpla > 0) partsav(29,mx)=partsav(29,mx) + wpla(i)
313 partsav(2,mx)=partsav(2,mx) + ek(i)
314 partsav(3,mx)=partsav(3
316 partsav(5,mx)=partsav(5,mx) + zm(i)
319 partsav(6,mx)=partsav(6,mx) + xmas(i)
322 partsav(9,mx) =partsav(9,mx) + xcg(i)
323 partsav(10,mx)=partsav(10,mx) + ycg(i)
324 partsav(11,mx)=partsav(11,mx) + zcg(i)
325 partsav(12,mx)=partsav(12,mx) + xxm(i)
326 partsav(13,mx)=partsav(13,mx) + yym(i)
327 partsav(14,mx)=partsav(14,mx) + zzm(i)
328 partsav(15,mx)=partsav(15,mx) + ixx(i)
329 partsav(16,mx)=partsav(16,mx) + iyy(i)
330 partsav(17,mx)=partsav(17,mx) + izz(i)
331 partsav(18,mx)=partsav(18,mx) + ixy(i)
332 partsav(19,mx)=partsav(19,mx) + iyz(i)
333 partsav(20,mx)=partsav(20,mx) + izx(i)
334 partsav(21,mx)=partsav(21,mx) + rei(i)
335 partsav(22,mx)=partsav(22,mx) + rek(i)
338 DO i=jst(ii),jst(ii+1)-1
339 IF (icrack3d > 0 .AND. ixfem > 0 .AND. actifxfem > 0)
THEN
340 IF (off(i)/=zero)
THEN
341 partsav(1,mx)=partsav(1,mx) + ei(i)
342 IF (g_wpla > 0) partsav(29,mx)=partsav(29,mx) + wpla(i)
343 partsav(2,mx)=partsav(2,mx) + ek(i)
344 partsav(3,mx)=partsav(3,mx) + xm(i)
345 partsav(4,mx)=partsav(4,mx) + ym(i)
346 partsav(5,mx)=partsav(5,mx) + zm(i)
349 partsav(1,mx)=partsav(1,mx) + ei(i)
350 IF (g_wpla > 0) partsav(29,mx)=partsav(29,mx) + wpla(i)
351 partsav(2,mx)=partsav(2,mx) + ek(i)
352 partsav(3,mx)=partsav(3,mx) + xm(i)
353 partsav(4,mx)=partsav(4,mx) + ym(i)
354 partsav(5,mx)=partsav(5,mx) + zm(i)
357 partsav(6,mx)=partsav(6,mx) + xmas(i)
360 partsav(9,mx) =partsav(9,mx) + xcg(i)
361 partsav(10,mx)=partsav(10,mx) + ycg(i)
362 partsav(11,mx)=partsav(11,mx) + zcg(i)
363 partsav(12,mx)=partsav(12,mx) + xxm(i)
364 partsav(13,mx)=partsav(13,mx) + yym(i)
365 partsav(14,mx)=partsav(14,mx) + zzm(i)
366 partsav(15,mx)=partsav(15,mx) + ixx(i)
367 partsav(16,mx)=partsav(16,mx) + iyy(i)
368 partsav(17,mx)=partsav(17,mx) + izz(i)
369 partsav(18,mx)=partsav(18,mx) + ixy(i)
370 partsav(19,mx)=partsav(19,mx) + iyz(i)
371 partsav(20,mx)=partsav(20,mx) + izx(i)
372 partsav(21,mx)=partsav(21,mx) + rei(i)
373 partsav(22,mx)=partsav(22,mx) + rek(i)
381 CALL grelem_sav(jft ,jlt ,gresav,igrth ,grth ,
382 2 off ,ei ,ek ,xm ,ym ,
383 3 zm ,xmas ,rbidon,rbidon,rbidon,
384 4 rbidon,rbidon,rbidon,rbidon,rbidon,
385 5 rbidon,rbidon,rbidon,rbidon,rbidon,
391 IF (ipartc(j)/=ipartc(j-1))
THEN
400 IF (icrack3d > 0 .AND. ixfem > 0 .AND. actifxfem > 0)
THEN
401 IF (off(i)/=zero)
THEN
402 partsav(1,mx)=partsav(1,mx) + ei(i)
403 IF (g_wpla > 0) partsav(29,mx)=partsav(29,mx) + wpla(i)
404 partsav(2,mx)=partsav(2,mx) + ek(i)
405 partsav(3,mx)=partsav(3,mx) + xm(i)
406 partsav(4,mx)=partsav(4,mx) + ym(i)
407 partsav(5,mx)=partsav(5,mx) + zm(i)
410 partsav(1,mx)=partsav(1,mx) + ei(i)
411 IF (g_wpla > 0) partsav(29,mx)=partsav(29,mx) + wpla(i)
413 partsav(3,mx)=partsav(3,mx) + xm(i)
414 partsav(4,mx)=partsav(4,mx) + ym(i)
415 partsav(5,mx)=partsav(5,mx) + zm(i)
418 partsav(6,mx)=partsav(6,mx) + xmas(i)
425 IF (jst(ii+1)-jst(ii)>15)
THEN
426 DO i=jst(ii),jst(ii+1)-1
427 IF (icrack3d > 0 .AND. ixfem > 0 .AND. actifxfem > 0)
THEN
429 partsav(1,mx)=partsav(1,mx) + ei(i)
430 IF (g_wpla > 0) partsav(29,mx)=partsav(29,mx) + wpla(i)
431 partsav(2,mx)=partsav(2,mx) + ek(i)
432 partsav(3,mx)=partsav(3,mx) + xm(i)
433 partsav(4,mx)=partsav(4,mx) + ym(i)
434 partsav(5,mx)=partsav(5,mx) + zm(i)
437 partsav(1,mx)=partsav(1,mx) + ei(i)
438 IF (g_wpla > 0) partsav(29,mx)=partsav(29,mx) + wpla(i)
439 partsav(2,mx)=partsav(2,mx) + ek(i)
440 partsav(3,mx)=partsav(3,mx) + xm(i)
441 partsav(4,mx)=partsav(4,mx) + ym(i)
442 partsav(5,mx)=partsav(5,mx) + zm(i)
445 partsav(6,mx)=partsav(6,mx) + xmas(i)
450 DO i=jst(ii),jst(ii+1)-1
451 IF (icrack3d > 0 .AND. ixfem > 0 .AND. actifxfem > 0)
THEN
453 partsav(1,mx)=partsav(1,mx) + ei(i)
454 IF (g_wpla > 0) partsav(29,mx)=partsav(29,mx) + wpla(i)
455 partsav(2,mx)=partsav(2,mx) + ek(i)
456 partsav(3,mx)=partsav(3,mx) + xm(i)
457 partsav(4,mx)=partsav(4,mx) + ym(i)
458 partsav(5,mx)=partsav(5,mx) + zm(i)
461 partsav(1,mx)=partsav(1,mx) + ei(i)
462 IF (g_wpla > 0) partsav(29,mx)=partsav(29,mx) + wpla(i)
463 partsav(2,mx)=partsav(2,mx) + ek(i)
464 partsav(3,mx)=partsav(3,mx) + xm(i)
465 partsav(4,mx)=partsav(4,mx) + ym(i)
466 partsav(5,mx)=partsav(5,mx) + zm(i)
469 partsav(6,mx)=partsav(6,mx) + xmas(i)
482 partsav(27,mx)=partsav(27,mx) + eintth(i)
489 IF (off(i)==zero)
THEN
490 partsav(25,mx) = partsav(25,mx) + one