docs/file_formats/netcdf_file.rst

Tue, 09 Mar 2021 22:03:58 +0200

author
ioannis@ioannis-VirtualBox
date
Tue, 09 Mar 2021 22:03:58 +0200
changeset 123
ed1e3bfbda6e
parent 121
bb1b88add508
child 124
becb9de86607
permissions
-rw-r--r--

Updated config

ulalume3@99 1 .. _netcdf_file:
ulalume3@99 2
ulalume3@99 3 The SCC input netCDF file format
ulalume3@99 4 ================================
ulalume3@99 5
ioannis@121 6 A more detailed version of this document can be found in this :download:`pdf file <../files/NetCDF_input_file_v3_2.pdf>`.
ulalume3@99 7
ulalume3@99 8 .. note::
ulalume3@99 9
ioannis@120 10 You can check the format of the files you create using the linked `script <https://gitlab.com/ioannis_binietoglou/scc-netcdf-checker>`_ .
ulalume3@99 11
ulalume3@99 12
ulalume3@99 13 Rationale
ulalume3@99 14 ---------
ulalume3@99 15
ulalume3@99 16 The Single Calculus Chain (SCC) is composed by three different modules:
ulalume3@99 17
ulalume3@99 18 - pre-processing module (*ELPP*)
ulalume3@99 19
ulalume3@99 20 - optical processing module (*ELDA*)
ulalume3@99 21
ulalume3@99 22 - depolarization calibrator module (*ELDEC*)
ulalume3@99 23
ulalume3@99 24 To perfom aerosol optical retrievals the SCC needs not only the raw
ulalume3@99 25 lidar data but also a certain number of parameters to use in both
ulalume3@99 26 pre-processing and optical processing stages. The SCC gets these
ulalume3@99 27 parameters looking at two different locations:
ulalume3@99 28
ulalume3@99 29 - Single Calculus Chain relational database (SCC\_DB)
ulalume3@99 30
ulalume3@99 31 - Input files
ulalume3@99 32
ulalume3@99 33 There are some paramenters that can be found only in the input files
ulalume3@99 34 (those ones changing from measurement to measurement), others that can
ulalume3@99 35 be found only in the SCC\_DB and other ones that can be found in both
ulalume3@99 36 these locations. In the last case, if a particular parameter is needed,
ulalume3@99 37 the SCC will search first in the input files and then in SCC\_DB. If the
ulalume3@99 38 parameter is found in the input files, the SCC will keep it without
ulalume3@99 39 looking into SCC\_DB.
ulalume3@99 40
ulalume3@99 41 The input files have to be submitted to the SCC in NetCDF format. At
ulalume3@99 42 present the SCC can handle four different types of input files:
ulalume3@99 43
ulalume3@99 44 1. Raw Lidar Data
ulalume3@99 45
ulalume3@99 46 2. Sounding Data
ulalume3@99 47
ulalume3@99 48 3. Overlap
ulalume3@99 49
ulalume3@99 50 4. Lidar Ratio
ulalume3@99 51
ulalume3@99 52 As already mentioned, the *Raw lidar data* file contains not only the
ulalume3@99 53 raw lidar data but also other parameters to use to perform the
ulalume3@99 54 pre-processing and optical processing. The *Sounding Data* file contains
ulalume3@99 55 the data coming from a correlative radiosounding and it is used by the
ulalume3@99 56 SCC for molecular density calculation. The *Overlap* file contains the
ulalume3@99 57 measured overlap function. The *Lidar Ratio* file contains a lidar ratio
ulalume3@99 58 profile to use in elastic backscatter retrievals. The *Raw Lidar Data*
ulalume3@99 59 file is of course mandatory and the *Sounding Data*, *Overlap* and
ulalume3@99 60 *Lidar Ratio* files are optional. If *Sounding Data* file is not
ulalume3@99 61 submitted by the user, the molecular density will be calculated by the
ulalume3@99 62 SCC using the "US Standard Atmosphere 1976". If the *Overlap* file is
ulalume3@99 63 not submitted by the user, the SCC will get the full overlap height from
ulalume3@99 64 SCC\_DB and it will produce optical results starting from this height.
ulalume3@99 65 If *Lidar Ratio* file is not submitted by the user, the SCC will
ulalume3@99 66 consider a fixed value for lidar ratio got from SCC\_DB.
ulalume3@99 67
ulalume3@99 68 The user can decide to submit all these files or any number of them (of
ulalume3@99 69 course the file *Raw Lidar Data* is mandatory). For example the user can
ulalume3@99 70 submit together with the *Raw Lidar Data* file only the *Sounding Data*
ulalume3@99 71 file or only the *Overlap* file.
ulalume3@99 72
ulalume3@99 73 This document provides a detailed example about the structure of
ulalume3@99 74 the NetCDF input files to use for SCC data submission. All Earlinet
ulalume3@99 75 groups should read it carefully because they have to produce such kind
ulalume3@99 76 of input files if they want to use the SCC for their standard lidar
ulalume3@99 77 retrievals.
ulalume3@99 78
ulalume3@99 79 Additionaly, the linked :download:`pdf file <../files/NetCDF_input_file_v3.pdf>` contains
ulalume3@99 80 tables with all mandatory and optional variables for the netcdf files
ulalume3@99 81 accepted by the SCC. Table 1 contains a list of dimensions, variables and
ulalume3@99 82 global attributes that can be used in the NetCDF *Raw Lidar Data*
ulalume3@99 83 input file. For each of them it is indicated:
ulalume3@99 84
ulalume3@99 85 - The name. For the multidimensional variables also the corresponding
ulalume3@99 86 dimensions are reported
ulalume3@99 87
ulalume3@99 88 - A description explaining the meaning
ulalume3@99 89
ulalume3@99 90 - The type
ulalume3@99 91
ulalume3@99 92 - If it is mandatory or optional
ulalume3@99 93
ulalume3@99 94 As already mentioned, the SCC can get some parameters looking first in
ulalume3@99 95 the *Raw Lidar Data* input file and then into SCC\_DB. This means that
ulalume3@99 96 to use the parameters stored in SCC\_DB the optional variables or
ulalume3@99 97 optional global attributes must not appear within *Raw Lidar Data* file.
ulalume3@99 98 This is the suggested and recommended way to use the SCC. Please include
ulalume3@99 99 optional parameters in the *Raw Lidar Data* only as an exception.
ulalume3@99 100
ulalume3@99 101 Tables 2, 3, and 4 report all the
ulalume3@99 102 information about the structure of *Sounding Data*, *Overlap* and *Lidar
ulalume3@99 103 Ratio* input files respectively.
ulalume3@99 104
ulalume3@99 105
ulalume3@99 106 Example
ulalume3@99 107 -------
ulalume3@99 108
ulalume3@99 109 Let's now consider an example of *Raw Lidar Data* input file. Suppose
ulalume3@99 110 we want to generate NetCDF input file corresponding to a measurement
ulalume3@99 111 with the following properties:
ulalume3@99 112
ulalume3@99 113 +----------------------+-------------------------------------------+
ulalume3@99 114 | Start Date | 30\ :sup:`th` January 2009 |
ulalume3@99 115 +----------------------+-------------------------------------------+
ulalume3@99 116 | Start Time UT | 00:00:01 |
ulalume3@99 117 +----------------------+-------------------------------------------+
ulalume3@99 118 | Stop Time UT | 00:05:01 |
ulalume3@99 119 +----------------------+-------------------------------------------+
ulalume3@99 120 | Station Name | Dummy station |
ulalume3@99 121 +----------------------+-------------------------------------------+
ulalume3@99 122 | Earlinet call-sign | cc |
ulalume3@99 123 +----------------------+-------------------------------------------+
ulalume3@99 124 | Pointing angle | 5 degrees with respect to the zenith |
ulalume3@99 125 +----------------------+-------------------------------------------+
ulalume3@99 126
ulalume3@99 127
ulalume3@99 128 Moreover suppose that this measurement is composed by the following
ulalume3@99 129 lidar channels:
ulalume3@99 130
ulalume3@99 131 #. 1064 lidar channel
ulalume3@99 132
ulalume3@99 133 +------------------------------+-------------------------------+
ulalume3@99 134 | Emission wavelength=1064nm | Detection wavelength=1064nm |
ulalume3@99 135 +------------------------------+-------------------------------+
ulalume3@99 136 | Time resolution=30s | Number of laser shots=1500 |
ulalume3@99 137 +------------------------------+-------------------------------+
ulalume3@99 138 | Number of bins=3000 | Detection mode=analog |
ulalume3@99 139 +------------------------------+-------------------------------+
ulalume3@99 140 | Range resolution=7.5m | Polarization state=total |
ulalume3@99 141 +------------------------------+-------------------------------+
ulalume3@99 142
ulalume3@99 143 #. 532 cross lidar channel
ulalume3@99 144
ulalume3@99 145 +-----------------------------+------------------------------------------+
ulalume3@99 146 | Emission wavelength=532nm | Detection wavelength=532nm |
ulalume3@99 147 +-----------------------------+------------------------------------------+
ulalume3@99 148 | Time resolution=60s | Number of laser shots=3000 |
ulalume3@99 149 +-----------------------------+------------------------------------------+
ulalume3@99 150 | Number of bins=5000 | Detection mode=photoncounting |
ulalume3@99 151 +-----------------------------+------------------------------------------+
ulalume3@99 152 | Range resolution=15m | Polarization state=cross (transmitted) |
ulalume3@99 153 +-----------------------------+------------------------------------------+
ulalume3@99 154
ulalume3@99 155 #. 532 parallel lidar channel
ulalume3@99 156
ulalume3@99 157 +-----------------------------+-------------------------------------------+
ulalume3@99 158 | Emission wavelength=532nm | Detection wavelength=532nm |
ulalume3@99 159 +-----------------------------+-------------------------------------------+
ulalume3@99 160 | Time resolution=60s | Number of laser shots=3000 |
ulalume3@99 161 +-----------------------------+-------------------------------------------+
ulalume3@99 162 | Number of bins=5000 | Detection mode=photoncounting |
ulalume3@99 163 +-----------------------------+-------------------------------------------+
ulalume3@99 164 | Range resolution=15m | Polarization state=parallel (reflected) |
ulalume3@99 165 +-----------------------------+-------------------------------------------+
ulalume3@99 166
ulalume3@99 167 #. | 607 :math:`N_2` vibrational Raman channel
ulalume3@99 168
ulalume3@99 169 +-----------------------------+---------------------------------+
ulalume3@99 170 | Emission wavelength=532nm | Detection wavelength=607nm |
ulalume3@99 171 +-----------------------------+---------------------------------+
ulalume3@99 172 | Time resolution=60s | Number of laser shots=3000 |
ulalume3@99 173 +-----------------------------+---------------------------------+
ulalume3@99 174 | Number of bins=5000 | Detection mode=photoncounting |
ulalume3@99 175 +-----------------------------+---------------------------------+
ulalume3@99 176 | Range resolution=15m | |
ulalume3@99 177 +-----------------------------+---------------------------------+
ulalume3@99 178
ulalume3@99 179 Finally let's assume we have also performed dark measurements before the
ulalume3@99 180 lidar measurements from the 23:50:01 UT up to 23:53:01 UT of
ulalume3@99 181 29\ :sup:`th` January 2009.
ulalume3@99 182
ulalume3@99 183
ulalume3@99 184 Dimensions
ulalume3@99 185 ~~~~~~~~~~
ulalume3@99 186
ulalume3@99 187 Looking at table 1 of the pdf file we have to fix the following dimensions:
ulalume3@99 188
ulalume3@99 189 ::
ulalume3@99 190
ulalume3@99 191 points
ulalume3@99 192 channels
ulalume3@99 193 time
ulalume3@99 194 nb_of_time_scales
ulalume3@99 195 scan_angles
ulalume3@99 196 time_bck
ulalume3@99 197
ulalume3@99 198 The dimension ``time`` is unlimited so we don’t have to fix it.
ulalume3@99 199 We have 4 lidar channels so:
ulalume3@99 200
ulalume3@99 201 ::
ulalume3@99 202
ulalume3@99 203 channels=4
ulalume3@99 204
ulalume3@99 205 Regarding the dimension ``points`` we have only one channel with a
ulalume3@99 206 number of vertical bins equal to 3000 (the 1064nm) and all other
ulalume3@99 207 channels with 5000 vertical bins. In cases like this the dimension
ulalume3@99 208 ``points`` has to be fixed to the maximum number of vertical bins so:
ulalume3@99 209
ulalume3@99 210 ::
ulalume3@99 211
ulalume3@99 212 points=5000
ulalume3@99 213
ulalume3@99 214 Moreover only one channel (1064nm) is acquired with a time resolution of
ulalume3@99 215 30 seconds, all the other channels have a time resolution of 60 seconds.
ulalume3@99 216 This means that we have to define two different time scales. We have to
ulalume3@99 217 set:
ulalume3@99 218
ulalume3@99 219 ::
ulalume3@99 220
ulalume3@99 221 nb_of_time_scales=2
ulalume3@99 222
ulalume3@99 223 The measurement is performed only at one scan angle (5 degrees with
ulalume3@99 224 respect to the zenith) so:
ulalume3@99 225
ulalume3@99 226 ::
ulalume3@99 227
ulalume3@99 228 scan_angles=1
ulalume3@99 229
ulalume3@99 230 We have 3 minutes of dark measurements and two different time scales one
ulalume3@99 231 with 60 seconds time resolution and the other one with 30 seconds time
ulalume3@99 232 resolution. So we will have 3 different dark profiles for the channels
ulalume3@99 233 acquired with the first time scale and 6 for the lidar channels acquired
ulalume3@99 234 with the second time scale. We have to fix the dimension ``time_bck`` as
ulalume3@99 235 the maximum between these values:
ulalume3@99 236
ulalume3@99 237 ::
ulalume3@99 238
ulalume3@99 239 time_bck=6
ulalume3@99 240
ulalume3@99 241
ulalume3@99 242 Variables
ulalume3@99 243 ~~~~~~~~~
ulalume3@99 244
ulalume3@99 245 In this section it will be explained how to fill all the possible
ulalume3@99 246 variables either mandatory or optional of *Raw Lidar Data* input file.
ulalume3@99 247
ulalume3@99 248 - | ``Raw_Data_Start_Time(time, nb_of_time_scales)``
ulalume3@99 249 | This 2 dimensional mandatory array has to contain the acquisition
ulalume3@99 250 start time (in seconds from the time given by the global attribute
ulalume3@99 251 ``RawData_Start_Time_UT``) of each lidar profile. In this example
ulalume3@99 252 we have two different time scales: one is characterized by steps of
ulalume3@99 253 30 seconds (the 1064nm is acquired with this time scale) the other
ulalume3@99 254 by steps of 60 seconds (532cross, 532parallel and 607nm). Moreover
ulalume3@99 255 the measurement start time is 00:00:01 UT and the measurement stop
ulalume3@99 256 time is 00:05:01 UT. In this case we have to define:
ulalume3@99 257
ulalume3@99 258 ::
ulalume3@99 259
ulalume3@99 260 Raw_Data_Start_Time =
ulalume3@99 261 0, 0,
ulalume3@99 262 60, 30,
ulalume3@99 263 120, 60,
ulalume3@99 264 180, 90,
ulalume3@99 265 240, 120,
ulalume3@99 266 _, 150,
ulalume3@99 267 _, 180,
ulalume3@99 268 _, 210,
ulalume3@99 269 _, 240,
ulalume3@99 270 _, 270 ;
ulalume3@99 271
ulalume3@99 272 The order used to fill this array defines the correspondence between
ulalume3@99 273 the different time scales and the time scale index. In this example
ulalume3@99 274 we have a time scale index of 0 for the time scale with steps of 60
ulalume3@99 275 seconds and a time scale index of 1 for the other one.
ulalume3@99 276
ulalume3@99 277 - | ``Raw_Data_Stop_Time(time, nb_of_time_scales)``
ulalume3@99 278 | The same as previous item but for the data acquisition stop time.
ulalume3@99 279 Following a similar procedure we have to define:
ulalume3@99 280
ulalume3@99 281 ::
ulalume3@99 282
ulalume3@99 283 Raw_Data_Stop_Time =
ulalume3@99 284 60, 30,
ulalume3@99 285 120, 60,
ulalume3@99 286 180, 90,
ulalume3@99 287 240, 120,
ulalume3@99 288 300, 150,
ulalume3@99 289 _, 180,
ulalume3@99 290 _, 210,
ulalume3@99 291 _, 240,
ulalume3@99 292 _, 270,
ulalume3@99 293 _, 300 ;
ulalume3@99 294
ulalume3@99 295 - | ``Raw_Lidar_Data(time, channels, points)``
ulalume3@99 296 | This 3 dimensional mandatory array has to be filled with the
ulalume3@99 297 time-series of raw lidar data. The photoncounting profiles have to
ulalume3@99 298 submitted in counts (so as integers) while the analog ones in mV.
ulalume3@99 299 The order the user chooses to fill this array defines the
ulalume3@99 300 correspondence between channel index and lidar data.
ulalume3@99 301 | For example if we fill this array in such way that:
ulalume3@99 302
ulalume3@99 303 +-------------------------------------+---------------------------------------+
ulalume3@99 304 | ``Raw_Lidar_Data(time,0,points)`` | is the time-series of 1064 nm |
ulalume3@99 305 +-------------------------------------+---------------------------------------+
ulalume3@99 306 | ``Raw_Lidar_Data(time,1,points)`` | is the time-series of 532 cross |
ulalume3@99 307 +-------------------------------------+---------------------------------------+
ulalume3@99 308 | ``Raw_Lidar_Data(time,2,points)`` | is the time-series of 532 parallel |
ulalume3@99 309 +-------------------------------------+---------------------------------------+
ulalume3@99 310 | ``Raw_Lidar_Data(time,3,points)`` | is the time-series of 607 nm |
ulalume3@99 311 +-------------------------------------+---------------------------------------+
ulalume3@99 312
ulalume3@99 313 |
ulalume3@99 314 | from now on the channel index 0 is associated to the 1064 channel,
ulalume3@99 315 1 to the 532 cross, 2 to the 532 parallel and 3 to the 607nm.
ulalume3@99 316
ulalume3@99 317 - | ``Raw_Bck_Start_Time(time_bck, nb_of_time_scales)``
ulalume3@99 318 | This 2 dimensional optional array has to contain the acquisition
ulalume3@99 319 start time (in seconds from the time given by the global attribute
ulalume3@99 320 ``RawBck_Start_Time_UT``) of each dark measurements profile.
ulalume3@99 321 Following the same procedure used for the variable
ulalume3@99 322 ``Raw_Data_Start_Time`` we have to define:
ulalume3@99 323
ulalume3@99 324 ::
ulalume3@99 325
ulalume3@99 326 Raw_Bck_Start_Time =
ulalume3@99 327 0, 0,
ulalume3@99 328 60, 30,
ulalume3@99 329 120, 60,
ulalume3@99 330 _, 90,
ulalume3@99 331 _, 120,
ulalume3@99 332 _, 150;
ulalume3@99 333
ulalume3@99 334 - | ``Raw_Bck_Stop_Time(time_bck, nb_of_time_scales)``
ulalume3@99 335 | The same as previous item but for the dark acquisition stop time.
ulalume3@99 336 Following a similar procedure we have to define:
ulalume3@99 337
ulalume3@99 338 ::
ulalume3@99 339
ulalume3@99 340 Raw_Bck_Stop_Time =
ulalume3@99 341 60, 30,
ulalume3@99 342 120, 60,
ulalume3@99 343 180, 90,
ulalume3@99 344 _, 120,
ulalume3@99 345 _, 150,
ulalume3@99 346 _, 180 ;
ulalume3@99 347
ulalume3@99 348 - | ``Background_Profile(time_bck, channels, points)``
ulalume3@99 349 | This 3 dimensional optional array has to be filled with the
ulalume3@99 350 time-series of the dark measurements data. The photoncounting
ulalume3@99 351 profiles have to submitted in counts (so as integers) while the
ulalume3@99 352 analog ones in mV. The user has to fill this array following the
ulalume3@99 353 same order used in filling the array ``Raw_Lidar_Data``:
ulalume3@99 354
ulalume3@99 355 +---------------------------------------------+-------------------------------------+
ulalume3@99 356 | ``Background_Profile(time_bck,0,points)`` | dark time-series at 1064 nm |
ulalume3@99 357 +---------------------------------------------+-------------------------------------+
ulalume3@99 358 | ``Background_Profile(time_bck,1,points)`` | dark time-series at 532 cross |
ulalume3@99 359 +---------------------------------------------+-------------------------------------+
ulalume3@99 360 | ``Background_Profile(time_bck,2,points)`` | dark time-series at 532 parallel |
ulalume3@99 361 +---------------------------------------------+-------------------------------------+
ulalume3@99 362 | ``Background_Profile(time_bck,3,points)`` | dark time-series at 607 nm |
ulalume3@99 363 +---------------------------------------------+-------------------------------------+
ulalume3@99 364
ulalume3@99 365 |
ulalume3@99 366
ulalume3@99 367 - | ``channel_ID(channels)``
ulalume3@99 368 | This mandatory array provides the link between the channel index
ulalume3@99 369 within the *Raw Lidar Data* input file and the channel ID in
ulalume3@99 370 SCC\_DB. To fill this variable the user has to know which channel
ulalume3@99 371 IDs in SCC\_DB correspond to his lidar channels. For this purpose
ulalume3@99 372 the SCC, in its final version will provide to the user a special
ulalume3@99 373 tool to get these channel IDs through a Web interface. At the
ulalume3@99 374 moment this interface is not yet available and these channel IDs
ulalume3@99 375 will be communicated directly to the user by the NA5 people.
ulalume3@99 376 | Anyway to continue the example let’s suppose that the four lidar
ulalume3@99 377 channels taken into account are mapped into SCC\_DB with the
ulalume3@99 378 following channel IDs:
ulalume3@99 379
ulalume3@99 380 +----------------+-----------------+
ulalume3@99 381 | 1064 nm | channel ID=7 |
ulalume3@99 382 +----------------+-----------------+
ulalume3@99 383 | 532 cross | channel ID=5 |
ulalume3@99 384 +----------------+-----------------+
ulalume3@99 385 | 532 parallel | channel ID=6 |
ulalume3@99 386 +----------------+-----------------+
ulalume3@99 387 | 607 nm | channel ID=8 |
ulalume3@99 388 +----------------+-----------------+
ulalume3@99 389
ulalume3@99 390 |
ulalume3@99 391 | In this case we have to define:
ulalume3@99 392
ulalume3@99 393 ::
ulalume3@99 394
ulalume3@99 395 channel_ID = 7, 5, 6, 8 ;
ulalume3@99 396
ulalume3@99 397 - | ``id_timescale(channels)``
ulalume3@99 398 | This mandatory array is introduced to determine which time scale is
ulalume3@99 399 used for the acquisition of each lidar channel. In particular this
ulalume3@99 400 array defines the link between the channel index and the time scale
ulalume3@99 401 index. In our example we have two different time scales. Filling
ulalume3@99 402 the arrays ``Raw_Data_Start_Time`` and ``Raw_Data_Stop_Time`` we
ulalume3@99 403 have defined a time scale index of 0 for the time scale with steps
ulalume3@99 404 of 60 seconds and a time scale index of 1 for the other one with
ulalume3@99 405 steps of 30 seconds. In this way this array has to be set as:
ulalume3@99 406
ulalume3@99 407 ::
ulalume3@99 408
ulalume3@99 409 id_timescale = 1, 0, 0, 0 ;
ulalume3@99 410
ulalume3@99 411 - | ``Laser_Pointing_Angle(scan_angles)``
ulalume3@99 412 | This mandatory array contains all the scan angles used in the
ulalume3@99 413 measurement. In our example we have only one scan angle of 5
ulalume3@99 414 degrees with respect to the zenith, so we have to define:
ulalume3@99 415
ulalume3@99 416 ::
ulalume3@99 417
ulalume3@99 418 Laser_Pointing_Angle = 5 ;
ulalume3@99 419
ulalume3@99 420 - | ``Laser_Pointing_Angle_of_Profiles(time, nb_of_time_scales)``
ulalume3@99 421 | This mandatory array is introduced to determine which scan angle is
ulalume3@99 422 used for the acquisition of each lidar profile. In particular this
ulalume3@99 423 array defines the link between the time and time scales indexes and
ulalume3@99 424 the scan angle index. In our example we have a single scan angle
ulalume3@99 425 that has to correspond to the scan angle index 0. So this array has
ulalume3@99 426 to be defined as:
ulalume3@99 427
ulalume3@99 428 ::
ulalume3@99 429
ulalume3@99 430 Laser_Pointing_Angle_of_Profiles =
ulalume3@99 431 0, 0,
ulalume3@99 432 0, 0,
ulalume3@99 433 0, 0,
ulalume3@99 434 0, 0,
ulalume3@99 435 0, 0,
ulalume3@99 436 _, 0,
ulalume3@99 437 _, 0,
ulalume3@99 438 _, 0,
ulalume3@99 439 _, 0,
ulalume3@99 440 _, 0 ;
ulalume3@99 441
ulalume3@99 442 - | ``Laser_Shots(time, channels)``
ulalume3@99 443 | This mandatory array stores the laser shots accumulated at each
ulalume3@99 444 time for each channel. In our example the number of laser shots
ulalume3@99 445 accumulated is 1500 for the 1064nm channels and 3000 for all the
ulalume3@99 446 other channels. Moreover the laser shots do not change with the
ulalume3@99 447 time. So we have to define this array as:
ulalume3@99 448
ulalume3@99 449 ::
ulalume3@99 450
ulalume3@99 451 Laser_Shots =
ulalume3@99 452 1500, 3000, 3000, 3000,
ulalume3@99 453 1500, 3000, 3000, 3000,
ulalume3@99 454 1500, 3000, 3000, 3000,
ulalume3@99 455 1500, 3000, 3000, 3000,
ulalume3@99 456 1500, 3000, 3000, 3000,
ulalume3@99 457 1500, _, _, _,
ulalume3@99 458 1500, _, _, _,
ulalume3@99 459 1500, _, _, _,
ulalume3@99 460 1500, _, _, _,
ulalume3@99 461 1500, _, _, _ ;
ulalume3@99 462
ulalume3@99 463 - | ``Emitted_Wavelength(channels)``
ulalume3@99 464 | This optional array defines the link between the channel index and
ulalume3@99 465 the emission wavelength for each lidar channel. The wavelength has
ulalume3@99 466 to be expressed in nm. This information can be also taken from
ulalume3@99 467 SCC\_DB. In our example we have:
ulalume3@99 468
ulalume3@99 469 ::
ulalume3@99 470
ulalume3@99 471 Emitted_Wavelength = 1064, 532, 532, 532 ;
ulalume3@99 472
ulalume3@99 473 - | ``Detected_Wavelength(channels)``
ulalume3@99 474 | This optional array defines the link between the channel index and
ulalume3@99 475 the detected wavelength for each lidar channel. Here detected
ulalume3@99 476 wavelength means the value of center of interferential filter
ulalume3@99 477 expressed in nm. This information can be also taken from SCC\_DB.
ulalume3@99 478 In our example we have:
ulalume3@99 479
ulalume3@99 480 ::
ulalume3@99 481
ulalume3@99 482 Detected_Wavelength = 1064, 532, 532, 607 ;
ulalume3@99 483
ulalume3@99 484 - | ``Raw_Data_Range_Resolution(channels)``
ulalume3@99 485 | This optional array defines the link between the channel index and
ulalume3@99 486 the raw range resolution for each channel. If the scan angle is
ulalume3@99 487 different from zero this quantity is different from the vertical
ulalume3@99 488 resolution. More precisely if :math:`\alpha` is the scan angle used
ulalume3@99 489 and :math:`\Delta z` is the range resolution the vertical
ulalume3@99 490 resolution is calculated as :math:`\Delta
ulalume3@99 491 z'=\Delta z \cos\alpha`. This array has to be filled with
ulalume3@99 492 :math:`\Delta z` and not with :math:`\Delta z'`. The unit is
ulalume3@99 493 meters. This information can be also taken from SCC\_DB. In our
ulalume3@99 494 example we have:
ulalume3@99 495
ulalume3@99 496 ::
ulalume3@99 497
ulalume3@99 498 Raw_Data_Range_Resolution = 7.5, 15.0, 15.0, 15.0 ;
ulalume3@99 499
ulalume3@99 500 - | ``Scattering_Mechanism(channels)``
ulalume3@99 501 | This optional array defines the scattering mechanism involved in
ulalume3@99 502 each lidar channel. In particular the following values are adopted:
ulalume3@99 503
ulalume3@99 504 +-----+---------------------------------------------------+
ulalume3@99 505 | 0 | Total elastic backscatter |
ulalume3@99 506 +-----+---------------------------------------------------+
ulalume3@99 507 | 1 | N\ :math:`_2` vibrational Raman backscatter |
ulalume3@99 508 +-----+---------------------------------------------------+
ulalume3@99 509 | 2 | Cross polarization elastic backscatter |
ulalume3@99 510 +-----+---------------------------------------------------+
ulalume3@99 511 | 3 | Parallel polarization elastic backscatter |
ulalume3@99 512 +-----+---------------------------------------------------+
ulalume3@99 513 | 4 | H\ :math:`_2`\ O vibrational Raman backscatter |
ulalume3@99 514 +-----+---------------------------------------------------+
ulalume3@99 515 | 5 | Rotational Raman low quantum number |
ulalume3@99 516 +-----+---------------------------------------------------+
ulalume3@99 517 | 6 | Rotational Raman high quantum number |
ulalume3@99 518 +-----+---------------------------------------------------+
ulalume3@99 519
ulalume3@99 520 |
ulalume3@99 521 | This information can be also taken from SCC\_DB. In our example we
ulalume3@99 522 have:
ulalume3@99 523
ulalume3@99 524 ::
ulalume3@99 525
ulalume3@99 526 Scattering_Mechanism = 0, 2, 3, 1 ;
ulalume3@99 527
ulalume3@99 528 - | ``Signal_Type(channels)``
ulalume3@99 529 | This optional array defines the type of signal involved in each
ulalume3@99 530 lidar channel. In particular the following values are adopted:
ulalume3@99 531
ulalume3@99 532 +------+--------------------------------------------------------------+
ulalume3@99 533 | 0 | Total elastic |
ulalume3@99 534 +------+--------------------------------------------------------------+
ulalume3@99 535 | 1 | Total elastic near range |
ulalume3@99 536 +------+--------------------------------------------------------------+
ulalume3@99 537 | 2 | Total elastic far range |
ulalume3@99 538 +------+--------------------------------------------------------------+
ulalume3@99 539 | 3 | N\ :math:`_2` vibrational Raman |
ulalume3@99 540 +------+--------------------------------------------------------------+
ulalume3@99 541 | 4 | N\ :math:`_2` vibrational Raman near range |
ulalume3@99 542 +------+--------------------------------------------------------------+
ulalume3@99 543 | 5 | N\ :math:`_2` vibrational Raman far range |
ulalume3@99 544 +------+--------------------------------------------------------------+
ulalume3@99 545 | 6 | Elastic polarization reflected |
ulalume3@99 546 +------+--------------------------------------------------------------+
ulalume3@99 547 | 7 | Elastic polarization transmitted |
ulalume3@99 548 +------+--------------------------------------------------------------+
ulalume3@99 549 | 8 | Rotational Raman line close to elastic line |
ulalume3@99 550 +------+--------------------------------------------------------------+
ulalume3@99 551 | 9 | Rotational Raman line far from elastic line |
ulalume3@99 552 +------+--------------------------------------------------------------+
ulalume3@99 553 | 10 | Elastic polarization reflected near range |
ulalume3@99 554 +------+--------------------------------------------------------------+
ulalume3@99 555 | 11 | Elastic polarization reflected far range |
ulalume3@99 556 +------+--------------------------------------------------------------+
ulalume3@99 557 | 12 | Elastic polarization transmitted near range |
ulalume3@99 558 +------+--------------------------------------------------------------+
ulalume3@99 559 | 13 | Elastic polarization transmitted far range |
ulalume3@99 560 +------+--------------------------------------------------------------+
ulalume3@99 561 | 14 | H\ :math:`_2`\ O vibrational Raman backscatter |
ulalume3@99 562 +------+--------------------------------------------------------------+
ulalume3@99 563 | 15 | Rotational Raman line far from elastic line near range |
ulalume3@99 564 +------+--------------------------------------------------------------+
ulalume3@99 565 | 16 | Rotational Raman line far from elastic line far range |
ulalume3@99 566 +------+--------------------------------------------------------------+
ulalume3@99 567 | 17 | Rotational Raman line close to elastic line near range |
ulalume3@99 568 +------+--------------------------------------------------------------+
ulalume3@99 569 | 18 | Rotational Raman line close to elastic line far range |
ulalume3@99 570 +------+--------------------------------------------------------------+
ulalume3@99 571 | 19 | H\ :math:`_2`\ O vibrational Raman backscatter near range |
ulalume3@99 572 +------+--------------------------------------------------------------+
ulalume3@99 573 | 20 | H\ :math:`_2`\ O vibrational Raman backscatter far range |
ulalume3@99 574 +------+--------------------------------------------------------------+
ulalume3@99 575 | 21 | Total elastic ultra near range |
ulalume3@99 576 +------+--------------------------------------------------------------+
ulalume3@99 577 | 22 | +45 rotated elastic polarization transmitted |
ulalume3@99 578 +------+--------------------------------------------------------------+
ulalume3@99 579 | 23 | +45 rotated elastic polarization reflected |
ulalume3@99 580 +------+--------------------------------------------------------------+
ulalume3@99 581 | 24 | -45 rotated elastic polarization transmitted |
ulalume3@99 582 +------+--------------------------------------------------------------+
ulalume3@99 583 | 25 | -45 rotated elastic polarization reflected |
ulalume3@99 584 +------+--------------------------------------------------------------+
ulalume3@99 585 | 26 | +45 rotated elastic polarization transmitted near range |
ulalume3@99 586 +------+--------------------------------------------------------------+
ulalume3@99 587 | 27 | +45 rotated elastic polarization transmitted far range |
ulalume3@99 588 +------+--------------------------------------------------------------+
ulalume3@99 589 | 28 | +45 rotated elastic polarization reflected near range |
ulalume3@99 590 +------+--------------------------------------------------------------+
ulalume3@99 591 | 29 | +45 rotated elastic polarization reflected far range |
ulalume3@99 592 +------+--------------------------------------------------------------+
ulalume3@99 593 | 30 | -45 rotated elastic polarization transmitted near range |
ulalume3@99 594 +------+--------------------------------------------------------------+
ulalume3@99 595 | 31 | -45 rotated elastic polarization transmitted far range |
ulalume3@99 596 +------+--------------------------------------------------------------+
ulalume3@99 597 | 32 | -45 rotated elastic polarization reflected near range |
ulalume3@99 598 +------+--------------------------------------------------------------+
ulalume3@99 599 | 33 | -45 rotated elastic polarization reflected far range |
ulalume3@99 600 +------+--------------------------------------------------------------+
ulalume3@99 601
ulalume3@99 602 |
ulalume3@99 603 | This information can be also taken from SCC\_DB. In our example we
ulalume3@99 604 have:
ulalume3@99 605
ulalume3@99 606 ::
ulalume3@99 607
ulalume3@99 608 Signal_Type = 0, 7, 6, 3 ;
ulalume3@99 609
ulalume3@99 610 - | ``Acquisition_Mode(channels)``
ulalume3@99 611 | This optional array defines the acquisition mode (analog or
ulalume3@99 612 photoncounting) involved in each lidar channel. In particular a
ulalume3@99 613 value of 0 means analog mode and 1 photoncounting mode. This
ulalume3@99 614 information can be also taken from SCC\_DB. In our example we have:
ulalume3@99 615
ulalume3@99 616 ::
ulalume3@99 617
ulalume3@99 618 Acquisition_Mode = 0, 1, 1, 1 ;
ulalume3@99 619
ulalume3@99 620 - | ``Laser_Repetition_Rate(channels)``
ulalume3@99 621 | This optional array defines the repetition rate in Hz used to
ulalume3@99 622 acquire each lidar channel. This information can be also taken from
ulalume3@99 623 SCC\_DB. In our example we are supposing we have only one laser
ulalume3@99 624 with a repetition rate of 50 Hz so we have to set:
ulalume3@99 625
ulalume3@99 626 ::
ulalume3@99 627
ulalume3@99 628 Laser_Repetition_Rate = 50, 50, 50, 50 ;
ulalume3@99 629
ulalume3@99 630 - | ``Dead_Time(channels)``
ulalume3@99 631 | This optional array defines the dead time in ns associated to each
ulalume3@99 632 lidar channel. The SCC will use the values given by this array to
ulalume3@99 633 correct the photoncounting signals for dead time. Of course for
ulalume3@99 634 analog signals no dead time correction will be applied (for analog
ulalume3@99 635 channels the corresponding dead time values have to be set to
ulalume3@99 636 undefined value). This information can be also taken from SCC\_DB.
ulalume3@99 637 In our example the 1064 nm channel is acquired in analog mode so
ulalume3@99 638 the corresponding dead time value has to be undefined. If we
ulalume3@99 639 suppose a dead time of 10 ns for all other channels we have to set:
ulalume3@99 640
ulalume3@99 641 ::
ulalume3@99 642
ulalume3@99 643 Dead_Time = _, 10, 10, 10 ;
ulalume3@99 644
ulalume3@99 645 - | ``Dead_Time_Corr_Type(channels)``
ulalume3@99 646 | This optional array defines which kind of dead time correction has
ulalume3@99 647 to be applied on each photoncounting channel. The SCC will correct
ulalume3@99 648 the data supposing a not-paralyzable channel if a value of 0 is
ulalume3@99 649 found while a paralyzable channel is supposed if a value of 1 is
ulalume3@99 650 found. Of course for analog signals no dead time correction will be
ulalume3@99 651 applied and so the corresponding values have to be set to undefined
ulalume3@99 652 value. This information can be also taken from SCC\_DB. In our
ulalume3@99 653 example the 1064 nm channel is acquired in analog mode so the
ulalume3@99 654 corresponding has to be undefined. If we want to consider all the
ulalume3@99 655 photoncounting signals as not-paralyzable ones: we have to set:
ulalume3@99 656
ulalume3@99 657 ::
ulalume3@99 658
ulalume3@99 659 Dead_Time_Corr_Type = _, 0, 0, 0 ;
ulalume3@99 660
ulalume3@99 661 - | ``Trigger_Delay(channels)``
ulalume3@99 662 | This optional array defines the delay (in ns) of the middle of the
ulalume3@99 663 first rangebin with respect to the output laser pulse for each
ulalume3@99 664 lidar channel. The SCC will use the values given by this array to
ulalume3@99 665 correct for trigger delay. This information can be also taken from
ulalume3@99 666 SCC\_DB. Let’s suppose that in our example all the photoncounting
ulalume3@99 667 channels are not affected by this delay and only the analog channel
ulalume3@99 668 at 1064nm is acquired with a delay of 50ns. In this case we have to
ulalume3@99 669 set:
ulalume3@99 670
ulalume3@99 671 ::
ulalume3@99 672
ulalume3@99 673 Trigger_Delay = 50, 0, 0, 0 ;
ulalume3@99 674
ulalume3@99 675 - | ``Background_Mode(channels)``
ulalume3@99 676 | This optional array defines how the atmospheric background has to
ulalume3@99 677 be subtracted from the lidar channel. Two options are available for
ulalume3@99 678 the calculation of atmospheric background:
ulalume3@99 679
ulalume3@99 680 #. Average in the far field of lidar channel. In this case the value
ulalume3@99 681 of this variable has to be 1
ulalume3@99 682
ulalume3@99 683 #. Average within pre-trigger bins. In this case the value of this
ulalume3@99 684 variable has to be 0
ulalume3@99 685
ulalume3@99 686 This information can be also taken from SCC\_DB. Let’s suppose in our
ulalume3@99 687 example we use the pre-trigger for the 1064nm channel and the far
ulalume3@99 688 field for all other channels. In this case we have to set:
ulalume3@99 689
ulalume3@99 690 ::
ulalume3@99 691
ulalume3@99 692 Background_Mode = 0, 1, 1, 1 ;
ulalume3@99 693
ulalume3@99 694 - | ``Background_Low(channels)``
ulalume3@99 695 | This mandatory array defines the minimum altitude (in meters) to
ulalume3@99 696 consider in calculating the atmospheric background for each
ulalume3@99 697 channel. In case pre-trigger mode is used the corresponding value
ulalume3@99 698 has to be set to the rangebin to be used as lower limit (within
ulalume3@99 699 pre-trigger region) for background calculation. In our example, if
ulalume3@99 700 we want to calculate the background between 30000 and 50000 meters
ulalume3@99 701 for all photoncounting channels and we want to use the first 500
ulalume3@99 702 pre-trigger bins for the background calculation for the 1064nm
ulalume3@99 703 channel we have to set:
ulalume3@99 704
ulalume3@99 705 ::
ulalume3@99 706
ulalume3@99 707 Background_Low= 0, 30000, 30000, 30000 ;
ulalume3@99 708
ulalume3@99 709 - | ``Background_High(channels)``
ulalume3@99 710 | This mandatory array defines the maximum altitude (in meters) to
ulalume3@99 711 consider in calculating the atmospheric background for each
ulalume3@99 712 channel. In case pre-trigger mode is used the corresponding value
ulalume3@99 713 has to be set to the rangebin to be used as upper limit (within
ulalume3@99 714 pre-trigger region) for background calculation. In our example, if
ulalume3@99 715 we want to calculate the background between 30000 and 50000 meters
ulalume3@99 716 for all photoncounting channels and we want to use the first 500
ulalume3@99 717 pre-trigger bins for the background calculation for the 1064nm
ulalume3@99 718 channel we have to set:
ulalume3@99 719
ulalume3@99 720 ::
ulalume3@99 721
ulalume3@99 722 Background_High = 500, 50000, 50000, 50000 ;
ulalume3@99 723
ulalume3@99 724 - | ``Molecular_Calc``
ulalume3@99 725 | This mandatory variable defines the way used by SCC to calculate
ulalume3@99 726 the molecular density profile. At the moment two options are
ulalume3@99 727 available:
ulalume3@99 728
ulalume3@99 729 #. US Standard Atmosphere 1976. In this case the value of this
ulalume3@99 730 variable has to be 0
ulalume3@99 731
ulalume3@99 732 #. Radiosounding. In this case the value of this variable has to be 1
ulalume3@99 733
ulalume3@99 734 If we decide to use the option 1. we have to provide also the
ulalume3@99 735 measured pressure and temperature at lidar station level. Indeed if
ulalume3@99 736 we decide to use the option 2. a radiosounding file has to be
ulalume3@99 737 submitted separately in NetCDF format (the structure of this file is
ulalume3@99 738 summarized in table 2 of the pdf file). Let’s suppose we want to use the
ulalume3@99 739 option 1. so:
ulalume3@99 740
ulalume3@99 741 ::
ulalume3@99 742
ulalume3@99 743 Molecular_Calc = 0 ;
ulalume3@99 744
ulalume3@99 745 - | ``Pressure_at_Lidar_Station``
ulalume3@99 746 | Because we have chosen the US Standard Atmosphere for calculation
ulalume3@99 747 of the molecular density profile we have to give the pressure in
ulalume3@99 748 hPa at lidar station level:
ulalume3@99 749
ulalume3@99 750 ::
ulalume3@99 751
ulalume3@99 752 Pressure_at_Lidar_Station = 1010 ;
ulalume3@99 753
ulalume3@99 754 - | ``Temperature_at_Lidar_Station``
ulalume3@99 755 | Because we have chosen the US Standard Atmosphere for calculation
ulalume3@99 756 of the molecular density profile we have to give the temperature in
ulalume3@99 757 C at lidar station level:
ulalume3@99 758
ulalume3@99 759 ::
ulalume3@99 760
ulalume3@99 761 Temperature_at_Lidar_Station = 19.8 ;
ulalume3@99 762
ulalume3@99 763 - | ``LR_Input(channels)``
ulalume3@99 764 | This array is required only for lidar channels for which elastic
ulalume3@99 765 backscatter retrieval has to be performed. It defines the lidar
ulalume3@99 766 ratio to be used within this retrieval. Two options are available:
ulalume3@99 767
ulalume3@99 768 #. The user can submit a lidar ratio profile. In this case the value
ulalume3@99 769 of this variable has to be 0.
ulalume3@99 770
ulalume3@99 771 #. A fixed value of lidar ratio can be used. In this case the value
ulalume3@99 772 of this variable has to be 1.
ulalume3@99 773
ulalume3@99 774 If we decide to use the option 1. a lidar ratio file has to be
ulalume3@99 775 submitted separately in NetCDF format (the structure of this file is
ulalume3@99 776 summarized in table ). If we decide to use the option 2. the
ulalume3@99 777 fixed value of lidar ratio will be taken from SCC\_DB. In our example
ulalume3@99 778 we have to give a value of this array only for the 1064nm lidar
ulalume3@99 779 channel because for the 532nm we will be able to retrieve a Raman
ulalume3@99 780 backscatter coefficient. In case we want to use the fixed value
ulalume3@99 781 stored in SCC\_DB we have to set:
ulalume3@99 782
ulalume3@99 783 ::
ulalume3@99 784
ulalume3@99 785 LR_Input = 1,_,_,_ ;
ulalume3@99 786
ulalume3@99 787 - | ``DAQ_Range(channels)``
ulalume3@99 788 | This array is required only if one or more lidar signals are
ulalume3@99 789 acquired in analog mode. It gives the analog scale in mV used to
ulalume3@99 790 acquire the analog signals. In our example we have only the 1064nm
ulalume3@99 791 channel acquired in analog mode. If we have used a 100mV analog
ulalume3@99 792 scale to acquire this channel we have to set:
ulalume3@99 793
ulalume3@99 794 ::
ulalume3@99 795
ulalume3@99 796 DAQ_Range = 100,_,_,_ ;
ulalume3@99 797
ulalume3@99 798
ulalume3@99 799 Global attributes
ulalume3@99 800 ~~~~~~~~~~~~~~~~~
ulalume3@99 801
ulalume3@99 802 - | ``Measurement_ID``
ulalume3@99 803 | This mandatory global attribute defines the measurement ID
ulalume3@99 804 corresponding to the actual lidar measurement. It is a string
ulalume3@99 805 composed by 12 characters. The first 8 characters give the start
ulalume3@99 806 date of measurement in the format YYYYMMDD. The next 2 characters
ulalume3@99 807 give the Earlinet call-sign of the station. The last 2 characters
ulalume3@99 808 are used to distinguish between different time-series within the
ulalume3@99 809 same date. In our example we have to set:
ulalume3@99 810
ulalume3@99 811 ::
ulalume3@99 812
ulalume3@99 813 Measurement_ID= "20090130cc00" ;
ulalume3@99 814
ulalume3@99 815 - | ``RawData_Start_Date``
ulalume3@99 816 | This mandatory global attribute defines the start date of lidar
ulalume3@99 817 measurements in the format YYYYMMDD. In our case we have:
ulalume3@99 818
ulalume3@99 819 ::
ulalume3@99 820
ulalume3@99 821 RawData_Start_Date = "20090130" ;
ulalume3@99 822
ulalume3@99 823 - | ``RawData_Start_Time_UT``
ulalume3@99 824 | This mandatory global attribute defines the UT start time of lidar
ulalume3@99 825 measurements in the format HHMMSS. In our case we have:
ulalume3@99 826
ulalume3@99 827 ::
ulalume3@99 828
ulalume3@99 829 RawData_Start_Time_UT = "000001" ;
ulalume3@99 830
ulalume3@99 831 - | ``RawData_Stop_Time_UT``
ulalume3@99 832 | This mandatory global attribute defines the UT stop time of lidar
ulalume3@99 833 measurements in the format HHMMSS. In our case we have:
ulalume3@99 834
ulalume3@99 835 ::
ulalume3@99 836
ulalume3@99 837 RawData_Stop_Time_UT = "000501" ;
ulalume3@99 838
ulalume3@99 839 - | ``RawBck_Start_Date``
ulalume3@99 840 | This optional global attribute defines the start date of dark
ulalume3@99 841 measurements in the format YYYYMMDD. In our case we have:
ulalume3@99 842
ulalume3@99 843 ::
ulalume3@99 844
ulalume3@99 845 RawBck_Start_Date = "20090129" ;
ulalume3@99 846
ulalume3@99 847 - | ``RawBck_Start_Time_UT``
ulalume3@99 848 | This optional global attribute defines the UT start time of dark
ulalume3@99 849 measurements in the format HHMMSS. In our case we have:
ulalume3@99 850
ulalume3@99 851 ::
ulalume3@99 852
ulalume3@99 853 RawBck_Start_Time_UT = "235001" ;
ulalume3@99 854
ulalume3@99 855 - | ``RawBck_Stop_Time_UT``
ulalume3@99 856 | This optional global attribute defines the UT stop time of dark
ulalume3@99 857 measurements in the format HHMMSS. In our case we have:
ulalume3@99 858
ulalume3@99 859 ::
ulalume3@99 860
ulalume3@99 861 RawBck_Stop_Time_UT = "235301" ;
ulalume3@99 862
ulalume3@99 863
ulalume3@99 864 Example of file (CDL format)
ulalume3@99 865 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ulalume3@99 866
ulalume3@99 867 To summarize we have the following NetCDF *Raw Lidar Data* file (in CDL
ulalume3@99 868 format):
ulalume3@99 869
ulalume3@99 870 ::
ulalume3@99 871
ulalume3@99 872 dimensions:
ulalume3@99 873 points = 5000 ;
ulalume3@99 874 channels = 4 ;
ulalume3@99 875 time = UNLIMITED ; // (10 currently)
ulalume3@99 876 nb_of_time_scales = 2 ;
ulalume3@99 877 scan_angles = 1 ;
ulalume3@99 878 time_bck = 6 ;
ulalume3@99 879 variables:
ulalume3@99 880 int channel_ID(channels) ;
ulalume3@99 881 int Laser_Repetition_Rate(channels) ;
ulalume3@99 882 double Laser_Pointing_Angle(scan_angles) ;
ulalume3@99 883 int Signal_Type(channels);
ulalume3@99 884 double Emitted_Wavelength(channels) ;
ulalume3@99 885 double Detected_Wavelength(channels) ;
ulalume3@99 886 double Raw_Data_Range_Resolution(channels) ;
ulalume3@99 887 int Background_Mode(channels) ;
ulalume3@99 888 double Background_Low(channels) ;
ulalume3@99 889 double Background_High(channels) ;
ulalume3@99 890 int Molecular_Calc ;
ulalume3@99 891 double Pressure_at_Lidar_Station ;
ulalume3@99 892 double Temperature_at_Lidar_Station ;
ulalume3@99 893 int id_timescale(channels) ;
ulalume3@99 894 double Dead_Time(channels) ;
ulalume3@99 895 int Dead_Time_Corr_Type(channels) ;
ulalume3@99 896 int Acquisition_Mode(channels) ;
ulalume3@99 897 double Trigger_Delay(channels) ;
ulalume3@99 898 int LR_Input(channels) ;
ulalume3@99 899 int Laser_Pointing_Angle_of_Profiles(time, nb_of_time_scales) ;
ulalume3@99 900 int Raw_Data_Start_Time(time, nb_of_time_scales) ;
ulalume3@99 901 int Raw_Data_Stop_Time(time, nb_of_time_scales) ;
ulalume3@99 902 int Raw_Bck_Start_Time(time_bck, nb_of_time_scales) ;
ulalume3@99 903 int Raw_Bck_Stop_Time(time_bck, nb_of_time_scales) ;
ulalume3@99 904 int Laser_Shots(time, channels) ;
ulalume3@99 905 double Raw_Lidar_Data(time, channels, points) ;
ulalume3@99 906 double Background_Profile(time_bck, channels, points) ;
ulalume3@99 907 double DAQ_Range(channels) ;
ulalume3@99 908
ulalume3@99 909 // global attributes:
ulalume3@99 910 :Measurement_ID = "20090130cc00" ;
ulalume3@99 911 :RawData_Start_Date = "20090130" ;
ulalume3@99 912 :RawData_Start_Time_UT = "000001" ;
ulalume3@99 913 :RawData_Stop_Time_UT = "000501" ;
ulalume3@99 914 :RawBck_Start_Date = "20090129" ;
ulalume3@99 915 :RawBck_Start_Time_UT = "235001" ;
ulalume3@99 916 :RawBck_Stop_Time_UT = "235301" ;
ulalume3@99 917
ulalume3@99 918 data:
ulalume3@99 919
ulalume3@99 920 channel_ID = 7, 5, 6, 8 ;
ulalume3@99 921
ulalume3@99 922 Laser_Repetition_Rate = 50, 50, 50, 50 ;
ulalume3@99 923
ulalume3@99 924 Laser_Pointing_Angle = 5 ;
ulalume3@99 925
ulalume3@99 926 Signal_Type = 0, 7, 6, 3 ;
ulalume3@99 927
ulalume3@99 928 Emitted_Wavelength = 1064, 532, 532, 532 ;
ulalume3@99 929
ulalume3@99 930 Detected_Wavelength = 1064, 532, 532, 607 ;
ulalume3@99 931
ulalume3@99 932 Raw_Data_Range_Resolution = 7.5, 15, 15, 15 ;
ulalume3@99 933
ulalume3@99 934 Background_Mode = 0, 1, 1, 1 ;
ulalume3@99 935
ulalume3@99 936 Background_Low = 0, 30000, 30000, 30000 ;
ulalume3@99 937
ulalume3@99 938 Background_High = 500, 50000, 50000, 50000 ;
ulalume3@99 939
ulalume3@99 940 Molecular_Calc = 0 ;
ulalume3@99 941
ulalume3@99 942 Pressure_at_Lidar_Station = 1010 ;
ulalume3@99 943
ulalume3@99 944 Temperature_at_Lidar_Station = 19.8 ;
ulalume3@99 945
ulalume3@99 946 id_timescale = 1, 0, 0, 0 ;
ulalume3@99 947
ulalume3@99 948 Dead_Time = _, 10, 10, 10 ;
ulalume3@99 949
ulalume3@99 950 Dead_Time_Corr_Type = _, 0, 0, 0 ;
ulalume3@99 951
ulalume3@99 952 Acquisition_Mode = 0, 1, 1, 1 ;
ulalume3@99 953
ulalume3@99 954 Trigger_Delay = 50, 0, 0, 0 ;
ulalume3@99 955
ulalume3@99 956 LR_Input = 1,_,_,_ ;
ulalume3@99 957
ulalume3@99 958 DAQ_Range = 100,_,_,_ ;
ulalume3@99 959
ulalume3@99 960 Laser_Pointing_Angle_of_Profiles =
ulalume3@99 961 0, 0,
ulalume3@99 962 0, 0,
ulalume3@99 963 0, 0,
ulalume3@99 964 0, 0,
ulalume3@99 965 0, 0,
ulalume3@99 966 _, 0,
ulalume3@99 967 _, 0,
ulalume3@99 968 _, 0,
ulalume3@99 969 _, 0,
ulalume3@99 970 _, 0 ;
ulalume3@99 971
ulalume3@99 972
ulalume3@99 973 Raw_Data_Start_Time =
ulalume3@99 974 0, 0,
ulalume3@99 975 60, 30,
ulalume3@99 976 120, 60,
ulalume3@99 977 180, 90,
ulalume3@99 978 240, 120,
ulalume3@99 979 _, 150,
ulalume3@99 980 _, 180,
ulalume3@99 981 _, 210,
ulalume3@99 982 _, 240,
ulalume3@99 983 _, 270 ;
ulalume3@99 984
ulalume3@99 985 Raw_Data_Stop_Time =
ulalume3@99 986 60, 30,
ulalume3@99 987 120, 60,
ulalume3@99 988 180, 90,
ulalume3@99 989 240, 120,
ulalume3@99 990 300, 150,
ulalume3@99 991 _, 180,
ulalume3@99 992 _, 210,
ulalume3@99 993 _, 240,
ulalume3@99 994 _, 270,
ulalume3@99 995 _, 300 ;
ulalume3@99 996
ulalume3@99 997
ulalume3@99 998 Raw_Bck_Start_Time =
ulalume3@99 999 0, 0,
ulalume3@99 1000 60, 30,
ulalume3@99 1001 120, 60,
ulalume3@99 1002 _, 90,
ulalume3@99 1003 _, 120,
ulalume3@99 1004 _, 150;
ulalume3@99 1005
ulalume3@99 1006
ulalume3@99 1007 Raw_Bck_Stop_Time =
ulalume3@99 1008 60, 30,
ulalume3@99 1009 120, 60,
ulalume3@99 1010 180, 90,
ulalume3@99 1011 _, 120,
ulalume3@99 1012 _, 150,
ulalume3@99 1013 _, 180 ;
ulalume3@99 1014
ulalume3@99 1015
ulalume3@99 1016 Laser_Shots =
ulalume3@99 1017 1500, 3000, 3000, 3000,
ulalume3@99 1018 1500, 3000, 3000, 3000,
ulalume3@99 1019 1500, 3000, 3000, 3000,
ulalume3@99 1020 1500, 3000, 3000, 3000,
ulalume3@99 1021 1500, 3000, 3000, 3000,
ulalume3@99 1022 1500, _, _, _,
ulalume3@99 1023 1500, _, _, _,
ulalume3@99 1024 1500, _, _, _,
ulalume3@99 1025 1500, _, _, _,
ulalume3@99 1026 1500, _, _, _ ;
ulalume3@99 1027
ulalume3@99 1028
ulalume3@99 1029 Raw_Lidar_Data = ...
ulalume3@99 1030
ulalume3@99 1031 Background_Profile = ...
ulalume3@99 1032
ulalume3@99 1033 The name of the input file should have the following format:
ulalume3@99 1034
ulalume3@99 1035 ::
ulalume3@99 1036
ulalume3@99 1037 Measurement_ID.nc
ulalume3@99 1038
ulalume3@99 1039 | so in the example the filename should be 20090130cc00.nc.
ulalume3@99 1040  
ulalume3@99 1041 Please keep in mind that in case you submit a file like the previous
ulalume3@99 1042 one all the parameters present in it will be used by the SCC even if
ulalume3@99 1043 you have different values for the same parameters within the SCC\_DB.
ulalume3@99 1044 If you want to use the values already stored in SCC\_DB (this should
ulalume3@99 1045 be the usual way to use SCC) the *Raw Lidar Data* input file has to be
ulalume3@99 1046 modified as follows:
ulalume3@99 1047
ulalume3@99 1048 ::
ulalume3@99 1049
ulalume3@99 1050 dimensions:
ulalume3@99 1051 points = 5000 ;
ulalume3@99 1052 channels = 4 ;
ulalume3@99 1053 time = UNLIMITED ; // (10 currently)
ulalume3@99 1054 nb_of_time_scales = 2 ;
ulalume3@99 1055 scan_angles = 1 ;
ulalume3@99 1056 time_bck = 6 ;
ulalume3@99 1057 variables:
ulalume3@99 1058 int channel_ID(channels) ;
ulalume3@99 1059 double Laser_Pointing_Angle(scan_angles) ;
ulalume3@99 1060 double Background_Low(channels) ;
ulalume3@99 1061 double Background_High(channels) ;
ulalume3@99 1062 int Molecular_Calc ;
ulalume3@99 1063 double Pressure_at_Lidar_Station ;
ulalume3@99 1064 double Temperature_at_Lidar_Station ;
ulalume3@99 1065 int id_timescale(channels) ;
ulalume3@99 1066 int Laser_Pointing_Angle_of_Profiles(time, nb_of_time_scales) ;
ulalume3@99 1067 int Raw_Data_Start_Time(time, nb_of_time_scales) ;
ulalume3@99 1068 int Raw_Data_Stop_Time(time, nb_of_time_scales) ;
ulalume3@99 1069 int Raw_Bck_Start_Time(time_bck, nb_of_time_scales) ;
ulalume3@99 1070 int Raw_Bck_Stop_Time(time_bck, nb_of_time_scales) ;
ulalume3@99 1071 int LR_Input(channels) ;
ulalume3@99 1072 int Laser_Shots(time, channels) ;
ulalume3@99 1073 double Raw_Lidar_Data(time, channels, points) ;
ulalume3@99 1074 double Background_Profile(time_bck, channels, points) ;
ulalume3@99 1075 double DAQ_Range(channels) ;
ulalume3@99 1076
ulalume3@99 1077 // global attributes:
ulalume3@99 1078 :Measurement_ID = "20090130cc00" ;
ulalume3@99 1079 :RawData_Start_Date = "20090130" ;
ulalume3@99 1080 :RawData_Start_Time_UT = "000001" ;
ulalume3@99 1081 :RawData_Stop_Time_UT = "000501" ;
ulalume3@99 1082 :RawBck_Start_Date = "20090129" ;
ulalume3@99 1083 :RawBck_Start_Time_UT = "235001" ;
ulalume3@99 1084 :RawBck_Stop_Time_UT = "235301" ;
ulalume3@99 1085
ulalume3@99 1086 data:
ulalume3@99 1087
ulalume3@99 1088 channel_ID = 7, 5, 6, 8 ;
ulalume3@99 1089
ulalume3@99 1090 Laser_Pointing_Angle = 5 ;
ulalume3@99 1091
ulalume3@99 1092 Background_Low = 0, 30000, 30000, 30000 ;
ulalume3@99 1093
ulalume3@99 1094 Background_High = 500, 50000, 50000, 50000 ;
ulalume3@99 1095
ulalume3@99 1096 Molecular_Calc = 0 ;
ulalume3@99 1097
ulalume3@99 1098 Pressure_at_Lidar_Station = 1010 ;
ulalume3@99 1099
ulalume3@99 1100 Temperature_at_Lidar_Station = 19.8 ;
ulalume3@99 1101
ulalume3@99 1102 id_timescale = 1, 0, 0, 0 ;
ulalume3@99 1103
ulalume3@99 1104 LR_Input = 1,_,_,_ ;
ulalume3@99 1105
ulalume3@99 1106 DAQ_Range = 100,_,_,_ ;
ulalume3@99 1107
ulalume3@99 1108 Laser_Pointing_Angle_of_Profiles =
ulalume3@99 1109 0, 0,
ulalume3@99 1110 0, 0,
ulalume3@99 1111 0, 0,
ulalume3@99 1112 0, 0,
ulalume3@99 1113 0, 0,
ulalume3@99 1114 _, 0,
ulalume3@99 1115 _, 0,
ulalume3@99 1116 _, 0,
ulalume3@99 1117 _, 0,
ulalume3@99 1118 _, 0 ;
ulalume3@99 1119
ulalume3@99 1120
ulalume3@99 1121 Raw_Data_Start_Time =
ulalume3@99 1122 0, 0,
ulalume3@99 1123 60, 30,
ulalume3@99 1124 120, 60,
ulalume3@99 1125 180, 90,
ulalume3@99 1126 240, 120,
ulalume3@99 1127 _, 150,
ulalume3@99 1128 _, 180,
ulalume3@99 1129 _, 210,
ulalume3@99 1130 _, 240,
ulalume3@99 1131 _, 270 ;
ulalume3@99 1132
ulalume3@99 1133 Raw_Data_Stop_Time =
ulalume3@99 1134 60, 30,
ulalume3@99 1135 120, 60,
ulalume3@99 1136 180, 90,
ulalume3@99 1137 240, 120,
ulalume3@99 1138 300, 150,
ulalume3@99 1139 _, 180,
ulalume3@99 1140 _, 210,
ulalume3@99 1141 _, 240,
ulalume3@99 1142 _, 270,
ulalume3@99 1143 _, 300 ;
ulalume3@99 1144
ulalume3@99 1145
ulalume3@99 1146 Raw_Bck_Start_Time =
ulalume3@99 1147 0, 0,
ulalume3@99 1148 60, 30,
ulalume3@99 1149 120, 60,
ulalume3@99 1150 _, 90,
ulalume3@99 1151 _, 120,
ulalume3@99 1152 _, 150;
ulalume3@99 1153
ulalume3@99 1154
ulalume3@99 1155 Raw_Bck_Stop_Time =
ulalume3@99 1156 60, 30,
ulalume3@99 1157 120, 60,
ulalume3@99 1158 180, 90,
ulalume3@99 1159 _, 120,
ulalume3@99 1160 _, 150,
ulalume3@99 1161 _, 180 ;
ulalume3@99 1162
ulalume3@99 1163
ulalume3@99 1164 Laser_Shots =
ulalume3@99 1165 1500, 3000, 3000, 3000,
ulalume3@99 1166 1500, 3000, 3000, 3000,
ulalume3@99 1167 1500, 3000, 3000, 3000,
ulalume3@99 1168 1500, 3000, 3000, 3000,
ulalume3@99 1169 1500, 3000, 3000, 3000,
ulalume3@99 1170 1500, _, _, _,
ulalume3@99 1171 1500, _, _, _,
ulalume3@99 1172 1500, _, _, _,
ulalume3@99 1173 1500, _, _, _,
ulalume3@99 1174 1500, _, _, _ ;
ulalume3@99 1175
ulalume3@99 1176
ulalume3@99 1177 Raw_Lidar_Data = ...
ulalume3@99 1178
ulalume3@99 1179 Background_Profile = ...
ulalume3@99 1180
ulalume3@99 1181 This example file contains the minimum collection of mandatory
ulalume3@99 1182 information that has to be found within the *Raw Lidar Data* input file.
ulalume3@99 1183 If it is really necessary, the user can decide to add to these mandatory
ulalume3@99 1184 parameters any number of additional parameters considered in the
ulalume3@99 1185 previous example.
ulalume3@99 1186
ulalume3@99 1187 Finally, suppose we want to make the following changes with respect to
ulalume3@99 1188 the previous example:
ulalume3@99 1189
ulalume3@99 1190 #. use a sounding file for molecular density calculation instead of “US
ulalume3@99 1191 Standar Atmosphere 1976”
ulalume3@99 1192
ulalume3@99 1193 #. supply a lidar ratio profile to use in elastic backscatter retrieval
ulalume3@99 1194 instead of a fixed value
ulalume3@99 1195
ulalume3@99 1196 #. provide a overlap function for overlap correction
ulalume3@99 1197
ulalume3@99 1198 In this case we have to generate the following NetCDF additional files:
ulalume3@99 1199
ulalume3@99 1200 - | ``rs_20090130cc00.nc``
ulalume3@99 1201 | The name of *Sounding Data* file has to be computed as follows:
ulalume3@99 1202 | ``"rs_"``\ +\ ``Measurement_ID``
ulalume3@99 1203 | The structure of this file is summarized in table 2 of the pdf.
ulalume3@99 1204
ulalume3@99 1205 - | ``ov_20090130cc00.nc``
ulalume3@99 1206 | The name of *Overlap* file has to be computed as follows:
ulalume3@99 1207 | ``"ov_"``\ +\ ``Measurement_ID``
ulalume3@99 1208 | The structure of this file is summarized in table 3 of the pdf.
ulalume3@99 1209
ulalume3@99 1210 - | ``lr_20090130cc00.nc``
ulalume3@99 1211 | The name of *Lidar Ratio* file has to be computed as follows:
ulalume3@99 1212 | ``"lr_"``\ +\ ``Measurement_ID``
ulalume3@99 1213 | The structure of this file is summarized in table 4 of the pdf.
ulalume3@99 1214
ulalume3@99 1215 Moreover we need to apply the following changes to the *Raw Lidar Data*
ulalume3@99 1216 input file:
ulalume3@99 1217
ulalume3@99 1218 #. Change the value of the variable ``Molecular_Calc`` as follows:
ulalume3@99 1219
ulalume3@99 1220 ::
ulalume3@99 1221
ulalume3@99 1222 Molecular_Calc = 1 ;
ulalume3@99 1223
ulalume3@99 1224 Of course the variables ``Pressure_at_Lidar_Station`` and
ulalume3@99 1225 ``Temperature_at_Lidar_Station`` are not necessary anymore.
ulalume3@99 1226
ulalume3@99 1227 #. Change the values of the array ``LR_Input`` as follows:
ulalume3@99 1228
ulalume3@99 1229 ::
ulalume3@99 1230
ulalume3@99 1231 LR_Input = 0,_,_,_ ;
ulalume3@99 1232
ulalume3@99 1233 #. Add the global attribute ``Sounding_File_Name``
ulalume3@99 1234
ulalume3@99 1235 ::
ulalume3@99 1236
ulalume3@99 1237 Sounding_File_Name = "rs_20090130cc00.nc" ;
ulalume3@99 1238
ulalume3@99 1239 #. Add the global attribute ``LR_File_Name``
ulalume3@99 1240
ulalume3@99 1241 ::
ulalume3@99 1242
ulalume3@99 1243 LR_File_Name = "lr_20090130cc00.nc" ;
ulalume3@99 1244
ulalume3@99 1245 #. Add the global attribute ``Overlap_File_Name``
ulalume3@99 1246
ulalume3@99 1247 ::
ulalume3@99 1248
ulalume3@99 1249 Overlap_File_Name = "ov_20090130cc00.nc" ;
ulalume3@99 1250

mercurial