/[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.47 - (hide annotations) (download) (as text)
Tue Jan 9 01:02:48 2018 UTC (7 years, 6 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint01, HEAD
Changes since 1.46: +48 -49 lines
File MIME type: application/x-tex
update mailing list info

1 jmc 1.47 % $Header: /u/gcmpack/manual/s_getstarted/text/getting_started.tex,v 1.46 2015/11/21 03:19:54 dimitri Exp $
2 adcroft 1.2 % $Name: $
3 adcroft 1.1
4 adcroft 1.4 %\section{Getting started}
5 adcroft 1.1
6 molod 1.39 We believe the best way to familiarize yourself with the
7 adcroft 1.4 model is to run the case study examples provided with the base
8     version. Information on how to obtain, compile, and run the code is
9 molod 1.39 found here as well as a brief description of the model structure
10     directory and the case study examples. Information is also provided
11 jmc 1.47 here on how to customize the code when you are ready to try implementing
12 molod 1.39 the configuration you have in mind. The code and algorithm
13 jmc 1.47 are described more fully in chapters \ref{chap:discretization} and
14     \ref{chap:sarch}.
15 adcroft 1.4
16     \section{Where to find information}
17 jmc 1.44 \label{sec:whereToFindInfo}
18 edhill 1.30 \begin{rawhtml}
19     <!-- CMIREDIR:whereToFindInfo: -->
20     \end{rawhtml}
21 adcroft 1.4
22 molod 1.37 There is a web-archived support mailing list for the model that
23 jmc 1.47 you can email at \texttt{MITgcm-support@mitgcm.org} after subscribing to:
24     \begin{rawhtml} <A href=http://mailman.mitgcm.org/mailman/listinfo/mitgcm-support/ target="idontexist"> \end{rawhtml}
25 edhill 1.15 \begin{verbatim}
26 jmc 1.47 http://mailman.mitgcm.org/mailman/listinfo/mitgcm-support/
27     \end{verbatim}
28     \begin{rawhtml} </A> \end{rawhtml}
29     or browse at:
30     \begin{rawhtml} <A href=http://mailman.mitgcm.org/pipermail/mitgcm-support/ target="idontexist"> \end{rawhtml}
31     \begin{verbatim}
32     http://mailman.mitgcm.org/pipermail/mitgcm-support/
33 edhill 1.15 \end{verbatim}
34     \begin{rawhtml} </A> \end{rawhtml}
35 adcroft 1.4
36     \section{Obtaining the code}
37 jmc 1.44 \label{sec:obtainingCode}
38 edhill 1.30 \begin{rawhtml}
39     <!-- CMIREDIR:obtainingCode: -->
40     \end{rawhtml}
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 cnh 1.27 \subsection{Method 1 - Checkout from CVS}
71 jmc 1.44 \label{sec:cvs_checkout}
72 edhill 1.19
73 adcroft 1.1 If CVS is available on your system, we strongly encourage you to use it. CVS
74     provides an efficient and elegant way of organizing your code and keeping
75     track of your changes. If CVS is not available on your machine, you can also
76     download a tar file.
77    
78 edhill 1.15 Before you can use CVS, the following environment variable(s) should
79 jmc 1.47 be set within your shell. For a csh or tcsh shell, put the following
80 edhill 1.15 \begin{verbatim}
81     % setenv CVSROOT :pserver:cvsanon@mitgcm.org:/u/gcmpack
82     \end{verbatim}
83 edhill 1.31 in your \texttt{.cshrc} or \texttt{.tcshrc} file. For bash or sh
84     shells, put:
85 adcroft 1.1 \begin{verbatim}
86 edhill 1.15 % export CVSROOT=':pserver:cvsanon@mitgcm.org:/u/gcmpack'
87 adcroft 1.6 \end{verbatim}
88 edhill 1.20 in your \texttt{.profile} or \texttt{.bashrc} file.
89 adcroft 1.6
90 edhill 1.15 To get MITgcm through CVS, first register with the MITgcm CVS server
91     using command:
92 adcroft 1.6 \begin{verbatim}
93 adcroft 1.1 % cvs login ( CVS password: cvsanon )
94     \end{verbatim}
95 edhill 1.15 You only need to do a ``cvs login'' once.
96 adcroft 1.1
97 edhill 1.15 To obtain the latest sources type:
98     \begin{verbatim}
99 jmc 1.45 % cvs co -P MITgcm
100 edhill 1.15 \end{verbatim}
101     or to get a specific release type:
102 adcroft 1.1 \begin{verbatim}
103 jmc 1.45 % cvs co -P -r checkpoint52i_post MITgcm
104 adcroft 1.1 \end{verbatim}
105 jmc 1.45 The CVS command ``\texttt{cvs co}'' is the abreviation of the full-name
106     ``\texttt{cvs checkout}'' command and using the option ``-P'' (\texttt{cvs co -P})
107     will prevent to download unnecessary empty directories.
108    
109 edhill 1.15 The MITgcm web site contains further directions concerning the source
110     code and CVS. It also contains a web interface to our CVS archive so
111     that one may easily view the state of files, revisions, and other
112     development milestones:
113 jmc 1.40 \begin{rawhtml} <A href="http://mitgcm.org/viewvc/MITgcm/MITgcm/" target="idontexist"> \end{rawhtml}
114 edhill 1.15 \begin{verbatim}
115 jmc 1.43 http://mitgcm.org/viewvc/MITgcm/MITgcm/
116 edhill 1.15 \end{verbatim}
117     \begin{rawhtml} </A> \end{rawhtml}
118 adcroft 1.1
119 edhill 1.19 As a convenience, the MITgcm CVS server contains aliases which are
120     named subsets of the codebase. These aliases can be especially
121     helpful when used over slow internet connections or on machines with
122     restricted storage space. Table \ref{tab:cvsModules} contains a list
123     of CVS aliases
124     \begin{table}[htb]
125     \centering
126     \begin{tabular}[htb]{|lp{3.25in}|}\hline
127     \textbf{Alias Name} & \textbf{Information (directories) Contained} \\\hline
128     \texttt{MITgcm\_code} & Only the source code -- none of the verification examples. \\
129     \texttt{MITgcm\_verif\_basic}
130 jmc 1.47 & Source code plus a small set of the verification examples
131     (\texttt{global\_ocean.90x40x15}, \texttt{aim.5l\_cs}, \texttt{hs94.128x64x5},
132 edhill 1.19 \texttt{front\_relax}, and \texttt{plume\_on\_slope}). \\
133     \texttt{MITgcm\_verif\_atmos} & Source code plus all of the atmospheric examples. \\
134     \texttt{MITgcm\_verif\_ocean} & Source code plus all of the oceanic examples. \\
135     \texttt{MITgcm\_verif\_all} & Source code plus all of the
136     verification examples. \\\hline
137     \end{tabular}
138     \caption{MITgcm CVS Modules}
139     \label{tab:cvsModules}
140     \end{table}
141 edhill 1.15
142 edhill 1.31 The checkout process creates a directory called \texttt{MITgcm}. If
143     the directory \texttt{MITgcm} exists this command updates your code
144 edhill 1.15 based on the repository. Each directory in the source tree contains a
145 edhill 1.31 directory \texttt{CVS}. This information is required by CVS to keep
146 edhill 1.15 track of your file versions with respect to the repository. Don't edit
147 edhill 1.31 the files in \texttt{CVS}! You can also use CVS to download code
148 edhill 1.15 updates. More extensive information on using CVS for maintaining
149     MITgcm code can be found
150 jmc 1.41 \begin{rawhtml} <A href="http://mitgcm.org/public/using_cvs.html" target="idontexist"> \end{rawhtml}
151 cnh 1.7 here
152 dimitri 1.46 \begin{rawhtml} </A> \end{rawhtml}.
153 edhill 1.19 It is important to note that the CVS aliases in Table
154     \ref{tab:cvsModules} cannot be used in conjunction with the CVS
155     \texttt{-d DIRNAME} option. However, the \texttt{MITgcm} directories
156     they create can be changed to a different name following the check-out:
157     \begin{verbatim}
158 jmc 1.45 % cvs co -P MITgcm_verif_basic
159 edhill 1.19 % mv MITgcm MITgcm_verif_basic
160     \end{verbatim}
161 cnh 1.7
162 dimitri 1.46 Note that it is possible to checkout code without ``cvs login'' and without
163     setting any shell environment variables by specifying the pserver name and
164     password in one line, for example:
165     \begin{verbatim}
166     % cvs -d :pserver:cvsanon:cvsanon@mitgcm.org:/u/gcmpack co -P MITgcm
167     \end{verbatim}
168    
169 edhill 1.19 \subsubsection{Upgrading from an earlier version}
170 adcroft 1.12
171     If you already have an earlier version of the code you can ``upgrade''
172     your copy instead of downloading the entire repository again. First,
173     ``cd'' (change directory) to the top of your working copy:
174     \begin{verbatim}
175     % cd MITgcm
176     \end{verbatim}
177 edhill 1.15 and then issue the cvs update command such as:
178 adcroft 1.12 \begin{verbatim}
179 jmc 1.45 % cvs -q update -d -P -r checkpoint52i_post
180 adcroft 1.12 \end{verbatim}
181 edhill 1.16 This will update the ``tag'' to ``checkpoint52i\_post'', add any new
182 adcroft 1.12 directories (-d) and remove any empty directories (-P). The -q option
183     means be quiet which will reduce the number of messages you'll see in
184     the terminal. If you have modified the code prior to upgrading, CVS
185     will try to merge your changes with the upgrades. If there is a
186     conflict between your modifications and the upgrade, it will report
187     that file with a ``C'' in front, e.g.:
188     \begin{verbatim}
189     C model/src/ini_parms.F
190     \end{verbatim}
191     If the list of conflicts scrolled off the screen, you can re-issue the
192     cvs update command and it will report the conflicts. Conflicts are
193 edhill 1.15 indicated in the code by the delimites ``$<<<<<<<$'', ``======='' and
194     ``$>>>>>>>$''. For example,
195 edhill 1.17 {\small
196 adcroft 1.12 \begin{verbatim}
197     <<<<<<< ini_parms.F
198     & bottomDragLinear,myOwnBottomDragCoefficient,
199     =======
200     & bottomDragLinear,bottomDragQuadratic,
201     >>>>>>> 1.18
202     \end{verbatim}
203 edhill 1.17 }
204 adcroft 1.12 means that you added ``myOwnBottomDragCoefficient'' to a namelist at
205     the same time and place that we added ``bottomDragQuadratic''. You
206     need to resolve this conflict and in this case the line should be
207     changed to:
208 edhill 1.17 {\small
209 adcroft 1.12 \begin{verbatim}
210     & bottomDragLinear,bottomDragQuadratic,myOwnBottomDragCoefficient,
211     \end{verbatim}
212 edhill 1.17 }
213 edhill 1.15 and the lines with the delimiters ($<<<<<<$,======,$>>>>>>$) be deleted.
214 adcroft 1.12 Unless you are making modifications which exactly parallel
215     developments we make, these types of conflicts should be rare.
216    
217     \paragraph*{Upgrading to the current pre-release version}
218    
219     We don't make a ``release'' for every little patch and bug fix in
220     order to keep the frequency of upgrades to a minimum. However, if you
221     have run into a problem for which ``we have already fixed in the
222     latest code'' and we haven't made a ``tag'' or ``release'' since that
223     patch then you'll need to get the latest code:
224     \begin{verbatim}
225 jmc 1.45 % cvs -q update -d -P -A
226 adcroft 1.12 \end{verbatim}
227     Unlike, the ``check-out'' and ``update'' procedures above, there is no
228     ``tag'' or release name. The -A tells CVS to upgrade to the
229     very latest version. As a rule, we don't recommend this since you
230     might upgrade while we are in the processes of checking in the code so
231     that you may only have part of a patch. Using this method of updating
232     also means we can't tell what version of the code you are working
233     with. So please be sure you understand what you're doing.
234    
235 molod 1.37 \subsection{Method 2 - Tar file download}
236 jmc 1.44 \label{sec:conventionalDownload}
237 molod 1.37
238     If you do not have CVS on your system, you can download the model as a
239     tar file from the web site at:
240 jmc 1.40 \begin{rawhtml} <A href=http://mitgcm.org/download/ target="idontexist"> \end{rawhtml}
241 molod 1.37 \begin{verbatim}
242     http://mitgcm.org/download/
243     \end{verbatim}
244     \begin{rawhtml} </A> \end{rawhtml}
245     The tar file still contains CVS information which we urge you not to
246     delete; even if you do not use CVS yourself the information can help
247     us if you should need to send us your copy of the code. If a recent
248     tar file does not exist, then please contact the developers through
249 jmc 1.47 the
250 molod 1.37 \begin{rawhtml} <A href="mailto:MITgcm-support@mitgcm.org"> \end{rawhtml}
251     MITgcm-support@mitgcm.org
252     \begin{rawhtml} </A> \end{rawhtml}
253     mailing list.
254    
255 adcroft 1.4 \section{Model and directory structure}
256 edhill 1.30 \begin{rawhtml}
257     <!-- CMIREDIR:directory_structure: -->
258     \end{rawhtml}
259 adcroft 1.1
260 adcroft 1.12 The ``numerical'' model is contained within a execution environment
261     support wrapper. This wrapper is designed to provide a general
262     framework for grid-point models. MITgcmUV is a specific numerical
263     model that uses the framework. Under this structure the model is split
264     into execution environment support code and conventional numerical
265     model code. The execution environment support code is held under the
266 edhill 1.31 \texttt{eesupp} directory. The grid point model code is held under the
267     \texttt{model} directory. Code execution actually starts in the
268     \texttt{eesupp} routines and not in the \texttt{model} routines. For
269     this reason the top-level \texttt{MAIN.F} is in the
270     \texttt{eesupp/src} directory. In general, end-users should not need
271 edhill 1.17 to worry about this level. The top-level routine for the numerical
272 edhill 1.31 part of the code is in \texttt{model/src/THE\_MODEL\_MAIN.F}. Here is
273 edhill 1.17 a brief description of the directory structure of the model under the
274     root tree (a detailed description is given in section 3: Code
275     structure).
276 adcroft 1.1
277     \begin{itemize}
278    
279 edhill 1.31 \item \texttt{doc}: contains brief documentation notes.
280 jmc 1.47
281 edhill 1.31 \item \texttt{eesupp}: contains the execution environment source code.
282     Also subdivided into two subdirectories \texttt{inc} and
283     \texttt{src}.
284 jmc 1.47
285 edhill 1.31 \item \texttt{model}: this directory contains the main source code.
286     Also subdivided into two subdirectories \texttt{inc} and
287     \texttt{src}.
288 jmc 1.47
289 edhill 1.31 \item \texttt{pkg}: contains the source code for the packages. Each
290     package corresponds to a subdirectory. For example, \texttt{gmredi}
291 edhill 1.17 contains the code related to the Gent-McWilliams/Redi scheme,
292 edhill 1.31 \texttt{aim} the code relative to the atmospheric intermediate
293 jmc 1.44 physics. The packages are described in detail in chapter \ref{chap:packagesI}.
294 jmc 1.47
295 edhill 1.31 \item \texttt{tools}: this directory contains various useful tools.
296     For example, \texttt{genmake2} is a script written in csh (C-shell)
297 edhill 1.17 that should be used to generate your makefile. The directory
298 edhill 1.31 \texttt{adjoint} contains the makefile specific to the Tangent
299 edhill 1.17 linear and Adjoint Compiler (TAMC) that generates the adjoint code.
300 molod 1.37 The latter is described in detail in part \ref{chap.ecco}.
301     This directory also contains the subdirectory build\_options, which
302     contains the `optfiles' with the compiler options for the different
303     compilers and machines that can run MITgcm.
304 jmc 1.47
305 edhill 1.31 \item \texttt{utils}: this directory contains various utilities. The
306     subdirectory \texttt{knudsen2} contains code and a makefile that
307 edhill 1.17 compute coefficients of the polynomial approximation to the knudsen
308     formula for an ocean nonlinear equation of state. The
309 edhill 1.31 \texttt{matlab} subdirectory contains matlab scripts for reading
310     model output directly into matlab. \texttt{scripts} contains C-shell
311 edhill 1.17 post-processing scripts for joining processor-based and tiled-based
312 molod 1.37 model output. The subdirectory exch2 contains the code needed for
313     the exch2 package to work with different combinations of domain
314     decompositions.
315 jmc 1.47
316 edhill 1.31 \item \texttt{verification}: this directory contains the model
317 jmc 1.44 examples. See section \ref{sec:modelExamples}.
318 adcroft 1.1
319 molod 1.37 \item \texttt{jobs}: contains sample job scripts for running MITgcm.
320 jmc 1.47
321 molod 1.37 \item \texttt{lsopt}: Line search code used for optimization.
322 jmc 1.47
323 molod 1.37 \item \texttt{optim}: Interface between MITgcm and line search code.
324 jmc 1.47
325 adcroft 1.1 \end{itemize}
326    
327 cnh 1.26 \section[Building MITgcm]{Building the code}
328 jmc 1.44 \label{sec:buildingCode}
329 edhill 1.30 \begin{rawhtml}
330     <!-- CMIREDIR:buildingCode: -->
331     \end{rawhtml}
332 adcroft 1.4
333 edhill 1.31 To compile the code, we use the \texttt{make} program. This uses a
334     file (\texttt{Makefile}) that allows us to pre-process source files,
335     specify compiler and optimization options and also figures out any
336     file dependencies. We supply a script (\texttt{genmake2}), described
337 jmc 1.44 in section \ref{sec:genmake}, that automatically creates the
338 edhill 1.31 \texttt{Makefile} for you. You then need to build the dependencies and
339 edhill 1.16 compile the code.
340 adcroft 1.4
341 edhill 1.31 As an example, assume that you want to build and run experiment
342     \texttt{verification/exp2}. The are multiple ways and places to
343 edhill 1.16 actually do this but here let's build the code in
344 edhill 1.31 \texttt{verification/exp2/build}:
345 adcroft 1.4 \begin{verbatim}
346 edhill 1.31 % cd verification/exp2/build
347 adcroft 1.4 \end{verbatim}
348 edhill 1.31 First, build the \texttt{Makefile}:
349 adcroft 1.4 \begin{verbatim}
350 edhill 1.16 % ../../../tools/genmake2 -mods=../code
351 adcroft 1.4 \end{verbatim}
352 edhill 1.31 The command line option tells \texttt{genmake} to override model source
353     code with any files in the directory \texttt{../code/}.
354 adcroft 1.4
355 edhill 1.31 On many systems, the \texttt{genmake2} program will be able to
356 edhill 1.16 automatically recognize the hardware, find compilers and other tools
357 edhill 1.31 within the user's path (``\texttt{echo \$PATH}''), and then choose an
358 edhill 1.29 appropriate set of options from the files (``optfiles'') contained in
359 edhill 1.31 the \texttt{tools/build\_options} directory. Under some
360     circumstances, a user may have to create a new ``optfile'' in order to
361     specify the exact combination of compiler, compiler flags, libraries,
362     and other options necessary to build a particular configuration of
363     MITgcm. In such cases, it is generally helpful to read the existing
364     ``optfiles'' and mimic their syntax.
365 edhill 1.16
366     Through the MITgcm-support list, the MITgcm developers are willing to
367     provide help writing or modifing ``optfiles''. And we encourage users
368     to post new ``optfiles'' (particularly ones for new machines or
369 jmc 1.47 architectures) to the
370 edhill 1.34 \begin{rawhtml} <A href="mailto:MITgcm-support@mitgcm.org"> \end{rawhtml}
371 edhill 1.17 MITgcm-support@mitgcm.org
372     \begin{rawhtml} </A> \end{rawhtml}
373     list.
374 edhill 1.16
375 edhill 1.31 To specify an optfile to \texttt{genmake2}, the syntax is:
376 adcroft 1.4 \begin{verbatim}
377 edhill 1.16 % ../../../tools/genmake2 -mods=../code -of /path/to/optfile
378 adcroft 1.4 \end{verbatim}
379    
380 edhill 1.31 Once a \texttt{Makefile} has been generated, we create the
381     dependencies with the command:
382 adcroft 1.4 \begin{verbatim}
383     % make depend
384     \end{verbatim}
385 edhill 1.31 This modifies the \texttt{Makefile} by attaching a (usually, long)
386     list of files upon which other files depend. The purpose of this is to
387     reduce re-compilation if and when you start to modify the code. The
388     {\tt make depend} command also creates links from the model source to
389     this directory. It is important to note that the {\tt make depend}
390     stage will occasionally produce warnings or errors since the
391     dependency parsing tool is unable to find all of the necessary header
392     files (\textit{eg.} \texttt{netcdf.inc}). In these circumstances, it
393     is usually OK to ignore the warnings/errors and proceed to the next
394     step.
395 adcroft 1.1
396 edhill 1.31 Next one can compile the code using:
397 adcroft 1.4 \begin{verbatim}
398     % make
399     \end{verbatim}
400 edhill 1.31 The {\tt make} command creates an executable called \texttt{mitgcmuv}.
401 edhill 1.16 Additional make ``targets'' are defined within the makefile to aid in
402 edhill 1.31 the production of adjoint and other versions of MITgcm. On SMP
403     (shared multi-processor) systems, the build process can often be sped
404     up appreciably using the command:
405     \begin{verbatim}
406     % make -j 2
407     \end{verbatim}
408     where the ``2'' can be replaced with a number that corresponds to the
409     number of CPUs available.
410 adcroft 1.4
411     Now you are ready to run the model. General instructions for doing so are
412 jmc 1.44 given in section \ref{sec:runModel}. Here, we can run the model by
413 edhill 1.31 first creating links to all the input files:
414     \begin{verbatim}
415     ln -s ../input/* .
416     \end{verbatim}
417     and then calling the executable with:
418 adcroft 1.4 \begin{verbatim}
419     ./mitgcmuv > output.txt
420     \end{verbatim}
421 edhill 1.31 where we are re-directing the stream of text output to the file
422     \texttt{output.txt}.
423 adcroft 1.4
424 molod 1.35 \subsection{Building/compiling the code elsewhere}
425    
426 jmc 1.44 In the example above (section \ref{sec:buildingCode}) we built the
427 molod 1.35 executable in the {\em input} directory of the experiment for
428     convenience. You can also configure and compile the code in other
429     locations, for example on a scratch disk with out having to copy the
430     entire source tree. The only requirement to do so is you have {\tt
431     genmake2} in your path or you know the absolute path to {\tt
432     genmake2}.
433    
434     The following sections outline some possible methods of organizing
435     your source and data.
436    
437     \subsubsection{Building from the {\em ../code directory}}
438    
439     This is just as simple as building in the {\em input/} directory:
440     \begin{verbatim}
441     % cd verification/exp2/code
442     % ../../../tools/genmake2
443     % make depend
444     % make
445     \end{verbatim}
446     However, to run the model the executable ({\em mitgcmuv}) and input
447     files must be in the same place. If you only have one calculation to make:
448     \begin{verbatim}
449     % cd ../input
450     % cp ../code/mitgcmuv ./
451     % ./mitgcmuv > output.txt
452     \end{verbatim}
453     or if you will be making multiple runs with the same executable:
454     \begin{verbatim}
455     % cd ../
456     % cp -r input run1
457     % cp code/mitgcmuv run1
458     % cd run1
459     % ./mitgcmuv > output.txt
460     \end{verbatim}
461    
462     \subsubsection{Building from a new directory}
463    
464     Since the {\em input} directory contains input files it is often more
465     useful to keep {\em input} pristine and build in a new directory
466     within {\em verification/exp2/}:
467     \begin{verbatim}
468     % cd verification/exp2
469     % mkdir build
470     % cd build
471     % ../../../tools/genmake2 -mods=../code
472     % make depend
473     % make
474     \end{verbatim}
475     This builds the code exactly as before but this time you need to copy
476     either the executable or the input files or both in order to run the
477     model. For example,
478     \begin{verbatim}
479     % cp ../input/* ./
480     % ./mitgcmuv > output.txt
481     \end{verbatim}
482     or if you tend to make multiple runs with the same executable then
483     running in a new directory each time might be more appropriate:
484     \begin{verbatim}
485     % cd ../
486     % mkdir run1
487     % cp build/mitgcmuv run1/
488     % cp input/* run1/
489     % cd run1
490     % ./mitgcmuv > output.txt
491     \end{verbatim}
492    
493     \subsubsection{Building on a scratch disk}
494    
495     Model object files and output data can use up large amounts of disk
496     space so it is often the case that you will be operating on a large
497     scratch disk. Assuming the model source is in {\em ~/MITgcm} then the
498     following commands will build the model in {\em /scratch/exp2-run1}:
499     \begin{verbatim}
500     % cd /scratch/exp2-run1
501     % ~/MITgcm/tools/genmake2 -rootdir=~/MITgcm \
502     -mods=~/MITgcm/verification/exp2/code
503     % make depend
504     % make
505     \end{verbatim}
506     To run the model here, you'll need the input files:
507     \begin{verbatim}
508     % cp ~/MITgcm/verification/exp2/input/* ./
509     % ./mitgcmuv > output.txt
510     \end{verbatim}
511    
512     As before, you could build in one directory and make multiple runs of
513     the one experiment:
514     \begin{verbatim}
515     % cd /scratch/exp2
516     % mkdir build
517     % cd build
518     % ~/MITgcm/tools/genmake2 -rootdir=~/MITgcm \
519     -mods=~/MITgcm/verification/exp2/code
520     % make depend
521     % make
522     % cd ../
523     % cp -r ~/MITgcm/verification/exp2/input run2
524     % cd run2
525     % ./mitgcmuv > output.txt
526     \end{verbatim}
527    
528     \subsection{Using \texttt{genmake2}}
529 jmc 1.44 \label{sec:genmake}
530 molod 1.35
531     To compile the code, first use the program \texttt{genmake2} (located
532     in the \texttt{tools} directory) to generate a Makefile.
533     \texttt{genmake2} is a shell script written to work with all
534     ``sh''--compatible shells including bash v1, bash v2, and Bourne.
535 jmc 1.42 %Internally, \texttt{genmake2} determines the locations of needed
536     %files, the compiler, compiler options, libraries, and Unix tools. It
537     %relies upon a number of ``optfiles'' located in the
538     %\texttt{tools/build\_options} directory.
539     \texttt{genmake2} parses information from the following sources:
540     \begin{description}
541 jmc 1.47 \item[-] a {\em gemake\_local} file if one is found in the current
542 jmc 1.42 directory
543     \item[-] command-line options
544     \item[-] an "options file" as specified by the command-line option
545     \texttt{--optfile=/PATH/FILENAME}
546 jmc 1.47 \item[-] a {\em packages.conf} file (if one is found) with the
547     specific list of packages to compile. The search path for
548 jmc 1.42 file {\em packages.conf} is, first, the current directory and
549     then each of the "MODS" directories in the given order (see below).
550     \end{description}
551    
552     \subsubsection{Optfiles in \texttt{tools/build\_options} directory:}
553 molod 1.35
554     The purpose of the optfiles is to provide all the compilation options
555     for particular ``platforms'' (where ``platform'' roughly means the
556     combination of the hardware and the compiler) and code configurations.
557     Given the combinations of possible compilers and library dependencies
558     ({\it eg.} MPI and NetCDF) there may be numerous optfiles available
559     for a single machine. The naming scheme for the majority of the
560     optfiles shipped with the code is
561     \begin{center}
562     {\bf OS\_HARDWARE\_COMPILER }
563     \end{center}
564     where
565     \begin{description}
566     \item[OS] is the name of the operating system (generally the
567     lower-case output of the {\tt 'uname'} command)
568     \item[HARDWARE] is a string that describes the CPU type and
569     corresponds to output from the {\tt 'uname -m'} command:
570     \begin{description}
571     \item[ia32] is for ``x86'' machines such as i386, i486, i586, i686,
572     and athlon
573     \item[ia64] is for Intel IA64 systems (eg. Itanium, Itanium2)
574     \item[amd64] is AMD x86\_64 systems
575     \item[ppc] is for Mac PowerPC systems
576     \end{description}
577     \item[COMPILER] is the compiler name (generally, the name of the
578     FORTRAN executable)
579     \end{description}
580    
581     In many cases, the default optfiles are sufficient and will result in
582     usable Makefiles. However, for some machines or code configurations,
583     new ``optfiles'' must be written. To create a new optfile, it is
584     generally best to start with one of the defaults and modify it to suit
585     your needs. Like \texttt{genmake2}, the optfiles are all written
586     using a simple ``sh''--compatible syntax. While nearly all variables
587     used within \texttt{genmake2} may be specified in the optfiles, the
588     critical ones that should be defined are:
589    
590     \begin{description}
591     \item[FC] the FORTRAN compiler (executable) to use
592     \item[DEFINES] the command-line DEFINE options passed to the compiler
593     \item[CPP] the C pre-processor to use
594     \item[NOOPTFLAGS] options flags for special files that should not be
595     optimized
596     \end{description}
597    
598     For example, the optfile for a typical Red Hat Linux machine (``ia32''
599     architecture) using the GCC (g77) compiler is
600     \begin{verbatim}
601     FC=g77
602     DEFINES='-D_BYTESWAPIO -DWORDLENGTH=4'
603     CPP='cpp -traditional -P'
604     NOOPTFLAGS='-O0'
605     # For IEEE, use the "-ffloat-store" option
606     if test "x$IEEE" = x ; then
607     FFLAGS='-Wimplicit -Wunused -Wuninitialized'
608     FOPTIM='-O3 -malign-double -funroll-loops'
609     else
610     FFLAGS='-Wimplicit -Wunused -ffloat-store'
611     FOPTIM='-O0 -malign-double'
612     fi
613     \end{verbatim}
614    
615     If you write an optfile for an unrepresented machine or compiler, you
616     are strongly encouraged to submit the optfile to the MITgcm project
617     for inclusion. Please send the file to the
618     \begin{rawhtml} <A href="mail-to:MITgcm-support@mitgcm.org"> \end{rawhtml}
619     \begin{center}
620     MITgcm-support@mitgcm.org
621     \end{center}
622     \begin{rawhtml} </A> \end{rawhtml}
623     mailing list.
624    
625 jmc 1.42 \subsubsection{Command-line options:}
626    
627 molod 1.35 In addition to the optfiles, \texttt{genmake2} supports a number of
628     helpful command-line options. A complete list of these options can be
629     obtained from:
630     \begin{verbatim}
631     % genmake2 -h
632     \end{verbatim}
633    
634     The most important command-line options are:
635     \begin{description}
636 jmc 1.47
637 molod 1.35 \item[\texttt{--optfile=/PATH/FILENAME}] specifies the optfile that
638     should be used for a particular build.
639 jmc 1.47
640 molod 1.35 If no "optfile" is specified (either through the command line or the
641     MITGCM\_OPTFILE environment variable), genmake2 will try to make a
642     reasonable guess from the list provided in {\em
643     tools/build\_options}. The method used for making this guess is
644     to first determine the combination of operating system and hardware
645     (eg. "linux\_ia32") and then find a working FORTRAN compiler within
646     the user's path. When these three items have been identified,
647     genmake2 will try to find an optfile that has a matching name.
648 jmc 1.47
649 jmc 1.42 \item[\texttt{--mods='DIR1 DIR2 DIR3 ...'}] specifies a list of
650     directories containing ``modifications''. These directories contain
651     files with names that may (or may not) exist in the main MITgcm
652     source tree but will be overridden by any identically-named sources
653     within the ``MODS'' directories.
654 jmc 1.47
655 jmc 1.42 The order of precedence for this "name-hiding" is as follows:
656     \begin{itemize}
657     \item ``MODS'' directories (in the order given)
658     \item Packages either explicitly specified or provided by default
659     (in the order given)
660     \item Packages included due to package dependencies (in the order
661     that that package dependencies are parsed)
662     \item The "standard dirs" (which may have been specified by the
663     ``-standarddirs'' option)
664     \end{itemize}
665 jmc 1.47
666 jmc 1.42 \item[\texttt{--pgroups=/PATH/FILENAME}] specifies the file
667 jmc 1.47 where package groups are defined. If not set, the package-groups
668 jmc 1.42 definition will be read from {\em pkg/pkg\_groups}.
669     It also contains the default list of packages (defined
670     as the group ``{\it default\_pkg\_list}'' which is used
671     when no specific package list ({\em packages.conf})
672     is found in current directory or in any "MODS" directory.
673    
674 molod 1.35 \item[\texttt{--pdepend=/PATH/FILENAME}] specifies the dependency file
675     used for packages.
676 jmc 1.47
677 molod 1.35 If not specified, the default dependency file {\em pkg/pkg\_depend}
678     is used. The syntax for this file is parsed on a line-by-line basis
679     where each line containes either a comment ("\#") or a simple
680     "PKGNAME1 (+|-)PKGNAME2" pairwise rule where the "+" or "-" symbol
681     specifies a "must be used with" or a "must not be used with"
682     relationship, respectively. If no rule is specified, then it is
683     assumed that the two packages are compatible and will function
684     either with or without each other.
685 jmc 1.47
686 molod 1.35 \item[\texttt{--adof=/path/to/file}] specifies the "adjoint" or
687     automatic differentiation options file to be used. The file is
688     analogous to the ``optfile'' defined above but it specifies
689     information for the AD build process.
690 jmc 1.47
691 molod 1.35 The default file is located in {\em
692     tools/adjoint\_options/adjoint\_default} and it defines the "TAF"
693     and "TAMC" compilers. An alternate version is also available at
694     {\em tools/adjoint\_options/adjoint\_staf} that selects the newer
695     "STAF" compiler. As with any compilers, it is helpful to have their
696     directories listed in your {\tt \$PATH} environment variable.
697 jmc 1.47
698 molod 1.35 \item[\texttt{--mpi}] This option enables certain MPI features (using
699     CPP \texttt{\#define}s) within the code and is necessary for MPI
700 jmc 1.44 builds (see Section \ref{sec:mpi-build}).
701 jmc 1.47
702 molod 1.35 \item[\texttt{--make=/path/to/gmake}] Due to the poor handling of
703     soft-links and other bugs common with the \texttt{make} versions
704     provided by commercial Unix vendors, GNU \texttt{make} (sometimes
705     called \texttt{gmake}) should be preferred. This option provides a
706     means for specifying the make executable to be used.
707 jmc 1.47
708 molod 1.35 \item[\texttt{--bash=/path/to/sh}] On some (usually older UNIX)
709     machines, the ``bash'' shell is unavailable. To run on these
710     systems, \texttt{genmake2} can be invoked using an ``sh'' (that is,
711     a Bourne, POSIX, or compatible) shell. The syntax in these
712     circumstances is:
713     \begin{center}
714     \texttt{\% /bin/sh genmake2 -bash=/bin/sh [...options...]}
715     \end{center}
716     where \texttt{/bin/sh} can be replaced with the full path and name
717     of the desired shell.
718    
719     \end{description}
720    
721     \subsection{Building with MPI}
722 jmc 1.44 \label{sec:mpi-build}
723 molod 1.35
724     Building MITgcm to use MPI libraries can be complicated due to the
725     variety of different MPI implementations available, their dependencies
726     or interactions with different compilers, and their often ad-hoc
727     locations within file systems. For these reasons, its generally a
728     good idea to start by finding and reading the documentation for your
729     machine(s) and, if necessary, seeking help from your local systems
730     administrator.
731    
732     The steps for building MITgcm with MPI support are:
733     \begin{enumerate}
734 jmc 1.47
735 molod 1.35 \item Determine the locations of your MPI-enabled compiler and/or MPI
736     libraries and put them into an options file as described in Section
737 jmc 1.44 \ref{sec:genmake}. One can start with one of the examples in:
738 molod 1.35 \begin{rawhtml} <A
739 jmc 1.40 href="http://mitgcm.org/viewvc/MITgcm/MITgcm/tools/build_options/">
740 molod 1.35 \end{rawhtml}
741     \begin{center}
742     \texttt{MITgcm/tools/build\_options/}
743     \end{center}
744     \begin{rawhtml} </A> \end{rawhtml}
745     such as \texttt{linux\_ia32\_g77+mpi\_cg01} or
746     \texttt{linux\_ia64\_efc+mpi} and then edit it to suit the machine at
747     hand. You may need help from your user guide or local systems
748     administrator to determine the exact location of the MPI libraries.
749     If libraries are not installed, MPI implementations and related
750     tools are available including:
751     \begin{itemize}
752     \item \begin{rawhtml} <A
753     href="http://www-unix.mcs.anl.gov/mpi/mpich/">
754     \end{rawhtml}
755     MPICH
756     \begin{rawhtml} </A> \end{rawhtml}
757    
758     \item \begin{rawhtml} <A
759     href="http://www.lam-mpi.org/">
760     \end{rawhtml}
761     LAM/MPI
762     \begin{rawhtml} </A> \end{rawhtml}
763    
764     \item \begin{rawhtml} <A
765     href="http://www.osc.edu/~pw/mpiexec/">
766     \end{rawhtml}
767     MPIexec
768     \begin{rawhtml} </A> \end{rawhtml}
769     \end{itemize}
770 jmc 1.47
771 molod 1.35 \item Build the code with the \texttt{genmake2} \texttt{-mpi} option
772 jmc 1.44 (see Section \ref{sec:genmake}) using commands such as:
773 molod 1.35 {\footnotesize \begin{verbatim}
774     % ../../../tools/genmake2 -mods=../code -mpi -of=YOUR_OPTFILE
775     % make depend
776     % make
777     \end{verbatim} }
778 jmc 1.47
779 molod 1.35 \item Run the code with the appropriate MPI ``run'' or ``exec''
780     program provided with your particular implementation of MPI.
781     Typical MPI packages such as MPICH will use something like:
782     \begin{verbatim}
783     % mpirun -np 4 -machinefile mf ./mitgcmuv
784     \end{verbatim}
785     Sightly more complicated scripts may be needed for many machines
786     since execution of the code may be controlled by both the MPI
787     library and a job scheduling and queueing system such as PBS,
788     LoadLeveller, Condor, or any of a number of similar tools. A few
789     example scripts (those used for our \begin{rawhtml} <A
790 jmc 1.41 href="http://mitgcm.org/public/testing.html"> \end{rawhtml}regular
791 molod 1.35 verification runs\begin{rawhtml} </A> \end{rawhtml}) are available
792     at:
793     \begin{rawhtml} <A
794 jmc 1.41 href="http://mitgcm.org/viewvc/MITgcm/MITgcm/tools/example_scripts/">
795     \end{rawhtml}
796     {\footnotesize \tt
797     http://mitgcm.org/viewvc/MITgcm/MITgcm/tools/example\_scripts/ }
798     \begin{rawhtml} </A> \end{rawhtml}
799     or at:
800     \begin{rawhtml} <A
801 jmc 1.40 href="http://mitgcm.org/viewvc/MITgcm/MITgcm_contrib/test_scripts/">
802 molod 1.35 \end{rawhtml}
803     {\footnotesize \tt
804 jmc 1.40 http://mitgcm.org/viewvc/MITgcm/MITgcm\_contrib/test\_scripts/ }
805 molod 1.35 \begin{rawhtml} </A> \end{rawhtml}
806    
807     \end{enumerate}
808    
809     An example of the above process on the MITgcm cluster (``cg01'') using
810     the GNU g77 compiler and the mpich MPI library is:
811    
812     {\footnotesize \begin{verbatim}
813     % cd MITgcm/verification/exp5
814     % mkdir build
815     % cd build
816     % ../../../tools/genmake2 -mpi -mods=../code \
817     -of=../../../tools/build_options/linux_ia32_g77+mpi_cg01
818     % make depend
819     % make
820     % cd ../input
821     % /usr/local/pkg/mpi/mpi-1.2.4..8a-gm-1.5/g77/bin/mpirun.ch_gm \
822     -machinefile mf --gm-kill 5 -v -np 2 ../build/mitgcmuv
823     \end{verbatim} }
824 adcroft 1.4
825 cnh 1.26 \section[Running MITgcm]{Running the model in prognostic mode}
826 jmc 1.44 \label{sec:runModel}
827 edhill 1.30 \begin{rawhtml}
828     <!-- CMIREDIR:runModel: -->
829     \end{rawhtml}
830 adcroft 1.4
831 jmc 1.44 If compilation finished succesfully (section \ref{sec:buildingCode})
832 edhill 1.23 then an executable called \texttt{mitgcmuv} will now exist in the
833     local directory.
834 adcroft 1.1
835 edhill 1.29 To run the model as a single process (\textit{ie.} not in parallel)
836     simply type:
837 adcroft 1.1 \begin{verbatim}
838 adcroft 1.4 % ./mitgcmuv
839 adcroft 1.1 \end{verbatim}
840 adcroft 1.4 The ``./'' is a safe-guard to make sure you use the local executable
841     in case you have others that exist in your path (surely odd if you
842     do!). The above command will spew out many lines of text output to
843     your screen. This output contains details such as parameter values as
844     well as diagnostics such as mean Kinetic energy, largest CFL number,
845     etc. It is worth keeping this text output with the binary output so we
846 edhill 1.31 normally re-direct the \texttt{stdout} stream as follows:
847 adcroft 1.1 \begin{verbatim}
848 adcroft 1.4 % ./mitgcmuv > output.txt
849 adcroft 1.1 \end{verbatim}
850 edhill 1.29 In the event that the model encounters an error and stops, it is very
851     helpful to include the last few line of this \texttt{output.txt} file
852     along with the (\texttt{stderr}) error message within any bug reports.
853 adcroft 1.1
854 edhill 1.31 For the example experiments in \texttt{verification}, an example of the
855     output is kept in \texttt{results/output.txt} for comparison. You can
856     compare your \texttt{output.txt} with the corresponding one for that
857 edhill 1.29 experiment to check that the set-up works.
858 adcroft 1.1
859 adcroft 1.4 \subsection{Output files}
860 adcroft 1.1
861 edhill 1.31 The model produces various output files and, when using \texttt{mnc},
862     sometimes even directories. Depending upon the I/O package(s)
863     selected at compile time (either \texttt{mdsio} or \texttt{mnc} or
864     both as determined by \texttt{code/packages.conf}) and the run-time
865     flags set (in \texttt{input/data.pkg}), the following output may
866     appear.
867 edhill 1.29
868     \subsubsection{MDSIO output files}
869    
870     The ``traditional'' output files are generated by the \texttt{mdsio}
871     package. At a minimum, the instantaneous ``state'' of the model is
872     written out, which is made of the following files:
873 adcroft 1.1
874     \begin{itemize}
875 edhill 1.34 \item \texttt{U.00000nIter} - zonal component of velocity field (m/s
876     and positive eastward).
877 adcroft 1.1
878 edhill 1.34 \item \texttt{V.00000nIter} - meridional component of velocity field
879     (m/s and positive northward).
880 adcroft 1.1
881 edhill 1.34 \item \texttt{W.00000nIter} - vertical component of velocity field
882     (ocean: m/s and positive upward, atmosphere: Pa/s and positive
883     towards increasing pressure i.e. downward).
884 adcroft 1.1
885 edhill 1.34 \item \texttt{T.00000nIter} - potential temperature (ocean:
886     $^{\circ}\mathrm{C}$, atmosphere: $^{\circ}\mathrm{K}$).
887 adcroft 1.1
888 edhill 1.34 \item \texttt{S.00000nIter} - ocean: salinity (psu), atmosphere: water
889     vapor (g/kg).
890 adcroft 1.1
891 edhill 1.34 \item \texttt{Eta.00000nIter} - ocean: surface elevation (m),
892     atmosphere: surface pressure anomaly (Pa).
893 adcroft 1.1 \end{itemize}
894    
895 edhill 1.31 The chain \texttt{00000nIter} consists of ten figures that specify the
896 edhill 1.34 iteration number at which the output is written out. For example,
897     \texttt{U.0000000300} is the zonal velocity at iteration 300.
898 adcroft 1.1
899     In addition, a ``pickup'' or ``checkpoint'' file called:
900    
901     \begin{itemize}
902 edhill 1.31 \item \texttt{pickup.00000nIter}
903 adcroft 1.1 \end{itemize}
904    
905     is written out. This file represents the state of the model in a condensed
906     form and is used for restarting the integration. If the C-D scheme is used,
907     there is an additional ``pickup'' file:
908    
909     \begin{itemize}
910 edhill 1.31 \item \texttt{pickup\_cd.00000nIter}
911 adcroft 1.1 \end{itemize}
912    
913     containing the D-grid velocity data and that has to be written out as well
914     in order to restart the integration. Rolling checkpoint files are the same
915 jmc 1.47 as the pickup files but are named differently. Their name contain the chain
916 edhill 1.31 \texttt{ckptA} or \texttt{ckptB} instead of \texttt{00000nIter}. They can be
917 adcroft 1.1 used to restart the model but are overwritten every other time they are
918     output to save disk space during long integrations.
919    
920 edhill 1.29 \subsubsection{MNC output files}
921    
922     Unlike the \texttt{mdsio} output, the \texttt{mnc}--generated output
923     is usually (though not necessarily) placed within a subdirectory with
924 jmc 1.47 a name such as \texttt{mnc\_test\_\${DATE}\_\${SEQ}}.
925 edhill 1.29
926 adcroft 1.4 \subsection{Looking at the output}
927 adcroft 1.1
928 edhill 1.29 The ``traditional'' or mdsio model data are written according to a
929     ``meta/data'' file format. Each variable is associated with two files
930 edhill 1.31 with suffix names \texttt{.data} and \texttt{.meta}. The
931     \texttt{.data} file contains the data written in binary form
932     (big\_endian by default). The \texttt{.meta} file is a ``header'' file
933 edhill 1.29 that contains information about the size and the structure of the
934 edhill 1.31 \texttt{.data} file. This way of organizing the output is particularly
935 edhill 1.29 useful when running multi-processors calculations. The base version of
936     the model includes a few matlab utilities to read output files written
937     in this format. The matlab scripts are located in the directory
938 edhill 1.31 \texttt{utils/matlab} under the root tree. The script \texttt{rdmds.m}
939 edhill 1.29 reads the data. Look at the comments inside the script to see how to
940     use it.
941 adcroft 1.1
942 adcroft 1.4 Some examples of reading and visualizing some output in {\em Matlab}:
943     \begin{verbatim}
944     % matlab
945     >> H=rdmds('Depth');
946     >> contourf(H');colorbar;
947     >> title('Depth of fluid as used by model');
948    
949     >> eta=rdmds('Eta',10);
950     >> imagesc(eta');axis ij;colorbar;
951     >> title('Surface height at iter=10');
952    
953     >> eta=rdmds('Eta',[0:10:100]);
954     >> for n=1:11; imagesc(eta(:,:,n)');axis ij;colorbar;pause(.5);end
955     \end{verbatim}
956 adcroft 1.1
957 edhill 1.31 Similar scripts for netCDF output (\texttt{rdmnc.m}) are available and
958     they are described in Section \ref{sec:pkg:mnc}.
959    
960 molod 1.38 The MNC output files are all in the ``self-describing'' netCDF
961     format and can thus be browsed and/or plotted using tools such as:
962     \begin{itemize}
963     \item \texttt{ncdump} is a utility which is typically included
964     with every netCDF install:
965     \begin{rawhtml} <A href="http://www.unidata.ucar.edu/packages/netcdf/"> \end{rawhtml}
966     \begin{verbatim}
967     http://www.unidata.ucar.edu/packages/netcdf/
968     \end{verbatim}
969     \begin{rawhtml} </A> \end{rawhtml} and it converts the netCDF
970     binaries into formatted ASCII text files.
971    
972     \item \texttt{ncview} utility is a very convenient and quick way
973     to plot netCDF data and it runs on most OSes:
974     \begin{rawhtml} <A href="http://meteora.ucsd.edu/~pierce/ncview_home_page.html"> \end{rawhtml}
975     \begin{verbatim}
976     http://meteora.ucsd.edu/~pierce/ncview_home_page.html
977     \end{verbatim}
978     \begin{rawhtml} </A> \end{rawhtml}
979 jmc 1.47
980 molod 1.38 \item MatLAB(c) and other common post-processing environments provide
981     various netCDF interfaces including:
982     \begin{rawhtml} <A href="http://mexcdf.sourceforge.net/"> \end{rawhtml}
983     \begin{verbatim}
984     http://mexcdf.sourceforge.net/
985     \end{verbatim}
986     \begin{rawhtml} </A> \end{rawhtml}
987     \begin{rawhtml} <A href="http://woodshole.er.usgs.gov/staffpages/cdenham/public_html/MexCDF/nc4ml5.html"> \end{rawhtml}
988     \begin{verbatim}
989     http://woodshole.er.usgs.gov/staffpages/cdenham/public_html/MexCDF/nc4ml5.html
990     \end{verbatim}
991     \begin{rawhtml} </A> \end{rawhtml}
992     \end{itemize}
993    

  ViewVC Help
Powered by ViewVC 1.1.22