%Example Figure for loading velocity data to rereate Fig5
%from Turkana paper GLR, 2022.
%credits to Florin Zainescu
%uses Ben Mitch's Panel Toolbox (https://www.mathworks.com/matlabcentral/fileexchange/20003-panel), MATLAB Central File Exchange.


load VELmeanP99.mat
load Depth_Turkana.mat


X_turk = (148000:500:245500) /1000;%create x and y vectors
Y_turk = (266000:500:501000) /1000;
[X,Y] = meshgrid(X_turk, Y_turk);

%Create NaN mask
XCOR(XCOR == -999.999000000000) = NaN;
YCOR(YCOR == -999.999000000000) = NaN;
    
DEP = Depth_Turkana;%load depth
DEP(isnan(XCOR)) = NaN;% Add NaN to nonlake area

MeanVeltop_flood(MeanVeltop_flood == 0) = NaN;
MeanVelbot_flood(MeanVelbot_flood == 0) = NaN;
MeanVeltop_dry(MeanVeltop_dry == 0) = NaN;
MeanVelbot_dry(MeanVelbot_dry == 0) = NaN;
Percbot(Percbot == 0) = NaN;
Perctop(Perctop == 0) = NaN;
InstVeltop(InstVeltop == 0) = NaN;
InstVelbot(InstVelbot == 0) = NaN;


clf
figure(1)
	p = panel();
	p.pack(2, 4);

%h_axis = p.de.axis; %.de is descendants, see help panel/descendants

p.de.margin = 6;
p.fontsize = 10; % font prop
p.fontname = 'Bell MT';
p.fontweight = 'bold';

q = {p(1, 1) p(1, 2) p(1, 3) p(1, 4) p(2, 1) p(2, 2) p(2, 3) p(2, 4) }; %Construc indexes for 1D indexing

q{1}.select()

imagescn(X_turk,Y_turk,MeanVeltop_flood,'AlphaData',~isnan(DEP))
colormap jet
%axis equal
%set(gca,'ColorScale','log')
set(gca,'dataAspectRatio',[1 1 1])
 set(gca,'XTick',[])
 ylim([260 500])
 caxis([0 0.25])
 box on
colorbar
a=get(colorbar);
a =  a.Position; %gets the positon and size of the color bar
set(colorbar,'Position',[a(1)+0.04 a(2)+0.12 0.015 0.18]);
title 'Mean surface velocity (flood)'

hold on
spa = 10;
quiver(X(1:spa:end,1:spa:end),Y(1:spa:end,1:spa:end),...
    MeanUtop_flood((1:spa:end),(1:spa:end)),...
    MeanVtop_flood((1:spa:end),(1:spa:end)),1,'AutoScale','off','Color','black','UData',1)% (1:spa:end) defines spacing after spa vector. 

%quiver(X,Y,MeanUtop,MeanVtop,1,'AutoScale','off','Color','black','UData',1)

q{2}.select()

imagescn(X_turk,Y_turk,MeanVeltop_dry,'AlphaData',~isnan(DEP))
colormap jet
%axis equal
%set(gca,'ColorScale','log')
set(gca,'dataAspectRatio',[1 1 1])
 set(gca,'XTick',[])
 set(gca,'YTick',[])
 ylim([260 500])
 caxis([0 0.25])
 box on
colorbar
a=get(colorbar);
a =  a.Position; %gets the positon and size of the color bar
set(colorbar,'Position',[a(1)+0.04 a(2)+0.12 0.015 0.18]);
title 'Mean surface velocity (dry)'

hold on
spa = 10;
quiver(X(1:spa:end,1:spa:end),Y(1:spa:end,1:spa:end),...
    MeanUtop_dry((1:spa:end),(1:spa:end)),...
    MeanVtop_dry((1:spa:end),(1:spa:end)),1,'AutoScale','off','Color','black','UData',1)% (1:spa:end) defines spacing after spa vector. 


q{3}.select()

imagescn(X_turk,Y_turk,squeeze(Perctop(2,:,:)),'AlphaData',~isnan(DEP))
colormap jet
%axis equal
%set(gca,'ColorScale','log')
set(gca,'dataAspectRatio',[1 1 1])
 set(gca,'XTick',[])
 set(gca,'YTick',[])
 ylim([260 500])
 caxis([0 0.25])
 box on
colorbar
a=get(colorbar);
a =  a.Position; %gets the positon and size of the color bar
set(colorbar,'Position',[a(1)+0.04 a(2)+0.12 0.015 0.18]);
title 'Mean surface velocity (P99)'

hold on
spa = 10;
quiver(X(1:spa:end,1:spa:end),Y(1:spa:end,1:spa:end),...
    MeanUtop((1:spa:end),(1:spa:end)),...
    MeanVtop((1:spa:end),(1:spa:end)),1,'AutoScale','off','Color','black','UData',1)% (1:spa:end) defines spacing after spa vector. 

q{4}.select()

