| 1 | 
 % $Header$ | 
 % $Header$ | 
| 2 | 
 % $Name$ | 
 % $Name$ | 
| 3 | 
  | 
  | 
| 4 | 
  | 
 %\section{Getting started} | 
| 5 | 
  | 
  | 
| 6 | 
 \begin{center} | 
 In this section, we describe how to use the model. In the first | 
| 7 | 
 {\Large \textbf{Using the model}} | 
 section, we provide enough information to help you get started with | 
| 8 | 
  | 
 the model. We believe the best way to familiarize yourself with the | 
| 9 | 
  | 
 model is to run the case study examples provided with the base | 
| 10 | 
  | 
 version. Information on how to obtain, compile, and run the code is | 
| 11 | 
  | 
 found there as well as a brief description of the model structure | 
| 12 | 
  | 
 directory and the case study examples.  The latter and the code | 
| 13 | 
  | 
 structure are described more fully in chapters | 
| 14 | 
  | 
 \ref{chap:discretization} and \ref{chap:sarch}, respectively. Here, in | 
| 15 | 
  | 
 this section, we provide information on how to customize the code when | 
| 16 | 
  | 
 you are ready to try implementing the configuration you have in mind. | 
| 17 | 
  | 
  | 
| 18 | 
 \vspace*{4mm} | 
 \section{Where to find information} | 
| 19 | 
  | 
 \label{sect:whereToFindInfo} | 
| 20 | 
  | 
  | 
| 21 | 
 \vspace*{3mm} {\large July 2001} | 
 A web site is maintained for release 1 (Sealion) of MITgcm: | 
 | 
 \end{center} | 
  | 
 | 
  | 
  | 
 | 
 In this part, we describe how to use the model. In the first section, we | 
  | 
 | 
 provide enough information to help you get started with the model. We | 
  | 
 | 
 believe the best way to familiarize yourself with the model is to run the | 
  | 
 | 
 case study examples provided with the base version. Information on how to | 
  | 
 | 
 obtain, compile, and run the code is found there as well as a brief | 
  | 
 | 
 description of the model structure directory and the case study examples. | 
  | 
 | 
 The latter and the code structure are described more fully in sections 2 and | 
  | 
 | 
 3, respectively. In section 4, we provide information on how to customize | 
  | 
 | 
 the code when you are ready to try implementing the configuration you have | 
  | 
 | 
 in mind. | 
  | 
 | 
  | 
  | 
 | 
 \section{Getting started} | 
  | 
 | 
  | 
  | 
 | 
 \subsection{Obtaining the code} | 
  | 
 | 
  | 
  | 
 | 
 The reference web site for the model is: | 
  | 
| 22 | 
 \begin{verbatim} | 
 \begin{verbatim} | 
| 23 | 
 http://mitgcm.org | 
 http://mitgcm.org/sealion | 
| 24 | 
 \end{verbatim} | 
 \end{verbatim} | 
| 25 | 
  | 
 Here you will find an on-line version of this document, a | 
| 26 | 
  | 
 ``browsable'' copy of the code and a searchable database of the model | 
| 27 | 
  | 
 and site, as well as links for downloading the model and | 
| 28 | 
  | 
 documentation, to data-sources and other related sites. | 
| 29 | 
  | 
  | 
| 30 | 
 On this site, you can download the model as well as find useful information, | 
 There is also a support news group for the model that you can email at | 
| 31 | 
 some of which might overlap with what is written here. There is also a | 
 \texttt{support@mitgcm.org} or browse at: | 
 | 
 support news group for the model located at (send your message to \texttt{% | 
  | 
 | 
 support@mitgcm.org}): | 
  | 
| 32 | 
 \begin{verbatim} | 
 \begin{verbatim} | 
| 33 | 
 news://mitgcm.org/mitgcm.support | 
 news://mitgcm.org/mitgcm.support | 
| 34 | 
 \end{verbatim} | 
 \end{verbatim} | 
| 35 | 
  | 
 A mail to the email list will reach all the developers and be archived | 
| 36 | 
  | 
 on the newsgroup. A users email list will be established at some time | 
| 37 | 
  | 
 in the future. | 
| 38 | 
  | 
  | 
| 39 | 
  | 
 \section{Obtaining the code} | 
| 40 | 
  | 
 \label{sect:obtainingCode} | 
| 41 | 
  | 
  | 
| 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 | 
| 73 | 
 download a tar file. | 
 download a tar file. | 
| 74 | 
  | 
  | 
 | 
 \subsubsection{using CVS} | 
  | 
 | 
  | 
  | 
| 75 | 
 Before you can use CVS, the following environment variable has to be set in | 
 Before you can use CVS, the following environment variable has to be set in | 
| 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 latest source: | 
 To obtain the sources for release1 type: | 
| 88 | 
 \begin{verbatim} | 
 \begin{verbatim} | 
| 89 | 
 % cvs co -d directory models/MITgcmUV | 
 % cvs co -d directory -P -r release1 MITgcmUV | 
| 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 | 
 specific \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 -r version models/MITgcmUV | 
 \begin{rawhtml} <A href=http://mitgcm.org/usingcvstoget.html target="idontexist"> \end{rawhtml} | 
| 100 | 
 \end{verbatim} | 
 here | 
