35
36
37
39
40
41
42#include "implicit_f.inc"
43
44
45
46#include "com04_c.inc"
47#include "sphcom.inc"
48#include "param_c.inc"
49#include "task_c.inc"
50
51
52
53 INTEGER KXSP(NISP,*),IXSP(KVOISPH,*),NOD2SP(*), WSP2SORT(*),
54 . IREDUCE,NSP2SORTF,NSP2SORTL,ITASK, KREDUCE(*),
55 . LGAUGE(3,*)
56 my_real x(3,*),spbuf(nspbuf,*), bminma(12), gauge(llgauge,*)
57
58
59
60 INTEGER NSN,IG
61 INTEGER N, INOD, NS
62 INTEGER MWA(15*(NUMSPH+NSPHR)), JVOIS(NUMSPH+NSPHR), JSTOR(+NSPHR), JPERM(NUMSPH+NSPHR)
64
65 nsn=0
66 DO ns=1,nsp2sort
67 n=wsp2sort(ns)
68 nsn=nsn+1
69 mwa(nsn) =n
70 kxsp(5,n)=0
71 END DO
72
73 DO ig=1,nbgauge
74 kxsp(5,numsph+ig)=0
75 END DO
76
78 nsn=nsn+1
79 mwa(nsn)=numsph+ns
80 END DO
81
82 IF (nsp2sort/=0)
CALL spbuc3(
83 1 x ,kxsp ,ixsp ,nod2sp,nsp2sort,
84 2 spbuf ,mwa ,jvois ,jstor ,jperm ,
85 3 dvois ,ireduce,bminma,
nsphr ,nsp2sortf,
86 4 nsp2sortl,itask,kreduce,lgauge ,gauge )
87
88 DO ns=nsp2sortf,nsp2sortl
89 n=wsp2sort(ns)
90 inod=kxsp(3,n)
91 spbuf(5,n)=x(1,inod)
92 spbuf(6,n)=x(2,inod)
93 spbuf(7,n)=x(3,inod)
94 spbuf(8,n)=spbuf(1,n)
95 ENDDO
96
97
98 DO n=itask+1,nbgauge,nthread
99 IF(lgauge(1,n) <= -(numels+1))THEN
100 gauge(6,n)=gauge(2,n)
101 gauge(7,n)=gauge(3,n)
102 gauge(8,n)=gauge(4,n)
103 END IF
104 END DO
105
106 RETURN
subroutine spbuc3(x, kxsp, ixsp, nod2sp, nsn, spbuf, ma, jvois, jstor, jperm, dvois, ireduce, bminma, nsnr, nsp2sortf, nsp2sortl, itask, kreduce, lgauge, gauge)