[10414] | 1 | \documentclass[../main/NEMO_manual]{subfiles} |
---|
[12377] | 2 | \usepackage{fontspec} |
---|
| 3 | \usepackage{fontawesome} |
---|
[10414] | 4 | |
---|
[6997] | 5 | \begin{document} |
---|
[11333] | 6 | |
---|
[14018] | 7 | \chapter{Surface Boundary Condition (SBC, SAS, ISF, ICB, TDE)} |
---|
[9407] | 8 | \label{chap:SBC} |
---|
[11584] | 9 | |
---|
[11598] | 10 | \thispagestyle{plain} |
---|
| 11 | |
---|
[11435] | 12 | \chaptertoc |
---|
[707] | 13 | |
---|
[11598] | 14 | \paragraph{Changes record} ~\\ |
---|
[10146] | 15 | |
---|
[11598] | 16 | {\footnotesize |
---|
| 17 | \begin{tabularx}{\textwidth}{l||X|X} |
---|
| 18 | Release & Author(s) & Modifications \\ |
---|
| 19 | \hline |
---|
[14018] | 20 | {\em next} & {\em Simon M{\" u}ller} & {\em Update of \autoref{sec:SBC_TDE}}\\[2mm] |
---|
[11598] | 21 | {\em 4.0} & {\em ...} & {\em ...} \\ |
---|
| 22 | {\em 3.6} & {\em ...} & {\em ...} \\ |
---|
| 23 | {\em 3.4} & {\em ...} & {\em ...} \\ |
---|
| 24 | {\em <=3.4} & {\em ...} & {\em ...} |
---|
| 25 | \end{tabularx} |
---|
| 26 | } |
---|
| 27 | |
---|
| 28 | \clearpage |
---|
| 29 | |
---|
[11558] | 30 | \begin{listing} |
---|
| 31 | \nlst{namsbc} |
---|
[11567] | 32 | \caption{\forcode{&namsbc}} |
---|
[11558] | 33 | \label{lst:namsbc} |
---|
| 34 | \end{listing} |
---|
[707] | 35 | |
---|
[11333] | 36 | The ocean needs seven fields as surface boundary condition: |
---|
| 37 | |
---|
[994] | 38 | \begin{itemize} |
---|
[11596] | 39 | \item the two components of the surface ocean stress $\left( {\tau_u \;,\;\tau_v} \right)$ |
---|
| 40 | \item the incoming solar and non solar heat fluxes $\left( {Q_{ns} \;,\;Q_{sr} } \right)$ |
---|
| 41 | \item the surface freshwater budget $\left( {\textit{emp}} \right)$ |
---|
| 42 | \item the surface salt flux associated with freezing/melting of seawater $\left( {\textit{sfx}} \right)$ |
---|
| 43 | \item the atmospheric pressure at the ocean surface $\left( p_a \right)$ |
---|
[994] | 44 | \end{itemize} |
---|
[11333] | 45 | |
---|
| 46 | Four different ways are available to provide the seven fields to the ocean. They are controlled by |
---|
[11578] | 47 | namelist \nam{sbc}{sbc} variables: |
---|
[11333] | 48 | |
---|
[2349] | 49 | \begin{itemize} |
---|
[12377] | 50 | \item a bulk formulation (\np[=.true.]{ln_blk}{ln\_blk}), featuring a selection of four bulk parameterization algorithms, |
---|
[11596] | 51 | \item a flux formulation (\np[=.true.]{ln_flx}{ln\_flx}), |
---|
| 52 | \item a coupled or mixed forced/coupled formulation (exchanges with a atmospheric model via the OASIS coupler), |
---|
[11582] | 53 | (\np{ln_cpl}{ln\_cpl} or \np[=.true.]{ln_mixcpl}{ln\_mixcpl}), |
---|
[11596] | 54 | \item a user defined formulation (\np[=.true.]{ln_usr}{ln\_usr}). |
---|
[2349] | 55 | \end{itemize} |
---|
[707] | 56 | |
---|
[11577] | 57 | The frequency at which the forcing fields have to be updated is given by the \np{nn_fsbc}{nn\_fsbc} namelist parameter. |
---|
[11333] | 58 | |
---|
| 59 | When the fields are supplied from data files (bulk, flux and mixed formulations), |
---|
| 60 | the input fields do not need to be supplied on the model grid. |
---|
| 61 | Instead, a file of coordinates and weights can be supplied to map the data from the input fields grid to |
---|
[10354] | 62 | the model points (so called "Interpolation on the Fly", see \autoref{subsec:SBC_iof}). |
---|
[11333] | 63 | If the "Interpolation on the Fly" option is used, input data belonging to land points (in the native grid) |
---|
| 64 | should be masked or filled to avoid spurious results in proximity of the coasts, as |
---|
[10354] | 65 | large sea-land gradients characterize most of the atmospheric variables. |
---|
[6289] | 66 | |
---|
[10354] | 67 | In addition, the resulting fields can be further modified using several namelist options. |
---|
[11333] | 68 | These options control: |
---|
| 69 | |
---|
[6289] | 70 | \begin{itemize} |
---|
[11596] | 71 | \item the rotation of vector components supplied relative to an east-north coordinate system onto |
---|
[11333] | 72 | the local grid directions in the model, |
---|
[11596] | 73 | \item the use of a land/sea mask for input fields (\np[=.true.]{nn_lsm}{nn\_lsm}), |
---|
| 74 | \item the addition of a surface restoring term to observed SST and/or SSS (\np[=.true.]{ln_ssr}{ln\_ssr}), |
---|
| 75 | \item the modification of fluxes below ice-covered areas (using climatological ice-cover or a sea-ice model) |
---|
[11582] | 76 | (\np[=0..3]{nn_ice}{nn\_ice}), |
---|
[11596] | 77 | \item the addition of river runoffs as surface freshwater fluxes or lateral inflow (\np[=.true.]{ln_rnf}{ln\_rnf}), |
---|
| 78 | \item the addition of ice-shelf melting as lateral inflow (parameterisation) or |
---|
[11582] | 79 | as fluxes applied at the land-ice ocean interface (\np[=.true.]{ln_isf}{ln\_isf}), |
---|
[11596] | 80 | \item the addition of a freshwater flux adjustment in order to avoid a mean sea-level drift |
---|
[11582] | 81 | (\np[=0..2]{nn_fwb}{nn\_fwb}), |
---|
[11596] | 82 | \item the transformation of the solar radiation (if provided as daily mean) into an analytical diurnal cycle |
---|
[11582] | 83 | (\np[=.true.]{ln_dm2dc}{ln\_dm2dc}), |
---|
[11596] | 84 | \item the activation of wave effects from an external wave model (\np[=.true.]{ln_wave}{ln\_wave}), |
---|
| 85 | \item a neutral drag coefficient is read from an external wave model (\np[=.true.]{ln_cdgw}{ln\_cdgw}), |
---|
| 86 | \item the Stokes drift from an external wave model is accounted for (\np[=.true.]{ln_sdw}{ln\_sdw}), |
---|
| 87 | \item the choice of the Stokes drift profile parameterization (\np[=0..2]{nn_sdrift}{nn\_sdrift}), |
---|
| 88 | \item the surface stress given to the ocean is modified by surface waves (\np[=.true.]{ln_tauwoc}{ln\_tauwoc}), |
---|
| 89 | \item the surface stress given to the ocean is read from an external wave model (\np[=.true.]{ln_tauw}{ln\_tauw}), |
---|
| 90 | \item the Stokes-Coriolis term is included (\np[=.true.]{ln_stcor}{ln\_stcor}), |
---|
| 91 | \item the light penetration in the ocean (\np[=.true.]{ln_traqsr}{ln\_traqsr} with namelist \nam{tra_qsr}{tra\_qsr}), |
---|
| 92 | \item the atmospheric surface pressure gradient effect on ocean and ice dynamics (\np[=.true.]{ln_apr_dyn}{ln\_apr\_dyn} with namelist \nam{sbc_apr}{sbc\_apr}), |
---|
| 93 | \item the effect of sea-ice pressure on the ocean (\np[=.true.]{ln_ice_embd}{ln\_ice\_embd}). |
---|
[6289] | 94 | \end{itemize} |
---|
[707] | 95 | |
---|
[11333] | 96 | In this chapter, we first discuss where the surface boundary conditions appear in the model equations. |
---|
[11435] | 97 | Then we present the three ways of providing the surface boundary conditions, |
---|
| 98 | followed by the description of the atmospheric pressure and the river runoff. |
---|
[11333] | 99 | Next, the scheme for interpolation on the fly is described. |
---|
[2282] | 100 | Finally, the different options that further modify the fluxes applied to the ocean are discussed. |
---|
[11543] | 101 | One of these is modification by icebergs (see \autoref{sec:SBC_ICB_icebergs}), |
---|
[10354] | 102 | which act as drifting sources of fresh water. |
---|
[11435] | 103 | Another example of modification is that due to the ice shelf melting/freezing (see \autoref{sec:SBC_isf}), |
---|
[5120] | 104 | which provides additional sources of fresh water. |
---|
[707] | 105 | |
---|
[11597] | 106 | %% ================================================================================================= |
---|
[707] | 107 | \section{Surface boundary condition for the ocean} |
---|
[11333] | 108 | \label{sec:SBC_ocean} |
---|
[707] | 109 | |
---|
[10354] | 110 | The surface ocean stress is the stress exerted by the wind and the sea-ice on the ocean. |
---|
| 111 | It is applied in \mdl{dynzdf} module as a surface boundary condition of the computation of |
---|
[11543] | 112 | the momentum vertical mixing trend (see \autoref{eq:DYN_zdf_sbc} in \autoref{sec:DYN_zdf}). |
---|
[10354] | 113 | As such, it has to be provided as a 2D vector interpolated onto the horizontal velocity ocean mesh, |
---|
[11435] | 114 | \ie\ resolved onto the model (\textbf{i},\textbf{j}) direction at $u$- and $v$-points. |
---|
[707] | 115 | |
---|
[10354] | 116 | The surface heat flux is decomposed into two parts, a non solar and a solar heat flux, |
---|
| 117 | $Q_{ns}$ and $Q_{sr}$, respectively. |
---|
| 118 | The former is the non penetrative part of the heat flux |
---|
[11435] | 119 | (\ie\ the sum of sensible, latent and long wave heat fluxes plus |
---|
[11333] | 120 | the heat content of the mass exchange between the ocean and sea-ice). |
---|
[10354] | 121 | It is applied in \mdl{trasbc} module as a surface boundary condition trend of |
---|
| 122 | the first level temperature time evolution equation |
---|
[11543] | 123 | (see \autoref{eq:TRA_sbc} and \autoref{eq:TRA_sbc_lin} in \autoref{subsec:TRA_sbc}). |
---|
[10354] | 124 | The latter is the penetrative part of the heat flux. |
---|
[11333] | 125 | It is applied as a 3D trend of the temperature equation (\mdl{traqsr} module) when |
---|
[11582] | 126 | \np[=.true.]{ln_traqsr}{ln\_traqsr}. |
---|
[10354] | 127 | The way the light penetrates inside the water column is generally a sum of decreasing exponentials |
---|
[11435] | 128 | (see \autoref{subsec:TRA_qsr}). |
---|
[707] | 129 | |
---|
[6289] | 130 | The surface freshwater budget is provided by the \textit{emp} field. |
---|
[10354] | 131 | It represents the mass flux exchanged with the atmosphere (evaporation minus precipitation) and |
---|
| 132 | possibly with the sea-ice and ice shelves (freezing minus melting of ice). |
---|
[11333] | 133 | It affects the ocean in two different ways: |
---|
| 134 | $(i)$ it changes the volume of the ocean, and therefore appears in the sea surface height equation as %GS: autoref ssh equation to be added |
---|
[11435] | 135 | a volume flux, and |
---|
[10354] | 136 | $(ii)$ it changes the surface temperature and salinity through the heat and salt contents of |
---|
[11333] | 137 | the mass exchanged with atmosphere, sea-ice and ice shelves. |
---|
[707] | 138 | |
---|
[994] | 139 | %\colorbox{yellow}{Miss: } |
---|
[11435] | 140 | %A extensive description of all namsbc namelist (parameter that have to be |
---|
[994] | 141 | %created!) |
---|
[11577] | 142 | %Especially the \np{nn_fsbc}{nn\_fsbc}, the \mdl{sbc\_oce} module (fluxes + mean sst sss ssu |
---|
[11435] | 143 | %ssv) \ie\ information required by flux computation or sea-ice |
---|
| 144 | %\mdl{sbc\_oce} containt the definition in memory of the 7 fields (6+runoff), add |
---|
[994] | 145 | %a word on runoff: included in surface bc or add as lateral obc{\ldots}. |
---|
| 146 | %Sbcmod manage the ``providing'' (fourniture) to the ocean the 7 fields |
---|
[11435] | 147 | %Fluxes update only each nf\_sbc time step (namsbc) explain relation |
---|
| 148 | %between nf\_sbc and nf\_ice, do we define nf\_blk??? ? only one |
---|
| 149 | %nf\_sbc |
---|
[994] | 150 | %Explain here all the namlist namsbc variable{\ldots}. |
---|
[6289] | 151 | % explain : use or not of surface currents |
---|
[994] | 152 | %\colorbox{yellow}{End Miss } |
---|
[707] | 153 | |
---|
[10354] | 154 | The ocean model provides, at each time step, to the surface module (\mdl{sbcmod}) |
---|
[11435] | 155 | the surface currents, temperature and salinity. |
---|
[11577] | 156 | These variables are averaged over \np{nn_fsbc}{nn\_fsbc} time-step (\autoref{tab:SBC_ssm}), and |
---|
| 157 | these averaged fields are used to compute the surface fluxes at the frequency of \np{nn_fsbc}{nn\_fsbc} time-steps. |
---|
[707] | 158 | |
---|
[10414] | 159 | \begin{table}[tb] |
---|
[11558] | 160 | \centering |
---|
| 161 | \begin{tabular}{|l|l|l|l|} |
---|
| 162 | \hline |
---|
| 163 | Variable description & Model variable & Units & point \\ |
---|
| 164 | \hline |
---|
| 165 | i-component of the surface current & ssu\_m & $m.s^{-1}$ & U \\ |
---|
| 166 | \hline |
---|
| 167 | j-component of the surface current & ssv\_m & $m.s^{-1}$ & V \\ |
---|
| 168 | \hline |
---|
| 169 | Sea surface temperature & sst\_m & \r{}$K$ & T \\\hline |
---|
| 170 | Sea surface salinty & sss\_m & $psu$ & T \\ \hline |
---|
| 171 | \end{tabular} |
---|
| 172 | \caption[Ocean variables provided to the surface module)]{ |
---|
| 173 | Ocean variables provided to the surface module (\texttt{SBC}). |
---|
[11577] | 174 | The variable are averaged over \protect\np{nn_fsbc}{nn\_fsbc} time-step, |
---|
[11558] | 175 | \ie\ the frequency of computation of surface fluxes.} |
---|
| 176 | \label{tab:SBC_ssm} |
---|
[10414] | 177 | \end{table} |
---|
[707] | 178 | |
---|
[11435] | 179 | %\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 |
---|
[707] | 180 | |
---|
[11597] | 181 | %% ================================================================================================= |
---|
[9393] | 182 | \section{Input data generic interface} |
---|
[9407] | 183 | \label{sec:SBC_input} |
---|
[2541] | 184 | |
---|
[10354] | 185 | A generic interface has been introduced to manage the way input data |
---|
[11333] | 186 | (2D or 3D fields, like surface forcing or ocean T and S) are specified in \NEMO. |
---|
| 187 | This task is achieved by \mdl{fldread}. |
---|
[11435] | 188 | The module is designed with four main objectives in mind: |
---|
[10354] | 189 | \begin{enumerate} |
---|
[11596] | 190 | \item optionally provide a time interpolation of the input data every specified model time-step, whatever their input frequency is, |
---|
[10354] | 191 | and according to the different calendars available in the model. |
---|
[11596] | 192 | \item optionally provide an on-the-fly space interpolation from the native input data grid to the model grid. |
---|
| 193 | \item make the run duration independent from the period cover by the input files. |
---|
| 194 | \item provide a simple user interface and a rather simple developer interface by |
---|
[11435] | 195 | limiting the number of prerequisite informations. |
---|
[11333] | 196 | \end{enumerate} |
---|
[2541] | 197 | |
---|
[11333] | 198 | As a result, the user has only to fill in for each variable a structure in the namelist file to |
---|
[10354] | 199 | define the input data file and variable names, the frequency of the data (in hours or months), |
---|
| 200 | whether its is climatological data or not, the period covered by the input file (one year, month, week or day), |
---|
[11333] | 201 | and three additional parameters for the on-the-fly interpolation. |
---|
[10354] | 202 | When adding a new input variable, the developer has to add the associated structure in the namelist, |
---|
| 203 | read this information by mirroring the namelist read in \rou{sbc\_blk\_init} for example, |
---|
| 204 | and simply call \rou{fld\_read} to obtain the desired input field at the model time-step and grid points. |
---|
[2541] | 205 | |
---|
[11435] | 206 | The only constraints are that the input file is a NetCDF file, the file name follows a nomenclature |
---|
[10354] | 207 | (see \autoref{subsec:SBC_fldread}), the period it cover is one year, month, week or day, and, |
---|
| 208 | if on-the-fly interpolation is used, a file of weights must be supplied (see \autoref{subsec:SBC_iof}). |
---|
[2541] | 209 | |
---|
[10354] | 210 | Note that when an input data is archived on a disc which is accessible directly from the workspace where |
---|
[11577] | 211 | the code is executed, then the user can set the \np{cn_dir}{cn\_dir} to the pathway leading to the data. |
---|
[11333] | 212 | By default, the data are assumed to be in the same directory as the executable, so that cn\_dir='./'. |
---|
[2541] | 213 | |
---|
[11597] | 214 | %% ================================================================================================= |
---|
[11567] | 215 | \subsection[Input data specification (\textit{fldread.F90})]{Input data specification (\protect\mdl{fldread})} |
---|
[9407] | 216 | \label{subsec:SBC_fldread} |
---|
[2541] | 217 | |
---|
| 218 | The structure associated with an input variable contains the following information: |
---|
[9388] | 219 | \begin{forlines} |
---|
[11435] | 220 | ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! land/sea mask ! |
---|
[4230] | 221 | ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! filename ! |
---|
[9388] | 222 | \end{forlines} |
---|
[11435] | 223 | where |
---|
| 224 | \begin{description} |
---|
[11598] | 225 | \item [File name]: the stem name of the NetCDF file to be opened. |
---|
[10354] | 226 | This stem will be completed automatically by the model, with the addition of a '.nc' at its end and |
---|
| 227 | by date information and possibly a prefix (when using AGRIF). |
---|
[11543] | 228 | \autoref{tab:SBC_fldread} provides the resulting file name in all possible cases according to |
---|
[10354] | 229 | whether it is a climatological file or not, and to the open/close frequency (see below for definition). |
---|
[10414] | 230 | \begin{table}[htbp] |
---|
[11558] | 231 | \centering |
---|
| 232 | \begin{tabular}{|l|c|c|c|} |
---|
| 233 | \hline |
---|
| 234 | & daily or weekLL & monthly & yearly \\ |
---|
| 235 | \hline |
---|
[11582] | 236 | \np[=.false.]{clim}{clim} & fn\_yYYYYmMMdDD.nc & fn\_yYYYYmMM.nc & fn\_yYYYY.nc \\ |
---|
[11558] | 237 | \hline |
---|
[11582] | 238 | \np[=.true.]{clim}{clim} & not possible & fn\_m??.nc & fn \\ |
---|
[11558] | 239 | \hline |
---|
| 240 | \end{tabular} |
---|
| 241 | \caption[Naming nomenclature for climatological or interannual input file]{ |
---|
| 242 | Naming nomenclature for climatological or interannual input file, |
---|
| 243 | as a function of the open/close frequency. |
---|
[10414] | 244 | The stem name is assumed to be 'fn'. |
---|
| 245 | For weekly files, the 'LLL' corresponds to the first three letters of the first day of the week |
---|
[11435] | 246 | (\ie\ 'sun','sat','fri','thu','wed','tue','mon'). |
---|
[11558] | 247 | The 'YYYY', 'MM' and 'DD' should be replaced by the actual year/month/day, |
---|
| 248 | always coded with 4 or 2 digits. |
---|
| 249 | Note that (1) in mpp, if the file is split over each subdomain, |
---|
| 250 | the suffix '.nc' is replaced by '\_PPPP.nc', |
---|
[10414] | 251 | where 'PPPP' is the process number coded with 4 digits; |
---|
[11333] | 252 | (2) when using AGRIF, the prefix '\_N' is added to files, where 'N' is the child grid number. |
---|
[10414] | 253 | } |
---|
[11558] | 254 | \label{tab:SBC_fldread} |
---|
[10414] | 255 | \end{table} |
---|
[11598] | 256 | \item [Record frequency]: the frequency of the records contained in the input file. |
---|
[10354] | 257 | Its unit is in hours if it is positive (for example 24 for daily forcing) or in months if negative |
---|
| 258 | (for example -1 for monthly forcing or -12 for annual forcing). |
---|
[11333] | 259 | Note that this frequency must REALLY be an integer and not a real. |
---|
| 260 | On some computers, setting it to '24.' can be interpreted as 240! |
---|
[11598] | 261 | \item [Variable name]: the name of the variable to be read in the input NetCDF file. |
---|
| 262 | \item [Time interpolation]: a logical to activate, or not, the time interpolation. |
---|
[10354] | 263 | If set to 'false', the forcing will have a steplike shape remaining constant during each forcing period. |
---|
| 264 | For example, when using a daily forcing without time interpolation, the forcing remaining constant from |
---|
| 265 | 00h00'00'' to 23h59'59". |
---|
| 266 | If set to 'true', the forcing will have a broken line shape. |
---|
[11333] | 267 | Records are assumed to be dated at the middle of the forcing period. |
---|
[10354] | 268 | For example, when using a daily forcing with time interpolation, |
---|
[11435] | 269 | linear interpolation will be performed between mid-day of two consecutive days. |
---|
[11598] | 270 | \item [Climatological forcing]: a logical to specify if a input file contains climatological forcing which can be cycle in time, |
---|
[10354] | 271 | or an interannual forcing which will requires additional files if |
---|
[11333] | 272 | the period covered by the simulation exceeds the one of the file. |
---|
[11435] | 273 | See the above file naming strategy which impacts the expected name of the file to be opened. |
---|
[11598] | 274 | \item [Open/close frequency]: the frequency at which forcing files must be opened/closed. |
---|
[10354] | 275 | Four cases are coded: |
---|
| 276 | 'daily', 'weekLLL' (with 'LLL' the first 3 letters of the first day of the week), 'monthly' and 'yearly' which |
---|
| 277 | means the forcing files will contain data for one day, one week, one month or one year. |
---|
| 278 | Files are assumed to contain data from the beginning of the open/close period. |
---|
| 279 | For example, the first record of a yearly file containing daily data is Jan 1st even if |
---|
[11333] | 280 | the experiment is not starting at the beginning of the year. |
---|
[11598] | 281 | \item [Others]: 'weights filename', 'pairing rotation' and 'land/sea mask' are associated with |
---|
[10354] | 282 | on-the-fly interpolation which is described in \autoref{subsec:SBC_iof}. |
---|
[2541] | 283 | \end{description} |
---|
| 284 | |
---|
| 285 | Additional remarks:\\ |
---|
[10354] | 286 | (1) The time interpolation is a simple linear interpolation between two consecutive records of the input data. |
---|
| 287 | The only tricky point is therefore to specify the date at which we need to do the interpolation and |
---|
| 288 | the date of the records read in the input files. |
---|
[11123] | 289 | Following \citet{leclair.madec_OM09}, the date of a time step is set at the middle of the time step. |
---|
[11333] | 290 | For example, for an experiment starting at 0h00'00" with a one-hour time-step, |
---|
[2541] | 291 | a time interpolation will be performed at the following time: 0h30'00", 1h30'00", 2h30'00", etc. |
---|
[10354] | 292 | However, for forcing data related to the surface module, |
---|
[11577] | 293 | values are not needed at every time-step but at every \np{nn_fsbc}{nn\_fsbc} time-step. |
---|
[11582] | 294 | For example with \np[=3]{nn_fsbc}{nn\_fsbc}, the surface module will be called at time-steps 1, 4, 7, etc. |
---|
[11577] | 295 | The date used for the time interpolation is thus redefined to the middle of \np{nn_fsbc}{nn\_fsbc} time-step period. |
---|
[11435] | 296 | In the previous example, this leads to: 1h30'00", 4h30'00", 7h30'00", etc. \\ |
---|
[10354] | 297 | (2) For code readablility and maintenance issues, we don't take into account the NetCDF input file calendar. |
---|
| 298 | The calendar associated with the forcing field is build according to the information provided by |
---|
| 299 | user in the record frequency, the open/close frequency and the type of temporal interpolation. |
---|
| 300 | For example, the first record of a yearly file containing daily data that will be interpolated in time is assumed to |
---|
[11333] | 301 | start Jan 1st at 12h00'00" and end Dec 31st at 12h00'00". \\ |
---|
[10354] | 302 | (3) If a time interpolation is requested, the code will pick up the needed data in the previous (next) file when |
---|
| 303 | interpolating data with the first (last) record of the open/close period. |
---|
[11435] | 304 | For example, if the input file specifications are ''yearly, containing daily data to be interpolated in time'', |
---|
[10354] | 305 | the values given by the code between 00h00'00" and 11h59'59" on Jan 1st will be interpolated values between |
---|
| 306 | Dec 31st 12h00'00" and Jan 1st 12h00'00". |
---|
| 307 | If the forcing is climatological, Dec and Jan will be keep-up from the same year. |
---|
| 308 | However, if the forcing is not climatological, at the end of |
---|
[11333] | 309 | the open/close period, the code will automatically close the current file and open the next one. |
---|
[10354] | 310 | Note that, if the experiment is starting (ending) at the beginning (end) of |
---|
[11333] | 311 | an open/close period, we do accept that the previous (next) file is not existing. |
---|
[10354] | 312 | In this case, the time interpolation will be performed between two identical values. |
---|
| 313 | For example, when starting an experiment on Jan 1st of year Y with yearly files and daily data to be interpolated, |
---|
| 314 | we do accept that the file related to year Y-1 is not existing. |
---|
| 315 | The value of Jan 1st will be used as the missing one for Dec 31st of year Y-1. |
---|
[11435] | 316 | If the file of year Y-1 exists, the code will read its last record. |
---|
[10354] | 317 | Therefore, this file can contain only one record corresponding to Dec 31st, |
---|
| 318 | a useful feature for user considering that it is too heavy to manipulate the complete file for year Y-1. |
---|
[2541] | 319 | |
---|
[11597] | 320 | %% ================================================================================================= |
---|
[9393] | 321 | \subsection{Interpolation on-the-fly} |
---|
[9407] | 322 | \label{subsec:SBC_iof} |
---|
[2541] | 323 | |
---|
[10354] | 324 | Interpolation on the Fly allows the user to supply input files required for the surface forcing on |
---|
| 325 | grids other than the model grid. |
---|
[11333] | 326 | To do this, he or she must supply, in addition to the source data file(s), a file of weights to be used to |
---|
[10354] | 327 | interpolate from the data grid to the model grid. |
---|
| 328 | The original development of this code used the SCRIP package |
---|
| 329 | (freely available \href{http://climate.lanl.gov/Software/SCRIP}{here} under a copyright agreement). |
---|
[11333] | 330 | In principle, any package such as CDO can be used to generate the weights, but the variables in |
---|
[10354] | 331 | the input weights file must have the same names and meanings as assumed by the model. |
---|
[11333] | 332 | Two methods are currently available: bilinear and bicubic interpolations. |
---|
[10354] | 333 | Prior to the interpolation, providing a land/sea mask file, the user can decide to remove land points from |
---|
| 334 | the input file and substitute the corresponding values with the average of the 8 neighbouring points in |
---|
| 335 | the native external grid. |
---|
| 336 | Only "sea points" are considered for the averaging. |
---|
| 337 | The land/sea mask file must be provided in the structure associated with the input variable. |
---|
[11333] | 338 | The netcdf land/sea mask variable name must be 'LSM' and must have the same horizontal and vertical dimensions as |
---|
| 339 | the associated variables and should be equal to 1 over land and 0 elsewhere. |
---|
| 340 | The procedure can be recursively applied by setting nn\_lsm > 1 in namsbc namelist. |
---|
| 341 | Note that nn\_lsm=0 forces the code to not apply the procedure, even if a land/sea mask file is supplied. |
---|
[2541] | 342 | |
---|
[11597] | 343 | %% ================================================================================================= |
---|
[9393] | 344 | \subsubsection{Bilinear interpolation} |
---|
[9407] | 345 | \label{subsec:SBC_iof_bilinear} |
---|
[2541] | 346 | |
---|
[10354] | 347 | The input weights file in this case has two sets of variables: |
---|
| 348 | src01, src02, src03, src04 and wgt01, wgt02, wgt03, wgt04. |
---|
[11333] | 349 | The "src" variables correspond to the point in the input grid to which the weight "wgt" is applied. |
---|
[10354] | 350 | Each src value is an integer corresponding to the index of a point in the input grid when |
---|
| 351 | written as a one dimensional array. |
---|
| 352 | For example, for an input grid of size 5x10, point (3,2) is referenced as point 8, since (2-1)*5+3=8. |
---|
[2541] | 353 | There are four of each variable because bilinear interpolation uses the four points defining |
---|
| 354 | the grid box containing the point to be interpolated. |
---|
[10354] | 355 | All of these arrays are on the model grid, so that values src01(i,j) and wgt01(i,j) are used to |
---|
| 356 | generate a value for point (i,j) in the model. |
---|
[2541] | 357 | |
---|
| 358 | Symbolically, the algorithm used is: |
---|
[10414] | 359 | \[ |
---|
| 360 | f_{m}(i,j) = f_{m}(i,j) + \sum_{k=1}^{4} {wgt(k)f(idx(src(k)))} |
---|
| 361 | \] |
---|
[2541] | 362 | where function idx() transforms a one dimensional index src(k) into a two dimensional index, |
---|
| 363 | and wgt(1) corresponds to variable "wgt01" for example. |
---|
| 364 | |
---|
[11597] | 365 | %% ================================================================================================= |
---|
[9393] | 366 | \subsubsection{Bicubic interpolation} |
---|
[9407] | 367 | \label{subsec:SBC_iof_bicubic} |
---|
[2541] | 368 | |
---|
[11333] | 369 | Again, there are two sets of variables: "src" and "wgt". |
---|
| 370 | But in this case, there are 16 of each. |
---|
[2541] | 371 | The symbolic algorithm used to calculate values on the model grid is now: |
---|
| 372 | |
---|
[10414] | 373 | \[ |
---|
| 374 | \begin{split} |
---|
| 375 | f_{m}(i,j) = f_{m}(i,j) +& \sum_{k=1}^{4} {wgt(k)f(idx(src(k)))} |
---|
[11333] | 376 | + \sum_{k=5 }^{8 } {wgt(k)\left.\frac{\partial f}{\partial i}\right| _{idx(src(k))} } \\ |
---|
| 377 | +& \sum_{k=9 }^{12} {wgt(k)\left.\frac{\partial f}{\partial j}\right| _{idx(src(k))} } |
---|
| 378 | + \sum_{k=13}^{16} {wgt(k)\left.\frac{\partial ^2 f}{\partial i \partial j}\right| _{idx(src(k))} } |
---|
[10414] | 379 | \end{split} |
---|
[10406] | 380 | \] |
---|
[10354] | 381 | The gradients here are taken with respect to the horizontal indices and not distances since |
---|
[11333] | 382 | the spatial dependency has been included into the weights. |
---|
[2541] | 383 | |
---|
[11597] | 384 | %% ================================================================================================= |
---|
[2541] | 385 | \subsubsection{Implementation} |
---|
[9407] | 386 | \label{subsec:SBC_iof_imp} |
---|
[2541] | 387 | |
---|
[10354] | 388 | To activate this option, a non-empty string should be supplied in |
---|
| 389 | the weights filename column of the relevant namelist; |
---|
| 390 | if this is left as an empty string no action is taken. |
---|
| 391 | In the model, weights files are read in and stored in a structured type (WGT) in the fldread module, |
---|
| 392 | as and when they are first required. |
---|
| 393 | This initialisation procedure determines whether the input data grid should be treated as cyclical or not by |
---|
| 394 | inspecting a global attribute stored in the weights input file. |
---|
[2541] | 395 | This attribute must be called "ew\_wrap" and be of integer type. |
---|
[11333] | 396 | If it is negative, the input non-model grid is assumed to be not cyclic. |
---|
[2541] | 397 | If zero or greater, then the value represents the number of columns that overlap. |
---|
| 398 | $E.g.$ if the input grid has columns at longitudes 0, 1, 2, .... , 359, then ew\_wrap should be set to 0; |
---|
| 399 | if longitudes are 0.5, 2.5, .... , 358.5, 360.5, 362.5, ew\_wrap should be 2. |
---|
| 400 | If the model does not find attribute ew\_wrap, then a value of -999 is assumed. |
---|
[11333] | 401 | In this case, the \rou{fld\_read} routine defaults ew\_wrap to value 0 and |
---|
[10354] | 402 | therefore the grid is assumed to be cyclic with no overlapping columns. |
---|
[11333] | 403 | (In fact, this only matters when bicubic interpolation is required.) |
---|
[10354] | 404 | Note that no testing is done to check the validity in the model, |
---|
| 405 | since there is no way of knowing the name used for the longitude variable, |
---|
[2541] | 406 | so it is up to the user to make sure his or her data is correctly represented. |
---|
| 407 | |
---|
| 408 | Next the routine reads in the weights. |
---|
[10354] | 409 | Bicubic interpolation is assumed if it finds a variable with name "src05", otherwise bilinear interpolation is used. |
---|
| 410 | The WGT structure includes dynamic arrays both for the storage of the weights (on the model grid), |
---|
| 411 | and when required, for reading in the variable to be interpolated (on the input data grid). |
---|
| 412 | The size of the input data array is determined by examining the values in the "src" arrays to |
---|
| 413 | find the minimum and maximum i and j values required. |
---|
| 414 | Since bicubic interpolation requires the calculation of gradients at each point on the grid, |
---|
[2541] | 415 | the corresponding arrays are dimensioned with a halo of width one grid point all the way around. |
---|
[10354] | 416 | When the array of points from the data file is adjacent to an edge of the data grid, |
---|
| 417 | the halo is either a copy of the row/column next to it (non-cyclical case), |
---|
| 418 | or is a copy of one from the first few columns on the opposite side of the grid (cyclical case). |
---|
[2541] | 419 | |
---|
[11597] | 420 | %% ================================================================================================= |
---|
[2541] | 421 | \subsubsection{Limitations} |
---|
[9407] | 422 | \label{subsec:SBC_iof_lim} |
---|
[2541] | 423 | |
---|
[11435] | 424 | \begin{enumerate} |
---|
[11596] | 425 | \item The case where input data grids are not logically rectangular (irregular grid case) has not been tested. |
---|
| 426 | \item This code is not guaranteed to produce positive definite answers from positive definite inputs when |
---|
[10354] | 427 | a bicubic interpolation method is used. |
---|
[11596] | 428 | \item The cyclic condition is only applied on left and right columns, and not to top and bottom rows. |
---|
| 429 | \item The gradients across the ends of a cyclical grid assume that the grid spacing between |
---|
[10354] | 430 | the two columns involved are consistent with the weights used. |
---|
[11596] | 431 | \item Neither interpolation scheme is conservative. (There is a conservative scheme available in SCRIP, |
---|
[10354] | 432 | but this has not been implemented.) |
---|
[2541] | 433 | \end{enumerate} |
---|
| 434 | |
---|
[11597] | 435 | %% ================================================================================================= |
---|
[2541] | 436 | \subsubsection{Utilities} |
---|
[9407] | 437 | \label{subsec:SBC_iof_util} |
---|
[2541] | 438 | |
---|
| 439 | % to be completed |
---|
[10354] | 440 | A set of utilities to create a weights file for a rectilinear input grid is available |
---|
[2541] | 441 | (see the directory NEMOGCM/TOOLS/WEIGHTS). |
---|
| 442 | |
---|
[11597] | 443 | %% ================================================================================================= |
---|
[11333] | 444 | \subsection{Standalone surface boundary condition scheme (SAS)} |
---|
[11543] | 445 | \label{subsec:SBC_SAS} |
---|
[2541] | 446 | |
---|
[11558] | 447 | \begin{listing} |
---|
| 448 | \nlst{namsbc_sas} |
---|
[11567] | 449 | \caption{\forcode{&namsbc_sas}} |
---|
[11558] | 450 | \label{lst:namsbc_sas} |
---|
| 451 | \end{listing} |
---|
[3699] | 452 | |
---|
[11333] | 453 | In some circumstances, it may be useful to avoid calculating the 3D temperature, |
---|
[11435] | 454 | salinity and velocity fields and simply read them in from a previous run or receive them from OASIS. |
---|
[4147] | 455 | For example: |
---|
[3607] | 456 | |
---|
[6289] | 457 | \begin{itemize} |
---|
[11596] | 458 | \item Multiple runs of the model are required in code development to |
---|
[10354] | 459 | see the effect of different algorithms in the bulk formulae. |
---|
[11596] | 460 | \item The effect of different parameter sets in the ice model is to be examined. |
---|
| 461 | \item Development of sea-ice algorithms or parameterizations. |
---|
| 462 | \item Spinup of the iceberg floats |
---|
| 463 | \item Ocean/sea-ice simulation with both models running in parallel (\np[=.true.]{ln_mixcpl}{ln\_mixcpl}) |
---|
[6289] | 464 | \end{itemize} |
---|
[3607] | 465 | |
---|
[11333] | 466 | The Standalone Surface scheme provides this capacity. |
---|
[11577] | 467 | Its options are defined through the \nam{sbc_sas}{sbc\_sas} namelist variables. |
---|
[3699] | 468 | A new copy of the model has to be compiled with a configuration based on ORCA2\_SAS\_LIM. |
---|
[11435] | 469 | However, no namelist parameters need be changed from the settings of the previous run (except perhaps nn\_date0). |
---|
[3607] | 470 | In this configuration, a few routines in the standard model are overriden by new versions. |
---|
| 471 | Routines replaced are: |
---|
| 472 | |
---|
[6289] | 473 | \begin{itemize} |
---|
[11598] | 474 | \item \mdl{nemogcm}: This routine initialises the rest of the model and repeatedly calls the stp time stepping routine (\mdl{step}). |
---|
[10354] | 475 | Since the ocean state is not calculated all associated initialisations have been removed. |
---|
[11598] | 476 | \item \mdl{step}: The main time stepping routine now only needs to call the sbc routine (and a few utility functions). |
---|
| 477 | \item \mdl{sbcmod}: This has been cut down and now only calculates surface forcing and the ice model required. |
---|
[10354] | 478 | New surface modules that can function when only the surface level of the ocean state is defined can also be added |
---|
[11435] | 479 | (\eg\ icebergs). |
---|
[11598] | 480 | \item \mdl{daymod}: No ocean restarts are read or written (though the ice model restarts are retained), |
---|
[10354] | 481 | so calls to restart functions have been removed. |
---|
| 482 | This also means that the calendar cannot be controlled by time in a restart file, |
---|
[11435] | 483 | so the user must check that nn\_date0 in the model namelist is correct for his or her purposes. |
---|
[11598] | 484 | \item \mdl{stpctl}: Since there is no free surface solver, references to it have been removed from \rou{stp\_ctl} module. |
---|
| 485 | \item \mdl{diawri}: All 3D data have been removed from the output. |
---|
[10354] | 486 | The surface temperature, salinity and velocity components (which have been read in) are written along with |
---|
| 487 | relevant forcing and ice data. |
---|
[6289] | 488 | \end{itemize} |
---|
[3607] | 489 | |
---|
| 490 | One new routine has been added: |
---|
| 491 | |
---|
[6289] | 492 | \begin{itemize} |
---|
[11598] | 493 | \item \mdl{sbcsas}: This module initialises the input files needed for reading temperature, salinity and |
---|
[10354] | 494 | velocity arrays at the surface. |
---|
[11435] | 495 | These filenames are supplied in namelist namsbc\_sas. |
---|
[11333] | 496 | Unfortunately, because of limitations with the \mdl{iom} module, |
---|
[10354] | 497 | the full 3D fields from the mean files have to be read in and interpolated in time, |
---|
| 498 | before using just the top level. |
---|
| 499 | Since fldread is used to read in the data, Interpolation on the Fly may be used to change input data resolution. |
---|
[6289] | 500 | \end{itemize} |
---|
[3607] | 501 | |
---|
[11577] | 502 | The user can also choose in the \nam{sbc_sas}{sbc\_sas} namelist to read the mean (nn\_fsbc time-step) fraction of solar net radiation absorbed in the 1st T level using |
---|
[11582] | 503 | (\np[=.true.]{ln_flx}{ln\_flx}) and to provide 3D oceanic velocities instead of 2D ones (\np{ln_flx}{ln\_flx}\forcode{=.true.}). In that last case, only the 1st level will be read in. |
---|
[6289] | 504 | |
---|
[11597] | 505 | %% ================================================================================================= |
---|
[11567] | 506 | \section[Flux formulation (\textit{sbcflx.F90})]{Flux formulation (\protect\mdl{sbcflx})} |
---|
[9407] | 507 | \label{sec:SBC_flx} |
---|
[10146] | 508 | |
---|
[12377] | 509 | % Laurent: DO NOT mix up ``bulk formulae'' (the classic equation) and the ``bulk |
---|
| 510 | % parameterization'' (i.e NCAR, COARE, ECMWF...) |
---|
| 511 | |
---|
[11558] | 512 | \begin{listing} |
---|
| 513 | \nlst{namsbc_flx} |
---|
[11567] | 514 | \caption{\forcode{&namsbc_flx}} |
---|
[11558] | 515 | \label{lst:namsbc_flx} |
---|
| 516 | \end{listing} |
---|
[707] | 517 | |
---|
[11582] | 518 | In the flux formulation (\np[=.true.]{ln_flx}{ln\_flx}), |
---|
[10354] | 519 | the surface boundary condition fields are directly read from input files. |
---|
[11577] | 520 | The user has to define in the namelist \nam{sbc_flx}{sbc\_flx} the name of the file, |
---|
[10354] | 521 | the name of the variable read in the file, the time frequency at which it is given (in hours), |
---|
| 522 | and a logical setting whether a time interpolation to the model time step is required for this field. |
---|
| 523 | See \autoref{subsec:SBC_fldread} for a more detailed description of the parameters. |
---|
[707] | 524 | |
---|
[10354] | 525 | Note that in general, a flux formulation is used in associated with a restoring term to observed SST and/or SSS. |
---|
| 526 | See \autoref{subsec:SBC_ssr} for its specification. |
---|
[707] | 527 | |
---|
[12377] | 528 | |
---|
| 529 | |
---|
| 530 | |
---|
| 531 | |
---|
| 532 | |
---|
| 533 | |
---|
[11597] | 534 | %% ================================================================================================= |
---|
[12377] | 535 | \pagebreak |
---|
| 536 | \newpage |
---|
[11567] | 537 | \section[Bulk formulation (\textit{sbcblk.F90})]{Bulk formulation (\protect\mdl{sbcblk})} |
---|
[9407] | 538 | \label{sec:SBC_blk} |
---|
[707] | 539 | |
---|
[12377] | 540 | % L. Brodeau, December 2019... % |
---|
| 541 | |
---|
[11558] | 542 | \begin{listing} |
---|
| 543 | \nlst{namsbc_blk} |
---|
[11567] | 544 | \caption{\forcode{&namsbc_blk}} |
---|
[11558] | 545 | \label{lst:namsbc_blk} |
---|
| 546 | \end{listing} |
---|
[707] | 547 | |
---|
[12377] | 548 | If the bulk formulation is selected (\np[=.true.]{ln_blk}{ln\_blk}), the air-sea |
---|
| 549 | fluxes associated with surface boundary conditions are estimated by means of the |
---|
| 550 | traditional \emph{bulk formulae}. As input, bulk formulae rely on a prescribed |
---|
| 551 | near-surface atmosphere state (typically extracted from a weather reanalysis) |
---|
| 552 | and the prognostic sea (-ice) surface state averaged over \np{nn_fsbc}{nn\_fsbc} |
---|
| 553 | time-step(s). |
---|
[11333] | 554 | |
---|
[12377] | 555 | % Turbulent air-sea fluxes are computed using the sea surface properties and |
---|
| 556 | % atmospheric SSVs at height $z$ above the sea surface, with the traditional |
---|
| 557 | % aerodynamic bulk formulae: |
---|
[707] | 558 | |
---|
[12377] | 559 | Note: all the NEMO Fortran routines involved in the present section have been |
---|
| 560 | initially developed (and are still developed in parallel) in |
---|
| 561 | the \href{https://brodeau.github.io/aerobulk/}{\texttt{AeroBulk}} open-source project |
---|
| 562 | \citep{brodeau.barnier.ea_JPO17}. |
---|
| 563 | |
---|
| 564 | %%% Bulk formulae are this: |
---|
| 565 | \subsection{Bulk formulae}\label{subsec:SBC_blkform} |
---|
| 566 | % |
---|
| 567 | In NEMO, the set of equations that relate each component of the surface fluxes |
---|
| 568 | to the near-surface atmosphere and sea surface states writes |
---|
| 569 | % |
---|
| 570 | \begin{subequations}\label{eq_bulk} |
---|
| 571 | \label{eq:SBC_bulk_form} |
---|
| 572 | \begin{eqnarray} |
---|
| 573 | \mathbf{\tau} &=& \rho~ C_D ~ \mathbf{U}_z ~ U_B \\ |
---|
| 574 | Q_H &=& \rho~C_H~C_P~\big[ \theta_z - T_s \big] ~ U_B \\ |
---|
| 575 | E &=& \rho~C_E ~\big[ q_s - q_z \big] ~ U_B \\ |
---|
| 576 | Q_L &=& -L_v \, E \\ |
---|
| 577 | % |
---|
| 578 | Q_{sr} &=& (1 - a) Q_{sw\downarrow} \\ |
---|
| 579 | Q_{ir} &=& \delta (Q_{lw\downarrow} -\sigma T_s^4) |
---|
| 580 | \end{eqnarray} |
---|
| 581 | \end{subequations} |
---|
| 582 | % |
---|
| 583 | with |
---|
| 584 | \[ \theta_z \simeq T_z+\gamma z \] |
---|
| 585 | \[ q_s \simeq 0.98\,q_{sat}(T_s,p_a ) \] |
---|
| 586 | % |
---|
| 587 | from which, the the non-solar heat flux is \[ Q_{ns} = Q_L + Q_H + Q_{ir} \] |
---|
| 588 | % |
---|
| 589 | where $\mathbf{\tau}$ is the wind stress vector, $Q_H$ the sensible heat flux, |
---|
| 590 | $E$ the evaporation, $Q_L$ the latent heat flux, and $Q_{ir}$ the net longwave |
---|
| 591 | flux. |
---|
| 592 | % |
---|
| 593 | $Q_{sw\downarrow}$ and $Q_{lw\downarrow}$ are the surface downwelling shortwave |
---|
| 594 | and longwave radiative fluxes, respectively. |
---|
| 595 | % |
---|
| 596 | Note: a positive sign for $\mathbf{\tau}$, $Q_H$, $Q_L$, $Q_{sr}$ or $Q_{ir}$ |
---|
| 597 | implies a gain of the relevant quantity for the ocean, while a positive $E$ |
---|
| 598 | implies a freshwater loss for the ocean. |
---|
| 599 | % |
---|
| 600 | $\rho$ is the density of air. $C_D$, $C_H$ and $C_E$ are the bulk transfer |
---|
| 601 | coefficients for momentum, sensible heat, and moisture, respectively. |
---|
| 602 | % |
---|
| 603 | $C_P$ is the heat capacity of moist air, and $L_v$ is the latent heat of |
---|
| 604 | vaporization of water. |
---|
| 605 | % |
---|
| 606 | $\theta_z$, $T_z$ and $q_z$ are the potential temperature, absolute temperature, |
---|
| 607 | and specific humidity of air at height $z$ above the sea surface, |
---|
| 608 | respectively. $\gamma z$ is a temperature correction term which accounts for the |
---|
| 609 | adiabatic lapse rate and approximates the potential temperature at height |
---|
| 610 | $z$ \citep{josey.gulev.ea_2013}. |
---|
| 611 | % |
---|
| 612 | $\mathbf{U}_z$ is the wind speed vector at height $z$ above the sea surface |
---|
| 613 | (possibly referenced to the surface current $\mathbf{u_0}$, |
---|
| 614 | section \ref{s_res1}.\ref{ss_current}). |
---|
| 615 | % |
---|
| 616 | The bulk scalar wind speed, namely $U_B$, is the scalar wind speed, |
---|
| 617 | $|\mathbf{U}_z|$, with the potential inclusion of a gustiness contribution. |
---|
| 618 | % |
---|
| 619 | $a$ and $\delta$ are the albedo and emissivity of the sea surface, respectively.\\ |
---|
| 620 | % |
---|
| 621 | %$p_a$ is the mean sea-level pressure (SLP). |
---|
| 622 | % |
---|
| 623 | $T_s$ is the sea surface temperature. $q_s$ is the saturation specific humidity |
---|
| 624 | of air at temperature $T_s$; it includes a 2\% reduction to account for the |
---|
| 625 | presence of salt in seawater \citep{sverdrup.johnson.ea_1942,kraus.businger_QJRMS96}. |
---|
| 626 | Depending on the bulk parametrization used, $T_s$ can either be the temperature |
---|
| 627 | at the air-sea interface (skin temperature, hereafter SSST) or at typically a |
---|
| 628 | few tens of centimeters below the surface (bulk sea surface temperature, |
---|
| 629 | hereafter SST). |
---|
| 630 | % |
---|
| 631 | The SSST differs from the SST due to the contributions of two effects of |
---|
| 632 | opposite sign, the \emph{cool skin} and \emph{warm layer} (hereafter CS and WL, |
---|
| 633 | respectively, see section\,\ref{subsec:SBC_skin}). |
---|
| 634 | % |
---|
| 635 | Technically, when the ECMWF or COARE* bulk parametrizations are selected |
---|
| 636 | (\np[=.true.]{ln_ECMWF}{ln\_ECMWF} or \np[=.true.]{ln_COARE*}{ln\_COARE\*}), |
---|
| 637 | $T_s$ is the SSST, as opposed to the NCAR bulk parametrization |
---|
| 638 | (\np[=.true.]{ln_NCAR}{ln\_NCAR}) for which $T_s$ is the bulk SST (\ie~temperature |
---|
| 639 | at first T-point level). |
---|
| 640 | |
---|
| 641 | For more details on all these aspects the reader is invited to refer |
---|
| 642 | to \citet{brodeau.barnier.ea_JPO17}. |
---|
| 643 | |
---|
| 644 | |
---|
| 645 | |
---|
| 646 | \subsection{Bulk parametrizations}\label{subsec:SBC_blk_ocean} |
---|
| 647 | %%%\label{subsec:SBC_param} |
---|
| 648 | |
---|
| 649 | Accuracy of the estimate of surface turbulent fluxes by means of bulk formulae |
---|
| 650 | strongly relies on that of the bulk transfer coefficients: $C_D$, $C_H$ and |
---|
| 651 | $C_E$. They are estimated with what we refer to as a \emph{bulk |
---|
| 652 | parametrization} algorithm. When relevant, these algorithms also perform the |
---|
| 653 | height adjustment of humidity and temperature to the wind reference measurement |
---|
| 654 | height (from \np{rn_zqt}{rn\_zqt} to \np{rn_zu}{rn\_zu}). |
---|
| 655 | |
---|
| 656 | |
---|
| 657 | |
---|
| 658 | For the open ocean, four bulk parametrization algorithms are available in NEMO: |
---|
| 659 | \begin{itemize} |
---|
| 660 | \item NCAR, formerly known as CORE, \citep{large.yeager_rpt04,large.yeager_CD09} |
---|
| 661 | \item COARE 3.0 \citep{fairall.bradley.ea_JC03} |
---|
| 662 | \item COARE 3.6 \citep{edson.jampana.ea_JPO13} |
---|
| 663 | \item ECMWF (IFS documentation, cy45) |
---|
| 664 | \end{itemize} |
---|
| 665 | |
---|
| 666 | |
---|
| 667 | With respect to version 3, the principal advances in version 3.6 of the COARE |
---|
| 668 | bulk parametrization are built around improvements in the representation of the |
---|
| 669 | effects of waves on |
---|
| 670 | fluxes \citep{edson.jampana.ea_JPO13,brodeau.barnier.ea_JPO17}. This includes |
---|
| 671 | improved relationships of surface roughness, and whitecap fraction on wave |
---|
| 672 | parameters. It is therefore recommended to chose version 3.6 over 3. |
---|
| 673 | |
---|
| 674 | |
---|
| 675 | |
---|
| 676 | |
---|
| 677 | \subsection{Cool-skin and warm-layer parametrizations}\label{subsec:SBC_skin} |
---|
| 678 | %\subsection[Cool-skin and warm-layer parameterizations |
---|
| 679 | %(\forcode{ln_skin_cs} \& \forcode{ln_skin_wl})]{Cool-skin and warm-layer parameterizations (\protect\np{ln_skin_cs}{ln\_skin\_cs} \& \np{ln_skin_wl}{ln\_skin\_wl})} |
---|
| 680 | %\label{subsec:SBC_skin} |
---|
| 681 | % |
---|
| 682 | As opposed to the NCAR bulk parametrization, more advanced bulk |
---|
| 683 | parametrizations such as COARE3.x and ECMWF are meant to be used with the skin |
---|
| 684 | temperature $T_s$ rather than the bulk SST (which, in NEMO is the temperature at |
---|
| 685 | the first T-point level, see section\,\ref{subsec:SBC_blkform}). |
---|
| 686 | % |
---|
| 687 | As such, the relevant cool-skin and warm-layer parametrization must be |
---|
| 688 | activated through \np[=T]{ln_skin_cs}{ln\_skin\_cs} |
---|
| 689 | and \np[=T]{ln_skin_wl}{ln\_skin\_wl} to use COARE3.x or ECMWF in a consistent |
---|
| 690 | way. |
---|
| 691 | |
---|
| 692 | \texttt{\#LB: ADD BLBLA ABOUT THE TWO CS/WL PARAMETRIZATIONS (ECMWF and COARE) !!!} |
---|
| 693 | |
---|
| 694 | For the cool-skin scheme parametrization COARE and ECMWF algorithms share the same |
---|
| 695 | basis: \citet{fairall.bradley.ea_JGR96}. With some minor updates based |
---|
| 696 | on \citet{zeng.beljaars_GRL05} for ECMWF, and \citet{fairall.ea_19} for COARE |
---|
| 697 | 3.6. |
---|
| 698 | |
---|
| 699 | For the warm-layer scheme, ECMWF is based on \citet{zeng.beljaars_GRL05} with a |
---|
| 700 | recent update from \citet{takaya.bidlot.ea_JGR10} (consideration of the |
---|
| 701 | turbulence input from Langmuir circulation). |
---|
| 702 | |
---|
| 703 | Importantly, COARE warm-layer scheme \citep{fairall.ea_19} includes a prognostic |
---|
| 704 | equation for the thickness of the warm-layer, while it is considered as constant |
---|
| 705 | in the ECWMF algorithm. |
---|
| 706 | |
---|
| 707 | |
---|
| 708 | \subsection{Appropriate use of each bulk parametrization} |
---|
| 709 | |
---|
| 710 | \subsubsection{NCAR} |
---|
| 711 | |
---|
| 712 | NCAR bulk parametrizations (formerly known as CORE) is meant to be used with the |
---|
| 713 | CORE II atmospheric forcing \citep{large.yeager_CD09}. The expected sea surface |
---|
| 714 | temperature is the bulk SST. Hence the following namelist parameters must be |
---|
| 715 | set: |
---|
| 716 | % |
---|
| 717 | \begin{verbatim} |
---|
| 718 | ... |
---|
| 719 | ln_NCAR = .true. |
---|
| 720 | ... |
---|
| 721 | rn_zqt = 10. ! Air temperature & humidity reference height (m) |
---|
| 722 | rn_zu = 10. ! Wind vector reference height (m) |
---|
| 723 | ... |
---|
| 724 | ln_skin_cs = .false. ! use the cool-skin parameterization |
---|
| 725 | ln_skin_wl = .false. ! use the warm-layer parameterization |
---|
| 726 | ... |
---|
| 727 | ln_humi_sph = .true. ! humidity "sn_humi" is specific humidity [kg/kg] |
---|
| 728 | \end{verbatim} |
---|
| 729 | |
---|
| 730 | |
---|
| 731 | \subsubsection{ECMWF} |
---|
| 732 | % |
---|
| 733 | With an atmospheric forcing based on a reanalysis of the ECMWF, such as the |
---|
| 734 | Drakkar Forcing Set \citep{brodeau.barnier.ea_OM10}, we strongly recommend to |
---|
| 735 | use the ECMWF bulk parametrizations with the cool-skin and warm-layer |
---|
| 736 | parametrizations activated. In ECMWF reanalyzes, since air temperature and |
---|
| 737 | humidity are provided at the 2\,m height, and given that the humidity is |
---|
| 738 | distributed as the dew-point temperature, the namelist must be tuned as follows: |
---|
| 739 | % |
---|
| 740 | \begin{verbatim} |
---|
| 741 | ... |
---|
| 742 | ln_ECMWF = .true. |
---|
| 743 | ... |
---|
| 744 | rn_zqt = 2. ! Air temperature & humidity reference height (m) |
---|
| 745 | rn_zu = 10. ! Wind vector reference height (m) |
---|
| 746 | ... |
---|
| 747 | ln_skin_cs = .true. ! use the cool-skin parameterization |
---|
| 748 | ln_skin_wl = .true. ! use the warm-layer parameterization |
---|
| 749 | ... |
---|
| 750 | ln_humi_dpt = .true. ! humidity "sn_humi" is dew-point temperature [K] |
---|
| 751 | ... |
---|
| 752 | \end{verbatim} |
---|
| 753 | % |
---|
| 754 | Note: when \np{ln_ECMWF}{ln\_ECMWF} is selected, the selection |
---|
| 755 | of \np{ln_skin_cs}{ln\_skin\_cs} and \np{ln_skin_wl}{ln\_skin\_wl} implicitly |
---|
| 756 | triggers the use of the ECMWF cool-skin and warm-layer parametrizations, |
---|
| 757 | respectively (found in \textit{sbcblk\_skin\_ecmwf.F90}). |
---|
| 758 | |
---|
| 759 | |
---|
| 760 | \subsubsection{COARE 3.x} |
---|
| 761 | % |
---|
| 762 | Since the ECMWF parametrization is largely based on the COARE* parametrization, |
---|
| 763 | the two algorithms are very similar in terms of structure and closure |
---|
| 764 | approach. As such, the namelist tuning for COARE 3.x is identical to that of |
---|
| 765 | ECMWF: |
---|
| 766 | % |
---|
| 767 | \begin{verbatim} |
---|
| 768 | ... |
---|
| 769 | ln_COARE3p6 = .true. |
---|
| 770 | ... |
---|
| 771 | ln_skin_cs = .true. ! use the cool-skin parameterization |
---|
| 772 | ln_skin_wl = .true. ! use the warm-layer parameterization |
---|
| 773 | ... |
---|
| 774 | \end{verbatim} |
---|
| 775 | |
---|
| 776 | Note: when \np[=T]{ln_COARE3p0}{ln\_COARE3p0} is selected, the selection |
---|
| 777 | of \np{ln_skin_cs}{ln\_skin\_cs} and \np{ln_skin_wl}{ln\_skin\_wl} implicitly |
---|
| 778 | triggers the use of the COARE cool-skin and warm-layer parametrizations, |
---|
| 779 | respectively (found in \textit{sbcblk\_skin\_coare.F90}). |
---|
| 780 | |
---|
| 781 | |
---|
| 782 | %lulu |
---|
| 783 | |
---|
| 784 | |
---|
| 785 | |
---|
| 786 | % In a typical bulk algorithm, the BTCs under neutral stability conditions are |
---|
| 787 | % defined using \emph{in-situ} flux measurements while their dependence on the |
---|
| 788 | % stability is accounted through the \emph{Monin-Obukhov Similarity Theory} and |
---|
| 789 | % the \emph{flux-profile} relationships \citep[\eg{}][]{Paulson_1970}. BTCs are |
---|
| 790 | % functions of the wind speed and the near-surface stability of the atmospheric |
---|
| 791 | % surface layer (hereafter ASL), and hence, depend on $U_B$, $T_s$, $T_z$, $q_s$ |
---|
| 792 | % and $q_z$. |
---|
| 793 | |
---|
| 794 | |
---|
| 795 | |
---|
| 796 | \subsection{Prescribed near-surface atmospheric state} |
---|
| 797 | |
---|
| 798 | The atmospheric fields used depend on the bulk formulae used. In forced mode, |
---|
| 799 | when a sea-ice model is used, a specific bulk formulation is used. Therefore, |
---|
| 800 | different bulk formulae are used for the turbulent fluxes computation over the |
---|
| 801 | ocean and over sea-ice surface. |
---|
| 802 | % |
---|
| 803 | |
---|
| 804 | %The choice is made by setting to true one of the following namelist |
---|
| 805 | %variable: \np{ln_NCAR}{ln\_NCAR}, \np{ln_COARE_3p0}{ln\_COARE\_3p0}, \np{ln_COARE_3p6}{ln\_COARE\_3p6} |
---|
| 806 | %and \np{ln_ECMWF}{ln\_ECMWF}. |
---|
| 807 | |
---|
[11577] | 808 | Common options are defined through the \nam{sbc_blk}{sbc\_blk} namelist variables. |
---|
[11333] | 809 | The required 9 input fields are: |
---|
[707] | 810 | |
---|
[10414] | 811 | \begin{table}[htbp] |
---|
[11558] | 812 | \centering |
---|
| 813 | \begin{tabular}{|l|c|c|c|} |
---|
| 814 | \hline |
---|
| 815 | Variable description & Model variable & Units & point \\ |
---|
| 816 | \hline |
---|
[12377] | 817 | i-component of the 10m air velocity & wndi & $m.s^{-1}$ & T \\ |
---|
[11558] | 818 | \hline |
---|
[12377] | 819 | j-component of the 10m air velocity & wndj & $m.s^{-1}$ & T \\ |
---|
[11558] | 820 | \hline |
---|
[12377] | 821 | 10m air temperature & tair & $K$ & T \\ |
---|
[11558] | 822 | \hline |
---|
[12377] | 823 | Specific humidity & humi & $-$ & T \\ |
---|
| 824 | Relative humidity & ~ & $\%$ & T \\ |
---|
| 825 | Dew-point temperature & ~ & $K$ & T \\ |
---|
[11558] | 826 | \hline |
---|
[12377] | 827 | Downwelling longwave radiation & qlw & $W.m^{-2}$ & T \\ |
---|
[11558] | 828 | \hline |
---|
[12377] | 829 | Downwelling shortwave radiation & qsr & $W.m^{-2}$ & T \\ |
---|
[11558] | 830 | \hline |
---|
| 831 | Total precipitation (liquid + solid) & precip & $Kg.m^{-2}.s^{-1}$ & T \\ |
---|
| 832 | \hline |
---|
| 833 | Solid precipitation & snow & $Kg.m^{-2}.s^{-1}$ & T \\ |
---|
| 834 | \hline |
---|
[13165] | 835 | Mean sea-level pressure & slp & $Pa$ & T \\ |
---|
[11558] | 836 | \hline |
---|
| 837 | \end{tabular} |
---|
[11543] | 838 | \label{tab:SBC_BULK} |
---|
[707] | 839 | \end{table} |
---|
| 840 | |
---|
[10354] | 841 | Note that the air velocity is provided at a tracer ocean point, not at a velocity ocean point ($u$- and $v$-points). |
---|
| 842 | It is simpler and faster (less fields to be read), but it is not the recommended method when |
---|
| 843 | the ocean grid size is the same or larger than the one of the input atmospheric fields. |
---|
[707] | 844 | |
---|
[11577] | 845 | The \np{sn_wndi}{sn\_wndi}, \np{sn_wndj}{sn\_wndj}, \np{sn_qsr}{sn\_qsr}, \np{sn_qlw}{sn\_qlw}, \np{sn_tair}{sn\_tair}, \np{sn_humi}{sn\_humi}, \np{sn_prec}{sn\_prec}, |
---|
| 846 | \np{sn_snow}{sn\_snow}, \np{sn_tdif}{sn\_tdif} parameters describe the fields and the way they have to be used |
---|
[11435] | 847 | (spatial and temporal interpolations). |
---|
[6497] | 848 | |
---|
[11577] | 849 | \np{cn_dir}{cn\_dir} is the directory of location of bulk files |
---|
[12377] | 850 | %\np{ln_taudif}{ln\_taudif} is the flag to specify if we use High Frequency (HF) tau information (.true.) or not (.false.) |
---|
[11577] | 851 | \np{rn_zqt}{rn\_zqt}: is the height of humidity and temperature measurements (m) |
---|
| 852 | \np{rn_zu}{rn\_zu}: is the height of wind measurements (m) |
---|
[6497] | 853 | |
---|
[11435] | 854 | Three multiplicative factors are available: |
---|
[11577] | 855 | \np{rn_pfac}{rn\_pfac} and \np{rn_efac}{rn\_efac} allow to adjust (if necessary) the global freshwater budget by |
---|
[10354] | 856 | increasing/reducing the precipitations (total and snow) and or evaporation, respectively. |
---|
[11577] | 857 | The third one,\np{rn_vfac}{rn\_vfac}, control to which extend the ice/ocean velocities are taken into account in |
---|
[10354] | 858 | the calculation of surface wind stress. |
---|
[11333] | 859 | Its range must be between zero and one, and it is recommended to set it to 0 at low-resolution (ORCA2 configuration). |
---|
[6497] | 860 | |
---|
[12377] | 861 | As for the flux parametrization, information about the input data required by the model is provided in |
---|
[11435] | 862 | the namsbc\_blk namelist (see \autoref{subsec:SBC_fldread}). |
---|
[11333] | 863 | |
---|
[12377] | 864 | |
---|
| 865 | \subsubsection{Air humidity} |
---|
| 866 | |
---|
| 867 | Air humidity can be provided as three different parameters: specific humidity |
---|
| 868 | [kg/kg], relative humidity [\%], or dew-point temperature [K] (LINK to namelist |
---|
| 869 | parameters)... |
---|
| 870 | |
---|
| 871 | |
---|
| 872 | ~\\ |
---|
| 873 | |
---|
| 874 | |
---|
| 875 | |
---|
| 876 | |
---|
| 877 | |
---|
| 878 | |
---|
| 879 | |
---|
| 880 | |
---|
| 881 | |
---|
| 882 | |
---|
[11597] | 883 | %% ================================================================================================= |
---|
[12377] | 884 | %\subsection[Ocean-Atmosphere Bulk formulae (\textit{sbcblk\_algo\_coare3p0.F90, sbcblk\_algo\_coare3p6.F90, %sbcblk\_algo\_ecmwf.F90, sbcblk\_algo\_ncar.F90})]{Ocean-Atmosphere Bulk formulae (\mdl{sbcblk\_algo\_coare3p0}, %\mdl{sbcblk\_algo\_coare3p6}, \mdl{sbcblk\_algo\_ecmwf}, \mdl{sbcblk\_algo\_ncar})} |
---|
| 885 | %\label{subsec:SBC_blk_ocean} |
---|
[707] | 886 | |
---|
[12377] | 887 | %Four different bulk algorithms are available to compute surface turbulent momentum and heat fluxes over the ocean. |
---|
| 888 | %COARE 3.0, COARE 3.6 and ECMWF schemes mainly differ by their roughness lenghts computation and consequently |
---|
| 889 | %their neutral transfer coefficients relationships with neutral wind. |
---|
| 890 | %\begin{itemize} |
---|
| 891 | %\item NCAR (\np[=.true.]{ln_NCAR}{ln\_NCAR}): The NCAR bulk formulae have been developed by \citet{large.yeager_rpt04}. |
---|
| 892 | % They have been designed to handle the NCAR forcing, a mixture of NCEP reanalysis and satellite data. |
---|
| 893 | % They use an inertial dissipative method to compute the turbulent transfer coefficients |
---|
| 894 | % (momentum, sensible heat and evaporation) from the 10m wind speed, air temperature and specific humidity. |
---|
| 895 | % This \citet{large.yeager_rpt04} dataset is available through |
---|
| 896 | % the \href{http://nomads.gfdl.noaa.gov/nomads/forms/mom4/NCAR.html}{GFDL web site}. |
---|
| 897 | % Note that substituting ERA40 to NCEP reanalysis fields does not require changes in the bulk formulea themself. |
---|
| 898 | % This is the so-called DRAKKAR Forcing Set (DFS) \citep{brodeau.barnier.ea_OM10}. |
---|
| 899 | %\item COARE 3.0 (\np[=.true.]{ln_COARE_3p0}{ln\_COARE\_3p0}): See \citet{fairall.bradley.ea_JC03} for more details |
---|
| 900 | %\item COARE 3.6 (\np[=.true.]{ln_COARE_3p6}{ln\_COARE\_3p6}): See \citet{edson.jampana.ea_JPO13} for more details |
---|
| 901 | %\item ECMWF (\np[=.true.]{ln_ECMWF}{ln\_ECMWF}): Based on \href{https://www.ecmwf.int/node/9204}{IFS (Cy40r1)} %implementation and documentation. |
---|
| 902 | % Surface roughness lengths needed for the Obukhov length are computed |
---|
| 903 | % following \citet{beljaars_QJRMS95}. |
---|
| 904 | %\end{itemize} |
---|
[707] | 905 | |
---|
[11597] | 906 | %% ================================================================================================= |
---|
[11435] | 907 | \subsection{Ice-Atmosphere Bulk formulae} |
---|
[11333] | 908 | \label{subsec:SBC_blk_ice} |
---|
[707] | 909 | |
---|
[12377] | 910 | |
---|
| 911 | \texttt{\#out\_of\_place:} |
---|
| 912 | For sea-ice, three possibilities can be selected: |
---|
| 913 | a constant transfer coefficient (1.4e-3; default |
---|
| 914 | value), \citet{lupkes.gryanik.ea_JGR12} (\np{ln_Cd_L12}{ln\_Cd\_L12}), |
---|
| 915 | and \citet{lupkes.gryanik_JGR15} (\np{ln_Cd_L15}{ln\_Cd\_L15}) parameterizations |
---|
| 916 | \texttt{\#out\_of\_place.} |
---|
| 917 | |
---|
| 918 | |
---|
| 919 | |
---|
| 920 | |
---|
[11333] | 921 | Surface turbulent fluxes between sea-ice and the atmosphere can be computed in three different ways: |
---|
[707] | 922 | |
---|
[11333] | 923 | \begin{itemize} |
---|
[11596] | 924 | \item Constant value (\np[ Cd_ice=1.4e-3 ]{constant value}{constant\ value}): |
---|
[11333] | 925 | default constant value used for momentum and heat neutral transfer coefficients |
---|
[11596] | 926 | \item \citet{lupkes.gryanik.ea_JGR12} (\np[=.true.]{ln_Cd_L12}{ln\_Cd\_L12}): |
---|
[11333] | 927 | This scheme adds a dependency on edges at leads, melt ponds and flows |
---|
[11435] | 928 | of the constant neutral air-ice drag. After some approximations, |
---|
[11333] | 929 | this can be resumed to a dependency on ice concentration (A). |
---|
| 930 | This drag coefficient has a parabolic shape (as a function of ice concentration) |
---|
| 931 | starting at 1.5e-3 for A=0, reaching 1.97e-3 for A=0.5 and going down 1.4e-3 for A=1. |
---|
| 932 | It is theoretically applicable to all ice conditions (not only MIZ). |
---|
[11596] | 933 | \item \citet{lupkes.gryanik_JGR15} (\np[=.true.]{ln_Cd_L15}{ln\_Cd\_L15}): |
---|
[11435] | 934 | Alternative turbulent transfer coefficients formulation between sea-ice |
---|
| 935 | and atmosphere with distinct momentum and heat coefficients depending |
---|
[11333] | 936 | on sea-ice concentration and atmospheric stability (no melt-ponds effect for now). |
---|
| 937 | The parameterization is adapted from ECHAM6 atmospheric model. |
---|
| 938 | Compared to Lupkes2012 scheme, it considers specific skin and form drags |
---|
| 939 | to compute neutral transfer coefficients for both heat and momentum fluxes. |
---|
| 940 | Atmospheric stability effect on transfer coefficient is also taken into account. |
---|
| 941 | \end{itemize} |
---|
| 942 | |
---|
[11597] | 943 | %% ================================================================================================= |
---|
[11567] | 944 | \section[Coupled formulation (\textit{sbccpl.F90})]{Coupled formulation (\protect\mdl{sbccpl})} |
---|
[9407] | 945 | \label{sec:SBC_cpl} |
---|
[10146] | 946 | |
---|
[11558] | 947 | \begin{listing} |
---|
| 948 | \nlst{namsbc_cpl} |
---|
[11567] | 949 | \caption{\forcode{&namsbc_cpl}} |
---|
[11558] | 950 | \label{lst:namsbc_cpl} |
---|
| 951 | \end{listing} |
---|
[707] | 952 | |
---|
[10354] | 953 | In the coupled formulation of the surface boundary condition, |
---|
[11333] | 954 | the fluxes are provided by the OASIS coupler at a frequency which is defined in the OASIS coupler namelist, |
---|
[10354] | 955 | while sea and ice surface temperature, ocean and ice albedo, and ocean currents are sent to |
---|
| 956 | the atmospheric component. |
---|
[707] | 957 | |
---|
[10354] | 958 | A generalised coupled interface has been developed. |
---|
[11333] | 959 | It is currently interfaced with OASIS-3-MCT versions 1 to 4 (\key{oasis3}). |
---|
[11338] | 960 | An additional specific CPP key (\key{oa3mct\_v1v2}) is needed for OASIS-3-MCT versions 1 and 2. |
---|
[11435] | 961 | It has been successfully used to interface \NEMO\ to most of the European atmospheric GCM |
---|
[10354] | 962 | (ARPEGE, ECHAM, ECMWF, HadAM, HadGAM, LMDz), as well as to \href{http://wrf-model.org/}{WRF} |
---|
| 963 | (Weather Research and Forecasting Model). |
---|
[707] | 964 | |
---|
[11435] | 965 | When PISCES biogeochemical model (\key{top}) is also used in the coupled system, |
---|
[11333] | 966 | the whole carbon cycle is computed. |
---|
[10354] | 967 | In this case, CO$_2$ fluxes will be exchanged between the atmosphere and the ice-ocean system |
---|
[11577] | 968 | (and need to be activated in \nam{sbc_cpl}{sbc\_cpl} ). |
---|
[2349] | 969 | |
---|
[10354] | 970 | The namelist above allows control of various aspects of the coupling fields (particularly for vectors) and |
---|
| 971 | now allows for any coupling fields to have multiple sea ice categories (as required by LIM3 and CICE). |
---|
[11577] | 972 | When indicating a multi-category coupling field in \nam{sbc_cpl}{sbc\_cpl}, the number of categories will be determined by |
---|
[10354] | 973 | the number used in the sea ice model. |
---|
[11333] | 974 | In some limited cases, it may be possible to specify single category coupling fields even when |
---|
[10354] | 975 | the sea ice model is running with multiple categories - |
---|
[11333] | 976 | in this case, the user should examine the code to be sure the assumptions made are satisfactory. |
---|
| 977 | In cases where this is definitely not possible, the model should abort with an error message. |
---|
[2349] | 978 | |
---|
[11597] | 979 | %% ================================================================================================= |
---|
[11567] | 980 | \section[Atmospheric pressure (\textit{sbcapr.F90})]{Atmospheric pressure (\protect\mdl{sbcapr})} |
---|
[9407] | 981 | \label{sec:SBC_apr} |
---|
[10146] | 982 | |
---|
[11558] | 983 | \begin{listing} |
---|
| 984 | \nlst{namsbc_apr} |
---|
[11567] | 985 | \caption{\forcode{&namsbc_apr}} |
---|
[11558] | 986 | \label{lst:namsbc_apr} |
---|
| 987 | \end{listing} |
---|
[2349] | 988 | |
---|
[10354] | 989 | The optional atmospheric pressure can be used to force ocean and ice dynamics |
---|
[11582] | 990 | (\np[=.true.]{ln_apr_dyn}{ln\_apr\_dyn}, \nam{sbc}{sbc} namelist). |
---|
[11577] | 991 | The input atmospheric forcing defined via \np{sn_apr}{sn\_apr} structure (\nam{sbc_apr}{sbc\_apr} namelist) |
---|
[10354] | 992 | can be interpolated in time to the model time step, and even in space when the interpolation on-the-fly is used. |
---|
| 993 | When used to force the dynamics, the atmospheric pressure is further transformed into |
---|
| 994 | an equivalent inverse barometer sea surface height, $\eta_{ib}$, using: |
---|
[10414] | 995 | \[ |
---|
| 996 | % \label{eq:SBC_ssh_ib} |
---|
| 997 | \eta_{ib} = - \frac{1}{g\,\rho_o} \left( P_{atm} - P_o \right) |
---|
| 998 | \] |
---|
[2349] | 999 | where $P_{atm}$ is the atmospheric pressure and $P_o$ a reference atmospheric pressure. |
---|
[11577] | 1000 | A value of $101,000~N/m^2$ is used unless \np{ln_ref_apr}{ln\_ref\_apr} is set to true. |
---|
[11333] | 1001 | In this case, $P_o$ is set to the value of $P_{atm}$ averaged over the ocean domain, |
---|
[11435] | 1002 | \ie\ the mean value of $\eta_{ib}$ is kept to zero at all time steps. |
---|
[2349] | 1003 | |
---|
[10354] | 1004 | The gradient of $\eta_{ib}$ is added to the RHS of the ocean momentum equation (see \mdl{dynspg} for the ocean). |
---|
| 1005 | For sea-ice, the sea surface height, $\eta_m$, which is provided to the sea ice model is set to $\eta - \eta_{ib}$ |
---|
| 1006 | (see \mdl{sbcssr} module). |
---|
[11333] | 1007 | $\eta_{ib}$ can be written in the output. |
---|
[10354] | 1008 | This can simplify altimetry data and model comparison as |
---|
| 1009 | inverse barometer sea surface height is usually removed from these date prior to their distribution. |
---|
[2349] | 1010 | |
---|
[10354] | 1011 | When using time-splitting and BDY package for open boundaries conditions, |
---|
[11435] | 1012 | the equivalent inverse barometer sea surface height $\eta_{ib}$ can be added to BDY ssh data: |
---|
[11577] | 1013 | \np{ln_apr_obc}{ln\_apr\_obc} might be set to true. |
---|
[3795] | 1014 | |
---|
[11597] | 1015 | %% ================================================================================================= |
---|
[14018] | 1016 | \section{Surface tides (TDE)} |
---|
| 1017 | \label{sec:SBC_TDE} |
---|
[3294] | 1018 | |
---|
[11558] | 1019 | \begin{listing} |
---|
| 1020 | \nlst{nam_tide} |
---|
[11567] | 1021 | \caption{\forcode{&nam_tide}} |
---|
[11558] | 1022 | \label{lst:nam_tide} |
---|
| 1023 | \end{listing} |
---|
[3294] | 1024 | |
---|
[14018] | 1025 | \subsection{Tidal constituents} |
---|
| 1026 | Ocean model component TDE provides the common functionality for tidal forcing |
---|
| 1027 | and tidal analysis in the model framework. This includes the computation of the gravitational |
---|
| 1028 | surface forcing, as well as support for lateral forcing at open boundaries (see |
---|
| 1029 | \autoref{subsec:LBC_bdy_tides}) and tidal harmonic analysis (see |
---|
| 1030 | \autoref{subsec:DIA_diamlr} and \autoref{subsec:DIA_diadetide}). The module is |
---|
| 1031 | activated with \np[=.true.]{ln_tide}{ln\_tide} in namelist |
---|
| 1032 | \nam{_tide}{\_tide}. It provides the same 34 tidal constituents that are |
---|
| 1033 | included in the |
---|
| 1034 | \href{https://www.aviso.altimetry.fr/en/data/products/auxiliary-products/global-tide-fes.html}{FES2014 |
---|
| 1035 | ocean tide model}: Mf, Mm, Ssa, Mtm, Msf, Msqm, Sa, K1, O1, P1, Q1, J1, S1, |
---|
| 1036 | M2, S2, N2, K2, nu2, mu2, 2N2, L2, T2, eps2, lam2, R2, M3, MKS2, MN4, MS4, M4, |
---|
| 1037 | N4, S4, M6, and M8; see file \hf{tide} and \mdl{tide\_mod} for further |
---|
| 1038 | information and references\footnote{As a legacy option \np{ln_tide_var} can be |
---|
| 1039 | set to \forcode{0}, in which case the 19 tidal constituents (M2, N2, 2N2, S2, |
---|
| 1040 | K2, K1, O1, Q1, P1, M4, Mf, Mm, Msqm, Mtm, S1, MU2, NU2, L2, and T2; see file |
---|
| 1041 | \hf{tide}) and associated parameters that have been available in NEMO version |
---|
| 1042 | 4.0 and earlier are available}. Constituents to be included in the tidal forcing |
---|
| 1043 | (surface and lateral boundaries) are selected by enumerating their respective |
---|
| 1044 | names in namelist array \np{sn_tide_cnames}{sn\_tide\_cnames}.\par |
---|
| 1045 | |
---|
| 1046 | \subsection{Surface tidal forcing} |
---|
| 1047 | Surface tidal forcing can be represented in the model through an additional |
---|
| 1048 | barotropic force in the momentum equation (\autoref{eq:MB_PE_dyn}) such that: |
---|
[10414] | 1049 | \[ |
---|
[14018] | 1050 | \frac{\partial {\mathrm {\mathbf U}}_h }{\partial t} = \ldots +g\nabla (\gamma |
---|
| 1051 | \Pi_{eq} + \Pi_{sal}) |
---|
[10414] | 1052 | \] |
---|
[14018] | 1053 | where $\gamma \Pi_{eq}$ stands for the equilibrium tidal forcing scaled by a spatially |
---|
| 1054 | uniform tilt factor $\gamma$, and $\Pi_{sal}$ is an optional |
---|
| 1055 | self-attraction and loading term (SAL). These additional terms are enabled when, |
---|
| 1056 | in addition to \np[=.true.]{ln_tide}{ln\_tide}), |
---|
| 1057 | \np[=.true.]{ln_tide_pot}{ln\_tide\_pot}.\par |
---|
[11435] | 1058 | |
---|
[14018] | 1059 | The equilibrium tidal forcing is expressed as a sum over the subset of |
---|
| 1060 | constituents listed in \np{sn_tide_cnames}{sn\_tide\_cnames} of |
---|
| 1061 | \nam{_tide} (e.g., |
---|
| 1062 | \begin{forlines} |
---|
| 1063 | sn_tide_cnames(1) = 'M2' |
---|
| 1064 | sn_tide_cnames(2) = 'K1' |
---|
| 1065 | sn_tide_cnames(3) = 'S2' |
---|
| 1066 | sn_tide_cnames(4) = 'O1' |
---|
| 1067 | \end{forlines} |
---|
| 1068 | to select the four tidal constituents of strongest equilibrium tidal |
---|
| 1069 | potential). The tidal tilt factor $\gamma = 1 + k - h$ includes the |
---|
| 1070 | Love numbers $k$ and $h$ \citep{love_prsla1909}; this factor is |
---|
| 1071 | configurable using \np{rn_tide_gamma} (default value 0.7). Optionally, |
---|
| 1072 | when \np[=.true.]{ln_tide_ramp}{ln\_tide\_ramp}, the equilibrium tidal |
---|
| 1073 | forcing can be ramped up linearly from zero during the initial |
---|
| 1074 | \np{rn_tide_ramp_dt}{rn\_tide\_ramp\_dt} days of the model run.\par |
---|
[3294] | 1075 | |
---|
[10614] | 1076 | The SAL term should in principle be computed online as it depends on |
---|
[11123] | 1077 | the model tidal prediction itself (see \citet{arbic.garner.ea_DSR04} for a |
---|
[14018] | 1078 | discussion about the practical implementation of this term). The complex |
---|
| 1079 | calculations involved in such computations, however, are computationally very |
---|
| 1080 | expensive. Here, two mutually exclusive simpler variants are available: |
---|
| 1081 | amplitudes generated by an external model for oscillatory $\Pi_{sal}$ |
---|
| 1082 | contributions from each of the selected tidal constituents can be read in |
---|
| 1083 | (\np[=.true.]{ln_read_load}{ln\_read\_load}) from the file specified in |
---|
| 1084 | \np{cn_tide_load}{cn\_tide\_load} (the variable names are comprised of the |
---|
| 1085 | tidal-constituent name and suffixes \forcode{_z1} and \forcode{_z2} for the two |
---|
| 1086 | orthogonal components, respectively); alternatively, a ``scalar approximation'' |
---|
| 1087 | can be used (\np[=.true.]{ln_scal_load}{ln\_scal\_load}), where |
---|
[10414] | 1088 | \[ |
---|
[10614] | 1089 | \Pi_{sal} = \beta \eta, |
---|
[10414] | 1090 | \] |
---|
[14018] | 1091 | with a spatially uniform coefficient $\beta$, which can be configured |
---|
| 1092 | via \np{rn_scal_load}{rn\_scal\_load} (default value 0.094) and is |
---|
| 1093 | often tuned to minimize tidal prediction errors.\par |
---|
[3294] | 1094 | |
---|
[14018] | 1095 | For diagnostic purposes, the forcing potential of the individual tidal |
---|
| 1096 | constituents (incl. load ptential, if activated) and the total forcing |
---|
| 1097 | potential (incl. load potential, if activated) can be made available |
---|
| 1098 | as diagnostic output by setting |
---|
| 1099 | \np[=.true.]{ln_tide_dia}{ln\_tide\_dia} (fields |
---|
| 1100 | \forcode{tide_pot_<constituent>} and \forcode{tide_pot}).\par |
---|
| 1101 | |
---|
[11597] | 1102 | %% ================================================================================================= |
---|
[11543] | 1103 | \section[River runoffs (\textit{sbcrnf.F90})]{River runoffs (\protect\mdl{sbcrnf})} |
---|
[9407] | 1104 | \label{sec:SBC_rnf} |
---|
[10146] | 1105 | |
---|
[11558] | 1106 | \begin{listing} |
---|
| 1107 | \nlst{namsbc_rnf} |
---|
[11567] | 1108 | \caption{\forcode{&namsbc_rnf}} |
---|
[11558] | 1109 | \label{lst:namsbc_rnf} |
---|
| 1110 | \end{listing} |
---|
[2282] | 1111 | |
---|
[11435] | 1112 | %River runoff generally enters the ocean at a nonzero depth rather than through the surface. |
---|
[2282] | 1113 | %Many models, however, have traditionally inserted river runoff to the top model cell. |
---|
[11435] | 1114 | %This was the case in \NEMO\ prior to the version 3.3. The switch toward a input of runoff |
---|
| 1115 | %throughout a nonzero depth has been motivated by the numerical and physical problems |
---|
| 1116 | %that arise when the top grid cells are of the order of one meter. This situation is common in |
---|
| 1117 | %coastal modelling and becomes more and more often open ocean and climate modelling |
---|
[2282] | 1118 | %\footnote{At least a top cells thickness of 1~meter and a 3 hours forcing frequency are |
---|
[11123] | 1119 | %required to properly represent the diurnal cycle \citep{bernie.woolnough.ea_JC05}. see also \autoref{fig:SBC_dcy}.}. |
---|
[2282] | 1120 | |
---|
[11435] | 1121 | %To do this we need to treat evaporation/precipitation fluxes and river runoff differently in the |
---|
| 1122 | %\mdl{tra\_sbc} module. We decided to separate them throughout the code, so that the variable |
---|
| 1123 | %\textit{emp} represented solely evaporation minus precipitation fluxes, and a new 2d variable |
---|
| 1124 | %rnf was added which represents the volume flux of river runoff (in kg/m2s to remain consistent with |
---|
| 1125 | %emp). This meant many uses of emp and emps needed to be changed, a list of all modules which use |
---|
[2282] | 1126 | %emp or emps and the changes made are below: |
---|
| 1127 | |
---|
| 1128 | %Rachel: |
---|
| 1129 | River runoff generally enters the ocean at a nonzero depth rather than through the surface. |
---|
| 1130 | Many models, however, have traditionally inserted river runoff to the top model cell. |
---|
[11435] | 1131 | This was the case in \NEMO\ prior to the version 3.3, |
---|
[10354] | 1132 | and was combined with an option to increase vertical mixing near the river mouth. |
---|
[2282] | 1133 | |
---|
[10354] | 1134 | However, with this method numerical and physical problems arise when the top grid cells are of the order of one meter. |
---|
[11435] | 1135 | This situation is common in coastal modelling and is becoming more common in open ocean and climate modelling |
---|
[10354] | 1136 | \footnote{ |
---|
| 1137 | At least a top cells thickness of 1~meter and a 3 hours forcing frequency are required to |
---|
[11123] | 1138 | properly represent the diurnal cycle \citep{bernie.woolnough.ea_JC05}. |
---|
[10354] | 1139 | see also \autoref{fig:SBC_dcy}.}. |
---|
[2282] | 1140 | |
---|
[10354] | 1141 | As such from V~3.3 onwards it is possible to add river runoff through a non-zero depth, |
---|
| 1142 | and for the temperature and salinity of the river to effect the surrounding ocean. |
---|
| 1143 | The user is able to specify, in a NetCDF input file, the temperature and salinity of the river, |
---|
| 1144 | along with the depth (in metres) which the river should be added to. |
---|
[2282] | 1145 | |
---|
[11577] | 1146 | Namelist variables in \nam{sbc_rnf}{sbc\_rnf}, \np{ln_rnf_depth}{ln\_rnf\_depth}, \np{ln_rnf_sal}{ln\_rnf\_sal} and |
---|
| 1147 | \np{ln_rnf_temp}{ln\_rnf\_temp} control whether the river attributes (depth, salinity and temperature) are read in and used. |
---|
[10354] | 1148 | If these are set as false the river is added to the surface box only, assumed to be fresh (0~psu), |
---|
| 1149 | and/or taken as surface temperature respectively. |
---|
[2282] | 1150 | |
---|
[11435] | 1151 | The runoff value and attributes are read in in sbcrnf. |
---|
[10354] | 1152 | For temperature -999 is taken as missing data and the river temperature is taken to |
---|
| 1153 | be the surface temperatue at the river point. |
---|
[11435] | 1154 | For the depth parameter a value of -1 means the river is added to the surface box only, |
---|
| 1155 | and a value of -999 means the river is added through the entire water column. |
---|
[10354] | 1156 | After being read in the temperature and salinity variables are multiplied by the amount of runoff |
---|
| 1157 | (converted into m/s) to give the heat and salt content of the river runoff. |
---|
| 1158 | After the user specified depth is read ini, |
---|
[11577] | 1159 | the number of grid boxes this corresponds to is calculated and stored in the variable \np{nz_rnf}{nz\_rnf}. |
---|
[10354] | 1160 | The variable \textit{h\_dep} is then calculated to be the depth (in metres) of |
---|
| 1161 | the bottom of the lowest box the river water is being added to |
---|
[11435] | 1162 | (\ie\ the total depth that river water is being added to in the model). |
---|
[2282] | 1163 | |
---|
[10354] | 1164 | The mass/volume addition due to the river runoff is, at each relevant depth level, added to |
---|
[10468] | 1165 | the horizontal divergence (\textit{hdivn}) in the subroutine \rou{sbc\_rnf\_div} (called from \mdl{divhor}). |
---|
[2282] | 1166 | This increases the diffusion term in the vicinity of the river, thereby simulating a momentum flux. |
---|
[10354] | 1167 | The sea surface height is calculated using the sum of the horizontal divergence terms, |
---|
[11435] | 1168 | and so the river runoff indirectly forces an increase in sea surface height. |
---|
[2282] | 1169 | |
---|
[2349] | 1170 | The \textit{hdivn} terms are used in the tracer advection modules to force vertical velocities. |
---|
[10354] | 1171 | This causes a mass of water, equal to the amount of runoff, to be moved into the box above. |
---|
| 1172 | The heat and salt content of the river runoff is not included in this step, |
---|
| 1173 | and so the tracer concentrations are diluted as water of ocean temperature and salinity is moved upward out of |
---|
| 1174 | the box and replaced by the same volume of river water with no corresponding heat and salt addition. |
---|
[2282] | 1175 | |
---|
[10354] | 1176 | For the linear free surface case, at the surface box the tracer advection causes a flux of water |
---|
| 1177 | (of equal volume to the runoff) through the sea surface out of the domain, |
---|
| 1178 | which causes a salt and heat flux out of the model. |
---|
[2282] | 1179 | As such the volume of water does not change, but the water is diluted. |
---|
| 1180 | |
---|
[11333] | 1181 | For the non-linear free surface case, no flux is allowed through the surface. |
---|
[10354] | 1182 | Instead in the surface box (as well as water moving up from the boxes below) a volume of runoff water is added with |
---|
| 1183 | no corresponding heat and salt addition and so as happens in the lower boxes there is a dilution effect. |
---|
| 1184 | (The runoff addition to the top box along with the water being moved up through |
---|
| 1185 | boxes below means the surface box has a large increase in volume, whilst all other boxes remain the same size) |
---|
[2282] | 1186 | |
---|
| 1187 | In trasbc the addition of heat and salt due to the river runoff is added. |
---|
| 1188 | This is done in the same way for both vvl and non-vvl. |
---|
[10354] | 1189 | The temperature and salinity are increased through the specified depth according to |
---|
[11435] | 1190 | the heat and salt content of the river. |
---|
[2282] | 1191 | |
---|
[10354] | 1192 | In the non-linear free surface case (vvl), |
---|
| 1193 | near the end of the time step the change in sea surface height is redistrubuted through the grid boxes, |
---|
| 1194 | so that the original ratios of grid box heights are restored. |
---|
| 1195 | In doing this water is moved into boxes below, throughout the water column, |
---|
| 1196 | so the large volume addition to the surface box is spread between all the grid boxes. |
---|
[2282] | 1197 | |
---|
[10354] | 1198 | It is also possible for runnoff to be specified as a negative value for modelling flow through straits, |
---|
[11435] | 1199 | \ie\ modelling the Baltic flow in and out of the North Sea. |
---|
[10354] | 1200 | When the flow is out of the domain there is no change in temperature and salinity, |
---|
| 1201 | regardless of the namelist options used, |
---|
[11435] | 1202 | as the ocean water leaving the domain removes heat and salt (at the same concentration) with it. |
---|
[2282] | 1203 | |
---|
[11435] | 1204 | %\colorbox{yellow}{Nevertheless, Pb of vertical resolution and 3D input : increase vertical mixing near river mouths to mimic a 3D river |
---|
[2282] | 1205 | |
---|
| 1206 | %All river runoff and emp fluxes are assumed to be fresh water (zero salinity) and at the same temperature as the sea surface.} |
---|
| 1207 | |
---|
| 1208 | %\colorbox{yellow}{river mouths{\ldots}} |
---|
| 1209 | |
---|
| 1210 | %IF( ln_rnf ) THEN ! increase diffusivity at rivers mouths |
---|
| 1211 | % DO jk = 2, nkrnf ; avt(:,:,jk) = avt(:,:,jk) + rn_avt_rnf * rnfmsk(:,:) ; END DO |
---|
| 1212 | %ENDIF |
---|
| 1213 | |
---|
[11693] | 1214 | \cmtgm{ word doc of runoffs: |
---|
| 1215 | In the current \NEMO\ setup river runoff is added to emp fluxes, |
---|
| 1216 | these are then applied at just the sea surface as a volume change (in the variable volume case |
---|
| 1217 | this is a literal volume change, and in the linear free surface case the free surface is moved) |
---|
| 1218 | and a salt flux due to the concentration/dilution effect. |
---|
| 1219 | There is also an option to increase vertical mixing near river mouths; |
---|
| 1220 | this gives the effect of having a 3d river. |
---|
| 1221 | All river runoff and emp fluxes are assumed to be fresh water (zero salinity) and |
---|
| 1222 | at the same temperature as the sea surface. |
---|
| 1223 | Our aim was to code the option to specify the temperature and salinity of river runoff, |
---|
| 1224 | (as well as the amount), along with the depth that the river water will affect. |
---|
| 1225 | This would make it possible to model low salinity outflow, such as the Baltic, |
---|
| 1226 | and would allow the ocean temperature to be affected by river runoff. |
---|
[2282] | 1227 | |
---|
[11693] | 1228 | The depth option makes it possible to have the river water affecting just the surface layer, |
---|
| 1229 | throughout depth, or some specified point in between. |
---|
[2282] | 1230 | |
---|
[11693] | 1231 | To do this we need to treat evaporation/precipitation fluxes and river runoff differently in |
---|
| 1232 | the \mdl{tra_sbc} module. |
---|
| 1233 | We decided to separate them throughout the code, |
---|
| 1234 | so that the variable emp represented solely evaporation minus precipitation fluxes, |
---|
| 1235 | and a new 2d variable rnf was added which represents the volume flux of river runoff |
---|
| 1236 | (in $kg/m^2s$ to remain consistent with $emp$). |
---|
| 1237 | This meant many uses of emp and emps needed to be changed, |
---|
| 1238 | a list of all modules which use $emp$ or $emps$ and the changes made are below:} |
---|
[2282] | 1239 | |
---|
[11597] | 1240 | %% ================================================================================================= |
---|
[11543] | 1241 | \section[Ice shelf melting (\textit{sbcisf.F90})]{Ice shelf melting (\protect\mdl{sbcisf})} |
---|
[9407] | 1242 | \label{sec:SBC_isf} |
---|
[10146] | 1243 | |
---|
[11558] | 1244 | \begin{listing} |
---|
| 1245 | \nlst{namsbc_isf} |
---|
[11567] | 1246 | \caption{\forcode{&namsbc_isf}} |
---|
[11558] | 1247 | \label{lst:namsbc_isf} |
---|
| 1248 | \end{listing} |
---|
[11333] | 1249 | |
---|
[11578] | 1250 | The namelist variable in \nam{sbc}{sbc}, \np{nn_isf}{nn\_isf}, controls the ice shelf representation. |
---|
[11577] | 1251 | Description and result of sensitivity test to \np{nn_isf}{nn\_isf} are presented in \citet{mathiot.jenkins.ea_GMD17}. |
---|
[10468] | 1252 | The different options are illustrated in \autoref{fig:SBC_isf}. |
---|
| 1253 | |
---|
[5120] | 1254 | \begin{description} |
---|
[11598] | 1255 | \item [{\np[=1]{nn_isf}{nn\_isf}}]: The ice shelf cavity is represented (\np[=.true.]{ln_isfcav}{ln\_isfcav} needed). |
---|
[10468] | 1256 | The fwf and heat flux are depending of the local water properties. |
---|
[11435] | 1257 | |
---|
[10468] | 1258 | Two different bulk formulae are available: |
---|
| 1259 | |
---|
[11693] | 1260 | \begin{description} |
---|
| 1261 | \item [{\np[=1]{nn_isfblk}{nn\_isfblk}}]: The melt rate is based on a balance between the upward ocean heat flux and |
---|
| 1262 | the latent heat flux at the ice shelf base. A complete description is available in \citet{hunter_rpt06}. |
---|
| 1263 | \item [{\np[=2]{nn_isfblk}{nn\_isfblk}}]: The melt rate and the heat flux are based on a 3 equations formulation |
---|
| 1264 | (a heat flux budget at the ice base, a salt flux budget at the ice base and a linearised freezing point temperature equation). |
---|
| 1265 | A complete description is available in \citet{jenkins_JGR91}. |
---|
| 1266 | \end{description} |
---|
[10468] | 1267 | |
---|
[11693] | 1268 | Temperature and salinity used to compute the melt are the average temperature in the top boundary layer \citet{losch_JGR08}. |
---|
| 1269 | Its thickness is defined by \np{rn_hisf_tbl}{rn\_hisf\_tbl}. |
---|
| 1270 | The fluxes and friction velocity are computed using the mean temperature, salinity and velocity in the the first \np{rn_hisf_tbl}{rn\_hisf\_tbl} m. |
---|
| 1271 | Then, the fluxes are spread over the same thickness (ie over one or several cells). |
---|
| 1272 | If \np{rn_hisf_tbl}{rn\_hisf\_tbl} larger than top $e_{3}t$, there is no more feedback between the freezing point at the interface and the the top cell temperature. |
---|
| 1273 | This can lead to super-cool temperature in the top cell under melting condition. |
---|
| 1274 | If \np{rn_hisf_tbl}{rn\_hisf\_tbl} smaller than top $e_{3}t$, the top boundary layer thickness is set to the top cell thickness.\\ |
---|
[10468] | 1275 | |
---|
[11693] | 1276 | Each melt bulk formula depends on a exchange coeficient ($\Gamma^{T,S}$) between the ocean and the ice. |
---|
| 1277 | There are 3 different ways to compute the exchange coeficient: |
---|
| 1278 | \begin{description} |
---|
| 1279 | \item [{\np[=0]{nn_gammablk}{nn\_gammablk}}]: The salt and heat exchange coefficients are constant and defined by \np{rn_gammas0}{rn\_gammas0} and \np{rn_gammat0}{rn\_gammat0}. |
---|
| 1280 | \begin{gather*} |
---|
[11551] | 1281 | % \label{eq:SBC_isf_gamma_iso} |
---|
[11693] | 1282 | \gamma^{T} = rn\_gammat0 \\ |
---|
| 1283 | \gamma^{S} = rn\_gammas0 |
---|
| 1284 | \end{gather*} |
---|
| 1285 | This is the recommended formulation for ISOMIP. |
---|
| 1286 | \item [{\np[=1]{nn_gammablk}{nn\_gammablk}}]: The salt and heat exchange coefficients are velocity dependent and defined as |
---|
| 1287 | \begin{gather*} |
---|
| 1288 | \gamma^{T} = rn\_gammat0 \times u_{*} \\ |
---|
| 1289 | \gamma^{S} = rn\_gammas0 \times u_{*} |
---|
| 1290 | \end{gather*} |
---|
| 1291 | where $u_{*}$ is the friction velocity in the top boundary layer (ie first \np{rn_hisf_tbl}{rn\_hisf\_tbl} meters). |
---|
| 1292 | See \citet{jenkins.nicholls.ea_JPO10} for all the details on this formulation. It is the recommended formulation for realistic application. |
---|
| 1293 | \item [{\np[=2]{nn_gammablk}{nn\_gammablk}}]: The salt and heat exchange coefficients are velocity and stability dependent and defined as: |
---|
| 1294 | \[ |
---|
| 1295 | \gamma^{T,S} = \frac{u_{*}}{\Gamma_{Turb} + \Gamma^{T,S}_{Mole}} |
---|
| 1296 | \] |
---|
| 1297 | where $u_{*}$ is the friction velocity in the top boundary layer (ie first \np{rn_hisf_tbl}{rn\_hisf\_tbl} meters), |
---|
| 1298 | $\Gamma_{Turb}$ the contribution of the ocean stability and |
---|
| 1299 | $\Gamma^{T,S}_{Mole}$ the contribution of the molecular diffusion. |
---|
| 1300 | See \citet{holland.jenkins_JPO99} for all the details on this formulation. |
---|
| 1301 | This formulation has not been extensively tested in \NEMO\ (not recommended). |
---|
| 1302 | \end{description} |
---|
| 1303 | \item [{\np[=2]{nn_isf}{nn\_isf}}]: The ice shelf cavity is not represented. |
---|
| 1304 | The fwf and heat flux are computed using the \citet{beckmann.goosse_OM03} parameterisation of isf melting. |
---|
| 1305 | The fluxes are distributed along the ice shelf edge between the depth of the average grounding line (GL) |
---|
| 1306 | (\np{sn_depmax_isf}{sn\_depmax\_isf}) and the base of the ice shelf along the calving front |
---|
| 1307 | (\np{sn_depmin_isf}{sn\_depmin\_isf}) as in (\np[=3]{nn_isf}{nn\_isf}). |
---|
| 1308 | The effective melting length (\np{sn_Leff_isf}{sn\_Leff\_isf}) is read from a file. |
---|
| 1309 | \item [{\np[=3]{nn_isf}{nn\_isf}}]: The ice shelf cavity is not represented. |
---|
| 1310 | The fwf (\np{sn_rnfisf}{sn\_rnfisf}) is prescribed and distributed along the ice shelf edge between |
---|
| 1311 | the depth of the average grounding line (GL) (\np{sn_depmax_isf}{sn\_depmax\_isf}) and |
---|
| 1312 | the base of the ice shelf along the calving front (\np{sn_depmin_isf}{sn\_depmin\_isf}). |
---|
| 1313 | The heat flux ($Q_h$) is computed as $Q_h = fwf \times L_f$. |
---|
| 1314 | \item [{\np[=4]{nn_isf}{nn\_isf}}]: The ice shelf cavity is opened (\np[=.true.]{ln_isfcav}{ln\_isfcav} needed). |
---|
| 1315 | However, the fwf is not computed but specified from file \np{sn_fwfisf}{sn\_fwfisf}). |
---|
| 1316 | The heat flux ($Q_h$) is computed as $Q_h = fwf \times L_f$. |
---|
| 1317 | As in \np[=1]{nn_isf}{nn\_isf}, the fluxes are spread over the top boundary layer thickness (\np{rn_hisf_tbl}{rn\_hisf\_tbl}) |
---|
[5120] | 1318 | \end{description} |
---|
| 1319 | |
---|
[11582] | 1320 | $\bullet$ \np[=1]{nn_isf}{nn\_isf} and \np[=2]{nn_isf}{nn\_isf} compute a melt rate based on |
---|
[10354] | 1321 | the water mass properties, ocean velocities and depth. |
---|
| 1322 | This flux is thus highly dependent of the model resolution (horizontal and vertical), |
---|
| 1323 | realism of the water masses onto the shelf ...\\ |
---|
[5120] | 1324 | |
---|
[11582] | 1325 | $\bullet$ \np[=3]{nn_isf}{nn\_isf} and \np[=4]{nn_isf}{nn\_isf} read the melt rate from a file. |
---|
[10354] | 1326 | You have total control of the fwf forcing. |
---|
| 1327 | This can be useful if the water masses on the shelf are not realistic or |
---|
| 1328 | the resolution (horizontal/vertical) are too coarse to have realistic melting or |
---|
[11435] | 1329 | for studies where you need to control your heat and fw input.\\ |
---|
[5120] | 1330 | |
---|
[10468] | 1331 | The ice shelf melt is implemented as a volume flux as for the runoff. |
---|
[10354] | 1332 | The fw addition due to the ice shelf melting is, at each relevant depth level, added to |
---|
[10468] | 1333 | the horizontal divergence (\textit{hdivn}) in the subroutine \rou{sbc\_isf\_div}, called from \mdl{divhor}. |
---|
| 1334 | See the runoff section \autoref{sec:SBC_rnf} for all the details about the divergence correction.\\ |
---|
[6320] | 1335 | |
---|
[10468] | 1336 | \begin{figure}[!t] |
---|
[11558] | 1337 | \centering |
---|
[11690] | 1338 | \includegraphics[width=0.66\textwidth]{SBC_isf} |
---|
[11558] | 1339 | \caption[Ice shelf location and fresh water flux definition]{ |
---|
| 1340 | Illustration of the location where the fwf is injected and |
---|
[11577] | 1341 | whether or not the fwf is interactif or not depending of \protect\np{nn_isf}{nn\_isf}.} |
---|
[11558] | 1342 | \label{fig:SBC_isf} |
---|
[10468] | 1343 | \end{figure} |
---|
[6320] | 1344 | |
---|
[11597] | 1345 | %% ================================================================================================= |
---|
[9393] | 1346 | \section{Ice sheet coupling} |
---|
[9407] | 1347 | \label{sec:SBC_iscpl} |
---|
[10146] | 1348 | |
---|
[11558] | 1349 | \begin{listing} |
---|
| 1350 | \nlst{namsbc_iscpl} |
---|
[11567] | 1351 | \caption{\forcode{&namsbc_iscpl}} |
---|
[11558] | 1352 | \label{lst:namsbc_iscpl} |
---|
| 1353 | \end{listing} |
---|
[11333] | 1354 | |
---|
[10354] | 1355 | Ice sheet/ocean coupling is done through file exchange at the restart step. |
---|
[10468] | 1356 | At each restart step: |
---|
[11333] | 1357 | |
---|
[11598] | 1358 | \begin{enumerate} |
---|
| 1359 | \item the ice sheet model send a new bathymetry and ice shelf draft netcdf file. |
---|
| 1360 | \item a new domcfg.nc file is built using the DOMAINcfg tools. |
---|
| 1361 | \item \NEMO\ run for a specific period and output the average melt rate over the period. |
---|
| 1362 | \item the ice sheet model run using the melt rate outputed in step 4. |
---|
| 1363 | \item go back to 1. |
---|
| 1364 | \end{enumerate} |
---|
[10468] | 1365 | |
---|
[11582] | 1366 | If \np[=.true.]{ln_iscpl}{ln\_iscpl}, the isf draft is assume to be different at each restart step with |
---|
[10354] | 1367 | potentially some new wet/dry cells due to the ice sheet dynamics/thermodynamics. |
---|
[10468] | 1368 | The wetting and drying scheme applied on the restart is very simple and described below for the 6 different possible cases: |
---|
[11333] | 1369 | |
---|
[6140] | 1370 | \begin{description} |
---|
[11598] | 1371 | \item [Thin a cell down]: T/S/ssh are unchanged and U/V in the top cell are corrected to keep the barotropic transport (bt) constant |
---|
[10354] | 1372 | ($bt_b=bt_n$). |
---|
[11598] | 1373 | \item [Enlarge a cell]: See case "Thin a cell down" |
---|
| 1374 | \item [Dry a cell]: mask, T/S, U/V and ssh are set to 0. |
---|
[10354] | 1375 | Furthermore, U/V into the water column are modified to satisfy ($bt_b=bt_n$). |
---|
[11598] | 1376 | \item [Wet a cell]: mask is set to 1, T/S is extrapolated from neighbours, $ssh_n = ssh_b$ and U/V set to 0. |
---|
[11435] | 1377 | If no neighbours, T/S is extrapolated from old top cell value. |
---|
[10468] | 1378 | If no neighbours along i,j and k (both previous test failed), T/S/U/V/ssh and mask are set to 0. |
---|
[11598] | 1379 | \item [Dry a column]: mask, T/S, U/V are set to 0 everywhere in the column and ssh set to 0. |
---|
| 1380 | \item [Wet a column]: set mask to 1, T/S is extrapolated from neighbours, ssh is extrapolated from neighbours and U/V set to 0. |
---|
[10354] | 1381 | If no neighbour, T/S/U/V and mask set to 0. |
---|
[6140] | 1382 | \end{description} |
---|
[10468] | 1383 | |
---|
| 1384 | Furthermore, as the before and now fields are not compatible (modification of the geometry), |
---|
| 1385 | the restart time step is prescribed to be an euler time step instead of a leap frog and $fields_b = fields_n$.\\ |
---|
| 1386 | |
---|
[11577] | 1387 | The horizontal extrapolation to fill new cell with realistic value is called \np{nn_drown}{nn\_drown} times. |
---|
| 1388 | It means that if the grounding line retreat by more than \np{nn_drown}{nn\_drown} cells between 2 coupling steps, |
---|
[10354] | 1389 | the code will be unable to fill all the new wet cells properly. |
---|
[10468] | 1390 | The default number is set up for the MISOMIP idealised experiments. |
---|
[10354] | 1391 | This coupling procedure is able to take into account grounding line and calving front migration. |
---|
[11435] | 1392 | However, it is a non-conservative processe. |
---|
[10468] | 1393 | This could lead to a trend in heat/salt content and volume.\\ |
---|
| 1394 | |
---|
[10354] | 1395 | In order to remove the trend and keep the conservation level as close to 0 as possible, |
---|
[11582] | 1396 | a simple conservation scheme is available with \np[=.true.]{ln_hsb}{ln\_hsb}. |
---|
[10468] | 1397 | The heat/salt/vol. gain/loss is diagnosed, as well as the location. |
---|
[11577] | 1398 | A correction increment is computed and apply each time step during the next \np{rn_fiscpl}{rn\_fiscpl} time steps. |
---|
| 1399 | For safety, it is advised to set \np{rn_fiscpl}{rn\_fiscpl} equal to the coupling period (smallest increment possible). |
---|
[10468] | 1400 | The corrective increment is apply into the cell itself (if it is a wet cell), the neigbouring cells or the closest wet cell (if the cell is now dry). |
---|
[6140] | 1401 | |
---|
[11597] | 1402 | %% ================================================================================================= |
---|
[6289] | 1403 | \section{Handling of icebergs (ICB)} |
---|
[11543] | 1404 | \label{sec:SBC_ICB_icebergs} |
---|
[10146] | 1405 | |
---|
[11558] | 1406 | \begin{listing} |
---|
| 1407 | \nlst{namberg} |
---|
[11567] | 1408 | \caption{\forcode{&namberg}} |
---|
[11558] | 1409 | \label{lst:namberg} |
---|
| 1410 | \end{listing} |
---|
[3609] | 1411 | |
---|
[11435] | 1412 | Icebergs are modelled as lagrangian particles in \NEMO\ \citep{marsh.ivchenko.ea_GMD15}. |
---|
[11123] | 1413 | Their physical behaviour is controlled by equations as described in \citet{martin.adcroft_OM10} ). |
---|
[11435] | 1414 | (Note that the authors kindly provided a copy of their code to act as a basis for implementation in \NEMO). |
---|
[10354] | 1415 | Icebergs are initially spawned into one of ten classes which have specific mass and thickness as |
---|
[11578] | 1416 | described in the \nam{berg}{berg} namelist: \np{rn_initial_mass}{rn\_initial\_mass} and \np{rn_initial_thickness}{rn\_initial\_thickness}. |
---|
[11577] | 1417 | Each class has an associated scaling (\np{rn_mass_scaling}{rn\_mass\_scaling}), |
---|
[10354] | 1418 | which is an integer representing how many icebergs of this class are being described as one lagrangian point |
---|
| 1419 | (this reduces the numerical problem of tracking every single iceberg). |
---|
[11582] | 1420 | They are enabled by setting \np[=.true.]{ln_icebergs}{ln\_icebergs}. |
---|
[3609] | 1421 | |
---|
| 1422 | Two initialisation schemes are possible. |
---|
| 1423 | \begin{description} |
---|
[11598] | 1424 | \item [{\np{nn_test_icebergs}{nn\_test\_icebergs}~$>$~0}] In this scheme, the value of \np{nn_test_icebergs}{nn\_test\_icebergs} represents the class of iceberg to generate |
---|
[11577] | 1425 | (so between 1 and 10), and \np{nn_test_icebergs}{nn\_test\_icebergs} provides a lon/lat box in the domain at each grid point of |
---|
[10354] | 1426 | which an iceberg is generated at the beginning of the run. |
---|
[11577] | 1427 | (Note that this happens each time the timestep equals \np{nn_nit000}{nn\_nit000}.) |
---|
| 1428 | \np{nn_test_icebergs}{nn\_test\_icebergs} is defined by four numbers in \np{nn_test_box}{nn\_test\_box} representing the corners of |
---|
[10354] | 1429 | the geographical box: lonmin,lonmax,latmin,latmax |
---|
[11598] | 1430 | \item [{\np[=-1]{nn_test_icebergs}{nn\_test\_icebergs}}] In this scheme, the model reads a calving file supplied in the \np{sn_icb}{sn\_icb} parameter. |
---|
[10354] | 1431 | This should be a file with a field on the configuration grid (typically ORCA) |
---|
| 1432 | representing ice accumulation rate at each model point. |
---|
| 1433 | These should be ocean points adjacent to land where icebergs are known to calve. |
---|
| 1434 | Most points in this input grid are going to have value zero. |
---|
| 1435 | When the model runs, ice is accumulated at each grid point which has a non-zero source term. |
---|
| 1436 | At each time step, a test is performed to see if there is enough ice mass to |
---|
| 1437 | calve an iceberg of each class in order (1 to 10). |
---|
[11435] | 1438 | Note that this is the initial mass multiplied by the number each particle represents (\ie\ the scaling). |
---|
[10354] | 1439 | If there is enough ice, a new iceberg is spawned and the total available ice reduced accordingly. |
---|
[3609] | 1440 | \end{description} |
---|
| 1441 | |
---|
| 1442 | Icebergs are influenced by wind, waves and currents, bottom melt and erosion. |
---|
[10354] | 1443 | The latter act to disintegrate the iceberg. |
---|
| 1444 | This is either all melted freshwater, |
---|
[11577] | 1445 | or (if \np{rn_bits_erosion_fraction}{rn\_bits\_erosion\_fraction}~$>$~0) into melt and additionally small ice bits |
---|
[3609] | 1446 | which are assumed to propagate with their larger parent and thus delay fluxing into the ocean. |
---|
[11435] | 1447 | Melt water (and other variables on the configuration grid) are written into the main \NEMO\ model output files. |
---|
[3609] | 1448 | |
---|
| 1449 | Extensive diagnostics can be produced. |
---|
| 1450 | Separate output files are maintained for human-readable iceberg information. |
---|
[11577] | 1451 | A separate file is produced for each processor (independent of \np{ln_ctl}{ln\_ctl}). |
---|
[3609] | 1452 | The amount of information is controlled by two integer parameters: |
---|
| 1453 | \begin{description} |
---|
[11596] | 1454 | \item [{\np{nn_verbose_level}{nn\_verbose\_level}}] takes a value between one and four and |
---|
[10354] | 1455 | represents an increasing number of points in the code at which variables are written, |
---|
| 1456 | and an increasing level of obscurity. |
---|
[11596] | 1457 | \item [{\np{nn_verbose_write}{nn\_verbose\_write}}] is the number of timesteps between writes |
---|
[3609] | 1458 | \end{description} |
---|
| 1459 | |
---|
[11577] | 1460 | Iceberg trajectories can also be written out and this is enabled by setting \np{nn_sample_rate}{nn\_sample\_rate}~$>$~0. |
---|
[3609] | 1461 | A non-zero value represents how many timesteps between writes of information into the output file. |
---|
| 1462 | These output files are in NETCDF format. |
---|
| 1463 | When \key{mpp\_mpi} is defined, each output file contains only those icebergs in the corresponding processor. |
---|
| 1464 | Trajectory points are written out in the order of their parent iceberg in the model's "linked list" of icebergs. |
---|
[10354] | 1465 | So care is needed to recreate data for individual icebergs, |
---|
| 1466 | since its trajectory data may be spread across multiple files. |
---|
[3609] | 1467 | |
---|
[11597] | 1468 | %% ================================================================================================= |
---|
[11577] | 1469 | \section[Interactions with waves (\textit{sbcwave.F90}, \forcode{ln_wave})]{Interactions with waves (\protect\mdl{sbcwave}, \protect\np{ln_wave}{ln\_wave})} |
---|
[10373] | 1470 | \label{sec:SBC_wave} |
---|
[3609] | 1471 | |
---|
[11558] | 1472 | \begin{listing} |
---|
| 1473 | \nlst{namsbc_wave} |
---|
[11567] | 1474 | \caption{\forcode{&namsbc_wave}} |
---|
[11558] | 1475 | \label{lst:namsbc_wave} |
---|
| 1476 | \end{listing} |
---|
[10373] | 1477 | |
---|
[11435] | 1478 | Ocean waves represent the interface between the ocean and the atmosphere, so \NEMO\ is extended to incorporate |
---|
| 1479 | physical processes related to ocean surface waves, namely the surface stress modified by growth and |
---|
| 1480 | dissipation of the oceanic wave field, the Stokes-Coriolis force and the Stokes drift impact on mass and |
---|
| 1481 | tracer advection; moreover the neutral surface drag coefficient from a wave model can be used to evaluate |
---|
[10373] | 1482 | the wind stress. |
---|
| 1483 | |
---|
[11435] | 1484 | Physical processes related to ocean surface waves can be accounted by setting the logical variable |
---|
[11582] | 1485 | \np[=.true.]{ln_wave}{ln\_wave} in \nam{sbc}{sbc} namelist. In addition, specific flags accounting for |
---|
[11333] | 1486 | different processes should be activated as explained in the following sections. |
---|
[10373] | 1487 | |
---|
| 1488 | Wave fields can be provided either in forced or coupled mode: |
---|
| 1489 | \begin{description} |
---|
[11596] | 1490 | \item [forced mode]: wave fields should be defined through the \nam{sbc_wave}{sbc\_wave} namelist |
---|
[11435] | 1491 | for external data names, locations, frequency, interpolation and all the miscellanous options allowed by |
---|
| 1492 | Input Data generic Interface (see \autoref{sec:SBC_input}). |
---|
[11596] | 1493 | \item [coupled mode]: \NEMO\ and an external wave model can be coupled by setting \np[=.true.]{ln_cpl}{ln\_cpl} |
---|
[11578] | 1494 | in \nam{sbc}{sbc} namelist and filling the \nam{sbc_cpl}{sbc\_cpl} namelist. |
---|
[10373] | 1495 | \end{description} |
---|
| 1496 | |
---|
[11597] | 1497 | %% ================================================================================================= |
---|
[11577] | 1498 | \subsection[Neutral drag coefficient from wave model (\forcode{ln_cdgw})]{Neutral drag coefficient from wave model (\protect\np{ln_cdgw}{ln\_cdgw})} |
---|
[10373] | 1499 | \label{subsec:SBC_wave_cdgw} |
---|
| 1500 | |
---|
[11435] | 1501 | The neutral surface drag coefficient provided from an external data source (\ie\ a wave model), |
---|
[11582] | 1502 | can be used by setting the logical variable \np[=.true.]{ln_cdgw}{ln\_cdgw} in \nam{sbc}{sbc} namelist. |
---|
[11435] | 1503 | Then using the routine \rou{sbcblk\_algo\_ncar} and starting from the neutral drag coefficent provided, |
---|
| 1504 | the drag coefficient is computed according to the stable/unstable conditions of the |
---|
| 1505 | air-sea interface following \citet{large.yeager_rpt04}. |
---|
[10373] | 1506 | |
---|
[11597] | 1507 | %% ================================================================================================= |
---|
[11577] | 1508 | \subsection[3D Stokes Drift (\forcode{ln_sdw} \& \forcode{nn_sdrift})]{3D Stokes Drift (\protect\np{ln_sdw}{ln\_sdw} \& \np{nn_sdrift}{nn\_sdrift})} |
---|
[10373] | 1509 | \label{subsec:SBC_wave_sdw} |
---|
| 1510 | |
---|
[11435] | 1511 | The Stokes drift is a wave driven mechanism of mass and momentum transport \citep{stokes_ibk09}. |
---|
| 1512 | It is defined as the difference between the average velocity of a fluid parcel (Lagrangian velocity) |
---|
| 1513 | and the current measured at a fixed point (Eulerian velocity). |
---|
| 1514 | As waves travel, the water particles that make up the waves travel in orbital motions but |
---|
| 1515 | without a closed path. Their movement is enhanced at the top of the orbit and slowed slightly |
---|
| 1516 | at the bottom, so the result is a net forward motion of water particles, referred to as the Stokes drift. |
---|
| 1517 | An accurate evaluation of the Stokes drift and the inclusion of related processes may lead to improved |
---|
[11333] | 1518 | representation of surface physics in ocean general circulation models. %GS: reference needed |
---|
[11435] | 1519 | The Stokes drift velocity $\mathbf{U}_{st}$ in deep water can be computed from the wave spectrum and may be written as: |
---|
[10373] | 1520 | |
---|
[10414] | 1521 | \[ |
---|
[11543] | 1522 | % \label{eq:SBC_wave_sdw} |
---|
[10414] | 1523 | \mathbf{U}_{st} = \frac{16{\pi^3}} {g} |
---|
| 1524 | \int_0^\infty \int_{-\pi}^{\pi} (cos{\theta},sin{\theta}) {f^3} |
---|
| 1525 | \mathrm{S}(f,\theta) \mathrm{e}^{2kz}\,\mathrm{d}\theta {d}f |
---|
| 1526 | \] |
---|
[10373] | 1527 | |
---|
[11435] | 1528 | where: ${\theta}$ is the wave direction, $f$ is the wave intrinsic frequency, |
---|
| 1529 | $\mathrm{S}($f$,\theta)$ is the 2D frequency-direction spectrum, |
---|
| 1530 | $k$ is the mean wavenumber defined as: |
---|
[10373] | 1531 | $k=\frac{2\pi}{\lambda}$ (being $\lambda$ the wavelength). \\ |
---|
| 1532 | |
---|
[11435] | 1533 | In order to evaluate the Stokes drift in a realistic ocean wave field, the wave spectral shape is required |
---|
| 1534 | and its computation quickly becomes expensive as the 2D spectrum must be integrated for each vertical level. |
---|
[10373] | 1535 | To simplify, it is customary to use approximations to the full Stokes profile. |
---|
[11435] | 1536 | Three possible parameterizations for the calculation for the approximate Stokes drift velocity profile |
---|
[11577] | 1537 | are included in the code through the \np{nn_sdrift}{nn\_sdrift} parameter once provided the surface Stokes drift |
---|
[11435] | 1538 | $\mathbf{U}_{st |_{z=0}}$ which is evaluated by an external wave model that accurately reproduces the wave spectra |
---|
| 1539 | and makes possible the estimation of the surface Stokes drift for random directional waves in |
---|
[10373] | 1540 | realistic wave conditions: |
---|
| 1541 | |
---|
| 1542 | \begin{description} |
---|
[11596] | 1543 | \item [{\np{nn_sdrift}{nn\_sdrift} = 0}]: exponential integral profile parameterization proposed by |
---|
[11123] | 1544 | \citet{breivik.janssen.ea_JPO14}: |
---|
[10373] | 1545 | |
---|
[10414] | 1546 | \[ |
---|
[11543] | 1547 | % \label{eq:SBC_wave_sdw_0a} |
---|
[11435] | 1548 | \mathbf{U}_{st} \cong \mathbf{U}_{st |_{z=0}} \frac{\mathrm{e}^{-2k_ez}} {1-8k_ez} |
---|
[10414] | 1549 | \] |
---|
[10373] | 1550 | |
---|
| 1551 | where $k_e$ is the effective wave number which depends on the Stokes transport $T_{st}$ defined as follows: |
---|
| 1552 | |
---|
[10414] | 1553 | \[ |
---|
[11543] | 1554 | % \label{eq:SBC_wave_sdw_0b} |
---|
[10414] | 1555 | k_e = \frac{|\mathbf{U}_{\left.st\right|_{z=0}}|} {|T_{st}|} |
---|
| 1556 | \quad \text{and }\ |
---|
[11435] | 1557 | T_{st} = \frac{1}{16} \bar{\omega} H_s^2 |
---|
[10414] | 1558 | \] |
---|
[10373] | 1559 | |
---|
| 1560 | where $H_s$ is the significant wave height and $\omega$ is the wave frequency. |
---|
| 1561 | |
---|
[11596] | 1562 | \item [{\np{nn_sdrift}{nn\_sdrift} = 1}]: velocity profile based on the Phillips spectrum which is considered to be a |
---|
[11333] | 1563 | reasonable estimate of the part of the spectrum mostly contributing to the Stokes drift velocity near the surface |
---|
[11123] | 1564 | \citep{breivik.bidlot.ea_OM16}: |
---|
[10373] | 1565 | |
---|
[10414] | 1566 | \[ |
---|
[11543] | 1567 | % \label{eq:SBC_wave_sdw_1} |
---|
[10414] | 1568 | \mathbf{U}_{st} \cong \mathbf{U}_{st |_{z=0}} \Big[exp(2k_pz)-\beta \sqrt{-2 \pi k_pz} |
---|
| 1569 | \textit{ erf } \Big(\sqrt{-2 k_pz}\Big)\Big] |
---|
| 1570 | \] |
---|
[10373] | 1571 | |
---|
| 1572 | where $erf$ is the complementary error function and $k_p$ is the peak wavenumber. |
---|
| 1573 | |
---|
[11596] | 1574 | \item [{\np{nn_sdrift}{nn\_sdrift} = 2}]: velocity profile based on the Phillips spectrum as for \np{nn_sdrift}{nn\_sdrift} = 1 |
---|
[10373] | 1575 | but using the wave frequency from a wave model. |
---|
| 1576 | |
---|
| 1577 | \end{description} |
---|
| 1578 | |
---|
[11435] | 1579 | The Stokes drift enters the wave-averaged momentum equation, as well as the tracer advection equations |
---|
| 1580 | and its effect on the evolution of the sea-surface height ${\eta}$ is considered as follows: |
---|
[10373] | 1581 | |
---|
[10414] | 1582 | \[ |
---|
[11543] | 1583 | % \label{eq:SBC_wave_eta_sdw} |
---|
[10414] | 1584 | \frac{\partial{\eta}}{\partial{t}} = |
---|
| 1585 | -\nabla_h \int_{-H}^{\eta} (\mathbf{U} + \mathbf{U}_{st}) dz |
---|
| 1586 | \] |
---|
[10373] | 1587 | |
---|
[11435] | 1588 | The tracer advection equation is also modified in order for Eulerian ocean models to properly account |
---|
| 1589 | for unresolved wave effect. The divergence of the wave tracer flux equals the mean tracer advection |
---|
| 1590 | that is induced by the three-dimensional Stokes velocity. |
---|
| 1591 | The advective equation for a tracer $c$ combining the effects of the mean current and sea surface waves |
---|
| 1592 | can be formulated as follows: |
---|
[10373] | 1593 | |
---|
[10414] | 1594 | \[ |
---|
[11543] | 1595 | % \label{eq:SBC_wave_tra_sdw} |
---|
[10414] | 1596 | \frac{\partial{c}}{\partial{t}} = |
---|
| 1597 | - (\mathbf{U} + \mathbf{U}_{st}) \cdot \nabla{c} |
---|
| 1598 | \] |
---|
[10373] | 1599 | |
---|
[11597] | 1600 | %% ================================================================================================= |
---|
[11577] | 1601 | \subsection[Stokes-Coriolis term (\forcode{ln_stcor})]{Stokes-Coriolis term (\protect\np{ln_stcor}{ln\_stcor})} |
---|
[10373] | 1602 | \label{subsec:SBC_wave_stcor} |
---|
| 1603 | |
---|
[11435] | 1604 | In a rotating ocean, waves exert a wave-induced stress on the mean ocean circulation which results |
---|
| 1605 | in a force equal to $\mathbf{U}_{st}$×$f$, where $f$ is the Coriolis parameter. |
---|
| 1606 | This additional force may have impact on the Ekman turning of the surface current. |
---|
| 1607 | In order to include this term, once evaluated the Stokes drift (using one of the 3 possible |
---|
| 1608 | approximations described in \autoref{subsec:SBC_wave_sdw}), |
---|
[11582] | 1609 | \np[=.true.]{ln_stcor}{ln\_stcor} has to be set. |
---|
[10373] | 1610 | |
---|
[11597] | 1611 | %% ================================================================================================= |
---|
[11577] | 1612 | \subsection[Wave modified stress (\forcode{ln_tauwoc} \& \forcode{ln_tauw})]{Wave modified sress (\protect\np{ln_tauwoc}{ln\_tauwoc} \& \np{ln_tauw}{ln\_tauw})} |
---|
[10373] | 1613 | \label{subsec:SBC_wave_tauw} |
---|
| 1614 | |
---|
[11435] | 1615 | The surface stress felt by the ocean is the atmospheric stress minus the net stress going |
---|
| 1616 | into the waves \citep{janssen.breivik.ea_rpt13}. Therefore, when waves are growing, momentum and energy is spent and is not |
---|
| 1617 | available for forcing the mean circulation, while in the opposite case of a decaying sea |
---|
| 1618 | state, more momentum is available for forcing the ocean. |
---|
| 1619 | Only when the sea state is in equilibrium, the ocean is forced by the atmospheric stress, |
---|
| 1620 | but in practice, an equilibrium sea state is a fairly rare event. |
---|
| 1621 | So the atmospheric stress felt by the ocean circulation $\tau_{oc,a}$ can be expressed as: |
---|
[10373] | 1622 | |
---|
[10414] | 1623 | \[ |
---|
[11543] | 1624 | % \label{eq:SBC_wave_tauoc} |
---|
[10414] | 1625 | \tau_{oc,a} = \tau_a - \tau_w |
---|
| 1626 | \] |
---|
[10373] | 1627 | |
---|
| 1628 | where $\tau_a$ is the atmospheric surface stress; |
---|
| 1629 | $\tau_w$ is the atmospheric stress going into the waves defined as: |
---|
| 1630 | |
---|
[10414] | 1631 | \[ |
---|
[11543] | 1632 | % \label{eq:SBC_wave_tauw} |
---|
[10414] | 1633 | \tau_w = \rho g \int {\frac{dk}{c_p} (S_{in}+S_{nl}+S_{diss})} |
---|
| 1634 | \] |
---|
[10373] | 1635 | |
---|
| 1636 | where: $c_p$ is the phase speed of the gravity waves, |
---|
[11435] | 1637 | $S_{in}$, $S_{nl}$ and $S_{diss}$ are three source terms that represent |
---|
| 1638 | the physics of ocean waves. The first one, $S_{in}$, describes the generation |
---|
| 1639 | of ocean waves by wind and therefore represents the momentum and energy transfer |
---|
| 1640 | from air to ocean waves; the second term $S_{nl}$ denotes |
---|
| 1641 | the nonlinear transfer by resonant four-wave interactions; while the third term $S_{diss}$ |
---|
| 1642 | describes the dissipation of waves by processes such as white-capping, large scale breaking |
---|
[10373] | 1643 | eddy-induced damping. |
---|
| 1644 | |
---|
[11435] | 1645 | The wave stress derived from an external wave model can be provided either through the normalized |
---|
[11582] | 1646 | wave stress into the ocean by setting \np[=.true.]{ln_tauwoc}{ln\_tauwoc}, or through the zonal and |
---|
| 1647 | meridional stress components by setting \np[=.true.]{ln_tauw}{ln\_tauw}. |
---|
[10373] | 1648 | |
---|
[11597] | 1649 | %% ================================================================================================= |
---|
[994] | 1650 | \section{Miscellaneous options} |
---|
[9407] | 1651 | \label{sec:SBC_misc} |
---|
[707] | 1652 | |
---|
[11597] | 1653 | %% ================================================================================================= |
---|
[11543] | 1654 | \subsection[Diurnal cycle (\textit{sbcdcy.F90})]{Diurnal cycle (\protect\mdl{sbcdcy})} |
---|
[9407] | 1655 | \label{subsec:SBC_dcy} |
---|
[11558] | 1656 | |
---|
[10414] | 1657 | \begin{figure}[!t] |
---|
[11558] | 1658 | \centering |
---|
[11690] | 1659 | \includegraphics[width=0.66\textwidth]{SBC_diurnal} |
---|
[11558] | 1660 | \caption[Reconstruction of the diurnal cycle variation of short wave flux]{ |
---|
| 1661 | Example of reconstruction of the diurnal cycle variation of short wave flux from |
---|
| 1662 | daily mean values. |
---|
| 1663 | The reconstructed diurnal cycle (black line) is chosen as |
---|
| 1664 | the mean value of the analytical cycle (blue line) over a time step, |
---|
| 1665 | not as the mid time step value of the analytically cycle (red square). |
---|
| 1666 | From \citet{bernie.guilyardi.ea_CD07}.} |
---|
| 1667 | \label{fig:SBC_diurnal} |
---|
[10414] | 1668 | \end{figure} |
---|
[2376] | 1669 | |
---|
[11123] | 1670 | \cite{bernie.woolnough.ea_JC05} have shown that to capture 90$\%$ of the diurnal variability of SST requires a vertical resolution in upper ocean of 1~m or better and a temporal resolution of the surface fluxes of 3~h or less. |
---|
[11333] | 1671 | %Unfortunately high frequency forcing fields are rare, not to say inexistent. GS: not true anymore ! |
---|
| 1672 | Nevertheless, it is possible to obtain a reasonable diurnal cycle of the SST knowning only short wave flux (SWF) at high frequency \citep{bernie.guilyardi.ea_CD07}. |
---|
[10354] | 1673 | Furthermore, only the knowledge of daily mean value of SWF is needed, |
---|
| 1674 | as higher frequency variations can be reconstructed from them, |
---|
| 1675 | assuming that the diurnal cycle of SWF is a scaling of the top of the atmosphere diurnal cycle of incident SWF. |
---|
[11435] | 1676 | The \cite{bernie.guilyardi.ea_CD07} reconstruction algorithm is available in \NEMO\ by |
---|
[11582] | 1677 | setting \np[=.true.]{ln_dm2dc}{ln\_dm2dc} (a \textit{\nam{sbc}{sbc}} namelist variable) when |
---|
| 1678 | using a bulk formulation (\np[=.true.]{ln_blk}{ln\_blk}) or |
---|
| 1679 | the flux formulation (\np[=.true.]{ln_flx}{ln\_flx}). |
---|
[10354] | 1680 | The reconstruction is performed in the \mdl{sbcdcy} module. |
---|
[11123] | 1681 | The detail of the algoritm used can be found in the appendix~A of \cite{bernie.guilyardi.ea_CD07}. |
---|
[11333] | 1682 | The algorithm preserves the daily mean incoming SWF as the reconstructed SWF at |
---|
[10354] | 1683 | a given time step is the mean value of the analytical cycle over this time step (\autoref{fig:SBC_diurnal}). |
---|
| 1684 | The use of diurnal cycle reconstruction requires the input SWF to be daily |
---|
[11577] | 1685 | (\ie\ a frequency of 24 hours and a time interpolation set to true in \np{sn_qsr}{sn\_qsr} namelist parameter). |
---|
[11333] | 1686 | Furthermore, it is recommended to have a least 8 surface module time steps per day, |
---|
[10354] | 1687 | that is $\rdt \ nn\_fsbc < 10,800~s = 3~h$. |
---|
| 1688 | An example of recontructed SWF is given in \autoref{fig:SBC_dcy} for a 12 reconstructed diurnal cycle, |
---|
| 1689 | one every 2~hours (from 1am to 11pm). |
---|
[2376] | 1690 | |
---|
[10414] | 1691 | \begin{figure}[!t] |
---|
[11558] | 1692 | \centering |
---|
[11690] | 1693 | \includegraphics[width=0.66\textwidth]{SBC_dcy} |
---|
[11558] | 1694 | \caption[Reconstruction of the diurnal cycle variation of short wave flux on an ORCA2 grid]{ |
---|
| 1695 | Example of reconstruction of the diurnal cycle variation of short wave flux from |
---|
| 1696 | daily mean values on an ORCA2 grid with a time sampling of 2~hours (from 1am to 11pm). |
---|
| 1697 | The display is on (i,j) plane.} |
---|
| 1698 | \label{fig:SBC_dcy} |
---|
[10414] | 1699 | \end{figure} |
---|
[2376] | 1700 | |
---|
[10354] | 1701 | Note also that the setting a diurnal cycle in SWF is highly recommended when |
---|
| 1702 | the top layer thickness approach 1~m or less, otherwise large error in SST can appear due to |
---|
| 1703 | an inconsistency between the scale of the vertical resolution and the forcing acting on that scale. |
---|
[2376] | 1704 | |
---|
[11597] | 1705 | %% ================================================================================================= |
---|
[1320] | 1706 | \subsection{Rotation of vector pairs onto the model grid directions} |
---|
[9407] | 1707 | \label{subsec:SBC_rotation} |
---|
[1320] | 1708 | |
---|
[11582] | 1709 | When using a flux (\np[=.true.]{ln_flx}{ln\_flx}) or bulk (\np[=.true.]{ln_blk}{ln\_blk}) formulation, |
---|
[10354] | 1710 | pairs of vector components can be rotated from east-north directions onto the local grid directions. |
---|
| 1711 | This is particularly useful when interpolation on the fly is used since here any vectors are likely to |
---|
| 1712 | be defined relative to a rectilinear grid. |
---|
[11333] | 1713 | To activate this option, a non-empty string is supplied in the rotation pair column of the relevant namelist. |
---|
[11435] | 1714 | The eastward component must start with "U" and the northward component with "V". |
---|
[1320] | 1715 | The remaining characters in the strings are used to identify which pair of components go together. |
---|
[10354] | 1716 | So for example, strings "U1" and "V1" next to "utau" and "vtau" would pair the wind stress components together and |
---|
| 1717 | rotate them on to the model grid directions; |
---|
| 1718 | "U2" and "V2" could be used against a second pair of components, and so on. |
---|
[1320] | 1719 | The extra characters used in the strings are arbitrary. |
---|
| 1720 | The rot\_rep routine from the \mdl{geo2ocean} module is used to perform the rotation. |
---|
| 1721 | |
---|
[11597] | 1722 | %% ================================================================================================= |
---|
[11543] | 1723 | \subsection[Surface restoring to observed SST and/or SSS (\textit{sbcssr.F90})]{Surface restoring to observed SST and/or SSS (\protect\mdl{sbcssr})} |
---|
[9407] | 1724 | \label{subsec:SBC_ssr} |
---|
[10146] | 1725 | |
---|
[11558] | 1726 | \begin{listing} |
---|
| 1727 | \nlst{namsbc_ssr} |
---|
[11567] | 1728 | \caption{\forcode{&namsbc_ssr}} |
---|
[11558] | 1729 | \label{lst:namsbc_ssr} |
---|
| 1730 | \end{listing} |
---|
[707] | 1731 | |
---|
[11577] | 1732 | Options are defined through the \nam{sbc_ssr}{sbc\_ssr} namelist variables. |
---|
[11582] | 1733 | On forced mode using a flux formulation (\np[=.true.]{ln_flx}{ln\_flx}), |
---|
[10354] | 1734 | a feedback term \emph{must} be added to the surface heat flux $Q_{ns}^o$: |
---|
[10414] | 1735 | \[ |
---|
[11543] | 1736 | % \label{eq:SBC_dmp_q} |
---|
[10414] | 1737 | Q_{ns} = Q_{ns}^o + \frac{dQ}{dT} \left( \left. T \right|_{k=1} - SST_{Obs} \right) |
---|
| 1738 | \] |
---|
[10354] | 1739 | where SST is a sea surface temperature field (observed or climatological), |
---|
| 1740 | $T$ is the model surface layer temperature and |
---|
| 1741 | $\frac{dQ}{dT}$ is a negative feedback coefficient usually taken equal to $-40~W/m^2/K$. |
---|
[11435] | 1742 | For a $50~m$ mixed-layer depth, this value corresponds to a relaxation time scale of two months. |
---|
| 1743 | This term ensures that if $T$ perfectly matches the supplied SST, then $Q$ is equal to $Q_o$. |
---|
[707] | 1744 | |
---|
[10354] | 1745 | In the fresh water budget, a feedback term can also be added. |
---|
| 1746 | Converted into an equivalent freshwater flux, it takes the following expression : |
---|
[707] | 1747 | |
---|
[10414] | 1748 | \begin{equation} |
---|
[11543] | 1749 | \label{eq:SBC_dmp_emp} |
---|
[10414] | 1750 | \textit{emp} = \textit{emp}_o + \gamma_s^{-1} e_{3t} \frac{ \left(\left.S\right|_{k=1}-SSS_{Obs}\right)} |
---|
| 1751 | {\left.S\right|_{k=1}} |
---|
[707] | 1752 | \end{equation} |
---|
| 1753 | |
---|
[10354] | 1754 | where $\textit{emp}_{o }$ is a net surface fresh water flux |
---|
| 1755 | (observed, climatological or an atmospheric model product), |
---|
| 1756 | \textit{SSS}$_{Obs}$ is a sea surface salinity |
---|
[11123] | 1757 | (usually a time interpolation of the monthly mean Polar Hydrographic Climatology \citep{steele.morley.ea_JC01}), |
---|
[10354] | 1758 | $\left.S\right|_{k=1}$ is the model surface layer salinity and |
---|
| 1759 | $\gamma_s$ is a negative feedback coefficient which is provided as a namelist parameter. |
---|
[11543] | 1760 | Unlike heat flux, there is no physical justification for the feedback term in \autoref{eq:SBC_dmp_emp} as |
---|
[11123] | 1761 | the atmosphere does not care about ocean surface salinity \citep{madec.delecluse_IWN97}. |
---|
[10354] | 1762 | The SSS restoring term should be viewed as a flux correction on freshwater fluxes to |
---|
| 1763 | reduce the uncertainties we have on the observed freshwater budget. |
---|
[707] | 1764 | |
---|
[11597] | 1765 | %% ================================================================================================= |
---|
[1224] | 1766 | \subsection{Handling of ice-covered area (\textit{sbcice\_...})} |
---|
[9407] | 1767 | \label{subsec:SBC_ice-cover} |
---|
[707] | 1768 | |
---|
[10354] | 1769 | The presence at the sea surface of an ice covered area modifies all the fluxes transmitted to the ocean. |
---|
| 1770 | There are several way to handle sea-ice in the system depending on |
---|
[11578] | 1771 | the value of the \np{nn_ice}{nn\_ice} namelist parameter found in \nam{sbc}{sbc} namelist. |
---|
[994] | 1772 | \begin{description} |
---|
[11598] | 1773 | \item [nn\_ice = 0] there will never be sea-ice in the computational domain. |
---|
[10354] | 1774 | This is a typical namelist value used for tropical ocean domain. |
---|
| 1775 | The surface fluxes are simply specified for an ice-free ocean. |
---|
| 1776 | No specific things is done for sea-ice. |
---|
[11598] | 1777 | \item [nn\_ice = 1] sea-ice can exist in the computational domain, but no sea-ice model is used. |
---|
[10354] | 1778 | An observed ice covered area is read in a file. |
---|
| 1779 | Below this area, the SST is restored to the freezing point and |
---|
| 1780 | the heat fluxes are set to $-4~W/m^2$ ($-2~W/m^2$) in the northern (southern) hemisphere. |
---|
| 1781 | The associated modification of the freshwater fluxes are done in such a way that |
---|
| 1782 | the change in buoyancy fluxes remains zero. |
---|
| 1783 | This prevents deep convection to occur when trying to reach the freezing point |
---|
| 1784 | (and so ice covered area condition) while the SSS is too large. |
---|
[11333] | 1785 | This manner of managing sea-ice area, just by using a IF case, |
---|
[10354] | 1786 | is usually referred as the \textit{ice-if} model. |
---|
[11435] | 1787 | It can be found in the \mdl{sbcice\_if} module. |
---|
[11598] | 1788 | \item [nn\_ice = 2 or more] A full sea ice model is used. |
---|
[10354] | 1789 | This model computes the ice-ocean fluxes, |
---|
| 1790 | that are combined with the air-sea fluxes using the ice fraction of each model cell to |
---|
[11333] | 1791 | provide the surface averaged ocean fluxes. |
---|
| 1792 | Note that the activation of a sea-ice model is done by defining a CPP key (\key{si3} or \key{cice}). |
---|
[11435] | 1793 | The activation automatically overwrites the read value of nn\_ice to its appropriate value |
---|
| 1794 | (\ie\ $2$ for SI3 or $3$ for CICE). |
---|
[994] | 1795 | \end{description} |
---|
[707] | 1796 | |
---|
[994] | 1797 | % {Description of Ice-ocean interface to be added here or in LIM 2 and 3 doc ?} |
---|
[11333] | 1798 | %GS: ocean-ice (SI3) interface is not located in SBC directory anymore, so it should be included in SI3 doc |
---|
[707] | 1799 | |
---|
[11597] | 1800 | %% ================================================================================================= |
---|
[11543] | 1801 | \subsection[Interface to CICE (\textit{sbcice\_cice.F90})]{Interface to CICE (\protect\mdl{sbcice\_cice})} |
---|
[9407] | 1802 | \label{subsec:SBC_cice} |
---|
[3294] | 1803 | |
---|
[11435] | 1804 | It is possible to couple a regional or global \NEMO\ configuration (without AGRIF) |
---|
[10354] | 1805 | to the CICE sea-ice model by using \key{cice}. |
---|
| 1806 | The CICE code can be obtained from \href{http://oceans11.lanl.gov/trac/CICE/}{LANL} and |
---|
| 1807 | the additional 'hadgem3' drivers will be required, even with the latest code release. |
---|
[11435] | 1808 | Input grid files consistent with those used in \NEMO\ will also be needed, |
---|
[10354] | 1809 | and CICE CPP keys \textbf{ORCA\_GRID}, \textbf{CICE\_IN\_NEMO} and \textbf{coupled} should be used |
---|
| 1810 | (seek advice from UKMO if necessary). |
---|
[11435] | 1811 | Currently, the code is only designed to work when using the NCAR forcing option for \NEMO\ %GS: still true ? |
---|
[11537] | 1812 | (with \textit{calc\_strair}\forcode{=.true.} and \textit{calc\_Tsfc}\forcode{=.true.} in the CICE name-list), |
---|
[11435] | 1813 | or alternatively when \NEMO\ is coupled to the HadGAM3 atmosphere model |
---|
[11537] | 1814 | (with \textit{calc\_strair}\forcode{=.false.} and \textit{calc\_Tsfc}\forcode{=false}). |
---|
[11577] | 1815 | The code is intended to be used with \np{nn_fsbc}{nn\_fsbc} set to 1 |
---|
[10354] | 1816 | (although coupling ocean and ice less frequently should work, |
---|
| 1817 | it is possible the calculation of some of the ocean-ice fluxes needs to be modified slightly - |
---|
| 1818 | the user should check that results are not significantly different to the standard case). |
---|
[3294] | 1819 | |
---|
[11435] | 1820 | There are two options for the technical coupling between \NEMO\ and CICE. |
---|
[10354] | 1821 | The standard version allows complete flexibility for the domain decompositions in the individual models, |
---|
| 1822 | but this is at the expense of global gather and scatter operations in the coupling which |
---|
| 1823 | become very expensive on larger numbers of processors. |
---|
[11435] | 1824 | The alternative option (using \key{nemocice\_decomp} for both \NEMO\ and CICE) ensures that |
---|
[10354] | 1825 | the domain decomposition is identical in both models (provided domain parameters are set appropriately, |
---|
| 1826 | and \textit{processor\_shape~=~square-ice} and \textit{distribution\_wght~=~block} in the CICE name-list) and |
---|
| 1827 | allows much more efficient direct coupling on individual processors. |
---|
| 1828 | This solution scales much better although it is at the expense of having more idle CICE processors in areas where |
---|
| 1829 | there is no sea ice. |
---|
[3294] | 1830 | |
---|
[11597] | 1831 | %% ================================================================================================= |
---|
[11543] | 1832 | \subsection[Freshwater budget control (\textit{sbcfwb.F90})]{Freshwater budget control (\protect\mdl{sbcfwb})} |
---|
[9407] | 1833 | \label{subsec:SBC_fwb} |
---|
[707] | 1834 | |
---|
[11333] | 1835 | For global ocean simulation, it can be useful to introduce a control of the mean sea level in order to |
---|
[10354] | 1836 | prevent unrealistic drift of the sea surface height due to inaccuracy in the freshwater fluxes. |
---|
[11333] | 1837 | In \NEMO, two way of controlling the freshwater budget are proposed: |
---|
[11435] | 1838 | |
---|
[1224] | 1839 | \begin{description} |
---|
[11598] | 1840 | \item [{\np[=0]{nn_fwb}{nn\_fwb}}] no control at all. |
---|
[10354] | 1841 | The mean sea level is free to drift, and will certainly do so. |
---|
[11598] | 1842 | \item [{\np[=1]{nn_fwb}{nn\_fwb}}] global mean \textit{emp} set to zero at each model time step. |
---|
[11333] | 1843 | %GS: comment below still relevant ? |
---|
[11435] | 1844 | %Note that with a sea-ice model, this technique only controls the mean sea level with linear free surface and no mass flux between ocean and ice (as it is implemented in the current ice-ocean coupling). |
---|
[11598] | 1845 | \item [{\np[=2]{nn_fwb}{nn\_fwb}}] freshwater budget is adjusted from the previous year annual mean budget which |
---|
[10354] | 1846 | is read in the \textit{EMPave\_old.dat} file. |
---|
| 1847 | As the model uses the Boussinesq approximation, the annual mean fresh water budget is simply evaluated from |
---|
[11435] | 1848 | the change in the mean sea level at January the first and saved in the \textit{EMPav.dat} file. |
---|
[1224] | 1849 | \end{description} |
---|
[707] | 1850 | |
---|
[1224] | 1851 | % Griffies doc: |
---|
[11435] | 1852 | % When running ocean-ice simulations, we are not explicitly representing land processes, |
---|
| 1853 | % such as rivers, catchment areas, snow accumulation, etc. However, to reduce model drift, |
---|
| 1854 | % it is important to balance the hydrological cycle in ocean-ice models. |
---|
| 1855 | % We thus need to prescribe some form of global normalization to the precipitation minus evaporation plus river runoff. |
---|
| 1856 | % The result of the normalization should be a global integrated zero net water input to the ocean-ice system over |
---|
| 1857 | % a chosen time scale. |
---|
| 1858 | % How often the normalization is done is a matter of choice. In mom4p1, we choose to do so at each model time step, |
---|
| 1859 | % so that there is always a zero net input of water to the ocean-ice system. |
---|
| 1860 | % Others choose to normalize over an annual cycle, in which case the net imbalance over an annual cycle is used |
---|
| 1861 | % to alter the subsequent year�s water budget in an attempt to damp the annual water imbalance. |
---|
| 1862 | % Note that the annual budget approach may be inappropriate with interannually varying precipitation forcing. |
---|
| 1863 | % When running ocean-ice coupled models, it is incorrect to include the water transport between the ocean |
---|
| 1864 | % and ice models when aiming to balance the hydrological cycle. |
---|
| 1865 | % The reason is that it is the sum of the water in the ocean plus ice that should be balanced when running ocean-ice models, |
---|
| 1866 | % not the water in any one sub-component. As an extreme example to illustrate the issue, |
---|
| 1867 | % consider an ocean-ice model with zero initial sea ice. As the ocean-ice model spins up, |
---|
| 1868 | % there should be a net accumulation of water in the growing sea ice, and thus a net loss of water from the ocean. |
---|
| 1869 | % The total water contained in the ocean plus ice system is constant, but there is an exchange of water between |
---|
| 1870 | % the subcomponents. This exchange should not be part of the normalization used to balance the hydrological cycle |
---|
| 1871 | % in ocean-ice models. |
---|
[707] | 1872 | |
---|
[11693] | 1873 | \subinc{\input{../../global/epilogue}} |
---|
[11333] | 1874 | |
---|
[6997] | 1875 | \end{document} |
---|