/[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.17 - (show annotations) (download) (as text)
Thu Jan 29 15:11:39 2004 UTC (21 years, 5 months ago) by edhill
Branch: MAIN
Changes since 1.16: +404 -373 lines
File MIME type: application/x-tex
 o more changes to genmake2 in part3
 o trial of the "epsfig" package

1 % $Header: /u/u3/gcmpack/manual/part3/getting_started.tex,v 1.16 2004/01/29 03:02:33 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 \section{Where to find information}
19 \label{sect:whereToFindInfo}
20
21 A web site is maintained for release 2 (``Pelican'') of MITgcm:
22 \begin{rawhtml} <A href=http://mitgcm.org/pelican/ target="idontexist"> \end{rawhtml}
23 \begin{verbatim}
24 http://mitgcm.org/pelican
25 \end{verbatim}
26 \begin{rawhtml} </A> \end{rawhtml}
27 Here you will find an on-line version of this document, a
28 ``browsable'' copy of the code and a searchable database of the model
29 and site, as well as links for downloading the model and
30 documentation, to data-sources, and other related sites.
31
32 There is also a web-archived support mailing list for the model that
33 you can email at \texttt{MITgcm-support@mitgcm.org} or browse at:
34 \begin{rawhtml} <A href=http://mitgcm.org/mailman/listinfo/mitgcm-support/ target="idontexist"> \end{rawhtml}
35 \begin{verbatim}
36 http://mitgcm.org/mailman/listinfo/mitgcm-support/
37 http://mitgcm.org/pipermail/mitgcm-support/
38 \end{verbatim}
39 \begin{rawhtml} </A> \end{rawhtml}
40 Essentially all of the MITgcm web pages can be searched using a
41 popular web crawler such as Google or through our own search facility:
42 \begin{rawhtml} <A href=http://mitgcm.org/mailman/htdig/ target="idontexist"> \end{rawhtml}
43 \begin{verbatim}
44 http://mitgcm.org/htdig/
45 \end{verbatim}
46 \begin{rawhtml} </A> \end{rawhtml}
47 %%% http://www.google.com/search?q=hydrostatic+site%3Amitgcm.org
48
49
50
51 \section{Obtaining the code}
52 \label{sect:obtainingCode}
53
54 MITgcm can be downloaded from our system by following
55 the instructions below. As a courtesy we ask that you send e-mail to us at
56 \begin{rawhtml} <A href=mailto:MITgcm-support@mitgcm.org> \end{rawhtml}
57 MITgcm-support@mitgcm.org
58 \begin{rawhtml} </A> \end{rawhtml}
59 to enable us to keep track of who's using the model and in what application.
60 You can download the model two ways:
61
62 \begin{enumerate}
63 \item Using CVS software. CVS is a freely available source code management
64 tool. To use CVS you need to have the software installed. Many systems
65 come with CVS pre-installed, otherwise good places to look for
66 the software for a particular platform are
67 \begin{rawhtml} <A href=http://www.cvshome.org/ target="idontexist"> \end{rawhtml}
68 cvshome.org
69 \begin{rawhtml} </A> \end{rawhtml}
70 and
71 \begin{rawhtml} <A href=http://www.wincvs.org/ target="idontexist"> \end{rawhtml}
72 wincvs.org
73 \begin{rawhtml} </A> \end{rawhtml}
74 .
75
76 \item Using a tar file. This method is simple and does not
77 require any special software. However, this method does not
78 provide easy support for maintenance updates.
79
80 \end{enumerate}
81
82 If CVS is available on your system, we strongly encourage you to use it. CVS
83 provides an efficient and elegant way of organizing your code and keeping
84 track of your changes. If CVS is not available on your machine, you can also
85 download a tar file.
86
87 Before you can use CVS, the following environment variable(s) should
88 be set within your shell. For a csh or tcsh shell, put the following
89 \begin{verbatim}
90 % setenv CVSROOT :pserver:cvsanon@mitgcm.org:/u/gcmpack
91 \end{verbatim}
92 in your .cshrc or .tcshrc file. For bash or sh shells, put:
93 \begin{verbatim}
94 % export CVSROOT=':pserver:cvsanon@mitgcm.org:/u/gcmpack'
95 \end{verbatim}
96 in your .profile or .bashrc file.
97
98
99 To get MITgcm through CVS, first register with the MITgcm CVS server
100 using command:
101 \begin{verbatim}
102 % cvs login ( CVS password: cvsanon )
103 \end{verbatim}
104 You only need to do a ``cvs login'' once.
105
106 To obtain the latest sources type:
107 \begin{verbatim}
108 % cvs co MITgcm
109 \end{verbatim}
110 or to get a specific release type:
111 \begin{verbatim}
112 % cvs co -P -r checkpoint52i_post MITgcm
113 \end{verbatim}
114 The MITgcm web site contains further directions concerning the source
115 code and CVS. It also contains a web interface to our CVS archive so
116 that one may easily view the state of files, revisions, and other
117 development milestones:
118 \begin{rawhtml} <A href=''http://mitgcm.org/download'' target="idontexist"> \end{rawhtml}
119 \begin{verbatim}
120 http://mitgcm.org/source_code.html
121 \end{verbatim}
122 \begin{rawhtml} </A> \end{rawhtml}
123
124
125 The checkout process creates a directory called \textit{MITgcm}. If
126 the directory \textit{MITgcm} exists this command updates your code
127 based on the repository. Each directory in the source tree contains a
128 directory \textit{CVS}. This information is required by CVS to keep
129 track of your file versions with respect to the repository. Don't edit
130 the files in \textit{CVS}! You can also use CVS to download code
131 updates. More extensive information on using CVS for maintaining
132 MITgcm code can be found
133 \begin{rawhtml} <A href=''http://mitgcm.org/usingcvstoget.html'' target="idontexist"> \end{rawhtml}
134 here
135 \begin{rawhtml} </A> \end{rawhtml}
136 .
137
138
139 \paragraph*{Conventional download method}
140 \label{sect:conventionalDownload}
141
142 If you do not have CVS on your system, you can download the model as a
143 tar file from the web site at:
144 \begin{rawhtml} <A href=http://mitgcm.org/download target="idontexist"> \end{rawhtml}
145 \begin{verbatim}
146 http://mitgcm.org/download/
147 \end{verbatim}
148 \begin{rawhtml} </A> \end{rawhtml}
149 The tar file still contains CVS information which we urge you not to
150 delete; even if you do not use CVS yourself the information can help
151 us if you should need to send us your copy of the code. If a recent
152 tar file does not exist, then please contact the developers through
153 the
154 \begin{rawhtml} <A href=''mailto:MITgcm-support@mitgcm.org"> \end{rawhtml}
155 MITgcm-support@mitgcm.org
156 \begin{rawhtml} </A> \end{rawhtml}
157 mailing list.
158
159 \paragraph*{Upgrading from an earlier version}
160
161 If you already have an earlier version of the code you can ``upgrade''
162 your copy instead of downloading the entire repository again. First,
163 ``cd'' (change directory) to the top of your working copy:
164 \begin{verbatim}
165 % cd MITgcm
166 \end{verbatim}
167 and then issue the cvs update command such as:
168 \begin{verbatim}
169 % cvs -q update -r checkpoint52i_post -d -P
170 \end{verbatim}
171 This will update the ``tag'' to ``checkpoint52i\_post'', add any new
172 directories (-d) and remove any empty directories (-P). The -q option
173 means be quiet which will reduce the number of messages you'll see in
174 the terminal. If you have modified the code prior to upgrading, CVS
175 will try to merge your changes with the upgrades. If there is a
176 conflict between your modifications and the upgrade, it will report
177 that file with a ``C'' in front, e.g.:
178 \begin{verbatim}
179 C model/src/ini_parms.F
180 \end{verbatim}
181 If the list of conflicts scrolled off the screen, you can re-issue the
182 cvs update command and it will report the conflicts. Conflicts are
183 indicated in the code by the delimites ``$<<<<<<<$'', ``======='' and
184 ``$>>>>>>>$''. For example,
185 {\small
186 \begin{verbatim}
187 <<<<<<< ini_parms.F
188 & bottomDragLinear,myOwnBottomDragCoefficient,
189 =======
190 & bottomDragLinear,bottomDragQuadratic,
191 >>>>>>> 1.18
192 \end{verbatim}
193 }
194 means that you added ``myOwnBottomDragCoefficient'' to a namelist at
195 the same time and place that we added ``bottomDragQuadratic''. You
196 need to resolve this conflict and in this case the line should be
197 changed to:
198 {\small
199 \begin{verbatim}
200 & bottomDragLinear,bottomDragQuadratic,myOwnBottomDragCoefficient,
201 \end{verbatim}
202 }
203 and the lines with the delimiters ($<<<<<<$,======,$>>>>>>$) be deleted.
204 Unless you are making modifications which exactly parallel
205 developments we make, these types of conflicts should be rare.
206
207 \paragraph*{Upgrading to the current pre-release version}
208
209 We don't make a ``release'' for every little patch and bug fix in
210 order to keep the frequency of upgrades to a minimum. However, if you
211 have run into a problem for which ``we have already fixed in the
212 latest code'' and we haven't made a ``tag'' or ``release'' since that
213 patch then you'll need to get the latest code:
214 \begin{verbatim}
215 % cvs -q update -A -d -P
216 \end{verbatim}
217 Unlike, the ``check-out'' and ``update'' procedures above, there is no
218 ``tag'' or release name. The -A tells CVS to upgrade to the
219 very latest version. As a rule, we don't recommend this since you
220 might upgrade while we are in the processes of checking in the code so
221 that you may only have part of a patch. Using this method of updating
222 also means we can't tell what version of the code you are working
223 with. So please be sure you understand what you're doing.
224
225 \section{Model and directory structure}
226
227 The ``numerical'' model is contained within a execution environment
228 support wrapper. This wrapper is designed to provide a general
229 framework for grid-point models. MITgcmUV is a specific numerical
230 model that uses the framework. Under this structure the model is split
231 into execution environment support code and conventional numerical
232 model code. The execution environment support code is held under the
233 \textit{eesupp} directory. The grid point model code is held under the
234 \textit{model} directory. Code execution actually starts in the
235 \textit{eesupp} routines and not in the \textit{model} routines. For
236 this reason the top-level \textit{MAIN.F} is in the
237 \textit{eesupp/src} directory. In general, end-users should not need
238 to worry about this level. The top-level routine for the numerical
239 part of the code is in \textit{model/src/THE\_MODEL\_MAIN.F}. Here is
240 a brief description of the directory structure of the model under the
241 root tree (a detailed description is given in section 3: Code
242 structure).
243
244 \begin{itemize}
245
246 \item \textit{bin}: this directory is initially empty. It is the
247 default directory in which to compile the code.
248
249 \item \textit{diags}: contains the code relative to time-averaged
250 diagnostics. It is subdivided into two subdirectories \textit{inc}
251 and \textit{src} that contain include files (*.\textit{h} files) and
252 Fortran subroutines (*.\textit{F} files), respectively.
253
254 \item \textit{doc}: contains brief documentation notes.
255
256 \item \textit{eesupp}: contains the execution environment source code.
257 Also subdivided into two subdirectories \textit{inc} and
258 \textit{src}.
259
260 \item \textit{exe}: this directory is initially empty. It is the
261 default directory in which to execute the code.
262
263 \item \textit{model}: this directory contains the main source code.
264 Also subdivided into two subdirectories \textit{inc} and
265 \textit{src}.
266
267 \item \textit{pkg}: contains the source code for the packages. Each
268 package corresponds to a subdirectory. For example, \textit{gmredi}
269 contains the code related to the Gent-McWilliams/Redi scheme,
270 \textit{aim} the code relative to the atmospheric intermediate
271 physics. The packages are described in detail in section 3.
272
273 \item \textit{tools}: this directory contains various useful tools.
274 For example, \textit{genmake2} is a script written in csh (C-shell)
275 that should be used to generate your makefile. The directory
276 \textit{adjoint} contains the makefile specific to the Tangent
277 linear and Adjoint Compiler (TAMC) that generates the adjoint code.
278 The latter is described in details in part V.
279
280 \item \textit{utils}: this directory contains various utilities. The
281 subdirectory \textit{knudsen2} contains code and a makefile that
282 compute coefficients of the polynomial approximation to the knudsen
283 formula for an ocean nonlinear equation of state. The
284 \textit{matlab} subdirectory contains matlab scripts for reading
285 model output directly into matlab. \textit{scripts} contains C-shell
286 post-processing scripts for joining processor-based and tiled-based
287 model output.
288
289 \item \textit{verification}: this directory contains the model
290 examples. See section \ref{sect:modelExamples}.
291
292 \end{itemize}
293
294 \section{Example experiments}
295 \label{sect:modelExamples}
296
297 %% a set of twenty-four pre-configured numerical experiments
298
299 The MITgcm distribution comes with more than a dozen pre-configured
300 numerical experiments. Some of these example experiments are tests of
301 individual parts of the model code, but many are fully fledged
302 numerical simulations. A few of the examples are used for tutorial
303 documentation in sections \ref{sect:eg-baro} - \ref{sect:eg-global}.
304 The other examples follow the same general structure as the tutorial
305 examples. However, they only include brief instructions in a text file
306 called {\it README}. The examples are located in subdirectories under
307 the directory \textit{verification}. Each example is briefly described
308 below.
309
310 \subsection{Full list of model examples}
311
312 \begin{enumerate}
313
314 \item \textit{exp0} - single layer, ocean double gyre (barotropic with
315 free-surface). This experiment is described in detail in section
316 \ref{sect:eg-baro}.
317
318 \item \textit{exp1} - Four layer, ocean double gyre. This experiment
319 is described in detail in section \ref{sect:eg-baroc}.
320
321 \item \textit{exp2} - 4x4 degree global ocean simulation with steady
322 climatological forcing. This experiment is described in detail in
323 section \ref{sect:eg-global}.
324
325 \item \textit{exp4} - Flow over a Gaussian bump in open-water or
326 channel with open boundaries.
327
328 \item \textit{exp5} - Inhomogenously forced ocean convection in a
329 doubly periodic box.
330
331 \item \textit{front\_relax} - Relaxation of an ocean thermal front (test for
332 Gent/McWilliams scheme). 2D (Y-Z).
333
334 \item \textit{internal wave} - Ocean internal wave forced by open
335 boundary conditions.
336
337 \item \textit{natl\_box} - Eastern subtropical North Atlantic with KPP
338 scheme; 1 month integration
339
340 \item \textit{hs94.1x64x5} - Zonal averaged atmosphere using Held and
341 Suarez '94 forcing.
342
343 \item \textit{hs94.128x64x5} - 3D atmosphere dynamics using Held and
344 Suarez '94 forcing.
345
346 \item \textit{hs94.cs-32x32x5} - 3D atmosphere dynamics using Held and
347 Suarez '94 forcing on the cubed sphere.
348
349 \item \textit{aim.5l\_zon-ave} - Intermediate Atmospheric physics.
350 Global Zonal Mean configuration, 1x64x5 resolution.
351
352 \item \textit{aim.5l\_XZ\_Equatorial\_Slice} - Intermediate
353 Atmospheric physics, equatorial Slice configuration. 2D (X-Z).
354
355 \item \textit{aim.5l\_Equatorial\_Channel} - Intermediate Atmospheric
356 physics. 3D Equatorial Channel configuration.
357
358 \item \textit{aim.5l\_LatLon} - Intermediate Atmospheric physics.
359 Global configuration, on latitude longitude grid with 128x64x5 grid
360 points ($2.8^\circ{\rm degree}$ resolution).
361
362 \item \textit{adjustment.128x64x1} Barotropic adjustment problem on
363 latitude longitude grid with 128x64 grid points ($2.8^\circ{\rm
364 degree}$ resolution).
365
366 \item \textit{adjustment.cs-32x32x1} Barotropic adjustment problem on
367 cube sphere grid with 32x32 points per face ( roughly $2.8^\circ{\rm
368 degree}$ resolution).
369
370 \item \textit{advect\_cs} Two-dimensional passive advection test on
371 cube sphere grid.
372
373 \item \textit{advect\_xy} Two-dimensional (horizontal plane) passive
374 advection test on Cartesian grid.
375
376 \item \textit{advect\_yz} Two-dimensional (vertical plane) passive
377 advection test on Cartesian grid.
378
379 \item \textit{carbon} Simple passive tracer experiment. Includes
380 derivative calculation. Described in detail in section
381 \ref{sect:eg-carbon-ad}.
382
383 \item \textit{flt\_example} Example of using float package.
384
385 \item \textit{global\_ocean.90x40x15} Global circulation with GM, flux
386 boundary conditions and poles.
387
388 \item \textit{global\_ocean\_pressure} Global circulation in pressure
389 coordinate (non-Boussinesq ocean model). Described in detail in
390 section \ref{sect:eg-globalpressure}.
391
392 \item \textit{solid-body.cs-32x32x1} Solid body rotation test for cube
393 sphere grid.
394
395 \end{enumerate}
396
397 \subsection{Directory structure of model examples}
398
399 Each example directory has the following subdirectories:
400
401 \begin{itemize}
402 \item \textit{code}: contains the code particular to the example. At a
403 minimum, this directory includes the following files:
404
405 \begin{itemize}
406 \item \textit{code/CPP\_EEOPTIONS.h}: declares CPP keys relative to
407 the ``execution environment'' part of the code. The default
408 version is located in \textit{eesupp/inc}.
409
410 \item \textit{code/CPP\_OPTIONS.h}: declares CPP keys relative to
411 the ``numerical model'' part of the code. The default version is
412 located in \textit{model/inc}.
413
414 \item \textit{code/SIZE.h}: declares size of underlying
415 computational grid. The default version is located in
416 \textit{model/inc}.
417 \end{itemize}
418
419 In addition, other include files and subroutines might be present in
420 \textit{code} depending on the particular experiment. See Section 2
421 for more details.
422
423 \item \textit{input}: contains the input data files required to run
424 the example. At a minimum, the \textit{input} directory contains the
425 following files:
426
427 \begin{itemize}
428 \item \textit{input/data}: this file, written as a namelist,
429 specifies the main parameters for the experiment.
430
431 \item \textit{input/data.pkg}: contains parameters relative to the
432 packages used in the experiment.
433
434 \item \textit{input/eedata}: this file contains ``execution
435 environment'' data. At present, this consists of a specification
436 of the number of threads to use in $X$ and $Y$ under multithreaded
437 execution.
438 \end{itemize}
439
440 In addition, you will also find in this directory the forcing and
441 topography files as well as the files describing the initial state
442 of the experiment. This varies from experiment to experiment. See
443 section 2 for more details.
444
445 \item \textit{results}: this directory contains the output file
446 \textit{output.txt} produced by the simulation example. This file is
447 useful for comparison with your own output when you run the
448 experiment.
449 \end{itemize}
450
451 Once you have chosen the example you want to run, you are ready to
452 compile the code.
453
454 \section{Building the code}
455 \label{sect:buildingCode}
456
457 To compile the code, we use the {\em make} program. This uses a file
458 ({\em Makefile}) that allows us to pre-process source files, specify
459 compiler and optimization options and also figures out any file
460 dependencies. We supply a script ({\em genmake2}), described in
461 section \ref{sect:genmake}, that automatically creates the {\em
462 Makefile} for you. You then need to build the dependencies and
463 compile the code.
464
465 As an example, let's assume that you want to build and run experiment
466 \textit{verification/exp2}. The are multiple ways and places to
467 actually do this but here let's build the code in
468 \textit{verification/exp2/input}:
469 \begin{verbatim}
470 % cd verification/exp2/input
471 \end{verbatim}
472 First, build the {\em Makefile}:
473 \begin{verbatim}
474 % ../../../tools/genmake2 -mods=../code
475 \end{verbatim}
476 The command line option tells {\em genmake} to override model source
477 code with any files in the directory {\em ./code/}.
478
479 On many systems, the {\em genmake2} program will be able to
480 automatically recognize the hardware, find compilers and other tools
481 within the user's path (``echo \$PATH''), and then choose an
482 appropriate set of options from the files contained in the {\em
483 tools/build\_options} directory. Under some circumstances, a user
484 may have to create a new ``optfile'' in order to specify the exact
485 combination of compiler, compiler flags, libraries, and other options
486 necessary to build a particular configuration of MITgcm. In such
487 cases, it is generally helpful to read the existing ``optfiles'' and
488 mimic their syntax.
489
490 Through the MITgcm-support list, the MITgcm developers are willing to
491 provide help writing or modifing ``optfiles''. And we encourage users
492 to post new ``optfiles'' (particularly ones for new machines or
493 architectures) to the
494 \begin{rawhtml} <A href=''mailto:MITgcm-support@mitgcm.org"> \end{rawhtml}
495 MITgcm-support@mitgcm.org
496 \begin{rawhtml} </A> \end{rawhtml}
497 list.
498
499 To specify an optfile to {\em genmake2}, the syntax is:
500 \begin{verbatim}
501 % ../../../tools/genmake2 -mods=../code -of /path/to/optfile
502 \end{verbatim}
503
504 Once a {\em Makefile} has been generated, we create the dependencies:
505 \begin{verbatim}
506 % make depend
507 \end{verbatim}
508 This modifies the {\em Makefile} by attaching a [long] list of files
509 upon which other files depend. The purpose of this is to reduce
510 re-compilation if and when you start to modify the code. The {\tt make
511 depend} command also creates links from the model source to this
512 directory.
513
514 Next compile the code:
515 \begin{verbatim}
516 % make
517 \end{verbatim}
518 The {\tt make} command creates an executable called \textit{mitgcmuv}.
519 Additional make ``targets'' are defined within the makefile to aid in
520 the production of adjoint and other versions of MITgcm.
521
522 Now you are ready to run the model. General instructions for doing so are
523 given in section \ref{sect:runModel}. Here, we can run the model with:
524 \begin{verbatim}
525 ./mitgcmuv > output.txt
526 \end{verbatim}
527 where we are re-directing the stream of text output to the file {\em
528 output.txt}.
529
530
531 \subsection{Building/compiling the code elsewhere}
532
533 In the example above (section \ref{sect:buildingCode}) we built the
534 executable in the {\em input} directory of the experiment for
535 convenience. You can also configure and compile the code in other
536 locations, for example on a scratch disk with out having to copy the
537 entire source tree. The only requirement to do so is you have {\tt
538 genmake2} in your path or you know the absolute path to {\tt
539 genmake2}.
540
541 The following sections outline some possible methods of organizing
542 your source and data.
543
544 \subsubsection{Building from the {\em ../code directory}}
545
546 This is just as simple as building in the {\em input/} directory:
547 \begin{verbatim}
548 % cd verification/exp2/code
549 % ../../../tools/genmake2
550 % make depend
551 % make
552 \end{verbatim}
553 However, to run the model the executable ({\em mitgcmuv}) and input
554 files must be in the same place. If you only have one calculation to make:
555 \begin{verbatim}
556 % cd ../input
557 % cp ../code/mitgcmuv ./
558 % ./mitgcmuv > output.txt
559 \end{verbatim}
560 or if you will be making multiple runs with the same executable:
561 \begin{verbatim}
562 % cd ../
563 % cp -r input run1
564 % cp code/mitgcmuv run1
565 % cd run1
566 % ./mitgcmuv > output.txt
567 \end{verbatim}
568
569 \subsubsection{Building from a new directory}
570
571 Since the {\em input} directory contains input files it is often more
572 useful to keep {\em input} pristine and build in a new directory
573 within {\em verification/exp2/}:
574 \begin{verbatim}
575 % cd verification/exp2
576 % mkdir build
577 % cd build
578 % ../../../tools/genmake2 -mods=../code
579 % make depend
580 % make
581 \end{verbatim}
582 This builds the code exactly as before but this time you need to copy
583 either the executable or the input files or both in order to run the
584 model. For example,
585 \begin{verbatim}
586 % cp ../input/* ./
587 % ./mitgcmuv > output.txt
588 \end{verbatim}
589 or if you tend to make multiple runs with the same executable then
590 running in a new directory each time might be more appropriate:
591 \begin{verbatim}
592 % cd ../
593 % mkdir run1
594 % cp build/mitgcmuv run1/
595 % cp input/* run1/
596 % cd run1
597 % ./mitgcmuv > output.txt
598 \end{verbatim}
599
600 \subsubsection{Building on a scratch disk}
601
602 Model object files and output data can use up large amounts of disk
603 space so it is often the case that you will be operating on a large
604 scratch disk. Assuming the model source is in {\em ~/MITgcm} then the
605 following commands will build the model in {\em /scratch/exp2-run1}:
606 \begin{verbatim}
607 % cd /scratch/exp2-run1
608 % ~/MITgcm/tools/genmake2 -rootdir=~/MITgcm \
609 -mods=~/MITgcm/verification/exp2/code
610 % make depend
611 % make
612 \end{verbatim}
613 To run the model here, you'll need the input files:
614 \begin{verbatim}
615 % cp ~/MITgcm/verification/exp2/input/* ./
616 % ./mitgcmuv > output.txt
617 \end{verbatim}
618
619 As before, you could build in one directory and make multiple runs of
620 the one experiment:
621 \begin{verbatim}
622 % cd /scratch/exp2
623 % mkdir build
624 % cd build
625 % ~/MITgcm/tools/genmake2 -rootdir=~/MITgcm \
626 -mods=~/MITgcm/verification/exp2/code
627 % make depend
628 % make
629 % cd ../
630 % cp -r ~/MITgcm/verification/exp2/input run2
631 % cd run2
632 % ./mitgcmuv > output.txt
633 \end{verbatim}
634
635
636
637 \subsection{Using \textit{genmake2}}
638 \label{sect:genmake}
639
640 To compile the code, first use the program \texttt{genmake2} (located
641 in the \textit{tools} directory) to generate a Makefile.
642 \texttt{genmake2} is a shell script written to work with all
643 ``sh''--compatible shells including bash v1, bash v2, and Bourne.
644 Internally, \texttt{genmake2} determines the locations of needed
645 files, the compiler, compiler options, libraries, and Unix tools. It
646 relies upon a number of ``optfiles'' located in the {\em
647 tools/build\_options} directory.
648
649 The purpose of the optfiles is to provide all the compilation options
650 for particular ``platforms'' (where ``platform'' roughly means the
651 combination of the hardware and the compiler) and code configurations.
652 Given the combinations of possible compilers and library dependencies
653 ({\it eg.} MPI and NetCDF) there may be numerous optfiles available
654 for a single machine. The naming scheme for the majority of the
655 optfiles shipped with the code is
656 \begin{center}
657 {\bf OS\_HARDWARE\_COMPILER }
658 \end{center}
659 where
660 \begin{description}
661 \item[OS] is the name of the operating system (generally the
662 lower-case output of the {\tt 'uname'} command)
663 \item[HARDWARE] is a string that describes the CPU type and
664 corresponds to output from the {\tt 'uname -m'} command:
665 \begin{description}
666 \item[ia32] is for ``x86'' machines such as i386, i486, i586, i686,
667 and athlon
668 \item[ia64] is for Intel IA64 systems (eg. Itanium, Itanium2)
669 \item[amd64] is AMD x86\_64 systems
670 \item[ppc] is for Mac PowerPC systems
671 \end{description}
672 \item[COMPILER] is the compiler name (generally, the name of the
673 FORTRAN executable)
674 \end{description}
675
676 In many cases, the default optfiles are sufficient and will result in
677 usable Makefiles. However, for some machines or code configurations,
678 new ``optfiles'' must be written. To create a new optfile, it is
679 generally best to start with one of the defaults and modify it to suit
680 your needs. Like \texttt{genmake2}, the optfiles are all written
681 using a simple ``sh''--compatible syntax. While nearly all variables
682 used within \texttt{genmake2} may be specified in the optfiles, the
683 critical ones that should be defined are:
684
685 \begin{description}
686 \item[FC] the FORTRAN compiler (executable) to use
687 \item[DEFINES] the command-line DEFINE options passed to the compiler
688 \item[CPP] the C pre-processor to use
689 \item[NOOPTFLAGS] options flags for special files that should not be
690 optimized
691 \end{description}
692
693 For example, the optfile for a typical Red Hat Linux machine (``ia32''
694 architecture) using the GCC (g77) compiler is
695 \begin{verbatim}
696 FC=g77
697 DEFINES='-D_BYTESWAPIO -DWORDLENGTH=4'
698 CPP='cpp -traditional -P'
699 NOOPTFLAGS='-O0'
700 # For IEEE, use the "-ffloat-store" option
701 if test "x$IEEE" = x ; then
702 FFLAGS='-Wimplicit -Wunused -Wuninitialized'
703 FOPTIM='-O3 -malign-double -funroll-loops'
704 else
705 FFLAGS='-Wimplicit -Wunused -ffloat-store'
706 FOPTIM='-O0 -malign-double'
707 fi
708 \end{verbatim}
709
710 If you write an optfile for an unrepresented machine or compiler, you
711 are strongly encouraged to submit the optfile to the MITgcm project
712 for inclusion. Please send the file to the
713 \begin{rawhtml} <A href="mail-to:MITgcm-support@mitgcm.org"> \end{rawhtml}
714 \begin{center}
715 MITgcm-support@mitgcm.org
716 \end{center}
717 \begin{rawhtml} </A> \end{rawhtml}
718 mailing list.
719
720 In addition to the optfiles, \texttt{genmake2} supports a number of
721 helpful command-line options. A complete list of these options can be
722 obtained from:
723 \begin{verbatim}
724 % genmake2 -h
725 \end{verbatim}
726
727 The most important command-line options are:
728 \begin{description}
729
730 \item[\texttt{--optfile=/PATH/FILENAME}] specifies the optfile that
731 should be used for a particular build.
732
733 If no "optfile" is specified (either through the command line or the
734 MITGCM\_OPTFILE environment variable), genmake2 will try to make a
735 reasonable guess from the list provided in {\em
736 tools/build\_options}. The method used for making this guess is
737 to first determine the combination of operating system and hardware
738 (eg. "linux\_ia32") and then find a working FORTRAN compiler within
739 the user's path. When these three items have been identified,
740 genmake2 will try to find an optfile that has a matching name.
741
742 \item[\texttt{--pdepend=/PATH/FILENAME}] specifies the dependency file
743 used for packages.
744
745 If not specified, the default dependency file {\em pkg/pkg\_depend}
746 is used. The syntax for this file is parsed on a line-by-line basis
747 where each line containes either a comment ("\#") or a simple
748 "PKGNAME1 (+|-)PKGNAME2" pairwise rule where the "+" or "-" symbol
749 specifies a "must be used with" or a "must not be used with"
750 relationship, respectively. If no rule is specified, then it is
751 assumed that the two packages are compatible and will function
752 either with or without each other.
753
754 \item[\texttt{--pdefault='PKG1 PKG2 PKG3 ...'}] specifies the default
755 set of packages to be used.
756
757 If not set, the default package list will be read from {\em
758 pkg/pkg\_default}
759
760 \item[\texttt{--adof=/path/to/file}] specifies the "adjoint" or
761 automatic differentiation options file to be used. The file is
762 analogous to the ``optfile'' defined above but it specifies
763 information for the AD build process.
764
765 The default file is located in {\em
766 tools/adjoint\_options/adjoint\_default} and it defines the "TAF"
767 and "TAMC" compilers. An alternate version is also available at
768 {\em tools/adjoint\_options/adjoint\_staf} that selects the newer
769 "STAF" compiler. As with any compilers, it is helpful to have their
770 directories listed in your {\tt \$PATH} environment variable.
771
772 \item[\texttt{--mods='DIR1 DIR2 DIR3 ...'}] specifies a list of
773 directories containing ``modifications''. These directories contain
774 files with names that may (or may not) exist in the main MITgcm
775 source tree but will be overridden by any identically-named sources
776 within the ``MODS'' directories.
777
778 The order of precedence for this "name-hiding" is as follows:
779 \begin{itemize}
780 \item ``MODS'' directories (in the order given)
781 \item Packages either explicitly specified or provided by default
782 (in the order given)
783 \item Packages included due to package dependencies (in the order
784 that that package dependencies are parsed)
785 \item The "standard dirs" (which may have been specified by the
786 ``-standarddirs'' option)
787 \end{itemize}
788
789 \item[\texttt{--make=/path/to/gmake}] Due to the poor handling of
790 soft-links and other bugs common with the \texttt{make} versions
791 provided by commercial Unix vendors, GNU \texttt{make} (sometimes
792 called \texttt{gmake}) should be preferred. This option provides a
793 means for specifying the make executable to be used.
794
795 \end{description}
796
797
798
799 \section{Running the model}
800 \label{sect:runModel}
801
802 If compilation finished succesfuully (section \ref{sect:buildModel})
803 then an executable called {\em mitgcmuv} will now exist in the local
804 directory.
805
806 To run the model as a single process (ie. not in parallel) simply
807 type:
808 \begin{verbatim}
809 % ./mitgcmuv
810 \end{verbatim}
811 The ``./'' is a safe-guard to make sure you use the local executable
812 in case you have others that exist in your path (surely odd if you
813 do!). The above command will spew out many lines of text output to
814 your screen. This output contains details such as parameter values as
815 well as diagnostics such as mean Kinetic energy, largest CFL number,
816 etc. It is worth keeping this text output with the binary output so we
817 normally re-direct the {\em stdout} stream as follows:
818 \begin{verbatim}
819 % ./mitgcmuv > output.txt
820 \end{verbatim}
821
822 For the example experiments in {\em verification}, an example of the
823 output is kept in {\em results/output.txt} for comparison. You can compare
824 your {\em output.txt} with this one to check that the set-up works.
825
826
827
828 \subsection{Output files}
829
830 The model produces various output files. At a minimum, the instantaneous
831 ``state'' of the model is written out, which is made of the following files:
832
833 \begin{itemize}
834 \item \textit{U.00000nIter} - zonal component of velocity field (m/s and $>
835 0 $ eastward).
836
837 \item \textit{V.00000nIter} - meridional component of velocity field (m/s
838 and $> 0$ northward).
839
840 \item \textit{W.00000nIter} - vertical component of velocity field (ocean:
841 m/s and $> 0$ upward, atmosphere: Pa/s and $> 0$ towards increasing pressure
842 i.e. downward).
843
844 \item \textit{T.00000nIter} - potential temperature (ocean: $^{0}$C,
845 atmosphere: $^{0}$K).
846
847 \item \textit{S.00000nIter} - ocean: salinity (psu), atmosphere: water vapor
848 (g/kg).
849
850 \item \textit{Eta.00000nIter} - ocean: surface elevation (m), atmosphere:
851 surface pressure anomaly (Pa).
852 \end{itemize}
853
854 The chain \textit{00000nIter} consists of ten figures that specify the
855 iteration number at which the output is written out. For example, \textit{%
856 U.0000000300} is the zonal velocity at iteration 300.
857
858 In addition, a ``pickup'' or ``checkpoint'' file called:
859
860 \begin{itemize}
861 \item \textit{pickup.00000nIter}
862 \end{itemize}
863
864 is written out. This file represents the state of the model in a condensed
865 form and is used for restarting the integration. If the C-D scheme is used,
866 there is an additional ``pickup'' file:
867
868 \begin{itemize}
869 \item \textit{pickup\_cd.00000nIter}
870 \end{itemize}
871
872 containing the D-grid velocity data and that has to be written out as well
873 in order to restart the integration. Rolling checkpoint files are the same
874 as the pickup files but are named differently. Their name contain the chain
875 \textit{ckptA} or \textit{ckptB} instead of \textit{00000nIter}. They can be
876 used to restart the model but are overwritten every other time they are
877 output to save disk space during long integrations.
878
879 \subsection{Looking at the output}
880
881 All the model data are written according to a ``meta/data'' file format.
882 Each variable is associated with two files with suffix names \textit{.data}
883 and \textit{.meta}. The \textit{.data} file contains the data written in
884 binary form (big\_endian by default). The \textit{.meta} file is a
885 ``header'' file that contains information about the size and the structure
886 of the \textit{.data} file. This way of organizing the output is
887 particularly useful when running multi-processors calculations. The base
888 version of the model includes a few matlab utilities to read output files
889 written in this format. The matlab scripts are located in the directory
890 \textit{utils/matlab} under the root tree. The script \textit{rdmds.m} reads
891 the data. Look at the comments inside the script to see how to use it.
892
893 Some examples of reading and visualizing some output in {\em Matlab}:
894 \begin{verbatim}
895 % matlab
896 >> H=rdmds('Depth');
897 >> contourf(H');colorbar;
898 >> title('Depth of fluid as used by model');
899
900 >> eta=rdmds('Eta',10);
901 >> imagesc(eta');axis ij;colorbar;
902 >> title('Surface height at iter=10');
903
904 >> eta=rdmds('Eta',[0:10:100]);
905 >> for n=1:11; imagesc(eta(:,:,n)');axis ij;colorbar;pause(.5);end
906 \end{verbatim}
907
908 \section{Doing it yourself: customizing the code}
909
910 When you are ready to run the model in the configuration you want, the
911 easiest thing is to use and adapt the setup of the case studies
912 experiment (described previously) that is the closest to your
913 configuration. Then, the amount of setup will be minimized. In this
914 section, we focus on the setup relative to the ``numerical model''
915 part of the code (the setup relative to the ``execution environment''
916 part is covered in the parallel implementation section) and on the
917 variables and parameters that you are likely to change.
918
919 \subsection{Configuration and setup}
920
921 The CPP keys relative to the ``numerical model'' part of the code are
922 all defined and set in the file \textit{CPP\_OPTIONS.h }in the
923 directory \textit{ model/inc }or in one of the \textit{code
924 }directories of the case study experiments under
925 \textit{verification.} The model parameters are defined and declared
926 in the file \textit{model/inc/PARAMS.h }and their default values are
927 set in the routine \textit{model/src/set\_defaults.F. }The default
928 values can be modified in the namelist file \textit{data }which needs
929 to be located in the directory where you will run the model. The
930 parameters are initialized in the routine
931 \textit{model/src/ini\_parms.F}. Look at this routine to see in what
932 part of the namelist the parameters are located.
933
934 In what follows the parameters are grouped into categories related to
935 the computational domain, the equations solved in the model, and the
936 simulation controls.
937
938 \subsection{Computational domain, geometry and time-discretization}
939
940 \begin{description}
941 \item[dimensions] \
942
943 The number of points in the x, y,\textit{\ }and r\textit{\
944 }directions are represented by the variables \textbf{sNx}\textit{,
945 }\textbf{sNy}\textit{, } and \textbf{Nr}\textit{\ }respectively
946 which are declared and set in the file \textit{model/inc/SIZE.h.
947 }(Again, this assumes a mono-processor calculation. For
948 multiprocessor calculations see section on parallel implementation.)
949
950 \item[grid] \
951
952 Three different grids are available: cartesian, spherical polar, and
953 curvilinear (including the cubed sphere). The grid is set through
954 the logical variables \textbf{usingCartesianGrid}\textit{, }\textbf{
955 usingSphericalPolarGrid}\textit{, }and \textit{\ }\textbf{
956 usingCurvilinearGrid}\textit{. }In the case of spherical and
957 curvilinear grids, the southern boundary is defined through the
958 variable \textbf{phiMin} \textit{\ }which corresponds to the
959 latitude of the southern most cell face (in degrees). The resolution
960 along the x and y directions is controlled by the 1D arrays
961 \textbf{delx}\textit{\ }and \textbf{dely}\textit{\ }(in meters in
962 the case of a cartesian grid, in degrees otherwise). The vertical
963 grid spacing is set through the 1D array \textbf{delz }for the ocean
964 (in meters) or \textbf{delp}\textit{\ }for the atmosphere (in Pa).
965 The variable \textbf{ Ro\_SeaLevel} represents the standard position
966 of Sea-Level in ''R'' coordinate. This is typically set to 0m for
967 the ocean (default value) and 10$ ^{5}$Pa for the atmosphere. For
968 the atmosphere, also set the logical variable \textbf{groundAtK1} to
969 '.\texttt{TRUE}.'. which put the first level (k=1) at the lower
970 boundary (ground).
971
972 For the cartesian grid case, the Coriolis parameter $f$ is set
973 through the variables \textbf{f0}\textit{\ }and
974 \textbf{beta}\textit{\ }which correspond to the reference Coriolis
975 parameter (in s$^{-1}$) and $\frac{\partial f}{ \partial y}$(in
976 m$^{-1}$s$^{-1}$) respectively. If \textbf{beta }\textit{\ } is set
977 to a nonzero value, \textbf{f0}\textit{\ }is the value of $f$ at the
978 southern edge of the domain.
979
980 \item[topography - full and partial cells] \
981
982 The domain bathymetry is read from a file that contains a 2D (x,y)
983 map of depths (in m) for the ocean or pressures (in Pa) for the
984 atmosphere. The file name is represented by the variable
985 \textbf{bathyFile}\textit{. }The file is assumed to contain binary
986 numbers giving the depth (pressure) of the model at each grid cell,
987 ordered with the x coordinate varying fastest. The points are
988 ordered from low coordinate to high coordinate for both axes. The
989 model code applies without modification to enclosed, periodic, and
990 double periodic domains. Periodicity is assumed by default and is
991 suppressed by setting the depths to 0m for the cells at the limits
992 of the computational domain (note: not sure this is the case for the
993 atmosphere). The precision with which to read the binary data is
994 controlled by the integer variable \textbf{readBinaryPrec }which can
995 take the value \texttt{32} (single precision) or \texttt{64} (double
996 precision). See the matlab program \textit{ gendata.m }in the
997 \textit{input }directories under \textit{verification }to see how
998 the bathymetry files are generated for the case study experiments.
999
1000 To use the partial cell capability, the variable
1001 \textbf{hFacMin}\textit{\ } needs to be set to a value between 0 and
1002 1 (it is set to 1 by default) corresponding to the minimum
1003 fractional size of the cell. For example if the bottom cell is 500m
1004 thick and \textbf{hFacMin}\textit{\ }is set to 0.1, the actual
1005 thickness of the cell (i.e. used in the code) can cover a range of
1006 discrete values 50m apart from 50m to 500m depending on the value of
1007 the bottom depth (in \textbf{bathyFile}) at this point.
1008
1009 Note that the bottom depths (or pressures) need not coincide with
1010 the models levels as deduced from \textbf{delz}\textit{\
1011 }or\textit{\ }\textbf{delp} \textit{. }The model will interpolate
1012 the numbers in \textbf{bathyFile} \textit{\ }so that they match the
1013 levels obtained from \textbf{delz}\textit{ \ }or\textit{\
1014 }\textbf{delp}\textit{\ }and \textbf{hFacMin}\textit{. }
1015
1016 (Note: the atmospheric case is a bit more complicated than what is
1017 written here I think. To come soon...)
1018
1019 \item[time-discretization] \
1020
1021 The time steps are set through the real variables \textbf{deltaTMom}
1022 and \textbf{deltaTtracer} (in s) which represent the time step for
1023 the momentum and tracer equations, respectively. For synchronous
1024 integrations, simply set the two variables to the same value (or you
1025 can prescribe one time step only through the variable
1026 \textbf{deltaT}). The Adams-Bashforth stabilizing parameter is set
1027 through the variable \textbf{abEps} (dimensionless). The stagger
1028 baroclinic time stepping can be activated by setting the logical
1029 variable \textbf{staggerTimeStep} to '.\texttt{TRUE}.'.
1030
1031 \end{description}
1032
1033
1034 \subsection{Equation of state}
1035
1036 First, because the model equations are written in terms of
1037 perturbations, a reference thermodynamic state needs to be specified.
1038 This is done through the 1D arrays \textbf{tRef} and \textbf{sRef}.
1039 \textbf{tRef} specifies the reference potential temperature profile
1040 (in $^{o}$C for the ocean and $^{o}$K for the atmosphere) starting
1041 from the level k=1. Similarly, \textbf{sRef} specifies the reference
1042 salinity profile (in ppt) for the ocean or the reference specific
1043 humidity profile (in g/kg) for the atmosphere.
1044
1045 The form of the equation of state is controlled by the character
1046 variables \textbf{buoyancyRelation} and \textbf{eosType}.
1047 \textbf{buoyancyRelation} is set to '\texttt{OCEANIC}' by default and
1048 needs to be set to '\texttt{ATMOSPHERIC}' for atmosphere simulations.
1049 In this case, \textbf{eosType} must be set to '\texttt{IDEALGAS}'.
1050 For the ocean, two forms of the equation of state are available:
1051 linear (set \textbf{eosType} to '\texttt{LINEAR}') and a polynomial
1052 approximation to the full nonlinear equation ( set
1053 \textbf{eosType}\textit{\ }to '\texttt{POLYNOMIAL}'). In the linear
1054 case, you need to specify the thermal and haline expansion
1055 coefficients represented by the variables \textbf{tAlpha}\textit{\
1056 }(in K$^{-1}$) and \textbf{sBeta} (in ppt$^{-1}$). For the nonlinear
1057 case, you need to generate a file of polynomial coefficients called
1058 \textit{POLY3.COEFFS}. To do this, use the program
1059 \textit{utils/knudsen2/knudsen2.f} under the model tree (a Makefile is
1060 available in the same directory and you will need to edit the number
1061 and the values of the vertical levels in \textit{knudsen2.f} so that
1062 they match those of your configuration).
1063
1064 There there are also higher polynomials for the equation of state:
1065 \begin{description}
1066 \item['\texttt{UNESCO}':] The UNESCO equation of state formula of
1067 Fofonoff and Millard \cite{fofonoff83}. This equation of state
1068 assumes in-situ temperature, which is not a model variable; \emph{its use
1069 is therefore discouraged, and it is only listed for completeness}.
1070 \item['\texttt{JMD95Z}':] A modified UNESCO formula by Jackett and
1071 McDougall \cite{jackett95}, which uses the model variable potential
1072 temperature as input. The '\texttt{Z}' indicates that this equation
1073 of state uses a horizontally and temporally constant pressure
1074 $p_{0}=-g\rho_{0}z$.
1075 \item['\texttt{JMD95P}':] A modified UNESCO formula by Jackett and
1076 McDougall \cite{jackett95}, which uses the model variable potential
1077 temperature as input. The '\texttt{P}' indicates that this equation
1078 of state uses the actual hydrostatic pressure of the last time
1079 step. Lagging the pressure in this way requires an additional pickup
1080 file for restarts.
1081 \item['\texttt{MDJWF}':] The new, more accurate and less expensive
1082 equation of state by McDougall et~al. \cite{mcdougall03}. It also
1083 requires lagging the pressure and therefore an additional pickup
1084 file for restarts.
1085 \end{description}
1086 For none of these options an reference profile of temperature or
1087 salinity is required.
1088
1089 \subsection{Momentum equations}
1090
1091 In this section, we only focus for now on the parameters that you are likely
1092 to change, i.e. the ones relative to forcing and dissipation for example.
1093 The details relevant to the vector-invariant form of the equations and the
1094 various advection schemes are not covered for the moment. We assume that you
1095 use the standard form of the momentum equations (i.e. the flux-form) with
1096 the default advection scheme. Also, there are a few logical variables that
1097 allow you to turn on/off various terms in the momentum equation. These
1098 variables are called \textbf{momViscosity, momAdvection, momForcing,
1099 useCoriolis, momPressureForcing, momStepping}\textit{, }and \textit{\ }%
1100 \textbf{metricTerms }and are assumed to be set to '.\texttt{TRUE}.' here.
1101 Look at the file \textit{model/inc/PARAMS.h }for a precise definition of
1102 these variables.
1103
1104 \begin{description}
1105 \item[initialization] \
1106
1107 The velocity components are initialized to 0 unless the simulation
1108 is starting from a pickup file (see section on simulation control
1109 parameters).
1110
1111 \item[forcing] \
1112
1113 This section only applies to the ocean. You need to generate
1114 wind-stress data into two files \textbf{zonalWindFile}\textit{\ }and
1115 \textbf{ meridWindFile }corresponding to the zonal and meridional
1116 components of the wind stress, respectively (if you want the stress
1117 to be along the direction of only one of the model horizontal axes,
1118 you only need to generate one file). The format of the files is
1119 similar to the bathymetry file. The zonal (meridional) stress data
1120 are assumed to be in Pa and located at U-points (V-points). As for
1121 the bathymetry, the precision with which to read the binary data is
1122 controlled by the variable \textbf{readBinaryPrec}.\textbf{\ } See
1123 the matlab program \textit{gendata.m }in the \textit{input
1124 }directories under \textit{verification }to see how simple
1125 analytical wind forcing data are generated for the case study
1126 experiments.
1127
1128 There is also the possibility of prescribing time-dependent periodic
1129 forcing. To do this, concatenate the successive time records into a
1130 single file (for each stress component) ordered in a (x, y, t)
1131 fashion and set the following variables:
1132 \textbf{periodicExternalForcing }to '.\texttt{TRUE}.',
1133 \textbf{externForcingPeriod }to the period (in s) of which the
1134 forcing varies (typically 1 month), and \textbf{externForcingCycle
1135 }to the repeat time (in s) of the forcing (typically 1 year -- note:
1136 \textbf{ externForcingCycle }must be a multiple of
1137 \textbf{externForcingPeriod}). With these variables set up, the
1138 model will interpolate the forcing linearly at each iteration.
1139
1140 \item[dissipation] \
1141
1142 The lateral eddy viscosity coefficient is specified through the
1143 variable \textbf{viscAh}\textit{\ }(in m$^{2}$s$^{-1}$). The
1144 vertical eddy viscosity coefficient is specified through the
1145 variable \textbf{viscAz }(in m$^{2}$s$ ^{-1}$) for the ocean and
1146 \textbf{viscAp}\textit{\ }(in Pa$^{2}$s$^{-1}$) for the atmosphere.
1147 The vertical diffusive fluxes can be computed implicitly by setting
1148 the logical variable \textbf{implicitViscosity }to '.\texttt{TRUE}
1149 .'. In addition, biharmonic mixing can be added as well through the
1150 variable \textbf{viscA4}\textit{\ }(in m$^{4}$s$^{-1}$). On a
1151 spherical polar grid, you might also need to set the variable
1152 \textbf{cosPower} which is set to 0 by default and which represents
1153 the power of cosine of latitude to multiply viscosity. Slip or
1154 no-slip conditions at lateral and bottom boundaries are specified
1155 through the logical variables \textbf{no\_slip\_sides}\textit{\ }
1156 and \textbf{no\_slip\_bottom}. If set to '\texttt{.FALSE.}',
1157 free-slip boundary conditions are applied. If no-slip boundary
1158 conditions are applied at the bottom, a bottom drag can be applied
1159 as well. Two forms are available: linear (set the variable
1160 \textbf{bottomDragLinear}\textit{\ }in s$ ^{-1}$) and quadratic (set
1161 the variable \textbf{bottomDragQuadratic}\textit{ \ }in m$^{-1}$).
1162
1163 The Fourier and Shapiro filters are described elsewhere.
1164
1165 \item[C-D scheme] \
1166
1167 If you run at a sufficiently coarse resolution, you will need the
1168 C-D scheme for the computation of the Coriolis terms. The
1169 variable\textbf{\ tauCD}, which represents the C-D scheme coupling
1170 timescale (in s) needs to be set.
1171
1172 \item[calculation of pressure/geopotential] \
1173
1174 First, to run a non-hydrostatic ocean simulation, set the logical
1175 variable \textbf{nonHydrostatic} to '.\texttt{TRUE}.'. The pressure
1176 field is then inverted through a 3D elliptic equation. (Note: this
1177 capability is not available for the atmosphere yet.) By default, a
1178 hydrostatic simulation is assumed and a 2D elliptic equation is used
1179 to invert the pressure field. The parameters controlling the
1180 behaviour of the elliptic solvers are the variables
1181 \textbf{cg2dMaxIters}\textit{\ }and \textbf{cg2dTargetResidual } for
1182 the 2D case and \textbf{cg3dMaxIters}\textit{\ }and \textbf{
1183 cg3dTargetResidual }for the 3D case. You probably won't need to
1184 alter the default values (are we sure of this?).
1185
1186 For the calculation of the surface pressure (for the ocean) or
1187 surface geopotential (for the atmosphere) you need to set the
1188 logical variables \textbf{rigidLid} and
1189 \textbf{implicitFreeSurface}\textit{\ }(set one to '.
1190 \texttt{TRUE}.' and the other to '.\texttt{FALSE}.' depending on how
1191 you want to deal with the ocean upper or atmosphere lower boundary).
1192
1193 \end{description}
1194
1195 \subsection{Tracer equations}
1196
1197 This section covers the tracer equations i.e. the potential temperature
1198 equation and the salinity (for the ocean) or specific humidity (for the
1199 atmosphere) equation. As for the momentum equations, we only describe for
1200 now the parameters that you are likely to change. The logical variables
1201 \textbf{tempDiffusion}\textit{, }\textbf{tempAdvection}\textit{, }\textbf{
1202 tempForcing}\textit{,} and \textbf{tempStepping} allow you to turn on/off
1203 terms in the temperature equation (same thing for salinity or specific
1204 humidity with variables \textbf{saltDiffusion}\textit{, }\textbf{
1205 saltAdvection}\textit{\ }etc). These variables are all assumed here to be
1206 set to '.\texttt{TRUE}.'. Look at file \textit{model/inc/PARAMS.h }for a
1207 precise definition.
1208
1209 \begin{description}
1210 \item[initialization] \
1211
1212 The initial tracer data can be contained in the binary files
1213 \textbf{ hydrogThetaFile }and \textbf{hydrogSaltFile}. These files
1214 should contain 3D data ordered in an (x, y, r) fashion with k=1 as
1215 the first vertical level. If no file names are provided, the
1216 tracers are then initialized with the values of \textbf{tRef }and
1217 \textbf{sRef }mentioned above (in the equation of state section). In
1218 this case, the initial tracer data are uniform in x and y for each
1219 depth level.
1220
1221 \item[forcing] \
1222
1223 This part is more relevant for the ocean, the procedure for the
1224 atmosphere not being completely stabilized at the moment.
1225
1226 A combination of fluxes data and relaxation terms can be used for
1227 driving the tracer equations. \ For potential temperature, heat flux
1228 data (in W/m$ ^{2}$) can be stored in the 2D binary file
1229 \textbf{surfQfile}\textit{. } Alternatively or in addition, the
1230 forcing can be specified through a relaxation term. The SST data to
1231 which the model surface temperatures are restored to are supposed to
1232 be stored in the 2D binary file \textbf{ thetaClimFile}\textit{.
1233 }The corresponding relaxation time scale coefficient is set through
1234 the variable \textbf{tauThetaClimRelax}\textit{\ }(in s). The same
1235 procedure applies for salinity with the variable names
1236 \textbf{EmPmRfile }\textit{, }\textbf{saltClimFile}\textit{, }and
1237 \textbf{tauSaltClimRelax} \textit{\ }for freshwater flux (in m/s)
1238 and surface salinity (in ppt) data files and relaxation time scale
1239 coefficient (in s), respectively. Also for salinity, if the CPP key
1240 \textbf{USE\_NATURAL\_BCS} is turned on, natural boundary conditions
1241 are applied i.e. when computing the surface salinity tendency, the
1242 freshwater flux is multiplied by the model surface salinity instead
1243 of a constant salinity value.
1244
1245 As for the other input files, the precision with which to read the
1246 data is controlled by the variable \textbf{readBinaryPrec}.
1247 Time-dependent, periodic forcing can be applied as well following
1248 the same procedure used for the wind forcing data (see above).
1249
1250 \item[dissipation] \
1251
1252 Lateral eddy diffusivities for temperature and salinity/specific
1253 humidity are specified through the variables \textbf{diffKhT }and
1254 \textbf{diffKhS } (in m$^{2}$/s). Vertical eddy diffusivities are
1255 specified through the variables \textbf{diffKzT }and \textbf{diffKzS
1256 }(in m$^{2}$/s) for the ocean and \textbf{diffKpT }and
1257 \textbf{diffKpS }(in Pa$^{2}$/s) for the atmosphere. The vertical
1258 diffusive fluxes can be computed implicitly by setting the logical
1259 variable \textbf{implicitDiffusion }to '.\texttt{TRUE} .'. In
1260 addition, biharmonic diffusivities can be specified as well through
1261 the coefficients \textbf{diffK4T }and \textbf{diffK4S }(in
1262 m$^{4}$/s). Note that the cosine power scaling (specified through
1263 \textbf{cosPower }- see the momentum equations section) is applied
1264 to the tracer diffusivities (Laplacian and biharmonic) as well. The
1265 Gent and McWilliams parameterization for oceanic tracers is
1266 described in the package section. Finally, note that tracers can be
1267 also subject to Fourier and Shapiro filtering (see the corresponding
1268 section on these filters).
1269
1270 \item[ocean convection] \
1271
1272 Two options are available to parameterize ocean convection: one is
1273 to use the convective adjustment scheme. In this case, you need to
1274 set the variable \textbf{cadjFreq}, which represents the frequency
1275 (in s) with which the adjustment algorithm is called, to a non-zero
1276 value (if set to a negative value by the user, the model will set it
1277 to the tracer time step). The other option is to parameterize
1278 convection with implicit vertical diffusion. To do this, set the
1279 logical variable \textbf{implicitDiffusion }to '.\texttt{TRUE} .'
1280 and the real variable \textbf{ivdc\_kappa }to a value (in m$^{2}$/s)
1281 you wish the tracer vertical diffusivities to have when mixing
1282 tracers vertically due to static instabilities. Note that
1283 \textbf{cadjFreq }and \textbf{ivdc\_kappa }can not both have
1284 non-zero value.
1285
1286 \end{description}
1287
1288 \subsection{Simulation controls}
1289
1290 The model ''clock'' is defined by the variable \textbf{deltaTClock }(in s)
1291 which determines the IO frequencies and is used in tagging output.
1292 Typically, you will set it to the tracer time step for accelerated runs
1293 (otherwise it is simply set to the default time step \textbf{deltaT}).
1294 Frequency of checkpointing and dumping of the model state are referenced to
1295 this clock (see below).
1296
1297 \begin{description}
1298 \item[run duration] \
1299
1300 The beginning of a simulation is set by specifying a start time (in
1301 s) through the real variable \textbf{startTime }or by specifying an
1302 initial iteration number through the integer variable
1303 \textbf{nIter0}. If these variables are set to nonzero values, the
1304 model will look for a ''pickup'' file \textit{pickup.0000nIter0 }to
1305 restart the integration\textit{. }The end of a simulation is set
1306 through the real variable \textbf{endTime }(in s). Alternatively,
1307 you can specify instead the number of time steps to execute through
1308 the integer variable \textbf{nTimeSteps}.
1309
1310 \item[frequency of output] \
1311
1312 Real variables defining frequencies (in s) with which output files
1313 are written on disk need to be set up. \textbf{dumpFreq }controls
1314 the frequency with which the instantaneous state of the model is
1315 saved. \textbf{chkPtFreq } and \textbf{pchkPtFreq }control the
1316 output frequency of rolling and permanent checkpoint files,
1317 respectively. See section 1.5.1 Output files for the definition of
1318 model state and checkpoint files. In addition, time-averaged fields
1319 can be written out by setting the variable \textbf{taveFreq} (in s).
1320 The precision with which to write the binary data is controlled by
1321 the integer variable w\textbf{riteBinaryPrec }(set it to \texttt{32}
1322 or \texttt{ 64}).
1323
1324 \end{description}
1325
1326
1327 %%% Local Variables:
1328 %%% mode: latex
1329 %%% TeX-master: t
1330 %%% End:

  ViewVC Help
Powered by ViewVC 1.1.22