0;

pressuredirection = 0;

set(0,'DefaultAxesFontName','Times')
set(0,'DefaultAxesFontSize',10)
widthCM=13.5; % width of plots in cm.  JFM width is 135mm.
fig = figure('units','centimeters','position',...
    [5 -5 widthCM widthCM]);
% tiledlayout(n_rows,n_columns)
tiledlayout(3,2,'TileSpacing','compact','Padding','compact');
%% TILES 1-2
files1 = [...
    % "01_8curv05rad2Dlinear.mat" ...
    % "01_8curv05rad2DM0.03.mat" ...
    % "01_8curv05rad2DM0.05.mat" ...
    % "01_8curv05rad2DM0.07.mat" ...
    % "01_8curv05rad2DM0.10.mat" ...
    % "01_8curv05rad2DM0.12.mat" ...
    % "01_8curv05rad2DM0.15.mat" ...
    % "01_8curv05rad2DM0.17.mat" ...
    % "01_8curv05rad2DM0.20.mat";...
    % "02_8curv05rad2Dlinear.mat" ...
    % "02_8curv05rad2DM0.03.mat" ...
    % "02_8curv05rad2DM0.05.mat" ...
    % "02_8curv05rad2DM0.07.mat" ...
    % "02_8curv05rad2DM0.10.mat" ...
    % "02_8curv05rad2DM0.12.mat" ...
    % "02_8curv05rad2DM0.15.mat" ...
    % "02_8curv05rad2DM0.17.mat" ...
    % "02_8curv05rad2DM0.20.mat";...
    % "03_8curv05rad2Dlinear.mat" ...
    % "03_8curv05rad2DM0.03.mat" ...
    % "03_8curv05rad2DM0.05.mat" ...
    % "03_8curv05rad2DM0.07.mat" ...
    % "03_8curv05rad2DM0.10.mat" ...
    % "03_8curv05rad2DM0.12.mat" ...
    % "03_8curv05rad2DM0.15.mat" ...
    % "03_8curv05rad2DM0.17.mat" ...
    % "03_8curv05rad2DM0.20.mat";...
    "04_8curv05rad2Dlinear.mat" ...
    "04_8curv05rad2DM0.03.mat" ...
    "04_8curv05rad2DM0.05.mat" ...
    "04_8curv05rad2DM0.07.mat" ...
    "04_8curv05rad2DM0.10.mat" ...
    "04_8curv05rad2DM0.12.mat" ...
    "04_8curv05rad2DM0.15.mat" ...
    "04_8curv05rad2DM0.17.mat" ...
    "04_8curv05rad2DM0.20.mat";...
    "05_8curv05rad2Dlinear.mat" ...
    "05_8curv05rad2DM0.03.mat" ...
    "05_8curv05rad2DM0.05.mat" ...
    "05_8curv05rad2DM0.07.mat" ...
    "05_8curv05rad2DM0.10.mat" ...
    "05_8curv05rad2DM0.12.mat" ...
    "05_8curv05rad2DM0.15.mat" ...
    "05_8curv05rad2DM0.17.mat" ...
    "05_8curv05rad2DM0.20.mat";...
    "06_8curv05rad2Dlinear.mat" ...
    "06_8curv05rad2DM0.03.mat" ...
    "06_8curv05rad2DM0.05.mat" ...
    "06_8curv05rad2DM0.07.mat" ...
    "06_8curv05rad2DM0.10.mat" ...
    "06_8curv05rad2DM0.12.mat" ...
    "06_8curv05rad2DM0.15.mat" ...
    "06_8curv05rad2DM0.17.mat" ...
    "06_8curv05rad2DM0.20.mat";...
    "07_8curv05rad2Dlinear.mat" ...
    "07_8curv05rad2DM0.03.mat" ...
    "07_8curv05rad2DM0.05.mat" ...
    "07_8curv05rad2DM0.07.mat" ...
    "07_8curv05rad2DM0.10.mat" ...
    "07_8curv05rad2DM0.12.mat" ...
    "07_8curv05rad2DM0.15.mat" ...
    "07_8curv05rad2DM0.17.mat" ...
    "07_8curv05rad2DM0.20.mat";...
    "08_8curv05rad2Dlinear.mat" ...
    "08_8curv05rad2DM0.03.mat" ...
    "08_8curv05rad2DM0.05.mat" ...
    "08_8curv05rad2DM0.07.mat" ...
    "08_8curv05rad2DM0.10.mat" ...
    "08_8curv05rad2DM0.12.mat" ...
    "08_8curv05rad2DM0.15.mat" ...
    "08_8curv05rad2DM0.17.mat" ...
    "08_8curv05rad2DM0.20.mat";...
    "09_8curv05rad2Dlinear.mat" ...
    "09_8curv05rad2DM0.03.mat" ...
    "09_8curv05rad2DM0.05.mat" ...
    "09_8curv05rad2DM0.07.mat" ...
    "09_8curv05rad2DM0.10.mat" ...
    "09_8curv05rad2DM0.12.mat" ...
    "09_8curv05rad2DM0.15.mat" ...
    "09_8curv05rad2DM0.17.mat" ...
    "09_8curv05rad2DM0.20.mat";...
    "10_8curv05rad2Dlinear.mat" ...
    "10_8curv05rad2DM0.03.mat" ...
    "10_8curv05rad2DM0.05.mat" ...
    "10_8curv05rad2DM0.07.mat" ...
    "10_8curv05rad2DM0.10.mat" ...
    "10_8curv05rad2DM0.12.mat" ...
    "10_8curv05rad2DM0.15.mat" ...
    "10_8curv05rad2DM0.17.mat" ...
    "10_8curv05rad2DM0.20.mat";...
    "11_8curv05rad2Dlinear.mat" ...
    "11_8curv05rad2DM0.03.mat" ...
    "11_8curv05rad2DM0.05.mat" ...
    "11_8curv05rad2DM0.07.mat" ...
    "11_8curv05rad2DM0.10.mat" ...
    "11_8curv05rad2DM0.12.mat" ...
    "11_8curv05rad2DM0.15.mat" ...
    "11_8curv05rad2DM0.17.mat" ...
    "11_8curv05rad2DM0.20.mat";...
    "12_8curv05rad2Dlinear.mat" ...
    "12_8curv05rad2DM0.03.mat" ...
    "12_8curv05rad2DM0.05.mat" ...
    "12_8curv05rad2DM0.07.mat" ...
    "12_8curv05rad2DM0.10.mat" ...
    "12_8curv05rad2DM0.12.mat" ...
    "12_8curv05rad2DM0.15.mat" ...
    "12_8curv05rad2DM0.17.mat" ...
    "12_8curv05rad2DM0.20.mat";...
    "13_8curv05rad2Dlinear.mat" ...
    "13_8curv05rad2DM0.03.mat" ...
    "13_8curv05rad2DM0.05.mat" ...
    "13_8curv05rad2DM0.07.mat" ...
    "13_8curv05rad2DM0.10.mat" ...
    "13_8curv05rad2DM0.12.mat" ...
    "13_8curv05rad2DM0.15.mat" ...
    "13_8curv05rad2DM0.17.mat" ...
    "13_8curv05rad2DM0.20.mat";...
    "14_8curv05rad2Dlinear.mat" ...
    "14_8curv05rad2DM0.03.mat" ...
    "14_8curv05rad2DM0.05.mat" ...
    "14_8curv05rad2DM0.07.mat" ...
    "14_8curv05rad2DM0.10.mat" ...
    "14_8curv05rad2DM0.12.mat" ...
    "14_8curv05rad2DM0.15.mat" ...
    "14_8curv05rad2DM0.17.mat" ...
    "14_8curv05rad2DM0.20.mat";...
    "15_8curv05rad2Dlinear.mat" ...
    "15_8curv05rad2DM0.03.mat" ...
    "15_8curv05rad2DM0.05.mat" ...
    "15_8curv05rad2DM0.07.mat" ...
    "15_8curv05rad2DM0.10.mat" ...
    "15_8curv05rad2DM0.12.mat" ...
    "15_8curv05rad2DM0.15.mat" ...
    "15_8curv05rad2DM0.17.mat" ...
    "15_8curv05rad2DM0.20.mat";...
    "16_8curv05rad2Dlinear.mat" ...
    "16_8curv05rad2DM0.03.mat" ...
    "16_8curv05rad2DM0.05.mat" ...
    "16_8curv05rad2DM0.07.mat" ...
    "16_8curv05rad2DM0.10.mat" ...
    "16_8curv05rad2DM0.12.mat" ...
    "16_8curv05rad2DM0.15.mat" ...
    "16_8curv05rad2DM0.17.mat" ...
    "16_8curv05rad2DM0.20.mat";...
    "17_8curv05rad2Dlinear.mat" ...
    "17_8curv05rad2DM0.03.mat" ...
    "17_8curv05rad2DM0.05.mat" ...
    "17_8curv05rad2DM0.07.mat" ...
    "17_8curv05rad2DM0.10.mat" ...
    "17_8curv05rad2DM0.12.mat" ...
    "17_8curv05rad2DM0.15.mat" ...
    "17_8curv05rad2DM0.17.mat" ...
    "17_8curv05rad2DM0.20.mat";...
    "18_8curv05rad2Dlinear.mat" ...
    "18_8curv05rad2DM0.03.mat" ...
    "18_8curv05rad2DM0.05.mat" ...
    "18_8curv05rad2DM0.07.mat" ...
    "18_8curv05rad2DM0.10.mat" ...
    "18_8curv05rad2DM0.12.mat" ...
    "18_8curv05rad2DM0.15.mat" ...
    "18_8curv05rad2DM0.17.mat" ...
    "18_8curv05rad2DM0.20.mat";...
    "19_8curv05rad2Dlinear.mat" ...
    "19_8curv05rad2DM0.03.mat" ...
    "19_8curv05rad2DM0.05.mat" ...
    "19_8curv05rad2DM0.07.mat" ...
    "19_8curv05rad2DM0.10.mat" ...
    "19_8curv05rad2DM0.12.mat" ...
    "19_8curv05rad2DM0.15.mat" ...
    "19_8curv05rad2DM0.17.mat" ...
    "19_8curv05rad2DM0.20.mat";...
    "20_8curv05rad2Dlinear.mat" ...
    "20_8curv05rad2DM0.03.mat" ...
    "20_8curv05rad2DM0.05.mat" ...
    "20_8curv05rad2DM0.07.mat" ...
    "20_8curv05rad2DM0.10.mat" ...
    "20_8curv05rad2DM0.12.mat" ...
    "20_8curv05rad2DM0.15.mat" ...
    "20_8curv05rad2DM0.17.mat" ...
    "20_8curv05rad2DM0.20.mat"];
