/[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.5 by afe, Thu Jan 29 21:03:53 2004 UTC revision 1.7 by afe, Wed Feb 11 20:48:14 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 of size {\em NTILES}, are indexed to the tile number,  The following arrays are of size {\em NTILES}, are indexed to the tile number,
69  and the indices are omitted in their descriptions.  and the indices are omitted in their descriptions.
# Line 97  neighboring tiles each tile has, and is Line 100  neighboring tiles each tile has, and is
100  over neighboring tiles.  {\em exch2\_tProc} holds the process rank of each tile,  over neighboring tiles.  {\em exch2\_tProc} holds the process rank of each tile,
101  and is used in interprocess communication.  and is used in interprocess communication.
102    
103  \subsubsection{Two-Dimensional Arrays}  \subsubsection{Arrays Indexed to Tile Number and Neighbor}
104    
105  The following arrays are all of size {\em MAX\_NEIGHBOURS}x{\em NTILES} and  The following arrays are all of size {\em MAX\_NEIGHBOURS}x{\em NTILES} and
106  describe the orientations between the the tiles.  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  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  {\em T}'s neighbor tile {\em a}.  The neighbor tiles are indexed {\em 1,MAX\_NEIGHBOURS }
110    in the order right to left on the north then south edges, and then top to bottom on the east
111    and west edges. maybe throw in a fig here, eh?  
112    
113    {\em exch2\_opposingSend\_record(a,T)} holds
114  the index c in {\em exch2\_neighbourId(b,$T_{n}$)} that holds the tile number T.  the index c in {\em exch2\_neighbourId(b,$T_{n}$)} that holds the tile number T.
115  In other words,  In other words,
116    
117  \begin{verbatim}    \begin{verbatim}  
118  exch2_neighbourId( exch2_opposingSend_record(a,T), exch2_neighbourId(a,T) ) = T  exch2_neighbourId( exch2_opposingSend_record(a,T),
119                               exch2_neighbourId(a,T) ) = T
120  \end{verbatim}  \end{verbatim}
121    
122  {\em exch2\_neighbourId(exch2\_opposingSend\_record(a,T),exch2\_neighbourId(a,T))=T}.  % {\em exch2\_neighbourId(exch2\_opposingSend\_record(a,T),exch2\_neighbourId(a,T))=T}.
123    % alternate version
124    
125  This is to provide a backreference from the neighbor tiles.  This is to provide a backreference from the neighbor tiles.
126    
127    The arrays {\em exch2\_pi }, {\em exch2\_pj }, {\em exch2\_oi },
128    {\em exch2\_oj }, {\em exch2\_oi\_f }, and {\em exch2\_oj\_f }  specify
129    the transformations in exchanges between the neighboring tiles.  The dimensions  
130    of {\em exch2\_pi(t,N,T) } and {\em exch2\_pj(t,N,T) } are the neighbor ID
131    { \em N } and the tile number {\em T } as explained above, plus the transformation
132    vector {\em t }, of length two.  The first element of the transformation vector indicates
133    the factor by which variables representing the same vector component  of a tile
134    will be multiplied, and the second element indicates the transform to the
135    variable in the other direction.  As an example, {\em exch2\_pi(1,N,T) } holds the
136    transform of the i-component of a vector variable in tile {\em T } to the i-component of
137    tile  {\em T }'s neighbor  {\em N }, and {\em exch2\_pi(2,N,T) } hold the component
138    of neighbor  {\em N }'s j-component.
139    
140    Under the current cube topology, one of the two elements of {\em exch2\_pi } or {\em exch2\_pj }
141    for a given tile   {\em T } and  neighbor  {\em N } will be 0, reflecting the fact that
142    the vector components are orthogonal.  The other element will be 1 or -1, depending on whether
143    the components are indexed in the same or opposite directions.  For example, the transform dimension
144    of the arrays for all tile neighbors on the same subdomain will be {\em [1 , 0] }, since all tiles on
145    the same subdomain are oriented identically.  Vectors that correspond to the orthogonal dimension with the
146    same index direction will have {\em [0 , 1] }, whereas those in the opposite index direction will have
147    {\em [0 , -1] }.
148    
149    
150    
151    
152  //  //
153    
154  \begin{verbatim}  \begin{verbatim}
155    
156    
157  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.                        
158  C      exch2_pi          :: X index row of target to source permutation  C      exch2_pi          :: X index row of target to source permutation
159  C                        :: matrix for each neighbour entry.              C                        :: matrix for each neighbour entry.            
160  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.5  
changed lines
  Added in v.1.7

  ViewVC Help
Powered by ViewVC 1.1.22