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

Diff of /MITgcm/eesupp/src/exch_rx.template

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

revision 1.2 by adcroft, Tue May 29 14:01:36 2001 UTC revision 1.3 by cnh, Fri Sep 21 03:55:50 2001 UTC
# Line 3  C $Name$ Line 3  C $Name$
3    
4  #include "CPP_EEOPTIONS.h"  #include "CPP_EEOPTIONS.h"
5    
6    CBOP
7    
8    C      !ROUTINE: EXCH_RX
9    
10    C      !INTERFACE:
11         SUBROUTINE EXCH_RX(         SUBROUTINE EXCH_RX(
12       U            array,       U            array,
13       I            myOLw, myOLe, myOLs, myOLn, myNz,       I            myOLw, myOLe, myOLs, myOLn, myNz,
14       I            exchWidthX, exchWidthY,       I            exchWidthX, exchWidthY,
15       I            simulationMode, cornerMode, myThid )       I            simulationMode, cornerMode, myThid )
 C     /==========================================================\  
 C     | SUBROUTINE EXCH_RX                                       |  
 C     | o Control edge exchanges for RX array.                   |  
 C     |==========================================================|  
 C     |                                                          |  
 C     | Controlling routine for exchange of XY edges of an array |  
 C     | distributed in X and Y. The routine interfaces to        |  
 C     | communication routines that can use messages passing     |  
 C     | exchanges, put type exchanges or get type exchanges.     |  
 C     |  This allows anything from MPI to raw memory channel to  |  
 C     | memmap segments to be used as a inter-process and/or     |  
 C     | inter-thread communiation and synchronisation            |  
 C     | mechanism.                                               |  
 C     | Notes --                                                 |  
 C     | 1. Some low-level mechanisms such as raw memory-channel  |  
 C     | or SGI/CRAY shmem put do not have direct Fortran bindings|  
 C     | and are invoked through C stub routines.                 |  
 C     | 2. Although this routine is fairly general but it does   |  
 C     | require nSx and nSy are the same for all innvocations.   |  
 C     | There are many common data structures ( myByLo,          |  
 C     | westCommunicationMode, mpiIdW etc... ) tied in with      |  
 C     | (nSx,nSy). To support arbitray nSx and nSy would require |  
 C     | general forms of these.                                  |  
 C     |                                                          |  
 C     \==========================================================/  
16        IMPLICIT NONE        IMPLICIT NONE
17    
18    C     !DESCRIPTION:
19    C     *==========================================================*
20    C     | SUBROUTINE EXCH_RX                                        
21    C     | o Control edge exchanges for RX array.                    
22    C     *==========================================================*
23    C     |                                                          
24    C     | Controlling routine for exchange of XY edges of an array  
25    C     | distributed in X and Y. The routine interfaces to        
26    C     | communication routines that can use messages passing      
27    C     | exchanges, put type exchanges or get type exchanges.      
28    C     |  This allows anything from MPI to raw memory channel to  
29    C     | memmap segments to be used as a inter-process and/or      
30    C     | inter-thread communiation and synchronisation            
31    C     | mechanism.                                                
32    C     | Notes --                                                  
33    C     | 1. Some low-level mechanisms such as raw memory-channel  
34    C     | or SGI/CRAY shmem put do not have direct Fortran bindings
35    C     | and are invoked through C stub routines.                  
36    C     | 2. Although this routine is fairly general but it does    
37    C     | require nSx and nSy are the same for all innvocations.    
38    C     | There are many common data structures ( myByLo,          
39    C     | westCommunicationMode, mpiIdW etc... ) tied in with      
40    C     | (nSx,nSy). To support arbitray nSx and nSy would require  
41    C     | general forms of these.                                  
42    C     | 3. RX arrays are used to generate code for both _RL and
43    C     | _RS forms.                                                
44    C     *==========================================================*
45    
46    C      !USES:
47  C      == Global data ==  C      == Global data ==
48  #include "SIZE.h"  #include "SIZE.h"
49  #include "EEPARAMS.h"  #include "EEPARAMS.h"
50  #include "EESUPPORT.h"  #include "EESUPPORT.h"
51  #include "EXCH.h"  #include "EXCH.h"
52    
53    C      !INPUT/OUTPUT PARAMETERS:
54  C      == Routine arguments ==  C      == Routine arguments ==
55  C      array - Array with edges to exchange.  C      array :: Array with edges to exchange.
56  C      myOLw - West, East, North and South overlap region sizes.  C      myOLw :: West, East, North and South overlap region sizes.
57  C      myOLe  C      myOLe
58  C      myOLn  C      myOLn
59  C      myOLs  C      myOLs
60  C      exchWidthX - Width of data region exchanged in X.  C      exchWidthX :: Width of data region exchanged in X.
61  C      exchWidthY - Width of data region exchanged in Y.  C      exchWidthY :: Width of data region exchanged in Y.
62  C                   Note --  C                    Note --
63  C                   1. In theory one could have a send width and  C                    1. In theory one could have a send width and
64  C                   a receive width for each face of each tile. The only  C                    a receive width for each face of each tile. The only
65  C                   restriction woul be that the send width of one  C                    restriction woul be that the send width of one
66  C                   face should equal the receive width of the sent to  C                    face should equal the receive width of the sent to
67  C                   tile face. Dont know if this would be useful. I  C                    tile face. Dont know if this would be useful. I
68  C                   have left it out for now as it requires additional  C                    have left it out for now as it requires additional
69  C                   bookeeping.  C                     bookeeping.
70  C      simulationMode - Forward or reverse mode exchange ( provides  C      simulationMode :: Forward or reverse mode exchange ( provides
71  C                       support for adjoint integration of code. )  C                        support for adjoint integration of code. )
72  C      cornerMode     - Flag indicating whether corner updates are  C      cornerMode     :: Flag indicating whether corner updates are
73  C                       needed.  C                        needed.
74  C      myThid         - Thread number of this instance of S/R EXCH...  C      myThid         :: Thread number of this instance of S/R EXCH...
75         INTEGER myOLw         INTEGER myOLw
76         INTEGER myOLe         INTEGER myOLe
77         INTEGER myOLs         INTEGER myOLs
# Line 76  C      myThid         - Thread number of Line 86  C      myThid         - Thread number of
86       &           1-myOLs:sNy+myOLn,       &           1-myOLs:sNy+myOLn,
87       &           myNZ, nSx, nSy)       &           myNZ, nSx, nSy)
88    
89    C      !LOCAL VARIABLES:
90  C      == Local variables ==  C      == Local variables ==
91  C      theSimulationMode - Holds working copy of simulation mode  C      theSimulationMode :: Holds working copy of simulation mode
92  C      theCornerMode     - Holds working copy of corner mode  C      theCornerMode     :: Holds working copy of corner mode
93    C      I,J,K,bi,bj       :: Loop counters
94         INTEGER theSimulationMode         INTEGER theSimulationMode
95         INTEGER theCornerMode         INTEGER theCornerMode
96         INTEGER I,J,K,bi,bj         INTEGER I,J,K,bi,bj
97    CEOP
98    
99         theSimulationMode = simulationMode         theSimulationMode = simulationMode
100         theCornerMode     = cornerMode         theCornerMode     = cornerMode

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.3

  ViewVC Help
Powered by ViewVC 1.1.22