diff --git a/matlab/compile_results.m b/matlab/compile_results.m
index 17b9a01892ae518e96bd9e84c8addadd131b0d49..f6ccd44ba8f871c5005f278bad5746eaf993885f 100644
--- a/matlab/compile_results.m
+++ b/matlab/compile_results.m
@@ -45,10 +45,18 @@ DATA.outfilenames = {};
 ii = 1;
 while(CONTINUE)
     filename = sprintf([DIRECTORY,'outputs_%.2d.h5'],JOBNUM);
+    % Check presence and jobnummax
     if (exist(filename, 'file') == 2 && JOBNUM <= JOBNUMMAX)
         DATA.outfilenames{ii} = filename;
+        %test if it is corrupted or currently running
+        try
+            openable = ~isempty(h5read(filename,'/data/var3d/time'));
+        catch
+            openable = 0
+        end
+        if openable
         %% load results %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-        disp(['Loading ',filename])
+        disp(sprintf('Loading ID %.2d (%s)',JOBNUM,filename));
         % Loading from output file
         CPUTIME   = h5readatt(filename,'/data/input','cpu_time');
         DT_SIM    = h5readatt(filename,'/data/input','dt');
@@ -219,6 +227,7 @@ while(CONTINUE)
         LASTJOB  = JOBNUM;
         Pe_old = Pe_new; Je_old = Je_new;
         Pi_old = Pi_new; Ji_old = Ji_new;
+        end
     elseif (JOBNUM > JOBNUMMAX)
         CONTINUE = 0;
         disp(['found ',num2str(JOBFOUND),' results']);
diff --git a/matlab/compute/compute_3D_zpinch_growth_rate.m b/matlab/compute/compute_3D_zpinch_growth_rate.m
index c89597b199ae13fc9730969a80577c60710c94ca..76340d0737f32c4025f8c8c59814c644f84a114c 100644
--- a/matlab/compute/compute_3D_zpinch_growth_rate.m
+++ b/matlab/compute/compute_3D_zpinch_growth_rate.m
@@ -4,7 +4,7 @@ FIGURE.FIGNAME = ['growth_rate_kx=0_ky=0_planes',DATA.PARAMS];
 t   = DATA.Ts3D;
 [~,its] = min(abs(t-TRANGE(1)));
 [~,ite] = min(abs(t-TRANGE(end)));
-nkx = DATA.Nkx; nky = DATA.Nky; nkz = DATA.Nz/2;
+nkx = DATA.Nkx; nky = DATA.Nky; nt = numel(t);
 % Remove AA part
 if DATA.Nx > 1
     ikxnz = abs(DATA.PHI(1,:,1,1)) > 0;
@@ -15,19 +15,27 @@ ikynz = abs(DATA.PHI(:,1,1,1)) > 0;
 
 ikynz(1) = 1; ikxnz(1) = 1; %put k=0 in the analysis
 
+% phi = fft(DATA.PHI(:,:,:,:),[],3);
 Y = fft(DATA.PHI(ikynz,ikxnz,:,:),[],3);
-phi = Y(:,:,2:2:end,:);
+phi = Y(:,:,2:2:end,:); sz_=size(phi);
+nkz = sz_(3);
+% tmp_ = ifourier_GENE(DATA.PHI(:,:,:,1)); sz_ = size(tmp_);
+% phi  = zeros(sz_(1),sz_(2),sz_(3),nt);
+% for it = 1:nt
+%    tmp_ = ifourier_GENE(DATA.PHI(:,:,:,it));
+%    phi(:,:,:,it) = fftn(tmp_);
+% end
 
 omega = zeros(nky,nkx,nkz);
 
 for ikz = 1:nkz
     for iky = 1:nky
-        for ix = 1:nkx
+        for ikx = 1:nkx
 %             omega(iy,ix,iz) = LinearFit_s(t(its:ite),squeeze(abs(phi(iy,ix,iz,its:ite))));
-            to_measure = squeeze(log(phi(iky,ix,ikz,its:ite)));
+            to_measure = squeeze(log(abs(phi(iky,ikx,ikz,its:ite))));
             tmp = polyfit(t(its:ite),to_measure(:),1);
             if ~(isnan(tmp(1)) || isinf(tmp(1)))
-                omega(iky,ix,ikz) = tmp(1);
+                omega(iky,ikx,ikz) = tmp(1);
             end
         end
     end
diff --git a/matlab/compute/compute_fa_1D.m b/matlab/compute/compute_fa_1D.m
index 1d24967649aaf29c14351c402520a18b2996613e..f8d569461615739f1bb93a576a53e4ebeef19288 100644
--- a/matlab/compute/compute_fa_1D.m
+++ b/matlab/compute/compute_fa_1D.m
@@ -17,7 +17,7 @@ xmin = min(abs(x));
 [~, iky0] = min(abs(data.ky));
 kx_ = data.kx; ky_ = data.ky;
 
-switch options.SPECIE
+switch options.SPECIES
     case 'e'
         Napj_     = data.Nepj;
         parray    = double(data.Pe);
diff --git a/matlab/compute/compute_fa_2D.m b/matlab/compute/compute_fa_2D.m
index a9c099318a1e3ccf7e3a17b46009e592e5beb5ba..8d9758e0b27a106faad7bce9a9bce4058ee67f57 100644
--- a/matlab/compute/compute_fa_2D.m
+++ b/matlab/compute/compute_fa_2D.m
@@ -15,7 +15,7 @@ FaM = @(s,x) exp(-s.^2-x);
 [~, iky0] = min(abs(data.ky));
 kx_ = data.kx; ky_ = data.ky;
 
