/[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.4 by afe, Mon Jul 26 17:52:43 2004 UTC revision 1.13 by afe, Wed Jun 15 14:54:58 2005 UTC
# Line 16  Line 16 
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    \begin{rawhtml}
20    <!-- CMIREDIR:eg-tank: -->
21    \end{rawhtml}
22    
23  This section illustrates an example of MITgcm simulating a laboratory  This section illustrates an example of MITgcm simulating a laboratory
24  experiment on much smaller scales than those common to geophysical  experiment on much smaller scales than those commonly considered in  
25    geophysical
26  fluid dynamics.  fluid dynamics.
27    
28  \subsection{Overview}  \subsection{Overview}
29  \label{www:tutorials}  \label{www:tutorials}
30                                                                                                                                                              
31                                                                                    This example configuration demonstrates using the MITgcm to simulate a
32  This example experiment demonstrates using the MITgcm to simulate  laboratory demonstration using a differentially heated rotating
33  a laboratory experiment with a rotating tank of water with an ice  annulus of water.  The simulation is configured for a laboratory scale
34  bucket in the center. The simulation is configured for a laboratory  on a $3^{\circ}$ $\times$ 1cm cyclindrical grid with twenty-nine
35  scale on a  vertical levels of 0.5cm each.  This is a typical laboratory setup for
36  $3^{\circ}$ $\times$ 20cm  illustration principles of GFD, as well as for a laboratory data
37  cyclindrical grid with twenty-nine vertical  assimilation project.
 levels.  
38  \\  \\
39    
40    example illustration from GFD lab here
41    \\
42    
43    
 This example experiment demonstrates using the MITgcm to simulate  
 a Barotropic, wind-forced, ocean gyre circulation. The experiment  
 is a numerical rendition of the gyre circulation problem similar  
 to the problems described analytically by Stommel in 1966  
 \cite{Stommel66} and numerically in Holland et. al \cite{Holland75}.  
   
 In this experiment the model  
 is configured to represent a rectangular enclosed box of fluid,  
 $1200 \times 1200 $~km in lateral extent. The fluid is $5$~km deep and is forced  
 by a constant in time zonal wind stress, $\tau_x$, that varies sinusoidally  
 in the ``north-south'' direction. Topologically the grid is Cartesian and  
 the coriolis parameter $f$ is defined according to a mid-latitude beta-plane  
 equation  
   
 \begin{equation}  
 \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}$.  
 \\  
 \\  
  The sinusoidal wind-stress variations are defined according to  
44    
 \begin{equation}  
 \label{EQ:eg-baro-taux}  
 \tau_x(y) = \tau_{0}\sin(\pi \frac{y}{L_y})  
 \end{equation}  
45    
 \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.  
   
 %% === eh3 ===  
 \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}  
46    
47  \subsection{Equations Solved}  \subsection{Equations Solved}
48  \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}$.  
 \\  
49    
50    
51  \subsection{Discrete Numerical Configuration}  \subsection{Discrete Numerical Configuration}
52  \label{www:tutorials}  \label{www:tutorials}
53    
54   The domain is discretised with   The domain is discretised with a uniform cylindrical grid spacing in
55  a uniform grid spacing in the horizontal set to  the horizontal set to $\Delta a=1$~cm and $\Delta \phi=3^{\circ}$, so
56   $\Delta x=\Delta y=20$~km, so  that there are 120 grid cells in the azimuthal direction and
57  that there are sixty grid cells in the $x$ and $y$ directions. Vertically the  thirty-one grid cells in the radial, representing a tank 62cm in
58  model is configured with a single layer with depth, $\Delta z$, of $5000$~m.  diameter.  The bathymetry file sets the depth=0 in the nine lowest
59    radial rows to represent the central of the annulus.  Vertically the
60  \subsubsection{Numerical Stability Criteria}  model is configured with twenty-nine layers of uniform 0.5cm
61  \label{www:tutorials}  thickness.
   
 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.  
