after DIMES US5
authorA.M. Thurnherr <athurnherr@yahoo.com>
Thu, 21 Nov 2013 09:00:33 -0500
changeset 23 85c8e2ea2a5b
parent 22 f6635c0384b7
child 24 40756f8aff85
after DIMES US5
LADCPproc.UHcode
LADCPproc.loadCTD
libdiscard_beam1.pl
--- a/LADCPproc.UHcode
+++ b/LADCPproc.UHcode
@@ -1,9 +1,9 @@
 #======================================================================
 #                    L A D C P P R O C . U H C O D E 
 #                    doc: Fri Sep 17 20:27:53 2010
-#                    dlm: Wed Sep 25 12:29:46 2013
+#                    dlm: Tue Nov 12 03:44:44 2013
 #                    (c) 2010 A.M. Thurnherr & E. Firing
-#                    uE-Info: 39 47 NIL 0 0 72 2 2 4 NIL ofnI
+#                    uE-Info: 43 32 NIL 0 0 72 2 2 4 NIL ofnI
 #======================================================================
 
 # PERLified functions from Eric's [merge.c]; with mods
@@ -37,6 +37,10 @@
 #	Feb 19, 2012: - added elapsed time to binned shear output
 #	Apr 11, 2012: - added MISSING_CTD_DATA_BIT
 #	Sep 25, 2013: - added code to calc gridded lat/lon info
+#	Nov 12, 2013: - BUG: correlation editing removed most (all?) 3-beam
+#				         solutions
+#				  - BUG: set_shear_flag() calculated shdev (slightly?)
+#						 wrongly
 
 #======================================================================
 # VELOCITY EDITING
@@ -180,14 +184,24 @@
 			$edit_flags[$ens][$bin] |= $ERRVEL_BIT;
 		}
 
+		my($nBadCorr) = 0;
 		for (my($beam)=0; $beam<=3; $beam++) {
-			if ($LADCP{ENSEMBLE}[$ens]->{CORRELATION}[$bin][$beam] < $min_cor) {
+			$nBadCorr++
+				if ($LADCP{ENSEMBLE}[$ens]->{CORRELATION}[$bin][$beam] < $min_cor);
+        }
+		if (abs($LADCP{ENSEMBLE}[$ens]->{VELOCITY}[$bin][$E]) > 0) {	# 4-beam solution
+			if ($nBadCorr > 0) {
+				$flag_count{$CORREL_BIT}++;
+				$edit_flags[$ens][$bin] |= $CORREL_BIT;
+			}
+		} else {														# 3-beam solution
+			if ($nBadCorr > 1) {
 				$flag_count{$CORREL_BIT}++;
 				$edit_flags[$ens][$bin] |= $CORREL_BIT;
 			}
 		}
 
-		if ($bin < $shbin_start-1 || $bin >= $shbin_end) {
+		if ($bin < $shbin_start-1 || $bin >= $shbin_end) {				# manually remove vels outside shear bin range
 			$edit_flags[$ens][$bin] |= $BADVEL_BIT;
 			$flag_count{$BADVEL_BIT}++;
 		}
@@ -345,8 +359,8 @@
 		$vsh_dev[$i] = $vsh[$i] - $vsh_mu[$bsgi];
 
 		push(@ibad,$i) if ($ush_sig[$i] > 0 &&
-							(abs($ush_dev[$i]/$ush_sig[$bsgi]) > $max_shdev ||
-               				 abs($vsh_dev[$i]/$vsh_sig[$bsgi]) > $max_shdev));
+							(abs($ush_dev[$i]/$ush_sig[$i]) > $max_shdev ||
+               				 abs($vsh_dev[$i]/$vsh_sig[$i]) > $max_shdev));
 	} ## end of loop through shears
 
 	## Look for internal glitches: a positive shear followed
