LADCPproc.backscatter
changeset 1 54222c82435f
parent 0 de00d0f32431
child 2 16726a31a399
equal deleted inserted replaced
0:de00d0f32431 1:54222c82435f
     1 #======================================================================
     1 #======================================================================
     2 #                    L A D C P P R O C . B A C K S C A T T E R 
     2 #                    L A D C P P R O C . B A C K S C A T T E R 
     3 #                    doc: Wed Oct 20 13:02:27 2010
     3 #                    doc: Wed Oct 20 13:02:27 2010
     4 #                    dlm: Wed Oct 20 14:26:43 2010
     4 #                    dlm: Fri Dec 10 00:35:45 2010
     5 #                    (c) 2010 A.M. Thurnherr
     5 #                    (c) 2010 A.M. Thurnherr
     6 #                    uE-Info: 105 44 NIL 0 0 72 2 2 4 NIL ofnI
     6 #                    uE-Info: 12 52 NIL 0 0 72 2 2 4 NIL ofnI
     7 #======================================================================
     7 #======================================================================
       
     8 
       
     9 # HISTORY:
       
    10 #	Oct 20, 2010: - created
       
    11 #	Dec 10, 2010: - BUG: backscatter above sea surface made code bomb
       
    12 #						 when run with uplooker data
     8 
    13 
     9 #----------------------------------------------------------------------
    14 #----------------------------------------------------------------------
    10 # Volume Scattering Coefficient, following Deines (IEEE 1999)
    15 # Volume Scattering Coefficient, following Deines (IEEE 1999)
    11 # NOTES:
    16 # NOTES:
    12 #	- instrument specific! (300kHz Workhorse)
    17 #	- instrument specific! (300kHz Workhorse)
    58 	print(STDERR "\n\t\@per-beam noise levels = @Er") if ($opt_d);
    63 	print(STDERR "\n\t\@per-beam noise levels = @Er") if ($opt_d);
    59 
    64 
    60 	for (my($ens)=$LADCP_start; $ens<=$LADCP_end; $ens++) {
    65 	for (my($ens)=$LADCP_start; $ens<=$LADCP_end; $ens++) {
    61 		for (my($bin)=0; $bin<$LADCP{N_BINS}; $bin++) {
    66 		for (my($bin)=0; $bin<$LADCP{N_BINS}; $bin++) {
    62 			my($gi) = int(&depthOfBin($ens,$bin) / $GRID_DZ);
    67 			my($gi) = int(&depthOfBin($ens,$bin) / $GRID_DZ);
       
    68 			next if ($gi < 0);
    63 			my($range_to_bin) = &dzToBin($ens,$bin) / cos(rad($LADCP{BEAM_ANGLE}));
    69 			my($range_to_bin) = &dzToBin($ens,$bin) / cos(rad($LADCP{BEAM_ANGLE}));
    64 			$sSv[$gi][$bin] += Sv($LADCP{ENSEMBLE}[$ens]->{CTD_TEMP},
    70 			$sSv[$gi][$bin] += Sv($LADCP{ENSEMBLE}[$ens]->{CTD_TEMP},
    65 								  $LADCP{TRANSMITTED_PULSE_LENGTH},
    71 								  $LADCP{TRANSMITTED_PULSE_LENGTH},
    66 								  $Er[0],$range_to_bin,
    72 								  $Er[0],$range_to_bin,
    67 								  $LADCP{ENSEMBLE}[$ens]->{ECHO_AMPLITUDE}[$bin][0])/4 +
    73 								  $LADCP{ENSEMBLE}[$ens]->{ECHO_AMPLITUDE}[$bin][0])/4 +