-switch options.SPECIE
+switch options.SPECIES
     case 'e'
         Napj_     = data.Nepj;
         parray    = double(data.Pe);
diff --git a/matlab/compute/mode_growth_meter.m b/matlab/compute/mode_growth_meter.m
index dda3387ecda1f1598d7d0b95dc52f4fc88ccc3aa..076058a77e13513ab248ecdd88dbd45adff55642 100644
--- a/matlab/compute/mode_growth_meter.m
+++ b/matlab/compute/mode_growth_meter.m
@@ -2,12 +2,16 @@ function [FIGURE] = mode_growth_meter(DATA,OPTIONS)
 
 NORMALIZED = OPTIONS.NORMALIZED;
 Nma   = OPTIONS.NMA; %Number moving average
+d     = OPTIONS.fftz.flag;  % To add spectral evolution of z (useful for 3d zpinch)
 
+    
 switch OPTIONS.iz
     case 'avg'
         field = squeeze(mean(DATA.PHI,3));
+        zstrcomp = 'z-avg';
     otherwise
         field = squeeze(DATA.PHI(:,:,OPTIONS.iz,:));
+        zstrcomp = ['z=',DATA.z(OPTIONS.iz)];
 end
 
 FRAMES = zeros(size(OPTIONS.TIME));
@@ -18,16 +22,18 @@ FRAMES = unique(FRAMES);
 t  = DATA.Ts3D(FRAMES);
 
 % time window where we measure the growth
-it1 = floor(numel(t)/2);
-it2 = numel(t);
+TW = [OPTIONS.KY_TW; OPTIONS.KX_TW];
 
 [~,ikzf] = max(mean(squeeze(abs(field(1,:,FRAMES))),2));
 
 FIGURE.fig = figure; set(gcf, 'Position',  [100 100 1200 700])
 FIGURE.FIGNAME = 'mode_growth_meter';
 for i = 1:2
-    MODES_SELECTOR = i; %(2:Zonal, 1: NZonal)
+    MODES_SELECTOR = i; %(1:kx=0; 2:ky=0)
 
+    [~,it1] = min(abs(t-TW(i,1)));
+    [~,it2] = min(abs(t-TW(i,2)));
+    
     if MODES_SELECTOR == 2
         switch OPTIONS.ik
             case 'sum'
@@ -68,13 +74,6 @@ for i = 1:2
     end
 
     MODES = 1:numel(k);
-    % MODES = zeros(size(OPTIONS.K2PLOT));
-    % for i = 1:numel(OPTIONS.K2PLOT)
-    %     [~,MODES(i)] =min(abs(OPTIONS.K2PLOT(i)-k));
-    % end
-
-
-    % plt = @(x,ik) abs(squeeze(x(1,ik,iz,FRAMES)))./max(abs(squeeze(x(1,ik,iz,FRAMES))));
 
     gamma = MODES;
     amp   = MODES;
@@ -89,15 +88,17 @@ for i = 1:2
     mod2plot = [2:min(Nmax,OPTIONS.NMODES+1)];
     clr_ = jet(numel(mod2plot));
     %plot
-    subplot(2,3,1+3*(i-1))
+%     subplot(2+d,3,1+3*(i-1))
+    FIGURE.axes(1+3*(i-1)) = subplot(2+d,3,1+3*(i-1),'parent',FIGURE.fig);
         [YY,XX] = meshgrid(t,fftshift(k));
         pclr = pcolor(XX,YY,abs(plt(fftshift(field,MODES_SELECTOR),1:numel(k))));set(pclr, 'edgecolor','none');  hold on;
         set(gca,'YDir','normal')
     %     xlim([t(1) t(end)]); %ylim([1e-5 1])
         xlabel(['$',kstr,'\rho_s$']); ylabel('$t c_s /\rho_s$');
-        title(MODESTR)  
+        title([MODESTR,', ',zstrcomp])  
 
-    subplot(2,3,2+3*(i-1))
+%     subplot(2+d,3,2+3*(i-1))
+    FIGURE.axes(2+3*(i-1)) = subplot(2+d,3,2+3*(i-1),'parent',FIGURE.fig);
         for i_ = 1:numel(mod2plot)
             semilogy(t,plt(field,MODES(mod2plot(i_))),'color',clr_(i_,:)); hold on;
     %         semilogy(t,exp(gamma(i_).*t+amp(i_)),'--k')
@@ -112,7 +113,8 @@ for i = 1:2
         xlabel('$t c_s /\rho_s$'); ylabel(['$|\phi_{',kstr,'}|$']);
         title('Measure time window')
 
-    subplot(2,3,3+3*(i-1))
+%     subplot(2+d,3,3+3*(i-1))
+    FIGURE.axes(3+3*(i-1)) = subplot(2+d,3,3+3*(i-1),'parent',FIGURE.fig);
         plot(k(MODES),gamma,...
                 'DisplayName',['(',num2str(DATA.Pmaxi-1),',',num2str(DATA.Jmaxi-1),')']); hold on;
         for i_ = 1:numel(mod2plot)
@@ -124,4 +126,60 @@ for i = 1:2
         xlabel(['$',kstr,'\rho_s$']); ylabel('$\gamma$');
         title('Growth rates')
 end
