%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%  Make plot for Kelvin-Helmholtz Instability test case (KH_INST)
% 
%  Further Information:  
%  http://www.croco-ocean.org
%  
%  This file is part of CROCOTOOLS
%
%  CROCOTOOLS is free software; you can redistribute it and/or modify
%  it under the terms of the GNU General Public License as published
%  by the Free Software Foundation; either version 2 of the License,
%  or (at your option) any later version.
%
%  CROCOTOOLS is distributed in the hope that it will be useful, but
%  WITHOUT ANY WARRANTY; without even the implied warranty of
%  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
%  GNU General Public License for more details.
%
%  You should have received a copy of the GNU General Public License
%  along with this program; if not, write to the Free Software
%  Foundation, Inc., 59 Temple Place, Suite 330, Boston,
%  MA  02111-1307  USA
%
%  Ref: Penven, P., L. Debreu, P. Marchesiello and J.C. McWilliams,
%       Application of the CROCO embedding procedure for the Central 
%      California Upwelling System,  Ocean Modelling, 2006.
%
%  Patrick Marchesiello, IRD 2013
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear all
close all
warning off
%================== User defined parameters ===========================
%
% --- model params ---
%
fname     = 'khinst_his.nc';  % croco file name

makemovie = 0;             % make movie using QTWriter
makepdf   = 0;             % make pdf file

%======================================================================

% ---------------------------------------------------------------------
% --- get grid from numerical model ---
% ---------------------------------------------------------------------

nc=netcdf(fname);
tindex=length(nc{'scrum_time'}(:)); % reads last record

if makemovie,
 tstr=1;
 tend=tindex;
 movObj = QTWriter('khinst.mov');
else
 tstr=tindex;
 tend=tstr;
end

hf = figure('position',[500 500 700 500]);
set(gca,'FontSize',15)
axis tight; set(hf,'DoubleBuffer','on');
%set(gca,'nextplot','replacechildren');

cmin=15.5; cmax=18.5; nbcol=100;

for tindex=tstr:tend % ---------------------------------------------

 if tindex==tstr
  h2d=nc{'h'}(:,:);
  h=squeeze(nc{'h'}(2,:));
  xl=nc{'xl'}(:);
  x=squeeze(nc{'x_rho'}(2,:));
  pm=squeeze(nc{'pm'}(2,:));
  N=length(nc('s_rho'));
  zeta2d=squeeze(nc{'zeta'}(tindex,:,:));
  rho=squeeze(nc{'rho'}(tindex,:,2,:));

  [N,M]=size(rho);
  theta_s=nc.theta_s(:);
  theta_b=nc.theta_b(:);
  hc=nc.hc(:);
  z=zlevs(h2d,zeta2d,theta_s,theta_b,hc,N,'r',2);
  z=squeeze(z(:,2,:));
  x=reshape(x,1,M);
  x=repmat(x,[N 1]);
 end

 time=nc{'scrum_time'}(tindex)/60;
 rho=squeeze(nc{'rho'}(tindex,:,2,:));

 %============================================================
 % --- plot ---
 %=============================================================
 cint=(cmax-cmin)/nbcol;
 colormap(jet)
 set(gcf,'color','w');
 set(gca,'fontsize',15);

 [C,hh]=contourf(x,z,rho,[cmin:cint:cmax],'LineStyle','none'); 
 %pcolor(x,z,rho); shading flat
 shading flat; colorbar;
 axis([0 256 -256 0])
 caxis([cmin cmax])
 thour=floor(time/60);
 tmin=floor(time)-60*thour;
 clock=[num2str(thour),' h ',num2str(tmin),' min '];
 title(['Time: ',clock],'fontsize',15)
 xlabel('X [m]')
 ylabel('Z [m]')
 disp(['Plot for time: ',clock,' (Record: ',num2str(tindex),')'])
 set(gcf,'PaperPositionMode','auto');

 if makemovie,  
  % Write each frame to the file
  movObj.FrameRate =  5;
  writeMovie(movObj,getframe(hf));
  clf('reset')
 end

%----------------------------------

end % time loop

close(nc);

if makemovie,  
    movObj.Loop = 'loop'; % Set looping flag
    close(movObj);        % Finish writing movie and close file
end

if makepdf, 
    export_fig -transparent khinst.pdf
end

return





