/[MITgcm]/manual/s_examples/rotating_tank/tank.tex
ViewVC logotype

Diff of /manual/s_examples/rotating_tank/tank.tex

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

revision 1.3 by afe, Mon Jul 26 16:21:15 2004 UTC revision 1.10 by afe, Wed Oct 13 18:52:17 2004 UTC
# Line 13  Line 13 
13  %{\large May 2001}  %{\large May 2001}
14  %\end{center}  %\end{center}
15    
 This is the first in a series of tutorials describing  
 example MITgcm numerical experiments. The example experiments  
 include both straightforward examples of idealized geophysical  
 fluid simulations and more involved cases encompassing  
 large scale modeling and  
 automatic differentiation. Both hydrostatic and non-hydrostatic  
 experiments are presented, as well as experiments employing  
 Cartesian, spherical-polar and cube-sphere coordinate systems.  
 These ``case study'' documents include information describing  
 the experimental configuration and detailed information on how to  
 configure the MITgcm code and input files for each experiment.  
   
16  \section{A Rotating Tank in Cylindrical Coordinates}  \section{A Rotating Tank in Cylindrical Coordinates}
17  \label{sect:eg-tank}  \label{sect:eg-tank}
18  \label{www:tutorials}  \label{www:tutorials}
19    
20    This section illustrates an example of MITgcm simulating a laboratory
21  This example experiment demonstrates using the MITgcm to simulate  experiment on much smaller scales than those commonly considered in  
22  a Barotropic, wind-forced, ocean gyre circulation. The experiment  geophysical
23  is a numerical rendition of the gyre circulation problem similar  fluid dynamics.
24  to the problems described analytically by Stommel in 1966  
25  \cite{Stommel66} and numerically in Holland et. al \cite{Holland75}.  \subsection{Overview}
26    \label{www:tutorials}
27  In this experiment the model                                                                                  
28  is configured to represent a rectangular enclosed box of fluid,                                                                                  
29  $1200 \times 1200 $~km in lateral extent. The fluid is $5$~km deep and is forced  This example configuration demonstrates using the MITgcm to simulate
30  by a constant in time zonal wind stress, $\tau_x$, that varies sinusoidally  a laboratory demonstration using a rotating tank of water with an ice
31  in the ``north-south'' direction. Topologically the grid is Cartesian and  bucket in the center. The simulation is configured for a laboratory
32  the coriolis parameter $f$ is defined according to a mid-latitude beta-plane  scale on a
33  equation  $3^{\circ}$ $\times$ 20cm
34    cyclindrical grid with twenty-nine vertical
35  \begin{equation}  levels.
 \label{EQ:eg-baro-fcori}  
 f(y) = f_{0}+\beta y  
 \end{equation}  
   
 \noindent where $y$ is the distance along the ``north-south'' axis of the  
 simulated domain. For this experiment $f_{0}$ is set to $10^{-4}s^{-1}$ in  
 (\ref{EQ:eg-baro-fcori}) and $\beta = 10^{-11}s^{-1}m^{-1}$.  
36  \\  \\
37    example illustration from GFD lab here
38  \\  \\
  The sinusoidal wind-stress variations are defined according to  
39    
 \begin{equation}  
 \label{EQ:eg-baro-taux}  
 \tau_x(y) = \tau_{0}\sin(\pi \frac{y}{L_y})  
 \end{equation}  
   
 \noindent where $L_{y}$ is the lateral domain extent ($1200$~km) and  
 $\tau_0$ is set to $0.1N m^{-2}$.  
 \\  
 \\  
 Figure \ref{FIG:eg-baro-simulation_config}  
 summarizes the configuration simulated.  
