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

Annotation of /MITgcm/eesupp/src/exch_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, 8 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, 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, checkpoint59e, checkpoint59d, checkpoint59a, checkpoint55f_post, checkpoint59c, checkpoint59b, 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, 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, checkpoint52n_post, checkpoint46e_post, 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, checkpoint50, checkpoint57k_post, checkpoint51f_pre, chkpt44c_post, checkpoint53b_post, checkpoint47h_post, checkpoint52a_post, checkpoint57w_post, 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, checkpoint54c_post, checkpoint51a_post, 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: +58 -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_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     C !ROUTINE: EXCH_RX_CUBE
8    
9     C !INTERFACE:
10 adcroft 1.2 SUBROUTINE EXCH_RX_CUBE(
11     U array,
12     I myOLw, myOLe, myOLn, myOLs, myNz,
13     I exchWidthX, exchWidthY,
14     I simulationMode, cornerMode, myThid )
15     IMPLICIT NONE
16    
17 cnh 1.3 C !DESCRIPTION:
18     C *==========================================================*
19     C | SUBROUTINE EXCH_RX_CUBE
20     C | o Control edge exchanges for RX array.
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 |
42     C *==========================================================*
43    
44     C !USES:
45 adcroft 1.2 C == Global data ==
46     #include "SIZE.h"
47     #include "EEPARAMS.h"
48     #include "EESUPPORT.h"
49     #include "EXCH.h"
50    
51 cnh 1.3 C !INPUT/OUTPUT PARAMETERS:
52 adcroft 1.2 C == Routine arguments ==
53 cnh 1.3 C array :: Array with edges to exchange.
54     C myOLw :: West, East, North and South overlap region sizes.
55 adcroft 1.2 C myOLe
56     C myOLn
57     C myOLs
58 cnh 1.3 C exchWidthX :: Width of data region exchanged in X.
59     C exchWidthY :: Width of data region exchanged in Y.
60     C Note --
61     C 1. In theory one could have a send width and
62     C a receive width for each face of each tile. The only
63     C restriction woul be that the send width of one
64     C face should equal the receive width of the sent to
65     C tile face. Dont know if this would be useful. I
66     C have left it out for now as it requires additional
67     C bookeeping.
68     C simulationMode :: Forward or reverse mode exchange ( provides
69     C support for adjoint integration of code. )
70     C cornerMode :: Flag indicating whether corner updates are
71     C needed.
72     C myThid :: Thread number of this instance of S/R EXCH...
73 adcroft 1.2 INTEGER myOLw
74     INTEGER myOLe
75     INTEGER myOLs
76     INTEGER myOLn
77     INTEGER myNz
78     INTEGER exchWidthX
79     INTEGER exchWidthY
80     INTEGER simulationMode
81     INTEGER cornerMode
82     INTEGER myThid
83     _RX array(1-myOLw:sNx+myOLe,
84     & 1-myOLs:sNy+myOLn,
85     & myNZ, nSx, nSy)
86    
87 cnh 1.3 C !LOCAL VARIABLES:
88 adcroft 1.2 C == Local variables ==
89 cnh 1.3 C theSimulationMode :: Holds working copy of simulation mode
90     C theCornerMode :: Holds working copy of corner mode
91     C I,J,K,bl,bt,bn,bs :: Loop and index counters
92     C be,bw
93 adcroft 1.2 INTEGER theSimulationMode
94     INTEGER theCornerMode
95     INTEGER I,J,K
96     INTEGER bl,bt,bn,bs,be,bw
97     C == Statement function ==
98     C tilemod - Permutes indices to return neighboring tile index on
99     C six face cube.
100     INTEGER tilemod
101     tilemod(I)=1+mod(I-1+6,6)
102 cnh 1.3 CEOP
103 adcroft 1.2
104     theSimulationMode = simulationMode
105     theCornerMode = cornerMode
106    
107     C For now tile<->tile exchanges are sequentialised through
108     C thread 1. This is a temporary feature for preliminary testing until
109     C general tile decomposistion is in place (CNH April 11, 2001)
110     CALL BAR2( myThid )
111     IF ( myThid .EQ. 1 ) THEN
112    
113     DO bl = 1, 5, 2
114    
115     bt = bl
116     bn=tilemod(bt+2)
117     bs=tilemod(bt-1)
118     be=tilemod(bt+1)
119     bw=tilemod(bt-2)
120    
121     DO K = 1, myNz
122     DO J = 1, sNy
123     DO I = 1, exchWidthX
124    
125     C Tile Odd:Odd+2 [get] [North<-West]
126     array(J,sNy+I,K,bt,1) = array(I,sNy+1-J,K,bn,1)
127     C Tile Odd:Odd-1 [get] [South<-North]
128     array(J,1-I,K,bt,1) = array(J,sNy+1-I,K,bs,1)
129     C Tile Odd:Odd+1 [get] [East<-West]
130     array(sNx+I,J,K,bt,1) = array(I,J,K,be,1)
131     C Tile Odd:Odd-2 [get] [West<-North]
132     array(1-I,J,K,bt,1) = array(sNx+1-J,sNy+1-I,K,bw,1)
133    
134     ENDDO
135     ENDDO
136     ENDDO
137    
138     bt = bl+1
139     bn=tilemod(bt+1)
140     bs=tilemod(bt-2)
141     be=tilemod(bt+2)
142     bw=tilemod(bt-1)
143    
144     DO K = 1, myNz
145     DO J = 1, sNy
146     DO I = 1, exchWidthX
147    
148     C Tile Even:Even+1 [get] [North<-South]
149     array(J,sNy+I,K,bt,1) = array(J,I,K,bn,1)
150     C Tile Even:Even-2 [get] [South<-East]
151     array(J,1-I,K,bt,1) = array(sNx+1-I,sNy+1-J,K,bs,1)
152     C Tile Even:Even+2 [get] [East<-South]
153     array(sNx+I,J,K,bt,1) = array(sNx+1-J,I,K,be,1)
154     C Tile Even:Even-1 [get] [West<-East]
155     array(1-I,J,K,bt,1) = array(sNx+1-I,J,K,bw,1)
156    
157     ENDDO
158     ENDDO
159     ENDDO
160    
161     ENDDO
162    
163     ENDIF
164     CALL BAR2(myThid)
165    
166     RETURN
167     END

  ViewVC Help
Powered by ViewVC 1.1.22