X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/d12142c9dc382512752775d0cca043bb1aef3f86..4c74bb7b6f2398da81ce462cbdfd9c5a77ffa683:/examples/smpi/NAS/LU/exchange_1.f diff --git a/examples/smpi/NAS/LU/exchange_1.f b/examples/smpi/NAS/LU/exchange_1.f new file mode 100644 index 0000000000..2bf7d28b94 --- /dev/null +++ b/examples/smpi/NAS/LU/exchange_1.f @@ -0,0 +1,180 @@ + +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 + + +