| 101 | 
  | 
 \begin{rawhtml} </A> \end{rawhtml}  | 
| 102 | 
  | 
 . | 
| 103 | 
  | 
  | 
 | 
 \subsubsection{other methods} | 
  | 
| 104 | 
  | 
  | 
| 105 | 
 You can download the model as a tar file from the reference web site at: | 
 \paragraph*{Conventional download method} | 
| 106 | 
  | 
 \label{sect:conventionalDownload} | 
| 107 | 
  | 
  | 
| 108 | 
  | 
 If you do not have CVS on your system, you can download the model as a | 
| 109 | 
  | 
 tar file from the reference web site at: | 
| 110 | 
  | 
 \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 | 
| 116 | 
  | 
 delete; even if you do not use CVS yourself the information can help | 
| 117 | 
  | 
 us if you should need to send us your copy of the code. | 
| 118 | 
  | 
  | 
| 119 | 
 \subsection{Model and directory structure} | 
 \section{Model and directory structure} | 
| 120 | 
  | 
  | 
| 121 | 
 The ``numerical'' model is contained within a execution environment support | 
 The ``numerical'' model is contained within a execution environment support | 
| 122 | 
 wrapper. This wrapper is designed to provide a general framework for | 
 wrapper. This wrapper is designed to provide a general framework for | 
| 139 | 
  | 
  | 
| 140 | 
 \item \textit{diags}: contains the code relative to time-averaged | 
 \item \textit{diags}: contains the code relative to time-averaged | 
| 141 | 
 diagnostics. It is subdivided into two subdirectories \textit{inc} and  | 
 diagnostics. It is subdivided into two subdirectories \textit{inc} and  | 
| 142 | 
 \textit{src} that contain include files (*.\textit{h} files) and fortran | 
 \textit{src} that contain include files (*.\textit{h} files) and Fortran | 
| 143 | 
 subroutines (*.\textit{F} files), respectively. | 
 subroutines (*.\textit{F} files), respectively. | 
| 144 | 
  | 
  | 
| 145 | 
 \item \textit{doc}: contains brief documentation notes. | 
 \item \textit{doc}: contains brief documentation notes. | 
| 166 | 
 generates the adjoint code. The latter is described in details in part V. | 
 generates the adjoint code. The latter is described in details in part V. | 
| 167 | 
  | 
  | 
| 168 | 
 \item \textit{utils}: this directory contains various utilities. The | 
 \item \textit{utils}: this directory contains various utilities. The | 
| 169 | 
 subdirectory \textit{knudsen2} contains code and a makefile that compute | 
 subdirectory \textit{knudsen2} contains code and a makefile that | 
| 170 | 
 coefficients of the polynomial approximation to the knudsen formula for an | 
 compute coefficients of the polynomial approximation to the knudsen | 
| 171 | 
 ocean nonlinear equation of state. The \textit{matlab} subdirectory contains | 
 formula for an ocean nonlinear equation of state. The \textit{matlab} | 
| 172 | 
 matlab scripts for reading model output directly into matlab. \textit{scripts% | 
 subdirectory contains matlab scripts for reading model output directly | 
| 173 | 
 } contains C-shell post-processing scripts for joining processor-based and | 
 into matlab. \textit{scripts} contains C-shell post-processing | 
| 174 | 
 tiled-based model output. | 
 scripts for joining processor-based and tiled-based model output. | 
| 175 | 
  | 
  | 
| 176 | 
 \item \textit{verification}: this directory contains the model examples. See | 
 \item \textit{verification}: this directory contains the model examples. See | 
| 177 | 
 below. | 
 section \ref{sect:modelExamples}. | 
| 178 | 
 \end{itemize} | 
 \end{itemize} | 
| 179 | 
  | 
  | 
| 180 | 
 \subsection{Model examples} | 
 \section{Example experiments} | 
| 181 | 
  | 
 \label{sect:modelExamples} | 
| 182 | 
  | 
  | 
| 183 | 
 Now that you have successfully downloaded the model code we recommend that | 
 The MITgcm distribution comes with a set of twenty-four pre-configured | 
| 184 | 
 you first try to run the examples provided with the base version. You will | 
 numerical experiments. Some of these examples experiments are tests of  | 
| 185 | 
 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 | 
| 186 | 
 you will use eventually. The examples are located in subdirectories under | 
 simulations. A few of the examples are used for tutorial documentation | 
| 187 | 
 the directory \textit{verification} and are briefly described below (a full | 
 in sections \ref{sect:eg-baro} - \ref{sect:eg-global}. The other examples | 
| 188 | 
 description is given in section 2): | 
 follow the same general structure as the tutorial examples. However, | 
| 189 | 
  | 
 they only include brief instructions in a text file called {\it README}. | 
| 190 | 
  | 
 The examples are located in subdirectories under | 
| 191 | 
  | 
 the directory \textit{verification}. Each | 
| 192 | 
  | 
 example is briefly described below. | 
| 193 | 
  | 
  | 
| 194 | 
 \subsubsection{List of model examples} | 
 \subsection{Full list of model examples} | 
| 195 | 
  | 
  | 
| 196 | 
 \begin{itemize} | 
 \begin{enumerate} | 