+
+if d
+    [~,ikx] = min(abs(DATA.kx-OPTIONS.fftz.kx));
+    [~,iky] = min(abs(DATA.ky-OPTIONS.fftz.ky));
+    sz_=size(DATA.PHI);nkz = sz_(3)/2;
+    k = [(0:nkz/2), (-nkz/2+1):-1]/DATA.Npol;
+    % Spectral treatment of z-dimension
+    Y = fft(DATA.PHI(iky,ikx,:,:),[],3);
+    phi = squeeze(Y(1,1,2:2:end,:)); 
+    
+    gamma = zeros(nkz);
+    for ikz = 1:nkz
+        to_measure = squeeze(log(abs(phi(ikz,it1:it2))));
+        tmp = polyfit(t(it1:it2),to_measure(:),1);
+        if ~(isnan(tmp(1)) || isinf(tmp(1)))
+            gamma(ikz) = tmp(1);
+        end
+    end
+     %plot
+    MODES    = 1:numel(k);
+    mod2plot = [2:2:min(nkz,OPTIONS.NMODES+1)];
+    clr_     = jet(numel(mod2plot));
+    subplot(3,3,7)
+        [YY,XX] = meshgrid(t,fftshift(k));
+        pclr = pcolor(XX,YY,abs(phi));set(pclr, 'edgecolor','none');  hold on;
+        set(gca,'YDir','normal')
+    %     xlim([t(1) t(end)]); %ylim([1e-5 1])
+        xlabel('$k_\parallel$'); ylabel('$t c_s /\rho_s$');
+        title(['$k_x=$',num2str(DATA.kx(ikx)),', $k_y=$',num2str(DATA.ky(iky))]);  
+
+    subplot(3,3,8)
+        for i_ = 1:numel(mod2plot)
+            im_ = MODES(mod2plot(i_));
+            semilogy(t,abs(phi(im_,:)),'color',clr_(i_,:)); hold on;
+        end
+        %plot the time window where the gr are measured
+        plot(t(it1)*[1 1],[1e-10 1],'--k')
+        plot(t(it2)*[1 1],[1e-10 1],'--k')
+        xlim([t(1) t(end)]); %ylim([1e-5 1])
+        xlabel('$t c_s /\rho_s$'); ylabel(['$|\phi_{',kstr,'}|$']);
+        title('Measure time window')
+
+    subplot(3,3,9)
+        plot(k(MODES),gamma,...
+                'DisplayName',['(',num2str(DATA.Pmaxi-1),',',num2str(DATA.Jmaxi-1),')']); hold on;
+        for i_ = 1:numel(mod2plot)
+            plot(k(MODES(mod2plot(i_))),gamma(mod2plot(i_)),'x','color',clr_(i_,:));
+        end
+        if MODES_SELECTOR == 2
+            plot(k(ikzf),gamma(ikzf),'ok');
+        end
+        xlabel(['$k_\parallel$']); ylabel('$\gamma$');
+        title('Growth rates')   
+    
+end
+
 end
\ No newline at end of file
diff --git a/matlab/compute/process.m b/matlab/compute/process.m
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/matlab/extract_fig_data.m b/matlab/extract_fig_data.m
index 705b7f3a80de9d067a73494cdc31b30dd4c7405c..4be8de84db0369770847a6d81944549fb9433c44 100644
--- a/matlab/extract_fig_data.m
+++ b/matlab/extract_fig_data.m
@@ -4,7 +4,7 @@
 % tw = [3000 4000];
 % tw = [4000 4500];
 % tw = [4500 5000];
-tw = [00 40000];
+tw = [400 40000];
 
 fig = gcf;
 axObjs = fig.Children;
diff --git a/matlab/load/load_gene_data.m b/matlab/load/load_gene_data.m
index 641e6dd9aff55ea85d377d20fc3c1e984c3a9e22..63554d8a6647f2bd8c4669752f8a1875c6ecc3cc 100644
--- a/matlab/load/load_gene_data.m
+++ b/matlab/load/load_gene_data.m
@@ -2,6 +2,7 @@ function [ DATA ] = load_gene_data( folder )
 %to load gene data as for HeLaZ results
 namelist      = read_namelist([folder,'parameters.dat']);
 DATA.namelist = namelist;
+DATA.folder   = folder;
 %% Grid
 coofile = 'coord.dat.h5';
 DATA.vp  = h5read([folder,coofile],'/coord/vp');
@@ -52,16 +53,24 @@ momfile = 'mom_ions.dat.h5';
 for jt = 1:numel(DATA.Ts3D)
     t = DATA.Ts3D(jt);
     [~, it] = min(abs(DATA.Ts3D-t));
-% 
-%     tmp = h5read([folder,momfile],['/mom_ions/dens/',sprintf('%10.10d',it-1)]);
-%     DATA.DENS_I(:,:,:,it) = tmp.real + 1i*tmp.imaginary;
-% % 
-%     tmp = h5read([folder,momfile],['/mom_ions/T_par/',sprintf('%10.10d',it-1)]);
-%     DATA.TPAR_I(:,:,:,it) = tmp.real + 1i*tmp.imaginary;
-% %  
-%     tmp = h5read([folder,momfile],['/mom_ions/T_perp/',sprintf('%10.10d',it-1)]);
-%     DATA.TPER_I(:,:,:,it) = tmp.real + 1i*tmp.imaginary;
-%     
+try
+    tmp = h5read([folder,momfile],['/mom_ions/dens/',sprintf('%10.10d',it-1)]);
+    DATA.DENS_I(:,:,:,it) = tmp.real + 1i*tmp.imaginary;
+catch
+    DATA.DENS_I(:,:,:,it) = 0;
+end
+try
+    tmp = h5read([folder,momfile],['/mom_ions/T_par/',sprintf('%10.10d',it-1)]);
+    DATA.TPAR_I(:,:,:,it) = tmp.real + 1i*tmp.imaginary;
+catch
+    DATA.TPAR_I(:,:,:,it) = 0;
+end
+try
+    tmp = h5read([folder,momfile],['/mom_ions/T_perp/',sprintf('%10.10d',it-1)]);
+    DATA.TPER_I(:,:,:,it) = tmp.real + 1i*tmp.imaginary;
+catch
+    DATA.TPER_I(:,:,:,it) = 0;
+end
     tmp = h5read([folder,phifile],['/field/phi/',sprintf('%10.10d',it-1)]);
     DATA.PHI(:,:,:,it) = tmp.real + 1i*tmp.imaginary;
 
