ioannis@41: .. _netcdf_file: ioannis@38: binietoglou@0: The SCC netCDF file format binietoglou@0: ========================== binietoglou@0: binietoglou@89: A more detailed version of this document can be found in this :download:`pdf file `. ioannis@31: ulalume3@60: .. note:: ulalume3@60: ulalume3@60: You can check the format of the files you create using the linked `script `_ . ulalume3@60: binietoglou@89: binietoglou@0: Rationale binietoglou@0: --------- binietoglou@0: binietoglou@89: The Single Calculus Chain (SCC) is composed by three different modules: binietoglou@89: binietoglou@89: - pre-processing module (*ELPP*) binietoglou@0: binietoglou@89: - optical processing module (*ELDA*) binietoglou@0: binietoglou@89: - depolarization calibrator module (*ELDEC*) binietoglou@0: binietoglou@0: To perfom aerosol optical retrievals the SCC needs not only the raw binietoglou@0: lidar data but also a certain number of parameters to use in both binietoglou@0: pre-processing and optical processing stages. The SCC gets these binietoglou@0: parameters looking at two different locations: binietoglou@0: binietoglou@0: - Single Calculus Chain relational database (SCC\_DB) binietoglou@0: binietoglou@0: - Input files binietoglou@0: binietoglou@0: There are some paramenters that can be found only in the input files binietoglou@0: (those ones changing from measurement to measurement), others that can binietoglou@0: be found only in the SCC\_DB and other ones that can be found in both binietoglou@0: these locations. In the last case, if a particular parameter is needed, binietoglou@0: the SCC will search first in the input files and then in SCC\_DB. If the binietoglou@89: parameter is found in the input files, the SCC will keep it without binietoglou@0: looking into SCC\_DB. binietoglou@0: binietoglou@89: The input files have to be submitted to the SCC in NetCDF format. At binietoglou@0: present the SCC can handle four different types of input files: binietoglou@0: binietoglou@0: 1. Raw Lidar Data binietoglou@89: binietoglou@0: 2. Sounding Data binietoglou@89: binietoglou@0: 3. Overlap binietoglou@89: binietoglou@0: 4. Lidar Ratio binietoglou@0: binietoglou@89: As already mentioned, the *Raw lidar data* file contains not only the binietoglou@0: raw lidar data but also other parameters to use to perform the binietoglou@89: pre-processing and optical processing. The *Sounding Data* file contains binietoglou@89: the data coming from a correlative radiosounding and it is used by the binietoglou@89: SCC for molecular density calculation. The *Overlap* file contains the binietoglou@89: measured overlap function. The *Lidar Ratio* file contains a lidar ratio binietoglou@89: profile to use in elastic backscatter retrievals. The *Raw Lidar Data* binietoglou@89: file is of course mandatory and the *Sounding Data*, *Overlap* and binietoglou@89: *Lidar Ratio* files are optional. If *Sounding Data* file is not binietoglou@89: submitted by the user, the molecular density will be calculated by the binietoglou@89: SCC using the "US Standard Atmosphere 1976". If the *Overlap* file is binietoglou@89: not submitted by the user, the SCC will get the full overlap height from binietoglou@89: SCC\_DB and it will produce optical results starting from this height. binietoglou@89: If *Lidar Ratio* file is not submitted by the user, the SCC will binietoglou@89: consider a fixed value for lidar ratio got from SCC\_DB. binietoglou@0: binietoglou@0: The user can decide to submit all these files or any number of them (of binietoglou@89: course the file *Raw Lidar Data* is mandatory). For example the user can binietoglou@89: submit together with the *Raw Lidar Data* file only the *Sounding Data* binietoglou@89: file or only the *Overlap* file. binietoglou@0: binietoglou@89: This document provides a detailed example about the structure of binietoglou@89: the NetCDF input files to use for SCC data submission. All Earlinet binietoglou@89: groups should read it carefully because they have to produce such kind binietoglou@89: of input files if they want to use the SCC for their standard lidar binietoglou@89: retrievals. binietoglou@0: binietoglou@89: Additionaly, the linked :download:`pdf file ` contains binietoglou@89: tables with all mandatory and optional variables for the netcdf files binietoglou@89: accepted by the SCC. Table 1 contains a list of dimensions, variables and binietoglou@89: global attributes that can be used in the NetCDF *Raw Lidar Data* binietoglou@89: input file. For each of them it is indicated: binietoglou@0: binietoglou@0: - The name. For the multidimensional variables also the corresponding binietoglou@0: dimensions are reported binietoglou@0: binietoglou@0: - A description explaining the meaning binietoglou@0: binietoglou@0: - The type binietoglou@0: binietoglou@0: - If it is mandatory or optional binietoglou@0: binietoglou@0: As already mentioned, the SCC can get some parameters looking first in binietoglou@89: the *Raw Lidar Data* input file and then into SCC\_DB. This means that binietoglou@0: to use the parameters stored in SCC\_DB the optional variables or binietoglou@89: optional global attributes must not appear within *Raw Lidar Data* file. binietoglou@89: This is the suggested and recommended way to use the SCC. Please include binietoglou@89: optional parameters in the *Raw Lidar Data* only as an exception. binietoglou@0: binietoglou@89: Tables 2, 3, and 4 report all the binietoglou@89: information about the structure of *Sounding Data*, *Overlap* and *Lidar binietoglou@89: Ratio* input files respectively. binietoglou@89: binietoglou@0: binietoglou@0: Example binietoglou@0: ------- binietoglou@0: binietoglou@89: Let's now consider an example of *Raw Lidar Data* input file. Suppose binietoglou@0: we want to generate NetCDF input file corresponding to a measurement binietoglou@0: with the following properties: binietoglou@0: binietoglou@0: +----------------------+-------------------------------------------+ binietoglou@89: | Start Date | 30\ :sup:`th` January 2009 | binietoglou@0: +----------------------+-------------------------------------------+ binietoglou@0: | Start Time UT | 00:00:01 | binietoglou@0: +----------------------+-------------------------------------------+ binietoglou@0: | Stop Time UT | 00:05:01 | binietoglou@0: +----------------------+-------------------------------------------+ binietoglou@0: | Station Name | Dummy station | binietoglou@0: +----------------------+-------------------------------------------+ binietoglou@0: | Earlinet call-sign | cc | binietoglou@0: +----------------------+-------------------------------------------+ binietoglou@0: | Pointing angle | 5 degrees with respect to the zenith | binietoglou@0: +----------------------+-------------------------------------------+ binietoglou@0: binietoglou@89: binietoglou@0: Moreover suppose that this measurement is composed by the following binietoglou@0: lidar channels: binietoglou@0: binietoglou@89: #. 1064 lidar channel binietoglou@0: binietoglou@0: +------------------------------+-------------------------------+ binietoglou@0: | Emission wavelength=1064nm | Detection wavelength=1064nm | binietoglou@0: +------------------------------+-------------------------------+ binietoglou@0: | Time resolution=30s | Number of laser shots=1500 | binietoglou@0: +------------------------------+-------------------------------+ binietoglou@0: | Number of bins=3000 | Detection mode=analog | binietoglou@0: +------------------------------+-------------------------------+ binietoglou@0: | Range resolution=7.5m | Polarization state=total | binietoglou@0: +------------------------------+-------------------------------+ binietoglou@0: binietoglou@89: #. 532 cross lidar channel binietoglou@0: binietoglou@89: +-----------------------------+------------------------------------------+ binietoglou@89: | Emission wavelength=532nm | Detection wavelength=532nm | binietoglou@89: +-----------------------------+------------------------------------------+ binietoglou@89: | Time resolution=60s | Number of laser shots=3000 | binietoglou@89: +-----------------------------+------------------------------------------+ binietoglou@89: | Number of bins=5000 | Detection mode=photoncounting | binietoglou@89: +-----------------------------+------------------------------------------+ binietoglou@89: | Range resolution=15m | Polarization state=cross (transmitted) | binietoglou@89: +-----------------------------+------------------------------------------+ binietoglou@0: binietoglou@89: #. 532 parallel lidar channel binietoglou@0: binietoglou@89: +-----------------------------+-------------------------------------------+ binietoglou@89: | Emission wavelength=532nm | Detection wavelength=532nm | binietoglou@89: +-----------------------------+-------------------------------------------+ binietoglou@89: | Time resolution=60s | Number of laser shots=3000 | binietoglou@89: +-----------------------------+-------------------------------------------+ binietoglou@89: | Number of bins=5000 | Detection mode=photoncounting | binietoglou@89: +-----------------------------+-------------------------------------------+ binietoglou@89: | Range resolution=15m | Polarization state=parallel (reflected) | binietoglou@89: +-----------------------------+-------------------------------------------+ binietoglou@0: binietoglou@89: #. | 607 :math:`N_2` vibrational Raman channel binietoglou@0: binietoglou@0: +-----------------------------+---------------------------------+ binietoglou@0: | Emission wavelength=532nm | Detection wavelength=607nm | binietoglou@0: +-----------------------------+---------------------------------+ binietoglou@0: | Time resolution=60s | Number of laser shots=3000 | binietoglou@0: +-----------------------------+---------------------------------+ binietoglou@0: | Number of bins=5000 | Detection mode=photoncounting | binietoglou@0: +-----------------------------+---------------------------------+ binietoglou@89: | Range resolution=15m | | binietoglou@0: +-----------------------------+---------------------------------+ binietoglou@0: binietoglou@89: Finally let's assume we have also performed dark measurements before the binietoglou@0: lidar measurements from the 23:50:01 UT up to 23:53:01 UT of binietoglou@89: 29\ :sup:`th` January 2009. binietoglou@89: binietoglou@0: binietoglou@0: Dimensions binietoglou@0: ~~~~~~~~~~ binietoglou@0: binietoglou@89: Looking at table 1 of the pdf file we have to fix the following dimensions: binietoglou@0: binietoglou@0: :: binietoglou@0: binietoglou@0: points binietoglou@0: channels binietoglou@0: time binietoglou@0: nb_of_time_scales binietoglou@0: scan_angles binietoglou@0: time_bck binietoglou@0: binietoglou@0: The dimension ``time`` is unlimited so we don’t have to fix it. binietoglou@0: We have 4 lidar channels so: binietoglou@0: binietoglou@0: :: binietoglou@0: binietoglou@0: channels=4 binietoglou@0: binietoglou@0: Regarding the dimension ``points`` we have only one channel with a binietoglou@0: number of vertical bins equal to 3000 (the 1064nm) and all other binietoglou@0: channels with 5000 vertical bins. In cases like this the dimension binietoglou@0: ``points`` has to be fixed to the maximum number of vertical bins so: binietoglou@0: binietoglou@0: :: binietoglou@0: binietoglou@0: points=5000 binietoglou@0: binietoglou@0: Moreover only one channel (1064nm) is acquired with a time resolution of binietoglou@0: 30 seconds, all the other channels have a time resolution of 60 seconds. binietoglou@0: This means that we have to define two different time scales. We have to binietoglou@0: set: binietoglou@0: binietoglou@0: :: binietoglou@0: binietoglou@0: nb_of_time_scales=2 binietoglou@0: binietoglou@0: The measurement is performed only at one scan angle (5 degrees with binietoglou@0: respect to the zenith) so: binietoglou@0: binietoglou@0: :: binietoglou@0: binietoglou@0: scan_angles=1 binietoglou@0: binietoglou@0: We have 3 minutes of dark measurements and two different time scales one binietoglou@0: with 60 seconds time resolution and the other one with 30 seconds time binietoglou@0: resolution. So we will have 3 different dark profiles for the channels binietoglou@0: acquired with the first time scale and 6 for the lidar channels acquired binietoglou@0: with the second time scale. We have to fix the dimension ``time_bck`` as binietoglou@0: the maximum between these values: binietoglou@0: binietoglou@0: :: binietoglou@0: binietoglou@0: time_bck=6 binietoglou@0: binietoglou@89: binietoglou@0: Variables binietoglou@0: ~~~~~~~~~ binietoglou@0: binietoglou@0: In this section it will be explained how to fill all the possible binietoglou@89: variables either mandatory or optional of *Raw Lidar Data* input file. binietoglou@0: binietoglou@89: - | ``Raw_Data_Start_Time(time, nb_of_time_scales)`` binietoglou@89: | This 2 dimensional mandatory array has to contain the acquisition binietoglou@89: start time (in seconds from the time given by the global attribute binietoglou@89: ``RawData_Start_Time_UT``) of each lidar profile. In this example binietoglou@89: we have two different time scales: one is characterized by steps of binietoglou@89: 30 seconds (the 1064nm is acquired with this time scale) the other binietoglou@89: by steps of 60 seconds (532cross, 532parallel and 607nm). Moreover binietoglou@89: the measurement start time is 00:00:01 UT and the measurement stop binietoglou@89: time is 00:05:01 UT. In this case we have to define: binietoglou@0: binietoglou@0: :: binietoglou@0: binietoglou@0: Raw_Data_Start_Time = binietoglou@0: 0, 0, binietoglou@0: 60, 30, binietoglou@0: 120, 60, binietoglou@0: 180, 90, binietoglou@0: 240, 120, binietoglou@0: _, 150, binietoglou@0: _, 180, binietoglou@0: _, 210, binietoglou@0: _, 240, binietoglou@0: _, 270 ; binietoglou@0: binietoglou@0: The order used to fill this array defines the correspondence between binietoglou@0: the different time scales and the time scale index. In this example binietoglou@0: we have a time scale index of 0 for the time scale with steps of 60 binietoglou@0: seconds and a time scale index of 1 for the other one. binietoglou@0: binietoglou@89: - | ``Raw_Data_Stop_Time(time, nb_of_time_scales)`` binietoglou@89: | The same as previous item but for the data acquisition stop time. binietoglou@89: Following a similar procedure we have to define: binietoglou@0: binietoglou@0: :: binietoglou@0: binietoglou@0: Raw_Data_Stop_Time = binietoglou@0: 60, 30, binietoglou@0: 120, 60, binietoglou@0: 180, 90, binietoglou@0: 240, 120, binietoglou@0: 300, 150, binietoglou@0: _, 180, binietoglou@0: _, 210, binietoglou@0: _, 240, binietoglou@0: _, 270, binietoglou@0: _, 300 ; binietoglou@0: binietoglou@89: - | ``Raw_Lidar_Data(time, channels, points)`` binietoglou@89: | This 3 dimensional mandatory array has to be filled with the binietoglou@89: time-series of raw lidar data. The photoncounting profiles have to binietoglou@89: submitted in counts (so as integers) while the analog ones in mV. binietoglou@89: The order the user chooses to fill this array defines the binietoglou@89: correspondence between channel index and lidar data. binietoglou@89: | For example if we fill this array in such way that: binietoglou@0: binietoglou@89: +-------------------------------------+---------------------------------------+ binietoglou@89: | ``Raw_Lidar_Data(time,0,points)`` | is the time-series of 1064 nm | binietoglou@89: +-------------------------------------+---------------------------------------+ binietoglou@89: | ``Raw_Lidar_Data(time,1,points)`` | is the time-series of 532 cross | binietoglou@89: +-------------------------------------+---------------------------------------+ binietoglou@89: | ``Raw_Lidar_Data(time,2,points)`` | is the time-series of 532 parallel | binietoglou@89: +-------------------------------------+---------------------------------------+ binietoglou@89: | ``Raw_Lidar_Data(time,3,points)`` | is the time-series of 607 nm | binietoglou@89: +-------------------------------------+---------------------------------------+ binietoglou@0: binietoglou@89: | binietoglou@89: | from now on the channel index 0 is associated to the 1064 channel, binietoglou@89: 1 to the 532 cross, 2 to the 532 parallel and 3 to the 607nm. binietoglou@0: binietoglou@89: - | ``Raw_Bck_Start_Time(time_bck, nb_of_time_scales)`` binietoglou@89: | This 2 dimensional optional array has to contain the acquisition binietoglou@89: start time (in seconds from the time given by the global attribute binietoglou@89: ``RawBck_Start_Time_UT``) of each dark measurements profile. binietoglou@89: Following the same procedure used for the variable binietoglou@89: ``Raw_Data_Start_Time`` we have to define: binietoglou@0: binietoglou@0: :: binietoglou@0: binietoglou@0: Raw_Bck_Start_Time = binietoglou@0: 0, 0, binietoglou@0: 60, 30, binietoglou@0: 120, 60, binietoglou@0: _, 90, binietoglou@0: _, 120, binietoglou@0: _, 150; binietoglou@0: binietoglou@89: - | ``Raw_Bck_Stop_Time(time_bck, nb_of_time_scales)`` binietoglou@89: | The same as previous item but for the dark acquisition stop time. binietoglou@89: Following a similar procedure we have to define: binietoglou@0: binietoglou@0: :: binietoglou@0: binietoglou@0: Raw_Bck_Stop_Time = binietoglou@0: 60, 30, binietoglou@0: 120, 60, binietoglou@0: 180, 90, binietoglou@0: _, 120, binietoglou@0: _, 150, binietoglou@0: _, 180 ; binietoglou@0: binietoglou@89: - | ``Background_Profile(time_bck, channels, points)`` binietoglou@89: | This 3 dimensional optional array has to be filled with the binietoglou@89: time-series of the dark measurements data. The photoncounting binietoglou@89: profiles have to submitted in counts (so as integers) while the binietoglou@89: analog ones in mV. The user has to fill this array following the binietoglou@89: same order used in filling the array ``Raw_Lidar_Data``: binietoglou@0: binietoglou@89: +---------------------------------------------+-------------------------------------+ binietoglou@89: | ``Background_Profile(time_bck,0,points)`` | dark time-series at 1064 nm | binietoglou@89: +---------------------------------------------+-------------------------------------+ binietoglou@89: | ``Background_Profile(time_bck,1,points)`` | dark time-series at 532 cross | binietoglou@89: +---------------------------------------------+-------------------------------------+ binietoglou@89: | ``Background_Profile(time_bck,2,points)`` | dark time-series at 532 parallel | binietoglou@89: +---------------------------------------------+-------------------------------------+ binietoglou@89: | ``Background_Profile(time_bck,3,points)`` | dark time-series at 607 nm | binietoglou@89: +---------------------------------------------+-------------------------------------+ binietoglou@89: binietoglou@89: | binietoglou@0: binietoglou@89: - | ``channel_ID(channels)`` binietoglou@89: | This mandatory array provides the link between the channel index binietoglou@89: within the *Raw Lidar Data* input file and the channel ID in binietoglou@89: SCC\_DB. To fill this variable the user has to know which channel binietoglou@89: IDs in SCC\_DB correspond to his lidar channels. For this purpose binietoglou@89: the SCC, in its final version will provide to the user a special binietoglou@89: tool to get these channel IDs through a Web interface. At the binietoglou@89: moment this interface is not yet available and these channel IDs binietoglou@89: will be communicated directly to the user by the NA5 people. binietoglou@89: | Anyway to continue the example let’s suppose that the four lidar binietoglou@89: channels taken into account are mapped into SCC\_DB with the binietoglou@89: following channel IDs: binietoglou@0: binietoglou@89: +----------------+-----------------+ binietoglou@89: | 1064 nm | channel ID=7 | binietoglou@89: +----------------+-----------------+ binietoglou@89: | 532 cross | channel ID=5 | binietoglou@89: +----------------+-----------------+ binietoglou@89: | 532 parallel | channel ID=6 | binietoglou@89: +----------------+-----------------+ binietoglou@89: | 607 nm | channel ID=8 | binietoglou@89: +----------------+-----------------+ binietoglou@0: binietoglou@89: | binietoglou@89: | In this case we have to define: binietoglou@0: binietoglou@0: :: binietoglou@0: binietoglou@0: channel_ID = 7, 5, 6, 8 ; binietoglou@0: binietoglou@89: - | ``id_timescale(channels)`` binietoglou@89: | This mandatory array is introduced to determine which time scale is binietoglou@89: used for the acquisition of each lidar channel. In particular this binietoglou@89: array defines the link between the channel index and the time scale binietoglou@89: index. In our example we have two different time scales. Filling binietoglou@89: the arrays ``Raw_Data_Start_Time`` and ``Raw_Data_Stop_Time`` we binietoglou@89: have defined a time scale index of 0 for the time scale with steps binietoglou@89: of 60 seconds and a time scale index of 1 for the other one with binietoglou@89: steps of 30 seconds. In this way this array has to be set as: binietoglou@0: binietoglou@0: :: binietoglou@0: binietoglou@0: id_timescale = 1, 0, 0, 0 ; binietoglou@0: binietoglou@89: - | ``Laser_Pointing_Angle(scan_angles)`` binietoglou@89: | This mandatory array contains all the scan angles used in the binietoglou@89: measurement. In our example we have only one scan angle of 5 binietoglou@89: degrees with respect to the zenith, so we have to define: binietoglou@0: binietoglou@0: :: binietoglou@0: binietoglou@0: Laser_Pointing_Angle = 5 ; binietoglou@0: binietoglou@89: - | ``Laser_Pointing_Angle_of_Profiles(time, nb_of_time_scales)`` binietoglou@89: | This mandatory array is introduced to determine which scan angle is binietoglou@89: used for the acquisition of each lidar profile. In particular this binietoglou@89: array defines the link between the time and time scales indexes and binietoglou@89: the scan angle index. In our example we have a single scan angle binietoglou@89: that has to correspond to the scan angle index 0. So this array has binietoglou@89: to be defined as: binietoglou@0: binietoglou@0: :: binietoglou@0: binietoglou@0: Laser_Pointing_Angle_of_Profiles = binietoglou@0: 0, 0, binietoglou@0: 0, 0, binietoglou@0: 0, 0, binietoglou@0: 0, 0, binietoglou@0: 0, 0, binietoglou@0: _, 0, binietoglou@0: _, 0, binietoglou@0: _, 0, binietoglou@0: _, 0, binietoglou@0: _, 0 ; binietoglou@0: binietoglou@89: - | ``Laser_Shots(time, channels)`` binietoglou@89: | This mandatory array stores the laser shots accumulated at each binietoglou@89: time for each channel. In our example the number of laser shots binietoglou@89: accumulated is 1500 for the 1064nm channels and 3000 for all the binietoglou@89: other channels. Moreover the laser shots do not change with the binietoglou@89: time. So we have to define this array as: binietoglou@0: binietoglou@0: :: binietoglou@0: binietoglou@0: Laser_Shots = binietoglou@0: 1500, 3000, 3000, 3000, binietoglou@0: 1500, 3000, 3000, 3000, binietoglou@0: 1500, 3000, 3000, 3000, binietoglou@0: 1500, 3000, 3000, 3000, binietoglou@0: 1500, 3000, 3000, 3000, binietoglou@0: 1500, _, _, _, binietoglou@0: 1500, _, _, _, binietoglou@0: 1500, _, _, _, binietoglou@0: 1500, _, _, _, binietoglou@0: 1500, _, _, _ ; binietoglou@0: binietoglou@89: - | ``Emitted_Wavelength(channels)`` binietoglou@89: | This optional array defines the link between the channel index and binietoglou@89: the emission wavelength for each lidar channel. The wavelength has binietoglou@89: to be expressed in nm. This information can be also taken from binietoglou@89: SCC\_DB. In our example we have: binietoglou@0: binietoglou@0: :: binietoglou@0: binietoglou@0: Emitted_Wavelength = 1064, 532, 532, 532 ; binietoglou@0: binietoglou@89: - | ``Detected_Wavelength(channels)`` binietoglou@89: | This optional array defines the link between the channel index and binietoglou@89: the detected wavelength for each lidar channel. Here detected binietoglou@89: wavelength means the value of center of interferential filter binietoglou@89: expressed in nm. This information can be also taken from SCC\_DB. binietoglou@89: In our example we have: binietoglou@0: binietoglou@0: :: binietoglou@0: binietoglou@0: Detected_Wavelength = 1064, 532, 532, 607 ; binietoglou@0: binietoglou@89: - | ``Raw_Data_Range_Resolution(channels)`` binietoglou@89: | This optional array defines the link between the channel index and binietoglou@89: the raw range resolution for each channel. If the scan angle is binietoglou@89: different from zero this quantity is different from the vertical binietoglou@89: resolution. More precisely if :math:`\alpha` is the scan angle used binietoglou@89: and :math:`\Delta z` is the range resolution the vertical binietoglou@89: resolution is calculated as :math:`\Delta binietoglou@89: z'=\Delta z \cos\alpha`. This array has to be filled with binietoglou@89: :math:`\Delta z` and not with :math:`\Delta z'`. The unit is binietoglou@89: meters. This information can be also taken from SCC\_DB. In our binietoglou@89: example we have: binietoglou@0: binietoglou@0: :: binietoglou@0: binietoglou@0: Raw_Data_Range_Resolution = 7.5, 15.0, 15.0, 15.0 ; binietoglou@0: binietoglou@89: - | ``Scattering_Mechanism(channels)`` binietoglou@89: | This optional array defines the scattering mechanism involved in binietoglou@89: each lidar channel. In particular the following values are adopted: binietoglou@0: binietoglou@89: +-----+---------------------------------------------------+ binietoglou@89: | 0 | Total elastic backscatter | binietoglou@89: +-----+---------------------------------------------------+ binietoglou@89: | 1 | N\ :math:`_2` vibrational Raman backscatter | binietoglou@89: +-----+---------------------------------------------------+ binietoglou@89: | 2 | Cross polarization elastic backscatter | binietoglou@89: +-----+---------------------------------------------------+ binietoglou@89: | 3 | Parallel polarization elastic backscatter | binietoglou@89: +-----+---------------------------------------------------+ binietoglou@89: | 4 | H\ :math:`_2`\ O vibrational Raman backscatter | binietoglou@89: +-----+---------------------------------------------------+ binietoglou@89: | 5 | Rotational Raman low quantum number | binietoglou@89: +-----+---------------------------------------------------+ binietoglou@89: | 6 | Rotational Raman high quantum number | binietoglou@89: +-----+---------------------------------------------------+ binietoglou@0: binietoglou@89: | binietoglou@89: | This information can be also taken from SCC\_DB. In our example we binietoglou@89: have: binietoglou@0: binietoglou@0: :: binietoglou@0: binietoglou@0: Scattering_Mechanism = 0, 2, 3, 1 ; binietoglou@0: binietoglou@89: - | ``Signal_Type(channels)`` binietoglou@89: | This optional array defines the type of signal involved in each binietoglou@89: lidar channel. In particular the following values are adopted: binietoglou@89: binietoglou@89: +------+--------------------------------------------------------------+ binietoglou@89: | 0 | Total elastic | binietoglou@89: +------+--------------------------------------------------------------+ binietoglou@89: | 1 | Total elastic near range | binietoglou@89: +------+--------------------------------------------------------------+ binietoglou@89: | 2 | Total elastic far range | binietoglou@89: +------+--------------------------------------------------------------+ binietoglou@89: | 3 | N\ :math:`_2` vibrational Raman | binietoglou@89: +------+--------------------------------------------------------------+ binietoglou@89: | 4 | N\ :math:`_2` vibrational Raman near range | binietoglou@89: +------+--------------------------------------------------------------+ binietoglou@89: | 5 | N\ :math:`_2` vibrational Raman far range | binietoglou@89: +------+--------------------------------------------------------------+ binietoglou@89: | 6 | Elastic polarization reflected | binietoglou@89: +------+--------------------------------------------------------------+ binietoglou@89: | 7 | Elastic polarization transmitted | binietoglou@89: +------+--------------------------------------------------------------+ binietoglou@89: | 8 | Rotational Raman line close to elastic line | binietoglou@89: +------+--------------------------------------------------------------+ binietoglou@89: | 9 | Rotational Raman line far from elastic line | binietoglou@89: +------+--------------------------------------------------------------+ binietoglou@89: | 10 | Elastic polarization reflected near range | binietoglou@89: +------+--------------------------------------------------------------+ binietoglou@89: | 11 | Elastic polarization reflected far range | binietoglou@89: +------+--------------------------------------------------------------+ binietoglou@89: | 12 | Elastic polarization transmitted near range | binietoglou@89: +------+--------------------------------------------------------------+ binietoglou@89: | 13 | Elastic polarization transmitted far range | binietoglou@89: +------+--------------------------------------------------------------+ binietoglou@89: | 14 | H\ :math:`_2`\ O vibrational Raman backscatter | binietoglou@89: +------+--------------------------------------------------------------+ binietoglou@89: | 15 | Rotational Raman line far from elastic line near range | binietoglou@89: +------+--------------------------------------------------------------+ binietoglou@89: | 16 | Rotational Raman line far from elastic line far range | binietoglou@89: +------+--------------------------------------------------------------+ binietoglou@89: | 17 | Rotational Raman line close to elastic line near range | binietoglou@89: +------+--------------------------------------------------------------+ binietoglou@89: | 18 | Rotational Raman line close to elastic line far range | binietoglou@89: +------+--------------------------------------------------------------+ binietoglou@89: | 19 | H\ :math:`_2`\ O vibrational Raman backscatter near range | binietoglou@89: +------+--------------------------------------------------------------+ binietoglou@89: | 20 | H\ :math:`_2`\ O vibrational Raman backscatter far range | binietoglou@89: +------+--------------------------------------------------------------+ binietoglou@89: | 21 | Total elastic ultra near range | binietoglou@89: +------+--------------------------------------------------------------+ binietoglou@89: | 22 | +45 rotated elastic polarization transmitted | binietoglou@89: +------+--------------------------------------------------------------+ binietoglou@89: | 23 | +45 rotated elastic polarization reflected | binietoglou@89: +------+--------------------------------------------------------------+ binietoglou@89: | 24 | -45 rotated elastic polarization transmitted | binietoglou@89: +------+--------------------------------------------------------------+ binietoglou@89: | 25 | -45 rotated elastic polarization reflected | binietoglou@89: +------+--------------------------------------------------------------+ binietoglou@89: | 26 | +45 rotated elastic polarization transmitted near range | binietoglou@89: +------+--------------------------------------------------------------+ binietoglou@89: | 27 | +45 rotated elastic polarization transmitted far range | binietoglou@89: +------+--------------------------------------------------------------+ binietoglou@89: | 28 | +45 rotated elastic polarization reflected near range | binietoglou@89: +------+--------------------------------------------------------------+ binietoglou@89: | 29 | +45 rotated elastic polarization reflected far range | binietoglou@89: +------+--------------------------------------------------------------+ binietoglou@89: | 30 | -45 rotated elastic polarization transmitted near range | binietoglou@89: +------+--------------------------------------------------------------+ binietoglou@89: | 31 | -45 rotated elastic polarization transmitted far range | binietoglou@89: +------+--------------------------------------------------------------+ binietoglou@89: | 32 | -45 rotated elastic polarization reflected near range | binietoglou@89: +------+--------------------------------------------------------------+ binietoglou@89: | 33 | -45 rotated elastic polarization reflected far range | binietoglou@89: +------+--------------------------------------------------------------+ binietoglou@89: binietoglou@89: | binietoglou@89: | This information can be also taken from SCC\_DB. In our example we binietoglou@89: have: binietoglou@89: binietoglou@89: :: binietoglou@89: binietoglou@89: Signal_Type = 0, 7, 6, 3 ; binietoglou@89: binietoglou@89: - | ``Acquisition_Mode(channels)`` binietoglou@89: | This optional array defines the acquisition mode (analog or binietoglou@89: photoncounting) involved in each lidar channel. In particular a binietoglou@89: value of 0 means analog mode and 1 photoncounting mode. This binietoglou@89: information can be also taken from SCC\_DB. In our example we have: binietoglou@0: binietoglou@0: :: binietoglou@0: binietoglou@0: Acquisition_Mode = 0, 1, 1, 1 ; binietoglou@0: binietoglou@89: - | ``Laser_Repetition_Rate(channels)`` binietoglou@89: | This optional array defines the repetition rate in Hz used to binietoglou@89: acquire each lidar channel. This information can be also taken from binietoglou@89: SCC\_DB. In our example we are supposing we have only one laser binietoglou@89: with a repetition rate of 50 Hz so we have to set: binietoglou@0: binietoglou@0: :: binietoglou@0: binietoglou@0: Laser_Repetition_Rate = 50, 50, 50, 50 ; binietoglou@0: binietoglou@89: - | ``Dead_Time(channels)`` binietoglou@89: | This optional array defines the dead time in ns associated to each binietoglou@89: lidar channel. The SCC will use the values given by this array to binietoglou@89: correct the photoncounting signals for dead time. Of course for binietoglou@89: analog signals no dead time correction will be applied (for analog binietoglou@89: channels the corresponding dead time values have to be set to binietoglou@89: undefined value). This information can be also taken from SCC\_DB. binietoglou@89: In our example the 1064 nm channel is acquired in analog mode so binietoglou@89: the corresponding dead time value has to be undefined. If we binietoglou@89: suppose a dead time of 10 ns for all other channels we have to set: binietoglou@0: binietoglou@0: :: binietoglou@0: binietoglou@0: Dead_Time = _, 10, 10, 10 ; binietoglou@0: binietoglou@89: - | ``Dead_Time_Corr_Type(channels)`` binietoglou@89: | This optional array defines which kind of dead time correction has binietoglou@89: to be applied on each photoncounting channel. The SCC will correct binietoglou@89: the data supposing a not-paralyzable channel if a value of 0 is binietoglou@89: found while a paralyzable channel is supposed if a value of 1 is binietoglou@89: found. Of course for analog signals no dead time correction will be binietoglou@89: applied and so the corresponding values have to be set to undefined binietoglou@89: value. This information can be also taken from SCC\_DB. In our binietoglou@89: example the 1064 nm channel is acquired in analog mode so the binietoglou@89: corresponding has to be undefined. If we want to consider all the binietoglou@89: photoncounting signals as not-paralyzable ones: we have to set: binietoglou@0: binietoglou@0: :: binietoglou@0: binietoglou@0: Dead_Time_Corr_Type = _, 0, 0, 0 ; binietoglou@0: binietoglou@89: - | ``Trigger_Delay(channels)`` binietoglou@89: | This optional array defines the delay (in ns) of the middle of the binietoglou@89: first rangebin with respect to the output laser pulse for each binietoglou@89: lidar channel. The SCC will use the values given by this array to binietoglou@89: correct for trigger delay. This information can be also taken from binietoglou@89: SCC\_DB. Let’s suppose that in our example all the photoncounting binietoglou@89: channels are not affected by this delay and only the analog channel binietoglou@89: at 1064nm is acquired with a delay of 50ns. In this case we have to binietoglou@89: set: binietoglou@0: binietoglou@0: :: binietoglou@0: binietoglou@0: Trigger_Delay = 50, 0, 0, 0 ; binietoglou@0: binietoglou@89: - | ``Background_Mode(channels)`` binietoglou@89: | This optional array defines how the atmospheric background has to binietoglou@89: be subtracted from the lidar channel. Two options are available for binietoglou@89: the calculation of atmospheric background: binietoglou@0: binietoglou@0: #. Average in the far field of lidar channel. In this case the value binietoglou@0: of this variable has to be 1 binietoglou@0: binietoglou@0: #. Average within pre-trigger bins. In this case the value of this binietoglou@0: variable has to be 0 binietoglou@0: binietoglou@0: This information can be also taken from SCC\_DB. Let’s suppose in our binietoglou@0: example we use the pre-trigger for the 1064nm channel and the far binietoglou@0: field for all other channels. In this case we have to set: binietoglou@0: binietoglou@0: :: binietoglou@0: binietoglou@0: Background_Mode = 0, 1, 1, 1 ; binietoglou@0: binietoglou@89: - | ``Background_Low(channels)`` binietoglou@89: | This mandatory array defines the minimum altitude (in meters) to binietoglou@89: consider in calculating the atmospheric background for each binietoglou@89: channel. In case pre-trigger mode is used the corresponding value binietoglou@89: has to be set to the rangebin to be used as lower limit (within binietoglou@89: pre-trigger region) for background calculation. In our example, if binietoglou@89: we want to calculate the background between 30000 and 50000 meters binietoglou@89: for all photoncounting channels and we want to use the first 500 binietoglou@89: pre-trigger bins for the background calculation for the 1064nm binietoglou@89: channel we have to set: binietoglou@0: binietoglou@0: :: binietoglou@0: binietoglou@0: Background_Low= 0, 30000, 30000, 30000 ; binietoglou@0: binietoglou@89: - | ``Background_High(channels)`` binietoglou@89: | This mandatory array defines the maximum altitude (in meters) to binietoglou@89: consider in calculating the atmospheric background for each binietoglou@89: channel. In case pre-trigger mode is used the corresponding value binietoglou@89: has to be set to the rangebin to be used as upper limit (within binietoglou@89: pre-trigger region) for background calculation. In our example, if binietoglou@89: we want to calculate the background between 30000 and 50000 meters binietoglou@89: for all photoncounting channels and we want to use the first 500 binietoglou@89: pre-trigger bins for the background calculation for the 1064nm binietoglou@89: channel we have to set: binietoglou@0: binietoglou@0: :: binietoglou@0: binietoglou@0: Background_High = 500, 50000, 50000, 50000 ; binietoglou@0: binietoglou@89: - | ``Molecular_Calc`` binietoglou@89: | This mandatory variable defines the way used by SCC to calculate binietoglou@89: the molecular density profile. At the moment two options are binietoglou@89: available: binietoglou@0: binietoglou@0: #. US Standard Atmosphere 1976. In this case the value of this binietoglou@0: variable has to be 0 binietoglou@0: binietoglou@0: #. Radiosounding. In this case the value of this variable has to be 1 binietoglou@0: binietoglou@0: If we decide to use the option 1. we have to provide also the binietoglou@0: measured pressure and temperature at lidar station level. Indeed if binietoglou@0: we decide to use the option 2. a radiosounding file has to be binietoglou@0: submitted separately in NetCDF format (the structure of this file is binietoglou@89: summarized in table 2 of the pdf file). Let’s suppose we want to use the binietoglou@0: option 1. so: binietoglou@0: binietoglou@0: :: binietoglou@0: binietoglou@0: Molecular_Calc = 0 ; binietoglou@0: binietoglou@89: - | ``Pressure_at_Lidar_Station`` binietoglou@89: | Because we have chosen the US Standard Atmosphere for calculation binietoglou@89: of the molecular density profile we have to give the pressure in binietoglou@89: hPa at lidar station level: binietoglou@0: binietoglou@0: :: binietoglou@0: binietoglou@0: Pressure_at_Lidar_Station = 1010 ; binietoglou@0: binietoglou@89: - | ``Temperature_at_Lidar_Station`` binietoglou@89: | Because we have chosen the US Standard Atmosphere for calculation binietoglou@89: of the molecular density profile we have to give the temperature in binietoglou@89: C at lidar station level: binietoglou@0: binietoglou@0: :: binietoglou@0: binietoglou@0: Temperature_at_Lidar_Station = 19.8 ; binietoglou@0: binietoglou@89: - | ``LR_Input(channels)`` binietoglou@89: | This array is required only for lidar channels for which elastic binietoglou@89: backscatter retrieval has to be performed. It defines the lidar binietoglou@89: ratio to be used within this retrieval. Two options are available: binietoglou@0: binietoglou@0: #. The user can submit a lidar ratio profile. In this case the value binietoglou@0: of this variable has to be 0. binietoglou@0: binietoglou@0: #. A fixed value of lidar ratio can be used. In this case the value binietoglou@0: of this variable has to be 1. binietoglou@0: binietoglou@0: If we decide to use the option 1. a lidar ratio file has to be binietoglou@0: submitted separately in NetCDF format (the structure of this file is binietoglou@89: summarized in table ). If we decide to use the option 2. the binietoglou@0: fixed value of lidar ratio will be taken from SCC\_DB. In our example binietoglou@0: we have to give a value of this array only for the 1064nm lidar binietoglou@0: channel because for the 532nm we will be able to retrieve a Raman binietoglou@0: backscatter coefficient. In case we want to use the fixed value binietoglou@0: stored in SCC\_DB we have to set: binietoglou@0: binietoglou@0: :: binietoglou@0: binietoglou@0: LR_Input = 1,_,_,_ ; binietoglou@0: binietoglou@89: - | ``DAQ_Range(channels)`` binietoglou@89: | This array is required only if one or more lidar signals are binietoglou@89: acquired in analog mode. It gives the analog scale in mV used to binietoglou@89: acquire the analog signals. In our example we have only the 1064nm binietoglou@89: channel acquired in analog mode. If we have used a 100mV analog binietoglou@89: scale to acquire this channel we have to set: binietoglou@0: binietoglou@0: :: binietoglou@0: binietoglou@0: DAQ_Range = 100,_,_,_ ; binietoglou@0: binietoglou@89: binietoglou@0: Global attributes binietoglou@0: ~~~~~~~~~~~~~~~~~ binietoglou@0: binietoglou@89: - | ``Measurement_ID`` binietoglou@89: | This mandatory global attribute defines the measurement ID binietoglou@89: corresponding to the actual lidar measurement. It is a string binietoglou@89: composed by 12 characters. The first 8 characters give the start binietoglou@89: date of measurement in the format YYYYMMDD. The next 2 characters binietoglou@89: give the Earlinet call-sign of the station. The last 2 characters binietoglou@89: are used to distinguish between different time-series within the binietoglou@89: same date. In our example we have to set: binietoglou@0: binietoglou@0: :: binietoglou@0: binietoglou@0: Measurement_ID= "20090130cc00" ; binietoglou@0: binietoglou@89: - | ``RawData_Start_Date`` binietoglou@89: | This mandatory global attribute defines the start date of lidar binietoglou@89: measurements in the format YYYYMMDD. In our case we have: binietoglou@0: binietoglou@0: :: binietoglou@0: binietoglou@0: RawData_Start_Date = "20090130" ; binietoglou@0: binietoglou@89: - | ``RawData_Start_Time_UT`` binietoglou@89: | This mandatory global attribute defines the UT start time of lidar binietoglou@89: measurements in the format HHMMSS. In our case we have: binietoglou@0: binietoglou@0: :: binietoglou@0: binietoglou@0: RawData_Start_Time_UT = "000001" ; binietoglou@0: binietoglou@89: - | ``RawData_Stop_Time_UT`` binietoglou@89: | This mandatory global attribute defines the UT stop time of lidar binietoglou@89: measurements in the format HHMMSS. In our case we have: binietoglou@0: binietoglou@0: :: binietoglou@0: binietoglou@0: RawData_Stop_Time_UT = "000501" ; binietoglou@0: binietoglou@89: - | ``RawBck_Start_Date`` binietoglou@89: | This optional global attribute defines the start date of dark binietoglou@89: measurements in the format YYYYMMDD. In our case we have: binietoglou@0: binietoglou@0: :: binietoglou@0: binietoglou@0: RawBck_Start_Date = "20090129" ; binietoglou@0: binietoglou@89: - | ``RawBck_Start_Time_UT`` binietoglou@89: | This optional global attribute defines the UT start time of dark binietoglou@89: measurements in the format HHMMSS. In our case we have: binietoglou@0: binietoglou@0: :: binietoglou@0: binietoglou@0: RawBck_Start_Time_UT = "235001" ; binietoglou@0: binietoglou@89: - | ``RawBck_Stop_Time_UT`` binietoglou@89: | This optional global attribute defines the UT stop time of dark binietoglou@89: measurements in the format HHMMSS. In our case we have: binietoglou@0: binietoglou@0: :: binietoglou@0: binietoglou@0: RawBck_Stop_Time_UT = "235301" ; binietoglou@0: binietoglou@89: binietoglou@0: Example of file (CDL format) binietoglou@89: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ binietoglou@0: binietoglou@89: To summarize we have the following NetCDF *Raw Lidar Data* file (in CDL binietoglou@0: format): binietoglou@0: binietoglou@0: :: binietoglou@0: binietoglou@0: dimensions: binietoglou@0: points = 5000 ; binietoglou@0: channels = 4 ; binietoglou@0: time = UNLIMITED ; // (10 currently) binietoglou@0: nb_of_time_scales = 2 ; binietoglou@0: scan_angles = 1 ; binietoglou@0: time_bck = 6 ; binietoglou@0: variables: binietoglou@0: int channel_ID(channels) ; binietoglou@0: int Laser_Repetition_Rate(channels) ; binietoglou@0: double Laser_Pointing_Angle(scan_angles) ; binietoglou@89: int Signal_Type(channels); binietoglou@0: double Emitted_Wavelength(channels) ; binietoglou@0: double Detected_Wavelength(channels) ; binietoglou@0: double Raw_Data_Range_Resolution(channels) ; binietoglou@0: int Background_Mode(channels) ; binietoglou@0: double Background_Low(channels) ; binietoglou@0: double Background_High(channels) ; binietoglou@0: int Molecular_Calc ; binietoglou@0: double Pressure_at_Lidar_Station ; binietoglou@0: double Temperature_at_Lidar_Station ; binietoglou@0: int id_timescale(channels) ; binietoglou@0: double Dead_Time(channels) ; binietoglou@0: int Dead_Time_Corr_Type(channels) ; binietoglou@0: int Acquisition_Mode(channels) ; binietoglou@0: double Trigger_Delay(channels) ; binietoglou@0: int LR_Input(channels) ; binietoglou@0: int Laser_Pointing_Angle_of_Profiles(time, nb_of_time_scales) ; binietoglou@0: int Raw_Data_Start_Time(time, nb_of_time_scales) ; binietoglou@0: int Raw_Data_Stop_Time(time, nb_of_time_scales) ; binietoglou@0: int Raw_Bck_Start_Time(time_bck, nb_of_time_scales) ; binietoglou@0: int Raw_Bck_Stop_Time(time_bck, nb_of_time_scales) ; binietoglou@0: int Laser_Shots(time, channels) ; binietoglou@0: double Raw_Lidar_Data(time, channels, points) ; binietoglou@0: double Background_Profile(time_bck, channels, points) ; binietoglou@0: double DAQ_Range(channels) ; binietoglou@0: binietoglou@0: // global attributes: binietoglou@0: :Measurement_ID = "20090130cc00" ; binietoglou@0: :RawData_Start_Date = "20090130" ; binietoglou@0: :RawData_Start_Time_UT = "000001" ; binietoglou@0: :RawData_Stop_Time_UT = "000501" ; binietoglou@0: :RawBck_Start_Date = "20090129" ; binietoglou@0: :RawBck_Start_Time_UT = "235001" ; binietoglou@0: :RawBck_Stop_Time_UT = "235301" ; binietoglou@0: binietoglou@0: data: binietoglou@0: binietoglou@0: channel_ID = 7, 5, 6, 8 ; binietoglou@0: binietoglou@0: Laser_Repetition_Rate = 50, 50, 50, 50 ; binietoglou@0: binietoglou@0: Laser_Pointing_Angle = 5 ; binietoglou@0: binietoglou@89: Signal_Type = 0, 7, 6, 3 ; binietoglou@0: binietoglou@0: Emitted_Wavelength = 1064, 532, 532, 532 ; binietoglou@0: binietoglou@0: Detected_Wavelength = 1064, 532, 532, 607 ; binietoglou@0: binietoglou@0: Raw_Data_Range_Resolution = 7.5, 15, 15, 15 ; binietoglou@0: binietoglou@0: Background_Mode = 0, 1, 1, 1 ; binietoglou@0: binietoglou@0: Background_Low = 0, 30000, 30000, 30000 ; binietoglou@0: binietoglou@0: Background_High = 500, 50000, 50000, 50000 ; binietoglou@0: binietoglou@0: Molecular_Calc = 0 ; binietoglou@0: binietoglou@0: Pressure_at_Lidar_Station = 1010 ; binietoglou@0: binietoglou@0: Temperature_at_Lidar_Station = 19.8 ; binietoglou@0: binietoglou@0: id_timescale = 1, 0, 0, 0 ; binietoglou@0: binietoglou@0: Dead_Time = _, 10, 10, 10 ; binietoglou@0: binietoglou@0: Dead_Time_Corr_Type = _, 0, 0, 0 ; binietoglou@0: binietoglou@0: Acquisition_Mode = 0, 1, 1, 1 ; binietoglou@0: binietoglou@0: Trigger_Delay = 50, 0, 0, 0 ; binietoglou@0: binietoglou@0: LR_Input = 1,_,_,_ ; binietoglou@0: binietoglou@0: DAQ_Range = 100,_,_,_ ; binietoglou@0: binietoglou@0: Laser_Pointing_Angle_of_Profiles = binietoglou@0: 0, 0, binietoglou@0: 0, 0, binietoglou@0: 0, 0, binietoglou@0: 0, 0, binietoglou@0: 0, 0, binietoglou@0: _, 0, binietoglou@0: _, 0, binietoglou@0: _, 0, binietoglou@0: _, 0, binietoglou@0: _, 0 ; binietoglou@0: binietoglou@0: binietoglou@0: Raw_Data_Start_Time = binietoglou@0: 0, 0, binietoglou@0: 60, 30, binietoglou@0: 120, 60, binietoglou@0: 180, 90, binietoglou@0: 240, 120, binietoglou@0: _, 150, binietoglou@0: _, 180, binietoglou@0: _, 210, binietoglou@0: _, 240, binietoglou@0: _, 270 ; binietoglou@0: binietoglou@0: Raw_Data_Stop_Time = binietoglou@0: 60, 30, binietoglou@0: 120, 60, binietoglou@0: 180, 90, binietoglou@0: 240, 120, binietoglou@0: 300, 150, binietoglou@0: _, 180, binietoglou@0: _, 210, binietoglou@0: _, 240, binietoglou@0: _, 270, binietoglou@0: _, 300 ; binietoglou@0: binietoglou@0: binietoglou@0: Raw_Bck_Start_Time = binietoglou@0: 0, 0, binietoglou@0: 60, 30, binietoglou@0: 120, 60, binietoglou@0: _, 90, binietoglou@0: _, 120, binietoglou@0: _, 150; binietoglou@0: binietoglou@0: binietoglou@0: Raw_Bck_Stop_Time = binietoglou@0: 60, 30, binietoglou@0: 120, 60, binietoglou@0: 180, 90, binietoglou@0: _, 120, binietoglou@0: _, 150, binietoglou@0: _, 180 ; binietoglou@0: binietoglou@0: binietoglou@0: Laser_Shots = binietoglou@0: 1500, 3000, 3000, 3000, binietoglou@0: 1500, 3000, 3000, 3000, binietoglou@0: 1500, 3000, 3000, 3000, binietoglou@0: 1500, 3000, 3000, 3000, binietoglou@0: 1500, 3000, 3000, 3000, binietoglou@0: 1500, _, _, _, binietoglou@0: 1500, _, _, _, binietoglou@0: 1500, _, _, _, binietoglou@0: 1500, _, _, _, binietoglou@0: 1500, _, _, _ ; binietoglou@0: binietoglou@0: binietoglou@0: Raw_Lidar_Data = ... binietoglou@0: binietoglou@0: Background_Profile = ... binietoglou@0: binietoglou@89: The name of the input file should have the following format: binietoglou@89: binietoglou@89: :: binietoglou@89: binietoglou@89: Measurement_ID.nc binietoglou@89: binietoglou@89: | so in the example the filename should be 20090130cc00.nc. binietoglou@89:   binietoglou@89: Please keep in mind that in case you submit a file like the previous binietoglou@89: one all the parameters present in it will be used by the SCC even if binietoglou@89: you have different values for the same parameters within the SCC\_DB. binietoglou@89: If you want to use the values already stored in SCC\_DB (this should binietoglou@89: be the usual way to use SCC) the *Raw Lidar Data* input file has to be binietoglou@0: modified as follows: binietoglou@0: binietoglou@0: :: binietoglou@0: binietoglou@0: dimensions: binietoglou@0: points = 5000 ; binietoglou@0: channels = 4 ; binietoglou@0: time = UNLIMITED ; // (10 currently) binietoglou@0: nb_of_time_scales = 2 ; binietoglou@0: scan_angles = 1 ; binietoglou@0: time_bck = 6 ; binietoglou@0: variables: binietoglou@0: int channel_ID(channels) ; binietoglou@0: double Laser_Pointing_Angle(scan_angles) ; binietoglou@0: double Background_Low(channels) ; binietoglou@0: double Background_High(channels) ; binietoglou@0: int Molecular_Calc ; binietoglou@0: double Pressure_at_Lidar_Station ; binietoglou@0: double Temperature_at_Lidar_Station ; binietoglou@0: int id_timescale(channels) ; binietoglou@0: int Laser_Pointing_Angle_of_Profiles(time, nb_of_time_scales) ; binietoglou@0: int Raw_Data_Start_Time(time, nb_of_time_scales) ; binietoglou@0: int Raw_Data_Stop_Time(time, nb_of_time_scales) ; binietoglou@0: int Raw_Bck_Start_Time(time_bck, nb_of_time_scales) ; binietoglou@0: int Raw_Bck_Stop_Time(time_bck, nb_of_time_scales) ; binietoglou@0: int LR_Input(channels) ; binietoglou@0: int Laser_Shots(time, channels) ; binietoglou@0: double Raw_Lidar_Data(time, channels, points) ; binietoglou@0: double Background_Profile(time_bck, channels, points) ; binietoglou@0: double DAQ_Range(channels) ; binietoglou@0: binietoglou@0: // global attributes: binietoglou@0: :Measurement_ID = "20090130cc00" ; binietoglou@0: :RawData_Start_Date = "20090130" ; binietoglou@0: :RawData_Start_Time_UT = "000001" ; binietoglou@0: :RawData_Stop_Time_UT = "000501" ; binietoglou@0: :RawBck_Start_Date = "20090129" ; binietoglou@0: :RawBck_Start_Time_UT = "235001" ; binietoglou@0: :RawBck_Stop_Time_UT = "235301" ; binietoglou@0: binietoglou@0: data: binietoglou@0: binietoglou@0: channel_ID = 7, 5, 6, 8 ; binietoglou@0: binietoglou@0: Laser_Pointing_Angle = 5 ; binietoglou@0: binietoglou@0: Background_Low = 0, 30000, 30000, 30000 ; binietoglou@0: binietoglou@0: Background_High = 500, 50000, 50000, 50000 ; binietoglou@0: binietoglou@0: Molecular_Calc = 0 ; binietoglou@0: binietoglou@0: Pressure_at_Lidar_Station = 1010 ; binietoglou@0: binietoglou@0: Temperature_at_Lidar_Station = 19.8 ; binietoglou@0: binietoglou@0: id_timescale = 1, 0, 0, 0 ; binietoglou@0: binietoglou@0: LR_Input = 1,_,_,_ ; binietoglou@0: binietoglou@0: DAQ_Range = 100,_,_,_ ; binietoglou@0: binietoglou@0: Laser_Pointing_Angle_of_Profiles = binietoglou@0: 0, 0, binietoglou@0: 0, 0, binietoglou@0: 0, 0, binietoglou@0: 0, 0, binietoglou@0: 0, 0, binietoglou@0: _, 0, binietoglou@0: _, 0, binietoglou@0: _, 0, binietoglou@0: _, 0, binietoglou@0: _, 0 ; binietoglou@0: binietoglou@0: binietoglou@0: Raw_Data_Start_Time = binietoglou@0: 0, 0, binietoglou@0: 60, 30, binietoglou@0: 120, 60, binietoglou@0: 180, 90, binietoglou@0: 240, 120, binietoglou@0: _, 150, binietoglou@0: _, 180, binietoglou@0: _, 210, binietoglou@0: _, 240, binietoglou@0: _, 270 ; binietoglou@0: binietoglou@0: Raw_Data_Stop_Time = binietoglou@0: 60, 30, binietoglou@0: 120, 60, binietoglou@0: 180, 90, binietoglou@0: 240, 120, binietoglou@0: 300, 150, binietoglou@0: _, 180, binietoglou@0: _, 210, binietoglou@0: _, 240, binietoglou@0: _, 270, binietoglou@0: _, 300 ; binietoglou@0: binietoglou@0: binietoglou@0: Raw_Bck_Start_Time = binietoglou@0: 0, 0, binietoglou@0: 60, 30, binietoglou@0: 120, 60, binietoglou@0: _, 90, binietoglou@0: _, 120, binietoglou@0: _, 150; binietoglou@0: binietoglou@0: binietoglou@0: Raw_Bck_Stop_Time = binietoglou@0: 60, 30, binietoglou@0: 120, 60, binietoglou@0: 180, 90, binietoglou@0: _, 120, binietoglou@0: _, 150, binietoglou@0: _, 180 ; binietoglou@0: binietoglou@0: binietoglou@0: Laser_Shots = binietoglou@0: 1500, 3000, 3000, 3000, binietoglou@0: 1500, 3000, 3000, 3000, binietoglou@0: 1500, 3000, 3000, 3000, binietoglou@0: 1500, 3000, 3000, 3000, binietoglou@0: 1500, 3000, 3000, 3000, binietoglou@0: 1500, _, _, _, binietoglou@0: 1500, _, _, _, binietoglou@0: 1500, _, _, _, binietoglou@0: 1500, _, _, _, binietoglou@0: 1500, _, _, _ ; binietoglou@0: binietoglou@0: binietoglou@0: Raw_Lidar_Data = ... binietoglou@0: binietoglou@0: Background_Profile = ... binietoglou@0: binietoglou@0: This example file contains the minimum collection of mandatory binietoglou@89: information that has to be found within the *Raw Lidar Data* input file. binietoglou@89: If it is really necessary, the user can decide to add to these mandatory binietoglou@89: parameters any number of additional parameters considered in the binietoglou@89: previous example. binietoglou@0: binietoglou@0: Finally, suppose we want to make the following changes with respect to binietoglou@0: the previous example: binietoglou@0: binietoglou@0: #. use a sounding file for molecular density calculation instead of “US binietoglou@0: Standar Atmosphere 1976” binietoglou@0: binietoglou@0: #. supply a lidar ratio profile to use in elastic backscatter retrieval binietoglou@0: instead of a fixed value binietoglou@0: binietoglou@0: #. provide a overlap function for overlap correction binietoglou@0: binietoglou@0: In this case we have to generate the following NetCDF additional files: binietoglou@0: binietoglou@89: - | ``rs_20090130cc00.nc`` binietoglou@89: | The name of *Sounding Data* file has to be computed as follows: binietoglou@89: | ``"rs_"``\ +\ ``Measurement_ID`` binietoglou@89: | The structure of this file is summarized in table 2 of the pdf. binietoglou@0: binietoglou@89: - | ``ov_20090130cc00.nc`` binietoglou@89: | The name of *Overlap* file has to be computed as follows: binietoglou@89: | ``"ov_"``\ +\ ``Measurement_ID`` binietoglou@89: | The structure of this file is summarized in table 3 of the pdf. binietoglou@0: binietoglou@89: - | ``lr_20090130cc00.nc`` binietoglou@89: | The name of *Lidar Ratio* file has to be computed as follows: binietoglou@89: | ``"lr_"``\ +\ ``Measurement_ID`` binietoglou@89: | The structure of this file is summarized in table 4 of the pdf. binietoglou@0: binietoglou@89: Moreover we need to apply the following changes to the *Raw Lidar Data* binietoglou@0: input file: binietoglou@0: binietoglou@89: #. Change the value of the variable ``Molecular_Calc`` as follows: binietoglou@0: binietoglou@0: :: binietoglou@0: binietoglou@0: Molecular_Calc = 1 ; binietoglou@0: binietoglou@0: Of course the variables ``Pressure_at_Lidar_Station`` and binietoglou@0: ``Temperature_at_Lidar_Station`` are not necessary anymore. binietoglou@0: binietoglou@89: #. Change the values of the array ``LR_Input`` as follows: binietoglou@0: binietoglou@0: :: binietoglou@0: binietoglou@0: LR_Input = 0,_,_,_ ; binietoglou@0: binietoglou@89: #. Add the global attribute ``Sounding_File_Name`` binietoglou@0: binietoglou@0: :: binietoglou@0: binietoglou@0: Sounding_File_Name = "rs_20090130cc00.nc" ; binietoglou@0: binietoglou@89: #. Add the global attribute ``LR_File_Name`` binietoglou@0: binietoglou@0: :: binietoglou@0: binietoglou@0: LR_File_Name = "lr_20090130cc00.nc" ; binietoglou@0: binietoglou@89: #. Add the global attribute ``Overlap_File_Name`` binietoglou@0: binietoglou@0: :: binietoglou@0: binietoglou@0: Overlap_File_Name = "ov_20090130cc00.nc" ; binietoglou@89: