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

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

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


Revision 1.3 - (hide annotations) (download)
Fri Sep 21 03:55:50 2001 UTC (22 years, 7 months ago) by cnh
Branch: MAIN
CVS Tags: checkpoint46n_post, checkpoint51k_post, checkpoint47e_post, checkpoint57m_post, checkpoint52l_pre, checkpoint44e_post, hrcube4, hrcube5, checkpoint46l_post, checkpoint57g_pre, checkpoint46g_pre, checkpoint47c_post, release1_p13_pre, checkpoint50c_post, checkpoint57s_post, checkpoint58b_post, checkpoint57b_post, checkpoint46f_post, checkpoint52d_pre, checkpoint57g_post, checkpoint48e_post, checkpoint56b_post, checkpoint50g_post, checkpoint57y_post, checkpoint46b_post, checkpoint52j_pre, checkpoint43a-release1mods, checkpoint51o_pre, checkpoint44g_post, checkpoint54d_post, checkpoint48c_post, checkpoint54e_post, ecco_c50_e32, ecco_c50_e33, ecco_c50_e30, ecco_c50_e31, release1_p13, checkpoint51l_post, checkpoint48i_post, checkpoint57r_post, checkpoint46l_pre, checkpoint57d_post, checkpoint57i_post, checkpoint50d_pre, checkpoint52k_post, chkpt44d_post, checkpoint59, checkpoint58, checkpoint55, checkpoint54, checkpoint57, checkpoint56, checkpoint51, checkpoint53, checkpoint52, release1_p8, release1_p9, checkpoint50d_post, release1_p1, release1_p2, release1_p3, release1_p4, release1_p5, release1_p6, release1_p7, checkpoint58f_post, checkpoint52f_post, checkpoint57n_post, checkpoint58d_post, checkpoint58a_post, checkpoint50b_pre, checkpoint44e_pre, checkpoint57z_post, checkpoint54f_post, checkpoint51f_post, release1_b1, ecco_c51_e34d, ecco_c51_e34e, ecco_c51_e34f, ecco_c51_e34g, ecco_c51_e34a, ecco_c51_e34b, ecco_c51_e34c, checkpoint58y_post, checkpoint48b_post, checkpoint43, checkpoint51d_post, checkpoint48c_pre, checkpoint55a_post, checkpoint51t_post, checkpoint58t_post, checkpoint51n_post, release1_chkpt44d_post, checkpoint55i_post, checkpoint57l_post, checkpoint52i_pre, checkpoint57h_post, hrcube_2, hrcube_3, checkpoint51s_post, checkpoint57t_post, checkpoint55c_post, checkpoint48d_pre, checkpoint51j_post, checkpoint47i_post, checkpoint52e_pre, checkpoint57v_post, release1_p11, checkpoint57f_post, checkpoint52e_post, checkpoint51n_pre, checkpoint47d_post, icebear5, icebear4, icebear3, icebear2, checkpoint53d_post, checkpoint46d_pre, checkpoint60, checkpoint61, checkpoint57a_post, checkpoint48d_post, release1-branch_tutorials, checkpoint57h_pre, checkpoint57x_post, checkpoint48f_post, checkpoint45d_post, checkpoint52b_pre, checkpoint54b_post, checkpoint46j_pre, checkpoint58w_post, ecco_c50_e28, checkpoint51l_pre, checkpoint52m_post, checkpoint47d_pre, checkpoint57y_pre, chkpt44a_post, checkpoint55g_post, checkpoint44h_pre, checkpoint48h_post, checkpoint51q_post, ecco_c50_e29, checkpoint51b_pre, checkpoint46a_post, checkpoint47g_post, checkpoint52b_post, checkpoint52c_post, checkpoint46j_post, checkpoint51h_pre, checkpoint46k_post, checkpoint46b_pre, chkpt44c_pre, checkpoint58o_post, checkpoint52h_pre, checkpoint45a_post, checkpoint57c_post, checkpoint50f_post, checkpoint50a_post, checkpoint50f_pre, hrcube_1, checkpoint58p_post, checkpoint58q_post, checkpoint51m_post, checkpoint55d_post, ecco_c44_e19, ecco_c44_e18, ecco_c44_e17, ecco_c44_e16, release1_p12, checkpoint58e_post, release1_p10, mitgcm_mapl_00, release1_p16, release1_p17, release1_p14, release1_p15, checkpoint58m_post, checkpoint47a_post, ecco_c50_e33a, checkpoint53c_post, checkpoint55d_pre, checkpoint57c_pre, checkpoint58r_post, checkpoint55j_post, branchpoint-genmake2, checkpoint54a_post, checkpoint46e_pre, checkpoint55h_post, checkpoint58n_post, checkpoint51r_post, checkpoint45b_post, checkpoint51i_post, checkpoint57e_post, release1-branch-end, release1_final_v1, checkpoint55b_post, checkpoint51b_post, release1_p12_pre, checkpoint46c_pre, checkpoint53a_post, checkpoint44f_post, checkpoint47b_post, checkpoint44b_post, checkpoint59q, checkpoint59p, checkpoint59r, checkpoint59e, checkpoint59d, checkpoint59g, checkpoint59f, checkpoint59a, checkpoint55f_post, checkpoint59c, checkpoint59b, checkpoint59m, checkpoint59l, checkpoint59o, checkpoint59n, checkpoint59i, checkpoint59h, checkpoint59k, ecco_c51_e34, checkpoint46h_pre, checkpoint52d_post, checkpoint53g_post, checkpoint46m_post, checkpoint57p_post, checkpint57u_post, checkpoint46a_pre, checkpoint50c_pre, checkpoint45c_post, checkpoint57q_post, ecco_ice2, ecco_ice1, checkpoint44h_post, eckpoint57e_pre, checkpoint46g_post, checkpoint51c_post, checkpoint58k_post, checkpoint52a_pre, checkpoint46i_post, checkpoint58v_post, checkpoint50h_post, checkpoint52i_post, checkpoint50e_pre, checkpoint50i_post, ecco_c44_e25, checkpoint51i_pre, checkpoint48a_post, checkpoint56a_post, checkpoint58l_post, checkpoint53f_post, checkpoint47j_post, checkpoint54a_pre, checkpoint53b_pre, branch-exfmods-tag, checkpoint57h_done, checkpoint52j_post, checkpoint47f_post, checkpoint50e_post, chkpt44a_pre, ecco_c44_e22, ecco_c44_e23, ecco_c44_e20, ecco_c44_e21, ecco_c44_e26, ecco_c44_e27, ecco_c44_e24, checkpoint57j_post, checkpoint57f_pre, checkpoint61f, checkpoint46c_post, checkpoint58g_post, ecco-branch-mod1, ecco-branch-mod2, ecco-branch-mod3, ecco-branch-mod4, ecco-branch-mod5, branch-netcdf, checkpoint52l_post, checkpoint58x_post, checkpoint61n, checkpoint52n_post, checkpoint46e_post, checkpoint59j, release1_beta1, checkpoint58h_post, checkpoint56c_post, checkpoint58j_post, checkpoint51e_post, checkpoint44b_pre, checkpoint42, checkpoint57a_pre, checkpoint41, checkpoint46, checkpoint47, checkpoint44, checkpoint45, checkpoint48, checkpoint49, checkpoint57o_post, checkpoint46h_post, checkpoint51o_post, checkpoint61q, checkpoint50, checkpoint57k_post, checkpoint51f_pre, chkpt44c_post, checkpoint53b_post, checkpoint47h_post, checkpoint52a_post, checkpoint57w_post, checkpoint61e, checkpoint44f_pre, checkpoint58i_post, checkpoint51g_post, ecco_c52_e35, checkpoint46d_post, checkpoint50b_post, checkpoint58c_post, checkpoint58u_post, release1-branch_branchpoint, checkpoint52f_pre, checkpoint53d_pre, checkpoint58s_post, checkpoint55e_post, checkpoint61g, checkpoint61d, checkpoint54c_post, checkpoint61b, checkpoint61c, checkpoint61a, checkpoint51a_post, checkpoint61o, checkpoint61l, checkpoint61m, checkpoint61j, checkpoint61k, checkpoint61h, checkpoint61i, checkpoint61t, checkpoint61u, checkpoint61r, checkpoint61s, checkpoint61p, checkpoint51p_post, checkpoint48g_post, checkpoint51u_post
Branch point for: c24_e25_ice, branch-exfmods-curt, release1_coupled, release1_final, release1-branch, branch-genmake2, release1, branch-nonh, tg2-branch, ecco-branch, release1_50yr, netcdf-sm0, icebear, checkpoint51n_branch
Changes since 1.2: +59 -47 lines
Starting to bring comments up to date and format comments
for document extraction of "prototypes".