imagescn(X_turk,Y_turk,squeeze(InstVeltop),'AlphaData',~isnan(DEP))
colormap jet
%axis equal
%set(gca,'ColorScale','log')
set(gca,'dataAspectRatio',[1 1 1])
 set(gca,'XTick',[])
 set(gca,'YTick',[])
 ylim([260 500])
 caxis([0 0.25])
 box on
colorbar
a=get(colorbar);
a =  a.Position; %gets the positon and size of the color bar
set(colorbar,'Position',[a(1)+0.04 a(2)+0.12 0.015 0.18]);
title 'Instantaneous surface velocity (16 Sep)'

hold on
spa = 10;
quiver(X(1:spa:end,1:spa:end),Y(1:spa:end,1:spa:end),...
    InstUtop((1:spa:end),(1:spa:end)),...
    InstVtop((1:spa:end),(1:spa:end)),1,'AutoScale','off','Color','black','UData',1)% (1:spa:end) defines spacing after spa vector. 


q{5}.select()

imagescn(X_turk,Y_turk,MeanVelbot_flood,'AlphaData',~isnan(DEP))
colormap jet
%axis equal
%set(gca,'ColorScale','log')
set(gca,'dataAspectRatio',[1 1 1])
 %set(gca,'XTick',[])
 ylim([260 500])
 caxis([0 0.1])
 box on
colorbar
a=get(colorbar);
a =  a.Position; %gets the positon and size of the color bar
set(colorbar,'Position',[a(1)+0.04 a(2)+0.12 0.015 0.18]);
title 'Mean bottom velocity (flood)'

hold on
spa = 10;
quiver(X(1:spa:end,1:spa:end),Y(1:spa:end,1:spa:end),...
    MeanUbot_flood((1:spa:end),(1:spa:end)),...
    MeanVbot_flood((1:spa:end),(1:spa:end)),1,'AutoScale','off','Color','black','UData',1)% (1:spa:end) defines spacing after spa vector. 

%quiver(X,Y,MeanUtop,MeanVtop,1,'AutoScale','off','Color','black','UData',1)

q{6}.select()

imagescn(X_turk,Y_turk,MeanVelbot_dry,'AlphaData',~isnan(DEP))
colormap jet
%axis equal
%set(gca,'ColorScale','log')
set(gca,'dataAspectRatio',[1 1 1])
 set(gca,'YTick',[])
 ylim([260 500])
 caxis([0 0.1])
 box on
colorbar
a=get(colorbar);
a =  a.Position; %gets the positon and size of the color bar
set(colorbar,'Position',[a(1)+0.04 a(2)+0.12 0.015 0.18]);
title 'Mean bottom velocity (dry)'
%xlabel 'Distance (km)'

hold on
spa = 10;
quiver(X(1:spa:end,1:spa:end),Y(1:spa:end,1:spa:end),...
    MeanUbot_dry((1:spa:end),(1:spa:end)),...
    MeanVbot_dry((1:spa:end),(1:spa:end)),1,'AutoScale','off','Color','black','UData',1)% (1:spa:end) defines spacing after spa vector. 

q{7}.select()

imagescn(X_turk,Y_turk,squeeze(Percbot(2,:,:)),'AlphaData',~isnan(DEP))
colormap jet
%axis equal
%set(gca,'ColorScale','log')
set(gca,'dataAspectRatio',[1 1 1])
 set(gca,'YTick',[])
 ylim([260 500])
 caxis([0 0.1])
 box on
colorbar
a=get(colorbar);
a =  a.Position; %gets the positon and size of the color bar
set(colorbar,'Position',[a(1)+0.04 a(2)+0.12 0.015 0.18]);
title 'Mean bottom velocity (PP99)'

hold on
spa = 10;
quiver(X(1:spa:end,1:spa:end),Y(1:spa:end,1:spa:end),...
    MeanUbot((1:spa:end),(1:spa:end)),...
    MeanVbot((1:spa:end),(1:spa:end)),1,'AutoScale','off','Color','black','UData',1)% (1:spa:end) defines spacing after spa vector. 

q{8}.select()

imagescn(X_turk,Y_turk,squeeze(InstVelbot),'AlphaData',~isnan(DEP))
colormap jet
%axis equal
%set(gca,'ColorScale','log')
set(gca,'dataAspectRatio',[1 1 1])
 set(gca,'YTick',[])
 ylim([260 500])
 caxis([0 0.1])
 box on
colorbar
a=get(colorbar);
a =  a.Position; %gets the positon and size of the color bar
set(colorbar,'Position',[a(1)+0.04 a(2)+0.12 0.015 0.18]);
title 'Instantaneous bottom velocity (16 Sep)'

hold on
spa = 10;
quiver(X(1:spa:end,1:spa:end),Y(1:spa:end,1:spa:end),...
    InstUbot((1:spa:end),(1:spa:end)),...
    InstVbot((1:spa:end),(1:spa:end)),1,'AutoScale','off','Color','black','UData',1)% (1:spa:end) defines spacing after spa vector. 



set(gcf, 'Color', 'w')
p.margin = [6 4 2 6];