diff --git a/matlab/plot/imagesc_custom.m b/matlab/plot/imagesc_custom.m
new file mode 100644
index 0000000000000000000000000000000000000000..3b57744e91760e2c17592b2ea526d358ceb38b9a
--- /dev/null
+++ b/matlab/plot/imagesc_custom.m
@@ -0,0 +1,12 @@
+function [ fig ] = imagesc_custom( XX,YY,FF)
+% CUSTOM IMAGESC this custom function is meant to be used exaclty as pcolor
+% but plotting array values in pixels (like imagesc) and not in vertices (like pcolor).
+
+fig = imagesc( XX(1,:), YY(:,1), FF);
+set(gca,'YDir','normal')        
+xticks(XX(1,:));
+% xticklabels(num2str(XX(1,:)));
+yticks(YY(:,1));
+% yticklabels(num2str(YY(:,1)));
+end
+
diff --git a/matlab/plot/plot_fa.m b/matlab/plot/plot_fa.m
index 2395489c00ae1b8ddc38d69c99c60537ff193ae9..7faeabeba38cd7a9802a46badcaa2d0dad63bbde 100644
--- a/matlab/plot/plot_fa.m
+++ b/matlab/plot/plot_fa.m
@@ -10,14 +10,14 @@ end
 if OPTIONS.ONED
     [s,x,fsa,fxa] = compute_fa_1D(DATA, OPTIONS); 
     [~,it] = min(abs(OPTIONS.T-DATA.Ts5D)); 
-    subplot(1,2,1)
+    FIGURE.ax1 = subplot(1,2,1,'parent',FIGURE.fig);
         plot(s,fsa); hold on
-        legend(OPTIONS.SPECIE)
+        legend(OPTIONS.SPECIES)
         xlabel('$v_\parallel, (\mu=0)$'); ylabel(['$\langle |f_a|^2\rangle_{xy}^{1/2}$, ',zcomp]); 
         title(DATA.param_title); 
-    subplot(1,2,2)
+    FIGURE.ax2 = subplot(1,2,2,'parent',FIGURE.fig);
         plot(x,fxa); hold on;
-        legend(OPTIONS.SPECIE)
+        legend(OPTIONS.SPECIES)
         xlabel('$\mu, (v_\parallel=0)$'); ylabel(['$\langle |f_a|^2\rangle_{xy}^{1/2}$, ',zcomp]);
         if numel(it) == 1
             title(['t=',num2str(DATA.Ts5D(it))]);
@@ -26,6 +26,7 @@ if OPTIONS.ONED
         end
 
 else
+    FIGURE.ax1 = subplot(1,1,1,'parent',FIGURE.fig);
     [SS,XX,FFa] = compute_fa_2D(DATA, OPTIONS);  sz = size(SS); FFa = FFa';
     [~,it] = min(abs(OPTIONS.T-DATA.Ts5D)); 
         switch OPTIONS.PLT_FCT
@@ -47,13 +48,13 @@ else
             xlim([min(OPTIONS.SPAR) max(OPTIONS.SPAR)]);
             ylim(sqrt(max(OPTIONS.XPERP))*[-1 1]);
         end
-        legend(['$\langle |f_',OPTIONS.SPECIE,'|^2\rangle_{xy}^{1/2}$',zcomp])
+        legend(['$\langle |f_',OPTIONS.SPECIES,'|^2\rangle_{xy}^{1/2}$',zcomp])
         if numel(it) == 1
