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

Annotation of /MITgcm/eesupp/src/exch_uv_xyz_rx.template

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


Revision 1.1.2.2 - (hide annotations) (download)
Tue Apr 10 00:58:17 2001 UTC (23 years, 1 month ago) by jmc
Branch: pre38
Changes since 1.1.2.1: +13 -10 lines
replace 2 CALL EXCH_RX by CPP_MACRO to switch to JAM exchanges if needed

1 jmc 1.1.2.2 C $Header: /u/gcmpack/models/MITgcmUV/eesupp/src/Attic/exch_uv_xyz_rx.template,v 1.1.2.1 2001/03/28 19:48:51 adcroft Exp $
2     C $Name: $
3 adcroft 1.1.2.1
4     #include "CPP_EEOPTIONS.h"
5    
6     SUBROUTINE EXCH_UV_XYZ_RX(
7     U Uphi, Vphi, withSigns,
8     I myThid )
9     C /==========================================================\
10     C | SUBROUTINE EXCH_UV_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_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,Nr,nSx,nSy)
43     _RX Vphi(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,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 = Nr
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     _BARRIER
67     IF (useCubedSphereExchange) THEN
68     CALL EXCH_UV_RX_CUBE( Uphi, Vphi, withSigns,
69     I OLw, OLe, OLs, OLn, myNz,
70     I exchWidthX, exchWidthY,
71     I FORWARD_SIMULATION, EXCH_UPDATE_CORNERS, myThid )
72     ELSE
73 jmc 1.1.2.2 c CALL EXCH_RX( Uphi,
74     c I OLw, OLe, OLs, OLn, myNz,
75     c I exchWidthX, exchWidthY,
76     c I FORWARD_SIMULATION, EXCH_UPDATE_CORNERS, myThid )
77     c CALL EXCH_RX( Vphi,
78     c I OLw, OLe, OLs, OLn, myNz,
79     c I exchWidthX, exchWidthY,
80     c I FORWARD_SIMULATION, EXCH_UPDATE_CORNERS, myThid )
81     c_jmc: for JAM compatibility, replace the 2 CALLs above by the 2 CPP_MACROs:
82     _EXCH_XYZ_RX( Uphi, myThid )
83     _EXCH_XYZ_RX( Vphi, myThid )
84 adcroft 1.1.2.1 ENDIF
85     _BARRIER
86    
87     RETURN
88     END

  ViewVC Help
Powered by ViewVC 1.1.22