Utilities/post_merge_dwdz_filt.pl
author A.M. Thurnherr <athurnherr@yahoo.com>
Mon, 08 Mar 2021 12:07:26 -0500
changeset 54 828e5466391b
parent 18 8818acdcd587
permissions -rw-r--r--
before A20
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
18
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
     1
#======================================================================
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
     2
#                    P O S T _ M E R G E _ D W D Z _ F I L T . P L 
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
     3
#                    doc: Thu Mar 26 16:02:09 2015
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
     4
#                    dlm: Thu Mar 26 17:11:24 2015
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
     5
#                    (c) 2015 A.M. Thurnherr
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
     6
#                    uE-Info: 10 25 NIL 0 0 72 2 2 4 NIL ofnI
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
     7
#======================================================================
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
     8
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
     9
# Try to improve 2010 GoM data set by filtering ensembles with large dwdz
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    10
#	- no apparent benefit
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    11
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    12
# HISTORY:
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    13
#	Mar 26, 2015: - created
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    14
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    15
$post_merge_hook = sub {							# arguments: firstGoodEns, lastGoodEns
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    16
	my($fe,$le) = @_;
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    17
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    18
	progress("\tediting ensembles with large dw/dz...\n");
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    19
	my($nedt) = 0;
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    20
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    21
	@antsNewLayout = ('ensemble','dwdz');
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    22
	open(STDOUT,">$data_subdir/$out_basename.dwdz")
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    23
		|| croak("$data_subdir/$out_basename.dwdz: $!\n");
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    24
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    25
	for (my($ens)=$fe; $ens<=$le; $ens++) {
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    26
		next unless numberp($LADCP{ENSEMBLE}[$ens]->{CTD_DEPTH});					# skip non-valid
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    27
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    28
		my($w1,$w2,$w3,$w4);
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    29
		my($b1,$b2,$b3,$b4);
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    30
		for (my($bin)=$LADCP_firstBin-1; $bin<=$LADCP_lastBin-1; $bin++) {
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    31
			next unless numberp($LADCP{ENSEMBLE}[$ens]->{W}[$bin]);
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    32
			if (defined($w1) && defined($w2)) {										# find last two
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    33
				$w3 = $w4; $b3 = $b4;
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    34
				$w4 = $LADCP{ENSEMBLE}[$ens]->{W}[$bin]; $b4 = $bin;
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    35
			} else {																# find first two
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    36
				if (defined($w1)) { $w2 = $LADCP{ENSEMBLE}[$ens]->{W}[$bin]; $b2 = $bin; }
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    37
				else 			  { $w1 = $LADCP{ENSEMBLE}[$ens]->{W}[$bin]; $b1 = $bin; }
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    38
			}
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    39
		}
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    40
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    41
		$nedt++,undef($LADCP{ENSEMBLE}[$ens]->{CTD_DEPTH}),next						# require at least 4 samples
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    42
			unless defined($w1) && defined($w2) && defined($w3) && defined($w4);
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    43
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    44
		my($dwdz) = (($w1+$w2)/2 - ($w3+$w4)/2) / (($b1+$b2)/2 - ($b3+$b4)/2)*$LADCP{BIN_LENGTH};
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    45
		&antsOut($ens,$dwdz);
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    46
		if (abs($dwdz) > 0.05) {		# TWEAKABLE PARAMETER
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    47
			undef($LADCP{ENSEMBLE}[$ens]->{CTD_DEPTH});
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    48
			$nedt++,
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    49
			next;
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    50
		}
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    51
			
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    52
	}
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    53
				
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    54
	&antsOut('EOF'); open(STDOUT,'>&2');
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    55
	progress("\t\t$nedt ensembles removed (%d%% of total)...\n",100*$nedt/($le-$fe+1));
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    56
};
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    57
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    58
1;