_build/html/netcdf_file.html

Thu, 29 Mar 2012 16:32:05 +0200

author
ulalume3 <binietoglou@imaa.cnr.it>
date
Thu, 29 Mar 2012 16:32:05 +0200
changeset 3
ba31b26b041b
parent 1
6c38ce070e3b
permissions
-rw-r--r--

New doc structure


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">


<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    
    <title>The SCC netCDF file format &mdash; Single Calculus Chain 0.2 documentation</title>
    
    <link rel="stylesheet" href="_static/nature.css" type="text/css" />
    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
    
    <script type="text/javascript">
      var DOCUMENTATION_OPTIONS = {
        URL_ROOT:    '',
        VERSION:     '0.2',
        COLLAPSE_INDEX: false,
        FILE_SUFFIX: '.html',
        HAS_SOURCE:  true
      };
    </script>
    <script type="text/javascript" src="_static/jquery.js"></script>
    <script type="text/javascript" src="_static/underscore.js"></script>
    <script type="text/javascript" src="_static/doctools.js"></script>
    <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
    <link rel="top" title="Single Calculus Chain 0.2 documentation" href="index.html" />
    <link rel="next" title="User management" href="user_managment.html" />
    <link rel="prev" title="Processing measurement" href="measurement_upload.html" /> 
  </head>
  <body>
    <div class="related">
      <h3>Navigation</h3>
      <ul>
        <li class="right" style="margin-right: 10px">
          <a href="genindex.html" title="General Index"
             accesskey="I">index</a></li>
        <li class="right" >
          <a href="user_managment.html" title="User management"
             accesskey="N">next</a> |</li>
        <li class="right" >
          <a href="measurement_upload.html" title="Processing measurement"
             accesskey="P">previous</a> |</li>
        <li><a href="index.html">Single Calculus Chain 0.2 documentation</a> &raquo;</li> 
      </ul>
    </div>  

    <div class="document">
      <div class="documentwrapper">
        <div class="bodywrapper">
          <div class="body">
            
  <div class="section" id="the-scc-netcdf-file-format">
