1 |
|
C $Header$ |
2 |
|
C $Name$ |
3 |
|
|
4 |
#include "CPP_OPTIONS.h" |
#include "CPP_OPTIONS.h" |
5 |
|
|
6 |
SUBROUTINE GATHER_2D( global, local, myThid ) |
SUBROUTINE GATHER_2D( global, local, myThid ) |
15 |
Real*8 global(Nx,Ny) |
Real*8 global(Nx,Ny) |
16 |
_RL local(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
_RL local(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
17 |
|
|
18 |
|
INTEGER iG,jG, i, j, bi, bj |
19 |
#ifdef ALLOW_USE_MPI |
#ifdef ALLOW_USE_MPI |
|
COMMON /GlobalLo/ mpi_myXGlobalLo, mpi_myYGlobalLo |
|
|
INTEGER mpi_myXGlobalLo(nPx*nPy) |
|
|
INTEGER mpi_myYGlobalLo(nPx*nPy) |
|
|
|
|
20 |
_RL temp(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
_RL temp(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
21 |
INTEGER istatus(MPI_STATUS_SIZE), ierr |
INTEGER istatus(MPI_STATUS_SIZE), ierr |
22 |
INTEGER idest, itag, npe, ready_to_receive |
INTEGER lbuff, idest, itag, npe, ready_to_receive |
23 |
INTEGER iP, jP, iG,jG, i, j, bi, bj, lbuff |
#endif /* ALLOW_USE_MPI */ |
24 |
|
|
25 |
C-- Make everyone wait except for master thread. |
C-- Make everyone wait except for master thread. |
26 |
_BARRIER |
_BARRIER |
27 |
_BEGIN_MASTER( myThid ) |
_BEGIN_MASTER( myThid ) |
28 |
|
|
29 |
|
#ifndef ALLOW_USE_MPI |
30 |
|
|
31 |
|
DO bj=1,nSy |
32 |
|
DO bi=1,nSx |
33 |
|
DO j=1,sNy |
34 |
|
DO i=1,sNx |
35 |
|
iG = myXGlobalLo-1+(bi-1)*sNx+i |
36 |
|
jG = myYGlobalLo-1+(bj-1)*sNy+j |
37 |
|
global(iG,jG) = local(i,j,bi,bj) |
38 |
|
ENDDO |
39 |
|
ENDDO |
40 |
|
ENDDO |
41 |
|
ENDDO |
42 |
|
|
43 |
|
#else /* ALLOW_USE_MPI */ |
44 |
|
|
45 |
lbuff = (sNx+2*OLx)*nSx*(sNy+2*OLy)*nSy |
lbuff = (sNx+2*OLx)*nSx*(sNy+2*OLy)*nSy |
46 |
idest = 0 |
idest = 0 |
47 |
itag = 0 |
itag = 0 |
55 |
DO bi=1,nSx |
DO bi=1,nSx |
56 |
DO j=1,sNy |
DO j=1,sNy |
57 |
DO i=1,sNx |
DO i=1,sNx |
|
iP = (bi-1)*sNx+i |
|
|
jP = (bj-1)*sNy+j |
|
58 |
iG = mpi_myXGlobalLo(npe+1)-1+(bi-1)*sNx+i |
iG = mpi_myXGlobalLo(npe+1)-1+(bi-1)*sNx+i |
59 |
jG = mpi_myYGlobalLo(npe+1)-1+(bj-1)*sNy+j |
jG = mpi_myYGlobalLo(npe+1)-1+(bj-1)*sNy+j |
60 |
global(iG,jG) = local(i,j,bi,bj) |
global(iG,jG) = local(i,j,bi,bj) |
75 |
DO bi=1,nSx |
DO bi=1,nSx |
76 |
DO j=1,sNy |
DO j=1,sNy |
77 |
DO i=1,sNx |
DO i=1,sNx |
|
iP = (bi-1)*sNx+i |
|
|
jP = (bj-1)*sNy+j |
|
78 |
iG = mpi_myXGlobalLo(npe+1)-1+(bi-1)*sNx+i |
iG = mpi_myXGlobalLo(npe+1)-1+(bi-1)*sNx+i |
79 |
jG = mpi_myYGlobalLo(npe+1)-1+(bj-1)*sNy+j |
jG = mpi_myYGlobalLo(npe+1)-1+(bj-1)*sNy+j |
80 |
global(iG,jG) = temp(i,j,bi,bj) |
global(iG,jG) = temp(i,j,bi,bj) |
94 |
|
|
95 |
ENDIF |
ENDIF |
96 |
|
|
97 |
|
#endif /* ALLOW_USE_MPI */ |
98 |
|
|
99 |
_END_MASTER( myThid ) |
_END_MASTER( myThid ) |
100 |
_BARRIER |
_BARRIER |
101 |
|
|
|
#endif /* ALLOW_USE_MPI */ |
|
102 |
RETURN |
RETURN |
103 |
END |
END |