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

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

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


Revision 1.14 - (hide annotations) (download) (as text)
Wed Mar 17 21:44:02 2004 UTC (21 years, 4 months ago) by afe
Branch: MAIN
Changes since 1.13: +60 -25 lines
File MIME type: application/x-tex
o more exch2

1 afe 1.14 % $Header: /u/u3/gcmpack/manual/part6/exch2.tex,v 1.13 2004/03/17 19:49:22 afe Exp $
2 afe 1.1 % $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 afe 1.10 \section{exch2: Extended Cubed Sphere \mbox{Topology}}
14 afe 1.3 \label{sec:exch2}
15    
16 afe 1.1
17     \subsection{Introduction}
18 afe 1.2
19 afe 1.12 The \texttt{exch2} package extends the original cubed
20     sphere topology configuration to allow more flexible domain
21 afe 1.9 decomposition and parallelization. Cube faces (also called
22     subdomains) may be divided into any number of tiles that divide evenly
23     into the grid point dimensions of the subdomain. Furthermore, the
24 afe 1.13 individual tiles can run on separate processors in different
25 afe 1.9 combinations, and whether exchanges between particular tiles occur
26     between different processors is determined at runtime. This
27 afe 1.10 flexibility provides for manual compile-time load balancing across a
28     relatively arbitrary number of processors. \\
29 edhill 1.8
30     The exchange parameters are declared in
31     \filelink{pkg/exch2/W2\_EXCH2\_TOPOLOGY.h}{pkg-exch2-W2_EXCH2_TOPOLOGY.h}
32     and assigned in
33 afe 1.9 \filelink{pkg/exch2/w2\_e2setup.F}{pkg-exch2-w2_e2setup.F}. The
34 afe 1.11 validity of the cube topology depends on the \file{SIZE.h} file as
35 afe 1.12 detailed below. The default files provided in the release configure a
36     cubed sphere topology of six tiles, one per subdomain, each with
37     32$\times$32 grid points, all running on a single processor. Both
38     files are generated by Matlab scripts in
39 afe 1.11 \file{utils/exch2/matlab-topology-generator}; see Section
40     \ref{sec:topogen} \sectiontitle{Generating Topology Files for exch2}
41 afe 1.12 for details on creating alternate topologies. Pregenerated examples
42     of these files with alternate topologies are provided under
43 afe 1.11 \file{utils/exch2/code-mods} along with the appropriate \file{SIZE.h}
44     file for single-processor execution.
45 afe 1.9
46     \subsection{Invoking exch2}
47    
48 afe 1.10 To use exch2 with the cubed sphere, the following conditions must be
49     met: \\
50 afe 1.9
51 afe 1.11 $\bullet$ The exch2 package is included when \file{genmake2} is run.
52     The easiest way to do this is to add the line \code{exch2} to the
53     \file{profile.conf} file -- see Section
54 afe 1.12 \ref{sect:buildingCode} \sectiontitle{Building the code} for general
55 afe 1.11 details. \\
56    
57     $\bullet$ An example of \file{W2\_EXCH2\_TOPOLOGY.h} and
58     \file{w2\_e2setup.F} must reside in a directory containing code
59     linked when \file{genmake2} runs. The safest place to put these
60     is the directory indicated in the \code{-mods=DIR} command line
61     modifier (typically \file{../code}), or the build directory. The
62     default versions of these files reside in \file{pkg/exch2} and are
63 afe 1.10 linked automatically if no other versions exist elsewhere in the
64     link path, but they should be left untouched to avoid breaking
65     configurations other than the one you intend to modify.\\
66    
67     $\bullet$ Files containing grid parameters, named
68 afe 1.13 \file{tile00$n$.mitgrid} where $n$=\code{(1:6)} (one per subdomain),
69     must be in the working directory when the MITgcm executable is run.
70 afe 1.12 These files are provided in the example experiments for cubed sphere
71     configurations with 32$\times$32 cube sides and are non-trivial to
72     generate -- please contact MITgcm support if you want to generate
73     files for other configurations. \\
74    
75     $\bullet$ As always when compiling MITgcm, the file \file{SIZE.h} must
76 afe 1.13 be placed where \file{genmake2} will find it. In particular for
77 afe 1.12 exch2, the domain decomposition specified in \file{SIZE.h} must
78     correspond with the particular configuration's topology specified in
79     \file{W2\_EXCH2\_TOPOLOGY.h} and \file{w2\_e2setup.F}. Domain
80     decomposition issues particular to exch2 are addressed in Section
81     \ref{sec:topogen} \sectiontitle{Generating Topology Files for exch2}
82     and \ref{sec:exch2mpi} \sectiontitle{exch2, SIZE.h, and MPI}; a more
83     general background on the subject relevant to MITgcm is presented in
84     Section \ref{sect:specifying_a_decomposition}
85     \sectiontitle{Specifying a decomposition}.\\
86 afe 1.9
87     As of the time of writing the following examples use exch2 and may be
88     used for guidance:
89    
90     \begin{verbatim}
91     verification/adjust_nlfs.cs-32x32x1
92     verification/adjustment.cs-32x32x1
93     verification/aim.5l_cs
94     verification/global_ocean.cs32x15
95     verification/hs94.cs-32x32x5
96     \end{verbatim}
97    
98    
99    
100    
101 afe 1.10 \subsection{Generating Topology Files for exch2}
102     \label{sec:topogen}
103    
104     Alternate cubed sphere topologies may be created using the Matlab
105 afe 1.11 scripts in \file{utils/exch2/matlab-topology-generator}. Running the
106 afe 1.12 m-file
107     \filelink{driver.m}{utils-exch2-matlab-topology-generator_driver.m}
108     from the Matlab prompt (there are no parameters to pass) generates
109     exch2 topology files \file{W2\_EXCH2\_TOPOLOGY.h} and
110     \file{w2\_e2setup.F} in the working directory and displays a figure of
111     the topology via Matlab. The other m-files in the directory are
112     subroutines of \file{driver.m} and should not be run ``bare'' except
113     for development purposes. \\
114 afe 1.10
115     The parameters that determine the dimensions and topology of the
116 afe 1.11 generated configuration are \code{nr}, \code{nb}, \code{ng},
117 afe 1.12 \code{tnx} and \code{tny}, and all are assigned early in the script. \\
118 afe 1.10
119 afe 1.12 The first three determine the size of the subdomains and
120 afe 1.10 hence the size of the overall domain. Each one determines the number
121     of grid points, and therefore the resolution, along the subdomain
122 afe 1.13 sides in a ``great circle'' around an axis of the cube. At the time
123 afe 1.10 of this writing MITgcm requires these three parameters to be equal,
124 afe 1.12 but they provide for future releases to accomodate different
125 afe 1.10 resolutions around the axes to allow (for example) greater resolution
126     around the equator.\\
127    
128 afe 1.11 The parameters \code{tnx} and \code{tny} determine the dimensions of
129     the tiles into which the subdomains are decomposed, and must evenly
130     divide the integer assigned to \code{nr}, \code{nb} and \code{ng}.
131     The result is a rectangular tiling of the subdomain. Figure
132 afe 1.13 \ref{fig:24tile} shows one possible topology for a twentyfour-tile
133 afe 1.11 cube, and figure \ref{fig:12tile} shows one for twelve tiles. \\
134 afe 1.10
135     \begin{figure}
136     \begin{center}
137     \resizebox{4in}{!}{
138     \includegraphics{part6/s24t_16x16.ps}
139     }
140     \end{center}
141 afe 1.12
142 afe 1.13 \caption{Plot of a cubed sphere topology with a 32$\times$192 domain
143 afe 1.12 divided into six 32$\times$32 subdomains, each of which is divided into four tiles
144 afe 1.13 (\code{tnx=16, tny=16}) for a total of twentyfour tiles.
145 afe 1.10 } \label{fig:24tile}
146     \end{figure}
147    
148     \begin{figure}
149     \begin{center}
150     \resizebox{4in}{!}{
151     \includegraphics{part6/s12t_16x32.ps}
152     }
153     \end{center}
154 afe 1.13 \caption{Plot of a cubed sphere topology with a 32$\times$192 domain
155 afe 1.12 divided into six 32$\times$32 subdomains of two tiles each
156     (\code{tnx=16, tny=32}).
157 afe 1.10 } \label{fig:12tile}
158     \end{figure}
159    
160 afe 1.13 \begin{figure}
161     \begin{center}
162     \resizebox{4in}{!}{
163     \includegraphics{part6/s6t_32x32.ps}
164     }
165     \end{center}
166     \caption{Plot of a cubed sphere topology with a 32$\times$192 domain
167     divided into six 32$\times$32 subdomains with one tile each
168     (\code{tnx=32, tny=32}). This is the default configuration.
169     }
170     \label{fig:6tile}
171     \end{figure}
172    
173    
174 afe 1.10 Tiles can be selected from the topology to be omitted from being
175 afe 1.12 allocated memory and processors. This tuning is useful in ocean
176     modeling for omitting tiles that fall entirely on land. The tiles
177     omitted are specified in the file
178     \filelink{blanklist.txt}{utils-exch2-matlab-topology-generator_blanklist.txt}
179     by their tile number in the topology, separated by a newline. \\
180    
181 afe 1.10
182    
183    
184 afe 1.12 \subsection{exch2, SIZE.h, and multiprocessing}
185     \label{sec:exch2mpi}
186    
187     Once the topology configuration files are created, the Fortran
188 afe 1.13 \code{PARAMETER}s in \file{SIZE.h} must be configured to match.
189     Section \ref{sect:specifying_a_decomposition} \sectiontitle{Specifying
190     a decomposition} provides a general description of domain
191     decomposition within MITgcm and its relation to \file{SIZE.h}. The
192     current section specifies certain constraints the exch2 package
193     imposes as well as describes how to enable parallel execution with
194     MPI. \\
195 afe 1.12
196     As in the general case, the parameters \varlink{sNx}{sNx} and
197     \varlink{sNy}{sNy} define the size of the individual tiles, and so
198     must be assigned the same respective values as \code{tnx} and
199     \code{tny} in \file{driver.m}.\\
200    
201     The halo width parameters \varlink{OLx}{OLx} and \varlink{OLy}{OLy}
202     have no special bearing on exch2 and may be assigned as in the general
203     case. The same holds for \varlink{Nr}{Nr}, the number of vertical
204     levels in the model.\\
205    
206     The parameters \varlink{nSx}{nSx}, \varlink{nSy}{nSy},
207     \varlink{nPx}{nPx}, and \varlink{nPy}{nPy} relate to the number of
208     tiles and how they are distributed on processors. When using exch2,
209     the tiles are stored in single dimension, and so
210     \code{\varlink{nSy}{nSy}=1} in all cases. Since the tiles as
211     configured by exch2 cannot be split up accross processors without
212     regenerating the topology, \code{\varlink{nPy}{nPy}=1} as well. \\
213    
214     The number of tiles MITgcm allocates and how they are distributed
215     between processors depends on \varlink{nPx}{nPx} and
216     \varlink{nSx}{nSx}. \varlink{nSx}{nSx} is the number of tiles per
217     processor and \varlink{nPx}{nPx} the number of processors. The total
218     number of tiles in the topology minus those listed in
219     \file{blanklist.txt} must equal \code{nSx*nPx}. \\
220    
221     The following is an example of \file{SIZE.h} for the twelve-tile
222     configuration illustrated in figure \ref{fig:12tile} running on
223     one processor: \\
224    
225     \begin{verbatim}
226     PARAMETER (
227     & sNx = 16,
228     & sNy = 32,
229     & OLx = 2,
230     & OLy = 2,
231     & nSx = 12,
232     & nSy = 1,
233     & nPx = 1,
234     & nPy = 1,
235     & Nx = sNx*nSx*nPx,
236     & Ny = sNy*nSy*nPy,
237     & Nr = 5)
238     \end{verbatim}
239    
240     The following is an example for the twentyfour-tile topology in figure
241     \ref{fig:24tile} running on six processors:
242    
243     \begin{verbatim}
244     PARAMETER (
245     & sNx = 16,
246     & sNy = 16,
247     & OLx = 2,
248     & OLy = 2,
249     & nSx = 4,
250     & nSy = 1,
251     & nPx = 6,
252     & nPy = 1,
253     & Nx = sNx*nSx*nPx,
254     & Ny = sNy*nSy*nPy,
255     & Nr = 5)
256     \end{verbatim}
257    
258    
259 afe 1.10
260    
261 afe 1.4
262     \subsection{Key Variables}
263    
264     The descriptions of the variables are divided up into scalars,
265 edhill 1.8 one-dimensional arrays indexed to the tile number, and two and three
266     dimensional arrays indexed to tile number and neighboring tile. This
267 afe 1.12 division reflects the functionality of these variables: The
268 edhill 1.8 scalars are common to every part of the topology, the tile-indexed
269 afe 1.12 arrays to individual tiles, and the arrays indexed by tile and
270     neighbor to relationships between tiles and their neighbors. \\
271 afe 1.4
272     \subsubsection{Scalars}
273    
274     The number of tiles in a particular topology is set with the parameter
275 afe 1.12 \code{NTILES}, and the maximum number of neighbors of any tiles by
276     \code{MAX\_NEIGHBOURS}. These parameters are used for defining the
277 edhill 1.8 size of the various one and two dimensional arrays that store tile
278 afe 1.12 parameters indexed to the tile number and are assigned in the files
279     generated by \file{driver.m}.\\
280 edhill 1.8
281     The scalar parameters \varlink{exch2\_domain\_nxt}{exch2_domain_nxt}
282     and \varlink{exch2\_domain\_nyt}{exch2_domain_nyt} express the number
283 afe 1.12 of tiles in the $x$ and $y$ global indices. For example, the default
284 afe 1.13 setup of six tiles (Fig. \ref{fig:6tile}) has \code{exch2\_domain\_nxt=6} and
285 afe 1.12 \code{exch2\_domain\_nyt=1}. A topology of twenty-four square tiles,
286     four per subdomain (as in figure \ref{fig:24tile}), will have
287     \code{exch2\_domain\_nxt=12} and \code{exch2\_domain\_nyt=2}. Note
288     that these parameters express the tile layout to allow global data
289     files that are tile-layout-neutral and have no bearing on the internal
290     storage of the arrays. The tiles are internally stored in a range
291 afe 1.13 from \code{(1:\varlink{bi}{bi})} the $x$ axis, and $y$ axis variable
292 afe 1.12 \varlink{bj}{bj} is generally ignored within the package. \\
293 afe 1.4
294 afe 1.6 \subsubsection{Arrays Indexed to Tile Number}
295 afe 1.4
296 afe 1.13 The following arrays are of length \code{NTILES}, are indexed to the
297 afe 1.12 tile number, and the indices are omitted in their descriptions. \\
298 afe 1.4
299 edhill 1.8 The arrays \varlink{exch2\_tnx}{exch2_tnx} and
300 afe 1.12 \varlink{exch2\_tny}{exch2_tny} express the $x$ and $y$ dimensions of
301     each tile. At present for each tile \texttt{exch2\_tnx=sNx} and
302     \texttt{exch2\_tny=sNy}, as assigned in \file{SIZE.h} and described in
303     section \ref{sec:exch2mpi} \sectiontitle{exch2, SIZE.h, and
304     multiprocessing}. Future releases of MITgcm are to allow varying tile
305     sizes. \\
306 edhill 1.8
307     The location of the tiles' Cartesian origin within a subdomain are
308     determined by the arrays \varlink{exch2\_tbasex}{exch2_tbasex} and
309     \varlink{exch2\_tbasey}{exch2_tbasey}. These variables are used to
310 afe 1.12 relate the location of the edges of different tiles to each other. As
311 afe 1.13 an example, in the default six-tile topology (Fig. \ref{fig:6tile})
312     each index in these arrays is set to \code{0} since a tile occupies
313     its entire subdomain. The twentyfour-tile case discussed above will
314     have values of \code{0} or \code{16}, depending on the quadrant the
315     tile falls within the subdomain. The elements of the arrays
316     \varlink{exch2\_txglobalo}{exch2_txglobalo} and
317     \varlink{exch2\_txglobalo}{exch2_txglobalo} are similar to
318 edhill 1.8 \varlink{exch2\_tbasex}{exch2_tbasex} and
319     \varlink{exch2\_tbasey}{exch2_tbasey}, but locate the tiles within the
320 afe 1.12 global address space, similar to that used by global files. \\
321 edhill 1.8
322 afe 1.13 The array \varlink{exch2\_myFace}{exch2_myFace} contains the number of
323     the subdomain of each tile, in a range \code{(1:6)} in the case of the
324     standard cube topology and indicated by \textbf{\textsf{f}}$n$ in
325     figures \ref{fig:12tile} and
326     \ref{fig:24tile}. \varlink{exch2\_nNeighbours}{exch2_nNeighbours}
327     contains a count of how many neighboring tiles each tile has, and is
328     used for setting bounds for looping over neighboring tiles.
329     \varlink{exch2\_tProc}{exch2_tProc} holds the process rank of each
330     tile, and is used in interprocess communication. \\
331    
332    
333 edhill 1.8 The arrays \varlink{exch2\_isWedge}{exch2_isWedge},
334     \varlink{exch2\_isEedge}{exch2_isEedge},
335     \varlink{exch2\_isSedge}{exch2_isSedge}, and
336 afe 1.12 \varlink{exch2\_isNedge}{exch2_isNedge} are set to \code{1} if the
337     indexed tile lies on the edge of a subdomain, \code{0} if not. The
338     values are used within the topology generator to determine the
339     orientation of neighboring tiles, and to indicate whether a tile lies
340     on the corner of a subdomain. The latter case requires special
341     exchange and numerical handling for the singularities at the eight
342 afe 1.13 corners of the cube. \\
343    
344 afe 1.4
345 afe 1.6 \subsubsection{Arrays Indexed to Tile Number and Neighbor}
346 afe 1.4
347 afe 1.12 The following arrays are all of size
348     \code{MAX\_NEIGHBOURS}$\times$\code{NTILES} and describe the
349     orientations between the the tiles. \\
350    
351     The array \code{exch2\_neighbourId(a,T)} holds the tile number
352     \code{Tn} for each of the tile number \code{T}'s neighboring tiles
353     \code{a}. The neighbor tiles are indexed \code{(1:MAX\_NEIGHBOURS)}
354     in the order right to left on the north then south edges, and then top
355     to bottom on the east and west edges. Maybe throw in a fig here, eh?
356     \\
357    
358 afe 1.13 \sloppy
359 afe 1.12 The \code{exch2\_opposingSend\_record(a,T)} array holds the index
360     \code{b} in \texttt{exch2\_neighbourId(b,Tn)} that holds the tile
361     number \code{T}. In other words,
362 edhill 1.8 \begin{verbatim}
363     exch2_neighbourId( exch2_opposingSend_record(a,T),
364     exch2_neighbourId(a,T) ) = T
365 afe 1.5 \end{verbatim}
366 afe 1.12 This provides a back-reference from the neighbor tiles. \\
367 afe 1.5
368 afe 1.13 The arrays \varlink{exch2\_pi}{exch2_pi} and
369     \varlink{exch2\_pj}{exch2_pj} specify the transformations of variables
370     in exchanges between the neighboring tiles. These transformations are
371     necessary in exchanges between subdomains because a physical vector
372     component in one direction may map to one in a different direction in
373     an adjacent subdomain, and may be have its indexing reversed. This
374     swapping arises from the ``folding'' of two-dimensional arrays into a
375     three-dimensional cube.
376    
377     The dimensions of \code{exch2\_pi(t,N,T)} and \code{exch2\_pj(t,N,T)}
378     are the neighbor ID \code{N} and the tile number \code{T} as explained
379     above, plus a vector of length 2 containing transformation factors
380     \code{t}. The first element of the transformation vector indicates
381     the factor \code{t} by which variables representing the same
382     \emph{physical} vector component of a tile \code{T} will be multiplied
383     in exchanges with neighbor \code{N}, and the second element indicates
384     the transform to the physical vector in the other direction. To
385     clarify (hopefully), \code{exch2\_pi(1,N,T)} holds the transform of
386     the $i$ component of a vector variable in tile \code{T} to the $i$
387     component of tile \code{T}'s neighbor \code{N}, and
388     \code{exch2\_pi(2,N,T)} holds the transform of \code{T}'s $i$
389     components to the neighbor \code{N}'s $j$ component. \\
390 afe 1.12
391 edhill 1.8 Under the current cube topology, one of the two elements of
392 afe 1.12 \code{exch2\_pi} or \code{exch2\_pj} for a given tile \code{T} and
393     neighbor \code{N} will be \code{0}, reflecting the fact that the two
394 afe 1.13 vector components are orthogonal. The other element will be \code{1}
395     or \code{-1}, depending on whether the components are indexed in the
396     same or opposite directions. For example, the transform vector of the
397     arrays for all tile neighbors on the same subdomain will be
398     \code{(1,0)}, since all tiles on the same subdomain are oriented
399     identically. A vector direction that corresponds to the orthogonal
400     dimension with the same index direction in a particular tile-neighbor
401     orientation will have \code{(0,1)}, whereas those in the opposite
402     index direction will have \code{(0,-1)}. \\
403    
404 afe 1.14 The arrays \varlink{exch2\_oi}{exch2_oi},
405     \varlink{exch2\_oj}{exch2_oj}, \varlink{exch2\_oi\_f}{exch2_oi_f}, and
406     \varlink{exch2\_oj\_f}{exch2_oj_f} are indexed to tile number and
407     neighbor and specify the relative offset within the subdomain of the
408     array index of a variable going from a neighboring tile $N$ to a local
409     tile $T$. Consider the six-tile case (Fig. \ref{fig:6tile}), where
410     \code{exch2\_oi(1,1)=33}, \code{exch2\_oi(2,1)=0},
411     \code{exch2\_oi(3,1)=32}, and \code{exch2\_oi(4,1)=-32}. Each of these
412     indicates the offset in the $x$ direction \\
413    
414     Finally, \varlink{exch2\_itlo\_c}{exch2_itlo_c},
415     \varlink{exch2\_ithi\_c}{exch2_ithi_c},
416     \varlink{exch2\_jtlo\_c}{exch2_jtlo_c} and
417     \varlink{exch2\_jthi\_c}{exch2_jthi_c} hold the location and index
418     bounds of the edge segment of the neighbor tile \code{N}'s subdomain
419     that gets exchanged with the local tile \code{T}. To take the example
420     of tile \code{T=2} in the twelve-tile topology
421     (Fig. \ref{fig:12tile}): \\
422    
423     \begin{verbatim}
424     exch2_itlo_c(4,2)=17
425     exch2_ithi_c(4,2)=17
426     exch2_jtlo_c(4,2)=0
427     exch2_jthi_c(4,2)=33
428     \end{verbatim}
429    
430     Here \code{N=4}, indicating the western neighbor, which is \code{Tn=1}.
431     \code{Tn=1} resides on the same subdomain as \code{T=2}, so the tiles
432     have the same orientation and the same $x$ and $y$ axes. The $i$
433     component is orthogonal to the western edge and the tile is 16 points
434     wide, so \code{exch2\_itlo\_c} and \code{exch2\_ithi\_c} indicate the
435     column beyond \code{Tn=1}'s eastern edge, in that tile's halo
436     region. Since the border of the tiles extends through the entire
437     height of the subdomain, the $y$ axis bounds \code{exch2\_jtlo\_c} to
438     \code{exch2\_jthi\_c} cover the height, plus 1 in either direction to
439     cover part of the halo. \\
440    
441     For the north edge of the same tile \code{T=2} where \code{N=1} and
442     the neighbor tile is \code{Tn=5}:
443    
444     \begin{verbatim}
445     exch2_itlo_c(1,2)=0
446     exch2_ithi_c(1,2)=0
447     exch2_jtlo_c(1,2)=0
448     exch2_jthi_c(1,2)=17
449     \end{verbatim}
450    
451     \code{T}'s northern edge is parallel to the $x$ axis, but since
452     \code{Tn}'s $y$ axis corresponds to \code{T}'s $x$ axis,
453     \code{T}'s northern edge exchanges with \code{Tn}'s western edge.
454     The western edge of the tiles corresponds to the lower bound of the
455     $x$ axis, so \code{exch2\_itlo\_c} \code{exch2\_ithi\_c} are \code{0}. The
456     range of \code{exch2\_jtlo\_c} and \code{exch2\_jthi\_c} correspond to the
457     width of \code{T}'s northern edge, plus the halo. \\
458    
459    
460    
461    
462 afe 1.13
463    
464    
465    
466    
467 afe 1.5
468 afe 1.4
469 afe 1.14 This needs some diagrams. \\
470 afe 1.1
471    
472    
473     \subsection{Key Routines}
474    
475    
476    
477     \subsection{References}

  ViewVC Help
Powered by ViewVC 1.1.22