/[MITgcm]/manual/s_phys_pkgs/text/obcs.tex
ViewVC logotype

Diff of /manual/s_phys_pkgs/text/obcs.tex

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

revision 1.10 by mlosch, Mon Mar 14 15:01:28 2011 UTC revision 1.18 by mlosch, Wed Jun 15 13:40:53 2016 UTC
# Line 233  $j$ specifies the Northern/Southern OB p Line 233  $j$ specifies the Northern/Southern OB p
233  and for each meridional position $j=1,\ldots,N_y$, a zonal index  and for each meridional position $j=1,\ldots,N_y$, a zonal index
234  $i$ specifies the Eastern/Western OB position.  $i$ specifies the Eastern/Western OB position.
235  For Northern/Southern OB this defines an $N_x$-dimensional  For Northern/Southern OB this defines an $N_x$-dimensional
236  ``row'' array $\tt OB\_Jnorth(Ny)$ / $\tt OB\_Jsouth(Ny)$,  ``row'' array $\tt OB\_Jnorth(Nx)$ / $\tt OB\_Jsouth(Nx)$,
237  and an $N_y$-dimenisonal  and an $N_y$-dimenisonal
238  ``column'' array $\tt OB\_Ieast(Nx)$ / $\tt OB\_Iwest(Nx)$.  ``column'' array $\tt OB\_Ieast(Ny)$ / $\tt OB\_Iwest(Ny)$.
239  Positions determined in this way allows Northern/Southern  Positions determined in this way allows Northern/Southern
240  OBs to be at variable $j$ (or $y$) positions, and Eastern/Western  OBs to be at variable $j$ (or $y$) positions, and Eastern/Western
241  OBs at variable $i$ (or $x$) positions.  OBs at variable $i$ (or $x$) positions.
# Line 268  points relative to the Northern/Eastern Line 268  points relative to the Northern/Eastern
268  eg. $\tt OB\_Jnorth(3)=-1$  means that the point $\tt (3,Ny)$  eg. $\tt OB\_Jnorth(3)=-1$  means that the point $\tt (3,Ny)$
269  is a northern OB.  is a northern OB.
270    
271    \noindent\textbf{Simple examples:} For a model grid with $ N_{x}\times
272    N_{y} = 120\times144$ horizontal grid points with four open boundaries
273    along the four egdes of the domain, the simplest way of specifying the
274    boundary points in \code{data.obcs} is:
275    \begin{verbatim}
276      OB_Ieast = 144*-1,
277    # or OB_Ieast = 144*120,
278      OB_Iwest = 144*1,
279      OB_Jnorth = 120*-1,
280    # or OB_Jnorth = 120*144,
281      OB_Jsouth = 120*1,
282    \end{verbatim}
283    If only the first $50$ grid points of the southern boundary are
284    boundary points:
285    \begin{verbatim}
286      OB_Jsouth(1:50) = 50*1,
287    \end{verbatim}
288    
289  \noindent  \noindent
290  \textsf{Add special comments for case \#define NONLIN\_FRSURF,  \textsf{Add special comments for case \#define NONLIN\_FRSURF,
291  see obcs\_ini\_fixed.F}  see obcs\_ini\_fixed.F}
# Line 279  see obcs\_ini\_fixed.F} Line 297  see obcs\_ini\_fixed.F}
297    
298  \paragraph{OBCS\_READPARMS:} ~ \\  \paragraph{OBCS\_READPARMS:} ~ \\
299  Set OB positions through arrays  Set OB positions through arrays
300  {\tt OB\_Jnorth(Ny), OB\_Jsouth(Ny), OB\_Ieast(Nx), OB\_Iwest(Nx)},  {\tt OB\_Jnorth(Nx), OB\_Jsouth(Nx), OB\_Ieast(Ny), OB\_Iwest(Ny)},
301  and runtime flags (see Table \ref{tab:pkg:obcs:runtime_flags}).  and runtime flags (see Table \ref{tab:pkg:obcs:runtime_flags}).
302    
303  \paragraph{OBCS\_CALC:} ~ \\  \paragraph{OBCS\_CALC:} ~ \\
# Line 356  runtime flags \code{externForcingPeriod} Line 374  runtime flags \code{externForcingPeriod}
374  in \code{data}, see \code{verification/exp4} for an example.  in \code{data}, see \code{verification/exp4} for an example.
375    
376  \paragraph{OBCS\_CALC\_STEVENS:} ~ \\  \paragraph{OBCS\_CALC\_STEVENS:} ~ \\
377  (THE IMPLEMENTATION OF THESE BOUNDARY CONDITIONS IS NOT COMPLETE. SO  (THE IMPLEMENTATION OF THESE BOUNDARY CONDITIONS IS NOT
378  FAR ONLY EASTERN AND WESTERN BOUNDARIES ARE SUPPORTED.) \\  COMPLETE. PASSIVE TRACERS, SEA ICE AND NON-LINEAR FREE SURFACE ARE NOT
379    SUPPORTED PROPERLY.) \\
380  The boundary conditions following \citet{stevens:90} require the  The boundary conditions following \citet{stevens:90} require the
381  vertically averaged normal velocity (originally specified as a stream  vertically averaged normal velocity (originally specified as a stream
382  function along the open boundary) $\bar{u}_{ob}$ and the tracer fields  function along the open boundary) $\bar{u}_{ob}$ and the tracer fields
383  $\chi_{ob}$ (note: passive tracers are currently not implemented and  $\chi_{ob}$ (note: passive tracers are currently not implemented and
384  the code stops when package \code{ptracers} is used together with this  the code stops when package \code{ptracers} is used together with this
385  option). Currently, the code vertically averages the normal velocity  option). Currently, the code vertically averages the normal velocity
386  as specified. From these prescribed values the code computes the  as specified in \code{OB[E,W]u} or \code{OB[N,S]v}. From these
387  boundary values for the next timestep $n+1$ as follows (as an  prescribed values the code computes the boundary values for the next
388  example, we use the notation for an eastern or western boundary):  timestep $n+1$ as follows (as an example, we use the notation for an
389    eastern or western boundary):
390  \begin{itemize}  \begin{itemize}
391  \item $u^{n+1}(y,z) = \bar{u}_{ob}(y) + u'(y,z)$, where $u_{n}'$ is the  \item $u^{n+1}(y,z) = \bar{u}_{ob}(y) + (u')^{n}(y,z)$, where
392    deviation from the vertically averaged velocity one grid point    $(u')^{n}$ is the deviation from the vertically averaged velocity at
393    inward from the boundary.    timestep $n$ on the boundary. $(u')^{n}$ is computed in the previous
394      time step $n$ from the intermediate velocity $u^*$ prior to the
395      correction step (see section \ref{sec:time_stepping}, e.g.,
396      eq.\,(\ref{eq:ustar-backward-free-surface})).
397      % and~(\ref{eq:vstar-backward-free-surface})).
398      (This velocity is not
399      available at the beginning of the next time step $n+1$, when
400      S/R~OBCS\_CALC/OBCS\_CALC\_STEVENS are called, therefore it needs to
401      be saved in S/R~DYNAMICS by calling S/R~OBCS\_SAVE\_UV\_N and also
402      stored in a separate restart files
403      \verb+pickup_stevens[N/S/E/W].${iteration}.data+)
404    %  Define CPP-flag OBCS\_STEVENS\_USE\_INTERIOR\_VELOCITY to use the
405    %  velocity one grid point inward from the boundary.
406  \item If $u^{n+1}$ is directed into the model domain, the boudary  \item If $u^{n+1}$ is directed into the model domain, the boudary
407    value for tracer $\chi$ is restored to the prescribed values:    value for tracer $\chi$ is restored to the prescribed values:
408    \[\chi^{n+1} =   \chi^{n} + \frac{\Delta{t}}{\tau_\chi} (\chi_{ob} -    \[\chi^{n+1} =   \chi^{n} + \frac{\Delta{t}}{\tau_\chi} (\chi_{ob} -
409    \chi^{n}),\] where $\tau_\chi$ is the relaxation time    \chi^{n}),\] where $\tau_\chi$ is the relaxation time
410    scale \texttt{T/SrelaxStevens}.    scale \texttt{T/SrelaxStevens}. The new $\chi^{n+1}$ is then subject
411  \item If $u^{n+1}$ is directed out of the model domain, the tracer is    to the advection by $u^{n+1}$.
412    advected out of the domain with $u^{n+1}+c$, where $c$ is a phase  \item If $u^{n+1}$ is directed out of the model domain, the tracer
413    velocity estimated as    $\chi^{n+1}$ on the boundary at timestep $n+1$ is estimated from
414    $\frac{1}{2}\frac{\partial\chi}{\partial{t}}/\frac{\partial\chi}{\partial{x}}$.    advection out of the domain with $u^{n+1}+c$, where $c$ is
415      a phase velocity estimated as
416      $\frac{1}{2}\frac{\partial\chi}{\partial{t}}/\frac{\partial\chi}{\partial{x}}$. The
417      numerical scheme is (as an example for an eastern boundary):
418      \[\chi_{i_{b},j,k}^{n+1} =   \chi_{i_{b},j,k}^{n} + \Delta{t}
419      (u^{n+1}+c)_{i_{b},j,k}\frac{\chi_{i_{b},j,k}^{n}
420        - \chi_{i_{b}-1,j,k}^{n}}{\Delta{x}_{i_{b},j}^{C}}\mbox{, if }u_{i_{b},j,k}^{n+1}>0,
421      \] where $i_{b}$ is the boundary index.\\
422    For test purposes, the phase velocity contribution or the entire    For test purposes, the phase velocity contribution or the entire
423    advection can    advection can be turned off by setting the corresponding parameters
   be turned off by setting the corresponding parameters  
424    \texttt{useStevensPhaseVel} and \texttt{useStevensAdvection} to    \texttt{useStevensPhaseVel} and \texttt{useStevensAdvection} to
425    \texttt{.FALSE.}.\end{itemize} See \citet{stevens:90} for details.    \texttt{.FALSE.}.
426    \end{itemize}
427    See \citet{stevens:90} for details. With this boundary condition
428    specifying the exact net transport across the open boundary is simple,
429    so that balancing the flow with (S/R~OBCS\_BALANCE\_FLOW, see next
430    paragraph) is usually not necessary.
431    
432  \paragraph{OBCS\_BALANCE\_FLOW:} ~ \\  \paragraph{OBCS\_BALANCE\_FLOW:} ~ \\
433  %  %
# Line 400  This behavior can be controlled with the Line 443  This behavior can be controlled with the
443  how the net inflow is redistributed as small correction velocities  how the net inflow is redistributed as small correction velocities
444  between the individual sections. A value ``\code{-1}'' balances an  between the individual sections. A value ``\code{-1}'' balances an
445  individual boundary, values $>0$ determine the relative size of the  individual boundary, values $>0$ determine the relative size of the
446  correction. For example, with the values  correction. For example, the values
447  \begin{tabbing}  \begin{tabbing}
448   \code{OBCS\_balanceFac\_E}\=\code{ = 1.,} \\   \code{OBCS\_balanceFacE}\code{ = 1.,} \\
449   \code{OBCS\_balanceFac\_W}\>\code{ = -1.,} \\   \code{OBCS\_balanceFacW}\code{ = -1.,} \\
450   \code{OBCS\_balanceFac\_N}\>\code{ = 2.,} \\   \code{OBCS\_balanceFacN}\code{ = 2.,} \\
451   \code{OBCS\_balanceFac\_S}\>\code{ = 0.,}   \code{OBCS\_balanceFacS}\code{ = 0.,}
452  \end{tabbing}  \end{tabbing}
453  will make the model  make the model
454  \begin{itemize}  \begin{itemize}
455  \item correct Western \code{OBWu} by substracting a uniform velocity to  \item correct Western \code{OBWu} by substracting a uniform velocity to
456  ensure zero net transport through Western OB  ensure zero net transport through the Western open boundary;
457  \item correct Eastern and Northern normal flow, with the Northern  \item correct Eastern and Northern normal flow, with the Northern
458    velocity correction two times larger than Eastern correction, but    velocity correction two times larger than the Eastern correction, but
459    not the Southern normal flow to ensure that the total inflow through    \emph{not} the Southern normal flow, to ensure that the total inflow through
460    East, Northern, and Southern OB is balanced    East, Northern, and Southern open boundary is balanced.
461  \end{itemize}  \end{itemize}
462    
463  The old method of balancing the net flow for all sections individually  The old method of balancing the net flow for all sections individually
# Line 427  velocity is: Line 470  velocity is:
470  u(y,z) - \int_{\mbox{western boundary}}u\,dy\,dz \approx OBNu(j,k) - \sum_{j,k}  u(y,z) - \int_{\mbox{western boundary}}u\,dy\,dz \approx OBNu(j,k) - \sum_{j,k}
471  OBNu(j,k) h_{w}(i_{b},j,k)\Delta{y_G(i_{b},j)}\Delta{z(k)}.  OBNu(j,k) h_{w}(i_{b},j,k)\Delta{y_G(i_{b},j)}\Delta{z(k)}.
472  \]  \]
473  This also ensures a net total inflow of zero through all boundaries to  This also ensures a net total inflow of zero through all boundaries,
474  make it a useful flag for preventing infinite sea-level change within  but this combination of flags is \emph{not} useful if you want to
475  the domain, but this combination of flags is \emph{not} useful if you  simulate, say, a sector of the Southern Ocean with a strong ACC
476  want to simulate, say, a sector of the Southern Ocean with a strong  entering through the western and leaving through the eastern boundary,
477  ACC entering through the western and leaving through the eastern  because the value of ``\code{-1}'' for these flags will make sure that
478  boundary, because the value of ``\code{-1}'' for these flags will make  the strong inflow is removed. Clearly, gobal balancing with
479  sure that the strong inflow is removed.  \code{OBCS\_balanceFacE/W/N/S} $\ge0$ is the preferred method.
480    
481  \paragraph{OBCS\_APPLY\_*:} ~ \\  \paragraph{OBCS\_APPLY\_*:} ~ \\
482  ~  ~
# Line 455  G_{\chi}^{\mbox{(sponge)}} = Line 498  G_{\chi}^{\mbox{(sponge)}} =
498  where $\chi$ is the model variable (U/V/T/S) in the interior,  where $\chi$ is the model variable (U/V/T/S) in the interior,
499  $\chi_{BC}$ the boundary value, $L$ the thickness of the sponge layer  $\chi_{BC}$ the boundary value, $L$ the thickness of the sponge layer
500  (runtime parameter \code{spongeThickness} in number of grid points),  (runtime parameter \code{spongeThickness} in number of grid points),
501  $\delta{L}\in[0,L]$ ($l\in[0,1]$) the distance from the boundary (also in grid points), and  $\delta{L}\in[0,L]$ ($\frac{\delta{L}}{L}=l\in[0,1]$) the distance from the boundary (also in grid points), and
502  $\tau_{b}$ (runtime parameters \code{Urelaxobcsbound} and  $\tau_{b}$ (runtime parameters \code{Urelaxobcsbound} and
503  \code{Vrelaxobcsbound}) and $\tau_{i}$ (runtime parameters  \code{Vrelaxobcsbound}) and $\tau_{i}$ (runtime parameters
504  \code{Urelaxobcsinner} and \code{Vrelaxobcsinner}) the relaxation time  \code{Urelaxobcsinner} and \code{Vrelaxobcsinner}) the relaxation time

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

  ViewVC Help
Powered by ViewVC 1.1.22