int up(int xy[2]){
int yd=xy[1]-1,newrank;
if (yd==-1)return -2;
int coords[2];
coords[0]=xy[0];coords[1]=yd;
MPI_Cart_rank(A_New_MPI_World,coords,&newrank);
return newrank;
}
int down(int xy[2]){
int yd=xy[1]+1,newrank;
if (yd==dim[1])return -2;
int coords[2];
coords[0]=xy[0];coords[1]=yd;
MPI_Cart_rank(A_New_MPI_World,coords,&newrank);
return newrank;
}
int left(int xy[2]){
int xd=xy[0]-1,newrank,coords[2];
if (xd==-1) {
coords[0]=dim[0]-1;coords[1]=xy[1];
} else {
coords[0]=xd;coords[1]=xy[1];
}
MPI_Cart_rank(A_New_MPI_World,coords,&newrank);
return newrank;
}
int right(int xy[2]){
int xd=xy[0]+1,newrank,coords[2];
if (xd==dim[0]) {
coords[0]=0;coords[1]=xy[1];
} else {
coords[0]=xd;coords[1]=xy[1];
}
MPI_Cart_rank(A_New_MPI_World,coords,&newrank);
return newrank;
}