LADCPproc.utils
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--
V1.4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 28
diff changeset
     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
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 28
diff changeset
     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
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 28
diff changeset
    13
#	Jul 27, 2014: - improved comments
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 28
diff changeset
    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
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 28
diff changeset
    17
# calculate depth of particular bin in particular ensemble
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 28
diff changeset
    18
# 	in contrast to the original UH code:
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 28
diff changeset
    19
#		- the distance to the first bin is soundspeed-corrected
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 28
diff changeset
    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
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 28
diff changeset
    39
#----------------------------------------------------------------------
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 28
diff changeset
    40
# calculate along-beam distance between transducer and center of
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 28
diff changeset
    41
# particular bin in particular ensemble
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 28
diff changeset
    42
#	- used for acoustic backscatter correction
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 28
diff changeset
    43
#----------------------------------------------------------------------
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 28
diff changeset
    44
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 28
diff changeset
    45
sub rangeToBin($$)
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 28
diff changeset
    46
{
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 28
diff changeset
    47
	my($ens,$bin) = @_;
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 28
diff changeset
    48
	my($sscorr) = $LADCP{ENSEMBLE}[$ens]->{CTD_SVEL} / $LADCP{ENSEMBLE}[$ens]->{SPEED_OF_SOUND};
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 28
diff changeset
    49
	return $sscorr * ($LADCP{DISTANCE_TO_BIN1_CENTER} + $bin*$LADCP{BIN_LENGTH}) / cos(rad($LADCP{BEAM_ANGLE}));
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 28
diff changeset
    50
}
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 28
diff changeset
    51
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 28
diff changeset
    52
#----------------------------------------------------------------------------
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 28
diff changeset
    53
# calculate depth of particular bin of particular beam in particular ensemble
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 28
diff changeset
    54
#	- used to map acoustic backscatter of different beams correctly when
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 28
diff changeset
    55
#	  instrument tilt is large
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 28
diff changeset
    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
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 28
diff changeset
    84
#---------------------------------------------------------------------------
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 28
diff changeset
    85
# return center depth corresponding to particular grid index (in shear grid)
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 28
diff changeset
    86
#---------------------------------------------------------------------------
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 28
diff changeset
    87
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 28
diff changeset
    88
sub depthOfGI($) { return $_[0]*$GRID_DZ + $GRID_DZ/2; }		# depth corresponding to particular grid index
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 28
diff changeset
    89
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 28
diff changeset
    90
#----------------------------------------------------------------------
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 28
diff changeset
    91
# return ocean velocity (u,v,w) at a given depth
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 28
diff changeset
    92
#----------------------------------------------------------------------
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 28
diff changeset
    93
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 28
diff changeset
    94
sub oceanVel($)
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 28
diff changeset
    95
{
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 28
diff changeset
    96
	
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 28
diff changeset
    97
}
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 28
diff changeset
    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;