FaVaCal - FARLAB water vapour isotope calibration processor

From gfi

FaVaCal (FARLAB Vapour Calibration Routines) Documentation

Version 1.1 (24.08.2019)

Harald Sodemann, Geophysical Institute, University of Bergen, Norway


Purpose

FaVaCal has been created to provide a standard routine for the calibration of water vapour measurements from Picarro L2130-i/L2140-i analyzers in use at FARLAB. The primary application is to indentify calibrations obtained from the SDM module. However, it is also possible to perform calibration with other methods. There is support for manual injections into the Picarro Vapourizer, or for self-defined calibrations obtained by other means.


FaVaCal provides an overview of the data processing as HTML report, including quality flags and instrument parameters. The main result are data files with calibrated measurements in netCDF format. The data files contain quality flags and provide different averaging times.


FaVaCal consists of a set of routines written in Matlab. It should be straightforward to translate these routines into other languages, such as python, if necessary.



Installation

The FaVaCal code is hosted at the [git.app.uib.no:farlab-codes/farlab_vapour.git FaVaCal git repository]. Download or clone to a local directory to use FaVaCal.


On the GFI linux system, FaVaCal is installed at /Data/gfi/scratch/metdata/scripts/FARLAB/matlab



Files and structure

FaVaCal is operated by defining a run file that creates a set of matlab variables (structures), and then calls the main FaVaCal routine. The name of this routine can be chosen by the user. Typical names in use at FARLAB are e.g. FaVaCal_SNOWPACE_Finse_run01.m.


The files included in FaVaCal are:


FaVaCal_report.m
Create the output directory, call required subroutines in sequence, and produce the HTML report.
FaVaCal_calibrations.m
Identify calibrations from SDM or manual injections, quality control, plot, and save as structure in file <run>_calibrations.mat
FaVaCal_calibrate.m
Perform quality control of vapour data, calibration, time averaging, daily and overview plots, and netCDF output.
FARLAB_standards.m
A file containing information about the available calibration standards. This file is shared with the FLIIMP project.
FARLAB_vapour_data.m
Routine to read in vapour data for a given time range. The vapour data are in raw netCDF format, which is obtained from a python conversion routine FARLAB_Picarro_dat2nc.py.



Usage

FaVaCal consists of a set of routines written in Matlab. Before running the calibration, the user needs to create a run file that defines a set of matlab variables. These matlab variables contain all the settings required to perform the calibration, as explained below.



General working principle

FaVaCal then proceeds to identify the calibrations from the raw data files, performs quality control of the identified calibrations, and creates overview figures for each calibration. The result of the calibrations is saved as a matlab file in the output folder, named FARLAB_HKDS2038_calibrations.mat.


Thereafter, the vapour data are calibrated one day at a time. For each day, the nearest 2 (default value) valid calibrations are identified, averaged, and used for calibration. Quality codes, flagging and filtering is performed on the native time resolution data (see below). The data is then averaged to 1s, 10s, 30s, 1min and 1h time resolution, and all resolutions are saved into one netCDF data file. Overview plots of the calibrated data and instrument parameters are created for each day and the entire calibration period.


Finally, a HTML report is created that summarizes the calibration run, and includes the overview figures and a table of all calibrations (see below). Additionally, a method description is included, as well as recommendations for acknowledgements in scientific publications.



Calibration period identification

The entire calibration period was first processed for calibration periods with the SDM. The SDM was equipped with two bags, one each filled with standard DI ( -7.78 permil δ18O and δD -50.38 permil) and GSM1 (-33.07 permil in δ18O and -262.95 permil in δD). Typically, standards were applied to the analyzer 1-2 times in a 24 h period. Dry air was supplied from a synthetic air cylinder, or from a drierite patron.


