11 |
\subsubsection{Introduction |
\subsubsection{Introduction |
12 |
\label{sec:pkg:obcs:intro}} |
\label{sec:pkg:obcs:intro}} |
13 |
|
|
14 |
|
The OBCS-package is fundamental to regional ocean modelling with the |
15 |
|
MITgcm, but because there are so many details to be considered in |
16 |
|
regional ocean modelling that this package cannot accomodate all |
17 |
|
imaginable and possible options. Therefore, for a regional simulation |
18 |
|
with very particular details, it is recommended to familiarize oneself |
19 |
|
not only with the compile- and runtime-options of this package, but |
20 |
|
also with the code itself. In many cases it will be necessary to adapt |
21 |
|
the obcs-code (in particular \code{S/R OBCS\_CALC}) to the application |
22 |
|
in question; in these cases the obcs-package (together with the |
23 |
|
rbcs-package, section \ref{sec:pkg:rbcs}) is a very |
24 |
|
useful infrastructure for implementing special regional models. |
25 |
|
|
26 |
%---------------------------------------------------------------------- |
%---------------------------------------------------------------------- |
27 |
|
|
301 |
use prescribed boundary fields to compute Stevens boundary conditions. |
use prescribed boundary fields to compute Stevens boundary conditions. |
302 |
\end{itemize} |
\end{itemize} |
303 |
|
|
|
|
|
304 |
\paragraph{ORLANSKI:} ~ \\ |
\paragraph{ORLANSKI:} ~ \\ |
305 |
% |
% |
306 |
Orlanski radiation conditions \citep{orl:76}, examples can be found in |
Orlanski radiation conditions \citep{orl:76}, examples can be found in |
326 |
\item If non-hydrostatic dynamics are used |
\item If non-hydrostatic dynamics are used |
327 |
(\ref{sec:non-hydrostatic}), additional files |
(\ref{sec:non-hydrostatic}), additional files |
328 |
\code{OB[N/S/E/W]wFile} for the vertical velocity $w$ with |
\code{OB[N/S/E/W]wFile} for the vertical velocity $w$ with |
329 |
dimensions $(N_{x/y}\times N_r\times\mbox{time levels})$ may be |
dimensions $(N_{x/y}\times N_r\times\mbox{time levels})$ can be |
330 |
specified. |
specified. |
331 |
\item If \code{useSEAICE=.TRUE.} then additional files |
\item If \code{useSEAICE=.TRUE.} then additional files |
332 |
\code{OB[N/S/E/W][a,h,sl,sn,uice,vice]} for sea ice area, thickness |
\code{OB[N/S/E/W][a,h,sl,sn,uice,vice]} for sea ice area, thickness |
333 |
(\code{HEFF}), seaice salinity, snow and ice velocities |
(\code{HEFF}), seaice salinity, snow and ice velocities |
334 |
$(N_{x/y}\times\mbox{time levels})$ may be specified. |
$(N_{x/y}\times\mbox{time levels})$ can be specified. |
335 |
\end{itemize} |
\end{itemize} |
336 |
When the \code{exf}-package is used, the time levels are controlled |
As in \code{S/R external\_fields\_load} or the \code{exf}-package, the |
337 |
for each boundary separately in the same way as the \code{exf}-fields |
code reads two time levels for each variable, e.g.\ \code{OBNu0} and |
338 |
in \code{data.exf}, namelist \code{EXF\_NML\_OBCS}. The runtime flags |
\code{OBNu1}, and interpolates linearly between these time levels to |
339 |
|
obtain the value \code{OBNu} at the current model time (step). When the |
340 |
|
\code{exf}-package is used, the time levels are controlled for each |
341 |
|
boundary separately in the same way as the \code{exf}-fields in |
342 |
|
\code{data.exf}, namelist \code{EXF\_NML\_OBCS}. The runtime flags |
343 |
follow the above naming conventions, e.g. for the western boundary the |
follow the above naming conventions, e.g. for the western boundary the |
344 |
corresponding flags are \code{OBCWstartdate1/2} and |
corresponding flags are \code{OBCWstartdate1/2} and |
345 |
\code{OBCWperiod}. Sea-ice boundary values are controlled separately |
\code{OBCWperiod}. Sea-ice boundary values are controlled separately |
346 |
with \code{siobWstartdate1/2} and \code{siobWperiod}. |
with \code{siobWstartdate1/2} and \code{siobWperiod}. When the |
347 |
When the \code{exf}-package is not used, the time levels are |
\code{exf}-package is not used, the time levels are controlled by the |
348 |
controlled by the runtime flags \code{externForcingPeriod} and |
runtime flags \code{externForcingPeriod} and \code{externForcingCycle} |
349 |
\code{externForcingCycle} in \code{data}, see \code{verification/exp4} |
in \code{data}, see \code{verification/exp4} for an example. |
|
for an example. |
|
350 |
|
|
351 |
\paragraph{OBCS\_CALC\_STEVENS:} ~ \\ |
\paragraph{OBCS\_CALC\_STEVENS:} ~ \\ |
352 |
(THE IMPLEMENTATION OF THESE BOUNDARY CONDITIONS IS NOT COMPLETE. SO |
(THE IMPLEMENTATION OF THESE BOUNDARY CONDITIONS IS NOT COMPLETE. SO |
379 |
\texttt{useStevensPhaseVel} and \texttt{useStevensAdvection} to |
\texttt{useStevensPhaseVel} and \texttt{useStevensAdvection} to |
380 |
\texttt{.FALSE.}.\end{itemize} See \citet{stevens:90} for details. |
\texttt{.FALSE.}.\end{itemize} See \citet{stevens:90} for details. |
381 |
|
|
382 |
\paragraph{OBCS\_BALANCE} ~ \\ |
\paragraph{OBCS\_BALANCE:} ~ \\ |
383 |
% |
% |
384 |
~ |
This is not (yet) a separate routine in the code, but it may become |
385 |
|
one to make this code more transparent. The code is part of |
386 |
|
\code{S/R~OBCS\_CALC}. When turned on (\code{ALLOW\_OBCS\_BALANCE} |
387 |
|
defined in \code{OBCS\_OPTIONS.h} and \code{useOBCSbalance=.true.} in |
388 |
|
\code{data.obcs/OBCS\_PARM01}), the normal velocities across each of |
389 |
|
the four boundaries are modified separately, so that the net volume |
390 |
|
transport across \emph{each} boundary is zero. For example, for the |
391 |
|
western boundary at $i=i_{b}$, the modified velocity is: |
392 |
|
\[ |
393 |
|
u(y,z) - \int_{\mbox{western boundary}}u\,dy\,dz \approx OBNu(j,k) - \sum_{j,k} |
394 |
|
OBNu(j,k) h_{w}(i_{b},j,k)\Delta{y_G(i_{b},j)}\Delta{z(k)}. |
395 |
|
\] |
396 |
|
This also ensures a net total inflow of zero through all boundaries to |
397 |
|
make it a useful flag to prevent infinite sea-level change within the |
398 |
|
domain, but the flag is \emph{not} useful if you want to simulate, |
399 |
|
say, a sector of the Southern Ocean with a strong ACC entering through |
400 |
|
the western and leaving through the eastern boundary, because this |
401 |
|
flag will make sure that the strong inflow is removed. It is |
402 |
|
recommended that this part of the code is adapted to the particular |
403 |
|
needs of the simulation in question. |
404 |
|
|
405 |
\paragraph{OBCS\_APPLY\_*:} ~ \\ |
\paragraph{OBCS\_APPLY\_*:} ~ \\ |
406 |
~ |
~ |
456 |
%---------------------------------------------------------------------- |
%---------------------------------------------------------------------- |
457 |
|
|
458 |
\subsubsection{Reference experiments} |
\subsubsection{Reference experiments} |
459 |
|
In the directory \code{verifcation}, the following experiments use |
460 |
|
\code{obcs}: |
461 |
|
\begin{itemize} |
462 |
|
\item \code{exp4}: box with 4 open boundaries, simulating flow over a |
463 |
|
Gaussian bump based on \citet{adcroft:97}, also tests |
464 |
|
Stevens-boundary conditions; |
465 |
|
\item \code{dome}: based on ``Denmark Strait Overflow Model |
466 |
|
Experiment'', use Orlanski-BCs; |
467 |
|
\item \code{internal\_wave}: uses a heavily modified \code{S/R~OBCS\_CALC} |
468 |
|
\item \code{seaice\_obcs}: simple example who to use the sea-ice |
469 |
|
related code, based on \code{lab\_sea}; |
470 |
|
\item \code{tutorial\_plume\_on\_slope}: uses Orlanski-BCs, see also |
471 |
|
section~\ref{sec:eg-gravityplume}. |
472 |
|
\end{itemize} |
473 |
|
|
474 |
|
|
475 |
|
|
481 |
\label{sec:pkg:obcs:experiments} |
\label{sec:pkg:obcs:experiments} |
482 |
|
|
483 |
\begin{itemize} |
\begin{itemize} |
484 |
\item{Ocean experiment in exp4 verification directory. } |
\item \code{tutorial\_plume\_on\_slope} (section~\ref{sec:eg-gravityplume}) |
485 |
\end{itemize} |
\end{itemize} |
486 |
|
|
487 |
|
|