/[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.1.1.1 - (show annotations) (download) (as text) (vendor branch)
Wed Aug 8 16:15:31 2001 UTC (23 years, 11 months ago) by adcroft
Branch: dummy
CVS Tags: Import
Changes since 1.1: +0 -0 lines
File MIME type: application/x-tex
Importing model documentation into CVS

1 % $Header: $
2 % $Name: $
3
4
5 \begin{center}
6 {\Large \textbf{Using the model}}
7
8 \vspace*{4mm}
9
10 \vspace*{3mm} {\large July 2001}
11 \end{center}
12
13 In this part, we describe how to use the model. In the first section, we
14 provide enough information to help you get started with the model. We
15 believe the best way to familiarize yourself with the model is to run the
16 case study examples provided with the base version. Information on how to
17 obtain, compile, and run the code is found there as well as a brief
18 description of the model structure directory and the case study examples.
19 The latter and the code structure are described more fully in sections 2 and
20 3, respectively. In section 4, we provide information on how to customize
21 the code when you are ready to try implementing the configuration you have
22 in mind.
23
24 \section{Getting started}
25
26 \subsection{Obtaining the code}
27
28 The reference web site for the model is:
29 \begin{verbatim}
30 http://mitgcm.org
31 \end{verbatim}
32
33 On this site, you can download the model as well as find useful information,
34 some of which might overlap with what is written here. There is also a
35 support news group for the model located at (send your message to \texttt{%
36 support@mitgcm.org}):
37 \begin{verbatim}
38 news://mitgcm.org/mitgcm.support
39 \end{verbatim}
40
41 If CVS is available on your system, we strongly encourage you to use it. CVS
42 provides an efficient and elegant way of organizing your code and keeping
43 track of your changes. If CVS is not available on your machine, you can also
44 download a tar file.
45
46 \subsubsection{using CVS}
47
48 Before you can use CVS, the following environment variable has to be set in
49 your .cshrc or .tcshrc:
50 \begin{verbatim}
51 % setenv CVSROOT :pserver:cvsanon@mitgcm.org:/u/u0/gcmpack
52 % cvs login ( CVS password: cvsanon )
53 \end{verbatim}
54
55 You only need to do ``cvs login'' once. To obtain the latest source:
56 \begin{verbatim}
57 % cvs co -d directory models/MITgcmUV
58 \end{verbatim}
59
60 This creates a directory called \textit{directory}. If \textit{directory}
61 exists this command updates your code based on the repository. Each
62 directory in the source tree contains a directory \textit{CVS}. This
63 information is required by CVS to keep track of your file versions with
64 respect to the repository. Don't edit the files in \textit{CVS}! To obtain a
65 specific \textit{version} that is not the latest source:
66 \begin{verbatim}
67 % cvs co -d directory -r version models/MITgcmUV
68 \end{verbatim}
69
70 \subsubsection{other methods}
71
72 You can download the model as a tar file from the reference web site at:
73 \begin{verbatim}
74 http://mitgcm.org/download/
75 \end{verbatim}
76
77 \subsection{Model and directory structure}
78
79 The ``numerical'' model is contained within a execution environment support
80 wrapper. This wrapper is designed to provide a general framework for
81 grid-point models. MITgcmUV is a specific numerical model that uses the
82 framework. Under this structure the model is split into execution
83 environment support code and conventional numerical model code. The
84 execution environment support code is held under the \textit{eesupp}
85 directory. The grid point model code is held under the \textit{model}
86 directory. Code execution actually starts in the \textit{eesupp} routines
87 and not in the \textit{model} routines. For this reason the top-level
88 \textit{MAIN.F} is in the \textit{eesupp/src} directory. In general,
89 end-users should not need to worry about this level. The top-level routine
90 for the numerical part of the code is in \textit{model/src/THE\_MODEL\_MAIN.F%
91 }. Here is a brief description of the directory structure of the model under
92 the root tree (a detailed description is given in section 3: Code structure).
93
94 \begin{itemize}
95 \item \textit{bin}: this directory is initially empty. It is the default
96 directory in which to compile the code.
97
98 \item \textit{diags}: contains the code relative to time-averaged
99 diagnostics. It is subdivided into two subdirectories \textit{inc} and
100 \textit{src} that contain include files (*.\textit{h} files) and fortran
101 subroutines (*.\textit{F} files), respectively.
102
103 \item \textit{doc}: contains brief documentation notes.
104
105 \item \textit{eesupp}: contains the execution environment source code. Also
106 subdivided into two subdirectories \textit{inc} and \textit{src}.
107
108 \item \textit{exe}: this directory is initially empty. It is the default
109 directory in which to execute the code.
110
111 \item \textit{model}: this directory contains the main source code. Also
112 subdivided into two subdirectories \textit{inc} and \textit{src}.
113
114 \item \textit{pkg}: contains the source code for the packages. Each package
115 corresponds to a subdirectory. For example, \textit{gmredi} contains the
116 code related to the Gent-McWilliams/Redi scheme, \textit{aim} the code
117 relative to the atmospheric intermediate physics. The packages are described
118 in detail in section 3.
119
120 \item \textit{tools}: this directory contains various useful tools. For
121 example, \textit{genmake} is a script written in csh (C-shell) that should
122 be used to generate your makefile. The directory \textit{adjoint} contains
123 the makefile specific to the Tangent linear and Adjoint Compiler (TAMC) that
124 generates the adjoint code. The latter is described in details in part V.
125
126 \item \textit{utils}: this directory contains various utilities. The
127 subdirectory \textit{knudsen2} contains code and a makefile that compute
128 coefficients of the polynomial approximation to the knudsen formula for an
129 ocean nonlinear equation of state. The \textit{matlab} subdirectory contains
130 matlab scripts for reading model output directly into matlab. \textit{scripts%
131 } contains C-shell post-processing scripts for joining processor-based and
132 tiled-based model output.
133
134 \item \textit{verification}: this directory contains the model examples. See
135 below.
136 \end{itemize}
137
138 \subsection{Model examples}
139
140 Now that you have successfully downloaded the model code we recommend that
141 you first try to run the examples provided with the base version. You will
142 probably want to run the example that is the closest to the configuration
143 you will use eventually. The examples are located in subdirectories under
144 the directory \textit{verification} and are briefly described below (a full
145 description is given in section 2):
146
147 \subsubsection{List of model examples}
148
149 \begin{itemize}
150 \item \textit{exp0} - single layer, ocean double gyre (barotropic with
151 free-surface).
152
153 \item \textit{exp1} - 4 layers, ocean double gyre.
154
155 \item \textit{exp2} - 4x4 degree global ocean simulation with steady
156 climatological forcing.
157
158 \item \textit{exp4} - flow over a Gaussian bump in open-water or channel
159 with open boundaries.
160
161 \item \textit{exp5} - inhomogenously forced ocean convection in a doubly
162 periodic box.
163
164 \item \textit{front\_relax} - relaxation of an ocean thermal front (test for
165 Gent/McWilliams scheme). 2D (Y-Z).
166
167 \item \textit{internal wave} - ocean internal wave forced by open boundary
168 conditions.
169
170 \item \textit{natl\_box} - eastern subtropical North Atlantic with KPP
171 scheme; 1 month integration
172
173 \item \textit{hs94.1x64x5} - zonal averaged atmosphere using Held and Suarez
174 '94 forcing.
175
176 \item \textit{hs94.128x64x5} - 3D atmosphere dynamics using Held and Suarez
177 '94 forcing.
178
179 \item \textit{hs94.cs-32x32x5} - 3D atmosphere dynamics using Held and
180 Suarez '94 forcing on the cubed sphere.
181
182 \item \textit{aim.5l\_zon-ave} - Intermediate Atmospheric physics, 5 layers
183 Molteni physics package. Global Zonal Mean configuration, 1x64x5 resolution.
184
185 \item \textit{aim.5l\_XZ\_Equatorial\_Slice} - Intermediate Atmospheric
186 physics, 5 layers Molteni physics package. Equatorial Slice configuration.
187 2D (X-Z).
188
189 \item \textit{aim.5l\_Equatorial\_Channel} - Intermediate Atmospheric
190 physics, 5 layers Molteni physics package. 3D Equatorial Channel
191 configuration (not completely tested).
192
193 \item \textit{aim.5l\_LatLon} - Intermediate Atmospheric physics, 5 layers
194 Molteni physics package. Global configuration, 128x64x5 resolution.
195
196 \item \textit{adjustment.128x64x1}
197
198 \item \textit{adjustment.cs-32x32x1}
199 \end{itemize}
200
201 \subsubsection{Directory structure of model examples}
202
203 Each example directory has the following subdirectories:
204
205 \begin{itemize}
206 \item \textit{code}: contains the code particular to the example. At a
207 minimum, this directory includes the following files:
208
209 \begin{itemize}
210 \item \textit{code/CPP\_EEOPTIONS.h}: declares CPP keys relative to the
211 ``execution environment'' part of the code. The default version is located
212 in \textit{eesupp/inc}.
213
214 \item \textit{code/CPP\_OPTIONS.h}: declares CPP keys relative to the
215 ``numerical model'' part of the code. The default version is located in
216 \textit{model/inc}.
217
218 \item \textit{code/SIZE.h}: declares size of underlying computational grid.
219 The default version is located in \textit{model/inc}.
220 \end{itemize}
221
222 In addition, other include files and subroutines might be present in \textit{%
223 code} depending on the particular experiment. See section 2 for more details.
224
225 \item \textit{input}: contains the input data files required to run the
226 example. At a mimimum, the \textit{input} directory contains the following
227 files:
228
229 \begin{itemize}
230 \item \textit{input/data}: this file, written as a namelist, specifies the
231 main parameters for the experiment.
232
233 \item \textit{input/data.pkg}: contains parameters relative to the packages
234 used in the experiment.
235
236 \item \textit{input/eedata}: this file contains ``execution environment''
237 data. At present, this consists of a specification of the number of threads
238 to use in $X$ and $Y$ under multithreaded execution.
239 \end{itemize}
240
241 In addition, you will also find in this directory the forcing and topography
242 files as well as the files describing the initial state of the experiment.
243 This varies from experiment to experiment. See section 2 for more details.
244
245 \item \textit{results}: this directory contains the output file \textit{%
246 output.txt} produced by the simulation example. This file is useful for
247 comparison with your own output when you run the experiment.
248 \end{itemize}
249
250 Once you have chosen the example you want to run, you are ready to compile
251 the code.
252
253 \subsection{Compiling the code}
254
255 \subsubsection{The script \textit{genmake}}
256
257 To compile the code, use the script \textit{genmake} located in the \textit{%
258 tools} directory. \textit{genmake} is a script that generates the makefile.
259 It has been written so that the code can be compiled on a wide diversity of
260 machines and systems. However, if it doesn't work the first time on your
261 platform, you might need to edit certain lines of \textit{genmake} in the
262 section containing the setups for the different machines. The file is
263 structured like this:
264 \begin{verbatim}
265 .
266 .
267 .
268 general instructions (machine independent)
269 .
270 .
271 .
272 - setup machine 1
273 - setup machine 2
274 - setup machine 3
275 - setup machine 4
276 etc
277 .
278 .
279 .
280 \end{verbatim}
281
282 For example, the setup corresponding to a DEC alpha machine is reproduced
283 here:
284 \begin{verbatim}
285 case OSF1+mpi:
286 echo "Configuring for DEC Alpha"
287 set CPP = ( '/usr/bin/cpp -P' )
288 set DEFINES = ( ${DEFINES} '-DTARGET_DEC -DWORDLENGTH=1' )
289 set KPP = ( 'kapf' )
290 set KPPFILES = ( 'main.F' )
291 set KFLAGS1 = ( '-scan=132 -noconc -cmp=' )
292 set FC = ( 'f77' )
293 set FFLAGS = ( '-convert big_endian -r8 -extend_source -automatic -call_shared -notransform_loops -align dcommons' )
294 set FOPTIM = ( '-O5 -fast -tune host -inline all' )
295 set NOOPTFLAGS = ( '-O0' )
296 set LIBS = ( '-lfmpi -lmpi -lkmp_osfp10 -pthread' )
297 set NOOPTFILES = ( 'barrier.F different_multiple.F external_fields_load.F')
298 set RMFILES = ( '*.p.out' )
299 breaksw
300 \end{verbatim}
301
302 Typically, these are the lines that you might need to edit to make \textit{%
303 genmake} work on your platform if it doesn't work the first time. \textit{%
304 genmake} understands several options that are described here:
305
306 \begin{itemize}
307 \item -rootdir=dir
308
309 indicates where the model root directory is relative to the directory where
310 you are compiling. This option is not needed if you compile in the \textit{%
311 bin} directory (which is the default compilation directory) or within the
312 \textit{verification} tree.
313
314 \item -mods=dir1,dir2,...
315
316 indicates the relative or absolute paths directories where the sources
317 should take precedence over the default versions (located in \textit{model},
318 \textit{eesupp},...). Typically, this option is used when running the
319 examples, see below.
320
321 \item -enable=pkg1,pkg2,...
322
323 enables packages source code \textit{pkg1}, \textit{pkg2},... when creating
324 the makefile.
325
326 \item -disable=pkg1,pkg2,...
327
328 disables packages source code \textit{pkg1}, \textit{pkg2},... when creating
329 the makefile.
330
331 \item -platform=machine
332
333 specifies the platform for which you want the makefile. In general, you
334 won't need this option. \textit{genmake} will select the right machine for
335 you (the one you're working on!). However, this option is useful if you have
336 a choice of several compilers on one machine and you want to use the one
337 that is not the default (ex: \texttt{pgf77} instead of \texttt{f77} under
338 Linux).
339
340 \item -mpi
341
342 this is used when you want to run the model in parallel processing mode
343 under mpi (see section on parallel computation for more details).
344
345 \item -jam
346
347 this is used when you want to run the model in parallel processing mode
348 under jam (see section on parallel computation for more details).
349 \end{itemize}
350
351 For some of the examples, there is a file called \textit{.genmakerc} in the
352 \textit{input} directory that has the relevant \textit{genmake} options for
353 that particular example. In this way you don't need to type the options when
354 invoking \textit{genmake}.
355
356 \subsubsection{Compiling}
357
358 Let's assume that you want to run, say, example \textit{exp2} in the \textit{%
359 input} directory. To compile the code, type the following commands from the
360 model root tree:
361 \begin{verbatim}
362 % cd verification/exp2/input
363 % ../../../tools/genmake
364 % make depend
365 % make
366 \end{verbatim}
367
368 If there is no \textit{.genmakerc} in the \textit{input} directory, you have
369 to use the following options when invoking \textit{genmake}:
370 \begin{verbatim}
371 % ../../../tools/genmake -mods=../code
372 \end{verbatim}
373
374 In addition, you will probably want to disable some of the packages. Taking
375 again the case of \textit{exp2}, the full \textit{genmake} command will
376 probably look like this:
377 \begin{verbatim}
378 % ../../../tools/genmake -mods=../code -disable=kpp,gmredi,aim,...
379 \end{verbatim}
380
381 The make command creates an executable called \textit{mitgcmuv}.
382
383 Note that you can compile and run the code in another directory than \textit{%
384 input}. You just need to make sure that you copy the input data files into
385 the directory where you want to run the model. For example to compile from
386 \textit{code}:
387 \begin{verbatim}
388 % cd verification/exp2/code
389 % ../../../tools/genmake
390 % make depend
391 % make
392 \end{verbatim}
393
394 \subsection{Running the model}
395
396 The first thing to do is to run the code by typing \textit{mitgcmuv} and see
397 what happens. You can compare what you get with what is in the \textit{%
398 results} directory. Unless noted otherwise, most examples are set up to run
399 for a few time steps only so that you can quickly figure out whether the
400 model is working or not.
401
402 \subsubsection{Output files}
403
404 The model produces various output files. At a minimum, the instantaneous
405 ``state'' of the model is written out, which is made of the following files:
406
407 \begin{itemize}
408 \item \textit{U.00000nIter} - zonal component of velocity field (m/s and $>
409 0 $ eastward).
410
411 \item \textit{V.00000nIter} - meridional component of velocity field (m/s
412 and $> 0$ northward).
413
414 \item \textit{W.00000nIter} - vertical component of velocity field (ocean:
415 m/s and $> 0$ upward, atmosphere: Pa/s and $> 0$ towards increasing pressure
416 i.e. downward).
417
418 \item \textit{T.00000nIter} - potential temperature (ocean: $^{0}$C,
419 atmosphere: $^{0}$K).
420
421 \item \textit{S.00000nIter} - ocean: salinity (psu), atmosphere: water vapor
422 (g/kg).
423
424 \item \textit{Eta.00000nIter} - ocean: surface elevation (m), atmosphere:
425 surface pressure anomaly (Pa).
426 \end{itemize}
427
428 The chain \textit{00000nIter} consists of ten figures that specify the
429 iteration number at which the output is written out. For example, \textit{%
430 U.0000000300} is the zonal velocity at iteration 300.
431
432 In addition, a ``pickup'' or ``checkpoint'' file called:
433
434 \begin{itemize}
435 \item \textit{pickup.00000nIter}
436 \end{itemize}
437
438 is written out. This file represents the state of the model in a condensed
439 form and is used for restarting the integration. If the C-D scheme is used,
440 there is an additional ``pickup'' file:
441
442 \begin{itemize}
443 \item \textit{pickup\_cd.00000nIter}
444 \end{itemize}
445
446 containing the D-grid velocity data and that has to be written out as well
447 in order to restart the integration. Rolling checkpoint files are the same
448 as the pickup files but are named differently. Their name contain the chain
449 \textit{ckptA} or \textit{ckptB} instead of \textit{00000nIter}. They can be
450 used to restart the model but are overwritten every other time they are
451 output to save disk space during long integrations.
452
453 \subsubsection{Looking at the output}
454
455 All the model data are written according to a ``meta/data'' file format.
456 Each variable is associated with two files with suffix names \textit{.data}
457 and \textit{.meta}. The \textit{.data} file contains the data written in
458 binary form (big\_endian by default). The \textit{.meta} file is a
459 ``header'' file that contains information about the size and the structure
460 of the \textit{.data} file. This way of organizing the output is
461 particularly useful when running multi-processors calculations. The base
462 version of the model includes a few matlab utilities to read output files
463 written in this format. The matlab scripts are located in the directory
464 \textit{utils/matlab} under the root tree. The script \textit{rdmds.m} reads
465 the data. Look at the comments inside the script to see how to use it.
466
467 \section{Code structure}
468
469 \section{Doing it yourself: customizing the code}
470
471 \subsection{\protect\bigskip Configuration and setup}
472
473 When you are ready to run the model in the configuration you want, the
474 easiest thing is to use and adapt the setup of the case studies experiment
475 (described previously) that is the closest to your configuration. Then, the
476 amount of setup will be minimized. In this section, we focus on the setup
477 relative to the ''numerical model'' part of the code (the setup relative to
478 the ''execution environment'' part is covered in the parallel implementation
479 section) and on the variables and parameters that you are likely to change.
480
481 The CPP keys relative to the ''numerical model'' part of the code are all
482 defined and set in the file \textit{CPP\_OPTIONS.h }in the directory \textit{%
483 model/inc }or in one of the \textit{code }directories of the case study
484 experiments under \textit{verification.} The model parameters are defined
485 and declared in the file \textit{model/inc/PARAMS.h }and their default
486 values are set in the routine \textit{model/src/set\_defaults.F. }The
487 default values can be modified in the namelist file \textit{data }which
488 needs to be located in the directory where you will run the model. The
489 parameters are initialized in the routine \textit{model/src/ini\_parms.F}.
490 Look at this routine to see in what part of the namelist the parameters are
491 located.
492
493 In what follows the parameters are grouped into categories related to the
494 computational domain, the equations solved in the model, and the simulation
495 controls.
496
497 \subsubsection{Computational domain, geometry and time-discretization}
498
499 \begin{itemize}
500 \item dimensions
501 \end{itemize}
502
503 The number of points in the x, y,\textit{\ }and r\textit{\ }directions are
504 represented by the variables \textbf{sNx}\textit{, }\textbf{sNy}\textit{, }%
505 and \textbf{Nr}\textit{\ }respectively which are declared and set in the
506 file \textit{model/inc/SIZE.h. }(Again, this assumes a mono-processor
507 calculation. For multiprocessor calculations see section on parallel
508 implementation.)
509
510 \begin{itemize}
511 \item grid
512 \end{itemize}
513
514 Three different grids are available: cartesian, spherical polar, and
515 curvilinear (including the cubed sphere). The grid is set through the
516 logical variables \textbf{usingCartesianGrid}\textit{, }\textbf{%
517 usingSphericalPolarGrid}\textit{, }and \textit{\ }\textbf{%
518 usingCurvilinearGrid}\textit{. }In the case of spherical and curvilinear
519 grids, the southern boundary is defined through the variable \textbf{phiMin}%
520 \textit{\ }which corresponds to the latitude of the southern most cell face
521 (in degrees). The resolution along the x and y directions is controlled by
522 the 1D arrays \textbf{delx}\textit{\ }and \textbf{dely}\textit{\ }(in meters
523 in the case of a cartesian grid, in degrees otherwise). The vertical grid
524 spacing is set through the 1D array \textbf{delz }for the ocean (in meters)
525 or \textbf{delp}\textit{\ }for the atmosphere (in Pa). The variable \textbf{%
526 Ro\_SeaLevel} represents the standard position of Sea-Level in ''R''
527 coordinate. This is typically set to 0m for the ocean (default value) and 10$%
528 ^{5}$Pa for the atmosphere. For the atmosphere, also set the logical
529 variable \textbf{groundAtK1} to '.\texttt{TRUE}.'. which put the first level
530 (k=1) at the lower boundary (ground).
531
532 For the cartesian grid case, the Coriolis parameter $f$ is set through the
533 variables \textbf{f0}\textit{\ }and \textbf{beta}\textit{\ }which correspond
534 to the reference Coriolis parameter (in s$^{-1}$) and $\frac{\partial f}{%
535 \partial y}$(in m$^{-1}$s$^{-1}$) respectively. If \textbf{beta }\textit{\ }%
536 is set to a nonzero value, \textbf{f0}\textit{\ }is the value of $f$ at the
537 southern edge of the domain.
538
539 \begin{itemize}
540 \item topography - full and partial cells
541 \end{itemize}
542
543 The domain bathymetry is read from a file that contains a 2D (x,y) map of
544 depths (in m) for the ocean or pressures (in Pa) for the atmosphere. The
545 file name is represented by the variable \textbf{bathyFile}\textit{. }The
546 file is assumed to contain binary numbers giving the depth (pressure) of the
547 model at each grid cell, ordered with the x coordinate varying fastest. The
548 points are ordered from low coordinate to high coordinate for both axes. The
549 model code applies without modification to enclosed, periodic, and double
550 periodic domains. Periodicity is assumed by default and is suppressed by
551 setting the depths to 0m for the cells at the limits of the computational
552 domain (note: not sure this is the case for the atmosphere). The precision
553 with which to read the binary data is controlled by the integer variable
554 \textbf{readBinaryPrec }which can take the value \texttt{32} (single
555 precision) or \texttt{64} (double precision). See the matlab program \textit{%
556 gendata.m }in the \textit{input }directories under \textit{verification }to
557 see how the bathymetry files are generated for the case study experiments.
558
559 To use the partial cell capability, the variable \textbf{hFacMin}\textit{\ }%
560 needs to be set to a value between 0 and 1 (it is set to 1 by default)
561 corresponding to the minimum fractional size of the cell. For example if the
562 bottom cell is 500m thick and \textbf{hFacMin}\textit{\ }is set to 0.1, the
563 actual thickness of the cell (i.e. used in the code) can cover a range of
564 discrete values 50m apart from 50m to 500m depending on the value of the
565 bottom depth (in \textbf{bathyFile}) at this point.
566
567 Note that the bottom depths (or pressures) need not coincide with the models
568 levels as deduced from \textbf{delz}\textit{\ }or\textit{\ }\textbf{delp}%
569 \textit{. }The model will interpolate the numbers in \textbf{bathyFile}%
570 \textit{\ }so that they match the levels obtained from \textbf{delz}\textit{%
571 \ }or\textit{\ }\textbf{delp}\textit{\ }and \textbf{hFacMin}\textit{. }
572
573 (Note: the atmospheric case is a bit more complicated than what is written
574 here I think. To come soon...)
575
576 \begin{itemize}
577 \item time-discretization
578 \end{itemize}
579
580 The time steps are set through the real variables \textbf{deltaTMom }and
581 \textbf{deltaTtracer }(in s) which represent the time step for the momentum
582 and tracer equations, respectively. For synchronous integrations, simply set
583 the two variables to the same value (or you can prescribe one time step only
584 through the variable \textbf{deltaT}). The Adams-Bashforth stabilizing
585 parameter is set through the variable \textbf{abEps }(dimensionless). The
586 stagger baroclinic time stepping can be activated by setting the logical
587 variable \textbf{staggerTimeStep }to '.\texttt{TRUE}.'.
588
589 \subsubsection{Equation of state}
590
591 First, because the model equations are written in terms of perturbations, a
592 reference thermodynamic state needs to be specified. This is done through
593 the 1D arrays \textbf{tRef}\textit{\ }and \textbf{sRef}. \textbf{tRef }%
594 specifies the reference potential temperature profile (in $^{o}$C for
595 the ocean and $^{o}$K for the atmosphere) starting from the level
596 k=1. Similarly, \textbf{sRef}\textit{\ }specifies the reference salinity
597 profile (in ppt) for the ocean or the reference specific humidity profile
598 (in g/kg) for the atmosphere.
599
600 The form of the equation of state is controlled by the character variables
601 \textbf{buoyancyRelation}\textit{\ }and \textbf{eosType}\textit{. }\textbf{%
602 buoyancyRelation}\textit{\ }is set to '\texttt{OCEANIC}' by default and
603 needs to be set to '\texttt{ATMOSPHERIC}' for atmosphere simulations. In
604 this case, \textbf{eosType}\textit{\ }must be set to '\texttt{IDEALGAS}'.
605 For the ocean, two forms of the equation of state are available: linear (set
606 \textbf{eosType}\textit{\ }to '\texttt{LINEAR}') and a polynomial
607 approximation to the full nonlinear equation ( set \textbf{eosType}\textit{\
608 }to '\texttt{POLYNOMIAL}'). In the linear case, you need to specify the
609 thermal and haline expansion coefficients represented by the variables
610 \textbf{tAlpha}\textit{\ }(in K$^{-1}$) and \textbf{sBeta}\textit{\ }(in ppt$%
611 ^{-1}$). For the nonlinear case, you need to generate a file of polynomial
612 coefficients called \textit{POLY3.COEFFS. }To do this, use the program
613 \textit{utils/knudsen2/knudsen2.f }under the model tree (a Makefile is
614 available in the same directory and you will need to edit the number and the
615 values of the vertical levels in \textit{knudsen2.f }so that they match
616 those of your configuration). \textit{\ }
617
618 \subsubsection{Momentum equations}
619
620 In this section, we only focus for now on the parameters that you are likely
621 to change, i.e. the ones relative to forcing and dissipation for example.
622 The details relevant to the vector-invariant form of the equations and the
623 various advection schemes are not covered for the moment. We assume that you
624 use the standard form of the momentum equations (i.e. the flux-form) with
625 the default advection scheme. Also, there are a few logical variables that
626 allow you to turn on/off various terms in the momentum equation. These
627 variables are called \textbf{momViscosity, momAdvection, momForcing,
628 useCoriolis, momPressureForcing, momStepping}\textit{, }and \textit{\ }%
629 \textbf{metricTerms }and are assumed to be set to '.\texttt{TRUE}.' here.
630 Look at the file \textit{model/inc/PARAMS.h }for a precise definition of
631 these variables.
632
633 \begin{itemize}
634 \item initialization
635 \end{itemize}
636
637 The velocity components are initialized to 0 unless the simulation is
638 starting from a pickup file (see section on simulation control parameters).
639
640 \begin{itemize}
641 \item forcing
642 \end{itemize}
643
644 This section only applies to the ocean. You need to generate wind-stress
645 data into two files \textbf{zonalWindFile}\textit{\ }and \textbf{%
646 meridWindFile }corresponding to the zonal and meridional components of the
647 wind stress, respectively (if you want the stress to be along the direction
648 of only one of the model horizontal axes, you only need to generate one
649 file). The format of the files is similar to the bathymetry file. The zonal
650 (meridional) stress data are assumed to be in Pa and located at U-points
651 (V-points). As for the bathymetry, the precision with which to read the
652 binary data is controlled by the variable \textbf{readBinaryPrec}.\textbf{\ }
653 See the matlab program \textit{gendata.m }in the \textit{input }directories
654 under \textit{verification }to see how simple analytical wind forcing data
655 are generated for the case study experiments.
656
657 There is also the possibility of prescribing time-dependent periodic
658 forcing. To do this, concatenate the successive time records into a single
659 file (for each stress component) ordered in a (x, y, t) fashion and set the
660 following variables: \textbf{periodicExternalForcing }to '.\texttt{TRUE}.',
661 \textbf{externForcingPeriod }to the period (in s) of which the forcing
662 varies (typically 1 month), and \textbf{externForcingCycle }to the repeat
663 time (in s) of the forcing (typically 1 year -- note: \textbf{%
664 externForcingCycle }must be a multiple of \textbf{externForcingPeriod}).
665 With these variables set up, the model will interpolate the forcing linearly
666 at each iteration.
667
668 \begin{itemize}
669 \item dissipation
670 \end{itemize}
671
672 The lateral eddy viscosity coefficient is specified through the variable
673 \textbf{viscAh}\textit{\ }(in m$^{2}$s$^{-1}$). The vertical eddy viscosity
674 coefficient is specified through the variable \textbf{viscAz }(in m$^{2}$s$%
675 ^{-1}$) for the ocean and \textbf{viscAp}\textit{\ }(in Pa$^{2}$s$^{-1}$)
676 for the atmosphere. The vertical diffusive fluxes can be computed implicitly
677 by setting the logical variable \textbf{implicitViscosity }to '.\texttt{TRUE}%
678 .'. In addition, biharmonic mixing can be added as well through the variable
679 \textbf{viscA4}\textit{\ }(in m$^{4}$s$^{-1}$). On a spherical polar grid,
680 you might also need to set the variable \textbf{cosPower} which is set to 0
681 by default and which represents the power of cosine of latitude to multiply
682 viscosity. Slip or no-slip conditions at lateral and bottom boundaries are
683 specified through the logical variables \textbf{no\_slip\_sides}\textit{\ }%
684 and \textbf{no\_slip\_bottom}. If set to '\texttt{.FALSE.}', free-slip
685 boundary conditions are applied. If no-slip boundary conditions are applied
686 at the bottom, a bottom drag can be applied as well. Two forms are
687 available: linear (set the variable \textbf{bottomDragLinear}\textit{\ }in s$%
688 ^{-1}$) and quadratic (set the variable \textbf{bottomDragQuadratic}\textit{%
689 \ }in m$^{-1}$).
690
691 The Fourier and Shapiro filters are described elsewhere.
692
693 \begin{itemize}
694 \item C-D scheme
695 \end{itemize}
696
697 If you run at a sufficiently coarse resolution, you will need the C-D scheme
698 for the computation of the Coriolis terms. The variable\textbf{\ tauCD},
699 which represents the C-D scheme coupling timescale (in s) needs to be set.
700
701 \begin{itemize}
702 \item calculation of pressure/geopotential
703 \end{itemize}
704
705 First, to run a non-hydrostatic ocean simulation, set the logical variable
706 \textbf{nonHydrostatic} to '.\texttt{TRUE}.'. The pressure field is then
707 inverted through a 3D elliptic equation. (Note: this capability is not
708 available for the atmosphere yet.) By default, a hydrostatic simulation is
709 assumed and a 2D elliptic equation is used to invert the pressure field. The
710 parameters controlling the behaviour of the elliptic solvers are the
711 variables \textbf{cg2dMaxIters}\textit{\ }and \textbf{cg2dTargetResidual }%
712 for the 2D case and \textbf{cg3dMaxIters}\textit{\ }and \textbf{%
713 cg3dTargetResidual }for the 3D case. You probably won't need to alter the
714 default values (are we sure of this?).
715
716 For the calculation of the surface pressure (for the ocean) or surface
717 geopotential (for the atmosphere) you need to set the logical variables
718 \textbf{rigidLid} and \textbf{implicitFreeSurface}\textit{\ }(set one to '.%
719 \texttt{TRUE}.' and the other to '.\texttt{FALSE}.' depending on how you
720 want to deal with the ocean upper or atmosphere lower boundary).
721
722 \subsubsection{Tracer equations}
723
724 This section covers the tracer equations i.e. the potential temperature
725 equation and the salinity (for the ocean) or specific humidity (for the
726 atmosphere) equation. As for the momentum equations, we only describe for
727 now the parameters that you are likely to change. The logical variables
728 \textbf{tempDiffusion}\textit{, }\textbf{tempAdvection}\textit{, }\textbf{%
729 tempForcing}\textit{,} and \textbf{tempStepping} allow you to turn on/off
730 terms in the temperature equation (same thing for salinity or specific
731 humidity with variables \textbf{saltDiffusion}\textit{, }\textbf{%
732 saltAdvection}\textit{\ }etc). These variables are all assumed here to be
733 set to '.\texttt{TRUE}.'. Look at file \textit{model/inc/PARAMS.h }for a
734 precise definition.
735
736 \begin{itemize}
737 \item initialization
738 \end{itemize}
739
740 The initial tracer data can be contained in the binary files \textbf{%
741 hydrogThetaFile }and \textbf{hydrogSaltFile}. These files should contain 3D
742 data ordered in an (x, y, r) fashion with k=1 as the first vertical level.
743 If no file names are provided, the tracers are then initialized with the
744 values of \textbf{tRef }and \textbf{sRef }mentioned above (in the equation
745 of state section). In this case, the initial tracer data are uniform in x
746 and y for each depth level.
747
748 \begin{itemize}
749 \item forcing
750 \end{itemize}
751
752 This part is more relevant for the ocean, the procedure for the atmosphere
753 not being completely stabilized at the moment.
754
755 A combination of fluxes data and relaxation terms can be used for driving
756 the tracer equations. \ For potential temperature, heat flux data (in W/m$%
757 ^{2}$) can be stored in the 2D binary file \textbf{surfQfile}\textit{. }%
758 Alternatively or in addition, the forcing can be specified through a
759 relaxation term. The SST data to which the model surface temperatures are
760 restored to are supposed to be stored in the 2D binary file \textbf{%
761 thetaClimFile}\textit{. }The corresponding relaxation time scale coefficient
762 is set through the variable \textbf{tauThetaClimRelax}\textit{\ }(in s). The
763 same procedure applies for salinity with the variable names \textbf{EmPmRfile%
764 }\textit{, }\textbf{saltClimFile}\textit{, }and \textbf{tauSaltClimRelax}%
765 \textit{\ }for freshwater flux (in m/s) and surface salinity (in ppt) data
766 files and relaxation time scale coefficient (in s), respectively. Also for
767 salinity, if the CPP key \textbf{USE\_NATURAL\_BCS} is turned on, natural
768 boundary conditions are applied i.e. when computing the surface salinity
769 tendency, the freshwater flux is multiplied by the model surface salinity
770 instead of a constant salinity value.
771
772 As for the other input files, the precision with which to read the data is
773 controlled by the variable \textbf{readBinaryPrec}. Time-dependent, periodic
774 forcing can be applied as well following the same procedure used for the
775 wind forcing data (see above).
776
777 \begin{itemize}
778 \item dissipation
779 \end{itemize}
780
781 Lateral eddy diffusivities for temperature and salinity/specific humidity
782 are specified through the variables \textbf{diffKhT }and \textbf{diffKhS }%
783 (in m$^{2}$/s). Vertical eddy diffusivities are specified through the
784 variables \textbf{diffKzT }and \textbf{diffKzS }(in m$^{2}$/s) for the ocean
785 and \textbf{diffKpT }and \textbf{diffKpS }(in Pa$^{2}$/s) for the
786 atmosphere. The vertical diffusive fluxes can be computed implicitly by
787 setting the logical variable \textbf{implicitDiffusion }to '.\texttt{TRUE}%
788 .'. In addition, biharmonic diffusivities can be specified as well through
789 the coefficients \textbf{diffK4T }and \textbf{diffK4S }(in m$^{4}$/s). Note
790 that the cosine power scaling (specified through \textbf{cosPower }- see the
791 momentum equations section) is applied to the tracer diffusivities
792 (Laplacian and biharmonic) as well. The Gent and McWilliams parameterization
793 for oceanic tracers is described in the package section. Finally, note that
794 tracers can be also subject to Fourier and Shapiro filtering (see the
795 corresponding section on these filters).
796
797 \begin{itemize}
798 \item ocean convection
799 \end{itemize}
800
801 Two options are available to parameterize ocean convection: one is to use
802 the convective adjustment scheme. In this case, you need to set the variable
803 \textbf{cadjFreq}, which represents the frequency (in s) with which the
804 adjustment algorithm is called, to a non-zero value (if set to a negative
805 value by the user, the model will set it to the tracer time step). The other
806 option is to parameterize convection with implicit vertical diffusion. To do
807 this, set the logical variable \textbf{implicitDiffusion }to '.\texttt{TRUE}%
808 .' and the real variable \textbf{ivdc\_kappa }to a value (in m$^{2}$/s) you
809 wish the tracer vertical diffusivities to have when mixing tracers
810 vertically due to static instabilities. Note that \textbf{cadjFreq }and
811 \textbf{ivdc\_kappa }can not both have non-zero value.
812
813 \subsubsection{Simulation controls}
814
815 The model ''clock'' is defined by the variable \textbf{deltaTClock }(in s)
816 which determines the IO frequencies and is used in tagging output.
817 Typically, you will set it to the tracer time step for accelerated runs
818 (otherwise it is simply set to the default time step \textbf{deltaT}).
819 Frequency of checkpointing and dumping of the model state are referenced to
820 this clock (see below).
821
822 \begin{itemize}
823 \item run duration
824 \end{itemize}
825
826 The beginning of a simulation is set by specifying a start time (in s)
827 through the real variable \textbf{startTime }or by specifying an initial
828 iteration number through the integer variable \textbf{nIter0}. If these
829 variables are set to nonzero values, the model will look for a ''pickup''
830 file \textit{pickup.0000nIter0 }to restart the integration\textit{. }The end
831 of a simulation is set through the real variable \textbf{endTime }(in s).
832 Alternatively, you can specify instead the number of time steps to execute
833 through the integer variable \textbf{nTimeSteps}.
834
835 \begin{itemize}
836 \item frequency of output
837 \end{itemize}
838
839 Real variables defining frequencies (in s) with which output files are
840 written on disk need to be set up. \textbf{dumpFreq }controls the frequency
841 with which the instantaneous state of the model is saved. \textbf{chkPtFreq }%
842 and \textbf{pchkPtFreq }control the output frequency of rolling and
843 permanent checkpoint files, respectively. See section 1.5.1 Output files for the
844 definition of model state and checkpoint files. In addition, time-averaged
845 fields can be written out by setting the variable \textbf{taveFreq} (in s).
846 The precision with which to write the binary data is controlled by the
847 integer variable w\textbf{riteBinaryPrec }(set it to \texttt{32} or \texttt{%
848 64}).

  ViewVC Help
Powered by ViewVC 1.1.22