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 )