dxdx        = zeros(size(files1));
updtdt      = zeros(size(files1));
downdtdt    = zeros(size(files1));
thetatheta  = zeros(size(files1));
machmach    = zeros(size(files1));

filename1 = files1(1,1);
load(filename1,'numparams')
alpha_mx    = numparams.alpha_mx;
a_mx        = numparams.a_mx;
s_d         = numparams.s_d;
omega       = real(numparams.omega);
modes       = numparams.modes;
beta0       = numparams.beta0;

s1 = 4*pi/3;
t1 = 0;
n_t = 10000;
t_end       = 4*pi/omega;
t_grid      = 0+t1:t_end/n_t:t_end -t_end/n_t + t1;
exp_a_grid  = zeros(length(t_grid),2*a_mx+1);



nexttile
for I_curv = 1:length(files1(:,1))
    for I_mach = 1:length(files1(1,:))
        filename1 = files1(I_curv,I_mach);
        load(filename1,'numparams','geomname','geomparams')
        if numparams.lightload == false
            load(filename1,'Ysfint','Ysfplint')
        end
        geom        = eval(strcat(geomname,'(','geomparams',')'));
        dim         = geom.dim;

        X_func      = geom().X;
        Xmn_func    = geom().Xmn;
        X_i         = X_func(0);

        mach        = numparams.mach;
        nonlinear   = numparams.nonlinear;
        
        plotparams.pressurelabel = '$$p/M$$';
        load(filename1,'Pint')
        Pchoice = Pint;

        P_alpha_a = reshape(Pchoice({s1,1:(2*a_mx+1)*(alpha_mx+1)}),...
            alpha_mx+1,2*a_mx+1);
        mode_ave = zeros(alpha_mx+1,1);
        for alpha = 0:alpha_mx
            mode_ave(alpha+1) = eq(alpha,0)/X_func(s1);
        end
        P_a    = P_alpha_a'*mode_ave;

        p_ave = zeros(n_t,1);
        for I_t = 1:n_t
            exp_a_grid(I_t,:) ...
                = exp(-1i*linspace(-a_mx,a_mx,2*a_mx+1)*omega*t_grid(I_t));
            p_ave(I_t) = exp_a_grid(I_t,:)*P_a;
        end

        upI_t = n_t;
        while (abs(p_ave(upI_t))/mach > 0.005 && upI_t > 1) ...
                || p_ave(upI_t) < p_ave(upI_t-1)
            upI_t = upI_t-1;
        end

        downI_t = n_t;
        while (abs(p_ave(downI_t))/mach > 0.009 && downI_t > 1) ...
                || p_ave(downI_t) > p_ave(downI_t-1)
            downI_t = downI_t-1;
        end
        upt_root    = t_grid(upI_t);
        downt_root  = t_grid(downI_t);
        upzerolocation      = omega*upt_root;
        downzerolocation    = omega*downt_root;
        if nonlinear == false
            machmach(I_curv,I_mach) = 0;
        else
            machmach(I_curv,I_mach) = mach;
        end
        if geom.qyvar  == true
            thetatheta(I_curv,I_mach) = geomparams.theta_B;
            dxdx(I_curv,I_mach) = 0.5*X_i*abs(thetatheta(I_curv,I_mach));
        end
        updtdt(I_curv,I_mach) = (upzerolocation/pi ...
            - round(upzerolocation/pi))*pi/omega;
        downdtdt(I_curv,I_mach) = (downzerolocation/pi ...
            - round(downzerolocation/pi))*pi/omega;
    end
