POISSON_I
#include "array.h"
#include "poisson.h"
void
exchange(dmatrix a, Decomposition oned, Grid grid)
{
/* exchange of boundary values (ghost points) using non-blocking routines */
int lx, ly;
MPI_Status status[4];
MPI_Request req[4];
lx = oned.lx;
ly = oned.ly;
/* extra boundary points in y are not exchanged, they are constant anyway */
MPI_Irecv(&INDEX(a, lx+1, 1), ly, MPI_DOUBLE, grid.up, 0,
grid.comm, &req[0]);
MPI_Irecv(&INDEX(a, 0, 1), ly, MPI_DOUBLE, grid.down, 1,
grid.comm, &req[1]);
MPI_Isend(&INDEX(a, 1, 1), ly, MPI_DOUBLE, grid.down, 0,
grid.comm, &req[2]);
MPI_Isend(&INDEX(a, lx, 1), ly, MPI_DOUBLE, grid.up, 1,
grid.comm, &req[3]);
MPI_Waitall(4, req, status);
}

Peter Junglas 11.5.2000