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 2376 for branches/nemo_v3_3_beta/DOC/TexFiles/Chapters/Chap_SBC.tex – NEMO

Ignore:
Timestamp:
2010-11-11T18:01:29+01:00 (13 years ago)
Author:
gm
Message:

v3.3beta: better TKE description, CFG a new Chapter, and correction of Fig references

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/nemo_v3_3_beta/DOC/TexFiles/Chapters/Chap_SBC.tex

    r2366 r2376  
    2929(\np{ln\_core}~=~true) or CLIO (\np{ln\_clio}~=~true) bulk formulae) and a coupled  
    3030formulation (exchanges with a atmospheric model via the OASIS coupler)  
    31 (\np{ln\_cpl}~=~true). The optional atmospheric pressure can be used either  
    32 to force ocean and ice dynamics (\np{ln\_apr\_dyn}~=~true), or in the bulk  
    33 formulae computation (\np{ln\_apr\_dyn}~=~true) 
    34 \footnote{None of the two current bulk formulea (CLIO and CORE) uses the  
    35 atmospheric pressure field.}.  
     31(\np{ln\_cpl}~=~true). When used, the atmospheric pressure forces both  
     32ocean and ice dynamics (\np{ln\_apr\_dyn}~=~true) 
     33\footnote{The surface pressure field could be use in bulk formulae, nevertheless  
     34none of the current bulk formulea (CLIO and CORE) uses the it.}.  
    3635The frequency at which the six or seven fields have to be updated is the \np{nn\_fsbc}  
    3736namelist parameter.  
     
    3938need not be supplied on the model grid.  Instead a file of coordinates and weights can  
    4039be supplied which maps the data from the supplied grid to the model points  
    41 (so called "Interpolation on the Fly"). 
     40(so called "Interpolation on the Fly", see \S\ref{SBC_iof}). 
    4241In addition, the resulting fields can be further modified using several namelist options.  
    4342These options control  the rotation of vector components supplied relative to an east-north  
     
    5251 
    5352In this chapter, we first discuss where the surface boundary condition appears in the 
    54 model equations. Then we present the four ways of providing the surface boundary condition.  
     53model equations. Then we present the four ways of providing the surface boundary condition,  
     54followed by the description of the atmospheric pressure and the river runoff.  
    5555Next the scheme for interpolation on the fly is described. 
    5656Finally, the different options that further modify the fluxes applied to the ocean are discussed. 
     
    157157 
    158158%-------------------------------------------------TABLE--------------------------------------------------- 
    159 \begin{table}[tb]  \label{Tab_ssm} 
    160 \begin{center} 
    161 \begin{tabular}{|l|l|l|l|} 
     159\begin{table}[tb]   \begin{center}   \begin{tabular}{|l|l|l|l|} 
    162160\hline 
    163161Variable description             & Model variable  & Units  & point \\  \hline 
     
    167165Sea surface salinty              & sss\_m & $psu$        & T \\   \hline 
    168166\end{tabular} 
    169 \caption{Ocean variables provided by the ocean to the surface module (SBC).  
     167\caption{  \label{Tab_ssm}    
     168Ocean variables provided by the ocean to the surface module (SBC).  
    170169The variable are averaged over nf{\_}sbc time step, $i.e.$ the frequency of  
    171170computation of surface fluxes.} 
    172 \end{center} 
    173 \end{table} 
     171\end{center}   \end{table} 
    174172%-------------------------------------------------------------------------------------------------------------- 
    175173 
    176  
    177  
    178 %\colorbox{yellow}{Penser a} mettre dans le restant l'info nf{\_}sbc ET nf{\_}sbc*rdt de sorte de reinitialiser la moyenne si on change la frequence ou le pdt 
     174%\colorbox{yellow}{Penser a} mettre dans le restant l'info nn{\_}fsbc ET nn{\_}fsbc*rdt de sorte de reinitialiser la moyenne si on change la frequence ou le pdt 
    179175 
    180176 
     
    385381%------------------------------------------------------------------------------------------------------------- 
    386382 
    387 The optional atmospheric pressure can be used either to force ocean and ice dynamics  
    388 (\np{ln\_apr\_dyn}~=~true), or in the bulk formulae computation (\np{ln\_apr\_dyn}~=~true). 
    389 The input atmospheric forcing is interpolated in time to the model time step, and optionally  
    390 in space when interpolation on-the-fly is used. When used to force the dynamics, it is further  
    391 transformed into an equivalent inverse barometer sea surface height, $\eta_{ib}$, using: 
     383The optional atmospheric pressure can be used to force ocean and ice dynamics  
     384(\np{ln\_apr\_dyn}~=~true, \textit{namsbc} namelist ). 
     385The input atmospheric forcing defined via \np{sn\_apr} structure (\textit{namsbc\_apr} namelist)  
     386can be interpolated in time to the model time step, and even in space when the  
     387interpolation on-the-fly is used. When used to force the dynamics, the atmospheric  
     388pressure is further transformed into an equivalent inverse barometer sea surface height,  
     389$\eta_{ib}$, using: 
    392390\begin{equation} \label{SBC_ssh_ib} 
    393391   \eta_{ib} = -  \frac{1}{g\,\rho_o}  \left( P_{atm} - P_o \right)  
     
    398396$\eta_{ib}$ is kept to zero at all time step. 
    399397 
    400 A gradient of $\eta_{ib}$ is added to the RHS of the ocean momentum equation  
     398The gradient of $\eta_{ib}$ is added to the RHS of the ocean momentum equation  
    401399(see \mdl{dynspg} for the ocean). For sea-ice, the sea surface height, $\eta_m$,  
    402400which is provided to the sea ice model is set to $\eta - \eta_{ib}$ (see \mdl{sbcssr} module). 
    403 Furthermore, $\eta_{ib}$ can be set in the output. This simplifies the altirmetry data  
    404 and model comparison as inverse barometer sea surface height is usually removed  
    405 from thise date prior to their distribution. 
     401$\eta_{ib}$ can be set in the output. This can simplify the altirmetry data and model comparison  
     402as inverse barometer sea surface height is usually removed from these date prior to their distribution. 
    406403 
    407404% ================================================================ 
     
    522519 
    523520 
     521% ================================================================ 
     522% Interpolation on the Fly 
     523% ================================================================ 
     524 
     525\section [Interpolation on the Fly] {Interpolation on the Fly} 
     526\label{SBC_iof} 
     527 
     528Interpolation on the Fly allows the user to supply input files required 
     529for the surface forcing on grids other than the model grid. 
     530To do this he or she must supply, in addition to the source data file, 
     531a file of weights to be used to interpolate from the data grid to the model 
     532grid. 
     533The original development of this code used the SCRIP package (freely available  
     534under a copyright agreement from http://climate.lanl.gov/Software/SCRIP). 
     535In principle, any package can be used to generate the weights, but the 
     536variables in the input weights file must have the same names and meanings as 
     537assumed by the model. 
     538Two methods are currently available: bilinear and bicubic interpolation. 
     539 
     540\subsection{Bilinear Interpolation} 
     541\label{SBC_iof_bilinear} 
     542 
     543The input weights file in this case has two sets of variables: src01, src02, 
     544src03, src04 and wgt01, wgt02, wgt03, wgt04. 
     545The "src" variables correspond to the point in the input grid to which the weight 
     546"wgt" is to be applied. Each src value is an integer corresponding to the index of a  
     547point in the input grid when written as a one dimensional array.  For example, for an input grid 
     548of size 5x10, point (3,2) is referenced as point 8, since (2-1)*5+3=8. 
     549There are four of each variable because bilinear interpolation uses the four points defining 
     550the grid box containing the point to be interpolated. 
     551All of these arrays are on the model grid, so that values src01(i,j) and 
     552wgt01(i,j) are used to generate a value for point (i,j) in the model. 
     553 
     554Symbolically, the algorithm used is: 
     555 
     556\begin{equation} 
     557f_{m}(i,j) = f_{m}(i,j) + \sum_{k=1}^{4} {wgt(k)f(idx(src(k)))} 
     558\end{equation} 
     559where function idx() transforms a one dimensional index src(k) into a two dimensional index, 
     560and wgt(1) corresponds to variable "wgt01" for example. 
     561 
     562\subsection{Bicubic Interpolation} 
     563\label{SBC_iof_bicubic} 
     564 
     565Again there are two sets of variables: "src" and "wgt". 
     566But in this case there are 16 of each. 
     567The symbolic algorithm used to calculate values on the model grid is now: 
     568 
     569\begin{equation*} \begin{split} 
     570f_{m}(i,j) =  f_{m}(i,j) +& \sum_{k=1}^{4} {wgt(k)f(idx(src(k)))}      
     571              +   \sum_{k=5}^{8} {wgt(k)\left.\frac{\partial f}{\partial i}\right| _{idx(src(k))} }    \\ 
     572              +& \sum_{k=9}^{12} {wgt(k)\left.\frac{\partial f}{\partial j}\right| _{idx(src(k))} }    
     573              +   \sum_{k=13}^{16} {wgt(k)\left.\frac{\partial ^2 f}{\partial i \partial j}\right| _{idx(src(k))} } 
     574\end{split} 
     575\end{equation*} 
     576The gradients here are taken with respect to the horizontal indices and not distances since the spatial dependency has been absorbed into the weights. 
     577 
     578\subsection{Implementation} 
     579\label{SBC_iof_imp} 
     580 
     581To activate this option, a non-empty string should be supplied in the weights filename column  
     582of the relevant namelist; if this is left as an empty string no action is taken. 
     583In the model, weights files are read in and stored in a structured type (WGT) in the fldread  
     584module, as and when they are first required. 
     585This initialisation procedure determines whether the input data grid should be treated  
     586as cyclical or not by inspecting a global attribute stored in the weights input file. 
     587This attribute must be called "ew\_wrap" and be of integer type. 
     588If it is negative, the input non-model grid is assumed not to be cyclic. 
     589If zero or greater, then the value represents the number of columns that overlap. 
     590$E.g.$ if the input grid has columns at longitudes 0, 1, 2, .... , 359, then ew\_wrap should be set to 0; 
     591if longitudes are 0.5, 2.5, .... , 358.5, 360.5, 362.5, ew\_wrap should be 2. 
     592If the model does not find attribute ew\_wrap, then a value of -999 is assumed. 
     593In this case the \rou{fld\_read} routine defaults ew\_wrap to value 0 and therefore the grid  
     594is assumed to be cyclic with no overlapping columns. 
     595(In fact this only matters when bicubic interpolation is required.) 
     596Note that no testing is done to check the validity in the model, since there is no way  
     597of knowing the name used for the longitude variable, 
     598so it is up to the user to make sure his or her data is correctly represented. 
     599 
     600Next the routine reads in the weights. 
     601Bicubic interpolation is assumed if it finds a variable with name "src05", otherwise  
     602bilinear interpolation is used. The WGT structure includes dynamic arrays both for  
     603the storage of the weights (on the model grid), and when required, for reading in  
     604the variable to be interpolated (on the input data grid). 
     605The size of the input data array is determined by examining the values in the "src"  
     606arrays to find the minimum and maximum i and j values required. 
     607Since bicubic interpolation requires the calculation of gradients at each point on the grid,  
     608the corresponding arrays are dimensioned with a halo of width one grid point all the way around. 
     609When the array of points from the data file is adjacent to an edge of the data grid,  
     610the halo is either a copy of the row/column next to it (non-cyclical case), or is a copy  
     611of one from the first few columns on the opposite side of the grid (cyclical case). 
     612 
     613\subsection{Limitations} 
     614\label{SBC_iof_lim} 
     615 
     616\begin{description} 
     617\item 
     618The case where input data grids are not logically rectangular has not been tested. 
     619\item 
     620This code is not guaranteed to produce positive definite answers from positive definite inputs. 
     621\item 
     622The cyclic condition is only applied on left and right columns, and not to top and bottom rows. 
     623\item 
     624The gradients across the ends of a cyclical grid assume that the grid spacing between the two columns involved are consistent with the weights used. 
     625\item 
     626Neither interpolation scheme is conservative. 
     627(There is a conservative scheme available in SCRIP, but this has not been implemented.) 
     628\end{description} 
     629 
     630\subsection{Utilities} 
     631\label{SBC_iof_util} 
     632 
     633% to be completed 
     634A set of utilities to create a weights file for a rectilinear input grid is available  
     635(see the directory NEMOGCM/TOOLS/WEIGHTS). 
     636 
     637% ================================================================ 
     638% Miscellanea options 
     639% ================================================================ 
     640\section{Miscellaneous options} 
     641\label{SBC_misc} 
     642 
     643% ------------------------------------------------------------------------------------------------------------- 
     644%        Diurnal cycle 
     645% ------------------------------------------------------------------------------------------------------------- 
     646\subsection   [Diurnal  cycle (\textit{sbcdcy})] 
     647         {Diurnal cycle (\mdl{sbcdcy})} 
     648\label{SBC_dcy} 
     649%------------------------------------------namsbc_rnf---------------------------------------------------- 
     650%\namdisplay{namsbc}  
     651%------------------------------------------------------------------------------------------------------------- 
     652 
    524653%>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
    525 \begin{figure}[!t] \label{Fig_SBC_diurnal}  \begin{center} 
     654\begin{figure}[!t]    \begin{center} 
    526655\includegraphics[width=0.8\textwidth]{./TexFiles/Figures/Fig_SBC_diurnal.pdf} 
    527 \caption{Example of recontruction of the diurnal cycle variation of short wave flux   
     656\caption{ \label{Fig_SBC_diurnal}     
     657Example of recontruction of the diurnal cycle variation of short wave flux   
    528658from daily mean values. The reconstructed diurnal cycle (black line) is chosen  
    529659as the mean value of the analytical cycle (blue line) over a time step, not  
     
    531661\end{center}   \end{figure} 
    532662%>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
    533  
    534 % ================================================================ 
    535 %        Diurnal cycle 
    536 % ================================================================ 
    537 \section   [Diurnal  cycle (\textit{sbcdcy})] 
    538          {Diurnal cycle (\mdl{sbcdcy})} 
    539 \label{SBC_dcy} 
    540 %------------------------------------------namsbc_rnf---------------------------------------------------- 
    541 %\namdisplay{namsbc}  
    542 %------------------------------------------------------------------------------------------------------------- 
    543663 
    544664\cite{Bernie_al_JC05} have shown that to capture 90$\%$ of the diurnal variability of  
     
    565685 
    566686%>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
    567 \begin{figure}[!t] \label{Fig_SBC_dcy} \begin{center} 
     687\begin{figure}[!t] \begin{center} 
    568688\includegraphics[width=0.7\textwidth]{./TexFiles/Figures/Fig_SBC_dcy.pdf} 
    569 \caption{Example of recontruction of the diurnal cycle variation of short wave flux   
     689\caption{ \label{Fig_SBC_dcy}    
     690Example of recontruction of the diurnal cycle variation of short wave flux   
    570691from daily mean values on an ORCA2 grid with a time sampling of 2~hours (from 1am to 11pm).  
    571692The display is on (i,j) plane. } 
     
    577698appear due to an inconsistency between the scale of the vertical resolution  
    578699and the forcing acting on that scale. 
    579  
    580 % ================================================================ 
    581 % Interpolation on the Fly 
    582 % ================================================================ 
    583  
    584 \section [Interpolation on the Fly] {Interpolation on the Fly} 
    585 \label{SBC_iof} 
    586  
    587 Interpolation on the Fly allows the user to supply input files required 
    588 for the surface forcing on grids other than the model grid. 
    589 To do this he or she must supply, in addition to the source data file, 
    590 a file of weights to be used to interpolate from the data grid to the model 
    591 grid. 
    592 The original development of this code used the SCRIP package (freely available  
    593 under a copyright agreement from http://climate.lanl.gov/Software/SCRIP). 
    594 In principle, any package can be used to generate the weights, but the 
    595 variables in the input weights file must have the same names and meanings as 
    596 assumed by the model. 
    597 Two methods are currently available: bilinear and bicubic interpolation. 
    598  
    599 \subsection{Bilinear Interpolation} 
    600 \label{SBC_iof_bilinear} 
    601  
    602 The input weights file in this case has two sets of variables: src01, src02, 
    603 src03, src04 and wgt01, wgt02, wgt03, wgt04. 
    604 The "src" variables correspond to the point in the input grid to which the weight 
    605 "wgt" is to be applied. Each src value is an integer corresponding to the index of a  
    606 point in the input grid when written as a one dimensional array.  For example, for an input grid 
    607 of size 5x10, point (3,2) is referenced as point 8, since (2-1)*5+3=8. 
    608 There are four of each variable because bilinear interpolation uses the four points defining 
    609 the grid box containing the point to be interpolated. 
    610 All of these arrays are on the model grid, so that values src01(i,j) and 
    611 wgt01(i,j) are used to generate a value for point (i,j) in the model. 
    612  
    613 Symbolically, the algorithm used is: 
    614  
    615 \begin{equation} 
    616 f_{m}(i,j) = f_{m}(i,j) + \sum_{k=1}^{4} {wgt(k)f(idx(src(k)))} 
    617 \end{equation} 
    618 where function idx() transforms a one dimensional index src(k) into a two dimensional index, 
    619 and wgt(1) corresponds to variable "wgt01" for example. 
    620  
    621 \subsection{Bicubic Interpolation} 
    622 \label{SBC_iof_bicubic} 
    623  
    624 Again there are two sets of variables: "src" and "wgt". 
    625 But in this case there are 16 of each. 
    626 The symbolic algorithm used to calculate values on the model grid is now: 
    627  
    628 \begin{equation*} \begin{split} 
    629 f_{m}(i,j) =  f_{m}(i,j) +& \sum_{k=1}^{4} {wgt(k)f(idx(src(k)))}      
    630               +   \sum_{k=5}^{8} {wgt(k)\left.\frac{\partial f}{\partial i}\right| _{idx(src(k))} }    \\ 
    631               +& \sum_{k=9}^{12} {wgt(k)\left.\frac{\partial f}{\partial j}\right| _{idx(src(k))} }    
    632               +   \sum_{k=13}^{16} {wgt(k)\left.\frac{\partial ^2 f}{\partial i \partial j}\right| _{idx(src(k))} } 
    633 \end{split} 
    634 \end{equation*} 
    635 The gradients here are taken with respect to the horizontal indices and not distances since the spatial dependency has been absorbed into the weights. 
    636  
    637 \subsection{Implementation} 
    638 \label{SBC_iof_imp} 
    639  
    640 To activate this option, a non-empty string should be supplied in the weights filename column  
    641 of the relevant namelist; if this is left as an empty string no action is taken. 
    642 In the model, weights files are read in and stored in a structured type (WGT) in the fldread  
    643 module, as and when they are first required. 
    644 This initialisation procedure determines whether the input data grid should be treated  
    645 as cyclical or not by inspecting a global attribute stored in the weights input file. 
    646 This attribute must be called "ew\_wrap" and be of integer type. 
    647 If it is negative, the input non-model grid is assumed not to be cyclic. 
    648 If zero or greater, then the value represents the number of columns that overlap. 
    649 $E.g.$ if the input grid has columns at longitudes 0, 1, 2, .... , 359, then ew\_wrap should be set to 0; 
    650 if longitudes are 0.5, 2.5, .... , 358.5, 360.5, 362.5, ew\_wrap should be 2. 
    651 If the model does not find attribute ew\_wrap, then a value of -999 is assumed. 
    652 In this case the \rou{fld\_read} routine defaults ew\_wrap to value 0 and therefore the grid  
    653 is assumed to be cyclic with no overlapping columns. 
    654 (In fact this only matters when bicubic interpolation is required.) 
    655 Note that no testing is done to check the validity in the model, since there is no way  
    656 of knowing the name used for the longitude variable, 
    657 so it is up to the user to make sure his or her data is correctly represented. 
    658  
    659 Next the routine reads in the weights. 
    660 Bicubic interpolation is assumed if it finds a variable with name "src05", otherwise  
    661 bilinear interpolation is used. The WGT structure includes dynamic arrays both for  
    662 the storage of the weights (on the model grid), and when required, for reading in  
    663 the variable to be interpolated (on the input data grid). 
    664 The size of the input data array is determined by examining the values in the "src"  
    665 arrays to find the minimum and maximum i and j values required. 
    666 Since bicubic interpolation requires the calculation of gradients at each point on the grid,  
    667 the corresponding arrays are dimensioned with a halo of width one grid point all the way around. 
    668 When the array of points from the data file is adjacent to an edge of the data grid,  
    669 the halo is either a copy of the row/column next to it (non-cyclical case), or is a copy  
    670 of one from the first few columns on the opposite side of the grid (cyclical case). 
    671  
    672 \subsection{Limitations} 
    673 \label{SBC_iof_lim} 
    674  
    675 \begin{description} 
    676 \item 
    677 The case where input data grids are not logically rectangular has not been tested. 
    678 \item 
    679 This code is not guaranteed to produce positive definite answers from positive definite inputs. 
    680 \item 
    681 The cyclic condition is only applied on left and right columns, and not to top and bottom rows. 
    682 \item 
    683 The gradients across the ends of a cyclical grid assume that the grid spacing between the two columns involved are consistent with the weights used. 
    684 \item 
    685 Neither interpolation scheme is conservative. 
    686 (There is a conservative scheme available in SCRIP, but this has not been implemented.) 
    687 \end{description} 
    688  
    689 \subsection{Utilities} 
    690 \label{SBC_iof_util} 
    691  
    692 % to be completed 
    693 A set of utilities to create a weights file for a rectilinear input grid is available. 
    694  
    695 % ================================================================ 
    696 % Miscellanea options 
    697 % ================================================================ 
    698 \section{Miscellaneous options} 
    699 \label{SBC_misc} 
    700700 
    701701% ------------------------------------------------------------------------------------------------------------- 
Note: See TracChangeset for help on using the changeset viewer.