include 'mpif.h' real a(100,100,100), e(9,9,9) integer oneslice, twoslice, threeslice, sizeofreal integer rank, ierr, status(MPI_STATUS_SIZE) call mpi_init (ierr) call mpi_comm_rank (MPI_COMM_WORLD, rank, ierr) if (rank .eq. 0) then call mpi_type_extent (MPI_REAL, sizeofreal, ierr) call mpi_type_vector (9, 1, 2, MPI_REAL, oneslice, ierr) call mpi_type_hvector (9, 1, 100*sizeofreal, oneslice, twoslice, ierr) call mpi_type_hvector (9, 1, 100*100*sizeofreal twoslice, threeslice, ierr) call mpi_type_commit (threeslice, ierr) call mpi_send (a(1,3,2), 1, threeslice, 1, 0, MPI_COMM_WORLD, ierr) else if (rank .eq. 1) then call mpi_recv (e, 9*9*9, MPI_REAL, 0, 0, MPI_COMM_WORLD, status, ierr) end if call mpi_finalize (ierr)