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