end

upjumpspotter   = round(diff(updtdt));
downjumpspotter = round(diff(downdtdt));

for I_mach = 1:length(files1(1,:))
    for I_curv = 1:length(files1(:,1))-1
        if upjumpspotter(I_curv,I_mach) ~= 0 ...
                && I_curv < length(files1(:,1))/2
            for J_curv = 1:I_curv
                if upjumpspotter(I_curv,I_mach) == 1
                    updtdt(J_curv,I_mach)   = updtdt(J_curv,I_mach)+1;
                elseif upjumpspotter(I_curv,I_mach) == -1
                    updtdt(J_curv,I_mach)   = updtdt(J_curv,I_mach)-1;
                end
            end
        elseif upjumpspotter(I_curv,I_mach) ~= 0 ...
                && I_curv >= length(files1(:,1))/2
            for J_curv = I_curv+1:length(files1(:,1))
                if upjumpspotter(I_curv,I_mach) == 1
                    updtdt(J_curv,I_mach) = updtdt(J_curv,I_mach)-1;
                elseif jumpspotter(I_curv,I_mach) == -1
                    updtdt(J_curv,I_mach) = updtdt(J_curv,I_mach)+1;
                end
            end
        end
        if downjumpspotter(I_curv,I_mach) ~= 0 ...
                && I_curv < length(files1(:,1))/2
            for J_curv = 1:I_curv
                if downjumpspotter(I_curv,I_mach) == 1
                    downdtdt(J_curv,I_mach) = downdtdt(J_curv,I_mach)+1;
                elseif downjumpspotter(I_curv,I_mach) == -1
                    downdtdt(J_curv,I_mach) = downdtdt(J_curv,I_mach)-1;
                end
            end
        elseif downjumpspotter(I_curv,I_mach) ~= 0 ...
                && I_curv >= length(files1(:,1))/2
            for J_curv = I_curv+1:length(files1(:,1))
                if downjumpspotter(I_curv,I_mach) == 1
                    downdtdt(J_curv,I_mach) = downdtdt(J_curv,I_mach)-1;
                elseif jumpspotter(I_curv,I_mach) == -1
                    downdtdt(J_curv,I_mach) = downdtdt(J_curv,I_mach)+1;
                end
            end
        end
    end
end


contourf(abs(thetatheta)/pi,machmach,2*updtdt./dxdx);
set_custom_colormap(1);
clim([-1,1])
colorbar

xlabel('$$|\theta_B|/\pi$$')
ylabel('$$M$$')
zlabel('$$\frac{2c\Delta t}{\Delta x}$$')
subtitle('(a)')

nexttile

contourf(abs(thetatheta)/pi,machmach,2*downdtdt./dxdx);
set_custom_colormap(1);
clim([-1,1])
colorbar

xlabel('$$|\theta_B|/\pi$$')
ylabel('$$M$$')
zlabel('$$\frac{2c\Delta t}{\Delta x}$$')
subtitle('(b)')



