Acoustic Doppler Current Profiling
during the Sea of Japan/East Sea SeaSoar Cruise JES2,
May, June 1999

 
Frank Bahr,
Woods Hole Oceanographic Institution
Woods Hole, MA 02543
fbahr@whoi.edu
http://matisse.whoi.edu
 

June 29, 1999


 

Abstract

This report describes the processing of data from the shipboard Acoustic Doppler Current Profiler (ADCP) that were collected during the JES2 SeaSoar cruise, a component of the ONR Sea of Japan/East Sea experiment. The chief scientist was Dr. Craig Lee from the University of Washington, Applied Physics Laboratory.
 
 

Table of Contents
 

Abstract

Table of Contents

1 Introduction

2 The ADCP System
2.1 ADCP hardware and transducer installation
2.2 Navigation
2.3 The Data Acquisition System
2.4 The Data Processing Software (CODAS)

3 Cruise Narrative
3.1 Highlights
3.2 General Cruise Log
3.3 ADCP Data Collection

4 Data Processing
4.1 Scan and Load
4.2 Editing
4.3 Temperature and Salinity Correction
4.4 Ashtech Heading Correction
4.4.1 Background
4.4.2 Processing
4.5 Calibration
4.5.1 Bottom Tracking
4.5.2 Water Tracking
4.5.3 Final Calibration and Rotation
4.6 Navigation
4.6.1 Background
4.6.2 JES2 Navigation
4.7 Profile Quality
4.7.1 Vertical Shear of u, v
4.7.2 Vertical and Error Velocity
4.7.3 Amplitude (AGC) and Spectral Width
4.7.4 Percent Good, and 3-Beam Solution
4.7.5 Summary

5. Velocity Maps

6. Profiles in Matlab Format

7. Acknowledgments

8. References

Appendix A: ADCP Configuration files

Appendix B: The UH ADCP data processing system
B.1 Hardware
B.2 User interface
B.3 Database
B.4 Editing
B.5 Calibration
B.6 Navigation
B.7 Gridding and plotting
 
 

1     Introduction

The JES2 cruise was part of the Office of Naval Research's Sea of Japan / East Sea experiment. The sensor suite included the WHOI SeaSoar, outfitted with the standard SeaBird hydrographic sensors, a fast oxygen sensor built by Dr. Chris Langdon, a fluorometer and transmissometer, a PAR sensor, as well as the new optical sensors AC100 and  Hydroscat 6. In addition, stations were occupied for standard hydrographic and optical measurements. Weather balloons were launched roughly daily, while shipboard meteorological data were collected by the onboard IMET system. The shipboard ADCP was run throughout the cruise.

The purpose of this report is to describe the processing of the shipboard ADCP data. In the following, the instrument system and the data processing software are introduced in chapter 2. Chapter 3 provides a brief cruise log. Specifics on data processing issues such as calibration etc. are given in chapter 4. Some initial figures from the SeaSoar radiators are shown in chapter 5, though scientific description of the measurements will be reserved for other publications.

    return to the table of contents
 

The ADCP System

The ADCP system on the R/V Roger Revelle, operated by the Scripps Institution of Oceanography in San Diego, can be divided into several components: the ADCP transducer and its installation, the data acquisition system computers and software, and the navigation instruments.
 

2.1     ADCP hardware and transducer installation

The ADCP transducer is a standard (narrow band) 150 kHz vessel-mounted transducer from RD Instruments. It is located behind an acoustic window, and is immersed in fresh water (Teri Chereskin, pers. comm.).  The transducer is not rotated by 45 degrees, so that only beam 3 and 4 "see" the ship's speed.
 

2.2     Navigation

Several instruments provide additional data to the ADCP that are incorporated either in real-time or during post-processing. These are:


2.3     The Data Acquisition System

The primary data acquisition is performed by a PC running RDI's Data Acquisition Software (DAS) version 2.48. This software produces the familiar pingdata files ("pingdata.###"), usually one file per day, which were recorded on hard disk. The PC disk was cross-mounted as a unix disk, and the data were available in real-time via the ship's network.

For this cruise, DAS configuration parameters included 4m blanking, 8m vertical bins and a 8m pulse. Profiles were usually collected at a rate of about once per second and vector- averaged in 3-minute ensembles. To reduce spurious shear from simultaneous variations in depth range and ship's speed during an ensemble, the vector-averaging was done in the usual way as follows (using an option in the DAS). For each velocity profile, the mean over a reference layer (here: bins 4 through 12) was calculated and subtracted from the profile. The reference layer and the reduced profile were then averaged separately over the ensemble, and recombined at the end of the ensemble. The DAS option for screening based on error velocity was used with a threshold of 250cm/s. Routine data collection included horizontal and vertical velocity components, backscatter amplitude (as measured by the automatic gain control -AGC- level), percent good pings (at each depth bin, the percentage of pings within an ensemble for which data form all four beams were judged acceptable), error velocity, spectral width, and percent 3-beam solution (at each depth, the percentage of acceptable pings that were calculated from three instead of four sound beams).

The following direct commands were set:


With the present RDI DAS, integrating navigation into the ADCP system requires a "user exit" program that effectively becomes part of the DAS. The Revelle used Eric Firing's program, version "ue4.exe". Its main functions were (Firing, 1998):


Once per second, the Ashtech GPS heading unit sends out an ATT message, which contains heading, pitch, roll, and quality parameters mrms and brms. The mrms "is defined as the average double differenced carrier phase residual" (Ashtech manual). This value is zero if less than 5 satellites are used in the attitude computation. Typical values are around 2-3mm. The brms error is defined as "the rms error between the baseline magnitudes determined in the initial survey (i.e., the body reference frame vectors between antennas 1-2, 1-3, and 1-4) and the computed baseline magnitude obtained at the current time. Typical values are 1-3 cm for PDOP<4." The NMEA GGA sentence includes time (no date), longitude, latitude, HDOP, number of satellites, and antenna height in meters.

Just prior to our cruise, the ship's computer technician had installed Dr. Charles Flagg's AUTOADCP software. It is my understanding that the software was originally developed for autonomous ADCP data collection on ship's of opportunity, e.g., on the merchant vessel Oleander. It consists of two parts: a watchdog timer, and a configuration update based on the ship's geographic position. The task of the watchdog timer is to reboot the PC in the event that it gets hung up. The configuration update routines compare the ship's position relative to geographic areas defined as polygons in the ASCII file POSITIONS.DAT. Each polygon is associated with one ADCP configuration file. If the ship enters into a new polygon, the respective configuration file is copied over the DAS file START.CNF, and the ADCP acquisition PC is rebooted. This feature has been used to allow, for example, for different deep and shallow water values for configuration parameters such as bin and pulse length or to toggle bottom tracking on and off. Since we used one configuration throughout the cruise (and were able to toggle bottom tracking manually), I disabled the configuration update by substituting a new POSITION.DAT file with just one large polygon that encompassed the whole cruise. Rather than modifying Charlie's setup, I implemented this change by creating a new directory as a complete copy of the original one, changed the POSITION.DAT in that new directory, and modified the AUTOEXEC.BAT file to cd to the new directory on startup instead of to the original one.
 

2.4     The Data Processing Software (CODAS)

The ADCP processing software used here was developed by a group from the University of Hawaii led by Eric Firing. CODAS (short for Common Oceanographic Data Access System) consists of a database system for ADCP and other oceanographic data, and a set of programs for ADCP data processing. The programs are written in C and matlab. To obtain the source code and executables for several platforms including PC's, SUN and SGI work stations, contact efiring@soest.hawaii.edu.

