# HG changeset patch # User A.M. Thurnherr # Date 1431003763 0 # Node ID e5731cc26b5b648c4d7b30c106ebfd48556a54cf # Parent dd5b67a41791e2f2ac07cf8cb8b14c5258b29890 V1.3 release candidate diff --git a/.hgignore b/.hgignore --- a/.hgignore +++ b/.hgignore @@ -1,11 +1,13 @@ #====================================================================== -# . H G R C +# . H G I G N O R E # doc: Tue May 15 18:38:20 2012 -# dlm: Tue May 15 18:38:20 2012 +# dlm: Thu May 7 12:51:58 2015 # (c) 2012 A.M. Thurnherr -# uE-Info: 3 11 NIL 0 0 72 0 2 4 NIL ofnI +# uE-Info: 13 0 NIL 0 0 72 0 2 4 NIL ofnI #====================================================================== syntax: glob non_public/ +Makefile + diff --git a/Documentation/README b/Documentation/README new file mode 100644 --- /dev/null +++ b/Documentation/README @@ -0,0 +1,83 @@ +====================================================================== + R E A D M E + doc: Tue May 15 18:10:40 2012 + dlm: Thu May 7 13:02:10 2015 + (c) 2012 A.M. Thurnherr + uE-Info: 78 38 NIL 0 0 72 3 2 8 NIL ofnI +====================================================================== + +This directory contains a re-implementation of the shear method for +LADCP velocity processing, written and copyrighted by A.M. Thurnherr; +the appropriate reference is Thurnherr [J. Tech., 2012, DOI: +10.1175/JTECH-D-11-00158.1]. + +Essentially, the software is a re-implementation of the shear method +for LADCP velocity processing. Data editing borrows heavily from Eric +Firing's c/Matlab/perl code that was used extensively during the later +stages of the WOCE. However, some of the algorithms were simplified. +In particular, + +1) a much simpler gridding algorithm is used, and +2) there is no support for using GPS data for velocity referencing. + +In regions of good scattering, the shear output from this software when +applied to data collected with current RDI instruments can be expected +to be very similar to the corresponding output from Eric's code with +PPI editing disabled, except that the high wavenumbers are considerably +less damped in this re-implementation (see Thurnherr [2012]). In +regions of bad scattering, this software simply leaves gaps in the +shear profiles whereas Eric's code uses a low-pass filtered version of +the shear to interpolate across gaps in the high-resolution profiles. + +While this software can be used to integrate LADCP shear data +vertically to calculate velocity profiles, velocity referencing must be +done with a single partial-depth velocity profile (e.g. from BT or +SADCP data). While the resulting profiles of absolute ocean velocity +are useful and very easily obtainable "first guesses", much better +profiles can typically be obtained by applying multiple simultaneous +referencing constraints with the the Shear Inversion method [Thurnherr, +J. Tech., 2010; DOI: 10.1175/2010JTECHO708.1]. + +THIS SOFTWARE CAN BE FREELY USED AND COPIED FOR EDUCATIONAL OR OTHER +NOT-FOR-PROFIT PURPOSES. + +Currently, limited documentation is provided in the following set of +files: + +[README] This overview + +[README.Install] Software installation instructions + +[README.ProcessData] A HowTo for obtaining shear, as well as relative + and absolute velocity profiles from CTD/LADCP + data + +[README.TimeLagging] The most common problem encountered during + processing of CTD/LADCP data with this software + is failure of the CTD/LADCP time-lagging + routine. This Readme provides additional + information and tips for how to solve + time-lagging problems. + +[README.Output] A description of the various files produced by + this software + +[README.PostEdit] A HowTo for post-editing shear with different + statistics, e.g. to filter data collected with + the ADCP very close to the surface, where the + ship's magnetic field can degrade the compass + data. Also describes how the shear data can be + gridded with statistics other than simple + arithmetic mean. + +[README.YoYo] Notes on how to process data from "non-standard" + casts, such as yoyo's and tow-yo's. + +[Slocum-Explorer_HowTo.pdf] Cookbook describing how to process + velocity data collected with Explorer ADCPs on + Slocum gliders + +NOTE: Most of the source files use a hard tab of 4 spaces, i.e. they +can be viewed correctly, e.g. with "less -x4". + + diff --git a/Documentation/README.Install b/Documentation/README.Install new file mode 100644 --- /dev/null +++ b/Documentation/README.Install @@ -0,0 +1,47 @@ +====================================================================== + R E A D M E . I N S T A L L + doc: Tue May 15 18:42:56 2012 + dlm: Fri Jun 15 07:36:52 2012 + (c) 2012 A.M. Thurnherr + uE-Info: 46 67 NIL 0 0 72 3 2 4 NIL ofnI +====================================================================== + +=Processing Software= + +The re-implemented shear method is written entirely in perl and requires +the following sub-modules to be installed: + +ADCP_tools a set of tool and libraries to deal with RDI BB ADCP data; + available via link from http://www.ldeo.columbia.edu/LADCP + +ANTSlib a library for dealing with the ANTS ASCII file format; + available via link from http://www.ldeo.columbia.edu/LADCP + +LADCPproc this software; available via link from + http://www.ldeo.columbia.edu/LADCP + +The code runs with version 5.12.4 of perl or later but it may well work +with older versions, too. It is recommended that these three modules are +installed in three separate directories. + +In addition to the core modules listed above, the software also +requires Eric Firing's geomag code (written in c) that is available +from http://currents.soest.hawaii.edu/hg. + +The only step required to set up the software is to add the directories +of the ADCP_tools, ANTSlib, LADCPproc, and geomag to the search path --- +refer to the manual of your shell on how to accomplish this. + +To test correct setup of the software, simply call [LADCPproc] in the +directory where you intend to process the LADCP data. If the software +has been correctly installed, the usage of [LADCPproc] will be +produced. + + +=Matlab Interface= + +As described in [README.Output], all output produced by this software is +in a proprietary ASCII format called ANTS. In order to import/export +ANTS files into/from Matlab the module Matlab_tools is required. This, +too, is available via link from http://www.ldeo.columbia.edu/LADCP. + diff --git a/Documentation/README.Output b/Documentation/README.Output new file mode 100644 --- /dev/null +++ b/Documentation/README.Output @@ -0,0 +1,77 @@ +====================================================================== + R E A D M E . O U T P U T + doc: Tue May 15 19:17:50 2012 + dlm: Fri Jun 15 07:39:19 2012 + (c) 2012 A.M. Thurnherr + uE-Info: 44 0 NIL 0 0 72 3 2 8 NIL ofnI +====================================================================== + +This README describes the output produced by [LADCPproc] and +[LADCPintsh]. + + +=File Format and Interface with Matlab= + +All output files produced by [LADCPproc] and [LADCPintsh] are in a +proprietary undocumented ASCII format, called ANTS. To important and +export ANTS files into and from Matlab, the Matlab_tools are required +(see [README.Install]). + +To import the ANTS file <013DL.sh> into Matlab, use + + sh = loadANTS('013DL.sh'); + +The resulting structure will contain Metadata as scalars and the data +from each field in a suitably named vector. + +To export the suitable Matlab structure as the ANTS file +<013DL.shprof>, use + + struct2ANTS(binned_sh,'013DL.sh','013DL.shprof'); + +The second argument defines a dependency (the file <013DL.shprof> should +be re-made when <013DL.sh> changes). + + +=[LADCPproc] Output= + +The STDOUT of [LADCPproc] consists of a list of all shear samples --- +essentially a time-depth-series (.tds) of shear values. If this output +is not required, STDOUT can be redirected to /dev/null. + +The STDERR of [LADCPproc] consists of the diagnostic output. This output +should be captured into a log file. This is much easier with standard +(bash, Korn, Bourne) shells than with csh derivates. + +Additional output is produced with the following options: + + -p write a binned shear profile file that can be fed + directly to [LADCPintsh] to create a relative + (baroclinic) velocity profile + + -b write a bottom-track file that can be fed directly to + [LADCPintsh] (-r option) to reference the baroclinic + velocity profile + + -t write a time-series file, which is useful primarily for + diagnosing problems with the time-lagging of CTD and + LADCP data + + -f write a file with all the velocity editing flags + + -a write a .dts file of the acoustic backscatter + + -k write bottom track profiles (as a single file) + + +=[LADCPintsh] Output= + +The STDOUT of [LADCPintsh] consists of a velocity profile created from +the vertically integrated shear and possibly referenced by an external +velocity profile. + +The STDERR of [LADCPintsh] consists of minimal diagnostic output. + +On -s, additionally the shear profile is written to a file just before +integration. This is primarily useful for combining shear data from +down- and uplooking ADCPs. diff --git a/Documentation/README.PostEdit b/Documentation/README.PostEdit new file mode 100644 --- /dev/null +++ b/Documentation/README.PostEdit @@ -0,0 +1,95 @@ +====================================================================== + R E A D M E . P O S T E D I T + doc: Wed Jun 13 20:30:10 2012 + dlm: Thu Jun 14 18:22:13 2012 + (c) 2012 A.M. Thurnherr + uE-Info: 95 50 NIL 0 0 72 3 2 8 NIL ofnI +====================================================================== + +=Summary= + +This README explains how to post-edit the shear output from b[LADCPproc] +before feeding it to [LADCPintsh], e.g. for removing data collected when +the ADCP was very shallow and possibly affected by the ship's magnetic +field. + + +=Nitty-Gritty= + +The default output from [LADCPproc] is a so-called time-depth-series +(.tds) file with one record per valid shear sample. Each record +contains the following fields: + +ens ensemble number the shear sample is from +elapsed elapsed time in seconds of the present ensemble +CTD_depth depth of CTD at the time the ensemble was recorded +downcast a boolean flag set to 1 (nan) for down(up)cast records +depth "nominal" depth of shear sample (center depth in gridded profile) +u_z vertical shear of zonal velocity +v_z vertical shear of meridional velocity +w_z vertical shear of vertical velocity + +This is the "general" output of [LADCPproc]. For standard processing, +the shear is bin-averaged in depth space. While this can easily be +accomplished, e.g. with a Matlab script, for convenience the binned +output can be requested with the -p option of [LADCPproc]. The binned +output cannot be post-edited! + +The .tds data can be post-edited. Matlab users can import these files +with [loadANTS.m] (see [README.Output]), edit the structures, bin the +shear in depth space, and export the new structures as ANTS files with +[struct2ANTS.m]. For example, to remove all data collected with the +ADCP shallower than 5m, simply delete the records for which CTD_depth +<= 5. Or, you can bin your shear data with different statistics (e.g. +median), instead of the arithmetic mean used by [LADCPproc] -p. + +Inconveniently, [LADCPintsh] at present requires its shear input to be +in the format generated by the -p option of [LADCPproc], with the +following fields (Matlab version): + +depth center depth of bin +dc_elapsed mean elapsed time of downcast shear samples in present bin +dc_nsamp number of downcast shear samples in bin +dc_u_z bin-averaged downcast vertical shear of zonal velocity +dc_u_z_sig corresponding standard deviation +dc_v_z same for meridional velocity +dc_v_z_sig +dc_w_z same for vertical velocity +dc_w_z_sig +uc_elapsed mean elapsed time of upcast shear samples in present bin +uc_nsamp number of upcast shear samples in bin +uc_u_z bin-averaged upcast vertical shear of zonal velocity +uc_u_z_sig corresponding standard deviation +uc_v_z same for meridional velocity +uc_v_z_sig +uc_w_z same for vertical velocity +uc_w_z_sig +elapsed mean elapsed time of mean dn/upcast shear samples in present bin +nsamp number of mean dn/upcast shear samples in bin +u_z bin-averaged mean dn/upcast vertical shear of zonal velocity +u_z_sig corresponding standard deviation +v_z same for meridional velocity +v_z_sig +w_z same for vertical velocity +w_z_sig +Sv bin-averaged acoustic volume scattering coefficient +Sv.nsamp number of samples in bin + +Note that the .tds file does not contain acoustic backscatter +information, i.e. the Sv field should be set to nan and the Sv.nsamp to +zero. + +After binning the shear data, Matlab users can create a structure with +the fields listed above. Metadata (scalars in the .tds import +structure) should be copied verbatim from the .tds import structure. +Each of the listed fields is a vector and they must all have the same +length. (Since the down- and upcasts do not usually cover exactly the +same depth range, padding is almost always required.) The resulting +structure can then be exported with [struct2ANTS.m]; the 'dependencies' +argument should be set to the filename(s) of the .tds file(s) from +which the binned shear profile was constructed. + +The only option for non-Matlab users is to create an ASCII file with +the required columns (nan values are permitted) in the order listed +above and prepend this with the header from the corresponding +[LADCPproc] output file produced by the -p option. diff --git a/Documentation/README.ProcessData b/Documentation/README.ProcessData new file mode 100644 --- /dev/null +++ b/Documentation/README.ProcessData @@ -0,0 +1,158 @@ +====================================================================== + R E A D M E . P R O C E S S D A T A + doc: Tue May 15 18:49:00 2012 + dlm: Fri Jul 12 12:07:38 2013 + (c) 2012 A.M. Thurnherr + uE-Info: 118 71 NIL 0 0 72 75 2 8 NIL ofnI +====================================================================== + +=Overview= + +This README describes how to obtain profiles of vertical shear and +velocity from CTD/LADCP data. It assumes that all of the required +software has been installed (see [README.Install]). + +The re-implemented shear method software provides two commands: + +[LADCPproc] This utility produces LADCP shear data from a raw ADCP + data file and the corresponding CTD time series. + Additionally, it can create profiles of acoustic + backscatter, as well as BT-referenced velocity + profiles near the seabed from downlooking ADCPs. + +[LADCPintsh] This utility produces profiles of horizontal velocity + from the [LADCPproc] shear output. BT profiles (from + [LADCPproc] or from the LDEO_IX inversion software) or + SADCP profiles (manually constructed) can be used to + reference the velocity profiles. + +For non-standard processing, the shear output from [LADCPproc] can be +post-edited before gridding, e.g. in order to filter data collected at +very shallow depths when the ADCP may be affected by the magnetic field +of the surface vessel (see [README.PostEdit] for details). + + +=DATA REQUIREMENTS= + +ADCP DATA: The software reads binary RDI BB ADCP files from both down- +and upward-looking ADCPs. Clock setting of the ADCP is not important. + +CTD DATA: LADCP processing requires a CTD-derived time series of +pressure, temperature and salinity. Optionally, it is recommended that +an elapsed time field is supplied. A time resolution of 1Hz is +recommended. The software is capable of reading both binary and ASCII +SeaBird .cnv files with lat/lon information in the header and with the +following fields: timeS, prDM, t090C and/or t190C, sal00 and/or sal11. +Alternatively, the CTD time series can be supplied as an arbitrary +headerless ASCII CTD file with the same information, as described in +[LADCPproc.defaults]. + + +=CALCULATE LADCP SHEAR PROFILE= + +The following simple example shows how to create separate shear profiles +from an upward- and a downward-looking ADCP, as well as a BT-referenced +velocity profile near the seabed: + +Input files: + 001DL000.000 downlooker ADCP file + 001UL000.000 uplooker ADCP file + 001.cnv CTD file + +LADCPproc -p 001DL.sh -b 001.BT 001DL000.000 001.cnv > /dev/null + - this example creates two files, 001DL.sh (shear profiles) and + 001.BT (bottom-track data) + - the default output (STDOUT) from [LADCPproc] is a list of + valid shear samples, which is ignored (sent to /dev/null) in + this example + - it is recommended that the diagnostic output (STDERR) is + captured in a log file; refer to the manual of your shell on + how to accomplish this + +LADCPproc -p 001UL.sh 001UL000.000 001.cnv > /dev/null + - this example creates one file, 001UL.sh (shear profiles) + + +In this simple example, processing is carried out with standard +parameters. Some of the important parameters can be modified with +[LADCPproc] options, which are listed when [LADCPproc] is ran without +input parameters. The following are the most important [LADCPproc] +options: + -d generate diagnostic output (recommended) + -r use RDI BT data instead of echo amplitudes to find + seabed and determine CTD velocity + -o output grid resolution (defaults to 5m) + -p generate shear profile output + -b generate BT output + -s read additional non-default processing parameters + from + +However, there are many more processing parameters than can be modified +with options --- a full list with comments can be found in +[LADCPproc.defaults]. To change any of the default parameter values, +create a perl-file with variable assignments (see [LADCPproc.defaults] +for syntax) and use the -s option in [LADCPproc]. + + +=CALCULATE LADCP VELOCITY PROFILE= + +Given the output from the above steps, different full-depth velocity +profiles can be produced as follows: + +LADCPintsh 001DL.sh > 001DL.bc + - this creates baroclinic (zero vertical mean) velocity profile + from the DL shear data + +LADCPintsh -r 001.BT 001DL.sh > 001DL.vel + - this creates a BT-referenced absolute velocity profile from + the DL shear data + +LADCPintsh -r 001.BT 001UL.sh > 001UL.vel + - this creates a BT-referenced absolute velocity profile from + the UL shear and the DL BT data + - note that no -u is required in this case! + +LADCPintsh -r 001.BT -u 001UL.sh 001DL.sh > 001.vel + - this creates a BT-referenced absolute velocity profile from + the combined DL/UL shear data + - note that -u is only required if both UL and DL data are used + +It is also possible to use SADCP data to reference the velocity +profiles, although it is up to the user to create an input data file +in one of the supported formats. Note that it is *not* possible to use +multiple simultaneous referencing constraints with [LADCPintsh]. + +The following are common [LADCPintsh] options: + -u use uplooker shear (in addition to downlooker, + which is always used) + -r use reference-velocity data to reference baroclinic + velocity profiles; the following file formats + are supported 1) bottom-track output produced by + the -b option of [LADCPproc], 2) bottom-track + output produced by the LDEO processing software + (.bot files). SADCP data can be used, too, but + they have to be supplied in one of the two + supported file formats. + -n set minimum number of shear samples to use + -m set minimum BT samples to use + + +=QUALITY CHECKS= + +After processing, the quality of the resulting profiles must be +assessed. The following steps are recommended: + +1) Compare the down- and up-cast profiles of velocity. Vertical +velocity is particularly useful in this context as problematic casts +often show a striking "X" pattern. + +2) Inspect the standard deviation profiles of the binned shear and +determine (by comparison with similar data) whether the standard +deviations have the correct magnitude. + +3) Calculate and compare independent solutions from the uplooker and +downlooker data. This will only validate the baroclinic velocities (i.e. +the vertical shear). + +4) Compare to velocity profiles calculated with different software (e.g. +with the LDEO_IX velocity inversion code). diff --git a/Documentation/README.TimeLagging b/Documentation/README.TimeLagging new file mode 100644 --- /dev/null +++ b/Documentation/README.TimeLagging @@ -0,0 +1,106 @@ +====================================================================== + R E A D M E . T I M E L A G G I N G + doc: Fri Oct 19 10:08:19 2012 + dlm: Fri Oct 19 12:13:59 2012 + (c) 2012 A.M. Thurnherr + uE-Info: 106 0 NIL 0 0 72 3 2 8 NIL ofnI +====================================================================== + +=Introduction= + +In order to derive velocity profiles the data from the CTD and LADCP +instruments need to be merged. This is accomplished by calculating lag +correlations between the two corresponding time series of vertical +velocities calculated from the two instruments. In this software, the +time lagging is accomplished WITHOUT regard of the clock time reported +by the instruments, i.e. the instrument clocks do not have to be +synchronized. Instead of clock time, elapsed time in seconds is used. In +case of the CTD data, an elapsed time field can be supplied by the user +(see [README.ProcessData]); in case of the LADCP data, the +"elapsed-time" field is calculated by the software. The "elapsed-time" +fields in the processing output are always consistent with the CTD +elapsed times. While the time-lagging algorithm implemented in the +software is fairly robust, it has been known to fail. Possible reasons +include: + +1) CTD PRESSURE SPIKES. Significant pressure spikes must be removed +prior to processing, *without* adding or removing CTD time-series +records. + +2) LACK OF SURFACE VESSEL MOTION. If there is no surface-wave motion +affecting the vessel, time lagging is much more difficult. In rare +cases, time lagging must be carried out manually (see below). + +3) MISSING CTD SCANS. For SeaBird 911 systems, if the connection +between the CTD and the deck box is not clean CTD scans will be +dropped. For the software, this looks like the CTD clock running faster +than the ADCP clock. There are cases where the CTD clock appears to +have gained more than 5 seconds during a 2000m-deep cast. + +4) MULTIPLE CTD FILES. When CTD acquisition is restarted during a cast, +multiple files are created. In order to process the LADCP data from such +a cast, a CTD time-series file without any missing records must be +constructed manually. + + +=Solving Time-Lagging Problems= + +While there are several run-time options that can be used to help the +time-lagging algorithm, detailed knowledge of the algorithm is required +to understand when and how to use these options, i.e. the user is +referred to the code and comments in [LADCPproc.bestLag]. However, the +following method can always be used to solve time-lagging problems, as +long as the CTD time series does not have any gaps. + + +-Step 1: Produce and Plot a Combined CTD/LADCP Time-Series File- + +This is accomplished by processing the data with the "-l 0" option and +using "-t " to produce the file. Plot the resulting +time series of CTD_w and LADCP_w in the same panel. The plot should +show immediately whether there are problems with the CTD pressure data +(spikes). Often, standard processing works after setting any bad +pressure values to nan. + + +-Step 2: Manually Determine an Approximate Time Lag- + +Use the output file generated in step 1 to determine how many seconds +have to be added to the elapsed field when plotting LADCP_w to bring +the two time series into approximate (a few seconds accuracy) +agreement. Often, the data can now be processed normally by using "-i +". + + +-Step 3: Manually Determine an Accurate Time Lag- + +If preprocessing with the -i option still does not succeed, time lagging +must be carried out manually. If this happens, there is most likely a +serious problem with either the CTD or LADCP data that should be solved +before proceeding. This is done exactly as in step 2 but to higher +accuracy (as high as you can). Once the best lag has been determined +manually, the data can be reprocessed with the "-l " option. + + +After solving any time-lagging problems the results should be checked by +creating a time-series file (with -t) during final processing and +overplotting the LADCP_w and CTD_w time series. If there is still a +visible lag between the time series time lagging was not carried out +correctly. + + +=Patching Together CTD Time-Series Files= + +The LADCP processing software requires the CTD data to be supplied as a +single time series file with a constant sampling interval. When CTD +data acquisition is restarted during a cast, multiple files are +produced. The resulting files cannot simply be pasted together because +the resulting time series would have gaps. The only way to solve this +problem is to determine separate time lags for each of the CTD files +manually (using the method described above). The difference between the +resulting time lags is equal to the length of the gap between the two +files. The user can now create a dummy (all fields set to nan) CTD file +with required number of records that must be added between the CTD +files to create a single continuous regularly-space time series. +Fractional seconds can be ignored. diff --git a/Documentation/README.YoYo b/Documentation/README.YoYo new file mode 100644 --- /dev/null +++ b/Documentation/README.YoYo @@ -0,0 +1,74 @@ +====================================================================== + R E A D M E . Y O Y O + doc: Fri Aug 10 07:07:59 2012 + dlm: Fri Oct 19 11:05:29 2012 + (c) 2012 A.M. Thurnherr + uE-Info: 56 0 NIL 0 0 72 3 2 8 NIL ofnI +====================================================================== + +=Overview= + +This README contains notes on how to process data from non-standard +casts, such as yo-yos (consecutive down-up casts collected at a given +location without restarting the instruments) and tow-yos (yo-yos +carried out while vessel is in slow motion). + +Processing of yo-yo and tow-yo data requires the following two steps: + 1. Split the data files into individual down-upcast pairs + 2. Process the resulting files as described in [README.ProcessData] + +It is important to note that yo-yo and tow-yo casts can be full depth +(i.e. between the sea surface and the sea bed) or partial-depth. If +absolute velocities (rather than just vertical shear) are required for +partial-depth casts, the user must make sure that there are either BT +data or SADCP data available for velocity referencing of each +down-upcast pair. Essentially this means that each down-upcast pair +must extend down to near the seabed or up into the depth range where +SADCP data are available. + + +=Step 1: Splitting the Data Files= + +Both data files must be split between individual down-upcast pairs, i.e. +whenever the CTD winch switches from up to down. + +CTD DATA: First, find the CTD splitting times by plotting depth vs. +elapsed time. Then, split the CTD data into separate files using any +text editor. If SeaBird CNV files are use, the same header can be used +for all output files. + +ADCP DATA: There is an ADCP file splitting utility for M$ Windows +provided by RDI. Alternatively, the length of each ensemble can be read +from the binary ADCP files and the UN*X utilities "split -b" and "cat" +can be used to split the files into the required chunks. + + +=Step 2: Processing the Split Data Files= + +The split data files, each containing data from exactly one consecutive +down- and up-cast, can be processed exactly as described in +[README.ProcessData]. If the CTD time-series data used during +processing has an "elapsed-time" field all output elapsed times are +consistent with this input, i.e. the elapsed times of the output casts +are relative to the beginning of the entire yo-yo or tow-yo cast. +Otherwise, every down-/up-cast pair gets its own elapsed-time field. + +Usually, in standard LADCP processing the velocity data from the down- +and upcast are combined. While this smears out any information on the +temporal variability of the velocity field during the cast, down- and +upcast only profiles are necessarily derived from much fewer samples +and, therefore, associated with considerably larger uncertainties and +errors. It has been found, in particular, that the top-to-bottom shear +in down-/upcast-only profiles is often quite bad. In the context of +partial-depth yo-yo and tow-yo profiles the severity of this problem +can be evaluated by comparing two consecutive velocity profiles at +their "unconstrained" end. E.g., in case of a partial-depth yo-yo near +the seabed, i.e. constrained with BT data, the uppermost portion of the +first upcast can be compared to the uppermost portion of the 2nd +downcast, etc. If the errors are found to be unacceptably high, the +velocity profiles from the combined down-/upcast data should be used +instead. Alternatively, multiple simultaneous velocity referencing +constraints can be applied, e.g. using the shear-inversion method +described by Thurnherr (JAOT 2010). + + diff --git a/Documentation/Slocum-Explorer_HowTo.pdf b/Documentation/Slocum-Explorer_HowTo.pdf new file mode 100644 index 0000000000000000000000000000000000000000..2d98584191f622b371628c3e6ea7b0a3a0d8ce32 GIT binary patch literal 60655 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 diff --git a/Documentation/TODO b/Documentation/TODO new file mode 100644 --- /dev/null +++ b/Documentation/TODO @@ -0,0 +1,58 @@ +====================================================================== + T O D O + doc: Thu Oct 14 09:15:02 2010 + dlm: Wed Jun 15 15:16:20 2011 + (c) 2010 A.M. Thurnherr + uE-Info: 40 0 NIL 0 0 72 3 2 4 NIL ofnI +====================================================================== + +=LADCPintsh= + +- determine what constitutes a gap +- look into cross-gap shear integration + + +=LADCPproc= + +- allow setting of GRID_DZ (-o) in ProcessingParams + +- add warnings: + - wide band + - CTD_W_BIT (ambiguity velocity) + - bad time match + - seabed not found + - inconsistent water depth + +- add diagnostic plots + +- output shear vals to make histograms + +- try median instead of mean for shear binning + +- add pitch/roll to BT + +- check interaction between 3-beam solutions and correlation limit + +- implement TILT_BIT (others?) + +- calculate real acoustic backscatter profile + - currently, profiles are arbitarily calculated from bins 3-9 + +- clean up LADCPproc.UHcode: + - remove weirdnesses + - avoid multiple calculation of &depthOfBin() + - improve "staging": + 1) basic velocity editing (BADVEL, ERRVEL, CORREL) NB: before + beam-to-Earth transformation!!! + 2) ref-lr w (also handle W_BIT editing?) + 3) integrate w to get z_approx + 4) match LADCP to CTD time series + 5) make accoustic backscatter profile + 6) find seabed + 7) sidelobe & PPI editing + 8) ref-lr u,v,w + 9) WAKE editing + 10) SHEAR editing + 11) ref-lr u,v,w + +- re-add time-series calculation diff --git a/HISTORY b/HISTORY deleted file mode 100644 --- a/HISTORY +++ /dev/null @@ -1,62 +0,0 @@ -====================================================================== - H I S T O R Y - doc: Tue May 15 18:04:39 2012 - dlm: Sun Jul 27 16:21:46 2014 - (c) 2012 A.M. Thurnherr - uE-Info: 61 7 NIL 0 0 72 3 2 8 NIL ofnI -====================================================================== - -May 15, 2012: - - V1.0beta [.hg/hgrc] - - began history - - uploaded current version to server for use with first version - of re-implemented shear method - -May 16, 2012: - - V1.0beta2 [.hg/hgrc] - - added ANTSlib to doc - -May 16, 2012: - - V1.0beta3 [.hg/hgrc] - - bug fixes for shallow casts [LADCPproc.backscatter] - - added support for -r)DI BT data - -May 17, 2012: - - V1.0beta4 [.hg/hgrc] [LADCPproc.version] - - minor improvements - - relaxation of profile-depth consistency check [LADCPproc] - -May 18, 2012: - - V1.0beta5 [.hg/hgrc] [LADCPproc.version] - - fixed bug in [LADCPproc.bestLag] (windowing was off) - - reduced implausibly short cast threshold from 10 to 5 mins - -May 25, 2012: - - V1.0beta6 [.hg/hgrc] [LADCPproc.version] - - added code to allow reading LDEO_IX BT data to [LADCPintsh] - -Jun 13-15, 2012: - - V1.0beta7 [.hg/hgrc] [LADCPproc.version] - - added CTD_depth to [LADCPproc] default output (.tds) - - wrote [README.PostEdit] - - in [LADCPintsh] renamed -b to -r - - major work on documentation [README] - -Aug 10, 2012: - - added [README.YoYo] - -Oct 19, 2012: - - V1.0beta8 [.hg/hgrc] [LADCPproc.version] - - fixed bugs in [LADCPproc.loadCTD] [LADCPproc.bestLag] - - added [README.TimeLagging] - - updated docu - -Jul 12, 2013: - - V1.1 [.hg/hgrc] [LADCPproc.version] - - various improvements - - DEFAULT VALUES PREVENTS EXTRACTION OF BT DATA - -Aug 6, 2013: - - V1.2 [.hg/hgrc] [LADCPproc.version] - - bug fixed in [LADCPproc.defaults] - diff --git a/LADCPproc b/LADCPproc --- a/LADCPproc +++ b/LADCPproc @@ -2,9 +2,9 @@ #====================================================================== # L A D C P P R O C # doc: Thu Sep 16 20:36:10 2010 -# dlm: Tue Aug 5 14:39:26 2014 +# dlm: Fri Mar 6 19:02:59 2015 # (c) 2010 A.M. Thurnherr -# uE-Info: 410 82 NIL 0 0 72 10 2 4 NIL ofnI +# uE-Info: 116 0 NIL 0 0 72 10 2 4 NIL ofnI #====================================================================== # NOTES: @@ -104,11 +104,15 @@ # - added -v to allow calculation of package velocity # Aug 5, 2014: - BUG: (bad one, too): ref_lr_w called from mk_prof had edited some of the # horizontal velocity data, which were nevertheless used later on!!! +# Mar 6, 2015: - adapted to ANTS V6 (library versioning) ($ANTS) = (`which ANTSlib` =~ m{^(.*)/[^/]*$}); ($PERL_TOOLS) = (`which mkProfile` =~ m{^(.*)/[^/]*$}); ($LADCPPROC) = ($0 =~ m{^(.*)/[^/]*$}); +$antsSummary = "$version -- process LADCP data to get shear, time series"; +$antsMinLibVersion = 6.0; + require "$ANTS/ants.pl"; require "$ANTS/libEOS83.pl"; require "$ANTS/libstats.pl"; @@ -125,8 +129,6 @@ $ANTSLIBS = $LADCPPROC; # for -L libraries -$antsSummary = "$version -- process LADCP data to get shear, time series"; - $antsParseHeader = 0; &antsUsage('24a:b:c:df:g:i:kl:n:o:p:rs:t:u:v:w:z',2, '[use -2)dary CTD sensor pair]', diff --git a/LADCPproc.version b/LADCPproc.version --- a/LADCPproc.version +++ b/LADCPproc.version @@ -1,9 +1,9 @@ #====================================================================== # L A D C P P R O C . V E R S I O N # doc: Thu May 17 07:18:44 2012 -# dlm: Tue Aug 6 20:58:33 2013 +# dlm: Thu May 7 12:55:59 2015 # (c) 2012 A.M. Thurnherr # uE-Info: 9 16 NIL 0 0 72 0 2 4 NIL ofnI #====================================================================== -$version = 'V1.2'; +$version = 'V1.3'; diff --git a/README b/README deleted file mode 100644 --- a/README +++ /dev/null @@ -1,79 +0,0 @@ -====================================================================== - R E A D M E - doc: Tue May 15 18:10:40 2012 - dlm: Sat Mar 16 13:27:24 2013 - (c) 2012 A.M. Thurnherr - uE-Info: 18 14 NIL 0 0 72 3 2 8 NIL ofnI -====================================================================== - -This directory contains a re-implementation of the shear method for -LADCP velocity processing, written and copyrighted by A.M. Thurnherr; -the appropriate reference is Thurnherr [J. Tech., 2012, DOI: -10.1175/JTECH-D-11-00158.1]. - -Essentially, the software is a re-implementation of the shear method -for LADCP velocity processing. Data editing borrows heavily from Eric -Firing's c/Matlab/perl code that was used extensively during the later -stages of the WOCE. However, some of the algorithms were simplified. -In particular, - -1) a much simpler gridding algorithm is used, and -2) there is no support for using GPS data for velocity referencing. - -In regions of good scattering, the shear output from this software when -applied to data collected with current RDI instruments can be expected -to be very similar to the corresponding output from Eric's code with -PPI editing disabled, except that the high wavenumbers are considerably -less damped in this re-implementation (see Thurnherr [2012]). In -regions of bad scattering, this software simply leaves gaps in the -shear profiles whereas Eric's code uses a low-pass filtered version of -the shear to interpolate across gaps in the high-resolution profiles. - -While this software can be used to integrate LADCP shear data -vertically to calculate velocity profiles, velocity referencing must be -done with a single partial-depth velocity profile (e.g. from BT or -SADCP data). While the resulting profiles of absolute ocean velocity -are useful and very easily obtainable "first guesses", much better -profiles can typically be obtained by applying multiple simultaneous -referencing constraints with the the Shear Inversion method [Thurnherr, -J. Tech., 2010; DOI: 10.1175/2010JTECHO708.1]. - -THIS SOFTWARE CAN BE FREELY USED AND COPIED FOR EDUCATIONAL OR OTHER -NOT-FOR-PROFIT PURPOSES. - -Currently, limited documentation is provided in the following set of -README files: - -[README] This overview - -[README.Install] Installation instructions - -[README.ProcessData] A HowTo for obtaining shear, as well as relative - and absolute velocity profiles from CTD/LADCP - data - -[README.TimeLagging] The most common problem encountered during - processing of CTD/LADCP data with this software - is failure of the CTD/LADCP time-lagging - routine. This Readme provides additional - information and tips for how to solve - time-lagging problems. - -[README.Output] A description of the various files produced by - this software - -[README.PostEdit] A HowTo for post-editing shear with different - statistics, e.g. to filter data collected with - the ADCP very close to the surface, where the - ship's magnetic field can degrade the compass - data. Also describes how the shear data can be - gridded with statistics other than simple - arithmetic mean. - -[README.YoYo] Notes on how to process data from "non-standard" - casts, such as yoyo's and tow-yo's. - -NOTE: Most of the source files use a hard tab of 4 spaces, i.e. they -can be viewed correctly, e.g. with "less -x4". - - diff --git a/README.Install b/README.Install deleted file mode 100644 --- a/README.Install +++ /dev/null @@ -1,47 +0,0 @@ -====================================================================== - R E A D M E . I N S T A L L - doc: Tue May 15 18:42:56 2012 - dlm: Fri Jun 15 07:36:52 2012 - (c) 2012 A.M. Thurnherr - uE-Info: 46 67 NIL 0 0 72 3 2 4 NIL ofnI -====================================================================== - -=Processing Software= - -The re-implemented shear method is written entirely in perl and requires -the following sub-modules to be installed: - -ADCP_tools a set of tool and libraries to deal with RDI BB ADCP data; - available via link from http://www.ldeo.columbia.edu/LADCP - -ANTSlib a library for dealing with the ANTS ASCII file format; - available via link from http://www.ldeo.columbia.edu/LADCP - -LADCPproc this software; available via link from - http://www.ldeo.columbia.edu/LADCP - -The code runs with version 5.12.4 of perl or later but it may well work -with older versions, too. It is recommended that these three modules are -installed in three separate directories. - -In addition to the core modules listed above, the software also -requires Eric Firing's geomag code (written in c) that is available -from http://currents.soest.hawaii.edu/hg. - -The only step required to set up the software is to add the directories -of the ADCP_tools, ANTSlib, LADCPproc, and geomag to the search path --- -refer to the manual of your shell on how to accomplish this. - -To test correct setup of the software, simply call [LADCPproc] in the -directory where you intend to process the LADCP data. If the software -has been correctly installed, the usage of [LADCPproc] will be -produced. - - -=Matlab Interface= - -As described in [README.Output], all output produced by this software is -in a proprietary ASCII format called ANTS. In order to import/export -ANTS files into/from Matlab the module Matlab_tools is required. This, -too, is available via link from http://www.ldeo.columbia.edu/LADCP. - diff --git a/README.Output b/README.Output deleted file mode 100644 --- a/README.Output +++ /dev/null @@ -1,77 +0,0 @@ -====================================================================== - R E A D M E . O U T P U T - doc: Tue May 15 19:17:50 2012 - dlm: Fri Jun 15 07:39:19 2012 - (c) 2012 A.M. Thurnherr - uE-Info: 44 0 NIL 0 0 72 3 2 8 NIL ofnI -====================================================================== - -This README describes the output produced by [LADCPproc] and -[LADCPintsh]. - - -=File Format and Interface with Matlab= - -All output files produced by [LADCPproc] and [LADCPintsh] are in a -proprietary undocumented ASCII format, called ANTS. To important and -export ANTS files into and from Matlab, the Matlab_tools are required -(see [README.Install]). - -To import the ANTS file <013DL.sh> into Matlab, use - - sh = loadANTS('013DL.sh'); - -The resulting structure will contain Metadata as scalars and the data -from each field in a suitably named vector. - -To export the suitable Matlab structure as the ANTS file -<013DL.shprof>, use - - struct2ANTS(binned_sh,'013DL.sh','013DL.shprof'); - -The second argument defines a dependency (the file <013DL.shprof> should -be re-made when <013DL.sh> changes). - - -=[LADCPproc] Output= - -The STDOUT of [LADCPproc] consists of a list of all shear samples --- -essentially a time-depth-series (.tds) of shear values. If this output -is not required, STDOUT can be redirected to /dev/null. - -The STDERR of [LADCPproc] consists of the diagnostic output. This output -should be captured into a log file. This is much easier with standard -(bash, Korn, Bourne) shells than with csh derivates. - -Additional output is produced with the following options: - - -p write a binned shear profile file that can be fed - directly to [LADCPintsh] to create a relative - (baroclinic) velocity profile - - -b write a bottom-track file that can be fed directly to - [LADCPintsh] (-r option) to reference the baroclinic - velocity profile - - -t write a time-series file, which is useful primarily for - diagnosing problems with the time-lagging of CTD and - LADCP data - - -f write a file with all the velocity editing flags - - -a write a .dts file of the acoustic backscatter - - -k write bottom track profiles (as a single file) - - -=[LADCPintsh] Output= - -The STDOUT of [LADCPintsh] consists of a velocity profile created from -the vertically integrated shear and possibly referenced by an external -velocity profile. - -The STDERR of [LADCPintsh] consists of minimal diagnostic output. - -On -s, additionally the shear profile is written to a file just before -integration. This is primarily useful for combining shear data from -down- and uplooking ADCPs. diff --git a/README.PostEdit b/README.PostEdit deleted file mode 100644 --- a/README.PostEdit +++ /dev/null @@ -1,95 +0,0 @@ -====================================================================== - R E A D M E . P O S T E D I T - doc: Wed Jun 13 20:30:10 2012 - dlm: Thu Jun 14 18:22:13 2012 - (c) 2012 A.M. Thurnherr - uE-Info: 95 50 NIL 0 0 72 3 2 8 NIL ofnI -====================================================================== - -=Summary= - -This README explains how to post-edit the shear output from b[LADCPproc] -before feeding it to [LADCPintsh], e.g. for removing data collected when -the ADCP was very shallow and possibly affected by the ship's magnetic -field. - - -=Nitty-Gritty= - -The default output from [LADCPproc] is a so-called time-depth-series -(.tds) file with one record per valid shear sample. Each record -contains the following fields: - -ens ensemble number the shear sample is from -elapsed elapsed time in seconds of the present ensemble -CTD_depth depth of CTD at the time the ensemble was recorded -downcast a boolean flag set to 1 (nan) for down(up)cast records -depth "nominal" depth of shear sample (center depth in gridded profile) -u_z vertical shear of zonal velocity -v_z vertical shear of meridional velocity -w_z vertical shear of vertical velocity - -This is the "general" output of [LADCPproc]. For standard processing, -the shear is bin-averaged in depth space. While this can easily be -accomplished, e.g. with a Matlab script, for convenience the binned -output can be requested with the -p option of [LADCPproc]. The binned -output cannot be post-edited! - -The .tds data can be post-edited. Matlab users can import these files -with [loadANTS.m] (see [README.Output]), edit the structures, bin the -shear in depth space, and export the new structures as ANTS files with -[struct2ANTS.m]. For example, to remove all data collected with the -ADCP shallower than 5m, simply delete the records for which CTD_depth -<= 5. Or, you can bin your shear data with different statistics (e.g. -median), instead of the arithmetic mean used by [LADCPproc] -p. - -Inconveniently, [LADCPintsh] at present requires its shear input to be -in the format generated by the -p option of [LADCPproc], with the -following fields (Matlab version): - -depth center depth of bin -dc_elapsed mean elapsed time of downcast shear samples in present bin -dc_nsamp number of downcast shear samples in bin -dc_u_z bin-averaged downcast vertical shear of zonal velocity -dc_u_z_sig corresponding standard deviation -dc_v_z same for meridional velocity -dc_v_z_sig -dc_w_z same for vertical velocity -dc_w_z_sig -uc_elapsed mean elapsed time of upcast shear samples in present bin -uc_nsamp number of upcast shear samples in bin -uc_u_z bin-averaged upcast vertical shear of zonal velocity -uc_u_z_sig corresponding standard deviation -uc_v_z same for meridional velocity -uc_v_z_sig -uc_w_z same for vertical velocity -uc_w_z_sig -elapsed mean elapsed time of mean dn/upcast shear samples in present bin -nsamp number of mean dn/upcast shear samples in bin -u_z bin-averaged mean dn/upcast vertical shear of zonal velocity -u_z_sig corresponding standard deviation -v_z same for meridional velocity -v_z_sig -w_z same for vertical velocity -w_z_sig -Sv bin-averaged acoustic volume scattering coefficient -Sv.nsamp number of samples in bin - -Note that the .tds file does not contain acoustic backscatter -information, i.e. the Sv field should be set to nan and the Sv.nsamp to -zero. - -After binning the shear data, Matlab users can create a structure with -the fields listed above. Metadata (scalars in the .tds import -structure) should be copied verbatim from the .tds import structure. -Each of the listed fields is a vector and they must all have the same -length. (Since the down- and upcasts do not usually cover exactly the -same depth range, padding is almost always required.) The resulting -structure can then be exported with [struct2ANTS.m]; the 'dependencies' -argument should be set to the filename(s) of the .tds file(s) from -which the binned shear profile was constructed. - -The only option for non-Matlab users is to create an ASCII file with -the required columns (nan values are permitted) in the order listed -above and prepend this with the header from the corresponding -[LADCPproc] output file produced by the -p option. diff --git a/README.ProcessData b/README.ProcessData deleted file mode 100644 --- a/README.ProcessData +++ /dev/null @@ -1,158 +0,0 @@ -====================================================================== - R E A D M E . P R O C E S S D A T A - doc: Tue May 15 18:49:00 2012 - dlm: Fri Jul 12 12:07:38 2013 - (c) 2012 A.M. Thurnherr - uE-Info: 118 71 NIL 0 0 72 75 2 8 NIL ofnI -====================================================================== - -=Overview= - -This README describes how to obtain profiles of vertical shear and -velocity from CTD/LADCP data. It assumes that all of the required -software has been installed (see [README.Install]). - -The re-implemented shear method software provides two commands: - -[LADCPproc] This utility produces LADCP shear data from a raw ADCP - data file and the corresponding CTD time series. - Additionally, it can create profiles of acoustic - backscatter, as well as BT-referenced velocity - profiles near the seabed from downlooking ADCPs. - -[LADCPintsh] This utility produces profiles of horizontal velocity - from the [LADCPproc] shear output. BT profiles (from - [LADCPproc] or from the LDEO_IX inversion software) or - SADCP profiles (manually constructed) can be used to - reference the velocity profiles. - -For non-standard processing, the shear output from [LADCPproc] can be -post-edited before gridding, e.g. in order to filter data collected at -very shallow depths when the ADCP may be affected by the magnetic field -of the surface vessel (see [README.PostEdit] for details). - - -=DATA REQUIREMENTS= - -ADCP DATA: The software reads binary RDI BB ADCP files from both down- -and upward-looking ADCPs. Clock setting of the ADCP is not important. - -CTD DATA: LADCP processing requires a CTD-derived time series of -pressure, temperature and salinity. Optionally, it is recommended that -an elapsed time field is supplied. A time resolution of 1Hz is -recommended. The software is capable of reading both binary and ASCII -SeaBird .cnv files with lat/lon information in the header and with the -following fields: timeS, prDM, t090C and/or t190C, sal00 and/or sal11. -Alternatively, the CTD time series can be supplied as an arbitrary -headerless ASCII CTD file with the same information, as described in -[LADCPproc.defaults]. - - -=CALCULATE LADCP SHEAR PROFILE= - -The following simple example shows how to create separate shear profiles -from an upward- and a downward-looking ADCP, as well as a BT-referenced -velocity profile near the seabed: - -Input files: - 001DL000.000 downlooker ADCP file - 001UL000.000 uplooker ADCP file - 001.cnv CTD file - -LADCPproc -p 001DL.sh -b 001.BT 001DL000.000 001.cnv > /dev/null - - this example creates two files, 001DL.sh (shear profiles) and - 001.BT (bottom-track data) - - the default output (STDOUT) from [LADCPproc] is a list of - valid shear samples, which is ignored (sent to /dev/null) in - this example - - it is recommended that the diagnostic output (STDERR) is - captured in a log file; refer to the manual of your shell on - how to accomplish this - -LADCPproc -p 001UL.sh 001UL000.000 001.cnv > /dev/null - - this example creates one file, 001UL.sh (shear profiles) - - -In this simple example, processing is carried out with standard -parameters. Some of the important parameters can be modified with -[LADCPproc] options, which are listed when [LADCPproc] is ran without -input parameters. The following are the most important [LADCPproc] -options: - -d generate diagnostic output (recommended) - -r use RDI BT data instead of echo amplitudes to find - seabed and determine CTD velocity - -o output grid resolution (defaults to 5m) - -p generate shear profile output - -b generate BT output - -s read additional non-default processing parameters - from - -However, there are many more processing parameters than can be modified -with options --- a full list with comments can be found in -[LADCPproc.defaults]. To change any of the default parameter values, -create a perl-file with variable assignments (see [LADCPproc.defaults] -for syntax) and use the -s option in [LADCPproc]. - - -=CALCULATE LADCP VELOCITY PROFILE= - -Given the output from the above steps, different full-depth velocity -profiles can be produced as follows: - -LADCPintsh 001DL.sh > 001DL.bc - - this creates baroclinic (zero vertical mean) velocity profile - from the DL shear data - -LADCPintsh -r 001.BT 001DL.sh > 001DL.vel - - this creates a BT-referenced absolute velocity profile from - the DL shear data - -LADCPintsh -r 001.BT 001UL.sh > 001UL.vel - - this creates a BT-referenced absolute velocity profile from - the UL shear and the DL BT data - - note that no -u is required in this case! - -LADCPintsh -r 001.BT -u 001UL.sh 001DL.sh > 001.vel - - this creates a BT-referenced absolute velocity profile from - the combined DL/UL shear data - - note that -u is only required if both UL and DL data are used - -It is also possible to use SADCP data to reference the velocity -profiles, although it is up to the user to create an input data file -in one of the supported formats. Note that it is *not* possible to use -multiple simultaneous referencing constraints with [LADCPintsh]. - -The following are common [LADCPintsh] options: - -u use uplooker shear (in addition to downlooker, - which is always used) - -r use reference-velocity data to reference baroclinic - velocity profiles; the following file formats - are supported 1) bottom-track output produced by - the -b option of [LADCPproc], 2) bottom-track - output produced by the LDEO processing software - (.bot files). SADCP data can be used, too, but - they have to be supplied in one of the two - supported file formats. - -n set minimum number of shear samples to use - -m set minimum BT samples to use - - -=QUALITY CHECKS= - -After processing, the quality of the resulting profiles must be -assessed. The following steps are recommended: - -1) Compare the down- and up-cast profiles of velocity. Vertical -velocity is particularly useful in this context as problematic casts -often show a striking "X" pattern. - -2) Inspect the standard deviation profiles of the binned shear and -determine (by comparison with similar data) whether the standard -deviations have the correct magnitude. - -3) Calculate and compare independent solutions from the uplooker and -downlooker data. This will only validate the baroclinic velocities (i.e. -the vertical shear). - -4) Compare to velocity profiles calculated with different software (e.g. -with the LDEO_IX velocity inversion code). diff --git a/README.TimeLagging b/README.TimeLagging deleted file mode 100644 --- a/README.TimeLagging +++ /dev/null @@ -1,106 +0,0 @@ -====================================================================== - R E A D M E . T I M E L A G G I N G - doc: Fri Oct 19 10:08:19 2012 - dlm: Fri Oct 19 12:13:59 2012 - (c) 2012 A.M. Thurnherr - uE-Info: 106 0 NIL 0 0 72 3 2 8 NIL ofnI -====================================================================== - -=Introduction= - -In order to derive velocity profiles the data from the CTD and LADCP -instruments need to be merged. This is accomplished by calculating lag -correlations between the two corresponding time series of vertical -velocities calculated from the two instruments. In this software, the -time lagging is accomplished WITHOUT regard of the clock time reported -by the instruments, i.e. the instrument clocks do not have to be -synchronized. Instead of clock time, elapsed time in seconds is used. In -case of the CTD data, an elapsed time field can be supplied by the user -(see [README.ProcessData]); in case of the LADCP data, the -"elapsed-time" field is calculated by the software. The "elapsed-time" -fields in the processing output are always consistent with the CTD -elapsed times. While the time-lagging algorithm implemented in the -software is fairly robust, it has been known to fail. Possible reasons -include: - -1) CTD PRESSURE SPIKES. Significant pressure spikes must be removed -prior to processing, *without* adding or removing CTD time-series -records. - -2) LACK OF SURFACE VESSEL MOTION. If there is no surface-wave motion -affecting the vessel, time lagging is much more difficult. In rare -cases, time lagging must be carried out manually (see below). - -3) MISSING CTD SCANS. For SeaBird 911 systems, if the connection -between the CTD and the deck box is not clean CTD scans will be -dropped. For the software, this looks like the CTD clock running faster -than the ADCP clock. There are cases where the CTD clock appears to -have gained more than 5 seconds during a 2000m-deep cast. - -4) MULTIPLE CTD FILES. When CTD acquisition is restarted during a cast, -multiple files are created. In order to process the LADCP data from such -a cast, a CTD time-series file without any missing records must be -constructed manually. - - -=Solving Time-Lagging Problems= - -While there are several run-time options that can be used to help the -time-lagging algorithm, detailed knowledge of the algorithm is required -to understand when and how to use these options, i.e. the user is -referred to the code and comments in [LADCPproc.bestLag]. However, the -following method can always be used to solve time-lagging problems, as -long as the CTD time series does not have any gaps. - - --Step 1: Produce and Plot a Combined CTD/LADCP Time-Series File- - -This is accomplished by processing the data with the "-l 0" option and -using "-t " to produce the file. Plot the resulting -time series of CTD_w and LADCP_w in the same panel. The plot should -show immediately whether there are problems with the CTD pressure data -(spikes). Often, standard processing works after setting any bad -pressure values to nan. - - --Step 2: Manually Determine an Approximate Time Lag- - -Use the output file generated in step 1 to determine how many seconds -have to be added to the elapsed field when plotting LADCP_w to bring -the two time series into approximate (a few seconds accuracy) -agreement. Often, the data can now be processed normally by using "-i -". - - --Step 3: Manually Determine an Accurate Time Lag- - -If preprocessing with the -i option still does not succeed, time lagging -must be carried out manually. If this happens, there is most likely a -serious problem with either the CTD or LADCP data that should be solved -before proceeding. This is done exactly as in step 2 but to higher -accuracy (as high as you can). Once the best lag has been determined -manually, the data can be reprocessed with the "-l " option. - - -After solving any time-lagging problems the results should be checked by -creating a time-series file (with -t) during final processing and -overplotting the LADCP_w and CTD_w time series. If there is still a -visible lag between the time series time lagging was not carried out -correctly. - - -=Patching Together CTD Time-Series Files= - -The LADCP processing software requires the CTD data to be supplied as a -single time series file with a constant sampling interval. When CTD -data acquisition is restarted during a cast, multiple files are -produced. The resulting files cannot simply be pasted together because -the resulting time series would have gaps. The only way to solve this -problem is to determine separate time lags for each of the CTD files -manually (using the method described above). The difference between the -resulting time lags is equal to the length of the gap between the two -files. The user can now create a dummy (all fields set to nan) CTD file -with required number of records that must be added between the CTD -files to create a single continuous regularly-space time series. -Fractional seconds can be ignored. diff --git a/README.YoYo b/README.YoYo deleted file mode 100644 --- a/README.YoYo +++ /dev/null @@ -1,74 +0,0 @@ -====================================================================== - R E A D M E . Y O Y O - doc: Fri Aug 10 07:07:59 2012 - dlm: Fri Oct 19 11:05:29 2012 - (c) 2012 A.M. Thurnherr - uE-Info: 56 0 NIL 0 0 72 3 2 8 NIL ofnI -====================================================================== - -=Overview= - -This README contains notes on how to process data from non-standard -casts, such as yo-yos (consecutive down-up casts collected at a given -location without restarting the instruments) and tow-yos (yo-yos -carried out while vessel is in slow motion). - -Processing of yo-yo and tow-yo data requires the following two steps: - 1. Split the data files into individual down-upcast pairs - 2. Process the resulting files as described in [README.ProcessData] - -It is important to note that yo-yo and tow-yo casts can be full depth -(i.e. between the sea surface and the sea bed) or partial-depth. If -absolute velocities (rather than just vertical shear) are required for -partial-depth casts, the user must make sure that there are either BT -data or SADCP data available for velocity referencing of each -down-upcast pair. Essentially this means that each down-upcast pair -must extend down to near the seabed or up into the depth range where -SADCP data are available. - - -=Step 1: Splitting the Data Files= - -Both data files must be split between individual down-upcast pairs, i.e. -whenever the CTD winch switches from up to down. - -CTD DATA: First, find the CTD splitting times by plotting depth vs. -elapsed time. Then, split the CTD data into separate files using any -text editor. If SeaBird CNV files are use, the same header can be used -for all output files. - -ADCP DATA: There is an ADCP file splitting utility for M$ Windows -provided by RDI. Alternatively, the length of each ensemble can be read -from the binary ADCP files and the UN*X utilities "split -b" and "cat" -can be used to split the files into the required chunks. - - -=Step 2: Processing the Split Data Files= - -The split data files, each containing data from exactly one consecutive -down- and up-cast, can be processed exactly as described in -[README.ProcessData]. If the CTD time-series data used during -processing has an "elapsed-time" field all output elapsed times are -consistent with this input, i.e. the elapsed times of the output casts -are relative to the beginning of the entire yo-yo or tow-yo cast. -Otherwise, every down-/up-cast pair gets its own elapsed-time field. - -Usually, in standard LADCP processing the velocity data from the down- -and upcast are combined. While this smears out any information on the -temporal variability of the velocity field during the cast, down- and -upcast only profiles are necessarily derived from much fewer samples -and, therefore, associated with considerably larger uncertainties and -errors. It has been found, in particular, that the top-to-bottom shear -in down-/upcast-only profiles is often quite bad. In the context of -partial-depth yo-yo and tow-yo profiles the severity of this problem -can be evaluated by comparing two consecutive velocity profiles at -their "unconstrained" end. E.g., in case of a partial-depth yo-yo near -the seabed, i.e. constrained with BT data, the uppermost portion of the -first upcast can be compared to the uppermost portion of the 2nd -downcast, etc. If the errors are found to be unacceptably high, the -velocity profiles from the combined down-/upcast data should be used -instead. Alternatively, multiple simultaneous velocity referencing -constraints can be applied, e.g. using the shear-inversion method -described by Thurnherr (JAOT 2010). - - diff --git a/TODO b/TODO deleted file mode 100644 --- a/TODO +++ /dev/null @@ -1,58 +0,0 @@ -====================================================================== - T O D O - doc: Thu Oct 14 09:15:02 2010 - dlm: Wed Jun 15 15:16:20 2011 - (c) 2010 A.M. Thurnherr - uE-Info: 40 0 NIL 0 0 72 3 2 4 NIL ofnI -====================================================================== - -=LADCPintsh= - -- determine what constitutes a gap -- look into cross-gap shear integration - - -=LADCPproc= - -- allow setting of GRID_DZ (-o) in ProcessingParams - -- add warnings: - - wide band - - CTD_W_BIT (ambiguity velocity) - - bad time match - - seabed not found - - inconsistent water depth - -- add diagnostic plots - -- output shear vals to make histograms - -- try median instead of mean for shear binning - -- add pitch/roll to BT - -- check interaction between 3-beam solutions and correlation limit - -- implement TILT_BIT (others?) - -- calculate real acoustic backscatter profile - - currently, profiles are arbitarily calculated from bins 3-9 - -- clean up LADCPproc.UHcode: - - remove weirdnesses - - avoid multiple calculation of &depthOfBin() - - improve "staging": - 1) basic velocity editing (BADVEL, ERRVEL, CORREL) NB: before - beam-to-Earth transformation!!! - 2) ref-lr w (also handle W_BIT editing?) - 3) integrate w to get z_approx - 4) match LADCP to CTD time series - 5) make accoustic backscatter profile - 6) find seabed - 7) sidelobe & PPI editing - 8) ref-lr u,v,w - 9) WAKE editing - 10) SHEAR editing - 11) ref-lr u,v,w - -- re-add time-series calculation