Calibration periods were identified for each day as periods when the valve mask switches to 6, which is the case during SDM calibration. Then for each calibration period, the median value of humidity, δ18O and δD are obtained. To identify bursting bubbles and other variations that are generally due to deficiencies of the SDM vapour stream generator, values where that deviate by more than 0.5 permil in δ18O or 4.0 permil in δD are discarded. The remaining data for each period are then averaged and the standard deviation calculated. Each calibration is then assigned with quality flags according to the following criteria:


  • Unknown standard, bit 1, value 1: Median value can not be matched with an expected value for a standard.
  • Humidity range, bit 2, value 2: Humidity below 17000 ppmv or above 23000 ppmv.
  • Humidity variation, bit 3, value 4: Standard deviation of humidity larger than 500 ppmv.
  • Isotope variation, bit 4, value 8: Isotope variability above 0.5 permil for δ18O or above 5.0 permil for δD.
  • Bubble bursting, bit 5, value 16: Humidity disturbances with max(H2O) exceeding 23000 ppmv.
  • Low data fraction, bit 6, value 32: More than 60.0&perc; of data removed from calibration period.



Quality flags and data calibration

Next, the vapour measurements are calibrated using calibrations of sufficient quality. For each calendar day in the period, data was calibrated using the two nearest available calibrations with sufficient quality within the entire calibration period. Sufficient quality is defined as quality flags 1, 2 and 6 not set. Quality flags 3, 4 and 5 increase uncertainty, but do not invalidate a calibration period. Calibration of offset and slope onto the VSMOW2-SLAP2 scale with FARLAB laboratory standards DI and GSM1 follows the recommendations of IAEA (2010).


For quality control of the vapour data, time periods of instrument parameter ranges outside of specifications are flagged and, if applicable, deleted. Each data point is assigned a vapour quality flag according to the following criteria:


  • Calibration period, bit 1, value 1: ValveMask is 0, flagged but not deleted.
  • Low humidity, bit 2, value 2: Mixing ratio of H2O below 200 ppmv.
  • Spike in δ18O, bit 3, value 4: deviation of δ18O to previous value exceeds 400.0 permil.
  • Spike in d-excess, bit 4, value 8: deviation of d-excess to previous value exceeds 100.0 permil.
  • Low cavity temperature, bit 5, value 16: Cavity temperature below 79.9 deg C (typically during warmup). 1500s after a low cavity temperature event are removed to allow for instrument stabilisation.
  • Specified event, bit 6, value 32: Event specified in event list occurred.


Thereafter, calibrated data are averaged over specific time periods, using a running averaging window of 1s, 10s, 1min, 10min and 1h. Averaged values of the isotope parameters and key instrument parameters are then written to a netCDF file.



Input file format

The input file format consists of 3 sets of variable definitions as matlab structures. These are explained in detail below.


Run settings

The run settings cover a identifying name (project), time period (startdate, enddate), the instrument serial number (instrument), input path for the raw files (inpath), the output path directory (outpath). Furthermore, the date of report generation (reportDate), the name and contact email of the operator (person who performs calibration: operator, operatorContact) and the customer (owner of the dataset: customer, contact) are provided.


% run settings
settings.project='IGP2018_ship';
settings.startdate=datenum('2018-02-25');
settings.enddate=datenum('2018-03-22');
settings.instrument='HKDS2038';
settings.outpath='/Data/gfi/projects/farlab/Instruments/calibrated';
settings.inpath='/Data/gfi/scratch/metdata/FARLAB/%s/raw';
settings.reportDate=now;
settings.operator='Harald Sodemann';
settings.operatorContact='harald.sodemann@uib.no';
settings.customer='Harald Sodemann';
settings.contact='harald.sodemann@uib.no';


The calibration settings control how the calibration is performed. The calibration routine automatically searches for either SDM calibrations or manual injections, using the Picarro's ValveMode flag. The standards used for each calibration (standardNames) are identified automatically from the definitions for different laboratory standard calibrations, set in the file FARLAB_standard.m (calset). The latest FARLAB calibration is currently 3. For each day, a given number of nearest calibrations is selected and averaged during calibration (ncals). If calibrations need to be specified manually, the automatic identification needs to be deactivated (replace=-1). In that case, additional calibration information can be provided that is included at the beginning of section 4 of the calibration report.