The software package is outlined in below, following closely chapter 8.1 of Firing, 1991. A more detailed description of the software is given in Appendix B of that document, included here as an appendix as well. The complete document is available as postscript file via anonymous ftp (ftp://noio.soest.hawaii.edu/pub/codas3/opmeth.ps). An extensive 200-page manual is available as postscript file from the same account (ftp://noio.soest.hawaii.edu/pub/codas3/manual.ps). The software package includes a demo database and example parameter files that were used for the various processing steps; a corresponding step by step process log is found in the ascii file codas3/adcp/demo/process.doc. In addition, the following text files were included in my April 1998 copy of CODAS:
    codas3/notes.doc
    codas3/vecplot/vector.doc
    codas3/adcp/demo/ADCPdemo.doc
    codas3/adcp/adcpsect/note.doc
    codas3/adcp/edit/adcpedit.doc
    codas3/adcp/cal/adcp_cal.doc
    codas3/adcp/scanload/scanload.doc
    codas3/adcp/nav/adcp_nav.doc
    codas3/adcp/doc/dpmask.doc
    codas3/doc/codas3.doc
    codas3/doc/update.doc
    codas3/ctd/demo/ctd_demo.doc
    codas3/note_sun.doc

The specific processing steps for the JES2 data set are described in chapter 4

The basic data processing steps consist of:

    return to the table of contents
 

3     Cruise Narrative

3.1     Highlights
 

Chief Scientist: Craig Lee
Phone: 508-289-2599
e-mail: craig@sahale.apl.washington.edu
Ship: R/V Roger Revelle
Ports of Call: Pusan, South Korea to Pusan, South Korea
Dates: May 19 to June 2,  1999
 
 

3.2     General Cruise Log

A detailed cruise log is currently being prepared by Dr. Lee.
 

3.3 ADCP Data Collection

The general ADCP data collection worked without major problems.

Early into the cruise, captain Desjardin made us aware of some lingering concerns by Scripps people regarding possible interference of the ship's 10cm radar with the Ashtech GPS heading data collection. The Ashtech array is located close to the 10cm radar antenna. Although no such interference was obvious from a few checks of  the ADCP screen where the userexit program lists the number of good GPS headings accepted during the last ensemble, we encouraged the bridge to use the 3cm radar whenever possible. A closer inspection of the GPS record fell victim to the busy early stages of the cruise. As the cruise progressed we were made aware that the bridge relied more and more on the 10cm radar, which is typically only used in heavy traffic, because of some problems with the 3cm instrument. About six days into the cruise we obtained a log from the bridge that listed the usage times of the two respective radars. We then compared the complete ue4-collected Ashtech record up to that time for any signs of interference.  Neither the number of good Ashtech headings per ADCP ensemble, nor the heading standard deviation within an ADCP ensemble showed a dependence upon radar usage.

    return to the table of contents
 

4     Data Processing

In this chapter, the processing steps for this dataset as well as cruise-specific issues and problems are described. Although the underlying concepts are briefly described and the relevant CODAS program names are listed, a reader looking for a guide to CODAS ADCP processing would be better served with the documents referred to under chapter 2.4.
 

4.1     Scan and Load

As the first step, the raw data files were scanned for readability, gaps, and clock drift (program scanping). There were 29 pingdata files, pingdata.000 through pingdata.028.

Typical values for beam statistics, which are compiled by scanping for each pingdata file, were as follows:

Statistics for Beam Statistics (scaled by 1.000000)
        beam    N       MEAN    STD DEV        SEM    minimum    maximum
         1    250     94.388      6.405      0.405     72.000     99.000
         2    250     92.088      5.971      0.378     72.000     99.000
         3    250     90.964      6.398      0.405     71.000     99.000
         4    250     89.860      5.802      0.367     71.000     97.000
 END OF FILE: ../ping/pingdata.022

During the preliminary processing onboard the ship, an ADCP gap was noticed at the start of the cruise (decimal day 138.3044907,  1999/05/19 07:18:27.99 to decimal day 138.4349421, 1999/05/19 10:26:18.99). This was idenfied in post-processing as a gap in GPS coverage, not in the ADCP data collection. This gap started with the second ADCP ensemble of pingdata.000. It coincides exactly with a gap in Ashtech heading data, which comes from a different GPS system and via a different serial port. It is unclear what caused the gap.

A short gap in the ADCP data of 17 minutes occured on 99/05/29  03:17:05, decimal day 148.136863 (ending time). Again, it is unclear what caused this gap.

The PC clock is used for time-stamping the ADCP profiles. It can be checked by comparing profile times with GPS fix times, which is routinely done as part of the scanning. The userexit program ue4 can be instructed to reset the PC clock during data collection if the difference between PC and GPS time becomes larger than a value set in ue4.cnf. As a sefeguard against bad GPS times, a second value is set in ue4.cnf as an upper limit for the change of PC-GPS times over the course of an ensemble. The routine values of 2 seconds for these two parameters were used during this cruise, and the scanping output confirmed that the PC clock was within 2 seconds of GPS time.

The data were then loaded into the newly created jes2 database without time correction (program loadping). After loading, the CODAS data processing mask looked as follows:

data_mask ----------> 0000 0000  0000 0000  0000 0011  1000 0001
data_proc_mask -----> 0000 0000  0000 0000  0000 0000  0000 0000
 
 

4.2 Editing

The general concepts behind the profile editing steps are described in Appendix B, chapter 4 (Firing, 1991). In summary, there are three steps. First, threshold values for a set of database variables are calculated from general statistics (program profstat). Next, the complete database is examined in matlab using stagger plots of a suite of variables that may include the three velocity components, amplitude (AGC), percent good, error velocity, and position. (I found a simple plot of ship's speed through the water, given roughly by the reference layer velocity stored in the variables U_MEAN and V_MEAN, helpful to identify station times, SeaSoar deployment and recoveries etc.) The profiles or bins that exceeded the specified thresholds are automatically marked, with differently colored symbols indicating which criterion was exceeded. Based on these plots, the decision is made of what to edit. Possibilities include specifying the first or last bin for which the velocity data are considered valid (e.g., in cases of inadequate surface blanking or bottom interference, respectively), marking individual vertical bins as "bad" by setting the corresponding bits in a quality array (e.g., when a few bins show glitches due to CTD wire interference), or in extreme cases marking a complete profile as "bad" (e.g., for very shallow bottoms in port). The final product of the matlab examination are two ascii lists that identify the "bad" profiles or bin ranges, respectively. They are used as input to a set of programs that actually implement the editing changes in the database.

Around 1994 some technical changes were made to the editing programs, modifying the steps described in some of the older example databases. I often refer to an email from Eric Firing that describe the modifications.
 

4.2.1    Thresholds

The specific threshold variables and their values used for this dataset are listed in table 1. Standard values were used for the first two variables. Estimates for the others were calculated as follows (using CODAS routine threshold.m):

The calculated threshold values may be found to flag too many good profiles and may need to be raised (table 1, third column). In addition, the "new" editing routine modifications mentioned above eliminate all bins with "percent good" below a set threshold. By default, this threshold is set to 30 percent, which was also used here. One should be careful changing this value since many CODAS database access routines, e.g., those used for navigation calculations, also use a default minimum threshold of 30 percent good.
 
Criterion Threshold calculated Threshold used
Amplitude (AGC) N/A 10 counts
error velocity N/A 100 mm/s
2. difference of u,v 116 same
2. difference of w 61 100
w variance  2190 mm^2/s^2 same
Table 1: Editing criteria. The central column shows the calculated thresholds, the right column shows the thresholds that were eventually used.


4.2.2    Specific Editing Issues

In general, the velocity profiles were very clean.

The most distinct editing feature was the high number of scattering layers found. These are layers that generate a subsurface maximum in backscatter amplitude, and thus have a signature similar to that of the bottom. Those that are caused by passive particles or at least slow swimmers such as plancton do not contaminate the horizontal current measurements. The decision of that is a harmless scattering layer and what is the bottom needs to be made by the data processor. A frequent clue is that a true bottom signal should get stronger as the bottom rises, whereas biological scattering layers frequently just fade away. Furthermore, fake velocities from depth bins below the true ocean depth are usually more random than actual measurements with velocity features that develop over consecutive profiles. For this cruise, the scattering layers persisted over long times, and were comparatively strong. Most of the time there was no obvious correlation between scattering layers and velocity features. At times, however, a particular velocity gradient region coincided with a scattering layer. In contrast to bottom interference, however, these velocity features were consistent over several or many profiles.

Identification of the relatively few occasions of a real bottom were on several occasions made more difficult by the partial (but not complete!) elimination the bottom interference by the percent good criterion. The picture was then further complicated by a scattering layer above the real bottom. In those situations it may be easier to temporarily turn off the percent good editing to correctly mark the bottom, as it was done for the example plot of backscatter amplitude (AGC) (set PGOOD_THRESHOLD to 0 and reload profiles with getp). In this plot, the maximum in AGC by which the editing routines identify the bottom is marked with a blue star. The actual bottom is around bin 35, while one or more scattering layers above it are seen above it. [Profiles marked with purple stars were flagged by the w-variance criterion, which flags the complete profile rather than individual bins.]

The only real data quality issue were about five cases of curious sequences of very large error velocity e and vertical velocity w in conjunction with somewhat odd features in zonal (u) and meridional (v) velocity. Typically this pattern is indicative of CTD interference when the profiling CTD package drifts into one of the ADCP beams.  In this first example (profile times approx. 5/24 11:00), the ship was initially on station, but w  di not  increase (and a corresponding signal in u and v developed) not until the ship picked up speed, and thus CTD should have be on deck.

Second, smaller group was found late in the cruise (around 05/31 11:00). In a range of  mid-level bins, vertical velocities were of the order of 30 cm/s over a series of profiles. Zonal (u) and error (e) velocity showed less of a  corresponding signal, while a small subset of profiles had extrema in meridional velocity (v) in this area. Again, this set occurred close to a ship speed change, although in this case speed increased from four to eight knots after a SeaSoar deployment. The first profiles with large w occured just prior to the speed change.

A third case was flagged on the second-to-last Seasoar recovery (6/1, 16:00) and its associated speed changes.   Large w values (order 30 cm/s)  occured during a stepwise reduction in speed to below four knots, and continued just beyond the following speed increase to 12 knots. Corresponding error velocity profiles showed some corresponding signal (which triggered the automatic editing of large e, indicated by the yellow circles), while both horizontal velocity components appear little effected [Note: these profiles are shown in their unedited form; the deep velocity maximum is caused by bottom interference and was subsequently taken out].

One or two (depending on the counting)  much smaller, less distinct cases were found in the remainder of the cruise.

I exchanged several emails including figures with Teri Chereskin from Scripps on the subject. She had previously noted a problem with transducer ringing. According to her, steps had been taken to correct the problem, but she was concerned that some effect remained. She wrote:

We used the Revelle narrowband in January, and it had an acoustic ringing problem.  Adjustments were made during the February shipyard period to try to eliminate the ringing.

Acoustic ringing is most apparent during ship accelerations, such as when you leave station - on a CTD cruise I'd expect to see it as you got underway from every station. It might be much more subtle in a SeaSoar cruise. When ringing is really bad, you see it in all the data, and it gets worse as you increase the speed, at full steam you might even lose profiling. The anomalous horizontal current is in the same direction as the ship speed. Percent good is low in the surface layer where it's usually high.

The apparent shear arises because the beams that measure the ship speed aren't tracking; they're staying locked onto the zero Doppler shift of the ringing. The ringing is the stronger signal but attenuates faster, so often the far range bins do pick up the water echo signal. Subtracting the ship speed out from the mix of biased and unbiased bins gives you the shear. W is the average from beam pairs 1-2 and 3-4. Error is the sum of the 4 beams. If the errors in beams 3 and 4 don't cancel, then you could get a signal in w or error velocity.

Revelle was not that bad, and I'd mainly look for it during accelerations.

I followed Teri's suggestion and looked at other ship accelerations. The following example from a CTD station departure contains some of the highest accelerations of the dataset. The meridional velocity (v) showed somewhat higher near-surface shear during high ship speed. However, the sign of shear at the shallowest bin is "wrong" since the ship headed southward (positive meridional reference layer velocity).

In another example, near surface shear changed gradually over a long series of profiles, and did not follow the very ubrupt drop in ship speed.

 On the other hand, surface velocities displayed  curious "hooks" at times. In this example, zonal velocity shear increased with a course change. Again, bin 1 velocities were increased relative to the vertical mean, rather than decreased for ringing. Is it possible that the effect would not arise until bin 2?

Percent good will probably look ok. Spectral width might be abnormal. Instead of going from low to high with range, indicative of good SNR and a good peak corresponding to the Doppler shift measured in the low-pass tracking filter, it will be large in the upper bins, since the ringing is a strong signal but relatively white.

Beams 3 and 4 see the ship speed on Revelle, and so I'd expect high spectral width on those beams, if you recorded beam spectral width. Spectral width and last raw Dopplers are useful for this diagnosis.

I am not familiar with separate spectral width data for each beam, nor is it quite clear to me what setting in the start.cnf file would allow it to be collected or where it would be stored in a CODAS database. We did collected average spectral width for each bin. Looking again at the case from 5/24, 11:00, properties of on-station profiles (Blk 10, Prf  200:220) was compared with those of underay profiles (Blk 10, PRf 230:237). Underway meridional (v) velocity following the speed change included large shear  in the bin range 4:7, centered on 42 to 66 meters. Spectral width from underway data was somewhat enlarged between bins 2 and 10. It is highest, however, for bin 1 on station. On station amplitude showed a similar maximum for bin 1. For completeness, vertical (w) velocity and error (e) velocity for the same time ranges are included here, with mean w and e profiles displaying a peak in the area of anomalous v shear. Percent-good and pecent-3-beam solution showed standard profiles, except - again - for a drop in underway mean for bin 1.

Ringing is certainly a possible explanation for what you see in example 4 [referring to the plots from 5/24 11:00, fb], but I would expect you to see it on ALL similar speed changes. Did it appear only at the end of the cruise?  [using the same editing thresholds for the whole cruise, w variance only flagged cases following 5/24, and not all instances of speed changes then either; fb]

On the January CalCOFI, we saw strong (erroneos) shear in the depth range 30-50 m, using a 12 m blank. The hope was to eliminate this problem, or at least improve it.

Based on all the cases I have looked at, I do not think that this dataset has a significant ringing problem. Bin 1 and/or bin 2 show some questionable shear at times, but it does not seem to coincide with the conditions that go with ringing (i.e., dependence on ship speed). Also, I do not think that the instances of suspicious features within the upper 10 bins described above are caused by ringing. For once, ringing should have effected profiles from similar conditions throughout the cruise, whereas many examples of ship velocity changes showed clean profiles.

There was some question as to what to do about these cases. Horizontal velocity profiles often showed little or no adverse effect, although such interference was difficult to rule out in cases of quickly changing velocity features. While error velocity was large in the first case,  indicating a change in the velocity field between the ADCP beams, it was typically only w that showed large values. Particularly for the third case, the w signal started very ubruptly, between the 5th and 6th profile of the group shown here, while it disappeared in a more gradual fashion. What could have happened at the time of the speed reduction?  It is highly unlikely that any gear was lowered over the side without the ship being stopped. Perhaps these features could be somehow connected to the bow thruster, which might have been used to help maneuver the ship at times of instrument recovery / deployments. Why did these cases show up only in the later part of the cruise? They were very obviously flagged by the w-variance criterion.  Did the bridge change its pattern of ship handling? In the end, I decided it was more cautions to edit out the affected bins (as defined by large w) because a vertical velocty of 30 cm/s, associated with a pattern of ship speed, suggested that something artificial was introducing these measured water velocities.

Once the matlab routines finished listing all the profile glitches, bottom interference etc. in the ascii files badbin.asc, badprf.asc, and bottom.asc, a series of CODAS routines was run to implement the edits in the database:

badbin ../adcpdb/jes2 badbin.asc

data_mask ----------> 0000 0000  0000 0000  0000 0011  1000 0001
data_proc_mask -----> 0000 0000  0000 0000  0000 0000  0100 0000

  dbupdate ../adcpdb/jes2 badprf.asc

data_mask ----------> 0000 0000  0000 0000  0000 0011  1000 0001
data_proc_mask -----> 0000 0000  0000 0000  0000 0000  0100 0000

  dbupdate ../adcpdb/jes2 bottom.asc

data_mask ----------> 0000 0000  0000 0000  0000 0011  1000 0001
data_proc_mask -----> 0000 0000  0000 0000  0000 0001  0100 0000

  set_lgb ../adcpdb/jes2

data_mask ----------> 0000 0000  0000 0000  0000 0011  1000 0001
data_proc_mask -----> 0000 0000  0000 0000  0000 0011  0100 0000

  setflags setflags.cnt

with setflags.cnt:
     dbname: ../adcpdb/jes2
          pg_min:   30
     set_range_bit
     time_ranges:
        all

data_mask ----------> 0000 0000  0000 0000  0000 0011  1000 0001
data_proc_mask -----> 0000 0000  0000 0000  0000 0011  0100 0000
 

    return to the table of contents
 

4.3 Temperature and Salinity Correction

"For non-obvious reasons, the constant of proportionality between Doppler shift and water speed involves the speed of sound at the transducer only." (Firing 1991, page 7, paragraph "Sound speed")  It is calculated by the DAS based on the temperature measured by a thermistor embedded in the transducer head, and based on the constant salinity specified in the DAS configuration file (start.cnf). Sound speed depends most strongly on temperature, changing by 0.3% per degree C at 0 degree C, and 0.13% per degree C at 30 degree C; its salinity dependence is about 0.1% change per psu (E. Firing, 1991).

To check the ADCP transducer thermistor, the sea surface temperature records of the Revelle's underway system was extracted from the CD we had received from the computer technician Mark Silver at the end of the cruise. Its subdirectory "met" contained files with names like "990519.dat.Z", which were uncompressed on the SUN into daily ascii files. Following the comment header, the various underway data in each text line were identified by a leading 6-character string. I selected the "INSSSV" message, which, according to the comment section, contains "Surface sound velocity, salinity, corrected temp and conductivity". The nature of the correction was not given. As a check, I compared this temperature record against all available SeaSoar temperatures from depths within 1 to 6 meters, and found good agreement.

The ship's underway temperature and the ADCP temperature were not identical. However, the differences were not of a nature that I had seen before in other ADCP datasets. Typically, one might find a constant offset, a drift of the ADCP thermistor, or even a failure indicated by a constant 40 degrees C. In this case, the general shape was similar, but ADCP record showed an overall smoother shape, minimum values were not as low, and there was some indication of a time delay. These features seemed consistant with some thermal shielding of the transducer by the acoustic window and the freshwater bath, and no transducer correction was applied.

During the cruise, the ADCP salinity had been set incorrectly to 36 psu. This was a setting we "inherited" and seemed quite reasonable at the time, since we did not yet know about the acoustic window. Since the difference to the real salinity at the transducer heads, presumably 0 psu, was constant, the resulting error should be a constant factor as well. Thus it will be corrected by the amplitude calibration lateron, and no salinity correction was applied at this point.

    return to the table of contents
 

4.4 Ashtech Heading Correction

4.4.1     Background

Gyro compasses on ships are known to have errors that can reach two to three degrees or more (Bowditch 1977). One portion of the errors can be described as
    Delta= 0.0635 S cos(theta) sec(L)
with ship speed S in knots, and heading theta and latitude L in degrees (Griffith 1994, Bowditch 1977). The gyro compass has dials with which speed and latitude can be adjusted by the ship's crew to reduce such errors. However, even correct adjustments do not eliminate all errors (e.g., errors in the gyro compass mode). In recent years, heading devices based on GPS differential phase measurements between a reference antenna and threeother antennas have become available (King and Cooper, 1993). The R/V Roger Revelle has been outfitted with a system made by the company Ashtech.

In summary, the Ashtech heading correction is applied as follows. Firstly, it should be recalled that each ADCP ping is rotated into ship's coordinates using gyro heading before the ensemble average is calculated. Only the ensemble average, not the raw pings, are recorded in the pingdata files (a feature of RDI's DAS). The Ashtech heading is not substituted for gyro heading at the raw data stage because it is considered not reliable enough. Throughout the ADCP ensemble, the userexit program ue4.exe collects Ashtech heading, edits it based on GPS quality parameters, and compares it to the ship's gyro heading. Statistics of the heading difference (mean, std, etc.) are recorded in the user buffer of each ensemble. In post-processing, the time series of heading difference is further screened and edited in matlab. At this stage, small gaps may be filled by interpolation ("small" is defined below). The final heading difference time series is then used as input to a database rotation, which transfers the heading reference from gyro to Ashtech. A possible constant Ashtech heading offset (due to a misalignment of the Astech antenna array relative to the ship's axis) will be corrected, together with a possible ADCP transducer misalignment, in the subsequent ADCP calibration.
 

