equal
deleted
inserted
replaced
1 #!/usr/bin/perl |
1 #!/usr/bin/perl |
2 #====================================================================== |
2 #====================================================================== |
3 # L I S T B T |
3 # L I S T B T |
4 # doc: Sat Jan 18 18:41:49 2003 |
4 # doc: Sat Jan 18 18:41:49 2003 |
5 # dlm: Mon Nov 25 18:30:11 2013 |
5 # dlm: Mon Apr 2 18:31:18 2018 |
6 # (c) 2003 A.M. Thurnherr |
6 # (c) 2003 A.M. Thurnherr |
7 # uE-Info: 42 44 NIL 0 0 72 11 2 4 NIL ofnI |
7 # uE-Info: 43 61 NIL 0 0 72 11 2 4 NIL ofnI |
8 #====================================================================== |
8 #====================================================================== |
9 |
9 |
10 # Extract Bottom-Track Data |
10 # Extract Bottom-Track Data |
11 |
11 |
12 # NOTE: NO SOUND-SPEED CORRECTION APPLIED YET!!! |
12 # NOTE: NO SOUND-SPEED CORRECTION APPLIED YET!!! |
38 # Aug 25, 2006: - fiddled |
38 # Aug 25, 2006: - fiddled |
39 # Sep 19, 2007: - adapted to new [RDI_BB_Read.pl] (not tested) |
39 # Sep 19, 2007: - adapted to new [RDI_BB_Read.pl] (not tested) |
40 # Nov 1, 2008: - BUG: sig(u) was reported instead of sig(v) |
40 # Nov 1, 2008: - BUG: sig(u) was reported instead of sig(v) |
41 # Jul 30, 2009: - NaN => nan |
41 # Jul 30, 2009: - NaN => nan |
42 # Nov 25, 2013: - checkEnsemble() expunged |
42 # Nov 25, 2013: - checkEnsemble() expunged |
|
43 # Apr 2, 2018: - BUG: velBeamToInstrument() used old usage |
43 |
44 |
44 # NOTES: |
45 # NOTES: |
45 # - the RDI BT data contains ranges that are greater than the |
46 # - the RDI BT data contains ranges that are greater than the |
46 # WT ping ranges. I don't know if those data are valid! |
47 # WT ping ranges. I don't know if those data are valid! |
47 # - there is a fair bit of heuristic used, especially in the |
48 # - there is a fair bit of heuristic used, especially in the |
162 next if ($dta{ENSEMBLE}[$ens]->{PERCENT_GOOD}[$b][0] < 100 || |
163 next if ($dta{ENSEMBLE}[$ens]->{PERCENT_GOOD}[$b][0] < 100 || |
163 $dta{ENSEMBLE}[$ens]->{PERCENT_GOOD}[$b][1] < 100 || |
164 $dta{ENSEMBLE}[$ens]->{PERCENT_GOOD}[$b][1] < 100 || |
164 $dta{ENSEMBLE}[$ens]->{PERCENT_GOOD}[$b][2] < 100 || |
165 $dta{ENSEMBLE}[$ens]->{PERCENT_GOOD}[$b][2] < 100 || |
165 $dta{ENSEMBLE}[$ens]->{PERCENT_GOOD}[$b][3] < 100); |
166 $dta{ENSEMBLE}[$ens]->{PERCENT_GOOD}[$b][3] < 100); |
166 @v = velInstrumentToEarth(\%dta,$ens, |
167 @v = velInstrumentToEarth(\%dta,$ens, |
167 velBeamToInstrument(\%dta, |
168 velBeamToInstrument(\%dta,$ens, |
168 @{$dta{ENSEMBLE}[$ens]->{VELOCITY}[$b]})); |
169 @{$dta{ENSEMBLE}[$ens]->{VELOCITY}[$b]})); |
169 } else { |
170 } else { |
170 next if ($dta{ENSEMBLE}[$ens]->{PERCENT_GOOD}[$b][0] > 0 || |
171 next if ($dta{ENSEMBLE}[$ens]->{PERCENT_GOOD}[$b][0] > 0 || |
171 $dta{ENSEMBLE}[$ens]->{PERCENT_GOOD}[$b][1] > 0 || |
172 $dta{ENSEMBLE}[$ens]->{PERCENT_GOOD}[$b][1] > 0 || |
172 $dta{ENSEMBLE}[$ens]->{PERCENT_GOOD}[$b][2] > 0 || |
173 $dta{ENSEMBLE}[$ens]->{PERCENT_GOOD}[$b][2] > 0 || |
296 defined($dta{ENSEMBLE}[$e]->{VELOCITY}[$b][3])); |
297 defined($dta{ENSEMBLE}[$e]->{VELOCITY}[$b][3])); |
297 my($dz) = $dta{DISTANCE_TO_BIN1_CENTER} + $b*$dta{BIN_LENGTH}; |
298 my($dz) = $dta{DISTANCE_TO_BIN1_CENTER} + $b*$dta{BIN_LENGTH}; |
298 last if ($dta{ENSEMBLE}[$e]->{BT_MEAN_RANGE}-$dz <= $slc); |
299 last if ($dta{ENSEMBLE}[$e]->{BT_MEAN_RANGE}-$dz <= $slc); |
299 my(@v) = $beamCoords |
300 my(@v) = $beamCoords |
300 ? velInstrumentToEarth(\%dta,$e, |
301 ? velInstrumentToEarth(\%dta,$e, |
301 velBeamToInstrument(\%dta, |
302 velBeamToInstrument(\%dta,$e, |
302 @{$dta{ENSEMBLE}[$e]->{VELOCITY}[$b]})) |
303 @{$dta{ENSEMBLE}[$e]->{VELOCITY}[$b]})) |
303 : velApplyHdgBias(\%dta,$e,@{$dta{ENSEMBLE}[$e]->{VELOCITY}[$b]}); |
304 : velApplyHdgBias(\%dta,$e,@{$dta{ENSEMBLE}[$e]->{VELOCITY}[$b]}); |
304 next unless defined($v[0]); |
305 next unless defined($v[0]); |
305 next if (abs($v[3]) > $opt_e || |
306 next if (abs($v[3]) > $opt_e || |
306 abs($v[2]-$dta{ENSEMBLE}[$e]->{BT_VELOCITY}[2]) > 0.1); |
307 abs($v[2]-$dta{ENSEMBLE}[$e]->{BT_VELOCITY}[2]) > 0.1); |
336 defined($dta{ENSEMBLE}[$e]->{VELOCITY}[$b][3])); |
337 defined($dta{ENSEMBLE}[$e]->{VELOCITY}[$b][3])); |
337 my($dz) = $dta{DISTANCE_TO_BIN1_CENTER} + $b*$dta{BIN_LENGTH}; |
338 my($dz) = $dta{DISTANCE_TO_BIN1_CENTER} + $b*$dta{BIN_LENGTH}; |
338 last if ($dta{ENSEMBLE}[$e]->{BT_MEAN_RANGE}-$dz <= $slc); |
339 last if ($dta{ENSEMBLE}[$e]->{BT_MEAN_RANGE}-$dz <= $slc); |
339 my(@v) = $beamCoords |
340 my(@v) = $beamCoords |
340 ? velInstrumentToEarth(\%dta,$e, |
341 ? velInstrumentToEarth(\%dta,$e, |
341 velBeamToInstrument(\%dta, |
342 velBeamToInstrument(\%dta,$e, |
342 @{$dta{ENSEMBLE}[$e]->{VELOCITY}[$b]})) |
343 @{$dta{ENSEMBLE}[$e]->{VELOCITY}[$b]})) |
343 : velApplyHdgBias(\%dta,$e,@{$dta{ENSEMBLE}[$e]->{VELOCITY}[$b]}); |
344 : velApplyHdgBias(\%dta,$e,@{$dta{ENSEMBLE}[$e]->{VELOCITY}[$b]}); |
344 next unless defined($v[0]); |
345 next unless defined($v[0]); |
345 next if (abs($v[3]) > $opt_e || |
346 next if (abs($v[3]) > $opt_e || |
346 abs($v[2]-$dta{ENSEMBLE}[$e]->{BT_VELOCITY}[2]) > 0.1); |
347 abs($v[2]-$dta{ENSEMBLE}[$e]->{BT_VELOCITY}[2]) > 0.1); |
482 + $CC_bias |
483 + $CC_bias |
483 if defined($opt_C); |
484 if defined($opt_C); |
484 |
485 |
485 @{$dta{ENSEMBLE}[$e]->{BT_VELOCITY}} = $beamCoords # xform BT vel |
486 @{$dta{ENSEMBLE}[$e]->{BT_VELOCITY}} = $beamCoords # xform BT vel |
486 ? velInstrumentToEarth(\%dta,$e, |
487 ? velInstrumentToEarth(\%dta,$e, |
487 velBeamToInstrument(\%dta,@{$dta{ENSEMBLE}[$e]->{BT_VELOCITY}})) |
488 velBeamToInstrument(\%dta,$e,@{$dta{ENSEMBLE}[$e]->{BT_VELOCITY}})) |
488 : velApplyHdgBias(\%dta,$e,@{$dta{ENSEMBLE}[$e]->{BT_VELOCITY}}); |
489 : velApplyHdgBias(\%dta,$e,@{$dta{ENSEMBLE}[$e]->{BT_VELOCITY}}); |
489 |
490 |
490 $dta{ENSEMBLE}[$e]->{BT_MEAN_RANGE} = # mean vals |
491 $dta{ENSEMBLE}[$e]->{BT_MEAN_RANGE} = # mean vals |
491 $dta{ENSEMBLE}[$e]->{BT_RANGE}[0]/4 + |
492 $dta{ENSEMBLE}[$e]->{BT_RANGE}[0]/4 + |
492 $dta{ENSEMBLE}[$e]->{BT_RANGE}[1]/4 + |
493 $dta{ENSEMBLE}[$e]->{BT_RANGE}[1]/4 + |
553 $dta{ENSEMBLE}[$e]->{WT_RANGE}[3]/4; |
554 $dta{ENSEMBLE}[$e]->{WT_RANGE}[3]/4; |
554 |
555 |
555 my($btm_e) = int($btm_e[0]/4+$btm_e[1]/4+$btm_e[2]/4+$btm_e[3]/4+0.5); |
556 my($btm_e) = int($btm_e[0]/4+$btm_e[1]/4+$btm_e[2]/4+$btm_e[3]/4+0.5); |
556 @{$dta{ENSEMBLE}[$btm_e]->{BTFWT_VELOCITY}} = $beamCoords # BT from WT |
557 @{$dta{ENSEMBLE}[$btm_e]->{BTFWT_VELOCITY}} = $beamCoords # BT from WT |
557 ? velInstrumentToEarth(\%dta,$e, |
558 ? velInstrumentToEarth(\%dta,$e, |
558 velBeamToInstrument(\%dta,@{$dta{ENSEMBLE}[$e]->{BT_VELOCITY}})) |
559 velBeamToInstrument(\%dta,$e,@{$dta{ENSEMBLE}[$e]->{BT_VELOCITY}})) |
559 : velApplyHdgBias(\%dta,$e,@{$dta{ENSEMBLE}[$e]->{BT_VELOCITY}}); |
560 : velApplyHdgBias(\%dta,$e,@{$dta{ENSEMBLE}[$e]->{BT_VELOCITY}}); |
560 } |
561 } |
561 |
562 |
562 dumpEns($e) if defined($opt_E); # output BT profiles |
563 dumpEns($e) if defined($opt_E); # output BT profiles |
563 if ($opt_B) { dumpBT($e); } |
564 if ($opt_B) { dumpBT($e); } |