35 2 N2,N3,NSTRF,X,V,FSAV,
36 3 IXS,FOPTA,SECFCUM,FX,FY,FZ,
37 4 TYPE,NSINT,IFRAM,NNOD,NOD,MS,
38 6 IXS20,IXS16,ISOLNOD,XSEC,FBSAV6,
40 use element_mod ,
only : nixs
44#include "implicit_f.inc"
60 INTEGER LFT, LLT, NFT, NSEG, N1, N2, N3,
TYPE,NSINT
61 INTEGER NSTRF(2,*),IXS(NIXS,*),IFRAM,NNOD,NOD(*),IXS20(12,*),IXS16(8,*),ISOLNOD
63 my_real X(3,*), FSAV(NTHVKI), FOPTA(6), SECFCUM(7,*),
64 . FX(MVSIZ,20), FY(MVSIZ,20), FZ(MVSIZ,20), V(3,*) ,MS(*),XSEC(4,3)
65 DOUBLE PRECISION FBSAV6(12,6)
69 INTEGER JJJ(MVSIZ), UNPACK(0:511, 10), NSA, J, I, K, I1, IPACK, N, POWER2(20)
70 my_real fx1(mvsiz), fy1(mvsiz), fz1(mvsiz),
71 . dx1(mvsiz),dy1(mvsiz), dz1(mvsiz),fst(16),
73 . xx4, yy4, zz4, xx5, yy5, zz5, xx6, yy6, zz6, xxn, yyn, zzn,
74 . xxc, yyc, zzc, fsx, fsy, fsz, fn, fsnx, fsny,
75 . fsty, fstz, dmx, dmy, dmz
76 my_real,
DIMENSION(:,:),
ALLOCATABLE :: fstparit
77 DATA power2/1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768,65536,131072,262144,524288/
80 IF(lft+nft>nstrf(1,nseg))
RETURN
81 IF(llt+nft<nstrf(1,1 ))
RETURN
87 unpack(j,i)=mod(j/power2(i),2)
101 IF(type+nsint==0)
THEN
108 ALLOCATE(fstparit(12,nsa))
118 2 xx4, yy4, zz4, xx5, yy5, zz5, xx6, yy6, zz6,
119 3 xxn, yyn, zzn,ifram,nnod,nod,ms)
122 2 xx5, yy5, zz5, xx6 , yy6, zz6 ,
123 3 xxn, yyn, zzn, ifram, n1 , xsec)
130 ipack = mod(nstrf(2,j),256)
132 IF(unpack(ipack,i1)/=0)
THEN
137 n = ixs(i1+1,nstrf(1,j))
146 fn=fsx*xxn+fsy*yyn+fsz*zzn
158 msx =dy1(k)*fz1(k)-dz1(k)*fy1(k)
159 msy =dz1(k)*fx1(k)-dx1(k)*fz1(k)
160 msz =dx1(k)*fy1(k)-dy1(k)*fx1(k)
162 dmx =msx*xx4+msy*yy4+msz*zz4
163 dmy =msx*xx5+msy*yy5+msz*zz5
164 dmz =msx*xx6+msy*yy6+msz*zz6
175 fst(10) = fst(10) + fsx
176 fst(11) = fst(11) + fsy
177 fst(12) = fst(12) + fsz
178 fst(13) = fst(13) + msx
179 fst(14) = fst(14) + msy
180 fst(15) = fst(15) + msz
182 . +fx1(k)*v(1,n)+fy1(k)*v(2,n)+fz1(k)*v(3,n)
191 ipack = mod(nstrf(2,j),256)
193 IF(unpack(ipack,i1)/=0)
THEN
198 n = ixs(i1+1,nstrf(1,j))
207 fn=fsx*xxn+fsy*yyn+fsz*zzn
219 msx =dy1(k)*fz1(k)-dz1(k)*fy1(k)
220 msy =dz1(k)*fx1(k)-dx1(k)*fz1(k)
221 msz =dx1(k)*fy1(k)-dy1(k)*fx1(k)
223 dmx =msx*xx4+msy*yy4+msz*zz4
224 dmy =msx*xx5+msy*yy5+msz*zz5
225 dmz =msx*xx6+msy*yy6+msz*zz6
236 fst(10) = fst(10) + fsx
237 fst(11) = fst(11) + fsy
238 fst(12) = fst(12) + fsz
239 fst(13) = fst(13) + msx
240 fst(14) = fst(14) + msy
241 fst(15) = fst(15) + msz
243 . +fx1(k)*v(1,n)+fy1(k)*v(2,n)+fz1(k)*v(3,n)
245 fstparit(1,k)=fstparit(1,k)+fsnx
246 fstparit(2,k)=fstparit(2,k)+fsny
247 fstparit(3,k)=fstparit(3,k)+fsnz
248 fstparit(4,k)=fstparit(4,k)+fstx
249 fstparit(5,k)=fstparit(
250 fstparit(6,k)=fstparit(6,k)+fstz
251 fstparit(7,k)=fstparit(7,k)+msx
252 fstparit(8,k)=fstparit(8,k)+msy
253 fstparit(9,k)=fstparit(9,k)+msz
254 fstparit(10,k)=fstparit(10,k) +
255 . ( xx4*(fsnx+fstx) +
258 fstparit(11,k)=fstparit(11,k) +
259 . ( xx5*(fsnx+fstx) +
262 fstparit(12,k)=fstparit(12,k) +
263 . ( xx6*(fsnx+fstx) +
279 IF(mod(ipack/power2(i1),2)/=0)
THEN
284 n = ixs20(i1-8,nstrf(1,j)-numels8-numels10)
293 fn=fsx*xxn+fsy*yyn+fsz*zzn
305 msx =dy1(k)*fz1(k)-dz1(k)*fy1(k)
306 msy =dz1(k)*fx1(k)-dx1(k)*fz1(k)
307 msz =dx1(k)*fy1(k)-dy1(k)*fx1(k)
309 dmx =msx*xx4+msy*yy4+msz*zz4
310 dmy =msx*xx5+msy*yy5+msz*zz5
311 dmz =msx*xx6+msy*yy6+msz*zz6
322 fst(10) = fst(10) + fsx
323 fst(11) = fst(11) + fsy
324 fst(12) = fst(12) + fsz
325 fst(13) = fst(13) + msx
326 fst(14) = fst(14) + msy
327 fst(15) = fst(15) + msz
329 . +fx1(k)*v(1,n)+fy1(k)*v(2,n)+fz1(k)*v(3,n)
340 IF(mod(ipack/power2(i1),2)/=0)
THEN
345 n = ixs20(i1-8,nstrf(1,j)-numels8-numels10)
354 fn=fsx*xxn+fsy*yyn+fsz*zzn
366 msx =dy1(k)*fz1(k)-dz1(k)*fy1(k)
367 msy =dz1(k)*fx1(k)-dx1(k)*fz1(k)
368 msz =dx1(k)*fy1(k)-dy1(k)*fx1(k)
370 dmx =msx*xx4+msy*yy4+msz*zz4
371 dmy =msx*xx5+msy*yy5+msz*zz5
372 dmz =msx*xx6+msy*yy6+msz*zz6
383 fst(10) = fst(10) + fsx
384 fst(11) = fst(11) + fsy
385 fst(12) = fst(12) + fsz
386 fst(13) = fst(13) + msx
387 fst(14) = fst(14) + msy
388 fst(15) = fst(15) + msz
390 . +fx1(k)*v(1,n)+fy1(k)*v(2,n)+fz1(k)*v(3,n)
392 fstparit(1,k)=fstparit(1,k)+fsnx
393 fstparit(2,k)=fstparit(2,k)+fsny
394 fstparit(3,k)=fstparit(3,k)+fsnz
395 fstparit(4,k)=fstparit(4,k)+fstx
396 fstparit(5,k)=fstparit(5,k)+fsty
397 fstparit(6,k)=fstparit(6,k)+fstz
398 fstparit(7,k)=fstparit(7,k)+msx
399 fstparit(8,k)=fstparit(8,k)+msy
400 fstparit(9,k)=fstparit(9,k)+msz
401 fstparit(10,k)=fstparit(10,k) +
402 . ( xx4*(fsnx+fstx) +
405 fstparit(11,k)=fstparit(11,k) +
406 . ( xx5*(fsnx+fstx) +
409 fstparit(12,k)=fstparit(12,k) +
410 . ( xx6*(fsnx+fstx) +
417 ELSE IF(isolnod==16)
THEN
425 IF(mod(ipack/power2(i1),2)/=0)
THEN
430 n = ixs16(i1-8,nstrf(1,j)-numels8-numels10-numels20)
439 fn=fsx*xxn+fsy*yyn+fsz*zzn
451 msx =dy1(k)*fz1(k)-dz1(k)*fy1(k)
452 msy =dz1(k)*fx1(k)-dx1(k)*fz1(k)
453 msz =dx1(k)*fy1(k)-dy1(k)*fx1(k)
455 dmx =msx*xx4+msy*yy4+msz*zz4
456 dmy =msx*xx5+msy*yy5+msz*zz5
457 dmz =msx*xx6+msy*yy6+msz*zz6
468 fst(10) = fst(10) + fsx
469 fst(11) = fst(11) + fsy
470 fst(12) = fst(12) + fsz
471 fst(13) = fst(13) + msx
472 fst(14) = fst(14) + msy
473 fst(15) = fst(15) + msz
475 . +fx1(k)*v(1,n)+fy1(k)*v(2,n)+fz1(k)*v(3,n)
486 IF(mod(ipack/power2(i1),2)/=0)
THEN
491 n = ixs16(i1-8,nstrf(1,j)-numels8-numels10-numels20)
500 fn=fsx*xxn+fsy*yyn+fsz*zzn
512 msx =dy1(k)*fz1(k)-dz1(k)*fy1(k)
513 msy =dz1(k)*fx1(k)-dx1(k)*fz1(k)
514 msz =dx1(k)*fy1(k)-dy1(k)*fx1(k)
516 dmx =msx*xx4+msy*yy4+msz*zz4
517 dmy =msx*xx5+msy*yy5+msz*zz5
518 dmz =msx*xx6+msy*yy6+msz*zz6
529 fst(10) = fst(10) + fsx
530 fst(11) = fst(11) + fsy
531 fst(12) = fst(12) + fsz
532 fst(13) = fst(13) + msx
533 fst(14) = fst(14) + msy
534 fst(15) = fst(15) + msz
536 . +fx1(k)*v(1,n)+fy1(k)*v(2,n)+fz1(k)*v(3,n)
538 fstparit(1,k)=fstparit(1,k)+fsnx
539 fstparit(2,k)=fstparit(2,k)+fsny
540 fstparit(3,k)=fstparit(3,k)+fsnz
541 fstparit(4,k)=fstparit(4,k)+fstx
542 fstparit(5,k)=fstparit(5,k)+fsty
543 fstparit(6,k)=fstparit(6,k)+fstz
544 fstparit(7,k)=fstparit(7,k)+msx
545 fstparit(8,k)=fstparit(8,k)+msy
546 fstparit(9,k)=fstparit(9,k)+msz
547 fstparit(10,k)=fstparit(10,k) +
548 . ( xx4*(fsnx+fstx) +
551 fstparit(11,k)=fstparit(11,k) +
552 . ( xx5*(fsnx+fstx) +
555 fstparit(12,k)=fstparit(12,k) +
556 . ( xx6*(fsnx+fstx) +
565 fsav(1)=fsav(1)+dt12*fst(1)
566 fsav(2)=fsav(2)+dt12*fst(2)
567 fsav(3)=fsav(3)+dt12*fst(3)
568 fsav(4)=fsav(4)+dt12*fst(4)
569 fsav(5)=fsav(5)+dt12*fst(5)
570 fsav(6)=fsav(6)+dt12*fst(6)
571 fsav(7)=fsav(7)+dt12*fst(7)
572 fsav(8)=fsav(8)+dt12*fst(8)
573 fsav(9)=fsav(9)+dt12*fst(9)
574 fsav(10)=fsav(10)+dt12*fst(16)
575 fsav(31)=fsav(31)+dt12*fst(13)
576 fsav(32)=fsav(32)+dt12*fst(14)
577 fsav(33)=fsav(33)+dt12*fst(15)
578 fsav(34)=fsav(34) + dt12* (xx4*(fst(1)+fst(4)) +
579 . yy4*(fst(2)+fst(5)) + zz4*(fst(3)+fst(6)))
580 fsav(35)=fsav(35) + dt12* (xx5*(fst(1)+fst(4)) +
581 . yy5*(fst(2)+fst(5)) + zz5*(fst(3)+fst(6)))
582 fsav(36)=fsav(36) + dt12* (xx6*(fst(1)+fst(4)) +
583 . yy6*(fst(2)+fst(5)) + zz6*(fst(3)+fst(6)))
587 fopta(1) = fopta(1) + fst(10)
588 fopta(2) = fopta(2) + fst(11)
589 fopta(3) = fopta(3) + fst(12)
590 fopta(4) = fopta(4) + fst(13)
591 fopta(5) = fopta(5) + fst(14)
592 fopta(6) = fopta(6) + fst(15)
593#include "lockoff.inc"
607 ipack = mod(nstrf(2,j),256)
608 IF(unpack(ipack,i1)/=0)
THEN
609 n = ixs(i1+1,nstrf(1,j))
610 secfcum(1,n)=secfcum(1,n)-fx(i,i1)
611 secfcum(2,n)=secfcum(2,n)-fy(i,i1)
612 secfcum(3,n)=secfcum(3,n)-fz(i,i1)
623 IF(mod(ipack/power2(i1),2)/=0)
THEN
624 n = ixs20(i1-8,nstrf(1,j)-numels8-numels10)
625 secfcum(1,n)=secfcum(1,n)-fx(i,i1)
626 secfcum(2,n)=secfcum(2,n)-fy(i,i1)
627 secfcum(3,n)=secfcum(3,n)-fz(i,i1)
631 ELSE IF(isolnod==16)
THEN
638 IF(mod(ipack/power2(i1),2)/=0)
THEN
639 n = ixs16(i1-8,nstrf(1,j)-numels8-numels10-numels20)
640 secfcum(1,n)=secfcum(1,n)-fx(i,i1)
641 secfcum(2,n)=secfcum(2,n)-fy(i,i1)
642 secfcum(3,n)=secfcum(3,n)-fz(i,i1)
647#include "lockoff.inc"