4.4.2    Processing

During data collection, ue4 screens the incoming Ashtech heading data (ATT message) and rejects them if

The specific threshold values used here, specified in ue4.cnf, are standard values that were not modified for this cruise.

In post-processing, the program ubprint extracts the heading difference (dh) time series from the database and (for the ubprint.cnt settings used here) deposits it into an ascii and a matlab output file. The m-files ashrot.m, located in the subdirectory cal/rotate, loads the matlab file and further screens the time series based on

The default editing settings (listed in brackest above) resulted in 199 rejected dh values. Reducing the min_n_used threshold to 15 corresponding to the shorter than typical ensemble length here (3 instead of 5 minutes) brought this number down to 169. Of those, 60 occured as one group immediately following the first dh value of the database, and coincided with the gap in GPS position data at the start of the cruise mentioned above. These two GPS inputs came from different receivers, and were collected via separate serial ports. Although both are logged by the same program (ue4), it seems more likely to me that the reason for this gap was related to a general serial data transfer issue on the ship's side.
    A second, larger group of 29 consecutive Ashtech rejects lasted from decimal day 146.5957 to 146.6478 (May 27, around 14:00Z). A time series of the number of good Ashtech samples per ADCP ensemble from around this time shows a curious pattern of re-occuring minima, separated by about 2 hours (0.08 days). The start of the gap has roughly the right timing to coincide with such a minimum, which had become more pronounced during the previous few cycles. Perhaps whatever caused these cycles had grown so strong that it not only eliminated some Ashtech fixes, but also required the system to re-initialize. The ship's heading was constant (about 0 degrees) during this period, eliminating antenna blockage as a possible cause. All remaining gaps spanned only one or few ensembles.
    Only five dh points were taken out by the pitch and roll limits (same points). One of them, a clear outlier, was also edited out by the previous criteria. The remaining four had ensemble mean rolls that were clearly anomalous (11 degrees against a typical background of less than one degree). Their values of dh was extreme as well, exceeding neighboring values by about half a degree. It seemed still possible at first that somehow a somewhat larger,  constant roll (crane outboard?), associated with a relatively large mean pitch (?) was not necessarily indicating a bad data point. However, after a check of the ship's speed and course showed a constant heading at 8 knots (typical SeaSoar towing), I decided that to leave these points edited out.

