/[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.34 - (show annotations) (download) (as text)
Sat Apr 8 15:29:05 2006 UTC (19 years, 3 months ago) by edhill
Branch: MAIN
Changes since 1.33: +27 -22 lines
File MIME type: application/x-tex
various LaTeX syntax fixes

1 % $Header: /u/gcmpack/manual/part3/getting_started.tex,v 1.33 2006/04/08 01:50:49 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 \texttt{.cshrc} or \texttt{.tcshrc} file. For bash or sh
103 shells, put:
104 \begin{verbatim}
105 % export CVSROOT=':pserver:cvsanon@mitgcm.org:/u/gcmpack'
106 \end{verbatim}
107 in your \texttt{.profile} or \texttt{.bashrc} file.
108
109
110 To get MITgcm through CVS, first register with the MITgcm CVS server
111 using command:
112 \begin{verbatim}
113 % cvs login ( CVS password: cvsanon )
114 \end{verbatim}
115 You only need to do a ``cvs login'' once.
116
117 To obtain the latest sources type:
118 \begin{verbatim}
119 % cvs co MITgcm
120 \end{verbatim}
121 or to get a specific release type:
122 \begin{verbatim}
123 % cvs co -P -r checkpoint52i_post MITgcm
124 \end{verbatim}
125 The MITgcm web site contains further directions concerning the source
126 code and CVS. It also contains a web interface to our CVS archive so
127 that one may easily view the state of files, revisions, and other
128 development milestones:
129 \begin{rawhtml} <A href="http://mitgcm.org/download" target="idontexist"> \end{rawhtml}
130 \begin{verbatim}
131 http://mitgcm.org/source_code.html
132 \end{verbatim}
133 \begin{rawhtml} </A> \end{rawhtml}
134
135 As a convenience, the MITgcm CVS server contains aliases which are
136 named subsets of the codebase. These aliases can be especially
137 helpful when used over slow internet connections or on machines with
138 restricted storage space. Table \ref{tab:cvsModules} contains a list
139 of CVS aliases
140 \begin{table}[htb]
141 \centering
142 \begin{tabular}[htb]{|lp{3.25in}|}\hline
143 \textbf{Alias Name} & \textbf{Information (directories) Contained} \\\hline
144 \texttt{MITgcm\_code} & Only the source code -- none of the verification examples. \\
145 \texttt{MITgcm\_verif\_basic}
146 & Source code plus a small set of the verification examples
147 (\texttt{global\_ocean.90x40x15}, \texttt{aim.5l\_cs}, \texttt{hs94.128x64x5},
148 \texttt{front\_relax}, and \texttt{plume\_on\_slope}). \\
149 \texttt{MITgcm\_verif\_atmos} & Source code plus all of the atmospheric examples. \\
150 \texttt{MITgcm\_verif\_ocean} & Source code plus all of the oceanic examples. \\
151 \texttt{MITgcm\_verif\_all} & Source code plus all of the
152 verification examples. \\\hline
153 \end{tabular}
154 \caption{MITgcm CVS Modules}
155 \label{tab:cvsModules}
156 \end{table}
157
158 The checkout process creates a directory called \texttt{MITgcm}. If
159 the directory \texttt{MITgcm} exists this command updates your code
160 based on the repository. Each directory in the source tree contains a
161 directory \texttt{CVS}. This information is required by CVS to keep
162 track of your file versions with respect to the repository. Don't edit
163 the files in \texttt{CVS}! You can also use CVS to download code
164 updates. More extensive information on using CVS for maintaining
165 MITgcm code can be found
166 \begin{rawhtml} <A href="http://mitgcm.org/usingcvstoget.html" target="idontexist"> \end{rawhtml}
167 here
168 \begin{rawhtml} </A> \end{rawhtml}
169 .
170 It is important to note that the CVS aliases in Table
171 \ref{tab:cvsModules} cannot be used in conjunction with the CVS
172 \texttt{-d DIRNAME} option. However, the \texttt{MITgcm} directories
173 they create can be changed to a different name following the check-out:
174 \begin{verbatim}
175 % cvs co MITgcm_verif_basic
176 % mv MITgcm MITgcm_verif_basic
177 \end{verbatim}
178
179
180 \subsection{Method 2 - Tar file download}
181 \label{sect:conventionalDownload}
182
183 If you do not have CVS on your system, you can download the model as a
184 tar file from the web site at:
185 \begin{rawhtml} <A href=http://mitgcm.org/download target="idontexist"> \end{rawhtml}
186 \begin{verbatim}
187 http://mitgcm.org/download/
188 \end{verbatim}
189 \begin{rawhtml} </A> \end{rawhtml}
190 The tar file still contains CVS information which we urge you not to
191 delete; even if you do not use CVS yourself the information can help
192 us if you should need to send us your copy of the code. If a recent
193 tar file does not exist, then please contact the developers through
194 the
195 \begin{rawhtml} <A href="mailto:MITgcm-support@mitgcm.org"> \end{rawhtml}
196 MITgcm-support@mitgcm.org
197 \begin{rawhtml} </A> \end{rawhtml}
198 mailing list.
199
200 \subsubsection{Upgrading from an earlier version}
201
202 If you already have an earlier version of the code you can ``upgrade''
203 your copy instead of downloading the entire repository again. First,
204 ``cd'' (change directory) to the top of your working copy:
205 \begin{verbatim}
206 % cd MITgcm
207 \end{verbatim}
208 and then issue the cvs update command such as:
209 \begin{verbatim}
210 % cvs -q update -r checkpoint52i_post -d -P
211 \end{verbatim}
212 This will update the ``tag'' to ``checkpoint52i\_post'', add any new
213 directories (-d) and remove any empty directories (-P). The -q option
214 means be quiet which will reduce the number of messages you'll see in
215 the terminal. If you have modified the code prior to upgrading, CVS
216 will try to merge your changes with the upgrades. If there is a
217 conflict between your modifications and the upgrade, it will report
218 that file with a ``C'' in front, e.g.:
219 \begin{verbatim}
220 C model/src/ini_parms.F
221 \end{verbatim}
222 If the list of conflicts scrolled off the screen, you can re-issue the
223 cvs update command and it will report the conflicts. Conflicts are
224 indicated in the code by the delimites ``$<<<<<<<$'', ``======='' and
225 ``$>>>>>>>$''. For example,
226 {\small
227 \begin{verbatim}
228 <<<<<<< ini_parms.F
229 & bottomDragLinear,myOwnBottomDragCoefficient,
230 =======
231 & bottomDragLinear,bottomDragQuadratic,
232 >>>>>>> 1.18
233 \end{verbatim}
234 }
235 means that you added ``myOwnBottomDragCoefficient'' to a namelist at
236 the same time and place that we added ``bottomDragQuadratic''. You
237 need to resolve this conflict and in this case the line should be
238 changed to:
239 {\small
240 \begin{verbatim}
241 & bottomDragLinear,bottomDragQuadratic,myOwnBottomDragCoefficient,
242 \end{verbatim}
243 }
244 and the lines with the delimiters ($<<<<<<$,======,$>>>>>>$) be deleted.
245 Unless you are making modifications which exactly parallel
246 developments we make, these types of conflicts should be rare.
247
248 \paragraph*{Upgrading to the current pre-release version}
249
250 We don't make a ``release'' for every little patch and bug fix in
251 order to keep the frequency of upgrades to a minimum. However, if you
252 have run into a problem for which ``we have already fixed in the
253 latest code'' and we haven't made a ``tag'' or ``release'' since that
254 patch then you'll need to get the latest code:
255 \begin{verbatim}
256 % cvs -q update -A -d -P
257 \end{verbatim}
258 Unlike, the ``check-out'' and ``update'' procedures above, there is no
259 ``tag'' or release name. The -A tells CVS to upgrade to the
260 very latest version. As a rule, we don't recommend this since you
261 might upgrade while we are in the processes of checking in the code so
262 that you may only have part of a patch. Using this method of updating
263 also means we can't tell what version of the code you are working
264 with. So please be sure you understand what you're doing.
265
266 \section{Model and directory structure}
267 \begin{rawhtml}
268 <!-- CMIREDIR:directory_structure: -->
269 \end{rawhtml}
270
271 The ``numerical'' model is contained within a execution environment
272 support wrapper. This wrapper is designed to provide a general
273 framework for grid-point models. MITgcmUV is a specific numerical
274 model that uses the framework. Under this structure the model is split
275 into execution environment support code and conventional numerical
276 model code. The execution environment support code is held under the
277 \texttt{eesupp} directory. The grid point model code is held under the
278 \texttt{model} directory. Code execution actually starts in the
279 \texttt{eesupp} routines and not in the \texttt{model} routines. For
280 this reason the top-level \texttt{MAIN.F} is in the
281 \texttt{eesupp/src} directory. In general, end-users should not need
282 to worry about this level. The top-level routine for the numerical
283 part of the code is in \texttt{model/src/THE\_MODEL\_MAIN.F}. Here is
284 a brief description of the directory structure of the model under the
285 root tree (a detailed description is given in section 3: Code
286 structure).
287
288 \begin{itemize}
289
290 \item \texttt{bin}: this directory is initially empty. It is the
291 default directory in which to compile the code.
292
293 \item \texttt{diags}: contains the code relative to time-averaged
294 diagnostics. It is subdivided into two subdirectories \texttt{inc}
295 and \texttt{src} that contain include files (\texttt{*.h} files) and
296 Fortran subroutines (\texttt{*.F} files), respectively.
297
298 \item \texttt{doc}: contains brief documentation notes.
299
300 \item \texttt{eesupp}: contains the execution environment source code.
301 Also subdivided into two subdirectories \texttt{inc} and
302 \texttt{src}.
303
304 \item \texttt{exe}: this directory is initially empty. It is the
305 default directory in which to execute the code.
306
307 \item \texttt{model}: this directory contains the main source code.
308 Also subdivided into two subdirectories \texttt{inc} and
309 \texttt{src}.
310
311 \item \texttt{pkg}: contains the source code for the packages. Each
312 package corresponds to a subdirectory. For example, \texttt{gmredi}
313 contains the code related to the Gent-McWilliams/Redi scheme,
314 \texttt{aim} the code relative to the atmospheric intermediate
315 physics. The packages are described in detail in section 3.
316
317 \item \texttt{tools}: this directory contains various useful tools.
318 For example, \texttt{genmake2} is a script written in csh (C-shell)
319 that should be used to generate your makefile. The directory
320 \texttt{adjoint} contains the makefile specific to the Tangent
321 linear and Adjoint Compiler (TAMC) that generates the adjoint code.
322 The latter is described in details in part V.
323
324 \item \texttt{utils}: this directory contains various utilities. The
325 subdirectory \texttt{knudsen2} contains code and a makefile that
326 compute coefficients of the polynomial approximation to the knudsen
327 formula for an ocean nonlinear equation of state. The
328 \texttt{matlab} subdirectory contains matlab scripts for reading
329 model output directly into matlab. \texttt{scripts} contains C-shell
330 post-processing scripts for joining processor-based and tiled-based
331 model output.
332
333 \item \texttt{verification}: this directory contains the model
334 examples. See section \ref{sect:modelExamples}.
335
336 \end{itemize}
337
338 \section[MITgcm Example Experiments]{Example experiments}
339 \label{sect:modelExamples}
340 \begin{rawhtml}
341 <!-- CMIREDIR:modelExamples: -->
342 \end{rawhtml}
343
344 %% a set of twenty-four pre-configured numerical experiments
345
346 The full MITgcm distribution comes with more than a dozen
347 pre-configured numerical experiments. Some of these example
348 experiments are tests of individual parts of the model code, but many
349 are fully fledged numerical simulations. A few of the examples are
350 used for tutorial documentation in sections \ref{sect:eg-baro} -
351 \ref{sect:eg-global}. The other examples follow the same general
352 structure as the tutorial examples. However, they only include brief
353 instructions in a text file called {\it README}. The examples are
354 located in subdirectories under the directory \texttt{verification}.
355 Each example is briefly described below.
356
357 \subsection{Full list of model examples}
358
359 \begin{enumerate}
360
361 \item \texttt{exp0} - single layer, ocean double gyre (barotropic with
362 free-surface). This experiment is described in detail in section
363 \ref{sect:eg-baro}.
364
365 \item \texttt{exp1} - Four layer, ocean double gyre. This experiment
366 is described in detail in section \ref{sect:eg-baroc}.
367
368 \item \texttt{exp2} - 4x4 degree global ocean simulation with steady
369 climatological forcing. This experiment is described in detail in
370 section \ref{sect:eg-global}.
371
372 \item \texttt{exp4} - Flow over a Gaussian bump in open-water or
373 channel with open boundaries.
374
375 \item \texttt{exp5} - Inhomogenously forced ocean convection in a
376 doubly periodic box.
377
378 \item \texttt{front\_relax} - Relaxation of an ocean thermal front (test for
379 Gent/McWilliams scheme). 2D (Y-Z).
380
381 \item \texttt{internal wave} - Ocean internal wave forced by open
382 boundary conditions.
383
384 \item \texttt{natl\_box} - Eastern subtropical North Atlantic with KPP
385 scheme; 1 month integration
386
387 \item \texttt{hs94.1x64x5} - Zonal averaged atmosphere using Held and
388 Suarez '94 forcing.
389
390 \item \texttt{hs94.128x64x5} - 3D atmosphere dynamics using Held and
391 Suarez '94 forcing.
392
393 \item \texttt{hs94.cs-32x32x5} - 3D atmosphere dynamics using Held and
394 Suarez '94 forcing on the cubed sphere.
395
396 \item \texttt{aim.5l\_zon-ave} - Intermediate Atmospheric physics.
397 Global Zonal Mean configuration, 1x64x5 resolution.
398
399 \item \texttt{aim.5l\_XZ\_Equatorial\_Slice} - Intermediate
400 Atmospheric physics, equatorial Slice configuration. 2D (X-Z).
401
402 \item \texttt{aim.5l\_Equatorial\_Channel} - Intermediate Atmospheric
403 physics. 3D Equatorial Channel configuration.
404
405 \item \texttt{aim.5l\_LatLon} - Intermediate Atmospheric physics.
406 Global configuration, on latitude longitude grid with 128x64x5 grid
407 points ($2.8^\circ$ resolution).
408
409 \item \texttt{adjustment.128x64x1} Barotropic adjustment problem on
410 latitude longitude grid with 128x64 grid points ($2.8^\circ$ resolution).
411
412 \item \texttt{adjustment.cs-32x32x1} Barotropic adjustment problem on
413 cube sphere grid with 32x32 points per face (roughly $2.8^\circ$
414 resolution).
415
416 \item \texttt{advect\_cs} Two-dimensional passive advection test on
417 cube sphere grid.
418
419 \item \texttt{advect\_xy} Two-dimensional (horizontal plane) passive
420 advection test on Cartesian grid.
421
422 \item \texttt{advect\_yz} Two-dimensional (vertical plane) passive
423 advection test on Cartesian grid.
424
425 \item \texttt{carbon} Simple passive tracer experiment. Includes
426 derivative calculation. Described in detail in section
427 \ref{sect:eg-carbon-ad}.
428
429 \item \texttt{flt\_example} Example of using float package.
430
431 \item \texttt{global\_ocean.90x40x15} Global circulation with GM, flux
432 boundary conditions and poles.
433
434 \item \texttt{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 \texttt{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 \texttt{code}: contains the code particular to the example. At a
449 minimum, this directory includes the following files:
450
451 \begin{itemize}
452 \item \texttt{code/packages.conf}: declares the list of packages or
453 package groups to be used. If not included, the default version
454 is located in \texttt{pkg/pkg\_default}. Package groups are
455 simply convenient collections of commonly used packages which are
456 defined in \texttt{pkg/pkg\_default}. Some packages may require
457 other packages or may require their absence (that is, they are
458 incompatible) and these package dependencies are listed in
459 \texttt{pkg/pkg\_depend}.
460
461 \item \texttt{code/CPP\_EEOPTIONS.h}: declares CPP keys relative to
462 the ``execution environment'' part of the code. The default
463 version is located in \texttt{eesupp/inc}.
464
465 \item \texttt{code/CPP\_OPTIONS.h}: declares CPP keys relative to
466 the ``numerical model'' part of the code. The default version is
467 located in \texttt{model/inc}.
468
469 \item \texttt{code/SIZE.h}: declares size of underlying
470 computational grid. The default version is located in
471 \texttt{model/inc}.
472 \end{itemize}
473
474 In addition, other include files and subroutines might be present in
475 \texttt{code} depending on the particular experiment. See Section 2
476 for more details.
477
478 \item \texttt{input}: contains the input data files required to run
479 the example. At a minimum, the \texttt{input} directory contains the
480 following files:
481
482 \begin{itemize}
483 \item \texttt{input/data}: this file, written as a namelist,
484 specifies the main parameters for the experiment.
485
486 \item \texttt{input/data.pkg}: contains parameters relative to the
487 packages used in the experiment.
488
489 \item \texttt{input/eedata}: this file contains ``execution
490 environment'' data. At present, this consists of a specification
491 of the number of threads to use in $X$ and $Y$ under multithreaded
492 execution.
493 \end{itemize}
494
495 In addition, you will also find in this directory the forcing and
496 topography files as well as the files describing the initial state
497 of the experiment. This varies from experiment to experiment. See
498 section 2 for more details.
499
500 \item \texttt{results}: this directory contains the output file
501 \texttt{output.txt} produced by the simulation example. This file is
502 useful for comparison with your own output when you run the
503 experiment.
504 \end{itemize}
505
506 Once you have chosen the example you want to run, you are ready to
507 compile the code.
508
509 \section[Building MITgcm]{Building the code}
510 \label{sect:buildingCode}
511 \begin{rawhtml}
512 <!-- CMIREDIR:buildingCode: -->
513 \end{rawhtml}
514
515 To compile the code, we use the \texttt{make} program. This uses a
516 file (\texttt{Makefile}) that allows us to pre-process source files,
517 specify compiler and optimization options and also figures out any
518 file dependencies. We supply a script (\texttt{genmake2}), described
519 in section \ref{sect:genmake}, that automatically creates the
520 \texttt{Makefile} for you. You then need to build the dependencies and
521 compile the code.
522
523 As an example, assume that you want to build and run experiment
524 \texttt{verification/exp2}. The are multiple ways and places to
525 actually do this but here let's build the code in
526 \texttt{verification/exp2/build}:
527 \begin{verbatim}
528 % cd verification/exp2/build
529 \end{verbatim}
530 First, build the \texttt{Makefile}:
531 \begin{verbatim}
532 % ../../../tools/genmake2 -mods=../code
533 \end{verbatim}
534 The command line option tells \texttt{genmake} to override model source
535 code with any files in the directory \texttt{../code/}.
536
537 On many systems, the \texttt{genmake2} program will be able to
538 automatically recognize the hardware, find compilers and other tools
539 within the user's path (``\texttt{echo \$PATH}''), and then choose an
540 appropriate set of options from the files (``optfiles'') contained in
541 the \texttt{tools/build\_options} directory. Under some
542 circumstances, a user may have to create a new ``optfile'' in order to
543 specify the exact combination of compiler, compiler flags, libraries,
544 and other options necessary to build a particular configuration of
545 MITgcm. In such cases, it is generally helpful to read the existing
546 ``optfiles'' and mimic their syntax.
547
548 Through the MITgcm-support list, the MITgcm developers are willing to
549 provide help writing or modifing ``optfiles''. And we encourage users
550 to post new ``optfiles'' (particularly ones for new machines or
551 architectures) to the
552 \begin{rawhtml} <A href="mailto:MITgcm-support@mitgcm.org"> \end{rawhtml}
553 MITgcm-support@mitgcm.org
554 \begin{rawhtml} </A> \end{rawhtml}
555 list.
556
557 To specify an optfile to \texttt{genmake2}, the syntax is:
558 \begin{verbatim}
559 % ../../../tools/genmake2 -mods=../code -of /path/to/optfile
560 \end{verbatim}
561
562 Once a \texttt{Makefile} has been generated, we create the
563 dependencies with the command:
564 \begin{verbatim}
565 % make depend
566 \end{verbatim}
567 This modifies the \texttt{Makefile} by attaching a (usually, long)
568 list of files upon which other files depend. The purpose of this is to
569 reduce re-compilation if and when you start to modify the code. The
570 {\tt make depend} command also creates links from the model source to
571 this directory. It is important to note that the {\tt make depend}
572 stage will occasionally produce warnings or errors since the
573 dependency parsing tool is unable to find all of the necessary header
574 files (\textit{eg.} \texttt{netcdf.inc}). In these circumstances, it
575 is usually OK to ignore the warnings/errors and proceed to the next
576 step.
577
578 Next one can compile the code using:
579 \begin{verbatim}
580 % make
581 \end{verbatim}
582 The {\tt make} command creates an executable called \texttt{mitgcmuv}.
583 Additional make ``targets'' are defined within the makefile to aid in
584 the production of adjoint and other versions of MITgcm. On SMP
585 (shared multi-processor) systems, the build process can often be sped
586 up appreciably using the command:
587 \begin{verbatim}
588 % make -j 2
589 \end{verbatim}
590 where the ``2'' can be replaced with a number that corresponds to the
591 number of CPUs available.
592
593 Now you are ready to run the model. General instructions for doing so are
594 given in section \ref{sect:runModel}. Here, we can run the model by
595 first creating links to all the input files:
596 \begin{verbatim}
597 ln -s ../input/* .
598 \end{verbatim}
599 and then calling the executable with:
600 \begin{verbatim}
601 ./mitgcmuv > output.txt
602 \end{verbatim}
603 where we are re-directing the stream of text output to the file
604 \texttt{output.txt}.
605
606
607 \section[Running MITgcm]{Running the model in prognostic mode}
608 \label{sect:runModel}
609 \begin{rawhtml}
610 <!-- CMIREDIR:runModel: -->
611 \end{rawhtml}
612
613 If compilation finished succesfully (section \ref{sect:buildingCode})
614 then an executable called \texttt{mitgcmuv} will now exist in the
615 local directory.
616
617 To run the model as a single process (\textit{ie.} not in parallel)
618 simply type:
619 \begin{verbatim}
620 % ./mitgcmuv
621 \end{verbatim}
622 The ``./'' is a safe-guard to make sure you use the local executable
623 in case you have others that exist in your path (surely odd if you
624 do!). The above command will spew out many lines of text output to
625 your screen. This output contains details such as parameter values as
626 well as diagnostics such as mean Kinetic energy, largest CFL number,
627 etc. It is worth keeping this text output with the binary output so we
628 normally re-direct the \texttt{stdout} stream as follows:
629 \begin{verbatim}
630 % ./mitgcmuv > output.txt
631 \end{verbatim}
632 In the event that the model encounters an error and stops, it is very
633 helpful to include the last few line of this \texttt{output.txt} file
634 along with the (\texttt{stderr}) error message within any bug reports.
635
636 For the example experiments in \texttt{verification}, an example of the
637 output is kept in \texttt{results/output.txt} for comparison. You can
638 compare your \texttt{output.txt} with the corresponding one for that
639 experiment to check that the set-up works.
640
641
642
643 \subsection{Output files}
644
645 The model produces various output files and, when using \texttt{mnc},
646 sometimes even directories. Depending upon the I/O package(s)
647 selected at compile time (either \texttt{mdsio} or \texttt{mnc} or
648 both as determined by \texttt{code/packages.conf}) and the run-time
649 flags set (in \texttt{input/data.pkg}), the following output may
650 appear.
651
652
653 \subsubsection{MDSIO output files}
654
655 The ``traditional'' output files are generated by the \texttt{mdsio}
656 package. At a minimum, the instantaneous ``state'' of the model is
657 written out, which is made of the following files:
658
659 \begin{itemize}
660 \item \texttt{U.00000nIter} - zonal component of velocity field (m/s
661 and positive eastward).
662
663 \item \texttt{V.00000nIter} - meridional component of velocity field
664 (m/s and positive northward).
665
666 \item \texttt{W.00000nIter} - vertical component of velocity field
667 (ocean: m/s and positive upward, atmosphere: Pa/s and positive
668 towards increasing pressure i.e. downward).
669
670 \item \texttt{T.00000nIter} - potential temperature (ocean:
671 $^{\circ}\mathrm{C}$, atmosphere: $^{\circ}\mathrm{K}$).
672
673 \item \texttt{S.00000nIter} - ocean: salinity (psu), atmosphere: water
674 vapor (g/kg).
675
676 \item \texttt{Eta.00000nIter} - ocean: surface elevation (m),
677 atmosphere: surface pressure anomaly (Pa).
678 \end{itemize}
679
680 The chain \texttt{00000nIter} consists of ten figures that specify the
681 iteration number at which the output is written out. For example,
682 \texttt{U.0000000300} is the zonal velocity at iteration 300.
683
684 In addition, a ``pickup'' or ``checkpoint'' file called:
685
686 \begin{itemize}
687 \item \texttt{pickup.00000nIter}
688 \end{itemize}
689
690 is written out. This file represents the state of the model in a condensed
691 form and is used for restarting the integration. If the C-D scheme is used,
692 there is an additional ``pickup'' file:
693
694 \begin{itemize}
695 \item \texttt{pickup\_cd.00000nIter}
696 \end{itemize}
697
698 containing the D-grid velocity data and that has to be written out as well
699 in order to restart the integration. Rolling checkpoint files are the same
700 as the pickup files but are named differently. Their name contain the chain
701 \texttt{ckptA} or \texttt{ckptB} instead of \texttt{00000nIter}. They can be
702 used to restart the model but are overwritten every other time they are
703 output to save disk space during long integrations.
704
705
706
707 \subsubsection{MNC output files}
708
709 Unlike the \texttt{mdsio} output, the \texttt{mnc}--generated output
710 is usually (though not necessarily) placed within a subdirectory with
711 a name such as \texttt{mnc\_test\_\${DATE}\_\${SEQ}}. The files
712 within this subdirectory are all in the ``self-describing'' netCDF
713 format and can thus be browsed and/or plotted using tools such as:
714 \begin{itemize}
715 \item \texttt{ncdump} is a utility which is typically included
716 with every netCDF install:
717 \begin{rawhtml} <A href="http://www.unidata.ucar.edu/packages/netcdf/"> \end{rawhtml}
718 \begin{verbatim}
719 http://www.unidata.ucar.edu/packages/netcdf/
720 \end{verbatim}
721 \begin{rawhtml} </A> \end{rawhtml} and it converts the netCDF
722 binaries into formatted ASCII text files.
723
724 \item \texttt{ncview} utility is a very convenient and quick way
725 to plot netCDF data and it runs on most OSes:
726 \begin{rawhtml} <A href="http://meteora.ucsd.edu/~pierce/ncview_home_page.html"> \end{rawhtml}
727 \begin{verbatim}
728 http://meteora.ucsd.edu/~pierce/ncview_home_page.html
729 \end{verbatim}
730 \begin{rawhtml} </A> \end{rawhtml}
731
732 \item MatLAB(c) and other common post-processing environments provide
733 various netCDF interfaces including:
734 \begin{rawhtml} <A href="http://mexcdf.sourceforge.net/"> \end{rawhtml}
735 \begin{verbatim}
736 http://mexcdf.sourceforge.net/
737 \end{verbatim}
738 \begin{rawhtml} </A> \end{rawhtml}
739 \begin{rawhtml} <A href="http://woodshole.er.usgs.gov/staffpages/cdenham/public_html/MexCDF/nc4ml5.html"> \end{rawhtml}
740 \begin{verbatim}
741 http://woodshole.er.usgs.gov/staffpages/cdenham/public_html/MexCDF/nc4ml5.html
742 \end{verbatim}
743 \begin{rawhtml} </A> \end{rawhtml}
744 \end{itemize}
745
746
747 \subsection{Looking at the output}
748
749 The ``traditional'' or mdsio model data are written according to a
750 ``meta/data'' file format. Each variable is associated with two files
751 with suffix names \texttt{.data} and \texttt{.meta}. The
752 \texttt{.data} file contains the data written in binary form
753 (big\_endian by default). The \texttt{.meta} file is a ``header'' file
754 that contains information about the size and the structure of the
755 \texttt{.data} file. This way of organizing the output is particularly
756 useful when running multi-processors calculations. The base version of
757 the model includes a few matlab utilities to read output files written
758 in this format. The matlab scripts are located in the directory
759 \texttt{utils/matlab} under the root tree. The script \texttt{rdmds.m}
760 reads the data. Look at the comments inside the script to see how to
761 use it.
762
763 Some examples of reading and visualizing some output in {\em Matlab}:
764 \begin{verbatim}
765 % matlab
766 >> H=rdmds('Depth');
767 >> contourf(H');colorbar;
768 >> title('Depth of fluid as used by model');
769
770 >> eta=rdmds('Eta',10);
771 >> imagesc(eta');axis ij;colorbar;
772 >> title('Surface height at iter=10');
773
774 >> eta=rdmds('Eta',[0:10:100]);
775 >> for n=1:11; imagesc(eta(:,:,n)');axis ij;colorbar;pause(.5);end
776 \end{verbatim}
777
778 Similar scripts for netCDF output (\texttt{rdmnc.m}) are available and
779 they are described in Section \ref{sec:pkg:mnc}.
780

  ViewVC Help
Powered by ViewVC 1.1.22