Changeset 11830 for NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/doc/latex/NEMO/subfiles/chap_DIA.tex
- Timestamp:
- 2019-10-29T17:51:07+01:00 (4 years ago)
- Location:
- NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/doc
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/doc
- Property svn:ignore deleted
- Property svn:mergeinfo deleted
-
Property
svn:externals
set to
^/utils/badges badges
^/utils/logos logos
-
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/doc/latex
- Property svn:ignore deleted
-
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/doc/latex/NEMO
- Property svn:ignore deleted
-
Property
svn:externals
set to
^/utils/figures/NEMO figures
-
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/doc/latex/NEMO/subfiles
- Property svn:ignore
-
old new 1 *.aux 2 *.bbl 3 *.blg 4 *.dvi 5 *.fdb* 6 *.fls 7 *.idx 1 *.ind 8 2 *.ilg 9 *.ind10 *.log11 *.maf12 *.mtc*13 *.out14 *.pdf15 *.toc16 _minted-*
-
- Property svn:ignore
-
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/doc/latex/NEMO/subfiles/chap_DIA.tex
r10509 r11830 2 2 3 3 \begin{document} 4 % ================================================================ 5 % Chapter I/O & Diagnostics 6 % ================================================================ 4 7 5 \chapter{Output and Diagnostics (IOM, DIA, TRD, FLO)} 8 6 \label{chap:DIA} 9 7 10 \minitoc 11 12 \newpage 13 14 % ================================================================ 15 % Old Model Output 16 % ================================================================ 17 \section{Old model output (default)} 8 % {\em 4.0} & {\em Mirek Andrejczuk, Massimiliano Drudi} & {\em } \\ 9 % {\em } & {\em Dorotea Iovino, Nicolas Martin} & {\em } \\ 10 % {\em 3.6} & {\em Gurvan Madec, Sebastien Masson } & {\em } \\ 11 % {\em 3.4} & {\em Gurvan Madec, Rachid Benshila, Andrew Coward } & {\em } \\ 12 % {\em } & {\em Christian Ethe, Sebastien Masson } & {\em } \\ 13 14 \thispagestyle{plain} 15 16 \chaptertoc 17 18 \paragraph{Changes record} ~\\ 19 20 {\footnotesize 21 \begin{tabularx}{\textwidth}{l||X|X} 22 Release & Author(s) & Modifications \\ 23 \hline 24 {\em 4.0} & {\em ...} & {\em ...} \\ 25 {\em 3.6} & {\em ...} & {\em ...} \\ 26 {\em 3.4} & {\em ...} & {\em ...} \\ 27 {\em <=3.4} & {\em ...} & {\em ...} 28 \end{tabularx} 29 } 30 31 \clearpage 32 33 %% ================================================================================================= 34 \section{Model output} 18 35 \label{sec:DIA_io_old} 19 36 … … 25 42 the same run performed in one step. 26 43 It should be noted that this requires that the restart file contains two consecutive time steps for 27 all the prognostic variables, and that it is saved in the same binary format as the one used by the computer that 28 is to read it (in particular, 32 bits binary IEEE format must not be used for this file). 44 all the prognostic variables. 29 45 30 46 The output listing and file(s) are predefined but should be checked and eventually adapted to the user's needs. 31 The output listing is stored in the $ocean.output$file.32 The information is printed from within the code on the logical unit $numout$.47 The output listing is stored in the \textit{ocean.output} file. 48 The information is printed from within the code on the logical unit \texttt{numout}. 33 49 To locate these prints, use the UNIX command "\textit{grep -i numout}" in the source code directory. 34 50 … … 39 55 A complete description of the use of this I/O server is presented in the next section. 40 56 41 By default, \key{iomput} is not defined, 42 NEMO produces NetCDF with the old IOIPSL library which has been kept for compatibility and its easy installation. 43 However, the IOIPSL library is quite inefficient on parallel machines and, since version 3.2, 44 many diagnostic options have been added presuming the use of \key{iomput}. 45 The usefulness of the default IOIPSL-based option is expected to reduce with each new release. 46 If \key{iomput} is not defined, output files and content are defined in the \mdl{diawri} module and 47 contain mean (or instantaneous if \key{diainstant} is defined) values over a regular period of 48 nn\_write time-steps (namelist parameter). 49 50 %\gmcomment{ % start of gmcomment 51 52 % ================================================================ 53 % Diagnostics 54 % ================================================================ 57 %\cmtgm{ % start of gmcomment 58 59 %% ================================================================================================= 55 60 \section{Standard model output (IOM)} 56 61 \label{sec:DIA_iom} 57 62 58 Since version 3.2, iomput is the NEMOoutput interface of choice.63 Since version 3.2, iomput is the \NEMO\ output interface of choice. 59 64 It has been designed to be simple to use, flexible and efficient. 60 The two main purposes of iomput are: 65 The two main purposes of iomput are: 61 66 62 67 \begin{enumerate} 63 \item 64 The complete and flexible control of the output files through external XML files adapted by 68 \item The complete and flexible control of the output files through external XML files adapted by 65 69 the user from standard templates. 66 \item 67 To achieve high performance and scalable output through the optional distribution of 70 \item To achieve high performance and scalable output through the optional distribution of 68 71 all diagnostic output related tasks to dedicated processes. 69 72 \end{enumerate} 70 73 71 The first functionality allows the user to specify, without code changes or recompilation, 74 The first functionality allows the user to specify, without code changes or recompilation, 72 75 aspects of the diagnostic output stream, such as: 73 76 74 77 \begin{itemize} 75 \item 76 The choice of output frequencies that can be different for each file (including real months and years). 77 \item 78 The choice of file contents; includes complete flexibility over which data are written in which files 78 \item The choice of output frequencies that can be different for each file (including real months and years). 79 \item The choice of file contents; includes complete flexibility over which data are written in which files 79 80 (the same data can be written in different files). 80 \item 81 The possibility to split output files at a chosen frequency. 82 \item 83 The possibility to extract a vertical or an horizontal subdomain. 84 \item 85 The choice of the temporal operation to perform, \eg: average, accumulate, instantaneous, min, max and once. 86 \item 87 Control over metadata via a large XML "database" of possible output fields. 81 \item The possibility to split output files at a chosen frequency. 82 \item The possibility to extract a vertical or an horizontal subdomain. 83 \item The choice of the temporal operation to perform, \eg: average, accumulate, instantaneous, min, max and once. 84 \item Control over metadata via a large XML "database" of possible output fields. 88 85 \end{itemize} 89 86 … … 91 88 in a very easy way. 92 89 All details of iomput functionalities are listed in the following subsections. 93 Examples of the XML files that control the outputs can be found in: \path{NEMOGCM/CONFIG/ORCA2_LIM/EXP00/iodef.xml}, 94 \path{NEMOGCM/CONFIG/SHARED/field_def.xml} and \path{NEMOGCM/CONFIG/SHARED/domain_def.xml}. \\ 90 Examples of the XML files that control the outputs can be found in: 91 \path{cfgs/ORCA2_ICE_PISCES/EXPREF/iodef.xml}, 92 \path{cfgs/SHARED/field_def_nemo-oce.xml}, 93 \path{cfgs/SHARED/field_def_nemo-pisces.xml}, 94 \path{cfgs/SHARED/field_def_nemo-ice.xml} and \path{cfgs/SHARED/domain_def_nemo.xml}. \\ 95 95 96 96 The second functionality targets output performance when running in parallel (\key{mpp\_mpi}). 97 Iomput provides the possibility to specify N dedicated I/O processes (in addition to the NEMOprocesses)97 Iomput provides the possibility to specify N dedicated I/O processes (in addition to the \NEMO\ processes) 98 98 to collect and write the outputs. 99 99 With an appropriate choice of N by the user, the bottleneck associated with the writing of 100 100 the output files can be greatly reduced. 101 101 102 In version 3.6, the iom\_putinterface depends on103 an external code called \href{https://forge.ipsl.jussieu.fr/ioserver/browser/XIOS/branchs/xios- 1.0}{XIOS-1.0}104 (use of revision 618 or higher is required).102 In version 3.6, the \rou{iom\_put} interface depends on 103 an external code called \href{https://forge.ipsl.jussieu.fr/ioserver/browser/XIOS/branchs/xios-2.5}{XIOS-2.5} 104 %(use of revision 618 or higher is required). 105 105 This new IO server can take advantage of the parallel I/O functionality of NetCDF4 to 106 106 create a single output file and therefore to bypass the rebuilding phase. 107 107 Note that writing in parallel into the same NetCDF files requires that your NetCDF4 library is linked to 108 an HDF5 library that has been correctly compiled (\ie with the configure option $--$enable-parallel).108 an HDF5 library that has been correctly compiled (\ie\ with the configure option $--$enable-parallel). 109 109 Note that the files created by iomput through XIOS are incompatible with NetCDF3. 110 110 All post-processsing and visualization tools must therefore be compatible with NetCDF4 and not only NetCDF3. 111 111 112 112 Even if not using the parallel I/O functionality of NetCDF4, using N dedicated I/O servers, 113 where N is typically much less than the number of NEMOprocessors, will reduce the number of output files created.114 This can greatly reduce the post-processing burden usually associated with using large numbers of NEMOprocessors.113 where N is typically much less than the number of \NEMO\ processors, will reduce the number of output files created. 114 This can greatly reduce the post-processing burden usually associated with using large numbers of \NEMO\ processors. 115 115 Note that for smaller configurations, the rebuilding phase can be avoided, 116 116 even without a parallel-enabled NetCDF4 library, simply by employing only one dedicated I/O server. 117 117 118 %% ================================================================================================= 118 119 \subsection{XIOS: Reading and writing restart file} 119 120 120 XIOS may be used to read single file restart produced by NEMO. Currently only the variables written to121 file \forcode{numror} can be handled by XIOS. To activate restart reading using XIOS, set \np {ln\_xios\_read}\forcode{ = .true.}122 in \textit{namelist\_cfg}. This setting will be ignored when multiple restart files are present, and default NEMO123 functionality will be used for reading. There is no need to change iodef.xml file to use XIOS to read 124 restart, all definitions are done within the NEMO code. For high resolution configuration, however,121 XIOS may be used to read single file restart produced by \NEMO. Currently only the variables written to 122 file \forcode{numror} can be handled by XIOS. To activate restart reading using XIOS, set \np[=.true. ]{ln_xios_read}{ln\_xios\_read} 123 in \textit{namelist\_cfg}. This setting will be ignored when multiple restart files are present, and default \NEMO 124 functionality will be used for reading. There is no need to change iodef.xml file to use XIOS to read 125 restart, all definitions are done within the \NEMO\ code. For high resolution configuration, however, 125 126 there may be a need to add the following line in iodef.xml (xios context): 126 127 … … 129 130 \end{xmllines} 130 131 131 This variable sets timeout for reading. 132 133 If XIOS is to be used to read restart from file generated with an earlier NEMOversion (3.6 for instance),132 This variable sets timeout for reading. 133 134 If XIOS is to be used to read restart from file generated with an earlier \NEMO\ version (3.6 for instance), 134 135 dimension \forcode{z} defined in restart file must be renamed to \forcode{nav_lev}.\\ 135 136 136 XIOS can also be used to write NEMO restart. A namelist parameter \np{nn\_wxios} is used to determine the137 type of restart NEMO will write. If it is set to 0, default NEMO functionality will be used - each138 processor writes its own restart file; if it is set to 1 XIOS will write restart into a single file; 139 for \np {nn\_wxios = 2} the restart will be written by XIOS into multiple files, one for each XIOS server.140 Note, however, that \textbf{ NEMO will not read restart generated by XIOS when \np{nn\_wxios = 2}}. The restart will141 have to be rebuild before continuing the run. This option aims to reduce number of restart files generated by NEMO only,142 and may be useful when there is a need to change number of processors used to run simulation. 137 XIOS can also be used to write \NEMO\ restart. A namelist parameter \np{nn_wxios}{nn\_wxios} is used to determine the 138 type of restart \NEMO\ will write. If it is set to 0, default \NEMO\ functionality will be used - each 139 processor writes its own restart file; if it is set to 1 XIOS will write restart into a single file; 140 for \np[=2]{nn_wxios}{nn\_wxios} the restart will be written by XIOS into multiple files, one for each XIOS server. 141 Note, however, that \textbf{\NEMO\ will not read restart generated by XIOS when \np[=2]{nn_wxios}{nn\_wxios}}. The restart will 142 have to be rebuild before continuing the run. This option aims to reduce number of restart files generated by \NEMO\ only, 143 and may be useful when there is a need to change number of processors used to run simulation. 143 144 144 145 If an additional variable must be written to a restart file, the following steps are needed: 145 \begin{ description}146 \item[step 1:] add variable name to a list of restart variables (in subroutine \rou{iom\_set\_rst\_vars,} \mdl{iom}) and 147 define correct grid for the variable (\forcode{grid_N_3D} - 3D variable, \forcode{grid_N} - 2D variable, \forcode{grid_vector} - 146 \begin{enumerate} 147 \item Add variable name to a list of restart variables (in subroutine \rou{iom\_set\_rst\_vars,} \mdl{iom}) and 148 define correct grid for the variable (\forcode{grid_N_3D} - 3D variable, \forcode{grid_N} - 2D variable, \forcode{grid_vector} - 148 149 1D variable, \forcode{grid_scalar} - scalar), 149 \item[step 2:] add variable to the list of fields written by restart. This can be done either in subroutine 150 \rou{iom\_set\_rstw\_core} (\mdl{iom}) or by calling \rou{iom\_set\_rstw\_active} (\mdl{iom}) with the name of a variable 151 as an argument. This convention follows approach for writing restart using iom, where variables are 150 \item Add variable to the list of fields written by restart. This can be done either in subroutine 151 \rou{iom\_set\_rstw\_core} (\mdl{iom}) or by calling \rou{iom\_set\_rstw\_active} (\mdl{iom}) with the name of a variable 152 as an argument. This convention follows approach for writing restart using iom, where variables are 152 153 written either by \rou{rst\_write} or by calling \rou{iom\_rstput} from individual routines. 153 \end{description} 154 154 \end{enumerate} 155 155 156 156 An older versions of XIOS do not support reading functionality. It's recommended to use at least XIOS2@1451. 157 157 158 158 %% ================================================================================================= 159 159 \subsection{XIOS: XML Inputs-Outputs Server} 160 160 161 %% ================================================================================================= 161 162 \subsubsection{Attached or detached mode?} 162 163 … … 168 169 \xmlline|<variable id="using_server" type="bool"></variable>| 169 170 170 The {\tt using\_server} setting determines whether or not the server will be used in \textit{attached mode} 171 (as a library) [{\tt> false <}] or in \textit{detached mode} 172 (as an external executable on N additional, dedicated cpus) [{\tt > true <}]. 173 The \textit{attached mode} is simpler to use but much less efficient for massively parallel applications. 171 The \texttt{using\_server} setting determines whether or not the server will be used in 172 \textit{attached mode} 173 (as a library) [\texttt{> false <}] or in \textit{detached mode} 174 (as an external executable on N additional, dedicated cpus) [\texttt{ > true <}]. 175 The \textit{attached mode} is simpler to use but much less efficient for 176 massively parallel applications. 174 177 The type of each file can be either ''multiple\_file'' or ''one\_file''. 175 178 176 179 In \textit{attached mode} and if the type of file is ''multiple\_file'', 177 then each NEMOprocess will also act as an IO server and produce its own set of output files.180 then each \NEMO\ process will also act as an IO server and produce its own set of output files. 178 181 Superficially, this emulates the standard behaviour in previous versions. 179 182 However, the subdomain written out by each process does not correspond to … … 187 190 write to its own set of output files. 188 191 If the ''one\_file'' option is chosen then all XIOS processes will collect their longitudinal strips and 189 write (in parallel) to a single output file. 192 write (in parallel) to a single output file. 190 193 Note running in detached mode requires launching a Multiple Process Multiple Data (MPMD) parallel job. 191 194 The following subsection provides a typical example but the syntax will vary in different MPP environments. 192 195 196 %% ================================================================================================= 193 197 \subsubsection{Number of cpu used by XIOS in detached mode} 194 198 195 199 The number of cores used by the XIOS is specified when launching the model. 196 The number of cores dedicated to XIOS should be from \texttildelow1/10 to \texttildelow1/50 of the number of 197 cores dedicated to NEMO.200 The number of cores dedicated to XIOS should be from \texttildelow1/10 to \texttildelow1/50 of the number of 201 cores dedicated to \NEMO. 198 202 Some manufacturers suggest using O($\sqrt{N}$) dedicated IO processors for N processors but 199 this is a general recommendation and not specific to NEMO.203 this is a general recommendation and not specific to \NEMO. 200 204 It is difficult to provide precise recommendations because the optimal choice will depend on 201 the particular hardware properties of the target system 205 the particular hardware properties of the target system 202 206 (parallel filesystem performance, available memory, memory bandwidth etc.) 203 207 and the volume and frequency of data to be created. … … 205 209 \cmd|mpirun -np 62 ./nemo.exe : -np 2 ./xios_server.exe| 206 210 211 %% ================================================================================================= 207 212 \subsubsection{Control of XIOS: the context in iodef.xml} 208 213 209 As well as the {\tt using\_server} flag, other controls on the use of XIOS are set in the XIOS context in iodef.xml. 214 As well as the \texttt{using\_server} flag, other controls on the use of XIOS are set in 215 the XIOS context in \textit{iodef.xml}. 210 216 See the XML basics section below for more details on XML syntax and rules. 211 217 212 218 \begin{table} 213 \scriptsize214 219 \begin{tabularx}{\textwidth}{|lXl|} 215 220 \hline … … 220 225 \hline 221 226 buffer\_size & 222 buffer size used by XIOS to send data from NEMOto XIOS.227 buffer size used by XIOS to send data from \NEMO\ to XIOS. 223 228 Larger is more efficient. 224 229 Note that needed/used buffer sizes are summarized at the end of the job & … … 226 231 \hline 227 232 buffer\_server\_factor\_size & 228 ratio between NEMOand XIOS buffer size.233 ratio between \NEMO\ and XIOS buffer size. 229 234 Should be 2. & 230 235 2 \\ … … 243 248 \hline 244 249 oasis\_codes\_id & 245 when using oasis, define the identifier of NEMOin the namcouple.250 when using oasis, define the identifier of \NEMO\ in the namcouple. 246 251 Note that the identifier of XIOS is xios.x & 247 252 oceanx \\ … … 250 255 \end{table} 251 256 257 %% ================================================================================================= 252 258 \subsection{Practical issues} 253 259 260 %% ================================================================================================= 254 261 \subsubsection{Installation} 255 262 256 As mentioned, XIOS is supported separately and must be downloaded and compiled before it can be used with NEMO.263 As mentioned, XIOS is supported separately and must be downloaded and compiled before it can be used with \NEMO. 257 264 See the installation guide on the \href{http://forge.ipsl.jussieu.fr/ioserver/wiki}{XIOS} wiki for help and guidance. 258 NEMO will need to link to the compiled XIOS library. 259 The \href{https://forge.ipsl.jussieu.fr/nemo/wiki/Users/ModelInterfacing/InputsOutputs#Inputs-OutputsusingXIOS} 260 {XIOS with NEMO} guide provides an example illustration of how this can be achieved. 261 265 \NEMO\ will need to link to the compiled XIOS library. 266 The \href{https://forge.ipsl.jussieu.fr/nemo/chrome/site/doc/NEMO/guide/html/install.html#extract-and-install-xios} 267 {Extract and install XIOS} guide provides an example illustration of how this can be achieved. 268 269 %% ================================================================================================= 262 270 \subsubsection{Add your own outputs} 263 271 … … 268 276 269 277 \begin{enumerate} 270 \item[1.] 271 in NEMO code, add a \forcode{CALL iom\_put( 'identifier', array )} where you want to output a 2D or 3D array. 272 \item[2.] 273 If necessary, add \forcode{USE iom ! I/O manager library} to the list of used modules in 278 \item in \NEMO\ code, add a \forcode{CALL iom_put( 'identifier', array )} where you want to output a 2D or 3D array. 279 \item If necessary, add \forcode{USE iom ! I/O manager library} to the list of used modules in 274 280 the upper part of your module. 275 \item[3.] 276 in the field\_def.xml file, add the definition of your variable using the same identifier you used in the f90 code 281 \item in the field\_def.xml file, add the definition of your variable using the same identifier you used in the f90 code 277 282 (see subsequent sections for a details of the XML syntax and rules). 278 283 For example: 279 280 284 \begin{xmllines} 281 285 <field_definition> 282 286 <field_group id="grid_T" grid_ref="grid_T_3D"> <!-- T grid --> 283 287 ... 284 <field id="identifier" long_name="blabla" ... /> 288 <field id="identifier" long_name="blabla" ... /> 285 289 ... 286 </field_definition> 287 \end{xmllines} 288 290 </field_definition> 291 \end{xmllines} 289 292 Note your definition must be added to the field\_group whose reference grid is consistent with the size of 290 293 the array passed to iomput. … … 293 296 (iom\_set\_domain\_attr and iom\_set\_axis\_attr in \mdl{iom}) or defined in the domain\_def.xml file. 294 297 \eg: 295 296 298 \begin{xmllines} 297 299 <grid id="grid_T_3D" domain_ref="grid_T" axis_ref="deptht"/> 298 300 \end{xmllines} 299 300 Note, if your array is computed within the surface module each \np{nn\_fsbc} time\_step, 301 Note, if your array is computed within the surface module each \np{nn_fsbc}{nn\_fsbc} time\_step, 301 302 add the field definition within the field\_group defined with the id "SBC": 302 303 \xmlcode{<field_group id="SBC" ...>} which has been defined with the correct frequency of operations 303 304 (iom\_set\_field\_attr in \mdl{iom}) 304 \item[4.] 305 add your field in one of the output files defined in iodef.xml 305 \item add your field in one of the output files defined in iodef.xml 306 306 (again see subsequent sections for syntax and rules) 307 308 \begin{xmllines} 309 <file id="file1" .../> 307 \begin{xmllines} 308 <file id="file1" .../> 310 309 ... 311 <field field_ref="identifier" /> 310 <field field_ref="identifier" /> 312 311 ... 313 </file> 314 \end{xmllines} 315 312 </file> 313 \end{xmllines} 316 314 \end{enumerate} 317 315 316 %% ================================================================================================= 318 317 \subsection{XML fundamentals} 319 318 319 %% ================================================================================================= 320 320 \subsubsection{ XML basic rules} 321 321 … … 327 327 See \href{http://www.xmlnews.org/docs/xml-basics.html}{here} for more details. 328 328 329 \subsubsection{Structure of the XML file used in NEMO} 329 %% ================================================================================================= 330 \subsubsection{Structure of the XML file used in \NEMO} 330 331 331 332 The XML file used in XIOS is structured by 7 families of tags: … … 334 335 335 336 \begin{table} 336 \scriptsize337 337 \begin{tabular*}{\textwidth}{|p{0.15\textwidth}p{0.4\textwidth}p{0.35\textwidth}|} 338 338 \hline … … 366 366 367 367 \begin{table} 368 \scriptsize369 368 \begin{tabular}{|p{0.15\textwidth}p{0.4\textwidth}p{0.35\textwidth}|} 370 369 \hline … … 376 375 \xmlcode{<context id="xios" ... >} \\ 377 376 \hline 378 context nemo & context containing IO information for NEMO (mother grid when using AGRIF) &377 context nemo & context containing IO information for \NEMO\ (mother grid when using AGRIF) & 379 378 \xmlcode{<context id="nemo" ... >} \\ 380 379 \hline 381 context 1\_nemo & context containing IO information for NEMO child grid 1 (when using AGRIF) &380 context 1\_nemo & context containing IO information for \NEMO\ child grid 1 (when using AGRIF) & 382 381 \xmlcode{<context id="1_nemo" ... >} \\ 383 382 \hline 384 context n\_nemo & context containing IO information for NEMO child grid n (when using AGRIF) &383 context n\_nemo & context containing IO information for \NEMO\ child grid n (when using AGRIF) & 385 384 \xmlcode{<context id="n_nemo" ... >} \\ 386 385 \hline … … 391 390 392 391 \begin{table} 393 \scriptsize394 392 \begin{tabular}{|p{0.15\textwidth}p{0.4\textwidth}p{0.35\textwidth}|} 395 393 \hline … … 407 405 \end{table} 408 406 409 \noindent Each context tag related to NEMO (mother or child grids) is divided into 5 parts407 \noindent Each context tag related to \NEMO\ (mother or child grids) is divided into 5 parts 410 408 (that can be defined in any order): 411 409 412 410 \begin{table} 413 \scriptsize414 411 \begin{tabular}{|p{0.15\textwidth}p{0.4\textwidth}p{0.35\textwidth}|} 415 412 \hline … … 436 433 \end{table} 437 434 435 %% ================================================================================================= 438 436 \subsubsection{Nesting XML files} 439 437 … … 441 439 The inclusion of XML files into the main XML file can be done through the attribute src: 442 440 \xmlline|<context src="./nemo_def.xml" />| 443 444 \noindent In NEMO, by default, the field and domain definition is done in 2 separate files: 445 \path{NEMOGCM/CONFIG/SHARED/field_def.xml} and \path{NEMOGCM/CONFIG/SHARED/domain_def.xml} that 441 442 \noindent In \NEMO, by default, the field definition is done in 3 separate files ( 443 \path{cfgs/SHARED/field_def_nemo-oce.xml}, 444 \path{cfgs/SHARED/field_def_nemo-pisces.xml} and 445 \path{cfgs/SHARED/field_def_nemo-ice.xml} ) and the domain definition is done in another file ( \path{cfgs/SHARED/domain_def_nemo.xml} ) 446 that 446 447 are included in the main iodef.xml file through the following commands: 447 448 \begin{xmllines} 448 < field_definition src="./field_def.xml"/>449 <domain_definition src="./domain_def.xml" /> 450 \end{xmllines} 451 449 <context id="nemo" src="./context_nemo.xml"/> 450 \end{xmllines} 451 452 %% ================================================================================================= 452 453 \subsubsection{Use of inheritance} 453 454 … … 462 463 \begin{xmllines} 463 464 <field_definition operation="average" > 464 <field id="sst" /> <!-- averaged sst --> 465 <field id="sss" operation="instant"/> <!-- instantaneous sss --> 466 </field_definition> 465 <field id="sst" /> <!-- averaged sst --> 466 <field id="sss" operation="instant"/> <!-- instantaneous sss --> 467 </field_definition> 467 468 \end{xmllines} 468 469 … … 481 482 </field_definition> 482 483 <file_definition> 483 <file id="myfile" output_freq="1d" /> 484 <file id="myfile" output_freq="1d" /> 484 485 <field field_ref="sst" /> <!-- default def --> 485 486 <field field_ref="sss" long_name="my description" /> <!-- overwrite --> 486 487 </file> 487 </file_definition> 488 </file_definition> 488 489 \end{xmllines} 489 490 490 491 Inherit (and overwrite, if needed) the attributes of a tag you are refering to. 491 492 493 %% ================================================================================================= 492 494 \subsubsection{Use of groups} 493 495 … … 508 510 509 511 Secondly, the group can be used to replace a list of elements. 510 Several examples of groups of fields are proposed at the end of the file \path{CONFIG/SHARED/field_def.xml}. 512 Several examples of groups of fields are proposed at the end of the XML field files ( 513 \path{cfgs/SHARED/field_def_nemo-oce.xml}, 514 \path{cfgs/SHARED/field_def_nemo-pisces.xml} and 515 \path{cfgs/SHARED/field_def_nemo-ice.xml} ) . 511 516 For example, a short list of the usual variables related to the U grid: 512 517 … … 514 519 <field_group id="groupU" > 515 520 <field field_ref="uoce" /> 516 <field field_ref="s uoce" />521 <field field_ref="ssu" /> 517 522 <field field_ref="utau" /> 518 523 </field_group> … … 525 530 <field_group group_ref="groupU" /> 526 531 <field field_ref="uocetr_eff" /> <!-- add another field --> 527 </file> 528 \end{xmllines} 529 532 </file> 533 \end{xmllines} 534 535 %% ================================================================================================= 530 536 \subsection{Detailed functionalities} 531 537 … … 533 539 the new functionalities offered by the XML interface of XIOS. 534 540 541 %% ================================================================================================= 535 542 \subsubsection{Define horizontal subdomains} 536 543 537 544 Horizontal subdomains are defined through the attributs zoom\_ibegin, zoom\_jbegin, zoom\_ni, zoom\_nj of 538 545 the tag family domain. 539 It must therefore be done in the domain part of the XML file. 540 For example, in \path{ CONFIG/SHARED/domain_def.xml}, we provide the following example of a definition of546 It must therefore be done in the domain part of the XML file. 547 For example, in \path{cfgs/SHARED/domain_def.xml}, we provide the following example of a definition of 541 548 a 5 by 5 box with the bottom left corner at point (10,10). 542 549 543 550 \begin{xmllines} 544 <domain _group id="grid_T">545 < domain id="myzoom" zoom_ibegin="10" zoom_jbegin="10" zoom_ni="5" zoom_nj="5" />551 <domain id="myzoomT" domain_ref="grid_T"> 552 <zoom_domain ibegin="10" jbegin="10" ni="5" nj="5" /> 546 553 \end{xmllines} 547 554 … … 551 558 \begin{xmllines} 552 559 <file id="myfile_vzoom" output_freq="1d" > 553 <field field_ref="toce" domain_ref="myzoom "/>560 <field field_ref="toce" domain_ref="myzoomT"/> 554 561 </file> 555 562 \end{xmllines} 556 563 557 Moorings are seen as an extrem case corresponding to a 1 by 1 subdomain. 564 Moorings are seen as an extrem case corresponding to a 1 by 1 subdomain. 558 565 The Equatorial section, the TAO, RAMA and PIRATA moorings are already registered in the code and 559 566 can therefore be outputted without taking care of their (i,j) position in the grid. … … 568 575 \end{xmllines} 569 576 570 Note that if the domain decomposition used in XIOS cuts the subdomain in several parts and if 571 you use the ''multiple\_file'' type for your output files, 572 you will endup with several files you will need to rebuild using unprovided tools (like ncpdq and ncrcat, 577 Note that if the domain decomposition used in XIOS cuts the subdomain in several parts and if 578 you use the ''multiple\_file'' type for your output files, 579 you will endup with several files you will need to rebuild using unprovided tools (like ncpdq and ncrcat, 573 580 \href{http://nco.sourceforge.net/nco.html#Concatenation}{see nco manual}). 574 581 We are therefore advising to use the ''one\_file'' type in this case. 575 582 583 %% ================================================================================================= 576 584 \subsubsection{Define vertical zooms} 577 585 578 Vertical zooms are defined through the attributs zoom\_begin and zoom\_ endof the tag family axis.586 Vertical zooms are defined through the attributs zoom\_begin and zoom\_n of the tag family axis. 579 587 It must therefore be done in the axis part of the XML file. 580 For example, in \path{NEMOGCM/CONFIG/ORCA2_LIM/iodef_demo.xml}, we provide the following example: 581 582 \begin{xmllines} 583 <axis_group id="deptht" long_name="Vertical T levels" unit="m" positive="down" > 584 <axis id="deptht" /> 585 <axis id="deptht_myzoom" zoom_begin="1" zoom_end="10" /> 588 For example, in \path{cfgs/ORCA2_ICE_PISCES/EXPREF/iodef_demo.xml}, we provide the following example: 589 590 \begin{xmllines} 591 <axis_definition> 592 <axis id="deptht" long_name="Vertical T levels" unit="m" positive="down" /> 593 <axis id="deptht_zoom" azix_ref="deptht" > 594 <zoom_axis zoom_begin="1" zoom_n="10" /> 595 </axis> 586 596 \end{xmllines} 587 597 … … 595 605 \end{xmllines} 596 606 607 %% ================================================================================================= 597 608 \subsubsection{Control of the output file names} 598 609 … … 601 612 602 613 \begin{xmllines} 603 <file_group id="1d" output_freq="1d" name="myfile_1d" > 614 <file_group id="1d" output_freq="1d" name="myfile_1d" > 604 615 <file id="myfileA" name_suffix="_AAA" > <!-- will create file "myfile_1d_AAA" --> 605 616 ... … … 620 631 621 632 \begin{table} 622 \scriptsize623 633 \begin{tabularx}{\textwidth}{|lX|} 624 634 \hline … … 656 666 \end{table} 657 667 658 \noindent For example, 668 \noindent For example, 659 669 \xmlline|<file id="myfile_hzoom" name="myfile_@expname@_@startdate@_freq@freq@" output_freq="1d" >| 660 670 … … 668 678 \noindent will give the following file name radical: \ifile{myfile\_ORCA2\_19891231\_freq1d} 669 679 670 \subsubsection{Other controls of the XML attributes from NEMO} 671 672 The values of some attributes are defined by subroutine calls within NEMO 680 %% ================================================================================================= 681 \subsubsection{Other controls of the XML attributes from \NEMO} 682 683 The values of some attributes are defined by subroutine calls within \NEMO 673 684 (calls to iom\_set\_domain\_attr, iom\_set\_axis\_attr and iom\_set\_field\_attr in \mdl{iom}). 674 685 Any definition given in the XML file will be overwritten. … … 681 692 682 693 \begin{table} 683 \scriptsize 684 \begin{tabularx}{\textwidth}{|X|c|c|c|} 694 \begin{tabular}{|l|c|c|} 685 695 \hline 686 696 tag ids affected by automatic definition of some of their attributes & 687 697 name attribute & 688 attribute value \\698 attribute value \\ 689 699 \hline 690 700 \hline 691 701 field\_definition & 692 702 freq\_op & 693 \np{rn \_rdt}\\703 \np{rn_rdt}{rn\_rdt} \\ 694 704 \hline 695 705 SBC & 696 706 freq\_op & 697 \np{rn \_rdt} $\times$ \np{nn\_fsbc}\\707 \np{rn_rdt}{rn\_rdt} $\times$ \np{nn_fsbc}{nn\_fsbc} \\ 698 708 \hline 699 709 ptrc\_T & 700 710 freq\_op & 701 \np{rn \_rdt} $\times$ \np{nn\_dttrc}\\711 \np{rn_rdt}{rn\_rdt} $\times$ \np{nn_dttrc}{nn\_dttrc} \\ 702 712 \hline 703 713 diad\_T & 704 714 freq\_op & 705 \np{rn \_rdt} $\times$ \np{nn\_dttrc}\\715 \np{rn_rdt}{rn\_rdt} $\times$ \np{nn_dttrc}{nn\_dttrc} \\ 706 716 \hline 707 717 EqT, EqU, EqW & 708 718 jbegin, ni, & 709 according to the grid \\710 &719 according to the grid \\ 720 & 711 721 name\_suffix & 712 \\722 \\ 713 723 \hline 714 724 TAO, RAMA and PIRATA moorings & 715 725 zoom\_ibegin, zoom\_jbegin, & 716 according to the grid \\717 &726 according to the grid \\ 727 & 718 728 name\_suffix & 719 \\720 \hline 721 \end{tabular x}729 \\ 730 \hline 731 \end{tabular} 722 732 \end{table} 723 733 734 %% ================================================================================================= 724 735 \subsubsection{Advanced use of XIOS functionalities} 725 736 737 %% ================================================================================================= 726 738 \subsection{XML reference tables} 727 \label{subsec: IOM_xmlref}739 \label{subsec:DIA_IOM_xmlref} 728 740 729 741 \begin{enumerate} 730 \item 731 Simple computation: directly define the computation when refering to the variable in the file definition. 742 \item Simple computation: directly define the computation when refering to the variable in the file definition. 732 743 733 744 \begin{xmllines} … … 737 748 \end{xmllines} 738 749 739 \item 740 Simple computation: define a new variable and use it in the file definition. 750 \item Simple computation: define a new variable and use it in the file definition. 741 751 742 752 in field\_definition: … … 755 765 sst2 won't be evaluated. 756 766 757 \item 758 Change of variable precision: 767 \item Change of variable precision: 759 768 760 769 \begin{xmllines} … … 765 774 \end{xmllines} 766 775 767 Note that, then the code is crashing, writting real4 variables forces a numerical conve ction from776 Note that, then the code is crashing, writting real4 variables forces a numerical conversion from 768 777 real8 to real4 which will create an internal error in NetCDF and will avoid the creation of the output files. 769 778 Forcing double precision outputs with prec="8" (for example in the field\_definition) will avoid this problem. 770 779 771 \item 772 add user defined attributes: 773 774 \begin{xmllines} 775 <file_group id="1d" output_freq="1d" output_level="10" enabled=".true."> <!-- 1d files --> 780 \item add user defined attributes: 781 782 \begin{xmllines} 783 <file_group id="1d" output_freq="1d" output_level="10" enabled=".true."> <!-- 1d files --> 776 784 <file id="file1" name_suffix="_grid_T" description="ocean T grid variables" > 777 785 <field field_ref="sst" name="tos" > … … 782 790 <variable id="my_global_attribute" type="string" > blabla_global </variable> 783 791 </file> 784 </file_group> 785 \end{xmllines} 786 787 \item 788 use of the ``@'' function: example 1, weighted temporal average 792 </file_group> 793 \end{xmllines} 794 795 \item use of the ``@'' function: example 1, weighted temporal average 789 796 790 797 - define a new variable in field\_definition … … 797 804 798 805 \begin{xmllines} 799 <file_group id="5d" output_freq="5d" output_level="10" enabled=".true." > <!-- 5d files --> 806 <file_group id="5d" output_freq="5d" output_level="10" enabled=".true." > <!-- 5d files --> 800 807 <file id="file1" name_suffix="_grid_T" description="ocean T grid variables" > 801 808 <field field_ref="toce" operation="instant" freq_op="5d" > @toce_e3t / @e3t </field> 802 809 </file> 803 </file_group> 810 </file_group> 804 811 \end{xmllines} 805 812 … … 814 821 Note that in this case, freq\_op must be equal to the file output\_freq. 815 822 816 \item 817 use of the ``@'' function: example 2, monthly SSH standard deviation 823 \item use of the ``@'' function: example 2, monthly SSH standard deviation 818 824 819 825 - define a new variable in field\_definition … … 826 832 827 833 \begin{xmllines} 828 <file_group id="1m" output_freq="1m" output_level="10" enabled=".true." > <!-- 1m files --> 834 <file_group id="1m" output_freq="1m" output_level="10" enabled=".true." > <!-- 1m files --> 829 835 <file id="file1" name_suffix="_grid_T" description="ocean T grid variables" > 830 <field field_ref="ssh" name="sshstd" long_name="sea_surface_temperature_standard_deviation" 836 <field field_ref="ssh" name="sshstd" long_name="sea_surface_temperature_standard_deviation" 831 837 operation="instant" freq_op="1m" > 832 838 sqrt( @ssh2 - @ssh * @ssh ) 833 839 </field> 834 840 </file> 835 </file_group> 841 </file_group> 836 842 \end{xmllines} 837 843 … … 840 846 here we use the default, average. 841 847 So, in the above case, @ssh2 will do the monthly mean of ssh*ssh. 842 Operation="instant" refers to the temporal operation to be performed on the field ''sqrt( @ssh2 - @ssh * @ssh )'': 848 Operation="instant" refers to the temporal operation to be performed on the field ''sqrt( @ssh2 - @ssh * @ssh )'': 843 849 here the temporal average is alreday done by the ``@'' function so we just use instant. 844 850 field\_ref="ssh" means that attributes not explicitely defined, are inherited from ssh field. 845 851 Note that in this case, freq\_op must be equal to the file output\_freq. 846 852 847 \item 848 use of the ``@'' function: example 3, monthly average of SST diurnal cycle 853 \item use of the ``@'' function: example 3, monthly average of SST diurnal cycle 849 854 850 855 - define 2 new variables in field\_definition … … 858 863 859 864 \begin{xmllines} 860 <file_group id="1m" output_freq="1m" output_level="10" enabled=".true." > <!-- 1m files --> 865 <file_group id="1m" output_freq="1m" output_level="10" enabled=".true." > <!-- 1m files --> 861 866 <file id="file1" name_suffix="_grid_T" description="ocean T grid variables" > 862 867 <field field_ref="sst" name="sstdcy" long_name="amplitude of sst diurnal cycle" operation="average" freq_op="1d" > … … 864 869 </field> 865 870 </file> 866 </file_group> 871 </file_group> 867 872 \end{xmllines} 868 873 … … 877 882 field\_ref="sst" means that attributes not explicitely defined, are inherited from sst field. 878 883 884 %% ================================================================================================= 879 885 \subsubsection{Tag list per family} 880 886 881 887 \begin{table} 882 \scriptsize883 888 \begin{tabularx}{\textwidth}{|l|X|X|l|X|} 884 889 \hline … … 903 908 \hline 904 909 \end{tabularx} 905 \caption{ Context tags}910 \caption{XIOS: context tags} 906 911 \end{table} 907 912 908 913 \begin{table} 909 \scriptsize910 914 \begin{tabularx}{\textwidth}{|l|X|X|X|l|} 911 915 \hline … … 938 942 \hline 939 943 \end{tabularx} 940 \caption{ Field tags ("\tt{field\_*}")}944 \caption{XIOS: field tags ("\texttt{field\_*}")} 941 945 \end{table} 942 946 943 947 \begin{table} 944 \scriptsize945 948 \begin{tabularx}{\textwidth}{|l|X|X|X|l|} 946 949 \hline … … 974 977 \hline 975 978 \end{tabularx} 976 \caption{ File tags ("\tt{file\_*}")}979 \caption{XIOS: file tags ("\texttt{file\_*}")} 977 980 \end{table} 978 981 979 982 \begin{table} 980 \scriptsize981 983 \begin{tabularx}{\textwidth}{|l|X|X|X|X|} 982 984 \hline … … 1007 1009 \hline 1008 1010 \end{tabularx} 1009 \caption{ Axis tags ("\tt{axis\_*}")}1011 \caption{XIOS: axis tags ("\texttt{axis\_*}")} 1010 1012 \end{table} 1011 1013 1012 1014 \begin{table} 1013 \scriptsize1014 1015 \begin{tabularx}{\textwidth}{|l|X|X|X|X|} 1015 1016 \hline … … 1040 1041 \hline 1041 1042 \end{tabularx} 1042 \caption{ Domain tags ("\tt{domain\_*)}"}1043 \caption{XIOS: domain tags ("\texttt{domain\_*)}"} 1043 1044 \end{table} 1044 1045 1045 1046 \begin{table} 1046 \scriptsize1047 1047 \begin{tabularx}{\textwidth}{|l|X|X|X|X|} 1048 1048 \hline … … 1073 1073 \hline 1074 1074 \end{tabularx} 1075 \caption{ Grid tags ("\tt{grid\_*}")}1075 \caption{XIOS: grid tags ("\texttt{grid\_*}")} 1076 1076 \end{table} 1077 1077 1078 %% ================================================================================================= 1078 1079 \subsubsection{Attributes list per family} 1079 1080 1080 1081 \begin{table} 1081 \scriptsize1082 1082 \begin{tabularx}{\textwidth}{|l|X|l|l|} 1083 1083 \hline … … 1114 1114 \hline 1115 1115 \end{tabularx} 1116 \caption{ Reference attributes ("\tt{*\_ref}")}1116 \caption{XIOS: reference attributes ("\texttt{*\_ref}")} 1117 1117 \end{table} 1118 1118 1119 1119 \begin{table} 1120 \scriptsize1121 1120 \begin{tabularx}{\textwidth}{|l|X|l|l|} 1122 1121 \hline … … 1150 1149 \hline 1151 1150 \end{tabularx} 1152 \caption{ Domain attributes ("\tt{zoom\_*}")}1151 \caption{XIOS: domain attributes ("\texttt{zoom\_*}")} 1153 1152 \end{table} 1154 1153 1155 1154 \begin{table} 1156 \scriptsize1157 1155 \begin{tabularx}{\textwidth}{|l|X|l|l|} 1158 1156 \hline … … 1205 1203 \hline 1206 1204 \end{tabularx} 1207 \caption{ File attributes}1205 \caption{XIOS: file attributes} 1208 1206 \end{table} 1209 1207 1210 1208 \begin{table} 1211 \scriptsize1212 1209 \begin{tabularx}{\textwidth}{|l|X|l|l|} 1213 1210 \hline … … 1254 1251 \hline 1255 1252 \end{tabularx} 1256 \caption{ Field attributes}1253 \caption{XIOS: field attributes} 1257 1254 \end{table} 1258 1255 1259 1256 \begin{table} 1260 \scriptsize1261 1257 \begin{tabularx}{\textwidth}{|l|X|X|X|} 1262 1258 \hline … … 1313 1309 \hline 1314 1310 \end{tabularx} 1315 \caption{ Miscellaneous attributes}1311 \caption{XIOS: miscellaneous attributes} 1316 1312 \end{table} 1317 1313 1314 %% ================================================================================================= 1318 1315 \subsection{CF metadata standard compliance} 1319 1316 1320 Output from the XIOS -1.0 IO server is compliant with1317 Output from the XIOS IO server is compliant with 1321 1318 \href{http://cfconventions.org/Data/cf-conventions/cf-conventions-1.5/build/cf-conventions.html}{version 1.5} of 1322 the CF metadata standard. 1319 the CF metadata standard. 1323 1320 Therefore while a user may wish to add their own metadata to the output files (as demonstrated in example 4 of 1324 section \autoref{subsec: IOM_xmlref}) the metadata should, for the most part, comply with the CF-1.5 standard.1321 section \autoref{subsec:DIA_IOM_xmlref}) the metadata should, for the most part, comply with the CF-1.5 standard. 1325 1322 1326 1323 Some metadata that may significantly increase the file size (horizontal cell areas and vertices) are controlled by 1327 the namelist parameter \np{ln \_cfmeta} in the \ngn{namrun} namelist.1324 the namelist parameter \np{ln_cfmeta}{ln\_cfmeta} in the \nam{run}{run} namelist. 1328 1325 This must be set to true if these metadata are to be included in the output files. 1329 1326 1330 1331 % ================================================================ 1332 % NetCDF4 support 1333 % ================================================================ 1334 \section{NetCDF4 support (\protect\key{netcdf4})} 1327 %% ================================================================================================= 1328 \section[NetCDF4 support (\texttt{\textbf{key\_netcdf4}})]{NetCDF4 support (\protect\key{netcdf4})} 1335 1329 \label{sec:DIA_nc4} 1336 1330 … … 1340 1334 Chunking and compression can lead to significant reductions in file sizes for a small runtime overhead. 1341 1335 For a fuller discussion on chunking and other performance issues the reader is referred to 1342 the NetCDF4 documentation found \href{http ://www.unidata.ucar.edu/software/netcdf/docs/netcdf.html#Chunking}{here}.1336 the NetCDF4 documentation found \href{https://www.unidata.ucar.edu/software/netcdf/docs/netcdf_perf_chunking.html}{here}. 1343 1337 1344 1338 The new features are only available when the code has been linked with a NetCDF4 library … … 1346 1340 Datasets created with chunking and compression are not backwards compatible with NetCDF3 "classic" format but 1347 1341 most analysis codes can be relinked simply with the new libraries and will then read both NetCDF3 and NetCDF4 files. 1348 NEMO executables linked with NetCDF4 libraries can be made to produce NetCDF3 files by 1349 setting the \np{ln\_nc4zip} logical to false in the \textit{namnc4} namelist: 1350 1351 %------------------------------------------namnc4---------------------------------------------------- 1352 1353 \nlst{namnc4} 1354 %------------------------------------------------------------------------------------------------------------- 1342 \NEMO\ executables linked with NetCDF4 libraries can be made to produce NetCDF3 files by 1343 setting the \np{ln_nc4zip}{ln\_nc4zip} logical to false in the \nam{nc4}{nc4} namelist: 1344 1345 \begin{listing} 1346 \nlst{namnc4} 1347 \caption{\forcode{&namnc4}} 1348 \label{lst:namnc4} 1349 \end{listing} 1355 1350 1356 1351 If \key{netcdf4} has not been defined, these namelist parameters are not read. 1357 In this case, \np{ln \_nc4zip} is set false and dummy routines for a few NetCDF4-specific functions are defined.1352 In this case, \np{ln_nc4zip}{ln\_nc4zip} is set false and dummy routines for a few NetCDF4-specific functions are defined. 1358 1353 These functions will not be used but need to be included so that compilation is possible with NetCDF3 libraries. 1359 1354 … … 1389 1384 \end{forlines} 1390 1385 1391 \noindent for a standard ORCA2\_LIM configuration gives chunksizes of {\small\t t 46x38x1} respectively in1392 the mono-processor case (\ie global domain of {\small\tt 182x149x31}).1393 An illustration of the potential space savings that NetCDF4 chunking and compression provides is given in 1394 table \autoref{tab: NC4} which compares the results of two short runs of the ORCA2\_LIM reference configuration with1386 \noindent for a standard ORCA2\_LIM configuration gives chunksizes of {\small\texttt 46x38x1} respectively in 1387 the mono-processor case (\ie\ global domain of {\small\texttt 182x149x31}). 1388 An illustration of the potential space savings that NetCDF4 chunking and compression provides is given in 1389 table \autoref{tab:DIA_NC4} which compares the results of two short runs of the ORCA2\_LIM reference configuration with 1395 1390 a 4x2 mpi partitioning. 1396 1391 Note the variation in the compression ratio achieved which reflects chiefly the dry to wet volume ratio of 1397 1392 each processing region. 1398 1393 1399 %------------------------------------------TABLE----------------------------------------------------1400 1394 \begin{table} 1401 \scriptsize1402 1395 \centering 1403 1396 \begin{tabular}{lrrr} … … 1431 1424 ORCA2\_2d\_grid\_W\_0007.nc & 4416 & 1368 & 70\% \\ 1432 1425 \end{tabular} 1433 \caption{ 1434 \protect\label{tab:NC4} 1435 Filesize comparison between NetCDF3 and NetCDF4 with chunking and compression 1436 } 1426 \caption{Filesize comparison between NetCDF3 and NetCDF4 with chunking and compression} 1427 \label{tab:DIA_NC4} 1437 1428 \end{table} 1438 %----------------------------------------------------------------------------------------------------1439 1429 1440 1430 When \key{iomput} is activated with \key{netcdf4} chunking and compression parameters for fields produced via 1441 \ np{iom\_put} calls are set via an equivalent and identically named namelist to \textit{namnc4} in1442 \ np{xmlio\_server.def}.1443 Typically this namelist serves the mean files whilst the \n gn{ namnc4} in the main namelist file continues to1431 \rou{iom\_put} calls are set via an equivalent and identically named namelist to \nam{nc4}{nc4} in 1432 \textit{xmlio\_server.def}. 1433 Typically this namelist serves the mean files whilst the \nam{nc4}{nc4} in the main namelist file continues to 1444 1434 serve the restart files. 1445 1435 This duplication is unfortunate but appropriate since, if using io\_servers, the domain sizes of 1446 1436 the individual files produced by the io\_server processes may be different to those produced by 1447 1437 the invidual processing regions and different chunking choices may be desired. 1448 1449 % ------------------------------------------------------------------------------------------------------------- 1450 % Tracer/Dynamics Trends 1451 % ------------------------------------------------------------------------------------------------------------- 1452 \section{Tracer/Dynamics trends (\protect\ngn{namtrd})} 1438 1439 %% ================================================================================================= 1440 \section[Tracer/Dynamics trends (\forcode{&namtrd})]{Tracer/Dynamics trends (\protect\nam{trd}{trd})} 1453 1441 \label{sec:DIA_trd} 1454 1442 1455 %------------------------------------------namtrd---------------------------------------------------- 1456 1457 \nlst{namtrd} 1458 %------------------------------------------------------------------------------------------------------------- 1443 \begin{listing} 1444 \nlst{namtrd} 1445 \caption{\forcode{&namtrd}} 1446 \label{lst:namtrd} 1447 \end{listing} 1459 1448 1460 1449 Each trend of the dynamics and/or temperature and salinity time evolution equations can be send to 1461 1450 \mdl{trddyn} and/or \mdl{trdtra} modules (see TRD directory) just after their computation 1462 (\ie at the end of each $dyn\cdots.F90$ and/or $tra\cdots.F90$routines).1463 This capability is controlled by options offered in \n gn{namtrd} namelist.1464 Note that the output are done with xIOS, and therefore the \key{IOM} is required.1465 1466 What is done depends on the \n gn{namtrd} logical set to \forcode{.true.}:1451 (\ie\ at the end of each \textit{dyn....F90} and/or \textit{tra....F90} routines). 1452 This capability is controlled by options offered in \nam{trd}{trd} namelist. 1453 Note that the output are done with XIOS, and therefore the \key{iomput} is required. 1454 1455 What is done depends on the \nam{trd}{trd} logical set to \forcode{.true.}: 1467 1456 1468 1457 \begin{description} 1469 \item[\np{ln\_glo\_trd}]: 1470 at each \np{nn\_trd} time-step a check of the basin averaged properties of 1458 \item [{\np{ln_glo_trd}{ln\_glo\_trd}}]: at each \np{nn_trd}{nn\_trd} time-step a check of the basin averaged properties of 1471 1459 the momentum and tracer equations is performed. 1472 1460 This also includes a check of $T^2$, $S^2$, $\tfrac{1}{2} (u^2+v2)$, 1473 1461 and potential energy time evolution equations properties; 1474 \item[\np{ln\_dyn\_trd}]: 1475 each 3D trend of the evolution of the two momentum components is output; 1476 \item[\np{ln\_dyn\_mxl}]: 1477 each 3D trend of the evolution of the two momentum components averaged over the mixed layer is output; 1478 \item[\np{ln\_vor\_trd}]: 1479 a vertical summation of the moment tendencies is performed, 1462 \item [{\np{ln_dyn_trd}{ln\_dyn\_trd}}]: each 3D trend of the evolution of the two momentum components is output; 1463 \item [{\np{ln_dyn_mxl}{ln\_dyn\_mxl}}]: each 3D trend of the evolution of the two momentum components averaged over the mixed layer is output; 1464 \item [{\np{ln_vor_trd}{ln\_vor\_trd}}]: a vertical summation of the moment tendencies is performed, 1480 1465 then the curl is computed to obtain the barotropic vorticity tendencies which are output; 1481 \item[\np{ln\_KE\_trd}] : 1482 each 3D trend of the Kinetic Energy equation is output; 1483 \item[\np{ln\_tra\_trd}]: 1484 each 3D trend of the evolution of temperature and salinity is output; 1485 \item[\np{ln\_tra\_mxl}]: 1486 each 2D trend of the evolution of temperature and salinity averaged over the mixed layer is output; 1466 \item [{\np{ln_KE_trd}{ln\_KE\_trd}}] : each 3D trend of the Kinetic Energy equation is output; 1467 \item [{\np{ln_tra_trd}{ln\_tra\_trd}}]: each 3D trend of the evolution of temperature and salinity is output; 1468 \item [{\np{ln_tra_mxl}{ln\_tra\_mxl}}]: each 2D trend of the evolution of temperature and salinity averaged over the mixed layer is output; 1487 1469 \end{description} 1488 1470 1489 Note that the mixed layer tendency diagnostic can also be used on biogeochemical models via 1490 the \key{trdtrc} and \key{trdm ld\_trc} CPP keys.1471 Note that the mixed layer tendency diagnostic can also be used on biogeochemical models via 1472 the \key{trdtrc} and \key{trdmxl\_trc} CPP keys. 1491 1473 1492 1474 \textbf{Note that} in the current version (v3.6), many changes has been introduced but not fully tested. 1493 In particular, options associated with \np{ln \_dyn\_mxl}, \np{ln\_vor\_trd}, and \np{ln\_tra\_mxl} are not working,1494 and none of the options have been tested with variable volume (\ie \key{vvl} defined).1495 1496 % -------------------------------------------------------------------------------------------------------------1497 % On-line Floats trajectories 1498 % ------------------------------------------------------------------------------------------------------------- 1499 \section{FLO: On-Line Floats trajectories (\protect\key{floats})} 1500 \ label{sec:FLO}1501 %--------------------------------------------namflo------------------------------------------------------- 1502 1503 \nlst{namflo} 1504 %-------------------------------------------------------------------------------------------------------------- 1475 In particular, options associated with \np{ln_dyn_mxl}{ln\_dyn\_mxl}, \np{ln_vor_trd}{ln\_vor\_trd}, and \np{ln_tra_mxl}{ln\_tra\_mxl} are not working, 1476 and none of the options have been tested with variable volume (\ie\ \np[=.true.]{ln_linssh}{ln\_linssh}). 1477 1478 %% ================================================================================================= 1479 \section[FLO: On-Line Floats trajectories (\texttt{\textbf{key\_floats}})]{FLO: On-Line Floats trajectories (\protect\key{floats})} 1480 \label{sec:DIA_FLO} 1481 1482 \begin{listing} 1483 \nlst{namflo} 1484 \caption{\forcode{&namflo}} 1485 \label{lst:namflo} 1486 \end{listing} 1505 1487 1506 1488 The on-line computation of floats advected either by the three dimensional velocity field or constraint to 1507 1489 remain at a given depth ($w = 0$ in the computation) have been introduced in the system during the CLIPPER project. 1508 Options are defined by \n gn{namflo} namelisvariables.1509 The algorithm used is based either on the work of \cite{ Blanke_Raynaud_JPO97} (default option),1510 or on a $4^th$ Runge-Hutta algorithm (\np {ln\_flork4}\forcode{ = .true.}).1511 Note that the \cite{ Blanke_Raynaud_JPO97} algorithm have the advantage of providing trajectories which1490 Options are defined by \nam{flo}{flo} namelist variables. 1491 The algorithm used is based either on the work of \cite{blanke.raynaud_JPO97} (default option), 1492 or on a $4^th$ Runge-Hutta algorithm (\np[=.true.]{ln_flork4}{ln\_flork4}). 1493 Note that the \cite{blanke.raynaud_JPO97} algorithm have the advantage of providing trajectories which 1512 1494 are consistent with the numeric of the code, so that the trajectories never intercept the bathymetry. 1513 1495 1496 %% ================================================================================================= 1514 1497 \subsubsection{Input data: initial coordinates} 1515 1498 1516 1499 Initial coordinates can be given with Ariane Tools convention 1517 (IJK coordinates, (\np {ln\_ariane}\forcode{ = .true.}) ) or with longitude and latitude.1518 1519 In case of Ariane convention, input filename is \ np{init\_float\_ariane}.1500 (IJK coordinates, (\np[=.true.]{ln_ariane}{ln\_ariane}) ) or with longitude and latitude. 1501 1502 In case of Ariane convention, input filename is \textit{init\_float\_ariane}. 1520 1503 Its format is: \\ 1521 { \scriptsize \texttt{I J K nisobfl itrashitrash}}1504 { \texttt{I J K nisobfl itrash}} 1522 1505 1523 1506 \noindent with: … … 1525 1508 - I,J,K : indexes of initial position 1526 1509 1527 - nisobfl: 0 for an isobar float, 1 for a float following the w velocity 1510 - nisobfl: 0 for an isobar float, 1 for a float following the w velocity 1528 1511 1529 1512 - itrash : set to zero; it is a dummy variable to respect Ariane Tools convention … … 1531 1514 \noindent Example: \\ 1532 1515 \noindent 1533 { \scriptsize1516 { 1534 1517 \texttt{ 1535 1518 100.00000 90.00000 -1.50000 1.00000 0.00000 \\ … … 1542 1525 In the other case (longitude and latitude), input filename is init\_float. 1543 1526 Its format is: \\ 1544 { \scriptsize\texttt{Long Lat depth nisobfl ngrpfl itrash}}1527 { \texttt{Long Lat depth nisobfl ngrpfl itrash}} 1545 1528 1546 1529 \noindent with: … … 1556 1539 \noindent Example: \\ 1557 1540 \noindent 1558 { \scriptsize1541 { 1559 1542 \texttt{ 1560 1543 20.0 0.0 0.0 0 1 1 \\ … … 1565 1548 } \\ 1566 1549 1567 \np{jpnfl} is the total number of floats during the run. 1568 When initial positions are read in a restart file (\np{ln\_rstflo}\forcode{ = .true.} ), 1569 \np{jpnflnewflo} can be added in the initialization file. 1570 1550 \np{jpnfl}{jpnfl} is the total number of floats during the run. 1551 When initial positions are read in a restart file (\np[=.true.]{ln_rstflo}{ln\_rstflo} ), 1552 \np{jpnflnewflo}{jpnflnewflo} can be added in the initialization file. 1553 1554 %% ================================================================================================= 1571 1555 \subsubsection{Output data} 1572 1556 1573 \np{nn \_writefl} is the frequency of writing in float output file and \np{nn\_stockfl} is the frequency of1557 \np{nn_writefl}{nn\_writefl} is the frequency of writing in float output file and \np{nn_stockfl}{nn\_stockfl} is the frequency of 1574 1558 creation of the float restart file. 1575 1559 1576 Output data can be written in ascii files (\np {ln\_flo\_ascii}\forcode{ = .true.}).1560 Output data can be written in ascii files (\np[=.true.]{ln_flo_ascii}{ln\_flo\_ascii}). 1577 1561 In that case, output filename is trajec\_float. 1578 1562 1579 Another possiblity of writing format is Netcdf (\np{ln\_flo\_ascii}\forcode{ = .false.}). 1580 There are 2 possibilities: 1581 1582 - if (\key{iomput}) is used, outputs are selected in iodef.xml. 1563 Another possiblity of writing format is Netcdf (\np[=.false.]{ln_flo_ascii}{ln\_flo\_ascii}) with 1564 \key{iomput} and outputs selected in iodef.xml. 1583 1565 Here it is an example of specification to put in files description section: 1584 1566 … … 1597 1579 \end{xmllines} 1598 1580 1599 - if (\key{iomput}) is not used, a file called \ifile{trajec\_float} will be created by IOIPSL library. 1600 1601 See also \href{http://stockage.univ-brest.fr/~grima/Ariane/}{here} the web site describing the off-line use of 1602 this marvellous diagnostic tool. 1603 1604 % ------------------------------------------------------------------------------------------------------------- 1605 % Harmonic analysis of tidal constituents 1606 % ------------------------------------------------------------------------------------------------------------- 1607 \section{Harmonic analysis of tidal constituents (\protect\key{diaharm}) } 1581 %% ================================================================================================= 1582 \section[Harmonic analysis of tidal constituents (\texttt{\textbf{key\_diaharm}})]{Harmonic analysis of tidal constituents (\protect\key{diaharm})} 1608 1583 \label{sec:DIA_diag_harm} 1609 1584 1610 %------------------------------------------namdia_harm---------------------------------------------------- 1611 % 1612 \nlst{nam_diaharm} 1613 %---------------------------------------------------------------------------------------------------------- 1585 \begin{listing} 1586 \nlst{nam_diaharm} 1587 \caption{\forcode{&nam_diaharm}} 1588 \label{lst:nam_diaharm} 1589 \end{listing} 1614 1590 1615 1591 A module is available to compute the amplitude and phase of tidal waves. 1616 1592 This on-line Harmonic analysis is actived with \key{diaharm}. 1617 1593 1618 Some parameters are available in namelist \n gn{namdia\_harm}:1619 1620 - \np{nit000 \_han} is the first time step used for harmonic analysis1621 1622 - \np{nitend \_han} is the last time step used for harmonic analysis1623 1624 - \np{nstep \_han} is the time step frequency for harmonic analysis1625 1626 - \np{nb\_ana} is the number of harmonics to analyse1627 1628 - \np{tname} is an array with names of tidal constituents to analyse1629 1630 \np{nit000 \_han} and \np{nitend\_han} must be between \np{nit000} and \np{nitend} of the simulation.1594 Some parameters are available in namelist \nam{_diaharm}{\_diaharm}: 1595 1596 - \np{nit000_han}{nit000\_han} is the first time step used for harmonic analysis 1597 1598 - \np{nitend_han}{nitend\_han} is the last time step used for harmonic analysis 1599 1600 - \np{nstep_han}{nstep\_han} is the time step frequency for harmonic analysis 1601 1602 % - \np{nb_ana}{nb\_ana} is the number of harmonics to analyse 1603 1604 - \np{tname}{tname} is an array with names of tidal constituents to analyse 1605 1606 \np{nit000_han}{nit000\_han} and \np{nitend_han}{nitend\_han} must be between \np{nit000}{nit000} and \np{nitend}{nitend} of the simulation. 1631 1607 The restart capability is not implemented. 1632 1608 … … 1649 1625 We obtain in output $C_{j}$ and $S_{j}$ for each tidal wave. 1650 1626 1651 % ------------------------------------------------------------------------------------------------------------- 1652 % Sections transports 1653 % ------------------------------------------------------------------------------------------------------------- 1654 \section{Transports across sections (\protect\key{diadct}) } 1627 %% ================================================================================================= 1628 \section[Transports across sections (\texttt{\textbf{key\_diadct}})]{Transports across sections (\protect\key{diadct})} 1655 1629 \label{sec:DIA_diag_dct} 1656 1630 1657 %------------------------------------------namdct---------------------------------------------------- 1658 1659 \nlst{namdct} 1660 %------------------------------------------------------------------------------------------------------------- 1631 \begin{listing} 1632 \nlst{nam_diadct} 1633 \caption{\forcode{&nam_diadct}} 1634 \label{lst:nam_diadct} 1635 \end{listing} 1661 1636 1662 1637 A module is available to compute the transport of volume, heat and salt through sections. … … 1664 1639 1665 1640 Each section is defined by the coordinates of its 2 extremities. 1666 The pathways between them are contructed using tools which can be found in \texttt{ NEMOGCM/TOOLS/SECTIONS\_DIADCT}1667 and are written in a binary file \texttt{section\_ijglobal.diadct \_ORCA2\_LIM} which is later read in by1668 NEMOto compute on-line transports.1641 The pathways between them are contructed using tools which can be found in \texttt{tools/SECTIONS\_DIADCT} 1642 and are written in a binary file \texttt{section\_ijglobal.diadct} which is later read in by 1643 \NEMO\ to compute on-line transports. 1669 1644 1670 1645 The on-line transports module creates three output ascii files: … … 1676 1651 - \texttt{salt\_transport} for salt transports (unit: $10^{9}Kg s^{-1}$) \\ 1677 1652 1678 Namelist variables in \n gn{namdct} control how frequently the flows are summed and the time scales over which1653 Namelist variables in \nam{_diadct}{\_diadct} control how frequently the flows are summed and the time scales over which 1679 1654 they are averaged, as well as the level of output for debugging: 1680 \np{nn\_dct} : frequency of instantaneous transports computing 1681 \np{nn\_dctwri}: frequency of writing ( mean of instantaneous transports ) 1682 \np{nn\_debug} : debugging of the section 1683 1655 \np{nn_dct}{nn\_dct} : frequency of instantaneous transports computing 1656 \np{nn_dctwri}{nn\_dctwri}: frequency of writing ( mean of instantaneous transports ) 1657 \np{nn_debug}{nn\_debug} : debugging of the section 1658 1659 %% ================================================================================================= 1684 1660 \subsubsection{Creating a binary file containing the pathway of each section} 1685 1661 1686 In \texttt{ NEMOGCM/TOOLS/SECTIONS\_DIADCT/run},1662 In \texttt{tools/SECTIONS\_DIADCT/run}, 1687 1663 the file \textit{ {list\_sections.ascii\_global}} contains a list of all the sections that are to be computed 1688 1664 (this list of sections is based on MERSEA project metrics). … … 1691 1667 1692 1668 Each section is defined by: \\ 1693 \noindent { \scriptsize\texttt{long1 lat1 long2 lat2 nclass (ok/no)strpond (no)ice section\_name}} \\1669 \noindent { \texttt{long1 lat1 long2 lat2 nclass (ok/no)strpond (no)ice section\_name}} \\ 1694 1670 with: 1695 1671 … … 1698 1674 - \texttt{long2 lat2}, coordinates of the second extremity of the section; 1699 1675 1700 - \texttt{nclass} the number of bounds of your classes (\eg bounds for 2 classes);1676 - \texttt{nclass} the number of bounds of your classes (\eg\ bounds for 2 classes); 1701 1677 1702 1678 - \texttt{okstrpond} to compute heat and salt transports, \texttt{nostrpond} if no; … … 1708 1684 1709 1685 \noindent If nclass $\neq$ 0, the next lines contain the class type and the nclass bounds: \\ 1710 { \scriptsize1686 { 1711 1687 \texttt{ 1712 1688 long1 lat1 long2 lat2 nclass (ok/no)strpond (no)ice section\_name \\ … … 1731 1707 1732 1708 - \texttt{zsigp} for potential density classes \\ 1733 1709 1734 1710 The script \texttt{job.ksh} computes the pathway for each section and creates a binary file 1735 \texttt{section\_ijglobal.diadct \_ORCA2\_LIM} which is read byNEMO. \\1711 \texttt{section\_ijglobal.diadct} which is read by \NEMO. \\ 1736 1712 1737 1713 It is possible to use this tools for new configuations: \texttt{job.ksh} has to be updated with … … 1741 1717 and the ATL\_Cuba\_Florida with 4 temperature clases (5 class bounds), are shown: \\ 1742 1718 \noindent 1743 { \scriptsize1719 { 1744 1720 \texttt{ 1745 1721 -68. -54.5 -60. -64.7 00 okstrpond noice ACC\_Drake\_Passage \\ … … 1753 1729 } 1754 1730 1731 %% ================================================================================================= 1755 1732 \subsubsection{To read the output files} 1756 1733 1757 1734 The output format is: \\ 1758 { \scriptsize1735 { 1759 1736 \texttt{ 1760 1737 date, time-step number, section number, \\ … … 1778 1755 1779 1756 \begin{table} 1780 \scriptsize1781 1757 \begin{tabular}{|l|l|l|l|l|} 1782 1758 \hline … … 1792 1768 \end{table} 1793 1769 1794 % ================================================================ 1795 % Steric effect in sea surface height 1796 % ================================================================ 1770 %% ================================================================================================= 1797 1771 \section{Diagnosing the steric effect in sea surface height} 1798 1772 \label{sec:DIA_steric} 1799 1800 1773 1801 1774 Changes in steric sea level are caused when changes in the density of the water column imply an expansion or … … 1809 1782 The steric effect is therefore not explicitely represented. 1810 1783 This approximation does not represent a serious error with respect to the flow field calculated by the model 1811 \citep{ Greatbatch_JGR94}, but extra attention is required when investigating sea level,1784 \citep{greatbatch_JGR94}, but extra attention is required when investigating sea level, 1812 1785 as steric changes are an important contribution to local changes in sea level on seasonal and climatic time scales. 1813 1786 This is especially true for investigation into sea level rise due to global warming. 1814 1787 1815 1788 Fortunately, the steric contribution to the sea level consists of a spatially uniform component that 1816 can be diagnosed by considering the mass budget of the world ocean \citep{ Greatbatch_JGR94}.1789 can be diagnosed by considering the mass budget of the world ocean \citep{greatbatch_JGR94}. 1817 1790 In order to better understand how global mean sea level evolves and thus how the steric sea level can be diagnosed, 1818 1791 we compare, in the following, the non-Boussinesq and Boussinesq cases. 1819 1792 1820 1793 Let denote 1821 $\mathcal{M}$ the total mass of liquid seawater ($\mathcal{M} = \int_D \rho dv$), 1822 $\mathcal{V}$ the total volume of seawater ($\mathcal{V} = \int_D dv$), 1823 $\mathcal{A}$ the total surface of the ocean ($\mathcal{A} = \int_S ds$), 1824 $\bar{\rho}$ the global mean seawater (\textit{in situ}) density 1794 $\mathcal{M}$ the total mass of liquid seawater ($\mathcal{M} = \int_D \rho dv$), 1795 $\mathcal{V}$ the total volume of seawater ($\mathcal{V} = \int_D dv$), 1796 $\mathcal{A}$ the total surface of the ocean ($\mathcal{A} = \int_S ds$), 1797 $\bar{\rho}$ the global mean seawater (\textit{in situ}) density 1825 1798 ($\bar{\rho} = 1/\mathcal{V} \int_D \rho \,dv$), and 1826 $\bar{\eta}$ the global mean sea level 1799 $\bar{\eta}$ the global mean sea level 1827 1800 ($\bar{\eta} = 1/\mathcal{A} \int_S \eta \,ds$). 1828 1801 … … 1834 1807 \mathcal{V} &= \mathcal{A} \;\bar{\eta} 1835 1808 \end{split} 1836 \label{eq: MV_nBq}1809 \label{eq:DIA_MV_nBq} 1837 1810 \end{equation} 1838 1811 … … 1842 1815 \frac{1}{e_3} \partial_t ( e_3\,\rho) + \nabla( \rho \, \textbf{U} ) 1843 1816 = \left. \frac{\textit{emp}}{e_3}\right|_\textit{surface} 1844 \label{eq: Co_nBq}1817 \label{eq:DIA_Co_nBq} 1845 1818 \end{equation} 1846 1819 1847 1820 where $\rho$ is the \textit{in situ} density, and \textit{emp} the surface mass exchanges with the other media of 1848 1821 the Earth system (atmosphere, sea-ice, land). 1849 Its global averaged leads to the total mass change 1822 Its global averaged leads to the total mass change 1850 1823 1851 1824 \begin{equation} 1852 1825 \partial_t \mathcal{M} = \mathcal{A} \;\overline{\textit{emp}} 1853 \label{eq: Mass_nBq}1826 \label{eq:DIA_Mass_nBq} 1854 1827 \end{equation} 1855 1828 1856 1829 where $\overline{\textit{emp}} = \int_S \textit{emp}\,ds$ is the net mass flux through the ocean surface. 1857 Bringing \autoref{eq: Mass_nBq} and the time derivative of \autoref{eq:MV_nBq} together leads to1830 Bringing \autoref{eq:DIA_Mass_nBq} and the time derivative of \autoref{eq:DIA_MV_nBq} together leads to 1858 1831 the evolution equation of the mean sea level 1859 1832 … … 1861 1834 \partial_t \bar{\eta} = \frac{\overline{\textit{emp}}}{ \bar{\rho}} 1862 1835 - \frac{\mathcal{V}}{\mathcal{A}} \;\frac{\partial_t \bar{\rho} }{\bar{\rho}} 1863 \label{eq: ssh_nBq}1836 \label{eq:DIA_ssh_nBq} 1864 1837 \end{equation} 1865 1838 1866 The first term in equation \autoref{eq: ssh_nBq} alters sea level by adding or subtracting mass from the ocean.1867 The second term arises from temporal changes in the global mean density; \ie from steric effects.1839 The first term in equation \autoref{eq:DIA_ssh_nBq} alters sea level by adding or subtracting mass from the ocean. 1840 The second term arises from temporal changes in the global mean density; \ie\ from steric effects. 1868 1841 1869 1842 In a Boussinesq fluid, $\rho$ is replaced by $\rho_o$ in all the equation except when $\rho$ appears multiplied by 1870 the gravity (\ie in the hydrostatic balance of the primitive Equations).1871 In particular, the mass conservation equation, \autoref{eq: Co_nBq}, degenerates into the incompressibility equation:1843 the gravity (\ie\ in the hydrostatic balance of the primitive Equations). 1844 In particular, the mass conservation equation, \autoref{eq:DIA_Co_nBq}, degenerates into the incompressibility equation: 1872 1845 1873 1846 \[ 1874 1847 \frac{1}{e_3} \partial_t ( e_3 ) + \nabla( \textbf{U} ) = \left. \frac{\textit{emp}}{\rho_o \,e_3}\right|_ \textit{surface} 1875 % \label{eq: Co_Bq}1848 % \label{eq:DIA_Co_Bq} 1876 1849 \] 1877 1850 … … 1880 1853 \[ 1881 1854 \partial_t \mathcal{V} = \mathcal{A} \;\frac{\overline{\textit{emp}}}{\rho_o} 1882 % \label{eq: V_Bq}1855 % \label{eq:DIA_V_Bq} 1883 1856 \] 1884 1857 … … 1888 1861 the ocean surface, not by changes in mean mass of the ocean: the steric effect is missing in a Boussinesq fluid. 1889 1862 1890 Nevertheless, following \citep{ Greatbatch_JGR94}, the steric effect on the volume can be diagnosed by1891 considering the mass budget of the ocean. 1863 Nevertheless, following \citep{greatbatch_JGR94}, the steric effect on the volume can be diagnosed by 1864 considering the mass budget of the ocean. 1892 1865 The apparent changes in $\mathcal{M}$, mass of the ocean, which are not induced by surface mass flux 1893 1866 must be compensated by a spatially uniform change in the mean sea level due to expansion/contraction of the ocean 1894 \citep{ Greatbatch_JGR94}.1867 \citep{greatbatch_JGR94}. 1895 1868 In others words, the Boussinesq mass, $\mathcal{M}_o$, can be related to $\mathcal{M}$, 1896 1869 the total mass of the ocean seen by the Boussinesq model, via the steric contribution to the sea level, … … 1899 1872 \begin{equation} 1900 1873 \mathcal{M}_o = \mathcal{M} + \rho_o \,\eta_s \,\mathcal{A} 1901 \label{eq: M_Bq}1874 \label{eq:DIA_M_Bq} 1902 1875 \end{equation} 1903 1876 … … 1905 1878 is converted into a mean change in sea level. 1906 1879 Introducing the total density anomaly, $\mathcal{D}= \int_D d_a \,dv$, 1907 where $d_a = (\rho -\rho_o ) / \rho_o$ is the density anomaly used in \NEMO (cf. \autoref{subsec:TRA_eos})1908 in \autoref{eq: M_Bq} leads to a very simple form for the steric height:1880 where $d_a = (\rho -\rho_o ) / \rho_o$ is the density anomaly used in \NEMO\ (cf. \autoref{subsec:TRA_eos}) 1881 in \autoref{eq:DIA_M_Bq} leads to a very simple form for the steric height: 1909 1882 1910 1883 \begin{equation} 1911 1884 \eta_s = - \frac{1}{\mathcal{A}} \mathcal{D} 1912 \label{eq: steric_Bq}1885 \label{eq:DIA_steric_Bq} 1913 1886 \end{equation} 1914 1887 1915 1888 The above formulation of the steric height of a Boussinesq ocean requires four remarks. 1916 1889 First, one can be tempted to define $\rho_o$ as the initial value of $\mathcal{M}/\mathcal{V}$, 1917 \ie set $\mathcal{D}_{t=0}=0$, so that the initial steric height is zero.1890 \ie\ set $\mathcal{D}_{t=0}=0$, so that the initial steric height is zero. 1918 1891 We do not recommend that. 1919 1892 Indeed, in this case $\rho_o$ depends on the initial state of the ocean. … … 1924 1897 This value is a sensible choice for the reference density used in a Boussinesq ocean climate model since, 1925 1898 with the exception of only a small percentage of the ocean, density in the World Ocean varies by no more than 1926 2$\%$ from this value (\cite{ Gill1982}, page 47).1899 2$\%$ from this value (\cite{gill_bk82}, page 47). 1927 1900 1928 1901 Second, we have assumed here that the total ocean surface, $\mathcal{A}$, 1929 1902 does not change when the sea level is changing as it is the case in all global ocean GCMs 1930 1903 (wetting and drying of grid point is not allowed). 1931 1932 Third, the discretisation of \autoref{eq: steric_Bq} depends on the type of free surface which is considered.1933 In the non linear free surface case, \ie \key{vvl} defined, it is given by1904 1905 Third, the discretisation of \autoref{eq:DIA_steric_Bq} depends on the type of free surface which is considered. 1906 In the non linear free surface case, \ie\ \np[=.true.]{ln_linssh}{ln\_linssh}, it is given by 1934 1907 1935 1908 \[ 1936 1909 \eta_s = - \frac{ \sum_{i,\,j,\,k} d_a\; e_{1t} e_{2t} e_{3t} }{ \sum_{i,\,j,\,k} e_{1t} e_{2t} e_{3t} } 1937 % \label{eq: discrete_steric_Bq_nfs}1910 % \label{eq:DIA_discrete_steric_Bq_nfs} 1938 1911 \] 1939 1912 … … 1945 1918 \eta_s = - \frac{ \sum_{i,\,j,\,k} d_a\; e_{1t}e_{2t}e_{3t} + \sum_{i,\,j} d_a\; e_{1t}e_{2t} \eta } 1946 1919 { \sum_{i,\,j,\,k} e_{1t}e_{2t}e_{3t} + \sum_{i,\,j} e_{1t}e_{2t} \eta } 1947 % \label{eq: discrete_steric_Bq_fs}1920 % \label{eq:DIA_discrete_steric_Bq_fs} 1948 1921 \] 1949 1922 … … 1954 1927 so that there are no associated ocean currents. 1955 1928 Hence, the dynamically relevant sea level is the effective sea level, 1956 \ie the sea level as if sea ice (and snow) were converted to liquid seawater \citep{Campin_al_OM08}.1957 However, in the current version of \NEMO the sea-ice is levitating above the ocean without mass exchanges between1929 \ie\ the sea level as if sea ice (and snow) were converted to liquid seawater \citep{campin.marshall.ea_OM08}. 1930 However, in the current version of \NEMO\ the sea-ice is levitating above the ocean without mass exchanges between 1958 1931 ice and ocean. 1959 1932 Therefore the model effective sea level is always given by $\eta + \eta_s$, whether or not there is sea ice present. … … 1965 1938 \[ 1966 1939 \eta_s = - \frac{1}{\mathcal{A}} \int_D d_a(T,S_o,p_o) \,dv 1967 % \label{eq: thermosteric_Bq}1940 % \label{eq:DIA_thermosteric_Bq} 1968 1941 \] 1969 1942 1970 1943 where $S_o$ and $p_o$ are the initial salinity and pressure, respectively. 1971 1944 1972 Both steric and thermosteric sea level are computed in \mdl{diaar5} which needs the \key{diaar5} defined to 1973 be called. 1974 1975 % ------------------------------------------------------------------------------------------------------------- 1976 % Other Diagnostics 1977 % ------------------------------------------------------------------------------------------------------------- 1978 \section{Other diagnostics (\protect\key{diahth}, \protect\key{diaar5})} 1945 Both steric and thermosteric sea level are computed in \mdl{diaar5}. 1946 1947 %% ================================================================================================= 1948 \section{Other diagnostics} 1979 1949 \label{sec:DIA_diag_others} 1980 1950 … … 1982 1952 The available ready-to-add diagnostics modules can be found in directory DIA. 1983 1953 1984 \subsection{Depth of various quantities (\protect\mdl{diahth})} 1954 %% ================================================================================================= 1955 \subsection[Depth of various quantities (\textit{diahth.F90})]{Depth of various quantities (\protect\mdl{diahth})} 1985 1956 1986 1957 Among the available diagnostics the following ones are obtained when defining the \key{diahth} CPP key: 1987 1958 1988 - the mixed layer depth (based on a density criterion \citep{de _Boyer_Montegut_al_JGR04}) (\mdl{diahth})1959 - the mixed layer depth (based on a density criterion \citep{de-boyer-montegut.madec.ea_JGR04}) (\mdl{diahth}) 1989 1960 1990 1961 - the turbocline depth (based on a turbulent mixing coefficient criterion) (\mdl{diahth}) … … 1994 1965 - the depth of the thermocline (maximum of the vertical temperature gradient) (\mdl{diahth}) 1995 1966 1996 % ----------------------------------------------------------- 1997 % Poleward heat and salt transports 1998 % ----------------------------------------------------------- 1999 2000 \subsection{Poleward heat and salt transports (\protect\mdl{diaptr})} 2001 2002 %------------------------------------------namptr----------------------------------------- 2003 2004 \nlst{namptr} 2005 %----------------------------------------------------------------------------------------- 2006 2007 The poleward heat and salt transports, their advective and diffusive component, 2008 and the meriodional stream function can be computed on-line in \mdl{diaptr} \np{ln\_diaptr} to true 2009 (see the \textit{\ngn{namptr} } namelist below). 2010 When \np{ln\_subbas}\forcode{ = .true.}, transports and stream function are computed for the Atlantic, Indian, 1967 \begin{figure}[!t] 1968 \centering 1969 \includegraphics[width=0.66\textwidth]{DIA_mask_subasins} 1970 \caption[Decomposition of the World Ocean to compute transports as well as 1971 the meridional stream-function]{ 1972 Decomposition of the World Ocean (here ORCA2) into sub-basin used in to 1973 compute the heat and salt transports as well as the meridional stream-function: 1974 Atlantic basin (red), Pacific basin (green), 1975 Indian basin (blue), Indo-Pacific basin (blue+green). 1976 Note that semi-enclosed seas (Red, Med and Baltic seas) as well as 1977 Hudson Bay are removed from the sub-basins. 1978 Note also that the Arctic Ocean has been split into Atlantic and 1979 Pacific basins along the North fold line. 1980 } 1981 \label{fig:DIA_mask_subasins} 1982 \end{figure} 1983 1984 %% ================================================================================================= 1985 \subsection[CMIP specific diagnostics (\textit{diaar5.F90}, \textit{diaptr.F90})]{CMIP specific diagnostics (\protect\mdl{diaar5})} 1986 1987 A series of diagnostics has been added in the \mdl{diaar5} and \mdl{diaptr}. 1988 In \mdl{diaar5} they correspond to outputs that are required for AR5 simulations (CMIP5) 1989 (see also \autoref{sec:DIA_steric} for one of them). 1990 The module \mdl{diaar5} is active when one of the following outputs is required : 1991 global total volume (voltot), global mean ssh (sshtot), global total mass (masstot), global mean temperature (temptot), 1992 global mean ssh steric (sshsteric), global mean ssh thermosteric (sshthster), global mean salinity (saltot), 1993 sea water pressure at sea floor (botpres), dynamic sea surface height (sshdyn). 1994 1995 In \mdl{diaptr} when \np[=.true.]{ln_diaptr}{ln\_diaptr} 1996 (see the \nam{ptr}{ptr} namelist below) can be computed on-line the poleward heat and salt transports, 1997 their advective and diffusive component, and the meriodional stream function . 1998 When \np[=.true.]{ln_subbas}{ln\_subbas}, transports and stream function are computed for the Atlantic, Indian, 2011 1999 Pacific and Indo-Pacific Oceans (defined north of 30\deg{S}) as well as for the World Ocean. 2012 2000 The sub-basin decomposition requires an input file (\ifile{subbasins}) which contains three 2D mask arrays, 2013 the Indo-Pacific mask been deduced from the sum of the Indian and Pacific mask (\autoref{fig:mask_subasins}). 2014 2015 %>>>>>>>>>>>>>>>>>>>>>>>>>>>> 2016 \begin{figure}[!t] 2017 \begin{center} 2018 \includegraphics[width=1.0\textwidth]{Fig_mask_subasins} 2019 \caption{ 2020 \protect\label{fig:mask_subasins} 2021 Decomposition of the World Ocean (here ORCA2) into sub-basin used in to 2022 compute the heat and salt transports as well as the meridional stream-function: 2023 Atlantic basin (red), Pacific basin (green), Indian basin (bleue), Indo-Pacific basin (bleue+green). 2024 Note that semi-enclosed seas (Red, Med and Baltic seas) as well as Hudson Bay are removed from the sub-basins. 2025 Note also that the Arctic Ocean has been split into Atlantic and Pacific basins along the North fold line. 2026 } 2027 \end{center} 2028 \end{figure} 2029 %>>>>>>>>>>>>>>>>>>>>>>>>>>>> 2030 2031 % ----------------------------------------------------------- 2032 % CMIP specific diagnostics 2033 % ----------------------------------------------------------- 2034 \subsection{CMIP specific diagnostics (\protect\mdl{diaar5})} 2035 2036 A series of diagnostics has been added in the \mdl{diaar5}. 2037 They corresponds to outputs that are required for AR5 simulations (CMIP5) 2038 (see also \autoref{sec:DIA_steric} for one of them). 2039 Activating those outputs requires to define the \key{diaar5} CPP key. 2040 2041 % ----------------------------------------------------------- 2042 % 25 hour mean and hourly Surface, Mid and Bed 2043 % ----------------------------------------------------------- 2001 the Indo-Pacific mask been deduced from the sum of the Indian and Pacific mask (\autoref{fig:DIA_mask_subasins}). 2002 2003 \begin{listing} 2004 \nlst{namptr} 2005 \caption{\forcode{&namptr}} 2006 \label{lst:namptr} 2007 \end{listing} 2008 2009 %% ================================================================================================= 2044 2010 \subsection{25 hour mean output for tidal models} 2045 2011 2046 %------------------------------------------nam_dia25h------------------------------------- 2047 2048 \nlst{nam_dia25h} 2049 %----------------------------------------------------------------------------------------- 2012 \begin{listing} 2013 \nlst{nam_dia25h} 2014 \caption{\forcode{&nam_dia25h}} 2015 \label{lst:nam_dia25h} 2016 \end{listing} 2050 2017 2051 2018 A module is available to compute a crudely detided M2 signal by obtaining a 25 hour mean. … … 2054 2021 This diagnostic is actived with the logical $ln\_dia25h$. 2055 2022 2056 % ----------------------------------------------------------- 2057 % Top Middle and Bed hourly output 2058 % ----------------------------------------------------------- 2023 %% ================================================================================================= 2059 2024 \subsection{Top middle and bed hourly output} 2060 2025 2061 %------------------------------------------nam_diatmb----------------------------------------------------- 2062 2063 \nlst{nam_diatmb} 2064 %---------------------------------------------------------------------------------------------------------- 2026 \begin{listing} 2027 \nlst{nam_diatmb} 2028 \caption{\forcode{&nam_diatmb}} 2029 \label{lst:nam_diatmb} 2030 \end{listing} 2065 2031 2066 2032 A module is available to output the surface (top), mid water and bed diagnostics of a set of standard variables. … … 2070 2036 This diagnostic is actived with the logical $ln\_diatmb$. 2071 2037 2072 % ----------------------------------------------------------- 2073 % Courant numbers 2074 % ----------------------------------------------------------- 2038 %% ================================================================================================= 2075 2039 \subsection{Courant numbers} 2076 2040 … … 2080 2044 \[ 2081 2045 C_u = |u|\frac{\rdt}{e_{1u}}, \quad C_v = |v|\frac{\rdt}{e_{2v}}, \quad C_w = |w|\frac{\rdt}{e_{3w}} 2082 % \label{eq: CFL}2046 % \label{eq:DIA_CFL} 2083 2047 \] 2084 2048 … … 2089 2053 Values greater than 1 indicate that information is propagated across more than one grid cell in a single time step. 2090 2054 2091 The variables can be activated by setting the \np{nn \_diacfl} namelist parameter to 1 in the \ngn{namctl} namelist.2055 The variables can be activated by setting the \np{nn_diacfl}{nn\_diacfl} namelist parameter to 1 in the \nam{ctl}{ctl} namelist. 2092 2056 The diagnostics will be written out to an ascii file named cfl\_diagnostics.ascii. 2093 2057 In this file the maximum value of $C_u$, $C_v$, and $C_w$ are printed at each timestep along with the coordinates of … … 2095 2059 At the end of the model run the maximum value of $C_u$, $C_v$, and $C_w$ for the whole model run is printed along 2096 2060 with the coordinates of each. 2097 The maximum values from the run are also copied to the ocean.output file. 2098 2099 % ================================================================ 2100 2101 \biblio 2102 2103 \pindex 2061 The maximum values from the run are also copied to the ocean.output file. 2062 2063 \subinc{\input{../../global/epilogue}} 2104 2064 2105 2065 \end{document}
Note: See TracChangeset
for help on using the changeset viewer.