33 2 N2,N3,NSTRF,X,V,FSAV,
34 3 IXS,FOPTA,SECFCUM,FX,FY,FZ,
35 4 TYPE,NSINT,IFRAM,NNOD,NOD,MS,
36 6 IXS20,IXS16,ISOLNOD,XSEC,FBSAV6,
41#include "implicit_f.inc"
57 INTEGER LFT, LLT, NFT, NSEG, N1, N2, N3,
TYPE,NSINT
58 INTEGER NSTRF(2,*),IXS(NIXS,*),IFRAM,NNOD,NOD(*),IXS20(12,*),IXS16(8,*),ISOLNOD
60 my_real X(3,*), FSAV(NTHVKI), FOPTA(6), SECFCUM(7,*),
61 . FX(MVSIZ,20), FY(MVSIZ,20), FZ(MVSIZ,20), V(3,*) ,MS(*),XSEC(4,3)
62 DOUBLE PRECISION FBSAV6(12,6)
66 INTEGER (MVSIZ), UNPACK(0:511,10), NSA, J, I, K, I1, I2, IPACK, N,POWER2(20), JJ
67 my_real fx1(mvsiz), fy1(mvsiz), fz1(mvsiz),
68 . dx1(mvsiz),dy1(mvsiz), dz1(mvsiz),fst(16),
69 . msx, msy, msz, xx1, yy1, zz1, xx2, yy2, zz2, xx3, yy3, zz3,
70 . xx4, yy4, zz4, xx5, yy5, zz5, xx6, yy6, zz6, xxn, yyn, zzn,
71 . d13, xxc, yyc, zzc, fsx, fsy, fsz, fn, fsnx, fsny, fsnz, fstx,
72 . fsty, fstz, dmx, dmy, dmz
73 my_real msxphi, msyphi, mszphi, fsxphi,
74 . fsyphi, fszphi, fnphi, fsnxphi, fsnyphi, fsnzphi, fstxphi,
75 . fstyphi, fstzphi, dmxphi, dmyphi, dmzphi
76 my_real xx1phi,xx3phi,xx4phi,xx5phi,xx6phi
77 my_real yy1phi,yy3phi,yy4phi,yy5phi,yy6phi
78 my_real zz1phi,zz3phi,zz4phi,zz5phi,zz6phi
79 my_real al4phi,al5phi,al6phi,xx5t,yy5t,zz5t
81 my_real,
DIMENSION(:,:),
ALLOCATABLE :: fstparit
82 DATA power2/1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768,65536,131072,262144,524288/
85 IF(lft+nft>nstrf(1,nseg))
RETURN
86 IF(llt+nft<nstrf(1,1 ))
RETURN
92 unpack(j,i)=mod(j/power2(i),2)
106 IF(type+nsint==0)
THEN
113 ALLOCATE(fstparit(12,nsa))
123 2 xx4, yy4, zz4, xx5, yy5, zz5, xx6, yy6, zz6,
124 3 xxn, yyn, zzn,ifram,nnod,nod,ms)
127 2 xx5, yy5, zz5, xx6 , yy6, zz6 ,
128 3 xxn, yyn, zzn, ifram, n1 , xsec)
135 ipack = mod(nstrf(2,j),256)
137 IF(unpack(ipack,i1)/=0)
THEN
142 n = ixs(i1+1,nstrf(1,j))
163 msx =dy1(k)*fz1(k)-dz1(k)*fy1(k)
164 msy =dz1(k)*fx1(k)-dx1(k)*fz1(k)
165 msz =dx1(k)*fy1(k)-dy1(k)*fx1(k)
167 dmx =msx*xx4+msy*yy4+msz*zz4
168 dmy =msx*xx5+msy*yy5+msz*zz5
169 dmz =msx*xx6+msy*yy6+msz*zz6
180 fst(10) = fst(10) + fsx
181 fst(11) = fst(11) + fsy
182 fst(12) = fst(12) + fsz
183 fst(13) = fst(13) + msx
184 fst(14) = fst(14) + msy
185 fst(15) = fst(15) + msz
187 . +fx1(k)*v(1,n)+fy1(k)*v(2,n)+fz1(k)*v(3,n)
196 ipack = mod(nstrf(2,j),256)
198 IF(unpack(ipack,i1)/=0)
THEN
203 n = ixs(i1+1,nstrf(1,j))
212 fn=fsx*xxn+fsy*yyn+fsz*zzn
224 msx =dy1(k)*fz1(k)-dz1(k)*fy1(k)
225 msy =dz1(k)*fx1(k)-dx1(k)*fz1(k)
226 msz =dx1(k)*fy1(k)-dy1(k)*fx1(k)
228 dmx =msx*xx4+msy*yy4+msz*zz4
229 dmy =msx*xx5+msy*yy5+msz*zz5
230 dmz =msx*xx6+msy*yy6+msz*zz6
241 fst(10) = fst(10) + fsx
242 fst(11) = fst(11) + fsy
243 fst(12) = fst(12) + fsz
244 fst(13) = fst(13) + msx
245 fst(14) = fst(14) + msy
246 fst(15) = fst(15) + msz
248 . +fx1(k)*v(1,n)+fy1(k)*v(2,n)+fz1(k)*v(3,n)
250 fstparit(1,k)=fstparit(1,k)+fsnx
251 fstparit(2,k)=fstparit(2,k)+fsny
252 fstparit(3,k)=fstparit(3,k)+fsnz
253 fstparit(4,k)=fstparit(4,k)+fstx
254 fstparit(5,k)=fstparit(5,k)+fsty
255 fstparit(6,k)=fstparit(6,k)+fstz
256 fstparit(7,k)=fstparit(7,k)+msx
257 fstparit(8,k)=fstparit(8,k)+msy
258 fstparit(9,k)=fstparit(9,k)+msz
259 fstparit(10,k)=fstparit(10,k) +
260 . ( xx4*(fsnx+fstx) +
263 fstparit(11,k)=fstparit(11,k) +
264 . ( xx5*(fsnx+fstx) +
267 fstparit(12,k)=fstparit(12,k) +
268 . ( xx6*(fsnx+fstx) +
284 IF(mod(ipack/power2(i1),2)/=0)
THEN
289 n = ixs20(i1-8,nstrf(1,j)-numels8-numels10)
298 fn=fsx*xxn+fsy*yyn+fsz*zzn
310 msx =dy1(k)*fz1(k)-dz1(k)*fy1(k)
311 msy =dz1(k)*fx1(k)-dx1(k)*fz1(k)
312 msz =dx1(k)*fy1(k)-dy1(k)*fx1(k)
314 dmx =msx*xx4+msy*yy4+msz*zz4
315 dmy =msx*xx5+msy*yy5+msz*zz5
316 dmz =msx*xx6+msy*yy6+msz*zz6
327 fst(10) = fst(10) + fsx
329 fst(12) = fst(12) + fsz
330 fst(13) = fst(13) + msx
331 fst(14) = fst(14) + msy
332 fst(15) = fst(15) + msz
334 . +fx1(k)*v(1,n)+fy1(k)*v(2,n)+fz1(k)*v(3,n)
345 IF(mod(ipack/power2(i1),2)/=0)
THEN
350 n = ixs20(i1-8,nstrf(1,j)-numels8-numels10)
359 fn=fsx*xxn+fsy*yyn+fsz*zzn
371 msx =dy1(k)*fz1(k)-dz1(k)*fy1(k)
372 msy =dz1(k)*fx1(k)-dx1(k)*fz1(k)
373 msz =dx1(k)*fy1(k)-dy1(k)*fx1(k)
375 dmx =msx*xx4+msy*yy4+msz*zz4
376 dmy =msx*xx5+msy*yy5+msz*zz5
377 dmz =msx*xx6+msy*yy6+msz*zz6
388 fst(10) = fst(10) + fsx
389 fst(11) = fst(11) + fsy
390 fst(12) = fst(12) + fsz
391 fst(13) = fst(13) + msx
392 fst(14) = fst(14) + msy
393 fst(15) = fst(15) + msz
395 . +fx1(k)*v(1,n)+fy1(k)*v(2,n)+fz1(k)*v(3,n)
397 fstparit(1,k)=fstparit(1,k)+fsnx
398 fstparit(2,k)=fstparit(2,k)+fsny
399 fstparit(3,k)=fstparit(3,k)+fsnz
400 fstparit(4,k)=fstparit(4,k)+fstx
401 fstparit(5,k)=fstparit(5,k)+fsty
402 fstparit(6,k)=fstparit(6,k)+fstz
403 fstparit(7,k)=fstparit(7,k)+msx
404 fstparit(8,k)=fstparit(8,k)+msy
405 fstparit(9,k)=fstparit(9,k)+msz
406 fstparit(10,k)=fstparit(10,k) +
407 . ( xx4*(fsnx+fstx) +
410 fstparit(11,k)=fstparit(11,k) +
411 . ( xx5*(fsnx+fstx) +
414 fstparit(12,k)=fstparit(12,k) +
415 . ( xx6*(fsnx+fstx) +
422 ELSE IF(isolnod==16)
THEN
430 IF(mod(ipack/power2(i1),2)/=0)
THEN
435 n = ixs16(i1-8,nstrf(1,j)-numels8-numels10-numels20)
444 fn=fsx*xxn+fsy*yyn+fsz*zzn
456 msx =dy1(k)*fz1(k)-dz1(k)*fy1(k)
457 msy =dz1(k)*fx1(k)-dx1(k)*fz1(k)
458 msz =dx1(k)*fy1(k)-dy1(k)*fx1(k)
460 dmx =msx*xx4+msy*yy4+msz*zz4
461 dmy =msx*xx5+msy*yy5+msz*zz5
462 dmz =msx*xx6+msy*yy6+msz*zz6
473 fst(10) = fst(10) + fsx
474 fst(11) = fst(11) + fsy
475 fst(12) = fst(12) + fsz
476 fst(13) = fst(13) + msx
477 fst(14) = fst(14) + msy
480 . +fx1(k)*v(1,n)+fy1(k)*v(2,n)+fz1
491 IF(mod(ipack/power2(i1),2)/=0)
THEN
496 n = ixs16(i1-8,nstrf(1,j)-numels8-numels10-numels20)
505 fn=fsx*xxn+fsy*yyn+fsz*zzn
517 msx =dy1(k)*fz1(k)-dz1(k)*fy1(k)
518 msy =dz1(k)*fx1(k)-dx1(k)*fz1(k)
519 msz =dx1(k)*fy1(k)-dy1(k)*fx1(k)
521 dmx =msx*xx4+msy*yy4+msz*zz4
522 dmy =msx*xx5+msy*yy5+msz*zz5
523 dmz =msx*xx6+msy*yy6+msz*zz6
534 fst(10) = fst(10) + fsx
535 fst(11) = fst(11) + fsy
536 fst(12) = fst(12) + fsz
537 fst(13) = fst(13) + msx
538 fst(14) = fst(14) + msy
539 fst(15) = fst(15) + msz
541 . +fx1(k)*v(1,n)+fy1(k)*v(2,n)+fz1(k)*v(3,n)
543 fstparit(1,k)=fstparit(1,k)+fsnx
544 fstparit(2,k)=fstparit(2,k)+fsny
545 fstparit(3,k)=fstparit(3,k)+fsnz
546 fstparit(4,k)=fstparit(4,k)+fstx
547 fstparit(5,k)=fstparit(5,k)+fsty
548 fstparit(6,k)=fstparit(6,k)+fstz
549 fstparit(7,k)=fstparit(7,k)+msx
550 fstparit(8,k)=fstparit(8,k)+msy
551 fstparit(9,k)=fstparit(9,k)+msz
552 fstparit(10,k)=fstparit(10,k) +
553 . ( xx4*(fsnx+fstx) +
556 fstparit(11,k)=fstparit(11,k) +
557 . ( xx5*(fsnx+fstx) +
560 fstparit(12,k)=fstparit(12,k) +
561 . ( xx6*(fsnx+fstx) +
570 fsav(1)=fsav(1)+dt12*fst(1)
571 fsav(2)=fsav(2)+dt12*fst(2)
572 fsav(3)=fsav(3)+dt12*fst(3)
573 fsav(4)=fsav(4)+dt12*fst(4)
574 fsav(5)=fsav(5)+dt12*fst(5)
575 fsav(6)=fsav(6)+dt12*fst(6)
576 fsav(7)=fsav(7)+dt12*fst(7)
577 fsav(8)=fsav(8)+dt12*fst(8)
578 fsav(9)=fsav(9)+dt12*fst(9)
579 fsav(10)=fsav(10)+dt12*fst(16)
580 fsav(31)=fsav(31)+dt12*fst(13)
581 fsav(32)=fsav(32)+dt12*fst(14)
582 fsav(33)=fsav(33)+dt12*fst(15)
583 fsav(34)=fsav(34) + dt12* (xx4*(fst(1)+fst(4)) +
584 . yy4*(fst(2)+fst(5)) + zz4*(fst(3)+fst(6)))
585 fsav(35)=fsav(35) + dt12* (xx5*(fst(1)+fst(4)) +
586 . yy5*(fst(2)+fst(5)) + zz5*(fst(3)+fst(6)))
587 fsav(36)=fsav(36) + dt12* (xx6*(fst(1)+fst(4)) +
588 . yy6*(fst(2)+fst(5)) + zz6*(fst(3)+fst(6)))
592 fopta(1) = fopta(1) + fst(10)
593 fopta(2) = fopta(2) + fst(11)
594 fopta(3) = fopta(3) + fst(12)
595 fopta(4) = fopta(4) + fst(13)
596 fopta(5) = fopta(5) + fst(14)
597 fopta(6) = fopta(6) + fst(15)
598#include "lockoff.inc"
612 ipack = mod(nstrf(2,j),256)
613 IF(unpack(ipack,i1)/=0)
THEN
614 n = ixs(i1+1,nstrf(1,j))
615 secfcum(1,n)=secfcum(1,n)-fx(i,i1)
616 secfcum(2,n)=secfcum(2,n)-fy(i,i1)
617 secfcum(3,n)=secfcum(3,n)-fz(i,i1)
628 IF(mod(ipack/power2(i1),2)/=0)
THEN
629 n = ixs20(i1-8,nstrf(1,j)-numels8-numels10)
630 secfcum(1,n)=secfcum(1,n)-fx(i,i1)
631 secfcum(2,n)=secfcum(2,n)-fy(i,i1)
632 secfcum(3,n)=secfcum(3,n)-fz(i,i1)
636 ELSE IF(isolnod==16)
THEN
643 IF(mod(ipack/power2(i1),2)/=0)
THEN
644 n = ixs16(i1-8,nstrf(1,j)-numels8-numels10-numels20)
645 secfcum(1,n)=secfcum(1,n)-fx(i,i1)
646 secfcum(2,n)=secfcum(2,n)-fy(i,i1)
647 secfcum(3,n)=secfcum(3,n)-fz(i,i1)
652#include "lockoff.inc"