-            title(['HeLaZ''$\langle |f_',OPTIONS.SPECIE...
+            title(['HeLaZ''$\langle |f_',OPTIONS.SPECIES...
                 ,'|^2\rangle_{xy}^{1/2}$',zcomp...
                 ,', $t=$[',sprintf('%1.1f',DATA.Ts5D(it)),']']);
         else
-            title(['HeLaZ''$\langle |f_',OPTIONS.SPECIE,...
+            title(['HeLaZ''$\langle |f_',OPTIONS.SPECIES,...
                 '|^2\rangle_{xy}^{1/2}$',zcomp,...
                 ', average $t\in$[',sprintf('%1.1f',DATA.Ts5D(min(it))),',',sprintf('%1.1f',DATA.Ts5D(max(it))),']']);
         end
diff --git a/matlab/plot/plot_fa_gene.m b/matlab/plot/plot_fa_gene.m
index 9743d80a3615d5b8e2a38239985c97851069b588..edcc073812d1f10b7d2edc2e1ae1fbca171d481d 100644
--- a/matlab/plot/plot_fa_gene.m
+++ b/matlab/plot/plot_fa_gene.m
@@ -1,7 +1,7 @@
-function plot_fa_gene(OPTIONS)
+function [FIGURE] =  plot_fa_gene(OPTIONS)
 folder = OPTIONS.folder;
-TIMES  = OPTIONS.times;
-specie = OPTIONS.specie;
+TIMES  = OPTIONS.T;
+SPECIES = OPTIONS.SPECIES;
 PLT_FCT= OPTIONS.PLT_FCT;
 
 file = 'coord.dat.h5';
@@ -25,7 +25,7 @@ end
 file = 'vsp.dat.h5';
 time  = h5read([folder,file],'/vsp/time');
 
-fig = figure;
+FIGURE.fig = figure;
 
 G_t = [];
 Gdata = 0;
@@ -38,30 +38,32 @@ end
 Gdata = Gdata ./ numel(TIMES);
 
 if OPTIONS.ONED
-    switch specie
+    switch SPECIES
         case 'e'
         FFa    = zcomp(Gdata(:,:,:,2));
         FFa    = abs(FFa)./max(max(abs(FFa)));
-    subplot(1,2,1)
+    FIGURE.ax1 = subplot(1,2,1,'parent',FIGURE.fig);
         plot(vp,FFa(:,im0)); hold on;
-    subplot(1,2,2)
+    FIGURE.ax2 = subplot(1,2,2,'parent',FIGURE.fig);
         plot(mu,FFa(iv0,:)); hold on;
         case 'i'
         FFa   = zcomp(Gdata(:,:,:,1));    
         FFa    = abs(FFa)./max(max(abs(FFa)));
     end
 
-    subplot(1,2,1)
+    FIGURE.ax1 = subplot(1,2,1,'parent',FIGURE.fig);
         plot(vp,FFa(:,im0)); hold on;
-        legend(specie)
+        legend(SPECIES)
         xlabel('$v_\parallel, (\mu=0)$'); ylabel('$\langle |f_a|^2\rangle_{xy}^{1/2}$'); 
 
-    subplot(1,2,2)
+    FIGURE.ax2 = subplot(1,2,2,'parent',FIGURE.fig);
         plot(mu,FFa(iv0,:)); hold on;
-        legend(specie)
-        xlabel('$\mu, (v_\parallel=0)$'); ylabel('$\langle |f_a|^2\rangle_{xy}^{1/2}$'); 
+        legend(SPECIES)
+        xlabel('$\mu, (v_\parallel=0)$'); %ylabel('$\langle |f_a|^2\rangle_{xy}^{1/2}$'); 
+        xticks(FIGURE.ax2,[]);
 else
-switch specie
+    FIGURE.ax1 = subplot(1,1,1,'parent',FIGURE.fig);
+switch SPECIES
     case 'e'
     name  = '$f_e(v_\parallel,\mu_p)$';
     FFa    = zcomp(squeeze(Gdata(:,:,:,2)));
diff --git a/matlab/plot/plot_radial_transport_and_spacetime.m b/matlab/plot/plot_radial_transport_and_spacetime.m
index ca11c1fd778ebf6406932882f3054f9bd35033ac..e37e1073dd2761be260846e32d2c2c4bcfba17b4 100644
--- a/matlab/plot/plot_radial_transport_and_spacetime.m
+++ b/matlab/plot/plot_radial_transport_and_spacetime.m
@@ -1,4 +1,4 @@
-function [FIGURE] = plot_radial_transport_and_spacetime(DATA, OPTIONS)
+function [FIGURE] = plot_radial_transport_and_spacetime(DATA, OPTIONS,CODE)
     %Compute steady radial transport
     tend = OPTIONS.TAVG_1; tstart = OPTIONS.TAVG_0;
     [~,its0D] = min(abs(DATA.Ts0D-tstart));
@@ -31,51 +31,41 @@ function [FIGURE] = plot_radial_transport_and_spacetime(DATA, OPTIONS)
 %     disp(['Q_avg=',sprintf('%2.2e',Qx_avg),'+-',sprintf('%2.2e',Qx_err)]);
     %% computations
 
-    % Compute Gamma from ifft matlab
-    Gx = zeros(DATA.Ny,DATA.Nx,numel(DATA.Ts3D));
-%     for it = 1:numel(DATA.Ts3D)
-%         for iz = 1:DATA.Nz
-%             Gx(:,:,it)  = Gx(:,:,it) + ifourier_GENE(-1i*KY.*(DATA.PHI(:,:,iz,it)))...
-%                           .*ifourier_GENE(DATA.DENS_I(:,:,iz,it));
-%         end
-%         Gx(:,:,it)  = Gx(:,:,it)/DATA.Nz;
-%     end
-    Gx_t_mtlb = squeeze(mean(mean(Gx,1),2)); 
-    % Compute Heat flux from ifft matlab
-    Qx = zeros(DATA.Ny,DATA.Nx,numel(DATA.Ts3D));
-%     for it = 1:numel(DATA.Ts3D)
-%         for iz = 1:DATA.Nz
-%             Qx(:,:,it)  = Qx(:,:,it) + ifourier_GENE(-1i*KY.*(DATA.PHI(:,:,iz,it)))...
-%                           .*ifourier_GENE(DATA.TEMP_I(:,:,iz,it));
-%         end
-%         Qx(:,:,it)  = Qx(:,:,it)/DATA.Nz;
-%     end
-    Qx_t_mtlb = squeeze(mean(mean(Qx,1),2)); 
-    % zonal vs nonzonal energies for phi(t)
-
+    % Compute zonal and non zonal energies
     E_Zmode_SK       = zeros(1,Ns3D);
     E_NZmode_SK      = zeros(1,Ns3D);
     for it = 1:numel(DATA.Ts3D)
         E_Zmode_SK(it)   = squeeze(DATA.ky(ikzf).^2.*abs(squeeze(f_avg_z(ikzf,1,it))).^2);
         E_NZmode_SK(it)  = squeeze(sum(sum(((1+KX.^2+KY.^2).*abs(squeeze(f_avg_z(:,:,it))).^2.*(KY~=0)))));
     end
-
+    % Compute thermodynamic entropy Eq.(5) Navarro et al. 2012 PoP
+    % 1/2 sum_p sum_j Napj^2(k=0) (avg z)
+    switch CODE
+        case 'GYACOMO'
+        Nipjz = sum(sum(sum(sum(conj(DATA.Nipj).*DATA.Nipj))));
+        ff = trapz(DATA.z,Nipjz,5);
+        E_TE = 0.5*squeeze(ff);
+        % Compute electrostatic energy
+        E_ES = zeros(size(DATA.Ts5D));
+        bi = sqrt(KX.^2+KY.^2)*DATA.sigma_i*sqrt(2*DATA.tau_i); %argument of the kernel
+        for it5D = 1:numel(DATA.Ts5D)
+            [~,it3D] = min(abs(DATA.Ts3D-DATA.Ts5D(it5D)));
+            for in = 1:DATA.Jmaxi
+                Knphi = kernel(in-1,bi).*squeeze(trapz(DATA.z,DATA.PHI(:,:,:,it3D),3));
+                Ni0n_z= squeeze(trapz(DATA.z,DATA.Nipj(1,in,:,:,:,it5D),5));
+                E_ES(it5D) = 0.5*sum(sum(abs(conj(Knphi).*Ni0n_z)));
+            end
+        end
+        otherwise
+            E_TE = 0; E_ES =0; DATA.Ts5D =[0 1];
+    end
 
 %% Figure    
 mvm = @(x) movmean(x,OPTIONS.NMVA);
-    FIGURE.fig = figure; FIGURE.FIGNAME = ['ZF_transport_drphi','_',DATA.PARAMS]; set(gcf, 'Position',  [500, 1000, 1000, 600])
-    subplot(311)
-%     yyaxis left
+    FIGURE.fig = figure; FIGURE.FIGNAME = ['ZF_transport_drphi','_',DATA.PARAMS]; %set(gcf, 'Position',  [500, 1000, 1000, 600])
+    FIGURE.ax1 = subplot(3,1,1,'parent',FIGURE.fig);
         plot(mvm(DATA.Ts0D),mvm(DATA.PGAMMA_RI*SCALE),'DisplayName','$\langle n_i \partial_y\phi \rangle_y$'); hold on;
-%         plot(mvm(DATA.Ts3D),mvm(Gx_t_mtlb),'DisplayName','matlab comp.'); hold on;
-%         plot(DATA.Ts0D(its0D:ite0D),ones(ite0D-its0D+1,1)*Gx_infty_avg, '-k',...
-%             'DisplayName',['$\Gamma^{\infty} = $',num2str(Gx_infty_avg),'$\pm$',num2str(Gx_infty_std)]);
-%         ylabel('$\Gamma_x$')
-%         ylim([0,5*abs(Gx_infty_avg)]); 
-%         xlim([DATA.Ts0D(1),DATA.Ts0D(end)]);
-%     yyaxis right
         plot(mvm(DATA.Ts0D),mvm(DATA.HFLUX_X*SCALE),'DisplayName','$\langle n_i \partial_y\phi \rangle_y$'); hold on;
-%         plot(mvm(DATA.Ts3D),mvm(Qx_t_mtlb),'DisplayName','matlab comp.'); hold on;
         ylabel('Transport')  
         if(~isnan(Qx_infty_avg))
         plot(DATA.Ts0D(its0D:ite0D),ones(ite0D-its0D+1,1)*Qx_infty_avg, '-k',...
@@ -92,15 +82,26 @@ mvm = @(x) movmean(x,OPTIONS.NMVA);
     grid on; set(gca,'xticklabel',[]); 
     title({DATA.param_title,...
         ['$\Gamma^{\infty} = $',num2str(Gx_infty_avg),'$, Q^{\infty} = $',num2str(Qx_infty_avg)]});
-    %% radial shear radial profile
-        % computation
+    
+ %% Free energy    
+    FIGURE.ax2 = subplot(3,1,2,'parent',FIGURE.fig);
+    yyaxis left
+        plot(DATA.Ts5D,E_TE,'DisplayName','$\epsilon_f$'); hold on;
+        ylabel('Entropy');%('$\epsilon_f$')
+    yyaxis right
+        plot(DATA.Ts5D,E_ES,'DisplayName','$\epsilon_\phi$');
+        ylabel('ES energy');%('$\epsilon_\phi$')
+        xlim([DATA.Ts5D(1), DATA.Ts5D(end)]);
+        xlabel('$t c_s/R$'); grid on; set(gca,'xticklabel',[]);% xlim([0 500]);
+%% radial shear radial profile
+    % computation
     Ns3D = numel(DATA.Ts3D);
     [KX, KY] = meshgrid(DATA.kx, DATA.ky);
     plt = @(x) mean(x(:,:,:),1);
     kycut = max(DATA.ky);
     kxcut = max(DATA.kx);
     LP = (abs(KY)<kycut).*(abs(KX)<kxcut); %Low pass filter
-    
+
     OPTIONS.NAME = OPTIONS.ST_FIELD;
     OPTIONS.PLAN = 'xy';
     OPTIONS.COMP = 'avg';
@@ -110,7 +111,7 @@ mvm = @(x) movmean(x,OPTIONS.NMVA);
     f2plot = toplot.FIELD;
     dframe = ite3D - its3D;
     clim = max(max(max(abs(plt(f2plot(:,:,:))))));
-    subplot(313)
+    FIGURE.ax3 = subplot(3,1,3,'parent',FIGURE.fig);
         [TY,TX] = meshgrid(DATA.x,DATA.Ts3D(toplot.FRAMES));
         pclr = pcolor(TX,TY,squeeze(plt(f2plot))'); 
         set(pclr, 'edgecolor','none'); 
@@ -126,21 +127,21 @@ mvm = @(x) movmean(x,OPTIONS.NMVA);
         subplot(311)
         plot(DATA.Ts3D,squeeze(mean(plt(f2plot),1)));
     end
-%% Zonal vs NZonal energies    
-    subplot(312)
-    it0 = 1; itend = Ns3D;
-    trange = toplot.FRAMES;
-    plt1 = @(x) x;%-x(1);
-    plt2 = @(x) x./max((x(:)));
-    toplot = sum(squeeze(plt(f2plot)).^2,1); %ST from before
-%     plty = @(x) x(500:end)./max(squeeze(x(500:end)));
-        yyaxis left
-%         plot(plt1(DATA.Ts3D(trange)),plt2(E_Zmode_SK(trange)),'DisplayName','$k_{zf}^2|\phi_{kzf}|^2$');
-        plot(plt1(DATA.Ts3D(trange)),plt2(toplot(:)),'DisplayName','Sum $A^2$');
-        ylim([-0.1, 1.5]); ylabel('$E_{Z}$')
-        yyaxis right
-        plot(plt1(DATA.Ts3D(trange)),plt2(E_NZmode_SK(trange)),'DisplayName','$(1+k^2)|\phi^k|^2$');
-        xlim([DATA.Ts3D(it0), DATA.Ts3D(itend)]);
-        ylim([-0.1, 1.5]); ylabel('$E_{NZ}$')
-        xlabel('$t c_s/R$'); grid on; set(gca,'xticklabel',[]);% xlim([0 500]);
+ %% Zonal vs NZonal energies    
+%     subplot(312)
+%     it0 = 1; itend = Ns3D;
+%     trange = toplot.FRAMES;
+%     plt1 = @(x) x;%-x(1);
+%     plt2 = @(x) x./max((x(:)));
+%     toplot = sum(squeeze(plt(f2plot)).^2,1); %ST from before
+% %     plty = @(x) x(500:end)./max(squeeze(x(500:end)));
+%         yyaxis left
+% %         plot(plt1(DATA.Ts3D(trange)),plt2(E_Zmode_SK(trange)),'DisplayName','$k_{zf}^2|\phi_{kzf}|^2$');
+%         plot(plt1(DATA.Ts3D(trange)),plt2(toplot(:)),'DisplayName','Sum $A^2$');
+%         ylim([-0.1, 1.5]); ylabel('$E_{Z}$')
+%         yyaxis right
+%         plot(plt1(DATA.Ts3D(trange)),plt2(E_NZmode_SK(trange)),'DisplayName','$(1+k^2)|\phi^k|^2$');
+%         xlim([DATA.Ts3D(it0), DATA.Ts3D(itend)]);
+%         ylim([-0.1, 1.5]); ylabel('$E_{NZ}$')
+%         xlabel('$t c_s/R$'); grid on; set(gca,'xticklabel',[]);% xlim([0 500]);
 end
\ No newline at end of file
diff --git a/matlab/plot/spectrum_1D.m b/matlab/plot/spectrum_1D.m
index c0669f239ce4bb72a9a32e4cad89cf1b7375b0e3..0bf0d8e1e127e58aecb70f7be73c6ae79482c708 100644
--- a/matlab/plot/spectrum_1D.m
+++ b/matlab/plot/spectrum_1D.m
@@ -66,8 +66,7 @@ end
 
 if ~PLOT2D
     set(gcf, 'Position',  [20 50 1200 500])
-    subplot(1,2,1)
-
+    FIGURE.ax1 = subplot(1,2,1,'parent',FIGURE.fig);
     k     = data.ky;
     xname = '$k_y$';
 
@@ -111,7 +110,7 @@ if ~PLOT2D
 %     legend('show','Location','eastoutside')
     xlabel(xname); ylabel(ynamecx)
 
-    subplot(1,2,2)
+    FIGURE.ax2 = subplot(1,2,2,'parent',FIGURE.fig);
 
     k     = data.kx;
     xname = '$k_x$';
diff --git a/matlab/process_field_v2.m b/matlab/process_field_v2.m
index 48122855a277532ef8f9aac340e42cd1f56dfa65..f744d7e49b760d42bbcaedee4ec31dd00ac3e1d5 100644
--- a/matlab/process_field_v2.m
+++ b/matlab/process_field_v2.m
@@ -10,7 +10,7 @@ end
 FRAMES = unique(FRAMES);
 %% Setup the plot geometry
 [KX, KY] = meshgrid(DATA.kx, DATA.ky);
-directions = {'x','y','z'};
+directions = {'y','x','z'};
 Nx = DATA.Nx; Ny = DATA.Ny; Nz = DATA.Nz; Nt = numel(FRAMES);
 POLARPLOT = OPTIONS.POLARPLOT;
 LTXNAME = OPTIONS.NAME;
@@ -39,6 +39,14 @@ switch OPTIONS.PLAN
         XNAME = '$k_y$'; YNAME = '$z$';
         [Y,X] = meshgrid(DATA.z,DATA.ky);
         REALP = 0; COMPDIM = 2; POLARPLOT = 0; SCALE = 0;
+    case 'sx'
+        XNAME = '$v_\parallel$'; YNAME = '$\mu$';
+        [Y,X] = meshgrid(OPTIONS.XPERP,OPTIONS.SPAR);
+        REALP = 1; COMPDIM = 3; POLARPLOT = 0; SCALE = 0;
+        for i = 1:numel(OPTIONS.TIME)
+            [~,FRAMES(i)] =min(abs(OPTIONS.TIME(i)-DATA.Ts5D));
+        end
+        FRAMES = unique(FRAMES); Nt = numel(FRAMES);
 end
 Xmax_ = max(max(abs(X))); Ymax_ = max(max(abs(Y)));
 Lmin_ = min([Xmax_,Ymax_]);
@@ -66,27 +74,28 @@ else
 end
 %% Process the field to plot
 % short term writing --
-b_e = DATA.sigma_e*sqrt(2*DATA.tau_e)*sqrt(KX.^2+KY.^2);
-adiab_e = kernel(0,b_e);
-pol_e        = kernel(0,b_e).^2;
-for n = 1:DATA.Jmaxe
-    adiab_e = adiab_e + kernel(n,b_e).^2;
-    pol_e   = pol_e + kernel(n,b_e).^2;
-end
-adiab_e = DATA.q_e/DATA.tau_e .* adiab_e;
-pol_e   = DATA.q_e^2/DATA.tau_e * (1 - pol_e);
-
-b_i = DATA.sigma_i*sqrt(2*DATA.tau_i)*sqrt(KX.^2+KY.^2);
-adiab_i = kernel(0,b_i);
-pol_i        = kernel(0,b_i).^2;
-for n = 1:DATA.Jmaxi
-    adiab_i = adiab_i + kernel(n,b_i).^2;
-    pol_i   = pol_i + kernel(n,b_i).^2;
-end
-pol_i      = DATA.q_i^2/DATA.tau_i * (1 - pol_i);
-adiab_i    = DATA.q_i/DATA.tau_i .* adiab_i;
-poisson_op = (pol_i + pol_e);
-
+% b_e = DATA.sigma_e*sqrt(2*DATA.tau_e)*sqrt(KX.^2+KY.^2);
+% adiab_e = kernel(0,b_e);
+% pol_e        = kernel(0,b_e).^2;
+% for n = 1:DATA.Jmaxe
+%     adiab_e = adiab_e + kernel(n,b_e).^2;
+%     pol_e   = pol_e + kernel(n,b_e).^2;
+% end
+% adiab_e = DATA.q_e/DATA.tau_e .* adiab_e;
+% pol_e   = DATA.q_e^2/DATA.tau_e * (1 - pol_e);
+% 
+% b_i = DATA.sigma_i*sqrt(2*DATA.tau_i)*sqrt(KX.^2+KY.^2);
+% adiab_i = kernel(0,b_i);
+% pol_i        = kernel(0,b_i).^2;
+% for n = 1:DATA.Jmaxi
+%     adiab_i = adiab_i + kernel(n,b_i).^2;
+%     pol_i   = pol_i + kernel(n,b_i).^2;
+% end
+% pol_i      = DATA.q_i^2/DATA.tau_i * (1 - pol_i);
+% adiab_i    = DATA.q_i/DATA.tau_i .* adiab_i;
+% poisson_op = (pol_i + pol_e);
+adiab_e =0; adiab_i =0; poisson_op=1;
+SKIP_COMP = 0; % Turned on only for kin. distr. func. plot
 % --
 switch OPTIONS.COMP
     case 'avg'
@@ -247,11 +256,34 @@ switch OPTIONS.NAME
             end
             FLD_(:,:,it)= squeeze(compr(tmp(1:DATA.Nky,1:DATA.Nkx,:)));
         end     
+    case 'f_i'
+        SKIP_COMP = 1;
+        shift_x = @(x) x; shift_y = @(y) y;
+        NAME = 'fi'; OPTIONS.SPECIE = 'i';
+        for it = 1:numel(FRAMES)
+            OPTIONS.T = DATA.Ts5D(FRAMES(it));
+            OPTIONS.Z = OPTIONS.COMP;
+            [~,~,FIELD(:,:,it)] = compute_fa(DATA,OPTIONS);
+        end  
+    case 'f_e'
+        SKIP_COMP = 1;
+        shift_x = @(x) x; shift_y = @(y) y;
+        NAME = 'fe'; OPTIONS.SPECIE = 'e';
+        [~,it0_] =min(abs(OPTIONS.TIME(1)-DATA.Ts5D));
+        [~,it1_]=min(abs(OPTIONS.TIME(end)-DATA.Ts5D));
+        dit_ = 1;%ceil((it1_-it0_+1)/10); 
+        FRAMES = it0_:dit_:it1_;
+        iz = 1;
+        for it = 1:numel(FRAMES)
+            OPTIONS.T = DATA.Ts5D(FRAMES(it));
+            [~,~,FIELD(:,:,it)] = compute_fa(DATA,OPTIONS);
+        end  
     otherwise
         disp('Fieldname not recognized');
         return
 end
 % Process the field according to the 2D plane and the space (real/cpx)
+if ~SKIP_COMP
 if COMPDIM == 3
     for it = 1:numel(FRAMES)
         tmp = squeeze(compr(OPE_.*FLD_(:,:,:,it)));
@@ -265,11 +297,12 @@ else
     end
     for it = 1:numel(FRAMES)
         for iz = 1:numel(DATA.z)
-            tmp(:,:,iz) = squeeze(process(OPE_.*FLD_(:,:,:,it)));
+            tmp(:,:,iz) = squeeze(process(OPE_.*FLD_(:,:,iz,it)));
         end
         FIELD(:,:,it) = squeeze(compr(tmp));
     end                
 end
+end
 TOPLOT.FIELD     = FIELD;
 TOPLOT.FRAMES    = FRAMES;
 TOPLOT.X         = shift_x(X);