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

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

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


Revision 1.14 - (hide annotations) (download) (as text)
Wed Jul 30 13:42:52 2003 UTC (21 years, 11 months ago) by edhill
Branch: MAIN
Changes since 1.13: +4 -4 lines
File MIME type: application/x-tex
Small cleanups so that the following docs-build process now works on
RH 8 & 9 systems (fails on RH 6.x, not tested on 7.x):

  cvs co  manual MITgcm mitgcm.org
  mkdir scratch
  cd mitgcm.org/devel/buildweb  &&  make All
  mv scratch/dev_docs /PATH/TO/WWW/

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

  ViewVC Help
Powered by ViewVC 1.1.22