% $Header: /home/ubuntu/mnt/e9_copy/manual/s_examples/rotating_tank/tank.tex,v 1.8 2004/07/26 21:25:34 afe Exp $ % $Name: $ \bodytext{bgcolor="#FFFFFFFF"} %\begin{center} %{\Large \bf Using MITgcm to Simulate a Rotating Tank in Cylindrical %Coordinates} % %\vspace*{4mm} % %\vspace*{3mm} %{\large May 2001} %\end{center} \section{A Rotating Tank in Cylindrical Coordinates} \label{sect:eg-tank} \label{www:tutorials} This section illustrates an example of MITgcm simulating a laboratory experiment on much smaller scales than those common to geophysical fluid dynamics. \subsection{Overview} \label{www:tutorials} This example experiment demonstrates using the MITgcm to simulate a laboratory experiment with a rotating tank of water with an ice bucket in the center. The simulation is configured for a laboratory scale on a $3^{\circ}$ $\times$ 20cm cyclindrical grid with twenty-nine vertical levels. \\ \subsection{Equations Solved} \label{www:tutorials} \subsection{Discrete Numerical Configuration} \label{www:tutorials} The domain is discretised with a uniform grid spacing in the horizontal set to $\Delta x=\Delta y=20$~km, so that there are sixty grid cells in the $x$ and $y$ directions. Vertically the model is configured with a single layer with depth, $\Delta z$, of $5000$~m. \subsubsection{Numerical Stability Criteria} \label{www:tutorials} The Laplacian dissipation coefficient, $A_{h}$, is set to $400 m s^{-1}$. This value is chosen to yield a Munk layer width \cite{adcroft:95}, \begin{eqnarray} \label{EQ:eg-baro-munk_layer} M_{w} = \pi ( \frac { A_{h} }{ \beta } )^{\frac{1}{3}} \end{eqnarray} \noindent of $\approx 100$km. This is greater than the model resolution $\Delta x$, ensuring that the frictional boundary layer is well resolved. \\ \noindent The model is stepped forward with a time step $\delta t=1200$secs. With this time step the stability parameter to the horizontal Laplacian friction \cite{adcroft:95} \begin{eqnarray} \label{EQ:eg-baro-laplacian_stability} S_{l} = 4 \frac{A_{h} \delta t}{{\Delta x}^2} \end{eqnarray} \noindent evaluates to 0.012, which is well below the 0.3 upper limit for stability. \\ \noindent The numerical stability for inertial oscillations \cite{adcroft:95} \begin{eqnarray} \label{EQ:eg-baro-inertial_stability} S_{i} = f^{2} {\delta t}^2 \end{eqnarray} \noindent evaluates to $0.0144$, which is well below the $0.5$ upper limit for stability. \\ \noindent The advective CFL \cite{adcroft:95} for an extreme maximum horizontal flow speed of $ | \vec{u} | = 2 ms^{-1}$ \begin{eqnarray} \label{EQ:eg-baro-cfl_stability} S_{a} = \frac{| \vec{u} | \delta t}{ \Delta x} \end{eqnarray} \noindent evaluates to 0.12. This is approaching the stability limit of 0.5 and limits $\delta t$ to $1200s$. \subsection{Code Configuration} \label{www:tutorials} \label{SEC:eg-baro-code_config} The model configuration for this experiment resides under the directory {\it verification/rotatingi\_tank/}. The experiment files \begin{itemize} \item {\it input/data} \item {\it input/data.pkg} \item {\it input/eedata}, \item {\it input/bathyPol.bin}, \item {\it input/thetaPol.bin}, \item {\it code/CPP\_EEOPTIONS.h} \item {\it code/CPP\_OPTIONS.h}, \item {\it code/SIZE.h}. \end{itemize} contain the code customizations and parameter settings for this experiments. Below we describe the customizations to these files associated with this experiment. \subsubsection{File {\it input/data}} \label{www:tutorials} This file, reproduced completely below, specifies the main parameters for the experiment. The parameters that are significant for this configuration are \begin{itemize} \item Line X, \begin{verbatim} viscAh=5.0E-6, \end{verbatim} this line sets the Laplacian friction coefficient to $0.000006 m^2s^{-1}$, which is ususally low because of the small scale, presumably.... qqq \item Line X, \begin{verbatim}f0=0.5 , \end{verbatim} this line sets the coriolis term, and represents a tank spinning at qqq \item Line 10, \begin{verbatim} beta=1.E-11, \end{verbatim} this line sets $\beta$ (the gradient of the coriolis parameter, $f$) to $10^{-11} s^{-1}m^{-1}$ \item Lines 15 and 16 \begin{verbatim} rigidLid=.TRUE., implicitFreeSurface=.FALSE., \end{verbatim} these lines do the opposite of the following: suppress the rigid lid formulation of the surface pressure inverter and activate the implicit free surface form of the pressure inverter. \item Line 27, \begin{verbatim} startTime=0, \end{verbatim} this line indicates that the experiment should start from $t=0$ and implicitly suppresses searching for checkpoint files associated with restarting an numerical integration from a previously saved state. \item Line 30, \begin{verbatim} deltaT=0.1, \end{verbatim} This line sets the integration timestep to $0.1s$. This is an unsually small value among the examples due to the small physical scale of the experiment. \item Line 39, \begin{verbatim} usingCylindricalGrid=.TRUE., \end{verbatim} This line requests that the simulation be performed in a cylindrical coordinate system. \item Line qqq, \begin{verbatim} dXspacing=3, \end{verbatim} This line sets the azimuthal grid spacing between each x-coordinate line in the discrete grid. The syntax indicates that the discrete grid should be comprise of $120$ grid lines each separated by $3^{\circ}$. \item Line qqq, \begin{verbatim} dYspacing=0.01, \end{verbatim} This line sets the radial grid spacing between each $\rho$-coordinate line in the discrete grid to $1cm$. \item Line 43, \begin{verbatim} delZ=29*0.005, \end{verbatim} This line sets the vertical grid spacing between each z-coordinate line in the discrete grid to $5000m$ ($5$~km). \item Line 46, \begin{verbatim} bathyFile='bathyPol.bin', \end{verbatim} This line specifies the name of the file from which the domain ``bathymetry'' (tank depth) is read. This file is a two-dimensional ($x,y$) map of depths. This file is assumed to contain 64-bit binary numbers giving the depth of the model at each grid cell, ordered with the $x$ coordinate varying fastest. The points are ordered from low coordinate to high coordinate for both axes. The units and orientation of the depths in this file are the same as used in the MITgcm code. In this experiment, a depth of $0m$ indicates an area outside of the tank and a depth f $-0.145m$ indicates the tank itself. \item Line 49, \begin{verbatim} hydrogThetaFile='thetaPol.bin', \end{verbatim} This line specifies the name of the file from which the initial values of $\theta$ are read. This file is a three-dimensional ($x,y,z$) map and is enumerated and formatted in the same manner as the bathymetry file. \item Line qqq \begin{verbatim} tCyl = 0 \end{verbatim} This line specifies the temperature in degrees Celsius of the interior wall of the tank -- usually a bucket of ice water. \end{itemize} \noindent other lines in the file {\it input/data} are standard values that are described in the MITgcm Getting Started and MITgcm Parameters notes. \begin{small} \input{part3/case_studies/rotating_tank/input/data} \end{small} \subsubsection{File {\it input/data.pkg}} \label{www:tutorials} This file uses standard default values and does not contain customizations for this experiment. \subsubsection{File {\it input/eedata}} \label{www:tutorials} This file uses standard default values and does not contain customizations for this experiment. \subsubsection{File {\it input/thetaPol.bin}} \label{www:tutorials} The {\it input/thetaPol.bin} file specifies a three-dimensional ($x,y,z$) map of initial values of $\theta$ in degrees Celsius. \subsubsection{File {\it input/bathyPol.bin}} \label{www:tutorials} The {\it input/bathyPol.bin} file specifies a two-dimensional ($x,y$) map of depth values. For this experiment values are either $0m$ or {\bf -delZ}m, corresponding respectively to outside or inside of the tank. The file contains a raw binary stream of data that is enumerated in the same way as standard MITgcm two-dimensional, horizontal arrays. \subsubsection{File {\it code/SIZE.h}} \label{www:tutorials} Two lines are customized in this file for the current experiment \begin{itemize} \item Line 39, \begin{verbatim} sNx=120, \end{verbatim} this line sets the lateral domain extent in grid points for the axis aligned with the x-coordinate. \item Line 40, \begin{verbatim} sNy=31, \end{verbatim} this line sets the lateral domain extent in grid points for the axis aligned with the y-coordinate. \end{itemize} \begin{small} \input{part3/case_studies/rotating_tank/code/SIZE.h} \end{small} \subsubsection{File {\it code/CPP\_OPTIONS.h}} \label{www:tutorials} This file uses standard default values and does not contain customizations for this experiment. \subsubsection{File {\it code/CPP\_EEOPTIONS.h}} \label{www:tutorials} This file uses standard default values and does not contain customizations for this experiment.