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

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

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


Revision 1.6 - (hide annotations) (download)
Mon May 14 13:15:05 2012 UTC (12 years ago) by jmc
Branch: MAIN
CVS Tags: checkpoint64y, checkpoint64x, checkpoint64z, checkpoint64q, checkpoint64p, checkpoint64s, checkpoint64r, checkpoint64u, checkpoint64t, checkpoint64w, checkpoint64v, checkpoint64i, checkpoint64h, checkpoint64k, checkpoint64j, checkpoint64m, checkpoint64l, checkpoint64o, checkpoint64n, checkpoint64a, checkpoint64c, checkpoint64b, checkpoint64e, checkpoint64d, checkpoint64g, checkpoint64f, checkpoint63p, checkpoint63q, checkpoint63r, checkpoint63s, checkpoint63n, checkpoint63o, checkpoint64, checkpoint65, checkpoint66g, checkpoint66f, checkpoint66e, checkpoint66d, checkpoint66c, checkpoint66b, checkpoint66a, checkpoint66o, checkpoint66n, checkpoint66m, checkpoint66l, checkpoint66k, checkpoint66j, checkpoint66i, checkpoint66h, checkpoint65z, checkpoint65x, checkpoint65y, checkpoint65r, checkpoint65s, checkpoint65p, checkpoint65q, checkpoint65v, checkpoint65w, checkpoint65t, checkpoint65u, checkpoint65j, checkpoint65k, checkpoint65h, checkpoint65i, checkpoint65n, checkpoint65o, checkpoint65l, checkpoint65m, checkpoint65b, checkpoint65c, checkpoint65a, checkpoint65f, checkpoint65g, checkpoint65d, checkpoint65e, HEAD
Changes since 1.5: +24 -13 lines
add new CPP option (DISCONNECTED_TILES) to disconnect tiles (no exchange
 between tiles, just fill-in edges assuming locally periodic subdomain) and
 add corresponding exchange subroutines (EXCH0);

1 jmc 1.6 C $Header: /u/gcmpack/MITgcm/eesupp/src/exch_uv_3d_rx.template,v 1.5 2010/05/19 01:53:46 jmc Exp $
2 jmc 1.1 C $Name: $
3    
4     #include "PACKAGES_CONFIG.h"
5     #include "CPP_EEOPTIONS.h"
6 jmc 1.3 #ifdef ALLOW_EXCH2
7     #include "W2_OPTIONS.h"
8     #endif
9 jmc 1.1
10     CBOP
11     C !ROUTINE: EXCH_UV_3D_RX
12    
13     C !INTERFACE:
14     SUBROUTINE EXCH_UV_3D_RX(
15 jmc 1.6 U uPhi, vPhi,
16 jmc 1.1 I withSigns, myNz, myThid )
17    
18     C !DESCRIPTION:
19     C *==========================================================*
20     C | SUBROUTINE EXCH_UV_3D_RX
21     C | o Handle exchanges for _RX, 3-dimensional vector arrays.
22     C *==========================================================*
23     C | Vector arrays need to be rotated and interchaged for
24     C | exchange operations on some grids. This driver routine
25     C | branches to support this.
26     C *==========================================================*
27    
28     C !USES:
29     IMPLICIT NONE
30 jmc 1.5
31 jmc 1.1 C === Global data ===
32     #include "SIZE.h"
33     #include "EEPARAMS.h"
34    
35     C !INPUT/OUTPUT PARAMETERS:
36     C === Routine arguments ===
37 jmc 1.6 C uPhi :: 2 components of a vector field with overlap regions
38     C vPhi :: to be exchanged
39 jmc 1.5 C withSigns :: Flag controlling whether vector is signed.
40     C myNz :: 3rd dimension of array to exchange
41     C myThid :: my Thread Id. number
42 jmc 1.1 INTEGER myNz
43 jmc 1.6 _RX uPhi(1-OLx:sNx+OLx,1-OLy:sNy+OLy,myNz,nSx,nSy)
44     _RX vPhi(1-OLx:sNx+OLx,1-OLy:sNy+OLy,myNz,nSx,nSy)
45 jmc 1.1 LOGICAL withSigns
46     INTEGER myThid
47    
48     C !LOCAL VARIABLES:
49 jmc 1.4 #ifndef ALLOW_EXCH2
50 jmc 1.1 C == Local variables ==
51     C OL[wens] :: Overlap extents in west, east, north, south.
52     C exchWidth[XY] :: Extent of regions that will be exchanged.
53     INTEGER OLw, OLe, OLn, OLs, exchWidthX, exchWidthY
54 jmc 1.4 #endif
55     CEOP
56 jmc 1.1
57     #ifdef ALLOW_EXCH2
58 jmc 1.3 #ifdef W2_USE_R1_ONLY
59     CALL EXCH2_UV_CGRID_3D_RX(
60 jmc 1.6 U uPhi, vPhi,
61 jmc 1.3 I withSigns, myNz, myThid )
62     #else
63 jmc 1.1 CALL EXCH2_UV_3D_RX(
64 jmc 1.6 U uPhi, vPhi,
65 jmc 1.1 I withSigns, myNz, myThid )
66 jmc 1.3 #endif
67     #else /* ALLOW_EXCH2 */
68 jmc 1.1
69     OLw = OLx
70     OLe = OLx
71     OLn = OLy
72     OLs = OLy
73     exchWidthX = OLx
74     exchWidthY = OLy
75     IF (useCubedSphereExchange) THEN
76 jmc 1.6 CALL EXCH1_UV_RX_CUBE( uPhi, vPhi, withSigns,
77 jmc 1.1 I OLw, OLe, OLs, OLn, myNz,
78     I exchWidthX, exchWidthY,
79 jmc 1.5 I EXCH_UPDATE_CORNERS, myThid )
80 jmc 1.1 ELSE
81 jmc 1.6 #ifdef DISCONNECTED_TILES
82     CALL EXCH0_RX( uPhi,
83     I OLw, OLe, OLs, OLn, myNz,
84     I exchWidthX, exchWidthY,
85     I EXCH_UPDATE_CORNERS, myThid )
86     CALL EXCH0_RX( vPhi,
87     I OLw, OLe, OLs, OLn, myNz,
88     I exchWidthX, exchWidthY,
89     I EXCH_UPDATE_CORNERS, myThid )
90     #else /* DISCONNECTED_TILES */
91     CALL EXCH1_RX( uPhi,
92 jmc 1.1 I OLw, OLe, OLs, OLn, myNz,
93     I exchWidthX, exchWidthY,
94 jmc 1.5 I EXCH_UPDATE_CORNERS, myThid )
95 jmc 1.6 CALL EXCH1_RX( vPhi,
96 jmc 1.1 I OLw, OLe, OLs, OLn, myNz,
97     I exchWidthX, exchWidthY,
98 jmc 1.5 I EXCH_UPDATE_CORNERS, myThid )
99 jmc 1.6 #endif /* DISCONNECTED_TILES */
100 jmc 1.1 ENDIF
101    
102 jmc 1.6 #endif /* ALLOW_EXCH2 */
103    
104 jmc 1.1 RETURN
105     END
106    
107     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
108    
109     CEH3 ;;; Local Variables: ***
110     CEH3 ;;; mode:fortran ***
111     CEH3 ;;; End: ***

  ViewVC Help
Powered by ViewVC 1.1.22