/[MITgcm]/MITgcm/pkg/exch2/exch2_xy_rx.template
ViewVC logotype

Diff of /MITgcm/pkg/exch2/exch2_xy_rx.template

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

revision 1.2 by edhill, Mon Apr 5 15:27:06 2004 UTC revision 1.3 by jmc, Sun Jul 24 01:35:06 2005 UTC
# Line 2  C $Header$ Line 2  C $Header$
2  C $Name$  C $Name$
3    
4  #include "CPP_EEOPTIONS.h"  #include "CPP_EEOPTIONS.h"
5    #include "W2_OPTIONS.h"
6    
7  CBOP  CBOP
8    
9  C     !ROUTINE: EXCH_XY_RX  C     !ROUTINE: EXCH_XY_RX
10    
11  C     !INTERFACE:  C     !INTERFACE:
12        SUBROUTINE EXCH2_XY_RX(        SUBROUTINE EXCH2_XY_RX(
13       U                       phi,       U                       phi,
14       I                       myThid )       I                       myThid )
15        IMPLICIT NONE        IMPLICIT NONE
16  C     !DESCRIPTION:  C     !DESCRIPTION:
17  C     *==========================================================*  C     *==========================================================*
18  C     | SUBROUTINE EXCH_XY_RX                                      C     | SUBROUTINE EXCH_XY_RX
19  C     | o Handle exchanges for _RX two-dimensional scalar arrays.  C     | o Handle exchanges for _RX two-dimensional scalar arrays.
20  C     *==========================================================*  C     *==========================================================*
21  C     | Invoke appropriate exchange for a scalar array for either  C     | Invoke appropriate exchange for a scalar array for either
22  C     | global grid, or cube sphere grid.                          C     | global grid, or cube sphere grid.
23  C     *==========================================================*  C     *==========================================================*
24    
25  C     !USES:  C     !USES:
# Line 43  C     exchWidth[XY]  :: Extent of region Line 44  C     exchWidth[XY]  :: Extent of region
44        INTEGER OLw, OLe, OLn, OLs, exchWidthX, exchWidthY, myNz        INTEGER OLw, OLe, OLn, OLs, exchWidthX, exchWidthY, myNz
45        INTEGER bi, bj, myTile, i, j        INTEGER bi, bj, myTile, i, j
46  CEOP  CEOP
47      
48    
49        OLw        = OLx        OLw        = OLx
50        OLe        = OLx        OLe        = OLx
# Line 58  C                However, the slow, simp Line 59  C                However, the slow, simp
59  C                that is calling it here is meant to ensure  C                that is calling it here is meant to ensure
60  C                that threads are synchronised before exchanges  C                that threads are synchronised before exchanges
61  C                begine.  C                begine.
62    
63        IF (useCubedSphereExchange) THEN        IF (useCubedSphereExchange) THEN
64    
65         CALL EXCH2_RX1_CUBE( phi, 'T ',         CALL EXCH2_RX1_CUBE( phi, 'T ',
66       I            OLw, OLe, OLs, OLn, myNz,       I            OLw, OLe, OLs, OLn, myNz,
67       I            exchWidthX, exchWidthY,       I            exchWidthX, exchWidthY,
68       I            FORWARD_SIMULATION, EXCH_UPDATE_CORNERS, myThid )       I            FORWARD_SIMULATION, EXCH_UPDATE_CORNERS, myThid )
69    
70    #ifdef W2_FILL_NULL_REGIONS
71         DO bj=myByLo(myThid),myByHi(myThid)         DO bj=myByLo(myThid),myByHi(myThid)
72          DO bi=myBxLo(myThid),myBxHi(myThid)          DO bi=myBxLo(myThid),myBxHi(myThid)
73           myTile = W2_myTileList(bi)           myTile = W2_myTileList(bi)
# Line 71  C        South-east corner Line 76  C        South-east corner
76       &        exch2_isSedge(myTile) .EQ. 1 ) THEN       &        exch2_isSedge(myTile) .EQ. 1 ) THEN
77            DO j=1-OLy,0            DO j=1-OLy,0
78             DO i=sNx+1,sNx+OLx             DO i=sNx+1,sNx+OLx
79              phi(i,j,bi,bj)=0.              phi(i,j,bi,bj)=e2FillValue_RX
80             ENDDO             ENDDO
81            ENDDO            ENDDO
82           ENDIF           ENDIF
# Line 80  C        North-east corner Line 85  C        North-east corner
85       &        exch2_isNedge(myTile) .EQ. 1 ) THEN       &        exch2_isNedge(myTile) .EQ. 1 ) THEN
86            DO j=sNy+1,sNy+OLy            DO j=sNy+1,sNy+OLy
87             DO i=sNx+1,sNx+OLx             DO i=sNx+1,sNx+OLx
88              phi(i,j,bi,bj)=0.              phi(i,j,bi,bj)=e2FillValue_RX
89             ENDDO             ENDDO
90            ENDDO            ENDDO
91           ENDIF           ENDIF
# Line 89  C        South-west corner Line 94  C        South-west corner
94       &        exch2_isSedge(myTile) .EQ. 1 ) THEN       &        exch2_isSedge(myTile) .EQ. 1 ) THEN
95            DO j=1-OLy,0            DO j=1-OLy,0
96             DO i=1-OLx,0             DO i=1-OLx,0
97              phi(i,j,bi,bj)=0.              phi(i,j,bi,bj)=e2FillValue_RX
98             ENDDO             ENDDO
99            ENDDO            ENDDO
100           ENDIF           ENDIF
# Line 98  C        North-west corner Line 103  C        North-west corner
103       &        exch2_isNedge(myTile) .EQ. 1 ) THEN       &        exch2_isNedge(myTile) .EQ. 1 ) THEN
104            DO j=sNy+1,sNy+OLy            DO j=sNy+1,sNy+OLy
105             DO i=1-OLx,0             DO i=1-OLx,0
106              phi(i,j,bi,bj)=0.              phi(i,j,bi,bj)=e2FillValue_RX
107             ENDDO             ENDDO
108            ENDDO            ENDDO
109           ENDIF           ENDIF
110          ENDDO          ENDDO
111         ENDDO         ENDDO
112    #endif /* W2_FILL_NULL_REGIONS */
113    
114         CALL EXCH2_RX1_CUBE( phi, 'T ',         CALL EXCH2_RX1_CUBE( phi, 'T ',
115       I            OLw, OLe, OLs, OLn, myNz,       I            OLw, OLe, OLs, OLn, myNz,
116       I            exchWidthX, exchWidthY,       I            exchWidthX, exchWidthY,
117       I            FORWARD_SIMULATION, EXCH_UPDATE_CORNERS, myThid )       I            FORWARD_SIMULATION, EXCH_UPDATE_CORNERS, myThid )
118    
119    #ifdef W2_FILL_NULL_REGIONS
120         DO bj=myByLo(myThid),myByHi(myThid)         DO bj=myByLo(myThid),myByHi(myThid)
121          DO bi=myBxLo(myThid),myBxHi(myThid)          DO bi=myBxLo(myThid),myBxHi(myThid)
122           myTile = W2_myTileList(bi)           myTile = W2_myTileList(bi)
# Line 116  C        South-east corner Line 125  C        South-east corner
125       &        exch2_isSedge(myTile) .EQ. 1 ) THEN       &        exch2_isSedge(myTile) .EQ. 1 ) THEN
126            DO j=1-OLy,0            DO j=1-OLy,0
127             DO i=sNx+1,sNx+OLx             DO i=sNx+1,sNx+OLx
128              phi(i,j,bi,bj)=0.              phi(i,j,bi,bj)=e2FillValue_RX
129             ENDDO             ENDDO
130            ENDDO            ENDDO
131           ENDIF           ENDIF
# Line 125  C        North-east corner Line 134  C        North-east corner
134       &        exch2_isNedge(myTile) .EQ. 1 ) THEN       &        exch2_isNedge(myTile) .EQ. 1 ) THEN
135            DO j=sNy+1,sNy+OLy            DO j=sNy+1,sNy+OLy
136             DO i=sNx+1,sNx+OLx             DO i=sNx+1,sNx+OLx
137              phi(i,j,bi,bj)=0.              phi(i,j,bi,bj)=e2FillValue_RX
138             ENDDO             ENDDO
139            ENDDO            ENDDO
140           ENDIF           ENDIF
# Line 134  C        South-west corner Line 143  C        South-west corner
143       &        exch2_isSedge(myTile) .EQ. 1 ) THEN       &        exch2_isSedge(myTile) .EQ. 1 ) THEN
144            DO j=1-OLy,0            DO j=1-OLy,0
145             DO i=1-OLx,0             DO i=1-OLx,0
146              phi(i,j,bi,bj)=0.              phi(i,j,bi,bj)=e2FillValue_RX
147             ENDDO             ENDDO
148            ENDDO            ENDDO
149           ENDIF           ENDIF
# Line 143  C        North-west corner Line 152  C        North-west corner
152       &        exch2_isNedge(myTile) .EQ. 1 ) THEN       &        exch2_isNedge(myTile) .EQ. 1 ) THEN
153            DO j=sNy+1,sNy+OLy            DO j=sNy+1,sNy+OLy
154             DO i=1-OLx,0             DO i=1-OLx,0
155              phi(i,j,bi,bj)=0.              phi(i,j,bi,bj)=e2FillValue_RX
156             ENDDO             ENDDO
157            ENDDO            ENDDO
158           ENDIF           ENDIF
159          ENDDO          ENDDO
160         ENDDO         ENDDO
161    #endif /* W2_FILL_NULL_REGIONS */
162    
163        ELSE        ELSE
164    
165         CALL EXCH_RX( phi,         CALL EXCH_RX( phi,
166       I            OLw, OLe, OLs, OLn, myNz,       I            OLw, OLe, OLs, OLn, myNz,
167       I            exchWidthX, exchWidthY,       I            exchWidthX, exchWidthY,
168       I            FORWARD_SIMULATION, EXCH_UPDATE_CORNERS, myThid )       I            FORWARD_SIMULATION, EXCH_UPDATE_CORNERS, myThid )
169    
170        ENDIF        ENDIF
171    
172        RETURN        RETURN

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.3

  ViewVC Help
Powered by ViewVC 1.1.22