IOEBs are deployed in one of the most difficult environments in the world to reach and exist in. These systems are not designed to be expendable, but the extreme cold temperatures and mechanical force of Arctic sea-ice make for greater risk of electrical or mechanical buoy failure than in more moderate climates. By transmitting a subset of the results via satellite we ensure the acquisition of some data, even in the worst circumstances. Ideally, upon recovery of an IOEB, the data transmitted can be augmented by higher resolution stored results. But since the 1992 IOEBs have not yet been recovered, and the 1994 IOEB was recovered without most of its mooring instrumentation, the archived data in this report consists entirely of transmitted data.
To automate a series of operations on the input, batch command files (indicated by filename extensions of .cmd) combine multiple programs and their input parameters in an ASCII text file. Here, batches are used to facilitate both processing and plotting the data. In batch files command line variables are indicated by a percent sign (%) followed by a number, while replaceable variables are indicated with two percent characters (%%) and a character. Some of the simple batch commands with self-evident functions that are used in the IADP scheme include: REM (remark statement), ECHO (to print to screen), CALL (to run another batch file from within a batch file), and FOR (to repetitively call commands with one different parameter). Other useful commands used during the development were: GOTO label (execute next command after label ), and :label (line label indicated by : at beginning).
The first batch command file in Appendix A, iadp.cmd takes as its only argument a single ARGOS datafile and sequentially calls the various IADP executable programs described below to completely process the file and plot the results. The second file in Appendix A, iadp2.cmd takes two files, one being the raw ADS file (compressed), the other the ARGOS distributed disk file (uncompressed), combines the extracted datasets into one with no duplicates, and subsequently performs the same processing and plotting as iadp.cmd. The plots generated by the full execution of iadp2.cmd are presented in Section III.
A sample command call to extract IOEB data from file input.raw for PTTs 1, 2, 3, and 4, with summary operations recorded in file ops.log would be:
The input file may be in either compressed or uncompressed ARGOS PRV formats. In our example, eight output files (besides the logfile) would be generated: 1lat.ext, 1tab.ext, 2lat.ext, 2tab.ext, 3lat.ext, 3tab.ext, 4lat.ext, and 4tab.ext. Each lat.ext file consists of 8 columns of location data: ARGOS program number, PTT number, date code, time code, ARGOS location quality, longitude (east positive), latitude (north positive), NOAA satellite letter, and PTT frequency in MHz. Each tab.ext file consists of a variable number of columns of sensor data, depending on the buoy sensor configuration and sequence number. However the first six columns always contain the data record information: ARGOS program number, PTT number, date code, time code, number of consecutive repetitions received by the ARGOS satellite with the same data, and the IOEB sequence number. The remaining columns (up to 59) contain the individual IOEB sensor variables as determined by the particular sequence number. Table 1 indicates the sensor variables assign each columns depending on the sequence number.
Table 1Sequence Number Column 1 2 3 4 5 6
7 MBV TR MBV TR MBV TR
8 MD FL MD FL MD FL
9 MTIM SC0T MTIM SC0T MTIM SC0T
10 MHE SC0C MHE SC0C MHE SC0C
11 MTX SC0S MTX SC0S MTX SC0S
12 MTY SCDO MTY SCDO MTY SCDO
13 MBAR SCFL MBAR SCFL MBAR SCFL
14 MWS SC1T MWS SC2T MWS S4N
15 MWD SC1C MWD SC2C MWD S4E
16 MAT SC1S MAT SC2S MAT S4T
17 MTAVG ST MTAVG WTSS MTAVG S4C
18 IBV (AnCT) MTSTD WTSE MTSTD S4S
19 IDA (AnBF) IECH (AnCT) PTTn (AnCT)
20 ITIM (AnQ1) IS1A (AnBF) CONn (AnBF)
21 IS1A (AnQ2) IS1B (AnQ1) IS1A (AnQ1)
22 IS1B (AnQ3) IS2A (AnQ2) IS1B (AnQ2)
23 IS2A (AnQ4) IS2B (AnQ3) IS2A (AnQ3)
24 IS2B (AnQ5) IS3A (AnQ4) IS2B (AnQ4)
25 IS3A (AnX4) IS3B (AnQ5) IS3A (AnQ5)
26 IS3B (AnX3) IT01 (AnX4) IS3B (AnX4)
27 IT01 (AnX2) IT02 (AnX3) IT01 (AnX3)
28 IT02 (AnX1) IT03 (AnX2) IT02 (AnX2)
29 IT03 (AnT) IT04 (AnX1) IT03 (AnX1)
30 IT04 (AnEN) IT05 (AnT) IT04 (AnT)
31 IT05 (AnTV) IT06 (AnEN) IT05 (AnEN)
32 IT06 (AnHV) IT07 (AnTV) IT06 (AnTV)
33 IT07 (AnE1) IT08 (AnHV) IT07 (AnHV)
34 IT08 (AnE2) IT09 (AnE1) IT08 (AnE1)
35 IT09 (AnE3) IT10 (AnE2) IT09 (AnE2)
36 IT10 (AnE4) IT11 (AnE3) IT10 (AnE3)
37 IT11 (AnE5) IT12 (AnE4) IT11 (AnE4)
38 IT12 (AnN1) IT13 (AnE5) IT12 (AnE5)
39 IT13 (AnN2) IT14 (AnN1) IT13 (AnN1)
40 IT14 (AnN3) IT15 (AnN2) IT14 (AnN2)
41 IT15 (AnN4) IT16 (AnN3) IT15 (AnN3)
42 IT16 (AnN5) IT17 (AnN4) IT16 (AnN4)
43 IT17 (AnV1) IT18 (AnN5) IT17 (AnN5)
44 IT18 (AnV2) IT19 (AnV1) IT18 (AnV1)
45 IT19 (AnV3) IT20 (AnV2) IT19 (AnV2)
46 IT20 (AnV4) IT21 (AnV3) IT20 (AnV3)
47 IT21 (AnV5) IT22 (AnV4) IT21 (AnV4)
48 IT22 IT23 (AnV5) IT22 (AnV5)
49 IT23 IT24 IT23
50 IT24 IT25 IT24
51 IT25 IT26 IT25
52 IT26 IT27 IT26
53 IT27 IT28 IT27
54 IT28 IT29 IT28
55 IT29 IT30 IT29
56 IT30 IT31 IT30
57 IT31 IT32 IT31
58 IT32 IT33 IT32
59 IT33 IT33
Extrioeb loops through the input files by reading in a record as a string, and then performs a series of parses and checks to load the information into a record structure. The location data is treated separately from the sensor data. Since data from and ADCP is acquired from only one of the IOEB buoys, the ADCP parse functions are run and ADCP variables output, only if a match is made with the PTT number. Otherwise records are scanned according to data format in Table 1. The output format of each variable is dependent on the resolution of the particular sensor. Records with sequence numbers of 0 or 7 are eliminated, as are records with zeros loaded in every raw hex value. If an input error is encountered anywhere, this information is available for logging, and the program continues back to the beginning of the loop.
Depending on the PTT number, extrioeb calls functions in convjarg.c to scale each data variable according to buoy specific information and calibrations. Convjarg.c in turn calls functions in prosens.c which are variable specific routines to process each particular sensor value. The program is intended to be expandable to include new PTTs and sensors from future IOEB buoys.
which screens the locations using a Gaussian filter for first differences exceeding a given number of times the standard deviation (std).
which interpolates the locations to an 1 hour interval.
which combines the interpolated locations from separate PTTs into one IOEB buoy drift track.
which smoothes the drift using a 6-hour triangular filter, computes the Earth-corrected speed vectors of the drift and the geomagnetic declination, and outputs the results to separate files for each variable, and for each year, along with several files for plotting purposes.
Each program is capable of outputting the operation results to a monitor or disk file, in the same manner as described earlier. The first two programs output PTT location files with the same column and number format as are input: ARGOS program number, PTT number, date code, time code, ARGOS location quality, longitude (east positive), latitude (north positive), NOAA satellite letter, and PTT frequency in MHz. The combined drift track is similar to the above, with the omission of the last two columns, which have no meaning when combined. The files output after smoothing are with few exceptions two-column timeseries which includes the decimal day of the year (with fractional time) in the first column, and a value in the second. Day of the year extends from 1 to < 366 on non-leap years, and to < 367 on leap years. The calculated speeds include the Earth s curvature, while the geomagnetic declination is based on the program GEOMAG.FOR from the National Geophysical Data Center (NGDC). Based on the IGRF90 model, this program outputs seven magnetic field parameters, including the magnetic variation with an stated accuracy of ~1/2 degree. A positive angle means that the horizontal component of the geomagnetic field is east (clockwise rotation) of true north. Files with speed vectors or text data for plotting using GMT generally have more than two columns, being generated according to certain generic plotting designs.
which prefilters and timecodes the sensor data without regard to the actual sensor meanings.
which combines the prefiltered data from separate PTTs into one IOEB datafile, while checking for NULL data values and other errors.
which outputs separate files for each sensor variable, and for each year.
Each program is capable of outputting the operation results to a monitor or disk file, in the same manner as described earlier. The output format of the prefiltered data is the same as input: ARGOS program number, PTT number, date code, time code, number of consecutive repetitions received by the ARGOS satellite with the same data, the IOEB sequence number, and up to 59 columns of data. Each record of data after the sequence number is treated as a single string for comparison purpose, and like strings are combined if they are merely repetitions within a certain timelimit. In the end, only one record is saved for each series of scans in a new data sequence, according to the accumulated number of repetitions. If only 1 accumulated repetition exists for a particular data sequence, then that data usually includes broadcast noise and is not included. Each data scan has its acquisition time determined from a simultaneous determination of interpolated controller sequence shifting times.
As prefioeb inputs the sensor data, it tracks all moments when the IOEB MCU controller switches to next sequence within a two minute timeperiod which an ARGOS satellite was actively monitoring the buoy. This rather complicated scheme is necessary, because not all instruments broadcast a timecode, and the MCU controllers do not switch sequences at an exact hourly interval, but varies slightly. The accuracy of the acquisition time coding becomes extremely important when removing the drift of the buoy from observed speeds detected by some sensors. The results show that the method of time coding applied by prefioeb appears to work very well.
Combioeb takes data from both PTTs on a single buoy, flags the NULL values and outputs the best dataset to a single file. The first five columns output contain the same format as the prefiltered input. However, the sensor data output is standardized so that an IOEB without an ADCP will have 81 additional columns of sensor data, while one with will have 141 additional columns, where column represents a separate data variable. When combioeb reads in a record from a PTT data file, it parses each data item separately and loads it into a sensor dependent position in the floating-point data array. Array variable 0 is written to column 6 of the output file when processed, and each next variable incrementally thereafter. Table 2 indicates the sensor variables assigned to each array number:
Table 2Each data group is separately checked for NULL values and all zeros by specific functions within combioeb. All IADP programs assign a value of -9999.999 to NODATA for NULL points.Array Nos. Variables
0-12 MBV, MD, MTIM, MHE, MTX, MTY, MBAR, MWS, MWD, MAT, MTAV, MTMX, MTST
13-16 PTT0,CON0,PTT1,CON1
17-20 IBV,IDAY,IHR,IECH
21-26 IS1A,IS1B,IS2A,IS2B,IS3A,IS3B
27-59 IT01-IT33
60-61 TR,FL
62-66 SC0T,SC0C,SC0S,SCDO,SCFL
67-69 SC1T,SC1C,SC1S
70-72 SC2T,SC2C,SC2S
73-77 S4N,S4E,S4T,S4C,S4S
78-80 ST,WTSS,WTSE
if ADCP:
81-95 A0CT,A0BF,A0Q1-5,A0X4-1,A0T,A0EN,A0TV,A0HV
96-110 A0E1-A0E5, A0N1-A0N5, A0V1-A0V5
111-125 A1CT,A1BF,A1Q1-5,A1X4-1,A1T,A1EN,A1TV,A1HV
126-140 A1E1-A1E5, A1N1-A1N5, A1V1-A1V5
Outioeb simply loops through the combined buoy datafile once for each sensor variable and outputs a separate two column for each variable for each year, which includes the decimal day of the year (with fractional time) in the first column, and a value in the second. NULL values are not output. The include file outfile.h contains the names array used to build the output filenames from the variable number. This program is the slowest program in the IADP suite of programs, especially for large input files.
There are three steps in the correction procedure that needs to be made to the raw transmitted IOEB wind monitor data to convert it to true wind? velocity referenced in an x-y plane. The first step consists of all the mechanical and electronic adjustments that are performed to reference the wind direction to geomagnetic north. The second step applies the geomagnetic correction to provide a result referenced to true (or Earth s) north. Finally, to provide output that can be directly compared to simultaneous ice drift and ocean velocity data (also provided by the same IOEB), the third step changes from an Earth referenced to an x-y coordinate system to indicate the direction and compute the individual component vectors. To simplify the calculations, in all circumstances the direction that the wind travels will be considered in the oceanographic sense, rather than in the more common meteorological sense. This means that a wind current of 180 will be considered to head toward the south (oceanographic sense), instead of coming from the south (meteorological sense). This is generally how the directions of ice drift and ocean currents are portrayed, thus facilitating direct comparisons. In addition, all our calculations assume the units of degrees, instead of radians.
Electronically, the IOEB raw wind direction measurement represents the output from a variable resistor controlled by the mechanical wind vane. Conditioning electronics supplied by the sensor s manufacturer output a very precise voltage between 0 and 5 V, proportional to the direction. Ten times during the first ten minutes of every hour, the analog signal output from the wind monitor is digitized and temporarily stored. The ensemble is averaged and the result output by the meteorological data logger module to each microcontroller unit. Via ARGOS transmitters, the raw wind direction is transmitted as an 8-bit number, which represents values between 0 and 360 , resolving each 1.4 . It is this raw wind direction that is received in our laboratory and used to determine the real wind direction.
As an IOEB drifts, the surface apex is free to rotate and consequently, the mast securing the wind monitor also rotates. A magnetic compass located in the apex measures this rotation with respect to geomagnetic north. Consequently, to derive geomagnetically referenced wind direction, the magnetic compass measurement must be added to the raw IOEB wind direction. Furthermore, for mechanical mounting purposes, the magnetic compass and wind monitor are offset by 40 , requiring the subtraction of this value from the above. Using wd for raw wind direction, and wdc for corrected wind direction, we can write the first step of the wind direction correction in equation form as:
Changing coordinate systems in effect changes the intercept and direction of rotation of the wind vectors in vector space. Whereas the geophysical system is oriented with 0 upward (or north) and increase clockwise, mathematical systems generally orient 0 to the right (or east) and increase counter- clockwise. In sum, subtracting the direction in the geophysical sense from 90 , converts to the angle to the mathematical sense. This makes the resultant wind correction equation:
wy = ws * sin(wdc)
Wy = ws * sin(wdc) + Uy
Wd = arctan(Wy/Wx)
Whereas the determination of the magnitude is a straightforward calculation, the correction for the barometer of the 1992 BGY is not. The raw data stored in the Meteorological Module of this particular IOEB is influenced by the tilt y data. Consequently, when the tilt y sensor is slightly positive, the barometer is biased +32. When tilt y is slightly negative, it has no effect. Otherwise, its effect cannot be reasonably determined. Because tilt y is not being broadcast due to the same software error, determining exactly when and how the data is being influenced is impossible. In order to retain some of the information from this barometer, however, we matched the transmitted to barometer charts from the same time period to determine which correction factor to apply. Furthermore, the barometer data is omitted whenever the tilt x sensor indicates any tilt, because of the increased uncertainty.
The batch files b92_plot.cmd and t94_plot.cmd are used to plot all the data for the 1992 BGY and 1994 TPD IOEB during the years 1992 through 1994. Some of the command files which are called by these particular batch files are generic plotting routines which plot subsets of the IOEB sensor data, while others are specific to only one buoy. With one exception, all the data presented was screened with a 4- sigma cutoff. The 92 BGY ice data was screened with a 0.5-sigma cutoff, but still retains alot of noise. The noise in this data is attributed to a hardware error with certain sensors on the 1992 BGY IOEB network which created glitches during the first two months of operation. The correction of this problem is evident on the 1994 TPD IOEB, where similar ice data was screened with a 4-sigma cutoff, without any apparent glitches.
The drift tracks are plotted on a polar sterographic projection map, with superimposed coastlines, bathymetry, and text. Both the coastline (World Data Bank II) and bathymetry (ETOPO-5) data are from the NGDC. The remainder of the plots are straightforward x-y representations of the timeseries data. The x (time) scaling is uniform, to allow visual comparison between different data. In some cases the y scales are non-uniform or nonlinear, in order to highlight specific features of the data.
iadp2.cmd Performs two-file data processing on IOEB data.
sctrioeb.exe = sctrioeb.c
intrioeb.exe = intrioeb.c
cotrioeb.exe = cotrioeb.c
smtrioeb.exe = smtrioeb.c, gm90fun.c
prefioeb.exe = prefioeb.h, prefioeb.c, prefun.c
combioeb.exe = combioeb.h, combioeb.c, combfun.c
outioeb.exe = outfile.h, outioeb.c
adjioeb.exe = adjioeb.h, adjioeb.c, adjfun.c
scrn_b92.cmd, scrn_t94.cmd = scrndata.c, scrnpdat.c, calcdens.c, calcsd.c, calcuv.c, calcvec.c, match1ts.c, match2ts.c, matchxts.c
iadpextb.log Extraction of raw data from ADS network files.
iadp_b92.log IADP processing of 1992 Beaufort Gyre IOEB data.
scrn_b92.log IADP batch screening of 1992 Beaufort Gyre data.
iadp_t94.log IADP processing of 1994 Transpolar Drift IOEB data.
scrn_t94.log IADP batch screening of 1994 Transpolar Drift data.
t94_plot.cmd Plots all processed raw data from 1994 Transpolar Drift IOEB.
b92_plot.cmd = b92_drif.cmd, b92_l92.cmd, b92_l93.cmd, b92_l94.cmd, iadp_spd.cmd, b92_spdx.cmd, b92_met.cmd, b92_metx.cmd, iadp_wnd.cmd, iadp_it.cmd, iadp_is.cmd, iadp_ctd.cmd, b92_oce.cmd, b92_acp0.cmd, b92_acp1.cmd, b92_acpx.cmd
t94_plot.cmd = t94_drif.cmd, t94_lat.cmd, iadp_spd.cmd, t94_met.cmd, iadp_wnd.cmd, iadp_it.cmd, iadp_is.cmd, iadp_ctd.cmd, t94_oce.cmd