Time series of Ashtech minus gyro heading (dh) typically show a combination of long-term gyro heading changes, sometimes correlated with ship's heading, and shorter-term so-called Schuler oscillations of the order of one to two hours triggered by an acceleration (turn) of the ship (e.g., Bahr and Joyce, 1997). The dependence on ship's heading has been used to generate a model to fill larger (longer than one hour) data gaps (Bahr and Joyce, 1997). However, the heading dependence of dh is not always clearly established; furthermore, such a model cannot reproduce the short-term dh oscillations. Fortunately, the only longer gap that required filling occured during relatively constant ship's speed and heading, so that simple linear interpolation was the best choice. It is used routinely to fill shorter gaps. A subjective visual inspection of the final Ashtech minus gyro heading time series (continued: page 2, page 3) provided the last check.

Finally, ashrot.m wrote an ascii output file that spercified a rotation angle for each profile. This rotation was then applied to the database (program rotate), changing the heading source from the gyro compass to the Ashtech GPS array.

    return to the table of contents
 
 

4.5 Calibration

Basic methods for ADCP calibrations are explained in Joyce (1989) and Pollard and Read (1989). For the JES2 dataset, we have used two approaches: bottom tracking, and water tracking. These two methods should give identical results for the transducer orientation, but can give scale factor differences of the order of 0.5% (Firing, 1991).  Below, the two methods are first discussed individually, followed by a summary of the final calibration.

4.5.1    Bottom Tracking.

In the bottom track method, the ship's displacement over the ground as measured by the ADCP is compared with the ship's displacement measured by navigation fixes. A scale factor A and a phase phi are calculated that, when multiplying the uncorrected bottom track velocity vector Uu = u + iv in the form

    Uc = A * exp (i * phi * pi / 180) * Uu ,

minimize the difference between the integrated corrected bottom track velocity Uc and the ship's track as given by the navigation (GPS) fixes. Phi is the counterclockwise angle in degrees between the gyro compass forward axis and the transducer forward axis. Obviously the water depth must be such that the ADCP can reach the bottom. Excluding extremely shallow and deep depths were results might be questionable, the bottom tracking range for a 150 kHz transducer reaches from about 40 to 450 meters. Steeply sloping bottoms such as around mid-oceanic islands can introduce problems. Calibration runs do not have to be straight, though a long horizontal extent is advantageous. Depending on the quality of GPS fixes, bottom tracking as short as one hour may provide good results, with longer runs preferred. The length of a useful segment is given by the time during which bottom tracking was contiguous.

Until recently, the standard CODAS bottom track calibration would calculate one set of amplitude and phase by fitting a contiguous series of ADCP bottom tracking to the corresponding record of GPS fixes. Residuals of the fit, as well as the stability of the calibration values to successive removal of the largest outlier fixes, provide quality parameters. Alternatively, one can calculate a time series of amplitude and phase, one per GPS / ADCP bottom track pair, from the ADCP and GPS time series. While individual amplitude / phase pairs would be too noisy to be meaningful, their mean provide a results  similar to that of the previous method. In addition, one gains information about any possible change of calibration over time (e.g., if this operation was done before the Ashtech rotation). Since this approach involves a few programs written by Bahr (fb) that are not described in the CODAS documentation, its steps are listed below.[The core of it, however, goes again back to a program by Eric Firing.]

First, the complete bottom track (BT) record was extracted from the database (program lst_btrk). The resulting output file separated contiguous BT segments with "%" signs. Since one of the subsequent codas routines requires a separate run for each contigous segment, the BT record was broken up into individual, consecutively numbered files containing one segment each (read_bt.plx, perl routine by fb). Very short BT segments, expecially when their bottom depths were very large, were deleted (script rm_it.src). The codas routine refabsbt was then run for all remaining BT segments; as this could require many separate runs of refabsbt, the perl script call_refabs.pl (fb) automatically wrote the required control files and called refabsbt for all BT segments within a specified number range. This range only needed to include the first and last segment number, since missing segments (that were eliminated as too short) only caused an error message without further consequences. The next step in matlab required a time series of heading, since calibration results were also plotted as a function of heading (run lst_hdg). In matlab, the script call_btcaluv.m calculated the time series of amplitude and phase and generated summary plots for each BT segment (edit call_btcaluv.m to specify the segment numbers you wish to process). After pausing, the time series from each was appened to the file btcaluv.dat.

