binietoglou@0: The SCC netCDF file format binietoglou@0: ========================== binietoglou@0: binietoglou@0: Rationale binietoglou@0: --------- binietoglou@0: binietoglou@0: The Single Calculus Chain (SCC) is composed by two different modules: binietoglou@0: binietoglou@0: - pre-processing module ( scc\_preprocessing) binietoglou@0: binietoglou@0: - optical processing module ( ELDA) 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@0: parameter is found in the input files the SCC will keep it without binietoglou@0: looking into SCC\_DB. binietoglou@0: binietoglou@0: The input files have to be submitted to the SCC in NetCDF format. At the binietoglou@0: present the SCC can handle four different types of input files: binietoglou@0: binietoglou@0: 1. Raw Lidar Data binietoglou@0: 2. Sounding Data binietoglou@0: 3. Overlap binietoglou@0: 4. Lidar Ratio binietoglou@0: binietoglou@0: binietoglou@0: 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@0: pre-processing and optical processing. The Sounding Data file binietoglou@0: contains the data coming from a correlative radiosounding and it is used binietoglou@0: by the SCC for molecular density calculation. The Overlap file binietoglou@0: contains the measured overlap function. The Lidar Ratio file contains binietoglou@0: a lidar ratio profile to use in elastic backscatter retrievals. The binietoglou@0: Raw Lidar Data file is of course mandatory and the Sounding Data, binietoglou@0: Overlap and Lidar Ratio files are optional. If Sounding Data file binietoglou@0: is not submitted by the user, the molecular density will be calculated binietoglou@0: by the SCC using the “US Standard Atmosphere 1976”. If the Overlap binietoglou@0: file is not submitted by the user, the SCC will get the full overlap binietoglou@0: height from SCC\_DB and it will produce optical results starting from binietoglou@0: this height. If Lidar Ratio file is not submitted by the user, the binietoglou@0: SCC will 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@0: course the file Raw Lidar Data is mandatory). For example the user binietoglou@0: can submit together with the Raw Lidar Data file only the Sounding binietoglou@0: Data file or only the Overlap file. binietoglou@0: binietoglou@0: This document provides a detailed explanation about the structure of the binietoglou@0: NetCDF input files to use for SCC data submission. All Earlinet groups binietoglou@0: should read it carefully because they have to produce such kind of input binietoglou@0: files if they want to use the SCC for their standard lidar retrievals. binietoglou@0: Every comments or suggestions regarding this document can be sent to binietoglou@0: Giuseppe D’Amico by e-mail at ``damico@imaa.cnr.it`` binietoglou@0: binietoglou@0: This document is available for downloading at ``www.earlinetasos.org`` binietoglou@0: binietoglou@0: In table tab:rawdata is reported a list of dimensions, variables and binietoglou@0: global attributes that can be used in the NetCDF Raw Lidar Data input binietoglou@0: 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@0: 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@0: optional global attributes must not appear within Raw Lidar Data binietoglou@0: file. This is the suggested and recommended way to use the SCC. Please binietoglou@0: include optional parameters in the Raw Lidar Data only as an binietoglou@0: exception. binietoglou@0: binietoglou@0: In table tab:sounding, tab:overlap and tab:lr are reported all the binietoglou@0: information about the structure of Sounding Data, Overlap and binietoglou@0: Lidar Ratio input files respectively. binietoglou@0: binietoglou@0: Example binietoglou@0: ------- binietoglou@0: binietoglou@0: 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@0: | Start Date | :math:`30^{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@0: Moreover suppose that this measurement is composed by the following binietoglou@0: lidar channels: binietoglou@0: binietoglou@0: 1. 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@0: 2. 532 cross lidar channel binietoglou@0: binietoglou@0: +-----------------------------+---------------------------------+ binietoglou@0: | Emission wavelength=532nm | Detection wavelength=532nm | 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@0: | Range resolution=15m | Polarization state=cross | binietoglou@0: +-----------------------------+---------------------------------+ binietoglou@0: binietoglou@0: 3. 532 parallel lidar channel binietoglou@0: binietoglou@0: +-----------------------------+---------------------------------+ binietoglou@0: | Emission wavelength=532nm | Detection wavelength=532nm | 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@0: | Range resolution=15m | Polarization state=parallel | binietoglou@0: +-----------------------------+---------------------------------+ binietoglou@0: binietoglou@0: 4. 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@0: | Range resolution=15m | binietoglou@0: +-----------------------------+---------------------------------+ binietoglou@0: binietoglou@0: 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@0: 29:math:`^\mathrmth` January 2009. binietoglou@0: binietoglou@0: Dimensions binietoglou@0: ~~~~~~~~~~ binietoglou@0: binietoglou@0: Looking at table tab:rawdata 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: 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@0: Variables binietoglou@0: ~~~~~~~~~ binietoglou@0: binietoglou@0: In this section it will be explained how to fill all the possible binietoglou@0: variables either mandatory or optional of Raw Lidar Data input file. binietoglou@0: binietoglou@0: Raw_Data_Start_Time(time, nb_of_time_scales) binietoglou@0: This 2 dimensional mandatory array has to contain the acquisition binietoglou@0: start time (in seconds from the time given by the global attribute binietoglou@0: ``RawData_Start_Time_UT``) of each lidar profile. In this example we binietoglou@0: have two different time scales: one is characterized by steps of 30 binietoglou@0: seconds (the 1064nm is acquired with this time scale) the other by binietoglou@0: steps of 60 seconds (532cross, 532parallel and 607nm). Moreover the binietoglou@0: measurement start time is 00:00:01 UT and the measurement stop time binietoglou@0: 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@0: Raw_Data_Stop_Time(time, nb_of_time_scales) binietoglou@0: The same as previous item but for the data acquisition stop time. binietoglou@0: 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@0: Raw_Lidar_Data(time, channels, points) binietoglou@0: This 3 dimensional mandatory array has to be filled with the binietoglou@0: time-series of raw lidar data. The photoncounting profiles have to binietoglou@0: submitted in counts (so as integers) while the analog ones in mV. The binietoglou@0: order the user chooses to fill this array defines the correspondence binietoglou@0: between channel index and lidar data. binietoglou@0: binietoglou@0: For example if we fill this array in such way that: binietoglou@0: binietoglou@0: +-------------------------------------+------------------------------------------------------------+ binietoglou@0: | Raw_Lidar_Data(time,0,points | :math:`\rightarrow` is the time-series of 1064 nm | binietoglou@0: +-------------------------------------+------------------------------------------------------------+ binietoglou@0: | Raw_Lidar_Data(time,1,points | :math:`\rightarrow` is the time-series of 532 cross | binietoglou@0: +-------------------------------------+------------------------------------------------------------+ binietoglou@0: | Raw_Lidar_Data(time,2,points | :math:`\rightarrow` is the time-series of 532 parallel | binietoglou@0: +-------------------------------------+------------------------------------------------------------+ binietoglou@0: | Raw_Lidar_Data(time,3,points | :math:`\rightarrow` is the time-series of 607 nm | binietoglou@0: +-------------------------------------+------------------------------------------------------------+ binietoglou@0: binietoglou@0: from now on the channel index 0 is associated to the 1064 channel, binietoglou@0: 1 to the 532 cross, 2 to the 532 parallel and 3 to the 607nm. binietoglou@0: binietoglou@0: Raw_Bck_Start_Time(time_bck, nb_of_time_scales) binietoglou@0: This 2 dimensional optional array has to contain the acquisition binietoglou@0: start time (in seconds from the time given by the global attribute binietoglou@0: ``RawBck_Start_Time_UT``) of each dark measurements profile. binietoglou@0: Following the same procedure used for the variable binietoglou@0: ``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@0: Raw_Bck_Stop_Time(time_bck, nb_of_time_scales) binietoglou@0: The same as previous item but for the dark acquisition stop time. binietoglou@0: 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@0: binietoglou@0: Background_Profile(time_bck, channels, points) binietoglou@0: This 3 dimensional optional array has to be filled with the binietoglou@0: time-series of the dark measurements data. The photoncounting binietoglou@0: profiles have to submitted in counts (so as integers) while the binietoglou@0: analog ones in mV. The user has to fill this array following the same binietoglou@0: order used in filling the array ``Raw_Lidar_Data``: binietoglou@0: binietoglou@0: +---------------------------------------------+----------------------------------------------------------+ binietoglou@0: | Background_Profile(time_bck,0,points | :math:`\rightarrow` dark time-series at 1064 nm | binietoglou@0: +---------------------------------------------+----------------------------------------------------------+ binietoglou@0: | Background_Profile(time_bck,1,points | :math:`\rightarrow` dark time-series at 532 cross | binietoglou@0: +---------------------------------------------+----------------------------------------------------------+ binietoglou@0: | Background_Profile(time_bck,2,points | :math:`\rightarrow` dark time-series at 532 parallel | binietoglou@0: +---------------------------------------------+----------------------------------------------------------+ binietoglou@0: | Background_Profile(time_bck,3,points | :math:`\rightarrow` dark time-series at 607 nm | binietoglou@0: +---------------------------------------------+----------------------------------------------------------+ binietoglou@0: binietoglou@0: binietoglou@0: channel_ID(channels) binietoglou@0: This mandatory array provides the link between the channel index binietoglou@0: within the Raw Lidar Data input file and the channel ID in binietoglou@0: SCC\_DB. To fill this variable the user has to know which channel IDs binietoglou@0: in SCC\_DB correspond to his lidar channels. For this purpose the binietoglou@0: SCC, in its final version will provide to the user a special tool to binietoglou@0: get these channel IDs through a Web interface. At the moment this binietoglou@0: interface is not yet available and these channel IDs will be binietoglou@0: communicated directly to the user by the NA5 people. binietoglou@0: binietoglou@0: Anyway to continue the example let’s suppose that the four lidar binietoglou@0: channels taken into account are mapped into SCC\_DB with the binietoglou@0: following channel IDs: binietoglou@0: binietoglou@0: +----------------+--------------------------------------+ binietoglou@0: | 1064 nm | :math:`\rightarrow` channel ID=7 | binietoglou@0: +----------------+--------------------------------------+ binietoglou@0: | 532 cross | :math:`\rightarrow` channel ID=5 | binietoglou@0: +----------------+--------------------------------------+ binietoglou@0: | 532 parallel | :math:`\rightarrow` channel ID=6 | binietoglou@0: +----------------+--------------------------------------+ binietoglou@0: | 607 nm | :math:`\rightarrow` channel ID=8 | binietoglou@0: +----------------+--------------------------------------+ binietoglou@0: binietoglou@0: In this case we have to define: binietoglou@0: binietoglou@0: :: binietoglou@0: binietoglou@0: channel_ID = 7, 5, 6, 8 ; binietoglou@0: binietoglou@0: id_timescale(channels) binietoglou@0: This mandatory array is introduced to determine which time scale is binietoglou@0: used for the acquisition of each lidar channel. In particular this binietoglou@0: array defines the link between the channel index and the time scale binietoglou@0: index. In our example we have two different time scales. Filling the binietoglou@0: arrays ``Raw_Data_Start_Time`` and ``Raw_Data_Stop_Time`` we have binietoglou@0: defined 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 with steps of binietoglou@0: 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@0: Laser_Pointing_Angle(scan_angles binietoglou@0: This mandatory array contains all the scan angles used in the binietoglou@0: measurement. In our example we have only one scan angle of 5 degrees binietoglou@0: 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@0: Laser_Pointing_Angle_of_Profiles(time, nb_of_time_scales) binietoglou@0: This mandatory array is introduced to determine which scan angle is binietoglou@0: used for the acquisition of each lidar profile. In particular this binietoglou@0: array defines the link between the time and time scales indexes and binietoglou@0: the scan angle index. In our example we have a single scan angle that binietoglou@0: has to correspond to the scan angle index 0. So this array has to be binietoglou@0: 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@0: Laser_Shots(time, channels) binietoglou@0: This mandatory array stores the laser shots accumulated at each time binietoglou@0: for each channel. In our example the number of laser shots binietoglou@0: accumulated is 1500 for the 1064nm channels and 3000 for all the binietoglou@0: other channels. Moreover the laser shots do not change with the time. binietoglou@0: 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@0: Emitted_Wavelength(channels) binietoglou@0: This optional array defines the link between the channel index and binietoglou@0: the emission wavelength for each lidar channel. The wavelength has to binietoglou@0: be expressed in nm. This information can be also taken from SCC\_DB. binietoglou@0: In our example we have: binietoglou@0: binietoglou@0: :: binietoglou@0: binietoglou@0: Emitted_Wavelength = 1064, 532, 532, 532 ; binietoglou@0: binietoglou@0: Detected_Wavelength(channels) binietoglou@0: This optional array defines the link between the channel index and binietoglou@0: the detected wavelength for each lidar channel. Here detected binietoglou@0: wavelength means the value of center of interferential filter binietoglou@0: expressed in nm. This information can be also taken from SCC\_DB. In binietoglou@0: our example we have: binietoglou@0: binietoglou@0: :: binietoglou@0: binietoglou@0: Detected_Wavelength = 1064, 532, 532, 607 ; binietoglou@0: binietoglou@0: Raw_Data_Range_Resolution(channels) binietoglou@0: This optional array defines the link between the channel index and binietoglou@0: the raw range resolution for each channel. If the scan angle is binietoglou@0: different from zero this quantity is different from the vertical binietoglou@0: resolution. More precisely if :math:`\alpha` is the scan angle used binietoglou@0: and :math:`\Delta z` is the range resolution the vertical binietoglou@0: resolution is calculated as :math:`\Delta binietoglou@0: z'=\Delta z \cos\alpha`. This array has to be filled with binietoglou@0: :math:`\Delta z` and not with :math:`\Delta z'`. The unit is binietoglou@0: meters. This information can be also taken from SCC\_DB. In our binietoglou@0: 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@0: ID_Range(channels) binietoglou@0: This optional array defines if a particular channel is configured as binietoglou@0: high, low or ultranear range channel. In particular a value 0 binietoglou@0: indicates a low range channel, a value 1 a high range channel and a binietoglou@0: value of 2 an ultranear range channel. If for a particular channel binietoglou@0: you don’t separate between high and low range channel, please set the binietoglou@0: corresponding value to 1. This information can be also taken from binietoglou@0: SCC\_DB. In our case we have to set: binietoglou@0: binietoglou@0: :: binietoglou@0: binietoglou@0: ID_Range = 1, 1, 1, 1 ; binietoglou@0: binietoglou@0: Scattering_Mechanism(channels) binietoglou@0: This optional array defines the scattering mechanism involved in binietoglou@0: each lidar channel. In particular the following values are adopted: binietoglou@0: binietoglou@0: +------+---------------------------------------------------------------------------------------------+ binietoglou@0: | 0 | :math:`\rightarrow` Total elastic backscatter | binietoglou@0: +------+---------------------------------------------------------------------------------------------+ binietoglou@0: | 1 | :math:`\rightarrow` :math:`N_2` vibrational Raman backscatter | binietoglou@0: +------+---------------------------------------------------------------------------------------------+ binietoglou@0: | 2 | :math:`\rightarrow` Cross polarization elastic backscatter | binietoglou@0: +------+---------------------------------------------------------------------------------------------+ binietoglou@0: | 3 | :math:`\rightarrow` Parallel polarization elastic backscatter | binietoglou@0: +------+---------------------------------------------------------------------------------------------+ binietoglou@0: | 4 | :math:`\rightarrow` :math:`H_2O` vibrational Raman backscatter | binietoglou@0: +------+---------------------------------------------------------------------------------------------+ binietoglou@0: | 5 | :math:`\rightarrow` Rotational Raman Stokes line close to elastic line | binietoglou@0: +------+---------------------------------------------------------------------------------------------+ binietoglou@0: | 6 | :math:`\rightarrow` Rotational Raman Stokes line far from elastic line | binietoglou@0: +------+---------------------------------------------------------------------------------------------+ binietoglou@0: | 7 | :math:`\rightarrow` Rotational Raman anti-Stokes line close to elastic line | binietoglou@0: +------+---------------------------------------------------------------------------------------------+ binietoglou@0: | 8 | :math:`\rightarrow` Rotational Raman anti-Stokes line far from elastic line | binietoglou@0: +------+---------------------------------------------------------------------------------------------+ binietoglou@0: | 9 | :math:`\rightarrow` Rotational Raman Stokes and anti-Stokes lines close to elastic line | binietoglou@0: +------+---------------------------------------------------------------------------------------------+ binietoglou@0: | 10 | :math:`\rightarrow` Rotational Raman Stokes and anti-Stokes lines far from elastic line | binietoglou@0: +------+---------------------------------------------------------------------------------------------+ binietoglou@0: binietoglou@0: This information can be also taken from SCC\_DB. In our example we have: binietoglou@0: binietoglou@0: :: binietoglou@0: binietoglou@0: Scattering_Mechanism = 0, 2, 3, 1 ; binietoglou@0: binietoglou@0: Acquisition_Mode(channels) binietoglou@0: This optional array defines the acquisition mode (analog or binietoglou@0: photoncounting) involved in each lidar channel. In particular a value binietoglou@0: of 0 means analog mode and 1 photoncounting mode. This information binietoglou@0: 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@0: Laser_Repetition_Rate(channels) binietoglou@0: This optional array defines the repetition rate in Hz used to binietoglou@0: acquire each lidar channel. This information can be also taken from binietoglou@0: SCC\_DB. In our example we are supposing we have only one laser with binietoglou@0: 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@0: Dead_Time(channels) binietoglou@0: This optional array defines the dead time in ns associated to each binietoglou@0: lidar channel. The SCC will use the values given by this array to binietoglou@0: correct the photoncounting signals for dead time. Of course for binietoglou@0: analog signals no dead time correction will be applied (for analog binietoglou@0: channels the corresponding dead time values have to be set to binietoglou@0: undefined value). This information can be also taken from SCC\_DB. In binietoglou@0: our example the 1064 nm channel is acquired in analog mode so the binietoglou@0: corresponding dead time value has to be undefined. If we suppose a binietoglou@0: 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@0: Dead_Time_Corr_Type(channels binietoglou@0: This optional array defines which kind of dead time correction has binietoglou@0: to be applied on each photoncounting channel. The SCC will correct binietoglou@0: the data supposing a not-paralyzable channel if a value of 0 is found binietoglou@0: while a paralyzable channel is supposed if a value of 1 is found. Of binietoglou@0: course for analog signals no dead time correction will be applied and binietoglou@0: so the corresponding values have to be set to undefined value. This binietoglou@0: information can be also taken from SCC\_DB. In our example the 1064 binietoglou@0: nm channel is acquired in analog mode so the corresponding has to be binietoglou@0: undefined. If we want to consider all the photoncounting signals as binietoglou@0: 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@0: Trigger_Delay(channels) binietoglou@0: This optional array defines the delay (in ns) of the middle of the binietoglou@0: first rangebin with respect to the output laser pulse for each lidar binietoglou@0: channel. The SCC will use the values given by this array to correct binietoglou@0: for trigger delay. This information can be also taken from SCC\_DB. binietoglou@0: Let’s suppose that in our example all the photoncounting channels are binietoglou@0: not affected by this delay and only the analog channel at 1064nm is binietoglou@0: acquired with a delay of 50ns. In this case we have to set: binietoglou@0: binietoglou@0: :: binietoglou@0: binietoglou@0: Trigger_Delay = 50, 0, 0, 0 ; binietoglou@0: binietoglou@0: Background_Mode(channels binietoglou@0: This optional array defines how the atmospheric background has to be binietoglou@0: subtracted from the lidar channel. Two options are available for the binietoglou@0: 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@0: Background_Low(channels) binietoglou@0: This mandatory array defines the minimum altitude (in meters) to binietoglou@0: consider in calculating the atmospheric background for each channel. binietoglou@0: In case pre-trigger mode is used the corresponding value has to be binietoglou@0: set to the rangebin to be used as lower limit (within pre-trigger binietoglou@0: region) for background calculation. In our example, if we want to binietoglou@0: calculate the background between 30000 and 50000 meters for all binietoglou@0: photoncounting channels and we want to use the first 500 pre-trigger binietoglou@0: bins for the background calculation for the 1064nm channel we have to binietoglou@0: set: binietoglou@0: binietoglou@0: :: binietoglou@0: binietoglou@0: Background_Low= 0, 30000, 30000, 30000 ; binietoglou@0: binietoglou@0: Background_High(channels) binietoglou@0: This mandatory array defines the maximum altitude (in meters) to binietoglou@0: consider in calculating the atmospheric background for each channel. binietoglou@0: In case pre-trigger mode is used the corresponding value has to be binietoglou@0: set to the rangebin to be used as upper limit (within pre-trigger binietoglou@0: region) for background calculation. In our example, if we want to binietoglou@0: calculate the background between 30000 and 50000 meters for all binietoglou@0: photoncounting channels and we want to use the first 500 pre-trigger binietoglou@0: bins for the background calculation for the 1064nm channel we have to binietoglou@0: set: binietoglou@0: binietoglou@0: :: binietoglou@0: binietoglou@0: Background_High = 500, 50000, 50000, 50000 ; binietoglou@0: binietoglou@0: Molecular_Calc binietoglou@0: This mandatory variable defines the way used by SCC to calculate the binietoglou@0: molecular density profile. At the moment two options are 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@0: summarized in table tab:sounding). 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@0: Pressure_at_Lidar_Station binietoglou@0: Because we have chosen the US Standard Atmosphere for calculation of binietoglou@0: the molecular density profile we have to give the pressure in hPa at binietoglou@0: lidar station level: binietoglou@0: binietoglou@0: :: binietoglou@0: binietoglou@0: Pressure_at_Lidar_Station = 1010 ; binietoglou@0: binietoglou@0: Temperature_at_Lidar_Station binietoglou@0: Because we have chosen the US Standard Atmosphere for calculation of binietoglou@0: the molecular density profile we have to give the temperature in C at binietoglou@0: lidar station level: binietoglou@0: binietoglou@0: :: binietoglou@0: binietoglou@0: Temperature_at_Lidar_Station = 19.8 ; binietoglou@0: binietoglou@0: Depolarization_Factor(channels) binietoglou@0: This array is required only for lidar systems that use the two binietoglou@0: depolarization channels for the backscatter retrieval. It represents binietoglou@0: the factor :math:`f` to calculate the total backscatter signal binietoglou@0: :math:`S_t` combining its cross :math:`S_c` and parallel binietoglou@0: :math:`S_p` components: :math:`S_t=S_p+fS_c`. This factor is binietoglou@0: mandatory only for systems acquiring :math:`S_c` and :math:`S_p` binietoglou@0: and not :math:`S_t`. For systems acquiring :math:`S_c`, binietoglou@0: :math:`S_p` and :math:`S_t` this factor is optional and it will binietoglou@0: be used only for depolarizaton ratio calculation. Moreover only the binietoglou@0: values of the array corresponding to cross polarization channels will binietoglou@0: be considered; all other values will be not taken into account and binietoglou@0: should be set to undefined value. In our example for the wavelength binietoglou@0: 532nm we have only the cross and the parallel components and not the binietoglou@0: total one. So we have to give the value of this factor only in binietoglou@0: correspondence of the 532nm cross polarization channel that binietoglou@0: corresponds to the channel index 1. Suppose that this factor is 0.88. binietoglou@0: Moreover, because we don’t have any other depolarization channels we binietoglou@0: have also to set all other values of the array to undefined value. binietoglou@0: binietoglou@0: :: binietoglou@0: binietoglou@0: Depolarization_Factor = _,0.88,_,_ ; binietoglou@0: binietoglou@0: LR_Input(channels) binietoglou@0: This array is required only for lidar channels for which elastic binietoglou@0: backscatter retrieval has to be performed. It defines the lidar ratio binietoglou@0: 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@0: summarized in table tab:lr). 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@0: DAQ_Range(channels) binietoglou@0: This array is required only if one or more lidar signals are binietoglou@0: acquired in analog mode. It gives the analog scale in mV used to binietoglou@0: acquire the analog signals. In our example we have only the 1064nm binietoglou@0: channel acquired in analog mode. If we have used a 100mV analog scale binietoglou@0: to acquire this channel we have to set: binietoglou@0: binietoglou@0: :: binietoglou@0: binietoglou@0: DAQ_Range = 100,_,_,_ ; binietoglou@0: binietoglou@0: Global attributes binietoglou@0: ~~~~~~~~~~~~~~~~~ binietoglou@0: binietoglou@0: Measurement_ID binietoglou@0: This mandatory global attribute defines the measurement ID binietoglou@0: corresponding to the actual lidar measurement. It is a string binietoglou@0: composed by 12 characters. The first 8 characters give the start date binietoglou@0: of measurement in the format YYYYMMDD. The next 2 characters give the binietoglou@0: Earlinet call-sign of the station. The last 2 characters are used to binietoglou@0: distinguish between different time-series within the same date. In binietoglou@0: our example we have to set: binietoglou@0: binietoglou@0: :: binietoglou@0: binietoglou@0: Measurement_ID= "20090130cc00" ; binietoglou@0: binietoglou@0: RawData_Start_Date binietoglou@0: This mandatory global attribute defines the start date of lidar binietoglou@0: 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@0: RawData_Start_Time_UT binietoglou@0: This mandatory global attribute defines the UT start time of lidar binietoglou@0: 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@0: RawData_Stop_Time_UT`` binietoglou@0: This mandatory global attribute defines the UT stop time of lidar binietoglou@0: 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@0: RawBck_Start_Date binietoglou@0: This optional global attribute defines the start date of dark binietoglou@0: 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@0: RawBck_Start_Time_UT binietoglou@0: This optional global attribute defines the UT start time of dark binietoglou@0: 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@0: RawBck_Stop_Time_UT binietoglou@0: This optional global attribute defines the UT stop time of dark binietoglou@0: 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@0: Example of file (CDL format) binietoglou@0: ---------------------------- binietoglou@0: binietoglou@0: 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@0: int ID_Range(channels) ; binietoglou@0: int Scattering_Mechanism(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@0: ID_Range = 1, 1, 1, 1 ; binietoglou@0: binietoglou@0: Scattering_Mechanism = 0, 2, 3, 1 ; 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@0: Please keep in mind that in case you submit a file like the previous one binietoglou@0: all the parameters present in it will be used by the SCC even if you binietoglou@0: have different values for the same parameters within the SCC\_DB. If you binietoglou@0: want to use the values already stored in SCC\_DB (this should be the binietoglou@0: 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@0: information that has to be found within the Raw Lidar Data input binietoglou@0: file. If it is really necessary, the user can decide to add to these binietoglou@0: mandatory parameters any number of additional parameters considered in binietoglou@0: the 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@0: rs_20090130cc00.nc binietoglou@0: The name of Sounding Data file has to be computed as follows: binietoglou@0: ``"rs_"``+``Measurement_ID`` binietoglou@0: The structure of this file is summarized in table tab:sounding. binietoglou@0: binietoglou@0: ov_20090130cc00.nc binietoglou@0: The name of Overlap file has to be computed as follows: binietoglou@0: ``"ov_"``+``Measurement_ID`` binietoglou@0: The structure of this file is summarized in table tab:overlap. binietoglou@0: binietoglou@0: lr_20090130cc00.nc binietoglou@0: The name of Lidar Ratio file has to be computed as follows: binietoglou@0: ``"lr_"``+``Measurement_ID`` binietoglou@0: The structure of this file is summarized in table tab:lr. binietoglou@0: binietoglou@0: Moreover we need to apply the following changes to the Raw Lidar Data binietoglou@0: input file: binietoglou@0: binietoglou@0: 1. 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@0: 2. Change the values of the array ``LR_Input`` as follows: binietoglou@0: binietoglou@0: :: binietoglou@0: binietoglou@0: LR_Input = 0,_,_,_ ; binietoglou@0: binietoglou@0: 3. Add the global attribute ``Sounding_File_Name`` binietoglou@0: binietoglou@0: :: binietoglou@0: binietoglou@0: Sounding_File_Name = "rs_20090130cc00.nc" ; binietoglou@0: binietoglou@0: 5. Add the global attribute ``LR_File_Name`` binietoglou@0: binietoglou@0: :: binietoglou@0: binietoglou@0: LR_File_Name = "lr_20090130cc00.nc" ; binietoglou@0: binietoglou@0: 6. Add the global attribute ``Overlap_File_Name`` binietoglou@0: binietoglou@0: :: binietoglou@0: binietoglou@0: Overlap_File_Name = "ov_20090130cc00.nc" ;