integer coltype, left_coltype, right_coltype 
  
 ! Vector type used on origin 
 call MPI_TYPE_VECTOR( 1, ny, nx+2, MPI_DOUBLE_PRECISION, & 
                       coltype, ierr ) 
 call MPI_TYPE_COMMIT( coltype, ierr ) 
  
 ! Exchange stride information needed to build the left and right  
 ! coltypes 
 call MPI_SENDRECV( nx, 1, MPI_INTEGER, left_nbr, 2, & 
                    right_nx, 1, MPI_INTEGER, right_nbr, 2, & 
                    MPI_COMM_WORLD, status, ierr ) 
 call MPI_SENDRECV( nx, 1, MPI_INTEGER, right_nbr, 3, & 
                    left_nx, 1, MPI_INTEGER, left_nbr, 3, & 
                    MPI_COMM_WORLD, status, ierr ) 
 call MPI_TYPE_VECTOR( 1, ny, left_nx + 2, MPI_DOUBLE_PRECISION, & 
                       left_coltype, ierr ) 
 call MPI_TYPE_COMMIT( left_coltype, ierr ) 
 call MPI_TYPE_VECTOR( 1, ny, right_nx + 2, MPI_DOUBLE_PRECISION, & 
                       right_coltype, ierr ) 
 call MPI_TYPE_COMMIT( right_coltype, ierr )