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

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

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

revision 1.5 by adcroft, Mon Oct 15 19:36:09 2001 UTC revision 1.12 by adcroft, Wed Dec 5 15:49:39 2001 UTC
# Line 36  A mail to the email list will reach all Line 36  A mail to the email list will reach all
36  on the newsgroup. A users email list will be established at some time  on the newsgroup. A users email list will be established at some time
37  in the future.  in the future.
38    
   
39  \section{Obtaining the code}  \section{Obtaining the code}
40  \label{sect:obtainingCode}  \label{sect:obtainingCode}
41    
42    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    \begin{rawhtml} <A href=mailto:support@mitgcm.org> \end{rawhtml}
45    support@mitgcm.org
46    \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    \item Using CVS software. CVS is a freely available source code management
52    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  If CVS is available on your system, we strongly encourage you to use it. CVS  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  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  track of your changes. If CVS is not available on your machine, you can also
# Line 49  Before you can use CVS, the following en Line 76  Before you can use CVS, the following en
76  your .cshrc or .tcshrc:  your .cshrc or .tcshrc:
77  \begin{verbatim}  \begin{verbatim}
78  % setenv CVSROOT :pserver:cvsanon@mitgcm.org:/u/u0/gcmpack  % setenv CVSROOT :pserver:cvsanon@mitgcm.org:/u/u0/gcmpack
79    \end{verbatim}
80    
81    To start using CVS, register with the MITgcm CVS server using command:
82    \begin{verbatim}
83  % cvs login ( CVS password: cvsanon )  % cvs login ( CVS password: cvsanon )
84  \end{verbatim}  \end{verbatim}
85    You only need to do ``cvs login'' once.
86    
87  You only need to do ``cvs login'' once. To obtain the source for the release:  To obtain the sources for release1 type:
88  \begin{verbatim}  \begin{verbatim}
89  % cvs co -d directory -P -r release1 MITgcmUV  % cvs co -d directory -P -r release1_beta1 MITgcm
90  \end{verbatim}  \end{verbatim}
91    
92  This creates a directory called \textit{directory}. If \textit{directory}  This creates a directory called \textit{directory}. If \textit{directory}
93  exists this command updates your code based on the repository. Each  exists this command updates your code based on the repository. Each
94  directory in the source tree contains a directory \textit{CVS}. This  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  information is required by CVS to keep track of your file versions with
96  respect to the repository. Don't edit the files in \textit{CVS}! To obtain a  respect to the repository. Don't edit the files in \textit{CVS}!
97  different \textit{version} that is not the latest source:  You can also use CVS to download code updates.  More extensive
98  \begin{verbatim}  information on using CVS for maintaining MITgcm code can be found
99  % cvs co -d directory -P -r version MITgcm  \begin{rawhtml} <A href=http://mitgcm.org/usingcvstoget.html target="idontexist"> \end{rawhtml}
100  \end{verbatim}  here
101  or the latest development version:  \begin{rawhtml} </A> \end{rawhtml}
102  \begin{verbatim}  .
103  % cvs co -d directory -P MITgcm  
 \end{verbatim}  
