New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 12143 for NEMO/branches/2019/ENHANCE-02_ISF_nemo/doc/latex/NEMO/subfiles/chap_LBC.tex – NEMO

Ignore:
Timestamp:
2019-12-10T12:57:49+01:00 (4 years ago)
Author:
mathiot
Message:

update ENHANCE-02_ISF_nemo to 12072 (sette in progress)

Location:
NEMO/branches/2019/ENHANCE-02_ISF_nemo/doc
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2019/ENHANCE-02_ISF_nemo/doc

    • Property svn:externals set to
      ^/utils/badges badges
      ^/utils/logos logos
  • NEMO/branches/2019/ENHANCE-02_ISF_nemo/doc/latex

    • Property svn:ignore deleted
  • NEMO/branches/2019/ENHANCE-02_ISF_nemo/doc/latex/NEMO

    • Property svn:externals set to
      ^/utils/figures/NEMO figures
  • NEMO/branches/2019/ENHANCE-02_ISF_nemo/doc/latex/NEMO/subfiles

    • Property svn:ignore
      •  

        old new  
        1 *.aux 
        2 *.bbl 
        3 *.blg 
        4 *.dvi 
        5 *.fdb* 
        6 *.fls 
        7 *.idx 
         1*.ind 
        82*.ilg 
        9 *.ind 
        10 *.log 
        11 *.maf 
        12 *.mtc* 
        13 *.out 
        14 *.pdf 
        15 *.toc 
        16 _minted-* 
  • NEMO/branches/2019/ENHANCE-02_ISF_nemo/doc/latex/NEMO/subfiles/chap_LBC.tex

    r11179 r12143  
    22 
    33\begin{document} 
    4 % ================================================================ 
    5 % Chapter — Lateral Boundary Condition (LBC)  
    6 % ================================================================ 
     4 
    75\chapter{Lateral Boundary Condition (LBC)} 
    86\label{chap:LBC} 
    97 
    10 \minitoc 
    11  
    12 \newpage 
    13  
    14 %gm% add here introduction to this chapter 
    15  
    16 % ================================================================ 
    17 % Boundary Condition at the Coast 
    18 % ================================================================ 
    19 \section[Boundary condition at the coast (\texttt{rn\_shlat})] 
    20 {Boundary condition at the coast (\protect\np{rn\_shlat})} 
     8\thispagestyle{plain} 
     9 
     10\chaptertoc 
     11 
     12\paragraph{Changes record} ~\\ 
     13 
     14{\footnotesize 
     15  \begin{tabularx}{\textwidth}{l||X|X} 
     16    Release & Author(s) & Modifications \\ 
     17    \hline 
     18    {\em   4.0} & {\em ...} & {\em ...} \\ 
     19    {\em   3.6} & {\em ...} & {\em ...} \\ 
     20    {\em   3.4} & {\em ...} & {\em ...} \\ 
     21    {\em <=3.4} & {\em ...} & {\em ...} 
     22  \end{tabularx} 
     23} 
     24 
     25\clearpage 
     26 
     27\cmtgm{Add here introduction to this chapter} 
     28 
     29%% ================================================================================================= 
     30\section[Boundary condition at the coast (\forcode{rn_shlat})]{Boundary condition at the coast (\protect\np{rn_shlat}{rn\_shlat})} 
    2131\label{sec:LBC_coast} 
    22 %--------------------------------------------nam_lbc------------------------------------------------------- 
    23  
    24 \nlst{namlbc}  
    25 %-------------------------------------------------------------------------------------------------------------- 
    26  
    27 %The lateral ocean boundary conditions contiguous to coastlines are Neumann conditions for heat and salt (no flux across boundaries) and Dirichlet conditions for momentum (ranging from free-slip to "strong" no-slip). They are handled automatically by the mask system (see \autoref{subsec:DOM_msk}).  
    28  
    29 %OPA allows land and topography grid points in the computational domain due to the presence of continents or islands, and includes the use of a full or partial step representation of bottom topography. The computation is performed over the whole domain, \ie we do not try to restrict the computation to ocean-only points. This choice has two motivations. Firstly, working on ocean only grid points overloads the code and harms the code readability. Secondly, and more importantly, it drastically reduces the vector portion of the computation, leading to a dramatic increase of CPU time requirement on vector computers.  The current section describes how the masking affects the computation of the various terms of the equations with respect to the boundary condition at solid walls. The process of defining which areas are to be masked is described in \autoref{subsec:DOM_msk}. 
    30  
    31 Options are defined through the \ngn{namlbc} namelist variables. 
     32 
     33\begin{listing} 
     34  \nlst{namlbc} 
     35  \caption{\forcode{&namlbc}} 
     36  \label{lst:namlbc} 
     37\end{listing} 
     38 
     39%The lateral ocean boundary conditions contiguous to coastlines are Neumann conditions for heat and salt 
     40%(no flux across boundaries) and Dirichlet conditions for momentum (ranging from free-slip to "strong" no-slip). 
     41%They are handled automatically by the mask system (see \autoref{subsec:DOM_msk}). 
     42 
     43%OPA allows land and topography grid points in the computational domain due to the presence of continents or islands, 
     44%and includes the use of a full or partial step representation of bottom topography. 
     45%The computation is performed over the whole domain, \ie\ we do not try to restrict the computation to ocean-only points. 
     46%This choice has two motivations. 
     47%Firstly, working on ocean only grid points overloads the code and harms the code readability. 
     48%Secondly, and more importantly, it drastically reduces the vector portion of the computation, 
     49%leading to a dramatic increase of CPU time requirement on vector computers. 
     50%The current section describes how the masking affects the computation of the various terms of the equations 
     51%with respect to the boundary condition at solid walls. 
     52%The process of defining which areas are to be masked is described in \autoref{subsec:DOM_msk}. 
     53 
     54Options are defined through the \nam{lbc}{lbc} namelist variables. 
    3255The discrete representation of a domain with complex boundaries (coastlines and bottom topography) leads to 
    3356arrays that include large portions where a computation is not required as the model variables remain at zero. 
     
    4164Since most of the boundary conditions consist of a zero flux across the solid boundaries, 
    4265they can be simply applied by multiplying variables by the correct mask arrays, 
    43 \ie the mask array of the grid point where the flux is evaluated. 
     66\ie\ the mask array of the grid point where the flux is evaluated. 
    4467For example, the heat flux in the \textbf{i}-direction is evaluated at $u$-points. 
    4568Evaluating this quantity as, 
    4669 
    4770\[ 
    48   % \label{eq:lbc_aaaa} 
     71  % \label{eq:LBC_aaaa} 
    4972  \frac{A^{lT} }{e_1 }\frac{\partial T}{\partial i}\equiv \frac{A_u^{lT} 
    5073  }{e_{1u} } \; \delta_{i+1 / 2} \left[ T \right]\;\;mask_u 
     
    5275(where mask$_{u}$ is the mask array at a $u$-point) ensures that the heat flux is zero inside land and 
    5376at the boundaries, since mask$_{u}$ is zero at solid boundaries which in this case are defined at $u$-points 
    54 (normal velocity $u$ remains zero at the coast) (\autoref{fig:LBC_uv}).  
    55  
    56 %>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
     77(normal velocity $u$ remains zero at the coast) (\autoref{fig:LBC_uv}). 
     78 
    5779\begin{figure}[!t] 
    58   \begin{center} 
    59     \includegraphics[width=\textwidth]{Fig_LBC_uv} 
    60     \caption{ 
    61       \protect\label{fig:LBC_uv} 
    62       Lateral boundary (thick line) at T-level. 
    63       The velocity normal to the boundary is set to zero. 
    64     } 
    65   \end{center} 
     80  \centering 
     81  \includegraphics[width=0.66\textwidth]{LBC_uv} 
     82  \caption[Lateral boundary at $T$-level]{ 
     83    Lateral boundary (thick line) at T-level. 
     84    The velocity normal to the boundary is set to zero.} 
     85  \label{fig:LBC_uv} 
    6686\end{figure} 
    67 %>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
    6887 
    6988For momentum the situation is a bit more complex as two boundary conditions must be provided along the coast 
     
    7998and is required in order to compute the vorticity at the coast. 
    8099Four different types of lateral boundary condition are available, 
    81 controlled by the value of the \np{rn\_shlat} namelist parameter 
     100controlled by the value of the \np{rn_shlat}{rn\_shlat} namelist parameter 
    82101(The value of the mask$_{f}$ array along the coastline is set equal to this parameter). 
    83102These are: 
    84103 
    85 %>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
    86104\begin{figure}[!p] 
    87   \begin{center} 
    88     \includegraphics[width=\textwidth]{Fig_LBC_shlat} 
    89     \caption{ 
    90       \protect\label{fig:LBC_shlat} 
    91       lateral boundary condition 
    92       (a) free-slip ($rn\_shlat=0$); 
    93       (b) no-slip ($rn\_shlat=2$); 
    94       (c) "partial" free-slip ($0<rn\_shlat<2$) and 
    95       (d) "strong" no-slip ($2<rn\_shlat$). 
    96       Implied "ghost" velocity inside land area is display in grey. 
    97     } 
    98   \end{center} 
     105  \centering 
     106  \includegraphics[width=0.66\textwidth]{LBC_shlat} 
     107  \caption[Lateral boundary conditions]{ 
     108    Lateral boundary conditions 
     109    (a) free-slip                       (\protect\np[=0]{rn_shlat}{rn\_shlat}); 
     110    (b) no-slip                         (\protect\np[=2]{rn_shlat}{rn\_shlat}); 
     111    (c) "partial" free-slip (\forcode{0<}\protect\np[<2]{rn_shlat}{rn\_shlat}) and 
     112    (d) "strong" no-slip    (\forcode{2<}\protect\np{rn_shlat}{rn\_shlat}). 
     113    Implied "ghost" velocity inside land area is display in grey.} 
     114  \label{fig:LBC_shlat} 
    99115\end{figure} 
    100 %>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
    101116 
    102117\begin{description} 
    103118 
    104 \item[free-slip boundary condition (\np{rn\_shlat}\forcode{ = 0}):] the tangential velocity at 
     119\item [free-slip boundary condition ({\np[=0]{rn_shlat}{rn\_shlat}})] the tangential velocity at 
    105120  the coastline is equal to the offshore velocity, 
    106   \ie the normal derivative of the tangential velocity is zero at the coast, 
     121  \ie\ the normal derivative of the tangential velocity is zero at the coast, 
    107122  so the vorticity: mask$_{f}$ array is set to zero inside the land and just at the coast 
    108123  (\autoref{fig:LBC_shlat}-a). 
    109124 
    110 \item[no-slip boundary condition (\np{rn\_shlat}\forcode{ = 2}):] the tangential velocity vanishes at the coastline. 
     125\item [no-slip boundary condition ({\np[=2]{rn_shlat}{rn\_shlat}})] the tangential velocity vanishes at the coastline. 
    111126  Assuming that the tangential velocity decreases linearly from 
    112127  the closest ocean velocity grid point to the coastline, 
     
    114129  the closest ocean velocity gridpoint were of the same magnitude but in the opposite direction 
    115130  (\autoref{fig:LBC_shlat}-b). 
    116   Therefore, the vorticity along the coastlines is given by:  
     131  Therefore, the vorticity along the coastlines is given by: 
    117132 
    118133  \[ 
     
    123138  the no-slip boundary condition, simply by multiplying it by the mask$_{f}$ : 
    124139  \[ 
    125     % \label{eq:lbc_bbbb} 
     140    % \label{eq:LBC_bbbb} 
    126141    \zeta \equiv \frac{1}{e_{1f} {\kern 1pt}e_{2f} }\left( {\delta_{i+1/2} 
    127142        \left[ {e_{2v} \,v} \right]-\delta_{j+1/2} \left[ {e_{1u} \,u} \right]} 
     
    129144  \] 
    130145 
    131 \item["partial" free-slip boundary condition (0$<$\np{rn\_shlat}$<$2):] the tangential velocity at 
    132   the coastline is smaller than the offshore velocity, \ie there is a lateral friction but 
     146\item ["partial" free-slip boundary condition (0$<$\np{rn_shlat}{rn\_shlat}$<$2)] the tangential velocity at 
     147  the coastline is smaller than the offshore velocity, \ie\ there is a lateral friction but 
    133148  not strong enough to make the tangential velocity at the coast vanish (\autoref{fig:LBC_shlat}-c). 
    134149  This can be selected by providing a value of mask$_{f}$ strictly inbetween $0$ and $2$. 
    135150 
    136 \item["strong" no-slip boundary condition (2$<$\np{rn\_shlat}):] the viscous boundary layer is assumed to 
     151\item ["strong" no-slip boundary condition (2$<$\np{rn_shlat}{rn\_shlat})] the viscous boundary layer is assumed to 
    137152  be smaller than half the grid size (\autoref{fig:LBC_shlat}-d). 
    138153  The friction is thus larger than in the no-slip case. 
     
    140155\end{description} 
    141156 
    142 Note that when the bottom topography is entirely represented by the $s$-coor-dinates (pure $s$-coordinate), 
     157Note that when the bottom topography is entirely represented by the $s$-coordinates (pure $s$-coordinate), 
    143158the lateral boundary condition on tangential velocity is of much less importance as 
    144159it is only applied next to the coast where the minimum water depth can be quite shallow. 
    145160 
    146  
    147 % ================================================================ 
    148 % Boundary Condition around the Model Domain 
    149 % ================================================================ 
    150 \section[Model domain boundary condition (\texttt{jperio})] 
    151 {Model domain boundary condition (\protect\np{jperio})} 
     161%% ================================================================================================= 
     162\section[Model domain boundary condition (\forcode{jperio})]{Model domain boundary condition (\protect\jp{jperio})} 
    152163\label{sec:LBC_jperio} 
    153164 
     
    155166closed, cyclic east-west, cyclic north-south, a north-fold, and combination closed-north fold or 
    156167bi-cyclic east-west and north-fold. 
    157 The north-fold boundary condition is associated with the 3-pole ORCA mesh.  
    158  
    159 % ------------------------------------------------------------------------------------------------------------- 
    160 %        Closed, cyclic (\np{jperio}\forcode{ = 0..2})  
    161 % ------------------------------------------------------------------------------------------------------------- 
    162 \subsection[Closed, cyclic (\forcode{jperio = [0127]})] 
    163 {Closed, cyclic (\protect\np{jperio}\forcode{ = [0127]})} 
     168The north-fold boundary condition is associated with the 3-pole ORCA mesh. 
     169 
     170%% ================================================================================================= 
     171\subsection[Closed, cyclic (\forcode{=0,1,2,7})]{Closed, cyclic (\protect\jp{jperio}\forcode{=0,1,2,7})} 
    164172\label{subsec:LBC_jperio012} 
    165173 
    166174The choice of closed or cyclic model domain boundary condition is made by 
    167 setting \np{jperio} to 0, 1, 2 or 7 in namelist \ngn{namcfg}. 
     175setting \jp{jperio} to 0, 1, 2 or 7 in namelist \nam{cfg}{cfg}. 
    168176Each time such a boundary condition is needed, it is set by a call to routine \mdl{lbclnk}. 
    169177The computation of momentum and tracer trends proceeds from $i=2$ to $i=jpi-1$ and from $j=2$ to $j=jpj-1$, 
    170 \ie in the model interior. 
     178\ie\ in the model interior. 
    171179To choose a lateral model boundary condition is to specify the first and last rows and columns of 
    172 the model variables.  
     180the model variables. 
    173181 
    174182\begin{description} 
    175183 
    176 \item[For closed boundary (\np{jperio}\forcode{ = 0})], 
    177   solid walls are imposed at all model boundaries: 
     184\item [For closed boundary (\jp{jperio}\forcode{=0})], solid walls are imposed at all model boundaries: 
    178185  first and last rows and columns are set to zero. 
    179186 
    180 \item[For cyclic east-west boundary (\np{jperio}\forcode{ = 1})], 
    181   first and last rows are set to zero (closed) whilst the first column is set to 
     187\item [For cyclic east-west boundary (\jp{jperio}\forcode{=1})], first and last rows are set to zero (closed) whilst the first column is set to 
    182188  the value of the last-but-one column and the last column to the value of the second one 
    183189  (\autoref{fig:LBC_jperio}-a). 
    184190  Whatever flows out of the eastern (western) end of the basin enters the western (eastern) end. 
    185191 
    186 \item[For cyclic north-south boundary (\np{jperio}\forcode{ = 2})], 
    187   first and last columns are set to zero (closed) whilst the first row is set to 
     192\item [For cyclic north-south boundary (\jp{jperio}\forcode{=2})], first and last columns are set to zero (closed) whilst the first row is set to 
    188193  the value of the last-but-one row and the last row to the value of the second one 
    189194  (\autoref{fig:LBC_jperio}-a). 
    190195  Whatever flows out of the northern (southern) end of the basin enters the southern (northern) end. 
    191196 
    192 \item[Bi-cyclic east-west and north-south boundary (\np{jperio}\forcode{ = 7})] combines cases 1 and 2. 
     197\item [Bi-cyclic east-west and north-south boundary (\jp{jperio}\forcode{=7})] combines cases 1 and 2. 
    193198 
    194199\end{description} 
    195200 
    196 %>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
    197201\begin{figure}[!t] 
    198   \begin{center} 
    199     \includegraphics[width=\textwidth]{Fig_LBC_jperio} 
    200     \caption{ 
    201       \protect\label{fig:LBC_jperio} 
    202       setting of (a) east-west cyclic  (b) symmetric across the equator boundary conditions. 
    203     } 
    204   \end{center} 
     202  \centering 
     203  \includegraphics[width=0.66\textwidth]{LBC_jperio} 
     204  \caption[Setting of east-west cyclic and symmetric across the Equator boundary conditions]{ 
     205    Setting of (a) east-west cyclic (b) symmetric across the Equator boundary conditions} 
     206  \label{fig:LBC_jperio} 
    205207\end{figure} 
    206 %>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
    207  
    208 % ------------------------------------------------------------------------------------------------------------- 
    209 %        North fold (\textit{jperio = 3 }to $6)$  
    210 % ------------------------------------------------------------------------------------------------------------- 
    211 \subsection[North-fold (\forcode{jperio = [3-6]})] 
    212 {North-fold (\protect\np{jperio}\forcode{ = [3-6]})} 
     208 
     209%% ================================================================================================= 
     210\subsection[North-fold (\forcode{=3,6})]{North-fold (\protect\jp{jperio}\forcode{=3,6})} 
    213211\label{subsec:LBC_north_fold} 
    214212 
    215213The north fold boundary condition has been introduced in order to handle the north boundary of 
    216214a three-polar ORCA grid. 
    217 Such a grid has two poles in the northern hemisphere (\autoref{fig:MISC_ORCA_msh}, 
    218 and thus requires a specific treatment illustrated in \autoref{fig:North_Fold_T}.  
     215Such a grid has two poles in the northern hemisphere (\autoref{fig:CFGS_ORCA_msh}, 
     216and thus requires a specific treatment illustrated in \autoref{fig:LBC_North_Fold_T}. 
    219217Further information can be found in \mdl{lbcnfd} module which applies the north fold boundary condition. 
    220218 
    221 %>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
    222219\begin{figure}[!t] 
    223   \begin{center} 
    224     \includegraphics[width=\textwidth]{Fig_North_Fold_T} 
    225     \caption{ 
    226       \protect\label{fig:North_Fold_T} 
    227       North fold boundary with a $T$-point pivot and cyclic east-west boundary condition ($jperio=4$), 
    228       as used in ORCA 2, 1/4, and 1/12. 
    229       Pink shaded area corresponds to the inner domain mask (see text). 
    230     } 
    231   \end{center} 
     220  \centering 
     221  \includegraphics[width=0.66\textwidth]{LBC_North_Fold_T} 
     222  \caption[North fold boundary in ORCA 2\deg, 1/4\deg and 1/12\deg]{ 
     223    North fold boundary with a $T$-point pivot and cyclic east-west boundary condition ($jperio=4$), 
     224    as used in ORCA 2\deg, 1/4\deg and 1/12\deg. 
     225    Pink shaded area corresponds to the inner domain mask (see text).} 
     226  \label{fig:LBC_North_Fold_T} 
    232227\end{figure} 
    233 %>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
    234  
    235 % ==================================================================== 
    236 % Exchange with neighbouring processors  
    237 % ==================================================================== 
    238 \section[Exchange with neighbouring processors (\textit{lbclnk.F90}, \textit{lib\_mpp.F90})] 
    239 {Exchange with neighbouring processors (\protect\mdl{lbclnk}, \protect\mdl{lib\_mpp})} 
     228 
     229%% ================================================================================================= 
     230\section[Exchange with neighbouring processors (\textit{lbclnk.F90}, \textit{lib\_mpp.F90})]{Exchange with neighbouring processors (\protect\mdl{lbclnk}, \protect\mdl{lib\_mpp})} 
    240231\label{sec:LBC_mpp} 
    241232 
     233\begin{listing} 
     234  \nlst{nammpp} 
     235  \caption{\forcode{&nammpp}} 
     236  \label{lst:nammpp} 
     237\end{listing} 
     238 
    242239For massively parallel processing (mpp), a domain decomposition method is used. 
    243 The basic idea of the method is to split the large computation domain of a numerical experiment into 
    244 several smaller domains and solve the set of equations by addressing independent local problems. 
     240The basic idea of the method is to split the large computation domain of a numerical experiment into several smaller domains and 
     241solve the set of equations by addressing independent local problems. 
    245242Each processor has its own local memory and computes the model equation over a subdomain of the whole model domain. 
    246 The subdomain boundary conditions are specified through communications between processors which 
    247 are organized by explicit statements (message passing method). 
    248  
    249 A big advantage is that the method does not need many modifications of the initial \fortran code. 
    250 From the modeller's point of view, each sub domain running on a processor is identical to the "mono-domain" code. 
    251 In addition, the programmer manages the communications between subdomains, 
    252 and the code is faster when the number of processors is increased. 
    253 The porting of OPA code on an iPSC860 was achieved during Guyon's PhD [Guyon et al. 1994, 1995] 
    254 in collaboration with CETIIS and ONERA. 
    255 The implementation in the operational context and the studies of performance on 
    256 a T3D and T3E Cray computers have been made in collaboration with IDRIS and CNRS. 
     243The subdomain boundary conditions are specified through communications between processors which are organized by 
     244explicit statements (message passing method). 
    257245The present implementation is largely inspired by Guyon's work [Guyon 1995]. 
    258246 
     
    261249depend at the very most on one neighbouring point. 
    262250The only non-local computations concern the vertical physics 
    263 (implicit diffusion, turbulent closure scheme, ...) (delocalization over the whole water column), 
    264 and the solving of the elliptic equation associated with the surface pressure gradient computation 
    265 (delocalization over the whole horizontal domain). 
     251(implicit diffusion, turbulent closure scheme, ...). 
    266252Therefore, a pencil strategy is used for the data sub-structuration: 
    267253the 3D initial domain is laid out on local processor memories following a 2D horizontal topological splitting. 
     
    272258After a computation, a communication phase starts: 
    273259each processor sends to its neighbouring processors the update values of the points corresponding to 
    274 the interior overlapping area to its neighbouring sub-domain (\ie the innermost of the two overlapping rows). 
    275 The communication is done through the Message Passing Interface (MPI). 
     260the interior overlapping area to its neighbouring sub-domain (\ie\ the innermost of the two overlapping rows). 
     261Communications are first done according to the east-west direction and next according to the north-south direction. 
     262There is no specific communications for the corners. 
     263The communication is done through the Message Passing Interface (MPI) and requires \key{mpp\_mpi}. 
     264Use also \key{mpi2} if MPI3 is not available on your computer. 
    276265The data exchanges between processors are required at the very place where 
    277266lateral domain boundary conditions are set in the mono-domain computation: 
    278267the \rou{lbc\_lnk} routine (found in \mdl{lbclnk} module) which manages such conditions is interfaced with 
    279 routines found in \mdl{lib\_mpp} module when running on an MPP computer (\ie when \key{mpp\_mpi} defined). 
    280 It has to be pointed out that when using the MPP version of the model, 
    281 the east-west cyclic boundary condition is done implicitly, 
    282 whilst the south-symmetric boundary condition option is not available. 
    283  
    284 %>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
     268routines found in \mdl{lib\_mpp} module. 
     269The output file \textit{communication\_report.txt} provides the list of which routines do how 
     270many communications during 1 time step of the model.\\ 
     271 
    285272\begin{figure}[!t] 
    286   \begin{center} 
    287     \includegraphics[width=\textwidth]{Fig_mpp} 
    288     \caption{ 
    289       \protect\label{fig:mpp} 
    290       Positioning of a sub-domain when massively parallel processing is used. 
    291     } 
    292   \end{center} 
     273  \centering 
     274  \includegraphics[width=0.66\textwidth]{LBC_mpp} 
     275  \caption{Positioning of a sub-domain when massively parallel processing is used} 
     276  \label{fig:LBC_mpp} 
    293277\end{figure} 
    294 %>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
    295  
    296 In the standard version of \NEMO, the splitting is regular and arithmetic. 
    297 The i-axis is divided by \jp{jpni} and 
    298 the j-axis by \jp{jpnj} for a number of processors \jp{jpnij} most often equal to $jpni \times jpnj$ 
    299 (parameters set in  \ngn{nammpp} namelist). 
    300 Each processor is independent and without message passing or synchronous process, 
    301 programs run alone and access just its own local memory. 
    302 For this reason, the main model dimensions are now the local dimensions of the subdomain (pencil) that 
    303 are named \jp{jpi}, \jp{jpj}, \jp{jpk}. 
     278 
     279In \NEMO, the splitting is regular and arithmetic. 
     280The total number of subdomains corresponds to the number of MPI processes allocated to \NEMO\ when the model is launched 
     281(\ie\ mpirun -np x ./nemo will automatically give x subdomains). 
     282The i-axis is divided by \np{jpni}{jpni} and the j-axis by \np{jpnj}{jpnj}. 
     283These parameters are defined in \nam{mpp}{mpp} namelist. 
     284If \np{jpni}{jpni} and \np{jpnj}{jpnj} are < 1, they will be automatically redefined in the code to give the best domain decomposition 
     285(see bellow). 
     286 
     287Each processor is independent and without message passing or synchronous process, programs run alone and access just its own local memory. 
     288For this reason, 
     289the main model dimensions are now the local dimensions of the subdomain (pencil) that are named \jp{jpi}, \jp{jpj}, \jp{jpk}. 
    304290These dimensions include the internal domain and the overlapping rows. 
    305 The number of rows to exchange (known as the halo) is usually set to one (\jp{jpreci}=1, in \mdl{par\_oce}). 
    306 The whole domain dimensions are named \np{jpiglo}, \np{jpjglo} and \jp{jpk}. 
     291The number of rows to exchange (known as the halo) is usually set to one (nn\_hls=1, in \mdl{par\_oce}, 
     292and must be kept to one until further notice). 
     293The whole domain dimensions are named \jp{jpiglo}, \jp{jpjglo} and \jp{jpk}. 
    307294The relationship between the whole domain and a sub-domain is: 
     295\begin{gather*} 
     296  jpi = ( jpiglo-2\times nn\_hls + (jpni-1) ) / jpni + 2\times nn\_hls \\ 
     297  jpj = ( jpjglo-2\times nn\_hls + (jpnj-1) ) / jpnj + 2\times nn\_hls 
     298\end{gather*} 
     299 
     300One also defines variables nldi and nlei which correspond to the internal domain bounds, and the variables nimpp and njmpp which are the position of the (1,1) grid-point in the global domain (\autoref{fig:LBC_mpp}). Note that since the version 4, there is no more extra-halo area as defined in \autoref{fig:LBC_mpp} so \jp{jpi} is now always equal to nlci and \jp{jpj} equal to nlcj. 
     301 
     302An element of $T_{l}$, a local array (subdomain) corresponds to an element of $T_{g}$, 
     303a global array (whole domain) by the relationship: 
    308304\[ 
    309   jpi = ( jpiglo-2*jpreci + (jpni-1) ) / jpni + 2*jpreci 
    310   jpj = ( jpjglo-2*jprecj + (jpnj-1) ) / jpnj + 2*jprecj 
    311 \] 
    312 where \jp{jpni}, \jp{jpnj} are the number of processors following the i- and j-axis. 
    313  
    314 One also defines variables nldi and nlei which correspond to the internal domain bounds,  
    315 and the variables nimpp and njmpp which are the position of the (1,1) grid-point in the global domain.  
    316 An element of $T_{l}$, a local array (subdomain) corresponds to an element of $T_{g}$, 
    317 a global array (whole domain) by the relationship:  
    318 \[ 
    319   % \label{eq:lbc_nimpp} 
     305  % \label{eq:LBC_nimpp} 
    320306  T_{g} (i+nimpp-1,j+njmpp-1,k) = T_{l} (i,j,k), 
    321307\] 
    322 with  $1 \leq i \leq jpi$, $1  \leq j \leq jpj $ , and  $1  \leq k \leq jpk$. 
    323  
    324 Processors are numbered from 0 to $jpnij-1$, the number is saved in the variable nproc. 
    325 In the standard version, a processor has no more than 
    326 four neighbouring processors named nono (for north), noea (east), noso (south) and nowe (west) and 
    327 two variables, nbondi and nbondj, indicate the relative position of the processor: 
    328 \begin{itemize} 
    329 \item       nbondi = -1    an east neighbour, no west processor, 
    330 \item       nbondi =  0 an east neighbour, a west neighbour, 
    331 \item       nbondi =  1    no east processor, a west neighbour, 
    332 \item       nbondi =  2    no splitting following the i-axis. 
    333 \end{itemize} 
    334 During the simulation, processors exchange data with their neighbours. 
    335 If there is effectively a neighbour, the processor receives variables from this processor on its overlapping row, 
    336 and sends the data issued from internal domain corresponding to the overlapping row of the other processor. 
    337  
    338  
    339 The \NEMO model computes equation terms with the help of mask arrays (0 on land points and 1 on sea points). 
    340 It is easily readable and very efficient in the context of a computer with vectorial architecture. 
    341 However, in the case of a scalar processor, computations over the land regions become more expensive in 
    342 terms of CPU time.  
    343 It is worse when we use a complex configuration with a realistic bathymetry like the global ocean where 
    344 more than 50 \% of points are land points. 
    345 For this reason, a pre-processing tool can be used to choose the mpp domain decomposition with a maximum number of 
    346 only land points processors, which can then be eliminated (\autoref{fig:mppini2}) 
    347 (For example, the mpp\_optimiz tools, available from the DRAKKAR web site). 
    348 This optimisation is dependent on the specific bathymetry employed. 
    349 The user then chooses optimal parameters \jp{jpni}, \jp{jpnj} and \jp{jpnij} with $jpnij < jpni \times jpnj$, 
    350 leading to the elimination of $jpni \times jpnj - jpnij$ land processors. 
    351 When those parameters are specified in \ngn{nammpp} namelist, 
    352 the algorithm in the \rou{inimpp2} routine sets each processor's parameters (nbound, nono, noea,...) so that 
    353 the land-only processors are not taken into account. 
    354  
    355 \gmcomment{Note that the inimpp2 routine is general so that the original inimpp  
    356 routine should be suppressed from the code.} 
    357  
    358 When land processors are eliminated, 
    359 the value corresponding to these locations in the model output files is undefined. 
    360 Note that this is a problem for the meshmask file which requires to be defined over the whole domain. 
    361 Therefore, user should not eliminate land processors when creating a meshmask file 
    362 (\ie when setting a non-zero value to \np{nn\_msh}). 
    363  
    364 %>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
     308with $1 \leq i \leq jpi$, $1  \leq j \leq jpj $ , and  $1  \leq k \leq jpk$. 
     309 
     310The 1-d arrays $mig(1:\jp{jpi})$ and $mjg(1:\jp{jpj})$, defined in \rou{dom\_glo} routine (\mdl{domain} module), should be used to get global domain indices from local domain indices. The 1-d arrays, $mi0(1:\jp{jpiglo})$, $mi1(1:\jp{jpiglo})$ and $mj0(1:\jp{jpjglo})$, $mj1(1:\jp{jpjglo})$ have the reverse purpose and should be used to define loop indices expressed in global domain indices (see examples in \mdl{dtastd} module).\\ 
     311 
     312The \NEMO\ model computes equation terms with the help of mask arrays (0 on land points and 1 on sea points). It is therefore possible that an MPI subdomain contains only land points. To save ressources, we try to supress from the computational domain as much land subdomains as possible. For example if $N_{mpi}$ processes are allocated to NEMO, the domain decomposition will be given by the following equation: 
     313\[ 
     314  N_{mpi} = jpni \times jpnj - N_{land} + N_{useless} 
     315\] 
     316$N_{land}$ is the total number of land subdomains in the domain decomposition defined by \np{jpni}{jpni} and \np{jpnj}{jpnj}. $N_{useless}$ is the number of land subdomains that are kept in the compuational domain in order to make sure that $N_{mpi}$ MPI processes are indeed allocated to a given subdomain. The values of $N_{mpi}$, \np{jpni}{jpni}, \np{jpnj}{jpnj},  $N_{land}$ and $N_{useless}$ are printed in the output file \texttt{ocean.output}. $N_{useless}$ must, of course, be as small as possible to limit the waste of ressources. A warning is issued in  \texttt{ocean.output} if $N_{useless}$ is not zero. Note that non-zero value of $N_{useless}$ is uselly required when using AGRIF as, up to now, the parent grid and each of the child grids must use all the $N_{mpi}$ processes. 
     317 
     318If the domain decomposition is automatically defined (when \np{jpni}{jpni} and \np{jpnj}{jpnj} are < 1), the decomposition chosen by the model will minimise the sub-domain size (defined as $max_{all domains}(jpi \times jpj)$) and maximize the number of eliminated land subdomains. This means that no other domain decomposition (a set of \np{jpni}{jpni} and \np{jpnj}{jpnj} values) will use less processes than $(jpni  \times  jpnj - N_{land})$ and get a smaller subdomain size. 
     319In order to specify $N_{mpi}$ properly (minimize $N_{useless}$), you must run the model once with \np{ln_list}{ln\_list} activated. In this case, the model will start the initialisation phase, print the list of optimum decompositions ($N_{mpi}$, \np{jpni}{jpni} and \np{jpnj}{jpnj}) in \texttt{ocean.output} and directly abort. The maximum value of $N_{mpi}$ tested in this list is given by $max(N_{MPI\_tasks}, jpni \times jpnj)$. For example, run the model on 40 nodes with ln\_list activated and $jpni = 10000$ and $jpnj = 1$, will print the list of optimum domains decomposition from 1 to about 10000. 
     320 
     321Processors are numbered from 0 to $N_{mpi} - 1$. Subdomains containning some ocean points are numbered first from 0 to $jpni * jpnj - N_{land} -1$. The remaining $N_{useless}$ land subdomains are numbered next, which means that, for a given (\np{jpni}{jpni}, \np{jpnj}{jpnj}), the numbers attributed to he ocean subdomains do not vary with $N_{useless}$. 
     322 
     323When land processors are eliminated, the value corresponding to these locations in the model output files is undefined. \np{ln_mskland}{ln\_mskland} must be activated in order avoid Not a Number values in output files. Note that it is better to not eliminate land processors when creating a meshmask file (\ie\ when setting a non-zero value to \np{nn_msh}{nn\_msh}). 
     324 
    365325\begin{figure}[!ht] 
    366   \begin{center} 
    367     \includegraphics[width=\textwidth]{Fig_mppini2} 
    368     \caption { 
    369       \protect\label{fig:mppini2} 
    370       Example of Atlantic domain defined for the CLIPPER projet. 
    371       Initial grid is composed of 773 x 1236 horizontal points. 
    372       (a) the domain is split onto 9 \time 20 subdomains (jpni=9, jpnj=20). 
    373       52 subdomains are land areas. 
    374       (b) 52 subdomains are eliminated (white rectangles) and 
    375       the resulting number of processors really used during the computation is jpnij=128. 
    376     } 
    377   \end{center} 
     326  \centering 
     327  \includegraphics[width=0.66\textwidth]{LBC_mppini2} 
     328  \caption[Atlantic domain defined for the CLIPPER projet]{ 
     329    Example of Atlantic domain defined for the CLIPPER projet. 
     330    Initial grid is composed of 773 x 1236 horizontal points. 
     331    (a) the domain is split onto 9 $times$ 20 subdomains (jpni=9, jpnj=20). 
     332    52 subdomains are land areas. 
     333    (b) 52 subdomains are eliminated (white rectangles) and 
     334    the resulting number of processors really used during the computation is jpnij=128.} 
     335  \label{fig:LBC_mppini2} 
    378336\end{figure} 
    379 %>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
    380  
    381  
    382 % ==================================================================== 
    383 % Unstructured open boundaries BDY  
    384 % ==================================================================== 
     337 
     338%% ================================================================================================= 
    385339\section{Unstructured open boundary conditions (BDY)} 
    386340\label{sec:LBC_bdy} 
    387341 
    388 %-----------------------------------------nambdy-------------------------------------------- 
    389  
    390 \nlst{nambdy}  
    391 %----------------------------------------------------------------------------------------------- 
    392 %-----------------------------------------nambdy_dta-------------------------------------------- 
    393  
    394 \nlst{nambdy_dta}  
    395 %----------------------------------------------------------------------------------------------- 
    396  
    397 Options are defined through the \ngn{nambdy} \ngn{nambdy\_dta} namelist variables. 
    398 The BDY module is the core implementation of open boundary conditions for regional configurations on  
    399 temperature, salinity, barotropic and baroclinic velocities, as well as ice concentration, ice and snow thicknesses). 
    400  
    401 The BDY module was modelled on the OBC module (see NEMO 3.4) and shares many features and 
     342\begin{listing} 
     343  \nlst{nambdy} 
     344  \caption{\forcode{&nambdy}} 
     345  \label{lst:nambdy} 
     346\end{listing} 
     347 
     348\begin{listing} 
     349  \nlst{nambdy_dta} 
     350  \caption{\forcode{&nambdy_dta}} 
     351  \label{lst:nambdy_dta} 
     352\end{listing} 
     353 
     354Options are defined through the \nam{bdy}{bdy} and \nam{bdy_dta}{bdy\_dta} namelist variables. 
     355The BDY module is the core implementation of open boundary conditions for regional configurations on 
     356ocean temperature, salinity, barotropic-baroclinic velocities, ice-snow concentration, thicknesses, temperatures, salinity and melt ponds concentration and thickness. 
     357 
     358The BDY module was modelled on the OBC module (see \NEMO\ 3.4) and shares many features and 
    402359a similar coding structure \citep{chanut_rpt05}. 
    403360The specification of the location of the open boundary is completely flexible and 
    404 allows for example the open boundary to follow an isobath or other irregular contour.  
    405 Boundary data files used with versions of NEMO prior to Version 3.4 may need to be re-ordered to work with this version. 
     361allows any type of setup, from regular boundaries to irregular contour (it includes the possibility to set an open boundary able to follow an isobath). 
     362Boundary data files used with versions of \NEMO\ prior to Version 3.4 may need to be re-ordered to work with this version. 
    406363See the section on the Input Boundary Data Files for details. 
    407364 
    408 %---------------------------------------------- 
     365%% ================================================================================================= 
    409366\subsection{Namelists} 
    410 \label{subsec:BDY_namelist} 
    411  
    412 The BDY module is activated by setting \np{ln\_bdy}\forcode{ = .true.} . 
     367\label{subsec:LBC_bdy_namelist} 
     368 
     369The BDY module is activated by setting \np[=.true.]{ln_bdy}{ln\_bdy} . 
    413370It is possible to define more than one boundary ``set'' and apply different boundary conditions to each set. 
    414 The number of boundary sets is defined by \np{nb\_bdy}. 
    415 Each boundary set may be defined as a set of straight line segments in a namelist 
    416 (\np{ln\_coords\_file}\forcode{ = .false.}) or read in from a file (\np{ln\_coords\_file}\forcode{ = .true.}). 
    417 If the set is defined in a namelist, then the namelists \ngn{nambdy\_index} must be included separately, one for each set. 
    418 If the set is defined by a file, then a ``\ifile{coordinates.bdy}'' file must be provided. 
    419 The coordinates.bdy file is analagous to the usual NEMO ``\ifile{coordinates}'' file. 
     371The number of boundary sets is defined by \np{nb_bdy}{nb\_bdy}. 
     372Each boundary set can be either defined as a series of straight line segments directly in the namelist 
     373(\np[=.false.]{ln_coords_file}{ln\_coords\_file}, and a namelist block \nam{bdy_index}{bdy\_index} must be included for each set) or read in from a file (\np[=.true.]{ln_coords_file}{ln\_coords\_file}, and a ``\ifile{coordinates.bdy}'' file must be provided). 
     374The coordinates.bdy file is analagous to the usual \NEMO\ ``\ifile{coordinates}'' file. 
    420375In the example above, there are two boundary sets, the first of which is defined via a file and 
    421 the second is defined in a namelist. 
    422 For more details of the definition of the boundary geometry see section \autoref{subsec:BDY_geometry}. 
     376the second is defined in the namelist. 
     377For more details of the definition of the boundary geometry see section \autoref{subsec:LBC_bdy_geometry}. 
    423378 
    424379For each boundary set a boundary condition has to be chosen for the barotropic solution 
    425 (``u2d'':sea-surface height and barotropic velocities), for the baroclinic velocities (``u3d''),  
    426 for the active tracers \footnote{The BDY module does not deal with passive tracers at this version} (``tra''), and sea-ice (``ice''). 
    427 For each set of variables there is a choice of algorithm and a choice for the data, 
    428 eg. for the active tracers the algorithm is set by \np{cn\_tra} and the choice of data is set by \np{nn\_tra\_dta}.\\  
     380(``u2d'':sea-surface height and barotropic velocities), for the baroclinic velocities (``u3d''), 
     381for the active tracers \footnote{The BDY module does not deal with passive tracers at this version} (``tra''), and for sea-ice (``ice''). 
     382For each set of variables one has to choose an algorithm and the boundary data (set resp. by \np{cn_tra}{cn\_tra} and \np{nn_tra_dta}{nn\_tra\_dta} for tracers).\\ 
    429383 
    430384The choice of algorithm is currently as follows: 
    431385 
    432386\begin{description} 
    433 \item[\forcode{'none'}:] No boundary condition applied. 
     387\item [\forcode{'none'}:] No boundary condition applied. 
    434388  So the solution will ``see'' the land points around the edge of the edge of the domain. 
    435 \item[\forcode{'specified'}:] Specified boundary condition applied (only available for baroclinic velocity and tracer variables). 
    436 \item[\forcode{'neumann'}:] Value at the boundary are duplicated (No gradient). Only available for baroclinic velocity and tracer variables. 
    437 \item[\forcode{'frs'}:] Flow Relaxation Scheme (FRS) available for all variables. 
    438 \item[\forcode{'Orlanski'}:] Orlanski radiation scheme (fully oblique) for barotropic, baroclinic and tracer variables.  
    439 \item[\forcode{'Orlanski_npo'}:] Orlanski radiation scheme for barotropic, baroclinic and tracer variables.  
    440 \item[\forcode{'flather'}:] Flather radiation scheme for the barotropic variables only. 
     389\item [\forcode{'specified'}:] Specified boundary condition applied (only available for baroclinic velocity and tracer variables). 
     390\item [\forcode{'neumann'}:] Value at the boundary are duplicated (No gradient). Only available for baroclinic velocity and tracer variables. 
     391\item [\forcode{'frs'}:] Flow Relaxation Scheme (FRS) available for all variables. 
     392\item [\forcode{'Orlanski'}:] Orlanski radiation scheme (fully oblique) for barotropic, baroclinic and tracer variables. 
     393\item [\forcode{'Orlanski_npo'}:] Orlanski radiation scheme for barotropic, baroclinic and tracer variables. 
     394\item [\forcode{'flather'}:] Flather radiation scheme for the barotropic variables only. 
    441395\end{description} 
    442396 
    443 The main choice for the boundary data is to use initial conditions as boundary data 
    444 (\np{nn\_tra\_dta}\forcode{ = 0}) or to use external data from a file (\np{nn\_tra\_dta}\forcode{ = 1}). 
    445 In case the 3d velocity data contain the total velocity (ie, baroclinic and barotropic velocity),  
    446 the bdy code can derived baroclinic and barotropic velocities by setting \np{ln\_full\_vel}\forcode{ = .true. } 
     397The boundary data is either set to initial conditions 
     398(\np[=0]{nn_tra_dta}{nn\_tra\_dta}) or forced with external data from a file (\np[=1]{nn_tra_dta}{nn\_tra\_dta}). 
     399In case the 3d velocity data contain the total velocity (ie, baroclinic and barotropic velocity), 
     400the bdy code can derived baroclinic and barotropic velocities by setting \np[=.true.]{ln_full_vel}{ln\_full\_vel} 
    447401For the barotropic solution there is also the option to use tidal harmonic forcing either by 
    448 itself (\np{nn\_dyn2d\_dta}\forcode{ = 2}) or in addition to other external data (\np{nn\_dyn2d\_dta}\forcode{ = 3}).\\ 
    449 Sea-ice salinity, temperature and age data at the boundary are constant and defined repectively by \np{rn\_ice\_sal}, \np{rn\_ice\_tem} and \np{rn\_ice\_age}.  
    450  
    451 If external boundary data is required then the \ngn{nambdy\_dta} namelist must be defined. 
    452 One \ngn{nambdy\_dta} namelist is required for each boundary set in the order in which 
    453 the boundary sets are defined in nambdy. 
    454 In the example given, two boundary sets have been defined. The first one is reading data file in the \ngn{nambdy\_dta} namelist shown above  
    455 and the second one is using data from intial condition (no namelist bloc needed). 
     402itself (\np[=2]{nn_dyn2d_dta}{nn\_dyn2d\_dta}) or in addition to other external data (\np[=3]{nn_dyn2d_dta}{nn\_dyn2d\_dta}).\\ 
     403If not set to initial conditions, sea-ice salinity, temperatures and melt ponds data at the boundary can either be read in a file or defined as constant (by \np{rn_ice_sal}{rn\_ice\_sal}, \np{rn_ice_tem}{rn\_ice\_tem}, \np{rn_ice_apnd}{rn\_ice\_apnd}, \np{rn_ice_hpnd}{rn\_ice\_hpnd}). Ice age is constant and defined by \np{rn_ice_age}{rn\_ice\_age}. 
     404 
     405If external boundary data is required then the \nam{bdy_dta}{bdy\_dta} namelist must be defined. 
     406One \nam{bdy_dta}{bdy\_dta} namelist is required for each boundary set, adopting the same order of indexes in which the boundary sets are defined in nambdy. 
     407In the example given, two boundary sets have been defined. The first one is reading data file in the \nam{bdy_dta}{bdy\_dta} namelist shown above 
     408and the second one is using data from intial condition (no namelist block needed). 
    456409The boundary data is read in using the fldread module, 
    457 so the \ngn{nambdy\_dta} namelist is in the format required for fldread. 
    458 For each variable required, the filename, the frequency of the files and 
    459 the frequency of the data in the files is given. 
    460 Also whether or not time-interpolation is required and whether the data is climatological (time-cyclic) data.\\ 
     410so the \nam{bdy_dta}{bdy\_dta} namelist is in the format required for fldread. 
     411For each required variable, the filename, the frequency of the files and 
     412the frequency of the data in the files are given. 
     413Also whether or not time-interpolation is required and whether the data is climatological (time-cyclic) data. 
     414For sea-ice salinity, temperatures and melt ponds, reading the files are skipped and constant values are used if filenames are defined as {'NOT USED'}.\\ 
    461415 
    462416There is currently an option to vertically interpolate the open boundary data onto the native grid at run-time. 
    463 If \np{nn\_bdy\_jpk} $< -1$, it is assumed that the lateral boundary data are already on the native grid.  
    464 However, if \np{nn\_bdy\_jpk} is set to the number of vertical levels present in the boundary data,  
    465 a bilinear interpolation onto the native grid will be triggered at runtime.  
    466 For this to be successful the additional variables: $gdept$, $gdepu$, $gdepv$, $e3t$, $e3u$ and $e3v$, are required to be present in the lateral boundary files.  
    467 These correspond to the depths and scale factors of the input data,  
     417If \np{nn_bdy_jpk}{nn\_bdy\_jpk}$<-1$, it is assumed that the lateral boundary data are already on the native grid. 
     418However, if \np{nn_bdy_jpk}{nn\_bdy\_jpk} is set to the number of vertical levels present in the boundary data, 
     419a bilinear interpolation onto the native grid will be triggered at runtime. 
     420For this to be successful the additional variables: $gdept$, $gdepu$, $gdepv$, $e3t$, $e3u$ and $e3v$, are required to be present in the lateral boundary files. 
     421These correspond to the depths and scale factors of the input data, 
    468422the latter used to make any adjustment to the velocity fields due to differences in the total water depths between the two vertical grids.\\ 
    469423 
    470 In the example namelists given, two boundary sets are defined. 
     424In the example of given namelists, two boundary sets are defined. 
    471425The first set is defined via a file and applies FRS conditions to temperature and salinity and 
    472426Flather conditions to the barotropic variables. No condition specified for the baroclinic velocity and sea-ice. 
     
    474428Tidal harmonic forcing is also used. 
    475429The second set is defined in a namelist. 
    476 FRS conditions are applied on temperature and salinity and climatological data is read from initial condition files.  
    477  
    478 %---------------------------------------------- 
     430FRS conditions are applied on temperature and salinity and climatological data is read from initial condition files. 
     431 
     432%% ================================================================================================= 
    479433\subsection{Flow relaxation scheme} 
    480 \label{subsec:BDY_FRS_scheme} 
     434\label{subsec:LBC_bdy_FRS_scheme} 
    481435 
    482436The Flow Relaxation Scheme (FRS) \citep{davies_QJRMS76,engedahl_T95}, 
     
    485439Given a model prognostic variable $\Phi$ 
    486440\[ 
    487   % \label{eq:bdy_frs1} 
     441  % \label{eq:LBC_bdy_frs1} 
    488442  \Phi(d) = \alpha(d)\Phi_{e}(d) + (1-\alpha(d))\Phi_{m}(d)\;\;\;\;\; d=1,N 
    489443\] 
     
    494448the prognostic equation for $\Phi$ of the form: 
    495449\[ 
    496   % \label{eq:bdy_frs2} 
     450  % \label{eq:LBC_bdy_frs2} 
    497451  -\frac{1}{\tau}\left(\Phi - \Phi_{e}\right) 
    498452\] 
    499453where the relaxation time scale $\tau$ is given by a function of $\alpha$ and the model time step $\Delta t$: 
    500454\[ 
    501   % \label{eq:bdy_frs3} 
     455  % \label{eq:LBC_bdy_frs3} 
    502456  \tau = \frac{1-\alpha}{\alpha}  \,\rdt 
    503457\] 
     
    505459is relaxed towards the external conditions over the rest of the FRS zone. 
    506460The application of a relaxation zone helps to prevent spurious reflection of 
    507 outgoing signals from the model boundary.  
     461outgoing signals from the model boundary. 
    508462 
    509463The function $\alpha$ is specified as a $tanh$ function: 
    510464\[ 
    511   % \label{eq:bdy_frs4} 
     465  % \label{eq:LBC_bdy_frs4} 
    512466  \alpha(d) = 1 - \tanh\left(\frac{d-1}{2}\right),       \quad d=1,N 
    513467\] 
    514 The width of the FRS zone is specified in the namelist as \np{nn\_rimwidth}. 
     468The width of the FRS zone is specified in the namelist as \np{nn_rimwidth}{nn\_rimwidth}. 
    515469This is typically set to a value between 8 and 10. 
    516470 
    517 %---------------------------------------------- 
     471%% ================================================================================================= 
    518472\subsection{Flather radiation scheme} 
    519 \label{subsec:BDY_flather_scheme} 
     473\label{subsec:LBC_bdy_flather_scheme} 
    520474 
    521475The \citet{flather_JPO94} scheme is a radiation condition on the normal, 
    522476depth-mean transport across the open boundary. 
    523477It takes the form 
    524 \begin{equation}  \label{eq:bdy_fla1} 
    525 U = U_{e} + \frac{c}{h}\left(\eta - \eta_{e}\right), 
     478\begin{equation} 
     479  \label{eq:LBC_bdy_fla1} 
     480  U = U_{e} + \frac{c}{h}\left(\eta - \eta_{e}\right), 
    526481\end{equation} 
    527482where $U$ is the depth-mean velocity normal to the boundary and $\eta$ is the sea surface height, 
     
    532487the external depth-mean normal velocity, 
    533488plus a correction term that allows gravity waves generated internally to exit the model boundary. 
    534 Note that the sea-surface height gradient in \autoref{eq:bdy_fla1} is a spatial gradient across the model boundary, 
     489Note that the sea-surface height gradient in \autoref{eq:LBC_bdy_fla1} is a spatial gradient across the model boundary, 
    535490so that $\eta_{e}$ is defined on the $T$ points with $nbr=1$ and $\eta$ is defined on the $T$ points with $nbr=2$. 
    536 $U$ and $U_{e}$ are defined on the $U$ or $V$ points with $nbr=1$, \ie between the two $T$ grid points. 
    537  
    538 %---------------------------------------------- 
     491$U$ and $U_{e}$ are defined on the $U$ or $V$ points with $nbr=1$, \ie\ between the two $T$ grid points. 
     492 
     493%% ================================================================================================= 
    539494\subsection{Orlanski radiation scheme} 
    540 \label{subsec:BDY_orlanski_scheme} 
     495\label{subsec:LBC_bdy_orlanski_scheme} 
    541496 
    542497The Orlanski scheme is based on the algorithm described by \citep{marchesiello.mcwilliams.ea_OM01}, hereafter MMS. 
     
    544499The adaptive Orlanski condition solves a wave plus relaxation equation at the boundary: 
    545500\begin{equation} 
    546 \frac{\partial\phi}{\partial t} + c_x \frac{\partial\phi}{\partial x} + c_y \frac{\partial\phi}{\partial y} = 
    547                                                 -\frac{1}{\tau}(\phi - \phi^{ext}) 
    548 \label{eq:wave_continuous} 
     501  \label{eq:LBC_wave_continuous} 
     502  \frac{\partial\phi}{\partial t} + c_x \frac{\partial\phi}{\partial x} + c_y \frac{\partial\phi}{\partial y} = 
     503  -\frac{1}{\tau}(\phi - \phi^{ext}) 
    549504\end{equation} 
    550505 
     
    552507velocities are diagnosed from the model fields as: 
    553508 
    554 \begin{equation} \label{eq:cx} 
    555 c_x = -\frac{\partial\phi}{\partial t}\frac{\partial\phi / \partial x}{(\partial\phi /\partial x)^2 + (\partial\phi /\partial y)^2} 
     509\begin{equation} 
     510  \label{eq:LBC_cx} 
     511  c_x = -\frac{\partial\phi}{\partial t}\frac{\partial\phi / \partial x}{(\partial\phi /\partial x)^2 + (\partial\phi /\partial y)^2} 
    556512\end{equation} 
    557513\begin{equation} 
    558 \label{eq:cy} 
    559 c_y = -\frac{\partial\phi}{\partial t}\frac{\partial\phi / \partial y}{(\partial\phi /\partial x)^2 + (\partial\phi /\partial y)^2} 
     514  \label{eq:LBC_cy} 
     515  c_y = -\frac{\partial\phi}{\partial t}\frac{\partial\phi / \partial y}{(\partial\phi /\partial x)^2 + (\partial\phi /\partial y)^2} 
    560516\end{equation} 
    561517 
    562518(As noted by MMS, this is a circular diagnosis of the phase speeds which only makes sense on a discrete grid). 
    563 Equation (\autoref{eq:wave_continuous}) is defined adaptively depending on the sign of the phase velocity normal to the boundary $c_x$. 
     519Equation (\autoref{eq:LBC_wave_continuous}) is defined adaptively depending on the sign of the phase velocity normal to the boundary $c_x$. 
    564520For $c_x$ outward, we have 
    565521 
     
    571527 
    572528\begin{equation} 
    573 \tau = \tau_{in}\,\,\,;\,\,\, c_x = c_y = 0 
    574 \label{eq:tau_in} 
     529  \label{eq:LBC_tau_in} 
     530  \tau = \tau_{in}\,\,\,;\,\,\, c_x = c_y = 0 
    575531\end{equation} 
    576532 
    577 Generally the relaxation time scale at inward propagation points \np{(rn\_time\_dmp}) is set much shorter than the time scale at outward propagation 
    578 points (\np{rn\_time\_dmp\_out}) so that the solution is constrained more strongly by the external data at inward propagation points. 
    579 See \autoref{subsec:BDY_relaxation} for detailed on the spatial shape of the scaling.\\  
    580 The ``normal propagation of oblique radiation'' or NPO approximation (called \forcode{'orlanski_npo'}) involves assuming  
    581 that $c_y$ is zero in equation (\autoref{eq:wave_continuous}), but including 
    582 this term in the denominator of equation (\autoref{eq:cx}). Both versions of the scheme are options in BDY. Equations 
    583 (\autoref{eq:wave_continuous}) - (\autoref{eq:tau_in}) correspond to equations (13) - (15) and (2) - (3) in MMS.\\ 
    584  
    585 %---------------------------------------------- 
     533Generally the relaxation time scale at inward propagation points (\np{rn_time_dmp}{rn\_time\_dmp}) is set much shorter than the time scale at outward propagation 
     534points (\np{rn_time_dmp_out}{rn\_time\_dmp\_out}) so that the solution is constrained more strongly by the external data at inward propagation points. 
     535See \autoref{subsec:LBC_bdy_relaxation} for detailed on the spatial shape of the scaling.\\ 
     536The ``normal propagation of oblique radiation'' or NPO approximation (called \forcode{'orlanski_npo'}) involves assuming 
     537that $c_y$ is zero in equation (\autoref{eq:LBC_wave_continuous}), but including 
     538this term in the denominator of equation (\autoref{eq:LBC_cx}). Both versions of the scheme are options in BDY. Equations 
     539(\autoref{eq:LBC_wave_continuous}) - (\autoref{eq:LBC_tau_in}) correspond to equations (13) - (15) and (2) - (3) in MMS.\\ 
     540 
     541%% ================================================================================================= 
    586542\subsection{Relaxation at the boundary} 
    587 \label{subsec:BDY_relaxation} 
    588  
    589 In addition to a specific boundary condition specified as \np{cn\_tra} and \np{cn\_dyn3d}, relaxation on baroclinic velocities and tracers variables are available.  
    590 It is control by the namelist parameter \np{ln\_tra\_dmp} and \np{ln\_dyn3d\_dmp} for each boundary set. 
    591  
    592 The relaxation time scale value (\np{rn\_time\_dmp} and \np{rn\_time\_dmp\_out}, $\tau$) are defined at the boundaries itself.  
    593 This time scale ($\alpha$) is weighted by the distance ($d$) from the boundary over \np{nn\_rimwidth} cells ($N$): 
     543\label{subsec:LBC_bdy_relaxation} 
     544 
     545In addition to a specific boundary condition specified as \np{cn_tra}{cn\_tra} and \np{cn_dyn3d}{cn\_dyn3d}, relaxation on baroclinic velocities and tracers variables are available. 
     546It is control by the namelist parameter \np{ln_tra_dmp}{ln\_tra\_dmp} and \np{ln_dyn3d_dmp}{ln\_dyn3d\_dmp} for each boundary set. 
     547 
     548The relaxation time scale value (\np{rn_time_dmp}{rn\_time\_dmp} and \np{rn_time_dmp_out}{rn\_time\_dmp\_out}, $\tau$) are defined at the boundaries itself. 
     549This time scale ($\alpha$) is weighted by the distance ($d$) from the boundary over \np{nn_rimwidth}{nn\_rimwidth} cells ($N$): 
    594550 
    595551\[ 
     
    597553\] 
    598554 
    599 The same scaling is applied in the Orlanski damping.  
    600  
    601 %---------------------------------------------- 
     555The same scaling is applied in the Orlanski damping. 
     556 
     557%% ================================================================================================= 
    602558\subsection{Boundary geometry} 
    603 \label{subsec:BDY_geometry} 
     559\label{subsec:LBC_bdy_geometry} 
    604560 
    605561Each open boundary set is defined as a list of points. 
    606562The information is stored in the arrays $nbi$, $nbj$, and $nbr$ in the $idx\_bdy$ structure. 
    607 The $nbi$ and $nbj$ arrays define the local $(i,j)$ indices of each point in the boundary zone and 
    608 the $nbr$ array defines the discrete distance from the boundary with $nbr=1$ meaning that 
    609 the point is next to the edge of the model domain and $nbr>1$ showing that 
    610 the point is increasingly further away from the edge of the model domain. 
     563The $nbi$ and $nbj$ arrays define the local $(i,j)$ indexes of each point in the boundary zone and 
     564the $nbr$ array defines the discrete distance from the boundary: $nbr=1$ means that 
     565the boundary point is next to the edge of the model domain, while $nbr>1$ means that 
     566the boundary point is increasingly further away from the edge of the model domain. 
    611567A set of $nbi$, $nbj$, and $nbr$ arrays is defined for each of the $T$, $U$ and $V$ grids. 
    612 Figure \autoref{fig:LBC_bdy_geom} shows an example of an irregular boundary.  
     568\autoref{fig:LBC_bdy_geom} shows an example of an irregular boundary. 
    613569 
    614570The boundary geometry for each set may be defined in a namelist nambdy\_index or 
    615571by reading in a ``\ifile{coordinates.bdy}'' file. 
    616572The nambdy\_index namelist defines a series of straight-line segments for north, east, south and west boundaries. 
    617 One nambdy\_index namelist bloc is needed for each boundary condition defined by indexes.  
    618 For the northern boundary, \np{nbdysegn} gives the number of segments, 
    619 \np{jpjnob} gives the $j$ index for each segment and \np{jpindt} and 
    620 \np{jpinft} give the start and end $i$ indices for each segment with similar for the other boundaries. 
     573One nambdy\_index namelist block is needed for each boundary condition defined by indexes. 
     574For the northern boundary, \texttt{nbdysegn} gives the number of segments, 
     575\jp{jpjnob} gives the $j$ index for each segment and \jp{jpindt} and 
     576\jp{jpinft} give the start and end $i$ indices for each segment with similar for the other boundaries. 
    621577These segments define a list of $T$ grid points along the outermost row of the boundary ($nbr\,=\, 1$). 
    622 The code deduces the $U$ and $V$ points and also the points for $nbr\,>\, 1$ if \np{nn\_rimwidth}\forcode{ > 1}. 
     578The code deduces the $U$ and $V$ points and also the points for $nbr\,>\, 1$ if \np[>1]{nn_rimwidth}{nn\_rimwidth}. 
    623579 
    624580The boundary geometry may also be defined from a ``\ifile{coordinates.bdy}'' file. 
    625 Figure \autoref{fig:LBC_nc_header} gives an example of the header information from such a file. 
     581\autoref{fig:LBC_nc_header} gives an example of the header information from such a file, based on the description of geometrical setup given above. 
    626582The file should contain the index arrays for each of the $T$, $U$ and $V$ grids. 
    627583The arrays must be in order of increasing $nbr$. 
     
    629585Typically this file will be used to generate external boundary data via interpolation and so 
    630586will also contain the latitudes and longitudes of each point as shown. 
    631 However, this is not necessary to run the model.  
     587However, this is not necessary to run the model. 
    632588 
    633589For some choices of irregular boundary the model domain may contain areas of ocean which 
    634590are not part of the computational domain. 
    635 For example if an open boundary is defined along an isobath, say at the shelf break, 
     591For example, if an open boundary is defined along an isobath, say at the shelf break, 
    636592then the areas of ocean outside of this boundary will need to be masked out. 
    637 This can be done by reading a mask file defined as \np{cn\_mask\_file} in the nam\_bdy namelist. 
     593This can be done by reading a mask file defined as \np{cn_mask_file}{cn\_mask\_file} in the nam\_bdy namelist. 
    638594Only one mask file is used even if multiple boundary sets are defined. 
    639595 
    640 %>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
    641596\begin{figure}[!t] 
    642   \begin{center} 
    643     \includegraphics[width=\textwidth]{Fig_LBC_bdy_geom} 
    644     \caption { 
    645       \protect\label{fig:LBC_bdy_geom} 
    646       Example of geometry of unstructured open boundary 
    647     } 
    648   \end{center} 
     597  \centering 
     598  \includegraphics[width=0.66\textwidth]{LBC_bdy_geom} 
     599  \caption[Geometry of unstructured open boundary]{Example of geometry of unstructured open boundary} 
     600  \label{fig:LBC_bdy_geom} 
    649601\end{figure} 
    650 %>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
    651  
    652 %---------------------------------------------- 
     602 
     603%% ================================================================================================= 
    653604\subsection{Input boundary data files} 
    654 \label{subsec:BDY_data} 
     605\label{subsec:LBC_bdy_data} 
    655606 
    656607The data files contain the data arrays in the order in which the points are defined in the $nbi$ and $nbj$ arrays. 
     
    658609a time dimension; 
    659610$xb$ which is the index of the boundary data point in the horizontal; 
    660 and $yb$ which is a degenerate dimension of 1 to enable the file to be read by the standard NEMO I/O routines. 
    661 The 3D fields also have a depth dimension.  
     611and $yb$ which is a degenerate dimension of 1 to enable the file to be read by the standard \NEMO\ I/O routines. 
     612The 3D fields also have a depth dimension. 
    662613 
    663614From Version 3.4 there are new restrictions on the order in which the boundary points are defined 
     
    670621\item All the data for a particular boundary set must be in the same order. 
    671622  (Prior to 3.4 it was possible to define barotropic data in a different order to 
    672   the data for tracers and baroclinic velocities).  
     623  the data for tracers and baroclinic velocities). 
    673624\end{enumerate} 
    674625 
    675626These restrictions mean that data files used with versions of the 
    676627model prior to Version 3.4 may not work with Version 3.4 onwards. 
    677 A \fortran utility {\itshape bdy\_reorder} exists in the TOOLS directory which 
     628A \fortran\ utility {\itshape bdy\_reorder} exists in the TOOLS directory which 
    678629will re-order the data in old BDY data files. 
    679630 
    680 %>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
    681631\begin{figure}[!t] 
    682   \begin{center} 
    683     \includegraphics[width=\textwidth]{Fig_LBC_nc_header} 
    684     \caption { 
    685       \protect\label{fig:LBC_nc_header} 
    686       Example of the header for a \protect\ifile{coordinates.bdy} file 
    687     } 
    688   \end{center} 
     632  \centering 
     633  \includegraphics[width=0.66\textwidth]{LBC_nc_header} 
     634  \caption[Header for a \protect\ifile{coordinates.bdy} file]{ 
     635    Example of the header for a \protect\ifile{coordinates.bdy} file} 
     636  \label{fig:LBC_nc_header} 
    689637\end{figure} 
    690 %>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
    691  
    692 %---------------------------------------------- 
     638 
     639%% ================================================================================================= 
    693640\subsection{Volume correction} 
    694 \label{subsec:BDY_vol_corr} 
     641\label{subsec:LBC_bdy_vol_corr} 
    695642 
    696643There is an option to force the total volume in the regional model to be constant. 
    697 This is controlled  by the \np{ln\_vol} parameter in the namelist. 
    698 A value of \np{ln\_vol}\forcode{ = .false.} indicates that this option is not used. 
    699 Two options to control the volume are available (\np{nn\_volctl}).  
    700 If \np{nn\_volctl}\forcode{ = 0} then a correction is applied to the normal barotropic velocities around the boundary at 
     644This is controlled  by the \np{ln_vol}{ln\_vol} parameter in the namelist. 
     645A value of \np[=.false.]{ln_vol}{ln\_vol} indicates that this option is not used. 
     646Two options to control the volume are available (\np{nn_volctl}{nn\_volctl}). 
     647If \np[=0]{nn_volctl}{nn\_volctl} then a correction is applied to the normal barotropic velocities around the boundary at 
    701648each timestep to ensure that the integrated volume flow through the boundary is zero. 
    702 If \np{nn\_volctl}\forcode{ = 1} then the calculation of the volume change on 
     649If \np[=1]{nn_volctl}{nn\_volctl} then the calculation of the volume change on 
    703650the timestep includes the change due to the freshwater flux across the surface and 
    704651the correction velocity corrects for this as well. 
     
    707654applied to all boundaries at once. 
    708655 
    709 %---------------------------------------------- 
     656%% ================================================================================================= 
    710657\subsection{Tidal harmonic forcing} 
    711 \label{subsec:BDY_tides} 
    712  
    713 %-----------------------------------------nambdy_tide-------------------------------------------- 
    714  
    715 \nlst{nambdy_tide}  
    716 %----------------------------------------------------------------------------------------------- 
     658\label{subsec:LBC_bdy_tides} 
     659 
     660\begin{listing} 
     661  \nlst{nambdy_tide} 
     662  \caption{\forcode{&nambdy_tide}} 
     663  \label{lst:nambdy_tide} 
     664\end{listing} 
    717665 
    718666Tidal forcing at open boundaries requires the activation of surface 
    719 tides (i.e., in \ngn{nam\_tide}, \np{ln\_tide} needs to be set to 
     667tides (i.e., in \nam{_tide}{\_tide}, \np{ln_tide}{ln\_tide} needs to be set to 
    720668\forcode{.true.} and the required constituents need to be activated by 
    721 including their names in the \np{cname} array; see 
     669including their names in the \np{clname}{clname} array; see 
    722670\autoref{sec:SBC_tide}). Specific options related to the reading in of 
    723671the complex harmonic amplitudes of elevation (SSH) and barotropic 
    724672velocity (u,v) at open boundaries are defined through the 
    725 \ngn{nambdy\_tide} namelist parameters.\\ 
     673\nam{bdy_tide}{bdy\_tide} namelist parameters.\\ 
    726674 
    727675The tidal harmonic data at open boundaries can be specified in two 
    728676different ways, either on a two-dimensional grid covering the entire 
    729677model domain or along open boundary segments; these two variants can 
    730 be selected by setting \np{ln\_bdytide\_2ddta } to \forcode{.true.} or 
     678be selected by setting \np{ln_bdytide_2ddta }{ln\_bdytide\_2ddta } to \forcode{.true.} or 
    731679\forcode{.false.}, respectively. In either case, the real and 
    732680imaginary parts of SSH and the two barotropic velocity components for 
     
    734682separately: when two-dimensional data is used, variables 
    735683\textit{tcname\_z1} and \textit{tcname\_z2} for real and imaginary SSH, 
    736 respectively, are expected in input file \np{filtide} with suffix 
     684respectively, are expected in input file \np{filtide}{filtide} with suffix 
    737685\ifile{\_grid\_T}, variables \textit{tcname\_u1} and 
    738686\textit{tcname\_u2} for real and imaginary u, respectively, are 
    739 expected in input file \np{filtide} with suffix \ifile{\_grid\_U}, and 
     687expected in input file \np{filtide}{filtide} with suffix \ifile{\_grid\_U}, and 
    740688\textit{tcname\_v1} and \textit{tcname\_v2} for real and imaginary v, 
    741 respectively, are expected in input file \np{filtide} with suffix 
     689respectively, are expected in input file \np{filtide}{filtide} with suffix 
    742690\ifile{\_grid\_V}; when data along open boundary segments is used, 
    743691variables \textit{z1} and \textit{z2} (real and imaginary part of SSH) 
    744 are expected to be available from file \np{filtide} with suffix 
     692are expected to be available from file \np{filtide}{filtide} with suffix 
    745693\ifile{tcname\_grid\_T}, variables \textit{u1} and \textit{u2} (real 
    746694and imaginary part of u) are expected to be available from file 
    747 \np{filtide} with suffix \ifile{tcname\_grid\_U}, and variables 
     695\np{filtide}{filtide} with suffix \ifile{tcname\_grid\_U}, and variables 
    748696\textit{v1} and \textit{v2} (real and imaginary part of v) are 
    749 expected to be available from file \np{filtide} with suffix 
    750 \ifile{tcname\_grid\_V}. If \np{ln\_bdytide\_conj} is set to 
     697expected to be available from file \np{filtide}{filtide} with suffix 
     698\ifile{tcname\_grid\_V}. If \np{ln_bdytide_conj}{ln\_bdytide\_conj} is set to 
    751699\forcode{.true.}, the data is expected to be in complex conjugate 
    752700form. 
     
    760708direction of rotation). %, e.g. anticlockwise or clockwise. 
    761709 
    762 \biblio 
    763  
    764 \pindex 
     710\subinc{\input{../../global/epilogue}} 
    765711 
    766712\end{document} 
Note: See TracChangeset for help on using the changeset viewer.