0001 function [z,A,V,zmin,zmax,log_text,fig_contour_handle] = VMT_PlotXSCont(z,A,V,var,exag,plot_english)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014 log_text = {['Plotting Mean Cross Section Contour Plot']};
0015
0016
0017
0018
0019 if exist('plot_english') == 0
0020 plot_english = 0;
0021 disp('No units specified, plotting in metric units by default')
0022 end
0023
0024
0025 if isempty(z) & isempty(A) & isempty(V)
0026 [zPathName,zFileName,zf] = VMT_SelectFiles;
0027 eval(['load ' zPathName '\' zFileName{1}]);
0028 end
0029
0030
0031
0032
0033
0034 fig_contour_handle = findobj(0,'name','Mean Cross Section Contour');
0035
0036 if ~isempty(fig_contour_handle) && ishandle(fig_contour_handle)
0037 figure(fig_contour_handle); clf
0038 else
0039 fig_contour_handle = figure('name','Mean Cross Section Contour'); clf
0040
0041 end
0042
0043
0044 disableMenuBar(fig_contour_handle)
0045
0046 clvls = 60;
0047
0048
0049 binwidth = diff(V.mcsDist,1,2);
0050 binwidth = horzcat(binwidth(:,1), binwidth);
0051 binheight = diff(V.mcsDepth,1,1);
0052 binheight = vertcat(binheight, binheight(1,:));
0053 flux = nansum(nansum(V.u./100.*binwidth.*binheight));
0054
0055
0056
0057
0058
0059
0060
0061
0062 if flux < 0;
0063 flipxs = 1;
0064 else
0065 flipxs = 0;
0066 end
0067
0068 if flipxs
0069
0070
0071 msg_str_1 = {[' Streamwise Flow Direction (Normal to mean XS; deg) = ' num2str(V.phi - 180)];...
0072 [' Primary Flow Direction (deg) = ' num2str(V.phisp - 180)]};
0073 else
0074
0075
0076 msg_str_1 = {[' Streamwise Flow Direction (Normal to mean XS; deg) = ' num2str(V.phi)];...
0077 [' Primary Flow Direction (deg) = ' num2str(V.phisp)]};
0078 end
0079
0080
0081
0082
0083 msg_string = {[' Deviation from Streamwise Direction (deg) = ' num2str(V.alphasp)];...
0084 ...
0085 };
0086
0087 log_text = vertcat(log_text,msg_str_1,msg_string);
0088
0089 switch var
0090 case{'streamwise'}
0091 if flipxs
0092 wtp=['-V.uSmooth'];
0093 zmin=floor(nanmin(nanmin(-V.uSmooth)));
0094 zmax=ceil(nanmax(nanmax(-V.uSmooth)));
0095 else
0096 wtp=['V.uSmooth'];
0097 zmin=floor(nanmin(nanmin(V.uSmooth)));
0098 zmax=ceil(nanmax(nanmax(V.uSmooth)));
0099 end
0100 zinc = (zmax - zmin) / clvls;
0101 zlevs = zmin:zinc:zmax;
0102 case{'transverse'}
0103 wtp=['V.vSmooth'];
0104 zmax=ceil(max(abs(nanmin(nanmin(V.vSmooth))),abs(nanmax(nanmax(V.vSmooth)))));
0105 zmin=-zmax;
0106 zinc = (zmax - zmin) / clvls;
0107 zlevs = zmin:zinc:zmax;
0108 case{'vertical'}
0109 wtp=['V.wSmooth'];
0110 zmax=ceil(max(abs(nanmin(nanmin(V.wSmooth))),abs(nanmax(nanmax(V.wSmooth)))));
0111 zmin=-zmax;
0112 zinc = (zmax - zmin) / clvls;
0113 zlevs = zmin:zinc:zmax;
0114 case{'mag'}
0115 wtp=['V.mcsMagSmooth'];
0116 zmin=floor(nanmin(nanmin(V.mcsMagSmooth)));
0117 zmax=ceil(nanmax(nanmax(V.mcsMagSmooth)));
0118 zinc = (zmax - zmin) / clvls;
0119 zlevs = zmin:zinc:zmax;
0120 case{'east'}
0121 wtp=['V.mcsEastSmooth'];
0122 zmin=floor(nanmin(nanmin(V.mcsEastSmooth)));
0123 zmax=ceil(nanmax(nanmax(V.mcsEastSmooth)));
0124 zinc = (zmax - zmin) / clvls;
0125 zlevs = zmin:zinc:zmax;
0126 case{'error'}
0127 wtp=['V.mcsErrorSmooth'];
0128 zmin=floor(nanmin(nanmin(V.mcsErrorSmooth)));
0129 zmax=ceil(nanmax(nanmax(V.mcsErrorSmooth)));
0130 zinc = (zmax - zmin) / clvls;
0131 zlevs = zmin:zinc:zmax;
0132 case{'north'}
0133 wtp=['V.mcsNorthSmooth'];
0134 zmin=floor(nanmin(nanmin(V.mcsNorthSmooth)));
0135 zmax=ceil(nanmax(nanmax(V.mcsNorthSmooth)));
0136 zinc = (zmax - zmin) / clvls;
0137 zlevs = zmin:zinc:zmax;
0138 case{'primary_zsd'}
0139 if flipxs
0140 wtp=['-V.vpSmooth'];
0141 zmin=floor(nanmin(nanmin(-V.vpSmooth)));
0142 zmax=ceil(nanmax(nanmax(-V.vpSmooth)));
0143 else
0144 wtp=['V.vpSmooth'];
0145 zmin=floor(nanmin(nanmin(V.vpSmooth)));
0146 zmax=ceil(nanmax(nanmax(V.vpSmooth)));
0147 end
0148 zinc = (zmax - zmin) / clvls;
0149 zlevs = zmin:zinc:zmax;
0150 case{'secondary_zsd'}
0151 wtp=['V.vsSmooth'];
0152 zmax=ceil(max(abs(nanmin(nanmin(V.vsSmooth))),abs(nanmax(nanmax(V.vsSmooth)))));
0153 zmin=-zmax;
0154 zinc = (zmax - zmin) / clvls;
0155 zlevs = zmin:zinc:zmax;
0156 case{'primary_roz'}
0157
0158
0159
0160
0161 if flipxs
0162 wtp=['-V.Roz.upSmooth'];
0163 zmin=floor(nanmin(nanmin(-V.Roz.upSmooth)));
0164 zmax=ceil(nanmax(nanmax(-V.Roz.upSmooth)));
0165 else
0166 wtp=['V.Roz.upSmooth'];
0167 zmin=floor(nanmin(nanmin(V.Roz.upSmooth)));
0168 zmax=ceil(nanmax(nanmax(V.Roz.upSmooth)));
0169 end
0170 zinc = (zmax - zmin) / clvls;
0171 zlevs = zmin:zinc:zmax;
0172 case{'secondary_roz'}
0173 wtp=['V.Roz.usSmooth'];
0174 zmax=ceil(max(abs(nanmin(nanmin(V.Roz.usSmooth))),abs(nanmax(nanmax(V.Roz.usSmooth)))));
0175 zmin=-zmax;
0176 zinc = (zmax - zmin) / clvls;
0177 zlevs = zmin:zinc:zmax;
0178 case{'primary_roz_x'}
0179
0180
0181
0182
0183 if flipxs
0184 wtp=['-V.Roz.upxSmooth'];
0185 zmin=floor(nanmin(nanmin(-V.Roz.upxSmooth)));
0186 zmax=ceil(nanmax(nanmax(-V.Roz.upxSmooth)));
0187 else
0188 wtp=['V.Roz.upxSmooth'];
0189 zmin=floor(nanmin(nanmin(V.Roz.upxSmooth)));
0190 zmax=ceil(nanmax(nanmax(V.Roz.upxSmooth)));
0191 end
0192 zinc = (zmax - zmin) / clvls;
0193 zlevs = zmin:zinc:zmax;
0194 case{'primary_roz_y'}
0195 wtp=['V.Roz.upySmooth'];
0196 zmin=floor(nanmin(nanmin(V.Roz.upySmooth)));
0197 zmax=ceil(nanmax(nanmax(V.Roz.upySmooth)));
0198
0199
0200
0201
0202
0203
0204
0205
0206
0207
0208 zinc = (zmax - zmin) / clvls;
0209 zlevs = zmin:zinc:zmax;
0210 case{'secondary_roz_x'}
0211 wtp=['V.Roz.usxSmooth'];
0212 zmax=ceil(max(abs(nanmin(nanmin(V.Roz.usxSmooth))),abs(nanmax(nanmax(V.Roz.usxSmooth)))));
0213 zmin=-zmax;
0214 zinc = (zmax - zmin) / clvls;
0215 zlevs = zmin:zinc:zmax;
0216 case{'secondary_roz_y'}
0217 wtp=['V.Roz.usySmooth'];
0218 zmax=ceil(max(abs(nanmin(nanmin(V.Roz.usySmooth))),abs(nanmax(nanmax(V.Roz.usySmooth)))));
0219 zmin=-zmax;
0220 zinc = (zmax - zmin) / clvls;
0221 zlevs = zmin:zinc:zmax;
0222 case{'backscatter'}
0223 wtp=['V.mcsBackSmooth'];
0224 zmin=floor(nanmin(nanmin(V.mcsBackSmooth)));
0225 zmax=ceil(nanmax(nanmax(V.mcsBackSmooth)));
0226 zinc = (zmax - zmin) / clvls;
0227 zlevs = zmin:zinc:zmax;
0228 case{'flowangle'}
0229 wtp=['V.mcsDirSmooth'];
0230 zmin=floor(nanmin(nanmin(V.mcsDirSmooth)));
0231 zmax=ceil(nanmax(nanmax(V.mcsDirSmooth)));
0232 zinc = (zmax - zmin) / clvls;
0233 zlevs = zmin:zinc:zmax;
0234 case{'vorticity_vw'}
0235 wtp=['V.vorticity_vw'];
0236 zmin=floor(nanmin(V.vorticity_vw(:)));
0237 zmax=ceil(nanmax(V.vorticity_vw(:)));
0238 zinc = (zmax - zmin) / clvls;
0239 zlevs = zmin:zinc:zmax;
0240 case{'vorticity_zsd'}
0241 wtp=['V.vorticity_zsd'];
0242 zmin=floor(nanmin(V.vorticity_zsd(:)));
0243 zmax=ceil(nanmax(V.vorticity_zsd(:)));
0244 zinc = (zmax - zmin) / clvls;
0245 zlevs = zmin:zinc:zmax;
0246 case{'vorticity_roz'}
0247 wtp=['V.vorticity_roz'];
0248 zmin = floor(nanmin(V.vorticity_roz(:)));
0249 zmax = ceil(nanmax(V.vorticity_roz(:)));
0250 zinc = (zmax - zmin) / clvls;
0251 zlevs = zmin:zinc:zmax;
0252
0253
0254
0255
0256
0257
0258
0259
0260
0261 end
0262
0263
0264 figure(fig_contour_handle); hold all
0265 if plot_english
0266 convfact = 0.03281;
0267 switch var
0268 case{'backscatter'}
0269 convfact = 1.0;
0270 case{'flowangle'}
0271 convfact = 1.0;
0272 end
0273 contour_handle = pcolor(V.mcsDist*3.281,V.mcsDepth*3.281,eval(wtp)*convfact); hold on
0274 shading interp
0275
0276 bed_handle = plot(V.mcsDist(1,:)*3.281,V.mcsBed*3.281,'w', 'LineWidth',2); hold on
0277 else
0278 contour_handle = pcolor(V.mcsDist,V.mcsDepth,eval(wtp)); hold on
0279 shading interp
0280
0281 bed_handle = plot(V.mcsDist(1,:),V.mcsBed,'w', 'LineWidth',2); hold on
0282 end
0283
0284
0285
0286
0287 if 0
0288 plot(V.mcsDist,V.mcsDepth,'k.','MarkerSize',3); hold on
0289 [goodcellsx,goodcellsy] = find(isnan(eval(wtp)) == 0);
0290 plot(V.mcsDist(1,goodcellsy),V.mcsDepth(goodcellsx,1),'w.','MarkerSize',3); hold on
0291 end
0292
0293 if plot_english
0294 unitlabel = '(ft/s)';
0295 else
0296 unitlabel = '(cm/s)';
0297 end
0298
0299 switch var
0300 case{'streamwise'}
0301 title_handle = title(['Streamwise Velocity ' unitlabel]);
0302 case{'transverse'}
0303 title_handle = title(['Transverse Velocity ' unitlabel]);
0304 case{'vertical'}
0305 title_handle = title(['Vertical Velocity ' unitlabel]);
0306 case{'mag'}
0307 title_handle = title(['Velocity Magnitude (Streamwise and Transverse) ' unitlabel]);
0308 case{'east'}
0309 title_handle = title(['East Velocity ' unitlabel]);
0310 case{'north'}
0311 title_handle = title(['North Velocity ' unitlabel]);
0312 case{'error'}
0313 title_handle = title(['Error Velocity ' unitlabel]);
0314 case{'primary_zsd'}
0315 title_handle = title(['Primary Velocity (Zero Secondary Discharge Definition) ' unitlabel]);
0316 case{'secondary_zsd'}
0317 title_handle = title(['Secondary Velocity (Zero Secondary Discharge Definition) ' unitlabel]);
0318 case{'primary_roz'}
0319 title_handle = title(['Primary Velocity (Rozovskii Definition) ' unitlabel]);
0320 case{'secondary_roz'}
0321 title_handle = title(['Secondary Velocity (Rozovskii Definition) ' unitlabel]);
0322 case{'primary_roz_x'}
0323 title_handle = title(['Primary Velocity (Rozovskii Definition; Downstream Component) ' unitlabel]);
0324 case{'primary_roz_y'}
0325 title_handle = title(['Primary Velocity (Rozovskii Definition; Cross-Stream Component) ' unitlabel]);
0326 case{'secondary_roz_x'}
0327 title_handle = title(['Secondary Velocity (Rozovskii Definition; Downstream Component) ' unitlabel]);
0328 case{'secondary_roz_y'}
0329 title_handle = title(['Secondary Velocity (Rozovskii Definition; Cross-Stream Component) ' unitlabel]);
0330 case{'backscatter'}
0331 title_handle = title('Backscatter Intensity (dB)');
0332 case{'flowangle'}
0333 title_handle = title('Flow Direction (deg)');
0334 case{'vorticity_vw'}
0335 title_handle = title('Streamwise Vorticity');
0336 case{'vorticity_zsd'}
0337 title_handle = title('Streamwise Vorticity (Zero Secondary Discharge Definition)');
0338 case{'vorticity_roz'}
0339 title_handle = title('Streamwise Vorticity (Rozovskii Definition)');
0340
0341
0342 end
0343 colorbar_handle = colorbar; hold all
0344
0345 if plot_english
0346 caxis([zmin*convfact zmax*convfact])
0347 xlim([nanmin(nanmin(V.mcsDist*3.281)) nanmax(nanmax(V.mcsDist*3.281))])
0348 ylim([0 max(V.mcsBed*3.281)])
0349 set(gca,'YDir','reverse')
0350 if flipxs
0351 set(gca,'XDir','reverse')
0352 end
0353 ylabel_handle = ylabel('Depth (ft)');
0354 xlabel_handle = xlabel('Distance (ft)');
0355 else
0356 caxis([zmin zmax])
0357 xlim([nanmin(nanmin(V.mcsDist)) nanmax(nanmax(V.mcsDist))])
0358 ylim([0 max(V.mcsBed)])
0359 set(gca,'YDir','reverse')
0360 if flipxs
0361 set(gca,'XDir','reverse')
0362 end
0363 ylabel_handle = ylabel('Depth (m)');
0364 xlabel_handle = xlabel('Distance (m)');
0365 end
0366
0367 if strcmp(var,'vorticity_vw')||strcmp(var,'vorticity_zsd')||strcmp(var,'vorticity_roz')
0368 rng = zmax - zmin;
0369 cmr = [linspace(0,1,25)'];
0370 cmr = [cmr; linspace(1,1,25)'];
0371 cmg = [linspace(0,1,25)'];
0372 cmg = [cmg; linspace(1,0,25)'];
0373 cmb = [linspace(1,1,25)'];
0374 cmb = [cmb; linspace(1,0,25)'];
0375 figure(3)
0376 colormap([cmr cmg cmb])
0377 caxis([-rng/2 rng/2])
0378 else
0379 colormap jet
0380 end
0381
0382
0383 set(contour_handle, 'Tag','ContouredVelocities')
0384 set(bed_handle, 'Tag','PlotBedElevation')
0385 set(colorbar_handle, 'Tag','ColorBar')
0386 set(title_handle, 'Tag','ContourPlotTitle')
0387 set(ylabel_handle, 'Tag','yLabelText')
0388 set(xlabel_handle, 'Tag','xLabelText')
0389
0390
0391 set(gca,...
0392 'DataAspectRatio', [exag 1 1],...
0393 'PlotBoxAspectRatio',[exag 1 1]...
0394 ...
0395 )
0396
0397
0398
0399
0400
0401
0402
0403
0404
0405
0406
0407
0408
0409
0410
0411
0412