| 197 | 
 \item \textit{exp0} - single layer, ocean double gyre (barotropic with | 
 \item \textit{exp0} - single layer, ocean double gyre (barotropic with | 
| 198 | 
 free-surface). | 
 free-surface). This experiment is described in detail in section | 
| 199 | 
  | 
 \ref{sect:eg-baro}. | 
| 200 | 
  | 
  | 
| 201 | 
 \item \textit{exp1} - 4 layers, ocean double gyre. | 
 \item \textit{exp1} - Four layer, ocean double gyre. This experiment is described in detail in section | 
| 202 | 
  | 
 \ref{sect:eg-baroc}. | 
| 203 | 
  | 
  | 
| 204 | 
 \item \textit{exp2} - 4x4 degree global ocean simulation with steady | 
 \item \textit{exp2} - 4x4 degree global ocean simulation with steady | 
| 205 | 
 climatological forcing. | 
 climatological forcing. This experiment is described in detail in section | 
| 206 | 
  | 
 \ref{sect:eg-global}. | 
| 207 | 
  | 
  | 
| 208 | 
 \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 | 
| 209 | 
 with open boundaries. | 
 with open boundaries. | 
| 210 | 
  | 
  | 
| 211 | 
 \item \textit{exp5} - inhomogenously forced ocean convection in a doubly | 
 \item \textit{exp5} - Inhomogenously forced ocean convection in a doubly | 
| 212 | 
 periodic box. | 
 periodic box. | 
| 213 | 
  | 
  | 
| 214 | 
 \item \textit{front\_relax} - relaxation of an ocean thermal front (test for | 
 \item \textit{front\_relax} - Relaxation of an ocean thermal front (test for | 
| 215 | 
 Gent/McWilliams scheme). 2D (Y-Z). | 
 Gent/McWilliams scheme). 2D (Y-Z). | 
| 216 | 
  | 
  | 
| 217 | 
 \item \textit{internal wave} - ocean internal wave forced by open boundary | 
 \item \textit{internal wave} - Ocean internal wave forced by open boundary | 
| 218 | 
 conditions. | 
 conditions. | 
| 219 | 
  | 
  | 
| 220 | 
 \item \textit{natl\_box} - eastern subtropical North Atlantic with KPP | 
 \item \textit{natl\_box} - Eastern subtropical North Atlantic with KPP | 
| 221 | 
 scheme; 1 month integration | 
 scheme; 1 month integration | 
| 222 | 
  | 
  | 
| 223 | 
 \item \textit{hs94.1x64x5} - zonal averaged atmosphere using Held and Suarez | 
 \item \textit{hs94.1x64x5} - Zonal averaged atmosphere using Held and Suarez | 
| 224 | 
 '94 forcing. | 
 '94 forcing. | 
| 225 | 
  | 
  | 
| 226 | 
 \item \textit{hs94.128x64x5} - 3D atmosphere dynamics using Held and Suarez | 
 \item \textit{hs94.128x64x5} - 3D atmosphere dynamics using Held and Suarez | 
| 229 | 
 \item \textit{hs94.cs-32x32x5} - 3D atmosphere dynamics using Held and | 
 \item \textit{hs94.cs-32x32x5} - 3D atmosphere dynamics using Held and | 
| 230 | 
 Suarez '94 forcing on the cubed sphere. | 
 Suarez '94 forcing on the cubed sphere. | 
| 231 | 
  | 
  | 
| 232 | 
 \item \textit{aim.5l\_zon-ave} - Intermediate Atmospheric physics, 5 layers | 
 \item \textit{aim.5l\_zon-ave} - Intermediate Atmospheric physics. Global  | 
| 233 | 
 Molteni physics package. Global Zonal Mean configuration, 1x64x5 resolution. | 
 Zonal Mean configuration, 1x64x5 resolution. | 
| 234 | 
  | 
  | 
| 235 | 
 \item \textit{aim.5l\_XZ\_Equatorial\_Slice} - Intermediate Atmospheric | 
 \item \textit{aim.5l\_XZ\_Equatorial\_Slice} - Intermediate Atmospheric | 
| 236 | 
 physics, 5 layers Molteni physics package. Equatorial Slice configuration. | 
 physics, equatorial Slice configuration. | 
| 237 | 
 2D (X-Z). | 
 2D (X-Z). | 
| 238 | 
  | 
  | 
| 239 | 
 \item \textit{aim.5l\_Equatorial\_Channel} - Intermediate Atmospheric | 
 \item \textit{aim.5l\_Equatorial\_Channel} - Intermediate Atmospheric | 
| 240 | 
 physics, 5 layers Molteni physics package. 3D Equatorial Channel | 
 physics. 3D Equatorial Channel configuration. | 
 | 
 configuration (not completely tested). | 
  | 
| 241 | 
  | 
  | 
| 242 | 
 \item \textit{aim.5l\_LatLon} - Intermediate Atmospheric physics, 5 layers | 
 \item \textit{aim.5l\_LatLon} - Intermediate Atmospheric physics. | 
| 243 | 
 Molteni physics package. Global configuration, 128x64x5 resolution. | 
 Global configuration, on latitude longitude grid with 128x64x5 grid points | 
| 244 | 
  | 
 ($2.8^\circ{\rm degree}$ resolution). | 
| 245 | 
  | 
  | 
| 246 | 
 \item \textit{adjustment.128x64x1} | 
 \item \textit{adjustment.128x64x1} Barotropic adjustment | 
