/[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.15 by afe, Thu Mar 18 14:56:25 2004 UTC revision 1.16 by afe, Thu Mar 18 22:20:38 2004 UTC
# Line 403  The arrays \varlink{exch2\_oi}{exch2_oi} Line 403  The arrays \varlink{exch2\_oi}{exch2_oi}
403  \varlink{exch2\_oj\_f}{exch2_oj_f} are indexed to tile number and  \varlink{exch2\_oj\_f}{exch2_oj_f} are indexed to tile number and
404  neighbor and specify the relative offset within the subdomain of the  neighbor and specify the relative offset within the subdomain of the
405  array index of a variable going from a neighboring tile $N$ to a local  array index of a variable going from a neighboring tile $N$ to a local
406  tile $T$.  Consider the six-tile case (Fig. \ref{fig:6tile}), where  tile $T$.  Consider \code{T=1} in the six-tile topology
407  \code{exch2\_oi(1,1)=33}, \code{exch2\_oi(2,1)=0},  (Fig. \ref{fig:6tile}), where
408  \code{exch2\_oi(3,1)=32}, and \code{exch2\_oi(4,1)=-32}.  Each of these  
409  indicates the offset in the $x$ direction \\  \begin{verbatim}
410           exch2_oi(1,1)=33
411           exch2_oi(2,1)=0
412           exch2_oi(3,1)=32
413           exch2_oi(4,1)=-32
414    \end{verbatim}
415    
416    The simplest case is \code{exch2\_oi(2,1)}, the southern neighbor,
417    which is \code{Tn=6}.  The axes of \code{T} and \code{Tn} have the
418    same orientation and their $x$ axes have the same origin, and so an
419    exchange between the two requires no changes to the $x$ index.  For
420    the western neighbor (\code{Tn=5}), \code{code\_oi(3,1)=32} since the
421    \code{x=0} vector on \code{T} corresponds to the \code{y=32} vector on
422    \code{Tn}.  The eastern edge of \code{T} shows the reverse case
423    (\code{exch2\_oi(4,1)=-32)}, where \code{x=32} on \code{T} exchanges
424    with \code{x=0} on \code{Tn=2}.  The most interesting case, where
425    \code{exch2\_oi(1,1)=33} and \code{Tn=3}, involves a reversal of
426    indices.  As in every case, the offset \code{exch2\_oi} is added to
427    the original $x$ index of \code{T} multiplied by the transformation
428    factor \code{exch2\_pi(t,N,T)}.  Here \code{exch2\_pi(1,1,1)=0} since
429    the $x$ axis of \code{T} is orthogonal to the $x$ axis of \code{Tn}.
430    \code{exch2\_pi(2,1,1)=-1} since the $x$ axis of \code{T} corresponds
431    to the $y$ axis of \code{Tn}, but the axes are reversed.  The result
432    is that the index of the northern edge of \code{T}, which runs
433    \code{(1:32)}, is transformed to
434    \code{(-1:-32)}. \code{exch2\_oi(1,1)} is then added to this range to
435    get back \code{(1:32)} -- the index of the $y$ axis of \code{Tn}.
436    This transformation may seem overly convoluted for the six-tile case,
437    but it is necessary to provide a general solution for various
438    topologies. \\
439    
440    
441    
442  Finally, \varlink{exch2\_itlo\_c}{exch2_itlo_c},  Finally, \varlink{exch2\_itlo\_c}{exch2_itlo_c},
443  \varlink{exch2\_ithi\_c}{exch2_ithi_c},  \varlink{exch2\_ithi\_c}{exch2_ithi_c},
# Line 469  This needs some diagrams. \\ Line 500  This needs some diagrams. \\
500    
501  \subsection{Key Routines}  \subsection{Key Routines}
502    
503    Most of the subroutines particular to exch2 handle the exchanges
504    themselves and are of the same format as those described in
505    \ref{sect:cube_sphere_communication} \sectiontitle{Cube sphere
506    communication}.  Like the original routines, they are written as
507    templates which the local Makefile converts from RX into RL and RS
508    forms. \\
509    
510    The interfaces with the core model subroutines are
511    \code{EXCH\_UV\_XY\_RX}, \code{EXCH\_UV\_XYZ\_RX} and \code{EXCH\_XY\_RX}.
512    They override the standard exchange routines when \code{genmake2} is
513    run with \code{exch2} option.  They in turn call the local exch2
514    subroutines \code{EXCH2\_UV\_XY\_RX} and \code{EXCH2\_UV\_XYZ\_RX} for two
515    and three dimensional vector quantities, and \code{EXCH2\_XY\_RX} and
516    \code{EXCH2\_XYZ\_RX} for two and three dimensional scalar quantities.
517    These subroutines set the dimensions of the area to be exchanged, call
518    \code{EXCH2\_RX1\_CUBE} for scalars and \code{EXCH2\_RX2\_CUBE} for
519    vectors, and then handle the singularities at the cube corners. \\
520    
521    The separate scalar and vector forms of \code{EXCH2\_RX1\_CUBE} and
522    \code{EXCH2\_RX2\_CUBE} reflect that the vector-handling subrouine needs
523    to pass both the $x$ and $y$ components of the vectors.  This arises
524    from the topological folding discussed above, where the $x$ and $y$
525    axes get swapped in some cases.  This swapping is not an issue with
526    the scalar version. These subroutines call \code{EXCH2\_SEND\_RX1} and
527    \code{EXCH2\_SEND\_RX2}, which do most of the work using the variables
528    discussed above. \\
529    
   
 \subsection{References}  

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

  ViewVC Help
Powered by ViewVC 1.1.22