40    
41  %% === eh3 ===  
42  \begin{figure}  
 %% \begin{center}  
 %%  \resizebox{7.5in}{5.5in}{  
 %%    \includegraphics*[0.2in,0.7in][10.5in,10.5in]  
 %%     {part3/case_studies/barotropic_gyre/simulation_config.eps} }  
 %% \end{center}  
 \centerline{  
   \scalefig{.95}  
   \epsfbox{part3/case_studies/barotropic_gyre/simulation_config.eps}  
 }  
 \caption{Schematic of simulation domain and wind-stress forcing function  
 for barotropic gyre numerical experiment. The domain is enclosed bu solid  
 walls at $x=$~0,1200km and at $y=$~0,1200km.}  
 \label{FIG:eg-baro-simulation_config}  
 \end{figure}  
43    
44  \subsection{Equations Solved}  \subsection{Equations Solved}
45  \label{www:tutorials}  \label{www:tutorials}
 The model is configured in hydrostatic form. The implicit free surface form of the  
 pressure equation described in Marshall et. al \cite{marshall:97a} is  
 employed.  
 A horizontal Laplacian operator $\nabla_{h}^2$ provides viscous  
 dissipation. The wind-stress momentum input is added to the momentum equation  
 for the ``zonal flow'', $u$. Other terms in the model  
 are explicitly switched off for this experiment configuration (see section  
 \ref{SEC:code_config} ), yielding an active set of equations solved in this  
 configuration as follows  
   
 \begin{eqnarray}  
 \label{EQ:eg-baro-model_equations}  
 \frac{Du}{Dt} - fv +  
               g\frac{\partial \eta}{\partial x} -  
               A_{h}\nabla_{h}^2u  
 & = &  
 \frac{\tau_{x}}{\rho_{0}\Delta z}  
 \\  
 \frac{Dv}{Dt} + fu + g\frac{\partial \eta}{\partial y} -  
               A_{h}\nabla_{h}^2v  
 & = &  
 0  
 \\  
 \frac{\partial \eta}{\partial t} + \nabla_{h}\cdot \vec{u}  
 &=&  
 0  
 \end{eqnarray}  
   
 \noindent where $u$ and $v$ and the $x$ and $y$ components of the  
 flow vector $\vec{u}$.  
 \\  
46    
47    
48  \subsection{Discrete Numerical Configuration}  \subsection{Discrete Numerical Configuration}
49  \label{www:tutorials}  \label{www:tutorials}
50    
51   The domain is discretised with   The domain is discretised with
52  a uniform grid spacing in the horizontal set to  a uniform cylindrical grid spacing in the horizontal set to
53   $\Delta x=\Delta y=20$~km, so   $\Delta a=1$~cm and $\Delta \phi=3^{\circ}$, so
54  that there are sixty grid cells in the $x$ and $y$ directions. Vertically the  that there are 120 grid cells in the azimuthal direction and thirty-one grid cells in the radial. Vertically the
55  model is configured with a single layer with depth, $\Delta z$, of $5000$~m.  model is configured with twenty-nine layers of uniform 0.5cm thickness.
   
 \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.  
56  \\  \\
57    something about heat flux
 \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$.  