| 247 | 
  | 
 problem on latitude longitude grid with 128x64 grid points ($2.8^\circ{\rm degree}$ resolution). | 
| 248 | 
  | 
  | 
| 249 | 
 \item \textit{adjustment.cs-32x32x1} | 
 \item \textit{adjustment.cs-32x32x1} | 
| 250 | 
 \end{itemize} | 
 Barotropic adjustment | 
| 251 | 
  | 
 problem on cube sphere grid with 32x32 points per face ( roughly | 
| 252 | 
  | 
 $2.8^\circ{\rm degree}$ resolution). | 
| 253 | 
  | 
  | 
| 254 | 
  | 
 \item \textit{advect\_cs} Two-dimensional passive advection test on | 
| 255 | 
  | 
 cube sphere grid. | 
| 256 | 
  | 
  | 
| 257 | 
 \subsubsection{Directory structure of model examples} | 
 \item \textit{advect\_xy} Two-dimensional (horizontal plane) passive advection  | 
| 258 | 
  | 
 test on Cartesian grid. | 
| 259 | 
  | 
  | 
| 260 | 
  | 
 \item \textit{advect\_yz} Two-dimensional (vertical plane) passive advection test on Cartesian grid. | 
| 261 | 
  | 
  | 
| 262 | 
  | 
 \item \textit{carbon} Simple passive tracer experiment. Includes derivative | 
| 263 | 
  | 
 calculation. Described in detail in section \ref{sect:eg-carbon-ad}. | 
| 264 | 
  | 
  | 
| 265 | 
  | 
 \item \textit{flt\_example} Example of using float package. | 
| 266 | 
  | 
  | 
| 267 | 
  | 
 \item \textit{global\_ocean.90x40x15} Global circulation with | 
| 268 | 
  | 
 GM, flux boundary conditions and poles. | 
| 269 | 
  | 
  | 
| 270 | 
  | 
 \item \textit{solid-body.cs-32x32x1} Solid body rotation test for cube sphere | 
| 271 | 
  | 
 grid. | 
| 272 | 
  | 
  | 
| 273 | 
  | 
 \end{enumerate} | 
| 274 | 
  | 
  | 
| 275 | 
  | 
 \subsection{Directory structure of model examples} | 
| 276 | 
  | 
  | 
| 277 | 
 Each example directory has the following subdirectories: | 
 Each example directory has the following subdirectories: | 
| 278 | 
  | 
  | 
| 297 | 
 code} depending on the particular experiment. See section 2 for more details. | 
 code} depending on the particular experiment. See section 2 for more details. | 
| 298 | 
  | 
  | 
| 299 | 
 \item \textit{input}: contains the input data files required to run the | 
 \item \textit{input}: contains the input data files required to run the | 
| 300 | 
 example. At a mimimum, the \textit{input} directory contains the following | 
 example. At a minimum, the \textit{input} directory contains the following | 
| 301 | 
 files: | 
 files: | 
| 302 | 
  | 
  | 
| 303 | 
 \begin{itemize} | 
 \begin{itemize} | 
| 324 | 
 Once you have chosen the example you want to run, you are ready to compile | 
 Once you have chosen the example you want to run, you are ready to compile | 
| 325 | 
 the code. | 
 the code. | 
| 326 | 
  | 
  | 
| 327 | 
 \subsection{Compiling the code} | 
 \section{Building the code} | 
| 328 | 
  | 
 \label{sect:buildingCode} | 
| 329 | 
  | 
  | 
| 330 | 
  | 
 To compile the code, we use the {\em make} program. This uses a file | 
| 331 | 
  | 
 ({\em Makefile}) that allows us to pre-process source files, specify | 
| 332 | 
  | 
 compiler and optimization options and also figures out any file | 
| 333 | 
  | 
 dependencies. We supply a script ({\em genmake}), described in section | 
| 334 | 
  | 
 \ref{sect:genmake}, that automatically creates the {\em Makefile} for | 
| 335 | 
  | 
 you. You then need to build the dependencies and compile the code. | 
| 336 | 
  | 
  | 
| 337 | 
  | 
 As an example, let's assume that you want to build and run experiment | 
| 338 | 
  | 
 \textit{verification/exp2}. The are multiple ways and places to actually | 
| 339 | 
  | 
 do this but here let's build the code in | 
| 340 | 
  | 
 \textit{verification/exp2/input}: | 
| 341 | 
  | 
 \begin{verbatim} | 
| 342 | 
  | 
 % cd verification/exp2/input | 
| 343 | 
  | 
 \end{verbatim} | 
| 344 | 
  | 
 First, build the {\em Makefile}: | 
| 345 | 
  | 
 \begin{verbatim} | 
| 346 | 
  | 
 % ../../../tools/genmake -mods=../code | 
| 347 | 
  | 
 \end{verbatim} | 
| 348 | 
  | 
 The command line option tells {\em genmake} to override model source | 
| 349 | 
  | 
 code with any files in the directory {\em ./code/}. | 
| 350 | 
  | 
  | 
| 351 | 
  | 
 If there is no \textit{.genmakerc} in the \textit{input} directory, you have | 
| 352 | 
  | 
 to use the following options when invoking \textit{genmake}: | 