%% TILES 3-4
files2 = [...
    % "01_8curv07rad2Dlinear.mat" ...
    % "01_8curv07rad2DM0.03.mat" ...
    % "01_8curv07rad2DM0.05.mat" ...
    % "01_8curv07rad2DM0.07.mat" ...
    % "01_8curv07rad2DM0.10.mat" ...
    % "01_8curv07rad2DM0.12.mat" ...
    % "01_8curv07rad2DM0.15.mat" ...
    % "01_8curv07rad2DM0.17.mat" ...
    % "01_8curv07rad2DM0.20.mat";...
    % "02_8curv07rad2Dlinear.mat" ...
    % "02_8curv07rad2DM0.03.mat" ...
    % "02_8curv07rad2DM0.05.mat" ...
    % "02_8curv07rad2DM0.07.mat" ...
    % "02_8curv07rad2DM0.10.mat" ...
    % "02_8curv07rad2DM0.12.mat" ...
    % "02_8curv07rad2DM0.15.mat" ...
    % "02_8curv07rad2DM0.17.mat" ...
    % "02_8curv07rad2DM0.20.mat";...
    % "03_8curv07rad2Dlinear.mat" ...
    % "03_8curv07rad2DM0.03.mat" ...
    % "03_8curv07rad2DM0.05.mat" ...
    % "03_8curv07rad2DM0.07.mat" ...
    % "03_8curv07rad2DM0.10.mat" ...
    % "03_8curv07rad2DM0.12.mat" ...
    % "03_8curv07rad2DM0.15.mat" ...
    % "03_8curv07rad2DM0.17.mat" ...
    % "03_8curv07rad2DM0.20.mat";...
    "04_8curv07rad2Dlinear.mat" ...
    "04_8curv07rad2DM0.03.mat" ...
    "04_8curv07rad2DM0.05.mat" ...
    "04_8curv07rad2DM0.07.mat" ...
    "04_8curv07rad2DM0.10.mat" ...
    "04_8curv07rad2DM0.12.mat" ...
    "04_8curv07rad2DM0.15.mat" ...
    "04_8curv07rad2DM0.17.mat" ...
    "04_8curv07rad2DM0.20.mat";...
    "05_8curv07rad2Dlinear.mat" ...
    "05_8curv07rad2DM0.03.mat" ...
    "05_8curv07rad2DM0.05.mat" ...
    "05_8curv07rad2DM0.07.mat" ...
    "05_8curv07rad2DM0.10.mat" ...
    "05_8curv07rad2DM0.12.mat" ...
    "05_8curv07rad2DM0.15.mat" ...
    "05_8curv07rad2DM0.17.mat" ...
    "05_8curv07rad2DM0.20.mat";...
    "06_8curv07rad2Dlinear.mat" ...
    "06_8curv07rad2DM0.03.mat" ...
    "06_8curv07rad2DM0.05.mat" ...
    "06_8curv07rad2DM0.07.mat" ...
    "06_8curv07rad2DM0.10.mat" ...
    "06_8curv07rad2DM0.12.mat" ...
    "06_8curv07rad2DM0.15.mat" ...
    "06_8curv07rad2DM0.17.mat" ...
    "06_8curv07rad2DM0.20.mat";...
    "07_8curv07rad2Dlinear.mat" ...
    "07_8curv07rad2DM0.03.mat" ...
    "07_8curv07rad2DM0.05.mat" ...
    "07_8curv07rad2DM0.07.mat" ...
    "07_8curv07rad2DM0.10.mat" ...
    "07_8curv07rad2DM0.12.mat" ...
    "07_8curv07rad2DM0.15.mat" ...
    "07_8curv07rad2DM0.17.mat" ...
    "07_8curv07rad2DM0.20.mat";...
    "08_8curv07rad2Dlinear.mat" ...
    "08_8curv07rad2DM0.03.mat" ...
    "08_8curv07rad2DM0.05.mat" ...
    "08_8curv07rad2DM0.07.mat" ...
    "08_8curv07rad2DM0.10.mat" ...
    "08_8curv07rad2DM0.12.mat" ...
    "08_8curv07rad2DM0.15.mat" ...
    "08_8curv07rad2DM0.17.mat" ...
    "08_8curv07rad2DM0.20.mat";...
    "09_8curv07rad2Dlinear.mat" ...
    "09_8curv07rad2DM0.03.mat" ...
    "09_8curv07rad2DM0.05.mat" ...
    "09_8curv07rad2DM0.07.mat" ...
    "09_8curv07rad2DM0.10.mat" ...
    "09_8curv07rad2DM0.12.mat" ...
    "09_8curv07rad2DM0.15.mat" ...
    "09_8curv07rad2DM0.17.mat" ...
    "09_8curv07rad2DM0.20.mat";...
    "10_8curv07rad2Dlinear.mat" ...
    "10_8curv07rad2DM0.03.mat" ...
    "10_8curv07rad2DM0.05.mat" ...
    "10_8curv07rad2DM0.07.mat" ...
    "10_8curv07rad2DM0.10.mat" ...
    "10_8curv07rad2DM0.12.mat" ...
    "10_8curv07rad2DM0.15.mat" ...
    "10_8curv07rad2DM0.17.mat" ...
    "10_8curv07rad2DM0.20.mat";...
    "11_8curv07rad2Dlinear.mat" ...
    "11_8curv07rad2DM0.03.mat" ...
    "11_8curv07rad2DM0.05.mat" ...
    "11_8curv07rad2DM0.07.mat" ...
    "11_8curv07rad2DM0.10.mat" ...
    "11_8curv07rad2DM0.12.mat" ...
    "11_8curv07rad2DM0.15.mat" ...
    "11_8curv07rad2DM0.17.mat" ...
    "11_8curv07rad2DM0.20.mat";...
    "12_8curv07rad2Dlinear.mat" ...
    "12_8curv07rad2DM0.03.mat" ...
    "12_8curv07rad2DM0.05.mat" ...
    "12_8curv07rad2DM0.07.mat" ...
    "12_8curv07rad2DM0.10.mat" ...
    "12_8curv07rad2DM0.12.mat" ...
    "12_8curv07rad2DM0.15.mat" ...
    "12_8curv07rad2DM0.17.mat" ...
    "12_8curv07rad2DM0.20.mat";...
    "13_8curv07rad2Dlinear.mat" ...
    "13_8curv07rad2DM0.03.mat" ...
    "13_8curv07rad2DM0.05.mat" ...
    "13_8curv07rad2DM0.07.mat" ...
    "13_8curv07rad2DM0.10.mat" ...
    "13_8curv07rad2DM0.12.mat" ...
    "13_8curv07rad2DM0.15.mat" ...
    "13_8curv07rad2DM0.17.mat" ...
    "13_8curv07rad2DM0.20.mat"; ...
    "14_8curv07rad2Dlinear.mat" ...
    "14_8curv07rad2DM0.03.mat" ...
    "14_8curv07rad2DM0.05.mat" ...
    "14_8curv07rad2DM0.07.mat" ...
    "14_8curv07rad2DM0.10.mat" ...
    "14_8curv07rad2DM0.12.mat" ...
    "14_8curv07rad2DM0.15.mat" ...
    "14_8curv07rad2DM0.17.mat" ...
    "14_8curv07rad2DM0.20.mat";...
    "15_8curv07rad2Dlinear.mat" ...
    "15_8curv07rad2DM0.03.mat" ...
    "15_8curv07rad2DM0.05.mat" ...
    "15_8curv07rad2DM0.07.mat" ...
    "15_8curv07rad2DM0.10.mat" ...
    "15_8curv07rad2DM0.12.mat" ...
    "15_8curv07rad2DM0.15.mat" ...
    "15_8curv07rad2DM0.17.mat" ...
    "15_8curv07rad2DM0.20.mat";...
    "16_8curv07rad2Dlinear.mat" ...
    "16_8curv07rad2DM0.03.mat" ...
    "16_8curv07rad2DM0.05.mat" ...
    "16_8curv07rad2DM0.07.mat" ...
    "16_8curv07rad2DM0.10.mat" ...
    "16_8curv07rad2DM0.12.mat" ...
    "16_8curv07rad2DM0.15.mat" ...
    "16_8curv07rad2DM0.17.mat" ...
    "16_8curv07rad2DM0.20.mat";...
    "17_8curv07rad2Dlinear.mat" ...
    "17_8curv07rad2DM0.03.mat" ...
    "17_8curv07rad2DM0.05.mat" ...
    "17_8curv07rad2DM0.07.mat" ...
    "17_8curv07rad2DM0.10.mat" ...
    "17_8curv07rad2DM0.12.mat" ...
    "17_8curv07rad2DM0.15.mat" ...
    "17_8curv07rad2DM0.17.mat" ...
    "17_8curv07rad2DM0.20.mat";...
    "18_8curv07rad2Dlinear.mat" ...
    "18_8curv07rad2DM0.03.mat" ...
    "18_8curv07rad2DM0.05.mat" ...
    "18_8curv07rad2DM0.07.mat" ...
    "18_8curv07rad2DM0.10.mat" ...
    "18_8curv07rad2DM0.12.mat" ...
    "18_8curv07rad2DM0.15.mat" ...
    "18_8curv07rad2DM0.17.mat" ...
    "18_8curv07rad2DM0.20.mat";...
    "19_8curv07rad2Dlinear.mat" ...
    "19_8curv07rad2DM0.03.mat" ...
    "19_8curv07rad2DM0.05.mat" ...
    "19_8curv07rad2DM0.07.mat" ...
    "19_8curv07rad2DM0.10.mat" ...
    "19_8curv07rad2DM0.12.mat" ...
    "19_8curv07rad2DM0.15.mat" ...
    "19_8curv07rad2DM0.17.mat" ...
    "19_8curv07rad2DM0.20.mat";...
    "20_8curv07rad2Dlinear.mat" ...
    "20_8curv07rad2DM0.03.mat" ...
    "20_8curv07rad2DM0.05.mat" ...
    "20_8curv07rad2DM0.07.mat" ...
    "20_8curv07rad2DM0.10.mat" ...
    "20_8curv07rad2DM0.12.mat" ...
    "20_8curv07rad2DM0.15.mat" ...
    "20_8curv07rad2DM0.17.mat" ...
    "20_8curv07rad2DM0.20.mat"];