<h1>The SCC netCDF file format<a class="headerlink" href="#the-scc-netcdf-file-format" title="Permalink to this headline">¶</a></h1>
<div class="section" id="rationale">
<h2>Rationale<a class="headerlink" href="#rationale" title="Permalink to this headline">¶</a></h2>
<p>The Single Calculus Chain (SCC) is composed by two different modules:</p>
<ul class="simple">
<li>pre-processing module ( scc_preprocessing)</li>
<li>optical processing module ( ELDA)</li>
</ul>
<p>To perfom aerosol optical retrievals the SCC needs not only the raw
lidar data but also a certain number of parameters to use in both
pre-processing and optical processing stages. The SCC gets these
parameters looking at two different locations:</p>
<ul class="simple">
<li>Single Calculus Chain relational database (SCC_DB)</li>
<li>Input files</li>
</ul>
<p>There are some paramenters that can be found only in the input files
(those ones changing from measurement to measurement), others that can
be found only in the SCC_DB and other ones that can be found in both
these locations. In the last case, if a particular parameter is needed,
the SCC will search first in the input files and then in SCC_DB. If the
parameter is found in the input files the SCC will keep it without
looking into SCC_DB.</p>
<p>The input files have to be submitted to the SCC in NetCDF format. At the
present the SCC can handle four different types of input files:</p>
<ol class="arabic simple">
<li>Raw Lidar Data</li>
<li>Sounding Data</li>
<li>Overlap</li>
<li>Lidar Ratio</li>
</ol>
<p>As already mentioned, the  Raw Lidar Data file contains not only the
raw lidar data but also other parameters to use to perform the
pre-processing and optical processing. The  Sounding Data file
contains the data coming from a correlative radiosounding and it is used
by the SCC for molecular density calculation. The  Overlap file
contains the measured overlap function. The  Lidar Ratio file contains
a lidar ratio profile to use in elastic backscatter retrievals. The
Raw Lidar Data file is of course mandatory and the  Sounding Data,
Overlap and  Lidar Ratio files are optional. If  Sounding Data file
is not submitted by the user, the molecular density will be calculated
by the SCC using the “US Standard Atmosphere 1976”. If the  Overlap
file is not submitted by the user, the SCC will get the full overlap
height from SCC_DB and it will produce optical results starting from
this height. If  Lidar Ratio file is not submitted by the user, the
SCC will consider a fixed value for lidar ratio got from SCC_DB.</p>
<p>The user can decide to submit all these files or any number of them (of
course the file  Raw Lidar Data is mandatory). For example the user
can submit together with the  Raw Lidar Data file only the  Sounding
Data file or only the  Overlap file.</p>
<p>This document provides a detailed explanation about the structure of the
NetCDF input files to use for SCC data submission. All Earlinet groups
should read it carefully because they have to produce such kind of input
files if they want to use the SCC for their standard lidar retrievals.
Every comments or suggestions regarding this document can be sent to
Giuseppe D’Amico by e-mail at <tt class="docutils literal"><span class="pre">damico&#64;imaa.cnr.it</span></tt></p>
<p>This document is available for downloading at <tt class="docutils literal"><span class="pre">www.earlinetasos.org</span></tt></p>
<p>In table tab:rawdata is reported a list of dimensions, variables and
global attributes that can be used in the NetCDF  Raw Lidar Data input
file. For each of them it is indicated:</p>
<ul class="simple">
<li>The name. For the multidimensional variables also the corresponding
dimensions are reported</li>
<li>A description explaining the meaning</li>
<li>The type</li>
<li>If it is mandatory or optional</li>
</ul>
<p>As already mentioned, the SCC can get some parameters looking first in
the  Raw Lidar Data input file and then into SCC_DB. This means that
to use the parameters stored in SCC_DB the optional variables or
optional global attributes must not appear within  Raw Lidar Data
file. This is the suggested and recommended way to use the SCC. Please
include optional parameters in the  Raw Lidar Data only as an
exception.</p>
<p>In table tab:sounding, tab:overlap and tab:lr are reported all the
information about the structure of  Sounding Data,  Overlap and
Lidar Ratio input files respectively.</p>
</div>
<div class="section" id="example">
<h2>Example<a class="headerlink" href="#example" title="Permalink to this headline">¶</a></h2>
<p>Let’s now consider an example of  Raw Lidar Data input file. Suppose
we want to generate NetCDF input file corresponding to a measurement
with the following properties:</p>
<table border="1" class="docutils">
<colgroup>
<col width="34%" />
<col width="66%" />
</colgroup>
<tbody valign="top">
<tr class="row-odd"><td>Start Date</td>
<td><span class="math">\(30^{th}\)</span> January 2009</td>
</tr>
<tr class="row-even"><td>Start Time UT</td>
<td>00:00:01</td>
</tr>
<tr class="row-odd"><td>Stop Time UT</td>
<td>00:05:01</td>
</tr>
<tr class="row-even"><td>Station Name</td>
<td>Dummy station</td>
</tr>
<tr class="row-odd"><td>Earlinet call-sign</td>
<td>cc</td>
</tr>
<tr class="row-even"><td>Pointing angle</td>
<td>5 degrees with respect to the zenith</td>
</tr>
</tbody>
</table>
<p>Moreover suppose that this measurement is composed by the following
lidar channels:</p>
<ol class="arabic">
<li><p class="first">1064 lidar channel</p>
<table border="1" class="docutils">
<colgroup>
<col width="49%" />
<col width="51%" />
</colgroup>
<tbody valign="top">
<tr class="row-odd"><td><p class="first last">Emission wavelength=1064nm</p>
</td>
<td><p class="first last">Detection wavelength=1064nm</p>
</td>
</tr>
<tr class="row-even"><td><p class="first last">Time resolution=30s</p>
</td>
<td><p class="first last">Number of laser shots=1500</p>
</td>
</tr>
<tr class="row-odd"><td><p class="first last">Number of bins=3000</p>
</td>
<td><p class="first last">Detection mode=analog</p>
</td>
</tr>
<tr class="row-even"><td><p class="first last">Range resolution=7.5m</p>
</td>
<td><p class="first last">Polarization state=total</p>
</td>
</tr>
</tbody>
</table>
</li>
<li><p class="first">532 cross lidar channel</p>
<table border="1" class="docutils">
<colgroup>
<col width="47%" />
<col width="53%" />
</colgroup>
<tbody valign="top">
<tr class="row-odd"><td><p class="first last">Emission wavelength=532nm</p>
</td>
<td><p class="first last">Detection wavelength=532nm</p>
</td>
</tr>
<tr class="row-even"><td><p class="first last">Time resolution=60s</p>
</td>
<td><p class="first last">Number of laser shots=3000</p>
</td>
</tr>
<tr class="row-odd"><td><p class="first last">Number of bins=5000</p>
</td>
<td><p class="first last">Detection mode=photoncounting</p>
</td>
</tr>
<tr class="row-even"><td><p class="first last">Range resolution=15m</p>
</td>
<td><p class="first last">Polarization state=cross</p>
</td>
</tr>
</tbody>
</table>
</li>
<li><p class="first">532 parallel lidar channel</p>
<table border="1" class="docutils">
<colgroup>
<col width="47%" />
<col width="53%" />
</colgroup>
<tbody valign="top">
<tr class="row-odd"><td><p class="first last">Emission wavelength=532nm</p>
</td>
<td><p class="first last">Detection wavelength=532nm</p>
</td>
</tr>
<tr class="row-even"><td><p class="first last">Time resolution=60s</p>
</td>
<td><p class="first last">Number of laser shots=3000</p>
</td>
</tr>
<tr class="row-odd"><td><p class="first last">Number of bins=5000</p>
</td>
<td><p class="first last">Detection mode=photoncounting</p>
</td>
</tr>
<tr class="row-even"><td><p class="first last">Range resolution=15m</p>
</td>
<td><p class="first last">Polarization state=parallel</p>
</td>
</tr>
</tbody>
</table>
</li>
<li><p class="first">607 <span class="math">\(N_2\)</span> vibrational Raman channel</p>
<table border="1" class="docutils">
<colgroup>
<col width="47%" />
<col width="53%" />
</colgroup>
<tbody valign="top">
<tr class="row-odd"><td><p class="first last">Emission wavelength=532nm</p>
</td>
<td><p class="first last">Detection wavelength=607nm</p>
</td>
</tr>
<tr class="row-even"><td><p class="first last">Time resolution=60s</p>
</td>
<td><p class="first last">Number of laser shots=3000</p>
</td>
</tr>
<tr class="row-odd"><td><p class="first last">Number of bins=5000</p>
</td>
<td><p class="first last">Detection mode=photoncounting</p>
</td>
</tr>
<tr class="row-even"><td colspan="2"><p class="first last">Range resolution=15m</p>
</td>
</tr>
</tbody>
</table>
</li>
</ol>
<p>Finally let’s assume we have also performed dark measurements before the
lidar measurements from the 23:50:01 UT up to 23:53:01 UT of
29:math:<cite>^mathrmth</cite> January 2009.</p>
<div class="section" id="dimensions">
<h3>Dimensions<a class="headerlink" href="#dimensions" title="Permalink to this headline">¶</a></h3>
<p>Looking at table tab:rawdata we have to fix the following dimensions:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="n">points</span>
<span class="n">channels</span>
<span class="n">time</span>
<span class="n">nb_of_time_scales</span>
<span class="n">scan_angles</span>
<span class="n">time_bck</span>
</pre></div>
</div>
<p>The dimension <tt class="docutils literal"><span class="pre">time</span></tt> is unlimited so we don’t have to fix it.</p>
<p>We have 4 lidar channels so:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="n">channels</span><span class="o">=</span><span class="mi">4</span>
</pre></div>
</div>
<p>Regarding the dimension <tt class="docutils literal"><span class="pre">points</span></tt> we have only one channel with a
number of vertical bins equal to 3000 (the 1064nm) and all other
channels with 5000 vertical bins. In cases like this the dimension
<tt class="docutils literal"><span class="pre">points</span></tt> has to be fixed to the maximum number of vertical bins so:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="n">points</span><span class="o">=</span><span class="mi">5000</span>
</pre></div>
</div>
<p>Moreover only one channel (1064nm) is acquired with a time resolution of
30 seconds, all the other channels have a time resolution of 60 seconds.
This means that we have to define two different time scales. We have to
set:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="n">nb_of_time_scales</span><span class="o">=</span><span class="mi">2</span>
</pre></div>
</div>
<p>The measurement is performed only at one scan angle (5 degrees with
respect to the zenith) so:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="n">scan_angles</span><span class="o">=</span><span class="mi">1</span>
</pre></div>
</div>
<p>We have 3 minutes of dark measurements and two different time scales one
with 60 seconds time resolution and the other one with 30 seconds time
resolution. So we will have 3 different dark profiles for the channels
acquired with the first time scale and 6 for the lidar channels acquired
with the second time scale. We have to fix the dimension <tt class="docutils literal"><span class="pre">time_bck</span></tt> as
the maximum between these values:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="n">time_bck</span><span class="o">=</span><span class="mi">6</span>
</pre></div>
</div>
</div>
<div class="section" id="variables">
<h3>Variables<a class="headerlink" href="#variables" title="Permalink to this headline">¶</a></h3>
<p>In this section it will be explained how to fill all the possible
variables either mandatory or optional of  Raw Lidar Data input file.</p>
<dl class="docutils">
<dt>Raw_Data_Start_Time(time, nb_of_time_scales)</dt>
<dd><p class="first">This 2 dimensional mandatory array has to contain the acquisition
start time (in seconds from the time given by the global attribute
<tt class="docutils literal"><span class="pre">RawData_Start_Time_UT</span></tt>) of each lidar profile. In this example we
have two different time scales: one is characterized by steps of 30
seconds (the 1064nm is acquired with this time scale) the other by
steps of 60 seconds (532cross, 532parallel and 607nm). Moreover the
measurement start time is 00:00:01 UT and the measurement stop time
is 00:05:01 UT. In this case we have to define:</p>
<div class="highlight-python"><pre>Raw_Data_Start_Time =
  0, 0,
  60, 30,
  120, 60,
  180, 90,
  240, 120,
  _, 150,
  _, 180,
  _, 210,
  _, 240,
  _, 270 ;</pre>
