1 #!/bin/sh |
|
2 #====================================================================== |
|
3 # L W P L O T _ R E S I D U A L S |
|
4 # doc: Sat Oct 15 13:42:50 2011 |
|
5 # dlm: Wed May 20 20:46:41 2015 |
|
6 # (c) 2011 A.M. Thurnherr |
|
7 # uE-Info: 50 0 NIL 0 0 72 0 2 4 NIL ofnI |
|
8 #====================================================================== |
|
9 |
|
10 # HISTORY: |
|
11 # Oct 15, 2011: - created |
|
12 # Oct 17, 2011: - turned into filter |
|
13 # - added %run_label |
|
14 # Oct 24, 2011: - LADCP_bin_length => ADCP_bin_length |
|
15 # Nov 14, 2011: - added file layout check |
|
16 # Mar 12, 2012: - sh -> ksh as this does not work with /bin/sh on MacOSX 10.6.4 |
|
17 # Apr 12, 2012: - made re-entrant |
|
18 # Apr 5, 2015: - made fixbb optional |
|
19 # Apr 16, 2015: - removed copy of input on stdout |
|
20 # - changed shell from /bin/ksh to /bin/sh |
|
21 # - added seabed if available |
|
22 # May 20, 2015: - made it quit on EOF |
|
23 |
|
24 #-------------------------------------------------- |
|
25 # Usage |
|
26 #-------------------------------------------------- |
|
27 |
|
28 USAGE="Usage: $0 <eps-file> [in-file]" |
|
29 [ $# -eq 2 ] && exec <"$2" "$0" "$1" |
|
30 [ $# -ne 1 ] && { echo $USAGE >&2; exit 1; } |
|
31 eps_file="$1" |
|
32 |
|
33 #-------------------------------------------------- |
|
34 # Read Header Data |
|
35 #-------------------------------------------------- |
|
36 |
|
37 read line |
|
38 while [ -z "$fields" -a -n "$line" ] |
|
39 do |
|
40 [ -z "$out_basename" ] && out_basename=`expr -- "$line" : '#ANTS#PARAMS#.*out_basename{\([^}]*\)}` |
|
41 [ -z "$run_label" ] && run_label=`expr -- "$line" : '#ANTS#PARAMS#.*run_label{\([^}]*\)}` |
|
42 [ -z "$min_depth" ] && min_depth=`expr -- "$line" : '#ANTS#PARAMS#.*min_depth{\([^}]*\)}` |
|
43 [ -z "$max_depth" ] && max_depth=`expr -- "$line" : '#ANTS#PARAMS#.*max_depth{\([^}]*\)}` |
|
44 [ -z "$water_depth" ] && water_depth=`expr -- "$line" : '#ANTS#PARAMS#.*water_depth{\([^}]*\)}` |
|
45 [ -z "$min_ens" ] && min_ens=`expr -- "$line" : '#ANTS#PARAMS#.*min_ens{\([^}]*\)}` |
|
46 [ -z "$max_ens" ] && max_ens=`expr -- "$line" : '#ANTS#PARAMS#.*max_ens{\([^}]*\)}` |
|
47 [ -z "$ADCP_bin_length" ] && ADCP_bin_length=`expr -- "$line" : '#ANTS#PARAMS#.*ADCP_bin_length{\([^}]*\)}` |
|
48 [ -z "$fields" ] && fields=`expr -- "$line" : '#ANTS#FIELDS# \(.*\)' | sed -e s/{//g -e s/}//g` |
|
49 read line |
|
50 done |
|
51 |
|
52 set -- $fields |
|
53 [ "$1" = ensemble -a "$4" = depth -a "${10}" = residual ] || { |
|
54 echo "$0: file layout error ($1, $4, ${10})" >&2 |
|
55 exit 1 |
|
56 } |
|
57 |
|
58 #-------------------------------------------------- |
|
59 # Plot Data |
|
60 #-------------------------------------------------- |
|
61 |
|
62 eps_file="$PWD/$eps_file" # make outfile name absolute (hopefully, it is not already...) |
|
63 mkdir /tmp/$$ # GMT makes tmpfiles and is not reentrant |
|
64 cd /tmp/$$ |
|
65 |
|
66 TMPFILE=/tmp/$$.LWplot_residuals |
|
67 cat > $TMPFILE |
|
68 |
|
69 [ -f .gmtdefaults4 ] || |
|
70 gmtset PAPER_MEDIA letter+ \ |
|
71 LABEL_FONT_SIZE 14 ANNOT_FONT_SIZE_PRIMARY 14 \ |
|
72 WANT_EURO_FONT true \ |
|
73 PLOT_DEGREE_FORMAT ddd:mm:ssF |
|
74 |
|
75 [ -n "$water_depth" ] && blim=`echo "scale=1;$water_depth+25"|bc` \ |
|
76 || blim=`echo "scale=1;$max_depth+$ADCP_bin_length"|bc` |
|
77 R=-R`echo "scale=1;$min_ens-0.5"|bc`/`echo "scale=1;$max_ens+0.5"|bc`/0/$blim |
|
78 U=-R0/1/0/1 |
|
79 X=-JX10/-10 |
|
80 C=-C`which LWplot_residuals | sed 's@LWplot_residuals$@residuals.cpt@'` |
|
81 |
|
82 ens_width=`echo "scale=5;10/($max_ens-$min_ens+1)"|bc` |
|
83 bin_length=`echo "scale=5;10*$ADCP_bin_length/($max_depth-$min_depth+$ADCP_bin_length)"|bc` |
|
84 |
|
85 awk "{print \$1, \$4, \$10, $ens_width, $bin_length}" $TMPFILE \ |
|
86 | psxy -P -K $R $X $C -Sr > "$eps_file" |
|
87 [ -n "$water_depth" ] && { |
|
88 echo $min_ens $blim; |
|
89 echo $max_ens $blim; |
|
90 echo $max_ens $water_depth; |
|
91 echo $min_ens $water_depth; |
|
92 } | psxy -O -K $R $X -G204/153/102 >> "$eps_file" |
|
93 |
|
94 echo 0.02 0.02 12 0 0 TL $out_basename $run_label | pstext -O -K $U $X >> "$eps_file" |
|
95 |
|
96 if [ 0 -eq `echo "($max_depth-$min_depth)>1000"|bc` ] |
|
97 then |
|
98 depth_tics=f10a100 |
|
99 ens_tics=f50a500 |
|
100 else |
|
101 depth_tics=f100a500 |
|
102 ens_tics=f500a1000 |
|
103 fi |
|
104 |
|
105 psbasemap -O -K $R $X -B$ens_tics:"Ensemble":/$depth_tics:"Depth [m]":WeSn >> "$eps_file" |
|
106 |
|
107 gmtset ANNOT_FONT_SIZE_PRIMARY 7 |
|
108 psscale -O -E -D8/2/3/0.4 $C -B/:residuals: >> "$eps_file" |
|
109 |
|
110 rm $TMPFILE |
|
111 [ -n "`which fixbb`" ] && fixbb "$eps_file" |
|
112 |
|
113 cd "$PWD" |
|
114 rm -rf /tmp/$$ |
|
115 |
|