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 3116 for branches/2011/dev_NEMO_MERGE_2011/DOC/TexFiles/Chapters/Chap_OBS.tex – NEMO

Ignore:
Timestamp:
2011-11-15T21:55:40+01:00 (13 years ago)
Author:
cetlod
Message:

dev_NEMO_MERGE_2011: add in changes dev_NOC_UKMO_MERGE developments

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2011/dev_NEMO_MERGE_2011/DOC/TexFiles/Chapters/Chap_OBS.tex

    r2483 r3116  
    1313$\ $\newline    % force a new line 
    1414 
    15 The observation and model comparison code (OBS) reads in observation files 
    16 (profile temperature and salinity, sea surface temperature, sea level anomaly, 
    17 sea ice concentration, and velocity) and calculates  an interpolated model equivalent 
    18 value at the observation location and nearest model timestep. The OBS code is 
    19 called from \np{opa.F90} in order to initialise the model and to calculate the 
    20 model equivalent values for observations on the 0th timestep. The code is then 
    21 called again after each timestep from \np{step.F90}. The code was originally 
    22 developed for use with NEMOVAR.  
    23  
    24 For all data types a 2D horizontal  interpolator is needed 
    25 to interpolate the model fields to the observation location. 
    26 For {\em in situ} profiles, a 1D vertical interpolator is needed in addition to 
    27 provide model fields at the observation depths. Currently this only works in 
    28 z-level model configurations, but is being developed to work with a 
    29 generalised vertical coordinate system. 
    30 Temperature data from moored buoys (TAO, TRITON, PIRATA) in the 
    31 ENACT/ENSEMBLES data-base are available as daily averaged quantities. For this 
    32 type of observation the 
    33 observation operator will compare such observations to the model temperature 
     15The observation and model comparison code (OBS) reads in observation files (profile 
     16temperature and salinity, sea surface temperature, sea level anomaly, sea ice concentration, 
     17and velocity) and calculates  an interpolated model equivalent value at the observation 
     18location and nearest model timestep. The resulting data are saved in a ``feedback'' file (or 
     19files). The code was originally developed for use with the NEMOVAR data assimilation code, but 
     20can be used for validation or verification of model or  any other data assimilation system. 
     21 
     22The OBS code is called from \np{opa.F90} for model initialisation and to calculate the model 
     23equivalent values for observations on the 0th timestep. The code is then called again after 
     24each timestep from \np{step.F90}. To build with the OBS code active \key{diaobs} must be 
     25set. 
     26 
     27For all data types a 2D horizontal  interpolator is needed to interpolate the model fields to 
     28the observation location. For {\em in situ} profiles, a 1D vertical interpolator is needed in 
     29addition to provide model fields at the observation depths. Currently this only works in 
     30z-level model configurations, but is being developed to work with a generalised vertical 
     31coordinate system. Temperature data from moored buoys (TAO, TRITON, PIRATA) in the 
     32ENACT/ENSEMBLES data-base are available as daily averaged quantities. For this type of 
     33observation the observation operator will compare such observations to the model temperature 
    3434fields averaged over one day. The relevant observation type may be specified in the namelist 
    35 using \np{endailyavtypes}. Otherwise the model value from the nearest 
    36 timestep to the observation time is used. 
    37  
    38 The resulting data are saved in a ``feedback'' file (or files) which can be used 
    39 for model validation and verification and also to provide information for data 
    40 assimilation. This code is controlled by the namelist \textit{nam\_obs}. To 
    41 build with the OBS code active \key{diaobs} must be set. 
    42  
    43 Section~\ref{OBS_example} introduces a test example of the observation operator 
    44 code including where to obtain data and how to setup the namelist. 
    45 Section~\ref{OBS_details} introduces some more technical details of the 
    46 different observation types used and also shows a more complete namelist. 
    47 Finally section~\ref{OBS_theory} introduces some of the theoretical aspects of 
    48 the observation operator including interpolation methods and running on multiple 
    49 processors.  
     35using \np{endailyavtypes}. Otherwise the model value from the nearest timestep to the 
     36observation time is used. 
     37 
     38The code is controlled by the namelist \textit{nam\_obs}. See the following sections for more 
     39details on setting up the namelist.  
     40 
     41Section~\ref{OBS_example} introduces a test example of the observation operator code including 
     42where to obtain data and how to setup the namelist. Section~\ref{OBS_details} introduces some 
     43more technical details of the different observation types used and also shows a more complete 
     44namelist. Section~\ref{OBS_theory} introduces some of the theoretical aspects of the 
     45observation operator including interpolation methods and running on multiple processors. 
     46Section~\ref{OBS_obsutils} introduces some utilities to help working with the files produced 
     47by the OBS code. 
    5048 
    5149% ================================================================ 
     
    6967\item Add the following to the NEMO namelist to run the observation 
    7068operator on this data. Set the \np{enactfiles} namelist parameter to the 
    71 observation  file name (or link in to \np{profiles\_01\.nc}): 
     69observation  file name: 
    7270\end{enumerate} 
    7371 
     
    7674%------------------------------------------------------------------------------------------------------------- 
    7775 
    78 The option \np{ln\_t3d} and \np{ln\_s3d} switch on the temperature and salinity 
     76The options \np{ln\_t3d} and \np{ln\_s3d} switch on the temperature and salinity 
    7977profile observation operator code. The \np{ln\_ena} switch turns on the reading 
    8078of ENACT/ENSEMBLES type profile data. The filename or array of filenames are 
     
    8886Setting \np{ln\_grid\_global} means that the code distributes the observations 
    8987evenly between processors. Alternatively each processor will work with 
    90 observations located within the model subdomain. 
    91  
    92 The NEMOVAR system contains utilities to plot the feedback files, convert and 
    93 recombine the files. These are available on request from the NEMOVAR team. 
     88observations located within the model subdomain (see section~\ref{OBS_parallel}). 
     89 
     90A number of utilities are now provided to plot the feedback files, convert and 
     91recombine the files. These are explained in more detail in section~\ref{OBS_obsutils}. 
    9492 
    9593\section{Technical details} 
     
    713711 
    714712\subsection{Parallel aspects of horizontal interpolation} 
     713\label{OBS_parallel} 
    715714 
    716715For horizontal interpolation, there is the basic problem that the 
     
    779778\subsection{Vertical interpolation operator} 
    780779 
    781 The vertical interpolation is achieved using either a cubic spline or 
     780Vertical interpolation is achieved using either a cubic spline or 
    782781linear interpolation. For the cubic spline, the top and 
    783782bottom boundary conditions for the second derivative of the  
    784783interpolating polynomial in the spline are set to zero. 
    785784At the bottom boundary, this is done using the land-ocean mask. 
     785 
     786\newpage 
     787 
     788\section{Observation Utilities} 
     789\label{OBS_obsutils} 
     790 
     791Some tools for viewing and processing of observation and feedback files are provided in the 
     792NEMO repository for convenience. These include OBSTOOLS which are a collection of Fortran 
     793programs which are helpful to deal with feedback files. They do such tasks as observation file 
     794conversion, printing of file contents, some basic statistical analysis of feedback files. The 
     795other tool is an IDL program called dataplot which uses a graphical interface to visualise 
     796observations and feedback files. OBSTOOLS and dataplot are described in more detail below.   
     797 
     798\subsection{Obstools} 
     799 
     800A series of Fortran utilities is provided with NEMO called OBSTOOLS. This are helpful in 
     801handling observation files and the feedback file output from the NEMO observation operator. 
     802The utilities are as follows 
     803 
     804\subsubsection{corio2fb} 
     805 
     806The program corio2fb converts profile observation files from the Coriolis format to the 
     807standard feedback format. The program is called in the following way: 
     808 
     809\begin{alltt} 
     810\footnotesize 
     811\begin{verbatim} 
     812corio2fb.exe outputfile inputfile1 inputfile2 ... 
     813\end{verbatim} 
     814\end{alltt} 
     815 
     816\subsubsection{enact2fb} 
     817 
     818The program enact2fb converts profile observation files from the ENACT format to the standard 
     819feedback format. The program is called in the following way: 
     820 
     821\begin{alltt} 
     822\footnotesize 
     823\begin{verbatim} 
     824enact2fb.exe outputfile inputfile1 inputfile2 ... 
     825\end{verbatim} 
     826\end{alltt} 
     827 
     828\subsubsection{fbcomb} 
     829 
     830The program fbcomb combines multiple feedback files produced by individual processors in an 
     831MPI run of NEMO into a single feedback file. The program is called in the following way: 
     832 
     833\begin{alltt} 
     834\footnotesize 
     835\begin{verbatim} 
     836fbcomb.exe outputfile inputfile1 inputfile2 ... 
     837\end{verbatim} 
     838\end{alltt} 
     839 
     840\subsubsection{fbmatchup} 
     841 
     842The program fbmatchup will match observations from two feedback files. The program is called 
     843in the following way: 
     844 
     845\begin{alltt} 
     846\footnotesize 
     847\begin{verbatim} 
     848fbmatchup.exe outputfile inputfile1 varname1 inputfile2 varname2 ... 
     849\end{verbatim} 
     850\end{alltt} 
     851 
     852 
     853\subsubsection{fbprint} 
     854 
     855The program fbprint will print the contents of a feedback file or files to standard output. 
     856Selected information can be output using optional arguments. The program is called in the 
     857following way: 
     858 
     859\begin{alltt} 
     860\footnotesize 
     861\begin{verbatim} 
     862fbprint.exe [options] inputfile 
     863 
     864options: 
     865     -b            shorter output 
     866     -q            Select observations based on QC flags 
     867     -Q            Select observations based on QC flags 
     868     -B            Select observations based on QC flags 
     869     -u            unsorted 
     870     -s ID         select station ID   
     871     -t TYPE       select observation type 
     872     -v NUM1-NUM2  select variable range to print by number  
     873                      (default all) 
     874     -a NUM1-NUM2  select additional variable range to print by number  
     875                      (default all) 
     876     -e NUM1-NUM2  select extra variable range to print by number  
     877                      (default all) 
     878     -d            output date range 
     879     -D            print depths 
     880     -z            use zipped files 
     881\end{verbatim} 
     882\end{alltt} 
     883 
     884\subsubsection{fbsel} 
     885 
     886The program fbsel will select or subsample observations. The program is called in the 
     887following way: 
     888 
     889\begin{alltt} 
     890\footnotesize 
     891\begin{verbatim} 
     892fbsel.exe <input filename> <output filename> 
     893\end{verbatim} 
     894\end{alltt} 
     895 
     896\subsubsection{fbstat} 
     897 
     898The program fbstat will output summary statistics in different global areas into a number of 
     899files. The program is called in the following way: 
     900 
     901\begin{alltt} 
     902\footnotesize 
     903\begin{verbatim} 
     904fbstat.exe [-nmlev] <filenames> 
     905\end{verbatim} 
     906\end{alltt} 
     907 
     908\subsubsection{fbthin} 
     909 
     910The program fbthin will thin the data to 1 degree resolution. The code could easily be 
     911modified to thin to a different resolution. The program is called in the following way: 
     912 
     913\begin{alltt} 
     914\footnotesize 
     915\begin{verbatim} 
     916fbthin.exe inputfile outputfile 
     917\end{verbatim} 
     918\end{alltt} 
     919 
     920\subsubsection{sla2fb} 
     921 
     922The program sla2fb will convert an AVISO SLA format file to feedback format. The program is 
     923called in the following way: 
     924 
     925\begin{alltt} 
     926\footnotesize 
     927\begin{verbatim} 
     928sla2fb.exe [-s type] outputfile inputfile1 inputfile2 ... 
     929 
     930Option: 
     931     -s            Select altimeter data_source 
     932\end{verbatim} 
     933\end{alltt} 
     934 
     935\subsubsection{vel2fb} 
     936 
     937The program vel2fb will convert TAO/PIRATA/RAMA currents files to feedback format. The program 
     938is called in the following way: 
     939 
     940\begin{alltt} 
     941\footnotesize 
     942\begin{verbatim} 
     943vel2fb.exe outputfile inputfile1 inputfile2 ... 
     944\end{verbatim} 
     945\end{alltt} 
     946 
     947\subsection{building the obstools} 
     948 
     949To build the obstools use in the tools directory use ./maketools -n OBSTOOLS -m [ARCH]. 
     950 
     951\subsection{Dataplot} 
     952 
     953An IDL program called dataplot is included which uses a graphical interface to visualise 
     954observations and feedback files. It is possible to zoom in, plot individual profiles and 
     955calculate some basic statistics. To plot some data run IDL and then: 
     956\begin{alltt} 
     957\footnotesize 
     958\begin{verbatim} 
     959IDL> dataplot, "filename" 
     960\end{verbatim} 
     961\end{alltt} 
     962 
     963To read multiple files into dataplot, for example multiple feedback files from different 
     964processors or from different days, the easiest method is to use the spawn command to generate 
     965a list of files which can then be passed to dataplot. 
     966\begin{alltt} 
     967\footnotesize 
     968\begin{verbatim} 
     969IDL> spawn, 'ls profb*.nc', files 
     970IDL> dataplot, files 
     971\end{verbatim} 
     972\end{alltt} 
     973 
     974Fig~\ref{fig:obsdataplotmain} shows the main window which is launched when dataplot starts. 
     975This is split into three parts. At the top there is a menu bar which contains a variety of 
     976drop down menus. Areas - zooms into prespecified regions; plot - plots the data as a 
     977timeseries or a T-S diagram if appropriate; Find - allows data to be searched; Config - sets 
     978various configuration options. 
     979 
     980The middle part is a plot of the geographical location of the observations. This will plot the 
     981observation value, the model background value or observation minus background value depending 
     982on the option selected in the radio button at the bottom of the window. The plotting colour 
     983range can be changed by clicking on the colour bar. The title of the plot gives some basic 
     984information about the date range and depth range shown, the extreme values, and the mean and 
     985rms values. It is possible to zoom in using a drag-box. You may also zoom in or out using the 
     986mouse wheel. 
     987 
     988The bottom part of the window controls what is visible in the plot above. There are two bars 
     989which select the level range plotted (for profile data). The other bars below select the date 
     990range shown. The bottom of the figure allows the option to plot the mean, root mean square, 
     991standard deviation or mean square values. As mentioned above you can choose to plot the 
     992observation value, the model background value or observation minus background value. The next 
     993group of radio buttons selects the map projection. This can either be regular latitude 
     994longitude grid, or north or south polar stereographic. The next group of radio buttons will 
     995plot bad observations, switch to salinity and plot density for profile observations. The 
     996rightmost group of buttons will print the plot window as a postscript, save it as png, or exit 
     997from dataplot. 
     998 
     999%>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
     1000\begin{figure}     \begin{center} 
     1001%\includegraphics[width=10cm,height=12cm,angle=-90.]{./TexFiles/Figures/Fig_OBS_dataplot_main} 
     1002\includegraphics[width=9cm,angle=-90.]{./TexFiles/Figures/Fig_OBS_dataplot_main} 
     1003\caption{      \label{fig:obsdataplotmain} 
     1004Main window of dataplot.} 
     1005\end{center}     \end{figure} 
     1006%>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
     1007 
     1008If a profile point is clicked with the mouse button a plot of the observation and background 
     1009values as a function of depth (Fig~\ref{fig:obsdataplotprofile}). 
     1010 
     1011%>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
     1012\begin{figure}     \begin{center} 
     1013%\includegraphics[width=10cm,height=12cm,angle=-90.]{./TexFiles/Figures/Fig_OBS_dataplot_prof} 
     1014\includegraphics[width=7cm,angle=-90.]{./TexFiles/Figures/Fig_OBS_dataplot_prof} 
     1015\caption{      \label{fig:obsdataplotprofile} 
     1016Profile plot from dataplot produced by right clicking on a point in the main window.} 
     1017\end{center}     \end{figure} 
     1018%>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
     1019 
     1020 
     1021 
     1022 
Note: See TracChangeset for help on using the changeset viewer.