--- a/LADCPproc.loadCTD
+++ b/LADCPproc.loadCTD
@@ -1,9 +1,9 @@
 #======================================================================
 #                    L A D C P P R O C . L O A D C T D 
 #                    doc: Thu Dec  9 18:39:01 2010
-#                    dlm: Wed Sep 25 12:59:57 2013
+#                    dlm: Mon Nov 11 12:27:37 2013
 #                    (c) 2010 A.M. Thurnherr
-#                    uE-Info: 210 0 NIL 0 0 72 2 2 4 NIL ofnI
+#                    uE-Info: 27 57 NIL 0 0 72 2 2 4 NIL ofnI
 #======================================================================
 
 # HISTORY:
@@ -24,6 +24,7 @@
 #   Jun 25, 2013: - adapted to :: %PARAM convention
 #	Sep 25, 2013: - renamed "std" %PARAMs %lat, %lon, %ITS to conform to new convention
 #				  - added support for carry-through of lat/lon info
+#	Nov 11, 2013: - BUG: lat/lon did not work any more?!?
 
 sub readCTD_ASCII($$)
 {
@@ -104,7 +105,7 @@
 		}
 		$latF = $1,next if ($hdr =~ /name (\d+) = latitude:/);
 		$lonF = $1,next if ($hdr =~ /name (\d+) = longitude:/);
-	
+
 		&antsAddParams('LADCPproc::CTD_start_time',$1),next				# selected metadata
 			if ($hdr =~ /start_time = (.*)/);
 	
@@ -164,8 +165,8 @@
 			push(@{$dtaR->{press}},($rec[$pressF] == $CTD_badval) ? nan : $rec[$pressF]);
 			push(@{$dtaR->{temp}}, ($rec[$tempF]  == $CTD_badval) ? nan : $rec[$tempF]);
 			push(@{$dtaR->{salin}},($rec[$salinF] == $CTD_badval) ? nan : $rec[$salinF]);
-			push(@{$dtaR->{press}},(!defined($latF) || ($rec[$latF] == $CTD_badval)) ? nan : $rec[$latF]);
-			push(@{$dtaR->{press}},(!defined($lonF) || ($rec[$lonF] == $CTD_badval)) ? nan : $rec[$lonF]);
+			push(@{$dtaR->{lat}},(!defined($latF) || ($rec[$latF] == $CTD_badval)) ? nan : $rec[$latF]);
+			push(@{$dtaR->{lon}},(!defined($lonF) || ($rec[$lonF] == $CTD_badval)) ? nan : $rec[$lonF]);
 		}
 	} elsif ($CTD_file_type eq 'binary') {
 	
new file mode 100644
--- /dev/null
+++ b/libdiscard_beam1.pl
@@ -0,0 +1,23 @@
+#======================================================================
+#                    L I B D I S C A R D _ B E A M 1 . P L 
+#                    doc: Thu Mar 28 21:57:14 2013
+#                    dlm: Mon Nov 11 17:19:09 2013
+#                    (c) 2013 A.M. Thurnherr
+#                    uE-Info: 15 60 NIL 0 0 72 2 2 4 NIL ofnI
+#======================================================================
+
+sub edit_LADCP_vels()
+{
+    print(STDERR "\t\tDISCARDING beam-1 velocities...\n");
+    
+    for (my($ens)=$LADCP_start; $ens<=$LADCP_end; $ens++) {
+        for (my($bin)=0; $bin<$LADCP{N_BINS}; $bin++) {
+            undef($LADCP{ENSEMBLE}[$ens]->{BEAM_VEL}[$bin][0]);
+            @{$LADCP{ENSEMBLE}[$ens]->{VELOCITY}[$bin]} =
+            	velInstrumentToEarth(\%LADCP,$ens,velBeamToInstrument(\%LADCP,@{$LADCP{ENSEMBLE}[$ens]->{BEAM_VEL}[$bin]}));
+        }
+    }
+}
+
+1;
+