32
33
34
35#include "implicit_f.inc"
36
37
38
39#include "com01_c.inc"
40#include "sphcom.inc"
41#include "task_c.inc"
42
43
44
45 INTEGER NESPH, KXSP(NISP,*),SNNSPHG,NNSPH
47 . x(3,*),spbuf(nspbuf,*)
48
49
50
51 INTEGER N, J, INOD,CNT,BUF
53 3 xi,yi,zi,r,
54 4 xq(3),fact
55 REAL R4,(3*NNSPH)
56
57 IF (numsph+maxpjet==0) GOTO 100
58
59 cnt = 0
60 fact =(three/(four*sqrt(two)))**third
61 DO 200 n=1,numsph+maxpjet
62 inod=kxsp(3,n)
63 xi =x(1,inod)
64 yi =x(2,inod)
65 zi =x(3,inod)
66 r = spbuf(1,n)*fact
67 xq(1) =xi+r
68 xq(2) =yi-r
69 xq(3) =zi-r
70
71
72
73 IF (nspmd == 1) THEN
74 DO j=1,3
75 r4 = xq(j)
77 ENDDO
78 ELSE
79 cnt = cnt + 1
80 r4np(cnt) = xq(1)
81 cnt = cnt + 1
82 r4np(cnt) = xq(2)
83 cnt = cnt + 1
84 r4np(cnt) = xq(3)
85 ENDIF
86 xq(1) =xi-r
87 xq(2) =yi+r
88 xq(3) =zi-r
89
90
91
92 IF (nspmd == 1) THEN
93 DO j=1,3
94 r4 = xq(j)
96 ENDDO
97 ELSE
98 cnt = cnt + 1
99 r4np(cnt) = xq(1)
100 cnt = cnt + 1
101 r4np(cnt) = xq(2)
102 cnt = cnt + 1
103 r4np(cnt) = xq(3)
104 ENDIF
105 xq(1) =xi-r
106 xq(2) =yi-r
107 xq(3) =zi+r
108
109
110
111 IF (nspmd == 1) THEN
112 DO j=1,3
113 r4 = xq(j)
115 ENDDO
116 ELSE
117 cnt = cnt + 1
118 r4np(cnt) = xq(1)
119 cnt = cnt + 1
120 r4np(cnt) = xq(2)
121 cnt = cnt + 1
122 r4np(cnt) = xq(3)
123 ENDIF
124 xq(1) =xi+r
125 xq(2) =yi+r
126 xq(3) =zi+r
127
128
129
130 IF (nspmd == 1) THEN
131 DO j=1,3
132 r4 = xq(j)
134 ENDDO
135 ELSE
136 cnt = cnt + 1
137 r4np(cnt) = xq(1)
138 cnt = cnt + 1
139 r4np(cnt) = xq(2)
140 cnt = cnt + 1
141 r4np(cnt) = xq(3)
142 ENDIF
143 200 CONTINUE
144 100 CONTINUE
145
146 IF (nspmd > 1) THEN
147 IF (ispmd==0) THEN
148 buf = 3*snnsphg
149 ELSE
150 buf=1
151 ENDIF
153 ENDIF
154
155 RETURN
subroutine spmd_gather_sph(v, tv, num)
void write_r_c(float *w, int *len)