Beyond those general steps, the first, longest BT segment was edited to exclude a period of vey low to zero ship's speed. Although btcaluv automatically edits out data from ship's velocity below a set threshold (here: 2 m/s), which in this case eliminated the worst point with phase <-100 degrees, a few points beyond the automatic editing produced phases of up to one degree above the mean. Suspecting that they were associated with uncorrected compass errors around the abrupt speed change, I inspected the Ashtech record for anomalies or gaps. None were found, but it was confirmed that the Ashtech recorded strong gyro fluctuations at this time. In addition, two clear outliers with amplitudes of less than 0.96 were eliminated from the combined file btcaluv.dat as well. The remaining series consisted of 286 points.

Finally, btcaluv.dat was loaded into matlab to generate plots of amplitude and phase time series, as well as a plot of phase as function of heading. The latter was to serve as a check on the Ashtech heading correction; no remaining dependence of "ADCP alignment" on heading was apparent. For comparison, the corresponding figure without Ashtech correction suggested some heading dependence of bottom track phase, indicative of gyro errors, although the heading range was poorly sampled. Mean and standard deviations for both cases were:

 
Amplitude Phase
mean 0.9714  -2.2687
std 0.0030  0.2094
mean, no Ashtech 0.9713  0.9088
std, no Ashtech 0.0038  0.3058
4.5.2    Water Tracking

In the water track or acceleration method, ship's accelerations relative to the water measured by the ADCP are compared to accelerations over the ground measured by GPS. Any substantial
accelerations of the ship during good GPS coverage can be used. On a normal hydrographic cruise, most calibration points are usually obtained from station arrival and departure. Sharp turns in the cruise track provide calibration points as well.

To derive a time series of water track calibrations, first ship's velocities relative to the water were computed from each ADCP ensemble by vertically averaging over a suitable layer. The idea is to choose a layer that shows smooth variations in velocity over time. A standard range is bins 5 to 20. For preliminary results during the cruise, a shallower range of bins 4:12 was used to include more of the shelf waters. Since this range coincided with the problem areas addressed in the editing section, a second, deeper range of bins 11:20 was tried as well. However, these two bin ranges produced only insignificant differences (see table below). Next, the reference layer record was searched for accelerations defined by speed changes of more than 3 m/s, or heading changes for more than 60 degrees while ship's speed was at least 2 m/s (program timslip). For each acceleration, the ship's velocity over the bottom (calculated from the 3-minute GPS fixes) and relative to the reference layer was averaged over a set of profiles. The set configuration can be varied with the aim of reducing the scatter over a group of calibration points. Here, we used the standard option of  averaging over three ensembles, each group separated by one ensemble from the velocity jump (timslip options: 9 ensembles, 1:3, 6:8). Finally, a phase phi and a scale factor A were calculated by adjusting thereference layer velocity difference dUref = Uref,after - Uref,before (with U=u+iv as before) to the absolute velocity difference dUGPS = UGPS,after - UGPS,before in the form

dUGPS = A * exp(i * phi * pi/180) * dUref