62  \\  \\
63    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$.  
64    
65  \subsection{Code Configuration}  \subsection{Code Configuration}
66  \label{www:tutorials}  \label{www:tutorials}
67  \label{SEC:eg-baro-code_config}  \label{SEC:eg-baro-code_config}
68    
69  The model configuration for this experiment resides under the  The model configuration for this experiment resides under the
70  directory {\it verification/exp0/}.  The experiment files  directory {\it verification/rotatingi\_tank/}.  The experiment files
71  \begin{itemize}  \begin{itemize}
72  \item {\it input/data}  \item {\it input/data}
73  \item {\it input/data.pkg}  \item {\it input/data.pkg}
74  \item {\it input/eedata},  \item {\it input/eedata},
75  \item {\it input/windx.sin\_y},  \item {\it input/bathyPol.bin},
76  \item {\it input/topog.box},  \item {\it input/thetaPol.bin},
77  \item {\it code/CPP\_EEOPTIONS.h}  \item {\it code/CPP\_EEOPTIONS.h}
78  \item {\it code/CPP\_OPTIONS.h},  \item {\it code/CPP\_OPTIONS.h},
79  \item {\it code/SIZE.h}.  \item {\it code/SIZE.h}.
80  \end{itemize}  \end{itemize}
81    
82  contain the code customizations and parameter settings for this  contain the code customizations and parameter settings for this
83  experiments. Below we describe the customizations  experiments. Below we describe the customizations
84  to these files associated with this experiment.  to these files associated with this experiment.
# Line 218  are Line 92  are
92    
93  \begin{itemize}  \begin{itemize}
94    
95  \item Line 7, \begin{verbatim} viscAh=4.E2, \end{verbatim} this line sets  \item Lines 9-10, \begin{verbatim}
96  the Laplacian friction coefficient to $400 m^2s^{-1}$  viscAh=5.0E-6,
97  \item Line 10, \begin{verbatim} beta=1.E-11, \end{verbatim} this line sets  viscAz=5.0E-6,
98  $\beta$ (the gradient of the coriolis parameter, $f$) to $10^{-11} s^{-1}m^{-1}$  \end{verbatim}
99    
100    
101    These lines set the Laplacian friction coefficient in the horizontal
102    and vertical, respectively.  Note that they are several orders of
103    magnitude smaller than the other examples due to the small scale of
104    this example.
105    
106    \item Lines 13-16, \begin{verbatim}
107     diffKhT=2.5E-6,
108     diffKzT=2.5E-6,
109     diffKhS=1.0E-6,
110     diffKzS=1.0E-6,
111    
112    \end{verbatim}
113    
114    
115    These lines set horizontal and vertical diffusion coefficients for
116    temperature and salinity.  Similarly to the friction coefficients, the
117    values are a couple of orders of magnitude less than most
118     configurations.
119    
120    
121    \item Line 17, \begin{verbatim}f0=0.5 , \end{verbatim} this line sets the
122    coriolis term, and represents a tank spinning at about 2.4 rpm.
123    
124  \item Lines 15 and 16  \item Lines 23 and 24
125  \begin{verbatim}  \begin{verbatim}
126  rigidLid=.FALSE.,  rigidLid=.TRUE.,
127  implicitFreeSurface=.TRUE.,  implicitFreeSurface=.FALSE.,
128  \end{verbatim}  \end{verbatim}
129  these lines suppress the rigid lid formulation of the surface  
130  pressure inverter and activate the implicit free surface form  These lines activate  the rigid lid formulation of the surface
131    pressure inverter and suppress the implicit free surface form
132  of the pressure inverter.  of the pressure inverter.
133    
134  \item Line 27,  \item Line 40,
135  \begin{verbatim}  \begin{verbatim}
136  startTime=0,  nIter=0,
137  \end{verbatim}  \end{verbatim}
138  this line indicates that the experiment should start from $t=0$  This line indicates that the experiment should start from $t=0$ and
139  and implicitly suppresses searching for checkpoint files associated  implicitly suppresses searching for checkpoint files associated with
140  with restarting an numerical integration from a previously saved state.  restarting an numerical integration from a previously saved state.
141    Instead, the file thetaPol.bin will be loaded to initialized the
142    temperature fields as indicated below, and other variables will be
143    initialized to their defaults.
144    
 \item Line 29,  
 \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.  