% calibration settings
settings.calset=4; % which FARLAB calibration set to load (4: Iceland standards)
settings.standardNames={'GV';'NEEM'};
settings.ncals=4; % number of calibrations required for processing
settings.replace=-1; % replace exisiting calibrations file or use existing one, -1 for manual mode
% additional text for calibration method section
settings.calinfo='Calibration was performed using manual injections of standard liquids. The description below needs to be considered as of similar principle, but regarding manual injections'


The automatic detection of calibrations, and quality control of the these, is controlled by a set of calibration parameters. This is organised as a sub-structure of the structure settings. 6 quality flags are set.


  1. unknown standard, automatic standard name detection failed
  2. mean humidity outside the specified range (qmin,qmax)
  3. humidity standard deviation above threshold (qstd)
  4. isotope parameter standard deviation above threshold (O18std, H2std)
  5. humidity maximum above threshold (bubble detection, qmax)
  6. deleted fraction above threshold (delfrac)


A quality flag of either 1,2 or 5 being set will result in not using the calibration run for data calibration. The minimum duration for SDM calibrations is typically 600s, whereas manual injections have a minimum length of 180s (minlen).


% parameters to flag/quality code during calibration detection
settings.calparams.qmin=15000;
settings.calparams.qmax=25000;
settings.calparams.qstd=500;
settings.calparams.O18std=0.5;
settings.calparams.H2std=5.0;
settings.calparams.delfrac=60.0;
settings.calparams.minlen=180; % minimum length of a calibration


A different set of quality flags is defined for the data outside calibration periods. 5 quality flags are set during this processing step:


  1. Calibration period (from automatic calibration identification)
  2. Low humidity (qmin)
  3. Spike in O-18 during a measuring interval (O18spike)
  4. Spike in d-excess during a measuring interval (dspike)
  5. Low cavity temperature (ctlow). A time period is removed after the temperature low to remove the overshoot heating (ctcut).
  6. Event period (see below)


% parameters to flag/quality code during data processing
settings.qcparams.qmin=200;
settings.qcparams.O18spike=400;
settings.qcparams.dspike=100;
settings.qcparams.ctlow=79.5;
settings.qcparams.ctcut=750;


Calibrations (Optional section)

Alternatively to the automatic identification of calibration periods, manual calibrations can be specified. In this case, the parameter settings.replace must be set to -1, and settings.calibrations must be defined as exemplified below. It can be useful to manually specify calibrations to test the effect of calibration parameters, or if a bubbler or other external device is used in the calibration process.


In the example below, 2 calibration runs are specified (run), with two different standards each (standard), with specified time segments (starts,ends), and quality codes (quality). The mean and standard deviations of humidity (H2O, H2O_SD), of O-18 (d18O, d18O_SD), of dD (dD, dD_SD) and d-excess (d, d_SD) are specified for each segment. The minimum and maximum water concentration (minH2O, maxH2O), a minimum humidity (dryValue) and the deleted data fraction are also specified manually (delFrac). Even if there is no figure for the calibration periods (figstr is set to empty), the parameter must be provided.


% manually create calibrations
settings.calibrations=[];
settings.calibrations.starts=[datenum(2018,3,22,14,42,56),datenum(2018,3,22,15,3,3),datenum(2018,3,22,21,25,28),datenum(2018,3,22,21,45,34)];
settings.calibrations.ends=[datenum(2018,3,22,15,2,0),datenum(2018,3,22,15,23,6),datenum(2018,3,22,21,45,28),datenum(2018,3,22,22,5,34)];
settings.calibrations.run=[1 2 1 2];
settings.calibrations.standard=[1 1 2 2];
settings.calibrations.quality=[0 0 0 0];
settings.calibrations.H2O=[24800 24965 25510 25037];
settings.calibrations.H2O_SD=[157 151 164 165];
settings.calibrations.dD=[-266.301 -266.641 -45.354 -45.106];
settings.calibrations.dD_SD=[0.658 0.625 0.776 0.700];
settings.calibrations.d18O=[-36.202 -36.208 -10.928 -10.902];
settings.calibrations.d18O_SD=[0.124 0.103 0.134 0.140];
settings.calibrations.d=[23.315 23.279 41.07 42.110 ];
settings.calibrations.d_SD=[1 1 1 1];
settings.calibrations.minH2O=[24800 24965 25510 25037];
settings.calibrations.maxH2O=[24800 24965 25510 25037];
settings.calibrations.dryValue=[0 0 0 0];
settings.calibrations.delFrac=[0 0 0 0];
settings.calibrations.figstr=cell(4,1);