(Before and after refers to the timing relative to the ship's velocity change). Again, is the counterclockwise angle between the heading forward axis and the transducer forward axis.

In matlab, the initial sets of 83 (78) points were edited down to 75 (74) by excluding outliers based on thresholds for amplitude (required to be within 0.04 of the median), phase (required to be within 3 degrees of the median), variance of the reference layer velocity within a set (less than 0.05, program adcpcal.m). Values in brackets indicate those for bin-range 11:20. Additional criteria based on time shifting of the GPS fixes and on the size of the velocity jump were disabled by large thresholds. Time series of the original and edited amplitude and phase showed the usual scatter, but mean values listed below confirmed the bottom tack values.
 

 
Amplitude Phase
mean, bin 4-12 0.9737  -2.2971 
std, bin 4-12 0.0086  0.3439
mean, bin 11-20 0.9711  -2.2713 
std, bin 11-20 0.0072  0.3670

 

4.5.3    Final Calibration and Rotation

Results from the bottom track and water track methods did not differ significantly. Since the number of water track calibration points was somewhat small - not too surprising given the few CTD stations and long segments of straight cruise track - the bottom track values were taken as the final values. The relatively small amplitude factor reflects the incorrect transducer salinity used during the cruise (T. Chereskin, pers. comm.) The complete database was rotated using the values in the top line of the bottom track table (program rotate).

data_mask ----------> 0000 0000  0000 0000  0000 0011  1000 0001
data_proc_mask -----> 0000 0000  0000 0000  0000 0011  0100 0110

    return to the table of contents
 
 

4.6  Navigation

In this chapter, the conversion of ADCP velocity profiles relative to the ship to absolute velocity profiles is described.  It begins with a general discription of the procedure, followed by cruise-specific issues or problems.
 

4.6.1    Background (based on Firing 1991, chapter 6)

The approach taken here involves the intermediate calculation of the absolute velocity of a reference layer (e.g., Wilson and Leetmaa, 1988; program adcpsect) rather than calculating the absolute ship's speed directly by differencing GPS fixes. It is based on the assumption that the velocity of an oceanic layer will vary slower in time than the ship's velocity, and therefore short-term velocity fluctuations can be identified as GPS fix errors.

For best results, the reference layer should be chosen such that its velocity varies as smoothly as possible along the cruise track. In general, this would be the thickest layer that contains good data, excluding the first few bins for surface effects. A typical range (and the CODAS default) is bin five through 20.

Secondly, a time series of GPS position fixes is needed. The userexit program used here as part of the ADCP data collectionrecorded two GPS fixes in the user buffer of each profile: the first and last fix available during the ensemble acquisition. Since the acquisition PC needs some time at the end of an ensemble to write the data etc., these two fixes are typically a few seconds apart. Under the option used here, the fix retrieval program (ubprint) averaged these two fixes to calculate a position as close to the end of an ensemble as possible.

For each profile, the absolute velocity of the reference layer was then computed as the difference between the velocity of the ship over ground, determined from the fixes, and the velocity of the ship relative to the reference layer (which is, of course, given by the reference layer velocity multiplied by -1). GPS position errors show up as an anomalous current in one direction, immediately followed by a similarly large anomalous current in the opposite direction. This initial estimate was smoothed by convolution with a Blackman window function w(t) (Blackman and Tuckey, 1958) of width T,

w(t) = 0.42 - 0.5 * cos(2 * pi * t / T) + 0.08 * cos(4 * pi * t / T).

The choice of the filter width depends mostly on the quality of the fixes. See chapter 6 in Appendix B for further thoughts by Eric Firing about the filtering. The estimates of reference layer velocity are plotted for the whole cruise, along with ship's position. These plots are routinely examined for large outlier fixes, which would then be manually excluded from the record. The plots also serve to document other important aspects of the ADCP data set such as the spatial coverage, the general quality of the GPS fixes, and the degree to which particular current features are resolved in the smoothed reference layer velocity.

The smoothed estimate of the absolute reference layer velocity is added to the velocity of the ship relative to the reference layer to give the final estimate of the ship's velocity. The latter is then integrated over each segment of nearly continuous ADCP data and fit to the ensemble of position fixes within the segmentl to generate the ship's track. The ship's position and velocity for each profile is written back into the ADCP database (program putnav). One could add the ship's velocity to the velocity profile and then store the resulting absolute profile, but the CODAS software instead does this calculation as needed when extracting the data for plotting and analysis (program adcpsect).
 

4.6.2 JES2 navigation

The standard reference layer bin range 5-20 combined with a short smoothing window (halfwidth 15 minutes) produced worked well for nearly all of the cruise, but produced some suspicious short-term fluctuations in meridional velocity during the departure from the coast on the last day of the cruise. The timing brought to mind the periods of anomalous vertical shear that occured around station departures late in the cruise, and were discussed in the editing chapter. A check with the matlab editing routines, however, showed that they were not present in this particular case. Instead, velocity profiles had been sharply shortened by bottom interference, changing the vertical extent of the reference layer between successive profiles as well as generally restricting it to a shallow, energetic range. In addition, because the bottom interference was complicated by a mix of multiple bottom echoes and false scattering layers, some clearly anomalous velocity spikes had slipped through the editing process. Eliminating these spikes produced only little improvement, however. [ But their presence did trigger a complete re-run of the manual editing to search for other lapses.] A somewhat less dramatic case on June 1st, 16:00, was, however, caused by a reduced bin range due to editing of anomalous shear. Since the editing had eliminated bins down to bin 20 in this case, extending the reference layer down to bin 25 provided a slight improvement, and perhaps even improved the overall record. Finally, a new spike appeared following the edit repeat. When saving real edits, a single scattering layer mark was left uncorrected and was saved as a feature to be edited out. It wiped out most bins of the reference layer. The profile was restored by re-running setflags with the clean_all_bits option.

A test run with bin range 11 through 20, designed to avoid the bins where most of the anomalous shear had been found, showed generally little difference to the 5-20 range, and most importantly did not result in a smoother reference layer velocity. The only significant consequence of this change for the whole cruise record was the replacement of the suspicious segment of the last day with a gap. I

The overal record showed exceptionally clean reference layer velocities, indicative of the high GPS fix quality that could be expected from a P-Code receiver. However, a two to four hour segment around decimal day 143.9 showed significantly elevated noise. It did not change under various reference layer bin ranges. Curiously, the onset of the noise in meridional reference layer speed, which was accompanied by a jump in the mean, coincided with a course change of the ship. However, the return to normal conditions, as well as the noise in zonal speed, were not related to course (or speed) changes.

Based on the overal excellent record, the smoothing filter half width was further reduced to 7.5 minutes. This allowed a better tracking of the shallow reference layer on day 152 without causing spikes in the smoothed record during day 143. The navigation steps were concluded by running the program putnav, changing the data processing masks to:

data_mask ----------> 0000 0000  0000 0000  0000 0011  1000 0001
data_proc_mask -----> 0000 0000  0011 0000  0000 0011  0100 0110

[Note: retaining the short-term reference  layer velocity fluctuations that can result from the quickly changing vertical extend of the reference layer, rather than accepting a gap in absolute velocities, is somewhat contrary to the underlying idea of choosing a slowly varying reference layer. The smoothing could then reduce true velocity fluctuations together with GPS errors, and thus cause absolute velocity errors. Weighing the disadvantages of both cases in light of the scientific objectives for this dataset, I decided to keep the shallow data. The high quality of the P-code GPS contributed to this decision, as mentioned above. This may in general not be the best way to proceed.]

    return to the table of contents
 

4.7 Profile Quality

ADCP profile quality is routinely checked with several statistics, calculated separately for underway and on station data. A cruise may be broken into several segments and analyzed separately; for the plots shown here, data from the whole cruise were used.

To identify time ranges of underway and on station data, the relative reference layer velocity (ADCP velocity averaged over bins 5 through 20, relative to the ship) were searched for speeds larger or smaller than 2.5 m/s, or about 5 knots. CODAS provides the program arrdep to identify underway and on-station times based on reference layer speed. A run with the default settings from the demo database, however, only produced short time ranges centered on the time of the speed change, rather than the times inbetween the speed change.  As I vaguely recall, the time range file used to require manual editing (basically combining two consecutive time ranges into one) to get the desired time intervals. This step is not mentioned in the postscript manual (manual.ps), and only hinted in the file process.doc that comes with the demo database. It could easily be overlooked. With the manual editing step being somewhat cumbersome, I exhanged arrdep with a simple matlab routine that load all database profiles (it could load the reference layer velocity as calculated by adcpsect in the nav directory instead), identifies the profiles with reference layer speeds above or below the desired threshold, and writes one time range for each profile within the desired speed bracket. The disadvantage of this simple approach are large time range files. Also, the option of codas routines like profstat or adcpsect  to generate separate output for each time range would not work well, but this option is not typically used here.

With the resulting time ranges as input, profile statistics for vertical shear of horizontal velocities, for vertical velocity, error velocity, amplitude, spectral width, percent good, and percent 3-beam solution were calculated (program profstat). Note that there were about 6000 profiles for underway statistics compared to only about 1000 for on-station conditions.
 

4.7.1     Vertical Shear of u, v

Mean and standard deviation of the vertical shear as measured by the first vertical difference can be used to identify problems in the shallowest bins due to insufficient surface blanking or DAS processing filter problems. We did not modify the parameters for surface blanking (4 meters), and the direct commands for filter control (B009001) and for ping-to-ping filtertracking (E0004020099) that were already set prior to our cruise. Although mean shear values were well within what I have seen for other datasets (e.g., Bahr and Joyce, 1997), both zonal and meridional shear showed somewhat high values for shallow bins.  T. Chereskin had used 12 meter blanking previously, although installation modifications were supposed to eliminate the problem that prompted her to do so. I have seen the amplitude threshold for changing the processing filter bandwidth by a factor of two set to 80 (B008001) on other cruises, which would cause the change to occur somewhat farther down in the profile. A detailed description of the DAS direct commands can be found in the RDI manual (RDI, 1991), and more information on processing filter issues are given in Chereskin et al., 1989.
 
 
 

4.7.2     Vertical and Error Velocity

The 4-beam Janus configuration used by RD Instruments provides two independent estimates of vertical velocity, w. The average of these is recorded as vertical velocity, and cos(30 degrees)/2 (=0.433) times the difference between the two estimates is recordeds as error velocity, e. Since the true vertical velocity in the ocean is usually very small, particularly when temporarily and spatially averaged, both w and e often indicate measurement error or flow disturbances.

Below the top few bins, the depth-averaged vertical velocity when the ship is underway is essentially a measure of the fore-aft tilt of the "vertical" axis of the transducer. This tilt can arise through misalignment of the transducer installation, changes in trim of the ship as water and fuel are consumed, and, over the very short term, pitch. Like for horizontal misalignments, vertical velocity errors are proportional to ship's speed, with a one degree tilt producing a signal of about 1.7% of the ship's speed. For the Revelle's cruising speed of about 4m/s, the average vertical velocity of less than 1 cm/s of 0.14 degrees would correspond to a tilt aft (the bow was high). Note, however, that mean w was smaller than one standard deviation.

Near the surface, the underway vertical velocity w is large and negative, decreasing exponentially over the top 50 meters. On station, w is small and negative. A w profile of this shape is typically observed for ship-mounted ADCP's, and though the cause has not definitely been determined, it is suspected to be related to flow disturbances around the ship's hull. The magnitude of -10cm/s near the surface was also reported for datasets from the RV Thompson (Flagg, 1995; Bahr and Joyce, 1997). Standard deviation of w was remarkably low at depth, reflecting the generally very good vertical extend of the profiles. The unusual peak at shallow bins was likely related to the anomalous velocity features during station departures described in the editing section.

Depth-averaged error velocity when the ship is underway may indicate misalignment of the transducer elements relative to each other. Short-term increases in error velocity from on-station periods could be caused by a combination of vertical shear of horizontal velocities and ship's tilt (Bahr 1990, unpublished manuscript). For the JES2 cruise, both underway and on-station error velocities were small. Again, the profiles were similar to those from the P10 cruise on the R/V Thompson (Bahr and Joyce, 1997), although values were slightly larger by about 75%. The shallow peak around bin 7, particularly for on-station std, was stronger here. Similarly to shallow w, it was likely related to the anomalous velocity features during station departure described in the editing section.
 

4.7.3     Amplitude (AGC) and Spectral Width

AGC, short for amplitude gain control, corresponds to the depth-varying amplification used by the ADCP profiler to maintain a constant signal level for all vertical bins. It is generally used as a measure of signal strength. Underway AGC levels are often elevated for the bottom-most bins, indicating a higher noise floor due to ship' propeller noise etc. This is often accompanied by a decrease in shallow AGC, suggesting that the effective signal strength is reduced simultaneously. For this cruise, underway AGC was only very slightly smaller at the surface, and basically overlapped the on-station profile at depth (compare with, e.g., Bahr et al. 1990).

Spectral width was of particular interested here because of its potential as an indicator for ringing. Teri Chereskin indicated in her email that underway spectral width for beams 3 and 4 (for and aft looking beams) would be elevated by ringing. Plotted here, however, is only the beam averaged spectral width. Although the profiles show a surface spike, followed by somewhat enlarged values for the upper 15 bins, they are essentially identical for underway and on-station data. In fact, the surface spike is larger in the on-station profile.
 

4.7.4     Percent Good, and 3-Beam Solution

Percent good gives percentage of pings in an ensemble that were considered good pings and were used for the ensemble average. It is used by many of the CODAS data access routines as a quality criterion, with 30% being a typical threshold for accepting data. Typical percent good profiles are highest over some bin range near the surface, then start a more or less linear decrease at some depth. This basic profile was also observed here, although values were slightly reduced ( and std elevated) for on-station bin 1.  On many ships, underway data may reduced percent good returns due to ship's noise etc, but underway and on station percentages were remarkably similar here. This again indicates the good characteristics of the R/V Revelle as an ADCP platform.

Only three of the four beams of the ADCP are necessary to compute the three velocity components. All four are normally used when available. When data from only three beams are available or acceptable (on any given ping or bin), the DAS will optionally use the three-beam solution if it is "turned on" in the DAS's start.cnf. For each depth bin, percent-3-beam is then the percentage of pings in an ensemble for which the 3-beam solution was used. Following a typical profile, the percentage was vanishing at shallow to mid depths, and then increased with depth when not all four beams dropped out at the same depth. Again, underway and on station data were very similar. Percent-3-beam was relatively high for bin 1, corresponding to the drop in percent good for this bin.

4.7.5    Summary

The ADCP data quality in general was high for this cruise. The quality profiles were in many regards similar to those from the R/V Thompson, a sister ship of the Revelle. I did not observe the features that I understand to be related to a ringing problem, but my experience with this problem is limited. The shallowest bins, most notatably bin 1, showed elevated values in mean shear, spectral width, 3-beam solution, and a drop in percent good. To my puzzlement, these features are more pronounced in the on-station profiles.

    return to the table of contents
 

5.     Velocity Maps

As an example ADCP product, vector maps are shown for a radiator survey that spanned the subpolar front, and its repeat a few days later. The were generated with the CODAS routines timegrid, adcpsect and vector.

As for contour plots, ADCP time ranges need to be generated as the first step. One may produce a list of time ranges that correspond to a geographical grid superimposed onto the cruise track. In the example shown here, the ship towed SeaSoar at nearly constant speed of 8 knots, and simple 15-minute time time ranges were used. Each plot vector was calculated by averaging in time  as well over the depth intervals listed in the plot subtitles. A discussion of the velocity features is reserved for later publications.

Radiator 1, shallow levels
Radiator 1, deep levels
Radiator 1 repeat, shallow levels
Radiator 1 repeat, deep levels.

    return to the table of contents
 

6.    Profiles in Matlab Format

To provide easy database access to non-CODAS users, all zonal and meridional velocity profile data were extracted from the database and saved in matlab format (program reference_uv.m). As a first step, the CODAS editing routines were used to extract all profiles into the matlab workspace. At this stage, profile editing parameters are contained in separate variables, while the corresponding velocity bins may still contain the original data. These bins were explicitely changed to nan's

These edited, relative (to the ship) velocity profiles were then converted to absolute velocities by adding the final ship speed as contained in the smoothr output file (directory nav, file extension .sm).

In addition, Craig Lee had requested that the profile time be changed. Under CODAS, the end time of the ensemble average is used as profile time,  while Dr. Lee preferred the center time. For the three-minute profiles used here, the profile time was advanced by 1.5 minutes, and the ship's position was interpolated onto the new line (program move_time.m).

    return to the table of contents
 

7.     Acknowledgments

Special thanks go to Eric Firing and Jules Hummon from the University of Hawaii for their ongoing support of the CODAS software package, and for answering ADCP-related questions. Large portions of the general CODAS descriptions follows very closely writings of Dr. Firing, in particular opmeth.ps. Teri Chereskin from Scripps kindly provided valuable information on the transducer installation, and ADCP performance in general. The assistance of the Revelle's computer tech Mark Silver during the data collection is gratefully acknowledged. This work was supported by the ONR grant N00014-98-10369.
 
 
 

8.     References

Bahr, F., 1990. On the relation between vertical shear and error velocity at 0N, 165E on US-
PRC cruise #5. Unpublished manuscript, 40 pp.

Bahr, F., E. Firing, and S.-N. Jiang, 1990. Acoustic Doppler current profiling in the western
Pacific during the US-PRC TOGA cruises 5 and 6. Data report No. 007 from the Joint Institute
for Marine and Atmospheric Research, University of Hawaii. 161 pp.

Bahr and Joyce, 1997. Acoustic Doppler Current Profiling in the Western Pacific during the WOCE P10 Cruise, November / December 1993. Woods Hole Oceanographic Institution Technical Report No WHOI-97-04. 125 pp.

Blackman, R. B. and J. W. Tukey, 1959. The measurement of power spectra. Dover, New York,
190 pp.

Bowditch, N., 1977: American Practical Navigator. Vol. 1. Defense Mapping Agency
Hydrographic Center, 1386 pp.

Chereskin, T. K., E. Firing, and J. A. Gast, 1989. On identifying and screening filter skew and
noise bias in acoustic Doppler current profiler measurements. J. Atmos. Oceanic. Technol., 6,
1040-1054.

Firing, E., 1991. Acoustic Doppler Current Profiling Measurements and Navigation. Part of
WOCE Hydrographic Operations and Methods. Available via anonymous ftp from
noio.soest.hawaii.edu, directory pub/codas3, file opmeth.ps.

Firing, E., 1998. Documentation file to the userexit program ue4.exe. Available via anonymous ftp from noio.soest.hawaii.edu, directory pub/userexit, file ue4.doc.

Flagg, C. N., and Y. Shi, 1995. Acoustic Doppler Current Profiling from the JGOFS Arabian Sea
Cruises Aboard the RV T. G. Thompson. Brookhaven National Laboratory Data Report, BNL-
61633, 153pp.

Griffith, G., 1994: Using 3DF GPS Heading for Improving Underway ADCP Data. J. Atmos.
Oceanic Technol., Vol 11, 1135-1143.

Joyce, T.M., 1989. On in situ "calibration" of shipboard ADCPs. J. Atmos. Oceanic Technol., 6,
169--172.

King, B. A., and E. B. Cooper, 1993. Comparison of ship's heading determined from an array of
GPS antennas with heading from conventional gyrocompass measurements. Deep-Sea Res., Vol.
40, No. 11/12, pp. 2207-2216.

Pollard, R. and J. Read, 1989. A method for calibrating shipmounted Acoustic Doppler Profilers,
and the limitations of gyro compasses. J. Atmos. Oceanic Technol., 6, 859-865.

RD Instruments, 1991. Vessel-Mounted Acoustic Doppler Current Profiler (VM-ADCP)
Technical Manual. Available from RD Instruments, 9855 Businesspark Ave., San Diego, CA
92131.

Wilson, D., and A. Leetmaa, 1988. Acoustic Doppler current profiling in the equatorial Pacific in
1989. J. Geophys. Res., 93, 13,947-13,966.
 

   return to the table of contents
 
 

Appendix A: The ADCP  Configuration Files

1. The startup configuration file start.cnf for RD Instrument's data
acquisition software (DAS) that was used during JES2.

2) The userexit program ue4.exe requires a configuration file called ue4.cnf.
 
 
 

