- Timestamp:
- 2019-12-10T15:03:24+01:00 (4 years ago)
- Location:
- NEMO/branches/2019/ENHANCE-03_closea/doc
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/ENHANCE-03_closea/doc
-
Property
svn:externals
set to
^/utils/badges badges
^/utils/logos logos
-
Property
svn:externals
set to
-
NEMO/branches/2019/ENHANCE-03_closea/doc/latex
- Property svn:ignore deleted
-
NEMO/branches/2019/ENHANCE-03_closea/doc/latex/NEMO
-
Property
svn:externals
set to
^/utils/figures/NEMO figures
-
Property
svn:externals
set to
-
NEMO/branches/2019/ENHANCE-03_closea/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/ENHANCE-03_closea/doc/latex/NEMO/subfiles/chap_DIA.tex
r11179 r12149 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 {\ttfamily using\_server} setting determines whether or not the server will be used in \textit{attached mode} 171 (as a library) [{\ttfamily> false <}] or in \textit{detached mode} 172 (as an external executable on N additional, dedicated cpus) [{\ttfamily > 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 {\ttfamily 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 ("\ttfamily{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 ("\ttfamily{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 ("\ttfamily{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 ("\ttfamily{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 ("\ttfamily{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 ("\ttfamily{*\_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 ("\ttfamily{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 (\texttt{\textbf{key\_netcdf4}})] 1335 {NetCDF4 support (\protect\key{netcdf4})} 1327 %% ================================================================================================= 1328 \section[NetCDF4 support (\texttt{\textbf{key\_netcdf4}})]{NetCDF4 support (\protect\key{netcdf4})} 1336 1329 \label{sec:DIA_nc4} 1337 1330 … … 1341 1334 Chunking and compression can lead to significant reductions in file sizes for a small runtime overhead. 1342 1335 For a fuller discussion on chunking and other performance issues the reader is referred to 1343 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}. 1344 1337 1345 1338 The new features are only available when the code has been linked with a NetCDF4 library … … 1347 1340 Datasets created with chunking and compression are not backwards compatible with NetCDF3 "classic" format but 1348 1341 most analysis codes can be relinked simply with the new libraries and will then read both NetCDF3 and NetCDF4 files. 1349 NEMO executables linked with NetCDF4 libraries can be made to produce NetCDF3 files by 1350 setting the \np{ln\_nc4zip} logical to false in the \textit{namnc4} namelist: 1351 1352 %------------------------------------------namnc4---------------------------------------------------- 1353 1354 \nlst{namnc4} 1355 %------------------------------------------------------------------------------------------------------------- 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} 1356 1350 1357 1351 If \key{netcdf4} has not been defined, these namelist parameters are not read. 1358 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. 1359 1353 These functions will not be used but need to be included so that compilation is possible with NetCDF3 libraries. 1360 1354 … … 1390 1384 \end{forlines} 1391 1385 1392 \noindent for a standard ORCA2\_LIM configuration gives chunksizes of {\small\t tfamily46x38x1} respectively in1393 the mono-processor case (\ie global domain of {\small\ttfamily182x149x31}).1394 An illustration of the potential space savings that NetCDF4 chunking and compression provides is given in 1395 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 1396 1390 a 4x2 mpi partitioning. 1397 1391 Note the variation in the compression ratio achieved which reflects chiefly the dry to wet volume ratio of 1398 1392 each processing region. 1399 1393 1400 %------------------------------------------TABLE----------------------------------------------------1401 1394 \begin{table} 1402 \scriptsize1403 1395 \centering 1404 1396 \begin{tabular}{lrrr} … … 1432 1424 ORCA2\_2d\_grid\_W\_0007.nc & 4416 & 1368 & 70\% \\ 1433 1425 \end{tabular} 1434 \caption{ 1435 \protect\label{tab:NC4} 1436 Filesize comparison between NetCDF3 and NetCDF4 with chunking and compression 1437 } 1426 \caption{Filesize comparison between NetCDF3 and NetCDF4 with chunking and compression} 1427 \label{tab:DIA_NC4} 1438 1428 \end{table} 1439 %----------------------------------------------------------------------------------------------------1440 1429 1441 1430 When \key{iomput} is activated with \key{netcdf4} chunking and compression parameters for fields produced via 1442 \ np{iom\_put} calls are set via an equivalent and identically named namelist to \textit{namnc4} in1443 \ np{xmlio\_server.def}.1444 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 1445 1434 serve the restart files. 1446 1435 This duplication is unfortunate but appropriate since, if using io\_servers, the domain sizes of 1447 1436 the individual files produced by the io\_server processes may be different to those produced by 1448 1437 the invidual processing regions and different chunking choices may be desired. 1449 1450 % ------------------------------------------------------------------------------------------------------------- 1451 % Tracer/Dynamics Trends 1452 % ------------------------------------------------------------------------------------------------------------- 1453 \section[Tracer/Dynamics trends (\texttt{namtrd})] 1454 {Tracer/Dynamics trends (\protect\ngn{namtrd})} 1438 1439 %% ================================================================================================= 1440 \section[Tracer/Dynamics trends (\forcode{&namtrd})]{Tracer/Dynamics trends (\protect\nam{trd}{trd})} 1455 1441 \label{sec:DIA_trd} 1456 1442 1457 %------------------------------------------namtrd---------------------------------------------------- 1458 1459 \nlst{namtrd} 1460 %------------------------------------------------------------------------------------------------------------- 1443 \begin{listing} 1444 \nlst{namtrd} 1445 \caption{\forcode{&namtrd}} 1446 \label{lst:namtrd} 1447 \end{listing} 1461 1448 1462 1449 Each trend of the dynamics and/or temperature and salinity time evolution equations can be send to 1463 1450 \mdl{trddyn} and/or \mdl{trdtra} modules (see TRD directory) just after their computation 1464 (\ie at the end of each $dyn\cdots.F90$ and/or $tra\cdots.F90$routines).1465 This capability is controlled by options offered in \n gn{namtrd} namelist.1466 Note that the output are done with xIOS, and therefore the \key{IOM} is required.1467 1468 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.}: 1469 1456 1470 1457 \begin{description} 1471 \item[\np{ln\_glo\_trd}]: 1472 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 1473 1459 the momentum and tracer equations is performed. 1474 1460 This also includes a check of $T^2$, $S^2$, $\tfrac{1}{2} (u^2+v2)$, 1475 1461 and potential energy time evolution equations properties; 1476 \item[\np{ln\_dyn\_trd}]: 1477 each 3D trend of the evolution of the two momentum components is output; 1478 \item[\np{ln\_dyn\_mxl}]: 1479 each 3D trend of the evolution of the two momentum components averaged over the mixed layer is output; 1480 \item[\np{ln\_vor\_trd}]: 1481 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, 1482 1465 then the curl is computed to obtain the barotropic vorticity tendencies which are output; 1483 \item[\np{ln\_KE\_trd}] : 1484 each 3D trend of the Kinetic Energy equation is output; 1485 \item[\np{ln\_tra\_trd}]: 1486 each 3D trend of the evolution of temperature and salinity is output; 1487 \item[\np{ln\_tra\_mxl}]: 1488 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; 1489 1469 \end{description} 1490 1470 1491 Note that the mixed layer tendency diagnostic can also be used on biogeochemical models via 1492 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. 1493 1473 1494 1474 \textbf{Note that} in the current version (v3.6), many changes has been introduced but not fully tested. 1495 In particular, options associated with \np{ln\_dyn\_mxl}, \np{ln\_vor\_trd}, and \np{ln\_tra\_mxl} are not working, 1496 and none of the options have been tested with variable volume (\ie \key{vvl} defined). 1497 1498 % ------------------------------------------------------------------------------------------------------------- 1499 % On-line Floats trajectories 1500 % ------------------------------------------------------------------------------------------------------------- 1501 \section[FLO: On-Line Floats trajectories (\texttt{\textbf{key\_floats}})] 1502 {FLO: On-Line Floats trajectories (\protect\key{floats})} 1503 \label{sec:FLO} 1504 %--------------------------------------------namflo------------------------------------------------------- 1505 1506 \nlst{namflo} 1507 %-------------------------------------------------------------------------------------------------------------- 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} 1508 1487 1509 1488 The on-line computation of floats advected either by the three dimensional velocity field or constraint to 1510 1489 remain at a given depth ($w = 0$ in the computation) have been introduced in the system during the CLIPPER project. 1511 Options are defined by \n gn{namflo} namelisvariables.1490 Options are defined by \nam{flo}{flo} namelist variables. 1512 1491 The algorithm used is based either on the work of \cite{blanke.raynaud_JPO97} (default option), 1513 or on a $4^th$ Runge-Hutta algorithm (\np {ln\_flork4}\forcode{ = .true.}).1492 or on a $4^th$ Runge-Hutta algorithm (\np[=.true.]{ln_flork4}{ln\_flork4}). 1514 1493 Note that the \cite{blanke.raynaud_JPO97} algorithm have the advantage of providing trajectories which 1515 1494 are consistent with the numeric of the code, so that the trajectories never intercept the bathymetry. 1516 1495 1496 %% ================================================================================================= 1517 1497 \subsubsection{Input data: initial coordinates} 1518 1498 1519 1499 Initial coordinates can be given with Ariane Tools convention 1520 (IJK coordinates, (\np {ln\_ariane}\forcode{ = .true.}) ) or with longitude and latitude.1521 1522 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}. 1523 1503 Its format is: \\ 1524 { \scriptsize \texttt{I J K nisobfl itrashitrash}}1504 { \texttt{I J K nisobfl itrash}} 1525 1505 1526 1506 \noindent with: … … 1528 1508 - I,J,K : indexes of initial position 1529 1509 1530 - 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 1531 1511 1532 1512 - itrash : set to zero; it is a dummy variable to respect Ariane Tools convention … … 1534 1514 \noindent Example: \\ 1535 1515 \noindent 1536 { \scriptsize1516 { 1537 1517 \texttt{ 1538 1518 100.00000 90.00000 -1.50000 1.00000 0.00000 \\ … … 1545 1525 In the other case (longitude and latitude), input filename is init\_float. 1546 1526 Its format is: \\ 1547 { \scriptsize\texttt{Long Lat depth nisobfl ngrpfl itrash}}1527 { \texttt{Long Lat depth nisobfl ngrpfl itrash}} 1548 1528 1549 1529 \noindent with: … … 1559 1539 \noindent Example: \\ 1560 1540 \noindent 1561 { \scriptsize1541 { 1562 1542 \texttt{ 1563 1543 20.0 0.0 0.0 0 1 1 \\ … … 1568 1548 } \\ 1569 1549 1570 \np{jpnfl} is the total number of floats during the run. 1571 When initial positions are read in a restart file (\np{ln\_rstflo}\forcode{ = .true.} ), 1572 \np{jpnflnewflo} can be added in the initialization file. 1573 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 %% ================================================================================================= 1574 1555 \subsubsection{Output data} 1575 1556 1576 \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 1577 1558 creation of the float restart file. 1578 1559 1579 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}). 1580 1561 In that case, output filename is trajec\_float. 1581 1562 1582 Another possiblity of writing format is Netcdf (\np{ln\_flo\_ascii}\forcode{ = .false.}). 1583 There are 2 possibilities: 1584 1585 - 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. 1586 1565 Here it is an example of specification to put in files description section: 1587 1566 … … 1600 1579 \end{xmllines} 1601 1580 1602 - if (\key{iomput}) is not used, a file called \ifile{trajec\_float} will be created by IOIPSL library. 1603 1604 See also \href{http://stockage.univ-brest.fr/~grima/Ariane/}{here} the web site describing the off-line use of 1605 this marvellous diagnostic tool. 1606 1607 % ------------------------------------------------------------------------------------------------------------- 1608 % Harmonic analysis of tidal constituents 1609 % ------------------------------------------------------------------------------------------------------------- 1610 \section[Harmonic analysis of tidal constituents (\texttt{\textbf{key\_diaharm}})] 1611 {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})} 1612 1583 \label{sec:DIA_diag_harm} 1613 1584 1614 %------------------------------------------namdia_harm---------------------------------------------------- 1615 % 1616 \nlst{nam_diaharm} 1617 %---------------------------------------------------------------------------------------------------------- 1585 \begin{listing} 1586 \nlst{nam_diaharm} 1587 \caption{\forcode{&nam_diaharm}} 1588 \label{lst:nam_diaharm} 1589 \end{listing} 1618 1590 1619 1591 A module is available to compute the amplitude and phase of tidal waves. 1620 1592 This on-line Harmonic analysis is actived with \key{diaharm}. 1621 1593 1622 Some parameters are available in namelist \n gn{namdia\_harm}:1623 1624 - \np{nit000 \_han} is the first time step used for harmonic analysis1625 1626 - \np{nitend \_han} is the last time step used for harmonic analysis1627 1628 - \np{nstep \_han} is the time step frequency for harmonic analysis1629 1630 - \np{nb\_ana} is the number of harmonics to analyse1631 1632 - \np{tname} is an array with names of tidal constituents to analyse1633 1634 \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. 1635 1607 The restart capability is not implemented. 1636 1608 … … 1653 1625 We obtain in output $C_{j}$ and $S_{j}$ for each tidal wave. 1654 1626 1655 % ------------------------------------------------------------------------------------------------------------- 1656 % Sections transports 1657 % ------------------------------------------------------------------------------------------------------------- 1658 \section[Transports across sections (\texttt{\textbf{key\_diadct}})] 1659 {Transports across sections (\protect\key{diadct})} 1627 %% ================================================================================================= 1628 \section[Transports across sections (\texttt{\textbf{key\_diadct}})]{Transports across sections (\protect\key{diadct})} 1660 1629 \label{sec:DIA_diag_dct} 1661 1630 1662 %------------------------------------------namdct---------------------------------------------------- 1663 1664 \nlst{namdct} 1665 %------------------------------------------------------------------------------------------------------------- 1631 \begin{listing} 1632 \nlst{nam_diadct} 1633 \caption{\forcode{&nam_diadct}} 1634 \label{lst:nam_diadct} 1635 \end{listing} 1666 1636 1667 1637 A module is available to compute the transport of volume, heat and salt through sections. … … 1669 1639 1670 1640 Each section is defined by the coordinates of its 2 extremities. 1671 The pathways between them are contructed using tools which can be found in \texttt{ NEMOGCM/TOOLS/SECTIONS\_DIADCT}1672 and are written in a binary file \texttt{section\_ijglobal.diadct \_ORCA2\_LIM} which is later read in by1673 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. 1674 1644 1675 1645 The on-line transports module creates three output ascii files: … … 1681 1651 - \texttt{salt\_transport} for salt transports (unit: $10^{9}Kg s^{-1}$) \\ 1682 1652 1683 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 1684 1654 they are averaged, as well as the level of output for debugging: 1685 \np{nn\_dct} : frequency of instantaneous transports computing 1686 \np{nn\_dctwri}: frequency of writing ( mean of instantaneous transports ) 1687 \np{nn\_debug} : debugging of the section 1688 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 %% ================================================================================================= 1689 1660 \subsubsection{Creating a binary file containing the pathway of each section} 1690 1661 1691 In \texttt{ NEMOGCM/TOOLS/SECTIONS\_DIADCT/run},1662 In \texttt{tools/SECTIONS\_DIADCT/run}, 1692 1663 the file \textit{ {list\_sections.ascii\_global}} contains a list of all the sections that are to be computed 1693 1664 (this list of sections is based on MERSEA project metrics). … … 1696 1667 1697 1668 Each section is defined by: \\ 1698 \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}} \\ 1699 1670 with: 1700 1671 … … 1703 1674 - \texttt{long2 lat2}, coordinates of the second extremity of the section; 1704 1675 1705 - \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); 1706 1677 1707 1678 - \texttt{okstrpond} to compute heat and salt transports, \texttt{nostrpond} if no; … … 1713 1684 1714 1685 \noindent If nclass $\neq$ 0, the next lines contain the class type and the nclass bounds: \\ 1715 { \scriptsize1686 { 1716 1687 \texttt{ 1717 1688 long1 lat1 long2 lat2 nclass (ok/no)strpond (no)ice section\_name \\ … … 1736 1707 1737 1708 - \texttt{zsigp} for potential density classes \\ 1738 1709 1739 1710 The script \texttt{job.ksh} computes the pathway for each section and creates a binary file 1740 \texttt{section\_ijglobal.diadct \_ORCA2\_LIM} which is read byNEMO. \\1711 \texttt{section\_ijglobal.diadct} which is read by \NEMO. \\ 1741 1712 1742 1713 It is possible to use this tools for new configuations: \texttt{job.ksh} has to be updated with … … 1746 1717 and the ATL\_Cuba\_Florida with 4 temperature clases (5 class bounds), are shown: \\ 1747 1718 \noindent 1748 { \scriptsize1719 { 1749 1720 \texttt{ 1750 1721 -68. -54.5 -60. -64.7 00 okstrpond noice ACC\_Drake\_Passage \\ … … 1758 1729 } 1759 1730 1731 %% ================================================================================================= 1760 1732 \subsubsection{To read the output files} 1761 1733 1762 1734 The output format is: \\ 1763 { \scriptsize1735 { 1764 1736 \texttt{ 1765 1737 date, time-step number, section number, \\ … … 1783 1755 1784 1756 \begin{table} 1785 \scriptsize1786 1757 \begin{tabular}{|l|l|l|l|l|} 1787 1758 \hline … … 1797 1768 \end{table} 1798 1769 1799 % ================================================================ 1800 % Steric effect in sea surface height 1801 % ================================================================ 1770 %% ================================================================================================= 1802 1771 \section{Diagnosing the steric effect in sea surface height} 1803 1772 \label{sec:DIA_steric} 1804 1805 1773 1806 1774 Changes in steric sea level are caused when changes in the density of the water column imply an expansion or … … 1824 1792 1825 1793 Let denote 1826 $\mathcal{M}$ the total mass of liquid seawater ($\mathcal{M} = \int_D \rho dv$), 1827 $\mathcal{V}$ the total volume of seawater ($\mathcal{V} = \int_D dv$), 1828 $\mathcal{A}$ the total surface of the ocean ($\mathcal{A} = \int_S ds$), 1829 $\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 1830 1798 ($\bar{\rho} = 1/\mathcal{V} \int_D \rho \,dv$), and 1831 $\bar{\eta}$ the global mean sea level 1799 $\bar{\eta}$ the global mean sea level 1832 1800 ($\bar{\eta} = 1/\mathcal{A} \int_S \eta \,ds$). 1833 1801 … … 1839 1807 \mathcal{V} &= \mathcal{A} \;\bar{\eta} 1840 1808 \end{split} 1841 \label{eq: MV_nBq}1809 \label{eq:DIA_MV_nBq} 1842 1810 \end{equation} 1843 1811 … … 1847 1815 \frac{1}{e_3} \partial_t ( e_3\,\rho) + \nabla( \rho \, \textbf{U} ) 1848 1816 = \left. \frac{\textit{emp}}{e_3}\right|_\textit{surface} 1849 \label{eq: Co_nBq}1817 \label{eq:DIA_Co_nBq} 1850 1818 \end{equation} 1851 1819 1852 1820 where $\rho$ is the \textit{in situ} density, and \textit{emp} the surface mass exchanges with the other media of 1853 1821 the Earth system (atmosphere, sea-ice, land). 1854 Its global averaged leads to the total mass change 1822 Its global averaged leads to the total mass change 1855 1823 1856 1824 \begin{equation} 1857 1825 \partial_t \mathcal{M} = \mathcal{A} \;\overline{\textit{emp}} 1858 \label{eq: Mass_nBq}1826 \label{eq:DIA_Mass_nBq} 1859 1827 \end{equation} 1860 1828 1861 1829 where $\overline{\textit{emp}} = \int_S \textit{emp}\,ds$ is the net mass flux through the ocean surface. 1862 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 1863 1831 the evolution equation of the mean sea level 1864 1832 … … 1866 1834 \partial_t \bar{\eta} = \frac{\overline{\textit{emp}}}{ \bar{\rho}} 1867 1835 - \frac{\mathcal{V}}{\mathcal{A}} \;\frac{\partial_t \bar{\rho} }{\bar{\rho}} 1868 \label{eq: ssh_nBq}1836 \label{eq:DIA_ssh_nBq} 1869 1837 \end{equation} 1870 1838 1871 The first term in equation \autoref{eq: ssh_nBq} alters sea level by adding or subtracting mass from the ocean.1872 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. 1873 1841 1874 1842 In a Boussinesq fluid, $\rho$ is replaced by $\rho_o$ in all the equation except when $\rho$ appears multiplied by 1875 the gravity (\ie in the hydrostatic balance of the primitive Equations).1876 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: 1877 1845 1878 1846 \[ 1879 1847 \frac{1}{e_3} \partial_t ( e_3 ) + \nabla( \textbf{U} ) = \left. \frac{\textit{emp}}{\rho_o \,e_3}\right|_ \textit{surface} 1880 % \label{eq: Co_Bq}1848 % \label{eq:DIA_Co_Bq} 1881 1849 \] 1882 1850 … … 1885 1853 \[ 1886 1854 \partial_t \mathcal{V} = \mathcal{A} \;\frac{\overline{\textit{emp}}}{\rho_o} 1887 % \label{eq: V_Bq}1855 % \label{eq:DIA_V_Bq} 1888 1856 \] 1889 1857 … … 1894 1862 1895 1863 Nevertheless, following \citep{greatbatch_JGR94}, the steric effect on the volume can be diagnosed by 1896 considering the mass budget of the ocean. 1864 considering the mass budget of the ocean. 1897 1865 The apparent changes in $\mathcal{M}$, mass of the ocean, which are not induced by surface mass flux 1898 1866 must be compensated by a spatially uniform change in the mean sea level due to expansion/contraction of the ocean … … 1904 1872 \begin{equation} 1905 1873 \mathcal{M}_o = \mathcal{M} + \rho_o \,\eta_s \,\mathcal{A} 1906 \label{eq: M_Bq}1874 \label{eq:DIA_M_Bq} 1907 1875 \end{equation} 1908 1876 … … 1910 1878 is converted into a mean change in sea level. 1911 1879 Introducing the total density anomaly, $\mathcal{D}= \int_D d_a \,dv$, 1912 where $d_a = (\rho -\rho_o ) / \rho_o$ is the density anomaly used in \NEMO (cf. \autoref{subsec:TRA_eos})1913 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: 1914 1882 1915 1883 \begin{equation} 1916 1884 \eta_s = - \frac{1}{\mathcal{A}} \mathcal{D} 1917 \label{eq: steric_Bq}1885 \label{eq:DIA_steric_Bq} 1918 1886 \end{equation} 1919 1887 1920 1888 The above formulation of the steric height of a Boussinesq ocean requires four remarks. 1921 1889 First, one can be tempted to define $\rho_o$ as the initial value of $\mathcal{M}/\mathcal{V}$, 1922 \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. 1923 1891 We do not recommend that. 1924 1892 Indeed, in this case $\rho_o$ depends on the initial state of the ocean. … … 1934 1902 does not change when the sea level is changing as it is the case in all global ocean GCMs 1935 1903 (wetting and drying of grid point is not allowed). 1936 1937 Third, the discretisation of \autoref{eq: steric_Bq} depends on the type of free surface which is considered.1938 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 1939 1907 1940 1908 \[ 1941 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} } 1942 % \label{eq: discrete_steric_Bq_nfs}1910 % \label{eq:DIA_discrete_steric_Bq_nfs} 1943 1911 \] 1944 1912 … … 1950 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 } 1951 1919 { \sum_{i,\,j,\,k} e_{1t}e_{2t}e_{3t} + \sum_{i,\,j} e_{1t}e_{2t} \eta } 1952 % \label{eq: discrete_steric_Bq_fs}1920 % \label{eq:DIA_discrete_steric_Bq_fs} 1953 1921 \] 1954 1922 … … 1959 1927 so that there are no associated ocean currents. 1960 1928 Hence, the dynamically relevant sea level is the effective sea level, 1961 \ie the sea level as if sea ice (and snow) were converted to liquid seawater \citep{campin.marshall.ea_OM08}.1962 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 1963 1931 ice and ocean. 1964 1932 Therefore the model effective sea level is always given by $\eta + \eta_s$, whether or not there is sea ice present. … … 1970 1938 \[ 1971 1939 \eta_s = - \frac{1}{\mathcal{A}} \int_D d_a(T,S_o,p_o) \,dv 1972 % \label{eq: thermosteric_Bq}1940 % \label{eq:DIA_thermosteric_Bq} 1973 1941 \] 1974 1942 1975 1943 where $S_o$ and $p_o$ are the initial salinity and pressure, respectively. 1976 1944 1977 Both steric and thermosteric sea level are computed in \mdl{diaar5} which needs the \key{diaar5} defined to 1978 be called. 1979 1980 % ------------------------------------------------------------------------------------------------------------- 1981 % Other Diagnostics 1982 % ------------------------------------------------------------------------------------------------------------- 1983 \section[Other diagnostics (\texttt{\textbf{key\_diahth}}, \texttt{\textbf{key\_diaar5}})] 1984 {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} 1985 1949 \label{sec:DIA_diag_others} 1986 1950 … … 1988 1952 The available ready-to-add diagnostics modules can be found in directory DIA. 1989 1953 1990 \subsection[Depth of various quantities (\textit{diahth.F90})] 1991 {Depth of various quantities (\protect\mdl{diahth})}1954 %% ================================================================================================= 1955 \subsection[Depth of various quantities (\textit{diahth.F90})]{Depth of various quantities (\protect\mdl{diahth})} 1992 1956 1993 1957 Among the available diagnostics the following ones are obtained when defining the \key{diahth} CPP key: … … 2001 1965 - the depth of the thermocline (maximum of the vertical temperature gradient) (\mdl{diahth}) 2002 1966 2003 % ----------------------------------------------------------- 2004 % Poleward heat and salt transports 2005 % ----------------------------------------------------------- 2006 2007 \subsection[Poleward heat and salt transports (\textit{diaptr.F90})] 2008 {Poleward heat and salt transports (\protect\mdl{diaptr})} 2009 2010 %------------------------------------------namptr----------------------------------------- 2011 2012 \nlst{namptr} 2013 %----------------------------------------------------------------------------------------- 2014 2015 The poleward heat and salt transports, their advective and diffusive component, 2016 and the meriodional stream function can be computed on-line in \mdl{diaptr} \np{ln\_diaptr} to true 2017 (see the \textit{\ngn{namptr} } namelist below). 2018 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, 2019 1999 Pacific and Indo-Pacific Oceans (defined north of 30\deg{S}) as well as for the World Ocean. 2020 2000 The sub-basin decomposition requires an input file (\ifile{subbasins}) which contains three 2D mask arrays, 2021 the Indo-Pacific mask been deduced from the sum of the Indian and Pacific mask (\autoref{fig:mask_subasins}). 2022 2023 %>>>>>>>>>>>>>>>>>>>>>>>>>>>> 2024 \begin{figure}[!t] 2025 \begin{center} 2026 \includegraphics[width=\textwidth]{Fig_mask_subasins} 2027 \caption{ 2028 \protect\label{fig:mask_subasins} 2029 Decomposition of the World Ocean (here ORCA2) into sub-basin used in to 2030 compute the heat and salt transports as well as the meridional stream-function: 2031 Atlantic basin (red), Pacific basin (green), Indian basin (bleue), Indo-Pacific basin (bleue+green). 2032 Note that semi-enclosed seas (Red, Med and Baltic seas) as well as Hudson Bay are removed from the sub-basins. 2033 Note also that the Arctic Ocean has been split into Atlantic and Pacific basins along the North fold line. 2034 } 2035 \end{center} 2036 \end{figure} 2037 %>>>>>>>>>>>>>>>>>>>>>>>>>>>> 2038 2039 % ----------------------------------------------------------- 2040 % CMIP specific diagnostics 2041 % ----------------------------------------------------------- 2042 \subsection[CMIP specific diagnostics (\textit{diaar5.F90})] 2043 {CMIP specific diagnostics (\protect\mdl{diaar5})} 2044 2045 A series of diagnostics has been added in the \mdl{diaar5}. 2046 They corresponds to outputs that are required for AR5 simulations (CMIP5) 2047 (see also \autoref{sec:DIA_steric} for one of them). 2048 Activating those outputs requires to define the \key{diaar5} CPP key. 2049 2050 % ----------------------------------------------------------- 2051 % 25 hour mean and hourly Surface, Mid and Bed 2052 % ----------------------------------------------------------- 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 %% ================================================================================================= 2053 2010 \subsection{25 hour mean output for tidal models} 2054 2011 2055 %------------------------------------------nam_dia25h------------------------------------- 2056 2057 \nlst{nam_dia25h} 2058 %----------------------------------------------------------------------------------------- 2012 \begin{listing} 2013 \nlst{nam_dia25h} 2014 \caption{\forcode{&nam_dia25h}} 2015 \label{lst:nam_dia25h} 2016 \end{listing} 2059 2017 2060 2018 A module is available to compute a crudely detided M2 signal by obtaining a 25 hour mean. … … 2063 2021 This diagnostic is actived with the logical $ln\_dia25h$. 2064 2022 2065 % ----------------------------------------------------------- 2066 % Top Middle and Bed hourly output 2067 % ----------------------------------------------------------- 2023 %% ================================================================================================= 2068 2024 \subsection{Top middle and bed hourly output} 2069 2025 2070 %------------------------------------------nam_diatmb----------------------------------------------------- 2071 2072 \nlst{nam_diatmb} 2073 %---------------------------------------------------------------------------------------------------------- 2026 \begin{listing} 2027 \nlst{nam_diatmb} 2028 \caption{\forcode{&nam_diatmb}} 2029 \label{lst:nam_diatmb} 2030 \end{listing} 2074 2031 2075 2032 A module is available to output the surface (top), mid water and bed diagnostics of a set of standard variables. … … 2079 2036 This diagnostic is actived with the logical $ln\_diatmb$. 2080 2037 2081 % ----------------------------------------------------------- 2082 % Courant numbers 2083 % ----------------------------------------------------------- 2038 %% ================================================================================================= 2084 2039 \subsection{Courant numbers} 2085 2040 … … 2089 2044 \[ 2090 2045 C_u = |u|\frac{\rdt}{e_{1u}}, \quad C_v = |v|\frac{\rdt}{e_{2v}}, \quad C_w = |w|\frac{\rdt}{e_{3w}} 2091 % \label{eq: CFL}2046 % \label{eq:DIA_CFL} 2092 2047 \] 2093 2048 … … 2098 2053 Values greater than 1 indicate that information is propagated across more than one grid cell in a single time step. 2099 2054 2100 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. 2101 2056 The diagnostics will be written out to an ascii file named cfl\_diagnostics.ascii. 2102 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 … … 2104 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 2105 2060 with the coordinates of each. 2106 The maximum values from the run are also copied to the ocean.output file. 2107 2108 % ================================================================ 2109 2110 \biblio 2111 2112 \pindex 2061 The maximum values from the run are also copied to the ocean.output file. 2062 2063 \subinc{\input{../../global/epilogue}} 2113 2064 2114 2065 \end{document}
Note: See TracChangeset
for help on using the changeset viewer.