Event specification

Special event periods can be specified, that are either only indicated in the calibration plots (mode 0), or that lead to the deletion of the respective data period from the calibrated files (mode -1). Each event consists of a start date, end date, description string, and the mode identifier. Events are included with the parameter settings.event. The events are included as an own quality flag, and listed with numbers in the data report (Table 2) and respective overview figures (Fig. 1 and 2).


% create special events to note (mode 0) or to delete (mode -1)
event{1}={datenum(2018,2,25,0,0,0),datenum(2018,2,25,20,30,0),'Instrument installed',0};
event{2}={datenum(2018,2,26,14,0,0),datenum(2018,2,26,15,30,0),'Dry air',-1};
event{3}={datenum(2018,2,26,18,10,0),datenum(2018,2,26,20,45,0),'Dry air',-1};
event{4}={datenum(2018,2,27,11,20,0),datenum(2018,2,27,11,45,0),'Dry air',-1};
event{5}={datenum(2018,2,27,12,10,0),datenum(2018,2,27,13,10,0),'Dry air',-1};
event{6}={datenum(2018,2,28,19,10,0),datenum(2018,2,28,19,40,0),'Dry air',-1};
event{7}={datenum(2018,3,6,23,0,0),datenum(2018,3,6,23,15,0),'Dry air',-1};
event{8}={datenum(2018,3,9,16,0,0),datenum(2018,3,9,17,0,0),'Breathing test?',0};
event{9}={datenum(2018,3,22,12,10,0),datenum(2018,3,22,13,0,0),'Dry air',-1};
event{10}={datenum(2018,3,22,10,0,0),datenum(2018,3,22,11,0,0),'Breathing test',0};
event{11}={datenum(2018,3,22,23,0,0),datenum(2018,3,22,23,59,59),'Instrument deinstalled',-1};
settings.event=event;


Metadata for netCDF files

The metadata to be included in each daily netCDF data file includes essential parameters for ownership, contact, location, time period, instrumentation, reference, and further comments, as exemplified below.


% provide metadata as parameter
metadata.email='harald.sodemann@uib.no';
metadata.contact='Harald Sodemann';
metadata.version='1.0';
metadata.latitude='66.38 deg N';
metadata.longitude='5.33 deg W';
metadata.elevation='34.0 m a.s.l.';
metadata.location_name='R/V Alliance, Measurement container, boat deck';
metadata.created=datestr(now);
metadata.serial_number=settings.instrument;
metadata.instrument='Picarro L2140-i';
metadata.institution='Geophysical Institute, University of Bergen, Norway';
metadata.title='IGP campaign 2018, stable isotope measurements of water vapour on R/V Alliance';
metadata.comment='Picarro L2140-i installed in met container with heated inlet 3m above';
metadata.references='Renfrew et al., 2019, BAMS';


The final statement in the run file must be the call to the FaVaCal_report() routine.


% call the calibration routine with all parameters
FARLAB_vapour_dataset(settings,metadata);


Report and output directory

FaVaCal summarizes the calibration result in a comprehensive calibration report. The report is rendered from the figures and data produced during calibration identification and the data calibration. The sections and figures of the report are:


  1. Summary
  2. Calibrated data
    • Figure 1: Overview over measurement period (1 minute averages)
    • Figure 2: Daily overview figures showing 10 second averages (black) with standard deviation (grey)).
  3. Acknowledgement section for publications
  4. Method description for publications
  5. Instrument stability
    • Figure 3: Overview over instrument status during entire calibration period.
  6. Calibration overview
    • Table 1: Calibrations summary.
  7. Preprocessing and corrections
    • Table 2: Event log.
  8. Appendix: Figures for all calibrations
    • Figure 6: Details for each calibration.


