5 &(v1,v2,v3,errx,npoin,icom,ian,nplan,nb_neighb,nb_neighb_pt,
6 & list_send,nh_com,dimnhcom,buf_send,buf_recv,dimbuf,
7 & buf_send_err, buf_recv_err )
57 INTEGER,
INTENT(IN) :: NPOIN,ICOM,IAN,NPLAN,NB_NEIGHB
58 INTEGER,
INTENT(IN) :: DIMNHCOM,DIMBUF
59 INTEGER,
INTENT(IN) :: NB_NEIGHB_PT(nb_neighb)
60 INTEGER,
INTENT(IN) :: LIST_SEND(nb_neighb),NH_COM(dimnhcom,*)
62 DOUBLE PRECISION,
INTENT(INOUT) :: BUF_SEND(dimbuf,*)
63 DOUBLE PRECISION,
INTENT(INOUT) :: BUF_SEND_ERR(dimbuf,*)
64 DOUBLE PRECISION,
INTENT(INOUT) :: BUF_RECV(dimbuf,*)
65 DOUBLE PRECISION,
INTENT(INOUT) :: BUF_RECV_ERR(dimbuf,*)
66 DOUBLE PRECISION,
INTENT(INOUT) :: V1(npoin,nplan)
67 DOUBLE PRECISION,
INTENT(INOUT) :: V2(npoin,nplan)
68 DOUBLE PRECISION,
INTENT(INOUT) :: V3(npoin,nplan)
69 DOUBLE PRECISION,
INTENT(INOUT) :: ERRX(*)
73 INTEGER IKA,IL,II,I,J,K,IPA
78 DOUBLE PRECISION ERROR ,ERROR2
79 INTEGER SEND_REQ(100),RECV_REQ(100)
83 IF(ian.NE.1.AND.ian.NE.2.AND.ian.NE.3)
THEN 84 WRITE(
lu,*)
'FALSCHE FREIWERTZAHL BEI KOMMUNIKATION',ian,
85 &
' AUF PROZESSOR',
ipid 101 ika = nb_neighb_pt(il)
103 CALL p_read(buf_recv(1:dimbuf,il),ian*ika*nplan,8,
106 CALL p_read(buf_recv_err(1:dimbuf,il),ian*ika*nplan,8,
114 ika = nb_neighb_pt(il)
124 buf_send(k,il) =v1(ii,j)
125 buf_send(k+1,il)=v2(ii,j)
126 buf_send(k+2,il)=v3(ii,j)
130 ELSEIF(ian.EQ.2)
THEN 134 buf_send(k,il) =v1(ii,j)
135 buf_send(k+1,il)=v2(ii,j)
139 ELSEIF(ian.EQ.1)
THEN 143 buf_send(k,il) =v1(ii,j)
144 buf_send_err(k,il) =errx(ii)
150 CALL p_write(buf_send(1:dimbuf,il),ian*ika*nplan,8,
153 CALL p_write(buf_send_err(1:dimbuf,il),ian*ika*nplan,8,
162 ika = nb_neighb_pt(il)
173 IF(abs(buf_recv(k,il)).GT.abs(v1(ii,j)))
174 & v1(ii,j)=buf_recv(k ,il)
175 IF(abs(buf_recv(k+1,il)).GT.abs(v2(ii,j)))
176 & v2(ii,j)=buf_recv(k+1,il)
177 IF(abs(buf_recv(k+2,il)).GT.abs(v3(ii,j)))
178 & v3(ii,j)=buf_recv(k+2,il)
182 ELSEIF(ian.EQ.2)
THEN 186 IF(abs(buf_recv(k,il)).GT.abs(v1(ii,j)))
187 & v1(ii,j)=buf_recv(k ,il)
188 IF(abs(buf_recv(k+1,il)).GT.abs(v2(ii,j)))
189 & v2(ii,j)=buf_recv(k+1,il)
193 ELSEIF(ian.EQ.1)
THEN 197 IF(abs(buf_recv(k,il)).GT.abs(v1(ii,j)))
198 & v1(ii,j)=buf_recv(k ,il)
199 IF(abs(buf_recv_err(k,il)).GT.abs(errx(ii)))
200 & errx(ii)=buf_recv_err(k ,il)
205 ELSEIF(icom.EQ.2)
THEN 210 v1(ii,j)=v1(ii,j)+buf_recv(k ,il)
211 v2(ii,j)=v2(ii,j)+buf_recv(k+1,il)
212 v3(ii,j)=v3(ii,j)+buf_recv(k+2,il)
216 ELSEIF(ian.EQ.2)
THEN 220 v1(ii,j)=v1(ii,j)+buf_recv(k ,il)
221 v2(ii,j)=v2(ii,j)+buf_recv(k+1,il)
225 ELSEIF(ian.EQ.1)
THEN 230 CALL twosum(tmp,buf_recv(k,il)
233 CALL twosum(tmp,buf_recv_err(k,il)
236 errx(ii)=errx(ii)+error
241 ELSEIF(icom.EQ.3)
THEN 246 IF(buf_recv(k ,il).GT.v1(ii,j))
247 & v1(ii,j)=buf_recv(k ,il)
248 IF(buf_recv(k+1,il).GT.v2(ii,j))
249 & v2(ii,j)=buf_recv(k+1,il)
250 IF(buf_recv(k+2,il).GT.v3(ii,j))
251 & v3(ii,j)=buf_recv(k+2,il)
255 ELSEIF(ian.EQ.2)
THEN 259 IF(buf_recv(k ,il).GT.v1(ii,j))
260 & v1(ii,j)=buf_recv(k ,il)
261 IF(buf_recv(k+1,il).GT.v2(ii,j))
262 & v2(ii,j)=buf_recv(k+1,il)
266 ELSEIF(ian.EQ.1)
THEN 270 IF(buf_recv(k ,il).GT.v1(ii,j))
271 & v1(ii,j)=buf_recv(k ,il)
276 ELSEIF(icom.EQ.4)
THEN 281 IF(buf_recv(k ,il).LT.v1(ii,j))
282 & v1(ii,j)=buf_recv(k ,il)
283 IF(buf_recv(k+1,il).LT.v2(ii,j))
284 & v2(ii,j)=buf_recv(k+1,il)
285 IF(buf_recv(k+2,il).LT.v3(ii,j))
286 & v3(ii,j)=buf_recv(k+2,il)
290 ELSEIF(ian.EQ.2)
THEN 294 IF(buf_recv(k ,il).LT.v1(ii,j))
295 & v1(ii,j)=buf_recv(k ,il)
296 IF(buf_recv(k+1,il).LT.v2(ii,j))
297 & v2(ii,j)=buf_recv(k+1,il)
301 ELSEIF(ian.EQ.1)
THEN 305 IF(buf_recv(k ,il).LT.v1(ii,j))
306 & v1(ii,j)=buf_recv(k ,il)
subroutine paraco_comp(V1, V2, V3, ERRX, NPOIN, ICOM, IAN, NPLAN, NB_NEIGHB, NB_NEIGHB_PT, LIST_SEND, NH_COM, DIMNHCOM, BUF_SEND, BUF_RECV, DIMBUF, BUF_SEND_ERR, BUF_RECV_ERR)
subroutine p_wait_paraco(IBUF, NB)
subroutine twosum(A, B, X, Y)