1 |
PARAMETER(nxblock=nx/nxp, nyblock=ny/nyp, nxlocal=nxblock+1, nylocal=nyblock+1)
|
2 |
REAL u(0:nxlocal,0:nylocal),unew(0:nxlocal,0:nylocal),f(0:nxlocal,0:nylocal)
|
3 |
dims(1) = nxp; dims(2) = nyp;
|
4 |
periods(1) = .false.; periods(2) = .false.
|
5 |
reorder = .true.
|
6 |
ndim = 2
|
7 |
call MPI_CART_CREATE(MPI_COMM_WORLD,ndim,dims,periods, reorder,comm2d,ierr)
|
8 |
CALL MPI_COMM_RANK( MPI_COMM_WORLD, myrank, ierr )
|
9 |
CALL MPI_CART_COORDS( MPI_COMM_WORLD, myrank, 2, coords, ierr )
|
10 |
CALL MPI_CART_SHIFT( comm2d, 0, 1, nbrleft, nbrright, ierr )
|
11 |
CALL MPI_CART_SHIFT( comm2d, 1, 1, nbrbottom, nbrtop, ierr )
|
12 |
CALL MPI_Type_vector( nyblock, 1, nxlocal+1, MPI_REAL, rowtype )
|
13 |
CALL MPI_Type_commit( rowtype, ierr );
|
14 |
dx = 1.0/nx; dy = 1.0/ny; err = tol * 1e6
|
15 |
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
|
16 |
END DO
|