plot_wprof.pl
changeset 41 6bddb82924e3
parent 32 6041a20feb39
child 42 f7690c7b92e0
equal deleted inserted replaced
40:408fc95bcff8 41:6bddb82924e3
     1 #======================================================================
     1 #======================================================================
     2 #                    P L O T _ W P R O F . P L 
     2 #                    P L O T _ W P R O F . P L 
     3 #                    doc: Sun Jul 26 11:08:50 2015
     3 #                    doc: Sun Jul 26 11:08:50 2015
     4 #                    dlm: Mon Oct 12 13:20:47 2015
     4 #                    dlm: Thu Mar 17 06:02:11 2016
     5 #                    (c) 2015 A.M. Thurnherr
     5 #                    (c) 2015 A.M. Thurnherr
     6 #                    uE-Info: 53 40 NIL 0 0 72 2 2 4 NIL ofnI
     6 #                    uE-Info: 144 24 NIL 0 0 72 2 2 4 NIL ofnI
     7 #======================================================================
     7 #======================================================================
     8 
     8 
     9 # HISTORY:
     9 # HISTORY:
    10 #	Jul 26, 2015: - created from LWplot_prof_2beam
    10 #	Jul 26, 2015: - created from LWplot_prof_2beam
    11 #	Jul 30, 2015: - moved main label outside plot area
    11 #	Jul 30, 2015: - moved main label outside plot area
    12 #	Oct 12, 2015: - BUG: gaps were not plotted as such
    12 #	Oct 12, 2015: - BUG: gaps were not plotted as such
       
    13 #	Mar 16, 2016: - adapted to gmt5
       
    14 #	Mar 17, 2016: - improved
    13 
    15 
    14 # Tweakables:
    16 # Tweakables:
    15 #
    17 #
    16 # $plot_wprof_xmin = -0.27;
    18 # $plot_wprof_xmin = -0.27;
    17 # $plot_wprof_ymax = 5000;
    19 # $plot_wprof_ymax = 5000;
    18 # $plot_wprof_xtics = "-0.25 -0.15 -0.05 0.05";
    20 # $plot_wprof_xtics = "-0.25 -0.15 -0.05 0.05";
    19 
    21 
    20 require "$ANTS/libGMT.pl";
    22 require "$ANTS/libGMT.pl";
    21 
    23 
    22 sub setR1() { GMT_setR("-R$plot_wprof_xmin/0.35/0/$plot_wprof_ymax"); }
    24 sub setR1() { GMT_setR("-R$plot_wprof_xmin/0.35/0/$plot_wprof_ymax"); }
    23 sub setR2() { GMT_setR("-R-200/200/0/$plot_wprof_ymax"); }
    25 #sub setR2() { GMT_setR("-R-200/200/0/$plot_wprof_ymax"); }
       
    26 sub setR2() { GMT_setR("-R-450/350/0/$plot_wprof_ymax"); }
    24 
    27 
    25 sub plotDC($$)
    28 sub plotDC($$)
    26 {
    29 {
    27 	my($f,$minsamp) = @_;
    30 	my($f,$minsamp) = @_;
    28 	for (my($bi)=0; $bi<=$#{$DNCAST{$f}}; $bi++) {
    31 	for (my($bi)=0; $bi<=$#{$DNCAST{$f}}; $bi++) {
    49 sub plotBT($$)
    52 sub plotBT($$)
    50 {
    53 {
    51 	my($f,$minsamp) = @_;
    54 	my($f,$minsamp) = @_;
    52 	for (my($bi)=0; $bi<=$#{$BT{$f}}; $bi++) {
    55 	for (my($bi)=0; $bi<=$#{$BT{$f}}; $bi++) {
    53 		if (numberp($BT{$f}[$bi]) && $BT{N_SAMP}[$bi]>=$minsamp) {
    56 		if (numberp($BT{$f}[$bi]) && $BT{N_SAMP}[$bi]>=$minsamp) {
       
    57 			$have_BT = 1;
    54 			printf(GMT "%g %g\n",$BT{$f}[$bi],($bi+0.5)*$opt_o);
    58 			printf(GMT "%g %g\n",$BT{$f}[$bi],($bi+0.5)*$opt_o);
    55 		} else {
    59 		} else {
    56 			print(GMT "nan nan\n");
    60 			print(GMT "nan nan\n");
    57 		}
    61 		}
    58     }
    62     }
    81 		GMT_psxy('-G204/153/102');
    85 		GMT_psxy('-G204/153/102');
    82 		print(GMT "$plot_wprof_xmin $plot_wprof_ymax\n0.35 $plot_wprof_ymax\n0.35 $P{water_depth}\n $plot_wprof_xmin $P{water_depth}\n");
    86 		print(GMT "$plot_wprof_xmin $plot_wprof_ymax\n0.35 $plot_wprof_ymax\n0.35 $P{water_depth}\n $plot_wprof_xmin $P{water_depth}\n");
    83 	}
    87 	}
    84 
    88 
    85 	setR1();																			# FRAME
    89 	setR1();																			# FRAME
    86 	GMT_psxy('-W1');
    90 	GMT_psxy('-W0.5');
    87 		print(GMT "0 0\n 0 $plot_wprof_ymax\n");
    91 		print(GMT "0 0\n 0 $plot_wprof_ymax\n");
    88 	setR2();
    92 	setR2();
    89 	GMT_psxy('-W1 -M');
    93 	GMT_psxy('-W0.5');
    90 		print(GMT ">\n50 0\n 50 $plot_wprof_ymax\n");
    94 		print(GMT ">\n50 0\n 50 $plot_wprof_ymax\n");
    91 		print(GMT ">\n100 0\n 100 $plot_wprof_ymax\n");
       
    92 		print(GMT ">\n150 0\n 150 $plot_wprof_ymax\n");
    95 		print(GMT ">\n150 0\n 150 $plot_wprof_ymax\n");
       
    96 		print(GMT ">\n250 0\n 250 $plot_wprof_ymax\n");
    93 
    97 
    94 	setR1();																			# VERTICAL VELOCITIES
    98 	setR1();																			# VERTICAL VELOCITIES
    95 	GMT_psxy('-Mn -W4,coral,6_2:0'); 		plotDC('MEDIAN_W12',$opt_k);
    99 	GMT_psxy('-W1,coral,8_2:0');		plotDC('MEDIAN_W12',$opt_k);
    96 	GMT_psxy('-Mn -W4,coral,4_6:0'); 		plotDC('MEDIAN_W34',$opt_k);
   100 	GMT_psxy('-W1,coral,1_1:0');		plotDC('MEDIAN_W34',$opt_k);
    97 	GMT_psxy('-Mn -W4,SeaGreen,6_2:0'); 	plotUC('MEDIAN_W12',$opt_k);
   101 	GMT_psxy('-W1,SeaGreen,8_2:0'); 	plotUC('MEDIAN_W12',$opt_k);
    98 	GMT_psxy('-Mn -W4,SeaGreen,4_6:0'); 	plotUC('MEDIAN_W34',$opt_k);
   102 	GMT_psxy('-W1,SeaGreen,1_1:0'); 	plotUC('MEDIAN_W34',$opt_k);
    99 	GMT_psxy('-Mn -W4,black'); 				plotBT('MEDIAN_W',$opt_k);
   103 	GMT_psxy('-W1,black');				plotBT('MEDIAN_W',$opt_k);
   100 
   104 
   101 	GMT_psxy('-Sc0.1c -Gcoral');			plotDC('MAD_W',0);							# MEAN ABSOLUTE DEVIATIONS
   105 	GMT_psxy('-Sc0.1c -Gcoral');		plotDC('MAD_W',0);								# MEAN ABSOLUTE DEVIATIONS
   102 	GMT_psxy('-Sc0.1c -GSeaGreen');			plotUC('MAD_W',0);	
   106 	GMT_psxy('-Sc0.1c -GSeaGreen');		plotUC('MAD_W',0);	
   103 	GMT_psxy('-Sc0.1c -Gblack');			plotBT('MAD_W',0);	
   107 	GMT_psxy('-Sc0.1c -Gblack');		plotBT('MAD_W',0);	
   104 
   108 
   105 	setR2();																			# SAMPLES
   109 	setR2();																			# SAMPLES
   106 	GMT_psxy('-Mn -W1/coral');				plotDC('N_SAMP',0);
   110 	GMT_psxy('-W0.7,coral');			plotDC('N_SAMP',0);
   107 	GMT_psxy('-Mn -W1/SeaGreen');			plotUC('N_SAMP',0);	
   111 	GMT_psxy('-W0.7,SeaGreen');			plotUC('N_SAMP',0);	
   108 	GMT_psxy('-Mn -W1/black');				plotBT('N_SAMP',0);	
   112 	GMT_psxy('-W0.7,black');			plotBT('N_SAMP',0);	
   109 	
   113 	
   110 	GMT_unitcoords();																	# LABELS
   114 	GMT_unitcoords();																	# LABELS
   111 	GMT_pstext('-Gblue -N');
   115 	GMT_pstext('-F+f14,Helvetica,blue+jTL -N');
   112 		print(GMT "0.01 -0.06 14 0 0 TL $P{out_basename} [$P{run_label}]\n");
   116 		print(GMT "0.01 -0.06 $P{out_basename} [$P{run_label}]\n");
   113 	GMT_pstext();
   117 	GMT_pstext('-F+f12,Helvetica+jBR');
   114 		print(GMT "0.6 0.98 12 0 0 BR m.a.d.\n");
   118 		print(GMT "0.6 0.98 m.a.d.\n");
       
   119 	GMT_pstext('-F -N');
       
   120 		print(GMT "0.32 1.12 Vertical Velocity [m/s]\n");
       
   121 	GMT_pstext('-F+f9,Helvetica,orange+jTR -N -Gwhite');
       
   122 		print(GMT "0.99 0.01 V$VERSION\n");
   115 
   123 
       
   124 	GMT_pstext('-F+f12,Helvetica,coral+jTL -Gwhite');
       
   125 		print(GMT "0.02 0.01 dc\n");
       
   126 	GMT_pstext('-F+f12,Helvetica,SeaGreen+jTL -Gwhite');
       
   127 		print(GMT "0.02 0.06 uc\n");
       
   128 	if ($have_BT) {
       
   129 		GMT_pstext('-F+f12,Helvetica,black+jTL -Gwhite');
       
   130 			print(GMT "0.02 0.10 BT\n");
       
   131 	}
       
   132 
       
   133 	GMT_pstext('-F+f9,Helvetica,CornFlowerBlue+jTL -N');
       
   134 		printf(GMT "0.64 1.020 $LADCP{BEAM_FREQUENCY}kHz $LADCP{INSTRUMENT_TYPE} $P{ADCP_orientation}\n");
       
   135 		printf(GMT "0.64 1.055 bin setup\n		0.77 1.055 : %.1fm/%1.fm/%1.fm\n",
       
   136 			$LADCP{BLANKING_DISTANCE},$LADCP{TRANSMITTED_PULSE_LENGTH},$LADCP{BIN_LENGTH});
       
   137 		print(GMT "0.64 1.090 rms tilt\n 		0.77 1.096 :\n");
       
   138 		print(GMT "0.64 1.130 rms w\@-pkg\@-\n	0.77 1.1315 :\n");
       
   139 	GMT_pstext('-F+f9,Helvetica,coral+jTL -N');
       
   140 		printf(GMT "0.788 1.090 %.1f\\260\n",$P{dc_rms_tilt});
       
   141 		printf(GMT "0.788 1.125 %.1fm/s\n",$P{dc_rms_w_pkg});
       
   142 	GMT_pstext('-F+f9,Helvetica,SeaGreen+jTL -N');
       
   143 		printf(GMT "0.89 1.090 %.1f\\260\n",$P{uc_rms_tilt});
       
   144 		printf(GMT "0.89 1.125 %.1fm/s\n",$P{uc_rms_w_pkg});
       
   145 		
   116 	my($depth_tics) = ($plot_wprof_ymax < 1000 ) ? 'f10a100' : 'f100a500';				# AXES
   146 	my($depth_tics) = ($plot_wprof_ymax < 1000 ) ? 'f10a100' : 'f100a500';				# AXES
   117 	setR1();
   147 	setR1();
   118 	GMT_psbasemap("-Bf0.01:'Vertical Velocity [m/s]                               ':/$depth_tics:'Depth [m]':WeS");
   148 	GMT_psbasemap("-Bf0.01:'':/$depth_tics:'Depth [m]':WeS");
   119 	foreach my $t (split('\s+',$plot_wprof_xtics)) {
   149 	foreach my $t (split('\s+',$plot_wprof_xtics)) {
   120 		GMT_psbasemap(sprintf('-Ba10-%fS',10-$t));
   150 		GMT_psbasemap(sprintf('-Ba10-%fS',10-$t));
   121 	}
   151 	}
   122 	setR2();
   152 	setR2();
   123 	GMT_psbasemap('-Bf10a1000-950:"                                     # of Samples":N');
   153 	GMT_psbasemap('-Bf10a1000-950:"                                     # of Samples":N');
   124 	GMT_psbasemap('-Ba1000-900N');
       
   125 	GMT_psbasemap('-Ba1000-850N');
   154 	GMT_psbasemap('-Ba1000-850N');
       
   155 	GMT_psbasemap('-Ba1000-750N');
   126 		 
   156 		 
   127 	GMT_end();																			# FINISH PLOT
   157 	GMT_end();																			# FINISH PLOT
   128 }
   158 }
   129 
   159 
   130 1; # return true on require
   160 1; # return true on require