Appendix B: The UH ADCP data processing system

[Reprint of Appendix B from "WOCE Hydrographic Operations and Methods: Acoustic Doppler
Current Profiling Measurements and Navigation." by E. Firing, 1991. The full document is
available via anonymous ftp from noio.soest.hawaii.edu, directory pub/codas3, file opmeth.ps.]
 
 

The University of Hawaii ADCP data processing system has been developed and used over
several years. It has been used by several groups in addition to mine to process more than two
ship-years of ADCP data. Some of this processing has been done at sea in near real time by
people with no more than a few hours of training by my group. However, this required
considerable time and effort by the new users; the system is large and its use involves many steps.
A description of the system and an example of its use are given by Bahr et al. (1990).

The software may be obtained from me by request: telemail to e.firing/OMNET or Internet email
to efiring@soest.hawaii.edu. The standard distribution package includes all source code,
documentation, and a sample dataset illustrating all stages of processing. The source code is
internally documented and external documents have been written for many of the major
operations. These are now being assembled into a users manual that will describe
all data processing procedures.

B.1 Hardware

The UH system is designed to run on a variety of machines starting with a simple PC-compatible
and including VAX-VMS and most UNIX machines. The reasons for specifying this degree of
machine independence are:

The minimal configuration for the UH system is a PC with 640K of RAM, a math coprocessor,
and a 40-Mbyte hard disk. The system has been used extensively with such machines and
alsowith Sun-3 and Sun-4 machines. A Postscript-compatible laser printer is recommended for
plot output, although anHPGL plotter (laser is preferred, pen is usable) can also beused.
 

B.2 User interface

Most routines in the UH system are governed by ASCII control files that are designed for
readability and therefore help document the processing of each data set. All control files can
contain unlimited comments; standard sample control files start with a comment block that
explains the parameters in the file and gives examples. Each parameter (or list) in a control file is
preceeded by a descriptive key word, which identifies the parameter to both the machine and the
operator. Control files for complicated routines have optional parameters; when not needed for a
particular operation they can be omitted, shortening and simplifying the file.

Many routines also use intermediate ASCII data files that are also designed to be
human-readable, with headers and comments. For example, files listing satellite fixes are edited,
both mechanically and by hand, by prefixing the character "%" as a comment indicator to lines
with bad fixes that are to be ignored in future steps. Additional
comments can be used to explain why a fix was deemed bad.

One commercial program is used as part of the UH system. Matlab (by the MathWorks,
Inc.; available for the PC, 386-PC, Sun, Vax, and several others) provides easy plotting and
interactive calculations.

The first step in processing a new dataset with the UH system is to run a batch file (or
UNIX script) that builds a directory tree for the new dataset with subdirectories
for each of the processing steps. These subdirectories are then filled automatically with example
control files and Matlab program files (``m-files''). The operator need only
copy his raw data files into the appropriate subdirectory, modify the sample control files as
needed, and run the processing programs.
 

B.3 Database

A typical one-month cruise generates about 10 Mbytes of binary ADCP data which include many
variables, both scalars and arrays. The variables included in a dataset can change from one cruise
to another. The size and complexity of ADCP datasets therefore warrant the use of a database
system rather than a simple fixed file format. To fill this need, Ramon Cabrera, Julie Ranada, and
I have developed CODAS (Common Oceanographic Data Access System): a set of
machine-independent subroutines for the storage and retrieval of oceanographic and other
scientific data. It is designed for maximum storage efficiency combined with fast random or
sequential access. It is flexible enough to comfortably accommodate data from a wide variety of
instruments, such as the Acoustic Doppler Current Profiler (ADCP), the CTD, current meter
moorings, and pressure gauges, together with auxiliary observations and instrument configuration
parameters.

