/[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.14 by afe, Wed Mar 17 21:44:02 2004 UTC revision 1.15 by afe, Thu Mar 18 14:56:25 2004 UTC
# Line 281  generated by \file{driver.m}.\\ Line 281  generated by \file{driver.m}.\\
281  The scalar parameters \varlink{exch2\_domain\_nxt}{exch2_domain_nxt}  The scalar parameters \varlink{exch2\_domain\_nxt}{exch2_domain_nxt}
282  and \varlink{exch2\_domain\_nyt}{exch2_domain_nyt} express the number  and \varlink{exch2\_domain\_nyt}{exch2_domain_nyt} express the number
283  of tiles in the $x$ and $y$ global indices.  For example, the default  of tiles in the $x$ and $y$ global indices.  For example, the default
284  setup of six tiles (Fig. \ref{fig:6tile}) has \code{exch2\_domain\_nxt=6} and  setup of six tiles (Fig. \ref{fig:6tile}) has
285  \code{exch2\_domain\_nyt=1}.  A topology of twenty-four square tiles,  \code{exch2\_domain\_nxt=6} and \code{exch2\_domain\_nyt=1}.  A
286  four per subdomain (as in figure \ref{fig:24tile}), will have  topology of twenty-four square tiles, four per subdomain (as in figure
287  \code{exch2\_domain\_nxt=12} and \code{exch2\_domain\_nyt=2}.  Note  \ref{fig:24tile}), will have \code{exch2\_domain\_nxt=12} and
288  that these parameters express the tile layout to allow global data  \code{exch2\_domain\_nyt=2}.  Note that these parameters express the
289  files that are tile-layout-neutral and have no bearing on the internal  tile layout to allow global data files that are tile-layout-neutral
290  storage of the arrays.  The tiles are internally stored in a range  and have no bearing on the internal storage of the arrays.  The tiles
291  from \code{(1:\varlink{bi}{bi})} the $x$ axis, and $y$ axis variable  are internally stored in a range from \code{(1:\varlink{bi}{bi})} the
292  \varlink{bj}{bj} is generally ignored within the package. \\  $x$ axis, and the $y$ axis variable \varlink{bj}{bj} is generally
293    ignored within the package. \\
294    
295  \subsubsection{Arrays Indexed to Tile Number}  \subsubsection{Arrays Indexed to Tile Number}
296    
297  The following arrays are of length \code{NTILES}, are indexed to the  The following arrays are of length \code{NTILES}and are indexed to the
298  tile number, and the indices are omitted in their descriptions. \\  tile number, which is indicated in the diagrams with the notation
299    \textsf{t}$n$.  The indices are omitted in the descriptions. \\
300    
301  The arrays \varlink{exch2\_tnx}{exch2_tnx} and  The arrays \varlink{exch2\_tnx}{exch2_tnx} and
302  \varlink{exch2\_tny}{exch2_tny} express the $x$ and $y$ dimensions of  \varlink{exch2\_tny}{exch2_tny} express the $x$ and $y$ dimensions of
# Line 324  the subdomain of each tile, in a range \ Line 326  the subdomain of each tile, in a range \
326  standard cube topology and indicated by \textbf{\textsf{f}}$n$ in  standard cube topology and indicated by \textbf{\textsf{f}}$n$ in
327  figures \ref{fig:12tile} and  figures \ref{fig:12tile} and
328  \ref{fig:24tile}. \varlink{exch2\_nNeighbours}{exch2_nNeighbours}  \ref{fig:24tile}. \varlink{exch2\_nNeighbours}{exch2_nNeighbours}
329  contains a count of how many neighboring tiles each tile has, and is  contains a count the  neighboring tiles each tile has, and is
330  used for setting bounds for looping over neighboring tiles.  used for setting bounds for looping over neighboring tiles.
331  \varlink{exch2\_tProc}{exch2_tProc} holds the process rank of each  \varlink{exch2\_tProc}{exch2_tProc} holds the process rank of each
332  tile, and is used in interprocess communication.  \\  tile, and is used in interprocess communication.  \\
# Line 334  The arrays \varlink{exch2\_isWedge}{exch Line 336  The arrays \varlink{exch2\_isWedge}{exch
336  \varlink{exch2\_isEedge}{exch2_isEedge},  \varlink{exch2\_isEedge}{exch2_isEedge},
337  \varlink{exch2\_isSedge}{exch2_isSedge}, and  \varlink{exch2\_isSedge}{exch2_isSedge}, and
338  \varlink{exch2\_isNedge}{exch2_isNedge} are set to \code{1} if the  \varlink{exch2\_isNedge}{exch2_isNedge} are set to \code{1} if the
339  indexed tile lies on the edge of a subdomain, \code{0} if not.  The  indexed tile lies on the respective edge of a subdomain, \code{0} if
340  values are used within the topology generator to determine the  not.  The values are used within the topology generator to determine
341  orientation of neighboring tiles, and to indicate whether a tile lies  the orientation of neighboring tiles, and to indicate whether a tile
342  on the corner of a subdomain.  The latter case requires special  lies on the corner of a subdomain.  The latter case requires special
343  exchange and numerical handling for the singularities at the eight  exchange and numerical handling for the singularities at the eight
344  corners of the cube. \\  corners of the cube. \\
345    
# Line 350  orientations between the the tiles. \\ Line 352  orientations between the the tiles. \\
352    
353  The array \code{exch2\_neighbourId(a,T)} holds the tile number  The array \code{exch2\_neighbourId(a,T)} holds the tile number
354  \code{Tn} for each of the tile number \code{T}'s neighboring tiles  \code{Tn} for each of the tile number \code{T}'s neighboring tiles
355  \code{a}.  The neighbor tiles are indexed \code{(1:MAX\_NEIGHBOURS)}  \code{a}.  The neighbor tiles are indexed
356  in the order right to left on the north then south edges, and then top  \code{(1:exch2\_NNeighbours(T))} in the order right to left on the
357  to bottom on the east and west edges.  Maybe throw in a fig here, eh?  north then south edges, and then top to bottom on the east and west
358  \\  edges.  Maybe throw in a fig here, eh?  \\
359    
360  \sloppy  \sloppy The \code{exch2\_opposingSend\_record(a,T)} array holds the
361  The \code{exch2\_opposingSend\_record(a,T)} array holds the index  index \code{b} of the element in \texttt{exch2\_neighbourId(b,Tn)}
362  \code{b} in \texttt{exch2\_neighbourId(b,Tn)} that holds the tile  that holds the tile number \code{T}, given
363  number \code{T}.  In other words,  \code{Tn=exch2\_neighborId(a,T)}.  In other words,
364  \begin{verbatim}  \begin{verbatim}
365     exch2_neighbourId( exch2_opposingSend_record(a,T),     exch2_neighbourId( exch2_opposingSend_record(a,T),
366                        exch2_neighbourId(a,T) ) = T                        exch2_neighbourId(a,T) ) = T
# Line 366  number \code{T}.  In other words, Line 368  number \code{T}.  In other words,
368  This provides a back-reference from the neighbor tiles. \\  This provides a back-reference from the neighbor tiles. \\
369    
370  The arrays \varlink{exch2\_pi}{exch2_pi} and  The arrays \varlink{exch2\_pi}{exch2_pi} and
371  \varlink{exch2\_pj}{exch2_pj} specify the transformations of variables  \varlink{exch2\_pj}{exch2_pj} specify the transformations of indices
372  in exchanges between the neighboring tiles.  These transformations are  in exchanges between the neighboring tiles.  These transformations are
373  necessary in exchanges between subdomains because a physical vector  necessary in exchanges between subdomains because the array index in
374  component in one direction may map to one in a different direction in  one dimension may map to the other index in an adjacent subdomain, and
375  an adjacent subdomain, and may be have its indexing reversed. This  may be have its indexing reversed. This swapping arises from the
376  swapping arises from the ``folding'' of two-dimensional arrays into a  ``folding'' of two-dimensional arrays into a three-dimensional cube.
 three-dimensional cube.  
377    
378  The dimensions of \code{exch2\_pi(t,N,T)} and \code{exch2\_pj(t,N,T)}  The dimensions of \code{exch2\_pi(t,N,T)} and \code{exch2\_pj(t,N,T)}
379  are the neighbor ID \code{N} and the tile number \code{T} as explained  are the neighbor ID \code{N} and the tile number \code{T} as explained
380  above, plus a vector of length 2 containing transformation factors  above, plus a vector of length \code{2} containing transformation
381  \code{t}.  The first element of the transformation vector indicates  factors \code{t}.  The first element of the transformation vector
382  the factor \code{t} by which variables representing the same  holds the factor to multiply the index in the same axis, and the
383  \emph{physical} vector component of a tile \code{T} will be multiplied  second element holds the the same for the orthogonal index.  To
384  in exchanges with neighbor \code{N}, and the second element indicates  clarify, \code{exch2\_pi(1,N,T)} holds the mapping of the $x$ axis
385  the transform to the physical vector in the other direction.  To  index of tile \code{T} to the $x$ axis of tile \code{T}'s neighbor
386  clarify (hopefully), \code{exch2\_pi(1,N,T)} holds the transform of  \code{N}, and \code{exch2\_pi(2,N,T)} holds the mapping of \code{T}'s
387  the $i$ component of a vector variable in tile \code{T} to the $i$  $x$ index to the neighbor \code{N}'s $y$ index. \\
 component of tile \code{T}'s neighbor \code{N}, and  
 \code{exch2\_pi(2,N,T)} holds the transform of \code{T}'s $i$  
 components to the neighbor \code{N}'s $j$ component. \\  
388    
389  Under the current cube topology, one of the two elements of  One of the two elements of \code{exch2\_pi} or \code{exch2\_pj} for a
390  \code{exch2\_pi} or \code{exch2\_pj} for a given tile \code{T} and  given tile \code{T} and neighbor \code{N} will be \code{0}, reflecting
391  neighbor \code{N} will be \code{0}, reflecting the fact that the two  the fact that the two axes are orthogonal.  The other element will be
392  vector components are orthogonal.  The other element will be \code{1}  \code{1} or \code{-1}, depending on whether the axes are indexed in
393  or \code{-1}, depending on whether the components are indexed in the  the same or opposite directions.  For example, the transform vector of
394  same or opposite directions.  For example, the transform vector of the  the arrays for all tile neighbors on the same subdomain will be
 arrays for all tile neighbors on the same subdomain will be  
395  \code{(1,0)}, since all tiles on the same subdomain are oriented  \code{(1,0)}, since all tiles on the same subdomain are oriented
396  identically.  A vector direction that corresponds to the orthogonal  identically.  An axis that corresponds to the orthogonal dimension
397  dimension with the same index direction in a particular tile-neighbor  with the same index direction in a particular tile-neighbor
398  orientation will have \code{(0,1)}, whereas those in the opposite  orientation will have \code{(0,1)}.  Those in the opposite index
399  index direction will have \code{(0,-1)}. \\  direction will have \code{(0,-1)} in order to reverse the ordering. \\
400    
401  The arrays \varlink{exch2\_oi}{exch2_oi},  The arrays \varlink{exch2\_oi}{exch2_oi},
402  \varlink{exch2\_oj}{exch2_oj}, \varlink{exch2\_oi\_f}{exch2_oi_f}, and  \varlink{exch2\_oj}{exch2_oj}, \varlink{exch2\_oi\_f}{exch2_oi_f}, and

Legend:
Removed from v.1.14  
changed lines
  Added in v.1.15

  ViewVC Help
Powered by ViewVC 1.1.22