c--------------------------------------------------------------------- c--------------------------------------------------------------------- subroutine exchange_1( g,k,iex ) c--------------------------------------------------------------------- c--------------------------------------------------------------------- implicit none include 'mpinpb.h' include 'applu.incl' double precision g(5,-1:isiz1+2,-1:isiz2+2,isiz3) integer k integer iex integer i, j double precision dum(5,isiz1+isiz2), dum1(5,isiz1+isiz2) integer STATUS(MPI_STATUS_SIZE) integer IERROR if( iex .eq. 0 ) then if( north .ne. -1 ) then call MPI_RECV( dum1(1,jst), > 5*(jend-jst+1), > dp_type, > north, > from_n, > MPI_COMM_WORLD, > status, > IERROR ) do j=jst,jend g(1,0,j,k) = dum1(1,j) g(2,0,j,k) = dum1(2,j) g(3,0,j,k) = dum1(3,j) g(4,0,j,k) = dum1(4,j) g(5,0,j,k) = dum1(5,j) enddo endif if( west .ne. -1 ) then call MPI_RECV( dum1(1,ist), > 5*(iend-ist+1), > dp_type, > west, > from_w, > MPI_COMM_WORLD, > status, > IERROR ) do i=ist,iend g(1,i,0,k) = dum1(1,i) g(2,i,0,k) = dum1(2,i) g(3,i,0,k) = dum1(3,i) g(4,i,0,k) = dum1(4,i) g(5,i,0,k) = dum1(5,i) enddo endif else if( iex .eq. 1 ) then if( south .ne. -1 ) then call MPI_RECV( dum1(1,jst), > 5*(jend-jst+1), > dp_type, > south, > from_s, > MPI_COMM_WORLD, > status, > IERROR ) do j=jst,jend g(1,nx+1,j,k) = dum1(1,j) g(2,nx+1,j,k) = dum1(2,j) g(3,nx+1,j,k) = dum1(3,j) g(4,nx+1,j,k) = dum1(4,j) g(5,nx+1,j,k) = dum1(5,j) enddo endif if( east .ne. -1 ) then call MPI_RECV( dum1(1,ist), > 5*(iend-ist+1), > dp_type, > east, > from_e, > MPI_COMM_WORLD, > status, > IERROR ) do i=ist,iend g(1,i,ny+1,k) = dum1(1,i) g(2,i,ny+1,k) = dum1(2,i) g(3,i,ny+1,k) = dum1(3,i) g(4,i,ny+1,k) = dum1(4,i) g(5,i,ny+1,k) = dum1(5,i) enddo endif else if( iex .eq. 2 ) then if( south .ne. -1 ) then do j=jst,jend dum(1,j) = g(1,nx,j,k) dum(2,j) = g(2,nx,j,k) dum(3,j) = g(3,nx,j,k) dum(4,j) = g(4,nx,j,k) dum(5,j) = g(5,nx,j,k) enddo call MPI_SEND( dum(1,jst), > 5*(jend-jst+1), > dp_type, > south, > from_n, > MPI_COMM_WORLD, > IERROR ) endif if( east .ne. -1 ) then do i=ist,iend dum(1,i) = g(1,i,ny,k) dum(2,i) = g(2,i,ny,k) dum(3,i) = g(3,i,ny,k) dum(4,i) = g(4,i,ny,k) dum(5,i) = g(5,i,ny,k) enddo call MPI_SEND( dum(1,ist), > 5*(iend-ist+1), > dp_type, > east, > from_w, > MPI_COMM_WORLD, > IERROR ) endif else if( north .ne. -1 ) then do j=jst,jend dum(1,j) = g(1,1,j,k) dum(2,j) = g(2,1,j,k) dum(3,j) = g(3,1,j,k) dum(4,j) = g(4,1,j,k) dum(5,j) = g(5,1,j,k) enddo call MPI_SEND( dum(1,jst), > 5*(jend-jst+1), > dp_type, > north, > from_s, > MPI_COMM_WORLD, > IERROR ) endif if( west .ne. -1 ) then do i=ist,iend dum(1,i) = g(1,i,1,k) dum(2,i) = g(2,i,1,k) dum(3,i) = g(3,i,1,k) dum(4,i) = g(4,i,1,k) dum(5,i) = g(5,i,1,k) enddo call MPI_SEND( dum(1,ist), > 5*(iend-ist+1), > dp_type, > west, > from_e, > MPI_COMM_WORLD, > IERROR ) endif endif end