RDI_Utils.pl
changeset 43 b63fa355644c
parent 41 d7ab920c1de6
child 47 494a76548e94
child 48 cdc74ebada81
--- a/RDI_Utils.pl
+++ b/RDI_Utils.pl
@@ -1,9 +1,9 @@
 #======================================================================
 #                    R D I _ U T I L S . P L 
 #                    doc: Wed Feb 12 10:21:32 2003
-#                    dlm: Mon Nov 27 10:32:50 2017
+#                    dlm: Sat Jun  9 12:11:01 2018
 #                    (c) 2003 A.M. Thurnherr
-#                    uE-Info: 59 75 NIL 0 0 72 2 2 4 NIL ofnI
+#                    uE-Info: 61 58 NIL 0 0 72 2 2 4 NIL ofnI
 #======================================================================
 
 # miscellaneous RDI-specific utilities
@@ -57,6 +57,8 @@
 #	Aug  7, 2017: - added abmiguity velocity
 #	Aug  8, 2017: - changed transducer frequency to kHz
 #	Nov 27, 2017: - BUG: profile-restart heuristic did not work with P6#001
+#	Mar 18, 2018: - added -ve dt consistency check
+#	Jun  9, 2018: - added support for ENV{NO_GAP_WARNINGS}
 
 use strict;
 
@@ -466,6 +468,10 @@
 	
 		my($dt) = $dta->{ENSEMBLE}[$e]->{UNIX_TIME} -		# time step since
 				  $dta->{ENSEMBLE}[$lastgood]->{UNIX_TIME}; # ... last good ens
+
+		die(sprintf("PANIC: negative dt = $dt between ensembles %d and %d\n",
+			$dta->{ENSEMBLE}[$lastgood]->{NUMBER},$dta->{ENSEMBLE}[$e]->{NUMBER}))
+				if ($dt < 0);
 	
 		if ($dt > $max_gap) {
 			# 2nd heuristic test added Nov 2017 for P06 profile #001
@@ -475,7 +481,8 @@
 #					printf(STDERR "\t[#ens = %d, end-of-gap = $e]\n",scalar(@{$dta->{ENSEMBLE}}));
 					last;
 			}
-			printf(STDERR "WARNING: %.1f-s gap in first half of profile is too long; profile restarted at ensemble $e\n",$dt);
+			printf(STDERR "WARNING: %.1f-s gap beginning at ens#%d in first half of profile is too long; profile restarted at ensemble %d\n",
+				$dt,$dta->{ENSEMBLE}[$lastgood+1]->{NUMBER},$dta->{ENSEMBLE}[$e]->{NUMBER});
 			$firstgood = $lastgood = $e;
 			$dta->{ENSEMBLE}[$e]->{ELAPSED_TIME} = 0;
 			$z = $zErr = $maxz = 0;
@@ -495,7 +502,9 @@
 			$rms_heave_accel_ssq += (($dta->{ENSEMBLE}[$e]->{W}-$dta->{ENSEMBLE}[$lastgood]->{W})/$dt)**2;
 			$rms_heave_accel_nsamp++;
 		} elsif ($dt > 15) {
-	       	printf(STDERR "WARNING: long-ish w gap (dt=%.1fs)\n",$dt);
+	       	printf(STDERR "WARNING: long-ish w gap at ens#%d-%d (dt=%.1fs)\n",
+				$dta->{ENSEMBLE}[$lastgood+1]->{NUMBER},$dta->{ENSEMBLE}[$e-1]->{NUMBER},$dt)
+					unless defined($ENV{NO_GAP_WARNINGS});
 		}
 	
 		$dta->{ENSEMBLE}[$e]->{DEPTH} = $z;