104    
105  \paragraph*{Conventional download method}  \paragraph*{Conventional download method}
106  \label{sect:conventionalDownload}  \label{sect:conventionalDownload}
107    
108  If you do not have CVS on your system, you can download the model as a  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:  tar file from the reference web site at:
110    \begin{rawhtml} <A href=http://mitgcm.org/download target="idontexist"> \end{rawhtml}
111  \begin{verbatim}  \begin{verbatim}
112  http://mitgcm.org/download/  http://mitgcm.org/download/
113  \end{verbatim}  \end{verbatim}
114    \begin{rawhtml} </A> \end{rawhtml}
115  The tar file still contains CVS information which we urge you not to  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  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.  us if you should need to send us your copy of the code.
118    
119    \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  \section{Model and directory structure}  \section{Model and directory structure}
182    
183  The ``numerical'' model is contained within a execution environment support  The ``numerical'' model is contained within a execution environment
184  wrapper. This wrapper is designed to provide a general framework for  support wrapper. This wrapper is designed to provide a general
185  grid-point models. MITgcmUV is a specific numerical model that uses the  framework for grid-point models. MITgcmUV is a specific numerical
186  framework. Under this structure the model is split into execution  model that uses the framework. Under this structure the model is split
187  environment support code and conventional numerical model code. The  into execution environment support code and conventional numerical
188  execution environment support code is held under the \textit{eesupp}  model code. The execution environment support code is held under the
189  directory. The grid point model code is held under the \textit{model}  \textit{eesupp} directory. The grid point model code is held under the
190  directory. Code execution actually starts in the \textit{eesupp} routines  \textit{model} directory. Code execution actually starts in the
191  and not in the \textit{model} routines. For this reason the top-level  \textit{eesupp} routines and not in the \textit{model} routines. For
192    this reason the top-level
193  \textit{MAIN.F} is in the \textit{eesupp/src} directory. In general,  \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  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%  for the numerical part of the code is in \textit{model/src/THE\_MODEL\_MAIN.F%
# Line 106  directory in which to compile the code. Line 202  directory in which to compile the code.
202    
203  \item \textit{diags}: contains the code relative to time-averaged  \item \textit{diags}: contains the code relative to time-averaged
204  diagnostics. It is subdivided into two subdirectories \textit{inc} and  diagnostics. It is subdivided into two subdirectories \textit{inc} and
205  \textit{src} that contain include files (*.\textit{h} files) and fortran  \textit{src} that contain include files (*.\textit{h} files) and Fortran
206  subroutines (*.\textit{F} files), respectively.  subroutines (*.\textit{F} files), respectively.
207    
208  \item \textit{doc}: contains brief documentation notes.  \item \textit{doc}: contains brief documentation notes.
# Line 147  section \ref{sect:modelExamples}. Line 243  section \ref{sect:modelExamples}.
243  \section{Example experiments}  \section{Example experiments}
244  \label{sect:modelExamples}  \label{sect:modelExamples}
245    
246  Now that you have successfully downloaded the model code we recommend that  The MITgcm distribution comes with a set of twenty-four pre-configured
247  you first try to run the examples provided with the base version. You will  numerical experiments. Some of these examples experiments are tests of
248  probably want to run the example that is the closest to the configuration  individual parts of the model code, but many are fully fledged numerical
249  you will use eventually. The examples are located in subdirectories under  simulations. A few of the examples are used for tutorial documentation
250  the directory \textit{verification} and are briefly described below (a full  in sections \ref{sect:eg-baro} - \ref{sect:eg-global}. The other examples
251  description is given in section 2):  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    
257  \subsection{List of model examples}  \subsection{Full list of model examples}
258    
259  \begin{itemize}  \begin{enumerate}
260  \item \textit{exp0} - single layer, ocean double gyre (barotropic with  \item \textit{exp0} - single layer, ocean double gyre (barotropic with
261  free-surface).  free-surface). This experiment is described in detail in section
262    \ref{sect:eg-baro}.
263    
264  \item \textit{exp1} - 4 layers, ocean double gyre.  \item \textit{exp1} - Four layer, ocean double gyre. This experiment is described in detail in section
265    \ref{sect:eg-baroc}.
266    
267  \item \textit{exp2} - 4x4 degree global ocean simulation with steady  \item \textit{exp2} - 4x4 degree global ocean simulation with steady
268  climatological forcing.  climatological forcing. This experiment is described in detail in section
269    \ref{sect:eg-global}.
270    
271  \item \textit{exp4} - flow over a Gaussian bump in open-water or channel  \item \textit{exp4} - Flow over a Gaussian bump in open-water or channel
272  with open boundaries.  with open boundaries.
273    
274  \item \textit{exp5} - inhomogenously forced ocean convection in a doubly  \item \textit{exp5} - Inhomogenously forced ocean convection in a doubly
275  periodic box.  periodic box.
276    
277  \item \textit{front\_relax} - relaxation of an ocean thermal front (test for  \item \textit{front\_relax} - Relaxation of an ocean thermal front (test for
278  Gent/McWilliams scheme). 2D (Y-Z).  Gent/McWilliams scheme). 2D (Y-Z).
279    
280  \item \textit{internal wave} - ocean internal wave forced by open boundary  \item \textit{internal wave} - Ocean internal wave forced by open boundary
281  conditions.  conditions.
282    
283  \item \textit{natl\_box} - eastern subtropical North Atlantic with KPP  \item \textit{natl\_box} - Eastern subtropical North Atlantic with KPP
284  scheme; 1 month integration  scheme; 1 month integration
285    
286  \item \textit{hs94.1x64x5} - zonal averaged atmosphere using Held and Suarez  \item \textit{hs94.1x64x5} - Zonal averaged atmosphere using Held and Suarez
287  '94 forcing.  '94 forcing.
288    
289  \item \textit{hs94.128x64x5} - 3D atmosphere dynamics using Held and Suarez  \item \textit{hs94.128x64x5} - 3D atmosphere dynamics using Held and Suarez
# Line 189  scheme; 1 month integration Line 292  scheme; 1 month integration
292  \item \textit{hs94.cs-32x32x5} - 3D atmosphere dynamics using Held and  \item \textit{hs94.cs-32x32x5} - 3D atmosphere dynamics using Held and
293  Suarez '94 forcing on the cubed sphere.  Suarez '94 forcing on the cubed sphere.
294    
295  \item \textit{aim.5l\_zon-ave} - Intermediate Atmospheric physics, 5 layers  \item \textit{aim.5l\_zon-ave} - Intermediate Atmospheric physics. Global
296  Molteni physics package. Global Zonal Mean configuration, 1x64x5 resolution.  Zonal Mean configuration, 1x64x5 resolution.
297    
298  \item \textit{aim.5l\_XZ\_Equatorial\_Slice} - Intermediate Atmospheric  \item \textit{aim.5l\_XZ\_Equatorial\_Slice} - Intermediate Atmospheric
299  physics, 5 layers Molteni physics package. Equatorial Slice configuration.  physics, equatorial Slice configuration.
300  2D (X-Z).  2D (X-Z).
301    
302  \item \textit{aim.5l\_Equatorial\_Channel} - Intermediate Atmospheric  \item \textit{aim.5l\_Equatorial\_Channel} - Intermediate Atmospheric
303  physics, 5 layers Molteni physics package. 3D Equatorial Channel  physics. 3D Equatorial Channel configuration.
 configuration (not completely tested).  
304    
305  \item \textit{aim.5l\_LatLon} - Intermediate Atmospheric physics, 5 layers  \item \textit{aim.5l\_LatLon} - Intermediate Atmospheric physics.
306  Molteni physics package. Global configuration, 128x64x5 resolution.  Global configuration, on latitude longitude grid with 128x64x5 grid points
307    ($2.8^\circ{\rm degree}$ resolution).
308    
309  \item \textit{adjustment.128x64x1}  \item \textit{adjustment.128x64x1} Barotropic adjustment
310    problem on latitude longitude grid with 128x64 grid points ($2.8^\circ{\rm degree}$ resolution).
311    
312  \item \textit{adjustment.cs-32x32x1}  \item \textit{adjustment.cs-32x32x1}
313  \end{itemize}  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    test on Cartesian grid.
322    
323    \item \textit{advect\_yz} Two-dimensional (vertical plane) passive advection test on Cartesian grid.
324    
325    \item \textit{carbon} Simple passive tracer experiment. Includes derivative
326    calculation. Described in detail in section \ref{sect:eg-carbon-ad}.
327    
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    \item \textit{solid-body.cs-32x32x1} Solid body rotation test for cube sphere
334    grid.
335    
336    \end{enumerate}
337    
338  \subsection{Directory structure of model examples}  \subsection{Directory structure of model examples}
339    
# Line 233  In addition, other include files and sub Line 360  In addition, other include files and sub
360  code} depending on the particular experiment. See section 2 for more details.  code} depending on the particular experiment. See section 2 for more details.
361    
362  \item \textit{input}: contains the input data files required to run the  \item \textit{input}: contains the input data files required to run the
363  example. At a mimimum, the \textit{input} directory contains the following  example. At a minimum, the \textit{input} directory contains the following
364  files:  files:
365    
366  \begin{itemize}  \begin{itemize}
# Line 266  the code. Line 393  the code.
393  To compile the code, we use the {\em make} program. This uses a file  To compile the code, we use the {\em make} program. This uses a file
394  ({\em Makefile}) that allows us to pre-process source files, specify  ({\em Makefile}) that allows us to pre-process source files, specify
395  compiler and optimization options and also figures out any file  compiler and optimization options and also figures out any file
396  dependancies. We supply a script ({\em genmake}), described in section  dependencies. We supply a script ({\em genmake}), described in section
397  \ref{sect:genmake}, that automatically creates the {\em Makefile} for  \ref{sect:genmake}, that automatically creates the {\em Makefile} for
398  you. You then need to build the dependancies and compile the code.  you. You then need to build the dependencies and compile the code.
399    
400  As an example, let's assume that you want to build and run experiment  As an example, let's assume that you want to build and run experiment
401  \textit{verification/exp2}. The are multiple ways and places to actually  \textit{verification/exp2}. The are multiple ways and places to actually
# Line 290  to use the following options when invoki Line 417  to use the following options when invoki
417  % ../../../tools/genmake  -mods=../code  % ../../../tools/genmake  -mods=../code
418  \end{verbatim}  \end{verbatim}
419    
420  Next, create the dependancies:  Next, create the dependencies:
421  \begin{verbatim}  \begin{verbatim}
422  % make depend  % make depend
423  \end{verbatim}  \end{verbatim}
# Line 342  files must be in the same place. If you Line 469  files must be in the same place. If you
469  % cp ../code/mitgcmuv ./  % cp ../code/mitgcmuv ./
470  % ./mitgcmuv > output.txt  % ./mitgcmuv > output.txt
471  \end{verbatim}  \end{verbatim}
472  or if you will be making muliple runs with the same executable:  or if you will be making multiple runs with the same executable:
473  \begin{verbatim}  \begin{verbatim}
474  % cd ../  % cd ../
475  % cp -r input run1  % cp -r input run1
# Line 354  or if you will be making muliple runs wi Line 481  or if you will be making muliple runs wi
481  \subsubsection{Building from a new directory}  \subsubsection{Building from a new directory}
482    
483  Since the {\em input} directory contains input files it is often more  Since the {\em input} directory contains input files it is often more
484  useful to keep {\em input} prestine and build in a new directory  useful to keep {\em input} pristine and build in a new directory
485  within {\em verification/exp2/}:  within {\em verification/exp2/}:
486  \begin{verbatim}  \begin{verbatim}
487  % cd verification/exp2  % cd verification/exp2

Legend:
Removed from v.1.5  
changed lines
  Added in v.1.12

  ViewVC Help
Powered by ViewVC 1.1.22