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

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

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


Revision 1.6 - (show annotations) (download) (as text)
Tue Feb 3 19:43:38 2004 UTC (21 years, 5 months ago) by afe
Branch: MAIN
Changes since 1.5: +13 -11 lines
File MIME type: application/x-tex
a couple of tweaks

1 % $Header: /u/u3/gcmpack/manual/part6/exch2.tex,v 1.5 2004/01/29 21:03:53 afe Exp $
2 % $Name: $
3
4 %% * Introduction
5 %% o what it does, citations (refs go into mitgcm_manual.bib,
6 %% preferably in alphabetic order)
7 %% o Equations
8 %% * Key subroutines and parameters
9 %% * Reference material (auto generated from Protex and structured comments)
10 %% o automatically inserted at \section{Reference}
11
12
13 \section{exch2: Extended Cubed Sphere Exchange}
14 \label{sec:exch2}
15
16
17 \subsection{Introduction}
18
19 The exch2 package is an extension to the original cubed sphere exchanges
20 to allow more flexible domain decomposition and parallelization. Cube faces
21 (subdomains) may be divided into whatever number of tiles that divide evenly
22 into the grid point dimensions of the subdomain. Furthermore, the individual
23 tiles may be run on separate processors in different combinations,
24 and whether exchanges between particular tiles occur between different
25 processors is determined at runtime.
26
27 The exchange parameters are declared in {\em W2\_EXCH2\_TOPOLOGY.h} and
28 assigned in {\em w2\_e2setup.F}, both in the
29 {\em pkg/exch2} directory. The validity of the cube topology depends
30 on the {\em SIZE.h} file as detailed below. Both files are generated by
31 Matlab scripts and
32 should not be edited. The default files provided in the release set up
33 a cube sphere arrangement of six tiles, one per subdomain, each with 32x32 grid
34 points, running on a single processor.
35
36 \subsection{Key Variables}
37
38 The descriptions of the variables are divided up into scalars,
39 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
42 actually reflects the functionality of these variables: the scalars
43 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}
48
49 The number of tiles in a particular topology is set with the parameter
50 {\em NTILES}, and the maximum number of neighbors of any tiles by
51 {\em MAX\_NEIGHBOURS}. These parameters are used for defining the size of
52 the various one and two dimensional arrays that store tile parameters
53 indexed to the tile number.
54
55 The scalar parameters {\em exch2\_domain\_nxt} and
56 {\em exch2\_domain\_nyt} express the number of tiles in the x and y global
57 indices. For example, the default setup of six tiles has
58 {\em exch2\_domain\_nxt=6} and {\em exch2\_domain\_nyt=1}. A topology of
59 twenty-four square (in gridpoints) tiles, four (2x2) per subdomain, will
60 have {\em exch2\_domain\_nxt=12} and {\em exch2\_domain\_nyt=2}. Note
61 that these parameters express the tile layout to allow global data files that
62 are tile-layout-neutral and have no bearing on the internal storage of the
63 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.
65
66 \subsubsection{Arrays Indexed to Tile Number}
67
68 The following arrays are of size {\em NTILES}, are indexed to the tile number,
69 and the indices are omitted in their descriptions.
70
71 The arrays {\em exch2\_tnx} and {\em exch2\_tny}
72 express the x and y dimensions of each tile. At present for each tile
73 {\em exch2\_tnx = sNx}
74 and {\em exch2\_tny = sNy}, as assigned in {\em SIZE.h}. Future releases of
75 MITgcm are to allow varying tile sizes.
76
77 The location of the tiles' Cartesian origin within a subdomain are determined
78 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 % {\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}
126
127
128
129 C exch2_pi :: X index row of target to source permutation
130 C :: matrix for each neighbour entry.
131 C exch2_pj :: Y index row of target to source permutation
132 C :: matrix for each neighbour entry.
133 C exch2_oi :: X index element of target to source
134 C :: offset vector for cell-centered quantities
135 C :: of each neighbor entry.
136 C exch2_oj :: Y index element of target to source
137 C :: offset vector for cell-centered quantities
138 C :: of each neighbor entry.
139 C exch2_oi_f :: X index element of target to source
140 C :: offset vector for face quantities
141 C :: of each neighbor entry.
142 C exch2_oj_f :: Y index element of target to source
143 C :: offset vector for face quantities
144 C :: of each neighbor entry.
145 \end{verbatim}
146
147
148
149
150 \subsection{Key Routines}
151
152
153
154 \subsection{References}

  ViewVC Help
Powered by ViewVC 1.1.22