/[MITgcm]/manual/s_phys_pkgs/text/exch2.tex
ViewVC logotype

Diff of /manual/s_phys_pkgs/text/exch2.tex

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

revision 1.4 by afe, Thu Jan 29 17:55:35 2004 UTC revision 1.6 by afe, Tue Feb 3 19:43:38 2004 UTC
# Line 36  points, running on a single processor. Line 36  points, running on a single processor.
36  \subsection{Key Variables}  \subsection{Key Variables}
37    
38  The descriptions of the variables are divided up into scalars,  The descriptions of the variables are divided up into scalars,
39  one-dimensional arrays indexed to the tile number, and two-dimensional  one-dimensional arrays indexed to the tile number, and two and three
40    dimensional
41  arrays indexed to tile number and neighboring tile.  This division  arrays indexed to tile number and neighboring tile.  This division
42  actually reflects  the functionality of these variables, not just the  actually reflects  the functionality of these variables: the scalars
43  whim of some FORTRAN enthusiast.  are common to every part of the topology, the tile-indexed arrays to
44    individual tiles, and the arrays indexed to tile and neighbor to
45    relationships between tiles and their neighbors.
46    
47  \subsubsection{Scalars}  \subsubsection{Scalars}
48    
# Line 60  are tile-layout-neutral and have no bear Line 63  are tile-layout-neutral and have no bear
63  arrays.  The tiles are internally stored in a range from {\em 1,bi} (in the  arrays.  The tiles are internally stored in a range from {\em 1,bi} (in the
64  x axis) and y-axis variable {\em bj} is generally ignored within the package.  x axis) and y-axis variable {\em bj} is generally ignored within the package.
65    
66  \subsubsection{One-Dimensional Arrays}  \subsubsection{Arrays Indexed to Tile Number}
67    
68  The following arrays are indexed to the tile number, and the indices are  The following arrays are of size {\em NTILES}, are indexed to the tile number,
69  omitted in their descriptions.  and the indices are omitted in their descriptions.
70    
71  The arrays {\em exch2\_tnx} and {\em exch2\_tny}  The arrays {\em exch2\_tnx} and {\em exch2\_tny}
72  express the x and y dimensions of each tile.  At present for each tile  express the x and y dimensions of each tile.  At present for each tile
# Line 72  and {\em exch2\_tny = sNy}, as assigned Line 75  and {\em exch2\_tny = sNy}, as assigned
75  MITgcm are to allow varying tile sizes.  MITgcm are to allow varying tile sizes.
76    
77  The location of the tiles' Cartesian origin within a subdomain are determined  The location of the tiles' Cartesian origin within a subdomain are determined
78  by the arrays {\em exch2\_tbasex} and {\em exch2\_tbasey}.  These  by the arrays {\em exch2\_tbasex} and {\em exch2\_tbasey}.  These variables
79    are used to relate the location of the edges of the tiles to each other.  As
80    an example, in the default six-tile topology (the degenerate case)
81    each index in these arrays are
82    set to 0.  The twenty-four, 32x32 cube face case discussed above will have
83    values of 0 or 16, depending on the quadrant the tile falls within the
84    subdomain.  {\em exch2\_myFace} contains the number of the
85    cubeface/subdomain of each tile, numbered 1-6 in the case of the standard
86    cube topology.  
87    
88    The arrays {\em exch2\_txglobalo} and {\em exch2\_txglobalo} are similar to
89    {\em exch2\_tbasex} and {\em exch2\_tbasey}, but locate the tiles within
90    the global address space, similar to that used by global files.  
91    
92    The arrays {\em exch2\_isWedge}, {\em exch2\_isEedge}, {\em exch2\_isSedge},
93    and {\em exch2\_isNedge} are set to 1 if the indexed tile lies on the edge
94    of a subdomain, 0 if not.  The values are used within the topology generator
95    to determine the orientation of neighboring tiles and to indicate whether
96    a tile lies on the corner of a subdomain.  The latter case indicates
97    special exchange and numerical handling for the singularities at the eight
98    corners of the cube.  {\em exch2\_isNedge} contains a count of how many
99    neighboring tiles each tile has, and is used for setting bounds for looping
100    over neighboring tiles.  {\em exch2\_tProc} holds the process rank of each tile,
101    and is used in interprocess communication.
102    
103    \subsubsection{Arrays Indexed to Tile Number and Neighbor}
104    
105    The following arrays are all of size {\em MAX\_NEIGHBOURS}x{\em NTILES} and
106    describe the orientations between the the tiles.
107    
108    The array {\em exch2\_neighbourId(a,T)} holds the tile number $T_{n}$ for each tile
109    {\em T}'s neighbor tile {\em a}, and {\em exch2\_opposingSend\_record(a,T)} holds
110    the index c in {\em exch2\_neighbourId(b,$T_{n}$)} that holds the tile number T.
111    In other words,
112    
113    \begin{verbatim}  
114    exch2_neighbourId( exch2_opposingSend_record(a,T), exch2_neighbourId(a,T) ) = T
115    \end{verbatim}
116    
117  \subsubsection{Two-Dimensional Arrays}  % {\em exch2\_neighbourId(exch2\_opposingSend\_record(a,T),exch2\_neighbourId(a,T))=T}.
118    % alternate version
119    
120    This is to provide a backreference from the neighbor tiles.
121    
122    
123  //  //
124    
125  \begin{verbatim}  \begin{verbatim}
126  C      NTILES            :: Number of tiles in this topology  
127  C      MAX_NEIGHBOURS    :: Maximum number of neighbours any tile has.  
128  C      exch2_domain_nxt  :: Total domain length in tiles.  
 C      exch2_domain_nyt  :: Maximum domain height in tiles.  
 C      exch2_tnx         :: Size in X for each tile.                    
 C      exch2_tny         :: Size in Y for each tile.                    
 C      exch2_tbasex      :: Tile offset in X within its sub-domain (cube face)  
 C      exch2_tbasey      :: Tile offset in Y within its sub-domain (cube face)  
 C      exch2_tglobalxlo  :: Tile base X index within global index space.  
 C      exch2_tglobalylo  :: Tile base Y index within global index space.  
 C      exch2_isWedge     :: 0 if West not at domain edge, 1 if it is.    
 C      exch2_isNedge     :: 0 if North not at domain edge, 1 if it is.    
 C      exch2_isEedge     :: 0 if East not at domain edge, 1 if it is.    
 C      exch2_isSedge     :: 0 if South not at domain edge, 1 if it is.    
 C      exch2_myFace      :: Cube face number used for I/O.                
 C      exch2_nNeighbours :: Tile neighbour entries count.                
 C      exch2_tProc       :: Rank of process owning tile                  
 C                        :: (filled at run time).                        
 C      exch2_neighbourId :: Tile number for each neighbour entry.          
 C      exch2_opposingSend_record :: Record for entry in target tile send  
 C                                :: list that has this tile and face      
 C                                :: as its target.                        
129  C      exch2_pi          :: X index row of target to source permutation  C      exch2_pi          :: X index row of target to source permutation
130  C                        :: matrix for each neighbour entry.              C                        :: matrix for each neighbour entry.            
131  C      exch2_pj          :: Y index row of target to source permutation  C      exch2_pj          :: Y index row of target to source permutation

Legend:
Removed from v.1.4  
changed lines
  Added in v.1.6

  ViewVC Help
Powered by ViewVC 1.1.22