36 SUBROUTINE projecig3d(ELBUF_TAB, IPARG ,X , D, V, A, WIGE ,KXIG3D ,IXIG3D ,
37 . IG3DSOLID,NANIM3D_L, X_TEMP, D_TEMP, V_TEMP, A_TEMP, TABSTRESL,
38 . IGEO,KNOT, NG, NBG, NISOELCUT, NCTRL, NEL_P, ITAB, CONT, CONT_TEMP,
39 . FINT, FINT_TEMP, FEXT, FEXT_TEMP, FREAC, FREACT_TEMP,
40 . PX, PY, PZ,KNOTLOCPC,KNOTLOCEL)
49#include "implicit_f.inc"
57#include "vect01_c.inc"
61#include "tabsiz_c.inc"
67 INTEGER KXIG3D(NIXIG3D,*),IXIG3D(*),IGEO(NPROPGI,*),
68 . NANIM3D_L, IPARG(NPARG,*), NISOELCUT, NG, NBG, NCTRL, NEL_P, ITAB(*),
70 INTEGER IG3DSOLID(8,27,*)
71 TYPE (ELBUF_STRUCT_),
TARGET,
DIMENSION(NGROUP) :: ELBUF_TAB
73 . X(3,*),D(3,*),V(3,*),A(3,*),WIGE(*),KNOT(*),
74 . x_temp(3,*),d_temp(3,*),v_temp(3,*),a_temp(3,*),
75 . cont(3,*),cont_temp(3,*),
76 . fint(3,*),fint_temp(3,*),fext(3,*),fext_temp(3,*),
77 . freac(6,*),freact_temp(3,*),knotlocpc(deg_max,3,*),knotlocel(2,3,*)
79 .
DIMENSION(6,*) :: tabstresl
83 INTEGER IDX(MVSIZ),IDY(MVSIZ),IDZ(MVSIZ),
84 . IDX2(MVSIZ),IDY2(MVSIZ),IDZ2(MVSIZ),
85 . N1, N2, N3,NKNOT1,NKNOT2,NKNOT3, I, J,K, JJ, L, M, N,
86 . O, P, Q, BID, COUNT, PROJEC,
87 . itens, idbrick, inctrl,ierror,
88 . iprop, nelig3d,iad_knot,
89 . ir, is, it, ing, decal, count2,
count3, nel,
92 . xx(nctrl,mvsiz),yy(nctrl,mvsiz),zz(nctrl,mvsiz),
93 . dx(nctrl,mvsiz),dy(nctrl,mvsiz),dz(nctrl,mvsiz),
94 . ux(nctrl,mvsiz),uy(nctrl,mvsiz),uz(nctrl,mvsiz),
95 . vx(nctrl,mvsiz),vy(nctrl,mvsiz),vz(nctrl,mvsiz),
96 . ax(nctrl,mvsiz),ay(nctrl,mvsiz),az(nctrl,mvsiz),
97 . contx(nctrl,mvsiz),conty(nctrl,mvsiz
98 . fintx(nctrl,mvsiz),finty(nctrl,mvsiz),fintz(nctrl,mvsiz),
99 . fextx(nctrl,mvsiz),fexty(nctrl,mvsiz),fextz(nctrl,mvsiz),
100 . freactx(nctrl,mvsiz),freacty(nctrl,mvsiz),freactz(nctrl,mvsiz),
101 . ww(nctrl,mvsiz),pasx, pasy, pasz, r
102 . xi(3), xxi(3), di(3), vi(3), ai(3),conti(3),
103 . finti(3),fexti(3),freacti(3),
104 . s(6), zr, zs, zt, detjac, pgauss,knotlocx(px+1,nctrl,mvsiz),
105 . knotlocy(py+1,nctrl,mvsiz),knotlocz(pz+1,nctrl,mvsiz),
106 . knotlocelx(2,mvsiz),
107 . knotlocely(2,mvsiz),knotlocelz(2,mvsiz)
108 TYPE(l_bufel_) ,
POINTER :: LBUF
110 .
ALLOCATABLE,
DIMENSION(:) :: MAB
112 .
ALLOCATABLE,
DIMENSION(:,:) :: ri,fi
117 . w_gauss(9,9),a_gauss(9,9)
125 3 0.555555555555556d0,0.888888888888889d0,0.555555555555556d0,
128 4 0.347854845137454d0,0.652145154862546d0,0.652145154862546d0,
129 4 0.347854845137454d0,0.d0 ,0.d0 ,
131 5 0.236926885056189d0,0.478628670499366d0,0.568888888888889d0,
132 5 0.478628670499366d0,0.236926885056189d0,0.d0 ,
134 6 0.171324492379170d0,0.360761573048139d0,0.467913934572691d0,
135 6 0.467913934572691d0,0.360761573048139d0,0.171324492379170d0,
137 7 0.129484966168870d0,0.279705391489277d0,0.381830050505119d0,
138 7 0.417959183673469d0,0.381830050505119d0,0.279705391489277d0,
139 7 0.129484966168870d0,0.d0 ,0.d0 ,
140 8 0.101228536290376d0,0.222381034453374d0,0.313706645877887d0,
141 8 0.362683783378362d0,0.362683783378362d0,0.313706645877887d0,
142 8 0.222381034453374d0,0.101228536290376d0,0.d0
143 9 0.081274388361574d0,0.180648160694857d0,0.260610696402935d0,
144 9 0.312347077040003d0,0.330239355001260d0,0.312347077040003d0,
145 9 0.260610696402935d0,0.180648160694857d0,0.081274388361574d0/
150 2 -.577350269189625d0,0.577350269189625d0,0.d0 ,
153 3 -.774596669241483d0,0.d0 ,0.774596669241483d0,
156 4 -.861136311594053d0,-.339981043584856d0,0.339981043584856d0,
157 4 0.861136311594053d0,0.d0 ,0.d0 ,
159 5 -.906179845938664d0,-.538469310105683d0,0.d0 ,
160 5 0.538469310105683d0,0.906179845938664d0,0.d0 ,
162 6 -.932469514203152d0,-.661209386466265d0,-.238619186083197d0,
163 6 0.238619186083197d0,0.661209386466265d0,0.932469514203152d0,
165 7 -.949107912342759d0,-.741531185599394d0,-.405845151377397d0,
166 7 0.d0 ,0.405845151377397d0,0.741531185599394d0,
167 7 0.949107912342759d0,0.d0 ,0.d0 ,
168 8 -.960289856497536d0,-.796666477413627d0,-.525532409916329d0,
169 8 -.183434642495650d0,0.183434642495650d0,0.525532409916329d0,
170 8 0.796666477413627d0,0.960289856497536d0,0.d0 ,
171 9 -.968160239507626d0,-.836031107326636d0,-.613371432700590d0,
172 9 -.324253423403809d0,0.d0 ,0.324253423403809d0,
173 9 0.613371432700590d0,0.836031107326636d0,0.968160239507626d0/
179 iad_knot = igeo(40,iprop)
183 idfrstlocknt = igeo(47,iprop)
194 ALLOCATE(mab(sixig3d),ri(6,sixig3d),
195 . fi(6,sixig3d), stat=ierror)
198 CALL ancmsg(msgid=249,anmode=aninfo)
216 IF( j <= kxig3d(3,i+nft) )
THEN
217 xx(j,i)=x(1,ixig3d(kxig3d(4,i+nft)+j-1))
218 yy(j,i)=x(2,ixig3d(kxig3d(4,i+nft)+j-1))
219 zz(j,i)=x(3,ixig3d(kxig3d(4,i+nft)+j-1))
220 IF(anim_v(1)==1)
THEN
221 vx(j,i)=v(1,ixig3d(kxig3d(4,i+nft)+j-1))
222 vy(j,i)=v(2,ixig3d(kxig3d(4,i+nft)+j-1))
223 vz(j,i)=v(3,ixig3d(kxig3d(4,i+nft)+j-1))
225 IF(anim_v(2)==1)
THEN
226 dx(j,i)=d(1,ixig3d(kxig3d(4,i+nft)+j-1))
227 dy(j,i)=d(2,ixig3d(kxig3d(4,i+nft)+j-1))
228 dz(j,i)=d(3,ixig3d(kxig3d(4,i+nft)+j-1))
230 IF(anim_v(3)==1)
THEN
231 ax(j,i)=a(1,ixig3d(kxig3d(4,i+nft)+j-1))
232 ay(j,i)=a(2,ixig3d(kxig3d(4,i+nft)+j-1))
233 az(j,i)=a(3,ixig3d(kxig3d(4,i+nft)+j-1))
236 contx(j,i)=cont(1,ixig3d(kxig3d(4,i+nft)+j-1))
237 conty(j,i)=cont(2,ixig3d(kxig3d(4,i+nft)+j-1))
238 contz(j,i)=cont(3,ixig3d(kxig3d(4,i+nft)+j-1))
240 IF(anim_v(5)==1)
THEN
241 fintx(j,i)=fint(1,ixig3d(kxig3d(4,i+nft)+j-1))
242 finty(j,i)=fint(2,ixig3d(kxig3d(4,i+nft)+j-1))
243 fintz(j,i)=fint(3,ixig3d(kxig3d(4,i+nft)+j-1))
245 IF(anim_v(6)==1)
THEN
246 fextx(j,i)=fext(1,ixig3d(kxig3d(4,i+nft)+j-1))
247 fexty(j,i)=fext(2,ixig3d(kxig3d(4,i+nft)+j
250 IF(anim_v(17)==1)
THEN
251 freactx(j,i)=freac(1,ixig3d(kxig3d(4,i+nft)+j-1))
252 freacty(j,i)=freac(2,ixig3d(kxig3d(4,i+nft)+j-1))
253 freactz(j,i)=freac(3,ixig3d(kxig3d(4,i+nft)+j-1))
257 knotlocx(k,j,i)=knotlocpc(k,1,(kxig3d(2,i+nft)-1)*numnod+ixig3d(kxig3d(4,i+nft)+j-1))
260 knotlocy(k,j,i)=knotlocpc(k,2,(kxig3d(2,i+nft)-1)*numnod+ixig3d(kxig3d(4,i+nft)+j-1))
263 knotlocz(k,j,i)=knotlocpc(k,3,(kxig3d(2,i+nft)-1)*numnod+ixig3d(kxig3d(4,i+nft)+j-1))
267 idx(i) = kxig3d(6,i+nft)
268 idy(i) = kxig3d(7,i+nft)
269 idz(i) = kxig3d(8,i+nft)
270 idx2(i) = kxig3d(9,i+nft)
271 idy2(i) = kxig3d(10,i+nft)
272 idz2(i) = kxig3d(11,i+nft)
273 knotlocelx(1,i) = knotlocel(1,1,i+nft)
274 knotlocely(1,i) = knotlocel(1,2,i+nft)
275 knotlocelz(1,i) = knotlocel(1,3,i+nft)
276 knotlocelx(2,i) = knotlocel(2,1,i+nft)
277 knotlocely(2,i) = knotlocel(2,2,i+nft)
278 knotlocelz(2,i) = knotlocel(2,3,i+nft)
285 pasx = (knotlocelx(2,i) - knotlocelx(1,i)) / three
286 pasy = (knotlocely(2,i) - knotlocely(1,i)) / three
287 pasz = (knotlocelz(2,i) - knotlocelz(1,i)) / three
304 IF(anim_v(1)==1)
THEN
307 IF(anim_v(2)==1)
THEN
310 IF(anim_v(3)==1)
THEN
323 freacti(itens) = zero
327 xi(1) = knotlocelx(1,i) + (l-1)*pasx
328 xi(2) = knotlocely(1,i) + (m-1)*pasy
329 xi(3) = knotlocelz(1,i) + (n-1)*pasz
341 1 i ,bid ,xx(:,i) ,yy(:,i),
342 2 zz(:,i),ww(:,i) ,idx(i) ,idy(i) ,
343 3 idz(i) ,knotlocx(:,:,i) ,knotlocy(:,:,i),knotlocz(:,:,i),
345 5 xi(1) ,xi(2) ,xi(3) ,knot(iad_knot+1),
346 6 knot(iad_knot+nknot1+1),knot(iad_knot+nknot1+nknot2+1),px-1,
348 8 idx2(i),idy2(i) ,idz2(i) ,
349 9 knotlocelx(:,i),knotlocely(:,i),knotlocelz(:,i))
352 xxi(1) = xxi(1) + r(j)*xx(j,i)
353 xxi(2) = xxi(2) + r(j)*yy(j,i)
354 xxi(3) = xxi(3) + r(j)*zz(j,i)
355 IF(anim_v(1)==1)
THEN
356 vi(1) = vi(1) + r(j)*vx(j,i)
357 vi(2) = vi(2) + r(j)*vy(j,i)
358 vi(3) = vi(3) + r(j)*vz(j,i)
360 IF(anim_v(2)==1)
THEN
361 di(1) = di(1) + r(j)*dx(j,i)
362 di(2) = di(2) + r(j)*dy(j,i)
363 di(3) = di(3) + r(j)*dz(j,i)
365 IF(anim_v(3)==1)
THEN
366 ai(1) = ai(1) + r(j)*ax(j,i)
367 ai(2) = ai(2) + r(j)*ay(j,i)
368 ai(3) = ai(3) + r(j)*az(j,i)
371 conti(1) = conti(1) + r(j)*contx(j,i)
372 conti(2) = conti(2) + r(j)*conty(j,i)
373 conti(3) = conti(3) + r(j)*contz(j,i)
376 finti(1) = finti(1) + r(j)*fintx(j,i)
377 finti(2) = finti(2) + r(j)*finty(j,i)
378 finti(3) = finti(3) + r(j)*fintz(j,i)
381 fexti(1) = fexti(1) + r(j)*fextx(j,i)
382 fexti(2) = fexti(2) + r(j)*fexty(j,i)
383 fexti(3) = fexti(3) + r(j)*fextz(j,i)
386 freacti(1) = freacti(1) + r(j)*freactx(j,i)
387 freacti(2) = freacti(2) + r(j)*freacty(j,i)
388 freacti(3) = freacti(3) + r(j)*freactz(j,i)
393 x_temp(itens,count + decal*64) = xxi(itens)
394 IF(anim_v(1)==1)
THEN
395 v_temp(itens,count + decal*64) = vi(itens)
397 IF(anim_v(2)==1)
THEN
398 d_temp(itens,count + decal*64) = di(itens)
400 IF(anim_v(3)==1)
THEN
401 a_temp(itens,count + decal*64) = ai(itens)
404 cont_temp(itens,count + decal*64) = conti(itens)
407 fint_temp(itens,count + decal*64) = finti(itens)
410 fext_temp(itens,count + decal*64) = fexti(itens)
413 freact_temp(itens,count + decal*64) = freacti(itens)
426 ig3dsolid(1,idbrick,i+nft) = numnod + 64*(i-1) + decal*64 - 1 + l +m *(2+2)+n *((2+2)*(2+2))
427 ig3dsolid(2,idbrick,i+nft) = numnod + 64*(i-1) + decal*64 - 1 + (l+1)+m *(2+2)+n *((2+2)*(2+2))
428 ig3dsolid(3,idbrick,i+nft) = numnod + 64*(i-1) + decal*64 - 1 + (l+1)+(m+1)*(2+2)+n *((2+2)*(2+2))
429 ig3dsolid(4,idbrick,i+nft) = numnod + 64*(i-1) + decal*64 - 1 + l +(m+1)*(2+2)+n *((2+2)*(2+2))
430 ig3dsolid(5,idbrick,i+nft) = numnod + 64*(i-1) + decal*64 - 1 + l +m *(2+2)+(n+1)*((2+2)*(2+2))
431 ig3dsolid(6,idbrick,i+nft) = numnod + 64*(i-1) + decal*64 - 1 + (l+1)+m *(2+2)+(n+1)*((2+2)*(2+2))
432 ig3dsolid(7,idbrick,i+nft) = numnod + 64*(i-1) + decal*64 - 1 + (l+1)+(m+1)*(2+2)+(n+1)*((2+2)*(2+2))
433 ig3dsolid(8,idbrick,i+nft) = numnod + 64*(i-1) + decal*64 - 1 + l +(m+1)*(2+2)+(n+1)*((2+2)*(2+2))
449 lbuf => elbuf_tab(ing)%BUFLY(1)%LBUF(ir,is,it)
454 pgauss = w_gauss(ir,px)*w_gauss(is,py)*w_gauss(it,pz)
466 1 i ,bid ,xx(:,i),yy(:,i),
467 2 zz(:,i),ww(:,i),idx(i) ,idy(i) ,
468 3 idz(i) ,knotlocx(:,:,i) ,knotlocy(:,:,i),knotlocz(:,:,i) ,
469 4 tbid ,r ,detjac ,nctrl ,
470 5 zr ,zs ,zt ,knot(iad_knot+1),
473 8 idx2(i),idy2(i) ,idz2(i) ,
474 9 knotlocelx(:,i),knotlocely(:,i),knotlocelz(:,i))
477 inctrl = ixig3d(kxig3d(4,i+nft)+j-1)
478 mab(inctrl) = mab(inctrl) + r(j)*detjac*pgauss
480 ri(itens,inctrl) = ri(itens,inctrl) + r(j)*lbuf%SIG((itens-1)*nel+i)*detjac*pgauss
501 inctrl = ixig3d(kxig3d(4,i+nft)+j-1)
503 fi(itens,inctrl) = ri(itens,inctrl)/mab(inctrl)
520 pasx = (knotlocelx(2,i) - knotlocelx(1,i)) / three
521 pasy = (knotlocely(2,i) - knotlocely(1,i)) / three
522 pasz = (knotlocelz(2,i) - knotlocelz(1,i)) / three
534 xi(1) = knotlocelx(1,i) + (l-1)*pasx
535 xi(2) = knotlocely(1,i) + (m-1)*pasy
536 xi(3) = knotlocelz(1,i) + (n-1)*pasz
548 1 i ,bid ,xx(:,i) ,yy(:,i),
549 2 zz(:,i),ww(:,i) ,idx(i) ,idy(i) ,
550 3 idz(i) ,knotlocx(:,:,i) ,knotlocy(:,:,i),knotlocz(:,:,i) ,
552 5 xi(1) ,xi(2) ,xi(3) ,knot(iad_knot+1),
553 6 knot(iad_knot+nknot1+1),knot(iad_knot+nknot1+nknot2+1),px-1,
555 8 idx2(i),idy2(i) ,idz2(i) ,
556 9 knotlocelx(:,i),knotlocely(:,i),knotlocelz(:,i))
564 inctrl = ixig3d(kxig3d(4,i+nft)+j-1)
566 s(itens) = s(itens) + r(j)*fi(itens,inctrl)
571 tabstresl(itens,
count3 + nisoelcut*64) = s(itens)
581 DEALLOCATE(mab,ri,fi)