/[MITgcm]/MITgcm/pkg/autodiff/exch_ad.F
ViewVC logotype

Annotation of /MITgcm/pkg/autodiff/exch_ad.F

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


Revision 1.3 - (hide annotations) (download)
Fri Jul 13 13:33:49 2001 UTC (22 years, 10 months ago) by heimbach
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, checkpoint40pre3, checkpoint51l_post, checkpoint40pre7, checkpoint40pre6, checkpoint48i_post, checkpoint57r_post, checkpoint40pre9, checkpoint40pre8, 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, c49_autodiff, 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, checkpoint57f_post, checkpoint52e_post, checkpoint51n_pre, checkpoint47d_post, icebear5, icebear4, icebear3, icebear2, checkpoint53d_post, checkpoint46d_pre, checkpoint40pre2, 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, checkpoint40pre4, 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, release1_p11, 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, checkpoint59g, checkpoint59f, checkpoint59a, checkpoint55f_post, checkpoint59c, checkpoint59b, checkpoint59h, 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, checkpoint40pre5, 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, checkpoint40, 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: +60 -48 lines
o Modified some flow directives
o Added new flow directives
o Added new adjoint support routines, in particular for
  new exchange routines and new packages debug/, monitor/

1 heimbach 1.1 C /==========================================================\
2 heimbach 1.3 C | SUBROUTINEs adexch_xy_rs adexch_xyz_rs |
3     C | adexch_xy_rl adexch_xyz_rl |
4     C | adexch_xz_rs adexch_yz_rs |
5     C | adexch_xz_rl adexch_yz_rl |
6 heimbach 1.1 C | o adjoint routines to exchange routines |
7     C |==========================================================|
8     C | These routines essentially are calling the original |
9     C | routines in reverse mode. |
10     C | These are regular adjoint routines with no innermost |
11     C | dimension added. |
12     C | Calls to these routines will be generated automatically |
13     C | by TAMC if correct flow directives are given |
14     C | tamc -reverse .... |
15     C | |
16     C | written and tested by Ralf Giering, Jan. 14th 1999 |
17 heimbach 1.2 C | added new S/R's for _xz_ , _yz_ heimbach@mit.edu May-01 |
18 heimbach 1.1 C \==========================================================/
19    
20     #include "CPP_EEOPTIONS.h"
21    
22     CStartOfInterface
23 heimbach 1.3 SUBROUTINE adexch_xy_rs(
24 heimbach 1.1 I myThid
25     U , adphi
26     & )
27     C /==========================================================\
28 heimbach 1.3 C | SUBROUTINE ADEXCH_XY_RS adjoint of EXCH_XY_RS |
29 heimbach 1.1 C | o Handle exchanges for real*4, two-dimensional arrays. |
30     C |==========================================================|
31     C === Global data ===
32     implicit none
33     #include "SIZE.h"
34     #include "EEPARAMS.h"
35     #include "EESUPPORT.h"
36    
37     C === Routine arguments ===
38     C phi - Array who's overlap regions are to be exchanged
39     C myThid - My thread id.
40     _RS adphi(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
41     INTEGER myThid
42     CEndOfInterface
43     C == Local variables ==
44     C OL[wens] - Overlap extents in west, east, north, south.
45     C exchWidth[XY] - Extent of regions that will be exchanged.
46 heimbach 1.2 INTEGER OLw, OLe, OLn, OLs, exchWidthX, exchWidthY
47     INTEGER mysNx, mysNy, myNz
48 heimbach 1.1
49     OLw = OLx
50     OLe = OLx
51     OLn = OLy
52     OLs = OLy
53     exchWidthX = OLx
54     exchWidthY = OLy
55 heimbach 1.2 mysNx = sNx
56     mysNy = sNy
57 heimbach 1.1 myNz = 1
58     C ** NOTE ** The exchange routine we use here does not
59     C require the preceeding and following barriers.
60     C However, the slow, simple exchange interface
61     C that is calling it here is meant to ensure
62     C that threads are synchronised before exchanges
63     C begine.
64 heimbach 1.3 IF (useCubedSphereExchange) THEN
65     CALL EXCH_RS_CUBE( adphi,
66     I OLw, OLe, OLs, OLn, myNz,
67     I exchWidthX, exchWidthY,
68     I REVERSE_SIMULATION, EXCH_UPDATE_CORNERS, myThid )
69     ELSE
70     CALL EXCH_RS( adphi,
71     I OLw, OLe, OLs, OLn, myNz,
72 heimbach 1.1 I exchWidthX, exchWidthY,
73     I REVERSE_SIMULATION, EXCH_UPDATE_CORNERS, myThid )
74 heimbach 1.3 ENDIF
75 heimbach 1.1
76     RETURN
77     END
78    
79    
80     CStartOfInterface
81 heimbach 1.3 SUBROUTINE adexch_xy_rl(
82 heimbach 1.1 I myThid
83     U , adphi
84     & )
85     C /==========================================================\
86 heimbach 1.3 C | SUBROUTINE ADEXCH_XY_RL adjoint of EXCH_XY_RL |
87 heimbach 1.1 C | o Handle exchanges for real*8, two-dimensional arrays. |
88     C |==========================================================|
89     C === Global data ===
90     #include "SIZE.h"
91     #include "EEPARAMS.h"
92     #include "EESUPPORT.h"
93    
94     C === Routine arguments ===
95     C phi - Array who's overlap regions are to be exchanged
96     C myThid - My thread id.
97     _RL adphi(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
98     INTEGER myThid
99     CEndOfInterface
100     C == Local variables ==
101     C OL[wens] - Overlap extents in west, east, north, south.
102     C exchWidth[XY] - Extent of regions that will be exchanged.
103 heimbach 1.2 INTEGER OLw, OLe, OLn, OLs, exchWidthX, exchWidthY
104     INTEGER mysNx, mysNy, myNz
105 heimbach 1.1
106     OLw = OLx
107     OLe = OLx
108     OLn = OLy
109     OLs = OLy
110     exchWidthX = OLx
111     exchWidthY = OLy
112 heimbach 1.2 mysNx = sNx
113     mysNy = sNy
114 heimbach 1.1 myNz = 1
115     C ** NOTE ** The exchange routine we use here does not
116     C require the preceeding and following barriers.
117     C However, the slow, simple exchange interface
118     C that is calling it here is meant to ensure
119     C that threads are synchronised before exchanges
120     C begine.
121 heimbach 1.3 IF (useCubedSphereExchange) THEN
122     CALL EXCH_RL_CUBE( adphi,
123     I OLw, OLe, OLs, OLn, myNz,
124     I exchWidthX, exchWidthY,
125     I REVERSE_SIMULATION, EXCH_UPDATE_CORNERS, myThid )
126     ELSE
127     CALL EXCH_RL( adphi,
128     I OLw, OLe, OLs, OLn, myNz,
129 heimbach 1.1 I exchWidthX, exchWidthY,
130     I REVERSE_SIMULATION, EXCH_UPDATE_CORNERS, myThid )
131 heimbach 1.3 ENDIF
132 heimbach 1.1
133     RETURN
134     END
135    
136    
137     CStartOfInterface
138 heimbach 1.3 SUBROUTINE adexch_xyz_rs(
139 heimbach 1.1 I myThid
140     U , adphi
141     & )
142     C /==========================================================\
143 heimbach 1.3 C | SUBROUTINE ADEXCH_XYZ_RS adjoint of EXCH_XYZ_RS |
144 heimbach 1.1 C | o Handle exchanges for real*4, two-dimensional arrays. |
145     C |==========================================================|
146     C === Global data ===
147     #include "SIZE.h"
148     #include "EEPARAMS.h"
149     #include "EESUPPORT.h"
150    
151     C === Routine arguments ===
152     C phi - Array who's overlap regions are to be exchanged
153     C myThid - My thread id.
154     _RS adphi(1-OLx:sNx+OLx,1-OLy:sNy+OLy,1:Nr,nSx,nSy)
155     INTEGER myThid
156     CEndOfInterface
157     C == Local variables ==
158     C OL[wens] - Overlap extents in west, east, north, south.
159     C exchWidth[XYZ] - Extent of regions that will be exchanged.
160 heimbach 1.2 INTEGER OLw, OLe, OLn, OLs, exchWidthX, exchWidthY
161     INTEGER mysNx, mysNy, myNz
162 heimbach 1.1
163     OLw = OLx
164     OLe = OLx
165     OLn = OLy
166     OLs = OLy
167     exchWidthX = OLx
168     exchWidthY = OLy
169 heimbach 1.2 mysNx = sNx
170     mysNy = sNy
171 heimbach 1.1 myNz = Nr
172     C ** NOTE ** The exchange routine we use here does not
173     C require the preceeding and following barriers.
174     C However, the slow, simple exchange interface
175     C that is calling it here is meant to ensure
176     C that threads are synchronised before exchanges
177     C begine.
178 heimbach 1.3 IF (useCubedSphereExchange) THEN
179     CALL EXCH_RS_CUBE( adphi,
180     I OLw, OLe, OLs, OLn, myNz,
181     I exchWidthX, exchWidthY,
182     I REVERSE_SIMULATION, EXCH_UPDATE_CORNERS, myThid )
183     ELSE
184     CALL EXCH_RS( adphi,
185     I OLw, OLe, OLs, OLn, myNz,
186 heimbach 1.1 I exchWidthX, exchWidthY,
187     I REVERSE_SIMULATION, EXCH_UPDATE_CORNERS, myThid )
188 heimbach 1.3 ENDIF
189 heimbach 1.1
190     RETURN
191     END
192    
193    
194     CStartOfInterface
195 heimbach 1.3 SUBROUTINE adexch_xyz_rl(
196 heimbach 1.1 I myThid
197     U , adphi
198     & )
199     C /==========================================================\
200 heimbach 1.3 C | SUBROUTINE ADEXCH_XYZ_RL adjoint of EXCH_XYZ_RL |
201 heimbach 1.1 C | o Handle exchanges for real*8, two-dimensional arrays. |
202     C |==========================================================|
203     C === Global data ===
204     #include "SIZE.h"
205     #include "EEPARAMS.h"
206     #include "EESUPPORT.h"
207    
208     C === Routine arguments ===
209     C phi - Array who's overlap regions are to be exchanged
210     C myThid - My thread id.
211     _RL adphi(1-OLx:sNx+OLx,1-OLy:sNy+OLy,1:Nr,nSx,nSy)
212     INTEGER myThid
213     CEndOfInterface
214     C == Local variables ==
215     C OL[wens] - Overlap extents in west, east, north, south.
216     C exchWidth[XYZ] - Extent of regions that will be exchanged.
217 heimbach 1.2 INTEGER OLw, OLe, OLn, OLs, exchWidthX, exchWidthY
218     INTEGER mysNx, mysNy, myNz
219 heimbach 1.1
220     OLw = OLx
221     OLe = OLx
222     OLn = OLy
223     OLs = OLy
224     exchWidthX = OLx
225     exchWidthY = OLy
226 heimbach 1.2 mysNx = sNx
227     mysNy = sNy
228     myNz = Nr
229     C ** NOTE ** The exchange routine we use here does not
230     C require the preceeding and following barriers.
231     C However, the slow, simple exchange interface
232     C that is calling it here is meant to ensure
233     C that threads are synchronised before exchanges
234     C begine.
235 heimbach 1.3 IF (useCubedSphereExchange) THEN
236     CALL EXCH_RL_CUBE( adphi,
237     I OLw, OLe, OLs, OLn, myNz,
238     I exchWidthX, exchWidthY,
239     I REVERSE_SIMULATION, EXCH_UPDATE_CORNERS, myThid )
240     ELSE
241     CALL EXCH_RL( adphi,
242     I OLw, OLe, OLs, OLn, myNz,
243 heimbach 1.2 I exchWidthX, exchWidthY,
244     I REVERSE_SIMULATION, EXCH_UPDATE_CORNERS, myThid )
245 heimbach 1.3 ENDIF
246 heimbach 1.2
247     RETURN
248     END
249    
250    
251     CStartOfInterface
252 heimbach 1.3 SUBROUTINE adexch_xz_rs(
253 heimbach 1.2 I myThid
254     U , adphi
255     & )
256     C /==========================================================\
257 heimbach 1.3 C | SUBROUTINE ADEXCH_XZ_RS adjoint of EXCH_XZ_RS |
258 heimbach 1.2 C | o Handle exchanges for real*4, two-dimensional arrays. |
259     C |==========================================================|
260     C === Global data ===
261     #include "SIZE.h"
262     #include "EEPARAMS.h"
263     #include "EESUPPORT.h"
264    
265     C === Routine arguments ===
266     C phi - Array who's overlap regions are to be exchanged
267     C myThid - My thread id.
268     _RS adphi(1-OLx:sNx+OLx,1,1:Nr,nSx,nSy)
269     INTEGER myThid
270     CEndOfInterface
271     C == Local variables ==
272     C OL[wens] - Overlap extents in west, east, north, south.
273     C exchWidth[XYZ] - Extent of regions that will be exchanged.
274     INTEGER OLw, OLe, OLn, OLs, exchWidthX, exchWidthY
275     INTEGER mysNx, mysNy, myNz
276    
277     OLw = OLx
278     OLe = OLx
279     OLn = 0
280     OLs = 0
281     exchWidthX = OLx
282     exchWidthY = 0
283     mysNx = sNx
284     mysNy = 1
285     myNz = Nr
286     C ** NOTE ** The exchange routine we use here does not
287     C require the preceeding and following barriers.
288     C However, the slow, simple exchange interface
289     C that is calling it here is meant to ensure
290     C that threads are synchronised before exchanges
291     C begine.
292     CALL EXCH_RS( adphi,
293 heimbach 1.3 I OLw, OLe, OLs, OLn, myNz,
294 heimbach 1.2 I exchWidthX, exchWidthY,
295     I REVERSE_SIMULATION, EXCH_UPDATE_CORNERS, myThid )
296    
297     RETURN
298     END
299    
300    
301     CStartOfInterface
302 heimbach 1.3 SUBROUTINE adexch_xz_rl(
303 heimbach 1.2 I myThid
304     U , adphi
305     & )
306     C /==========================================================\
307 heimbach 1.3 C | SUBROUTINE ADEXCH_XZ_RL adjoint of EXCH_XZ_RL |
308 heimbach 1.2 C | o Handle exchanges for real*8, two-dimensional arrays. |
309     C |==========================================================|
310     C === Global data ===
311     #include "SIZE.h"
312     #include "EEPARAMS.h"
313     #include "EESUPPORT.h"
314    
315     C === Routine arguments ===
316     C phi - Array who's overlap regions are to be exchanged
317     C myThid - My thread id.
318     _RL adphi(1-OLx:sNx+OLx,1,1:Nr,nSx,nSy)
319     INTEGER myThid
320     CEndOfInterface
321     C == Local variables ==
322     C OL[wens] - Overlap extents in west, east, north, south.
323     C exchWidth[XYZ] - Extent of regions that will be exchanged.
324     INTEGER OLw, OLe, OLn, OLs, exchWidthX, exchWidthY
325     INTEGER mysNx, mysNy, myNz
326    
327     OLw = OLx
328     OLe = OLx
329     OLn = 0
330     OLs = 0
331     exchWidthX = OLx
332     exchWidthY = 0
333     mysNx = sNx
334     mysNy = 1
335     myNz = Nr
336     C ** NOTE ** The exchange routine we use here does not
337     C require the preceeding and following barriers.
338     C However, the slow, simple exchange interface
339     C that is calling it here is meant to ensure
340     C that threads are synchronised before exchanges
341     C begine.
342     CALL EXCH_RL( adphi,
343 heimbach 1.3 I OLw, OLe, OLs, OLn, myNz,
344 heimbach 1.2 I exchWidthX, exchWidthY,
345     I REVERSE_SIMULATION, EXCH_UPDATE_CORNERS, myThid )
346    
347     RETURN
348     END
349    
350    
351     CStartOfInterface
352 heimbach 1.3 SUBROUTINE adexch_yz_rs(
353 heimbach 1.2 I myThid
354     U , adphi
355     & )
356     C /==========================================================\
357 heimbach 1.3 C | SUBROUTINE ADEXCH_YZ_RS adjoint of EXCH_YZ_RS |
358 heimbach 1.2 C | o Handle exchanges for real*4, two-dimensional arrays. |
359     C |==========================================================|
360     C === Global data ===
361     #include "SIZE.h"
362     #include "EEPARAMS.h"
363     #include "EESUPPORT.h"
364    
365     C === Routine arguments ===
366     C phi - Array who's overlap regions are to be exchanged
367     C myThid - My thread id.
368     _RS adphi(1,1-OLy:sNy+OLy,1:Nr,nSx,nSy)
369     INTEGER myThid
370     CEndOfInterface
371     C == Local variables ==
372     C OL[wens] - Overlap extents in west, east, north, south.
373     C exchWidth[XYZ] - Extent of regions that will be exchanged.
374     INTEGER OLw, OLe, OLn, OLs, exchWidthX, exchWidthY
375     INTEGER mysNx, mysNy, myNz
376    
377     OLw = 0
378     OLe = 0
379     OLn = OLy
380     OLs = OLy
381     exchWidthX = 0
382     exchWidthY = OLy
383     mysNx = 1
384     mysNy = sNy
385     myNz = Nr
386     C ** NOTE ** The exchange routine we use here does not
387     C require the preceeding and following barriers.
388     C However, the slow, simple exchange interface
389     C that is calling it here is meant to ensure
390     C that threads are synchronised before exchanges
391     C begine.
392     CALL EXCH_RS( adphi,
393 heimbach 1.3 I OLw, OLe, OLs, OLn, myNz,
394 heimbach 1.2 I exchWidthX, exchWidthY,
395     I REVERSE_SIMULATION, EXCH_UPDATE_CORNERS, myThid )
396    
397     RETURN
398     END
399    
400    
401     CStartOfInterface
402 heimbach 1.3 SUBROUTINE adexch_yz_rl(
403 heimbach 1.2 I myThid
404     U , adphi
405     & )
406     C /==========================================================\
407 heimbach 1.3 C | SUBROUTINE ADEXCH_YZ_RL adjoint of EXCH_YZ_RL |
408 heimbach 1.2 C | o Handle exchanges for real*8, two-dimensional arrays. |
409     C |==========================================================|
410     C === Global data ===
411     #include "SIZE.h"
412     #include "EEPARAMS.h"
413     #include "EESUPPORT.h"
414    
415     C === Routine arguments ===
416     C phi - Array who's overlap regions are to be exchanged
417     C myThid - My thread id.
418     _RL adphi(1,1-OLy:sNy+OLy,1:Nr,nSx,nSy)
419     INTEGER myThid
420     CEndOfInterface
421     C == Local variables ==
422     C OL[wens] - Overlap extents in west, east, north, south.
423     C exchWidth[XYZ] - Extent of regions that will be exchanged.
424     INTEGER OLw, OLe, OLn, OLs, exchWidthX, exchWidthY
425     INTEGER mysNx, mysNy, myNz
426    
427     OLw = 0
428     OLe = 0
429     OLn = OLy
430     OLs = OLy
431     exchWidthX = 0
432     exchWidthY = OLy
433     mysNx = 1
434     mysNy = sNy
435 heimbach 1.1 myNz = Nr
436     C ** NOTE ** The exchange routine we use here does not
437     C require the preceeding and following barriers.
438     C However, the slow, simple exchange interface
439     C that is calling it here is meant to ensure
440     C that threads are synchronised before exchanges
441     C begine.
442     CALL EXCH_RL( adphi,
443 heimbach 1.3 I OLw, OLe, OLs, OLn, myNz,
444 heimbach 1.1 I exchWidthX, exchWidthY,
445     I REVERSE_SIMULATION, EXCH_UPDATE_CORNERS, myThid )
446    
447     RETURN
448     END

  ViewVC Help
Powered by ViewVC 1.1.22