nexttile
for I_curv = 1:length(files2(:,1))
    for I_mach = 1:length(files2(1,:))
        filename2 = files2(I_curv,I_mach);
        load(filename2,'numparams','geomname','geomparams')
        if numparams.lightload == false
            load(filename2,'Ysfint','Ysfplint')
        end
        geom        = eval(strcat(geomname,'(','geomparams',')'));
        dim         = geom.dim;

        X_func      = geom().X;
        Xmn_func    = geom().Xmn;
        X_i         = X_func(0);

        mach        = numparams.mach;
        nonlinear   = numparams.nonlinear;
        
        plotparams.pressurelabel = '$$p/M$$';
        load(filename2,'Pint')
        Pchoice = Pint;

        P_alpha_a = reshape(Pchoice({s1,1:(2*a_mx+1)*(alpha_mx+1)}),...
            alpha_mx+1,2*a_mx+1);
        mode_ave = zeros(alpha_mx+1,1);
        for alpha = 0:alpha_mx
            mode_ave(alpha+1) = eq(alpha,0)/X_func(s1);
        end
        P_a    = P_alpha_a'*mode_ave;

        p_ave = zeros(n_t,1);
        for I_t = 1:n_t
            exp_a_grid(I_t,:) ...
                = exp(-1i*linspace(-a_mx,a_mx,2*a_mx+1)*omega*t_grid(I_t));
            p_ave(I_t) = exp_a_grid(I_t,:)*P_a;
        end

        upI_t = n_t;
        while (abs(p_ave(upI_t))/mach > 0.005 && upI_t > 1) ...
                || p_ave(upI_t) < p_ave(upI_t-1)
            upI_t = upI_t-1;
        end
        downI_t = n_t;
        while (abs(p_ave(downI_t))/mach > 0.009 && downI_t > 1) ...
                || p_ave(downI_t) > p_ave(downI_t-1)
            downI_t = downI_t-1;
            % disp([mach t_grid(I_t)])
        end
        upt_root    = t_grid(upI_t);
        downt_root  = t_grid(downI_t);
        upzerolocation      = omega*upt_root;
        downzerolocation    = omega*downt_root;
        if nonlinear == false
            machmach(I_curv,I_mach) = 0;
        else
            machmach(I_curv,I_mach) = mach;
        end
        if geom.qyvar  == true
            thetatheta(I_curv,I_mach) = geomparams.theta_B;
            dxdx(I_curv,I_mach) = 0.5*X_i*abs(thetatheta(I_curv,I_mach));
        end
        updtdt(I_curv,I_mach) = (upzerolocation/pi ...
            - round(upzerolocation/pi))*pi/omega;
        downdtdt(I_curv,I_mach) = (downzerolocation/pi ...
            - round(downzerolocation/pi))*pi/omega;
    end