58    
59  \subsection{Code Configuration}  \subsection{Code Configuration}
60  \label{www:tutorials}  \label{www:tutorials}
61  \label{SEC:eg-baro-code_config}  \label{SEC:eg-baro-code_config}
62    
63  The model configuration for this experiment resides under the  The model configuration for this experiment resides under the
64  directory {\it verification/exp0/}.  The experiment files  directory {\it verification/rotatingi\_tank/}.  The experiment files
65  \begin{itemize}  \begin{itemize}
66  \item {\it input/data}  \item {\it input/data}
67  \item {\it input/data.pkg}  \item {\it input/data.pkg}
68  \item {\it input/eedata},  \item {\it input/eedata},
69  \item {\it input/windx.sin\_y},  \item {\it input/bathyPol.bin},
70  \item {\it input/topog.box},  \item {\it input/thetaPol.bin},
71  \item {\it code/CPP\_EEOPTIONS.h}  \item {\it code/CPP\_EEOPTIONS.h}
72  \item {\it code/CPP\_OPTIONS.h},  \item {\it code/CPP\_OPTIONS.h},
73  \item {\it code/SIZE.h}.  \item {\it code/SIZE.h}.
74  \end{itemize}  \end{itemize}
75    
76  contain the code customizations and parameter settings for this  contain the code customizations and parameter settings for this
77  experiments. Below we describe the customizations  experiments. Below we describe the customizations
78  to these files associated with this experiment.  to these files associated with this experiment.
# Line 212  are Line 86  are
86    
87  \begin{itemize}  \begin{itemize}
88    
89  \item Line 7, \begin{verbatim} viscAh=4.E2, \end{verbatim} this line sets  \item Line 10, \begin{verbatim} viscAh=5.0E-6, \end{verbatim} this line sets
90  the Laplacian friction coefficient to $400 m^2s^{-1}$  the Laplacian friction coefficient to $6 \times 10^{-6} m^2s^{-1}$,
91  \item Line 10, \begin{verbatim} beta=1.E-11, \end{verbatim} this line sets  which is ususally
92    low because of the small scale, presumably.... qqq
93    
94    \item Line 19, \begin{verbatim}f0=0.5 , \end{verbatim} this line sets the
95    coriolis term, and represents a tank spinning at 2/s
96    \item Line 20, \begin{verbatim} beta=1.E-11, \end{verbatim} this line sets
97  $\beta$ (the gradient of the coriolis parameter, $f$) to $10^{-11} s^{-1}m^{-1}$  $\beta$ (the gradient of the coriolis parameter, $f$) to $10^{-11} s^{-1}m^{-1}$
98    
99  \item Lines 15 and 16  \item Lines 27 and 28
100  \begin{verbatim}  \begin{verbatim}
101  rigidLid=.FALSE.,  rigidLid=.TRUE.,
102  implicitFreeSurface=.TRUE.,  implicitFreeSurface=.FALSE.,
103  \end{verbatim}  \end{verbatim}
104  these lines suppress the rigid lid formulation of the surface  
105    qqq these lines do the opposite of the following:
106    suppress the rigid lid formulation of the surface
107  pressure inverter and activate the implicit free surface form  pressure inverter and activate the implicit free surface form
108  of the pressure inverter.  of the pressure inverter.
109    
110  \item Line 27,  \item Line 44,
111  \begin{verbatim}  \begin{verbatim}
112  startTime=0,  nIter=0,
113  \end{verbatim}  \end{verbatim}
114  this line indicates that the experiment should start from $t=0$  this line indicates that the experiment should start from $t=0$
115  and implicitly suppresses searching for checkpoint files associated  and implicitly suppresses searching for checkpoint files associated
116  with restarting an numerical integration from a previously saved state.  with restarting an numerical integration from a previously saved state.
117    
118  \item Line 29,  \item Line 47,
 \begin{verbatim}  
 endTime=12000,  
 \end{verbatim}  
 this line indicates that the experiment should start finish at $t=12000s$.  
 A restart file will be written at this time that will enable the  
 simulation to be continued from this point.  
   
 \item Line 30,  
