Changeset 2541 for trunk/DOC/TexFiles/Chapters/Chap_MISC.tex
- Timestamp:
- 2011-01-09T05:55:20+01:00 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/DOC/TexFiles/Chapters/Chap_MISC.tex
r2414 r2541 193 193 a more clever choice. 194 194 195 196 % ================================================================ 197 % Accuracy and Reproducibility 198 % ================================================================ 199 \section{Accuracy and Reproducibility (\mdl{lib\_fortran})} 200 \label{MISC_fortran} 201 202 \subsection{Issues with intrinsinc SIGN function (\key{nosignedzero})} 203 \label{MISC_sign} 204 205 The SIGN(A, B) is the \textsc {Fortran} intrinsic function delivers the magnitude 206 of A with the sign of B. For example, SIGN(-3.0,2.0) has the value 3.0. 207 The problematic case is when the second argument is zero, because, on platforms 208 that support IEEE arithmetic, zero is actually a signed number. 209 There is a positive zero and a negative zero. 210 211 In \textsc{Fortran}~90, the processor was required always to deliver a positive result for SIGN(A, B) 212 if B was zero. Nevertheless, in \textsc{Fortran}~95, the processor is allowed to do the correct thing 213 and deliver ABS(A) when B is a positive zero and -ABS(A) when B is a negative zero. 214 This change in the specification becomes apparent only when B is of type real, and is zero, 215 and the processor is capable of distinguishing between positive and negative zero, 216 and B is negative real zero. Then SIGN delivers a negative result where, under \textsc{Fortran}~90 217 rules, it used to return a positive result. 218 This change may be especially sensitive for the ice model, so we overwrite the intrinsinc 219 function with our own function simply performing : \\ 220 \verb? IF( B >= 0.e0 ) THEN ; SIGN(A,B) = ABS(A) ? \\ 221 \verb? ELSE ; SIGN(A,B) =-ABS(A) ? \\ 222 \verb? ENDIF ? \\ 223 This feature can be found in \mdl{lib\_fortran} module and is effective when \key{nosignedzero} 224 is defined. We use a CPP key as the overwritting of a intrinsic function can present 225 performance issues with some computers/compilers. 226 227 228 \subsection{MPP reproducibility} 229 \label{MISC_glosum} 230 231 The numerical reproducibility of simulations on distributed memory parallel computers 232 is a critical issue. In particular, within NEMO global summation of distributed arrays 233 is most susceptible to rounding errors, and their propagation and accumulation cause 234 uncertainty in final simulation reproducibility on different numbers of processors. 235 To avoid so, based on \citet{He_Ding_JSC01} review of different technics, 236 we use a so called self-compensated summation method. The idea is to estimate 237 the roundoff error, store it in a buffer, and then add it back in the next addition. 238 239 Suppose we need to calculate $b = a_1 + a_2 + a_3$. The following algorithm 240 will allow to split the sum in two ($sum_1 = a_{1} + a_{2}$ and $b = sum_2 = sum_1 + a_3$) 241 with exactly the same rounding errors as the sum performed all at once. 242 \begin{align*} 243 sum_1 \ \ &= a_1 + a_2 \\ 244 error_1 &= a_2 + ( a_1 - sum_1 ) \\ 245 sum_2 \ \ &= sum_1 + a_3 + error_1 \\ 246 error_2 &= a_3 + error_1 + ( sum_1 - sum_2 ) \\ 247 b \qquad \ &= sum_2 \\ 248 \end{align*} 249 This feature can be found in \mdl{lib\_fortran} module and is effective when \key{mpp\_rep}. 250 In that case, all calls to glob\_sum function (summation over the entire basin excluding 251 duplicated rows and columns due to cyclic or north fold boundary condition as well as 252 overlap MPP areas). 253 Note this implementation may be sensitive to the optimization level. 254 255 195 256 % ================================================================ 196 257 % Model optimisation, Control Print and Benchmark … … 202 263 %-------------------------------------------------------------------------------------------------------------- 203 264 204 %\gmcomment{why not make these bullets into subsections?}265 \gmcomment{why not make these bullets into subsections?} 205 266 206 267 … … 267 328 It is a fast and rather easy method to use; which are attractive features for a large 268 329 number of ocean situations (variable bottom topography, complex coastal geometry, 269 variable grid spacing, islands,open or cyclic boundaries, etc ...). It does not require330 variable grid spacing, open or cyclic boundaries, etc ...). It does not require 270 331 a search for an optimal parameter as in the SOR method. However, the SOR has 271 332 been retained because it is a linear solver, which is a very useful property when … … 284 345 \end{aligned} 285 346 \end{equation} 286 the five-point finite difference equation \eqref{Eq_psi_total} can be rewritten as:347 the resulting five-point finite difference equation is given by: 287 348 \begin{equation} \label{Eq_solmat} 288 349 \begin{split} … … 480 541 481 542 % ================================================================ 482 % Diagnostics 483 % ================================================================ 484 \section{Diagnostics (DIA, IOM, TRD, FLO)} 485 \label{MISC_diag} 486 487 % ------------------------------------------------------------------------------------------------------------- 488 % Standard Model Output 489 % ------------------------------------------------------------------------------------------------------------- 490 \subsection{Model Output (default or \key{iomput} or \key{dimgout} or \key{netcdf4})} 491 \label{MISC_iom} 492 493 %to be updated with Seb documentation on the IO 494 495 The model outputs are of three types: the restart file, the output listing, 496 and the output file(s). The restart file is used internally by the code when 497 the user wants to start the model with initial conditions defined by a 498 previous simulation. It contains all the information that is necessary in 499 order for there to be no changes in the model results (even at the computer 500 precision) between a run performed with several restarts and the same run 501 performed in one step. It should be noted that this requires that the restart file 502 contain two consecutive time steps for all the prognostic variables, and 503 that it is saved in the same binary format as the one used by the computer 504 that is to read it (in particular, 32 bits binary IEEE format must not be used for 505 this file). The output listing and file(s) are predefined but should be checked 506 and eventually adapted to the user's needs. The output listing is stored in 507 the $ocean.output$ file. The information is printed from within the code on the 508 logical unit $numout$. To locate these prints, use the UNIX command 509 "\textit{grep -i numout}" in the source code directory. 510 511 In the standard configuration, the user will find the model results in 512 NetCDF files containing mean values (or instantaneous values if 513 \key{diainstant} is defined) for every time-step where output is demanded. 514 These outputs are defined in the \mdl{diawri} module. 515 When defining \key{dimgout}, the output are written in DIMG format, 516 an IEEE output format. 517 518 Since version 3.3, support for NetCDF4 chunking and (loss-less) compression has 519 been included. These options build on the standard NetCDF output and allow 520 the user control over the size of the chunks via namelist settings. Chunking 521 and compression can lead to significant reductions in file sizes for a small 522 runtime overhead. For a fuller discussion on chunking and other performance 523 issues the reader is referred to the NetCDF4 documentation found 524 \href{http://www.unidata.ucar.edu/software/netcdf/docs/netcdf.html#Chunking}{here}. 525 526 The new features are only available when the code has been linked with a 527 NetCDF4 library (version 4.1 onwards, recommended) which has been built 528 with HDF5 support (version 1.8.4 onwards, recommended). Datasets created 529 with chunking and compression are not backwards compatible with NetCDF3 530 "classic" format but most analysis codes can be relinked simply with the 531 new libraries and will then read both NetCDF3 and NetCDF4 files. NEMO 532 executables linked with NetCDF4 libraries can be made to produce NetCDF3 533 files by setting the \np{ln\_nc4zip} logical to false in the \np{namnc4} 534 namelist: 535 536 %------------------------------------------namnc4---------------------------------------------------- 537 \namdisplay{namnc4} 538 %------------------------------------------------------------------------------------------------------------- 539 540 If \key{netcdf4} has not been defined, these namelist parameters are not read. 541 In this case, \np{ln\_nc4zip} is set false and dummy routines for a few 542 NetCDF4-specific functions are defined. These functions will not be used but 543 need to be included so that compilation is possible with NetCDF3 libraries. 544 545 When using NetCDF4 libraries, \key{netcdf4} should be defined even if the 546 intention is to create only NetCDF3-compatible files. This is necessary to 547 avoid duplication between the dummy routines and the actual routines present 548 in the library. Most compilers will fail at compile time when faced with 549 such duplication. Thus when linking with NetCDF4 libraries the user must 550 define \key{netcdf4} and control the type of NetCDF file produced via the 551 namelist parameter. 552 553 Chunking and compression is applied only to 4D fields and there is no 554 advantage in chunking across more than one time dimension since previously 555 written chunks would have to be read back and decompressed before being 556 added to. Therefore, user control over chunk sizes is provided only for the 557 three space dimensions. The user sets an approximate number of chunks along 558 each spatial axis. The actual size of the chunks will depend on global domain 559 size for mono-processors or, more likely, the local processor domain size for 560 distributed processing. The derived values are subject to practical minimum 561 values (to avoid wastefully small chunk sizes) and cannot be greater than the 562 domain size in any dimension. The algorithm used is: 563 564 \begin{alltt} {{\scriptsize 565 \begin{verbatim} 566 ichunksz(1) = MIN( idomain_size,MAX( (idomain_size-1)/nn_nchunks_i + 1 ,16 ) ) 567 ichunksz(2) = MIN( jdomain_size,MAX( (jdomain_size-1)/nn_nchunks_j + 1 ,16 ) ) 568 ichunksz(3) = MIN( kdomain_size,MAX( (kdomain_size-1)/nn_nchunks_k + 1 , 1 ) ) 569 ichunksz(4) = 1 570 \end{verbatim} 571 }}\end{alltt} 572 573 \noindent As an example, setting: 574 \vspace{-20pt} 575 \begin{alltt} {{\scriptsize 576 \begin{verbatim} 577 nn_nchunks_i=4, nn_nchunks_j=4 and nn_nchunks_k=31 578 \end{verbatim} 579 }}\end{alltt} \vspace{-10pt} 580 581 \noindent for a standard ORCA2\_LIM configuration gives chunksizes of {\small\tt 46x38x1} 582 respectively in the mono-processor case (i.e. global domain of {\small\tt 182x149x31}). 583 An illustration of the potential space savings that NetCDF4 chunking and compression 584 provides is given in table \ref{Tab_NC4} which compares the results of two short 585 runs of the ORCA2\_LIM reference configuration with a 4x2 mpi partitioning. Note 586 the variation in the compression ratio achieved which reflects chiefly the dry to wet 587 volume ratio of each processing region. 588 589 %------------------------------------------TABLE---------------------------------------------------- 590 \begin{table} \begin{tabular}{lrrr} 591 Filename & NetCDF3 & NetCDF4 & Reduction\\ 592 &filesize & filesize & \% \\ 593 &(KB) & (KB) & \\ 594 ORCA2\_restart\_0000.nc & 16420 & 8860 & 47\%\\ 595 ORCA2\_restart\_0001.nc & 16064 & 11456 & 29\%\\ 596 ORCA2\_restart\_0002.nc & 16064 & 9744 & 40\%\\ 597 ORCA2\_restart\_0003.nc & 16420 & 9404 & 43\%\\ 598 ORCA2\_restart\_0004.nc & 16200 & 5844 & 64\%\\ 599 ORCA2\_restart\_0005.nc & 15848 & 8172 & 49\%\\ 600 ORCA2\_restart\_0006.nc & 15848 & 8012 & 50\%\\ 601 ORCA2\_restart\_0007.nc & 16200 & 5148 & 69\%\\ 602 ORCA2\_2d\_grid\_T\_0000.nc & 2200 & 1504 & 32\%\\ 603 ORCA2\_2d\_grid\_T\_0001.nc & 2200 & 1748 & 21\%\\ 604 ORCA2\_2d\_grid\_T\_0002.nc & 2200 & 1592 & 28\%\\ 605 ORCA2\_2d\_grid\_T\_0003.nc & 2200 & 1540 & 30\%\\ 606 ORCA2\_2d\_grid\_T\_0004.nc & 2200 & 1204 & 46\%\\ 607 ORCA2\_2d\_grid\_T\_0005.nc & 2200 & 1444 & 35\%\\ 608 ORCA2\_2d\_grid\_T\_0006.nc & 2200 & 1428 & 36\%\\ 609 ORCA2\_2d\_grid\_T\_0007.nc & 2200 & 1148 & 48\%\\ 610 ... & ... & ... & .. \\ 611 ORCA2\_2d\_grid\_W\_0000.nc & 4416 & 2240 & 50\%\\ 612 ORCA2\_2d\_grid\_W\_0001.nc & 4416 & 2924 & 34\%\\ 613 ORCA2\_2d\_grid\_W\_0002.nc & 4416 & 2512 & 44\%\\ 614 ORCA2\_2d\_grid\_W\_0003.nc & 4416 & 2368 & 47\%\\ 615 ORCA2\_2d\_grid\_W\_0004.nc & 4416 & 1432 & 68\%\\ 616 ORCA2\_2d\_grid\_W\_0005.nc & 4416 & 1972 & 56\%\\ 617 ORCA2\_2d\_grid\_W\_0006.nc & 4416 & 2028 & 55\%\\ 618 ORCA2\_2d\_grid\_W\_0007.nc & 4416 & 1368 & 70\%\\ 619 \end{tabular} 620 \caption{ \label{Tab_NC4} 621 Filesize comparison between NetCDF3 and NetCDF4 with chunking and compression} 622 \end{table} 623 %---------------------------------------------------------------------------------------------------- 624 625 Since version 3.2, an I/O server has been added which provides more 626 flexibility in the choice of the fields to be output as well as how the 627 writing work is distributed over the processors in massively parallel 628 computing. It is activated when \key{iomput} is defined. 629 630 When \key{iomput} is activated with \key{netcdf4} chunking and 631 compression parameters for fields produced via \np{iom\_put} calls are 632 set via an equivalent and identically named namelist to \np{namnc4} in 633 \np{xmlio\_server.def}. Typically this namelist serves the mean files 634 whilst the \np{ namnc4} in the main namelist file continues to serve the 635 restart files. This duplication is unfortunate but appropriate since, if 636 using io\_servers, the domain sizes of the individual files produced by the 637 io\_server processes may be different to those produced by the invidual 638 processing regions and different chunking choices may be desired. 639 { 640 641 % ------------------------------------------------------------------------------------------------------------- 642 % Tracer/Dynamics Trends 643 % ------------------------------------------------------------------------------------------------------------- 644 \subsection[Tracer/Dynamics Trends (TRD)] 645 {Tracer/Dynamics Trends (\key{trdmld}, \key{trdtra}, \key{trddyn}, \key{trdmld\_trc})} 646 \label{MISC_tratrd} 647 648 %------------------------------------------namtrd---------------------------------------------------- 649 \namdisplay{namtrd} 650 %------------------------------------------------------------------------------------------------------------- 651 652 When \key{trddyn} and/or \key{trddyn} CPP variables are defined, each 653 trend of the dynamics and/or temperature and salinity time evolution equations 654 is stored in three-dimensional arrays just after their computation ($i.e.$ at the end 655 of each $dyn\cdots.F90$ and/or $tra\cdots.F90$ routines). These trends are then 656 used in \mdl{trdmod} (see TRD directory) every \textit{nn\_trd } time-steps. 657 658 What is done depends on the CPP keys defined: 659 \begin{description} 660 \item[\key{trddyn}, \key{trdtra}] : a check of the basin averaged properties of the momentum 661 and/or tracer equations is performed ; 662 \item[\key{trdvor}] : a vertical summation of the moment tendencies is performed, 663 then the curl is computed to obtain the barotropic vorticity tendencies which are output ; 664 \item[\key{trdmld}] : output of the tracer tendencies averaged vertically 665 either over the mixed layer (\np{nn\_ctls}=0), 666 or over a fixed number of model levels (\np{nn\_ctls}$>$1 provides the number of level), 667 or over a spatially varying but temporally fixed number of levels (typically the base 668 of the winter mixed layer) read in \ifile{ctlsurf\_idx} (\np{nn\_ctls}=1). 669 \end{description} 670 671 The units in the output file can be changed using the \np{nn\_ucf} namelist parameter. 672 For example, in case of salinity tendency the units are given by PSU/s/\np{nn\_ucf}. 673 Setting \np{nn\_ucf}=86400 ($i.e.$ the number of second in a day) provides the tendencies in PSU/d. 674 675 When \key{trdmld} is defined, two time averaging procedure are proposed. 676 Setting \np{ln\_trdmld\_instant} to \textit{true}, a simple time averaging is performed, 677 so that the resulting tendency is the contribution to the change of a quantity between 678 the two instantaneous values taken at the extremities of the time averaging period. 679 Setting \np{ln\_trdmld\_instant} to \textit{false}, a double time averaging is performed, 680 so that the resulting tendency is the contribution to the change of a quantity between 681 two \textit{time mean} values. The later option requires the use of an extra file, \ifile{restart\_mld} 682 (\np{ln\_trdmld\_restart}=true), to restart a run. 683 684 685 Note that the mixed layer tendency diagnostic can also be used on biogeochemical models 686 via the \key{trdtrc} and \key{trdmld\_trc} CPP keys. 687 688 % ------------------------------------------------------------------------------------------------------------- 689 % On-line Floats trajectories 690 % ------------------------------------------------------------------------------------------------------------- 691 \subsection{On-line Floats trajectories (FLO) (\key{floats})} 692 \label{FLO} 693 %--------------------------------------------namflo------------------------------------------------------- 694 \namdisplay{namflo} 695 %-------------------------------------------------------------------------------------------------------------- 696 697 The on-line computation of floats advected either by the three dimensional velocity 698 field or constraint to remain at a given depth ($w = 0$ in the computation) have been 699 introduced in the system during the CLIPPER project. The algorithm used is based 700 either on the work of \cite{Blanke_Raynaud_JPO97} (default option), or on a $4^th$ 701 Runge-Hutta algorithm (\np{ln\_flork4}=true). Note that the \cite{Blanke_Raynaud_JPO97} 702 algorithm have the advantage of providing trajectories which are consistent with the 703 numeric of the code, so that the trajectories never intercept the bathymetry. 704 705 See also \href{http://stockage.univ-brest.fr/~grima/Ariane/}{here} the web site describing 706 the off-line use of this marvellous diagnostic tool. 707 708 % ------------------------------------------------------------------------------------------------------------- 709 % Other Diagnostics 710 % ------------------------------------------------------------------------------------------------------------- 711 \subsection{Other Diagnostics (\key{diahth}, \key{diaar5})} 712 \label{MISC_diag_others} 713 714 715 Aside from the standard model variables, other diagnostics can be computed 716 on-line. The available ready-to-add diagnostics routines can be found in directory DIA. 717 Among the available diagnostics the following ones are obtained when defining 718 the \key{diahth} CPP key: 719 720 - the mixed layer depth (based on a density criterion, \citet{de_Boyer_Montegut_al_JGR04}) (\mdl{diahth}) 721 722 - the turbocline depth (based on a turbulent mixing coefficient criterion) (\mdl{diahth}) 723 724 - the depth of the 20\deg C isotherm (\mdl{diahth}) 725 726 - the depth of the thermocline (maximum of the vertical temperature gradient) (\mdl{diahth}) 727 728 The poleward heat and salt transports, their advective and diffusive component, and 729 the meriodional stream function can be computed on-line in \mdl{diaptr} by setting 730 \np{ln\_diaptr} to true (see the \textit{namptr} namelist below). 731 When \np{ln\_subbas}~=~true, transports and stream function are computed 732 for the Atlantic, Indian, Pacific and Indo-Pacific Oceans (defined north of 30\deg S) 733 as well as for the World Ocean. The sub-basin decomposition requires an input file 734 (\ifile{subbasins}) which contains three 2D mask arrays, the Indo-Pacific mask 735 been deduced from the sum of the Indian and Pacific mask (Fig~\ref{Fig_mask_subasins}). 736 737 %------------------------------------------namptr---------------------------------------------------- 738 \namdisplay{namptr} 739 %------------------------------------------------------------------------------------------------------------- 740 %>>>>>>>>>>>>>>>>>>>>>>>>>>>> 741 \begin{figure}[!t] \begin{center} 742 \includegraphics[width=1.0\textwidth]{./TexFiles/Figures/Fig_mask_subasins.pdf} 743 \caption{ \label{Fig_mask_subasins} 744 Decomposition of the World Ocean (here ORCA2) into sub-basin used in to compute 745 the heat and salt transports as well as the meridional stream-function: Atlantic basin (red), 746 Pacific basin (green), Indian basin (bleue), Indo-Pacific basin (bleue+green). 747 Note that semi-enclosed seas (Red, Med and Baltic seas) as well as Hudson Bay 748 are removed from the sub-basin. Note also that the Arctic Ocean has been split 749 into Atlantic and Pacific basins along the North fold line. } 750 \end{center} \end{figure} 751 %>>>>>>>>>>>>>>>>>>>>>>>>>>>> 752 753 In addition, a series of diagnostics has been added in the \mdl{diaar5}. 754 They corresponds to outputs that are required for AR5 simulations 755 (see Section \ref{MISC_steric} below for one of them). 756 Activating those outputs requires to define the \key{diaar5} CPP key. 757 758 759 760 % ================================================================ 761 % Steric effect in sea surface height 762 % ================================================================ 763 \section{Steric effect in sea surface height} 764 \label{MISC_steric} 765 766 767 Changes in steric sea level are caused when changes in the density of the water 768 column imply an expansion or contraction of the column. It is essentially produced 769 through surface heating/cooling and to a lesser extent through non-linear effects of 770 the equation of state (cabbeling, thermobaricity...). 771 Non-Boussinesq models contain all ocean effects within the ocean acting 772 on the sea level. In particular, they include the steric effect. In contrast, 773 Boussinesq models, such as \NEMO, conserve volume, rather than mass, 774 and so do not properly represent expansion or contraction. The steric effect is 775 therefore not explicitely represented. 776 This approximation does not represent a serious error with respect to the flow field 777 calculated by the model \citep{Greatbatch_JGR94}, but extra attention is required 778 when investigating sea level, as steric changes are an important 779 contribution to local changes in sea level on seasonal and climatic time scales. 780 This is especially true for investigation into sea level rise due to global warming. 781 782 Fortunately, the steric contribution to the sea level consists of a spatially uniform 783 component that can be diagnosed by considering the mass budget of the world 784 ocean \citep{Greatbatch_JGR94}. 785 In order to better understand how global mean sea level evolves and thus how 786 the steric sea level can be diagnosed, we compare, in the following, the 787 non-Boussinesq and Boussinesq cases. 788 789 Let denote 790 $\mathcal{M}$ the total mass of liquid seawater ($\mathcal{M}=\int_D \rho dv$), 791 $\mathcal{V}$ the total volume of seawater ($\mathcal{V}=\int_D dv$), 792 $\mathcal{A}$ the total surface of the ocean ($\mathcal{A}=\int_S ds$), 793 $\bar{\rho}$ the global mean seawater (\textit{in situ}) density ($\bar{\rho}= 1/\mathcal{V} \int_D \rho \,dv$), and 794 $\bar{\eta}$ the global mean sea level ($\bar{\eta}=1/\mathcal{A}\int_S \eta \,ds$). 795 796 A non-Boussinesq fluid conserves mass. It satisfies the following relations: 797 \begin{equation} \label{Eq_MV_nBq} 798 \begin{split} 799 \mathcal{M} &= \mathcal{V} \;\bar{\rho} \\ 800 \mathcal{V} &= \mathcal{A} \;\bar{\eta} 801 \end{split} 802 \end{equation} 803 Temporal changes in total mass is obtained from the density conservation equation : 804 \begin{equation} \label{Eq_Co_nBq} 805 \frac{1}{e_3} \partial_t ( e_3\,\rho) + \nabla( \rho \, \textbf{U} ) = \left. \frac{\textit{emp}}{e_3}\right|_\textit{surface} 806 \end{equation} 807 where $\rho$ is the \textit{in situ} density, and \textit{emp} the surface mass 808 exchanges with the other media of the Earth system (atmosphere, sea-ice, land). 809 Its global averaged leads to the total mass change 810 \begin{equation} \label{Eq_Mass_nBq} 811 \partial_t \mathcal{M} = \mathcal{A} \;\overline{\textit{emp}} 812 \end{equation} 813 where $\overline{\textit{emp}}=\int_S \textit{emp}\,ds$ is the net mass flux 814 through the ocean surface. 815 Bringing \eqref{Eq_Mass_nBq} and the time derivative of \eqref{Eq_MV_nBq} 816 together leads to the evolution equation of the mean sea level 817 \begin{equation} \label{Eq_ssh_nBq} 818 \partial_t \bar{\eta} = \frac{\overline{\textit{emp}}}{ \bar{\rho}} 819 - \frac{\mathcal{V}}{\mathcal{A}} \;\frac{\partial_t \bar{\rho} }{\bar{\rho}} 820 \end{equation} 821 The first term in equation \eqref{Eq_ssh_nBq} alters sea level by adding or 822 subtracting mass from the ocean. 823 The second term arises from temporal changes in the global mean 824 density; $i.e.$ from steric effects. 825 826 In a Boussinesq fluid, $\rho$ is replaced by $\rho_o$ in all the equation except when $\rho$ 827 appears multiplied by the gravity ($i.e.$ in the hydrostatic balance of the primitive Equations). 828 In particular, the mass conservation equation, \eqref{Eq_Co_nBq}, degenerates into 829 the incompressibility equation: 830 \begin{equation} \label{Eq_Co_Bq} 831 \frac{1}{e_3} \partial_t ( e_3 ) + \nabla( \textbf{U} ) = \left. \frac{\textit{emp}}{\rho_o \,e_3}\right|_ \textit{surface} 832 \end{equation} 833 and the global average of this equation now gives the temporal change of the total volume, 834 \begin{equation} \label{Eq_V_Bq} 835 \partial_t \mathcal{V} = \mathcal{A} \;\frac{\overline{\textit{emp}}}{\rho_o} 836 \end{equation} 837 Only the volume is conserved, not mass, or, more precisely, the mass which is conserved is the 838 Boussinesq mass, $\mathcal{M}_o = \rho_o \mathcal{V}$. The total volume (or equivalently 839 the global mean sea level) is altered only by net volume fluxes across the ocean surface, 840 not by changes in mean mass of the ocean: the steric effect is missing in a Boussinesq fluid. 841 842 Nevertheless, following \citep{Greatbatch_JGR94}, the steric effect on the volume can be 843 diagnosed by considering the mass budget of the ocean. 844 The apparent changes in $\mathcal{M}$, mass of the ocean, which are not induced by surface 845 mass flux must be compensated by a spatially uniform change in the mean sea level due to 846 expansion/contraction of the ocean \citep{Greatbatch_JGR94}. In others words, the Boussinesq 847 mass, $\mathcal{M}_o$, can be related to $\mathcal{M}$, the total mass of the ocean seen 848 by the Boussinesq model, via the steric contribution to the sea level, $\eta_s$, a spatially 849 uniform variable, as follows: 850 \begin{equation} \label{Eq_M_Bq} 851 \mathcal{M}_o = \mathcal{M} + \rho_o \,\eta_s \,\mathcal{A} 852 \end{equation} 853 Any change in $\mathcal{M}$ which cannot be explained by the net mass flux through 854 the ocean surface is converted into a mean change in sea level. Introducing the total density 855 anomaly, $\mathcal{D}= \int_D d_a \,dv$, where $d_a= (\rho -\rho_o ) / \rho_o$ 856 is the density anomaly used in \NEMO (cf. \S\ref{TRA_eos}) in \eqref{Eq_M_Bq} 857 leads to a very simple form for the steric height: 858 \begin{equation} \label{Eq_steric_Bq} 859 \eta_s = - \frac{1}{\mathcal{A}} \mathcal{D} 860 \end{equation} 861 862 The above formulation of the steric height of a Boussinesq ocean requires four remarks. 863 First, one can be tempted to define $\rho_o$ as the initial value of $\mathcal{M}/\mathcal{V}$, 864 $i.e.$ set $\mathcal{D}_{t=0}=0$, so that the initial steric height is zero. We do not 865 recommend that. Indeed, in this case $\rho_o$ depends on the initial state of the ocean. 866 Since $\rho_o$ has a direct effect on the dynamics of the ocean (it appears in the pressure 867 gradient term of the momentum equation) it is definitively not a good idea when 868 inter-comparing experiments. 869 We better recommend to fixe once for all $\rho_o$ to $1035\;Kg\,m^{-3}$. This value is a 870 sensible choice for the reference density used in a Boussinesq ocean climate model since, 871 with the exception of only a small percentage of the ocean, density in the World Ocean 872 varies by no more than 2$\%$ from this value (\cite{Gill1982}, page 47). 873 874 Second, we have assumed here that the total ocean surface, $\mathcal{A}$, does not 875 change when the sea level is changing as it is the case in all global ocean GCMs 876 (wetting and drying of grid point is not allowed). 877 878 Third, the discretisation of \eqref{Eq_steric_Bq} depends on the type of free surface 879 which is considered. In the non linear free surface case, $i.e.$ \key{vvl} defined, it is 880 given by 881 \begin{equation} \label{Eq_discrete_steric_Bq} 882 \eta_s = - \frac{ \sum_{i,\,j,\,k} d_a\; e_{1t} e_{2t} e_{3t} } 883 { \sum_{i,\,j,\,k} e_{1t} e_{2t} e_{3t} } 884 \end{equation} 885 whereas in the linear free surface, the volume above the \textit{z=0} surface must be explicitly taken 886 into account to better approximate the total ocean mass and thus the steric sea level: 887 \begin{equation} \label{Eq_discrete_steric_Bq} 888 \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 } 889 {\sum_{i,\,j,\,k} e_{1t}e_{2t}e_{3t} + \sum_{i,\,j} e_{1t}e_{2t} \eta } 890 \end{equation} 891 892 The fourth and last remark concerns the effective sea level and the presence of sea-ice. 893 In the real ocean, sea ice (and snow above it) depresses the liquid seawater through 894 its mass loading. This depression is a result of the mass of sea ice/snow system acting 895 on the liquid ocean. There is, however, no dynamical effect associated with these depressions 896 in the liquid ocean sea level, so that there are no associated ocean currents. Hence, the 897 dynamically relevant sea level is the effective sea level, $i.e.$ the sea level as if sea ice 898 (and snow) were converted to liquid seawater \citep{Campin_al_OM08}. However, 899 in the current version of \NEMO the sea-ice is levitating above the ocean without 900 mass exchanges between ice and ocean. Therefore the model effective sea level 901 is always given by $\eta + \eta_s$, whether or not there is sea ice present. 902 903 In AR5 outputs, the thermosteric sea level is demanded. It is steric sea level due to 904 changes in ocean density arising just from changes in temperature. It is given by: 905 \begin{equation} \label{Eq_thermosteric_Bq} 906 \eta_s = - \frac{1}{\mathcal{A}} \int_D d_a(T,S_o,p_o) \,dv 907 \end{equation} 908 where $S_o$ and $p_o$ are the initial salinity and pressure, respectively. 909 910 Both steric and thermosteric sea level are computed in \mdl{diaar5} which needs 911 the \key{diaar5} defined to be called. 912 913 914 915 \gmcomment{ % start of gmcomment 916 917 918 % ================================================================ 919 % Diagnostics 920 % ================================================================ 921 \section{Standard model Output (IOM)} 922 \label{MISC_iom} 923 924 % ------------------------------------------------------------------------------------------------------------- 925 % Standard Model Output 926 % ------------------------------------------------------------------------------------------------------------- 927 %\subsection{Model Output (default or \key{iomput} } 928 %\label{MISC_iom} 929 930 931 932 \subsection{Basic knowledge} 933 934 935 \subsubsection{ XML basic rules} 936 937 XML tags begin with the less-than character ("$<$") and end with the greater-than character (''$>$''). 938 You use tags to mark the start and end of elements, which are the logical units of information 939 in an XML document. In addition to marking the beginning of an element, XML start tags also 940 provide a place to specify attributes. An attribute specifies a single property for an element, 941 using a name/value pair, for example: $<$a b="x" c="y" b="z"$>$ ... $<$/a$>$. 942 See \href{http://www.xmlnews.org/docs/xml-basics.html}{here} for more details. 943 944 \subsubsection{Structure of the xml file used in NEMO} 945 946 The xml file is split into 3 parts: 947 948 \textbf{field definition}: define all variables that can be output (all lines between 949 \texttt{$<$field\_definition$>$} and \texttt{$<$/field\_definition$>$}) 950 951 \textbf{file definition}: define the netcdf files to be created and the variables they will contain 952 (all lines between \texttt{ $<$file\_definition$>$} and \texttt{$<$/file\_definition$>$}) 953 954 \textbf{axis and grid definitions}: define the horizontal and vertical grids (all lines between 955 \texttt{$<$axis\_definition$>$} and \texttt{$<$/axis\_definition$>$} and all lines between 956 \texttt{$<$grid\_definition$>$} and \texttt{$<$/grid\_definition$>$}) 957 958 \subsubsection{Inheritance and group } 959 960 Xml extensively uses the concept of inheritance. \\ 961 \\ 962 example 1: \\ 963 \vspace{-30pt} 964 \begin{alltt} {{\scriptsize 965 \begin{verbatim} 966 <field_definition operation="ave(X)" > 967 <field id="sst" /> <!-- averaged sst --> 968 <field id="sss" operation="inst(X)"/> <!-- instantaneous sss --> 969 </field_definition> 970 \end{verbatim} 971 }}\end{alltt} 972 973 The field ''sst'' which is part (or a child) of the field\_definition will inherit the value ''ave(X)'' 974 of the attribute ''operation'' from its parent ''field definition''. Note that a child can overwrite 975 the attribute definition inherited from its parents. In the example above, the field ''sss'' will 976 therefore output instantaneous values instead of average values. 977 978 example 2: Use (or overwrite) attributes value of a field when listing the variables included in a file 979 \vspace{-20pt} 980 \begin{alltt} {{\scriptsize 981 \begin{verbatim} 982 <field_definition> 983 <field id="sst" description="sea surface temperature" /> 984 <field id="sss" description="sea surface salinity" /> 985 </field_definition> 986 987 <file_definition> 988 <file id="file_1" /> 989 <field ref="sst" /> <!-- default def --> 990 <field ref="sss" description="my description" /> <!-- overwrite --> 991 </file> 992 </file_definition> 993 \end{verbatim} 994 }}\end{alltt} 995 996 With the help of the inheritance, the concept of group allow to define a set of attributes 997 for several fields or files. 998 999 example 3, group of fields: define a group ''T\_grid\_variables'' identified with the name 1000 ''grid\_T''. By default variables of this group have no vertical axis but, following inheritance 1001 rules, ''axis\_ref'' can be redefined for the field ''toce'' that is a 3D variable. 1002 \vspace{-30pt} 1003 \begin{alltt} {{\scriptsize 1004 \begin{verbatim} 1005 <field_definition> 1006 <group id="grid_T" axis_ref="none" grid_ref="T_grid_variables"> 1007 <field id="sst"/> 1008 <field id="sss"/> 1009 <field id="toce" axis_ref="deptht"/> <!-- overwrite axis def --> 1010 </group> 1011 </field_definition> 1012 \end{verbatim} 1013 }}\end{alltt} 1014 1015 example 4, group of files: define a group of file with the attribute output\_freq equal to 432000 (5 days) 1016 \vspace{-30pt} 1017 \begin{alltt} {{\scriptsize 1018 \begin{verbatim} 1019 <file_definition> 1020 <group id="5d" output_freq="432000"> <!-- 5d files --> 1021 <file id="5d_grid_T" name="auto"> <!-- T grid file --> 1022 ... 1023 </file> 1024 <file id="5d_grid_U" name="auto"> <!-- U grid file --> 1025 ... 1026 </file> 1027 </group> 1028 </file_definition> 1029 \end{verbatim} 1030 }}\end{alltt} 1031 1032 \subsubsection{Control of the xml attributes from NEMO} 1033 1034 The values of some attributes are automatically defined by NEMO (and any definition 1035 given in the xml file is overwritten). By convention, these attributes are defined to ''auto'' 1036 (for string) or ''0000'' (for integer) in the xml file (but this is not necessary). 1037 1038 Here is the list of these attributes: \\ 1039 1040 %table to be created here.... 1041 1042 tag ids affected by automatic definition of some of their attributes 1043 1044 name attribute 1045 attribute value 1046 field\_definition 1047 freq\_op 1048 \np{rn\_rdt} (namelist) 1049 SBC 1050 freq\_op 1051 \np{rn\_rdt} $\times$ \np{nn\_fsbc} (namelist) 1052 1h, 2h, 3h, 4h, 6h, 12h 1053 1d, 3d, 5d 1054 1m, 2m, 3m, 4m, 6m 1055 1y, 2y, 5y, 10y 1056 \_grid\_T, \_grid\_U, \_grid\_V, \_grid\_W, \_icemod, \_ptrc\_T, \_diad\_T, \_scalar 1057 name 1058 filename defined by a call to rou{dia\_nam} following NEMO nomenclature 1059 EqT, EqU, EqW 1060 jbegin, ni, name\_suffix 1061 according to the grid 1062 TAO, RAMA and PIRATA moorings 1063 ibegin, jbegin, name\_suffix 1064 according to the grid 1065 1066 1067 \subsection{ Detailed functionalities } 1068 1069 \subsubsection{Tag list} 1070 1071 1072 Table might be easier to read: % table to create 1073 1074 Tag 1075 Description 1076 Accepted attribute 1077 Accepted attribute value(s) 1078 Parent tag 1079 context 1080 define the model using the xml file 1081 id 1082 "nemo" or "n\_nemo" for the nth AGRIF zoom. 1083 simulation 1084 1085 What do you think, Seb? 1086 1087 1088 \begin{description} 1089 1090 \item[context]: define the model using the xml file. Id is the only attribute accepted. 1091 Its value must be ''nemo'' or ''n\_nemo'' for the nth AGRIF zoom. Child of simulation tag. 1092 1093 \item[field]: define the field to be output. Accepted attributes are axis\_ref, description, enable, 1094 freq\_op, grid\_ref, id (if child of field\_definition), level, operation, name, ref (if child of file), 1095 unit, zoom\_ref. Child of field\_definition, file or group of fields tag. 1096 1097 \item[field\_definition]: definition of the part of the xml file corresponding to the field definition. 1098 Accept the same attributes as field tag. Child of context tag. 1099 1100 \item[group]: define a group of file or field. Accept the same attributes as file or field. 1101 1102 \item[file]: define the output fileÕs characteristics. Accepted attributes are description, enable, 1103 output\_freq, output\_level, id, name, name\_suffix. Child of file\_definition or group of files tag. 1104 1105 \item[file\_definition]: definition of the part of the xml file corresponding to the file definition. 1106 Accept the same attributes as file tag. Child of context tag. 1107 1108 \item[axis]: definition of the vertical axis. Accepted attributes are description, id, positive, size, unit. 1109 Child of axis\_definition tag. 1110 1111 \item[axis\_definition]: definition of the part of the xml file corresponding to the vertical axis definition. 1112 Accept the same attributes as axis tag. Child of context tag 1113 1114 \item[grid]: definition of the horizontal grid. Accepted attributes are description and id. 1115 Child of axis\_definition tag. 1116 1117 \item[grid\_definition]: definition of the part of the xml file corresponding to the horizontal grid definition. 1118 Accept the same attributes as grid tag. Child of context tag 1119 1120 \item[zoom]: definition of a subdomain of an horizontal grid. Accepted attributes are description, id, 1121 i/jbegin, ni/j. Child of grid tag. 1122 1123 \end{description} 1124 1125 1126 \subsubsection{Attributes list} 1127 1128 Applied to a tag or a group of tags. 1129 1130 % table to be added ? 1131 Another table, perhaps? 1132 1133 %%%% 1134 1135 Attribute 1136 Applied to? 1137 Definition 1138 Comment 1139 axis\_ref 1140 field 1141 String defining the vertical axis of the variable. It refers to the id of the vertical axis defined in the axis tag. 1142 Use ''non'' if the variable has no vertical axis 1143 1144 %%%%%% 1145 1146 \begin{description} 1147 1148 \item[axis\_ref]: field attribute. String defining the vertical axis of the variable. 1149 It refers to the id of the vertical axis defined in the axis tag. 1150 Use ''none'' if the variable has no vertical axis 1151 1152 \item[description]: this attribute can be applied to all tags but it is used only with the field tag. 1153 In this case, the value of description will be used to define, in the output netcdf file, 1154 the attributes long\_name and standard\_name of the variable. 1155 1156 \item[enabled]: field and file attribute. Logical to switch on/off the output of a field or a file. 1157 1158 \item[freq\_op]: field attribute (automatically defined, see part 1.4 (''control of the xml attributes'')). 1159 An integer defining the frequency in seconds at which NEMO is calling iom\_put for this variable. 1160 It corresponds to the model time step (rn\_rdt in the namelist) except for the variables computed 1161 at the frequency of the surface boundary condition (rn\_rdt ? nn\_fsbc in the namelist). 1162 1163 \item[grid\_ref]: field attribute. String defining the horizontal grid of the variable. 1164 It refers to the id of the grid tag. 1165 1166 \item[ibegin]: zoom attribute. Integer defining the zoom starting point along x direction. 1167 Automatically defined for TAO/RAMA/PIRATA moorings (see part 1.4). 1168 1169 \item[id]: exists for all tag. This is a string defining the name to a specific tag that will be used 1170 later to refer to this tag. Tags of the same category must have different ids. 1171 1172 \item[jbegin]: zoom attribute. Integer defining the zoom starting point along y direction. 1173 Automatically defined for TAO/RAMA/PIRATA moorings and equatorial section (see part 1.4). 1174 1175 \item[level]: field attribute. Integer from 0 to 10 defining the output priority of a field. 1176 See output\_level attribute definition 1177 1178 \item[operation]: field attribute. String defining the type of temporal operation to perform on a variable. 1179 Possible choices are ''ave(X)'' for temporal mean, ''inst(X)'' for instantaneous, ''t\_min(X)'' for temporal min 1180 and ''t\_max(X)'' for temporal max. 1181 1182 \item[output\_freq]: file attribute. Integer defining the operation frequency in seconds. 1183 For example 86400 for daily mean. 1184 1185 \item[output\_level]: file attribute. Integer from 0 to 10 defining the output priority of variables in a file: 1186 all variables listed in the file with a level smaller or equal to output\_level will be output. 1187 Other variables wonÕt be output even if they are listed in the file. 1188 1189 \item[positive]: axis attribute (always .FALSE.). Logical defining the vertical axis convention used 1190 in \NEMO (positive downward). Define the attribute positive of the variable in the netcdf output file. 1191 1192 \item[prec]: field attribute. Integer defining the output precision. 1193 Not implemented, we always output real4 arrays. 1194 1195 \item[name]: field or file attribute. String defining the name of a variable or a file. 1196 If the name of a file is undefined, its id is used as a name. 2 files must have different names. 1197 Files with specific ids will have their name automatically defined (see part 1.4). 1198 Note that is name will be automatically completed by the cpu number (if needed) and ''.nc'' 1199 1200 \item[name\_suffix]: file attribute. String defining a suffix to be inserted after the name 1201 and before the cpu number and the ''.nc'' termination. Files with specific ids have an 1202 automatic definition of their suffix (see part 1.4). 1203 1204 \item[ni]: zoom attribute. Integer defining the zoom extent along x direction. 1205 Automatically defined for equatorial sections (see part 1.4). 1206 1207 \item[nj]: zoom attribute. Integer defining the zoom extent along x direction. 1208 1209 \item[ref]: field attribute. String referring to the id of the field we want to add in a file. 1210 1211 \item[size]: axis attribute. use unknown... 1212 1213 \item[unit]: field attribute. String defining the unit of a variable and the associated 1214 attribute in the netcdf output file. 1215 1216 \item[zoom\_ref]: field attribute. String defining the subdomain of data on which 1217 the file should be written (to ouput data only in a limited area). 1218 It refers to the id of a zoom defined in the zoom tag. 1219 \end{description} 1220 1221 1222 \subsection{IO\_SERVER} 1223 1224 \subsubsection{Attached or detached mode?} 1225 1226 Iom\_put is based on the io\_server developed by Yann Meurdesoif from IPSL 1227 (see \href{http://forge.ipsl.jussieu.fr/ioserver/browser}{here} for the source code or 1228 see its copy in NEMOGCM/EXTERNAL directory). 1229 This server can be used in ''attached mode'' (as a library) or in ''detached mode'' 1230 (as an external executable on n cpus). In attached mode, each cpu of NEMO will output 1231 its own subdomain. In detached mode, the io\_server will gather data from NEMO 1232 and output them split over n files with n the number of cpu dedicated to the io\_server. 1233 1234 \subsubsection{Control the io\_server: the namelist file xmlio\_server.def} 1235 1236 % 1237 %Again, a small table might be more readable? 1238 %Name 1239 %Type 1240 %Description 1241 %Comment 1242 %Using_server 1243 %Logical 1244 %Switch to use the server in attached or detached mode 1245 %(.TRUE. corresponding to detached mode). 1246 1247 The control of the use of the io\_server is done through the namelist file of the io\_server 1248 called xmlio\_server.def. 1249 1250 \textbf{using\_server}: logical, switch to use the server in attached or detached mode 1251 (.TRUE. corresponding to detached mode). 1252 1253 \textbf{using\_oasis}: logical, set to .TRUE. if NEMO is used in coupled mode. 1254 1255 \textbf{client\_id} = ''oceanx'' : character, used only in coupled mode. 1256 Specify the id used in OASIS to refer to NEMO. The same id must be used to refer to NEMO 1257 in the \$NBMODEL part of OASIS namcouple in the call of prim\_init\_comp\_proto in cpl\_oasis3f90 1258 1259 \textbf{server\_id} = ''ionemo'' : character, used only in coupled mode. 1260 Specify the id used in OASIS to refer to the IO\_SERVER when used in detached mode. 1261 Use the same id to refer to the io\_server in the \$NBMODEL part of OASIS namcouple. 1262 1263 \textbf{global\_mpi\_buffer\_size}: integer; define the size in Mb of the MPI buffer used by the io\_server. 1264 1265 \subsubsection{Number of cpu used by the io\_server in detached mode} 1266 1267 The number of cpu used by the io\_server is specified only when launching the model. 1268 Here is an example of 2 cpus for the io\_server and 6 cpu for opa using mpirun: 1269 1270 \texttt{ -p 2 -e ./ioserver} 1271 1272 \texttt{ -p 6 -e ./opa } 1273 1274 1275 \subsection{Practical issues} 1276 1277 \subsubsection{Add your own outputs} 1278 1279 It is very easy to add you own outputs with iom\_put. 4 points must be followed. 1280 \begin{description} 1281 \item[1-] in NEMO code, add a \\ 1282 \texttt{ CALL iom\_put( 'identifier', array ) } \\ 1283 where you want to output a 2D or 3D array. 1284 1285 \item[2-] don't forget to add \\ 1286 \texttt{ USE iom ! I/O manager library } \\ 1287 in the list of used modules in the upper part of your module. 1288 1289 \item[3-] in the file\_definition part of the xml file, add the definition of your variable using the same identifier you used in the f90 code. 1290 \vspace{-20pt} 1291 \begin{alltt} {{\scriptsize 1292 \begin{verbatim} 1293 <field_definition> 1294 ... 1295 <field id="identifier" description="blabla" /> 1296 ... 1297 </field_definition> 1298 \end{verbatim} 1299 }}\end{alltt} 1300 attributes axis\_ref and grid\_ref must be consistent with the size of the array to pass to iom\_put. 1301 if your array is computed within the surface module each nn\_fsbc time\_step, 1302 add the field definition within the group defined with the id ''SBC'': $<$group id=''SBC''...$>$ 1303 1304 \item[4-] add your field in one of the output files \\ 1305 \vspace{-20pt} 1306 \begin{alltt} {{\scriptsize 1307 \begin{verbatim} 1308 <file id="file_1" .../> 1309 ... 1310 <field ref="identifier" /> 1311 ... 1312 </file> 1313 \end{verbatim} 1314 }}\end{alltt} 1315 1316 \end{description} 1317 1318 \subsubsection{Several time axes in the output file} 1319 1320 If your output file contains variables with different operations (see operation definition), 1321 IOIPSL will create one specific time axis for each operation. Note that inst(X) will have 1322 a time axis corresponding to the end each output period whereas all other operators 1323 will have a time axis centred in the middle of the output periods. 1324 1325 \subsubsection{Error/bug messages from IOIPSL} 1326 1327 If you get the following error in the standard output file: 1328 \vspace{-20pt} 1329 \begin{alltt} {{\scriptsize 1330 \begin{verbatim} 1331 FATAL ERROR FROM ROUTINE flio_dom_set 1332 --> too many domains simultaneously defined 1333 --> please unset useless domains 1334 --> by calling flio_dom_unset 1335 \end{verbatim} 1336 }}\end{alltt} 1337 1338 You must increase the value of dom\_max\_nb in fliocom.f90 (multiply it by 10 for example). 1339 1340 If you mix, in the same file, variables with different freq\_op (see definition above), 1341 like for example variables from the surface module with other variables, 1342 IOIPSL will print in the standard output file warning messages saying there may be a bug. 1343 \vspace{-20pt} 1344 \begin{alltt} {{\scriptsize 1345 \begin{verbatim} 1346 WARNING FROM ROUTINE histvar_seq 1347 --> There were 10 errors in the learned sequence of variables 1348 --> for file 4 1349 --> This looks like a bug, please report it. 1350 \end{verbatim} 1351 }}\end{alltt} 1352 1353 Don't worry, there is no bug, everything is properly working! 1354 1355 } %end \gmcomment 1356 % ================================================================ 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 543 544 545 546 547 548 549 550 551 552 553 554
Note: See TracChangeset
for help on using the changeset viewer.