35 2 N2,N3,NSTRF,X,V,FSAV,
36 3 IXS,FOPTA,SECFCUM,FX,FY,
37 4 FZ,TYPE,NSINT,IFRAM,NNOD,NOD,MS,
38 6 IXS10,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(*),
64 my_real X(3,*), FSAV(NTHVKI), FOPTA(6), SECFCUM(7,*),XSEC(4,3),
65 . fx(mvsiz,10), fy(mvsiz,10), fz(mvsiz,10), v(3,*) ,ms(*)
66 DOUBLE PRECISION FBSAV6(12,6)
70 INTEGER JJJ(MVSIZ), UNPACK(0:511,10),
71 . nsa, j, i, k, i1, ipack, n,power2(14),iperm(4),ii
73 . fx1(mvsiz), fy1(mvsiz), fz1(mvsiz),
74 . dx1(mvsiz),dy1(mvsiz), dz1(mvsiz),fst(16),
76 . xx4, yy4, zz4, xx5, yy5, zz5, xx6, yy6, zz6, xxn, yyn, zzn,
77 . xxc, yyc, zzc, fsx, fsy, fsz, fn, fsnx, fsny, fsnz, fstx,
78 . fsty, fstz, dmx, dmy, dmz
79 DATA power2/1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192/
81 my_real,
DIMENSION(:,:),
ALLOCATABLE :: fstparit
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
109 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)
138 IF(unpack(ipack,i1)/=0)
THEN
143 n = ixs(i1+1,nstrf(1,j))
152 fn=fsx*xxn+fsy*yyn+fsz*zzn
164 msx =dy1(k)*fz1(k)-dz1(k)*fy1(k)
165 msy =dz1(k)*fx1(k)-dx1(k)*fz1(k)
166 msz =dx1(k)*fy1(k)-dy1(k)*fx1(k)
168 dmx =msx*xx4+msy*yy4+msz*zz4
169 dmy =msx*xx5+msy*yy5+msz*zz5
170 dmz =msx*xx6+msy*yy6+msz*zz6
181 fst(10) = fst(10) + fsx
182 fst(11) = fst(11) + fsy
183 fst(12) = fst(12) + fsz
184 fst(13) = fst(13) + msx
185 fst(14) = fst(14) + msy
186 fst(15) = fst(15) + msz
188 . +fx1(k)*v(1,n)+fy1(k)*v(2,n)+fz1(k)*v(3,n)
197 ipack = mod(nstrf(2,j),256)
200 IF(unpack(ipack,i1)/=0)
THEN
205 n = ixs(i1+1,nstrf(1,j))
214 fn=fsx*xxn+fsy*yyn+fsz*zzn
226 msx =dy1(k)*fz1(k)-dz1(k)*fy1(k)
227 msy =dz1(k)*fx1(k)-dx1(k)*fz1(k)
228 msz =dx1(k)*fy1(k)-dy1(k)*fx1(k)
230 dmx =msx*xx4+msy*yy4+msz*zz4
231 dmy =msx*xx5+msy*yy5+msz*zz5
232 dmz =msx*xx6+msy*yy6+msz*zz6
243 fst(10) = fst(10) + fsx
244 fst(11) = fst(11) + fsy
245 fst(12) = fst(12) + fsz
246 fst(13) = fst(13) + msx
247 fst(14) = fst(14) + msy
248 fst(15) = fst(15) + msz
250 . +fx1(k)*v(1,n)+fy1(k)*v(2,n)+fz1(k)*v(3,n)
252 fstparit(1,k)=fstparit(1,k)+fsnx
253 fstparit(2,k)=fstparit(2,k)+fsny
254 fstparit(3,k)=fstparit(3,k)+fsnz
255 fstparit(4,k)=fstparit(4,k)+fstx
256 fstparit(5,k)=fstparit(5,k)+fsty
257 fstparit(6,k)=fstparit(6,k)+fstz
258 fstparit(7,k)=fstparit(7,k)+msx
259 fstparit(8,k)=fstparit(8,k)+msy
260 fstparit(9,k)=fstparit(9,k)+msz
261 fstparit(10,k)=fstparit(10,k) +
262 . ( xx4*(fsnx+fstx) +
265 fstparit(11,k)=fstparit(11,k) +
266 . ( xx5*(fsnx+fstx) +
269 fstparit(12,k)=fstparit(12,k) +
270 . ( xx6*(fsnx+fstx) +
286 IF(mod(ipack/power2(i1),2)/=0)
THEN
291 n = ixs10(i1-8,nstrf(1,j)-numels8)
300 fn=fsx*xxn+fsy*yyn+fsz*zzn
312 msx =dy1(k)*fz1(k)-dz1(k)*fy1(k)
313 msy =dz1(k)*fx1(k)-dx1(k)*fz1(k)
314 msz =dx1(k)*fy1(k)-dy1(k)*fx1(k)
316 dmx =msx*xx4+msy*yy4+msz*zz4
317 dmy =msx*xx5+msy*yy5+msz*zz5
318 dmz =msx*xx6+msy*yy6+msz*zz6
329 fst(10) = fst(10) + fsx
330 fst(11) = fst(11) + fsy
331 fst(12) = fst(12) + fsz
332 fst(13) = fst(13) + msx
333 fst(14) = fst(14) + msy
334 fst(15) = fst(15) + msz
336 . +fx1(k)*v(1,n)+fy1(k)*v(2,n)+fz1(k)*v(3,n)
348 IF(mod(ipack/power2(i1),2)/=0)
THEN
353 n = ixs10(i1-8,nstrf(1,j)-numels8)
362 fn=fsx*xxn+fsy*yyn+fsz*zzn
374 msx =dy1(k)*fz1(k)-dz1(k)*fy1(k)
375 msy =dz1(k)*fx1(k)-dx1(k)*fz1(k)
376 msz =dx1(k)*fy1(k)-dy1(k)*fx1(k)
378 dmx =msx*xx4+msy*yy4+msz*zz4
379 dmy =msx*xx5+msy*yy5+msz*zz5
380 dmz =msx*xx6+msy*yy6+msz*zz6
391 fst(10) = fst(10) + fsx
392 fst(11) = fst(11) + fsy
393 fst(12) = fst(12) + fsz
394 fst(13) = fst(13) + msx
395 fst(14) = fst(14) + msy
396 fst(15) = fst(15) + msz
398 . +fx1(k)*v(1,n)+fy1(k)*v(2,n)+fz1(k)*v(3,n)
400 fstparit(1,k)=fstparit(1,k)+fsnx
401 fstparit(2,k)=fstparit(2,k)+fsny
402 fstparit(3,k)=fstparit(3,k)+fsnz
403 fstparit(4,k)=fstparit(4,k)+fstx
404 fstparit(5,k)=fstparit(5,k)+fsty
405 fstparit(6,k)=fstparit(6,k)+fstz
406 fstparit(7,k)=fstparit(7,k)+msx
407 fstparit(8,k)=fstparit(8,k)+msy
408 fstparit(9,k)=fstparit(9,k)+msz
409 fstparit(10,k)=fstparit(10,k) +
410 . ( xx4*(fsnx+fstx) +
413 fstparit(11,k)=fstparit(11,k) +
414 . ( xx5*(fsnx+fstx) +
417 fstparit(12,k)=fstparit(12,k) +
418 . ( xx6*(fsnx+fstx) +
428 fsav(1)=fsav(1)+dt12*fst(1)
429 fsav(2)=fsav(2)+dt12*fst(2)
430 fsav(3)=fsav(3)+dt12*fst(3)
431 fsav(4)=fsav(4)+dt12*fst(4)
432 fsav(5)=fsav(5)+dt12*fst(5)
433 fsav(6)=fsav(6)+dt12*fst(6)
434 fsav(7)=fsav(7)+dt12*fst(7)
435 fsav(8)=fsav(8)+dt12*fst(8)
436 fsav(9)=fsav(9)+dt12*fst(9)
437 fsav(10)=fsav(10)+dt12*fst(16)
438 fsav(31)=fsav(31)+dt12*fst(13)
439 fsav(32)=fsav(32)+dt12*fst(14)
440 fsav(33)=fsav(33)+dt12*fst(15)
441 fsav(34)=fsav(34) + dt12* (xx4*(fst(1)+fst(4)) +
442 . yy4*(fst(2)+fst(5)) + zz4*(fst(3)+fst(6)))
443 fsav(35)=fsav(35) + dt12* (xx5*(fst(1)+fst(4)) +
444 . yy5*(fst(2)+fst(5)) + zz5*(fst(3)+fst(6)))
445 fsav(36)=fsav(36) + dt12* (xx6*(fst(1)+fst(4)) +
446 . yy6*(fst(2)+fst(5)) + zz6*(fst(3)+fst(6)))
450 fopta(1) = fopta(1) + fst(10)
451 fopta(2) = fopta(2) + fst(11)
452 fopta(3) = fopta(3) + fst(12)
453 fopta(4) = fopta(4) + fst(13)
454 fopta(5) = fopta(5) + fst(14)
455 fopta(6) = fopta(6) + fst(15)
456#include "lockoff.inc"
471 ipack = mod(nstrf(2,j),256)
472 IF(unpack(ipack,i1)/=0)
THEN
473 n = ixs(i1+1,nstrf(1,j))
474 secfcum(1,n)=secfcum(1,n)- fx(i,ii)
475 secfcum(2,n)=secfcum(2,n)- fy(i,ii)
476 secfcum(3,n)=secfcum(3,n)- fz(i,ii)
487 IF(mod(ipack/power2(i1),2)/=0)
THEN
488 n = ixs10(i1-8,nstrf(1,j)-numels8)
489 secfcum(1,n)=secfcum(1,n)- fx(i,ii)
490 secfcum(2,n)=secfcum(2,n)- fy(i,ii)
491 secfcum(3,n)=secfcum(3,n)- fz(i,ii)
496#include
"lockoff.inc"