35 1 X ,V ,MS ,SPBUF ,ITAB ,
36 2 KXSP ,IXSP ,NOD2SP ,ISPCOND ,ISPSYM ,
37 3 XFRAME ,XSPSYM ,VSPSYM ,IREDUCE ,
38 4 WSP2SORT ,MYSPATRUE,DMAX ,ITASK ,KREDUCE ,
48#include "implicit_f.inc"
60 INTEGER KXSP(NISP,*),IXSP(KVOISPH,*),NOD2SP(*),ITAB(NUMNOD),
61 . ISPCOND(NISPCOND,*),ISPSYM(NSPCOND,*),
62 . IREDUCE, WSP2SORT(*), ITASK, KREDUCE(*),
65 . x(3,numnod) ,v(3,numnod) ,ms(*) ,spbuf(nspbuf,*) ,
67 . xspsym(3,*) ,vspsym(3,*),
68 . myspatrue, dmax, myspatrue2, gauge(llgauge,nbgauge)
72 INTEGER K,N,INOD,JNOD,J,NVOIS,M,SM,JS,I
79 . xi,yi,zi,di,rhoi,xj,yj,zj
80 . vxi,vyi,vzi,vxj,vyj,vzj,
82 . xs,ys,zs,vxs,vys,vzs,vn,dd,dm,dk,dl,
83 . xisort,yisort,zisort,disort,
84 . xjsort,yjsort,zjsort,djsort,
85 . spalinr, dvois(nsphsym+kvoisph+1)
88 spalinr=sqrt(one + myspatrue)
91 myspatrue2 = myspatrue
104 nx=xframe(3*(ic-1)+1,is)
105 ny=xframe(3*(ic-1)+2,is)
106 nz=xframe(3*(ic-1)+3,is)
107 DO ns=1+itask,nsp2sort,nthread
116 dd=(xi-ox)*nx+(yi-oy)*ny+(zi-oz)*nz
117 IF (ispsym(nc,n)/=-1)
THEN
118 nsphsym_l = ispsym(nc,n)
127 vn=vxi*nx+vyi*ny+vzi*nz
132 xspsym(1,nsphsym_l)= xs
133 xspsym(2,nsphsym_l)= ys
134 xspsym(3,nsphsym_l)= zs
135 vspsym(1,nsphsym_l)=vxs
137 vspsym(3,nsphsym_l)=vzs
143 DO ns = itask+1,
nsphr,nthread
150 dd=(xi-ox)*nx+(yi-oy)*ny+(zi-oz)*nz
161 vn=vxi*nx+vyi*ny+vzi*nz
166 xspsym(1,nsphsym_l)= xs
167 xspsym(2,nsphsym_l)= ys
168 xspsym(3,nsphsym_l)= zs
169 vspsym(1,nsphsym_l)=vxs
170 vspsym(2,nsphsym_l)=vys
171 vspsym(3,nsphsym_l)=vzs
186 DO ns=itask+1,nsp2sort,nthread
205 dd=(xi-xj)*(xi-xj)+(yi-yj)*(yi-yj)+(zi-zj)*(zi-zj)
206 IF(dd<=(one+myspatrue2)*dij)
THEN
209 jvois(nvois2+nvoiss)=nc+n*(nspcond+1)
210 dvois(nvois2+nvoiss)=dd/dij
229 dd=(xi-xj)*(xi-xj)+(yi-yj)*(yi-yj)+(zi-zj)*(zi-zj)
230 IF(dd<=(one+myspatrue2)*dij)
THEN
233 jvois(nvois2+nvoiss)=nc+m*(nspcond+1)
234 dvois(nvois2+nvoiss)=dd/dij
250 dd=(xi-xj)*(xi-xj)+(yi-yj)*(yi-yj)+(zi-zj)*(zi-zj)
251 IF(dd<=(one+myspatrue2)*dij)
THEN
254 jvois(nvois2+nvoiss)=-nc-nn*(nspcond+1)
258 dvois(nvois2+nvoiss)=dd/dij
266 IF(nvois2+nvoiss<=kvoisph)
THEN
272 DO k=nvois2+1,nvois2+nvoiss
277 ixsp(nvois2+nvoiss1,n)=jk
279 ixsp(nvois2+nvoiss2,n)=jk
301 dd=(xi-xj)*(xi-xj)+(yi-yj)*(yi-yj)+(zi-zj)*(zi-zj)
303 jvois(j)=m*(nspcond+1)
312 dd=(xi-xj)*(xi-xj)+(yi-yj)*(yi-yj)+(zi-zj)*(zi-zj)
314 jvois(j)=-nn*(nspcond+1)
318 CALL myqsort(nvois2+nvoiss,dvois,jperm,ierror)
323 jvois(k)=jstor(jperm(k))
344 IF(nc==0.AND.dk<one)
THEN
346 ixsp(nvois1,n)=kxsp(3,jk/(nspcond+1))
351 IF(nc==0.AND.dk<one)
THEN
353 ixsp(nvois1,n)=-jk/(nspcond+1)
365 IF(nc==0.AND.dk>=one)
THEN
367 ixsp(nvois2,n)=kxsp(3,jk/(nspcond+1))
372 IF(nc==0.AND.dk>=one)
THEN
374 ixsp(nvois2,n)=-jk/(nspcond+1)
387 IF(nc/=0.AND.dk<one)
THEN
389 ixsp(nvois2+nvoiss1,n)=jk
394 IF(nc/=0.AND.dk<one)
THEN
396 ixsp(nvois2+nvoiss1,n)=-jk
408 IF(nc/=0.AND.dk>=one)
THEN
410 ixsp(nvois2+nvoiss2,n)=jk
415 IF(nc/=0.AND.dk>=one)
THEN
417 ixsp(nvois2+nvoiss2,n)=-jk
425 IF(nvois1+nvoiss1 > lvoisph)ireduce=1
434 IF(lgauge(1,ig) <= -(numels+1))
THEN
457 dd=(xi-xj)*(xi-xj)+(yi-yj)*(yi-yj)+(zi-zj)*(zi-zj)
458 IF(dd<=(one+myspatrue2)*dij)
THEN
461 jvois(nvois2+nvoiss)=nc+m*(nspcond+1)
462 dvois(nvois2+nvoiss)=dd/dij
478 dd=(xi-xj)*(xi-xj)+(yi-yj)*(yi-yj)+(zi-zj)*(zi-zj)
479 IF(dd<=(one+myspatrue2)*dij)
THEN
482 jvois(nvois2+nvoiss)=-nc-nn*(nspcond+1)
486 dvois(nvois2+nvoiss)=dd/dij
494 IF(nvois2+nvoiss<=kvoisph)
THEN
500 DO k=nvois2+1,nvois2+nvoiss
505 ixsp(nvois2+nvoiss1,n)=jk
507 ixsp(nvois2+nvoiss2,n)=jk
525 dd=(xi-xj)*(xi-xj)+(yi-yj)*
527 jvois(j)=m*(nspcond+1)
536 dd=(xi-xj)*(xi-xj)+(yi-yj)*(yi-yj)+(zi-zj)*(zi-zj)
538 jvois(j)=-nn*(nspcond+1)
542 CALL myqsort(nvois2+nvoiss,dvois,jperm
547 jvois(k)=jstor(jperm(k))
568 IF(nc==0.AND.dk<one)
THEN
570 ixsp(nvois1,n)=kxsp(3,jk/(nspcond+1))
575 IF(nc==0.AND.dk<one)
THEN
577 ixsp(nvois1,n)=-jk/(nspcond+1)
589 IF(nc==0.AND.dk>=one)
THEN
591 ixsp(nvois2,n)=kxsp(3,jk/(nspcond+1))
596 IF(nc==0.AND.dk>=one)
THEN
598 ixsp(nvois2,n)=-jk/(nspcond+1)
611 IF(nc/=0.AND.dk<one)
THEN
613 ixsp(nvois2+nvoiss1,n)=jk
618 IF(nc/=0.AND.dk<one)
THEN
620 ixsp(nvois2+nvoiss1,n)=-jk
632 IF(nc/=0.AND.dk>=one)
THEN
634 ixsp(nvois2+nvoiss2,n)=jk
639 IF(nc/=0.AND.dk>=one)
THEN
641 ixsp(nvois2+nvoiss2,n)=-jk