1 cnh 1.3 C $Header: /u/gcmpack/models/MITgcmUV/eesupp/src/exch_z_rx_cube.template,v 1.2 2001/05/29 14:01:36 adcroft Exp $
2     C $Name: $
3 adcroft 1.2
4     #include "CPP_EEOPTIONS.h"
5    
6 cnh 1.3 CBOP
7    
8     C !ROUTINE: EXCH_Z_RX_CUBE
9    
10     C !INTERFACE:
11 adcroft 1.2 SUBROUTINE EXCH_Z_RX_CUBE(
12     U array,
13     I myOLw, myOLe, myOLn, myOLs, myNz,
14     I exchWidthX, exchWidthY,
15     I simulationMode, cornerMode, myThid )
16     IMPLICIT NONE
17 cnh 1.3 C !DESCRIPTION:
18     C *==========================================================*
19     C | SUBROUTINE EXCH_Z_RX_CUBE
20     C | o Control edge exchanges for RX zeta point array on CS
21     C *==========================================================*
22     C |
23     C | Controlling routine for exchange of XY edges of an array
24     C | distributed in X and Y. The routine interfaces to
25     C | communication routines that can use messages passing
26     C | exchanges, put type exchanges or get type exchanges.
27     C | This allows anything from MPI to raw memory channel to
28     C | memmap segments to be used as a inter-process and/or
29     C | inter-thread communiation and synchronisation
30     C | mechanism.
31     C | Notes --
32     C | 1. Some low-level mechanisms such as raw memory-channel
33     C | or SGI/CRAY shmem put do not have direct Fortran bindings
34     C | and are invoked through C stub routines.
35     C | 2. Although this routine is fairly general but it does
36     C | require nSx and nSy are the same for all innvocations.
37     C | There are many common data structures ( myByLo,
38     C | westCommunicationMode, mpiIdW etc... ) tied in with
39     C | (nSx,nSy). To support arbitray nSx and nSy would require
40     C | general forms of these.
41     C | 3. zeta coord exchange operation for cube sphere grid
42     C |
43     C *==========================================================*
44 adcroft 1.2
45 cnh 1.3 C !USES:
46 adcroft 1.2 C == Global data ==
47     #include "SIZE.h"
48     #include "EEPARAMS.h"
49     #include "EESUPPORT.h"
50     #include "EXCH.h"
51    
52 cnh 1.3 C !INPUT/OUTPUT PARAMETERS:
53 adcroft 1.2 C == Routine arguments ==
54 cnh 1.3 C array :: Array with edges to exchange.
55     C myOLw :: West, East, North and South overlap region sizes.
56 adcroft 1.2 C myOLe
57     C myOLn
58     C myOLs
59 cnh 1.3 C exchWidthX :: Width of data region exchanged in X.
60     C exchWidthY :: Width of data region exchanged in Y.
61     C Note --
62     C 1. In theory one could have a send width and
63     C a receive width for each face of each tile. The only
64     C restriction woul be that the send width of one
65     C face should equal the receive width of the sent to
66     C tile face. Dont know if this would be useful. I
67     C have left it out for now as it requires additional
68     C bookeeping.
69     C simulationMode :: Forward or reverse mode exchange ( provides
70     C support for adjoint integration of code. )
71     C cornerMode :: Flag indicating whether corner updates are
72     C needed.
73     C myThid :: Thread number of this instance of S/R EXCH...
74 adcroft 1.2 INTEGER myOLw
75     INTEGER myOLe
76     INTEGER myOLs
77     INTEGER myOLn
78     INTEGER myNz
79     INTEGER exchWidthX
80     INTEGER exchWidthY
81     INTEGER simulationMode
82     INTEGER cornerMode
83     INTEGER myThid
84     _RX array(1-myOLw:sNx+myOLe,
85     & 1-myOLs:sNy+myOLn,
86     & myNZ, nSx, nSy)
87    
88 cnh 1.3 C !LOCAL VARIABLES:
89 adcroft 1.2 C == Local variables ==
90 cnh 1.3 C theSimulationMode :: Holds working copy of simulation mode
91     C theCornerMode :: Holds working copy of corner mode
92     C I,J,K,repeat :: Loop counters and index
93     C bl,bt,bn,bs,be,bw
94 adcroft 1.2 INTEGER theSimulationMode
95     INTEGER theCornerMode
96     INTEGER I,J,K,repeat
97     INTEGER bl,bt,bn,bs,be,bw
98     C == Statement function ==
99     INTEGER tilemod
100     tilemod(I)=1+mod(I-1+6,6)
101 cnh 1.3 CEOP
102 adcroft 1.2
103     theSimulationMode = simulationMode
104     theCornerMode = cornerMode
105    
106     C For now tile<->tile exchanges are sequentialised through
107     C thread 1. This is a temporary feature for preliminary testing until
108     C general tile decomposistion is in place (CNH April 11, 2001)
109     CALL BAR2( myThid )
110     IF ( myThid .EQ. 1 ) THEN
111    
112     DO repeat=1,2
113    
114     DO bl = 1, 5, 2
115    
116     bt = bl
117     bn=tilemod(bt+2)
118     bs=tilemod(bt-1)
119     be=tilemod(bt+1)
120     bw=tilemod(bt-2)
121    
122     DO K = 1, myNz
123     DO J = 1, sNy+1
124     DO I = 0, exchWidthX-1
125    
126     C Tile Odd:Odd+2 [get] [North<-West]
127     array(J,sNy+I+1,K,bt,1) = array(I+1,sNy+2-J,K,bn,1)
128     C Tile Odd:Odd+1 [get] [East<-West]
129     array(sNx+I+1,J,K,bt,1) = array(I+1,J,K,be,1)
130    
131     cs- these above loop should really have the same range the lower one
132     ENDDO
133     DO I = 1, exchWidthX-0
134     cs- but this replaces the missing I/O routines for now
135    
136     C Tile Odd:Odd-1 [get] [South<-North]
137     array(J,1-I,K,bt,1) = array(J,sNy+1-I,K,bs,1)
138     C Tile Odd:Odd-2 [get] [West<-North]
139     array(1-I,J,K,bt,1) = array(sNx+2-J,sNy+1-I,K,bw,1)
140    
141     ENDDO
142     ENDDO
143     ENDDO
144    
145     bt = bl+1
146     bn=tilemod(bt+1)
147     bs=tilemod(bt-2)
148     be=tilemod(bt+2)
149     bw=tilemod(bt-1)
150    
151     DO K = 1, myNz
152     DO J = 1, sNy+1
153     DO I = 0, exchWidthX-1
154    
155     C Tile Even:Even+1 [get] [North<-South]
156     array(J,sNy+I+1,K,bt,1) = array(J,I+1,K,bn,1)
157     C Tile Even:Even+2 [get] [East<-South]
158     array(sNx+I+1,J,K,bt,1) = array(sNx+2-J,I+1,K,be,1)
159    
160     cs- these above loop should really have the same range the lower one
161     ENDDO
162     DO I = 1, exchWidthX-0
163     cs- but this replaces the missing I/O routines for now
164    
165     C Tile Even:Even-2 [get] [South<-East]
166     array(J,1-I,K,bt,1) = array(sNx+1-I,sNy+2-J,K,bs,1)
167     C Tile Even:Even-1 [get] [West<-East]
168     array(1-I,J,K,bt,1) = array(sNx+1-I,J,K,bw,1)
169    
170     ENDDO
171     ENDDO
172     ENDDO
173    
174     ENDDO
175    
176     ENDDO
177    
178     ENDIF
179     CALL BAR2(myThid)
180    
181     RETURN
182     END

  ViewVC Help
Powered by ViewVC 1.1.22