author | A.M. Thurnherr <athurnherr@yahoo.com> |
Wed, 13 May 2015 21:30:27 +0000 | |
changeset 35 | 3d769eee8c4f |
parent 31 | af03ca38fc2a |
permissions | -rw-r--r-- |
28
79bf60e97208
after merge with laptop version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff
changeset
|
1 |
#====================================================================== |
79bf60e97208
after merge with laptop version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff
changeset
|
2 |
# L A D C P P R O C . U T I L S |
79bf60e97208
after merge with laptop version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff
changeset
|
3 |
# doc: Fri Mar 21 15:16:59 2014 |
31 | 4 |
# dlm: Sun Jul 27 17:00:57 2014 |
28
79bf60e97208
after merge with laptop version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff
changeset
|
5 |
# (c) 2014 A.M. Thurnherr |
31 | 6 |
# uE-Info: 14 49 NIL 0 0 72 2 2 4 NIL ofnI |
28
79bf60e97208
after merge with laptop version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff
changeset
|
7 |
#====================================================================== |
79bf60e97208
after merge with laptop version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff
changeset
|
8 |
|
79bf60e97208
after merge with laptop version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff
changeset
|
9 |
# HISTORY: |
79bf60e97208
after merge with laptop version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff
changeset
|
10 |
# Mar 21, 2014: - created |
79bf60e97208
after merge with laptop version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff
changeset
|
11 |
# - added rangeToBin() |
79bf60e97208
after merge with laptop version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff
changeset
|
12 |
# Mar 27, 2014: - added rangeToBinAlongBeam() |
31 | 13 |
# Jul 27, 2014: - improved comments |
14 |
# - moved depthOfGI() here from [LADCPproc.backscatter] |
|
28
79bf60e97208
after merge with laptop version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff
changeset
|
15 |
|
79bf60e97208
after merge with laptop version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff
changeset
|
16 |
#---------------------------------------------------------------------- |
31 | 17 |
# calculate depth of particular bin in particular ensemble |
18 |
# in contrast to the original UH code: |
|
19 |
# - the distance to the first bin is soundspeed-corrected |
|
20 |
# - instrument tilt is considered |
|
28
79bf60e97208
after merge with laptop version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff
changeset
|
21 |
#---------------------------------------------------------------------- |
79bf60e97208
after merge with laptop version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff
changeset
|
22 |
|
79bf60e97208
after merge with laptop version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff
changeset
|
23 |
sub depthOfBin($$) |
79bf60e97208
after merge with laptop version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff
changeset
|
24 |
{ |
79bf60e97208
after merge with laptop version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff
changeset
|
25 |
sub dzToBin($$) |
79bf60e97208
after merge with laptop version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff
changeset
|
26 |
{ |
79bf60e97208
after merge with laptop version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff
changeset
|
27 |
my($ens,$bin) = @_; |
79bf60e97208
after merge with laptop version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff
changeset
|
28 |
my($sscorr) = $LADCP{ENSEMBLE}[$ens]->{CTD_SVEL} / $LADCP{ENSEMBLE}[$ens]->{SPEED_OF_SOUND}; |
79bf60e97208
after merge with laptop version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff
changeset
|
29 |
my($tlcorr) = cos(rad($LADCP{ENSEMBLE}[$ens]->{TILT})); |
79bf60e97208
after merge with laptop version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff
changeset
|
30 |
return $sscorr*$tlcorr * ($LADCP{DISTANCE_TO_BIN1_CENTER} + $bin*$LADCP{BIN_LENGTH}); |
79bf60e97208
after merge with laptop version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff
changeset
|
31 |
} |
79bf60e97208
after merge with laptop version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff
changeset
|
32 |
|
79bf60e97208
after merge with laptop version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff
changeset
|
33 |
my($ens,$bin) = @_; |
79bf60e97208
after merge with laptop version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff
changeset
|
34 |
return $LADCP{ENSEMBLE}[$ens]->{XDUCER_FACING_UP} ? |
79bf60e97208
after merge with laptop version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff
changeset
|
35 |
$LADCP{ENSEMBLE}[$ens]->{DEPTH} - &dzToBin($ens,$bin) : |
79bf60e97208
after merge with laptop version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff
changeset
|
36 |
$LADCP{ENSEMBLE}[$ens]->{DEPTH} + &dzToBin($ens,$bin); |
79bf60e97208
after merge with laptop version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff
changeset
|
37 |
} |
79bf60e97208
after merge with laptop version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff
changeset
|
38 |
|
31 | 39 |
#---------------------------------------------------------------------- |
40 |
# calculate along-beam distance between transducer and center of |
|
41 |
# particular bin in particular ensemble |
|
42 |
# - used for acoustic backscatter correction |
|
43 |
#---------------------------------------------------------------------- |
|
44 |
||
45 |
sub rangeToBin($$) |
|
46 |
{ |
|
47 |
my($ens,$bin) = @_; |
|
48 |
my($sscorr) = $LADCP{ENSEMBLE}[$ens]->{CTD_SVEL} / $LADCP{ENSEMBLE}[$ens]->{SPEED_OF_SOUND}; |
|
49 |
return $sscorr * ($LADCP{DISTANCE_TO_BIN1_CENTER} + $bin*$LADCP{BIN_LENGTH}) / cos(rad($LADCP{BEAM_ANGLE})); |
|
50 |
} |
|
51 |
||
52 |
#---------------------------------------------------------------------------- |
|
53 |
# calculate depth of particular bin of particular beam in particular ensemble |
|
54 |
# - used to map acoustic backscatter of different beams correctly when |
|
55 |
# instrument tilt is large |
|
56 |
#---------------------------------------------------------------------------- |
|
28
79bf60e97208
after merge with laptop version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff
changeset
|
57 |
|
79bf60e97208
after merge with laptop version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff
changeset
|
58 |
sub depthOfBinAlongBeam($$$) |
79bf60e97208
after merge with laptop version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff
changeset
|
59 |
{ |
79bf60e97208
after merge with laptop version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff
changeset
|
60 |
sub dzToBinAlongBeam($$$) |
79bf60e97208
after merge with laptop version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff
changeset
|
61 |
{ |
79bf60e97208
after merge with laptop version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff
changeset
|
62 |
my($ens,$bin,$beam) = @_; |
79bf60e97208
after merge with laptop version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff
changeset
|
63 |
my($sscorr) = $LADCP{ENSEMBLE}[$ens]->{CTD_SVEL} / $LADCP{ENSEMBLE}[$ens]->{SPEED_OF_SOUND}; |
79bf60e97208
after merge with laptop version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff
changeset
|
64 |
|
79bf60e97208
after merge with laptop version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff
changeset
|
65 |
my($pitch) = $LADCP{ENSEMBLE}[$ens]->{PITCH} + $pitch_offset; |
79bf60e97208
after merge with laptop version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff
changeset
|
66 |
my($roll) = $LADCP{ENSEMBLE}[$ens]->{ROLL} + $roll_offset; |
79bf60e97208
after merge with laptop version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff
changeset
|
67 |
|
79bf60e97208
after merge with laptop version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff
changeset
|
68 |
if ($beam == 0) { $roll += $LADCP{BEAM_ANGLE}; } |
79bf60e97208
after merge with laptop version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff
changeset
|
69 |
elsif ($beam == 1) { $roll -= $LADCP{BEAM_ANGLE}; } |
79bf60e97208
after merge with laptop version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff
changeset
|
70 |
elsif ($beam == 2) { $pitch += $LADCP{BEAM_ANGLE}; } |
79bf60e97208
after merge with laptop version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff
changeset
|
71 |
else { $pitch -= $LADCP{BEAM_ANGLE}; } |
79bf60e97208
after merge with laptop version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff
changeset
|
72 |
|
79bf60e97208
after merge with laptop version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff
changeset
|
73 |
my($tlcorr) = cos(rad(&angle_from_vertical($pitch,$roll))); |
79bf60e97208
after merge with laptop version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff
changeset
|
74 |
|
79bf60e97208
after merge with laptop version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff
changeset
|
75 |
return $sscorr*$tlcorr * ($LADCP{DISTANCE_TO_BIN1_CENTER} + $bin*$LADCP{BIN_LENGTH}); |
79bf60e97208
after merge with laptop version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff
changeset
|
76 |
} |
79bf60e97208
after merge with laptop version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff
changeset
|
77 |
|
79bf60e97208
after merge with laptop version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff
changeset
|
78 |
my($ens,$bin,$beam) = @_; |
79bf60e97208
after merge with laptop version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff
changeset
|
79 |
return $LADCP{ENSEMBLE}[$ens]->{XDUCER_FACING_UP} ? |
79bf60e97208
after merge with laptop version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff
changeset
|
80 |
$LADCP{ENSEMBLE}[$ens]->{DEPTH} - &dzToBinAlongBeam($ens,$bin,$beam) : |
79bf60e97208
after merge with laptop version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff
changeset
|
81 |
$LADCP{ENSEMBLE}[$ens]->{DEPTH} + &dzToBinAlongBeam($ens,$bin,$beam); |
79bf60e97208
after merge with laptop version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff
changeset
|
82 |
} |
79bf60e97208
after merge with laptop version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff
changeset
|
83 |
|
31 | 84 |
#--------------------------------------------------------------------------- |
85 |
# return center depth corresponding to particular grid index (in shear grid) |
|
86 |
#--------------------------------------------------------------------------- |
|
87 |
||
88 |
sub depthOfGI($) { return $_[0]*$GRID_DZ + $GRID_DZ/2; } # depth corresponding to particular grid index |
|
89 |
||
90 |
#---------------------------------------------------------------------- |
|
91 |
# return ocean velocity (u,v,w) at a given depth |
|
92 |
#---------------------------------------------------------------------- |
|
93 |
||
94 |
sub oceanVel($) |
|
95 |
{ |
|
96 |
||
97 |
} |
|
98 |
||
28
79bf60e97208
after merge with laptop version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff
changeset
|
99 |
|
79bf60e97208
after merge with laptop version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff
changeset
|
100 |
|
79bf60e97208
after merge with laptop version
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff
changeset
|
101 |
1; |