</div>
<p class="last">The order used to fill this array defines the correspondence between
the different time scales and the time scale index. In this example
we have a time scale index of 0 for the time scale with steps of 60
seconds and a time scale index of 1 for the other one.</p>
</dd>
<dt>Raw_Data_Stop_Time(time, nb_of_time_scales)</dt>
<dd><p class="first">The same as previous item but for the data acquisition stop time.
Following a similar procedure we have to define:</p>
<div class="last highlight-python"><pre>Raw_Data_Stop_Time =
  60, 30,
  120, 60,
  180, 90,
  240, 120,
  300, 150,
  _, 180,
  _, 210,
  _, 240,
  _, 270,
  _, 300 ;</pre>
</div>
</dd>
<dt>Raw_Lidar_Data(time, channels, points)</dt>
<dd><p class="first">This 3 dimensional mandatory array has to be filled with the
time-series of raw lidar data. The photoncounting profiles have to
submitted in counts (so as integers) while the analog ones in mV. The
order the user chooses to fill this array defines the correspondence
between channel index and lidar data.</p>
<p>For example if we fill this array in such way that:</p>
<table border="1" class="docutils">
<colgroup>
<col width="38%" />
<col width="62%" />
</colgroup>
<tbody valign="top">
<tr class="row-odd"><td>Raw_Lidar_Data(time,0,points</td>
<td><span class="math">\(\rightarrow\)</span> is the time-series of 1064 nm</td>
</tr>
<tr class="row-even"><td>Raw_Lidar_Data(time,1,points</td>
<td><span class="math">\(\rightarrow\)</span> is the time-series of 532 cross</td>
</tr>
<tr class="row-odd"><td>Raw_Lidar_Data(time,2,points</td>
<td><span class="math">\(\rightarrow\)</span> is the time-series of 532 parallel</td>
</tr>
<tr class="row-even"><td>Raw_Lidar_Data(time,3,points</td>
<td><span class="math">\(\rightarrow\)</span> is the time-series of 607 nm</td>
</tr>
</tbody>
</table>
<p class="last">from now on the channel index 0 is associated to the 1064 channel,
1 to the 532 cross, 2 to the 532 parallel and 3 to the 607nm.</p>
</dd>
<dt>Raw_Bck_Start_Time(time_bck, nb_of_time_scales)</dt>
<dd><p class="first">This 2 dimensional optional array has to contain the acquisition
start time (in seconds from the time given by the global attribute
<tt class="docutils literal"><span class="pre">RawBck_Start_Time_UT</span></tt>) of each dark measurements profile.
Following the same procedure used for the variable
<tt class="docutils literal"><span class="pre">Raw_Data_Start_Time</span></tt> we have to define:</p>
<div class="last highlight-python"><pre>Raw_Bck_Start_Time =
  0, 0,
  60, 30,
  120, 60,
  _, 90,
  _, 120,
  _, 150;</pre>
</div>
</dd>
<dt>Raw_Bck_Stop_Time(time_bck, nb_of_time_scales)</dt>
<dd><p class="first">The same as previous item but for the dark acquisition stop time.
Following a similar procedure we have to define:</p>
<div class="last highlight-python"><pre>Raw_Bck_Stop_Time =
  60, 30,
  120, 60,
  180, 90,
  _, 120,
  _, 150,
  _, 180 ;</pre>
</div>
</dd>
<dt>Background_Profile(time_bck, channels, points)</dt>
<dd><p class="first">This 3 dimensional optional array has to be filled with the
time-series of the dark measurements data. The photoncounting
profiles have to submitted in counts (so as integers) while the
analog ones in mV. The user has to fill this array following the same
order used in filling the array <tt class="docutils literal"><span class="pre">Raw_Lidar_Data</span></tt>:</p>
<table border="1" class="last docutils">
<colgroup>
<col width="44%" />
<col width="56%" />
</colgroup>
<tbody valign="top">
<tr class="row-odd"><td>Background_Profile(time_bck,0,points</td>
<td><span class="math">\(\rightarrow\)</span> dark time-series at 1064 nm</td>
</tr>
<tr class="row-even"><td>Background_Profile(time_bck,1,points</td>
<td><span class="math">\(\rightarrow\)</span> dark time-series at 532 cross</td>
</tr>
<tr class="row-odd"><td>Background_Profile(time_bck,2,points</td>
<td><span class="math">\(\rightarrow\)</span> dark time-series at 532 parallel</td>
</tr>
<tr class="row-even"><td>Background_Profile(time_bck,3,points</td>
<td><span class="math">\(\rightarrow\)</span> dark time-series at 607 nm</td>
</tr>
</tbody>
</table>
</dd>
<dt>channel_ID(channels)</dt>
<dd><p class="first">This mandatory array provides the link between the channel index
within the  Raw Lidar Data input file and the channel ID in
SCC_DB. To fill this variable the user has to know which channel IDs
in SCC_DB correspond to his lidar channels. For this purpose the
SCC, in its final version will provide to the user a special tool to
get these channel IDs through a Web interface. At the moment this
interface is not yet available and these channel IDs will be
communicated directly to the user by the NA5 people.</p>
<p>Anyway to continue the example let’s suppose that the four lidar
channels taken into account are mapped into SCC_DB with the
following channel IDs:</p>
<table border="1" class="docutils">
<colgroup>
<col width="30%" />
<col width="70%" />
</colgroup>
<tbody valign="top">
<tr class="row-odd"><td>1064 nm</td>
<td><span class="math">\(\rightarrow\)</span> channel ID=7</td>
</tr>
<tr class="row-even"><td>532 cross</td>
<td><span class="math">\(\rightarrow\)</span> channel ID=5</td>
</tr>
<tr class="row-odd"><td>532 parallel</td>
<td><span class="math">\(\rightarrow\)</span> channel ID=6</td>
</tr>
<tr class="row-even"><td>607 nm</td>
<td><span class="math">\(\rightarrow\)</span> channel ID=8</td>
</tr>
</tbody>
</table>
<blockquote>
<div>In this case we have to define:</div></blockquote>
<div class="last highlight-python"><div class="highlight"><pre><span class="n">channel_ID</span> <span class="o">=</span> <span class="mi">7</span><span class="p">,</span> <span class="mi">5</span><span class="p">,</span> <span class="mi">6</span><span class="p">,</span> <span class="mi">8</span> <span class="p">;</span>
</pre></div>
</div>
</dd>
<dt>id_timescale(channels)</dt>
<dd><p class="first">This mandatory array is introduced to determine which time scale is
used for the acquisition of each lidar channel. In particular this
array defines the link between the channel index and the time scale
index. In our example we have two different time scales. Filling the
arrays <tt class="docutils literal"><span class="pre">Raw_Data_Start_Time</span></tt> and <tt class="docutils literal"><span class="pre">Raw_Data_Stop_Time</span></tt> we have
defined a time scale index of 0 for the time scale with steps of 60
seconds and a time scale index of 1 for the other one with steps of
30 seconds. In this way this array has to be set as:</p>
<div class="last highlight-python"><div class="highlight"><pre><span class="n">id_timescale</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span> <span class="p">;</span>
</pre></div>
</div>
</dd>
<dt>Laser_Pointing_Angle(scan_angles</dt>
<dd><p class="first">This mandatory array contains all the scan angles used in the
measurement. In our example we have only one scan angle of 5 degrees
with respect to the zenith, so we have to define:</p>
<div class="last highlight-python"><div class="highlight"><pre><span class="n">Laser_Pointing_Angle</span> <span class="o">=</span> <span class="mi">5</span> <span class="p">;</span>
</pre></div>
</div>
</dd>
<dt>Laser_Pointing_Angle_of_Profiles(time, nb_of_time_scales)</dt>
<dd><p class="first">This mandatory array is introduced to determine which scan angle is
used for the acquisition of each lidar profile. In particular this
array defines the link between the time and time scales indexes and
the scan angle index. In our example we have a single scan angle that
has to correspond to the scan angle index 0. So this array has to be
defined as:</p>
<div class="last highlight-python"><pre>Laser_Pointing_Angle_of_Profiles =
  0, 0,
  0, 0,
  0, 0,
  0, 0,
  0, 0,
  _, 0,
  _, 0,
  _, 0,
  _, 0,
  _, 0 ;</pre>
</div>
</dd>
<dt>Laser_Shots(time, channels)</dt>
<dd><p class="first">This mandatory array stores the laser shots accumulated at each time
for each channel. In our example the number of laser shots
accumulated is 1500 for the 1064nm channels and 3000 for all the
other channels. Moreover the laser shots do not change with the time.
So we have to define this array as:</p>
<div class="last highlight-python"><pre>Laser_Shots =
 1500, 3000, 3000, 3000,
 1500, 3000, 3000, 3000,
 1500, 3000, 3000, 3000,
 1500, 3000, 3000, 3000,
 1500, 3000, 3000, 3000,
 1500, _, _, _,
 1500, _, _, _,
 1500, _, _, _,
 1500, _, _, _,
 1500, _, _, _ ;</pre>
</div>
</dd>
<dt>Emitted_Wavelength(channels)</dt>
<dd><p class="first">This optional array defines the link between the channel index and
the emission wavelength for each lidar channel. The wavelength has to
be expressed in nm. This information can be also taken from SCC_DB.
In our example we have:</p>
<div class="last highlight-python"><div class="highlight"><pre><span class="n">Emitted_Wavelength</span> <span class="o">=</span> <span class="mi">1064</span><span class="p">,</span> <span class="mi">532</span><span class="p">,</span> <span class="mi">532</span><span class="p">,</span> <span class="mi">532</span> <span class="p">;</span>
</pre></div>
</div>
</dd>
<dt>Detected_Wavelength(channels)</dt>
<dd><p class="first">This optional array defines the link between the channel index and
the detected wavelength for each lidar channel. Here detected
wavelength means the value of center of interferential filter
expressed in nm. This information can be also taken from SCC_DB. In
our example we have:</p>
<div class="last highlight-python"><div class="highlight"><pre><span class="n">Detected_Wavelength</span> <span class="o">=</span> <span class="mi">1064</span><span class="p">,</span> <span class="mi">532</span><span class="p">,</span> <span class="mi">532</span><span class="p">,</span> <span class="mi">607</span> <span class="p">;</span>
</pre></div>
</div>
</dd>
<dt>Raw_Data_Range_Resolution(channels)</dt>
<dd><p class="first">This optional array defines the link between the channel index and
the raw range resolution for each channel. If the scan angle is
different from zero this quantity is different from the vertical
resolution. More precisely if <span class="math">\(\alpha\)</span> is the scan angle used
and <span class="math">\(\Delta z\)</span> is the range resolution the vertical
resolution is calculated as <span class="math">\(\Delta
z'=\Delta z \cos\alpha\)</span>. This array has to be filled with
<span class="math">\(\Delta z\)</span> and not with <span class="math">\(\Delta z'\)</span>. The unit is
meters. This information can be also taken from SCC_DB. In our
example we have:</p>
<div class="last highlight-python"><div class="highlight"><pre><span class="n">Raw_Data_Range_Resolution</span> <span class="o">=</span> <span class="mf">7.5</span><span class="p">,</span> <span class="mf">15.0</span><span class="p">,</span> <span class="mf">15.0</span><span class="p">,</span> <span class="mf">15.0</span> <span class="p">;</span>
</pre></div>
</div>
</dd>
<dt>ID_Range(channels)</dt>
<dd><p class="first">This optional array defines if a particular channel is configured as
high, low or ultranear range channel. In particular a value 0
indicates a low range channel, a value 1 a high range channel and a
value of 2 an ultranear range channel. If for a particular channel
you don’t separate between high and low range channel, please set the
corresponding value to 1. This information can be also taken from
SCC_DB. In our case we have to set:</p>
<div class="last highlight-python"><div class="highlight"><pre><span class="n">ID_Range</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span> <span class="p">;</span>
</pre></div>
</div>
</dd>
<dt>Scattering_Mechanism(channels)</dt>
<dd><p class="first">This optional array defines the scattering mechanism involved in
each lidar channel. In particular the following values are adopted:</p>
<table border="1" class="docutils">
<colgroup>
<col width="6%" />
<col width="94%" />
</colgroup>
<tbody valign="top">
<tr class="row-odd"><td>0</td>
<td><span class="math">\(\rightarrow\)</span> Total elastic backscatter</td>
</tr>
<tr class="row-even"><td>1</td>
<td><span class="math">\(\rightarrow\)</span> <span class="math">\(N_2\)</span> vibrational Raman backscatter</td>
</tr>
<tr class="row-odd"><td>2</td>
<td><span class="math">\(\rightarrow\)</span> Cross polarization elastic backscatter</td>
</tr>
<tr class="row-even"><td>3</td>
<td><span class="math">\(\rightarrow\)</span> Parallel polarization elastic backscatter</td>
</tr>
<tr class="row-odd"><td>4</td>
<td><span class="math">\(\rightarrow\)</span> <span class="math">\(H_2O\)</span> vibrational Raman backscatter</td>
</tr>
<tr class="row-even"><td>5</td>
<td><span class="math">\(\rightarrow\)</span> Rotational Raman Stokes line close to elastic line</td>
</tr>
<tr class="row-odd"><td>6</td>
<td><span class="math">\(\rightarrow\)</span> Rotational Raman Stokes line far from elastic line</td>
</tr>
<tr class="row-even"><td>7</td>
<td><span class="math">\(\rightarrow\)</span> Rotational Raman anti-Stokes line close to elastic line</td>
</tr>
<tr class="row-odd"><td>8</td>
<td><span class="math">\(\rightarrow\)</span> Rotational Raman anti-Stokes line far from elastic line</td>
</tr>
<tr class="row-even"><td>9</td>
<td><span class="math">\(\rightarrow\)</span> Rotational Raman Stokes and anti-Stokes lines close to elastic line</td>
</tr>
<tr class="row-odd"><td>10</td>
<td><span class="math">\(\rightarrow\)</span> Rotational Raman Stokes and anti-Stokes lines far from elastic line</td>
</tr>
</tbody>
</table>
<p>This information can be also taken from SCC_DB. In our example we have:</p>
<div class="last highlight-python"><div class="highlight"><pre><span class="n">Scattering_Mechanism</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">1</span> <span class="p">;</span>
</pre></div>
</div>
</dd>
<dt>Acquisition_Mode(channels)</dt>
<dd><p class="first">This optional array defines the acquisition mode (analog or
photoncounting) involved in each lidar channel. In particular a value
of 0 means analog mode and 1 photoncounting mode. This information
can be also taken from SCC_DB. In our example we have:</p>
<div class="last highlight-python"><div class="highlight"><pre><span class="n">Acquisition_Mode</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span> <span class="p">;</span>
</pre></div>
</div>
</dd>
<dt>Laser_Repetition_Rate(channels)</dt>
<dd><p class="first">This optional array defines the repetition rate in Hz used to
acquire each lidar channel. This information can be also taken from
SCC_DB. In our example we are supposing we have only one laser with
a repetition rate of 50 Hz so we have to set:</p>
<div class="last highlight-python"><div class="highlight"><pre><span class="n">Laser_Repetition_Rate</span> <span class="o">=</span> <span class="mi">50</span><span class="p">,</span> <span class="mi">50</span><span class="p">,</span> <span class="mi">50</span><span class="p">,</span> <span class="mi">50</span> <span class="p">;</span>
</pre></div>
</div>
</dd>
<dt>Dead_Time(channels)</dt>
<dd><p class="first">This optional array defines the dead time in ns associated to each
lidar channel. The SCC will use the values given by this array to
correct the photoncounting signals for dead time. Of course for
analog signals no dead time correction will be applied (for analog
channels the corresponding dead time values have to be set to
undefined value). This information can be also taken from SCC_DB. In
our example the 1064 nm channel is acquired in analog mode so the
corresponding dead time value has to be undefined. If we suppose a
dead time of 10 ns for all other channels we have to set:</p>
<div class="last highlight-python"><div class="highlight"><pre><span class="n">Dead_Time</span> <span class="o">=</span> <span class="n">_</span><span class="p">,</span> <span class="mi">10</span><span class="p">,</span> <span class="mi">10</span><span class="p">,</span> <span class="mi">10</span> <span class="p">;</span>
</pre></div>
</div>
</dd>
<dt>Dead_Time_Corr_Type(channels</dt>
<dd><p class="first">This optional array defines which kind of dead time correction has
to be applied on each photoncounting channel. The SCC will correct
the data supposing a not-paralyzable channel if a value of 0 is found
while a paralyzable channel is supposed if a value of 1 is found. Of
course for analog signals no dead time correction will be applied and
so the corresponding values have to be set to undefined value. This
information can be also taken from SCC_DB. In our example the 1064
nm channel is acquired in analog mode so the corresponding has to be
undefined. If we want to consider all the photoncounting signals as
not-paralyzable ones: we have to set:</p>
<div class="last highlight-python"><div class="highlight"><pre><span class="n">Dead_Time_Corr_Type</span> <span class="o">=</span> <span class="n">_</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span> <span class="p">;</span>
</pre></div>
</div>
</dd>
<dt>Trigger_Delay(channels)</dt>
<dd><p class="first">This optional array defines the delay (in ns) of the middle of the
first rangebin with respect to the output laser pulse for each lidar
channel. The SCC will use the values given by this array to correct
for trigger delay. This information can be also taken from SCC_DB.
Let’s suppose that in our example all the photoncounting channels are
not affected by this delay and only the analog channel at 1064nm is
acquired with a delay of 50ns. In this case we have to set:</p>
<div class="last highlight-python"><div class="highlight"><pre><span class="n">Trigger_Delay</span> <span class="o">=</span> <span class="mi">50</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span> <span class="p">;</span>
</pre></div>
</div>
</dd>
<dt>Background_Mode(channels</dt>
<dd><p class="first">This optional array defines how the atmospheric background has to be
subtracted from the lidar channel. Two options are available for the
calculation of atmospheric background:</p>
<ol class="arabic simple">
<li>Average in the far field of lidar channel. In this case the value
of this variable has to be 1</li>
<li>Average within pre-trigger bins. In this case the value of this
variable has to be 0</li>
</ol>
<p>This information can be also taken from SCC_DB. Let’s suppose in our
example we use the pre-trigger for the 1064nm channel and the far
field for all other channels. In this case we have to set:</p>
<div class="last highlight-python"><div class="highlight"><pre><span class="n">Background_Mode</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span> <span class="p">;</span>
</pre></div>
</div>
</dd>
<dt>Background_Low(channels)</dt>
<dd><p class="first">This mandatory array defines the minimum altitude (in meters) to
consider in calculating the atmospheric background for each channel.
In case pre-trigger mode is used the corresponding value has to be
set to the rangebin to be used as lower limit (within pre-trigger
region) for background calculation. In our example, if we want to
calculate the background between 30000 and 50000 meters for all
photoncounting channels and we want to use the first 500 pre-trigger
bins for the background calculation for the 1064nm channel we have to
set:</p>
<div class="last highlight-python"><div class="highlight"><pre><span class="n">Background_Low</span><span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">30000</span><span class="p">,</span> <span class="mi">30000</span><span class="p">,</span> <span class="mi">30000</span> <span class="p">;</span>
</pre></div>
</div>
</dd>
<dt>Background_High(channels)</dt>
<dd><p class="first">This mandatory array defines the maximum altitude (in meters) to
consider in calculating the atmospheric background for each channel.
In case pre-trigger mode is used the corresponding value has to be
set to the rangebin to be used as upper limit (within pre-trigger
region) for background calculation. In our example, if we want to
calculate the background between 30000 and 50000 meters for all
photoncounting channels and we want to use the first 500 pre-trigger
bins for the background calculation for the 1064nm channel we have to
set:</p>
<div class="last highlight-python"><div class="highlight"><pre><span class="n">Background_High</span> <span class="o">=</span> <span class="mi">500</span><span class="p">,</span> <span class="mi">50000</span><span class="p">,</span> <span class="mi">50000</span><span class="p">,</span> <span class="mi">50000</span> <span class="p">;</span>
</pre></div>
</div>
</dd>
<dt>Molecular_Calc</dt>
<dd><p class="first">This mandatory variable defines the way used by SCC to calculate the
molecular density profile. At the moment two options are available:</p>
<ol class="arabic simple">
<li>US Standard Atmosphere 1976. In this case the value of this
variable has to be 0</li>
<li>Radiosounding. In this case the value of this variable has to be 1</li>
</ol>
<p>If we decide to use the option 1. we have to provide also the
measured pressure and temperature at lidar station level. Indeed if
we decide to use the option 2. a radiosounding file has to be
submitted separately in NetCDF format (the structure of this file is
summarized in table tab:sounding). Let’s suppose we want to use the
option 1. so:</p>
<div class="last highlight-python"><div class="highlight"><pre><span class="n">Molecular_Calc</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span>
</pre></div>
</div>
</dd>
<dt>Pressure_at_Lidar_Station</dt>
<dd><p class="first">Because we have chosen the US Standard Atmosphere for calculation of
the molecular density profile we have to give the pressure in hPa at
lidar station level:</p>
<div class="last highlight-python"><div class="highlight"><pre><span class="n">Pressure_at_Lidar_Station</span> <span class="o">=</span> <span class="mi">1010</span> <span class="p">;</span>
</pre></div>
</div>
</dd>
<dt>Temperature_at_Lidar_Station</dt>
<dd><p class="first">Because we have chosen the US Standard Atmosphere for calculation of
the molecular density profile we have to give the temperature in C at
lidar station level:</p>
<div class="last highlight-python"><div class="highlight"><pre><span class="n">Temperature_at_Lidar_Station</span> <span class="o">=</span> <span class="mf">19.8</span> <span class="p">;</span>
</pre></div>
</div>
</dd>
<dt>Depolarization_Factor(channels)</dt>
<dd><p class="first">This array is required only for lidar systems that use the two
depolarization channels for the backscatter retrieval. It represents
the factor <span class="math">\(f\)</span> to calculate the total backscatter signal
<span class="math">\(S_t\)</span> combining its cross <span class="math">\(S_c\)</span> and parallel
<span class="math">\(S_p\)</span> components: <span class="math">\(S_t=S_p+fS_c\)</span>. This factor is
mandatory only for systems acquiring <span class="math">\(S_c\)</span> and <span class="math">\(S_p\)</span>
and not <span class="math">\(S_t\)</span>. For systems acquiring <span class="math">\(S_c\)</span>,
<span class="math">\(S_p\)</span> and <span class="math">\(S_t\)</span> this factor is optional and it will
be used only for depolarizaton ratio calculation. Moreover only the
values of the array corresponding to cross polarization channels will
be considered; all other values will be not taken into account and
should be set to undefined value. In our example for the wavelength
532nm we have only the cross and the parallel components and not the
total one. So we have to give the value of this factor only in
correspondence of the 532nm cross polarization channel that
corresponds to the channel index 1. Suppose that this factor is 0.88.
Moreover, because we don’t have any other depolarization channels we
have also to set all other values of the array to undefined value.</p>
<div class="last highlight-python"><div class="highlight"><pre><span class="n">Depolarization_Factor</span> <span class="o">=</span> <span class="n">_</span><span class="p">,</span><span class="mf">0.88</span><span class="p">,</span><span class="n">_</span><span class="p">,</span><span class="n">_</span> <span class="p">;</span>
</pre></div>
</div>
</dd>
<dt>LR_Input(channels)</dt>
<dd><p class="first">This array is required only for lidar channels for which elastic
backscatter retrieval has to be performed. It defines the lidar ratio
to be used within this retrieval. Two options are available:</p>
<ol class="arabic simple">
<li>The user can submit a lidar ratio profile. In this case the value
of this variable has to be 0.</li>
<li>A fixed value of lidar ratio can be used. In this case the value
of this variable has to be 1.</li>
</ol>
<p>If we decide to use the option 1. a lidar ratio file has to be
submitted separately in NetCDF format (the structure of this file is
summarized in table tab:lr). If we decide to use the option 2. the
fixed value of lidar ratio will be taken from SCC_DB. In our example
we have to give a value of this array only for the 1064nm lidar
channel because for the 532nm we will be able to retrieve a Raman
backscatter coefficient. In case we want to use the fixed value
stored in SCC_DB we have to set:</p>
<div class="last highlight-python"><div class="highlight"><pre><span class="n">LR_Input</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span><span class="n">_</span><span class="p">,</span><span class="n">_</span><span class="p">,</span><span class="n">_</span> <span class="p">;</span>
</pre></div>
</div>
</dd>
<dt>DAQ_Range(channels)</dt>
<dd><p class="first">This array is required only if one or more lidar signals are
acquired in analog mode. It gives the analog scale in mV used to
acquire the analog signals. In our example we have only the 1064nm
channel acquired in analog mode. If we have used a 100mV analog scale
to acquire this channel we have to set:</p>
<div class="last highlight-python"><div class="highlight"><pre><span class="n">DAQ_Range</span> <span class="o">=</span> <span class="mi">100</span><span class="p">,</span><span class="n">_</span><span class="p">,</span><span class="n">_</span><span class="p">,</span><span class="n">_</span> <span class="p">;</span>
</pre></div>
</div>
</dd>
</dl>
</div>
<div class="section" id="global-attributes">
<h3>Global attributes<a class="headerlink" href="#global-attributes" title="Permalink to this headline">¶</a></h3>
<dl class="docutils">
<dt>Measurement_ID</dt>
<dd><p class="first">This mandatory global attribute defines the measurement ID
corresponding to the actual lidar measurement. It is a string
composed by 12 characters. The first 8 characters give the start date
of measurement in the format YYYYMMDD. The next 2 characters give the
Earlinet call-sign of the station. The last 2 characters are used to
distinguish between different time-series within the same date. In
our example we have to set:</p>
<div class="last highlight-python"><div class="highlight"><pre><span class="n">Measurement_ID</span><span class="o">=</span> <span class="s">&quot;20090130cc00&quot;</span> <span class="p">;</span>
</pre></div>
</div>
</dd>
<dt>RawData_Start_Date</dt>
<dd><p class="first">This mandatory global attribute defines the start date of lidar
measurements in the format YYYYMMDD. In our case we have:</p>
<div class="last highlight-python"><div class="highlight"><pre><span class="n">RawData_Start_Date</span> <span class="o">=</span> <span class="s">&quot;20090130&quot;</span> <span class="p">;</span>
</pre></div>
</div>
</dd>
<dt>RawData_Start_Time_UT</dt>
<dd><p class="first">This mandatory global attribute defines the UT start time of lidar
measurements in the format HHMMSS. In our case we have:</p>
<div class="last highlight-python"><div class="highlight"><pre><span class="n">RawData_Start_Time_UT</span> <span class="o">=</span> <span class="s">&quot;000001&quot;</span> <span class="p">;</span>
</pre></div>
</div>
</dd>
<dt>RawData_Stop_Time_UT``</dt>
<dd><p class="first">This mandatory global attribute defines the UT stop time of lidar
measurements in the format HHMMSS. In our case we have:</p>
<div class="last highlight-python"><div class="highlight"><pre><span class="n">RawData_Stop_Time_UT</span> <span class="o">=</span> <span class="s">&quot;000501&quot;</span> <span class="p">;</span>
</pre></div>
</div>
</dd>
<dt>RawBck_Start_Date</dt>
<dd><p class="first">This optional global attribute defines the start date of dark
measurements in the format YYYYMMDD. In our case we have:</p>
<div class="last highlight-python"><div class="highlight"><pre><span class="n">RawBck_Start_Date</span> <span class="o">=</span> <span class="s">&quot;20090129&quot;</span> <span class="p">;</span>
</pre></div>
</div>
</dd>
<dt>RawBck_Start_Time_UT</dt>
<dd><p class="first">This optional global attribute defines the UT start time of dark
measurements in the format HHMMSS. In our case we have:</p>
<div class="last highlight-python"><div class="highlight"><pre><span class="n">RawBck_Start_Time_UT</span> <span class="o">=</span> <span class="s">&quot;235001&quot;</span> <span class="p">;</span>
</pre></div>
</div>
</dd>
<dt>RawBck_Stop_Time_UT</dt>
<dd><p class="first">This optional global attribute defines the UT stop time of dark
measurements in the format HHMMSS. In our case we have:</p>
<div class="last highlight-python"><div class="highlight"><pre><span class="n">RawBck_Stop_Time_UT</span> <span class="o">=</span> <span class="s">&quot;235301&quot;</span> <span class="p">;</span>
</pre></div>
</div>
</dd>
</dl>
</div>
</div>
<div class="section" id="example-of-file-cdl-format">
<h2>Example of file (CDL format)<a class="headerlink" href="#example-of-file-cdl-format" title="Permalink to this headline">¶</a></h2>
<p>To summarize we have the following NetCDF  Raw Lidar Data file (in CDL
format):</p>
<div class="highlight-python"><pre>dimensions:
        points = 5000 ;
        channels = 4 ;
        time = UNLIMITED ; // (10 currently)
        nb_of_time_scales = 2 ;
        scan_angles = 1 ;
        time_bck = 6 ;
variables:
        int channel_ID(channels) ;
        int Laser_Repetition_Rate(channels) ;
        double Laser_Pointing_Angle(scan_angles) ;
        int ID_Range(channels) ;
        int Scattering_Mechanism(channels) ;
        double Emitted_Wavelength(channels) ;
        double Detected_Wavelength(channels) ;
        double Raw_Data_Range_Resolution(channels) ;
        int Background_Mode(channels) ;
        double Background_Low(channels) ;
        double Background_High(channels) ;
        int Molecular_Calc ;
        double Pressure_at_Lidar_Station ;
        double Temperature_at_Lidar_Station ;
        int id_timescale(channels) ;
        double Dead_Time(channels) ;
        int Dead_Time_Corr_Type(channels) ;
        int Acquisition_Mode(channels) ;
        double Trigger_Delay(channels) ;
        int LR_Input(channels) ;
        int Laser_Pointing_Angle_of_Profiles(time, nb_of_time_scales) ;
        int Raw_Data_Start_Time(time, nb_of_time_scales) ;
        int Raw_Data_Stop_Time(time, nb_of_time_scales) ;
        int Raw_Bck_Start_Time(time_bck, nb_of_time_scales) ;
        int Raw_Bck_Stop_Time(time_bck, nb_of_time_scales) ;
        int Laser_Shots(time, channels) ;
        double Raw_Lidar_Data(time, channels, points) ;
        double Background_Profile(time_bck, channels, points) ;
        double DAQ_Range(channels) ;

// global attributes:
                :Measurement_ID = "20090130cc00" ;
                :RawData_Start_Date = "20090130" ;
                :RawData_Start_Time_UT = "000001" ;
                :RawData_Stop_Time_UT = "000501" ;
                :RawBck_Start_Date = "20090129" ;
                :RawBck_Start_Time_UT = "235001" ;
                :RawBck_Stop_Time_UT = "235301" ;

data:

 channel_ID = 7, 5, 6, 8 ;

 Laser_Repetition_Rate = 50, 50, 50, 50 ;

 Laser_Pointing_Angle = 5 ;

 ID_Range = 1, 1, 1, 1 ;

 Scattering_Mechanism = 0, 2, 3, 1 ;

 Emitted_Wavelength = 1064, 532, 532, 532 ;

 Detected_Wavelength = 1064, 532, 532, 607 ;

 Raw_Data_Range_Resolution = 7.5, 15, 15, 15 ;

 Background_Mode = 0, 1, 1, 1 ;

 Background_Low = 0, 30000, 30000, 30000 ;

 Background_High = 500, 50000, 50000, 50000 ;

 Molecular_Calc = 0 ;

 Pressure_at_Lidar_Station = 1010 ;

 Temperature_at_Lidar_Station = 19.8 ;

 id_timescale = 1, 0, 0, 0 ;

 Dead_Time = _, 10, 10, 10 ;

 Dead_Time_Corr_Type = _, 0, 0, 0 ;

 Acquisition_Mode = 0, 1, 1, 1 ;

 Trigger_Delay = 50, 0, 0, 0 ;

 LR_Input = 1,_,_,_ ;

 DAQ_Range = 100,_,_,_ ;

 Laser_Pointing_Angle_of_Profiles =
  0, 0,
  0, 0,
  0, 0,
  0, 0,
  0, 0,
  _, 0,
  _, 0,
  _, 0,
  _, 0,
  _, 0 ;


 Raw_Data_Start_Time =
  0, 0,
  60, 30,
  120, 60,
  180, 90,
  240, 120,
  _, 150,
  _, 180,
  _, 210,
  _, 240,
  _, 270 ;

 Raw_Data_Stop_Time =
  60, 30,
  120, 60,
  180, 90,
  240, 120,
  300, 150,
  _, 180,
  _, 210,
  _, 240,
  _, 270,
  _, 300 ;


 Raw_Bck_Start_Time =
  0, 0,
  60, 30,
  120, 60,
  _, 90,
  _, 120,
  _, 150;


Raw_Bck_Stop_Time =
  60, 30,
  120, 60,
  180, 90,
  _, 120,
  _, 150,
  _, 180 ;


 Laser_Shots =
  1500, 3000, 3000, 3000,
  1500, 3000, 3000, 3000,
  1500, 3000, 3000, 3000,
  1500, 3000, 3000, 3000,
  1500, 3000, 3000, 3000,
  1500, _, _, _,
  1500, _, _, _,
  1500, _, _, _,
  1500, _, _, _,
  1500, _, _, _ ;


 Raw_Lidar_Data = ...

 Background_Profile = ...</pre>
</div>
<p>Please keep in mind that in case you submit a file like the previous one
all the parameters present in it will be used by the SCC even if you
have different values for the same parameters within the SCC_DB. If you
want to use the values already stored in SCC_DB (this should be the
usual way to use SCC) the  Raw Lidar Data input file has to be
modified as follows:</p>
<div class="highlight-python"><pre>dimensions:
        points = 5000 ;
        channels = 4 ;
        time = UNLIMITED ; // (10 currently)
        nb_of_time_scales = 2 ;
        scan_angles = 1 ;
        time_bck = 6 ;
variables:
        int channel_ID(channels) ;
        double Laser_Pointing_Angle(scan_angles) ;
        double Background_Low(channels) ;
        double Background_High(channels) ;
        int Molecular_Calc ;
        double Pressure_at_Lidar_Station ;
        double Temperature_at_Lidar_Station ;
        int id_timescale(channels) ;
        int Laser_Pointing_Angle_of_Profiles(time, nb_of_time_scales) ;
        int Raw_Data_Start_Time(time, nb_of_time_scales) ;
        int Raw_Data_Stop_Time(time, nb_of_time_scales) ;
        int Raw_Bck_Start_Time(time_bck, nb_of_time_scales) ;
        int Raw_Bck_Stop_Time(time_bck, nb_of_time_scales) ;
        int LR_Input(channels) ;
        int Laser_Shots(time, channels) ;
        double Raw_Lidar_Data(time, channels, points) ;
        double Background_Profile(time_bck, channels, points) ;
        double DAQ_Range(channels) ;

// global attributes:
                :Measurement_ID = "20090130cc00" ;
                :RawData_Start_Date = "20090130" ;
                :RawData_Start_Time_UT = "000001" ;
                :RawData_Stop_Time_UT = "000501" ;
                :RawBck_Start_Date = "20090129" ;
                :RawBck_Start_Time_UT = "235001" ;
                :RawBck_Stop_Time_UT = "235301" ;

data:

 channel_ID = 7, 5, 6, 8 ;

 Laser_Pointing_Angle = 5 ;

 Background_Low = 0, 30000, 30000, 30000 ;

 Background_High = 500, 50000, 50000, 50000 ;

 Molecular_Calc = 0 ;

 Pressure_at_Lidar_Station = 1010 ;

 Temperature_at_Lidar_Station = 19.8 ;

 id_timescale = 1, 0, 0, 0 ;

 LR_Input = 1,_,_,_ ;

 DAQ_Range = 100,_,_,_ ;

 Laser_Pointing_Angle_of_Profiles =
  0, 0,
  0, 0,
  0, 0,
  0, 0,
  0, 0,
  _, 0,
  _, 0,
  _, 0,
  _, 0,
  _, 0 ;


 Raw_Data_Start_Time =
  0, 0,
  60, 30,
  120, 60,
  180, 90,
  240, 120,
  _, 150,
  _, 180,
  _, 210,
  _, 240,
  _, 270 ;

 Raw_Data_Stop_Time =
  60, 30,
  120, 60,
  180, 90,
  240, 120,
  300, 150,
  _, 180,
  _, 210,
  _, 240,
  _, 270,
  _, 300 ;


 Raw_Bck_Start_Time =
  0, 0,
  60, 30,
  120, 60,
  _, 90,
  _, 120,
  _, 150;


 Raw_Bck_Stop_Time =
  60, 30,
  120, 60,
  180, 90,
  _, 120,
  _, 150,
  _, 180 ;


 Laser_Shots =
  1500, 3000, 3000, 3000,
  1500, 3000, 3000, 3000,
  1500, 3000, 3000, 3000,
  1500, 3000, 3000, 3000,
  1500, 3000, 3000, 3000,
  1500, _, _, _,
  1500, _, _, _,
  1500, _, _, _,
  1500, _, _, _,
  1500, _, _, _ ;


 Raw_Lidar_Data = ...

 Background_Profile = ...</pre>
</div>
<p>This example file contains the minimum collection of mandatory
information that has to be found within the  Raw Lidar Data input
file. If it is really necessary, the user can decide to add to these
mandatory parameters any number of additional parameters considered in
the previous example.</p>
<p>Finally, suppose we want to make the following changes with respect to
the previous example:</p>
<ol class="arabic simple">
<li>use a sounding file for molecular density calculation instead of “US
Standar Atmosphere 1976”</li>
<li>supply a lidar ratio profile to use in elastic backscatter retrieval
instead of a fixed value</li>
<li>provide a overlap function for overlap correction</li>
</ol>
<p>In this case we have to generate the following NetCDF additional files:</p>
<dl class="docutils">
<dt>rs_20090130cc00.nc</dt>
<dd>The name of  Sounding Data file has to be computed as follows:
<tt class="docutils literal"><span class="pre">&quot;rs_&quot;``+``Measurement_ID</span></tt>
The structure of this file is summarized in table tab:sounding.</dd>
<dt>ov_20090130cc00.nc</dt>
<dd>The name of  Overlap file has to be computed as follows:
<tt class="docutils literal"><span class="pre">&quot;ov_&quot;``+``Measurement_ID</span></tt>
The structure of this file is summarized in table tab:overlap.</dd>
<dt>lr_20090130cc00.nc</dt>
<dd>The name of  Lidar Ratio file has to be computed as follows:
<tt class="docutils literal"><span class="pre">&quot;lr_&quot;``+``Measurement_ID</span></tt>
The structure of this file is summarized in table tab:lr.</dd>
</dl>
<p>Moreover we need to apply the following changes to the  Raw Lidar Data
input file:</p>
<ol class="arabic">
<li><p class="first">Change the value of the variable <tt class="docutils literal"><span class="pre">Molecular_Calc</span></tt> as follows:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="n">Molecular_Calc</span> <span class="o">=</span> <span class="mi">1</span> <span class="p">;</span>
</pre></div>
</div>
<p>Of course the variables <tt class="docutils literal"><span class="pre">Pressure_at_Lidar_Station</span></tt> and
<tt class="docutils literal"><span class="pre">Temperature_at_Lidar_Station</span></tt> are not necessary anymore.</p>
</li>
<li><p class="first">Change the values of the array <tt class="docutils literal"><span class="pre">LR_Input</span></tt> as follows:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="n">LR_Input</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span><span class="n">_</span><span class="p">,</span><span class="n">_</span><span class="p">,</span><span class="n">_</span> <span class="p">;</span>
</pre></div>
</div>
</li>
<li><p class="first">Add the global attribute <tt class="docutils literal"><span class="pre">Sounding_File_Name</span></tt></p>
<div class="highlight-python"><div class="highlight"><pre><span class="n">Sounding_File_Name</span> <span class="o">=</span> <span class="s">&quot;rs_20090130cc00.nc&quot;</span> <span class="p">;</span>
</pre></div>
</div>
</li>
</ol>
<ol class="arabic" start="5">
<li><p class="first">Add the global attribute <tt class="docutils literal"><span class="pre">LR_File_Name</span></tt></p>
<div class="highlight-python"><div class="highlight"><pre><span class="n">LR_File_Name</span> <span class="o">=</span> <span class="s">&quot;lr_20090130cc00.nc&quot;</span> <span class="p">;</span>
</pre></div>
</div>
</li>
<li><p class="first">Add the global attribute <tt class="docutils literal"><span class="pre">Overlap_File_Name</span></tt></p>
<div class="highlight-python"><div class="highlight"><pre><span class="n">Overlap_File_Name</span> <span class="o">=</span> <span class="s">&quot;ov_20090130cc00.nc&quot;</span> <span class="p">;</span>
</pre></div>
</div>
</li>
</ol>
</div>
</div>


          </div>
        </div>
      </div>
      <div class="sphinxsidebar">
        <div class="sphinxsidebarwrapper">
  <h3><a href="index.html">Table Of Contents</a></h3>
  <ul>
<li><a class="reference internal" href="#">The SCC netCDF file format</a><ul>
<li><a class="reference internal" href="#rationale">Rationale</a></li>
<li><a class="reference internal" href="#example">Example</a><ul>
<li><a class="reference internal" href="#dimensions">Dimensions</a></li>
<li><a class="reference internal" href="#variables">Variables</a></li>
<li><a class="reference internal" href="#global-attributes">Global attributes</a></li>
</ul>
</li>
<li><a class="reference internal" href="#example-of-file-cdl-format">Example of file (CDL format)</a></li>
</ul>
</li>
</ul>

  <h4>Previous topic</h4>
  <p class="topless"><a href="measurement_upload.html"
                        title="previous chapter">Processing measurement</a></p>
  <h4>Next topic</h4>
  <p class="topless"><a href="user_managment.html"
                        title="next chapter">User management</a></p>
  <h3>This Page</h3>
  <ul class="this-page-menu">
    <li><a href="_sources/netcdf_file.txt"
           rel="nofollow">Show Source</a></li>
  </ul>
<div id="searchbox" style="display: none">
  <h3>Quick search</h3>
    <form class="search" action="search.html" method="get">
      <input type="text" name="q" />
      <input type="submit" value="Go" />
      <input type="hidden" name="check_keywords" value="yes" />
      <input type="hidden" name="area" value="default" />
    </form>
    <p class="searchtip" style="font-size: 90%">
    Enter search terms or a module, class or function name.
    </p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
        </div>
      </div>
      <div class="clearer"></div>
    </div>
    <div class="related">
      <h3>Navigation</h3>
      <ul>
        <li class="right" style="margin-right: 10px">
          <a href="genindex.html" title="General Index"
             >index</a></li>
        <li class="right" >
          <a href="user_managment.html" title="User management"
             >next</a> |</li>
        <li class="right" >
          <a href="measurement_upload.html" title="Processing measurement"
             >previous</a> |</li>
        <li><a href="index.html">Single Calculus Chain 0.2 documentation</a> &raquo;</li> 
      </ul>
    </div>
    <div class="footer">
        &copy; Copyright 2012, SCC team.
      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.2.
    </div>
  </body>
</html>

mercurial