RAF's primary datasets consist of synchronous time series data. Data are written to the netCDF file one record per second, even for data at higher rates.
Data acquisition of numerous instruments at high-rate (from 1 to 5K samples per second) for 10 to 11 hours can produce large data files. Typical, raw packed data files from the NCAR C-130 are 600MB, and unpacked with no data reduction would be twice that size. Files reduced to 1 sample per second (sps) are typically 70-100MB.
Note: For all size-distributions (PMS1D, PMS2D, RDMA) the zeroth or first (depending on how you count) bin is undefined, do not use this value. Attributes for the various size distribution variables should include FirstBin and LastBin.
There is also an occasional need to look at data at the sample rate.
RAF uses a naming convention consisting of the 3 digit project number, followed by the flight type, followed by a 2 digit flight number, followed by ".nc".
e.g.
Flight types used by RAF are "ff", "tf", and "rf".
e.g.,
In our files RPO stands for "Right Pod Outboard".
Time is the unlimited dimension, and every variable (except base_time) has the Time dimension. No more than one record is to be written per second; all high-rate data are to be contained "per record", though data averaged down slower than 1 sps may be written (e.g., when you have 1 sample every 10 seconds).
A new dimension has been added called Async. Async is a triplet containing the location of the asynchronous data in a separate binary "heap" file. The first value contains the offset in bytes into the file of the first record for that second, the second number tells the record length, and the third is the number of records for that particular second. Async will always be in the 3rd (or Vector) dimension, e.g., float 2D-P_LPI(Time, sps1, Async). Async was added to facilitate future capabilities of being able to provide satellite images, PMS-2D data, and other asynchronous products into one "heap" file. (Note: I have yet to use this feature, so implementation of file name, etc., are incomplete).
int Time(Time) ;
Time:long_name = "time of measurement" ;
Time:standard_name = "time" ;
Time:units = "seconds since 2004-08-02 16:46:11 +0000" ;
Time:strptime_format = "seconds since %F %T %z" ;
// global attributes:
:Source = "NCAR Research Aviation Facility" ;
:Address = "P.O. Box 3000, Boulder, CO 80307-3000" ;
:Phone = "(303) 497-1030" ;
:Conventions = "NCAR-RAF/nimbus" ;
:ConventionsURL = "http://www.eol.ucar.edu/raf/Software/netCDF.html" ;
:ConventionsVersion = "1.3" ;
:ProcessorRevision = "3213" ;
:ProcessorURL = "http://svn/svn/raf/trunk/nimbus" ;
:DateProcessed = "2006-02-17 16:57:57 -0700" ;
:ProjectName = "TREX" ;
:Aircraft = "N677F" ;
:ProjectNumber = "503" ;
:FlightNumber = "tf01" ;
:FlightDate = "02/17/2006" ;
:coordinates = "GGLON GGLAT GGALT Time" ;
:wind_field = "WSC WDC WIC" ;
:landmarks = "39.9083 -105.116 BJC,40.25 -103.799 FtMrg,43.5838 -96.7346 FSD,46.8392 -92.1897 DLH,32.9048 -97.0459 DFW,36.0847 -115.151 LAS,40.7858 -111.979 SLC,33.4358 -112.013 PHX,45.5894 -122.592 PDX,33.9436 -118.403 LAX" ;
:TimeInterval = "00:03:16-01:29:43" ;
coordinates is required starting with version 1.3. These
are the aircrafts "best" position variables.
TimeInterval is required by ncplot and ncpp, but I hope to get away from that.
All variables contain the basic attributes units, long_name, and _FillValue (missing_value is being deprecated). In addition we provide some other attributes; not all are used for every variable:
standard_name we have adopted the CF CF conventions section 3.3 use of standard_name where applicable.
SampledRate is the rate (sps) at which the variable was sampled onboard the aircraft. This does not apply to derived variables.
DataQuality attempts to inform the user of the quality of these data. Some values are Bad, Preliminary and Good
Category Since a file can contain hundreds of variables with not very descriptive names, this is provided to help create sub-lists of variables. Comma separated list.
CalibrationCoefficients are the values used to produce engineering units from a measurement's DC voltage. It is used by the analog/digital group. These values have already been applied! They are present for documentation.
Dependencies are the input variables that were used to produce this derived value. Like CalibrationCoefficients , these are present for documentation.
For processing purposes, variables in our files are organized into 3 sorted lists. The first sorted list consists of Analog or Digitally-sampled variables. These only have calibration coefficients applied to them. The second group is raw data from "block" probes (e.g., PMS1D, IRS, GPS, and a few from group 1 that need special processing). The third group consists of purely derived variables. I have included one example from each of the 3 groups (which also show different dimension schemes):
float ADIFR(Time) ;
ADIFR:units = "mbar" ;
ADIFR:long_name = "Vertical Differential Pressure, Radome" ;
ADIFR:Category = "Uncorr\'d Raw" ;
ADIFR:_FillValue = -32767.f ;
ADIFR:SampledRate = 25 ;
ADIFR:DataQuality = "Preliminary" ;
ADIFR:CalibrationCoefficients = -0.0115f, 5.1637f, 0.001f ;
float AFSSP_RPC(Time, sps1, Vector16) ;
AFSSP_RPC:units = "count" ;
AFSSP_RPC:long_name = "FSSP-100 Raw Accumulation (per cell)" ;
AFSSP_RPC:Category = "PMS Probe" ;
AFSSP_RPC:_FillValue = -32767.f ;
AFSSP_RPC:SampledRate = 10 ;
AFSSP_RPC:DataQuality = "Preliminary" ;
AFSSP_RPC:SerialNumber = "FSSP076" ;
AFSSP_RPC:FirstBin = 1 ;
AFSSP_RPC:LastBin = 15 ;
AFSSP_RPC:CellSizes = 2.f, 5.f, 8.f, 11.f, 14.f, 17.f, 20.f, 23.f, 26.f, 29.f, 32.f, 35.f, 38.f, 41.f, 44.f, 47.f, 2.f, 4.f, 6.f, 8.f, 10.f, 12.f, 14.f, 16.f, 18.f, 20.f, 22.f, 24.f, 26.f, 28.f, 30.f, 32.f, 1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, 8.f, 9.f, 10.f, 11.f, 12.f, 13.f, 14.f, 15.f, 16.f, 0.5f, 1.f, 1.5f, 2.f, 2.5f, 3.f, 3.5f, 4.f, 4.5f, 5.f, 5.5f, 6.f, 6.5f, 7.f, 7.5f, 8.f ;
AFSSP_RPC:CellSizeUnits = "micrometers" ;
AFSSP_RPC:DepthOfField = 2.7f ;
AFSSP_RPC:BeamDiameter = 0.18f ;
AFSSP_RPC:Density = 1.f ;
AFSSP_RPC:PLWfactor = 1.e-06f ;
AFSSP_RPC:DBZfactor = 1000000.f ;
float WIC(Time, sps25) ;
WIC:units = "m/s" ;
WIC:long_name = "GPS-Corrected Wind Vector, Vertical Gust Component" ;
WIC:standard_name = "wind_from_direction" ;
WIC:Category = "Wind" ;
WIC:_FillValue = -32767.f ;
WIC:DataQuality = "Good" ;
WIC:Dependencies = "9 TASX VEWC VNSC PITCH ROLL THDG ATTACK SSLIP VSPD" ;
| PMS1D | # bins | Counts name | Concentration name | DMT Converted | # bins | Counts name | Concentration name |
|---|---|---|---|---|---|---|---|
| FSSP | 16 | AFSSP_xxx | CFSSP_xxx | S100 | 31 | AS100_xxx | CS100_xxx |
| PCASP | 16 | APCAS_xxx | CPCAS_xxx | S200 | 31 | AS200_xxx | CS200_xxx |
| F300 | 32 | AF300_xxx | CF300_xxx | S300 | 31 | AS300_xxx | CS300_xxx |
| 260X | 64 | A260X_xxx | C260X_xxx | ---- | -- | ||
| 2D-C | 32 | A1DC_xxx1 | C1DC_xxx1 | ---- | -- | ||
| 2D-C | 64 | A2DC_xxx2 | C2DC_xxx2 | ---- | -- |
Two sets of arrays are produced for each 2D probe. The 1DC pair is the produced from the 2D probe data using an "entire-in" algorithm. The 2DC pair is produced using a "center-in" algorithm.
DMT converted probes can record either 10, 20, 30 or 40 bins of data. To maintain backwards compatability, we pad the front of the array with a zero and increase the number of bins by one (11, 21, 31 or 41).
NOTE: Always ignore the very first bin of any size-distribution histogram in our netCDF files.
float AS100_LPC(Time, sps1, Vector31) ;
AS100_LPC:_FillValue = -32767.f ;
AS100_LPC:units = "count" ;
AS100_LPC:long_name = "FSSP-100 Raw Accumulation (per cell) - DMT" ;
AS100_LPC:Category = "PMS Probe" ;
AS100_LPC:missing_value = -32767.f ;
AS100_LPC:SampledRate = 10 ;
AS100_LPC:DataQuality = "Preliminary" ;
AS100_LPC:SerialNumber = "FSSP122" ;
AS100_LPC:FirstBin = 3 ;
AS100_LPC:LastBin = 30 ;
AS100_LPC:CellSizes = 0.7f, 1.4f, 2.35f, 3.9f, 5.45f, 7.f, 8.55f, 10.1f, 11.65f, 13.2f, 14.75f, 16.3f, 17.85f, 19.4f, 20.95f, 22.5f, 24.05f, 25.6f, 27.15f, 28.7f, 30.25f, 31.8f, 33.35f, 34.9f, 36.45f, 38.f, 39.55f, 41.1f, 42.65f, 44.2f, 45.75f ;
AS100_LPC:CellSizeUnits = "micrometers" ;
AS100_LPC:DepthOfField = 2.3f ;
AS100_LPC:BeamDiameter = 0.2f ;
AS100_LPC:Density = 1.f ;
AS100_LPC:PLWfactor = 1.e-06f ;
AS100_LPC:DBZfactor = 1000000.f ;
float CS100_LPC(Time, sps1, Vector31) ;
CS100_LPC:_FillValue = -32767.f ;
CS100_LPC:units = "#/cm3" ;
CS100_LPC:long_name = "FSSP-100 Concentration (per cell) - DMT" ;
CS100_LPC:Category = "PMS Probe" ;
CS100_LPC:missing_value = -32767.f ;
CS100_LPC:DataQuality = "Preliminary" ;
CS100_LPC:Dependencies = "5 AS100_LPC TASX REJAT_LPC OVFLW_LPC FRNG_LPC" ;
float CONCF_LPC(Time) ;
CONCF_LPC:_FillValue = -32767.f ;
CONCF_LPC:units = "#/cm3" ;
CONCF_LPC:long_name = "FSSP-100 Concentration (all cells)" ;
CONCF_LPC:Category = "PMS Probe" ;
CONCF_LPC:missing_value = -32767.f ;
CONCF_LPC:DataQuality = "Preliminary" ;
CONCF_LPC:Dependencies = "1 CS100_LPC" ;
| bin# | 0 | 1 | 2 | 3 | .... | 29 | 30 |
|---|---|---|---|---|---|---|---|
| n/a | FirstBin | LastBin |
Chris Webster
National Center for Atmospheric Research
Research Aviation Facility
(303) 497-1044