docs/file_formats/netcdf_file.rst

Tue, 26 Jul 2022 11:36:46 +0200

author
Giuseppe D'Amico <giuseppe.damico@imaa.cnr.it>
date
Tue, 26 Jul 2022 11:36:46 +0200
changeset 144
72f0d92af2d1
parent 135
499236da4845
permissions
-rw-r--r--

Fixed typos in depol real example and added the description to 15 characters measurement ID

ulalume3@99 1 .. _netcdf_file:
ulalume3@99 2
ulalume3@99 3 The SCC input netCDF file format
ulalume3@99 4 ================================
ulalume3@99 5
giuseppe@144 6 A more detailed version of this document can be found in this :download:`pdf file <../files/NetCDF_input_file_v3_6.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
giuseppe@128 62 SCC using model forecast/re-analysis or in case these are not available 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
giuseppe@135 79 Additionaly, the linked :download:`pdf file <../files/NetCDF_input_file_v3_5.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 +----------------------+-------------------------------------------+
giuseppe@144 122 | Earlinet call-sign | ccc |
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
giuseppe@128 726 the molecular density profile. The following options are
ulalume3@99 727 available:
ulalume3@99 728
giuseppe@128 729 #. Automatic. In this case the value of this variable has to be 0.
giuseppe@128 730 First the availablity of model forecast/re-analysis on Cloudnet data portal (https://cloudnet.fmi.fi/) is checked.
giuseppe@128 731 In case no model data are found US Standard Atmosphere 1976 is used.
giuseppe@128 732
giuseppe@128 733 #. Radiosounding. In this case the value of this variable has to be 1
giuseppe@128 734
giuseppe@128 735 #. Model forecast/re-analysis. In this case the value of this variable has to be 2.
giuseppe@128 736 Model data are made available by Cloudnet data portal (https://cloudnet.fmi.fi/).
giuseppe@128 737
ulalume3@99 738 #. US Standard Atmosphere 1976. In this case the value of this
giuseppe@128 739 variable has to be 4
ulalume3@99 740
ulalume3@99 741
giuseppe@131 742 If we decide to use the option 1. or 4. we have to provide also the
giuseppe@128 743 measured pressure and temperature at lidar station level.
giuseppe@131 744 Options 1. and 3. are available only for the stations registered on Cloudnet data portal for
giuseppe@128 745 the delivery of the required model data.
giuseppe@128 746 The Cloudnet station registration status can be checked by looking at the field 'Cloudnet Station ID'
giuseppe@128 747 in the station settings. If this field is filled the corresponding station is registered otherwise it is not.
giuseppe@128 748 In case the station is not registered you can ask to be registered by contacting SCC responsible.
giuseppe@128 749 Usually model data are made available with a delay of 24h.
giuseppe@128 750
giuseppe@128 751 For the option 2. a radiosounding file has to be
ulalume3@99 752 submitted separately in NetCDF format (the structure of this file is
ulalume3@99 753 summarized in table 2 of the pdf file). Let’s suppose we want to use the
ulalume3@99 754 option 1. so:
ulalume3@99 755
ulalume3@99 756 ::
ulalume3@99 757
ulalume3@99 758 Molecular_Calc = 0 ;
ulalume3@99 759
ulalume3@99 760 - | ``Pressure_at_Lidar_Station``
giuseppe@128 761 | Because we have chosen the automatic calculation mode to compute the molecular density profile we need to provide
giuseppe@128 762 the pressure in hPa at lidar station level (in case model data are not available).
ulalume3@99 763
ulalume3@99 764 ::
ulalume3@99 765
ulalume3@99 766 Pressure_at_Lidar_Station = 1010 ;
ulalume3@99 767
ulalume3@99 768 - | ``Temperature_at_Lidar_Station``
giuseppe@128 769 | Because we have chosen the automatic calculation mode to compute the molecular density profile we need to provide
giuseppe@128 770 the temperature in C at lidar station level (in case model data are not available).
ulalume3@99 771
ulalume3@99 772 ::
ulalume3@99 773
ulalume3@99 774 Temperature_at_Lidar_Station = 19.8 ;
ulalume3@99 775
ulalume3@99 776 - | ``LR_Input(channels)``
ulalume3@99 777 | This array is required only for lidar channels for which elastic
ulalume3@99 778 backscatter retrieval has to be performed. It defines the lidar
ulalume3@99 779 ratio to be used within this retrieval. Two options are available:
ulalume3@99 780
ulalume3@99 781 #. The user can submit a lidar ratio profile. In this case the value
ulalume3@99 782 of this variable has to be 0.
ulalume3@99 783
ulalume3@99 784 #. A fixed value of lidar ratio can be used. In this case the value
ulalume3@99 785 of this variable has to be 1.
ulalume3@99 786
ulalume3@99 787 If we decide to use the option 1. a lidar ratio file has to be
ulalume3@99 788 submitted separately in NetCDF format (the structure of this file is
ulalume3@99 789 summarized in table ). If we decide to use the option 2. the
ulalume3@99 790 fixed value of lidar ratio will be taken from SCC\_DB. In our example
ulalume3@99 791 we have to give a value of this array only for the 1064nm lidar
ulalume3@99 792 channel because for the 532nm we will be able to retrieve a Raman
ulalume3@99 793 backscatter coefficient. In case we want to use the fixed value
ulalume3@99 794 stored in SCC\_DB we have to set:
ulalume3@99 795
ulalume3@99 796 ::
ulalume3@99 797
ulalume3@99 798 LR_Input = 1,_,_,_ ;
ulalume3@99 799
ulalume3@99 800 - | ``DAQ_Range(channels)``
ulalume3@99 801 | This array is required only if one or more lidar signals are
ulalume3@99 802 acquired in analog mode. It gives the analog scale in mV used to
ulalume3@99 803 acquire the analog signals. In our example we have only the 1064nm
ulalume3@99 804 channel acquired in analog mode. If we have used a 100mV analog
ulalume3@99 805 scale to acquire this channel we have to set:
ulalume3@99 806
ulalume3@99 807 ::
ulalume3@99 808
ulalume3@99 809 DAQ_Range = 100,_,_,_ ;
ulalume3@99 810
ulalume3@99 811
ulalume3@99 812 Global attributes
ulalume3@99 813 ~~~~~~~~~~~~~~~~~
ulalume3@99 814
ulalume3@99 815 - | ``Measurement_ID``
giuseppe@144 816 | The submission of a raw data file to the SCC is possible only if it contains
giuseppe@144 817 this global attribute which, in general, can be set to any alphanumeric string
giuseppe@144 818 composed by 12 or 15 characters. The raw data file can be registered into the SCC database only
giuseppe@144 819 if the corresponding measurement ID string is not already used by any other raw data file
giuseppe@144 820 (of any station). To ensure the unicity of the measurement ID string the following format is highly recommened::
giuseppe@144 821
giuseppe@144 822 <start\_date><station\_code><start\_time>
giuseppe@144 823
giuseppe@144 824 where:
giuseppe@144 825
giuseppe@144 826 +-----------------------+------------------------------------------------------------------+
giuseppe@144 827 | *<start\_date>* | 8 digits measurement start date: YYYYMMDD (for example 20220620) |
giuseppe@144 828 +-----------------------+------------------------------------------------------------------+
giuseppe@144 829 | *<station\_code>* | 3 digits code (for example pot) |
giuseppe@144 830 +-----------------------+------------------------------------------------------------------+
giuseppe@144 831 | *<star\_time>* | 4 digits measurement start time (UTC): HHMM (for example 2226) |
giuseppe@144 832 +-----------------------+------------------------------------------------------------------+
giuseppe@144 833
giuseppe@144 834 In our example we have to set:
ulalume3@99 835
ulalume3@99 836 ::
ulalume3@99 837
giuseppe@144 838 Measurement_ID= "20090130ccc0000" ;
ulalume3@99 839
ulalume3@99 840 - | ``RawData_Start_Date``
ulalume3@99 841 | This mandatory global attribute defines the start date of lidar
ulalume3@99 842 measurements in the format YYYYMMDD. In our case we have:
ulalume3@99 843
ulalume3@99 844 ::
ulalume3@99 845
ulalume3@99 846 RawData_Start_Date = "20090130" ;
ulalume3@99 847
ulalume3@99 848 - | ``RawData_Start_Time_UT``
ulalume3@99 849 | This mandatory global attribute defines the UT start time of lidar
ulalume3@99 850 measurements in the format HHMMSS. In our case we have:
ulalume3@99 851
ulalume3@99 852 ::
ulalume3@99 853
ulalume3@99 854 RawData_Start_Time_UT = "000001" ;
ulalume3@99 855
ulalume3@99 856 - | ``RawData_Stop_Time_UT``
ulalume3@99 857 | This mandatory global attribute defines the UT stop time of lidar
ulalume3@99 858 measurements in the format HHMMSS. In our case we have:
ulalume3@99 859
ulalume3@99 860 ::
ulalume3@99 861
ulalume3@99 862 RawData_Stop_Time_UT = "000501" ;
ulalume3@99 863
ulalume3@99 864 - | ``RawBck_Start_Date``
ulalume3@99 865 | This optional global attribute defines the start date of dark
ulalume3@99 866 measurements in the format YYYYMMDD. In our case we have:
ulalume3@99 867
ulalume3@99 868 ::
ulalume3@99 869
ulalume3@99 870 RawBck_Start_Date = "20090129" ;
ulalume3@99 871
ulalume3@99 872 - | ``RawBck_Start_Time_UT``
ulalume3@99 873 | This optional global attribute defines the UT start time of dark
ulalume3@99 874 measurements in the format HHMMSS. In our case we have:
ulalume3@99 875
ulalume3@99 876 ::
ulalume3@99 877
ulalume3@99 878 RawBck_Start_Time_UT = "235001" ;
ulalume3@99 879
ulalume3@99 880 - | ``RawBck_Stop_Time_UT``
ulalume3@99 881 | This optional global attribute defines the UT stop time of dark
ulalume3@99 882 measurements in the format HHMMSS. In our case we have:
ulalume3@99 883
ulalume3@99 884 ::
ulalume3@99 885
ulalume3@99 886 RawBck_Stop_Time_UT = "235301" ;
ulalume3@99 887
ulalume3@99 888
ulalume3@99 889 Example of file (CDL format)
ulalume3@99 890 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ulalume3@99 891
ulalume3@99 892 To summarize we have the following NetCDF *Raw Lidar Data* file (in CDL
ulalume3@99 893 format):
ulalume3@99 894
ulalume3@99 895 ::
ulalume3@99 896
ulalume3@99 897 dimensions:
ulalume3@99 898 points = 5000 ;
ulalume3@99 899 channels = 4 ;
ulalume3@99 900 time = UNLIMITED ; // (10 currently)
ulalume3@99 901 nb_of_time_scales = 2 ;
ulalume3@99 902 scan_angles = 1 ;
ulalume3@99 903 time_bck = 6 ;
ulalume3@99 904 variables:
ulalume3@99 905 int channel_ID(channels) ;
ulalume3@99 906 int Laser_Repetition_Rate(channels) ;
ulalume3@99 907 double Laser_Pointing_Angle(scan_angles) ;
ulalume3@99 908 int Signal_Type(channels);
ulalume3@99 909 double Emitted_Wavelength(channels) ;
ulalume3@99 910 double Detected_Wavelength(channels) ;
ulalume3@99 911 double Raw_Data_Range_Resolution(channels) ;
ulalume3@99 912 int Background_Mode(channels) ;
ulalume3@99 913 double Background_Low(channels) ;
ulalume3@99 914 double Background_High(channels) ;
ulalume3@99 915 int Molecular_Calc ;
ulalume3@99 916 double Pressure_at_Lidar_Station ;
ulalume3@99 917 double Temperature_at_Lidar_Station ;
ulalume3@99 918 int id_timescale(channels) ;
ulalume3@99 919 double Dead_Time(channels) ;
ulalume3@99 920 int Dead_Time_Corr_Type(channels) ;
ulalume3@99 921 int Acquisition_Mode(channels) ;
ulalume3@99 922 double Trigger_Delay(channels) ;
ulalume3@99 923 int LR_Input(channels) ;
ulalume3@99 924 int Laser_Pointing_Angle_of_Profiles(time, nb_of_time_scales) ;
ulalume3@99 925 int Raw_Data_Start_Time(time, nb_of_time_scales) ;
ulalume3@99 926 int Raw_Data_Stop_Time(time, nb_of_time_scales) ;
ulalume3@99 927 int Raw_Bck_Start_Time(time_bck, nb_of_time_scales) ;
ulalume3@99 928 int Raw_Bck_Stop_Time(time_bck, nb_of_time_scales) ;
ulalume3@99 929 int Laser_Shots(time, channels) ;
ulalume3@99 930 double Raw_Lidar_Data(time, channels, points) ;
ulalume3@99 931 double Background_Profile(time_bck, channels, points) ;
ulalume3@99 932 double DAQ_Range(channels) ;
ulalume3@99 933
ulalume3@99 934 // global attributes:
giuseppe@144 935 :Measurement_ID = "20090130ccc0000" ;
ulalume3@99 936 :RawData_Start_Date = "20090130" ;
ulalume3@99 937 :RawData_Start_Time_UT = "000001" ;
ulalume3@99 938 :RawData_Stop_Time_UT = "000501" ;
ulalume3@99 939 :RawBck_Start_Date = "20090129" ;
ulalume3@99 940 :RawBck_Start_Time_UT = "235001" ;
ulalume3@99 941 :RawBck_Stop_Time_UT = "235301" ;
ulalume3@99 942
ulalume3@99 943 data:
ulalume3@99 944
ulalume3@99 945 channel_ID = 7, 5, 6, 8 ;
ulalume3@99 946
ulalume3@99 947 Laser_Repetition_Rate = 50, 50, 50, 50 ;
ulalume3@99 948
ulalume3@99 949 Laser_Pointing_Angle = 5 ;
ulalume3@99 950
ulalume3@99 951 Signal_Type = 0, 7, 6, 3 ;
ulalume3@99 952
ulalume3@99 953 Emitted_Wavelength = 1064, 532, 532, 532 ;
ulalume3@99 954
ulalume3@99 955 Detected_Wavelength = 1064, 532, 532, 607 ;
ulalume3@99 956
ulalume3@99 957 Raw_Data_Range_Resolution = 7.5, 15, 15, 15 ;
ulalume3@99 958
ulalume3@99 959 Background_Mode = 0, 1, 1, 1 ;
ulalume3@99 960
ulalume3@99 961 Background_Low = 0, 30000, 30000, 30000 ;
ulalume3@99 962
ulalume3@99 963 Background_High = 500, 50000, 50000, 50000 ;
ulalume3@99 964
ulalume3@99 965 Molecular_Calc = 0 ;
ulalume3@99 966
ulalume3@99 967 Pressure_at_Lidar_Station = 1010 ;
ulalume3@99 968
ulalume3@99 969 Temperature_at_Lidar_Station = 19.8 ;
ulalume3@99 970
ulalume3@99 971 id_timescale = 1, 0, 0, 0 ;
ulalume3@99 972
ulalume3@99 973 Dead_Time = _, 10, 10, 10 ;
ulalume3@99 974
ulalume3@99 975 Dead_Time_Corr_Type = _, 0, 0, 0 ;
ulalume3@99 976
ulalume3@99 977 Acquisition_Mode = 0, 1, 1, 1 ;
ulalume3@99 978
ulalume3@99 979 Trigger_Delay = 50, 0, 0, 0 ;
ulalume3@99 980
ulalume3@99 981 LR_Input = 1,_,_,_ ;
ulalume3@99 982
ulalume3@99 983 DAQ_Range = 100,_,_,_ ;
ulalume3@99 984
ulalume3@99 985 Laser_Pointing_Angle_of_Profiles =
ulalume3@99 986 0, 0,
ulalume3@99 987 0, 0,
ulalume3@99 988 0, 0,
ulalume3@99 989 0, 0,
ulalume3@99 990 0, 0,
ulalume3@99 991 _, 0,
ulalume3@99 992 _, 0,
ulalume3@99 993 _, 0,
ulalume3@99 994 _, 0,
ulalume3@99 995 _, 0 ;
ulalume3@99 996
ulalume3@99 997
ulalume3@99 998 Raw_Data_Start_Time =
ulalume3@99 999 0, 0,
ulalume3@99 1000 60, 30,
ulalume3@99 1001 120, 60,
ulalume3@99 1002 180, 90,
ulalume3@99 1003 240, 120,
ulalume3@99 1004 _, 150,
ulalume3@99 1005 _, 180,
ulalume3@99 1006 _, 210,
ulalume3@99 1007 _, 240,
ulalume3@99 1008 _, 270 ;
ulalume3@99 1009
ulalume3@99 1010 Raw_Data_Stop_Time =
ulalume3@99 1011 60, 30,
ulalume3@99 1012 120, 60,
ulalume3@99 1013 180, 90,
ulalume3@99 1014 240, 120,
ulalume3@99 1015 300, 150,
ulalume3@99 1016 _, 180,
ulalume3@99 1017 _, 210,
ulalume3@99 1018 _, 240,
ulalume3@99 1019 _, 270,
ulalume3@99 1020 _, 300 ;
ulalume3@99 1021
ulalume3@99 1022
ulalume3@99 1023 Raw_Bck_Start_Time =
ulalume3@99 1024 0, 0,
ulalume3@99 1025 60, 30,
ulalume3@99 1026 120, 60,
ulalume3@99 1027 _, 90,
ulalume3@99 1028 _, 120,
ulalume3@99 1029 _, 150;
ulalume3@99 1030
ulalume3@99 1031
ulalume3@99 1032 Raw_Bck_Stop_Time =
ulalume3@99 1033 60, 30,
ulalume3@99 1034 120, 60,
ulalume3@99 1035 180, 90,
ulalume3@99 1036 _, 120,
ulalume3@99 1037 _, 150,
ulalume3@99 1038 _, 180 ;
ulalume3@99 1039
ulalume3@99 1040
ulalume3@99 1041 Laser_Shots =
ulalume3@99 1042 1500, 3000, 3000, 3000,
ulalume3@99 1043 1500, 3000, 3000, 3000,
ulalume3@99 1044 1500, 3000, 3000, 3000,
ulalume3@99 1045 1500, 3000, 3000, 3000,
ulalume3@99 1046 1500, 3000, 3000, 3000,
ulalume3@99 1047 1500, _, _, _,
ulalume3@99 1048 1500, _, _, _,
ulalume3@99 1049 1500, _, _, _,
ulalume3@99 1050 1500, _, _, _,
ulalume3@99 1051 1500, _, _, _ ;
ulalume3@99 1052
ulalume3@99 1053
ulalume3@99 1054 Raw_Lidar_Data = ...
ulalume3@99 1055
ulalume3@99 1056 Background_Profile = ...
ulalume3@99 1057
ulalume3@99 1058 The name of the input file should have the following format:
ulalume3@99 1059
ulalume3@99 1060 ::
ulalume3@99 1061
ulalume3@99 1062 Measurement_ID.nc
ulalume3@99 1063
giuseppe@144 1064 | so in the example the filename should be 20090130ccc0000.nc.
ulalume3@99 1065  
ulalume3@99 1066 Please keep in mind that in case you submit a file like the previous
ulalume3@99 1067 one all the parameters present in it will be used by the SCC even if
ulalume3@99 1068 you have different values for the same parameters within the SCC\_DB.
ulalume3@99 1069 If you want to use the values already stored in SCC\_DB (this should
ulalume3@99 1070 be the usual way to use SCC) the *Raw Lidar Data* input file has to be
ulalume3@99 1071 modified as follows:
ulalume3@99 1072
ulalume3@99 1073 ::
ulalume3@99 1074
ulalume3@99 1075 dimensions:
ulalume3@99 1076 points = 5000 ;
ulalume3@99 1077 channels = 4 ;
ulalume3@99 1078 time = UNLIMITED ; // (10 currently)
ulalume3@99 1079 nb_of_time_scales = 2 ;
ulalume3@99 1080 scan_angles = 1 ;
ulalume3@99 1081 time_bck = 6 ;
ulalume3@99 1082 variables:
ulalume3@99 1083 int channel_ID(channels) ;
ulalume3@99 1084 double Laser_Pointing_Angle(scan_angles) ;
ulalume3@99 1085 double Background_Low(channels) ;
ulalume3@99 1086 double Background_High(channels) ;
ulalume3@99 1087 int Molecular_Calc ;
ulalume3@99 1088 double Pressure_at_Lidar_Station ;
ulalume3@99 1089 double Temperature_at_Lidar_Station ;
ulalume3@99 1090 int id_timescale(channels) ;
ulalume3@99 1091 int Laser_Pointing_Angle_of_Profiles(time, nb_of_time_scales) ;
ulalume3@99 1092 int Raw_Data_Start_Time(time, nb_of_time_scales) ;
ulalume3@99 1093 int Raw_Data_Stop_Time(time, nb_of_time_scales) ;
ulalume3@99 1094 int Raw_Bck_Start_Time(time_bck, nb_of_time_scales) ;
ulalume3@99 1095 int Raw_Bck_Stop_Time(time_bck, nb_of_time_scales) ;
ulalume3@99 1096 int LR_Input(channels) ;
ulalume3@99 1097 int Laser_Shots(time, channels) ;
ulalume3@99 1098 double Raw_Lidar_Data(time, channels, points) ;
ulalume3@99 1099 double Background_Profile(time_bck, channels, points) ;
ulalume3@99 1100 double DAQ_Range(channels) ;
ulalume3@99 1101
ulalume3@99 1102 // global attributes:
giuseppe@144 1103 :Measurement_ID = "20090130ccc0000" ;
ulalume3@99 1104 :RawData_Start_Date = "20090130" ;
ulalume3@99 1105 :RawData_Start_Time_UT = "000001" ;
ulalume3@99 1106 :RawData_Stop_Time_UT = "000501" ;
ulalume3@99 1107 :RawBck_Start_Date = "20090129" ;
ulalume3@99 1108 :RawBck_Start_Time_UT = "235001" ;
ulalume3@99 1109 :RawBck_Stop_Time_UT = "235301" ;
ulalume3@99 1110
ulalume3@99 1111 data:
ulalume3@99 1112
ulalume3@99 1113 channel_ID = 7, 5, 6, 8 ;
ulalume3@99 1114
ulalume3@99 1115 Laser_Pointing_Angle = 5 ;
ulalume3@99 1116
ulalume3@99 1117 Background_Low = 0, 30000, 30000, 30000 ;
ulalume3@99 1118
ulalume3@99 1119 Background_High = 500, 50000, 50000, 50000 ;
ulalume3@99 1120
ulalume3@99 1121 Molecular_Calc = 0 ;
ulalume3@99 1122
ulalume3@99 1123 Pressure_at_Lidar_Station = 1010 ;
ulalume3@99 1124
ulalume3@99 1125 Temperature_at_Lidar_Station = 19.8 ;
ulalume3@99 1126
ulalume3@99 1127 id_timescale = 1, 0, 0, 0 ;
ulalume3@99 1128
ulalume3@99 1129 LR_Input = 1,_,_,_ ;
ulalume3@99 1130
ulalume3@99 1131 DAQ_Range = 100,_,_,_ ;
ulalume3@99 1132
ulalume3@99 1133 Laser_Pointing_Angle_of_Profiles =
ulalume3@99 1134 0, 0,
ulalume3@99 1135 0, 0,
ulalume3@99 1136 0, 0,
ulalume3@99 1137 0, 0,
ulalume3@99 1138 0, 0,
ulalume3@99 1139 _, 0,
ulalume3@99 1140 _, 0,
ulalume3@99 1141 _, 0,
ulalume3@99 1142 _, 0,
ulalume3@99 1143 _, 0 ;
ulalume3@99 1144
ulalume3@99 1145
ulalume3@99 1146 Raw_Data_Start_Time =
ulalume3@99 1147 0, 0,
ulalume3@99 1148 60, 30,
ulalume3@99 1149 120, 60,
ulalume3@99 1150 180, 90,
ulalume3@99 1151 240, 120,
ulalume3@99 1152 _, 150,
ulalume3@99 1153 _, 180,
ulalume3@99 1154 _, 210,
ulalume3@99 1155 _, 240,
ulalume3@99 1156 _, 270 ;
ulalume3@99 1157
ulalume3@99 1158 Raw_Data_Stop_Time =
ulalume3@99 1159 60, 30,
ulalume3@99 1160 120, 60,
ulalume3@99 1161 180, 90,
ulalume3@99 1162 240, 120,
ulalume3@99 1163 300, 150,
ulalume3@99 1164 _, 180,
ulalume3@99 1165 _, 210,
ulalume3@99 1166 _, 240,
ulalume3@99 1167 _, 270,
ulalume3@99 1168 _, 300 ;
ulalume3@99 1169
ulalume3@99 1170
ulalume3@99 1171 Raw_Bck_Start_Time =
ulalume3@99 1172 0, 0,
ulalume3@99 1173 60, 30,
ulalume3@99 1174 120, 60,
ulalume3@99 1175 _, 90,
ulalume3@99 1176 _, 120,
ulalume3@99 1177 _, 150;
ulalume3@99 1178
ulalume3@99 1179
ulalume3@99 1180 Raw_Bck_Stop_Time =
ulalume3@99 1181 60, 30,
ulalume3@99 1182 120, 60,
ulalume3@99 1183 180, 90,
ulalume3@99 1184 _, 120,
ulalume3@99 1185 _, 150,
ulalume3@99 1186 _, 180 ;
ulalume3@99 1187
ulalume3@99 1188
ulalume3@99 1189 Laser_Shots =
ulalume3@99 1190 1500, 3000, 3000, 3000,
ulalume3@99 1191 1500, 3000, 3000, 3000,
ulalume3@99 1192 1500, 3000, 3000, 3000,
ulalume3@99 1193 1500, 3000, 3000, 3000,
ulalume3@99 1194 1500, 3000, 3000, 3000,
ulalume3@99 1195 1500, _, _, _,
ulalume3@99 1196 1500, _, _, _,
ulalume3@99 1197 1500, _, _, _,
ulalume3@99 1198 1500, _, _, _,
ulalume3@99 1199 1500, _, _, _ ;
ulalume3@99 1200
ulalume3@99 1201
ulalume3@99 1202 Raw_Lidar_Data = ...
ulalume3@99 1203
ulalume3@99 1204 Background_Profile = ...
ulalume3@99 1205
ulalume3@99 1206 This example file contains the minimum collection of mandatory
ulalume3@99 1207 information that has to be found within the *Raw Lidar Data* input file.
ulalume3@99 1208 If it is really necessary, the user can decide to add to these mandatory
ulalume3@99 1209 parameters any number of additional parameters considered in the
ulalume3@99 1210 previous example.
ulalume3@99 1211
ulalume3@99 1212 Finally, suppose we want to make the following changes with respect to
ulalume3@99 1213 the previous example:
ulalume3@99 1214
ulalume3@99 1215 #. use a sounding file for molecular density calculation instead of “US
ulalume3@99 1216 Standar Atmosphere 1976”
ulalume3@99 1217
ulalume3@99 1218 #. supply a lidar ratio profile to use in elastic backscatter retrieval
ulalume3@99 1219 instead of a fixed value
ulalume3@99 1220
ulalume3@99 1221 #. provide a overlap function for overlap correction
ulalume3@99 1222
ulalume3@99 1223 In this case we have to generate the following NetCDF additional files:
ulalume3@99 1224
giuseppe@144 1225 - | ``rs_20090130ccc0000.nc``
ulalume3@99 1226 | The name of *Sounding Data* file has to be computed as follows:
ulalume3@99 1227 | ``"rs_"``\ +\ ``Measurement_ID``
ulalume3@99 1228 | The structure of this file is summarized in table 2 of the pdf.
ulalume3@99 1229
giuseppe@144 1230 - | ``ov_20090130ccc0000.nc``
ulalume3@99 1231 | The name of *Overlap* file has to be computed as follows:
ulalume3@99 1232 | ``"ov_"``\ +\ ``Measurement_ID``
ulalume3@99 1233 | The structure of this file is summarized in table 3 of the pdf.
ulalume3@99 1234
giuseppe@144 1235 - | ``lr_20090130ccc0000.nc``
ulalume3@99 1236 | The name of *Lidar Ratio* file has to be computed as follows:
ulalume3@99 1237 | ``"lr_"``\ +\ ``Measurement_ID``
ulalume3@99 1238 | The structure of this file is summarized in table 4 of the pdf.
ulalume3@99 1239
ulalume3@99 1240 Moreover we need to apply the following changes to the *Raw Lidar Data*
ulalume3@99 1241 input file:
ulalume3@99 1242
ulalume3@99 1243 #. Change the value of the variable ``Molecular_Calc`` as follows:
ulalume3@99 1244
ulalume3@99 1245 ::
ulalume3@99 1246
ulalume3@99 1247 Molecular_Calc = 1 ;
ulalume3@99 1248
ulalume3@99 1249 Of course the variables ``Pressure_at_Lidar_Station`` and
ulalume3@99 1250 ``Temperature_at_Lidar_Station`` are not necessary anymore.
ulalume3@99 1251
ulalume3@99 1252 #. Change the values of the array ``LR_Input`` as follows:
ulalume3@99 1253
ulalume3@99 1254 ::
ulalume3@99 1255
ulalume3@99 1256 LR_Input = 0,_,_,_ ;
ulalume3@99 1257
ulalume3@99 1258 #. Add the global attribute ``Sounding_File_Name``
ulalume3@99 1259
ulalume3@99 1260 ::
ulalume3@99 1261
giuseppe@144 1262 Sounding_File_Name = "rs_20090130ccc0000.nc" ;
ulalume3@99 1263
ulalume3@99 1264 #. Add the global attribute ``LR_File_Name``
ulalume3@99 1265
ulalume3@99 1266 ::
ulalume3@99 1267
giuseppe@144 1268 LR_File_Name = "lr_20090130ccc0000.nc" ;
ulalume3@99 1269
ulalume3@99 1270 #. Add the global attribute ``Overlap_File_Name``
ulalume3@99 1271
ulalume3@99 1272 ::
ulalume3@99 1273
giuseppe@144 1274 Overlap_File_Name = "ov_20090130ccc0000.nc" ;
ulalume3@99 1275

mercurial