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

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

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


Revision 1.2 - (show annotations) (download)
Tue May 29 14:01:36 2001 UTC (22 years, 11 months ago) by adcroft
Branch: MAIN
CVS Tags: checkpoint40pre3, checkpoint40pre1, checkpoint40pre7, checkpoint40pre6, checkpoint40pre9, checkpoint40pre8, checkpoint40pre2, checkpoint40pre4, checkpoint40pre5, checkpoint40
Changes since 1.1: +86 -0 lines
Merge from branch pre38:
 o essential mods for cubed sphere
 o debugged atmosphere, dynamcis + physics (aim)
 o new packages (mom_vecinv, mom_fluxform, ...)

1 C $Header: /u/gcmpack/models/MITgcmUV/eesupp/src/Attic/exch_uv_xyz_rx.template,v 1.1.2.3 2001/04/12 10:52:48 cnh Exp $
2 C $Name: pre38-close $
3
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 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_XYZ_RX( Uphi, myThid )
82 _EXCH_XYZ_RX( Vphi, myThid )
83 ENDIF
84
85 RETURN
86 END

  ViewVC Help
Powered by ViewVC 1.1.22