CODAS is hierarchical. Data are organized into profiles, each of which may consist of
several arrays (for example, one for each of three velocity components) and other data (flags, data
collection parameters, notes, etc.) Profiles are collected together in blocks, each of which is an
independent, self-describing unit of data. The internal description of each variable in a block
includes the name, units, and scale factors. A profile is located within a block via a profile
directory that is part of the block. Blocks are catalogued in a block directory.

A CODAS database contains only two kinds of files: a set of data block files, and a single
block directory file. The data block files are independent units and contain all the information
required to make a block directory file. Hence, data blocks from different sources can be
combined into a working database by running a utility program that generates a new block
directory file.

CODAS was written in C with care taken to make it portable among modern machines. It
has been used on IBM PC-compatibles, a VAX 750, an Alliant, and Sun workstations. Data
blocks are normally stored in the binary format of the machine on which they were created or are
actively being used. When moved to another machine and assembled into a new database, they
are automatically translated to the new binary format if necessary (as in going from a PC to a Sun,
for example).

Storage space is minimized. The user is free to use 1, 2, or 4 byte integers, floating point,
double precision, or ASCII. However, use of the most compact format for each variable is
encouraged, because the system (optionally) automatically converts and scales array data from
any number format to floating point when reading, and the reverse when writing. Storage space is
allocated as needed when the data are stored; there is no need to waste space by specifying fixed
array lengths, for example. The extensive directory structure adds only a few percent of storage
overhead.
 

B.4 Editing

The premises behind the UH editing system are:
 

The main problems to be removed by editing are usually limited to interference from the
bottom reflection in shallow water, interference from the hydrographic wire during CTD stations,
and diminishing accuracy at the bottom of the profile. With a poor installation or a poor choice of
setup parameters, it may also be necessary to reject data from the top depth bin(s).

In the UH system, suspect profiles or bin ranges are identified primarily by running a
program (``FLAG'') that tests each profile in a given time range for several conditions and writes
an ASCII file listing cases in which user-specified thresholds are exceeded. The variables being
checked include error velocity, the variance in the vertical of the vertical velocity component, the
signal strength, and the second vertical difference of each of the velocity components. Large
values of the error velocity coinciding with large second differences in the vertical velocity
component and in at least one of the horizontal velocity components indicate interference by
something like a hydrographic wire. On the Moana Wave, for example, this occurs occasionally
during CTD stations, is usually confined to a few depth bins among the top ten, and is usually
quite subtle---the horizontal velocity component glitches are typically only 5--10 cm/s. A local
maximum of the signal amplitude indicates either a scattering layer or the bottom, when the
bottom is deeper than about 30 m. When the bottom is very shallow it does not cause an
amplitude maximum, but it usually leads to high variance in the vertical velocity profile, hence our
use of this statistic.

After running the FLAG program, one normally uses Matlab to look at sequences of
profiles ("stagger plots") that are suspect, to make a final decision about what to edit. In many
cases the output of the FLAG program can be used with little modification to control the
programs that modify the database; in other cases a difficult judgement must be made.

Once the decisions have been made, editing is done on the database. In the case of bottom
interference, the appropriate portions of the FLAG output file are used to specify the last bin of
each profile for which velocity data will be considered valid, and this bin number is recorded in the
database with each profile. If there is a problem in the top depth bins, caused, for example, by
inadequate blanking interval or by ringing of the transducer installation, then the first bin of the
profile for which the data are acceptable may be recorded with each profile. Otherwise, by default
this is bin 1. When the velocity in individual bins is judged bad, a file listing these bad bins is used
to control a program that sets the appropriate bits in an array of flag bytes. (This is a recent
improvement in the system. Previously we set the actual velocity values themselves to a bad flag
value.)

Additional editing is normally done when the data are accessed. Typically one specifies a
percent-good criterion, and the access program flags as bad any velocities for which the recorded
percent-good is below the threshold. We usually use 30%.

Although our editing system is quite thorough, flexible, and effective, it can also be
confusing and difficult to use; we plan major improvements.
 

B.5 Calibration

Routines are available for both the bottom-track and the acceleration method of determining the
calibration factors. For the bottom track method the user must select the time ranges with
continuous bottom track and navigation data. An interactive Matlab routine is then used to edit
the navigation data and write the least-squares, best-fit calibration factors to a file. For the
acceleration calibration method, a program automatically selects the accelerations for which GPS
data are available and calculates the calibration factor for each acceleration. This is written to a
file along with quality statistics. This file is input to a Matlab routine which edits, plots, and writes
out a statistical summary.
 

B.6 Navigation

Position fixes, GPS or Transit, are automatically screened and merged by an editing program.
Rejected fixes are simply commented in the file, so that they can be manually reinserted if desired.
Additional manual editing is also done, in an iterative fashion, by commenting out questionable
fixes.

Calculation of absolute velocity profiles involves the intermediate calculation of the
absolute velocity of a reference layer (we use bins 5 to 20, about 50--170 m) in the usual way
(e.g., Kosro, 1985; Wilson and Leetmaa, 1988). Averaged between fixes, the velocity of the
reference layer is just the difference between the velocity of the ship over the ground, determined
from the fixes, and the velocity of the ship relative to the reference layer, from the ADCP
profiles. This initial estimate of the reference layer velocity, which is constant between fixes, is
then smoothed by convolution with a Blackman window function w(t) (Blackman and Tukey,
1958) of width T,

w(t) = 0.42 - 0.5 cos(2pi t/T) + 0.08 cos(4pi t/T).

Since the function being filtered is piecewise constant, the convolution can be evaluated efficiently
by analytic integration over each constant piece. The choice of filter width depends on the
characteristics of the data: the quality of the fixes and the expected amplitude and time scales of
the currents being surveyed. When GPS is good and there are small-scale current features of
interest, T might be as short as 15 minutes. In the worst case of poor Transit quality and no GPS,
T can be up to 12 hours.

Our method of smoothing the reference layer velocity is probably not optimal in many
cases; its main virtue is simplicity. The biggest problem is that it does not take into account
nonuniform motion of the ship; smoothing is done in the time domain only. In a region of large
spatial current gradients, this guarantees errors when the ship changes course or stops for a
station. Usually this error has little effect on the outcome of data analysis. The problem is likely to
be worst, and hardest to fix with a simple algorithm, when the ship reverses course in a region of
large along-track gradient of the cross-track current---for example, when approaching a coast
along which flows a western boundary current. Time-domain smoothing of the reference layer
velocity then causes a systematic underestimate of the maximum speed of the current.

Estimates of reference layer velocity as a function of time are plotted routinely (using
Matlab) in 2-day intervals along with the ship's position. This reveals outlying fixes or intervals of
bad GPS that have to be edited out, and also helps one choose a smoothing filter width. The plots
resulting from the final iteration of this process serve to document some important aspects of the
ADCP data set: the spatial coverage, the quantity and quality of position fixes, and the degree to
which major current features have been resolved by the smoothed reference layer estimate.

The smoothed estimate of the reference layer velocity over the ground is added to the
velocity of the ship relative to the reference layer to give the final estimate of the ship's velocity,
which is then integrated over each interval of nearly continuous ADCP data and fit to the
ensemble of position fixes within the interval to generate the ship's track. The ship's position and
velocity for each profile are written back to the ADCP database. We could add the ship's velocity
to the velocity profile and store the resulting estimated absolute profile, but for the present we
choose instead to do this calculation as needed when plotting and analyzing the data.
 

B.7 Gridding and plotting

ADCP profiles typically give velocity estimates at nominal 8-m intervals in the vertical. We use
nearby CTD profiles, when available, to correct these depths for the difference between nominal
and true sound speed. Additionally, the profiles are interpolated to any user-specified grid in
depth or density coordinates. The interpolation can be done using integration to reduce aliasing
and to give an average velocity over a given layer. The integrated velocity is also available for use
in transport calculations.

In the horizontal, one typically wants to average profiles in latitude or longitude bins. The
approach taken by the UH system involves two steps. First, a program searches the database to
find the time ranges corresponding to user-specified latitude-longitude grid. Second, these time
ranges (edited or modified if necessary) are used to control the data access and averaging process.
Additionally one may specify the use of only underway data or only on-station data. Another
option is to calculate transport by integrating horizontally.
Standard plots for viewing the data are of two types: vector maps and contoured sections.

For the former we use Matlab or a custom vector mapping program. For contouring we use a
dedicated contour program. The vector and contour programs, unlike the rest of the processing
system, have not yet been adapted and compiled on a PC; we usually run them on a Sun
workstation with hardcopy from a Postscript printer.