119  \begin{verbatim}  \begin{verbatim}
120  deltaTmom=1200,  deltaT=0.1,
121  \end{verbatim}  \end{verbatim}
122  This line sets the momentum equation timestep to $1200s$.  This line sets the integration timestep to $0.1s$.  This is an unsually
123    small value among the examples due to the small physical scale of the
124    experiment.
125    
126  \item Line 39,  \item Line 58,
127  \begin{verbatim}  \begin{verbatim}
128  usingCartesianGrid=.TRUE.,  usingCylindricalGrid=.TRUE.,
129  \end{verbatim}  \end{verbatim}
130  This line requests that the simulation be performed in a  This line requests that the simulation be performed in a
131  Cartesian coordinate system.  cylindrical coordinate system.
132    
133  \item Line 41,  \item Line 60,
134  \begin{verbatim}  \begin{verbatim}
135  delX=60*20E3,  dXspacing=3,
136  \end{verbatim}  \end{verbatim}
137  This line sets the horizontal grid spacing between each x-coordinate line  This line sets the azimuthal grid spacing between each $x$-coordinate line
138  in the discrete grid. The syntax indicates that the discrete grid  in the discrete grid. The syntax indicates that the discrete grid
139  should be comprise of $60$ grid lines each separated by $20 \times 10^{3}m$  should be comprise of $120$ grid lines each separated by $3^{\circ}$.
140  ($20$~km).                                                                                  
141    
142  \item Line 42,  
143    \item Line 61,
144  \begin{verbatim}  \begin{verbatim}
145  delY=60*20E3,  dYspacing=0.01,
146  \end{verbatim}  \end{verbatim}
147  This line sets the horizontal grid spacing between each y-coordinate line  This line sets the radial cylindrical grid spacing between each $a$-coordinate line
148  in the discrete grid to $20 \times 10^{3}m$ ($20$~km).  in the discrete grid to $1cm$.
149    
150  \item Line 43,  \item Line 62,
151  \begin{verbatim}  \begin{verbatim}
152  delZ=5000,  delZ=29*0.005,
153  \end{verbatim}  \end{verbatim}
154  This line sets the vertical grid spacing between each z-coordinate line  This line sets the vertical grid spacing between each z-coordinate line
155  in the discrete grid to $5000m$ ($5$~km).  in the discrete grid to $5000m$ ($5$~km).
156    
157  \item Line 46,  \item Line 68,
158  \begin{verbatim}  \begin{verbatim}
159  bathyFile='topog.box'  bathyFile='bathyPol.bin',
160  \end{verbatim}  \end{verbatim}
161  This line specifies the name of the file from which the domain  This line specifies the name of the file from which the domain
162  bathymetry is read. This file is a two-dimensional ($x,y$) map of  ``bathymetry'' (tank depth) is read. This file is a two-dimensional
163    ($a,\phi$) map of
164  depths. This file is assumed to contain 64-bit binary numbers  depths. This file is assumed to contain 64-bit binary numbers
165  giving the depth of the model at each grid cell, ordered with the x  giving the depth of the model at each grid cell, ordered with the $\phi$
166  coordinate varying fastest. The points are ordered from low coordinate  coordinate varying fastest. The points are ordered from low coordinate
167  to high coordinate for both axes. The units and orientation of the  to high coordinate for both axes.  The units and orientation of the
168  depths in this file are the same as used in the MITgcm code. In this  depths in this file are the same as used in the MITgcm code. In this
169  experiment, a depth of $0m$ indicates a solid wall and a depth  experiment, a depth of $0m$ indicates an area outside of the tank
170  of $-5000m$ indicates open ocean. The matlab program  and a depth
171  {\it input/gendata.m} shows an example of how to generate a  f $-0.145m$ indicates the tank itself.
 bathymetry file.  
172    
173    \item Line 67,
174    \begin{verbatim}
175    hydrogThetaFile='thetaPol.bin',
176    \end{verbatim}
177    This line specifies the name of the file from which the initial values
178    of temperature
179    are read. This file is a three-dimensional
180    ($x,y,z$) map and is enumerated and formatted in the same manner as the
181    bathymetry file.
182    
183  \item Line 49,  \item Line qqq
184  \begin{verbatim}  \begin{verbatim}
185  zonalWindFile='windx.sin_y'   tCyl  = 0
186  \end{verbatim}  \end{verbatim}
187  This line specifies the name of the file from which the x-direction  This line specifies the temperature in degrees Celsius of the interior
188  surface wind stress is read. This file is also a two-dimensional  wall of the tank -- usually a bucket of ice water.
189  ($x,y$) map and is enumerated and formatted in the same manner as the  
 bathymetry file. The matlab program {\it input/gendata.m} includes example  
 code to generate a valid {\bf zonalWindFile} file.    
