New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 2474 – NEMO

Changeset 2474


Ignore:
Timestamp:
2010-12-16T16:32:33+01:00 (13 years ago)
Author:
djlea
Message:

Update to OBS and ASM documentation. Removal of cpp key options to OBS code. Also moved the diaobs call to after the timestep code in step.

Location:
branches/nemo_v3_3_beta
Files:
7 edited
1 moved

Legend:

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

    r2349 r2474  
    55\label{ASM} 
    66 
    7 Authors: D. Lea, K. Mogensen, A. Weaver, M. Martin ... 
     7Authors: D. Lea,  M. Martin, K. Mogensen, A. Weaver, ...   % do we keep 
    88 
    99\minitoc 
     
    1313$\ $\newline    % force a new line 
    1414 
    15 The ASM branch adds the functionality to apply increments to model variables,  
     15The ASM code adds the functionality to apply increments to model variables,  
    1616temperature, salinity, sea surface height, velocity and sea ice concentration.  
    17 These are read into the model from a file which may be produced by data assimilation.  
    18 This code is controlled by the namelist \textit{nam\_asminc}.  
    19 There is a brief description of all the namelist options provided.  
    20 To build the ASM code \key{asminc} must be set. 
     17These are read into the model from a NetCDF file which may be produced by data 
     18assimilation.  The code can also output model background fields which are used 
     19as an input to data assimilation code. This is all controlled by the namelist 
     20\textit{nam\_asminc}.  There is a brief description of all the namelist options 
     21provided.  To build the ASM code \key{asminc} must be set. 
    2122 
    2223%=============================================================== 
     
    9495%------------------------------------------------------------------------------------------------------------- 
    9596 
    96 The header of an assimilation increments file produced using \textit{ncdump~-h} is shown below 
     97The header of an assimilation increments file produced using the NetCDF tool 
     98\mbox{\textit{ncdump~-h}} is shown below 
    9799 
    98100\begin{alltt} 
  • branches/nemo_v3_3_beta/DOC/TexFiles/Chapters/Chap_OBS.tex

    r2414 r2474  
    55\label{OBS} 
    66 
    7 Authors: D. Lea, K. Mogensen, A. Weaver, M. Martin ...   % do we keep that ? 
     7Authors: D. Lea, M. Martin, K. Mogensen, A. Vidard, A. Weaver...   % do we keep that ? 
    88 
    99\minitoc 
     
    1313$\ $\newline    % force a new line 
    1414 
    15 The OBS branch is a diagnostic branch which reads in observation files (profile temperature and 
    16 salinity, sea surface temperature, sea level anomaly and sea ice concentration) and calculates  
    17 an interpolated model equivalent value at the observation location and nearest model timestep. 
    18 This is code with was originally developed for use with NEMOVAR.  
    19  
    20 In the case of temperature data from moored buoys (TAO, TRITON, PIRATA) which in the 
    21 ENACT/ENSEMBLES data-base are available as daily averaged quantities the observation operator 
    22 averages the model temperature fields over one day before interpolating them to the observation 
    23 location. For SST and altimeter observations, a 2D horizontal  interpolator is needed. For {\em in 
    24 situ} profiles, a 1D vertical interpolator is needed in addition to the 2D interpolator. 
    25  
    26 The resulting data is saved in a ``feedback'' file or files which can be used for model validation 
    27 and verification and also to provide information for data assimilation. This code is controlled by 
    28 the namelist \textit{nam\_obs}. To build with the OBS code active \key{diaobs} must be set. 
    29  
    30 There is a brief description of all the namelist options provided.  
    31  
    32 Missing information: description of \key{sp}, \key{datetime\_out} 
    33  
     15The observation and model comparison code (OBS) reads in observation files 
     16(profile temperature and salinity, sea surface temperature, sea level anomaly 
     17and sea ice concentration) and calculates  an interpolated model equivalent 
     18value at the observation location and nearest model timestep. The OBS code is 
     19called from \np{opa.F90} in order to initialise the model and to calculate the 
     20model equivalent values for observations on the 0th timestep. The code is then 
     21called again after each timestep from \np{step.F90}. The code was originally 
     22developed for use with NEMOVAR.  
     23 
     24For all data types a 2D horizontal  interpolator is needed 
     25to interpolate the model fields to the observation location. 
     26For {\em in situ} profiles, a 1D vertical interpolator is needed in addition to 
     27provide model fields at the observation depths. Currently this only works in 
     28z-level model configurations but is currently being developed to work with a 
     29generalised vertical coordinate system. 
     30Temperature data from moored buoys (TAO, TRITON, PIRATA) which in the 
     31ENACT/ENSEMBLES data-base are available as daily averaged quantities. For this 
     32type of observations the 
     33observation operator will compare such observations to the model temperature 
     34fields over one day. The relevant observation type may be specified in the namelist 
     35using \np{endailyavtypes}. Otherwise the model value from the nearest 
     36timestep to the observation time is used. 
     37 
     38The resulting data is saved in a ``feedback'' file (or files) which can be used 
     39for model validation and verification and also to provide information for data 
     40assimilation. This code is controlled by the namelist \textit{nam\_obs}. To 
     41build with the OBS code active \key{diaobs} must be set. 
     42 
     43Section~\ref{OBS_example} introduces a test example of the observation operator 
     44code including where to obtain data and how to setup the namelist. 
     45Section~\ref{OBS_details} introduces some more technical details of the 
     46different observation types used and also shows a more complete namelist. 
     47Finally section~\ref{OBS_theory} introduces some of the theoretical aspects of 
     48the observation operator including interpolation methods and running on multiple 
     49processors.  
    3450 
    3551% ================================================================ 
     
    4056 
    4157This section describes an example of running the observation operator code using 
    42 profile data which can be freely downloaded. This shows how to adapt an existing 
    43 run and build of NEMO to run the observation operator. 
    44  
    45 First compile NEMO with \key{diaobs} set. 
    46  
    47 Next download some ENSEMBLES EN3 data from the \href{http://www.hadobs.org}{website}. 
    48 You should choose observations which are valid for the period of your test run 
    49 because the observation operator compares the model and observations for a 
    50 matching date and time.  
    51  
    52 You will need to add the following to the namelist to run the observation 
    53 operator on this data - set the \np{enactfiles} namelist parameter to the observation  
    54 file name you wish to use (or link in): 
     58profile data which can be freely downloaded. It shows how to adapt an 
     59existing run and build of NEMO to run the observation operator. 
     60 
     61\begin{enumerate} 
     62\item Compile NEMO with \key{diaobs} set. 
     63 
     64\item Download some ENSEMBLES EN3 data from  
     65\href{http://www.hadobs.org}{http://www.hadobs.org}. Choose observations which are 
     66valid for the period of your test run because the observation operator compares 
     67the model and observations for a matching date and time.  
     68 
     69\item Add the following to the NEMO namelist to run the observation 
     70operator on this data. Set the \np{enactfiles} namelist parameter to the 
     71observation  file name (or link in to \np{profiles\_01\.nc}): 
     72\end{enumerate} 
    5573 
    5674%------------------------------------------namobs_example----------------------------------------------------- 
     
    5876%------------------------------------------------------------------------------------------------------------- 
    5977 
    60 The option \np{ln\_t3d} and \np{ln\_s3d} switch on the temperature and salinity profile 
    61 observation operator code. \np{ln\_ena} switch turns on the reading on ENACT/ENSEMBLES type 
    62 profile data. The filename of the ENACT/ENSEMBLES data is set with enactfiles. Not this can be 
    63 array of multiple files. The observation operator code needs to convert from observation 
    64 latitude and longitude to model grid point. This is done using the grid searching part of the 
    65 code. Setting \np{ln\_grid\_global} means that the code distributes the observations evenly 
    66 between processors in a round-robin. Alternatively each processor will work with observations 
    67 located within the model subdomain. The grid searching can be expensive, particularly for large 
    68 numbers of observations, setting \np{ln\_grid\_search\_lookup} allows the use of a lookup 
    69 table. This will need to generated the first time if it does not exist in the run directory 
    70 however once produced it will significantly speed up future grid searches. 
    71  
    72 The next step is viewing and working with the data. The NEMOVAR system contains utilities to 
    73 plot the feedback files, convert and recombine the files which are available on request from 
    74 the NEMOVAR team. 
     78The option \np{ln\_t3d} and \np{ln\_s3d} switch on the temperature and salinity 
     79profile observation operator code. The \np{ln\_ena} switch turns on the reading 
     80of ENACT/ENSEMBLES type profile data. The filename or array of filenames are 
     81specified using the \np{enactfiles} variable. The model grid points for a 
     82particular  observation latitude and longitude are found using the grid 
     83searching part of the code. This can be expensive, particularly for large 
     84numbers of observations, setting \np{ln\_grid\_search\_lookup} allows the use of 
     85a lookup table which is saved into an ``xypos`` file (or files). This will need 
     86to be generated the first time if it does not exist in the run directory. 
     87However, once produced it will significantly speed up future grid searches. 
     88Setting \np{ln\_grid\_global} means that the code distributes the observations 
     89evenly between processors. Alternatively each processor will work with 
     90observations located within the model subdomain. 
     91 
     92The NEMOVAR system contains utilities to plot the feedback files, convert and 
     93recombine the files. These are available on request from the NEMOVAR team. 
    7594 
    7695\section{Technical details} 
    7796\label{OBS_details} 
    7897 
    79 Here we show a more complete example namelist and also describe the observation files that may 
    80 be used with the observation operator 
     98Here we show a more complete example namelist and also show the NetCDF headers 
     99of the observation 
     100files that may be used with the observation operator 
    81101 
    82102%------------------------------------------namobs-------------------------------------------------------- 
     
    84104%------------------------------------------------------------------------------------------------------------- 
    85105 
    86 This name list uses the "feedback" type observation file input format for profile, sea level 
    87 anomaly and sea surface temperature data 
     106This name list uses the "feedback" type observation file input format for 
     107profile, sea level anomaly and sea surface temperature data. All the 
     108observation files must be in NetCDF format. Some example headers (produced using 
     109\mbox{\textit{ncdump~-h}}) for profile 
     110data, sea level anomaly and sea surface temperature are in the following 
     111subsections. 
    88112 
    89113\subsection{Profile feedback type observation file header} 
     
    94118netcdf profiles_01 { 
    95119dimensions: 
    96    N_OBS = 603 ; 
    97    N_LEVELS = 150 ; 
    98    N_VARS = 2 ; 
    99    N_QCF = 2 ; 
    100    N_ENTRIES = 1 ; 
    101    N_EXTRA = 1 ; 
    102    STRINGNAM = 8 ; 
    103    STRINGGRID = 1 ; 
    104    STRINGWMO = 8 ; 
    105    STRINGTYP = 4 ; 
    106    STRINGJULD = 14 ; 
     120     N_OBS = 603 ; 
     121     N_LEVELS = 150 ; 
     122     N_VARS = 2 ; 
     123     N_QCF = 2 ; 
     124     N_ENTRIES = 1 ; 
     125     N_EXTRA = 1 ; 
     126     STRINGNAM = 8 ; 
     127     STRINGGRID = 1 ; 
     128     STRINGWMO = 8 ; 
     129     STRINGTYP = 4 ; 
     130     STRINGJULD = 14 ; 
    107131variables: 
    108    char VARIABLES(N_VARS, STRINGNAM) ; 
    109       VARIABLES:long_name = "List of variables in feedback files" ; 
    110    char ENTRIES(N_ENTRIES, STRINGNAM) ; 
    111       ENTRIES:long_name = "List of additional entries for each variable in feedback files" ; 
    112    char EXTRA(N_EXTRA, STRINGNAM) ; 
    113       EXTRA:long_name = "List of extra variables" ; 
    114    char STATION_IDENTIFIER(N_OBS, STRINGWMO) ; 
    115       STATION_IDENTIFIER:long_name = "Station identifier" ; 
    116    char STATION_TYPE(N_OBS, STRINGTYP) ; 
    117       STATION_TYPE:long_name = "Code instrument type" ; 
    118    double LONGITUDE(N_OBS) ; 
    119       LONGITUDE:long_name = "Longitude" ; 
    120       LONGITUDE:units = "degrees_east" ; 
    121       LONGITUDE:_Fillvalue = 99999.f ; 
    122    double LATITUDE(N_OBS) ; 
    123       LATITUDE:long_name = "Latitude" ; 
    124       LATITUDE:units = "degrees_north" ; 
    125       LATITUDE:_Fillvalue = 99999.f ; 
    126    double DEPTH(N_OBS, N_LEVELS) ; 
    127       DEPTH:long_name = "Depth" ; 
    128       DEPTH:units = "metre" ; 
    129       DEPTH:_Fillvalue = 99999.f ; 
    130    int DEPTH_QC(N_OBS, N_LEVELS) ; 
    131       DEPTH_QC:long_name = "Quality on depth" ; 
    132       DEPTH_QC:Conventions = "q where q =[0,9]" ; 
    133       DEPTH_QC:_Fillvalue = 0 ; 
    134    int DEPTH_QC_FLAGS(N_OBS, N_LEVELS, N_QCF) ; 
    135       DEPTH_QC_FLAGS:long_name = "Quality flags on depth" ; 
    136       DEPTH_QC_FLAGS:Conventions = "NEMOVAR flag conventions" ; 
    137    double JULD(N_OBS) ; 
    138       JULD:long_name = "Julian day" ; 
    139       JULD:units = "days since JULD_REFERENCE" ; 
    140       JULD:Conventions = "relative julian days with decimal part (as parts of day)" ; 
    141       JULD:_Fillvalue = 99999.f ; 
    142    char JULD_REFERENCE(STRINGJULD) ; 
    143       JULD_REFERENCE:long_name = "Date of reference for julian days" ; 
    144       JULD_REFERENCE:Conventions = "YYYYMMDDHHMMSS" ; 
    145    int OBSERVATION_QC(N_OBS) ; 
    146       OBSERVATION_QC:long_name = "Quality on observation" ; 
    147       OBSERVATION_QC:Conventions = "q where q =[0,9]" ; 
    148       OBSERVATION_QC:_Fillvalue = 0 ; 
    149    int OBSERVATION_QC_FLAGS(N_OBS, N_QCF) ; 
    150       OBSERVATION_QC_FLAGS:long_name = "Quality flags on observation" ; 
    151       OBSERVATION_QC_FLAGS:Conventions = "NEMOVAR flag conventions" ; 
    152       OBSERVATION_QC_FLAGS:_Fillvalue = 0 ; 
    153    int POSITION_QC(N_OBS) ; 
    154       POSITION_QC:long_name = "Quality on position (latitude and longitude)" ; 
    155       POSITION_QC:Conventions = "q where q =[0,9]" ; 
    156       POSITION_QC:_Fillvalue = 0 ; 
    157    int POSITION_QC_FLAGS(N_OBS, N_QCF) ; 
    158       POSITION_QC_FLAGS:long_name = "Quality flags on position" ; 
    159       POSITION_QC_FLAGS:Conventions = "NEMOVAR flag conventions" ; 
    160       POSITION_QC_FLAGS:_Fillvalue = 0 ; 
    161    int JULD_QC(N_OBS) ; 
    162       JULD_QC:long_name = "Quality on date and time" ; 
    163       JULD_QC:Conventions = "q where q =[0,9]" ; 
    164       JULD_QC:_Fillvalue = 0 ; 
    165    int JULD_QC_FLAGS(N_OBS, N_QCF) ; 
    166       JULD_QC_FLAGS:long_name = "Quality flags on date and time" ; 
    167       JULD_QC_FLAGS:Conventions = "NEMOVAR flag conventions" ; 
    168       JULD_QC_FLAGS:_Fillvalue = 0 ; 
    169    int ORIGINAL_FILE_INDEX(N_OBS) ; 
    170       ORIGINAL_FILE_INDEX:long_name = "Index in original data file" ; 
    171       ORIGINAL_FILE_INDEX:_Fillvalue = -99999 ; 
    172    float POTM_OBS(N_OBS, N_LEVELS) ; 
    173       POTM_OBS:long_name = "Potential temperature" ; 
    174       POTM_OBS:units = "Degrees Celsius" ; 
    175       POTM_OBS:_Fillvalue = 99999.f ; 
    176    float POTM_Hx(N_OBS, N_LEVELS) ; 
    177       POTM_Hx:long_name = "Model interpolated potential temperature" ; 
    178       POTM_Hx:units = "Degrees Celsius" ; 
    179       POTM_Hx:_Fillvalue = 99999.f ; 
    180    int POTM_QC(N_OBS) ; 
    181       POTM_QC:long_name = "Quality on potential temperature" ; 
    182       POTM_QC:Conventions = "q where q =[0,9]" ; 
    183       POTM_QC:_Fillvalue = 0 ; 
    184    int POTM_QC_FLAGS(N_OBS, N_QCF) ; 
    185       POTM_QC_FLAGS:long_name = "Quality flags on potential temperature" ; 
    186       POTM_QC_FLAGS:Conventions = "NEMOVAR flag conventions" ; 
    187       POTM_QC_FLAGS:_Fillvalue = 0 ; 
    188    int POTM_LEVEL_QC(N_OBS, N_LEVELS) ; 
    189       POTM_LEVEL_QC:long_name = "Quality for each level on potential temperature" ; 
    190       POTM_LEVEL_QC:Conventions = "q where q =[0,9]" ; 
    191       POTM_LEVEL_QC:_Fillvalue = 0 ; 
    192    int POTM_LEVEL_QC_FLAGS(N_OBS, N_LEVELS, N_QCF) ; 
    193       POTM_LEVEL_QC_FLAGS:long_name = "Quality flags for each level on potential temperature" ; 
    194       POTM_LEVEL_QC_FLAGS:Conventions = "NEMOVAR flag conventions" ; 
    195       POTM_LEVEL_QC_FLAGS:_Fillvalue = 0 ; 
    196    int POTM_IOBSI(N_OBS) ; 
    197       POTM_IOBSI:long_name = "ORCA grid search I coordinate" ; 
    198    int POTM_IOBSJ(N_OBS) ; 
    199       POTM_IOBSJ:long_name = "ORCA grid search J coordinate" ; 
    200    int POTM_IOBSK(N_OBS, N_LEVELS) ; 
    201       POTM_IOBSK:long_name = "ORCA grid search K coordinate" ; 
    202    char POTM_GRID(STRINGGRID) ; 
    203       POTM_GRID:long_name = "ORCA grid search grid (T,U,V)" ; 
    204    float PSAL_OBS(N_OBS, N_LEVELS) ; 
    205       PSAL_OBS:long_name = "Practical salinity" ; 
    206       PSAL_OBS:units = "PSU" ; 
    207       PSAL_OBS:_Fillvalue = 99999.f ; 
    208    float PSAL_Hx(N_OBS, N_LEVELS) ; 
    209       PSAL_Hx:long_name = "Model interpolated practical salinity" ; 
    210       PSAL_Hx:units = "PSU" ; 
    211       PSAL_Hx:_Fillvalue = 99999.f ; 
    212    int PSAL_QC(N_OBS) ; 
    213       PSAL_QC:long_name = "Quality on practical salinity" ; 
    214       PSAL_QC:Conventions = "q where q =[0,9]" ; 
    215       PSAL_QC:_Fillvalue = 0 ; 
    216    int PSAL_QC_FLAGS(N_OBS, N_QCF) ; 
    217       PSAL_QC_FLAGS:long_name = "Quality flags on practical salinity" ; 
    218       PSAL_QC_FLAGS:Conventions = "NEMOVAR flag conventions" ; 
    219       PSAL_QC_FLAGS:_Fillvalue = 0 ; 
    220    int PSAL_LEVEL_QC(N_OBS, N_LEVELS) ; 
    221       PSAL_LEVEL_QC:long_name = "Quality for each level on practical salinity" ; 
    222       PSAL_LEVEL_QC:Conventions = "q where q =[0,9]" ; 
    223       PSAL_LEVEL_QC:_Fillvalue = 0 ; 
    224    int PSAL_LEVEL_QC_FLAGS(N_OBS, N_LEVELS, N_QCF) ; 
    225       PSAL_LEVEL_QC_FLAGS:long_name = "Quality flags for each level on practical salinity" ; 
    226       PSAL_LEVEL_QC_FLAGS:Conventions = "NEMOVAR flag conventions" ; 
    227       PSAL_LEVEL_QC_FLAGS:_Fillvalue = 0 ; 
    228    int PSAL_IOBSI(N_OBS) ; 
    229       PSAL_IOBSI:long_name = "ORCA grid search I coordinate" ; 
    230    int PSAL_IOBSJ(N_OBS) ; 
    231       PSAL_IOBSJ:long_name = "ORCA grid search J coordinate" ; 
    232    int PSAL_IOBSK(N_OBS, N_LEVELS) ; 
    233       PSAL_IOBSK:long_name = "ORCA grid search K coordinate" ; 
    234    char PSAL_GRID(STRINGGRID) ; 
    235       PSAL_GRID:long_name = "ORCA grid search grid (T,U,V)" ; 
    236    float TEMP(N_OBS, N_LEVELS) ; 
    237       TEMP:long_name = "Insitu temperature" ; 
    238       TEMP:units = "Degrees Celsius" ; 
    239       TEMP:_Fillvalue = 99999.f ; 
     132     char VARIABLES(N_VARS, STRINGNAM) ; 
     133          VARIABLES:long_name = "List of variables in feedback files" ; 
     134     char ENTRIES(N_ENTRIES, STRINGNAM) ; 
     135          ENTRIES:long_name = "List of additional entries for each variable in feedback files" ; 
     136     char EXTRA(N_EXTRA, STRINGNAM) ; 
     137          EXTRA:long_name = "List of extra variables" ; 
     138     char STATION_IDENTIFIER(N_OBS, STRINGWMO) ; 
     139          STATION_IDENTIFIER:long_name = "Station identifier" ; 
     140     char STATION_TYPE(N_OBS, STRINGTYP) ; 
     141          STATION_TYPE:long_name = "Code instrument type" ; 
     142     double LONGITUDE(N_OBS) ; 
     143          LONGITUDE:long_name = "Longitude" ; 
     144          LONGITUDE:units = "degrees_east" ; 
     145          LONGITUDE:_Fillvalue = 99999.f ; 
     146     double LATITUDE(N_OBS) ; 
     147          LATITUDE:long_name = "Latitude" ; 
     148          LATITUDE:units = "degrees_north" ; 
     149          LATITUDE:_Fillvalue = 99999.f ; 
     150     double DEPTH(N_OBS, N_LEVELS) ; 
     151          DEPTH:long_name = "Depth" ; 
     152          DEPTH:units = "metre" ; 
     153          DEPTH:_Fillvalue = 99999.f ; 
     154     int DEPTH_QC(N_OBS, N_LEVELS) ; 
     155          DEPTH_QC:long_name = "Quality on depth" ; 
     156          DEPTH_QC:Conventions = "q where q =[0,9]" ; 
     157          DEPTH_QC:_Fillvalue = 0 ; 
     158     int DEPTH_QC_FLAGS(N_OBS, N_LEVELS, N_QCF) ; 
     159          DEPTH_QC_FLAGS:long_name = "Quality flags on depth" ; 
     160          DEPTH_QC_FLAGS:Conventions = "NEMOVAR flag conventions" ; 
     161     double JULD(N_OBS) ; 
     162          JULD:long_name = "Julian day" ; 
     163          JULD:units = "days since JULD_REFERENCE" ; 
     164          JULD:Conventions = "relative julian days with decimal part (as parts of day)" ; 
     165          JULD:_Fillvalue = 99999.f ; 
     166     char JULD_REFERENCE(STRINGJULD) ; 
     167          JULD_REFERENCE:long_name = "Date of reference for julian days" ; 
     168          JULD_REFERENCE:Conventions = "YYYYMMDDHHMMSS" ; 
     169     int OBSERVATION_QC(N_OBS) ; 
     170          OBSERVATION_QC:long_name = "Quality on observation" ; 
     171          OBSERVATION_QC:Conventions = "q where q =[0,9]" ; 
     172          OBSERVATION_QC:_Fillvalue = 0 ; 
     173     int OBSERVATION_QC_FLAGS(N_OBS, N_QCF) ; 
     174          OBSERVATION_QC_FLAGS:long_name = "Quality flags on observation" ; 
     175          OBSERVATION_QC_FLAGS:Conventions = "NEMOVAR flag conventions" ; 
     176          OBSERVATION_QC_FLAGS:_Fillvalue = 0 ; 
     177     int POSITION_QC(N_OBS) ; 
     178          POSITION_QC:long_name = "Quality on position (latitude and longitude)" ; 
     179          POSITION_QC:Conventions = "q where q =[0,9]" ; 
     180          POSITION_QC:_Fillvalue = 0 ; 
     181     int POSITION_QC_FLAGS(N_OBS, N_QCF) ; 
     182          POSITION_QC_FLAGS:long_name = "Quality flags on position" ; 
     183          POSITION_QC_FLAGS:Conventions = "NEMOVAR flag conventions" ; 
     184          POSITION_QC_FLAGS:_Fillvalue = 0 ; 
     185     int JULD_QC(N_OBS) ; 
     186          JULD_QC:long_name = "Quality on date and time" ; 
     187          JULD_QC:Conventions = "q where q =[0,9]" ; 
     188          JULD_QC:_Fillvalue = 0 ; 
     189     int JULD_QC_FLAGS(N_OBS, N_QCF) ; 
     190          JULD_QC_FLAGS:long_name = "Quality flags on date and time" ; 
     191          JULD_QC_FLAGS:Conventions = "NEMOVAR flag conventions" ; 
     192          JULD_QC_FLAGS:_Fillvalue = 0 ; 
     193     int ORIGINAL_FILE_INDEX(N_OBS) ; 
     194          ORIGINAL_FILE_INDEX:long_name = "Index in original data file" ; 
     195          ORIGINAL_FILE_INDEX:_Fillvalue = -99999 ; 
     196     float POTM_OBS(N_OBS, N_LEVELS) ; 
     197          POTM_OBS:long_name = "Potential temperature" ; 
     198          POTM_OBS:units = "Degrees Celsius" ; 
     199          POTM_OBS:_Fillvalue = 99999.f ; 
     200     float POTM_Hx(N_OBS, N_LEVELS) ; 
     201          POTM_Hx:long_name = "Model interpolated potential temperature" ; 
     202          POTM_Hx:units = "Degrees Celsius" ; 
     203          POTM_Hx:_Fillvalue = 99999.f ; 
     204     int POTM_QC(N_OBS) ; 
     205          POTM_QC:long_name = "Quality on potential temperature" ; 
     206          POTM_QC:Conventions = "q where q =[0,9]" ; 
     207          POTM_QC:_Fillvalue = 0 ; 
     208     int POTM_QC_FLAGS(N_OBS, N_QCF) ; 
     209          POTM_QC_FLAGS:long_name = "Quality flags on potential temperature" ; 
     210          POTM_QC_FLAGS:Conventions = "NEMOVAR flag conventions" ; 
     211          POTM_QC_FLAGS:_Fillvalue = 0 ; 
     212     int POTM_LEVEL_QC(N_OBS, N_LEVELS) ; 
     213          POTM_LEVEL_QC:long_name = "Quality for each level on potential temperature" ; 
     214          POTM_LEVEL_QC:Conventions = "q where q =[0,9]" ; 
     215          POTM_LEVEL_QC:_Fillvalue = 0 ; 
     216     int POTM_LEVEL_QC_FLAGS(N_OBS, N_LEVELS, N_QCF) ; 
     217          POTM_LEVEL_QC_FLAGS:long_name = "Quality flags for each level on potential temperature" ; 
     218          POTM_LEVEL_QC_FLAGS:Conventions = "NEMOVAR flag conventions" ; 
     219          POTM_LEVEL_QC_FLAGS:_Fillvalue = 0 ; 
     220     int POTM_IOBSI(N_OBS) ; 
     221          POTM_IOBSI:long_name = "ORCA grid search I coordinate" ; 
     222     int POTM_IOBSJ(N_OBS) ; 
     223          POTM_IOBSJ:long_name = "ORCA grid search J coordinate" ; 
     224     int POTM_IOBSK(N_OBS, N_LEVELS) ; 
     225          POTM_IOBSK:long_name = "ORCA grid search K coordinate" ; 
     226     char POTM_GRID(STRINGGRID) ; 
     227          POTM_GRID:long_name = "ORCA grid search grid (T,U,V)" ; 
     228     float PSAL_OBS(N_OBS, N_LEVELS) ; 
     229          PSAL_OBS:long_name = "Practical salinity" ; 
     230          PSAL_OBS:units = "PSU" ; 
     231          PSAL_OBS:_Fillvalue = 99999.f ; 
     232     float PSAL_Hx(N_OBS, N_LEVELS) ; 
     233          PSAL_Hx:long_name = "Model interpolated practical salinity" ; 
     234          PSAL_Hx:units = "PSU" ; 
     235          PSAL_Hx:_Fillvalue = 99999.f ; 
     236     int PSAL_QC(N_OBS) ; 
     237          PSAL_QC:long_name = "Quality on practical salinity" ; 
     238          PSAL_QC:Conventions = "q where q =[0,9]" ; 
     239          PSAL_QC:_Fillvalue = 0 ; 
     240     int PSAL_QC_FLAGS(N_OBS, N_QCF) ; 
     241          PSAL_QC_FLAGS:long_name = "Quality flags on practical salinity" ; 
     242          PSAL_QC_FLAGS:Conventions = "NEMOVAR flag conventions" ; 
     243          PSAL_QC_FLAGS:_Fillvalue = 0 ; 
     244     int PSAL_LEVEL_QC(N_OBS, N_LEVELS) ; 
     245          PSAL_LEVEL_QC:long_name = "Quality for each level on practical salinity" ; 
     246          PSAL_LEVEL_QC:Conventions = "q where q =[0,9]" ; 
     247          PSAL_LEVEL_QC:_Fillvalue = 0 ; 
     248     int PSAL_LEVEL_QC_FLAGS(N_OBS, N_LEVELS, N_QCF) ; 
     249          PSAL_LEVEL_QC_FLAGS:long_name = "Quality flags for each level on practical salinity" ; 
     250          PSAL_LEVEL_QC_FLAGS:Conventions = "NEMOVAR flag conventions" ; 
     251          PSAL_LEVEL_QC_FLAGS:_Fillvalue = 0 ; 
     252     int PSAL_IOBSI(N_OBS) ; 
     253          PSAL_IOBSI:long_name = "ORCA grid search I coordinate" ; 
     254     int PSAL_IOBSJ(N_OBS) ; 
     255          PSAL_IOBSJ:long_name = "ORCA grid search J coordinate" ; 
     256     int PSAL_IOBSK(N_OBS, N_LEVELS) ; 
     257          PSAL_IOBSK:long_name = "ORCA grid search K coordinate" ; 
     258     char PSAL_GRID(STRINGGRID) ; 
     259          PSAL_GRID:long_name = "ORCA grid search grid (T,U,V)" ; 
     260     float TEMP(N_OBS, N_LEVELS) ; 
     261          TEMP:long_name = "Insitu temperature" ; 
     262          TEMP:units = "Degrees Celsius" ; 
     263          TEMP:_Fillvalue = 99999.f ; 
    240264 
    241265// global attributes: 
    242       :title = "NEMO observation operator output" ; 
    243       :Convention = "NEMO unified observation operator output" ; 
     266          :title = "NEMO observation operator output" ; 
     267          :Convention = "NEMO unified observation operator output" ; 
    244268} 
    245269\end{verbatim} 
     
    253277netcdf sla_01 { 
    254278dimensions: 
    255    N_OBS = 41301 ; 
    256    N_LEVELS = 1 ; 
    257    N_VARS = 1 ; 
    258    N_QCF = 2 ; 
    259    N_ENTRIES = 1 ; 
    260    N_EXTRA = 1 ; 
    261    STRINGNAM = 8 ; 
    262    STRINGGRID = 1 ; 
    263    STRINGWMO = 8 ; 
    264    STRINGTYP = 4 ; 
    265    STRINGJULD = 14 ; 
     279     N_OBS = 41301 ; 
     280     N_LEVELS = 1 ; 
     281     N_VARS = 1 ; 
     282     N_QCF = 2 ; 
     283     N_ENTRIES = 1 ; 
     284     N_EXTRA = 1 ; 
     285     STRINGNAM = 8 ; 
     286     STRINGGRID = 1 ; 
     287     STRINGWMO = 8 ; 
     288     STRINGTYP = 4 ; 
     289     STRINGJULD = 14 ; 
    266290variables: 
    267    char VARIABLES(N_VARS, STRINGNAM) ; 
    268       VARIABLES:long_name = "List of variables in feedback files" ; 
    269    char ENTRIES(N_ENTRIES, STRINGNAM) ; 
    270       ENTRIES:long_name = "List of additional entries for each variable in feedback files" ; 
    271    char EXTRA(N_EXTRA, STRINGNAM) ; 
    272       EXTRA:long_name = "List of extra variables" ; 
    273    char STATION_IDENTIFIER(N_OBS, STRINGWMO) ; 
    274       STATION_IDENTIFIER:long_name = "Station identifier" ; 
    275    char STATION_TYPE(N_OBS, STRINGTYP) ; 
    276       STATION_TYPE:long_name = "Code instrument type" ; 
    277    double LONGITUDE(N_OBS) ; 
    278       LONGITUDE:long_name = "Longitude" ; 
    279       LONGITUDE:units = "degrees_east" ; 
    280       LONGITUDE:_Fillvalue = 99999.f ; 
    281    double LATITUDE(N_OBS) ; 
    282       LATITUDE:long_name = "Latitude" ; 
    283       LATITUDE:units = "degrees_north" ; 
    284       LATITUDE:_Fillvalue = 99999.f ; 
    285    double DEPTH(N_OBS, N_LEVELS) ; 
    286       DEPTH:long_name = "Depth" ; 
    287       DEPTH:units = "metre" ; 
    288       DEPTH:_Fillvalue = 99999.f ; 
    289    int DEPTH_QC(N_OBS, N_LEVELS) ; 
    290       DEPTH_QC:long_name = "Quality on depth" ; 
    291       DEPTH_QC:Conventions = "q where q =[0,9]" ; 
    292       DEPTH_QC:_Fillvalue = 0 ; 
    293    int DEPTH_QC_FLAGS(N_OBS, N_LEVELS, N_QCF) ; 
    294       DEPTH_QC_FLAGS:long_name = "Quality flags on depth" ; 
    295       DEPTH_QC_FLAGS:Conventions = "NEMOVAR flag conventions" ; 
    296    double JULD(N_OBS) ; 
    297       JULD:long_name = "Julian day" ; 
    298       JULD:units = "days since JULD_REFERENCE" ; 
    299       JULD:Conventions = "relative julian days with decimal part (as parts of day)" ; 
    300       JULD:_Fillvalue = 99999.f ; 
    301    char JULD_REFERENCE(STRINGJULD) ; 
    302       JULD_REFERENCE:long_name = "Date of reference for julian days" ; 
    303       JULD_REFERENCE:Conventions = "YYYYMMDDHHMMSS" ; 
    304    int OBSERVATION_QC(N_OBS) ; 
    305       OBSERVATION_QC:long_name = "Quality on observation" ; 
    306       OBSERVATION_QC:Conventions = "q where q =[0,9]" ; 
    307       OBSERVATION_QC:_Fillvalue = 0 ; 
    308    int OBSERVATION_QC_FLAGS(N_OBS, N_QCF) ; 
    309       OBSERVATION_QC_FLAGS:long_name = "Quality flags on observation" ; 
    310       OBSERVATION_QC_FLAGS:Conventions = "NEMOVAR flag conventions" ; 
    311       OBSERVATION_QC_FLAGS:_Fillvalue = 0 ; 
    312    int POSITION_QC(N_OBS) ; 
    313       POSITION_QC:long_name = "Quality on position (latitude and longitude)" ; 
    314       POSITION_QC:Conventions = "q where q =[0,9]" ; 
    315       POSITION_QC:_Fillvalue = 0 ; 
    316    int POSITION_QC_FLAGS(N_OBS, N_QCF) ; 
    317       POSITION_QC_FLAGS:long_name = "Quality flags on position" ; 
    318       POSITION_QC_FLAGS:Conventions = "NEMOVAR flag conventions" ; 
    319       POSITION_QC_FLAGS:_Fillvalue = 0 ; 
    320    int JULD_QC(N_OBS) ; 
    321       JULD_QC:long_name = "Quality on date and time" ; 
    322       JULD_QC:Conventions = "q where q =[0,9]" ; 
    323       JULD_QC:_Fillvalue = 0 ; 
    324    int JULD_QC_FLAGS(N_OBS, N_QCF) ; 
    325       JULD_QC_FLAGS:long_name = "Quality flags on date and time" ; 
    326       JULD_QC_FLAGS:Conventions = "NEMOVAR flag conventions" ; 
    327       JULD_QC_FLAGS:_Fillvalue = 0 ; 
    328    int ORIGINAL_FILE_INDEX(N_OBS) ; 
    329       ORIGINAL_FILE_INDEX:long_name = "Index in original data file" ; 
    330       ORIGINAL_FILE_INDEX:_Fillvalue = -99999 ; 
    331    float SLA_OBS(N_OBS, N_LEVELS) ; 
    332       SLA_OBS:long_name = "Sea level anomaly" ; 
    333       SLA_OBS:units = "metre" ; 
    334       SLA_OBS:_Fillvalue = 99999.f ; 
    335    float SLA_Hx(N_OBS, N_LEVELS) ; 
    336       SLA_Hx:long_name = "Model interpolated sea level anomaly" ; 
    337       SLA_Hx:units = "metre" ; 
    338       SLA_Hx:_Fillvalue = 99999.f ; 
    339    int SLA_QC(N_OBS) ; 
    340       SLA_QC:long_name = "Quality on sea level anomaly" ; 
    341       SLA_QC:Conventions = "q where q =[0,9]" ; 
    342       SLA_QC:_Fillvalue = 0 ; 
    343    int SLA_QC_FLAGS(N_OBS, N_QCF) ; 
    344       SLA_QC_FLAGS:long_name = "Quality flags on sea level anomaly" ; 
    345       SLA_QC_FLAGS:Conventions = "NEMOVAR flag conventions" ; 
    346       SLA_QC_FLAGS:_Fillvalue = 0 ; 
    347    int SLA_LEVEL_QC(N_OBS, N_LEVELS) ; 
    348       SLA_LEVEL_QC:long_name = "Quality for each level on sea level anomaly" ; 
    349       SLA_LEVEL_QC:Conventions = "q where q =[0,9]" ; 
    350       SLA_LEVEL_QC:_Fillvalue = 0 ; 
    351    int SLA_LEVEL_QC_FLAGS(N_OBS, N_LEVELS, N_QCF) ; 
    352       SLA_LEVEL_QC_FLAGS:long_name = "Quality flags for each level on sea level anomaly" ; 
    353       SLA_LEVEL_QC_FLAGS:Conventions = "NEMOVAR flag conventions" ; 
    354       SLA_LEVEL_QC_FLAGS:_Fillvalue = 0 ; 
    355    int SLA_IOBSI(N_OBS) ; 
    356       SLA_IOBSI:long_name = "ORCA grid search I coordinate" ; 
    357    int SLA_IOBSJ(N_OBS) ; 
    358       SLA_IOBSJ:long_name = "ORCA grid search J coordinate" ; 
    359    int SLA_IOBSK(N_OBS, N_LEVELS) ; 
    360       SLA_IOBSK:long_name = "ORCA grid search K coordinate" ; 
    361    char SLA_GRID(STRINGGRID) ; 
    362       SLA_GRID:long_name = "ORCA grid search grid (T,U,V)" ; 
    363    float MDT(N_OBS, N_LEVELS) ; 
    364       MDT:long_name = "Mean Dynamic Topography" ; 
    365       MDT:units = "metre" ; 
    366       MDT:_Fillvalue = 99999.f ; 
     291     char VARIABLES(N_VARS, STRINGNAM) ; 
     292          VARIABLES:long_name = "List of variables in feedback files" ; 
     293     char ENTRIES(N_ENTRIES, STRINGNAM) ; 
     294          ENTRIES:long_name = "List of additional entries for each variable in feedback files" ; 
     295     char EXTRA(N_EXTRA, STRINGNAM) ; 
     296          EXTRA:long_name = "List of extra variables" ; 
     297     char STATION_IDENTIFIER(N_OBS, STRINGWMO) ; 
     298          STATION_IDENTIFIER:long_name = "Station identifier" ; 
     299     char STATION_TYPE(N_OBS, STRINGTYP) ; 
     300          STATION_TYPE:long_name = "Code instrument type" ; 
     301     double LONGITUDE(N_OBS) ; 
     302          LONGITUDE:long_name = "Longitude" ; 
     303          LONGITUDE:units = "degrees_east" ; 
     304          LONGITUDE:_Fillvalue = 99999.f ; 
     305     double LATITUDE(N_OBS) ; 
     306          LATITUDE:long_name = "Latitude" ; 
     307          LATITUDE:units = "degrees_north" ; 
     308          LATITUDE:_Fillvalue = 99999.f ; 
     309     double DEPTH(N_OBS, N_LEVELS) ; 
     310          DEPTH:long_name = "Depth" ; 
     311          DEPTH:units = "metre" ; 
     312          DEPTH:_Fillvalue = 99999.f ; 
     313     int DEPTH_QC(N_OBS, N_LEVELS) ; 
     314          DEPTH_QC:long_name = "Quality on depth" ; 
     315          DEPTH_QC:Conventions = "q where q =[0,9]" ; 
     316          DEPTH_QC:_Fillvalue = 0 ; 
     317     int DEPTH_QC_FLAGS(N_OBS, N_LEVELS, N_QCF) ; 
     318          DEPTH_QC_FLAGS:long_name = "Quality flags on depth" ; 
     319          DEPTH_QC_FLAGS:Conventions = "NEMOVAR flag conventions" ; 
     320     double JULD(N_OBS) ; 
     321          JULD:long_name = "Julian day" ; 
     322          JULD:units = "days since JULD_REFERENCE" ; 
     323          JULD:Conventions = "relative julian days with decimal part (as parts of day)" ; 
     324          JULD:_Fillvalue = 99999.f ; 
     325     char JULD_REFERENCE(STRINGJULD) ; 
     326          JULD_REFERENCE:long_name = "Date of reference for julian days" ; 
     327          JULD_REFERENCE:Conventions = "YYYYMMDDHHMMSS" ; 
     328     int OBSERVATION_QC(N_OBS) ; 
     329          OBSERVATION_QC:long_name = "Quality on observation" ; 
     330          OBSERVATION_QC:Conventions = "q where q =[0,9]" ; 
     331          OBSERVATION_QC:_Fillvalue = 0 ; 
     332     int OBSERVATION_QC_FLAGS(N_OBS, N_QCF) ; 
     333          OBSERVATION_QC_FLAGS:long_name = "Quality flags on observation" ; 
     334          OBSERVATION_QC_FLAGS:Conventions = "NEMOVAR flag conventions" ; 
     335          OBSERVATION_QC_FLAGS:_Fillvalue = 0 ; 
     336     int POSITION_QC(N_OBS) ; 
     337          POSITION_QC:long_name = "Quality on position (latitude and longitude)" ; 
     338          POSITION_QC:Conventions = "q where q =[0,9]" ; 
     339          POSITION_QC:_Fillvalue = 0 ; 
     340     int POSITION_QC_FLAGS(N_OBS, N_QCF) ; 
     341          POSITION_QC_FLAGS:long_name = "Quality flags on position" ; 
     342          POSITION_QC_FLAGS:Conventions = "NEMOVAR flag conventions" ; 
     343          POSITION_QC_FLAGS:_Fillvalue = 0 ; 
     344     int JULD_QC(N_OBS) ; 
     345          JULD_QC:long_name = "Quality on date and time" ; 
     346          JULD_QC:Conventions = "q where q =[0,9]" ; 
     347          JULD_QC:_Fillvalue = 0 ; 
     348     int JULD_QC_FLAGS(N_OBS, N_QCF) ; 
     349          JULD_QC_FLAGS:long_name = "Quality flags on date and time" ; 
     350          JULD_QC_FLAGS:Conventions = "NEMOVAR flag conventions" ; 
     351          JULD_QC_FLAGS:_Fillvalue = 0 ; 
     352     int ORIGINAL_FILE_INDEX(N_OBS) ; 
     353          ORIGINAL_FILE_INDEX:long_name = "Index in original data file" ; 
     354          ORIGINAL_FILE_INDEX:_Fillvalue = -99999 ; 
     355     float SLA_OBS(N_OBS, N_LEVELS) ; 
     356          SLA_OBS:long_name = "Sea level anomaly" ; 
     357          SLA_OBS:units = "metre" ; 
     358          SLA_OBS:_Fillvalue = 99999.f ; 
     359     float SLA_Hx(N_OBS, N_LEVELS) ; 
     360          SLA_Hx:long_name = "Model interpolated sea level anomaly" ; 
     361          SLA_Hx:units = "metre" ; 
     362          SLA_Hx:_Fillvalue = 99999.f ; 
     363     int SLA_QC(N_OBS) ; 
     364          SLA_QC:long_name = "Quality on sea level anomaly" ; 
     365          SLA_QC:Conventions = "q where q =[0,9]" ; 
     366          SLA_QC:_Fillvalue = 0 ; 
     367     int SLA_QC_FLAGS(N_OBS, N_QCF) ; 
     368          SLA_QC_FLAGS:long_name = "Quality flags on sea level anomaly" ; 
     369          SLA_QC_FLAGS:Conventions = "NEMOVAR flag conventions" ; 
     370          SLA_QC_FLAGS:_Fillvalue = 0 ; 
     371     int SLA_LEVEL_QC(N_OBS, N_LEVELS) ; 
     372          SLA_LEVEL_QC:long_name = "Quality for each level on sea level anomaly" ; 
     373          SLA_LEVEL_QC:Conventions = "q where q =[0,9]" ; 
     374          SLA_LEVEL_QC:_Fillvalue = 0 ; 
     375     int SLA_LEVEL_QC_FLAGS(N_OBS, N_LEVELS, N_QCF) ; 
     376          SLA_LEVEL_QC_FLAGS:long_name = "Quality flags for each level on sea level anomaly" ; 
     377          SLA_LEVEL_QC_FLAGS:Conventions = "NEMOVAR flag conventions" ; 
     378          SLA_LEVEL_QC_FLAGS:_Fillvalue = 0 ; 
     379     int SLA_IOBSI(N_OBS) ; 
     380          SLA_IOBSI:long_name = "ORCA grid search I coordinate" ; 
     381     int SLA_IOBSJ(N_OBS) ; 
     382          SLA_IOBSJ:long_name = "ORCA grid search J coordinate" ; 
     383     int SLA_IOBSK(N_OBS, N_LEVELS) ; 
     384          SLA_IOBSK:long_name = "ORCA grid search K coordinate" ; 
     385     char SLA_GRID(STRINGGRID) ; 
     386          SLA_GRID:long_name = "ORCA grid search grid (T,U,V)" ; 
     387     float MDT(N_OBS, N_LEVELS) ; 
     388          MDT:long_name = "Mean Dynamic Topography" ; 
     389          MDT:units = "metre" ; 
     390          MDT:_Fillvalue = 99999.f ; 
    367391 
    368392// global attributes: 
    369       :title = "NEMO observation operator output" ; 
    370       :Convention = "NEMO unified observation operator output" ; 
     393          :title = "NEMO observation operator output" ; 
     394          :Convention = "NEMO unified observation operator output" ; 
    371395} 
     396\end{verbatim} 
     397\end{alltt} 
     398 
     399The mean dynamic 
     400topography (MDT) must be provided in a separate file defined on the model grid 
     401 called {\it slaReferenceLevel.nc}. The MDT is required in 
     402order to produce the model equivalent sea level anomaly from the model sea 
     403surface height. Below is an example header for this file (on the ORCA025 grid). 
     404 
     405\begin{alltt} 
     406\tiny 
     407\begin{verbatim} 
     408dimensions: 
     409        x = 1442 ; 
     410        y = 1021 ; 
     411variables: 
     412        float nav_lon(y, x) ; 
     413                nav_lon:units = "degrees_east" ; 
     414        float nav_lat(y, x) ; 
     415                nav_lat:units = "degrees_north" ; 
     416        float sossheig(y, x) ; 
     417                sossheig:_FillValue = -1.e+30f ; 
     418                sossheig:coordinates = "nav_lon nav_lat" ; 
     419                sossheig:long_name = "Mean Dynamic Topography" ; 
     420                sossheig:units = "metres" ; 
     421                sossheig:grid = "orca025T" ; 
    372422\end{verbatim} 
    373423\end{alltt} 
     
    380430netcdf sst_01 { 
    381431dimensions: 
    382    N_OBS = 33099 ; 
    383    N_LEVELS = 1 ; 
    384    N_VARS = 1 ; 
    385    N_QCF = 2 ; 
    386    N_ENTRIES = 1 ; 
    387    STRINGNAM = 8 ; 
    388    STRINGGRID = 1 ; 
    389    STRINGWMO = 8 ; 
    390    STRINGTYP = 4 ; 
    391    STRINGJULD = 14 ; 
     432     N_OBS = 33099 ; 
     433     N_LEVELS = 1 ; 
     434     N_VARS = 1 ; 
     435     N_QCF = 2 ; 
     436     N_ENTRIES = 1 ; 
     437     STRINGNAM = 8 ; 
     438     STRINGGRID = 1 ; 
     439     STRINGWMO = 8 ; 
     440     STRINGTYP = 4 ; 
     441     STRINGJULD = 14 ; 
    392442variables: 
    393    char VARIABLES(N_VARS, STRINGNAM) ; 
    394       VARIABLES:long_name = "List of variables in feedback files" ; 
    395    char ENTRIES(N_ENTRIES, STRINGNAM) ; 
    396       ENTRIES:long_name = "List of additional entries for each variable in feedback files" ; 
    397    char STATION_IDENTIFIER(N_OBS, STRINGWMO) ; 
    398       STATION_IDENTIFIER:long_name = "Station identifier" ; 
    399    char STATION_TYPE(N_OBS, STRINGTYP) ; 
    400       STATION_TYPE:long_name = "Code instrument type" ; 
    401    double LONGITUDE(N_OBS) ; 
    402       LONGITUDE:long_name = "Longitude" ; 
    403       LONGITUDE:units = "degrees_east" ; 
    404       LONGITUDE:_Fillvalue = 99999.f ; 
    405    double LATITUDE(N_OBS) ; 
    406       LATITUDE:long_name = "Latitude" ; 
    407       LATITUDE:units = "degrees_north" ; 
    408       LATITUDE:_Fillvalue = 99999.f ; 
    409    double DEPTH(N_OBS, N_LEVELS) ; 
    410       DEPTH:long_name = "Depth" ; 
    411       DEPTH:units = "metre" ; 
    412       DEPTH:_Fillvalue = 99999.f ; 
    413    int DEPTH_QC(N_OBS, N_LEVELS) ; 
    414       DEPTH_QC:long_name = "Quality on depth" ; 
    415       DEPTH_QC:Conventions = "q where q =[0,9]" ; 
    416       DEPTH_QC:_Fillvalue = 0 ; 
    417    int DEPTH_QC_FLAGS(N_OBS, N_LEVELS, N_QCF) ; 
    418       DEPTH_QC_FLAGS:long_name = "Quality flags on depth" ; 
    419       DEPTH_QC_FLAGS:Conventions = "NEMOVAR flag conventions" ; 
    420    double JULD(N_OBS) ; 
    421       JULD:long_name = "Julian day" ; 
    422       JULD:units = "days since JULD_REFERENCE" ; 
    423       JULD:Conventions = "relative julian days with decimal part (as parts of day)" ; 
    424       JULD:_Fillvalue = 99999.f ; 
    425    char JULD_REFERENCE(STRINGJULD) ; 
    426       JULD_REFERENCE:long_name = "Date of reference for julian days" ; 
    427       JULD_REFERENCE:Conventions = "YYYYMMDDHHMMSS" ; 
    428    int OBSERVATION_QC(N_OBS) ; 
    429       OBSERVATION_QC:long_name = "Quality on observation" ; 
    430       OBSERVATION_QC:Conventions = "q where q =[0,9]" ; 
    431       OBSERVATION_QC:_Fillvalue = 0 ; 
    432    int OBSERVATION_QC_FLAGS(N_OBS, N_QCF) ; 
    433       OBSERVATION_QC_FLAGS:long_name = "Quality flags on observation" ; 
    434       OBSERVATION_QC_FLAGS:Conventions = "NEMOVAR flag conventions" ; 
    435       OBSERVATION_QC_FLAGS:_Fillvalue = 0 ; 
    436    int POSITION_QC(N_OBS) ; 
    437       POSITION_QC:long_name = "Quality on position (latitude and longitude)" ; 
    438       POSITION_QC:Conventions = "q where q =[0,9]" ; 
    439       POSITION_QC:_Fillvalue = 0 ; 
    440    int POSITION_QC_FLAGS(N_OBS, N_QCF) ; 
    441       POSITION_QC_FLAGS:long_name = "Quality flags on position" ; 
    442       POSITION_QC_FLAGS:Conventions = "NEMOVAR flag conventions" ; 
    443       POSITION_QC_FLAGS:_Fillvalue = 0 ; 
    444    int JULD_QC(N_OBS) ; 
    445       JULD_QC:long_name = "Quality on date and time" ; 
    446       JULD_QC:Conventions = "q where q =[0,9]" ; 
    447       JULD_QC:_Fillvalue = 0 ; 
    448    int JULD_QC_FLAGS(N_OBS, N_QCF) ; 
    449       JULD_QC_FLAGS:long_name = "Quality flags on date and time" ; 
    450       JULD_QC_FLAGS:Conventions = "NEMOVAR flag conventions" ; 
    451       JULD_QC_FLAGS:_Fillvalue = 0 ; 
    452    int ORIGINAL_FILE_INDEX(N_OBS) ; 
    453       ORIGINAL_FILE_INDEX:long_name = "Index in original data file" ; 
    454       ORIGINAL_FILE_INDEX:_Fillvalue = -99999 ; 
    455    float SST_OBS(N_OBS, N_LEVELS) ; 
    456       SST_OBS:long_name = "Sea surface temperature" ; 
    457       SST_OBS:units = "Degree centigrade" ; 
    458       SST_OBS:_Fillvalue = 99999.f ; 
    459    float SST_Hx(N_OBS, N_LEVELS) ; 
    460       SST_Hx:long_name = "Model interpolated sea surface temperature" ; 
    461       SST_Hx:units = "Degree centigrade" ; 
    462       SST_Hx:_Fillvalue = 99999.f ; 
    463    int SST_QC(N_OBS) ; 
    464       SST_QC:long_name = "Quality on sea surface temperature" ; 
    465       SST_QC:Conventions = "q where q =[0,9]" ; 
    466       SST_QC:_Fillvalue = 0 ; 
    467    int SST_QC_FLAGS(N_OBS, N_QCF) ; 
    468       SST_QC_FLAGS:long_name = "Quality flags on sea surface temperature" ; 
    469       SST_QC_FLAGS:Conventions = "NEMOVAR flag conventions" ; 
    470       SST_QC_FLAGS:_Fillvalue = 0 ; 
    471    int SST_LEVEL_QC(N_OBS, N_LEVELS) ; 
    472       SST_LEVEL_QC:long_name = "Quality for each level on sea surface temperature" ; 
    473       SST_LEVEL_QC:Conventions = "q where q =[0,9]" ; 
    474       SST_LEVEL_QC:_Fillvalue = 0 ; 
    475    int SST_LEVEL_QC_FLAGS(N_OBS, N_LEVELS, N_QCF) ; 
    476       SST_LEVEL_QC_FLAGS:long_name = "Quality flags for each level on sea surface temperature" ; 
    477       SST_LEVEL_QC_FLAGS:Conventions = "NEMOVAR flag conventions" ; 
    478       SST_LEVEL_QC_FLAGS:_Fillvalue = 0 ; 
    479    int SST_IOBSI(N_OBS) ; 
    480       SST_IOBSI:long_name = "ORCA grid search I coordinate" ; 
    481    int SST_IOBSJ(N_OBS) ; 
    482       SST_IOBSJ:long_name = "ORCA grid search J coordinate" ; 
    483    int SST_IOBSK(N_OBS, N_LEVELS) ; 
    484       SST_IOBSK:long_name = "ORCA grid search K coordinate" ; 
    485    char SST_GRID(STRINGGRID) ; 
    486       SST_GRID:long_name = "ORCA grid search grid (T,U,V)" ; 
     443     char VARIABLES(N_VARS, STRINGNAM) ; 
     444          VARIABLES:long_name = "List of variables in feedback files" ; 
     445     char ENTRIES(N_ENTRIES, STRINGNAM) ; 
     446          ENTRIES:long_name = "List of additional entries for each variable in feedback files" ; 
     447     char STATION_IDENTIFIER(N_OBS, STRINGWMO) ; 
     448          STATION_IDENTIFIER:long_name = "Station identifier" ; 
     449     char STATION_TYPE(N_OBS, STRINGTYP) ; 
     450          STATION_TYPE:long_name = "Code instrument type" ; 
     451     double LONGITUDE(N_OBS) ; 
     452          LONGITUDE:long_name = "Longitude" ; 
     453          LONGITUDE:units = "degrees_east" ; 
     454          LONGITUDE:_Fillvalue = 99999.f ; 
     455     double LATITUDE(N_OBS) ; 
     456          LATITUDE:long_name = "Latitude" ; 
     457          LATITUDE:units = "degrees_north" ; 
     458          LATITUDE:_Fillvalue = 99999.f ; 
     459     double DEPTH(N_OBS, N_LEVELS) ; 
     460          DEPTH:long_name = "Depth" ; 
     461          DEPTH:units = "metre" ; 
     462          DEPTH:_Fillvalue = 99999.f ; 
     463     int DEPTH_QC(N_OBS, N_LEVELS) ; 
     464          DEPTH_QC:long_name = "Quality on depth" ; 
     465          DEPTH_QC:Conventions = "q where q =[0,9]" ; 
     466          DEPTH_QC:_Fillvalue = 0 ; 
     467     int DEPTH_QC_FLAGS(N_OBS, N_LEVELS, N_QCF) ; 
     468          DEPTH_QC_FLAGS:long_name = "Quality flags on depth" ; 
     469          DEPTH_QC_FLAGS:Conventions = "NEMOVAR flag conventions" ; 
     470     double JULD(N_OBS) ; 
     471          JULD:long_name = "Julian day" ; 
     472          JULD:units = "days since JULD_REFERENCE" ; 
     473          JULD:Conventions = "relative julian days with decimal part (as parts of day)" ; 
     474          JULD:_Fillvalue = 99999.f ; 
     475     char JULD_REFERENCE(STRINGJULD) ; 
     476          JULD_REFERENCE:long_name = "Date of reference for julian days" ; 
     477          JULD_REFERENCE:Conventions = "YYYYMMDDHHMMSS" ; 
     478     int OBSERVATION_QC(N_OBS) ; 
     479          OBSERVATION_QC:long_name = "Quality on observation" ; 
     480          OBSERVATION_QC:Conventions = "q where q =[0,9]" ; 
     481          OBSERVATION_QC:_Fillvalue = 0 ; 
     482     int OBSERVATION_QC_FLAGS(N_OBS, N_QCF) ; 
     483          OBSERVATION_QC_FLAGS:long_name = "Quality flags on observation" ; 
     484          OBSERVATION_QC_FLAGS:Conventions = "NEMOVAR flag conventions" ; 
     485          OBSERVATION_QC_FLAGS:_Fillvalue = 0 ; 
     486     int POSITION_QC(N_OBS) ; 
     487          POSITION_QC:long_name = "Quality on position (latitude and longitude)" ; 
     488          POSITION_QC:Conventions = "q where q =[0,9]" ; 
     489          POSITION_QC:_Fillvalue = 0 ; 
     490     int POSITION_QC_FLAGS(N_OBS, N_QCF) ; 
     491          POSITION_QC_FLAGS:long_name = "Quality flags on position" ; 
     492          POSITION_QC_FLAGS:Conventions = "NEMOVAR flag conventions" ; 
     493          POSITION_QC_FLAGS:_Fillvalue = 0 ; 
     494     int JULD_QC(N_OBS) ; 
     495          JULD_QC:long_name = "Quality on date and time" ; 
     496          JULD_QC:Conventions = "q where q =[0,9]" ; 
     497          JULD_QC:_Fillvalue = 0 ; 
     498     int JULD_QC_FLAGS(N_OBS, N_QCF) ; 
     499          JULD_QC_FLAGS:long_name = "Quality flags on date and time" ; 
     500          JULD_QC_FLAGS:Conventions = "NEMOVAR flag conventions" ; 
     501          JULD_QC_FLAGS:_Fillvalue = 0 ; 
     502     int ORIGINAL_FILE_INDEX(N_OBS) ; 
     503          ORIGINAL_FILE_INDEX:long_name = "Index in original data file" ; 
     504          ORIGINAL_FILE_INDEX:_Fillvalue = -99999 ; 
     505     float SST_OBS(N_OBS, N_LEVELS) ; 
     506          SST_OBS:long_name = "Sea surface temperature" ; 
     507          SST_OBS:units = "Degree centigrade" ; 
     508          SST_OBS:_Fillvalue = 99999.f ; 
     509     float SST_Hx(N_OBS, N_LEVELS) ; 
     510          SST_Hx:long_name = "Model interpolated sea surface temperature" ; 
     511          SST_Hx:units = "Degree centigrade" ; 
     512          SST_Hx:_Fillvalue = 99999.f ; 
     513     int SST_QC(N_OBS) ; 
     514          SST_QC:long_name = "Quality on sea surface temperature" ; 
     515          SST_QC:Conventions = "q where q =[0,9]" ; 
     516          SST_QC:_Fillvalue = 0 ; 
     517     int SST_QC_FLAGS(N_OBS, N_QCF) ; 
     518          SST_QC_FLAGS:long_name = "Quality flags on sea surface temperature" ; 
     519          SST_QC_FLAGS:Conventions = "NEMOVAR flag conventions" ; 
     520          SST_QC_FLAGS:_Fillvalue = 0 ; 
     521     int SST_LEVEL_QC(N_OBS, N_LEVELS) ; 
     522          SST_LEVEL_QC:long_name = "Quality for each level on sea surface temperature" ; 
     523          SST_LEVEL_QC:Conventions = "q where q =[0,9]" ; 
     524          SST_LEVEL_QC:_Fillvalue = 0 ; 
     525     int SST_LEVEL_QC_FLAGS(N_OBS, N_LEVELS, N_QCF) ; 
     526          SST_LEVEL_QC_FLAGS:long_name = "Quality flags for each level on sea surface temperature" ; 
     527          SST_LEVEL_QC_FLAGS:Conventions = "NEMOVAR flag conventions" ; 
     528          SST_LEVEL_QC_FLAGS:_Fillvalue = 0 ; 
     529     int SST_IOBSI(N_OBS) ; 
     530          SST_IOBSI:long_name = "ORCA grid search I coordinate" ; 
     531     int SST_IOBSJ(N_OBS) ; 
     532          SST_IOBSJ:long_name = "ORCA grid search J coordinate" ; 
     533     int SST_IOBSK(N_OBS, N_LEVELS) ; 
     534          SST_IOBSK:long_name = "ORCA grid search K coordinate" ; 
     535     char SST_GRID(STRINGGRID) ; 
     536          SST_GRID:long_name = "ORCA grid search grid (T,U,V)" ; 
    487537 
    488538// global attributes: 
    489       :title = "NEMO observation operator output" ; 
    490       :Convention = "NEMO unified observation operator output" ; 
     539          :title = "NEMO observation operator output" ; 
     540          :Convention = "NEMO unified observation operator output" ; 
    491541} 
    492542\end{verbatim} 
     
    494544 
    495545\section{Theoretical details} 
     546\label{OBS_theory} 
    496547 
    497548\subsection{Horizontal interpolation methods} 
     
    669720with explicit message passing for exchange of information along the 
    670721domain boundaries when running on a massively parallel processor (MPP) 
    671 system. This approach is used by the \NEMO. 
     722system. This approach is used by \NEMO. 
    672723 
    673724For observations there is no natural distribution since the 
     
    679730 
    680731%>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
    681 \begin{figure}    \begin{center} 
     732\begin{figure}      \begin{center} 
    682733\includegraphics[width=10cm,height=12cm,angle=-90.]{./TexFiles/Figures/Fig_ASM_obsdist_local} 
    683 \caption{   \label{fig:obslocal} 
     734\caption{      \label{fig:obslocal} 
    684735Example of the distribution of observations with the geographical distribution of observational data.}  
    685 \end{center}   \end{figure} 
     736\end{center}      \end{figure} 
    686737%>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
    687738 
     
    706757 
    707758%>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
    708 \begin{figure} \begin{center} 
     759\begin{figure}     \begin{center} 
    709760\includegraphics[width=10cm,height=12cm,angle=-90.]{./TexFiles/Figures/Fig_ASM_obsdist_global} 
    710 \caption{   \label{fig:obsglobal} 
     761\caption{      \label{fig:obsglobal} 
    711762Example of the distribution of observations with the round-robin distribution of observational data.} 
    712 \end{center}   \end{figure} 
     763\end{center}     \end{figure} 
    713764%>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
    714765 
  • branches/nemo_v3_3_beta/NEMOGCM/NEMO/OPA_SRC/OBS/diaobs.F90

    r2358 r2474  
    347347         WRITE(numout,*) 'dia_obs_init : Observation diagnostic initialization' 
    348348         WRITE(numout,*) '~~~~~~~~~~~~' 
    349 #if defined key_datetime_out 
    350          CALL DATE_AND_TIME(datestr,timestr)          
    351          WRITE(numout,*) 'dia_obs_init date_and_time ',datestr,' ',timestr 
    352 #endif 
    353349         WRITE(numout,*) '          Namelist namobs : set observation diagnostic parameters'  
    354350         WRITE(numout,*) '             Logical switch for T profile observations          ln_t3d = ', ln_t3d 
     
    551547         IF ( ln_ena ) THEN 
    552548 
    553 #if defined key_datetime_out 
    554             IF (lwp) THEN 
    555                CALL DATE_AND_TIME(datestr,timestr)          
    556                WRITE(numout,*) 'Read enact date_and_time ',datestr,' ',timestr 
    557             ENDIF 
    558 #endif             
    559549            jprofset = jprofset + 1 
    560550             
     
    649639      !  - Sea level anomalies 
    650640      IF ( ln_sla ) THEN 
    651 #if defined key_datetime_out 
    652          IF (lwp) THEN 
    653             CALL DATE_AND_TIME(datestr,timestr)          
    654             WRITE(numout,*) 'Read SLA date_and_time ',datestr,' ',timestr 
    655          ENDIF 
    656 #endif 
    657          ! Set the number of variables for sla to 1 
     641        ! Set the number of variables for sla to 1 
    658642         nslavars = 1 
    659643 
     
    689673               &              nslavars, nslaextr, nitend-nit000+2, & 
    690674               &              dobsini, dobsend, ln_ignmis, .FALSE. ) 
    691 #if defined key_datetime_out 
    692             IF (lwp) THEN 
    693                CALL DATE_AND_TIME(datestr,timestr)          
    694                WRITE(numout,*) 'obs_pre_sla date_and_time ',datestr,' ',timestr 
    695             ENDIF 
    696 #endif 
    697675            CALL obs_pre_sla( sladata(nslasets), sladatqc(nslasets), & 
    698676               &              ln_sla, ln_nea ) 
     
    702680            nslasets = nslasets + 1 
    703681             
    704 #if defined key_datetime_out 
    705             IF (lwp) THEN 
    706                CALL DATE_AND_TIME(datestr,timestr)          
    707                WRITE(numout,*) 'obs_pre_sla date_and_time ',datestr,' ',timestr 
    708             ENDIF 
    709 #endif 
    710682            CALL obs_rea_sla( 1, sladata(nslasets), jnumslapas, & 
    711683               &              slafilespas(1:jnumslapas), & 
     
    713685               &              dobsini, dobsend, ln_ignmis, .FALSE. ) 
    714686             
    715 #if defined key_datetime_out 
    716             IF (lwp) THEN 
    717                CALL DATE_AND_TIME(datestr,timestr)          
    718                WRITE(numout,*) 'obs_pre_sla date_and_time ',datestr,' ',timestr 
    719             ENDIF 
    720 #endif 
    721687            CALL obs_pre_sla( sladata(nslasets), sladatqc(nslasets), & 
    722688               &              ln_sla, ln_nea ) 
     
    736702                  &              nslavars, nslaextr, nitend-nit000+2, & 
    737703                  &              dobsini, dobsend, ln_ignmis, .FALSE. ) 
    738 #if defined key_datetime_out 
    739                IF (lwp) THEN 
    740                   CALL DATE_AND_TIME(datestr,timestr)          
    741                   WRITE(numout,*) 'obs_pre_sla date_and_time ',datestr,' ',timestr 
    742                ENDIF 
    743 #endif 
    744704               CALL obs_pre_sla( sladata(nslasets), sladatqc(nslasets), & 
    745705                  &              ln_sla, ln_nea ) 
     
    749709         ENDIF 
    750710          
    751 #if defined key_datetime_out 
    752          IF (lwp) THEN 
    753             CALL DATE_AND_TIME(datestr,timestr)          
    754             WRITE(numout,*) 'obs_rea_mdt date_and_time ',datestr,' ',timestr 
    755          ENDIF 
    756 #endif 
    757711         CALL obs_rea_mdt( nslasets, sladatqc, n2dint ) 
    758712             
     
    772726      !  - Sea surface temperature 
    773727      IF ( ln_sst ) THEN 
    774 #if defined key_datetime_out 
    775          IF (lwp) THEN 
    776             CALL DATE_AND_TIME(datestr,timestr)          
    777             WRITE(numout,*) 'Read SST date_and_time ',datestr,' ',timestr 
    778          ENDIF 
    779 #endif 
    780728 
    781729         ! Set the number of variables for sst to 1 
     
    820768               &              nsstvars, nsstextr, nitend-nit000+2, & 
    821769               &              dobsini, dobsend, ln_ignmis, .FALSE. ) 
    822 #if defined key_datetime_out 
    823             IF (lwp) THEN 
    824                CALL DATE_AND_TIME(datestr,timestr)          
    825                WRITE(numout,*) 'obs_pre_sst date_and_time ',datestr,' ',timestr 
    826             ENDIF 
    827 #endif 
    828770            CALL obs_pre_sst( sstdata(nsstsets), sstdatqc(nsstsets), ln_sst, & 
    829771               &              ln_nea ) 
     
    843785                  &              nsstvars, nsstextr, nitend-nit000+2, & 
    844786                  &              dobsini, dobsend, ln_ignmis, .FALSE. ) 
    845 #if defined key_datetime_out 
    846                IF (lwp) THEN 
    847                   CALL DATE_AND_TIME(datestr,timestr)          
    848                   WRITE(numout,*) 'obs_pre_sst date_and_time ',datestr,' ',timestr 
    849                ENDIF 
    850 #endif 
    851787               CALL obs_pre_sst( sstdata(nsstsets), sstdatqc(nsstsets), & 
    852788                  &              ln_sst, ln_nea ) 
     
    866802       
    867803      IF ( ln_seaice ) THEN 
    868  
    869 #if defined key_datetime_out 
    870          IF (lwp) THEN 
    871             CALL DATE_AND_TIME(datestr,timestr)          
    872             WRITE(numout,*) 'Read sea ice data date_and_time ',datestr,' ',timestr 
    873          ENDIF 
    874 #endif 
    875804 
    876805         ! Set the number of variables for seaice to 1 
     
    892821            &                 nseaicevars, nseaiceextr, nitend-nit000+2, & 
    893822            &                 dobsini, dobsend, ln_ignmis, .FALSE. ) 
    894  
    895 #if defined key_datetime_out 
    896          IF (lwp) THEN 
    897             CALL DATE_AND_TIME(datestr,timestr)          
    898             WRITE(numout,*) 'obs_pre_seaice date_and_time ',datestr,' ',timestr 
    899          ENDIF 
    900 #endif 
    901823 
    902824         CALL obs_pre_seaice( seaicedata(nseaicesets), seaicedatqc(nseaicesets), & 
     
    1060982 
    1061983      ENDIF 
    1062  
    1063 #if defined key_datetime_out 
    1064       IF (lwp) THEN 
    1065          CALL DATE_AND_TIME(datestr,timestr)          
    1066          WRITE(numout,*) 'end dia_obs_init date_and_time ',datestr,' ',timestr 
    1067       ENDIF 
    1068 #endif 
    1069984      
    1070985   END SUBROUTINE dia_obs_init 
     
    11331048         WRITE(numout,*) 'dia_obs : Call the observation operators', kstp 
    11341049         WRITE(numout,*) '~~~~~~~' 
    1135 #if defined key_datetime_out 
    1136          CALL DATE_AND_TIME(datestr,timestr)          
    1137       WRITE(numout,*) 'dia_obs date_and_time ',datestr,' ',timestr 
    1138 #endif 
    11391050      ENDIF 
    11401051 
     
    12101121      ENDIF 
    12111122 
    1212 #if defined key_datetime_out 
    1213       IF(lwp) THEN 
    1214          CALL DATE_AND_TIME(datestr,timestr)          
    1215          WRITE(numout,*) 'dia_obs finished date_and_time ',datestr,' ',timestr 
    1216       ENDIF 
    1217 #endif 
    1218  
    12191123   END SUBROUTINE dia_obs 
    12201124   
     
    12531157      !----------------------------------------------------------------------- 
    12541158 
    1255 #if defined key_datetime_out 
    1256       IF (lwp) THEN 
    1257          CALL DATE_AND_TIME(datestr,timestr)          
    1258          WRITE(numout,*) 'dia_obs_wri date_and_time ',datestr,' ',timestr 
    1259       ENDIF 
    1260 #endif 
    1261  
    12621159      !  - Temperature/salinity profiles 
    12631160 
     
    12751172 
    12761173         jprofset = 0 
    1277            
    12781174 
    12791175         ! ENACT insitu data 
     
    14981394          
    14991395      ENDIF 
    1500  
    1501 #if defined key_datetime_out 
    1502       IF (lwp) THEN 
    1503          CALL DATE_AND_TIME(datestr,timestr)          
    1504          WRITE(numout,*) 'dia_obs_wri end date_and_time ',datestr,' ',timestr 
    1505       ENDIF 
    1506 #endif 
    15071396 
    15081397   END SUBROUTINE dia_obs_wri 
  • branches/nemo_v3_3_beta/NEMOGCM/NEMO/OPA_SRC/OBS/obs_grid.F90

    r2358 r2474  
    685685         WRITE(numout,*) 'Calling obs_grid_setup' 
    686686          
    687 #ifdef key_datetime_out 
    688          IF (lwp) THEN 
    689             CALL DATE_AND_TIME(datestr,timestr) 
    690             WRITE(numout,*) 'obs_grid_setup begin date_and_time ',datestr,' ',timestr 
    691          ENDIF 
    692 #endif 
    693           
    694687         IF(lwp) WRITE(numout,*) 
    695688         IF(lwp) WRITE(numout,*)'Grid search resolution : ', grid_search_res 
  • branches/nemo_v3_3_beta/NEMOGCM/NEMO/OPA_SRC/OBS/obs_mpp.F90

    r2363 r2474  
    88   !!             -   ! 2008-01  (K. Mogensen)  add mpp_global_max 
    99   !!---------------------------------------------------------------------- 
    10 #if defined key_mpp_mpi 
    11 # if defined key_sp 
    12 #  define mpivar mpi_real 
    13 # else 
    1410#  define mpivar mpi_double_precision 
    15 # endif 
    16 #endif 
    1711   !!---------------------------------------------------------------------- 
    1812   !! obs_mpp_bcast_integer : Broadcast an integer array from a processor to all processors 
  • branches/nemo_v3_3_beta/NEMOGCM/NEMO/OPA_SRC/OBS/obsinter_h2d.h90

    r2287 r2474  
    10571057      itermax = 100 
    10581058 
    1059 #if defined key_sp 
    1060       zeps = 1.0e-6_wp 
    1061 #else 
    1062       zeps = 1.0e-10_wp       
    1063 #endif 
     1059      IF ( wp == sp ) THEN 
     1060         zeps = 1.0e-6_wp  ! Single precision 
     1061      ELSE 
     1062         zeps = 1.0e-10_wp      ! Double precision 
     1063      ENDIF 
    10641064   
    10651065      !------------------------------------------------------------------------ 
  • branches/nemo_v3_3_beta/NEMOGCM/NEMO/OPA_SRC/step.F90

    r2392 r2474  
    161161      IF( lk_diahth  )   CALL dia_hth( kstp )         ! Thermocline depth (20 degres isotherm depth) 
    162162      IF( lk_diafwb  )   CALL dia_fwb( kstp )         ! Fresh water budget diagnostics 
    163       IF( lk_diaobs  )   CALL dia_obs( kstp )         ! obs-minus-model (assimilation) diagnostics 
    164163      IF( ln_diaptr  )   CALL dia_ptr( kstp )         ! Poleward TRansports diagnostics 
    165164      IF( lk_diaar5  )   CALL dia_ar5( kstp )         ! ar5 diag 
     
    234233 
    235234      IF( ln_diahsb        )   CALL dia_hsb( kstp )         ! - ML - global conservation diagnostics 
     235      IF( lk_diaobs  )         CALL dia_obs( kstp )         ! obs-minus-model (assimilation) diagnostics (call after dynamics update) 
    236236 
    237237      !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
Note: See TracChangeset for help on using the changeset viewer.