145    
146  \item Line 30,  \item Line 43,
147  \begin{verbatim}  \begin{verbatim}
148  deltaTmom=1200,  deltaT=0.1,
149  \end{verbatim}  \end{verbatim}
150  This line sets the momentum equation timestep to $1200s$.  This line sets the integration timestep to $0.1s$.  This is an
151    unsually small value among the examples due to the small physical
152    scale of the experiment.  Using the ensemble Kalman filter to produce
153    input fields can necessitate even shorter timesteps.
154    
155  \item Line 39,  \item Line 56,
156  \begin{verbatim}  \begin{verbatim}
157  usingCartesianGrid=.TRUE.,  usingCylindricalGrid=.TRUE.,
158  \end{verbatim}  \end{verbatim}
159  This line requests that the simulation be performed in a  This line requests that the simulation be performed in a
160  Cartesian coordinate system.  cylindrical coordinate system.
161    
162  \item Line 41,  \item Line 57,
163  \begin{verbatim}  \begin{verbatim}
164  delX=60*20E3,  dXspacing=3,
165  \end{verbatim}  \end{verbatim}
166  This line sets the horizontal grid spacing between each x-coordinate line  This line sets the azimuthal grid spacing between each $x$-coordinate line
167  in the discrete grid. The syntax indicates that the discrete grid  in the discrete grid. The syntax indicates that the discrete grid
168  should be comprise of $60$ grid lines each separated by $20 \times 10^{3}m$  should be comprised of $120$ grid lines each separated by $3^{\circ}$.
169  ($20$~km).                                                                                
170    
171  \item Line 42,  \item Line 58,
172  \begin{verbatim}  \begin{verbatim}
173  delY=60*20E3,  dYspacing=0.01,
174  \end{verbatim}  \end{verbatim}
 This line sets the horizontal grid spacing between each y-coordinate line  
 in the discrete grid to $20 \times 10^{3}m$ ($20$~km).  
175    
176  \item Line 43,  This line sets the radial cylindrical grid spacing between each
177    $a$-coordinate line in the discrete grid to $1cm$.
178    
179    \item Line 59,
180  \begin{verbatim}  \begin{verbatim}
181  delZ=5000,  delZ=29*0.005,
182  \end{verbatim}  \end{verbatim}
 This line sets the vertical grid spacing between each z-coordinate line  
 in the discrete grid to $5000m$ ($5$~km).  
183    
184  \item Line 46,  This line sets the vertical grid spacing between each of 29
185    z-coordinate lines in the discrete grid to $0.005m$ ($5$~mm).
186    
187    \item Line 64,
188  \begin{verbatim}  \begin{verbatim}
189  bathyFile='topog.box'  bathyFile='bathyPol.bin',
190  \end{verbatim}  \end{verbatim}
191  This line specifies the name of the file from which the domain  This line specifies the name of the file from which the domain
192  bathymetry is read. This file is a two-dimensional ($x,y$) map of  ``bathymetry'' (tank depth) is read. This file is a two-dimensional
193    ($a,\phi$) map of
194  depths. This file is assumed to contain 64-bit binary numbers  depths. This file is assumed to contain 64-bit binary numbers
195  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$
196  coordinate varying fastest. The points are ordered from low coordinate  coordinate varying fastest. The points are ordered from low coordinate
197  to high coordinate for both axes. The units and orientation of the  to high coordinate for both axes.  The units and orientation of the
198  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
199  experiment, a depth of $0m$ indicates a solid wall and a depth  experiment, a depth of $0m$ indicates an area outside of the tank
200  of $-5000m$ indicates open ocean. The matlab program  and a depth
201  {\it input/gendata.m} shows an example of how to generate a  f $-0.145m$ indicates the tank itself.
 bathymetry file.  
