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

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

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


Revision 1.30 - (show annotations) (download) (as text)
Sat Oct 16 03:40:13 2004 UTC (20 years, 9 months ago) by edhill
Branch: MAIN
CVS Tags: checkpoint57l_post
Changes since 1.29: +20 -1 lines
File MIME type: application/x-tex
 o add HTML comments as a step towards "URL permanence" which will help
   solve:
   - stale links from the CMI web site
   - rotten indexing by bonniefy.pl
 o also cleanup a merge-mangle in diagnostics.tex

1 % $Header: /u/gcmpack/manual/part3/getting_started.tex,v 1.29 2004/10/14 19:11:47 edhill Exp $
2 % $Name: $
3
4 %\section{Getting started}
5
6 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
19 \section{Where to find information}
20 \label{sect:whereToFindInfo}
21 \begin{rawhtml}
22 <!-- CMIREDIR:whereToFindInfo: -->
23 \end{rawhtml}
24
25 A web site is maintained for release 2 (``Pelican'') of MITgcm:
26 \begin{rawhtml} <A href=http://mitgcm.org/pelican/ target="idontexist"> \end{rawhtml}
27 \begin{verbatim}
28 http://mitgcm.org/pelican
29 \end{verbatim}
30 \begin{rawhtml} </A> \end{rawhtml}
31 Here you will find an on-line version of this document, a
32 ``browsable'' copy of the code and a searchable database of the model
33 and site, as well as links for downloading the model and
34 documentation, to data-sources, and other related sites.
35
36 There is also a web-archived support mailing list for the model that
37 you can email at \texttt{MITgcm-support@mitgcm.org} or browse at:
38 \begin{rawhtml} <A href=http://mitgcm.org/mailman/listinfo/mitgcm-support/ target="idontexist"> \end{rawhtml}
39 \begin{verbatim}
40 http://mitgcm.org/mailman/listinfo/mitgcm-support/
41 http://mitgcm.org/pipermail/mitgcm-support/
42 \end{verbatim}
43 \begin{rawhtml} </A> \end{rawhtml}
44 Essentially all of the MITgcm web pages can be searched using a
45 popular web crawler such as Google or through our own search facility:
46 \begin{rawhtml} <A href=http://mitgcm.org/mailman/htdig/ target="idontexist"> \end{rawhtml}
47 \begin{verbatim}
48 http://mitgcm.org/htdig/
49 \end{verbatim}
50 \begin{rawhtml} </A> \end{rawhtml}
51 %%% http://www.google.com/search?q=hydrostatic+site%3Amitgcm.org
52
53
54
55 \section{Obtaining the code}
56 \label{sect:obtainingCode}
57 \begin{rawhtml}
58 <!-- CMIREDIR:obtainingCode: -->
59 \end{rawhtml}
60
61 MITgcm can be downloaded from our system by following
62 the instructions below. As a courtesy we ask that you send e-mail to us at
63 \begin{rawhtml} <A href=mailto:MITgcm-support@mitgcm.org> \end{rawhtml}
64 MITgcm-support@mitgcm.org
65 \begin{rawhtml} </A> \end{rawhtml}
66 to enable us to keep track of who's using the model and in what application.
67 You can download the model two ways:
68
69 \begin{enumerate}
70 \item Using CVS software. CVS is a freely available source code management
71 tool. To use CVS you need to have the software installed. Many systems
72 come with CVS pre-installed, otherwise good places to look for
73 the software for a particular platform are
74 \begin{rawhtml} <A href=http://www.cvshome.org/ target="idontexist"> \end{rawhtml}
75 cvshome.org
76 \begin{rawhtml} </A> \end{rawhtml}
77 and
78 \begin{rawhtml} <A href=http://www.wincvs.org/ target="idontexist"> \end{rawhtml}
79 wincvs.org
80 \begin{rawhtml} </A> \end{rawhtml}
81 .
82
83 \item Using a tar file. This method is simple and does not
84 require any special software. However, this method does not
85 provide easy support for maintenance updates.
86
87 \end{enumerate}
88
89 \subsection{Method 1 - Checkout from CVS}
90 \label{sect:cvs_checkout}
91
92 If CVS is available on your system, we strongly encourage you to use it. CVS
93 provides an efficient and elegant way of organizing your code and keeping
94 track of your changes. If CVS is not available on your machine, you can also
95 download a tar file.
96
97 Before you can use CVS, the following environment variable(s) should
98 be set within your shell. For a csh or tcsh shell, put the following
99 \begin{verbatim}
100 % setenv CVSROOT :pserver:cvsanon@mitgcm.org:/u/gcmpack
101 \end{verbatim}
102 in your .cshrc or .tcshrc file. For bash or sh shells, put:
103 \begin{verbatim}
104 % export CVSROOT=':pserver:cvsanon@mitgcm.org:/u/gcmpack'
105 \end{verbatim}
106 in your \texttt{.profile} or \texttt{.bashrc} file.
107
108
109 To get MITgcm through CVS, first register with the MITgcm CVS server
110 using command:
111 \begin{verbatim}
112 % cvs login ( CVS password: cvsanon )
113 \end{verbatim}
114 You only need to do a ``cvs login'' once.
115
116 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 \begin{verbatim}
122 % cvs co -P -r checkpoint52i_post MITgcm
123 \end{verbatim}
124 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 \begin{rawhtml} <A href=''http://mitgcm.org/download'' target="idontexist"> \end{rawhtml}
129 \begin{verbatim}
130 http://mitgcm.org/source_code.html
131 \end{verbatim}
132 \begin{rawhtml} </A> \end{rawhtml}
133
134 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
157 The checkout process creates a directory called \textit{MITgcm}. If
158 the directory \textit{MITgcm} exists this command updates your code
159 based on the repository. Each directory in the source tree contains a
160 directory \textit{CVS}. This information is required by CVS to keep
161 track of your file versions with respect to the repository. Don't edit
162 the files in \textit{CVS}! You can also use CVS to download code
163 updates. More extensive information on using CVS for maintaining
164 MITgcm code can be found
165 \begin{rawhtml} <A href=''http://mitgcm.org/usingcvstoget.html'' target="idontexist"> \end{rawhtml}
166 here
167 \begin{rawhtml} </A> \end{rawhtml}
168 .
169 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
178
179 \subsection{Method 2 - Tar file download}
180 \label{sect:conventionalDownload}
181
182 If you do not have CVS on your system, you can download the model as a
183 tar file from the web site at:
184 \begin{rawhtml} <A href=http://mitgcm.org/download target="idontexist"> \end{rawhtml}
185 \begin{verbatim}
186 http://mitgcm.org/download/
187 \end{verbatim}
188 \begin{rawhtml} </A> \end{rawhtml}
189 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 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 the
194 \begin{rawhtml} <A href=''mailto:MITgcm-support@mitgcm.org"> \end{rawhtml}
195 MITgcm-support@mitgcm.org
196 \begin{rawhtml} </A> \end{rawhtml}
197 mailing list.
198
199 \subsubsection{Upgrading from an earlier version}
200
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 and then issue the cvs update command such as:
208 \begin{verbatim}
209 % cvs -q update -r checkpoint52i_post -d -P
210 \end{verbatim}
211 This will update the ``tag'' to ``checkpoint52i\_post'', add any new
212 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 indicated in the code by the delimites ``$<<<<<<<$'', ``======='' and
224 ``$>>>>>>>$''. For example,
225 {\small
226 \begin{verbatim}
227 <<<<<<< ini_parms.F
228 & bottomDragLinear,myOwnBottomDragCoefficient,
229 =======
230 & bottomDragLinear,bottomDragQuadratic,
231 >>>>>>> 1.18
232 \end{verbatim}
233 }
234 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 {\small
239 \begin{verbatim}
240 & bottomDragLinear,bottomDragQuadratic,myOwnBottomDragCoefficient,
241 \end{verbatim}
242 }
243 and the lines with the delimiters ($<<<<<<$,======,$>>>>>>$) be deleted.
244 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 \section{Model and directory structure}
266 \begin{rawhtml}
267 <!-- CMIREDIR:directory_structure: -->
268 \end{rawhtml}
269
270 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 \textit{eesupp} directory. The grid point model code is held under the
277 \textit{model} directory. Code execution actually starts in the
278 \textit{eesupp} routines and not in the \textit{model} routines. For
279 this reason the top-level \textit{MAIN.F} is in the
280 \textit{eesupp/src} directory. In general, end-users should not need
281 to worry about this level. The top-level routine for the numerical
282 part of the code is in \textit{model/src/THE\_MODEL\_MAIN.F}. Here is
283 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
287 \begin{itemize}
288
289 \item \textit{bin}: this directory is initially empty. It is the
290 default directory in which to compile the code.
291
292 \item \textit{diags}: contains the code relative to time-averaged
293 diagnostics. It is subdivided into two subdirectories \textit{inc}
294 and \textit{src} that contain include files (*.\textit{h} files) and
295 Fortran subroutines (*.\textit{F} files), respectively.
296
297 \item \textit{doc}: contains brief documentation notes.
298
299 \item \textit{eesupp}: contains the execution environment source code.
300 Also subdivided into two subdirectories \textit{inc} and
301 \textit{src}.
302
303 \item \textit{exe}: this directory is initially empty. It is the
304 default directory in which to execute the code.
305
306 \item \textit{model}: this directory contains the main source code.
307 Also subdivided into two subdirectories \textit{inc} and
308 \textit{src}.
309
310 \item \textit{pkg}: contains the source code for the packages. Each
311 package corresponds to a subdirectory. For example, \textit{gmredi}
312 contains the code related to the Gent-McWilliams/Redi scheme,
313 \textit{aim} the code relative to the atmospheric intermediate
314 physics. The packages are described in detail in section 3.
315
316 \item \textit{tools}: this directory contains various useful tools.
317 For example, \textit{genmake2} is a script written in csh (C-shell)
318 that should be used to generate your makefile. The directory
319 \textit{adjoint} contains the makefile specific to the Tangent
320 linear and Adjoint Compiler (TAMC) that generates the adjoint code.
321 The latter is described in details in part V.
322
323 \item \textit{utils}: this directory contains various utilities. The
324 subdirectory \textit{knudsen2} contains code and a makefile that
325 compute coefficients of the polynomial approximation to the knudsen
326 formula for an ocean nonlinear equation of state. The
327 \textit{matlab} subdirectory contains matlab scripts for reading
328 model output directly into matlab. \textit{scripts} contains C-shell
329 post-processing scripts for joining processor-based and tiled-based
330 model output.
331
332 \item \textit{verification}: this directory contains the model
333 examples. See section \ref{sect:modelExamples}.
334
335 \end{itemize}
336
337 \section[MITgcm Example Experiments]{Example experiments}
338 \label{sect:modelExamples}
339 \begin{rawhtml}
340 <!-- CMIREDIR:modelExamples: -->
341 \end{rawhtml}
342
343 %% a set of twenty-four pre-configured numerical experiments
344
345 The MITgcm distribution comes with more than a dozen pre-configured
346 numerical experiments. Some of these example experiments are tests of
347 individual parts of the model code, but many are fully fledged
348 numerical simulations. A few of the examples are used for tutorial
349 documentation in sections \ref{sect:eg-baro} - \ref{sect:eg-global}.
350 The other examples follow the same general structure as the tutorial
351 examples. However, they only include brief instructions in a text file
352 called {\it README}. The examples are located in subdirectories under
353 the directory \textit{verification}. Each example is briefly described
354 below.
355
356 \subsection{Full list of model examples}
357
358 \begin{enumerate}
359
360 \item \textit{exp0} - single layer, ocean double gyre (barotropic with
361 free-surface). This experiment is described in detail in section
362 \ref{sect:eg-baro}.
363
364 \item \textit{exp1} - Four layer, ocean double gyre. This experiment
365 is described in detail in section \ref{sect:eg-baroc}.
366
367 \item \textit{exp2} - 4x4 degree global ocean simulation with steady
368 climatological forcing. This experiment is described in detail in
369 section \ref{sect:eg-global}.
370
371 \item \textit{exp4} - Flow over a Gaussian bump in open-water or
372 channel with open boundaries.
373
374 \item \textit{exp5} - Inhomogenously forced ocean convection in a
375 doubly periodic box.
376
377 \item \textit{front\_relax} - Relaxation of an ocean thermal front (test for
378 Gent/McWilliams scheme). 2D (Y-Z).
379
380 \item \textit{internal wave} - Ocean internal wave forced by open
381 boundary conditions.
382
383 \item \textit{natl\_box} - Eastern subtropical North Atlantic with KPP
384 scheme; 1 month integration
385
386 \item \textit{hs94.1x64x5} - Zonal averaged atmosphere using Held and
387 Suarez '94 forcing.
388
389 \item \textit{hs94.128x64x5} - 3D atmosphere dynamics using Held and
390 Suarez '94 forcing.
391
392 \item \textit{hs94.cs-32x32x5} - 3D atmosphere dynamics using Held and
393 Suarez '94 forcing on the cubed sphere.
394
395 \item \textit{aim.5l\_zon-ave} - Intermediate Atmospheric physics.
396 Global Zonal Mean configuration, 1x64x5 resolution.
397
398 \item \textit{aim.5l\_XZ\_Equatorial\_Slice} - Intermediate
399 Atmospheric physics, equatorial Slice configuration. 2D (X-Z).
400
401 \item \textit{aim.5l\_Equatorial\_Channel} - Intermediate Atmospheric
402 physics. 3D Equatorial Channel configuration.
403
404 \item \textit{aim.5l\_LatLon} - Intermediate Atmospheric physics.
405 Global configuration, on latitude longitude grid with 128x64x5 grid
406 points ($2.8^\circ{\rm degree}$ resolution).
407
408 \item \textit{adjustment.128x64x1} Barotropic adjustment problem on
409 latitude longitude grid with 128x64 grid points ($2.8^\circ{\rm
410 degree}$ resolution).
411
412 \item \textit{adjustment.cs-32x32x1} Barotropic adjustment problem on
413 cube sphere grid with 32x32 points per face ( roughly $2.8^\circ{\rm
414 degree}$ resolution).
415
416 \item \textit{advect\_cs} Two-dimensional passive advection test on
417 cube sphere grid.
418
419 \item \textit{advect\_xy} Two-dimensional (horizontal plane) passive
420 advection test on Cartesian grid.
421
422 \item \textit{advect\_yz} Two-dimensional (vertical plane) passive
423 advection test on Cartesian grid.
424
425 \item \textit{carbon} Simple passive tracer experiment. Includes
426 derivative calculation. Described in detail in section
427 \ref{sect:eg-carbon-ad}.
428
429 \item \textit{flt\_example} Example of using float package.
430
431 \item \textit{global\_ocean.90x40x15} Global circulation with GM, flux
432 boundary conditions and poles.
433
434 \item \textit{global\_ocean\_pressure} Global circulation in pressure
435 coordinate (non-Boussinesq ocean model). Described in detail in
436 section \ref{sect:eg-globalpressure}.
437
438 \item \textit{solid-body.cs-32x32x1} Solid body rotation test for cube
439 sphere grid.
440
441 \end{enumerate}
442
443 \subsection{Directory structure of model examples}
444
445 Each example directory has the following subdirectories:
446
447 \begin{itemize}
448 \item \textit{code}: contains the code particular to the example. At a
449 minimum, this directory includes the following files:
450
451 \begin{itemize}
452 \item \textit{code/CPP\_EEOPTIONS.h}: declares CPP keys relative to
453 the ``execution environment'' part of the code. The default
454 version is located in \textit{eesupp/inc}.
455
456 \item \textit{code/CPP\_OPTIONS.h}: declares CPP keys relative to
457 the ``numerical model'' part of the code. The default version is
458 located in \textit{model/inc}.
459
460 \item \textit{code/SIZE.h}: declares size of underlying
461 computational grid. The default version is located in
462 \textit{model/inc}.
463 \end{itemize}
464
465 In addition, other include files and subroutines might be present in
466 \textit{code} depending on the particular experiment. See Section 2
467 for more details.
468
469 \item \textit{input}: contains the input data files required to run
470 the example. At a minimum, the \textit{input} directory contains the
471 following files:
472
473 \begin{itemize}
474 \item \textit{input/data}: this file, written as a namelist,
475 specifies the main parameters for the experiment.
476
477 \item \textit{input/data.pkg}: contains parameters relative to the
478 packages used in the experiment.
479
480 \item \textit{input/eedata}: this file contains ``execution
481 environment'' data. At present, this consists of a specification
482 of the number of threads to use in $X$ and $Y$ under multithreaded
483 execution.
484 \end{itemize}
485
486 In addition, you will also find in this directory the forcing and
487 topography files as well as the files describing the initial state
488 of the experiment. This varies from experiment to experiment. See
489 section 2 for more details.
490
491 \item \textit{results}: this directory contains the output file
492 \textit{output.txt} produced by the simulation example. This file is
493 useful for comparison with your own output when you run the
494 experiment.
495 \end{itemize}
496
497 Once you have chosen the example you want to run, you are ready to
498 compile the code.
499
500 \section[Building MITgcm]{Building the code}
501 \label{sect:buildingCode}
502 \begin{rawhtml}
503 <!-- CMIREDIR:buildingCode: -->
504 \end{rawhtml}
505
506 To compile the code, we use the {\em make} program. This uses a file
507 ({\em Makefile}) that allows us to pre-process source files, specify
508 compiler and optimization options and also figures out any file
509 dependencies. We supply a script ({\em genmake2}), described in
510 section \ref{sect:genmake}, that automatically creates the {\em
511 Makefile} for you. You then need to build the dependencies and
512 compile the code.
513
514 As an example, let's assume that you want to build and run experiment
515 \textit{verification/exp2}. The are multiple ways and places to
516 actually do this but here let's build the code in
517 \textit{verification/exp2/input}:
518 \begin{verbatim}
519 % cd verification/exp2/input
520 \end{verbatim}
521 First, build the {\em Makefile}:
522 \begin{verbatim}
523 % ../../../tools/genmake2 -mods=../code
524 \end{verbatim}
525 The command line option tells {\em genmake} to override model source
526 code with any files in the directory {\em ../code/}.
527
528 On many systems, the {\em genmake2} program will be able to
529 automatically recognize the hardware, find compilers and other tools
530 within the user's path (``echo \$PATH''), and then choose an
531 appropriate set of options from the files (``optfiles'') contained in
532 the {\em tools/build\_options} directory. Under some circumstances, a
533 user may have to create a new ``optfile'' in order to specify the
534 exact combination of compiler, compiler flags, libraries, and other
535 options necessary to build a particular configuration of MITgcm. In
536 such cases, it is generally helpful to read the existing ``optfiles''
537 and mimic their syntax.
538
539 Through the MITgcm-support list, the MITgcm developers are willing to
540 provide help writing or modifing ``optfiles''. And we encourage users
541 to post new ``optfiles'' (particularly ones for new machines or
542 architectures) to the
543 \begin{rawhtml} <A href=''mailto:MITgcm-support@mitgcm.org"> \end{rawhtml}
544 MITgcm-support@mitgcm.org
545 \begin{rawhtml} </A> \end{rawhtml}
546 list.
547
548 To specify an optfile to {\em genmake2}, the syntax is:
549 \begin{verbatim}
550 % ../../../tools/genmake2 -mods=../code -of /path/to/optfile
551 \end{verbatim}
552
553 Once a {\em Makefile} has been generated, we create the dependencies:
554 \begin{verbatim}
555 % make depend
556 \end{verbatim}
557 This modifies the {\em Makefile} by attaching a [long] list of files
558 upon which other files depend. The purpose of this is to reduce
559 re-compilation if and when you start to modify the code. The {\tt make
560 depend} command also creates links from the model source to this
561 directory. It is important to note that the {\tt make depend} stage
562 will occasionally produce warnings or errors since the dependency
563 parsing tool is unable to find all of the necessary header files
564 (\textit{eg.} \texttt{netcdf.inc}). In these circumstances, it is
565 usually OK to ignore the warnings/errors and proceed to the next step.
566
567 Next compile the code:
568 \begin{verbatim}
569 % make
570 \end{verbatim}
571 The {\tt make} command creates an executable called \textit{mitgcmuv}.
572 Additional make ``targets'' are defined within the makefile to aid in
573 the production of adjoint and other versions of MITgcm.
574
575 Now you are ready to run the model. General instructions for doing so are
576 given in section \ref{sect:runModel}. Here, we can run the model with:
577 \begin{verbatim}
578 ./mitgcmuv > output.txt
579 \end{verbatim}
580 where we are re-directing the stream of text output to the file {\em
581 output.txt}.
582
583
584 \section[Running MITgcm]{Running the model in prognostic mode}
585 \label{sect:runModel}
586 \begin{rawhtml}
587 <!-- CMIREDIR:runModel: -->
588 \end{rawhtml}
589
590 If compilation finished succesfuully (section \ref{sect:buildingCode})
591 then an executable called \texttt{mitgcmuv} will now exist in the
592 local directory.
593
594 To run the model as a single process (\textit{ie.} not in parallel)
595 simply type:
596 \begin{verbatim}
597 % ./mitgcmuv
598 \end{verbatim}
599 The ``./'' is a safe-guard to make sure you use the local executable
600 in case you have others that exist in your path (surely odd if you
601 do!). The above command will spew out many lines of text output to
602 your screen. This output contains details such as parameter values as
603 well as diagnostics such as mean Kinetic energy, largest CFL number,
604 etc. It is worth keeping this text output with the binary output so we
605 normally re-direct the {\em stdout} stream as follows:
606 \begin{verbatim}
607 % ./mitgcmuv > output.txt
608 \end{verbatim}
609 In the event that the model encounters an error and stops, it is very
610 helpful to include the last few line of this \texttt{output.txt} file
611 along with the (\texttt{stderr}) error message within any bug reports.
612
613 For the example experiments in {\em verification}, an example of the
614 output is kept in {\em results/output.txt} for comparison. You can
615 compare your {\em output.txt} with the corresponding one for that
616 experiment to check that the set-up works.
617
618
619
620 \subsection{Output files}
621
622 The model produces various output files. Depending upon the I/O
623 package selected (either \texttt{mdsio} or \texttt{mnc} or both as
624 determined by both the compile-time settings and the run-time flags in
625 \texttt{data.pkg}), the following output may appear.
626
627
628 \subsubsection{MDSIO output files}
629
630 The ``traditional'' output files are generated by the \texttt{mdsio}
631 package. At a minimum, the instantaneous ``state'' of the model is
632 written out, which is made of the following files:
633
634 \begin{itemize}
635 \item \textit{U.00000nIter} - zonal component of velocity field (m/s and $>
636 0 $ eastward).
637
638 \item \textit{V.00000nIter} - meridional component of velocity field (m/s
639 and $> 0$ northward).
640
641 \item \textit{W.00000nIter} - vertical component of velocity field (ocean:
642 m/s and $> 0$ upward, atmosphere: Pa/s and $> 0$ towards increasing pressure
643 i.e. downward).
644
645 \item \textit{T.00000nIter} - potential temperature (ocean: $^{0}$C,
646 atmosphere: $^{0}$K).
647
648 \item \textit{S.00000nIter} - ocean: salinity (psu), atmosphere: water vapor
649 (g/kg).
650
651 \item \textit{Eta.00000nIter} - ocean: surface elevation (m), atmosphere:
652 surface pressure anomaly (Pa).
653 \end{itemize}
654
655 The chain \textit{00000nIter} consists of ten figures that specify the
656 iteration number at which the output is written out. For example, \textit{%
657 U.0000000300} is the zonal velocity at iteration 300.
658
659 In addition, a ``pickup'' or ``checkpoint'' file called:
660
661 \begin{itemize}
662 \item \textit{pickup.00000nIter}
663 \end{itemize}
664
665 is written out. This file represents the state of the model in a condensed
666 form and is used for restarting the integration. If the C-D scheme is used,
667 there is an additional ``pickup'' file:
668
669 \begin{itemize}
670 \item \textit{pickup\_cd.00000nIter}
671 \end{itemize}
672
673 containing the D-grid velocity data and that has to be written out as well
674 in order to restart the integration. Rolling checkpoint files are the same
675 as the pickup files but are named differently. Their name contain the chain
676 \textit{ckptA} or \textit{ckptB} instead of \textit{00000nIter}. They can be
677 used to restart the model but are overwritten every other time they are
678 output to save disk space during long integrations.
679
680
681
682 \subsubsection{MNC output files}
683
684 Unlike the \texttt{mdsio} output, the \texttt{mnc}--generated output
685 is usually (though not necessarily) placed within a subdirectory with
686 a name such as \texttt{mnc\_test\_\${DATE}\_\${SEQ}}. The files
687 within this subdirectory are all in the ``self-describing'' netCDF
688 format and can thus be browsed and/or plotted using tools such as:
689 \begin{itemize}
690 \item At a minimum, the \texttt{ncdump} utility is typically included
691 with every netCDF install:
692 \begin{rawhtml} <A href="http://www.unidata.ucar.edu/packages/netcdf/"> \end{rawhtml}
693 \begin{verbatim}
694 http://www.unidata.ucar.edu/packages/netcdf/
695 \end{verbatim}
696 \begin{rawhtml} </A> \end{rawhtml}
697
698 \item The \texttt{ncview} utility is a very convenient and quick way
699 to plot netCDF data and it runs on most OSes:
700 \begin{rawhtml} <A href="http://meteora.ucsd.edu/~pierce/ncview_home_page.html"> \end{rawhtml}
701 \begin{verbatim}
702 http://meteora.ucsd.edu/~pierce/ncview_home_page.html
703 \end{verbatim}
704 \begin{rawhtml} </A> \end{rawhtml}
705
706 \item MatLAB(c) and other common post-processing environments provide
707 various netCDF interfaces including:
708 \begin{rawhtml} <A href="http://woodshole.er.usgs.gov/staffpages/cdenham/public_html/MexCDF/nc4ml5.html"> \end{rawhtml}
709 \begin{verbatim}
710 http://woodshole.er.usgs.gov/staffpages/cdenham/public_html/MexCDF/nc4ml5.html
711 \end{verbatim}
712 \begin{rawhtml} </A> \end{rawhtml}
713
714 \end{itemize}
715
716
717 \subsection{Looking at the output}
718
719 The ``traditional'' or mdsio model data are written according to a
720 ``meta/data'' file format. Each variable is associated with two files
721 with suffix names \textit{.data} and \textit{.meta}. The
722 \textit{.data} file contains the data written in binary form
723 (big\_endian by default). The \textit{.meta} file is a ``header'' file
724 that contains information about the size and the structure of the
725 \textit{.data} file. This way of organizing the output is particularly
726 useful when running multi-processors calculations. The base version of
727 the model includes a few matlab utilities to read output files written
728 in this format. The matlab scripts are located in the directory
729 \textit{utils/matlab} under the root tree. The script \textit{rdmds.m}
730 reads the data. Look at the comments inside the script to see how to
731 use it.
732
733 Some examples of reading and visualizing some output in {\em Matlab}:
734 \begin{verbatim}
735 % matlab
736 >> H=rdmds('Depth');
737 >> contourf(H');colorbar;
738 >> title('Depth of fluid as used by model');
739
740 >> eta=rdmds('Eta',10);
741 >> imagesc(eta');axis ij;colorbar;
742 >> title('Surface height at iter=10');
743
744 >> eta=rdmds('Eta',[0:10:100]);
745 >> for n=1:11; imagesc(eta(:,:,n)');axis ij;colorbar;pause(.5);end
746 \end{verbatim}
747
748 Similar scripts for netCDF output (\texttt{rdmnc.m}) are available.

  ViewVC Help
Powered by ViewVC 1.1.22