The report is located as index.html in the FaVaCal output directory. The output directory is placed at the location specified in the run settings file. In addition, there is a folder for the calibrated netCDF data files, and the figures produced during the calibration run.


INTAROS2018-HKDS2038_20180731_20190823
    calibrations.mat - matlab data file with identified or specified calibrations
    img - folder with image files in png format
    index.html -  report in HTML format
    calibrated - folder with calibrated data files in netCDF format



Output netCDF file format

FaVaCal produces netCDF data files with the calibrated data. The metadata are included from the specifications in the run setup file, according to user input. In addition, information about the chosen calibrations and processing is included. Variables in the data files include the raw data (if requested), as well as various time resolutions. Only a few essential instrument parameters (Cavity temperature, Cavity pressure, Warm box temperature) are included from the raw data files. The quality flag is retained at the native time resolution.



Metadata

// global attributes:
		:email = "harald.sodemann@uib.no" ;
		:contact = "Harald Sodemann" ;
		:version = "1.0" ;
		:latitude = "60.38 deg N" ;
		:longitude = "5.33 deg E" ;
		:elevation = "34.0 m a.s.l." ;
		:location_name = "KV Svalbard" ;
		:created = "23-Aug-2019 13:49:34" ;
		:serial_number = "HKDS2038" ;
		:instrument = "Picarro L2140-i" ;
		:institution = "Geophysical Institute, University of Bergen, Norway" ;
		:title = "Stable isotope measurements of water vapour in Bergen" ;
		:comment = "Picarro L2140-i installed on board KV Svalbard during the INTAROS cruise" ;
		:references = "" ;
		:calibration\ standard\ 1 = "DI (d18O:  -7.33 permil, dD:  -49.95 permil)" ;
		:calibration\ 1\ for\ standard\ 1 = "31-Jul-2018 10:28:16 (d18O:  -7.38 permil, dD: -49.80 permil)" ;
		:calibration\ 2\ for\ standard\ 1 = "02-Aug-2018 06:32:46 (d18O:  -7.28 permil, dD: -50.10 permil)" ;
		:calibration\ standard\ 2 = "GSM1 (d18O: -32.43 permil, dD: -263.49 permil)" ;
		:calibration\ 1\ for\ standard\ 2 = "31-Jul-2018 09:47:50 (d18O: -32.45 permil, dD:-263.50 permil)" ;
		:calibration\ 2\ for\ standard\ 2 = "02-Aug-2018 05:52:22 (d18O: -32.41 permil, dD:-263.48 permil)" ;


