LAST CHANGED : 2023/04/05 10:56:36 CRUISE NAME(S) : FKt230303 CRUISE DATES : 2023/03/08 to 2023/04/05 SHIP NAME : Falkor(too) PORTS : San Juan to Puerto Rico CHIEF SCIENTIST : David Butterfield DATABASE NAME : a_ftoo DATA FILES : ftoo2023_066_63741.raw to ftoo2023_094_36000.raw STATUS : to do done ------ ----------- averaged [ x ] at sea loaded [ x ] at sea NOTE: heading correction instrument exists NOTE: time-dependent heading corrections applied IN the ensembles (see cal/rotate/ens_hcorr.ang) check heading correction [ x ] calibration [ x ] (averaged over nine cruises) edited [ x ] re-check heading correction [ x ] (but meaningless) check editing [ x ] figures [ x ] INSTRUMENT : ec150 ACQUISITION : PROGRAM : uhdas PROCESSING: : python LOGGING : PARAMETERS : BT : bottom track mode (on or off) SI : sampling interval or averaging period for ensemble (sec) NB : number of bins BL : bin length (m) TD : transducer depth (m) BK : blanking length (m) HO : heading offset applied by DAS (deg) HB : heading bias (deg) CRPH : compensation for roll-pitch-heading, 1:on, 0:off) yy/mm/dd hh:mm:ss BT SI NB BL TD BK HO HB CRPH 2023/03/08 17:47:19 off 300 60 8 7 9 45.00 0.00 0001 HEADING : PRIMARY : heading from gyro1 CORRECTION : heading correction from seapath NOTE: time-dependent heading corrections applied IN the ensembles (see cal/rotate/ens_hcorr.ang) POSITIONS : gps positions from posmv_gps CALIBRATION : (check original processing parameters) (1) transducer alignment original transducer alignment: 45 additional rotation -0.1 final transducer angle is: (45) - (-0.1) = 45.1 (2) scale factor original scale factor 1 additional scale factor (1.003) final scale factor 1.003 (3) ADCP (dx=starboard, dy=fwd) meters from GPS original: xducer_dx=0 xducer_dy=0 correction 0 0 final offset 0 0 final = original + corrections COMMENTS : Not much of this cruise had the ec150cw operating. There were two short periods, then one of about 4 days at the end. No gaps in heading correction Tops of profiles are often questionable, edited Underway bias at profile bottoms, attempted to edit out Calibration disagreements with RDI sonars unresolved Possible disagreement with wh300 about depth of subsurface currents PROCESSOR : Steven Howell --- final processing parameters from dbinfo.txt ---------- ## (determined from "sonar"): model = ec ## (determined from "sonar"): frequency = 150 ## (determined from "sonar"): instname = ec150 ## (determined from "sonar"): pingtype = cw beamangle 30 cruisename FKt230303 datatype uhdas dbname a_ftoo ens_len 300 fixfile a_ftoo.gps frequency 150 hcorr_inst seapath instname ec150 model ec pingtype cw proc_engine python ref_method refsm refuv_smoothwin 3 refuv_source nav sonar ec150cw txy_file a_ftoo.gps xducer_dx 0 xducer_dy 0 yearbase 2023 ================================================== POST PROCESSING STEPS: ================================================== -------------------------- ### 1. Check visual oddities -------------------------- ### Run this: (to look for gaps in the cruise track) plot_nav.py nav/a*.gps # Major gaps, but that's because the ec150 was not running much until late in the cruise. ### Run this: (to look for gaps in the heading correction, examine the character of <...> the watertrack and bottom track calibration, etc figview.py # No gaps in heading correction. ### Run this: (looking for missing heading correction values or missing positions) dataviewer.py ### Run this: (to interpolate for missing heading correction fixes) cd cal/rotate patch_hcorr.py cd ../.. # unnecessary ### Run this: (to check watertrack calibration after patching hcorr) catwt.py **watertrack** ----------- Number of edited points: 4 out of 6 median mean std amplitude 1.0045 1.0038 0.0034 phase -0.1820 -0.2055 0.2955 ----------- ### Run this: (to check watertrack calibration after patching hcorr) catbt.py ### Run this: (to check dxdy statistics calibration after patching hcorr) catxy.py **transducer-gps offset** ----------- guessing ADCP (dx=starboard, dy=fwd) meters from GPS positions from a_ftoo.gps calculation done at 2023/04/05 10:56:36 xducer_dx = -14.559951 xducer_dy = 5.431344 signal = 167.142869 ----------- --------------------- ### 2. ADCP calibration --------------------- # Note about calibrations: There were insufficient watertrack points to derive decent # calibrations. Instead, I concatenated all of the EC150 a_ftoo_7.cal files for 9 cruises, # FKt230303 to FKt230918, then ran Wtplot_script.py to calculate heading and amplitude # corrections for all of the cruises, all at once. This assumes that those values were # constant for the entire period, which seems like a pretty safe bet. However, this # is impractical to do after editing, so there could be some inaccuracy that could be # corrected by redoing all of the concatenation and calculation after editing all of # the cruises. That is _not_ being done here! # The result of the watertrack calibrations for the set of cruises was: ADCP watertrack calibration ## Time range 90.07 to 262.53 Calculation done at Tue Nov 7 15:14:28 2023 delta-u min = -100.00, max = 100.00 delta-v min = -100.00, max = 100.00 clip_amp = 0.04, clip_ph = 3.0 clip_dt = 60, clip_var = 0.050 Number of edited points: 92 out of 106 amp = 1.0024 + -0.0000 (t - 191.5) phase = -0.10 + -0.0008 (t - 191.5) **watertrack** ----------- Number of edited points: 92 out of 106 median mean std amplitude 1.0030 1.0024 0.0075 phase -0.1180 -0.0982 0.4592 ----------- # So, for all of the cruises, we'll use amplitude correction factor 1.003 and # phase -0.1 ### Run this: (look at the watertrack calibration residuals remaining) catwt.py ### Run this: (look at the bottom track calibration residuals remaining) catbt.py ### Run this: (look at the remaining offsets required) catxy.py **transducer-gps offset** ----------- guessing ADCP (dx=starboard, dy=fwd) meters from GPS positions from a_ftoo.gps calculation done at 2023/04/05 10:56:36 xducer_dx = -14.559951 xducer_dy = 5.431344 signal = 167.142869 ----------- # But note the weak signal. Unfortunately, it is not easy to concatenate the xy # calculation in the same way as the watertrack, so cruises are not gathered together. # Estimates of d[xy] vary considerably between cruises, again with very weak signal. # Best estimate may be xducer_dx=0, xducer_dy=4, but these values are small enough # and uncertain enough that no calibration will be applied. # Note that we cannot practically reprocess the data; bugs in the acquisition scheme # would require considerable code rewriting to fix. Therefore, we cannot reprocess to # apply a revised xducer_d[xy] for improved uvship calculations. --- ### If a large dxdy correction is needed (values greater than 5), do this first: ### Run this: quick_adcp.py --steps2rerun rotate:navsteps:calib --rotate_amplitude 1.003 --rotate_angle -0.1 --auto ### Run this: (look at the watertrack calibration again) catwt.py **watertrack** ----------- Number of edited points: 5 out of 6 median mean std amplitude 1.0010 1.0088 0.0183 phase 0.1020 0.0522 0.4707 ----------- # But recall that there are too few statistics ### Run this: (look at the offset again) catxy.py *transducer-gps offset** ----------- guessing ADCP (dx=starboard, dy=fwd) meters from GPS positions from a_ftoo.gps calculation done at 2023/12/21 01:01:54 xducer_dx = -5.284660 xducer_dy = 2.124655 signal = 167.142866 ----------- # Dramatically improved xducer_dx! But these calibrations still have # too little data to mean much. ------------------- ### 3. Editing points ------------------- ### Run this: (to go through the dataset and edit out bad values) dataviewer.py -e # This cruise occurred prior to a fix in UHDAS that checked for # coherence in each data bin. The need for that was made obvious by # biases in the deepest data bins. Since this dataset could not be # reprocessed, I eliminated the deep bias using a combination of # manual editing and setting thresholds for error velocity (70 mm/s) # and error velocity standard deviation (220 to 300 mm/s). It was also # clear that there was a signal in w that deviated strongly from the # rest of the profile, but there was no effective way to set that # as a threshold. ### Run this: (to recompute the calibration residuals) quick_adcp.py --steps2rerun navsteps:calib --auto -------------------------------------------------- ### 4. Re-check heading correction and other figures -------------------------------------------------- ### Run this: (Is there anything strange with any of the figures?) figview.py -------------------------------------------------------------- ### 5. Check edited, calibrated dataset against original dataset -------------------------------------------------------------- ### Run this: (Has this corrected the problems in the original?) dataviewer.py -c . ../ec150cw.orig # Looks okay ### Run this to compare this sonar with another sonar (after both are finished) dataviewer.py -c ../wh300 ./ # Comparison with the wh300 shows some disturbing patterns that it's # not clear how to fix. The difference pattern with below-surface # currents does not look like I'd expect from the different vertical # resolutions of the instruments. Further work is necessary to resolve # that. # In addition, there are sometimes changes in profile when the ship # turns and accelerates, indicating a faulty scale factor or # transducer angle. Dday 91.2, 93.5 and 94.45 are good examples. (It # also appears that the wh300 has problems too) # There were no times when the os38bb was operated at the same time as # the ec150cw, so no comparison is possible. dataviewer.py -c ./ ../os38nb # This actually looks decent--fewer obvious patterns in the # difference, though the coarse vertical resolution of the os38nb # limits the utility of the comparison. # A quantitative comparison between the sonars is pretty inconclusive: plot_reflayer.py --plotfp --zrange=30:80 ../wh300 ./ zrange is 30:80 parts is ['30', '80'] ======> NOTE ABOUT CALIBRATIONS <======= If there was a reason to apply a calibration to ec150cw for it to better match wh300, these are APPROXIMATE values to use. Use these as if they came from cal/watertrk or cal/botmtrk. scale factor:f 1.031 to ec150cw rotation angle: -0.31deg to ec150cw ================ plot_reflayer.py --plotfp --zrange=30:200 ../os38nb ./ zrange is 30:200 parts is ['30', '200'] ======> NOTE ABOUT CALIBRATIONS <======= If there was a reason to apply a calibration to ec150cw for it to better match os38nb, these are APPROXIMATE values to use. Use these as if they came from cal/watertrk or cal/botmtrk. scale factor:f 1.022 to ec150cw rotation angle: 0.23deg to ec150cw ================ # The RDI instruments agree that the ec150cw calibration is off, but # profoundly differ in the proper rotation angle. There is no obvious # correction to be made that could resolve the differences. # One could imagine fiddling with the scale factor and transducer angle # to improve the data, but there is so little data while cruising and so # few watertrack points that one could not be confident of the results. ### Final cleanup: Because this is a new instrument, we did not realize ### the original depths were too deep by one bin. A specialized program ### was used to correct this ("depth_change_ec"). A log of this change ### is appended to the end of this file. ------------------------- ### 6. Make plots and files ------------------------- ### Run this: quick_web.py --interactive ### Run this to extract matlab files quick_adcp.py --steps2rerun matfiles --auto ### Run this to extract a netCDF file adcp_nc.py adcpdb contour/ec150cw FKt230303 ec150cw --ship_name "Falkor (too)" ### Run this to look at the headers ncdump -h contour/ec150cw.nc ######################################### FKt230303_ec150cw_depth_change.log ../FKt230303/ec150cw/adcpdb/a_ftoo 66.74119 block = 0 ,bin = 8.1, blank = 8.6 72.65481 block = 1 ,bin = 8.1, blank = 8.6 90.06584 block = 2 ,bin = 8.1, blank = 8.6 90.82944 block = 3 ,bin = 8.1, blank = 8.6 91.87457 block = 4 ,bin = 8.1, blank = 8.6 92.00396 block = 5 ,bin = 8.1, blank = 8.6 92.72741 block = 6 ,bin = 8.1, blank = 8.6 93.79338 block = 7 ,bin = 8.1, blank = 8.6 94.07350 block = 8 ,bin = 8.1, blank = 8.6 ../FKt230303/ec150cw/adcpdb/a_ftoo 66.74119 block = 0 ,bin = 8.1, blank = 0.6 72.65481 block = 1 ,bin = 8.1, blank = 0.6 90.06584 block = 2 ,bin = 8.1, blank = 0.6 90.82944 block = 3 ,bin = 8.1, blank = 0.6 91.87457 block = 4 ,bin = 8.1, blank = 0.6 92.00396 block = 5 ,bin = 8.1, blank = 0.6 92.72741 block = 6 ,bin = 8.1, blank = 0.6 93.79338 block = 7 ,bin = 8.1, blank = 0.6 94.07350 block = 8 ,bin = 8.1, blank = 0.6