/[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.18 - (show annotations) (download) (as text)
Thu Jan 29 19:22:35 2004 UTC (21 years, 5 months ago) by edhill
Branch: MAIN
Changes since 1.17: +191 -195 lines
File MIME type: application/x-tex
 o cleanup dreadful TeX

1 % $Header: /u/u3/gcmpack/manual/part3/getting_started.tex,v 1.17 2004/01/29 15:11:39 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, and r directions are represented
944 by the variables \textbf{sNx}, \textbf{sNy} and \textbf{Nr}
945 respectively which are declared and set in the file
946 \textit{model/inc/SIZE.h}. (Again, this assumes a mono-processor
947 calculation. For multiprocessor calculations see the section on
948 parallel implementation.)
949
950 \item[grid] \
951
952 Three different grids are available: cartesian, spherical polar, and
953 curvilinear (which includes the cubed sphere). The grid is set
954 through the logical variables \textbf{usingCartesianGrid},
955 \textbf{usingSphericalPolarGrid}, and \textbf{usingCurvilinearGrid}.
956 In the case of spherical and curvilinear grids, the southern
957 boundary is defined through the variable \textbf{phiMin} which
958 corresponds to the latitude of the southern most cell face (in
959 degrees). The resolution along the x and y directions is controlled
960 by the 1D arrays \textbf{delx} and \textbf{dely} (in meters in the
961 case of a cartesian grid, in degrees otherwise). The vertical grid
962 spacing is set through the 1D array \textbf{delz} for the ocean (in
963 meters) or \textbf{delp} for the atmosphere (in Pa). The variable
964 \textbf{Ro\_SeaLevel} represents the standard position of Sea-Level
965 in ``R'' coordinate. This is typically set to 0m for the ocean
966 (default value) and 10$^{5}$Pa for the atmosphere. For the
967 atmosphere, also set the logical variable \textbf{groundAtK1} to
968 \texttt{'.TRUE.'} which puts the first level (k=1) at the lower
969 boundary (ground).
970
971 For the cartesian grid case, the Coriolis parameter $f$ is set
972 through the variables \textbf{f0} and \textbf{beta} which correspond
973 to the reference Coriolis parameter (in s$^{-1}$) and
974 $\frac{\partial f}{ \partial y}$(in m$^{-1}$s$^{-1}$) respectively.
975 If \textbf{beta } is set to a nonzero value, \textbf{f0} is the
976 value of $f$ at the southern edge of the domain.
977
978 \item[topography - full and partial cells] \
979
980 The domain bathymetry is read from a file that contains a 2D (x,y)
981 map of depths (in m) for the ocean or pressures (in Pa) for the
982 atmosphere. The file name is represented by the variable
983 \textbf{bathyFile}. The file is assumed to contain binary numbers
984 giving the depth (pressure) of the model at each grid cell, ordered
985 with the x coordinate varying fastest. The points are ordered from
986 low coordinate to high coordinate for both axes. The model code
987 applies without modification to enclosed, periodic, and double
988 periodic domains. Periodicity is assumed by default and is
989 suppressed by setting the depths to 0m for the cells at the limits
990 of the computational domain (note: not sure this is the case for the
991 atmosphere). The precision with which to read the binary data is
992 controlled by the integer variable \textbf{readBinaryPrec} which can
993 take the value \texttt{32} (single precision) or \texttt{64} (double
994 precision). See the matlab program \textit{gendata.m} in the
995 \textit{input} directories under \textit{verification} to see how
996 the bathymetry files are generated for the case study experiments.
997
998 To use the partial cell capability, the variable \textbf{hFacMin}
999 needs to be set to a value between 0 and 1 (it is set to 1 by
1000 default) corresponding to the minimum fractional size of the cell.
1001 For example if the bottom cell is 500m thick and \textbf{hFacMin} is
1002 set to 0.1, the actual thickness of the cell (i.e. used in the code)
1003 can cover a range of discrete values 50m apart from 50m to 500m
1004 depending on the value of the bottom depth (in \textbf{bathyFile})
1005 at this point.
1006
1007 Note that the bottom depths (or pressures) need not coincide with
1008 the models levels as deduced from \textbf{delz} or \textbf{delp}.
1009 The model will interpolate the numbers in \textbf{bathyFile} so that
1010 they match the levels obtained from \textbf{delz} or \textbf{delp}
1011 and \textbf{hFacMin}.
1012
1013 (Note: the atmospheric case is a bit more complicated than what is
1014 written here I think. To come soon...)
1015
1016 \item[time-discretization] \
1017
1018 The time steps are set through the real variables \textbf{deltaTMom}
1019 and \textbf{deltaTtracer} (in s) which represent the time step for
1020 the momentum and tracer equations, respectively. For synchronous
1021 integrations, simply set the two variables to the same value (or you
1022 can prescribe one time step only through the variable
1023 \textbf{deltaT}). The Adams-Bashforth stabilizing parameter is set
1024 through the variable \textbf{abEps} (dimensionless). The stagger
1025 baroclinic time stepping can be activated by setting the logical
1026 variable \textbf{staggerTimeStep} to \texttt{'.TRUE.'}.
1027
1028 \end{description}
1029
1030
1031 \subsection{Equation of state}
1032
1033 First, because the model equations are written in terms of
1034 perturbations, a reference thermodynamic state needs to be specified.
1035 This is done through the 1D arrays \textbf{tRef} and \textbf{sRef}.
1036 \textbf{tRef} specifies the reference potential temperature profile
1037 (in $^{o}$C for the ocean and $^{o}$K for the atmosphere) starting
1038 from the level k=1. Similarly, \textbf{sRef} specifies the reference
1039 salinity profile (in ppt) for the ocean or the reference specific
1040 humidity profile (in g/kg) for the atmosphere.
1041
1042 The form of the equation of state is controlled by the character
1043 variables \textbf{buoyancyRelation} and \textbf{eosType}.
1044 \textbf{buoyancyRelation} is set to \texttt{'OCEANIC'} by default and
1045 needs to be set to \texttt{'ATMOSPHERIC'} for atmosphere simulations.
1046 In this case, \textbf{eosType} must be set to \texttt{'IDEALGAS'}.
1047 For the ocean, two forms of the equation of state are available:
1048 linear (set \textbf{eosType} to \texttt{'LINEAR'}) and a polynomial
1049 approximation to the full nonlinear equation ( set \textbf{eosType} to
1050 \texttt{'POLYNOMIAL'}). In the linear case, you need to specify the
1051 thermal and haline expansion coefficients represented by the variables
1052 \textbf{tAlpha} (in K$^{-1}$) and \textbf{sBeta} (in ppt$^{-1}$). For
1053 the nonlinear case, you need to generate a file of polynomial
1054 coefficients called \textit{POLY3.COEFFS}. To do this, use the program
1055 \textit{utils/knudsen2/knudsen2.f} under the model tree (a Makefile is
1056 available in the same directory and you will need to edit the number
1057 and the values of the vertical levels in \textit{knudsen2.f} so that
1058 they match those of your configuration).
1059
1060 There there are also higher polynomials for the equation of state:
1061 \begin{description}
1062 \item[\texttt{'UNESCO'}:] The UNESCO equation of state formula of
1063 Fofonoff and Millard \cite{fofonoff83}. This equation of state
1064 assumes in-situ temperature, which is not a model variable; {\em its
1065 use is therefore discouraged, and it is only listed for
1066 completeness}.
1067 \item[\texttt{'JMD95Z'}:] A modified UNESCO formula by Jackett and
1068 McDougall \cite{jackett95}, which uses the model variable potential
1069 temperature as input. The \texttt{'Z'} indicates that this equation
1070 of state uses a horizontally and temporally constant pressure
1071 $p_{0}=-g\rho_{0}z$.
1072 \item[\texttt{'JMD95P'}:] A modified UNESCO formula by Jackett and
1073 McDougall \cite{jackett95}, which uses the model variable potential
1074 temperature as input. The \texttt{'P'} indicates that this equation
1075 of state uses the actual hydrostatic pressure of the last time
1076 step. Lagging the pressure in this way requires an additional pickup
1077 file for restarts.
1078 \item[\texttt{'MDJWF'}:] The new, more accurate and less expensive
1079 equation of state by McDougall et~al. \cite{mcdougall03}. It also
1080 requires lagging the pressure and therefore an additional pickup
1081 file for restarts.
1082 \end{description}
1083 For none of these options an reference profile of temperature or
1084 salinity is required.
1085
1086 \subsection{Momentum equations}
1087
1088 In this section, we only focus for now on the parameters that you are
1089 likely to change, i.e. the ones relative to forcing and dissipation
1090 for example. The details relevant to the vector-invariant form of the
1091 equations and the various advection schemes are not covered for the
1092 moment. We assume that you use the standard form of the momentum
1093 equations (i.e. the flux-form) with the default advection scheme.
1094 Also, there are a few logical variables that allow you to turn on/off
1095 various terms in the momentum equation. These variables are called
1096 \textbf{momViscosity, momAdvection, momForcing, useCoriolis,
1097 momPressureForcing, momStepping} and \textbf{metricTerms }and are
1098 assumed to be set to \texttt{'.TRUE.'} here. Look at the file
1099 \textit{model/inc/PARAMS.h }for a precise definition of these
1100 variables.
1101
1102 \begin{description}
1103 \item[initialization] \
1104
1105 The velocity components are initialized to 0 unless the simulation
1106 is starting from a pickup file (see section on simulation control
1107 parameters).
1108
1109 \item[forcing] \
1110
1111 This section only applies to the ocean. You need to generate
1112 wind-stress data into two files \textbf{zonalWindFile} and
1113 \textbf{meridWindFile} corresponding to the zonal and meridional
1114 components of the wind stress, respectively (if you want the stress
1115 to be along the direction of only one of the model horizontal axes,
1116 you only need to generate one file). The format of the files is
1117 similar to the bathymetry file. The zonal (meridional) stress data
1118 are assumed to be in Pa and located at U-points (V-points). As for
1119 the bathymetry, the precision with which to read the binary data is
1120 controlled by the variable \textbf{readBinaryPrec}. See the matlab
1121 program \textit{gendata.m} in the \textit{input} directories under
1122 \textit{verification} to see how simple analytical wind forcing data
1123 are generated for the case study experiments.
1124
1125 There is also the possibility of prescribing time-dependent periodic
1126 forcing. To do this, concatenate the successive time records into a
1127 single file (for each stress component) ordered in a (x,y,t) fashion
1128 and set the following variables: \textbf{periodicExternalForcing }to
1129 \texttt{'.TRUE.'}, \textbf{externForcingPeriod }to the period (in s)
1130 of which the forcing varies (typically 1 month), and
1131 \textbf{externForcingCycle} to the repeat time (in s) of the forcing
1132 (typically 1 year -- note: \textbf{ externForcingCycle} must be a
1133 multiple of \textbf{externForcingPeriod}). With these variables set
1134 up, the model will interpolate the forcing linearly at each
1135 iteration.
1136
1137 \item[dissipation] \
1138
1139 The lateral eddy viscosity coefficient is specified through the
1140 variable \textbf{viscAh} (in m$^{2}$s$^{-1}$). The vertical eddy
1141 viscosity coefficient is specified through the variable
1142 \textbf{viscAz} (in m$^{2}$s$^{-1}$) for the ocean and
1143 \textbf{viscAp} (in Pa$^{2}$s$^{-1}$) for the atmosphere. The
1144 vertical diffusive fluxes can be computed implicitly by setting the
1145 logical variable \textbf{implicitViscosity }to \texttt{'.TRUE.'}.
1146 In addition, biharmonic mixing can be added as well through the
1147 variable \textbf{viscA4} (in m$^{4}$s$^{-1}$). On a spherical polar
1148 grid, you might also need to set the variable \textbf{cosPower}
1149 which is set to 0 by default and which represents the power of
1150 cosine of latitude to multiply viscosity. Slip or no-slip conditions
1151 at lateral and bottom boundaries are specified through the logical
1152 variables \textbf{no\_slip\_sides} and \textbf{no\_slip\_bottom}. If
1153 set to \texttt{'.FALSE.'}, free-slip boundary conditions are
1154 applied. If no-slip boundary conditions are applied at the bottom, a
1155 bottom drag can be applied as well. Two forms are available: linear
1156 (set the variable \textbf{bottomDragLinear} in s$ ^{-1}$) and
1157 quadratic (set the variable \textbf{bottomDragQuadratic} in
1158 m$^{-1}$).
1159
1160 The Fourier and Shapiro filters are described elsewhere.
1161
1162 \item[C-D scheme] \
1163
1164 If you run at a sufficiently coarse resolution, you will need the
1165 C-D scheme for the computation of the Coriolis terms. The
1166 variable\textbf{\ tauCD}, which represents the C-D scheme coupling
1167 timescale (in s) needs to be set.
1168
1169 \item[calculation of pressure/geopotential] \
1170
1171 First, to run a non-hydrostatic ocean simulation, set the logical
1172 variable \textbf{nonHydrostatic} to \texttt{'.TRUE.'}. The pressure
1173 field is then inverted through a 3D elliptic equation. (Note: this
1174 capability is not available for the atmosphere yet.) By default, a
1175 hydrostatic simulation is assumed and a 2D elliptic equation is used
1176 to invert the pressure field. The parameters controlling the
1177 behaviour of the elliptic solvers are the variables
1178 \textbf{cg2dMaxIters} and \textbf{cg2dTargetResidual } for
1179 the 2D case and \textbf{cg3dMaxIters} and
1180 \textbf{cg3dTargetResidual} for the 3D case. You probably won't need to
1181 alter the default values (are we sure of this?).
1182
1183 For the calculation of the surface pressure (for the ocean) or
1184 surface geopotential (for the atmosphere) you need to set the
1185 logical variables \textbf{rigidLid} and \textbf{implicitFreeSurface}
1186 (set one to \texttt{'.TRUE.'} and the other to \texttt{'.FALSE.'}
1187 depending on how you want to deal with the ocean upper or atmosphere
1188 lower boundary).
1189
1190 \end{description}
1191
1192 \subsection{Tracer equations}
1193
1194 This section covers the tracer equations i.e. the potential
1195 temperature equation and the salinity (for the ocean) or specific
1196 humidity (for the atmosphere) equation. As for the momentum equations,
1197 we only describe for now the parameters that you are likely to change.
1198 The logical variables \textbf{tempDiffusion} \textbf{tempAdvection}
1199 \textbf{tempForcing}, and \textbf{tempStepping} allow you to turn
1200 on/off terms in the temperature equation (same thing for salinity or
1201 specific humidity with variables \textbf{saltDiffusion},
1202 \textbf{saltAdvection} etc.). These variables are all assumed here to
1203 be set to \texttt{'.TRUE.'}. Look at file \textit{model/inc/PARAMS.h}
1204 for a precise definition.
1205
1206 \begin{description}
1207 \item[initialization] \
1208
1209 The initial tracer data can be contained in the binary files
1210 \textbf{hydrogThetaFile} and \textbf{hydrogSaltFile}. These files
1211 should contain 3D data ordered in an (x,y,r) fashion with k=1 as the
1212 first vertical level. If no file names are provided, the tracers
1213 are then initialized with the values of \textbf{tRef} and
1214 \textbf{sRef} mentioned above (in the equation of state section). In
1215 this case, the initial tracer data are uniform in x and y for each
1216 depth level.
1217
1218 \item[forcing] \
1219
1220 This part is more relevant for the ocean, the procedure for the
1221 atmosphere not being completely stabilized at the moment.
1222
1223 A combination of fluxes data and relaxation terms can be used for
1224 driving the tracer equations. For potential temperature, heat flux
1225 data (in W/m$ ^{2}$) can be stored in the 2D binary file
1226 \textbf{surfQfile}. Alternatively or in addition, the forcing can
1227 be specified through a relaxation term. The SST data to which the
1228 model surface temperatures are restored to are supposed to be stored
1229 in the 2D binary file \textbf{thetaClimFile}. The corresponding
1230 relaxation time scale coefficient is set through the variable
1231 \textbf{tauThetaClimRelax} (in s). The same procedure applies for
1232 salinity with the variable names \textbf{EmPmRfile},
1233 \textbf{saltClimFile}, and \textbf{tauSaltClimRelax} for freshwater
1234 flux (in m/s) and surface salinity (in ppt) data files and
1235 relaxation time scale coefficient (in s), respectively. Also for
1236 salinity, if the CPP key \textbf{USE\_NATURAL\_BCS} is turned on,
1237 natural boundary conditions are applied i.e. when computing the
1238 surface salinity tendency, the freshwater flux is multiplied by the
1239 model surface salinity instead of a constant salinity value.
1240
1241 As for the other input files, the precision with which to read the
1242 data is controlled by the variable \textbf{readBinaryPrec}.
1243 Time-dependent, periodic forcing can be applied as well following
1244 the same procedure used for the wind forcing data (see above).
1245
1246 \item[dissipation] \
1247
1248 Lateral eddy diffusivities for temperature and salinity/specific
1249 humidity are specified through the variables \textbf{diffKhT} and
1250 \textbf{diffKhS} (in m$^{2}$/s). Vertical eddy diffusivities are
1251 specified through the variables \textbf{diffKzT} and
1252 \textbf{diffKzS} (in m$^{2}$/s) for the ocean and \textbf{diffKpT
1253 }and \textbf{diffKpS} (in Pa$^{2}$/s) for the atmosphere. The
1254 vertical diffusive fluxes can be computed implicitly by setting the
1255 logical variable \textbf{implicitDiffusion} to \texttt{'.TRUE.'}.
1256 In addition, biharmonic diffusivities can be specified as well
1257 through the coefficients \textbf{diffK4T} and \textbf{diffK4S} (in
1258 m$^{4}$/s). Note that the cosine power scaling (specified through
1259 \textbf{cosPower}---see the momentum equations section) is applied to
1260 the tracer diffusivities (Laplacian and biharmonic) as well. The
1261 Gent and McWilliams parameterization for oceanic tracers is
1262 described in the package section. Finally, note that tracers can be
1263 also subject to Fourier and Shapiro filtering (see the corresponding
1264 section on these filters).
1265
1266 \item[ocean convection] \
1267
1268 Two options are available to parameterize ocean convection: one is
1269 to use the convective adjustment scheme. In this case, you need to
1270 set the variable \textbf{cadjFreq}, which represents the frequency
1271 (in s) with which the adjustment algorithm is called, to a non-zero
1272 value (if set to a negative value by the user, the model will set it
1273 to the tracer time step). The other option is to parameterize
1274 convection with implicit vertical diffusion. To do this, set the
1275 logical variable \textbf{implicitDiffusion} to \texttt{'.TRUE.'}
1276 and the real variable \textbf{ivdc\_kappa} to a value (in m$^{2}$/s)
1277 you wish the tracer vertical diffusivities to have when mixing
1278 tracers vertically due to static instabilities. Note that
1279 \textbf{cadjFreq} and \textbf{ivdc\_kappa}can not both have non-zero
1280 value.
1281
1282 \end{description}
1283
1284 \subsection{Simulation controls}
1285
1286 The model ''clock'' is defined by the variable \textbf{deltaTClock}
1287 (in s) which determines the IO frequencies and is used in tagging
1288 output. Typically, you will set it to the tracer time step for
1289 accelerated runs (otherwise it is simply set to the default time step
1290 \textbf{deltaT}). Frequency of checkpointing and dumping of the model
1291 state are referenced to this clock (see below).
1292
1293 \begin{description}
1294 \item[run duration] \
1295
1296 The beginning of a simulation is set by specifying a start time (in
1297 s) through the real variable \textbf{startTime} or by specifying an
1298 initial iteration number through the integer variable
1299 \textbf{nIter0}. If these variables are set to nonzero values, the
1300 model will look for a ''pickup'' file \textit{pickup.0000nIter0} to
1301 restart the integration. The end of a simulation is set through the
1302 real variable \textbf{endTime} (in s). Alternatively, you can
1303 specify instead the number of time steps to execute through the
1304 integer variable \textbf{nTimeSteps}.
1305
1306 \item[frequency of output] \
1307
1308 Real variables defining frequencies (in s) with which output files
1309 are written on disk need to be set up. \textbf{dumpFreq} controls
1310 the frequency with which the instantaneous state of the model is
1311 saved. \textbf{chkPtFreq} and \textbf{pchkPtFreq} control the output
1312 frequency of rolling and permanent checkpoint files, respectively.
1313 See section 1.5.1 Output files for the definition of model state and
1314 checkpoint files. In addition, time-averaged fields can be written
1315 out by setting the variable \textbf{taveFreq} (in s). The precision
1316 with which to write the binary data is controlled by the integer
1317 variable w\textbf{riteBinaryPrec} (set it to \texttt{32} or
1318 \texttt{64}).
1319
1320 \end{description}
1321
1322
1323 %%% Local Variables:
1324 %%% mode: latex
1325 %%% TeX-master: t
1326 %%% End:

  ViewVC Help
Powered by ViewVC 1.1.22