/[MITgcm]/manual/s_getstarted/text/getting_started.tex
ViewVC logotype

Annotation of /manual/s_getstarted/text/getting_started.tex

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


Revision 1.35 - (hide annotations) (download) (as text)
Thu Apr 20 22:09:08 2006 UTC (19 years, 2 months ago) by molod
Branch: MAIN
Changes since 1.34: +387 -2 lines
File MIME type: application/x-tex
Slight reorg of chapter 3 -

1 molod 1.35 % $Header: /u/gcmpack/manual/part3/getting_started.tex,v 1.34 2006/04/08 15:29:05 edhill Exp $
2 adcroft 1.2 % $Name: $
3 adcroft 1.1
4 adcroft 1.4 %\section{Getting started}
5 adcroft 1.1
6 adcroft 1.4 In this section, we describe how to use the model. In the first
7     section, we provide enough information to help you get started with
8     the model. We believe the best way to familiarize yourself with the
9     model is to run the case study examples provided with the base
10     version. Information on how to obtain, compile, and run the code is
11     found there as well as a brief description of the model structure
12     directory and the case study examples. The latter and the code
13     structure are described more fully in chapters
14     \ref{chap:discretization} and \ref{chap:sarch}, respectively. Here, in
15     this section, we provide information on how to customize the code when
16     you are ready to try implementing the configuration you have in mind.
17    
18     \section{Where to find information}
19     \label{sect:whereToFindInfo}
20 edhill 1.30 \begin{rawhtml}
21     <!-- CMIREDIR:whereToFindInfo: -->
22     \end{rawhtml}
23 adcroft 1.4
24 edhill 1.15 A web site is maintained for release 2 (``Pelican'') of MITgcm:
25     \begin{rawhtml} <A href=http://mitgcm.org/pelican/ target="idontexist"> \end{rawhtml}
26 adcroft 1.4 \begin{verbatim}
27 edhill 1.15 http://mitgcm.org/pelican
28 adcroft 1.4 \end{verbatim}
29 edhill 1.15 \begin{rawhtml} </A> \end{rawhtml}
30 adcroft 1.4 Here you will find an on-line version of this document, a
31     ``browsable'' copy of the code and a searchable database of the model
32     and site, as well as links for downloading the model and
33 edhill 1.15 documentation, to data-sources, and other related sites.
34 adcroft 1.4
35 edhill 1.15 There is also a web-archived support mailing list for the model that
36     you can email at \texttt{MITgcm-support@mitgcm.org} or browse at:
37     \begin{rawhtml} <A href=http://mitgcm.org/mailman/listinfo/mitgcm-support/ target="idontexist"> \end{rawhtml}
38     \begin{verbatim}
39     http://mitgcm.org/mailman/listinfo/mitgcm-support/
40     http://mitgcm.org/pipermail/mitgcm-support/
41     \end{verbatim}
42     \begin{rawhtml} </A> \end{rawhtml}
43     Essentially all of the MITgcm web pages can be searched using a
44     popular web crawler such as Google or through our own search facility:
45 edhill 1.16 \begin{rawhtml} <A href=http://mitgcm.org/mailman/htdig/ target="idontexist"> \end{rawhtml}
46 adcroft 1.1 \begin{verbatim}
47 edhill 1.15 http://mitgcm.org/htdig/
48 adcroft 1.1 \end{verbatim}
49 edhill 1.15 \begin{rawhtml} </A> \end{rawhtml}
50     %%% http://www.google.com/search?q=hydrostatic+site%3Amitgcm.org
51    
52    
53 adcroft 1.4
54     \section{Obtaining the code}
55     \label{sect:obtainingCode}
56 edhill 1.30 \begin{rawhtml}
57     <!-- CMIREDIR:obtainingCode: -->
58     \end{rawhtml}
59 adcroft 1.1
60 cnh 1.7 MITgcm can be downloaded from our system by following
61     the instructions below. As a courtesy we ask that you send e-mail to us at
62 edhill 1.14 \begin{rawhtml} <A href=mailto:MITgcm-support@mitgcm.org> \end{rawhtml}
63     MITgcm-support@mitgcm.org
64 cnh 1.7 \begin{rawhtml} </A> \end{rawhtml}
65     to enable us to keep track of who's using the model and in what application.
66     You can download the model two ways:
67    
68     \begin{enumerate}
69 cnh 1.9 \item Using CVS software. CVS is a freely available source code management
70 cnh 1.7 tool. To use CVS you need to have the software installed. Many systems
71     come with CVS pre-installed, otherwise good places to look for
72     the software for a particular platform are
73     \begin{rawhtml} <A href=http://www.cvshome.org/ target="idontexist"> \end{rawhtml}
74     cvshome.org
75     \begin{rawhtml} </A> \end{rawhtml}
76     and
77     \begin{rawhtml} <A href=http://www.wincvs.org/ target="idontexist"> \end{rawhtml}
78     wincvs.org
79     \begin{rawhtml} </A> \end{rawhtml}
80     .
81    
82     \item Using a tar file. This method is simple and does not
83     require any special software. However, this method does not
84     provide easy support for maintenance updates.
85    
86     \end{enumerate}
87    
88 cnh 1.27 \subsection{Method 1 - Checkout from CVS}
89 edhill 1.19 \label{sect:cvs_checkout}
90    
91 adcroft 1.1 If CVS is available on your system, we strongly encourage you to use it. CVS
92     provides an efficient and elegant way of organizing your code and keeping
93     track of your changes. If CVS is not available on your machine, you can also
94     download a tar file.
95    
96 edhill 1.15 Before you can use CVS, the following environment variable(s) should
97     be set within your shell. For a csh or tcsh shell, put the following
98     \begin{verbatim}
99     % setenv CVSROOT :pserver:cvsanon@mitgcm.org:/u/gcmpack
100     \end{verbatim}
101 edhill 1.31 in your \texttt{.cshrc} or \texttt{.tcshrc} file. For bash or sh
102     shells, put:
103 adcroft 1.1 \begin{verbatim}
104 edhill 1.15 % export CVSROOT=':pserver:cvsanon@mitgcm.org:/u/gcmpack'
105 adcroft 1.6 \end{verbatim}
106 edhill 1.20 in your \texttt{.profile} or \texttt{.bashrc} file.
107 adcroft 1.6
108 edhill 1.15
109     To get MITgcm through CVS, first register with the MITgcm CVS server
110     using command:
111 adcroft 1.6 \begin{verbatim}
112 adcroft 1.1 % cvs login ( CVS password: cvsanon )
113     \end{verbatim}
114 edhill 1.15 You only need to do a ``cvs login'' once.
115 adcroft 1.1
116 edhill 1.15 To obtain the latest sources type:
117     \begin{verbatim}
118     % cvs co MITgcm
119     \end{verbatim}
120     or to get a specific release type:
121 adcroft 1.1 \begin{verbatim}
122 edhill 1.16 % cvs co -P -r checkpoint52i_post MITgcm
123 adcroft 1.1 \end{verbatim}
124 edhill 1.15 The MITgcm web site contains further directions concerning the source
125     code and CVS. It also contains a web interface to our CVS archive so
126     that one may easily view the state of files, revisions, and other
127     development milestones:
128 edhill 1.34 \begin{rawhtml} <A href="http://mitgcm.org/download" target="idontexist"> \end{rawhtml}
129 edhill 1.15 \begin{verbatim}
130 edhill 1.17 http://mitgcm.org/source_code.html
131 edhill 1.15 \end{verbatim}
132     \begin{rawhtml} </A> \end{rawhtml}
133 adcroft 1.1
134 edhill 1.19 As a convenience, the MITgcm CVS server contains aliases which are
135     named subsets of the codebase. These aliases can be especially
136     helpful when used over slow internet connections or on machines with
137     restricted storage space. Table \ref{tab:cvsModules} contains a list
138     of CVS aliases
139     \begin{table}[htb]
140     \centering
141     \begin{tabular}[htb]{|lp{3.25in}|}\hline
142     \textbf{Alias Name} & \textbf{Information (directories) Contained} \\\hline
143     \texttt{MITgcm\_code} & Only the source code -- none of the verification examples. \\
144     \texttt{MITgcm\_verif\_basic}
145     & Source code plus a small set of the verification examples
146     (\texttt{global\_ocean.90x40x15}, \texttt{aim.5l\_cs}, \texttt{hs94.128x64x5},
147     \texttt{front\_relax}, and \texttt{plume\_on\_slope}). \\
148     \texttt{MITgcm\_verif\_atmos} & Source code plus all of the atmospheric examples. \\
149     \texttt{MITgcm\_verif\_ocean} & Source code plus all of the oceanic examples. \\
150     \texttt{MITgcm\_verif\_all} & Source code plus all of the
151     verification examples. \\\hline
152     \end{tabular}
153     \caption{MITgcm CVS Modules}
154     \label{tab:cvsModules}
155     \end{table}
156 edhill 1.15
157 edhill 1.31 The checkout process creates a directory called \texttt{MITgcm}. If
158     the directory \texttt{MITgcm} exists this command updates your code
159 edhill 1.15 based on the repository. Each directory in the source tree contains a
160 edhill 1.31 directory \texttt{CVS}. This information is required by CVS to keep
161 edhill 1.15 track of your file versions with respect to the repository. Don't edit
162 edhill 1.31 the files in \texttt{CVS}! You can also use CVS to download code
163 edhill 1.15 updates. More extensive information on using CVS for maintaining
164     MITgcm code can be found
165 edhill 1.34 \begin{rawhtml} <A href="http://mitgcm.org/usingcvstoget.html" target="idontexist"> \end{rawhtml}
166 cnh 1.7 here
167     \begin{rawhtml} </A> \end{rawhtml}
168     .
169 edhill 1.19 It is important to note that the CVS aliases in Table
170     \ref{tab:cvsModules} cannot be used in conjunction with the CVS
171     \texttt{-d DIRNAME} option. However, the \texttt{MITgcm} directories
172     they create can be changed to a different name following the check-out:
173     \begin{verbatim}
174     % cvs co MITgcm_verif_basic
175     % mv MITgcm MITgcm_verif_basic
176     \end{verbatim}
177 cnh 1.7
178 adcroft 1.1
179 cnh 1.27 \subsection{Method 2 - Tar file download}
180 adcroft 1.4 \label{sect:conventionalDownload}
181 adcroft 1.1
182 adcroft 1.4 If you do not have CVS on your system, you can download the model as a
183 edhill 1.15 tar file from the web site at:
184 cnh 1.7 \begin{rawhtml} <A href=http://mitgcm.org/download target="idontexist"> \end{rawhtml}
185 adcroft 1.1 \begin{verbatim}
186     http://mitgcm.org/download/
187     \end{verbatim}
188 cnh 1.7 \begin{rawhtml} </A> \end{rawhtml}
189 adcroft 1.4 The tar file still contains CVS information which we urge you not to
190     delete; even if you do not use CVS yourself the information can help
191 edhill 1.15 us if you should need to send us your copy of the code. If a recent
192     tar file does not exist, then please contact the developers through
193 edhill 1.17 the
194 edhill 1.34 \begin{rawhtml} <A href="mailto:MITgcm-support@mitgcm.org"> \end{rawhtml}
195 edhill 1.17 MITgcm-support@mitgcm.org
196     \begin{rawhtml} </A> \end{rawhtml}
197     mailing list.
198 adcroft 1.1
199 edhill 1.19 \subsubsection{Upgrading from an earlier version}
200 adcroft 1.12
201     If you already have an earlier version of the code you can ``upgrade''
202     your copy instead of downloading the entire repository again. First,
203     ``cd'' (change directory) to the top of your working copy:
204     \begin{verbatim}
205     % cd MITgcm
206     \end{verbatim}
207 edhill 1.15 and then issue the cvs update command such as:
208 adcroft 1.12 \begin{verbatim}
209 edhill 1.16 % cvs -q update -r checkpoint52i_post -d -P
210 adcroft 1.12 \end{verbatim}
211 edhill 1.16 This will update the ``tag'' to ``checkpoint52i\_post'', add any new
212 adcroft 1.12 directories (-d) and remove any empty directories (-P). The -q option
213     means be quiet which will reduce the number of messages you'll see in
214     the terminal. If you have modified the code prior to upgrading, CVS
215     will try to merge your changes with the upgrades. If there is a
216     conflict between your modifications and the upgrade, it will report
217     that file with a ``C'' in front, e.g.:
218     \begin{verbatim}
219     C model/src/ini_parms.F
220     \end{verbatim}
221     If the list of conflicts scrolled off the screen, you can re-issue the
222     cvs update command and it will report the conflicts. Conflicts are
223 edhill 1.15 indicated in the code by the delimites ``$<<<<<<<$'', ``======='' and
224     ``$>>>>>>>$''. For example,
225 edhill 1.17 {\small
226 adcroft 1.12 \begin{verbatim}
227     <<<<<<< ini_parms.F
228     & bottomDragLinear,myOwnBottomDragCoefficient,
229     =======
230     & bottomDragLinear,bottomDragQuadratic,
231     >>>>>>> 1.18
232     \end{verbatim}
233 edhill 1.17 }
234 adcroft 1.12 means that you added ``myOwnBottomDragCoefficient'' to a namelist at
235     the same time and place that we added ``bottomDragQuadratic''. You
236     need to resolve this conflict and in this case the line should be
237     changed to:
238 edhill 1.17 {\small
239 adcroft 1.12 \begin{verbatim}
240     & bottomDragLinear,bottomDragQuadratic,myOwnBottomDragCoefficient,
241     \end{verbatim}
242 edhill 1.17 }
243 edhill 1.15 and the lines with the delimiters ($<<<<<<$,======,$>>>>>>$) be deleted.
244 adcroft 1.12 Unless you are making modifications which exactly parallel
245     developments we make, these types of conflicts should be rare.
246    
247     \paragraph*{Upgrading to the current pre-release version}
248    
249     We don't make a ``release'' for every little patch and bug fix in
250     order to keep the frequency of upgrades to a minimum. However, if you
251     have run into a problem for which ``we have already fixed in the
252     latest code'' and we haven't made a ``tag'' or ``release'' since that
253     patch then you'll need to get the latest code:
254     \begin{verbatim}
255     % cvs -q update -A -d -P
256     \end{verbatim}
257     Unlike, the ``check-out'' and ``update'' procedures above, there is no
258     ``tag'' or release name. The -A tells CVS to upgrade to the
259     very latest version. As a rule, we don't recommend this since you
260     might upgrade while we are in the processes of checking in the code so
261     that you may only have part of a patch. Using this method of updating
262     also means we can't tell what version of the code you are working
263     with. So please be sure you understand what you're doing.
264    
265 adcroft 1.4 \section{Model and directory structure}
266 edhill 1.30 \begin{rawhtml}
267     <!-- CMIREDIR:directory_structure: -->
268     \end{rawhtml}
269 adcroft 1.1
270 adcroft 1.12 The ``numerical'' model is contained within a execution environment
271     support wrapper. This wrapper is designed to provide a general
272     framework for grid-point models. MITgcmUV is a specific numerical
273     model that uses the framework. Under this structure the model is split
274     into execution environment support code and conventional numerical
275     model code. The execution environment support code is held under the
276 edhill 1.31 \texttt{eesupp} directory. The grid point model code is held under the
277     \texttt{model} directory. Code execution actually starts in the
278     \texttt{eesupp} routines and not in the \texttt{model} routines. For
279     this reason the top-level \texttt{MAIN.F} is in the
280     \texttt{eesupp/src} directory. In general, end-users should not need
281 edhill 1.17 to worry about this level. The top-level routine for the numerical
282 edhill 1.31 part of the code is in \texttt{model/src/THE\_MODEL\_MAIN.F}. Here is
283 edhill 1.17 a brief description of the directory structure of the model under the
284     root tree (a detailed description is given in section 3: Code
285     structure).
286 adcroft 1.1
287     \begin{itemize}
288    
289 edhill 1.31 \item \texttt{bin}: this directory is initially empty. It is the
290 edhill 1.17 default directory in which to compile the code.
291    
292 edhill 1.31 \item \texttt{diags}: contains the code relative to time-averaged
293     diagnostics. It is subdivided into two subdirectories \texttt{inc}
294     and \texttt{src} that contain include files (\texttt{*.h} files) and
295     Fortran subroutines (\texttt{*.F} files), respectively.
296    
297     \item \texttt{doc}: contains brief documentation notes.
298    
299     \item \texttt{eesupp}: contains the execution environment source code.
300     Also subdivided into two subdirectories \texttt{inc} and
301     \texttt{src}.
302 edhill 1.17
303 edhill 1.31 \item \texttt{exe}: this directory is initially empty. It is the
304 edhill 1.17 default directory in which to execute the code.
305    
306 edhill 1.31 \item \texttt{model}: this directory contains the main source code.
307     Also subdivided into two subdirectories \texttt{inc} and
308     \texttt{src}.
309 edhill 1.17
310 edhill 1.31 \item \texttt{pkg}: contains the source code for the packages. Each
311     package corresponds to a subdirectory. For example, \texttt{gmredi}
312 edhill 1.17 contains the code related to the Gent-McWilliams/Redi scheme,
313 edhill 1.31 \texttt{aim} the code relative to the atmospheric intermediate
314 edhill 1.17 physics. The packages are described in detail in section 3.
315    
316 edhill 1.31 \item \texttt{tools}: this directory contains various useful tools.
317     For example, \texttt{genmake2} is a script written in csh (C-shell)
318 edhill 1.17 that should be used to generate your makefile. The directory
319 edhill 1.31 \texttt{adjoint} contains the makefile specific to the Tangent
320 edhill 1.17 linear and Adjoint Compiler (TAMC) that generates the adjoint code.
321     The latter is described in details in part V.
322    
323 edhill 1.31 \item \texttt{utils}: this directory contains various utilities. The
324     subdirectory \texttt{knudsen2} contains code and a makefile that
325 edhill 1.17 compute coefficients of the polynomial approximation to the knudsen
326     formula for an ocean nonlinear equation of state. The
327 edhill 1.31 \texttt{matlab} subdirectory contains matlab scripts for reading
328     model output directly into matlab. \texttt{scripts} contains C-shell
329 edhill 1.17 post-processing scripts for joining processor-based and tiled-based
330     model output.
331    
332 edhill 1.31 \item \texttt{verification}: this directory contains the model
333 edhill 1.17 examples. See section \ref{sect:modelExamples}.
334 adcroft 1.1
335     \end{itemize}
336    
337 cnh 1.26 \section[MITgcm Example Experiments]{Example experiments}
338 adcroft 1.4 \label{sect:modelExamples}
339 edhill 1.30 \begin{rawhtml}
340     <!-- CMIREDIR:modelExamples: -->
341     \end{rawhtml}
342 adcroft 1.1
343 edhill 1.15 %% a set of twenty-four pre-configured numerical experiments
344    
345 edhill 1.32 The full MITgcm distribution comes with more than a dozen
346     pre-configured numerical experiments. Some of these example
347     experiments are tests of individual parts of the model code, but many
348     are fully fledged numerical simulations. A few of the examples are
349     used for tutorial documentation in sections \ref{sect:eg-baro} -
350     \ref{sect:eg-global}. The other examples follow the same general
351     structure as the tutorial examples. However, they only include brief
352     instructions in a text file called {\it README}. The examples are
353     located in subdirectories under the directory \texttt{verification}.
354     Each example is briefly described below.
355 adcroft 1.1
356 cnh 1.8 \subsection{Full list of model examples}
357 adcroft 1.1
358 cnh 1.8 \begin{enumerate}
359 edhill 1.17
360 edhill 1.31 \item \texttt{exp0} - single layer, ocean double gyre (barotropic with
361 edhill 1.15 free-surface). This experiment is described in detail in section
362     \ref{sect:eg-baro}.
363 adcroft 1.1
364 edhill 1.31 \item \texttt{exp1} - Four layer, ocean double gyre. This experiment
365 edhill 1.15 is described in detail in section \ref{sect:eg-baroc}.
366    
367 edhill 1.31 \item \texttt{exp2} - 4x4 degree global ocean simulation with steady
368 edhill 1.15 climatological forcing. This experiment is described in detail in
369     section \ref{sect:eg-global}.
370    
371 edhill 1.31 \item \texttt{exp4} - Flow over a Gaussian bump in open-water or
372 edhill 1.15 channel with open boundaries.
373    
374 edhill 1.31 \item \texttt{exp5} - Inhomogenously forced ocean convection in a
375 edhill 1.15 doubly periodic box.
376 adcroft 1.1
377 edhill 1.31 \item \texttt{front\_relax} - Relaxation of an ocean thermal front (test for
378 adcroft 1.1 Gent/McWilliams scheme). 2D (Y-Z).
379    
380 edhill 1.31 \item \texttt{internal wave} - Ocean internal wave forced by open
381 edhill 1.15 boundary conditions.
382    
383 edhill 1.31 \item \texttt{natl\_box} - Eastern subtropical North Atlantic with KPP
384 edhill 1.15 scheme; 1 month integration
385    
386 edhill 1.31 \item \texttt{hs94.1x64x5} - Zonal averaged atmosphere using Held and
387 edhill 1.15 Suarez '94 forcing.
388    
389 edhill 1.31 \item \texttt{hs94.128x64x5} - 3D atmosphere dynamics using Held and
390 edhill 1.15 Suarez '94 forcing.
391    
392 edhill 1.31 \item \texttt{hs94.cs-32x32x5} - 3D atmosphere dynamics using Held and
393 edhill 1.15 Suarez '94 forcing on the cubed sphere.
394    
395 edhill 1.31 \item \texttt{aim.5l\_zon-ave} - Intermediate Atmospheric physics.
396 edhill 1.15 Global Zonal Mean configuration, 1x64x5 resolution.
397    
398 edhill 1.31 \item \texttt{aim.5l\_XZ\_Equatorial\_Slice} - Intermediate
399 edhill 1.15 Atmospheric physics, equatorial Slice configuration. 2D (X-Z).
400    
401 edhill 1.31 \item \texttt{aim.5l\_Equatorial\_Channel} - Intermediate Atmospheric
402 edhill 1.15 physics. 3D Equatorial Channel configuration.
403    
404 edhill 1.31 \item \texttt{aim.5l\_LatLon} - Intermediate Atmospheric physics.
405 edhill 1.15 Global configuration, on latitude longitude grid with 128x64x5 grid
406 edhill 1.33 points ($2.8^\circ$ resolution).
407 edhill 1.15
408 edhill 1.31 \item \texttt{adjustment.128x64x1} Barotropic adjustment problem on
409 edhill 1.33 latitude longitude grid with 128x64 grid points ($2.8^\circ$ resolution).
410 edhill 1.15
411 edhill 1.31 \item \texttt{adjustment.cs-32x32x1} Barotropic adjustment problem on
412 edhill 1.33 cube sphere grid with 32x32 points per face (roughly $2.8^\circ$
413     resolution).
414 edhill 1.15
415 edhill 1.31 \item \texttt{advect\_cs} Two-dimensional passive advection test on
416 edhill 1.15 cube sphere grid.
417    
418 edhill 1.31 \item \texttt{advect\_xy} Two-dimensional (horizontal plane) passive
419 edhill 1.15 advection test on Cartesian grid.
420    
421 edhill 1.31 \item \texttt{advect\_yz} Two-dimensional (vertical plane) passive
422 edhill 1.15 advection test on Cartesian grid.
423    
424 edhill 1.31 \item \texttt{carbon} Simple passive tracer experiment. Includes
425 edhill 1.15 derivative calculation. Described in detail in section
426     \ref{sect:eg-carbon-ad}.
427 cnh 1.8
428 edhill 1.31 \item \texttt{flt\_example} Example of using float package.
429 edhill 1.15
430 edhill 1.31 \item \texttt{global\_ocean.90x40x15} Global circulation with GM, flux
431 edhill 1.15 boundary conditions and poles.
432 cnh 1.8
433 edhill 1.31 \item \texttt{global\_ocean\_pressure} Global circulation in pressure
434 mlosch 1.13 coordinate (non-Boussinesq ocean model). Described in detail in
435     section \ref{sect:eg-globalpressure}.
436 edhill 1.15
437 edhill 1.31 \item \texttt{solid-body.cs-32x32x1} Solid body rotation test for cube
438 edhill 1.15 sphere grid.
439 cnh 1.8
440     \end{enumerate}
441 adcroft 1.1
442 adcroft 1.4 \subsection{Directory structure of model examples}
443 adcroft 1.1
444     Each example directory has the following subdirectories:
445    
446     \begin{itemize}
447 edhill 1.31 \item \texttt{code}: contains the code particular to the example. At a
448 edhill 1.16 minimum, this directory includes the following files:
449 adcroft 1.1
450 edhill 1.16 \begin{itemize}
451 edhill 1.31 \item \texttt{code/packages.conf}: declares the list of packages or
452     package groups to be used. If not included, the default version
453     is located in \texttt{pkg/pkg\_default}. Package groups are
454     simply convenient collections of commonly used packages which are
455     defined in \texttt{pkg/pkg\_default}. Some packages may require
456     other packages or may require their absence (that is, they are
457     incompatible) and these package dependencies are listed in
458     \texttt{pkg/pkg\_depend}.
459    
460     \item \texttt{code/CPP\_EEOPTIONS.h}: declares CPP keys relative to
461 edhill 1.16 the ``execution environment'' part of the code. The default
462 edhill 1.31 version is located in \texttt{eesupp/inc}.
463 edhill 1.16
464 edhill 1.31 \item \texttt{code/CPP\_OPTIONS.h}: declares CPP keys relative to
465 edhill 1.16 the ``numerical model'' part of the code. The default version is
466 edhill 1.31 located in \texttt{model/inc}.
467 edhill 1.16
468 edhill 1.31 \item \texttt{code/SIZE.h}: declares size of underlying
469 edhill 1.16 computational grid. The default version is located in
470 edhill 1.31 \texttt{model/inc}.
471 edhill 1.16 \end{itemize}
472    
473     In addition, other include files and subroutines might be present in
474 edhill 1.31 \texttt{code} depending on the particular experiment. See Section 2
475 edhill 1.16 for more details.
476 edhill 1.15
477 edhill 1.31 \item \texttt{input}: contains the input data files required to run
478     the example. At a minimum, the \texttt{input} directory contains the
479 edhill 1.15 following files:
480 adcroft 1.1
481 edhill 1.16 \begin{itemize}
482 edhill 1.31 \item \texttt{input/data}: this file, written as a namelist,
483 edhill 1.16 specifies the main parameters for the experiment.
484    
485 edhill 1.31 \item \texttt{input/data.pkg}: contains parameters relative to the
486 edhill 1.16 packages used in the experiment.
487    
488 edhill 1.31 \item \texttt{input/eedata}: this file contains ``execution
489 edhill 1.16 environment'' data. At present, this consists of a specification
490     of the number of threads to use in $X$ and $Y$ under multithreaded
491     execution.
492     \end{itemize}
493 edhill 1.17
494     In addition, you will also find in this directory the forcing and
495     topography files as well as the files describing the initial state
496     of the experiment. This varies from experiment to experiment. See
497     section 2 for more details.
498 edhill 1.16
499 edhill 1.31 \item \texttt{results}: this directory contains the output file
500     \texttt{output.txt} produced by the simulation example. This file is
501 edhill 1.16 useful for comparison with your own output when you run the
502     experiment.
503 adcroft 1.1 \end{itemize}
504    
505 edhill 1.17 Once you have chosen the example you want to run, you are ready to
506     compile the code.
507 adcroft 1.1
508 cnh 1.26 \section[Building MITgcm]{Building the code}
509 adcroft 1.4 \label{sect:buildingCode}
510 edhill 1.30 \begin{rawhtml}
511     <!-- CMIREDIR:buildingCode: -->
512     \end{rawhtml}
513 adcroft 1.4
514 edhill 1.31 To compile the code, we use the \texttt{make} program. This uses a
515     file (\texttt{Makefile}) that allows us to pre-process source files,
516     specify compiler and optimization options and also figures out any
517     file dependencies. We supply a script (\texttt{genmake2}), described
518     in section \ref{sect:genmake}, that automatically creates the
519     \texttt{Makefile} for you. You then need to build the dependencies and
520 edhill 1.16 compile the code.
521 adcroft 1.4
522 edhill 1.31 As an example, assume that you want to build and run experiment
523     \texttt{verification/exp2}. The are multiple ways and places to
524 edhill 1.16 actually do this but here let's build the code in
525 edhill 1.31 \texttt{verification/exp2/build}:
526 adcroft 1.4 \begin{verbatim}
527 edhill 1.31 % cd verification/exp2/build
528 adcroft 1.4 \end{verbatim}
529 edhill 1.31 First, build the \texttt{Makefile}:
530 adcroft 1.4 \begin{verbatim}
531 edhill 1.16 % ../../../tools/genmake2 -mods=../code
532 adcroft 1.4 \end{verbatim}
533 edhill 1.31 The command line option tells \texttt{genmake} to override model source
534     code with any files in the directory \texttt{../code/}.
535 adcroft 1.4
536 edhill 1.31 On many systems, the \texttt{genmake2} program will be able to
537 edhill 1.16 automatically recognize the hardware, find compilers and other tools
538 edhill 1.31 within the user's path (``\texttt{echo \$PATH}''), and then choose an
539 edhill 1.29 appropriate set of options from the files (``optfiles'') contained in
540 edhill 1.31 the \texttt{tools/build\_options} directory. Under some
541     circumstances, a user may have to create a new ``optfile'' in order to
542     specify the exact combination of compiler, compiler flags, libraries,
543     and other options necessary to build a particular configuration of
544     MITgcm. In such cases, it is generally helpful to read the existing
545     ``optfiles'' and mimic their syntax.
546 edhill 1.16
547     Through the MITgcm-support list, the MITgcm developers are willing to
548     provide help writing or modifing ``optfiles''. And we encourage users
549     to post new ``optfiles'' (particularly ones for new machines or
550 edhill 1.17 architectures) to the
551 edhill 1.34 \begin{rawhtml} <A href="mailto:MITgcm-support@mitgcm.org"> \end{rawhtml}
552 edhill 1.17 MITgcm-support@mitgcm.org
553     \begin{rawhtml} </A> \end{rawhtml}
554     list.
555 edhill 1.16
556 edhill 1.31 To specify an optfile to \texttt{genmake2}, the syntax is:
557 adcroft 1.4 \begin{verbatim}
558 edhill 1.16 % ../../../tools/genmake2 -mods=../code -of /path/to/optfile
559 adcroft 1.4 \end{verbatim}
560    
561 edhill 1.31 Once a \texttt{Makefile} has been generated, we create the
562     dependencies with the command:
563 adcroft 1.4 \begin{verbatim}
564     % make depend
565     \end{verbatim}
566 edhill 1.31 This modifies the \texttt{Makefile} by attaching a (usually, long)
567     list of files upon which other files depend. The purpose of this is to
568     reduce re-compilation if and when you start to modify the code. The
569     {\tt make depend} command also creates links from the model source to
570     this directory. It is important to note that the {\tt make depend}
571     stage will occasionally produce warnings or errors since the
572     dependency parsing tool is unable to find all of the necessary header
573     files (\textit{eg.} \texttt{netcdf.inc}). In these circumstances, it
574     is usually OK to ignore the warnings/errors and proceed to the next
575     step.
576 adcroft 1.1
577 edhill 1.31 Next one can compile the code using:
578 adcroft 1.4 \begin{verbatim}
579     % make
580     \end{verbatim}
581 edhill 1.31 The {\tt make} command creates an executable called \texttt{mitgcmuv}.
582 edhill 1.16 Additional make ``targets'' are defined within the makefile to aid in
583 edhill 1.31 the production of adjoint and other versions of MITgcm. On SMP
584     (shared multi-processor) systems, the build process can often be sped
585     up appreciably using the command:
586     \begin{verbatim}
587     % make -j 2
588     \end{verbatim}
589     where the ``2'' can be replaced with a number that corresponds to the
590     number of CPUs available.
591 adcroft 1.4
592     Now you are ready to run the model. General instructions for doing so are
593 edhill 1.31 given in section \ref{sect:runModel}. Here, we can run the model by
594     first creating links to all the input files:
595     \begin{verbatim}
596     ln -s ../input/* .
597     \end{verbatim}
598     and then calling the executable with:
599 adcroft 1.4 \begin{verbatim}
600     ./mitgcmuv > output.txt
601     \end{verbatim}
602 edhill 1.31 where we are re-directing the stream of text output to the file
603     \texttt{output.txt}.
604 adcroft 1.4
605 molod 1.35 \subsection{Building/compiling the code elsewhere}
606    
607     In the example above (section \ref{sect:buildingCode}) we built the
608     executable in the {\em input} directory of the experiment for
609     convenience. You can also configure and compile the code in other
610     locations, for example on a scratch disk with out having to copy the
611     entire source tree. The only requirement to do so is you have {\tt
612     genmake2} in your path or you know the absolute path to {\tt
613     genmake2}.
614    
615     The following sections outline some possible methods of organizing
616     your source and data.
617    
618     \subsubsection{Building from the {\em ../code directory}}
619    
620     This is just as simple as building in the {\em input/} directory:
621     \begin{verbatim}
622     % cd verification/exp2/code
623     % ../../../tools/genmake2
624     % make depend
625     % make
626     \end{verbatim}
627     However, to run the model the executable ({\em mitgcmuv}) and input
628     files must be in the same place. If you only have one calculation to make:
629     \begin{verbatim}
630     % cd ../input
631     % cp ../code/mitgcmuv ./
632     % ./mitgcmuv > output.txt
633     \end{verbatim}
634     or if you will be making multiple runs with the same executable:
635     \begin{verbatim}
636     % cd ../
637     % cp -r input run1
638     % cp code/mitgcmuv run1
639     % cd run1
640     % ./mitgcmuv > output.txt
641     \end{verbatim}
642    
643     \subsubsection{Building from a new directory}
644    
645     Since the {\em input} directory contains input files it is often more
646     useful to keep {\em input} pristine and build in a new directory
647     within {\em verification/exp2/}:
648     \begin{verbatim}
649     % cd verification/exp2
650     % mkdir build
651     % cd build
652     % ../../../tools/genmake2 -mods=../code
653     % make depend
654     % make
655     \end{verbatim}
656     This builds the code exactly as before but this time you need to copy
657     either the executable or the input files or both in order to run the
658     model. For example,
659     \begin{verbatim}
660     % cp ../input/* ./
661     % ./mitgcmuv > output.txt
662     \end{verbatim}
663     or if you tend to make multiple runs with the same executable then
664     running in a new directory each time might be more appropriate:
665     \begin{verbatim}
666     % cd ../
667     % mkdir run1
668     % cp build/mitgcmuv run1/
669     % cp input/* run1/
670     % cd run1
671     % ./mitgcmuv > output.txt
672     \end{verbatim}
673    
674     \subsubsection{Building on a scratch disk}
675    
676     Model object files and output data can use up large amounts of disk
677     space so it is often the case that you will be operating on a large
678     scratch disk. Assuming the model source is in {\em ~/MITgcm} then the
679     following commands will build the model in {\em /scratch/exp2-run1}:
680     \begin{verbatim}
681     % cd /scratch/exp2-run1
682     % ~/MITgcm/tools/genmake2 -rootdir=~/MITgcm \
683     -mods=~/MITgcm/verification/exp2/code
684     % make depend
685     % make
686     \end{verbatim}
687     To run the model here, you'll need the input files:
688     \begin{verbatim}
689     % cp ~/MITgcm/verification/exp2/input/* ./
690     % ./mitgcmuv > output.txt
691     \end{verbatim}
692    
693     As before, you could build in one directory and make multiple runs of
694     the one experiment:
695     \begin{verbatim}
696     % cd /scratch/exp2
697     % mkdir build
698     % cd build
699     % ~/MITgcm/tools/genmake2 -rootdir=~/MITgcm \
700     -mods=~/MITgcm/verification/exp2/code
701     % make depend
702     % make
703     % cd ../
704     % cp -r ~/MITgcm/verification/exp2/input run2
705     % cd run2
706     % ./mitgcmuv > output.txt
707     \end{verbatim}
708    
709    
710     \subsection{Using \texttt{genmake2}}
711     \label{sect:genmake}
712    
713     To compile the code, first use the program \texttt{genmake2} (located
714     in the \texttt{tools} directory) to generate a Makefile.
715     \texttt{genmake2} is a shell script written to work with all
716     ``sh''--compatible shells including bash v1, bash v2, and Bourne.
717     Internally, \texttt{genmake2} determines the locations of needed
718     files, the compiler, compiler options, libraries, and Unix tools. It
719     relies upon a number of ``optfiles'' located in the
720     \texttt{tools/build\_options} directory.
721    
722     The purpose of the optfiles is to provide all the compilation options
723     for particular ``platforms'' (where ``platform'' roughly means the
724     combination of the hardware and the compiler) and code configurations.
725     Given the combinations of possible compilers and library dependencies
726     ({\it eg.} MPI and NetCDF) there may be numerous optfiles available
727     for a single machine. The naming scheme for the majority of the
728     optfiles shipped with the code is
729     \begin{center}
730     {\bf OS\_HARDWARE\_COMPILER }
731     \end{center}
732     where
733     \begin{description}
734     \item[OS] is the name of the operating system (generally the
735     lower-case output of the {\tt 'uname'} command)
736     \item[HARDWARE] is a string that describes the CPU type and
737     corresponds to output from the {\tt 'uname -m'} command:
738     \begin{description}
739     \item[ia32] is for ``x86'' machines such as i386, i486, i586, i686,
740     and athlon
741     \item[ia64] is for Intel IA64 systems (eg. Itanium, Itanium2)
742     \item[amd64] is AMD x86\_64 systems
743     \item[ppc] is for Mac PowerPC systems
744     \end{description}
745     \item[COMPILER] is the compiler name (generally, the name of the
746     FORTRAN executable)
747     \end{description}
748    
749     In many cases, the default optfiles are sufficient and will result in
750     usable Makefiles. However, for some machines or code configurations,
751     new ``optfiles'' must be written. To create a new optfile, it is
752     generally best to start with one of the defaults and modify it to suit
753     your needs. Like \texttt{genmake2}, the optfiles are all written
754     using a simple ``sh''--compatible syntax. While nearly all variables
755     used within \texttt{genmake2} may be specified in the optfiles, the
756     critical ones that should be defined are:
757    
758     \begin{description}
759     \item[FC] the FORTRAN compiler (executable) to use
760     \item[DEFINES] the command-line DEFINE options passed to the compiler
761     \item[CPP] the C pre-processor to use
762     \item[NOOPTFLAGS] options flags for special files that should not be
763     optimized
764     \end{description}
765    
766     For example, the optfile for a typical Red Hat Linux machine (``ia32''
767     architecture) using the GCC (g77) compiler is
768     \begin{verbatim}
769     FC=g77
770     DEFINES='-D_BYTESWAPIO -DWORDLENGTH=4'
771     CPP='cpp -traditional -P'
772     NOOPTFLAGS='-O0'
773     # For IEEE, use the "-ffloat-store" option
774     if test "x$IEEE" = x ; then
775     FFLAGS='-Wimplicit -Wunused -Wuninitialized'
776     FOPTIM='-O3 -malign-double -funroll-loops'
777     else
778     FFLAGS='-Wimplicit -Wunused -ffloat-store'
779     FOPTIM='-O0 -malign-double'
780     fi
781     \end{verbatim}
782    
783     If you write an optfile for an unrepresented machine or compiler, you
784     are strongly encouraged to submit the optfile to the MITgcm project
785     for inclusion. Please send the file to the
786     \begin{rawhtml} <A href="mail-to:MITgcm-support@mitgcm.org"> \end{rawhtml}
787     \begin{center}
788     MITgcm-support@mitgcm.org
789     \end{center}
790     \begin{rawhtml} </A> \end{rawhtml}
791     mailing list.
792    
793     In addition to the optfiles, \texttt{genmake2} supports a number of
794     helpful command-line options. A complete list of these options can be
795     obtained from:
796     \begin{verbatim}
797     % genmake2 -h
798     \end{verbatim}
799    
800     The most important command-line options are:
801     \begin{description}
802    
803     \item[\texttt{--optfile=/PATH/FILENAME}] specifies the optfile that
804     should be used for a particular build.
805    
806     If no "optfile" is specified (either through the command line or the
807     MITGCM\_OPTFILE environment variable), genmake2 will try to make a
808     reasonable guess from the list provided in {\em
809     tools/build\_options}. The method used for making this guess is
810     to first determine the combination of operating system and hardware
811     (eg. "linux\_ia32") and then find a working FORTRAN compiler within
812     the user's path. When these three items have been identified,
813     genmake2 will try to find an optfile that has a matching name.
814    
815     \item[\texttt{--pdefault='PKG1 PKG2 PKG3 ...'}] specifies the default
816     set of packages to be used. The normal order of precedence for
817     packages is as follows:
818     \begin{enumerate}
819     \item If available, the command line (\texttt{--pdefault}) settings
820     over-rule any others.
821    
822     \item Next, \texttt{genmake2} will look for a file named
823     ``\texttt{packages.conf}'' in the local directory or in any of the
824     directories specified with the \texttt{--mods} option.
825    
826     \item Finally, if neither of the above are available,
827     \texttt{genmake2} will use the \texttt{/pkg/pkg\_default} file.
828     \end{enumerate}
829    
830     \item[\texttt{--pdepend=/PATH/FILENAME}] specifies the dependency file
831     used for packages.
832    
833     If not specified, the default dependency file {\em pkg/pkg\_depend}
834     is used. The syntax for this file is parsed on a line-by-line basis
835     where each line containes either a comment ("\#") or a simple
836     "PKGNAME1 (+|-)PKGNAME2" pairwise rule where the "+" or "-" symbol
837     specifies a "must be used with" or a "must not be used with"
838     relationship, respectively. If no rule is specified, then it is
839     assumed that the two packages are compatible and will function
840     either with or without each other.
841    
842     \item[\texttt{--adof=/path/to/file}] specifies the "adjoint" or
843     automatic differentiation options file to be used. The file is
844     analogous to the ``optfile'' defined above but it specifies
845     information for the AD build process.
846    
847     The default file is located in {\em
848     tools/adjoint\_options/adjoint\_default} and it defines the "TAF"
849     and "TAMC" compilers. An alternate version is also available at
850     {\em tools/adjoint\_options/adjoint\_staf} that selects the newer
851     "STAF" compiler. As with any compilers, it is helpful to have their
852     directories listed in your {\tt \$PATH} environment variable.
853    
854     \item[\texttt{--mods='DIR1 DIR2 DIR3 ...'}] specifies a list of
855     directories containing ``modifications''. These directories contain
856     files with names that may (or may not) exist in the main MITgcm
857     source tree but will be overridden by any identically-named sources
858     within the ``MODS'' directories.
859    
860     The order of precedence for this "name-hiding" is as follows:
861     \begin{itemize}
862     \item ``MODS'' directories (in the order given)
863     \item Packages either explicitly specified or provided by default
864     (in the order given)
865     \item Packages included due to package dependencies (in the order
866     that that package dependencies are parsed)
867     \item The "standard dirs" (which may have been specified by the
868     ``-standarddirs'' option)
869     \end{itemize}
870    
871     \item[\texttt{--mpi}] This option enables certain MPI features (using
872     CPP \texttt{\#define}s) within the code and is necessary for MPI
873     builds (see Section \ref{sect:mpi-build}).
874    
875     \item[\texttt{--make=/path/to/gmake}] Due to the poor handling of
876     soft-links and other bugs common with the \texttt{make} versions
877     provided by commercial Unix vendors, GNU \texttt{make} (sometimes
878     called \texttt{gmake}) should be preferred. This option provides a
879     means for specifying the make executable to be used.
880    
881     \item[\texttt{--bash=/path/to/sh}] On some (usually older UNIX)
882     machines, the ``bash'' shell is unavailable. To run on these
883     systems, \texttt{genmake2} can be invoked using an ``sh'' (that is,
884     a Bourne, POSIX, or compatible) shell. The syntax in these
885     circumstances is:
886     \begin{center}
887     \texttt{\% /bin/sh genmake2 -bash=/bin/sh [...options...]}
888     \end{center}
889     where \texttt{/bin/sh} can be replaced with the full path and name
890     of the desired shell.
891    
892     \end{description}
893    
894    
895     \subsection{Building with MPI}
896     \label{sect:mpi-build}
897    
898     Building MITgcm to use MPI libraries can be complicated due to the
899     variety of different MPI implementations available, their dependencies
900     or interactions with different compilers, and their often ad-hoc
901     locations within file systems. For these reasons, its generally a
902     good idea to start by finding and reading the documentation for your
903     machine(s) and, if necessary, seeking help from your local systems
904     administrator.
905    
906     The steps for building MITgcm with MPI support are:
907     \begin{enumerate}
908    
909     \item Determine the locations of your MPI-enabled compiler and/or MPI
910     libraries and put them into an options file as described in Section
911     \ref{sect:genmake}. One can start with one of the examples in:
912     \begin{rawhtml} <A
913     href="http://mitgcm.org/cgi-bin/viewcvs.cgi/MITgcm/tools/build_options/">
914     \end{rawhtml}
915     \begin{center}
916     \texttt{MITgcm/tools/build\_options/}
917     \end{center}
918     \begin{rawhtml} </A> \end{rawhtml}
919     such as \texttt{linux\_ia32\_g77+mpi\_cg01} or
920     \texttt{linux\_ia64\_efc+mpi} and then edit it to suit the machine at
921     hand. You may need help from your user guide or local systems
922     administrator to determine the exact location of the MPI libraries.
923     If libraries are not installed, MPI implementations and related
924     tools are available including:
925     \begin{itemize}
926     \item \begin{rawhtml} <A
927     href="http://www-unix.mcs.anl.gov/mpi/mpich/">
928     \end{rawhtml}
929     MPICH
930     \begin{rawhtml} </A> \end{rawhtml}
931    
932     \item \begin{rawhtml} <A
933     href="http://www.lam-mpi.org/">
934     \end{rawhtml}
935     LAM/MPI
936     \begin{rawhtml} </A> \end{rawhtml}
937    
938     \item \begin{rawhtml} <A
939     href="http://www.osc.edu/~pw/mpiexec/">
940     \end{rawhtml}
941     MPIexec
942     \begin{rawhtml} </A> \end{rawhtml}
943     \end{itemize}
944    
945     \item Build the code with the \texttt{genmake2} \texttt{-mpi} option
946     (see Section \ref{sect:genmake}) using commands such as:
947     {\footnotesize \begin{verbatim}
948     % ../../../tools/genmake2 -mods=../code -mpi -of=YOUR_OPTFILE
949     % make depend
950     % make
951     \end{verbatim} }
952    
953     \item Run the code with the appropriate MPI ``run'' or ``exec''
954     program provided with your particular implementation of MPI.
955     Typical MPI packages such as MPICH will use something like:
956     \begin{verbatim}
957     % mpirun -np 4 -machinefile mf ./mitgcmuv
958     \end{verbatim}
959     Sightly more complicated scripts may be needed for many machines
960     since execution of the code may be controlled by both the MPI
961     library and a job scheduling and queueing system such as PBS,
962     LoadLeveller, Condor, or any of a number of similar tools. A few
963     example scripts (those used for our \begin{rawhtml} <A
964     href="http://mitgcm.org/testing.html"> \end{rawhtml}regular
965     verification runs\begin{rawhtml} </A> \end{rawhtml}) are available
966     at:
967     \begin{rawhtml} <A
968     href="http://mitgcm.org/cgi-bin/viewcvs.cgi/MITgcm_contrib/test_scripts/">
969     \end{rawhtml}
970     {\footnotesize \tt
971     http://mitgcm.org/cgi-bin/viewcvs.cgi/MITgcm\_contrib/test\_scripts/ }
972     \begin{rawhtml} </A> \end{rawhtml}
973    
974     \end{enumerate}
975    
976     An example of the above process on the MITgcm cluster (``cg01'') using
977     the GNU g77 compiler and the mpich MPI library is:
978    
979     {\footnotesize \begin{verbatim}
980     % cd MITgcm/verification/exp5
981     % mkdir build
982     % cd build
983     % ../../../tools/genmake2 -mpi -mods=../code \
984     -of=../../../tools/build_options/linux_ia32_g77+mpi_cg01
985     % make depend
986     % make
987     % cd ../input
988     % /usr/local/pkg/mpi/mpi-1.2.4..8a-gm-1.5/g77/bin/mpirun.ch_gm \
989     -machinefile mf --gm-kill 5 -v -np 2 ../build/mitgcmuv
990     \end{verbatim} }
991 adcroft 1.4
992 cnh 1.26 \section[Running MITgcm]{Running the model in prognostic mode}
993 adcroft 1.4 \label{sect:runModel}
994 edhill 1.30 \begin{rawhtml}
995     <!-- CMIREDIR:runModel: -->
996     \end{rawhtml}
997 adcroft 1.4
998 edhill 1.31 If compilation finished succesfully (section \ref{sect:buildingCode})
999 edhill 1.23 then an executable called \texttt{mitgcmuv} will now exist in the
1000     local directory.
1001 adcroft 1.1
1002 edhill 1.29 To run the model as a single process (\textit{ie.} not in parallel)
1003     simply type:
1004 adcroft 1.1 \begin{verbatim}
1005 adcroft 1.4 % ./mitgcmuv
1006 adcroft 1.1 \end{verbatim}
1007 adcroft 1.4 The ``./'' is a safe-guard to make sure you use the local executable
1008     in case you have others that exist in your path (surely odd if you
1009     do!). The above command will spew out many lines of text output to
1010     your screen. This output contains details such as parameter values as
1011     well as diagnostics such as mean Kinetic energy, largest CFL number,
1012     etc. It is worth keeping this text output with the binary output so we
1013 edhill 1.31 normally re-direct the \texttt{stdout} stream as follows:
1014 adcroft 1.1 \begin{verbatim}
1015 adcroft 1.4 % ./mitgcmuv > output.txt
1016 adcroft 1.1 \end{verbatim}
1017 edhill 1.29 In the event that the model encounters an error and stops, it is very
1018     helpful to include the last few line of this \texttt{output.txt} file
1019     along with the (\texttt{stderr}) error message within any bug reports.
1020 adcroft 1.1
1021 edhill 1.31 For the example experiments in \texttt{verification}, an example of the
1022     output is kept in \texttt{results/output.txt} for comparison. You can
1023     compare your \texttt{output.txt} with the corresponding one for that
1024 edhill 1.29 experiment to check that the set-up works.
1025 adcroft 1.1
1026    
1027    
1028 adcroft 1.4 \subsection{Output files}
1029 adcroft 1.1
1030 edhill 1.31 The model produces various output files and, when using \texttt{mnc},
1031     sometimes even directories. Depending upon the I/O package(s)
1032     selected at compile time (either \texttt{mdsio} or \texttt{mnc} or
1033     both as determined by \texttt{code/packages.conf}) and the run-time
1034     flags set (in \texttt{input/data.pkg}), the following output may
1035     appear.
1036 edhill 1.29
1037    
1038     \subsubsection{MDSIO output files}
1039    
1040     The ``traditional'' output files are generated by the \texttt{mdsio}
1041     package. At a minimum, the instantaneous ``state'' of the model is
1042     written out, which is made of the following files:
1043 adcroft 1.1
1044     \begin{itemize}
1045 edhill 1.34 \item \texttt{U.00000nIter} - zonal component of velocity field (m/s
1046     and positive eastward).
1047 adcroft 1.1
1048 edhill 1.34 \item \texttt{V.00000nIter} - meridional component of velocity field
1049     (m/s and positive northward).
1050 adcroft 1.1
1051 edhill 1.34 \item \texttt{W.00000nIter} - vertical component of velocity field
1052     (ocean: m/s and positive upward, atmosphere: Pa/s and positive
1053     towards increasing pressure i.e. downward).
1054 adcroft 1.1
1055 edhill 1.34 \item \texttt{T.00000nIter} - potential temperature (ocean:
1056     $^{\circ}\mathrm{C}$, atmosphere: $^{\circ}\mathrm{K}$).
1057 adcroft 1.1
1058 edhill 1.34 \item \texttt{S.00000nIter} - ocean: salinity (psu), atmosphere: water
1059     vapor (g/kg).
1060 adcroft 1.1
1061 edhill 1.34 \item \texttt{Eta.00000nIter} - ocean: surface elevation (m),
1062     atmosphere: surface pressure anomaly (Pa).
1063 adcroft 1.1 \end{itemize}
1064    
1065 edhill 1.31 The chain \texttt{00000nIter} consists of ten figures that specify the
1066 edhill 1.34 iteration number at which the output is written out. For example,
1067     \texttt{U.0000000300} is the zonal velocity at iteration 300.
1068 adcroft 1.1
1069     In addition, a ``pickup'' or ``checkpoint'' file called:
1070    
1071     \begin{itemize}
1072 edhill 1.31 \item \texttt{pickup.00000nIter}
1073 adcroft 1.1 \end{itemize}
1074    
1075     is written out. This file represents the state of the model in a condensed
1076     form and is used for restarting the integration. If the C-D scheme is used,
1077     there is an additional ``pickup'' file:
1078    
1079     \begin{itemize}
1080 edhill 1.31 \item \texttt{pickup\_cd.00000nIter}
1081 adcroft 1.1 \end{itemize}
1082    
1083     containing the D-grid velocity data and that has to be written out as well
1084     in order to restart the integration. Rolling checkpoint files are the same
1085     as the pickup files but are named differently. Their name contain the chain
1086 edhill 1.31 \texttt{ckptA} or \texttt{ckptB} instead of \texttt{00000nIter}. They can be
1087 adcroft 1.1 used to restart the model but are overwritten every other time they are
1088     output to save disk space during long integrations.
1089    
1090 edhill 1.29
1091    
1092     \subsubsection{MNC output files}
1093    
1094     Unlike the \texttt{mdsio} output, the \texttt{mnc}--generated output
1095     is usually (though not necessarily) placed within a subdirectory with
1096     a name such as \texttt{mnc\_test\_\${DATE}\_\${SEQ}}. The files
1097     within this subdirectory are all in the ``self-describing'' netCDF
1098     format and can thus be browsed and/or plotted using tools such as:
1099     \begin{itemize}
1100 edhill 1.31 \item \texttt{ncdump} is a utility which is typically included
1101 edhill 1.29 with every netCDF install:
1102     \begin{rawhtml} <A href="http://www.unidata.ucar.edu/packages/netcdf/"> \end{rawhtml}
1103     \begin{verbatim}
1104 edhill 1.34 http://www.unidata.ucar.edu/packages/netcdf/
1105 edhill 1.29 \end{verbatim}
1106 edhill 1.31 \begin{rawhtml} </A> \end{rawhtml} and it converts the netCDF
1107     binaries into formatted ASCII text files.
1108 edhill 1.29
1109 edhill 1.31 \item \texttt{ncview} utility is a very convenient and quick way
1110 edhill 1.29 to plot netCDF data and it runs on most OSes:
1111     \begin{rawhtml} <A href="http://meteora.ucsd.edu/~pierce/ncview_home_page.html"> \end{rawhtml}
1112     \begin{verbatim}
1113 edhill 1.34 http://meteora.ucsd.edu/~pierce/ncview_home_page.html
1114 edhill 1.29 \end{verbatim}
1115     \begin{rawhtml} </A> \end{rawhtml}
1116    
1117     \item MatLAB(c) and other common post-processing environments provide
1118     various netCDF interfaces including:
1119 edhill 1.34 \begin{rawhtml} <A href="http://mexcdf.sourceforge.net/"> \end{rawhtml}
1120     \begin{verbatim}
1121     http://mexcdf.sourceforge.net/
1122     \end{verbatim}
1123     \begin{rawhtml} </A> \end{rawhtml}
1124 edhill 1.29 \begin{rawhtml} <A href="http://woodshole.er.usgs.gov/staffpages/cdenham/public_html/MexCDF/nc4ml5.html"> \end{rawhtml}
1125     \begin{verbatim}
1126     http://woodshole.er.usgs.gov/staffpages/cdenham/public_html/MexCDF/nc4ml5.html
1127     \end{verbatim}
1128     \begin{rawhtml} </A> \end{rawhtml}
1129     \end{itemize}
1130    
1131    
1132 adcroft 1.4 \subsection{Looking at the output}
1133 adcroft 1.1
1134 edhill 1.29 The ``traditional'' or mdsio model data are written according to a
1135     ``meta/data'' file format. Each variable is associated with two files
1136 edhill 1.31 with suffix names \texttt{.data} and \texttt{.meta}. The
1137     \texttt{.data} file contains the data written in binary form
1138     (big\_endian by default). The \texttt{.meta} file is a ``header'' file
1139 edhill 1.29 that contains information about the size and the structure of the
1140 edhill 1.31 \texttt{.data} file. This way of organizing the output is particularly
1141 edhill 1.29 useful when running multi-processors calculations. The base version of
1142     the model includes a few matlab utilities to read output files written
1143     in this format. The matlab scripts are located in the directory
1144 edhill 1.31 \texttt{utils/matlab} under the root tree. The script \texttt{rdmds.m}
1145 edhill 1.29 reads the data. Look at the comments inside the script to see how to
1146     use it.
1147 adcroft 1.1
1148 adcroft 1.4 Some examples of reading and visualizing some output in {\em Matlab}:
1149     \begin{verbatim}
1150     % matlab
1151     >> H=rdmds('Depth');
1152     >> contourf(H');colorbar;
1153     >> title('Depth of fluid as used by model');
1154    
1155     >> eta=rdmds('Eta',10);
1156     >> imagesc(eta');axis ij;colorbar;
1157     >> title('Surface height at iter=10');
1158    
1159     >> eta=rdmds('Eta',[0:10:100]);
1160     >> for n=1:11; imagesc(eta(:,:,n)');axis ij;colorbar;pause(.5);end
1161     \end{verbatim}
1162 adcroft 1.1
1163 edhill 1.31 Similar scripts for netCDF output (\texttt{rdmnc.m}) are available and
1164     they are described in Section \ref{sec:pkg:mnc}.
1165    

  ViewVC Help
Powered by ViewVC 1.1.22