Jacobi Iteration: MPI Program
PARAMETER(nxblock=nx/nxp, nyblock=ny/nyp, nxlocal=nxblock+1, nylocal=nyblock+1)
REAL u(0:nxlocal,0:nylocal),unew(0:nxlocal,0:nylocal),f(0:nxlocal,0:nylocal)
dims(1) = nxp; dims(2) = nyp;
periods(1) = .false.; periods(2) = .false.
call MPI_CART_CREATE(MPI_COMM_WORLD,ndim,dims,periods, reorder,comm2d,ierr)
CALL MPI_COMM_RANK( MPI_COMM_WORLD, myrank, ierr )
CALL MPI_CART_COORDS( MPI_COMM_WORLD, myrank, 2, coords, ierr )
CALL MPI_CART_SHIFT( comm2d, 0, 1, nbrleft, nbrright, ierr )
CALL MPI_CART_SHIFT( comm2d, 1, 1, nbrbottom, nbrtop, ierr )
CALL MPI_Type_vector( nyblock, 1, nxlocal+1, MPI_REAL, rowtype )
CALL MPI_Type_commit( rowtype, ierr );
dx = 1.0/nx; dy = 1.0/ny; err = tol * 1e6
DO j = 0, nylocal
DO i = 0, nxlocal
f(i,j) = -2*(dx*(i+coords(1)*nxblock))**2 + 2*dx*(i+coords(1)*nxblock)&
u(i,j) = 0.0
unew(i,j) = 0.0
END DO