Water isotope variables
netcdf FARLAB_HKDS2038_cal_V1_20180731 {
    dimensions:
	time_1s = 219764 ;
	time_10s = 8640 ;
	time_1min = 1440 ;
	time_10min = 144 ;
	time_1h = 24 ;
    variables:
	double time_1s(time_1s) ;
		time_1s:units = "days since 0001-01-01 00:00:00" ;
		time_1s:long_name = "time_1s" ;
	float delta_18O_1s(time_1s) ;
		delta_18O_1s:units = "permil" ;
		delta_18O_1s:_FillValue = -999.99f ;
		delta_18O_1s:long\ name = "Oxygen-18" ;
	float delta_D_1s(time_1s) ;
		delta_D_1s:units = "permil" ;
		delta_D_1s:missing_data = -999.99f ;
		delta_D_1s:long\ name = "Deuterium" ;
	float d_1s(time_1s) ;
		d_1s:units = "permil" ;
		d_1s:_FillValue = -999.99f ;
		d_1s:long\ name = "Deuterium excess" ;
	float q_1s(time_1s) ;
		q_1s:units = "g kg-1" ;
		q_1s:_FillValue = -999.99f ;
		q_1s:long\ name = "Specific humidity" ;
	double time_10s(time_10s) ;
		time_10s:units = "days since 0001-01-01 00:00:00" ;
		time_10s:long_name = "time_10s" ;
	float delta_18O_10s(time_10s) ;
		delta_18O_10s:units = "permil" ;
		delta_18O_10s:_FillValue = -999.99f ;
		delta_18O_10s:long\ name = "Oxygen-18" ;
	float delta_D_10s(time_10s) ;
		delta_D_10s:units = "permil" ;
		delta_D_10s:missing_data = -999.99f ;
		delta_D_10s:long\ name = "Deuterium" ;
	float d_10s(time_10s) ;
		d_10s:units = "permil" ;
		d_10s:_FillValue = -999.99f ;
		d_10s:long\ name = "Deuterium excess" ;
	float q_10s(time_10s) ;
		q_10s:units = "g kg-1" ;
		q_10s:_FillValue = -999.99f ;
		q_10s:long\ name = "Specific humidity" ;
	float delta_18O_10s_SD(time_10s) ;
		delta_18O_10s_SD:units = "permil" ;
		delta_18O_10s_SD:_FillValue = -999.99f ;
		delta_18O_10s_SD:long\ name = "standard deviation of Oxygen-18" ;
	float delta_D_10s_SD(time_10s) ;
		delta_D_10s_SD:units = "permil" ;
		delta_D_10s_SD:_FillValue = -999.99f ;
		delta_D_10s_SD:long\ name = "standard deviation of Deuterium" ;
	float d_10s_SD(time_10s) ;
		d_10s_SD:units = "permil" ;
		d_10s_SD:_FillValue = -999.99f ;
		d_10s_SD:long\ name = "standard deviation of Deuterium excess" ;
	float q_10s_SD(time_10s) ;
		q_10s_SD:units = "g kg-1" ;
		q_10s_SD:long\ name = "standard deviation of specific humidity" ;
		q_10s_SD:_FillValue = -999.99f ;
	double time_1min(time_1min) ;
		time_1min:units = "days since 0001-01-01 00:00:00" ;
		time_1min:long_name = "time_1min" ;
	float delta_18O_1min(time_1min) ;
		delta_18O_1min:units = "permil" ;
		delta_18O_1min:_FillValue = -999.99f ;
		delta_18O_1min:long\ name = "Oxygen-18" ;
	float delta_D_1min(time_1min) ;
		delta_D_1min:units = "permil" ;
		delta_D_1min:missing_data = -999.99f ;
		delta_D_1min:long\ name = "Deuterium" ;
	float d_1min(time_1min) ;
		d_1min:units = "permil" ;
		d_1min:_FillValue = -999.99f ;
		d_1min:long\ name = "Deuterium excess" ;
	float q_1min(time_1min) ;
		q_1min:units = "g kg-1" ;
		q_1min:_FillValue = -999.99f ;
		q_1min:long\ name = "Specific humidity" ;
	float delta_18O_1min_SD(time_1min) ;
		delta_18O_1min_SD:units = "permil" ;
		delta_18O_1min_SD:_FillValue = -999.99f ;
		delta_18O_1min_SD:long\ name = "standard deviation of Oxygen-18" ;
	float delta_D_1min_SD(time_1min) ;
		delta_D_1min_SD:units = "permil" ;
		delta_D_1min_SD:_FillValue = -999.99f ;
		delta_D_1min_SD:long\ name = "standard deviation of Deuterium" ;
	float d_1min_SD(time_1min) ;
		d_1min_SD:units = "permil" ;
		d_1min_SD:_FillValue = -999.99f ;
		d_1min_SD:long\ name = "standard deviation of Deuterium excess" ;
	float q_1min_SD(time_1min) ;
		q_1min_SD:units = "g kg-1" ;
		q_1min_SD:long\ name = "standard deviation of specific humidity" ;
		q_1min_SD:_FillValue = -999.99f ;
	double time_10min(time_10min) ;
		time_10min:units = "days since 0001-01-01 00:00:00" ;
		time_10min:long_name = "time_10min" ;
	float delta_18O_10min(time_10min) ;
		delta_18O_10min:units = "permil" ;
		delta_18O_10min:_FillValue = -999.99f ;
		delta_18O_10min:long\ name = "Oxygen-18" ;
	float delta_D_10min(time_10min) ;
		delta_D_10min:units = "permil" ;
		delta_D_10min:missing_data = -999.99f ;
		delta_D_10min:long\ name = "Deuterium" ;
	float d_10min(time_10min) ;
		d_10min:units = "permil" ;
		d_10min:_FillValue = -999.99f ;
		d_10min:long\ name = "Deuterium excess" ;
	float q_10min(time_10min) ;
		q_10min:units = "g kg-1" ;
		q_10min:_FillValue = -999.99f ;
		q_10min:long\ name = "Specific humidity" ;
	float delta_18O_10min_SD(time_10min) ;
		delta_18O_10min_SD:units = "permil" ;
		delta_18O_10min_SD:_FillValue = -999.99f ;
		delta_18O_10min_SD:long\ name = "standard deviation of Oxygen-18" ;
	float delta_D_10min_SD(time_10min) ;
		delta_D_10min_SD:units = "permil" ;
		delta_D_10min_SD:_FillValue = -999.99f ;
		delta_D_10min_SD:long\ name = "standard deviation of Deuterium" ;
	float d_10min_SD(time_10min) ;
		d_10min_SD:units = "permil" ;
		d_10min_SD:_FillValue = -999.99f ;
		d_10min_SD:long\ name = "standard deviation of Deuterium excess" ;
	float q_10min_SD(time_10min) ;
		q_10min_SD:units = "g kg-1" ;
		q_10min_SD:long\ name = "standard deviation of specific humidity" ;
		q_10min_SD:_FillValue = -999.99f ;
	double time_1h(time_1h) ;
		time_1h:units = "days since 0001-01-01 00:00:00" ;
		time_1h:long_name = "time_1h" ;
	float delta_18O_1h(time_1h) ;
		delta_18O_1h:units = "permil" ;
		delta_18O_1h:_FillValue = -999.99f ;
		delta_18O_1h:long\ name = "Oxygen-18" ;
	float delta_D_1h(time_1h) ;
		delta_D_1h:units = "permil" ;
		delta_D_1h:missing_data = -999.99f ;
		delta_D_1h:long\ name = "Deuterium" ;
	float d_1h(time_1h) ;
		d_1h:units = "permil" ;
		d_1h:_FillValue = -999.99f ;
		d_1h:long\ name = "Deuterium excess" ;
	float q_1h(time_1h) ;
		q_1h:units = "g kg-1" ;
		q_1h:_FillValue = -999.99f ;
		q_1h:long\ name = "Specific humidity" ;
	float delta_18O_1h_SD(time_1h) ;
		delta_18O_1h_SD:units = "permil" ;
		delta_18O_1h_SD:_FillValue = -999.99f ;
		delta_18O_1h_SD:long\ name = "standard deviation of Oxygen-18" ;
	float delta_D_1h_SD(time_1h) ;
		delta_D_1h_SD:units = "permil" ;
		delta_D_1h_SD:_FillValue = -999.99f ;
		delta_D_1h_SD:long\ name = "standard deviation of Deuterium" ;
	float d_1h_SD(time_1h) ;
		d_1h_SD:units = "permil" ;
		d_1h_SD:_FillValue = -999.99f ;
		d_1h_SD:long\ name = "standard deviation of Deuterium excess" ;
	float q_1h_SD(time_1h) ;
		q_1h_SD:units = "g kg-1" ;
		q_1h_SD:long\ name = "standard deviation of specific humidity" ;
		q_1h_SD:_FillValue = -999.99f ;


Instrument parameters
float Tc_1s(time_1s) ;
		Tc_1s:units = "deg C" ;
		Tc_1s:_FillValue = -999.99f ;
		Tc_1s:long\ name = "Cavity temperature" ;
	float pc_1s(time_1s) ;
		pc_1s:units = "Torr" ;
		pc_1s:_FillValue = -999.99f ;
		pc_1s:long\ name = "Cavity pressure" ;
	float Twb_1s(time_1s) ;
		Twb_1s:units = "deg C" ;
		Twb_1s:_FillValue = -999.99f ;
		Twb_1s:long\ name = "Warm box temperature" ;
	float flag_1s(time_1s) ;
		flag_1s:units = "1" ;
		flag_1s:_FillValue = -999.99f ;
		flag_1s:long\ name = "Quality flag" ;