end

upjumpspotter   = round(diff(updtdt));
downjumpspotter = round(diff(downdtdt));

for I_mach = 1:length(files2(1,:))
    for I_curv = 1:length(files2(:,1))-1
        if upjumpspotter(I_curv,I_mach) ~= 0 ...
                && I_curv < length(files2(:,1))/2
            for J_curv = 1:I_curv
                if upjumpspotter(I_curv,I_mach) == 1
                    updtdt(J_curv,I_mach)   = updtdt(J_curv,I_mach)+1;
                elseif upjumpspotter(I_curv,I_mach) == -1
                    updtdt(J_curv,I_mach)   = updtdt(J_curv,I_mach)-1;
                end
            end
        elseif upjumpspotter(I_curv,I_mach) ~= 0 ...
                && I_curv >= length(files2(:,1))/2
            for J_curv = I_curv+1:length(files2(:,1))
                if upjumpspotter(I_curv,I_mach) == 1
                    updtdt(J_curv,I_mach) = updtdt(J_curv,I_mach)-1;
                elseif jumpspotter(I_curv,I_mach) == -1
                    updtdt(J_curv,I_mach) = updtdt(J_curv,I_mach)+1;
                end
            end
        end
        if downjumpspotter(I_curv,I_mach) ~= 0 ...
                && I_curv < length(files2(:,1))/2
            for J_curv = 1:I_curv
                if downjumpspotter(I_curv,I_mach) == 1
                    downdtdt(J_curv,I_mach) = downdtdt(J_curv,I_mach)+1;
                elseif downjumpspotter(I_curv,I_mach) == -1
                    downdtdt(J_curv,I_mach) = downdtdt(J_curv,I_mach)-1;
                end
            end
        elseif downjumpspotter(I_curv,I_mach) ~= 0 ...
                && I_curv >= length(files2(:,1))/2
            for J_curv = I_curv+1:length(files2(:,1))
                if downjumpspotter(I_curv,I_mach) == 1
                    downdtdt(J_curv,I_mach) = downdtdt(J_curv,I_mach)-1;
                elseif jumpspotter(I_curv,I_mach) == -1
                    downdtdt(J_curv,I_mach) = downdtdt(J_curv,I_mach)+1;
                end
            end
        end
    end
end


contourf(abs(thetatheta)/pi,machmach,2*updtdt./dxdx);
set_custom_colormap(1);
clim([-1,1])
colorbar

xlabel('$$|\theta_B|/\pi$$')
ylabel('$$M$$')
zlabel('$$\frac{2c\Delta t}{\Delta x}$$')
subtitle('(c)')

nexttile

contourf(abs(thetatheta)/pi,machmach,2*downdtdt./dxdx);
set_custom_colormap(1);
clim([-1,1])
colorbar

xlabel('$$|\theta_B|/\pi$$')
ylabel('$$M$$')
zlabel('$$\frac{2c\Delta t}{\Delta x}$$')
subtitle('(d)')


