/[MITgcm]/MITgcm/pkg/exch2/w2_eeboot.F
ViewVC logotype

Diff of /MITgcm/pkg/exch2/w2_eeboot.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.12 by jmc, Sun Jun 28 01:00:23 2009 UTC revision 1.13 by jmc, Fri Apr 16 18:14:24 2010 UTC
# Line 35  C     !FUNCTIONS: Line 35  C     !FUNCTIONS:
35        EXTERNAL ILNBLNK        EXTERNAL ILNBLNK
36    
37  C     == Local variables ==  C     == Local variables ==
38        INTEGER nt_perProc, thisProc        INTEGER thisProc
39        CHARACTER*(MAX_LEN_MBUF) msgBuf        CHARACTER*(MAX_LEN_MBUF) msgBuf
40        CHARACTER*(MAX_LEN_FNAM) fName        CHARACTER*(MAX_LEN_FNAM) fName
41  c     INTEGER W2_oUnit  c     INTEGER W2_oUnit
42        INTEGER stdUnit, iLen        INTEGER stdUnit, iLen
43        CHARACTER commFlag        CHARACTER commFlag
44        INTEGER myTileId        INTEGER myTileId
45        INTEGER myThid, I, J, II        INTEGER myThid, I, J
46        INTEGER np, jp, bi, bj        INTEGER np, ii, jj, bi, bj
47        INTEGER iErr, tNx, tNy        INTEGER iErr, tNx, tNy
48    
49  C     Set dummy myThid value (we are not multi-threaded here)  C     Set dummy myThid value (we are not multi-threaded here)
# Line 69  C     Initialise to zero EXCH2_TOPOLOGY Line 69  C     Initialise to zero EXCH2_TOPOLOGY
69          DO J = 1,W2_maxNeighbours          DO J = 1,W2_maxNeighbours
70            exch2_neighbourId(J,I)  = 0            exch2_neighbourId(J,I)  = 0
71            exch2_opposingSend(J,I) = 0            exch2_opposingSend(J,I) = 0
72            DO II = 1,4            DO ii = 1,4
73             exch2_pij(II,J,I) = 0             exch2_pij(ii,J,I) = 0
74            ENDDO            ENDDO
75            exch2_oi(J,I)  = 0            exch2_oi(J,I)  = 0
76            exch2_oj(J,I)  = 0            exch2_oj(J,I)  = 0
# Line 112  C     functional relationship that was u Line 112  C     functional relationship that was u
112  C     Fill also W2_procTileList for Single-CPU-IO.  C     Fill also W2_procTileList for Single-CPU-IO.
113    
114  C     Number of tiles I handle is nSx*nSy  C     Number of tiles I handle is nSx*nSy
       nt_perProc = nSx*nSy  
115        thisProc = 1        thisProc = 1
116  #ifdef ALLOW_USE_MPI  #ifdef ALLOW_USE_MPI
117        thisProc = 1+myPid        thisProc = 1+myPid
# Line 120  C     Number of tiles I handle is nSx*nS Line 119  C     Number of tiles I handle is nSx*nS
119        J = 0        J = 0
120        DO I=1,nTiles        DO I=1,nTiles
121         IF ( exch2_myFace(I) .NE. 0 ) THEN         IF ( exch2_myFace(I) .NE. 0 ) THEN
122          np = 1 + J/nt_perProc  C--   old ordering (makes no difference if nSy*nPy=1 )
123          jp = MOD(J,nt_perProc)  c       np = 1 + J/(nSx*nSy)
124          bj = 1 + jp/nSx  c       jj = MOD(J,nSx*nSy)
125          bi = 1 + MOD(jp,nSx)  c       bj = 1 + jj/nSx
126    c       bi = 1 + MOD(jj,nSx)
127    C--   new ordering: for single sub-domain (nFacets=1) case, match default setting
128            jj = J/(nSx*nPx)
129            ii = MOD(J,nSx*nPx)
130    C--   natural way to order processors:
131    c       np = 1 + ii/nSx + (jj/nSy)*nPx
132    C--   switch processor order to match MPI_CART set-up
133            np = 1 + jj/nSy + (ii/nSx)*nPy
134            bj = 1 + MOD(jj,nSy)
135            bi = 1 + MOD(ii,nSx)
136    C--
137          exch2_tProc(I) = np          exch2_tProc(I) = np
138          W2_procTileList(bi,bj,np) = I          W2_procTileList(bi,bj,np) = I
139          IF ( np.EQ.thisProc ) W2_myTileList(bi,bj) = I          IF ( np.EQ.thisProc ) W2_myTileList(bi,bj) = I
# Line 176  c       WRITE(msgBuf,'(A,I4)') ' TILE: ' Line 186  c       WRITE(msgBuf,'(A,I4)') ' TILE: '
186          CALL PRINT_MESSAGE( msgBuf, W2_oUnit, SQUEEZE_RIGHT, myThid )          CALL PRINT_MESSAGE( msgBuf, W2_oUnit, SQUEEZE_RIGHT, myThid )
187          DO J=1,exch2_nNeighbours(myTileId)          DO J=1,exch2_nNeighbours(myTileId)
188           commFlag = 'M'           commFlag = 'M'
189           DO II=1,nSy           DO jj=1,nSy
190            DO I=1,nSx            DO ii=1,nSx
191            IF ( W2_myTileList(I,II).EQ.exch2_neighbourId(J,myTileId) )            IF ( W2_myTileList(ii,jj).EQ.exch2_neighbourId(J,myTileId) )
192       &     commFlag = 'P'       &     commFlag = 'P'
193            ENDDO            ENDDO
194           ENDDO           ENDDO

Legend:
Removed from v.1.12  
changed lines
  Added in v.1.13

  ViewVC Help
Powered by ViewVC 1.1.22