author | A.M. Thurnherr <athurnherr@yahoo.com> |
Tue, 27 Aug 2019 19:11:54 -0400 | |
changeset 51 | 0f6d9e64cc4f |
parent 49 | 5006e9158207 |
child 55 | 2d8e1139acd5 |
permissions | -rw-r--r-- |
0 | 1 |
#====================================================================== |
49 | 2 |
# / D A T A / S R C / O C E A N O G R A P H Y / L A D C P _ V E R T I C A L _ V E L O C I T Y / E D I T _ D A T A . P L |
0 | 3 |
# doc: Sat May 22 21:35:55 2010 |
49 | 4 |
# dlm: Tue Nov 27 11:07:33 2018 |
0 | 5 |
# (c) 2010 A.M. Thurnherr |
49 | 6 |
# uE-Info: 46 71 NIL 0 0 72 0 2 4 NIL ofnI |
0 | 7 |
#====================================================================== |
8 |
||
9 |
# HISTORY: |
|
10 |
# May 22, 2010: - created |
|
11 |
# May 24, 2010: - added editSideLobesFromSeabed() |
|
12 |
# Oct 29, 2010: - added editCorr_Earthcoords |
|
13 |
# Dec 20, 2010: - BUG: DISTANCE_TO_BIN1_CENTER & BIN_LENGTH had been |
|
14 |
# interpreted as along-beam, rather than vertical |
|
15 |
# - replaced editPitchRoll by editTilt |
|
16 |
# Dec 25, 2010: - adapted to changes in [LADCP_w] |
|
3
9c021fdea1ff
Before replacing command-line options by default variables.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
0
diff
changeset
|
17 |
# Aug 3, 2011: - added editTruncRange() |
9c021fdea1ff
Before replacing command-line options by default variables.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
0
diff
changeset
|
18 |
# Oct 10, 2011: - added editFalsePositives() |
9c021fdea1ff
Before replacing command-line options by default variables.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
0
diff
changeset
|
19 |
# - BUG: when earth velocities were edited, all were |
9c021fdea1ff
Before replacing command-line options by default variables.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
0
diff
changeset
|
20 |
# counted, not just those between first and lastBin |
4
e681262d0fd7
yay! first version I am really happy with. With plots 'n all.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
3
diff
changeset
|
21 |
# Oct 11, 2011: - moved defaults to [defaults.pl] |
e681262d0fd7
yay! first version I am really happy with. With plots 'n all.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
3
diff
changeset
|
22 |
# Oct 12, 2011: - added &editSurfLayer() |
e681262d0fd7
yay! first version I am really happy with. With plots 'n all.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
3
diff
changeset
|
23 |
# - BUG: editSideLobes() was slightly loose |
e681262d0fd7
yay! first version I am really happy with. With plots 'n all.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
3
diff
changeset
|
24 |
# Oct 15, 2011: - added editWOutliers() |
5
509cc9966b68
======================================================================
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
4
diff
changeset
|
25 |
# Oct 20, 2011: - added editFarBins() |
6 | 26 |
# Oct 27, 2011: - adapted editTilt() to new call location |
27 |
# - added correctAttitude() |
|
10
7e76fdef8953
version prior to carrying out separate dc-/uc- time lagging
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
6
diff
changeset
|
28 |
# Oct 15, 2012: - BUG: editSurfLayer() counted also ensembles without CTD depth |
13 | 29 |
# Nov 12, 2013: - added comments on editCorr_Earthcoords() |
15 | 30 |
# Mar 4, 2013: - added support for missing PITCH/ROLL (TILT) & HEADING |
16
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
31 |
# May 20, 2014: - added editPPI() |
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
32 |
# May 21, 2014: - got it to work correctly |
27
2053d8de8d6b
updated plots & seabed code; GoM data process correctly
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
16
diff
changeset
|
33 |
# - croak -> error |
32
6041a20feb39
V1.0 release candidate
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
27
diff
changeset
|
34 |
# Sep 26, 2015: - added $vessel_draft to editSideLobes |
34 | 35 |
# Jan 23, 2016: - added &editBadTimeLagging() |
45
6d49c7420a6c
stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
34
diff
changeset
|
36 |
# May 18, 2016: - removed assumption of 1500m/s soundspeed setting |
46 | 37 |
# May 24, 2016: - calc_binDepths() -> binDepths() |
47
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
38 |
# May 28, 2016: - added editResiduals_rmsMax, editResiduals_deltaMax |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
39 |
# Jun 2, 2016: - added applyTiltCorrection() |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
40 |
# - maded editCorr_Earthcoords() less conservative |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
41 |
# - verified that removed velocities are counted correctly |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
42 |
# Jun 3, 2016: - BUG: applyTiltCorrection() did not use gimbal_pitch |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
43 |
# Jun 6, 2016: - removed applyTiltCorrection() |
49 | 44 |
# Oct 13, 2017: - BUG: editPPI() only allowed for nominal transducer frequencies |
45 |
# May 1, 2018: - added editLargeHSpeeds() |
|
46 |
# Nov 17, 2018: - BUG: spurious letter "z" had crept in at some stage |
|
0 | 47 |
|
48 |
# NOTES: |
|
3
9c021fdea1ff
Before replacing command-line options by default variables.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
0
diff
changeset
|
49 |
# - all bins must be edited (not just the ones between $LADCP_firstBin |
9c021fdea1ff
Before replacing command-line options by default variables.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
0
diff
changeset
|
50 |
# and $LADCP_lastBin to allow reflr calculations to use bins outside |
5
509cc9966b68
======================================================================
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
4
diff
changeset
|
51 |
# this range (ONLY FOR BEAM-COORD EDITS) |
3
9c021fdea1ff
Before replacing command-line options by default variables.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
0
diff
changeset
|
52 |
# - however, to make the stats work, only the edited velocities |
47
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
53 |
# inside the bin range are counted for those edit functions that |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
54 |
# report their stats wrt $nvw (for those which use $nvv, |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
55 |
# all velocities must be counted) |
0 | 56 |
|
57 |
#====================================================================== |
|
6 | 58 |
# correctAttitude($ens,$pitch_bias,$roll_bias,$heading_bias) |
49 | 59 |
# - attitude bias correction |
47
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
60 |
# - this is called before gimbal_pitch is calculated |
6 | 61 |
#====================================================================== |
62 |
||
63 |
sub correctAttitude($$$$) |
|
64 |
{ |
|
65 |
my($ens,$pitch_bias,$roll_bias,$heading_bias) = @_; |
|
15 | 66 |
$LADCP{ENSEMBLE}[$ens]->{PITCH} -= $pitch_bias if defined($LADCP{ENSEMBLE}[$ens]->{PITCH}); |
67 |
$LADCP{ENSEMBLE}[$ens]->{ROLL} -= $roll_bias if defined($LADCP{ENSEMBLE}[$ens]->{ROLL}); |
|
68 |
$LADCP{ENSEMBLE}[$ens]->{HEADING} -= $heading_bias if defined($LADCP{ENSEMBLE}[$ens]->{HEADING}); |
|
6 | 69 |
} |
70 |
||
71 |
#====================================================================== |
|
0 | 72 |
# $vv = countValidVels($ens) |
47
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
73 |
# |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
74 |
# NOTES: |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
75 |
# - in case of Earth coords, this counts the velocity components |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
76 |
# (including errvel) |
0 | 77 |
#====================================================================== |
78 |
||
79 |
sub countValidBeamVels($) |
|
80 |
{ |
|
81 |
my($ens) = @_; |
|
82 |
||
83 |
my($vv) = 0; |
|
84 |
for (my($bin)=0; $bin<$LADCP{N_BINS}; $bin++) { |
|
85 |
$vv += defined($LADCP{ENSEMBLE}[$ens]->{VELOCITY}[$bin][0]); |
|
86 |
$vv += defined($LADCP{ENSEMBLE}[$ens]->{VELOCITY}[$bin][1]); |
|
87 |
$vv += defined($LADCP{ENSEMBLE}[$ens]->{VELOCITY}[$bin][2]); |
|
88 |
$vv += defined($LADCP{ENSEMBLE}[$ens]->{VELOCITY}[$bin][3]); |
|
89 |
} |
|
90 |
return $vv; |
|
91 |
} |
|
92 |
||
93 |
#====================================================================== |
|
5
509cc9966b68
======================================================================
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
4
diff
changeset
|
94 |
# $removed = editCorr($ens,$threshold) |
0 | 95 |
# |
96 |
# NOTES: |
|
47
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
97 |
# - called before Earth vels are calculated |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
98 |
# - count removed velocities in all bins |
0 | 99 |
#====================================================================== |
100 |
||
101 |
sub editCorr($$) |
|
102 |
{ |
|
103 |
my($ens,$lim) = @_; |
|
104 |
||
105 |
my($nrm) = 0; |
|
106 |
for (my($bin)=0; $bin<$LADCP{N_BINS}; $bin++) { |
|
107 |
for (my($beam)=0; $beam<4; $beam++) { |
|
108 |
next if ($LADCP{ENSEMBLE}[$ens]->{CORRELATION}[$bin][$beam] >= $lim || |
|
109 |
!defined($LADCP{ENSEMBLE}[$ens]->{VELOCITY}[$bin][$beam])); |
|
110 |
undef($LADCP{ENSEMBLE}[$ens]->{VELOCITY}[$bin][$beam]); |
|
111 |
$nrm++; |
|
112 |
} |
|
113 |
} |
|
114 |
return $nrm; |
|
115 |
} |
|
116 |
||
13 | 117 |
#====================================================================== |
118 |
# $removed = editCorr_Earthcoords($ens,$threshold) |
|
119 |
# |
|
120 |
# NOTES: |
|
47
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
121 |
# - if any of the used correlations is below the threshold, |
13 | 122 |
# the entire velocity is removed |
47
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
123 |
# - for three-beam solutions two correlations must fail the |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
124 |
# test |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
125 |
# - count velocities in all bins |
13 | 126 |
#====================================================================== |
127 |
||
0 | 128 |
sub editCorr_Earthcoords($$) |
129 |
{ |
|
130 |
my($ens,$lim) = @_; |
|
131 |
||
132 |
my($nrm) = 0; |
|
133 |
for (my($bin)=0; $bin<$LADCP{N_BINS}; $bin++) { |
|
47
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
134 |
my($nBad) = 0; |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
135 |
for (my($beam)=0; $beam<4; $beam++) { |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
136 |
$nBad++ unless ($LADCP{ENSEMBLE}[$ens]->{CORRELATION}[$bin][$beam] > $lim); |
0 | 137 |
} |
47
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
138 |
if ($nBad-$LADCP{ENSEMBLE}[$ens]->{THREE_BEAM}[$bin] > 0) { |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
139 |
for (my($beam)=0; $beam<4; $beam++) { |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
140 |
next unless defined($LADCP{ENSEMBLE}[$ens]->{VELOCITY}[$bin][$beam]); |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
141 |
undef($LADCP{ENSEMBLE}[$ens]->{VELOCITY}[$bin][$beam]); |
0 | 142 |
$nrm++; |
143 |
} |
|
144 |
} |
|
145 |
} |
|
146 |
return $nrm; |
|
147 |
} |
|
148 |
||
149 |
#====================================================================== |
|
5
509cc9966b68
======================================================================
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
4
diff
changeset
|
150 |
# $removed = editTilt($ens,$threshold) |
0 | 151 |
# |
152 |
# NOTES: |
|
6 | 153 |
# - called after Earth vels have been calculated |
0 | 154 |
# - sets TILT field for each ensemble as a side-effect |
47
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
155 |
# - count all removed velocities |
0 | 156 |
#====================================================================== |
157 |
||
158 |
sub editTilt($$) |
|
159 |
{ |
|
160 |
my($ens,$lim) = @_; |
|
161 |
||
162 |
$LADCP{ENSEMBLE}[$ens]->{TILT} = |
|
163 |
&angle_from_vertical($LADCP{ENSEMBLE}[$ens]->{PITCH},$LADCP{ENSEMBLE}[$ens]->{ROLL}); |
|
164 |
||
15 | 165 |
return 0 unless ($LADCP{ENSEMBLE}[$ens]->{TILT} > $lim); |
0 | 166 |
|
167 |
my($nrm) = 0; |
|
168 |
for (my($bin)=0; $bin<$LADCP{N_BINS}; $bin++) { |
|
6 | 169 |
next unless defined($LADCP{ENSEMBLE}[$ens]->{W}[$bin]); |
170 |
undef($LADCP{ENSEMBLE}[$ens]->{W}[$bin]); |
|
171 |
$nrm++; |
|
0 | 172 |
} |
173 |
return $nrm; |
|
174 |
} |
|
175 |
||
176 |
#====================================================================== |
|
5
509cc9966b68
======================================================================
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
4
diff
changeset
|
177 |
# $removed = editErrVel($ens,$threshold) |
0 | 178 |
# |
179 |
# NOTES: |
|
180 |
# - call after Earth vels have been calculated |
|
5
509cc9966b68
======================================================================
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
4
diff
changeset
|
181 |
# - count only removed vels in selected bin range |
0 | 182 |
#====================================================================== |
183 |
||
184 |
sub editErrVel($$) |
|
185 |
{ |
|
186 |
my($ens,$lim) = @_; |
|
187 |
||
188 |
my($nrm) = 0; |
|
189 |
for (my($bin)=0; $bin<$LADCP{N_BINS}; $bin++) { |
|
4
e681262d0fd7
yay! first version I am really happy with. With plots 'n all.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
3
diff
changeset
|
190 |
next unless defined($LADCP{ENSEMBLE}[$ens]->{W}[$bin]); |
0 | 191 |
next if (abs($LADCP{ENSEMBLE}[$ens]->{ERRVEL}[$bin]) <= $lim); |
192 |
undef($LADCP{ENSEMBLE}[$ens]->{W}[$bin]); |
|
3
9c021fdea1ff
Before replacing command-line options by default variables.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
0
diff
changeset
|
193 |
$nrm++ if ($bin>=$LADCP_firstBin-1 && $bin<=$LADCP_lastBin-1); |
9c021fdea1ff
Before replacing command-line options by default variables.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
0
diff
changeset
|
194 |
} |
9c021fdea1ff
Before replacing command-line options by default variables.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
0
diff
changeset
|
195 |
return $nrm; |
9c021fdea1ff
Before replacing command-line options by default variables.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
0
diff
changeset
|
196 |
} |
9c021fdea1ff
Before replacing command-line options by default variables.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
0
diff
changeset
|
197 |
|
9c021fdea1ff
Before replacing command-line options by default variables.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
0
diff
changeset
|
198 |
#====================================================================== |
5
509cc9966b68
======================================================================
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
4
diff
changeset
|
199 |
# $removed = editWOutliers($ens,$lim) |
4
e681262d0fd7
yay! first version I am really happy with. With plots 'n all.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
3
diff
changeset
|
200 |
# |
e681262d0fd7
yay! first version I am really happy with. With plots 'n all.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
3
diff
changeset
|
201 |
# NOTES: |
e681262d0fd7
yay! first version I am really happy with. With plots 'n all.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
3
diff
changeset
|
202 |
# - call after Earth vels have been calculated |
5
509cc9966b68
======================================================================
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
4
diff
changeset
|
203 |
# - count only removed vels in selected bin range |
509cc9966b68
======================================================================
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
4
diff
changeset
|
204 |
# - lim determines how many times the mad an outlier has to be from median |
4
e681262d0fd7
yay! first version I am really happy with. With plots 'n all.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
3
diff
changeset
|
205 |
#====================================================================== |
e681262d0fd7
yay! first version I am really happy with. With plots 'n all.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
3
diff
changeset
|
206 |
|
5
509cc9966b68
======================================================================
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
4
diff
changeset
|
207 |
sub editWOutliers($$) |
4
e681262d0fd7
yay! first version I am really happy with. With plots 'n all.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
3
diff
changeset
|
208 |
{ |
5
509cc9966b68
======================================================================
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
4
diff
changeset
|
209 |
my($ens,$lim) = @_; |
4
e681262d0fd7
yay! first version I am really happy with. With plots 'n all.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
3
diff
changeset
|
210 |
my($medw) = median(@{$LADCP{ENSEMBLE}[$ens]->{W}}); |
e681262d0fd7
yay! first version I am really happy with. With plots 'n all.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
3
diff
changeset
|
211 |
my($madw) = mad2($medw,@{$LADCP{ENSEMBLE}[$ens]->{W}}); |
e681262d0fd7
yay! first version I am really happy with. With plots 'n all.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
3
diff
changeset
|
212 |
|
e681262d0fd7
yay! first version I am really happy with. With plots 'n all.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
3
diff
changeset
|
213 |
my($nrm) = 0; |
e681262d0fd7
yay! first version I am really happy with. With plots 'n all.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
3
diff
changeset
|
214 |
for (my($bin)=0; $bin<$LADCP{N_BINS}; $bin++) { |
e681262d0fd7
yay! first version I am really happy with. With plots 'n all.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
3
diff
changeset
|
215 |
next unless defined($LADCP{ENSEMBLE}[$ens]->{W}[$bin]); |
5
509cc9966b68
======================================================================
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
4
diff
changeset
|
216 |
next if (abs($LADCP{ENSEMBLE}[$ens]->{W}[$bin]-$medw) <= $lim*$madw); |
4
e681262d0fd7
yay! first version I am really happy with. With plots 'n all.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
3
diff
changeset
|
217 |
undef($LADCP{ENSEMBLE}[$ens]->{W}[$bin]); |
e681262d0fd7
yay! first version I am really happy with. With plots 'n all.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
3
diff
changeset
|
218 |
$nrm++ if ($bin>=$LADCP_firstBin-1 && $bin<=$LADCP_lastBin-1); |
e681262d0fd7
yay! first version I am really happy with. With plots 'n all.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
3
diff
changeset
|
219 |
} |
e681262d0fd7
yay! first version I am really happy with. With plots 'n all.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
3
diff
changeset
|
220 |
return $nrm; |
e681262d0fd7
yay! first version I am really happy with. With plots 'n all.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
3
diff
changeset
|
221 |
} |
e681262d0fd7
yay! first version I am really happy with. With plots 'n all.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
3
diff
changeset
|
222 |
|
e681262d0fd7
yay! first version I am really happy with. With plots 'n all.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
3
diff
changeset
|
223 |
#====================================================================== |
5
509cc9966b68
======================================================================
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
4
diff
changeset
|
224 |
# $removed = editTruncRange($ens,$nbins) |
3
9c021fdea1ff
Before replacing command-line options by default variables.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
0
diff
changeset
|
225 |
# |
9c021fdea1ff
Before replacing command-line options by default variables.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
0
diff
changeset
|
226 |
# NOTES: |
9c021fdea1ff
Before replacing command-line options by default variables.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
0
diff
changeset
|
227 |
# - call after Earth vels have been calculated |
47
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
228 |
# - count only removed vels in selected bin range |
3
9c021fdea1ff
Before replacing command-line options by default variables.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
0
diff
changeset
|
229 |
#====================================================================== |
9c021fdea1ff
Before replacing command-line options by default variables.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
0
diff
changeset
|
230 |
|
9c021fdea1ff
Before replacing command-line options by default variables.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
0
diff
changeset
|
231 |
sub editTruncRange($$) |
9c021fdea1ff
Before replacing command-line options by default variables.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
0
diff
changeset
|
232 |
{ |
9c021fdea1ff
Before replacing command-line options by default variables.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
0
diff
changeset
|
233 |
my($ens,$nbins) = @_; |
9c021fdea1ff
Before replacing command-line options by default variables.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
0
diff
changeset
|
234 |
|
9c021fdea1ff
Before replacing command-line options by default variables.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
0
diff
changeset
|
235 |
my($nrm) = 0; |
9c021fdea1ff
Before replacing command-line options by default variables.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
0
diff
changeset
|
236 |
for (my($bin)=$LADCP{N_BINS}-1; $bin>=0 && $nrm<$nbins; $bin--) { |
9c021fdea1ff
Before replacing command-line options by default variables.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
0
diff
changeset
|
237 |
next unless defined($LADCP{ENSEMBLE}[$ens]->{W}[$bin]); |
9c021fdea1ff
Before replacing command-line options by default variables.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
0
diff
changeset
|
238 |
undef($LADCP{ENSEMBLE}[$ens]->{W}[$bin]); |
9c021fdea1ff
Before replacing command-line options by default variables.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
0
diff
changeset
|
239 |
$nrm++ if ($bin>=$LADCP_firstBin-1 && $bin<=$LADCP_lastBin-1); |
0 | 240 |
} |
241 |
return $nrm; |
|
242 |
} |
|
243 |
||
244 |
#====================================================================== |
|
5
509cc9966b68
======================================================================
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
4
diff
changeset
|
245 |
# $removed = editFarBins($ens,$first_bad_bin) |
3
9c021fdea1ff
Before replacing command-line options by default variables.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
0
diff
changeset
|
246 |
# |
9c021fdea1ff
Before replacing command-line options by default variables.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
0
diff
changeset
|
247 |
# NOTES: |
9c021fdea1ff
Before replacing command-line options by default variables.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
0
diff
changeset
|
248 |
# - call after Earth vels have been calculated |
5
509cc9966b68
======================================================================
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
4
diff
changeset
|
249 |
# - remove data from far bins |
509cc9966b68
======================================================================
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
4
diff
changeset
|
250 |
# - only bins in valid range are considered here, because |
509cc9966b68
======================================================================
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
4
diff
changeset
|
251 |
# $per_bin_nsamp is only defined for those |
47
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
252 |
# - only velocities from bins in valid range are counted |
3
9c021fdea1ff
Before replacing command-line options by default variables.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
0
diff
changeset
|
253 |
#====================================================================== |
9c021fdea1ff
Before replacing command-line options by default variables.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
0
diff
changeset
|
254 |
|
5
509cc9966b68
======================================================================
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
4
diff
changeset
|
255 |
sub editFarBins($$) |
3
9c021fdea1ff
Before replacing command-line options by default variables.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
0
diff
changeset
|
256 |
{ |
5
509cc9966b68
======================================================================
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
4
diff
changeset
|
257 |
my($ens,$first_bad_bin) = @_; |
3
9c021fdea1ff
Before replacing command-line options by default variables.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
0
diff
changeset
|
258 |
|
9c021fdea1ff
Before replacing command-line options by default variables.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
0
diff
changeset
|
259 |
my($nrm) = 0; |
5
509cc9966b68
======================================================================
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
4
diff
changeset
|
260 |
for (my($bin)=$first_bad_bin; $bin<=$LADCP_lastBin-1; $bin++) { |
509cc9966b68
======================================================================
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
4
diff
changeset
|
261 |
next unless defined($LADCP{ENSEMBLE}[$ens]->{W}[$bin]); |
3
9c021fdea1ff
Before replacing command-line options by default variables.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
0
diff
changeset
|
262 |
undef($LADCP{ENSEMBLE}[$ens]->{W}[$bin]); |
5
509cc9966b68
======================================================================
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
4
diff
changeset
|
263 |
$nrm++; |
3
9c021fdea1ff
Before replacing command-line options by default variables.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
0
diff
changeset
|
264 |
} |
9c021fdea1ff
Before replacing command-line options by default variables.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
0
diff
changeset
|
265 |
return $nrm; |
9c021fdea1ff
Before replacing command-line options by default variables.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
0
diff
changeset
|
266 |
} |
9c021fdea1ff
Before replacing command-line options by default variables.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
0
diff
changeset
|
267 |
|
9c021fdea1ff
Before replacing command-line options by default variables.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
0
diff
changeset
|
268 |
#====================================================================== |
16
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
269 |
# ($nvrm,$nerm) = editSideLobes($fromEns,$toEns,$water_depth) |
0 | 270 |
# |
271 |
# NOTES: |
|
272 |
# 1) When this code is executed the sound speed is known. No attempt is made to correct for |
|
273 |
# along-beam soundspeed variation, but the soundspeed at the transducer is accounted for. |
|
32
6041a20feb39
V1.0 release candidate
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
27
diff
changeset
|
274 |
# 2) for surface sidelobes, water_depth == undef; surface sidelobes include the |
6041a20feb39
V1.0 release candidate
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
27
diff
changeset
|
275 |
# vessel draft |
47
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
276 |
# - all velocities are counted, even those outside valid bin range, |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
277 |
# because the %age is not reported |
0 | 278 |
#====================================================================== |
279 |
||
280 |
sub editSideLobes($$$) |
|
281 |
{ |
|
32
6041a20feb39
V1.0 release candidate
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
27
diff
changeset
|
282 |
my($fe,$te,$wd) = @_; # first & last ens to process, water depth for sidelobes near seabed |
0 | 283 |
my($nvrm) = 0; # of velocities removed |
284 |
my($nerm) = 0; # of ensembles affected |
|
285 |
for (my($e)=$fe; $e<=$te; $e++) { |
|
286 |
next unless numberp($LADCP{ENSEMBLE}[$e]->{CTD_DEPTH}); |
|
32
6041a20feb39
V1.0 release candidate
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
27
diff
changeset
|
287 |
my($range) = defined($wd) ? $wd - $LADCP{ENSEMBLE}[$e]->{CTD_DEPTH} |
6041a20feb39
V1.0 release candidate
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
27
diff
changeset
|
288 |
: $LADCP{ENSEMBLE}[$e]->{CTD_DEPTH} - $vessel_draft; |
6041a20feb39
V1.0 release candidate
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
27
diff
changeset
|
289 |
$range = 0 if ($range < 0); |
45
6d49c7420a6c
stable V1.3beta, just before implementing bin interpolation
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
34
diff
changeset
|
290 |
my($sscorr) = $CTD{SVEL}[$LADCP{ENSEMBLE}[$e]->{CTD_SCAN}] / $LADCP{ENSEMBLE}[$e]->{SPEED_OF_SOUND}; |
4
e681262d0fd7
yay! first version I am really happy with. With plots 'n all.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
3
diff
changeset
|
291 |
my($goodBins) = ($range - $sscorr*$LADCP{DISTANCE_TO_BIN1_CENTER}) * cos(rad($LADCP{BEAM_ANGLE})) |
0 | 292 |
/ ($sscorr*$LADCP{BIN_LENGTH}) |
293 |
- 1.5; |
|
294 |
||
295 |
my($dirty) = 0; |
|
296 |
for (my($bin)=int($goodBins); $bin<$LADCP{N_BINS}; $bin++) { # NB: 2 good bins implies that bin 2 is bad |
|
297 |
next unless ($bin>=0 && defined($LADCP{ENSEMBLE}[$e]->{W}[$bin])); |
|
298 |
$dirty = 1; |
|
299 |
$nvrm++; |
|
300 |
undef($LADCP{ENSEMBLE}[$e]->{W}[$bin]); |
|
301 |
} |
|
302 |
||
303 |
$nerm += $dirty; |
|
304 |
} |
|
305 |
return ($nvrm,$nerm); |
|
306 |
} |
|
307 |
||
4
e681262d0fd7
yay! first version I am really happy with. With plots 'n all.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
3
diff
changeset
|
308 |
|
e681262d0fd7
yay! first version I am really happy with. With plots 'n all.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
3
diff
changeset
|
309 |
#====================================================================== |
16
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
310 |
# ($nvrm,$nerm) = editPPI($fromEns,$toEns,$water_depth) |
15 | 311 |
# |
312 |
# NOTES: |
|
47
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
313 |
# - only velocities in good bin range are removed/counted |
16
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
314 |
# - for UL, water_depth == undef; for DL water_depth is always defined, |
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
315 |
# or else editPPI is not called |
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
316 |
# - when this code is executed a suitable UL or DL depth-average-soundspeed |
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
317 |
# profile (@DASSprof at 1m resolution) is available |
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
318 |
# - PPI layer is defined by the shortest and longest acoustic paths |
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
319 |
# between transducer and seabed that contribute significantly to the |
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
320 |
# backscatter |
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
321 |
# - shortest path (shallow limit): |
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
322 |
# - distance to seabed => sidelobe |
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
323 |
# - min_lim = water_depth - DASSprof[CTD_depth]*DeltaT/2 |
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
324 |
# - longest path (deep limit): |
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
325 |
# - outer edge of main lobe of one of the beams (depending on |
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
326 |
# instrument tilt) |
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
327 |
# - nominal half-beam apertures at half peak signal strength |
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
328 |
# (-3dB), RDI BB Primer, pp. 35f (2ND COLUMN) |
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
329 |
# WH1200 1.4 2.4 |
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
330 |
# WH600 1.5 2.5 |
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
331 |
# WH300 2.2 3.7 |
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
332 |
# WH150 4.0 6.7 |
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
333 |
# WH75 5.0 8.4 |
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
334 |
# - for WH150, Fig. 23 indicates that half-beam-width |
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
335 |
# at -5dB (<1% peak signal strength) is about 5/3 of same |
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
336 |
# at -3dB => PPI limit choice (3rd column above) |
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
337 |
# - [Plots/2014_P16_043.eps]: |
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
338 |
# - mean tilt of 2 degrees included in effects |
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
339 |
# - finite pulse length means that there actually |
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
340 |
# is less elapsed time between the end of the sending |
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
341 |
# and the beginning of the reception than the ping |
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
342 |
# interval suggests; without it, the PPI peak depth |
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
343 |
# does not agree with the prediction |
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
344 |
# - note that there is no PPI effect possible above |
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
345 |
# the dark blue line --- this is a hard limit |
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
346 |
# (I checked ping interval to within 0.001, |
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
347 |
# water depth is known better than 2m, sound |
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
348 |
# speed is accurately accounted for (as indicated |
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
349 |
# by the cyan line), so the variability above |
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
350 |
# is due to background variability, which is |
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
351 |
# consistent with the shape of the curve outside |
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
352 |
# the PPI layer |
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
353 |
# => PPI peak can be tightly bracketed but care has to |
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
354 |
# be taken to account for finite beam width & |
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
355 |
# instrument beam_tilt = max(|pitch|,|roll|) |
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
356 |
# - while the upper limit of the PPI layer is unambiguous, this |
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
357 |
# is only true if the recorded ping intervals are accurate |
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
358 |
# - 2014 CLIVAR P16 #47 shows a slight discontinuity in dc_w near |
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
359 |
# the middle of the upper PPI layer (4000m) |
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
360 |
# - the discontinuity is slightly more pronounced with PPI editing |
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
361 |
# enabled |
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
362 |
# - setting $PPI_extend_upper_limit = 1.03 (or 1.04, 1.05, 1.1) |
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
363 |
# reduces the discontinuity to the level without PPI filtering, but |
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
364 |
# not any better |
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
365 |
# - overall I am not convinced that the discontinuity is related |
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
366 |
# to PPI; therefore, $PPI_extend_upper_limit is not set by default |
15 | 367 |
#====================================================================== |
368 |
||
16
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
369 |
{ my($bha); # beam half aperture (static scope) |
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
370 |
|
15 | 371 |
sub editPPI($$$) |
372 |
{ |
|
373 |
my($fe,$te,$wd) = @_; # first & last ens to process, water depth for downlooker |
|
374 |
my($nvrm) = 0; # of velocities removed |
|
375 |
my($nerm) = 0; # of ensembles affected |
|
16
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
376 |
|
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
377 |
unless (defined($bha)) { |
49 | 378 |
if (abs($LADCP{BEAM_FREQUENCY}-1200)/1200 <= 0.1) { $bha = 2.4; } |
379 |
elsif (abs($LADCP{BEAM_FREQUENCY}-600) / 600 <= 0.1) { $bha = 2.5; } |
|
380 |
elsif (abs($LADCP{BEAM_FREQUENCY}-300) / 300 <= 0.1) { $bha = 3.7; } |
|
381 |
elsif (abs($LADCP{BEAM_FREQUENCY}-150) / 150 <= 0.1) { $bha = 6.7; } |
|
382 |
elsif (abs($LADCP{BEAM_FREQUENCY}-75) / 75 <= 0.1) { $bha = 8.4; } |
|
27
2053d8de8d6b
updated plots & seabed code; GoM data process correctly
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
16
diff
changeset
|
383 |
else { error("$0: unexpected transducer frequency $LADCP{BEAM_FREQUENCY}\n"); } |
16
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
384 |
} |
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
385 |
|
15 | 386 |
for (my($e)=$fe; $e<=$te; $e++) { |
387 |
next unless numberp($LADCP{ENSEMBLE}[$e]->{CTD_DEPTH}); |
|
16
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
388 |
next unless ($e > 0); |
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
389 |
|
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
390 |
my($delta_t) = $LADCP{ENSEMBLE}[$e]->{UNIX_TIME} - $LADCP{ENSEMBLE}[$e-1]->{UNIX_TIME}; |
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
391 |
my($dz_max) = $DASSprof[int($LADCP{ENSEMBLE}[$e]->{CTD_DEPTH})]*$delta_t / 2; |
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
392 |
my($beam_tilt) = max(abs($LADCP{ENSEMBLE}[$e]->{GIMBAL_PITCH}), |
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
393 |
abs($LADCP{ENSEMBLE}[$e]->{ROLL})); |
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
394 |
my($dz_min) = $dz_max * cos(rad($LADCP{BEAM_ANGLE} + $beam_tilt + $bha)); |
46 | 395 |
my(@bd) = binDepths($e); |
16
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
396 |
|
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
397 |
$dz_max *= $PPI_extend_upper_limit |
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
398 |
if numberp($PPI_extend_upper_limit); |
15 | 399 |
|
400 |
my($dirty) = 0; |
|
16
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
401 |
for (my($bin)=$LADCP_firstBin-1; $bin<$LADCP_lastBin; $bin++) { |
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
402 |
next unless (defined($LADCP{ENSEMBLE}[$e]->{W}[$bin])); |
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
403 |
if (defined($wd)) { # DL |
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
404 |
next unless ($bd[$bin] >= $wd-$dz_max && $bd[$bin] <= $wd-$dz_min); |
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
405 |
} else { # UL |
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
406 |
next unless ($bd[$bin] <= $dz_max && $bd[$bin] >= $dz_min); |
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
407 |
} |
15 | 408 |
$dirty = 1; |
409 |
$nvrm++; |
|
410 |
undef($LADCP{ENSEMBLE}[$e]->{W}[$bin]); |
|
411 |
} |
|
412 |
||
413 |
$nerm += $dirty; |
|
414 |
} |
|
415 |
return ($nvrm,$nerm); |
|
416 |
} |
|
417 |
||
16
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
418 |
} # static scope for $bha |
29e867b3e070
whoosher version at beginning of FZ1
A.M. Thurnherr <ant@ldeo.columbia.edu>
parents:
15
diff
changeset
|
419 |
|
15 | 420 |
|
421 |
#====================================================================== |
|
4
e681262d0fd7
yay! first version I am really happy with. With plots 'n all.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
3
diff
changeset
|
422 |
# $nerm = editSurfLayer($fromEns,$toEns,$surface_layer_depth) |
e681262d0fd7
yay! first version I am really happy with. With plots 'n all.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
3
diff
changeset
|
423 |
# |
e681262d0fd7
yay! first version I am really happy with. With plots 'n all.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
3
diff
changeset
|
424 |
# NOTES: |
e681262d0fd7
yay! first version I am really happy with. With plots 'n all.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
3
diff
changeset
|
425 |
# 1) When this code is executed the fully corrected instrument and |
e681262d0fd7
yay! first version I am really happy with. With plots 'n all.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
3
diff
changeset
|
426 |
# bin depths are known |
e681262d0fd7
yay! first version I am really happy with. With plots 'n all.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
3
diff
changeset
|
427 |
# 2) This code was inspired by 2011_IWISE station 8 |
e681262d0fd7
yay! first version I am really happy with. With plots 'n all.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
3
diff
changeset
|
428 |
# 3) No point in counting the deleted velocities |
e681262d0fd7
yay! first version I am really happy with. With plots 'n all.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
3
diff
changeset
|
429 |
#====================================================================== |
e681262d0fd7
yay! first version I am really happy with. With plots 'n all.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
3
diff
changeset
|
430 |
|
e681262d0fd7
yay! first version I am really happy with. With plots 'n all.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
3
diff
changeset
|
431 |
sub editSurfLayer($$$) |
e681262d0fd7
yay! first version I am really happy with. With plots 'n all.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
3
diff
changeset
|
432 |
{ |
e681262d0fd7
yay! first version I am really happy with. With plots 'n all.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
3
diff
changeset
|
433 |
my($fe,$te,$sld) = @_; # first & last ens to process |
e681262d0fd7
yay! first version I am really happy with. With plots 'n all.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
3
diff
changeset
|
434 |
my($nerm) = 0; # of ensembles affected |
e681262d0fd7
yay! first version I am really happy with. With plots 'n all.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
3
diff
changeset
|
435 |
for (my($e)=$fe; $e<=$te; $e++) { |
10
7e76fdef8953
version prior to carrying out separate dc-/uc- time lagging
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
6
diff
changeset
|
436 |
next unless numberp($LADCP{ENSEMBLE}[$e]->{CTD_DEPTH}); |
4
e681262d0fd7
yay! first version I am really happy with. With plots 'n all.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
3
diff
changeset
|
437 |
undef($LADCP{ENSEMBLE}[$e]->{CTD_DEPTH}),$nerm++ |
e681262d0fd7
yay! first version I am really happy with. With plots 'n all.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
3
diff
changeset
|
438 |
if ($LADCP{ENSEMBLE}[$e]->{CTD_DEPTH} <= $sld); |
e681262d0fd7
yay! first version I am really happy with. With plots 'n all.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
3
diff
changeset
|
439 |
} |
e681262d0fd7
yay! first version I am really happy with. With plots 'n all.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
3
diff
changeset
|
440 |
return $nerm; |
e681262d0fd7
yay! first version I am really happy with. With plots 'n all.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
3
diff
changeset
|
441 |
} |
e681262d0fd7
yay! first version I am really happy with. With plots 'n all.
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
3
diff
changeset
|
442 |
|
34 | 443 |
|
444 |
#=============================================================================== |
|
445 |
# $nerm = editBadTimeLagging($fromEns,$toEns,$good_from_elapsed1,$good_to_elapsed1,...) |
|
47
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
446 |
# |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
447 |
# NOTES: |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
448 |
# - deleted velocities are not counted |
34 | 449 |
#=============================================================================== |
450 |
||
451 |
sub editBadTimeLagging($$@) |
|
452 |
{ |
|
453 |
my($fe,$te,@elim) = @_; |
|
454 |
||
455 |
my($nerm) = 0; # of ensembles removed |
|
456 |
my($i) = 0; |
|
457 |
||
458 |
if ($elim[0] < 0) { # entire piece is bad |
|
459 |
for (my($e)=$fe; $e<=$te; $e++) { |
|
460 |
undef($LADCP{ENSEMBLE}[$e]->{REFLR_W}); |
|
461 |
$nerm++; |
|
462 |
} |
|
463 |
} elsif (defined($elim[1])) { # limits in elim |
|
464 |
my($e); |
|
465 |
for ($e=$fe; @elim; shift(@elim),shift(@elim)) { |
|
466 |
# print(STDERR "deleting to $elim[0]\n"); |
|
467 |
while ($LADCP{ENSEMBLE}[$e]->{ELAPSED} < $elim[0]) { |
|
468 |
undef($LADCP{ENSEMBLE}[$e]->{REFLR_W}); |
|
469 |
$nerm++; |
|
470 |
$e++; |
|
471 |
} |
|
472 |
# print(STDERR "keeping to $elim[1]\n"); |
|
473 |
while ($LADCP{ENSEMBLE}[$e]->{ELAPSED} < $elim[1]) { $e++; } |
|
474 |
} |
|
475 |
# print(STDERR "deleting to $LADCP{ENSEMBLE}[$te]->{ELAPSED}\n"); |
|
476 |
while ($e <= $te) { |
|
477 |
undef($LADCP{ENSEMBLE}[$e]->{REFLR_W}); |
|
478 |
$nerm++; |
|
479 |
$e++; |
|
480 |
} |
|
481 |
} |
|
482 |
return $nerm; |
|
483 |
} |
|
484 |
||
47
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
485 |
#====================================================================== |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
486 |
# $nerm = editResiduals_rmsMax($fe,$te,$max_val) |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
487 |
# |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
488 |
# NOTES: |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
489 |
# - removed velocities are not counted |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
490 |
#====================================================================== |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
491 |
|
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
492 |
sub editResiduals_rmsMax($$$) |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
493 |
{ |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
494 |
my($fe,$te,$limit) = @_; |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
495 |
my($nerm) = 0; |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
496 |
for (my($ens)=$fe; $ens<=$te; $ens++) { |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
497 |
next unless numberp($LADCP{ENSEMBLE}[$ens]->{CTD_DEPTH}); |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
498 |
my($sum) = my($n) = 0; # calculate rms residual |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
499 |
my(@bindepth) = binDepths($ens); |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
500 |
for ($bin=$LADCP_firstBin-1; $bin<=$LADCP_lastBin-1; $bin++) { |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
501 |
next unless ($bin+1>=$outGrid_firstBin && $bin+1<=$outGrid_lastBin); |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
502 |
next unless numberp($LADCP{ENSEMBLE}[$ens]->{W}[$bin]); |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
503 |
my($bi) = $bindepth[$bin]/$opt_o; |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
504 |
my($res) = ($ens < $LADCP_atbottom) ? |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
505 |
$LADCP{ENSEMBLE}[$ens]->{SSCORRECTED_OCEAN_W}[$bin] - $DNCAST{MEDIAN_W}[$bi] : |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
506 |
$LADCP{ENSEMBLE}[$ens]->{SSCORRECTED_OCEAN_W}[$bin] - $UPCAST{MEDIAN_W}[$bi]; |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
507 |
$sum += &SQR($res); $n++; |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
508 |
} |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
509 |
if ($n == 0 || sqrt($sum/$n) > $limit) { # ensemble is bad |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
510 |
undef($LADCP{ENSEMBLE}[$ens]->{CTD_DEPTH}); |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
511 |
$nerm++; |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
512 |
} |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
513 |
} |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
514 |
return $nerm; |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
515 |
} |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
516 |
|
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
517 |
#====================================================================== |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
518 |
# $nerm = editResiduals_deltaMax($fe,$te,$max_val) |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
519 |
# - delta residual = delta beampair w => equal to scaled error velocity? |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
520 |
# - sharp cutoff near 5cm/s for std parameters (0.1 m/s error velocity |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
521 |
# filter) in several data sets |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
522 |
# - samples with large residuals differences are clear outliers in |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
523 |
# the residuals vs tilt plots => obvious to remove |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
524 |
# - how are large delta res possible given the errvel limit??? |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
525 |
# - only valid bin range is edited/counted |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
526 |
#====================================================================== |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
527 |
|
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
528 |
sub editResiduals_deltaMax($$$) |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
529 |
{ |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
530 |
my($fe,$te,$limit) = @_; |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
531 |
my($nvrm) = 0; |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
532 |
for (my($ens)=$fe; $ens<=$te; $ens++) { |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
533 |
next unless numberp($LADCP{ENSEMBLE}[$ens]->{CTD_DEPTH}); |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
534 |
for ($bin=$LADCP_firstBin-1; $bin<=$LADCP_lastBin-1; $bin++) { |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
535 |
next unless ($bin+1>=$outGrid_firstBin && $bin+1<=$outGrid_lastBin); |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
536 |
next unless numberp($LADCP{ENSEMBLE}[$ens]->{W}[$bin]); |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
537 |
my($Dr) = abs($LADCP{ENSEMBLE}[$ens]->{SSCORRECTED_OCEAN_W12}[$bin] - |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
538 |
$LADCP{ENSEMBLE}[$ens]->{SSCORRECTED_OCEAN_W34}[$bin]); |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
539 |
if ($Dr > $limit) { |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
540 |
undef($LADCP{ENSEMBLE}[$ens]->{W}[$bin]); |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
541 |
$nvrm++; |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
542 |
} |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
543 |
} |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
544 |
} |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
545 |
return $nvrm; |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
546 |
} |
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
547 |
|
2ccb81b7cea5
version found on whoosher after repair
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
46
diff
changeset
|
548 |
#====================================================================== |
49 | 549 |
# $nerm = editLargeHSpeeds($fe,$te,$max_hspeed) |
550 |
# - filter based on 2018 GO-SHIP LADCP profile #106, where UL |
|
551 |
# velocities become bad when ship starts dragging rosette |
|
552 |
# - only valid bin range is edited/counted |
|
553 |
#====================================================================== |
|
554 |
||
555 |
sub editLargeHSpeeds($$$) |
|
556 |
{ |
|
557 |
my($fe,$te,$limit) = @_; |
|
558 |
my($nerm) = 0; |
|
559 |
for (my($ens)=$fe; $ens<=$te; $ens++) { |
|
560 |
next unless numberp($LADCP{ENSEMBLE}[$ens]->{CTD_DEPTH}); |
|
561 |
next unless (vel_speed($LADCP{ENSEMBLE}[$ens]->{REFLR_U}, |
|
562 |
$LADCP{ENSEMBLE}[$ens]->{REFLR_U}) > $limit); |
|
563 |
undef($LADCP{ENSEMBLE}[$ens]->{CTD_DEPTH}); |
|
564 |
$nerm++; |
|
565 |
} |
|
566 |
return $nerm; |
|
567 |
} |
|
568 |
||
569 |
#====================================================================== |
|
34 | 570 |
|
0 | 571 |
1; |