/[MITgcm]/MITgcm/eesupp/src/exch_uv_xy_rx.template
ViewVC logotype

Diff of /MITgcm/eesupp/src/exch_uv_xy_rx.template

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

revision 1.1 by adcroft, Wed Mar 28 19:48:51 2001 UTC revision 1.2 by adcroft, Tue May 29 14:01:36 2001 UTC
# Line 0  Line 1 
1    C $Header$
2    C $Name$
3    
4    #include "CPP_EEOPTIONS.h"
5    
6          SUBROUTINE EXCH_UV_XY_RX(
7         U                       Uphi, Vphi, withSigns,
8         I                       myThid )
9    C     /==========================================================\
10    C     | SUBROUTINE EXCH_UV_XY_RX                                 |
11    C     | o Handle exchanges for _RX,    two-dimensional arrays.   |
12    C     |==========================================================|
13    C     | Do true shared-memory data transfers and "messaging"     |
14    C     | tranfers for blocking case of data transfers.            |
15    C     | Applications call this routine using                     |
16    C     |  CALL EXCH..( x, myThid )                                |
17    C     | where x is a two-dimensional array with overlaps.        |
18    C     | This routine does true-shared-memory copies for blocks   |
19    C     | within a thread. It will also do MPI meesaging between   |
20    C     | different processes.                                     |
21    C     | Note:                                                    |
22    C     | =====                                                    |
23    C     | This routine is a default mode interface to the more     |
24    C     | general exchange routine. Under default mode the         |
25    C     | exchange is for an edge width of OLx, and OLy and        |
26    C     | updates corner points as well as edges ( slightly more   |
27    C     | synchronisation required).                               |
28    C     \==========================================================/
29          IMPLICIT NONE
30    
31    C     === Global data ===
32    #include "SIZE.h"
33    #include "EEPARAMS.h"
34    #include "EESUPPORT.h"
35    
36    C     === Routine arguments ===
37    C     phi    - Array with overlap regions are to be exchanged
38    C              Note - The interface to EXCH_RL assumes that
39    C              the standard Fortran 77 sequence association rules
40    C              apply.
41    C     myThid - My thread id.
42          _RX Uphi(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
43          _RX Vphi(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
44          LOGICAL withSigns
45          INTEGER myThid
46    CEndOfInterface
47    
48    C     == Local variables ==
49    C     OL[wens]       - Overlap extents in west, east, north, south.
50    C     exchWidth[XY]  - Extent of regions that will be exchanged.
51          INTEGER OLw, OLe, OLn, OLs, exchWidthX, exchWidthY, myNz
52    
53          OLw        = OLx
54          OLe        = OLx
55          OLn        = OLy
56          OLs        = OLy
57          exchWidthX = OLx
58          exchWidthY = OLy
59          myNz       = 1
60    C     ** NOTE ** The exchange routine we use here does not
61    C                require the preceeding and following barriers.
62    C                However, the slow, simple exchange interface
63    C                that is calling it here is meant to ensure
64    C                that threads are synchronised before exchanges
65    C                begine.
66          IF (useCubedSphereExchange) THEN
67           CALL EXCH_UV_RX_CUBE( Uphi, Vphi, withSigns,
68         I            OLw, OLe, OLs, OLn, myNz,
69         I            exchWidthX, exchWidthY,
70         I            FORWARD_SIMULATION, EXCH_UPDATE_CORNERS, myThid )
71          ELSE
72    c      CALL EXCH_RX( Uphi,
73    c    I            OLw, OLe, OLs, OLn, myNz,
74    c    I            exchWidthX, exchWidthY,
75    c    I            FORWARD_SIMULATION, EXCH_UPDATE_CORNERS, myThid )
76    c      CALL EXCH_RX( Vphi,
77    c    I            OLw, OLe, OLs, OLn, myNz,
78    c    I            exchWidthX, exchWidthY,
79    c    I            FORWARD_SIMULATION, EXCH_UPDATE_CORNERS, myThid )
80    c_jmc: for JAM compatibility, replace the 2 CALLs above by the 2 CPP_MACROs:
81           _EXCH_XY_RX( Uphi, myThid )
82           _EXCH_XY_RX( Vphi, myThid )
83          ENDIF
84    
85          RETURN
86          END

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

  ViewVC Help
Powered by ViewVC 1.1.22