202    
203    \item Line 65,
204    \begin{verbatim}
205    hydrogThetaFile='thetaPol.bin',
206    \end{verbatim}
207    This line specifies the name of the file from which the initial values
208    of temperature
209    are read. This file is a three-dimensional
210    ($x,y,z$) map and is enumerated and formatted in the same manner as the
211    bathymetry file.
212    
213  \item Line 49,  \item Lines 66 and 67
214  \begin{verbatim}  \begin{verbatim}
215  zonalWindFile='windx.sin_y'   tCylIn  = 0
216     tCylOut  = 20
217  \end{verbatim}  \end{verbatim}
218  This line specifies the name of the file from which the x-direction  These line specify the temperatures in degrees Celsius of the interior
219  surface wind stress is read. This file is also a two-dimensional  and exterior walls of the tank -- typically taken to be icewater on
220  ($x,y$) map and is enumerated and formatted in the same manner as the  the inside and room temperature on the outside.
221  bathymetry file. The matlab program {\it input/gendata.m} includes example  
 code to generate a valid {\bf zonalWindFile} file.    
222    
223  \end{itemize}  \end{itemize}
224    
225  \noindent other lines in the file {\it input/data} are standard values  \noindent Other lines in the file {\it input/data} are standard values
226  that are described in the MITgcm Getting Started and MITgcm Parameters  that are described in the MITgcm Getting Started and MITgcm Parameters
227  notes.  notes.
228    
229  \begin{small}  \begin{small}
230  \input{part3/case_studies/barotropic_gyre/input/data}  \input{part3/case_studies/rotating_tank/input/data}
231  \end{small}  \end{small}
232    
233  \subsubsection{File {\it input/data.pkg}}  \subsubsection{File {\it input/data.pkg}}
# Line 333  customizations for this experiment. Line 242  customizations for this experiment.
242  This file uses standard default values and does not contain  This file uses standard default values and does not contain
243  customizations for this experiment.  customizations for this experiment.
244    
245  \subsubsection{File {\it input/windx.sin\_y}}  \subsubsection{File {\it input/thetaPol.bin}}
246  \label{www:tutorials}  \label{www:tutorials}
247    
248  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$)
249  map of wind stress ,$\tau_{x}$, values. The units used are $Nm^{-2}$.  map of initial values of $\theta$ in degrees Celsius.  This particular
250  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
251  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.  
252    
253  \subsubsection{File {\it input/topog.box}}  \subsubsection{File {\it input/bathyPol.bin}}
254  \label{www:tutorials}  \label{www:tutorials}
255    
256    
257  The {\it input/topog.box} file specifies a two-dimensional ($x,y$)  The {\it input/bathyPol.bin} file specifies a two-dimensional ($x,y$)
258  map of depth values. For this experiment values are either  map of depth values. For this experiment values are either
259  $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
260  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
261  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.  
262    
263  \subsubsection{File {\it code/SIZE.h}}  \subsubsection{File {\it code/SIZE.h}}
264  \label{www:tutorials}  \label{www:tutorials}
# Line 364  Two lines are customized in this file fo Line 268  Two lines are customized in this file fo
268  \begin{itemize}  \begin{itemize}
269    
270  \item Line 39,  \item Line 39,
271  \begin{verbatim} sNx=60, \end{verbatim} this line sets  \begin{verbatim} sNx=120, \end{verbatim} this line sets
272  the lateral domain extent in grid points for the  the lateral domain extent in grid points for the
273  axis aligned with the x-coordinate.  axis aligned with the x-coordinate.
274    
275  \item Line 40,  \item Line 40,
276  \begin{verbatim} sNy=60, \end{verbatim} this line sets  \begin{verbatim} sNy=31, \end{verbatim} this line sets
277  the lateral domain extent in grid points for the  the lateral domain extent in grid points for the
278  axis aligned with the y-coordinate.  axis aligned with the y-coordinate.
279    
280  \end{itemize}  \end{itemize}
281    
282  \begin{small}  \begin{small}
283  \input{part3/case_studies/barotropic_gyre/code/SIZE.h}  \input{part3/case_studies/rotating_tank/code/SIZE.h}
284  \end{small}  \end{small}
285    
286  \subsubsection{File {\it code/CPP\_OPTIONS.h}}  \subsubsection{File {\it code/CPP\_OPTIONS.h}}

Legend:
Removed from v.1.4  
changed lines
  Added in v.1.13

  ViewVC Help
Powered by ViewVC 1.1.22