5 &(v1,v2,v3,npoin,icom,ian,nplan,nb_neighb,nb_neighb_pt,list_send,
6 & nh_com,dimnhcom,buf_send,buf_recv,dimbuf)
66 INTEGER,
INTENT(IN) :: NPOIN,ICOM,IAN,NPLAN,NB_NEIGHB
67 INTEGER,
INTENT(IN) :: DIMNHCOM,DIMBUF
68 INTEGER,
INTENT(IN) :: NB_NEIGHB_PT(nb_neighb)
69 INTEGER,
INTENT(IN) :: LIST_SEND(nb_neighb),NH_COM(dimnhcom,*)
71 DOUBLE PRECISION,
INTENT(INOUT) :: BUF_SEND(dimbuf,*)
72 DOUBLE PRECISION,
INTENT(INOUT) :: BUF_RECV(dimbuf,*)
73 DOUBLE PRECISION,
INTENT(INOUT) :: V1(npoin,nplan)
74 DOUBLE PRECISION,
INTENT(INOUT) :: V2(npoin,nplan)
75 DOUBLE PRECISION,
INTENT(INOUT) :: V3(npoin,nplan)
79 INTEGER IKA,IL,II,I,J,K,IPA
83 INTEGER SEND_REQ(100),RECV_REQ(100)
87 IF(ian.NE.1.AND.ian.NE.2.AND.ian.NE.3)
THEN 88 WRITE(
lu,*)
'FALSCHE FREIWERTZAHL BEI KOMMUNIKATION',ian,
89 &
' AUF PROZESSOR',
ipid 105 ika = nb_neighb_pt(il)
108 CALL p_read(buf_recv(1:dimbuf,il),ian*ika*nplan,8,
115 ika = nb_neighb_pt(il)
125 buf_send(k,il) =v1(ii,j)
126 buf_send(k+1,il)=v2(ii,j)
127 buf_send(k+2,il)=v3(ii,j)
131 ELSEIF(ian.EQ.2)
THEN 135 buf_send(k,il) =v1(ii,j)
136 buf_send(k+1,il)=v2(ii,j)
140 ELSEIF(ian.EQ.1)
THEN 144 buf_send(k,il) =v1(ii,j)
151 CALL p_write(buf_send(1:dimbuf,il),ian*ika*nplan,8,
159 ika = nb_neighb_pt(il)
170 IF(abs(buf_recv(k,il)).GT.abs(v1(ii,j)))
171 & v1(ii,j)=buf_recv(k ,il)
172 IF(abs(buf_recv(k+1,il)).GT.abs(v2(ii,j)))
173 & v2(ii,j)=buf_recv(k+1,il)
174 IF(abs(buf_recv(k+2,il)).GT.abs(v3(ii,j)))
175 & v3(ii,j)=buf_recv(k+2,il)
179 ELSEIF(ian.EQ.2)
THEN 183 IF(abs(buf_recv(k,il)).GT.abs(v1(ii,j)))
184 & v1(ii,j)=buf_recv(k ,il)
185 IF(abs(buf_recv(k+1,il)).GT.abs(v2(ii,j)))
186 & v2(ii,j)=buf_recv(k+1,il)
190 ELSEIF(ian.EQ.1)
THEN 194 IF(abs(buf_recv(k,il)).GT.abs(v1(ii,j)))
195 & v1(ii,j)=buf_recv(k ,il)
200 ELSEIF(icom.EQ.2)
THEN 205 v1(ii,j)=v1(ii,j)+buf_recv(k ,il)
206 v2(ii,j)=v2(ii,j)+buf_recv(k+1,il)
207 v3(ii,j)=v3(ii,j)+buf_recv(k+2,il)
211 ELSEIF(ian.EQ.2)
THEN 215 v1(ii,j)=v1(ii,j)+buf_recv(k ,il)
216 v2(ii,j)=v2(ii,j)+buf_recv(k+1,il)
220 ELSEIF(ian.EQ.1)
THEN 224 v1(ii,j)=v1(ii,j)+buf_recv(k ,il)
229 ELSEIF(icom.EQ.3)
THEN 234 IF(buf_recv(k ,il).GT.v1(ii,j))
235 & v1(ii,j)=buf_recv(k ,il)
236 IF(buf_recv(k+1,il).GT.v2(ii,j))
237 & v2(ii,j)=buf_recv(k+1,il)
238 IF(buf_recv(k+2,il).GT.v3(ii,j))
239 & v3(ii,j)=buf_recv(k+2,il)
243 ELSEIF(ian.EQ.2)
THEN 247 IF(buf_recv(k ,il).GT.v1(ii,j))
248 & v1(ii,j)=buf_recv(k ,il)
249 IF(buf_recv(k+1,il).GT.v2(ii,j))
250 & v2(ii,j)=buf_recv(k+1,il)
254 ELSEIF(ian.EQ.1)
THEN 258 IF(buf_recv(k ,il).GT.v1(ii,j))
259 & v1(ii,j)=buf_recv(k ,il)
264 ELSEIF(icom.EQ.4)
THEN 269 IF(buf_recv(k ,il).LT.v1(ii,j))
270 & v1(ii,j)=buf_recv(k ,il)
271 IF(buf_recv(k+1,il).LT.v2(ii,j))
272 & v2(ii,j)=buf_recv(k+1,il)
273 IF(buf_recv(k+2,il).LT.v3(ii,j))
274 & v3(ii,j)=buf_recv(k+2,il)
278 ELSEIF(ian.EQ.2)
THEN 282 IF(buf_recv(k ,il).LT.v1(ii,j))
283 & v1(ii,j)=buf_recv(k ,il)
284 IF(buf_recv(k+1,il).LT.v2(ii,j))
285 & v2(ii,j)=buf_recv(k+1,il)
289 ELSEIF(ian.EQ.1)
THEN 293 IF(buf_recv(k ,il).LT.v1(ii,j))
294 & v1(ii,j)=buf_recv(k ,il)
subroutine paraco(V1, V2, V3, NPOIN, ICOM, IAN, NPLAN, NB_NEIGHB, NB_NEIGHB_PT, LIST_SEND, NH_COM, DIMNHCOM, BUF_SEND, BUF_RECV, DIMBUF)
subroutine p_wait_paraco(IBUF, NB)