subroutine exchng1( a, nx, s, e, win, & 
                     bottom_nbr, top_nbr ) 
 use mpi 
 integer nx, s, e 
 double precision a(0:nx+1,s-1:e+1) 
 integer win, bottom_nbr, top_nbr 
 integer ierr 
 
 call MPI_WIN_FENCE( 0, win, ierr ) 
 ! Get top edge from top neighbor's first column 
 call MPI_GET( a(1,e+1), nx, MPI_DOUBLE_PRECISION, & 
               top_nbr, nx + 1, nx, MPI_DOUBLE_PRECISION, win, ierr ) 
 ! Put bottom edge into bottom neighbor's ghost cells 
 call MPI_PUT( a(1,e), nx, MPI_DOUBLE_PRECISION, & 
               bottom_nbr, 1, nx, MPI_DOUBLE_PRECISION, win, ierr ) 
 call MPI_WIN_FENCE( 0, win, ierr ) 
 
 return 
 end