| 353 | 
  | 
 \begin{verbatim} | 
| 354 | 
  | 
 % ../../../tools/genmake  -mods=../code | 
| 355 | 
  | 
 \end{verbatim} | 
| 356 | 
  | 
  | 
| 357 | 
  | 
 Next, create the dependencies: | 
| 358 | 
  | 
 \begin{verbatim} | 
| 359 | 
  | 
 % make depend | 
| 360 | 
  | 
 \end{verbatim} | 
| 361 | 
  | 
 This modifies {\em Makefile} by attaching a [long] list of files on | 
| 362 | 
  | 
 which other files depend. The purpose of this is to reduce | 
| 363 | 
  | 
 re-compilation if and when you start to modify the code. {\tt make | 
| 364 | 
  | 
 depend} also created links from the model source to this directory. | 
| 365 | 
  | 
  | 
| 366 | 
  | 
 Now compile the code: | 
| 367 | 
  | 
 \begin{verbatim} | 
| 368 | 
  | 
 % make | 
| 369 | 
  | 
 \end{verbatim} | 
| 370 | 
  | 
 The {\tt make} command creates an executable called \textit{mitgcmuv}. | 
| 371 | 
  | 
  | 
| 372 | 
  | 
 Now you are ready to run the model. General instructions for doing so are | 
| 373 | 
  | 
 given in section \ref{sect:runModel}. Here, we can run the model with: | 
| 374 | 
  | 
 \begin{verbatim} | 
| 375 | 
  | 
 ./mitgcmuv > output.txt | 
| 376 | 
  | 
 \end{verbatim} | 
| 377 | 
  | 
 where we are re-directing the stream of text output to the file {\em | 
| 378 | 
  | 
 output.txt}. | 
| 379 | 
  | 
  | 
| 380 | 
  | 
  | 
| 381 | 
  | 
 \subsection{Building/compiling the code elsewhere} | 
| 382 | 
  | 
  | 
| 383 | 
  | 
 In the example above (section \ref{sect:buildingCode}) we built the | 
| 384 | 
  | 
 executable in the {\em input} directory of the experiment for | 
| 385 | 
  | 
 convenience. You can also configure and compile the code in other | 
| 386 | 
  | 
 locations, for example on a scratch disk with out having to copy the | 
| 387 | 
  | 
 entire source tree. The only requirement to do so is you have {\tt | 
| 388 | 
  | 
 genmake} in your path or you know the absolute path to {\tt genmake}. | 
| 389 | 
  | 
  | 
| 390 | 
  | 
 The following sections outline some possible methods of organizing you | 
| 391 | 
  | 
 source and data. | 
| 392 | 
  | 
  | 
| 393 | 
  | 
 \subsubsection{Building from the {\em ../code directory}} | 
| 394 | 
  | 
  | 
| 395 | 
  | 
 This is just as simple as building in the {\em input/} directory: | 
| 396 | 
  | 
 \begin{verbatim} | 
| 397 | 
  | 
 % cd verification/exp2/code | 
| 398 | 
  | 
 % ../../../tools/genmake | 
| 399 | 
  | 
 % make depend | 
| 400 | 
  | 
 % make | 
| 401 | 
  | 
 \end{verbatim} | 
| 402 | 
  | 
 However, to run the model the executable ({\em mitgcmuv}) and input | 
| 403 | 
  | 
 files must be in the same place. If you only have one calculation to make: | 
| 404 | 
  | 
 \begin{verbatim} | 
| 405 | 
  | 
 % cd ../input | 
| 406 | 
  | 
 % cp ../code/mitgcmuv ./ | 
| 407 | 
  | 
 % ./mitgcmuv > output.txt | 
| 408 | 
  | 
 \end{verbatim} | 
| 409 | 
  | 
 or if you will be making multiple runs with the same executable: | 
| 410 | 
  | 
 \begin{verbatim} | 
| 411 | 
  | 
 % cd ../ | 
| 412 | 
  | 
 % cp -r input run1 | 
| 413 | 
  | 
 % cp code/mitgcmuv run1 | 
| 414 | 
  | 
 % cd run1 | 
| 415 | 
  | 
 % ./mitgcmuv > output.txt | 
| 416 | 
  | 
 \end{verbatim} | 
| 417 | 
  | 
  | 
| 418 | 
  | 
 \subsubsection{Building from a new directory} | 
| 419 | 
  | 
  | 
| 420 | 
  | 
 Since the {\em input} directory contains input files it is often more | 
| 421 | 
  | 
 useful to keep {\em input} pristine and build in a new directory | 
| 422 | 
  | 
 within {\em verification/exp2/}: | 
| 423 | 
  | 
 \begin{verbatim} | 
| 424 | 
  | 
 % cd verification/exp2 | 
| 425 | 
  | 
 % mkdir build | 
| 426 | 
  | 
 % cd build | 
| 427 | 
  | 
 % ../../../tools/genmake -mods=../code | 
| 428 | 
  | 
 % make depend | 
| 429 | 
  | 
 % make | 
| 430 | 
  | 
 \end{verbatim} | 
| 431 | 
  | 
 This builds the code exactly as before but this time you need to copy | 
| 432 | 
  | 
 either the executable or the input files or both in order to run the | 
| 433 | 
  | 
 model. For example, | 