%% TILES 5-6
files3 = [...
    % "01_8curv2Dlinear.mat" ...
    % "01_8curv2DM0.03.mat" ...
    % "01_8curv2DM0.05.mat" ...
    % "01_8curv2DM0.07.mat" ...
    % "01_8curv2DM0.10.mat" ...
    % "01_8curv2DM0.12.mat" ...
    % "01_8curv2DM0.15.mat" ...
    % "01_8curv2DM0.17.mat" ...
    % "01_8curv2DM0.20.mat";...
    % "02_8curv2Dlinear.mat" ...
    % "02_8curv2DM0.03.mat" ...
    % "02_8curv2DM0.05.mat" ...
    % "02_8curv2DM0.07.mat" ...
    % "02_8curv2DM0.10.mat" ...
    % "02_8curv2DM0.12.mat" ...
    % "02_8curv2DM0.15.mat" ...
    % "02_8curv2DM0.17.mat" ...
    % "02_8curv2DM0.20.mat";...
    % "03_8curv2Dlinear.mat" ...
    % "03_8curv2DM0.03.mat" ...
    % "03_8curv2DM0.05.mat" ...
    % "03_8curv2DM0.07.mat" ...
    % "03_8curv2DM0.10.mat" ...
    % "03_8curv2DM0.12.mat" ...
    % "03_8curv2DM0.15.mat" ...
    % "03_8curv2DM0.17.mat" ...
    % "03_8curv2DM0.20.mat";...
    "04_8curv2Dlinear.mat" ...
    "04_8curv2DM0.03.mat" ...
    "04_8curv2DM0.05.mat" ...
    "04_8curv2DM0.07.mat" ...
    "04_8curv2DM0.10.mat" ...
    "04_8curv2DM0.12.mat" ...
    "04_8curv2DM0.15.mat" ...
    "04_8curv2DM0.17.mat" ...
    "04_8curv2DM0.20.mat";...
    "05_8curv2Dlinear.mat" ...
    "05_8curv2DM0.03.mat" ...
    "05_8curv2DM0.05.mat" ...
    "05_8curv2DM0.07.mat" ...
    "05_8curv2DM0.10.mat" ...
    "05_8curv2DM0.12.mat" ...
    "05_8curv2DM0.15.mat" ...
    "05_8curv2DM0.17.mat" ...
    "05_8curv2DM0.20.mat";...
    "06_8curv2Dlinear.mat" ...
    "06_8curv2DM0.03.mat" ...
    "06_8curv2DM0.05.mat" ...
    "06_8curv2DM0.07.mat" ...
    "06_8curv2DM0.10.mat" ...
    "06_8curv2DM0.12.mat" ...
    "06_8curv2DM0.15.mat" ...
    "06_8curv2DM0.17.mat" ...
    "06_8curv2DM0.20.mat";...
    "07_8curv2Dlinear.mat" ...
    "07_8curv2DM0.03.mat" ...
    "07_8curv2DM0.05.mat" ...
    "07_8curv2DM0.07.mat" ...
    "07_8curv2DM0.10.mat" ...
    "07_8curv2DM0.12.mat" ...
    "07_8curv2DM0.15.mat" ...
    "07_8curv2DM0.17.mat" ...
    "07_8curv2DM0.20.mat";...
    "08_8curv2Dlinear.mat" ...
    "08_8curv2DM0.03.mat" ...
    "08_8curv2DM0.05.mat" ...
    "08_8curv2DM0.07.mat" ...
    "08_8curv2DM0.10.mat" ...
    "08_8curv2DM0.12.mat" ...
    "08_8curv2DM0.15.mat" ...
    "08_8curv2DM0.17.mat" ...
    "08_8curv2DM0.20.mat";...
    "09_8curv2Dlinear.mat" ...
    "09_8curv2DM0.03.mat" ...
    "09_8curv2DM0.05.mat" ...
    "09_8curv2DM0.07.mat" ...
    "09_8curv2DM0.10.mat" ...
    "09_8curv2DM0.12.mat" ...
    "09_8curv2DM0.15.mat" ...
    "09_8curv2DM0.17.mat" ...
    "09_8curv2DM0.20.mat";...
    "10_8curv2Dlinear.mat" ...
    "10_8curv2DM0.03.mat" ...
    "10_8curv2DM0.05.mat" ...
    "10_8curv2DM0.07.mat" ...
    "10_8curv2DM0.10.mat" ...
    "10_8curv2DM0.12.mat" ...
    "10_8curv2DM0.15.mat" ...
    "10_8curv2DM0.17.mat" ...
    "10_8curv2DM0.20.mat";...
    "11_8curv2Dlinear.mat" ...
    "11_8curv2DM0.03.mat" ...
    "11_8curv2DM0.05.mat" ...
    "11_8curv2DM0.07.mat" ...
    "11_8curv2DM0.10.mat" ...
    "11_8curv2DM0.12.mat" ...
    "11_8curv2DM0.15.mat" ...
    "11_8curv2DM0.17.mat" ...
    "11_8curv2DM0.20.mat";...
    "12_8curv2Dlinear.mat" ...
    "12_8curv2DM0.03.mat" ...
    "12_8curv2DM0.05.mat" ...
    "12_8curv2DM0.07.mat" ...
    "12_8curv2DM0.10.mat" ...
    "12_8curv2DM0.12.mat" ...
    "12_8curv2DM0.15.mat" ...
    "12_8curv2DM0.17.mat" ...
    "12_8curv2DM0.20.mat";...
    "13_8curv2Dlinear.mat" ...
    "13_8curv2DM0.03.mat" ...
    "13_8curv2DM0.05.mat" ...
    "13_8curv2DM0.07.mat" ...
    "13_8curv2DM0.10.mat" ...
    "13_8curv2DM0.12.mat" ...
    "13_8curv2DM0.15.mat" ...
    "13_8curv2DM0.17.mat" ...
    "13_8curv2DM0.20.mat";...
    "14_8curv2Dlinear.mat" ...
    "14_8curv2DM0.03.mat" ...
    "14_8curv2DM0.05.mat" ...
    "14_8curv2DM0.07.mat" ...
    "14_8curv2DM0.10.mat" ...
    "14_8curv2DM0.12.mat" ...
    "14_8curv2DM0.15.mat" ...
    "14_8curv2DM0.17.mat" ...
    "14_8curv2DM0.20.mat";...
    "15_8curv2Dlinear.mat" ...
    "15_8curv2DM0.03.mat" ...
    "15_8curv2DM0.05.mat" ...
    "15_8curv2DM0.07.mat" ...
    "15_8curv2DM0.10.mat" ...
    "15_8curv2DM0.12.mat" ...
    "15_8curv2DM0.15.mat" ...
    "15_8curv2DM0.17.mat" ...
    "15_8curv2DM0.20.mat";...
    "16_8curv2Dlinear.mat" ...
    "16_8curv2DM0.03.mat" ...
    "16_8curv2DM0.05.mat" ...
    "16_8curv2DM0.07.mat" ...
    "16_8curv2DM0.10.mat" ...
    "16_8curv2DM0.12.mat" ...
    "16_8curv2DM0.15.mat" ...
    "16_8curv2DM0.17.mat" ...
    "16_8curv2DM0.20.mat";...
    "17_8curv2Dlinear.mat" ...
    "17_8curv2DM0.03.mat" ...
    "17_8curv2DM0.05.mat" ...
    "17_8curv2DM0.07.mat" ...
    "17_8curv2DM0.10.mat" ...
    "17_8curv2DM0.12.mat" ...
    "17_8curv2DM0.15.mat" ...
    "17_8curv2DM0.17.mat" ...
    "17_8curv2DM0.20.mat";...
    "18_8curv2Dlinear.mat" ...
    "18_8curv2DM0.03.mat" ...
    "18_8curv2DM0.05.mat" ...
    "18_8curv2DM0.07.mat" ...
    "18_8curv2DM0.10.mat" ...
    "18_8curv2DM0.12.mat" ...
    "18_8curv2DM0.15.mat" ...
    "18_8curv2DM0.17.mat" ...
    "18_8curv2DM0.20.mat";...
    "19_8curv2Dlinear.mat" ...
    "19_8curv2DM0.03.mat" ...
    "19_8curv2DM0.05.mat" ...
    "19_8curv2DM0.07.mat" ...
    "19_8curv2DM0.10.mat" ...
    "19_8curv2DM0.12.mat" ...
    "19_8curv2DM0.15.mat" ...
    "19_8curv2DM0.17.mat" ...
    "19_8curv2DM0.20.mat";...
    "20_8curv2Dlinear.mat" ...
    "20_8curv2DM0.03.mat" ...
    "20_8curv2DM0.05.mat" ...
    "20_8curv2DM0.07.mat" ...
    "20_8curv2DM0.10.mat" ...
    "20_8curv2DM0.12.mat" ...
    "20_8curv2DM0.15.mat" ...
    "20_8curv2DM0.17.mat" ...
    "20_8curv2DM0.20.mat"];


