Skip to content
Snippets Groups Projects
compile_results.m 10.57 KiB
function [DATA] = compile_results(DIRECTORY,JOBNUMMIN,JOBNUMMAX)
DATA = {};
CONTINUE = 1;
JOBNUM   = JOBNUMMIN; JOBFOUND = 0;
DATA.TJOB_SE  = []; % Start and end times of jobs
DATA.NU_EVOL  = []; % evolution of parameter nu between jobs
DATA.CO_EVOL  = []; % evolution of CO
DATA.MUx_EVOL  = []; % evolution of parameter mu between jobs
DATA.MUy_EVOL  = []; % evolution of parameter mu between jobs
DATA.K_N_EVOL = []; %
DATA.L_EVOL   = []; % 
DATA.DT_EVOL  = []; %
% FIELDS
Nipj_    = []; Nepj_    = [];
Ni00_    = []; Ne00_    = [];
HFLUXI_   = [];
HFLUXE_   = [];
GGAMMAI_ = [];
PGAMMAI_ = [];
GGAMMAE_ = [];
PGAMMAE_ = [];
PHI_     = [];
DENS_E_  = [];
DENS_I_  = [];
UPAR_E_  = [];
UPAR_I_  = [];
UPER_E_  = [];
UPER_I_  = [];
TPAR_E_  = [];
TPAR_I_  = [];
TPER_E_  = [];
TPER_I_  = [];
TEMP_E_  = [];
TEMP_I_  = [];
TEMP_E_  = [];
TEMP_I_  = [];
Ts0D_    = [];
Ts3D_    = [];
Ts5D_    = [];
Sipj_    = []; Sepj_    = [];
Pe_old   = 1e9; Pi_old = Pe_old; Je_old = Pe_old; Ji_old = Pe_old;
Pi_max=0; Pe_max=0; Ji_max=0; Je_max=0;
DATA.outfilenames = {};
ii = 1;
while(CONTINUE)
    filename = sprintf([DIRECTORY,'outputs_%.2d.h5'],JOBNUM);
    if (exist(filename, 'file') == 2 && JOBNUM <= JOBNUMMAX)
        DATA.outfilenames{ii} = filename;
        %% load results %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
        disp(['Loading ',filename])
        % Loading from output file
        CPUTIME   = h5readatt(filename,'/data/input','cpu_time');
        DT_SIM    = h5readatt(filename,'/data/input','dt');
        [Pe, Je, Pi, Ji, kx, ky, z] = load_grid_data(filename);
        W_GAMMA   = strcmp(h5readatt(filename,'/data/input','write_gamma'),'y');
        W_HF      = strcmp(h5readatt(filename,'/data/input','write_hf'   ),'y');
        W_PHI     = strcmp(h5readatt(filename,'/data/input','write_phi'  ),'y');
        W_NA00    = strcmp(h5readatt(filename,'/data/input','write_Na00' ),'y');
        W_NAPJ    = strcmp(h5readatt(filename,'/data/input','write_Napj' ),'y');
        W_SAPJ    = strcmp(h5readatt(filename,'/data/input','write_Sapj' ),'y');
        W_DENS    = strcmp(h5readatt(filename,'/data/input','write_dens' ),'y');
        W_TEMP    = strcmp(h5readatt(filename,'/data/input','write_temp' ),'y');
        KIN_E     = strcmp(h5readatt(filename,'/data/input',     'KIN_E' ),'y');
        
        % Check polynomials degrees
        Pe_new= numel(Pe); Je_new= numel(Je);
        Pi_new= numel(Pi); Ji_new= numel(Ji);
        if(Pe_max < Pe_new); Pe_max = Pe_new; end;
        if(Je_max < Je_new); Je_max = Je_new; end;
        if(Pi_max < Pi_new); Pi_max = Pi_new; end;
        if(Ji_max < Ji_new); Ji_max = Ji_new; end;
        % If a degree is larger than previous job, put them in a larger array
        if (sum([Pe_new, Je_new, Pi_new, Ji_new]>[Pe_old, Je_old, Pi_old, Ji_old]) >= 1)
            if W_NAPJ
                tmp = Nipj_; sz = size(tmp);
                Nipj_ = zeros(cat(1,[Pi_new,Ji_new]',sz(3:end)')');
                Nipj_(1:Pi_old,1:Ji_old,:,:,:,:) = tmp;
                if(KIN_E) 
                tmp = Nepj_; sz = size(tmp);
                Nepj_ = zeros(cat(1,[Pe_new,Je_new]',sz(3:end)')');
                Nepj_(1:Pe_old,1:Je_old,:,:,:,:) = tmp;
                end
            end
            if W_SAPJ
                tmp = Sipj_; sz = size(tmp);
                Sipj_ = zeros(cat(1,[Pi_new,Ji_new]',sz(3:end)')');
                Sipj_(1:Pi_old,1:Ji_old,:,:,:,:) = tmp;
                tmp = Sepj_; sz = size(tmp);
%                 Sepj_ = zeros(cat(1,[Pe_new,Je_new]',sz(3:end)')');
%                 Sepj_(1:Pe_old,1:Je_old,:,:,:,:) = tmp;
            end
        % If a degree is smaller than previous job, put zero to add. deg.
        elseif (sum([Pe_new, Je_new, Pi_new, Ji_new]<[Pe_old, Je_old, Pi_old, Ji_old]) >= 1 && Pe_old ~= 1e9)
            if W_NAPJ
                tmp = Nipj; sz = size(tmp);
                Nipj = zeros(cat(1,[Pi_max,Ji_max]',sz(3:end)')');
                Nipj(1:Pi_new,1:Ji_new,:,:,:) = tmp;
                tmp = Nepj; sz = size(tmp);
                Nepj = zeros(cat(1,[Pe_max,Je_max]',sz(3:end)')');
                Nepj(1:Pe_new,1:Je_new,:,:,:) = tmp;
            end
            if W_SAPJ
                tmp = Sipj; sz = size(tmp);
                Sipj = zeros(cat(1,[Pi_max,Ji_max]',sz(3:end)')');
                Sipj(1:Pi_new,1:Ji_new,:,:,:) = tmp;
                tmp = Sepj; sz = size(tmp);
                Sepj = zeros(cat(1,[Pe_max,Je_max]',sz(3:end)')');
                Sepj(1:Pe_new,1:Je_new,:,:,:) = tmp;
            end
        end


        if W_GAMMA
            [ GGAMMA_RI, Ts0D, ~] = load_0D_data(filename, 'gflux_ri');
            PGAMMA_RI            = load_0D_data(filename, 'pflux_ri');
            GGAMMAI_ = cat(1,GGAMMAI_,GGAMMA_RI); clear GGAMMA_RI
            PGAMMAI_ = cat(1,PGAMMAI_,PGAMMA_RI); clear PGAMMA_RI
        end

        if W_HF
            [ HFLUX_XI, Ts0D, ~] = load_0D_data(filename, 'hflux_xi');
            HFLUXI_ = cat(1,HFLUXI_,HFLUX_XI); clear HFLUX_XI
%             if(KIN_E)
%             [ HFLUX_XE, Ts0D, ~] = load_0D_data(filename, 'hflux_xe');
%             HFLUXE_ = cat(1,HFLUXE_,HFLUX_XE); clear HFLUX_XE 
%             end
        end

        if W_PHI
            [ PHI, Ts3D, ~] = load_3D_data(filename, 'phi');
            PHI_  = cat(4,PHI_,PHI); clear PHI
        end
        if W_NA00
            if KIN_E
             Ne00  = load_3D_data(filename, 'Ne00');
             Ne00_ = cat(4,Ne00_,Ne00); clear Ne00
            end
            [Ni00, Ts3D, ~] = load_3D_data(filename, 'Ni00');
             Ni00_ = cat(4,Ni00_,Ni00); clear Ni00
        end
        if W_DENS
            if KIN_E
        [DENS_E, Ts3D, ~] = load_3D_data(filename, 'dens_e');
            DENS_E_ = cat(4,DENS_E_,DENS_E); clear DENS_E
            end
        [DENS_I, Ts3D, ~] = load_3D_data(filename, 'dens_i');
            DENS_I_ = cat(4,DENS_I_,DENS_I); clear DENS_I
        end
        if 0
            if KIN_E
        [UPAR_E, Ts3D, ~] = load_3D_data(filename, 'upar_e');
            UPAR_E_ = cat(4,UPAR_E_,UPAR_E); clear UPAR_E
        [UPER_E, Ts3D, ~] = load_3D_data(filename, 'uper_e');
%             UPER_E_ = cat(4,UPER_E_,UPER_E); clear UPER_E
            end
        [UPAR_I, Ts3D, ~] = load_3D_data(filename, 'upar_i');
            UPAR_I_ = cat(4,UPAR_I_,UPAR_I); clear UPAR_I
        [UPER_I, Ts3D, ~] = load_3D_data(filename, 'uper_i');
            UPER_I_ = cat(4,UPER_I_,UPER_I); clear UPER_I
        end
        if W_TEMP
            if KIN_E 
%         [TPAR_E, Ts3D, ~] = load_3D_data(filename, 'Tpar_e');
%             TPAR_E_ = cat(4,TPAR_E_,TPAR_E); clear TPAR_E
%         [TPER_E, Ts3D, ~] = load_3D_data(filename, 'Tper_e');
%             TPER_E_ = cat(4,TPER_E_,TPER_E); clear TPER_E
        [TEMP_E, Ts3D, ~] = load_3D_data(filename, 'temp_e');
                TEMP_E_ = cat(4,TEMP_E_,TEMP_E); clear TEMP_E
            end
%         [TPAR_I, Ts3D, ~] = load_3D_data(filename, 'Tpar_i');
%             TPAR_I_ = cat(4,TPAR_I_,TPAR_I); clear TPAR_I
%         [TPER_I, Ts3D, ~] = load_3D_data(filename, 'Tper_i');
%             TPER_I_ = cat(4,TPER_I_,TPER_I); clear TPER_I
        [TEMP_I, Ts3D, ~] = load_3D_data(filename, 'temp_i');
            TEMP_I_ = cat(4,TEMP_I_,TEMP_I); clear TEMP_I
        end

        Ts5D = [];
        if W_NAPJ
        [Nipj, Ts5D, ~] = load_5D_data(filename, 'moments_i');
            Nipj_ = cat(6,Nipj_,Nipj); clear Nipj
            if KIN_E
                Nepj  = load_5D_data(filename, 'moments_e');
                Nepj_ = cat(6,Nepj_,Nepj); clear Nepj
            end
        end
        if W_SAPJ
     	  Sipj_ = cat(6,Sipj_,Sipj);
          if KIN_E
           Sepj_ = cat(6,Sepj_,Sepj);
          end
        end
        Ts0D_   = cat(1,Ts0D_,Ts0D);
        Ts3D_   = cat(1,Ts3D_,Ts3D);
        Ts5D_   = cat(1,Ts5D_,Ts5D);

        % Evolution of simulation parameters
        load_params
        DATA.TJOB_SE   = [DATA.TJOB_SE  Ts0D(1) Ts0D(end)];
        DATA.NU_EVOL   = [DATA.NU_EVOL  DATA.NU     DATA.NU];
        DATA.CO_EVOL   = [DATA.CO_EVOL  DATA.CO     DATA.CO];
        DATA.MUx_EVOL  = [DATA.MUx_EVOL DATA.MUx    DATA.MUx];
        DATA.MUy_EVOL  = [DATA.MUy_EVOL DATA.MUy    DATA.MUy];
        DATA.K_N_EVOL  = [DATA.K_N_EVOL DATA.K_N    DATA.K_N];
        DATA.L_EVOL    = [DATA.L_EVOL   DATA.L      DATA.L];
        DATA.DT_EVOL   = [DATA.DT_EVOL  DATA.DT_SIM DATA.DT_SIM];
        
        ii = ii + 1;
        JOBFOUND = JOBFOUND + 1;
        LASTJOB  = JOBNUM;
        Pe_old = Pe_new; Je_old = Je_new;
        Pi_old = Pi_new; Ji_old = Ji_new;
    elseif (JOBNUM > JOBNUMMAX)
        CONTINUE = 0;
        disp(['found ',num2str(JOBFOUND),' results']);
    end
    JOBNUM   = JOBNUM + 1;
end

if(JOBFOUND == 0)
    disp('no results found, please verify the paths');
    return;
else
    %% Build grids

    Nky = numel(ky); 
    if Nky > 1
        dky = ky(2); 
        Ly = 2*pi/dky;   
    else
        dky = 0;
        Ly  = 0;   
    end
    [~,iky0] = min(abs(ky)); 
    Ny = 2*Nky-1;  
    y  = linspace(-Ly/2,Ly/2,Ny+1); y = y(1:end-1);

    Nkx = numel(kx);
    if Nkx > 1
        dkx = kx(2);
        Lx = 2*pi/dkx;
    else
        dkx = 0;
        Lx  = 0;
    end    
    [~,ikx0] = min(abs(kx));
    Nx = Nkx;      
    x  = linspace(-Lx/2,Lx/2,Nx+1); x = x(1:end-1);

    Nz = numel(z);

    [KX,KY] = meshgrid(kx,ky);
    KPERP2 = KX.^2+KY.^2;
    %% Add everything in output structure
    % scaling
    DATA.scale = 1;%(1/Nx/Ny)^2;
    % Fields
    DATA.GGAMMA_RI = GGAMMAI_; DATA.PGAMMA_RI = PGAMMAI_; DATA.HFLUX_X = HFLUXI_;
    DATA.Nipj = Nipj_; DATA.Ni00 = Ni00_; DATA.DENS_I = DENS_I_; DATA.TEMP_I = TEMP_I_;
    if(KIN_E)
    DATA.Nepj = Nepj_; DATA.Ne00 = Ne00_; DATA.DENS_E = DENS_E_; DATA.TEMP_E = TEMP_E_;
    DATA.HFLUX_XE = HFLUXE_;
    end
    DATA.Ts5D = Ts5D_; DATA.Ts3D = Ts3D_; DATA.Ts0D = Ts0D_;
    DATA.PHI  = PHI_; 
    DATA.KIN_E=KIN_E;
    % grids
    DATA.Pe = Pe; DATA.Pi = Pi; 
    DATA.Je = Je; DATA.Ji = Ji; 
    DATA.kx = kx; DATA.ky = ky; DATA.z = z;
    DATA.x  = x;  DATA.y  = y;
    DATA.ikx0 = ikx0; DATA.iky0 = iky0;
    DATA.Nx = Nx; DATA.Ny = Ny; DATA.Nz = Nz; DATA.Nkx = Nkx; DATA.Nky = Nky; 
    DATA.Pmaxe = numel(Pe); DATA.Pmaxi = numel(Pi); DATA.Jmaxe = numel(Je); DATA.Jmaxi = numel(Ji);
    DATA.dir      = DIRECTORY;
    DATA.localdir = DIRECTORY;
    DATA.param_title=['$\nu_{',DATA.CONAME,'}=$', num2str(DATA.NU), ...
        ', $\kappa_N=$',num2str(DATA.K_N),', $\kappa_T=$',num2str(DATA.K_T),...
        ', $L=',num2str(DATA.L),'$, $N=',...
        num2str(DATA.Nx),'$, $(P,J)=(',num2str(DATA.PMAXI),',',...
        num2str(DATA.JMAXI),')$,',' $\mu_{hd}=$(',num2str(DATA.MUx),...
        ',',num2str(DATA.MUy),')'];
    JOBNUM = LASTJOB;

    filename = sprintf([DIRECTORY,'outputs_%.2d.h5'],JOBNUM);
end
end