| 434 | 
  | 
 \begin{verbatim} | 
| 435 | 
  | 
 % cp ../input/* ./ | 
| 436 | 
  | 
 % ./mitgcmuv > output.txt | 
| 437 | 
  | 
 \end{verbatim} | 
| 438 | 
  | 
 or if you tend to make multiple runs with the same executable then | 
| 439 | 
  | 
 running in a new directory each time might be more appropriate: | 
| 440 | 
  | 
 \begin{verbatim} | 
| 441 | 
  | 
 % cd ../ | 
| 442 | 
  | 
 % mkdir run1 | 
| 443 | 
  | 
 % cp build/mitgcmuv run1/ | 
| 444 | 
  | 
 % cp input/* run1/ | 
| 445 | 
  | 
 % cd run1 | 
| 446 | 
  | 
 % ./mitgcmuv > output.txt | 
| 447 | 
  | 
 \end{verbatim} | 
| 448 | 
  | 
  | 
| 449 | 
  | 
 \subsubsection{Building from on a scratch disk} | 
| 450 | 
  | 
  | 
| 451 | 
  | 
 Model object files and output data can use up large amounts of disk | 
| 452 | 
  | 
 space so it is often the case that you will be operating on a large | 
| 453 | 
  | 
 scratch disk. Assuming the model source is in {\em ~/MITgcm} then the | 
| 454 | 
  | 
 following commands will build the model in {\em /scratch/exp2-run1}: | 
| 455 | 
  | 
 \begin{verbatim} | 
| 456 | 
  | 
 % cd /scratch/exp2-run1 | 
| 457 | 
  | 
 % ~/MITgcm/tools/genmake -rootdir=~/MITgcm -mods=~/MITgcm/verification/exp2/code | 
| 458 | 
  | 
 % make depend | 
| 459 | 
  | 
 % make | 
| 460 | 
  | 
 \end{verbatim} | 
| 461 | 
  | 
 To run the model here, you'll need the input files: | 
| 462 | 
  | 
 \begin{verbatim} | 
| 463 | 
  | 
 % cp ~/MITgcm/verification/exp2/input/* ./ | 
| 464 | 
  | 
 % ./mitgcmuv > output.txt | 
| 465 | 
  | 
 \end{verbatim} | 
| 466 | 
  | 
  | 
| 467 | 
  | 
 As before, you could build in one directory and make multiple runs of | 
| 468 | 
  | 
 the one experiment: | 
| 469 | 
  | 
 \begin{verbatim} | 
| 470 | 
  | 
 % cd /scratch/exp2 | 
| 471 | 
  | 
 % mkdir build | 
| 472 | 
  | 
 % cd build | 
| 473 | 
  | 
 % ~/MITgcm/tools/genmake -rootdir=~/MITgcm -mods=~/MITgcm/verification/exp2/code | 
| 474 | 
  | 
 % make depend | 
| 475 | 
  | 
 % make | 
| 476 | 
  | 
 % cd ../ | 
| 477 | 
  | 
 % cp -r ~/MITgcm/verification/exp2/input run2 | 
| 478 | 
  | 
 % cd run2 | 
| 479 | 
  | 
 % ./mitgcmuv > output.txt | 
| 480 | 
  | 
 \end{verbatim} | 
| 481 | 
  | 
  | 
| 482 | 
  | 
  | 
| 483 | 
  | 
  | 
| 484 | 
 \subsubsection{The script \textit{genmake}} | 
 \subsection{\textit{genmake}} | 
| 485 | 
  | 
 \label{sect:genmake} | 
| 486 | 
  | 
  | 
| 487 | 
 To compile the code, use the script \textit{genmake} located in the \textit{% | 
 To compile the code, use the script \textit{genmake} located in the \textit{% | 
| 488 | 
 tools} directory. \textit{genmake} is a script that generates the makefile. | 
 tools} directory. \textit{genmake} is a script that generates the makefile. | 
| 583 | 
 that particular example. In this way you don't need to type the options when | 
 that particular example. In this way you don't need to type the options when | 
| 584 | 
 invoking \textit{genmake}. | 
 invoking \textit{genmake}. | 
| 585 | 
  | 
  | 
 | 
 \subsubsection{Compiling} | 
  | 
| 586 | 
  | 
  | 
| 587 | 
 Let's assume that you want to run, say, example \textit{exp2} in the \textit{% | 
 \section{Running the model} | 
| 588 | 
 input} directory. To compile the code, type the following commands from the | 
 \label{sect:runModel} | 
 | 
 model root tree: | 
  | 
 | 
 \begin{verbatim} | 
  | 
 | 
 % cd verification/exp2/input | 
  | 
 | 
 % ../../../tools/genmake | 
  | 
 | 
 % make depend | 
  | 
 | 
 % make | 
  | 
 | 
 \end{verbatim} | 
  | 
| 589 | 
  | 
  | 
| 590 | 
 If there is no \textit{.genmakerc} in the \textit{input} directory, you have | 
 If compilation finished succesfuully (section \ref{sect:buildModel}) | 
| 591 | 
 to use the following options when invoking \textit{genmake}: | 
 then an executable called {\em mitgcmuv} will now exist in the local | 
| 592 | 
 \begin{verbatim} | 
 directory. | 
 | 
 % ../../../tools/genmake  -mods=../code | 
  | 
 | 
 \end{verbatim} | 
  | 
| 593 | 
  | 
  | 
| 594 | 
 In addition, you will probably want to disable some of the packages. Taking | 
 To run the model as a single process (ie. not in parallel) simply | 
| 595 | 
 again the case of \textit{exp2}, the full \textit{genmake} command will | 
 type: | 
 | 
 probably look like this: | 
  | 
| 596 | 
 \begin{verbatim} | 
 \begin{verbatim} | 
| 597 | 
 % ../../../tools/genmake  -mods=../code  -disable=kpp,gmredi,aim,... | 
 % ./mitgcmuv | 
| 598 | 
 \end{verbatim} | 
 \end{verbatim} | 
| 599 | 
  | 
 The ``./'' is a safe-guard to make sure you use the local executable | 
| 600 | 
 The make command creates an executable called \textit{mitgcmuv}. | 
 in case you have others that exist in your path (surely odd if you | 
| 601 | 
  | 
 do!). The above command will spew out many lines of text output to | 
| 602 | 
 Note that you can compile and run the code in another directory than \textit{% | 
 your screen.  This output contains details such as parameter values as | 
| 603 | 
 input}. You just need to make sure that you copy the input data files into | 
 well as diagnostics such as mean Kinetic energy, largest CFL number, | 
| 604 | 
 the directory where you want to run the model. For example to compile from  | 
 etc. It is worth keeping this text output with the binary output so we | 
| 605 | 
 \textit{code}: | 
 normally re-direct the {\em stdout} stream as follows: | 
| 606 | 
 \begin{verbatim} | 
 \begin{verbatim} | 
| 607 | 
 % cd verification/exp2/code | 
 % ./mitgcmuv > output.txt | 
 | 
 % ../../../tools/genmake | 
  | 
 | 
 % make depend | 
  | 
 | 
 % make | 
  | 
| 608 | 
 \end{verbatim} | 
 \end{verbatim} | 
| 609 | 
  | 
  | 
| 610 | 
 \subsection{Running the model} | 
 For the example experiments in {\em vericication}, an example of the | 
| 611 | 
  | 
 output is kept in {\em results/output.txt} for comparison. You can compare | 
| 612 | 
  | 
 your {\em output.txt} with this one to check that the set-up works. | 
| 613 | 
  | 
  | 
 | 
 The first thing to do is to run the code by typing \textit{mitgcmuv} and see | 
  | 
 | 
 what happens. You can compare what you get with what is in the \textit{% | 
  | 
 | 
 results} directory. Unless noted otherwise, most examples are set up to run | 
  | 
 | 
 for a few time steps only so that you can quickly figure out whether the | 
  | 
 | 
 model is working or not. | 
  | 
| 614 | 
  | 
  | 
| 615 | 
 \subsubsection{Output files} | 
  | 
| 616 | 
  | 
 \subsection{Output files} | 
| 617 | 
  | 
  | 
| 618 | 
 The model produces various output files. At a minimum, the instantaneous | 
 The model produces various output files. At a minimum, the instantaneous | 
| 619 | 
 ``state'' of the model is written out, which is made of the following files: | 
 ``state'' of the model is written out, which is made of the following files: | 
| 664 | 
 used to restart the model but are overwritten every other time they are | 
 used to restart the model but are overwritten every other time they are | 
| 665 | 
 output to save disk space during long integrations. | 
 output to save disk space during long integrations. | 
| 666 | 
  | 
  | 
| 667 | 
 \subsubsection{Looking at the output} | 
 \subsection{Looking at the output} | 
| 668 | 
  | 
  | 
| 669 | 
 All the model data are written according to a ``meta/data'' file format. | 
 All the model data are written according to a ``meta/data'' file format. | 
| 670 | 
 Each variable is associated with two files with suffix names \textit{.data} | 
 Each variable is associated with two files with suffix names \textit{.data} | 
| 678 | 
 \textit{utils/matlab} under the root tree. The script \textit{rdmds.m} reads | 
 \textit{utils/matlab} under the root tree. The script \textit{rdmds.m} reads | 
| 679 | 
 the data. Look at the comments inside the script to see how to use it. | 
 the data. Look at the comments inside the script to see how to use it. | 
| 680 | 
  | 
  | 
| 681 | 
 \section{Code structure} | 
 Some examples of reading and visualizing some output in {\em Matlab}: | 
| 682 | 
  | 
 \begin{verbatim} | 
| 683 | 
  | 
 % matlab | 
| 684 | 
  | 
 >> H=rdmds('Depth'); | 
| 685 | 
  | 
 >> contourf(H');colorbar; | 
| 686 | 
  | 
 >> title('Depth of fluid as used by model'); | 
| 687 | 
  | 
  | 
| 688 | 
  | 
 >> eta=rdmds('Eta',10); | 
| 689 | 
  | 
 >> imagesc(eta');axis ij;colorbar; | 
| 690 | 
  | 
 >> title('Surface height at iter=10'); | 
| 691 | 
  | 
  | 
| 692 | 
 \section{Doing it yourself: customizing the code} | 
 >> eta=rdmds('Eta',[0:10:100]); | 
| 693 | 
  | 
 >> for n=1:11; imagesc(eta(:,:,n)');axis ij;colorbar;pause(.5);end | 
| 694 | 
  | 
 \end{verbatim} | 
| 695 | 
  | 
  | 
| 696 | 
 \subsection{\protect\bigskip Configuration and setup} | 
 \section{Doing it yourself: customizing the code} | 
| 697 | 
  | 
  | 
| 698 | 
 When you are ready to run the model in the configuration you want, the | 
 When you are ready to run the model in the configuration you want, the | 
| 699 | 
 easiest thing is to use and adapt the setup of the case studies experiment | 
 easiest thing is to use and adapt the setup of the case studies experiment | 
| 703 | 
 the ''execution environment'' part is covered in the parallel implementation | 
 the ''execution environment'' part is covered in the parallel implementation | 
| 704 | 
 section) and on the variables and parameters that you are likely to change. | 
 section) and on the variables and parameters that you are likely to change. | 
| 705 | 
  | 
  | 
| 706 | 
  | 
 \subsection{Configuration and setup} | 
| 707 | 
  | 
  | 
| 708 | 
 The CPP keys relative to the ''numerical model'' part of the code are all | 
 The CPP keys relative to the ''numerical model'' part of the code are all | 
| 709 | 
 defined and set in the file \textit{CPP\_OPTIONS.h }in the directory \textit{% | 
 defined and set in the file \textit{CPP\_OPTIONS.h }in the directory \textit{% | 
| 710 | 
 model/inc }or in one of the \textit{code }directories of the case study | 
 model/inc }or in one of the \textit{code }directories of the case study | 
| 721 | 
 computational domain, the equations solved in the model, and the simulation | 
 computational domain, the equations solved in the model, and the simulation | 
| 722 | 
 controls. | 
 controls. | 
| 723 | 
  | 
  | 
| 724 | 
 \subsubsection{Computational domain, geometry and time-discretization} | 
 \subsection{Computational domain, geometry and time-discretization} | 
| 725 | 
  | 
  | 
| 726 | 
 \begin{itemize} | 
 \begin{itemize} | 
| 727 | 
 \item dimensions | 
 \item dimensions | 
| 813 | 
 stagger baroclinic time stepping can be activated by setting the logical | 
 stagger baroclinic time stepping can be activated by setting the logical | 
| 814 | 
 variable \textbf{staggerTimeStep }to '.\texttt{TRUE}.'. | 
 variable \textbf{staggerTimeStep }to '.\texttt{TRUE}.'. | 
| 815 | 
  | 
  | 
| 816 | 
 \subsubsection{Equation of state} | 
 \subsection{Equation of state} | 
| 817 | 
  | 
  | 
| 818 | 
 First, because the model equations are written in terms of perturbations, a | 
 First, because the model equations are written in terms of perturbations, a | 
| 819 | 
 reference thermodynamic state needs to be specified. This is done through | 
 reference thermodynamic state needs to be specified. This is done through | 
| 842 | 
 values of the vertical levels in \textit{knudsen2.f }so that they match | 
 values of the vertical levels in \textit{knudsen2.f }so that they match | 
| 843 | 
 those of your configuration). \textit{\ } | 
 those of your configuration). \textit{\ } | 
| 844 | 
  | 
  | 
| 845 | 
 \subsubsection{Momentum equations} | 
 \subsection{Momentum equations} | 
| 846 | 
  | 
  | 
| 847 | 
 In this section, we only focus for now on the parameters that you are likely | 
 In this section, we only focus for now on the parameters that you are likely | 
| 848 | 
 to change, i.e. the ones relative to forcing and dissipation for example. | 
 to change, i.e. the ones relative to forcing and dissipation for example. | 
| 946 | 
 \texttt{TRUE}.' and the other to '.\texttt{FALSE}.' depending on how you | 
 \texttt{TRUE}.' and the other to '.\texttt{FALSE}.' depending on how you | 
| 947 | 
 want to deal with the ocean upper or atmosphere lower boundary). | 
 want to deal with the ocean upper or atmosphere lower boundary). | 
| 948 | 
  | 
  | 
| 949 | 
 \subsubsection{Tracer equations} | 
 \subsection{Tracer equations} | 
| 950 | 
  | 
  | 
| 951 | 
 This section covers the tracer equations i.e. the potential temperature | 
 This section covers the tracer equations i.e. the potential temperature | 
| 952 | 
 equation and the salinity (for the ocean) or specific humidity (for the | 
 equation and the salinity (for the ocean) or specific humidity (for the | 
| 1037 | 
 vertically due to static instabilities. Note that \textbf{cadjFreq }and  | 
 vertically due to static instabilities. Note that \textbf{cadjFreq }and  | 
| 1038 | 
 \textbf{ivdc\_kappa }can not both have non-zero value. | 
 \textbf{ivdc\_kappa }can not both have non-zero value. | 
| 1039 | 
  | 
  | 
| 1040 | 
 \subsubsection{Simulation controls} | 
 \subsection{Simulation controls} | 
| 1041 | 
  | 
  | 
| 1042 | 
 The model ''clock'' is defined by the variable \textbf{deltaTClock }(in s) | 
 The model ''clock'' is defined by the variable \textbf{deltaTClock }(in s) | 
| 1043 | 
 which determines the IO frequencies and is used in tagging output. | 
 which determines the IO frequencies and is used in tagging output. |