 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