190    
191  \end{itemize}  \end{itemize}
192    
# Line 312  that are described in the MITgcm Getting Line 195  that are described in the MITgcm Getting
195  notes.  notes.
196    
197  \begin{small}  \begin{small}
198  \input{part3/case_studies/barotropic_gyre/input/data}  \input{part3/case_studies/rotating_tank/input/data}
199  \end{small}  \end{small}
200    
201  \subsubsection{File {\it input/data.pkg}}  \subsubsection{File {\it input/data.pkg}}
# Line 327  customizations for this experiment. Line 210  customizations for this experiment.
210  This file uses standard default values and does not contain  This file uses standard default values and does not contain
211  customizations for this experiment.  customizations for this experiment.
212    
213  \subsubsection{File {\it input/windx.sin\_y}}  \subsubsection{File {\it input/thetaPol.bin}}
214  \label{www:tutorials}  \label{www:tutorials}
215    
216  The {\it input/windx.sin\_y} file specifies a two-dimensional ($x,y$)  The {\it input/thetaPol.bin} file specifies a three-dimensional ($x,y,z$)
217  map of wind stress ,$\tau_{x}$, values. The units used are $Nm^{-2}$.  map of initial values of $\theta$ in degrees Celsius.  This particular
218  Although $\tau_{x}$ is only a function of $y$n in this experiment  experiment is set to random values x around 20C to provide initial
219  this file must still define a complete two-dimensional map in order  perturbations.
 to be compatible with the standard code for loading forcing fields  
 in MITgcm. The included matlab program {\it input/gendata.m} gives a complete  
 code for creating the {\it input/windx.sin\_y} file.  
220    
221  \subsubsection{File {\it input/topog.box}}  \subsubsection{File {\it input/bathyPol.bin}}
222  \label{www:tutorials}  \label{www:tutorials}
223    
224    
225  The {\it input/topog.box} file specifies a two-dimensional ($x,y$)  The {\it input/bathyPol.bin} file specifies a two-dimensional ($x,y$)
226  map of depth values. For this experiment values are either  map of depth values. For this experiment values are either
227  $0m$ or {\bf -delZ}m, corresponding respectively to a wall or to deep  $0m$ or {\bf -delZ}m, corresponding respectively to outside or inside of
228  ocean. The file contains a raw binary stream of data that is enumerated  the tank. The file contains a raw binary stream of data that is enumerated
229  in the same way as standard MITgcm two-dimensional, horizontal arrays.  in the same way as standard MITgcm two-dimensional, horizontal arrays.
 The included matlab program {\it input/gendata.m} gives a complete  
 code for creating the {\it input/topog.box} file.  
230    
231  \subsubsection{File {\it code/SIZE.h}}  \subsubsection{File {\it code/SIZE.h}}
232  \label{www:tutorials}  \label{www:tutorials}
# Line 358  Two lines are customized in this file fo Line 236  Two lines are customized in this file fo
236  \begin{itemize}  \begin{itemize}
237    
238  \item Line 39,  \item Line 39,
239  \begin{verbatim} sNx=60, \end{verbatim} this line sets  \begin{verbatim} sNx=120, \end{verbatim} this line sets
240  the lateral domain extent in grid points for the  the lateral domain extent in grid points for the
241  axis aligned with the x-coordinate.  axis aligned with the x-coordinate.
242    
243  \item Line 40,  \item Line 40,
244  \begin{verbatim} sNy=60, \end{verbatim} this line sets  \begin{verbatim} sNy=31, \end{verbatim} this line sets
245  the lateral domain extent in grid points for the  the lateral domain extent in grid points for the
246  axis aligned with the y-coordinate.  axis aligned with the y-coordinate.
247    
248  \end{itemize}  \end{itemize}
249    
250  \begin{small}  \begin{small}
251  \input{part3/case_studies/barotropic_gyre/code/SIZE.h}  \input{part3/case_studies/rotating_tank/code/SIZE.h}
252  \end{small}  \end{small}
253    
254  \subsubsection{File {\it code/CPP\_OPTIONS.h}}  \subsubsection{File {\it code/CPP\_OPTIONS.h}}

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.10

  ViewVC Help
Powered by ViewVC 1.1.22