nexttile
for I_curv = 1:length(files3(:,1))
    for I_mach = 1:length(files3(1,:))
        filename3 = files3(I_curv,I_mach);
        load(filename3,'numparams','geomname','geomparams')
        if numparams.lightload == false
            load(filename3,'Ysfint','Ysfplint')
        end
        geom        = eval(strcat(geomname,'(','geomparams',')'));
        dim         = geom.dim;

        X_func      = geom().X;
        Xmn_func    = geom().Xmn;
        X_i         = X_func(0);

        mach        = numparams.mach;
        nonlinear   = numparams.nonlinear;
        
        plotparams.pressurelabel = '$$p/M$$';
        load(filename3,'Pint')
        Pchoice = Pint;

        P_alpha_a = reshape(Pchoice({s1,1:(2*a_mx+1)*(alpha_mx+1)}),...
            alpha_mx+1,2*a_mx+1);
        mode_ave = zeros(alpha_mx+1,1);
        for alpha = 0:alpha_mx
            mode_ave(alpha+1) = eq(alpha,0)/X_func(s1);
        end
        P_a    = P_alpha_a'*mode_ave;

        p_ave = zeros(n_t,1);
        for I_t = 1:n_t
            exp_a_grid(I_t,:) ...
                = exp(-1i*linspace(-a_mx,a_mx,2*a_mx+1)*omega*t_grid(I_t));
            p_ave(I_t) = exp_a_grid(I_t,:)*P_a;
        end

        upI_t = n_t;
        while (abs(p_ave(upI_t))/mach > 0.1 && upI_t > 1) ...
                || p_ave(upI_t) < p_ave(upI_t-1)
            upI_t = upI_t-1;
        end
        downI_t = n_t;
        while (abs(p_ave(downI_t))/mach > 0.1 && downI_t > 1) ...
                || p_ave(downI_t) > p_ave(downI_t-1)
            downI_t = downI_t-1;
            % disp([mach t_grid(I_t)])
        end
        upt_root    = t_grid(upI_t);
        downt_root  = t_grid(downI_t);
        upzerolocation      = omega*upt_root;
        downzerolocation    = omega*downt_root;
        if nonlinear == false
            machmach(I_curv,I_mach) = 0;
        else
            machmach(I_curv,I_mach) = mach;
        end
        if geom.qyvar  == true
            thetatheta(I_curv,I_mach) = geomparams.theta_B;
            dxdx(I_curv,I_mach) = 0.5*X_i*abs(thetatheta(I_curv,I_mach));
        end
        updtdt(I_curv,I_mach) = (upzerolocation/pi ...
            - round(upzerolocation/pi))*pi/omega;
        downdtdt(I_curv,I_mach) = (downzerolocation/pi ...
            - round(downzerolocation/pi))*pi/omega;
    end
end

upjumpspotter   = round(diff(updtdt));
downjumpspotter = round(diff(downdtdt));

for I_mach = 1:length(files3(1,:))
    for I_curv = 1:length(files3(:,1))-1
        if upjumpspotter(I_curv,I_mach) ~= 0 ...
                && I_curv < length(files3(:,1))/2
            for J_curv = 1:I_curv
                if upjumpspotter(I_curv,I_mach) == 1
                    updtdt(J_curv,I_mach)   = updtdt(J_curv,I_mach)+1;
                elseif upjumpspotter(I_curv,I_mach) == -1
                    updtdt(J_curv,I_mach)   = updtdt(J_curv,I_mach)-1;
                end
            end
        elseif upjumpspotter(I_curv,I_mach) ~= 0 ...
                && I_curv >= length(files3(:,1))/2
            for J_curv = I_curv+1:length(files3(:,1))
                if upjumpspotter(I_curv,I_mach) == 1
                    updtdt(J_curv,I_mach) = updtdt(J_curv,I_mach)-1;
                elseif jumpspotter(I_curv,I_mach) == -1
                    updtdt(J_curv,I_mach) = updtdt(J_curv,I_mach)+1;
                end
            end
        end
        if downjumpspotter(I_curv,I_mach) ~= 0 ...
                && I_curv < length(files3(:,1))/2
            for J_curv = 1:I_curv
                if downjumpspotter(I_curv,I_mach) == 1
                    downdtdt(J_curv,I_mach) = downdtdt(J_curv,I_mach)+1;
                elseif downjumpspotter(I_curv,I_mach) == -1
                    downdtdt(J_curv,I_mach) = downdtdt(J_curv,I_mach)-1;
                end
            end
        elseif downjumpspotter(I_curv,I_mach) ~= 0 ...
                && I_curv >= length(files3(:,1))/2
            for J_curv = I_curv+1:length(files3(:,1))
                if downjumpspotter(I_curv,I_mach) == 1
                    downdtdt(J_curv,I_mach) = downdtdt(J_curv,I_mach)-1;
                elseif jumpspotter(I_curv,I_mach) == -1
                    downdtdt(J_curv,I_mach) = downdtdt(J_curv,I_mach)+1;
                end
            end
        end
    end
end


contourf(abs(thetatheta)/pi,machmach,2*updtdt./dxdx);
set_custom_colormap(1);
clim([-1,1])
colorbar

xlabel('$$|\theta_B|/\pi$$')
ylabel('$$M$$')
zlabel('$$\frac{2c\Delta t}{\Delta x}$$')
subtitle('(e)')

nexttile

contourf(abs(thetatheta)/pi,machmach,2*downdtdt./dxdx);
set_custom_colormap(1);
clim([-1,1])
colorbar

xlabel('$$|\theta_B|/\pi$$')
ylabel('$$M$$')
zlabel('$$\frac{2c\Delta t}{\Delta x}$$')
subtitle('(f)')

exportgraphics(gcf,'stillplaceholderp2.pdf','ContentType','vector')


