docs/file_formats/netcdf_file.rst

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

mercurial