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

Diff of /MITgcm/eesupp/src/exch_z_xyz_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:52 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_Z_XYZ_RX(
7         U                       phi,
8         I                       myThid )
9    C     /==========================================================\
10    C     | SUBROUTINE EXCH_Z_XYZ_RX                                 |
11    C     | o Handle exchanges for _RX,      3-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_RX assumes that
39    C              the standard Fortran 77 sequence association rules
40    C              apply.
41    C     myThid - My thread id.
42          _RX phi(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
43          INTEGER myThid
44    CEndOfInterface
45    
46    C     == Local variables ==
47    C     OL[wens]       - Overlap extents in west, east, north, south.
48    C     exchWidth[XY]  - Extent of regions that will be exchanged.
49          INTEGER OLw, OLe, OLn, OLs, exchWidthX, exchWidthY, myNz
50    
51          OLw        = OLx
52          OLe        = OLx
53          OLn        = OLy
54          OLs        = OLy
55          exchWidthX = OLx
56          exchWidthY = OLy
57          myNz       = Nr
58    C     ** NOTE ** The exchange routine we use here does not
59    C                require the preceeding and following barriers.
60    C                However, the slow, simple exchange interface
61    C                that is calling it here is meant to ensure
62    C                that threads are synchronised before exchanges
63    C                begine.
64          IF (useCubedSphereExchange) THEN
65           CALL EXCH_Z_RX_CUBE( phi,
66         I            OLw, OLe, OLs, OLn, myNz,
67         I            exchWidthX, exchWidthY,
68         I            FORWARD_SIMULATION, EXCH_UPDATE_CORNERS, myThid )
69          ELSE
70           CALL EXCH_RX( phi,
71         I            OLw, OLe, OLs, OLn, myNz,
72         I            exchWidthX, exchWidthY,
73         I            FORWARD_SIMULATION, EXCH_UPDATE_CORNERS, myThid )
74          ENDIF
75    
76          RETURN
77          END

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

  ViewVC Help
Powered by ViewVC 1.1.22