diff --git a/matlab/compile_results.m b/matlab/compile_results.m
index 8beff240b7b7194f9d0efd8bcb8780c4715c1b2c..50d383b3ada49c5ca740ea87839482e16f7da3a4 100644
--- a/matlab/compile_results.m
+++ b/matlab/compile_results.m
@@ -210,34 +210,34 @@ end
 
 %% Build grids
 
-Nkx = numel(kx); 
-if Nkx > 1
-    dkx = kx(2); 
-    Lx = 2*pi/dkx;   
+Nky = numel(ky); 
+if Nky > 1
+    dky = ky(2); 
+    Ly = 2*pi/dky;   
 else
-    dkx = 0;
-    Lx  = 0;   
+    dky = 0;
+    Ly  = 0;   
 end
-[~,ikx0] = min(abs(kx)); 
-Nx = 2*Nkx-1;  
-x  = linspace(-Lx/2,Lx/2,Nx+1); x = x(1:end-1);
+[~,iky0] = min(abs(ky)); 
+Ny = 2*Nky-1;  
+y  = linspace(-Ly/2,Ly/2,Ny+1); y = y(1:end-1);
 
-Nky = numel(ky);
-if Nky > 1
-    dky = ky(2);
-    Ly = 2*pi/dky;
+Nkx = numel(kx);
+if Nkx > 1
+    dkx = kx(2);
+    Lx = 2*pi/dkx;
 else
-    dky = 0;
-    Ly  = 0;
+    dkx = 0;
+    Lx  = 0;
 end    
-[~,iky0] = min(abs(ky));
-Ny = Nky;      
-y  = linspace(-Ly/2,Ly/2,Ny+1); y = y(1:end-1);
+[~,ikx0] = min(abs(kx));
+Nx = Nkx;      
+x  = linspace(-Lx/2,Lx/2,Nx+1); x = x(1:end-1);
 
 Nz = numel(z);
 
-[KY,KX] = meshgrid(ky,kx);
-KPERP2 = KY.^2+KX.^2;
+[KX,KY] = meshgrid(kx,ky);
+KPERP2 = KX.^2+KY.^2;
 %% Add everything in output structure
 % scaling
 DATA.scale = (1/Nx/Ny)^2;
diff --git a/matlab/compute/compute_3D_zpinch_growth_rate.m b/matlab/compute/compute_3D_zpinch_growth_rate.m
index 1cfeed825d85e0dc2d7235bc3e2bc7b2422afce0..3a053fa6ae60ad57daaac0652adfc894d9844b4c 100644
--- a/matlab/compute/compute_3D_zpinch_growth_rate.m
+++ b/matlab/compute/compute_3D_zpinch_growth_rate.m
@@ -7,20 +7,20 @@ t   = DATA.Ts3D;
 nkx = DATA.Nkx; nky = DATA.Nky; nkz = DATA.Nz;
 % Remove AA part
 if DATA.Nx > 1
-    ikxnz = abs(DATA.PHI(:,1,1,1)) > 0;
+    ikxnz = abs(DATA.PHI(1,:,1,1)) > 0;
 else
-    ikxnz = abs(DATA.PHI(:,1,1,1)) > -1;
+    ikxnz = abs(DATA.PHI(1,:,1,1)) > -1;
 end
-ikynz = abs(DATA.PHI(1,:,1,1)) > 0;
+ikynz = abs(DATA.PHI(:,1,1,1)) > 0;
 
-phi = fft(DATA.PHI(ikxnz,ikynz,:,:),[],3);
+phi = fft(DATA.PHI(ikynz,ikxnz,:,:),[],3);
 
-omega = zeros(nkx,nky,nkz);
+omega = zeros(nky,nkx,nkz);
 
 for iz = 1:nkz
     for iy = 1:nky
         for ix = 1:nkx
-            omega(ix,iy,iz) = LinearFit_s(t(its:ite),squeeze(abs(phi(ix,iy,iz,its:ite))));
+            omega(iy,ix,iz) = LinearFit_s(t(its:ite),squeeze(abs(phi(iy,ix,iz,its:ite))));
         end
     end
 end
@@ -34,14 +34,14 @@ poskz = kz>=0;
 kxeq0 = kx==0;
 kzeq0 = kz==0;
 
-omega = omega(poskx,posky,poskz);
+omega = omega(posky,poskx,poskz);
 
 FIGURE.fig = figure;
 nplots = OPTIONS.kxky + OPTIONS.kzkx + OPTIONS.kzky; 
 iplot = 1;
 
 if OPTIONS.kxky
-[Y_XY,X_XY] = meshgrid(ky(posky),kx(poskx));
+[X_XY,Y_XY] = meshgrid(ky(posky),kx(poskx));
 subplot(1,nplots,iplot)
     if ~OPTIONS.keq0
         toplot = squeeze(max(real(omega(:,:,:)),[],3));
diff --git a/matlab/compute/compute_fluxtube_growth_rate.m b/matlab/compute/compute_fluxtube_growth_rate.m
index b92ecbe9d8da2065017cfd5abbfc911ddbc08fce..fad8aecfae4bb2d75d83d0b704de79ed0c620f67 100644
--- a/matlab/compute/compute_fluxtube_growth_rate.m
+++ b/matlab/compute/compute_fluxtube_growth_rate.m
@@ -2,13 +2,13 @@ function [ linear_gr ] = compute_fluxtube_growth_rate(DATA, TRANGE, PLOT)
 
 % Remove AA part
 if DATA.Nx > 1
-    ikxnz = abs(DATA.PHI(:,1,1,1)) > 0;
+    ikxnz = abs(DATA.PHI(1,:,1,1)) > 0;
 else
-    ikxnz = abs(DATA.PHI(:,1,1,1)) > -1;
+    ikxnz = abs(DATA.PHI(1,:,1,1)) > -1;
 end
-ikynz = abs(DATA.PHI(1,:,1,1)) > 0;
+ikynz = abs(DATA.PHI(:,1,1,1)) > 0;
 
-phi = DATA.PHI(ikxnz,ikynz,:,:);
+phi = DATA.PHI(ikynz,ikxnz,:,:);
 t   = DATA.Ts3D;
 
 [~,its] = min(abs(t-TRANGE(1)));
@@ -22,13 +22,13 @@ for it = its+1:ite
     phi_n   = phi(:,:,:,it); 
     phi_nm1 = phi(:,:,:,it-1);
     dt      = t(it)-t(it-1);
-    ZS      = sum(sum(phi_nm1,1),3);
+    ZS      = sum(sum(phi_nm1,2),3);
    
     wl         = log(phi_n./phi_nm1)/dt;
-    w_ky(:,is) = sum(sum(wl.*phi_nm1,1),3)./ZS;
+    w_ky(:,is) = squeeze(sum(sum(wl.*phi_nm1,2),3)./ZS);
     
     for iky = 1:numel(w_ky(:,is))
-        ce(iky,is)   = abs(sum(sum(abs(w_ky(iky,is)-wl(:,iky,:)).^2.*phi_nm1(:,iky,:),1),3)./ZS(:,iky,:));
+        ce(iky,is)   = abs(sum(sum(abs(w_ky(iky,is)-wl(iky,:,:)).^2.*phi_nm1(iky,:,:),2),3)./ZS(iky,:,:));
     end
     is = is + 1;
 end
diff --git a/matlab/compute/ifourier_GENE.m b/matlab/compute/ifourier_GENE.m
index f5d98f75ede81706f721ddcb2204ee46c91c2dc9..3c3a454a2032a384d73508347e8301d7f618454e 100644
--- a/matlab/compute/ifourier_GENE.m
+++ b/matlab/compute/ifourier_GENE.m
@@ -5,43 +5,43 @@ function [ field_r ] = ifourier_GENE( field_c )
 %   comparison purpose.
 
 %% Original
-% [nx,nky,nz]=size(field_c);
-% %extend to whole ky by imposing reality condition
-% ny=2*nky-1;
-% 
-% if ny~=1
-%     %note, we need one extra point which we set to zero for the ifft 
-%     spectrumKxKyZ=zeros(nx,ny,nz);
-%     spectrumKxKyZ(:,1:nky,:)=field_c(:,:,:);
-%     spectrumKxKyZ(1,(nky+1):(ny),:)=conj(field_c(1,nky:-1:2,:));
-%     spectrumKxKyZ(2:nx,(nky+1):(ny),:)=conj(field_c(nx:-1:2,nky:-1:2,:));
-% else
-%     %pad with zeros to interpolate on fine scale
-%     ny=20;
-%     spectrumKxKyZ=zeros(nx,ny,nz);
-%     spectrumKxKyZ(:,2,:)=field_c(:,:,:);
-% end   
-% 
-% %inverse fft, symmetric as we are using real data
-% spectrumXKyZ=nx*ifft(spectrumKxKyZ,[],1);
-% field_r=ny*ifft(spectrumXKyZ,[],2,'symmetric');
-% clear spectrumKxKyZ 
-
-%% Adapted for HeLaZ representation
-[nkx,ny,nz]=size(field_c);
+[nky,nx,nz]=size(field_c);
 %extend to whole ky by imposing reality condition
-nx=2*nkx-1;
+ny=2*nky-1;
 
-%note, we need one extra point which we set to zero for the ifft 
-spectrumKxKyZ=zeros(nx,ny,nz);
-spectrumKxKyZ(1:nkx,:,:)=field_c(:,:,:);
-spectrumKxKyZ((nkx+1):(nx),1,:)=conj(field_c(nkx:-1:2,1,:));
-spectrumKxKyZ((nkx+1):(nx),2:ny,:)=conj(field_c(nkx:-1:2,ny:-1:2,:));
+if ny~=1
+    %note, we need one extra point which we set to zero for the ifft 
+    spectrumKxKyZ=zeros(ny,nx,nz);
+    spectrumKxKyZ(1:nky,:,:)=field_c(:,:,:);
+    spectrumKxKyZ((nky+1):(ny),1,:)=conj(field_c(nky:-1:2,1,:));
+    spectrumKxKyZ((nky+1):(ny),2:nx,:)=conj(field_c(nky:-1:2,nx:-1:2,:));
+else
+    %pad with zeros to interpolate on fine scale
+    ny=20;
+    spectrumKxKyZ=zeros(nx,ny,nz);
+    spectrumKxKyZ(:,2,:)=field_c(:,:,:);
+end   
 
 %inverse fft, symmetric as we are using real data
 spectrumXKyZ=nx*ifft(spectrumKxKyZ,[],1);
 field_r=ny*ifft(spectrumXKyZ,[],2,'symmetric');
 clear spectrumKxKyZ 
+
+%% Adapted for HeLaZ old representation
+% [nkx,ny,nz]=size(field_c);
+% %extend to whole ky by imposing reality condition
+% nx=2*nkx-1;
+% 
+% %note, we need one extra point which we set to zero for the ifft 
+% spectrumKxKyZ=zeros(nx,ny,nz);
+% spectrumKxKyZ(1:nkx,:,:)=field_c(:,:,:);
+% spectrumKxKyZ((nkx+1):(nx),1,:)=conj(field_c(nkx:-1:2,1,:));
+% spectrumKxKyZ((nkx+1):(nx),2:ny,:)=conj(field_c(nkx:-1:2,ny:-1:2,:));
+% 
+% %inverse fft, symmetric as we are using real data
+% spectrumXKyZ=nx*ifft(spectrumKxKyZ,[],1);
+% field_r=ny*ifft(spectrumXKyZ,[],2,'symmetric');
+% clear spectrumKxKyZ 
  
 end
 
diff --git a/matlab/compute/mode_growth_meter.m b/matlab/compute/mode_growth_meter.m
index 5dc0088697a234b24d65ec6602cd5d99aeed74e2..d0c1a9ce80f8ee8571994e42775f32d3fb397191 100644
--- a/matlab/compute/mode_growth_meter.m
+++ b/matlab/compute/mode_growth_meter.m
@@ -4,7 +4,7 @@ NORMALIZED = OPTIONS.NORMALIZED;
 Nma   = OPTIONS.NMA; %Number moving average
 t  = OPTIONS.TIME;
 iz = OPTIONS.iz;
-[~,ikzf] = max(squeeze(mean(abs(squeeze(DATA.PHI(:,1,1,:))),2)));
+[~,ikzf] = max(squeeze(mean(abs(squeeze(DATA.PHI(1,:,1,:))),2)));
 
 FRAMES = zeros(size(OPTIONS.TIME));
 
@@ -19,18 +19,18 @@ MODES_SELECTOR = i; %(1:Zonal, 2: NZonal, 3: ky=kx)
 
 if MODES_SELECTOR == 1
     if NORMALIZED
-        plt = @(x,ik) movmean(abs(squeeze(x(ik,1,iz,FRAMES)))./max(abs(squeeze(x(ik,1,iz,FRAMES)))),Nma);
+        plt = @(x,ik) movmean(abs(squeeze(x(1,ik,iz,FRAMES)))./max(abs(squeeze(x(1,ik,iz,FRAMES)))),Nma);
     else
-        plt = @(x,ik) movmean(abs(squeeze(x(ik,1,iz,FRAMES))),Nma);
+        plt = @(x,ik) movmean(abs(squeeze(x(1,ik,iz,FRAMES))),Nma);
     end
     kstr = 'k_x';
     k = DATA.kx;
     MODESTR = 'Zonal modes';
 elseif MODES_SELECTOR == 2
     if NORMALIZED
-        plt = @(x,ik) movmean(abs(squeeze(x(1,ik,iz,FRAMES)))./max(abs(squeeze(x(1,ik,iz,FRAMES)))),Nma);
+        plt = @(x,ik) movmean(abs(squeeze(x(ik,1,iz,FRAMES)))./max(abs(squeeze(x(ik,1,iz,FRAMES)))),Nma);
     else
-        plt = @(x,ik) movmean(abs(squeeze(x(1,ik,iz,FRAMES))),Nma);
+        plt = @(x,ik) movmean(abs(squeeze(x(ik,1,iz,FRAMES))),Nma);
     end
     kstr = 'k_y';
     k = DATA.ky;
diff --git a/matlab/load/load_3D_data.m b/matlab/load/load_3D_data.m
index 2921908adebde09d65ccbde6c0124a7e92ca416b..0a4fee17d6e512396b661d009476b1d94a54a42f 100644
--- a/matlab/load/load_3D_data.m
+++ b/matlab/load/load_3D_data.m
@@ -7,7 +7,7 @@ function [ data, time, dt ] = load_3D_data( filename, variablename )
     dt    = h5readatt(filename,'/data/input','dt');
     cstart= h5readatt(filename,'/data/input','start_iframe3d'); 
     
-    data     = zeros(numel(kx),numel(ky),numel(z),numel(time));
+    data     = zeros(numel(ky),numel(kx),numel(z),numel(time));
     for it = 1:numel(time)
         tmp         = h5read(filename,['/data/var3d/',variablename,'/', num2str(cstart+it,'%06d')]);
         data(:,:,:,it) = tmp.real + 1i * tmp.imaginary;
diff --git a/matlab/load/load_5D_data.m b/matlab/load/load_5D_data.m
index 2de05533001857e8dd4d28d5b8709a66f715d701..bc96f113bba9decc602b02db6c46ed0cafbcac34 100644
--- a/matlab/load/load_5D_data.m
+++ b/matlab/load/load_5D_data.m
@@ -15,7 +15,7 @@ function [ data, time, dt ] = load_5D_data( filename, variablename )
     dt    = h5readatt(filename,'/data/input','dt');
     cstart= h5readatt(filename,'/data/input','start_iframe5d'); 
     
-    data  = zeros(numel(p),numel(j),numel(kx),numel(ky),numel(z),numel(time));
+    data  = zeros(numel(p),numel(j),numel(ky),numel(kx),numel(z),numel(time));
     
     for it = 1:numel(time)
         tmp          = h5read(filename,['/data/var5d/', variablename,'/', num2str(cstart+it,'%06d')]);
diff --git a/matlab/plot/plot_radial_transport_and_spacetime.m b/matlab/plot/plot_radial_transport_and_spacetime.m
index be4680f652dbfb54368a6d1a0419ba53c7c0c120..1957f424a2f33896164166879060e516f13ef60c 100644
--- a/matlab/plot/plot_radial_transport_and_spacetime.m
+++ b/matlab/plot/plot_radial_transport_and_spacetime.m
@@ -10,13 +10,13 @@ function [FIGURE] = plot_radial_transport_and_spacetime(DATA, TAVG_0, TAVG_1,stf
     Qx_infty_std = std (DATA.HFLUX_X(its0D:ite0D))*SCALE;
     [~,ikzf] = max(squeeze(mean(abs(squeeze(DATA.PHI(:,1,1,:))),2)));
     Ns3D = numel(DATA.Ts3D);
-    [KY, KX] = meshgrid(DATA.ky, DATA.kx);
+    [KX, KY] = meshgrid(DATA.kx, DATA.ky);
     z = DATA.z;
     
     %% computations
 
     % Compute Gamma from ifft matlab
-    Gx = zeros(DATA.Nx,DATA.Ny,numel(DATA.Ts3D));
+    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)))...
@@ -26,7 +26,7 @@ function [FIGURE] = plot_radial_transport_and_spacetime(DATA, TAVG_0, TAVG_1,stf
     end
     Gx_t_mtlb = squeeze(mean(mean(Gx,1),2)); 
     % Compute Heat flux from ifft matlab
-    Qx = zeros(DATA.Nx,DATA.Ny,numel(DATA.Ts3D));
+    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)))...
@@ -71,7 +71,7 @@ mvm = @(x) movmean(x,Nmvm);
         % computation
     Ns3D = numel(DATA.Ts3D);
     [KY, KX] = meshgrid(DATA.ky, DATA.kx);
-    plt = @(x) mean(x(:,:,1,:),2);
+    plt = @(x) mean(x(:,:,1,:),1);
     kycut = max(DATA.ky);
     kxcut = max(DATA.kx);
     LP = (abs(KY)<kycut).*(abs(KX)<kxcut); %Low pass filter
@@ -87,7 +87,7 @@ mvm = @(x) movmean(x,Nmvm);
     end
     switch stfname
         case 'phi'
-                phi            = zeros(DATA.Nx,DATA.Ny,1,Ns3D);
+                phi            = zeros(DATA.Ny,DATA.Nx,1,Ns3D);
                 for it = 1:numel(DATA.Ts3D)
                     phi(:,:,1,it)  = ifourier_GENE(compz(DATA.PHI(:,:,:,it)));
                 end
diff --git a/matlab/process_field.m b/matlab/process_field.m
index 5762fc84b51c6057ac03c95b353644ae0c11827a..5258ef7cdc949185f2d72f9d52af005053424220 100644
--- a/matlab/process_field.m
+++ b/matlab/process_field.m
@@ -17,28 +17,28 @@ LTXNAME = OPTIONS.NAME;
 switch OPTIONS.PLAN
     case 'xy'
         XNAME = '$x$'; YNAME = '$y$';
-        [Y,X] = meshgrid(DATA.y,DATA.x);
+        [X,Y] = meshgrid(DATA.x,DATA.y);
         REALP = 1; COMPDIM = 3; POLARPLOT = 0; SCALE = 1;
     case 'xz'
         XNAME = '$x$'; YNAME = '$z$';
         [Y,X] = meshgrid(DATA.z,DATA.x);
-        REALP = 1; COMPDIM = 2; SCALE = 0;
+        REALP = 1; COMPDIM = 1; SCALE = 0;
     case 'yz'
         XNAME = '$y$'; YNAME = '$z$'; 
         [Y,X] = meshgrid(DATA.z,DATA.y);
-        REALP = 1; COMPDIM = 1; SCALE = 0;
+        REALP = 1; COMPDIM = 2; SCALE = 0;
     case 'kxky'
         XNAME = '$k_x$'; YNAME = '$k_y$';
-        [Y,X] = meshgrid(DATA.ky,DATA.kx);
+        [X,Y] = meshgrid(DATA.kx,DATA.ky);
         REALP = 0; COMPDIM = 3; POLARPLOT = 0; SCALE = 1;
     case 'kxz'
         XNAME = '$k_x$'; YNAME = '$z$';
         [Y,X] = meshgrid(DATA.z,DATA.kx);
-        REALP = 0; COMPDIM = 2; POLARPLOT = 0; SCALE = 0;
+        REALP = 0; COMPDIM = 1; POLARPLOT = 0; SCALE = 0;
     case 'kyz'
         XNAME = '$k_y$'; YNAME = '$z$';
         [Y,X] = meshgrid(DATA.z,DATA.ky);
-        REALP = 0; COMPDIM = 1; POLARPLOT = 0; SCALE = 0;
+        REALP = 0; COMPDIM = 2; POLARPLOT = 0; SCALE = 0;
     case 'sx'
         XNAME = '$v_\parallel$'; YNAME = '$\mu$';
         [Y,X] = meshgrid(OPTIONS.XPERP,OPTIONS.SPAR);
@@ -110,7 +110,7 @@ end
 switch REALP
     case 1 % Real space plot
         INTERP = OPTIONS.INTERP;
-        process = @(x) real(fftshift(ifft2(x,Nx,Ny)));
+        process = @(x) real(fftshift(ifft2(x,Ny,Nx)));
         shift_x = @(x) x;
         shift_y = @(x) x;
     case 0 % Frequencies plot
diff --git a/src/advance_field.F90 b/src/advance_field.F90
index a26bda44ebef6ee7a4ed842ba7646536e0f9fa3c..ae48815ed2887bc62d7ad082fe217dab25f008a4 100644
--- a/src/advance_field.F90
+++ b/src/advance_field.F90
@@ -32,7 +32,7 @@ CONTAINS
         p_int = parray_e(ip)
         DO ij=ijs_e,ije_e
           IF((CLOS .NE. 1) .OR. (ip-1+2*(ij-1)+1 .LE. dmaxe))&
-          CALL advance_field(moments_e(ip,ij,ikxs:ikxe,ikys:ikye,izs:ize,:), moments_rhs_e(ip,ij,ikxs:ikxe,ikys:ikye,izs:ize,:))
+          CALL advance_field(moments_e(ip,ij,ikys:ikye,ikxs:ikxe,izs:ize,:), moments_rhs_e(ip,ij,ikys:ikye,ikxs:ikxe,izs:ize,:))
         ENDDO
       ENDDO
     ENDIF
@@ -41,7 +41,7 @@ CONTAINS
       DO ij=ijs_i,ije_i
         j_int = jarray_i(ij)
         IF((CLOS .NE. 1) .OR. (ip-1+2*(ij-1)+1 .LE. dmaxi))&
-        CALL advance_field(moments_i(ip,ij,ikxs:ikxe,ikys:ikye,izs:ize,:), moments_rhs_i(ip,ij,ikxs:ikxe,ikys:ikye,izs:ize,:))
+        CALL advance_field(moments_i(ip,ij,ikys:ikye,ikxs:ikxe,izs:ize,:), moments_rhs_i(ip,ij,ikys:ikye,ikxs:ikxe,izs:ize,:))
       ENDDO
     ENDDO
     ! Execution time end
@@ -60,21 +60,21 @@ CONTAINS
     use initial_par, ONLY: ACT_ON_MODES
     IMPLICIT NONE
 
-    COMPLEX(dp), DIMENSION ( ikxs:ikxe, ikys:ikye, izs:ize, ntimelevel ) :: f
-    COMPLEX(dp), DIMENSION ( ikxs:ikxe, ikys:ikye, izs:ize, ntimelevel ) :: f_rhs
+    COMPLEX(dp), DIMENSION ( ikys:ikye, ikxs:ikxe, izs:ize, ntimelevel ) :: f
+    COMPLEX(dp), DIMENSION ( ikys:ikye, ikxs:ikxe, izs:ize, ntimelevel ) :: f_rhs
     INTEGER :: istage
 
     SELECT CASE (updatetlevel)
     CASE(1)
         DO istage=1,ntimelevel
-          f(ikxs:ikxe,ikys:ikye,izs:ize,1) = f(ikxs:ikxe,ikys:ikye,izs:ize,1) &
-                   + dt*b_E(istage)*f_rhs(ikxs:ikxe,ikys:ikye,izs:ize,istage)
+          f(ikys:ikye,ikxs:ikxe,izs:ize,1) = f(ikys:ikye,ikxs:ikxe,izs:ize,1) &
+                   + dt*b_E(istage)*f_rhs(ikys:ikye,ikxs:ikxe,izs:ize,istage)
         END DO
     CASE DEFAULT
-        f(ikxs:ikxe,ikys:ikye,izs:ize,updatetlevel) = f(ikxs:ikxe,ikys:ikye,izs:ize,1);
+        f(ikys:ikye,ikxs:ikxe,izs:ize,updatetlevel) = f(ikys:ikye,ikxs:ikxe,izs:ize,1);
         DO istage=1,updatetlevel-1
-          f(ikxs:ikxe,ikys:ikye,izs:ize,updatetlevel) = f(ikxs:ikxe,ikys:ikye,izs:ize,updatetlevel) + &
-                            dt*A_E(updatetlevel,istage)*f_rhs(ikxs:ikxe,ikys:ikye,izs:ize,istage)
+          f(ikys:ikye,ikxs:ikxe,izs:ize,updatetlevel) = f(ikys:ikye,ikxs:ikxe,izs:ize,updatetlevel) + &
+                            dt*A_E(updatetlevel,istage)*f_rhs(ikys:ikye,ikxs:ikxe,izs:ize,istage)
         END DO
     END SELECT
   END SUBROUTINE advance_field
diff --git a/src/advance_field_adapt.F90 b/src/advance_field_adapt.F90
deleted file mode 100644
index aed2a7e3d243058e6c05cb152617437cf7e59f80..0000000000000000000000000000000000000000
--- a/src/advance_field_adapt.F90
+++ /dev/null
@@ -1,80 +0,0 @@
-MODULE advance_field_routine
-
-USE prec_const
-implicit none
-
-CONTAINS
-
-  SUBROUTINE advance_time_level
-
-    USE basic
-    USE time_integration
-    use prec_const
-    IMPLICIT NONE
-
-    CALL set_updatetlevel(mod(updatetlevel,ntimelevel)+1)
-
-  END SUBROUTINE advance_time_level
-
-
-
-  SUBROUTINE advance_field( f, f_rhs )
-
-    USE basic
-    USE time_integration
-    USE array
-    USE grid
-    use prec_const
-    IMPLICIT NONE
-
-    COMPLEX(dp), DIMENSION ( ikxs:ikxe, ikys:ikye, ntimelevel ) :: f
-    COMPLEX(dp), DIMENSION ( ikxs:ikxe, ikys:ikye, ntimelevel ) :: f_rhs
-    REAL(dp)    :: error
-    INTEGER     :: istage
-
-    SELECT CASE (updatetlevel)
-
-    CASE(1)
-      SELECT CASE (numerical_scheme)
-
-      CASE ('DOPRI5_ADAPT')
-        error = 0._dp
-        DO iky=ikys,ikye
-          DO ikx=ikxs,ikxe
-            fs = f(ikx,iky,1)
-            DO istage=1,ntimelevel
-              f(ikx,iky,1) = f(ikx,iky,1) + dt*b_E(istage)*f_rhs(ikx,iky,istage)
-              fs = fs + dt*b_Es(istage)*f_rhs(ikx,iky,istage)
-            END DO
-            IF ( ABS(f(ikx,iky,1) - fs) .GT. error ) THEN
-              error = ABS(f(ikx,iky,1) - fs)
-            ENDIF
-          END DO
-        END DO
-        IF (error > TOL)
-      CASE DEFAULT
-        DO iky=ikys,ikye
-          DO ikx=ikxs,ikxe
-            fs = f(ikx,iky,1)
-            DO istage=1,ntimelevel
-            f(ikx,iky,1) = f(ikx,iky,1) + dt*b_E(istage)*f_rhs(ikx,iky,istage)
-            END DO
-          END DO
-        END DO
-      END SELECT
-
-    CASE DEFAULT
-      DO iky=ikys,ikye
-        DO ikx=ikxs,ikxe
-          f(ikx,iky,updatetlevel) = f(ikx,iky,1);
-          DO istage=1,updatetlevel-1
-            f(ikx,iky,updatetlevel) = f(ikx,iky,updatetlevel) + &
-                                  dt*A_E(updatetlevel,istage)*f_rhs(ikx,iky,istage)
-          END DO
-        END DO
-      END DO
-    END SELECT
-
-  END SUBROUTINE advance_field
-
-END MODULE advance_field_routine
diff --git a/src/auxval.F90 b/src/auxval.F90
index cebb78c0d262f8ab02dc75e508cb8a1125623691..7d6fd969feaa1e1c98888118650c5604f9bc583e 100644
--- a/src/auxval.F90
+++ b/src/auxval.F90
@@ -15,9 +15,11 @@ subroutine auxval
   IF (my_id .EQ. 0) WRITE(*,*) '=== Set auxiliary values ==='
 
   IF (LINEARITY .NE. 'linear') THEN
+    write(*,*) 'FFTW3 y-grid distribution'
     CALL init_grid_distr_and_plans(Nx,Ny)
   ELSE
     CALL init_1Dgrid_distr
+    write(*,*) 'Manual y-grid distribution'
   ENDIF
   ! Init the grids
   CALL set_pgrid ! parallel kin (MPI distributed)
@@ -52,10 +54,10 @@ subroutine auxval
       IF (my_id .EQ. 0) WRITE(*,*) ''
       IF (my_id .EQ. 0) WRITE(*,*) '--------- Parallel environement ----------'
       IF (my_id .EQ. 0) WRITE(*,'(A12,I3)') 'n_procs ', num_procs
-      IF (my_id .EQ. 0) WRITE(*,'(A12,I3,A14,I3,A14,I3)') 'num_procs_p   = ', num_procs_p, ', num_procs_kx   = ', num_procs_kx, ', num_procs_z   = ', num_procs_z
+      IF (my_id .EQ. 0) WRITE(*,'(A12,I3,A14,I3,A14,I3)') 'num_procs_p   = ', num_procs_p, ', num_procs_ky   = ', num_procs_ky, ', num_procs_z   = ', num_procs_z
       IF (my_id .EQ. 0) WRITE(*,*) ''
       WRITE(*,'(A9,I3,A10,I3,A10,I3,A9,I3)')&
-       'my_id  = ', my_id, ', rank_p  = ', rank_p, ', rank_kx  = ', rank_kx,', rank_z  = ', rank_z
+       'my_id  = ', my_id, ', rank_p  = ', rank_p, ', rank_ky  = ', rank_ky,', rank_z  = ', rank_z
        WRITE(*,'(A22,I3,A11,I3)')&
        '              ips_e = ', ips_e, ', ipe_e  = ', ipe_e
        WRITE(*,'(A22,I3,A11,I3)')&
diff --git a/src/basic_mod.F90 b/src/basic_mod.F90
index 8bbb5253e7f06d3bd3be668f9164f14e3ce3c8c3..ab7869f8b8e94743acf5b8d46ec0122f7c2acdca 100644
--- a/src/basic_mod.F90
+++ b/src/basic_mod.F90
@@ -14,8 +14,8 @@ MODULE basic
   INTEGER :: comm0                 ! Default communicator with a topology
   INTEGER :: rank_0                ! Ranks in comm0
   ! Communicators for 1-dim cartesian subgrids of comm0
-  INTEGER :: comm_p, comm_kx, comm_z
-  INTEGER :: rank_p, rank_kx, rank_z! Ranks
+  INTEGER :: comm_p, comm_ky, comm_z
+  INTEGER :: rank_p, rank_ky, rank_z! Ranks
   INTEGER :: commr_p0              ! Communicators along kx for only rank 0 on p
 
   INTEGER :: jobnum  = 0           ! Job number
@@ -28,7 +28,7 @@ MODULE basic
   INTEGER :: my_id                 ! Rank in COMM_WORLD
   INTEGER :: num_procs             ! number of MPI processes
   INTEGER :: num_procs_p           ! Number of processes in p
-  INTEGER :: num_procs_kx          ! Number of processes in r
+  INTEGER :: num_procs_ky          ! Number of processes in r
   INTEGER :: num_procs_z           ! Number of processes in z
   INTEGER :: nbr_L, nbr_R          ! Left and right neighbours (along p)
   INTEGER :: nbr_T, nbr_B          ! Top and bottom neighbours (along kx)
diff --git a/src/closure_mod.F90 b/src/closure_mod.F90
index e0e66585b07938bdef6df1d0a31411fa31643249..b316e4425c0f496167abd87df7198268496f4cea 100644
--- a/src/closure_mod.F90
+++ b/src/closure_mod.F90
@@ -28,21 +28,21 @@ SUBROUTINE apply_closure_model
     ! all Napj s.t. p+2j <= 3
     ! -> (p,j) allowed are (0,0),(1,0),(0,1),(2,0),(1,1),(3,0)
     ! =>> Dmax is Pmax, condition is p+2j<=Pmax
+  DO iz = izs,ize
     DO ikx = ikxs,ikxe
-      DO iky = ikys,ikye
-        DO iz = izs,ize
+        DO iky = ikys,ikye
           IF(KIN_E) THEN
           DO ip = ipgs_e,ipge_e
             DO ij = ijgs_e,ijge_e
               IF ( parray_e(ip)+2*jarray_e(ip) .GT. dmaxe) &
-              moments_e(ip,ij,ikx,iky,iz,updatetlevel) = 0._dp
+              moments_e(ip,ij,iky,ikx,iz,updatetlevel) = 0._dp
             ENDDO
           ENDDO
           ENDIF
           DO ip = ipgs_i,ipge_i
             DO ij = ijgs_i,ijge_i
               IF ( parray_i(ip)+2*jarray_i(ip) .GT. dmaxi) &
-              moments_i(ip,ij,ikx,iky,iz,updatetlevel) = 0._dp
+              moments_i(ip,ij,iky,ikx,iz,updatetlevel) = 0._dp
             ENDDO
           ENDDO
         ENDDO
@@ -71,15 +71,15 @@ SUBROUTINE ghosts_upper_truncation
     ! applies only for the process that has largest j index
     IF(ije_e .EQ. Jmaxe+1) THEN
       DO ip = ipgs_e,ipge_e
-        moments_e(ip,ije_e+1,ikxs:ikxe,ikys:ikye,izgs:izge,updatetlevel) = 0._dp
+        moments_e(ip,ije_e+1,ikys:ikye,ikxs:ikxe,izgs:izge,updatetlevel) = 0._dp
       ENDDO
     ENDIF
     ! applies only for the process that has largest p index
     IF(ipe_e .EQ. Pmaxe+1) THEN
       DO ij = ijgs_e,ijge_e
-        moments_e(ipe_e+1,ij,ikxs:ikxe,ikys:ikye,izgs:izge,updatetlevel) = 0._dp
+        moments_e(ipe_e+1,ij,ikys:ikye,ikxs:ikxe,izgs:izge,updatetlevel) = 0._dp
         IF(deltape .EQ. 1) THEN ! Must truncate the second stencil
-        moments_e(ipe_e+2,ij,ikxs:ikxe,ikys:ikye,izgs:izge,updatetlevel) = 0._dp
+        moments_e(ipe_e+2,ij,ikys:ikye,ikxs:ikxe,izgs:izge,updatetlevel) = 0._dp
         ENDIF
       ENDDO
     ENDIF
@@ -89,15 +89,15 @@ SUBROUTINE ghosts_upper_truncation
   ! applies only for the process that has largest j index
   IF(ije_i .EQ. Jmaxi+1) THEN
     DO ip = ipgs_i,ipge_i
-      moments_i(ip,ije_i+1,ikxs:ikxe,ikys:ikye,izgs:izge,updatetlevel) = 0._dp
+      moments_i(ip,ije_i+1,ikys:ikye,ikxs:ikxe,izgs:izge,updatetlevel) = 0._dp
     ENDDO
   ENDIF
   ! applies only for the process that has largest p index
   IF(ipe_i .EQ. Pmaxi+1) THEN
     DO ij = ijgs_i,ijge_i
-      moments_i(ipe_i+1,ij,ikxs:ikxe,ikys:ikye,izgs:izge,updatetlevel) = 0._dp
+      moments_i(ipe_i+1,ij,ikys:ikye,ikxs:ikxe,izgs:izge,updatetlevel) = 0._dp
       IF(deltape .EQ. 1) THEN ! Must truncate the second stencil
-      moments_i(ipe_i+2,ij,ikxs:ikxe,ikys:ikye,izgs:izge,updatetlevel) = 0._dp
+      moments_i(ipe_i+2,ij,ikys:ikye,ikxs:ikxe,izgs:izge,updatetlevel) = 0._dp
       ENDIF
     ENDDO
   ENDIF
@@ -114,15 +114,15 @@ SUBROUTINE ghosts_lower_truncation
     ! applies only for the process that has lowest j index
     IF(ijs_e .EQ. 1) THEN
       DO ip = ipgs_e,ipge_e
-        moments_e(ip,ijs_e-1,ikxs:ikxe,ikys:ikye,izgs:izge,updatetlevel) = 0._dp
+        moments_e(ip,ijs_e-1,ikys:ikye,ikxs:ikxe,izgs:izge,updatetlevel) = 0._dp
       ENDDO
     ENDIF
     ! applies only for the process that has lowest p index
     IF(ips_e .EQ. 1) THEN
       DO ij = ijgs_e,ijge_e
-        moments_e(ips_e-1,ij,ikxs:ikxe,ikys:ikye,izgs:izge,updatetlevel) = 0._dp
+        moments_e(ips_e-1,ij,ikys:ikye,ikxs:ikxe,izgs:izge,updatetlevel) = 0._dp
         IF(deltape .EQ. 1) THEN ! Must truncate the second stencil
-        moments_e(ips_e-2,ij,ikxs:ikxe,ikys:ikye,izgs:izge,updatetlevel) = 0._dp
+        moments_e(ips_e-2,ij,ikys:ikye,ikxs:ikxe,izgs:izge,updatetlevel) = 0._dp
         ENDIF
       ENDDO
     ENDIF
@@ -132,15 +132,15 @@ SUBROUTINE ghosts_lower_truncation
   IF(ijs_i .EQ. 1) THEN
     ! applies only for the process that has lowest j index
     DO ip = ipgs_i,ipge_i
-      moments_i(ip,ijs_i-1,ikxs:ikxe,ikys:ikye,izgs:izge,updatetlevel) = 0._dp
+      moments_i(ip,ijs_i-1,ikys:ikye,ikxs:ikxe,izgs:izge,updatetlevel) = 0._dp
     ENDDO
   ENDIF
   ! applies only for the process that has lowest p index
   IF(ips_i .EQ. 1) THEN
     DO ij = ijgs_i,ijge_i
-      moments_i(ips_i-1,ij,ikxs:ikxe,ikys:ikye,izgs:izge,updatetlevel) = 0._dp
+      moments_i(ips_i-1,ij,ikys:ikye,ikxs:ikxe,izgs:izge,updatetlevel) = 0._dp
       IF(deltape .EQ. 1) THEN ! Must truncate the second stencil
-      moments_i(ips_i-2,ij,ikxs:ikxe,ikys:ikye,izgs:izge,updatetlevel) = 0._dp
+      moments_i(ips_i-2,ij,ikys:ikye,ikxs:ikxe,izgs:izge,updatetlevel) = 0._dp
       ENDIF
     ENDDO
   ENDIF
diff --git a/src/collision_mod.F90 b/src/collision_mod.F90
index 33954f78a6fecc715610def3db4fb0e243036092..ea43b1d3fc804b528b8e74fe5b54cd657ca7bfc3 100644
--- a/src/collision_mod.F90
+++ b/src/collision_mod.F90
@@ -117,15 +117,15 @@ CONTAINS
     IF (KIN_E) THEN
       DO ip = ips_e,ipe_e;DO ij = ijs_e,ije_e
       DO ikx = ikxs, ikxe;DO iky = ikys, ikye; DO iz = izs,ize
-                CALL LenardBernstein_e(ip,ij,ikx,iky,iz,TColl_)
-                TColl_e(ip,ij,ikx,iky,iz) = TColl_
+                CALL LenardBernstein_e(ip,ij,iky,ikx,iz,TColl_)
+                TColl_e(ip,ij,iky,ikx,iz) = TColl_
       ENDDO;ENDDO;ENDDO
       ENDDO;ENDDO
     ENDIF
     DO ip = ips_i,ipe_i;DO ij = ijs_i,ije_i
     DO ikx = ikxs, ikxe;DO iky = ikys, ikye; DO iz = izs,ize
-        CALL LenardBernstein_i(ip,ij,ikx,iky,iz,TColl_)
-        TColl_i(ip,ij,ikx,iky,iz) = TColl_
+        CALL LenardBernstein_i(ip,ij,iky,ikx,iz,TColl_)
+        TColl_i(ip,ij,iky,ikx,iz) = TColl_
     ENDDO;ENDDO;ENDDO
     ENDDO;ENDDO
   END SUBROUTINE compute_lenard_bernstein
@@ -133,9 +133,9 @@ CONTAINS
   !******************************************************************************!
   !! for electrons
   !******************************************************************************!
-  SUBROUTINE LenardBernstein_e(ip_,ij_,ikx_,iky_,iz_,TColl_)
+  SUBROUTINE LenardBernstein_e(ip_,ij_,iky_,ikx_,iz_,TColl_)
     IMPLICIT NONE
-    INTEGER,     INTENT(IN)    :: ip_,ij_,ikx_,iky_,iz_
+    INTEGER,     INTENT(IN)    :: ip_,ij_,iky_,ikx_,iz_
     COMPLEX(dp), INTENT(OUT)   :: TColl_
 
     REAL(dp)    :: j_dp, p_dp, be_2, kp
@@ -145,29 +145,29 @@ CONTAINS
     eo_       = MODULO(parray_e(ip_),2)
     p_dp      = REAL(parray_e(ip_),dp)
     j_dp      = REAL(jarray_e(ij_),dp)
-    kp        = kparray(ikx_,iky_,iz_,eo_)
+    kp        = kparray(iky_,ikx_,iz_,eo_)
     be_2      = kp**2 * sigmae2_taue_o2 ! this is (be/2)^2
     eo_       = MODULO(parray_e(ip_),2)
 
     !** Assembling collison operator **
     ! -nuee (p + 2j) Nepj
-    TColl_ = -nu_ee * (p_dp + 2._dp*j_dp)*nadiab_moments_e(ip_,ij_,ikx_,iky_,iz_)
+    TColl_ = -nu_ee * (p_dp + 2._dp*j_dp)*nadiab_moments_e(ip_,ij_,iky_,ikx_,iz_)
     IF(gyrokin_CO) THEN
-      TColl_ = TColl_ - nu_ee *2._dp*be_2*nadiab_moments_e(ip_,ij_,ikx_,iky_,iz_)
+      TColl_ = TColl_ - nu_ee *2._dp*be_2*nadiab_moments_e(ip_,ij_,iky_,ikx_,iz_)
     ENDIF
   END SUBROUTINE LenardBernstein_e
 
     !******************************************************************************!
     !! for ions
     !******************************************************************************!
-    SUBROUTINE LenardBernstein_i(ip_,ij_,ikx_,iky_,iz_,TColl_)
+    SUBROUTINE LenardBernstein_i(ip_,ij_,iky_,ikx_,iz_,TColl_)
       USE fields, ONLY: moments_i
       USE grid,   ONLY: parray_i, jarray_i, kxarray, kyarray
       USE basic
       USE model,  ONLY: sigmai2_taui_o2, nu_i
       USE time_integration, ONLY : updatetlevel
       IMPLICIT NONE
-      INTEGER,     INTENT(IN)    :: ip_,ij_,ikx_,iky_,iz_
+      INTEGER,     INTENT(IN)    :: ip_,ij_,iky_,ikx_,iz_
       COMPLEX(dp), INTENT(OUT)   :: TColl_
 
       REAL(dp)    :: j_dp, p_dp, kp, bi_2
@@ -177,14 +177,14 @@ CONTAINS
       eo_       = MODULO(parray_i(ip_),2)
       p_dp      = REAL(parray_i(ip_),dp)
       j_dp      = REAL(jarray_i(ij_),dp)
-      kp        = kparray(ikx_,iky_,iz_,eo_)
+      kp        = kparray(iky_,ikx_,iz_,eo_)
       bi_2      = kp**2 * sigmai2_taui_o2 ! this is (be/2)^2
 
       !** Assembling collison operator **
       ! -nuii (p + 2j) Nipj
-      TColl_ = -nu_i * (p_dp + 2._dp*j_dp)*nadiab_moments_i(ip_,ij_,ikx_,iky_,iz_)
+      TColl_ = -nu_i * (p_dp + 2._dp*j_dp)*nadiab_moments_i(ip_,ij_,iky_,ikx_,iz_)
       IF(gyrokin_CO) THEN
-        TColl_ = TColl_ - nu_i *2._dp*bi_2*nadiab_moments_i(ip_,ij_,ikx_,iky_,iz_)
+        TColl_ = TColl_ - nu_i *2._dp*bi_2*nadiab_moments_i(ip_,ij_,iky_,ikx_,iz_)
       ENDIF
     END SUBROUTINE LenardBernstein_i
 
@@ -195,34 +195,40 @@ CONTAINS
     IMPLICIT NONE
     COMPLEX(dp) :: TColl_
     IF (KIN_E) THEN
-      DO ip = ips_e,ipe_e;DO ij = ijs_e,ije_e
-      DO ikx = ikxs, ikxe;DO iky = ikys, ikye; DO iz = izs,ize
+      DO iz = izs,ize
+        DO iky = ikys, ikye;
+          DO ikx = ikxs, ikxe;
+            DO ij = ijs_e,ije_e
+              DO ip = ips_e,ipe_e;
         IF(gyrokin_CO) THEN
-            CALL DoughertyGK_ee(ip,ij,ikx,iky,iz,TColl_)
+            CALL DoughertyGK_ee(ip,ij,iky,ikx,iz,TColl_)
         ELSE
-            CALL DoughertyDK_ee(ip,ij,ikx,iky,iz,TColl_)
+            CALL DoughertyDK_ee(ip,ij,iky,ikx,iz,TColl_)
         ENDIF
-            TColl_e(ip,ij,ikx,iky,iz) = TColl_
+            TColl_e(ip,ij,iky,ikx,iz) = TColl_
       ENDDO;ENDDO;ENDDO
       ENDDO;ENDDO
     ENDIF
-    DO ip = ips_i,ipe_i;DO ij = ijs_i,ije_i
-    DO ikx = ikxs, ikxe;DO iky = ikys, ikye; DO iz = izs,ize
+    DO iz = izs,ize
+      DO iky = ikys, ikye;
+        DO ikx = ikxs, ikxe;
+          DO ij = ijs_i,ije_i
+            DO ip = ips_i,ipe_i;
       IF(gyrokin_CO) THEN
-          CALL DoughertyGK_ii(ip,ij,ikx,iky,iz,TColl_)
+          CALL DoughertyGK_ii(ip,ij,iky,ikx,iz,TColl_)
       ELSE
-          CALL DoughertyDK_ii(ip,ij,ikx,iky,iz,TColl_)
+          CALL DoughertyDK_ii(ip,ij,iky,ikx,iz,TColl_)
       ENDIF
-          TColl_i(ip,ij,ikx,iky,iz) = TColl_
+          TColl_i(ip,ij,iky,ikx,iz) = TColl_
     ENDDO;ENDDO;ENDDO
     ENDDO;ENDDO
   END SUBROUTINE compute_dougherty
   !******************************************************************************!
   !! Doughtery driftkinetic collision operator for electrons
   !******************************************************************************!
-  SUBROUTINE DoughertyDK_ee(ip_,ij_,ikx_,iky_,iz_,TColl_)
+  SUBROUTINE DoughertyDK_ee(ip_,ij_,iky_,ikx_,iz_,TColl_)
     IMPLICIT NONE
-    INTEGER,     INTENT(IN)    :: ip_,ij_,ikx_,iky_,iz_
+    INTEGER,     INTENT(IN)    :: ip_,ij_,iky_,ikx_,iz_
     COMPLEX(dp), INTENT(OUT)   :: TColl_
     COMPLEX(dp) :: upar, Tpar, Tperp
     REAL(dp)    :: j_dp, p_dp
@@ -230,24 +236,24 @@ CONTAINS
     p_dp      = REAL(parray_e(ip_),dp)
     j_dp      = REAL(jarray_e(ij_),dp)
     !** Assembling collison operator **
-    TColl_ = -(p_dp + 2._dp*j_dp)*nadiab_moments_e(ip_,ij_,ikx_,iky_,iz_)
+    TColl_ = -(p_dp + 2._dp*j_dp)*nadiab_moments_e(ip_,ij_,iky_,ikx_,iz_)
     IF( (p_dp .EQ. 1._dp) .AND. (j_dp .EQ. 0._dp)) THEN !Ce10
-      TColl_ = TColl_ + nadiab_moments_e(ip1_e,1,ikx_,iky_,iz_)
+      TColl_ = TColl_ + nadiab_moments_e(ip1_e,1,iky_,ikx_,iz_)
     ELSEIF( (p_dp .EQ. 2._dp) .AND. (j_dp .EQ. 0._dp)) THEN ! Ce20
-      TColl_ = TColl_ + twothird*nadiab_moments_e(ip2_e,1,ikx_,iky_,iz_) &
-                - SQRT2*twothird*nadiab_moments_e(ip0_e,2,ikx_,iky_,iz_)
+      TColl_ = TColl_ + twothird*nadiab_moments_e(ip2_e,1,iky_,ikx_,iz_) &
+                - SQRT2*twothird*nadiab_moments_e(ip0_e,2,iky_,ikx_,iz_)
     ELSEIF( (p_dp .EQ. 0._dp) .AND. (j_dp .EQ. 1._dp)) THEN ! Ce01
-      TColl_ = TColl_ + 2._dp*twothird*nadiab_moments_e(ip0_e,2,ikx_,iky_,iz_) &
-                 - SQRT2*twothird*nadiab_moments_e(ip2_e,1,ikx_,iky_,iz_)
+      TColl_ = TColl_ + 2._dp*twothird*nadiab_moments_e(ip0_e,2,iky_,ikx_,iz_) &
+                 - SQRT2*twothird*nadiab_moments_e(ip2_e,1,iky_,ikx_,iz_)
     ENDIF
     TColl_ = nu_ee * TColl_
   END SUBROUTINE DoughertyDK_ee
   !******************************************************************************!
   !! Doughtery driftkinetic collision operator for ions
   !******************************************************************************!
-  SUBROUTINE DoughertyDK_ii(ip_,ij_,ikx_,iky_,iz_,TColl_)
+  SUBROUTINE DoughertyDK_ii(ip_,ij_,iky_,ikx_,iz_,TColl_)
     IMPLICIT NONE
-    INTEGER,     INTENT(IN)    :: ip_,ij_,ikx_,iky_,iz_
+    INTEGER,     INTENT(IN)    :: ip_,ij_,iky_,ikx_,iz_
     COMPLEX(dp), INTENT(OUT)   :: TColl_
     COMPLEX(dp) :: upar, Tpar, Tperp
     REAL(dp)    :: j_dp, p_dp
@@ -255,24 +261,24 @@ CONTAINS
     p_dp      = REAL(parray_i(ip_),dp)
     j_dp      = REAL(jarray_i(ij_),dp)
     !** Assembling collison operator **
-    TColl_ = -(p_dp + 2._dp*j_dp)*nadiab_moments_i(ip_,ij_,ikx_,iky_,iz_)
+    TColl_ = -(p_dp + 2._dp*j_dp)*nadiab_moments_i(ip_,ij_,iky_,ikx_,iz_)
     IF( (p_dp .EQ. 1._dp) .AND. (j_dp .EQ. 0._dp)) THEN ! kronecker p1j0
-      TColl_ = TColl_ + nadiab_moments_i(ip1_i,1,ikx_,iky_,iz_)
+      TColl_ = TColl_ + nadiab_moments_i(ip1_i,1,iky_,ikx_,iz_)
     ELSEIF( (p_dp .EQ. 2._dp) .AND. (j_dp .EQ. 0._dp)) THEN ! kronecker p2j0
-      TColl_ = TColl_ + twothird*nadiab_moments_i(ip2_i,1,ikx_,iky_,iz_) &
-              - SQRT2*twothird*nadiab_moments_i(ip0_i,2,ikx_,iky_,iz_)
+      TColl_ = TColl_ + twothird*nadiab_moments_i(ip2_i,1,iky_,ikx_,iz_) &
+              - SQRT2*twothird*nadiab_moments_i(ip0_i,2,iky_,ikx_,iz_)
     ELSEIF( (p_dp .EQ. 0._dp) .AND. (j_dp .EQ. 1._dp)) THEN ! kronecker p0j1
-      TColl_ = TColl_ + 2._dp*twothird*nadiab_moments_i(ip0_i,2,ikx_,iky_,iz_) &
-                 - SQRT2*twothird*nadiab_moments_i(ip2_i,1,ikx_,iky_,iz_)
+      TColl_ = TColl_ + 2._dp*twothird*nadiab_moments_i(ip0_i,2,iky_,ikx_,iz_) &
+                 - SQRT2*twothird*nadiab_moments_i(ip2_i,1,iky_,ikx_,iz_)
     ENDIF
     TColl_ = nu_i * TColl_
   END SUBROUTINE DoughertyDK_ii
   !******************************************************************************!
   !! Doughtery gyrokinetic collision operator for electrons
   !******************************************************************************!
-  SUBROUTINE DoughertyGK_ee(ip_,ij_,ikx_,iky_,iz_,TColl_)
+  SUBROUTINE DoughertyGK_ee(ip_,ij_,iky_,ikx_,iz_,TColl_)
     IMPLICIT NONE
-    INTEGER,     INTENT(IN)    :: ip_,ij_,ikx_,iky_,iz_
+    INTEGER,     INTENT(IN)    :: ip_,ij_,iky_,ikx_,iz_
     COMPLEX(dp), INTENT(OUT)   :: TColl_
 
     COMPLEX(dp) :: n_,upar_,uperp_,Tpar_, Tperp_, T_
@@ -285,14 +291,14 @@ CONTAINS
     p_dp      = REAL(parray_e(ip_),dp)
     eo_       = MODULO(parray_e(ip_),2)
     j_dp      = REAL(jarray_e(ij_),dp)
-    kp        = kparray(ikx_,iky_,iz_,eo_)
+    kp        = kparray(iky_,ikx_,iz_,eo_)
     be_2      = kp**2 * sigmae2_taue_o2 ! this is (be/2)^2
     be_       = 2_dp*kp * sqrt_sigmae2_taue_o2  ! this is be
 
     !** Assembling collison operator **
     ! Velocity-space diffusion (similar to Lenard Bernstein)
     ! -nuee (p + 2j + b^2/2) Nepj
-    TColl_ = -(p_dp + 2._dp*j_dp + 2._dp*be_2)*nadiab_moments_e(ip_,ij_,ikx_,iky_,iz_)
+    TColl_ = -(p_dp + 2._dp*j_dp + 2._dp*be_2)*nadiab_moments_e(ip_,ij_,iky_,ikx_,iz_)
 
       !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Non zero term for p = 0 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     IF( p_dp .EQ. 0 ) THEN ! Kronecker p0
@@ -303,26 +309,26 @@ CONTAINS
         DO in_ = 1,jmaxe+1
           n_dp = REAL(in_-1,dp)
           ! Store the kernels for sparing readings
-          Knp0 =  Kernel_e(in_  ,ikx_,iky_,iz_,eo_)
-          Knp1 =  Kernel_e(in_+1,ikx_,iky_,iz_,eo_)
-          Knm1 =  Kernel_e(in_-1,ikx_,iky_,iz_,eo_)
+          Knp0 =  Kernel_e(in_  ,iky_,ikx_,iz_,eo_)
+          Knp1 =  Kernel_e(in_+1,iky_,ikx_,iz_,eo_)
+          Knm1 =  Kernel_e(in_-1,iky_,ikx_,iz_,eo_)
           ! Nonadiabatic moments (only different from moments when p=0)
-          nadiab_moment_0j   = nadiab_moments_e(ip0_e,in_,ikx_,iky_,iz_)
+          nadiab_moment_0j   = nadiab_moments_e(ip0_e,in_,iky_,ikx_,iz_)
           ! Density
           n_     = n_     + Knp0 * nadiab_moment_0j
           ! Perpendicular velocity
           uperp_ = uperp_ + be_*0.5_dp*(Knp0 - Knm1) * nadiab_moment_0j
           ! Parallel temperature
-          Tpar_  = Tpar_  + Knp0 * (SQRT2*nadiab_moments_e(ip2_e,in_,ikx_,iky_,iz_) + nadiab_moment_0j)
+          Tpar_  = Tpar_  + Knp0 * (SQRT2*nadiab_moments_e(ip2_e,in_,iky_,ikx_,iz_) + nadiab_moment_0j)
           ! Perpendicular temperature
           Tperp_ = Tperp_ + ((2._dp*n_dp+1._dp)*Knp0 - (n_dp+1._dp)*Knp1 - n_dp*Knm1)*nadiab_moment_0j
         ENDDO
       T_  = (Tpar_ + 2._dp*Tperp_)/3._dp - n_
       ! Add energy restoring term
-      TColl_ = TColl_ + T_* 4._dp *  j_dp          * Kernel_e(ij_  ,ikx_,iky_,iz_,eo_)
-      TColl_ = TColl_ - T_* 2._dp * (j_dp + 1._dp) * Kernel_e(ij_+1,ikx_,iky_,iz_,eo_)
-      TColl_ = TColl_ - T_* 2._dp *  j_dp          * Kernel_e(ij_-1,ikx_,iky_,iz_,eo_)
-      TColl_ = TColl_ + uperp_*be_* (Kernel_e(ij_,ikx_,iky_,iz_,eo_) - Kernel_e(ij_-1,ikx_,iky_,iz_,eo_))
+      TColl_ = TColl_ + T_* 4._dp *  j_dp          * Kernel_e(ij_  ,iky_,ikx_,iz_,eo_)
+      TColl_ = TColl_ - T_* 2._dp * (j_dp + 1._dp) * Kernel_e(ij_+1,iky_,ikx_,iz_,eo_)
+      TColl_ = TColl_ - T_* 2._dp *  j_dp          * Kernel_e(ij_-1,iky_,ikx_,iz_,eo_)
+      TColl_ = TColl_ + uperp_*be_* (Kernel_e(ij_,iky_,ikx_,iz_,eo_) - Kernel_e(ij_-1,iky_,ikx_,iz_,eo_))
       !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 
       !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Non zero term for p = 1 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -331,9 +337,9 @@ CONTAINS
       upar_  = 0._dp
       DO in_ = 1,jmaxe+1
         ! Parallel velocity
-        upar_  = upar_  + Kernel_e(in_,ikx_,iky_,iz_,eo_) * nadiab_moments_e(ip1_e,in_,ikx_,iky_,iz_)
+        upar_  = upar_  + Kernel_e(in_,iky_,ikx_,iz_,eo_) * nadiab_moments_e(ip1_e,in_,iky_,ikx_,iz_)
       ENDDO
-      TColl_ = TColl_ + upar_*Kernel_e(ij_,ikx_,iky_,iz_,eo_)
+      TColl_ = TColl_ + upar_*Kernel_e(ij_,iky_,ikx_,iz_,eo_)
       !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 
       !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Non zero term for p = 2 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -345,20 +351,20 @@ CONTAINS
       DO in_ = 1,jmaxe+1
         n_dp = REAL(in_-1,dp)
         ! Store the kernels for sparing readings
-        Knp0 =  Kernel_e(in_  ,ikx_,iky_,iz_,eo_)
-        Knp1 =  Kernel_e(in_+1,ikx_,iky_,iz_,eo_)
-        Knm1 =  Kernel_e(in_-1,ikx_,iky_,iz_,eo_)
+        Knp0 =  Kernel_e(in_  ,iky_,ikx_,iz_,eo_)
+        Knp1 =  Kernel_e(in_+1,iky_,ikx_,iz_,eo_)
+        Knm1 =  Kernel_e(in_-1,iky_,ikx_,iz_,eo_)
         ! Nonadiabatic moments (only different from moments when p=0)
-        nadiab_moment_0j = nadiab_moments_e(ip0_e,in_,ikx_,iky_,iz_)
+        nadiab_moment_0j = nadiab_moments_e(ip0_e,in_,iky_,ikx_,iz_)
         ! Density
         n_     = n_     + Knp0 * nadiab_moment_0j
         ! Parallel temperature
-        Tpar_  = Tpar_  + Knp0 * (SQRT2*nadiab_moments_e(ip2_e,in_,ikx_,iky_,iz_) + nadiab_moment_0j)
+        Tpar_  = Tpar_  + Knp0 * (SQRT2*nadiab_moments_e(ip2_e,in_,iky_,ikx_,iz_) + nadiab_moment_0j)
         ! Perpendicular temperature
         Tperp_ = Tperp_ + ((2._dp*n_dp+1._dp)*Knp0 - (n_dp+1._dp)*Knp1 - n_dp*Knm1)*nadiab_moment_0j
       ENDDO
       T_  = (Tpar_ + 2._dp*Tperp_)/3._dp - n_
-      TColl_ = TColl_ + T_*SQRT2*Kernel_e(ij_,ikx_,iky_,iz_,eo_)
+      TColl_ = TColl_ + T_*SQRT2*Kernel_e(ij_,iky_,ikx_,iz_,eo_)
       !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 
     ENDIF
@@ -369,9 +375,9 @@ CONTAINS
   !******************************************************************************!
   !! Doughtery gyrokinetic collision operator for ions
   !******************************************************************************!
-  SUBROUTINE DoughertyGK_ii(ip_,ij_,ikx_,iky_,iz_,TColl_)
+  SUBROUTINE DoughertyGK_ii(ip_,ij_,iky_,ikx_,iz_,TColl_)
     IMPLICIT NONE
-    INTEGER,     INTENT(IN)    :: ip_,ij_,ikx_,iky_,iz_
+    INTEGER,     INTENT(IN)    :: ip_,ij_,iky_,ikx_,iz_
     COMPLEX(dp), INTENT(OUT)   :: TColl_
 
     COMPLEX(dp) :: n_,upar_,uperp_,Tpar_, Tperp_, T_
@@ -385,14 +391,14 @@ CONTAINS
     p_dp      = REAL(parray_i(ip_),dp)
     eo_       = MODULO(parray_i(ip_),2)
     j_dp      = REAL(jarray_i(ij_),dp)
-    kp        = kparray(ikx_,iky_,iz_,eo_)
+    kp        = kparray(iky_,ikx_,iz_,eo_)
     bi_2      = kp**2 *sigmai2_taui_o2 ! this is (bi/2)^2
     bi_       = 2_dp*kp*sqrt_sigmai2_taui_o2  ! this is bi
 
     !** Assembling collison operator **
     ! Velocity-space diffusion (similar to Lenard Bernstein)
     ! -nui (p + 2j + b^2/2) Nipj
-    TColl_ = -(p_dp + 2._dp*j_dp + 2._dp*bi_2)*nadiab_moments_i(ip_,ij_,ikx_,iky_,iz_)
+    TColl_ = -(p_dp + 2._dp*j_dp + 2._dp*bi_2)*nadiab_moments_i(ip_,ij_,iky_,ikx_,iz_)
 
       !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Non zero term for p = 0 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     IF( p_dp .EQ. 0 ) THEN ! Kronecker p0
@@ -403,26 +409,26 @@ CONTAINS
         DO in_ = 1,jmaxi+1
           n_dp = REAL(in_-1,dp)
           ! Store the kernels for sparing readings
-          Knp0 =  Kernel_i(in_  ,ikx_,iky_,iz_,eo_)
-          Knp1 =  Kernel_i(in_+1,ikx_,iky_,iz_,eo_)
-          Knm1 =  Kernel_i(in_-1,ikx_,iky_,iz_,eo_)
+          Knp0 =  Kernel_i(in_  ,iky_,ikx_,iz_,eo_)
+          Knp1 =  Kernel_i(in_+1,iky_,ikx_,iz_,eo_)
+          Knm1 =  Kernel_i(in_-1,iky_,ikx_,iz_,eo_)
           ! Nonadiabatic moments (only different from moments when p=0)
-          nadiab_moment_0j  = nadiab_moments_i(ip0_i,in_,ikx_,iky_,iz_)
+          nadiab_moment_0j  = nadiab_moments_i(ip0_i,in_,iky_,ikx_,iz_)
           ! Density
           n_     = n_     + Knp0 * nadiab_moment_0j
           ! Perpendicular velocity
           uperp_ = uperp_ + bi_*0.5_dp*(Knp0 - Knm1) * nadiab_moment_0j
           ! Parallel temperature
-          Tpar_  = Tpar_  + Knp0 * (SQRT2*nadiab_moments_i(ip2_i,in_,ikx_,iky_,iz_) + nadiab_moment_0j)
+          Tpar_  = Tpar_  + Knp0 * (SQRT2*nadiab_moments_i(ip2_i,in_,iky_,ikx_,iz_) + nadiab_moment_0j)
           ! Perpendicular temperature
           Tperp_ = Tperp_ + ((2._dp*n_dp+1._dp)*Knp0 - (n_dp+1._dp)*Knp1 - n_dp*Knm1)*nadiab_moment_0j
         ENDDO
         T_  = (Tpar_ + 2._dp*Tperp_)*onethird - n_
       ! Add energy restoring term
-      TColl_ = TColl_ + T_* 4._dp *  j_dp          * Kernel_i(ij_  ,ikx_,iky_,iz_,eo_)
-      TColl_ = TColl_ - T_* 2._dp * (j_dp + 1._dp) * Kernel_i(ij_+1,ikx_,iky_,iz_,eo_)
-      TColl_ = TColl_ - T_* 2._dp *  j_dp          * Kernel_i(ij_-1,ikx_,iky_,iz_,eo_)
-      TColl_ = TColl_ + uperp_*bi_* (Kernel_i(ij_,ikx_,iky_,iz_,eo_) - Kernel_i(ij_-1,ikx_,iky_,iz_,eo_))
+      TColl_ = TColl_ + T_* 4._dp *  j_dp          * Kernel_i(ij_  ,iky_,ikx_,iz_,eo_)
+      TColl_ = TColl_ - T_* 2._dp * (j_dp + 1._dp) * Kernel_i(ij_+1,iky_,ikx_,iz_,eo_)
+      TColl_ = TColl_ - T_* 2._dp *  j_dp          * Kernel_i(ij_-1,iky_,ikx_,iz_,eo_)
+      TColl_ = TColl_ + uperp_*bi_* (Kernel_i(ij_,iky_,ikx_,iz_,eo_) - Kernel_i(ij_-1,iky_,ikx_,iz_,eo_))
       !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 
       !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Non zero term for p = 1 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -431,9 +437,9 @@ CONTAINS
       upar_  = 0._dp
       DO in_ = 1,jmaxi+1
         ! Parallel velocity
-         upar_  = upar_  + Kernel_i(in_,ikx_,iky_,iz_,eo_) * nadiab_moments_i(ip1_i,in_,ikx_,iky_,iz_)
+         upar_  = upar_  + Kernel_i(in_,iky_,ikx_,iz_,eo_) * nadiab_moments_i(ip1_i,in_,iky_,ikx_,iz_)
       ENDDO
-      TColl_ = TColl_ + upar_*Kernel_i(ij_,ikx_,iky_,iz_,eo_)
+      TColl_ = TColl_ + upar_*Kernel_i(ij_,iky_,ikx_,iz_,eo_)
       !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 
       !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Non zero term for p = 2 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -445,20 +451,20 @@ CONTAINS
       DO in_ = 1,jmaxi+1
         n_dp = REAL(in_-1,dp)
         ! Store the kernels for sparing readings
-        Knp0 =  Kernel_i(in_  ,ikx_,iky_,iz_,eo_)
-        Knp1 =  Kernel_i(in_+1,ikx_,iky_,iz_,eo_)
-        Knm1 =  Kernel_i(in_-1,ikx_,iky_,iz_,eo_)
+        Knp0 =  Kernel_i(in_  ,iky_,ikx_,iz_,eo_)
+        Knp1 =  Kernel_i(in_+1,iky_,ikx_,iz_,eo_)
+        Knm1 =  Kernel_i(in_-1,iky_,ikx_,iz_,eo_)
         ! Nonadiabatic moments (only different from moments when p=0)
-        nadiab_moment_0j = nadiab_moments_i(ip0_i,in_,ikx_,iky_,iz_)
+        nadiab_moment_0j = nadiab_moments_i(ip0_i,in_,iky_,ikx_,iz_)
         ! Density
         n_     = n_     + Knp0 * nadiab_moment_0j
         ! Parallel temperature
-        Tpar_  = Tpar_  + Knp0 * (SQRT2*nadiab_moments_i(ip2_i,in_,ikx_,iky_,iz_) + nadiab_moment_0j)
+        Tpar_  = Tpar_  + Knp0 * (SQRT2*nadiab_moments_i(ip2_i,in_,iky_,ikx_,iz_) + nadiab_moment_0j)
         ! Perpendicular temperature
         Tperp_ = Tperp_ + ((2._dp*n_dp+1._dp)*Knp0 - (n_dp+1._dp)*Knp1 - n_dp*Knm1)*nadiab_moment_0j
       ENDDO
       T_  = (Tpar_ + 2._dp*Tperp_)*onethird - n_
-      TColl_ = TColl_ + T_*SQRT2*Kernel_i(ij_,ikx_,iky_,iz_,eo_)
+      TColl_ = TColl_ + T_*SQRT2*Kernel_i(ij_,iky_,ikx_,iz_,eo_)
       !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 
     ENDIF
@@ -479,14 +485,14 @@ CONTAINS
     COMPLEX(dp) :: TColl
     INTEGER :: ikxs_C, ikxe_C, ikys_C, ikye_C
     DO iz = izs,ize
-      DO iky = ikys,ikye
-        DO ikx = ikxs,ikxe
+      DO ikx = ikxs,ikxe
+        DO iky = ikys,ikye
           IF(KIN_E) THEN
             DO ij = 1,Jmaxe+1
               ! Electrons
                 ! Loop over all p to compute sub collision term
                 DO ip = 1,total_np_e
-                  CALL apply_COSOlver_mat_e(ip,ij,ikx,iky,iz,TColl)
+                  CALL apply_COSOlver_mat_e(ip,ij,iky,ikx,iz,TColl)
                   local_sum_e(ip) = TColl
                 ENDDO
                 IF (num_procs_p .GT. 1) THEN
@@ -501,14 +507,14 @@ CONTAINS
                 ENDIF
                 ! Write in output variable
                 DO ip = ips_e,ipe_e
-                  TColl_e(ip,ij,ikx,iky,iz) = TColl_distr_e(ip)
+                  TColl_e(ip,ij,iky,ikx,iz) = TColl_distr_e(ip)
                 ENDDO
             ENDDO
           ENDIF
           ! Ions
           DO ij = 1,Jmaxi+1
             DO ip = 1,total_np_i
-              CALL apply_COSOlver_mat_i(ip,ij,ikx,iky,iz,TColl)
+              CALL apply_COSOlver_mat_i(ip,ij,iky,ikx,iz,TColl)
               local_sum_i(ip) = TColl
             ENDDO
             IF (num_procs_p .GT. 1) THEN
@@ -524,7 +530,7 @@ CONTAINS
             ENDIF
             ! Write in output variable
             DO ip = ips_i,ipe_i
-              TColl_i(ip,ij,ikx,iky,iz) = TColl_distr_i(ip)
+              TColl_i(ip,ij,iky,ikx,iz) = TColl_distr_i(ip)
             ENDDO
           ENDDO
         ENDDO
@@ -535,13 +541,13 @@ CONTAINS
   !******************************************************************************!
   !!!!!!! Compute electron collision term
   !******************************************************************************!
-  SUBROUTINE apply_COSOlver_mat_e(ip_,ij_,ikx_,iky_,iz_,TColl_)
+  SUBROUTINE apply_COSOlver_mat_e(ip_,ij_,iky_,ikx_,iz_,TColl_)
     IMPLICIT NONE
 
     INTEGER,     INTENT(IN)  :: ip_, ij_ ,ikx_, iky_, iz_
     COMPLEX(dp), INTENT(OUT) :: TColl_
 
-    INTEGER     :: ip2,ij2, p_int,j_int, p2_int,j2_int, ikx_C, iky_C, iz_C
+    INTEGER     :: ip2,ij2, p_int,j_int, p2_int,j2_int, iky_C, ikx_C, iz_C
     p_int = parray_e_full(ip_); j_int = jarray_e_full(ij_);
 
     IF (gyrokin_CO) THEN ! GK operator (k-dependant)
@@ -558,9 +564,9 @@ CONTAINS
       jloopee: DO ij2 = ijs_e,ije_e
         j2_int = jarray_e(ij2)
         IF((CLOS .NE. 1) .OR. (p2_int+2*j2_int .LE. dmaxe))&
-        TColl_ = TColl_ + nadiab_moments_e(ip2,ij2,ikx_,iky_,iz_) &
-           *( nu_e  * CeipjT(bare(p_int,j_int), bare(p2_int,j2_int),ikx_C, iky_C, iz_C) &
-             +nu_ee * Ceepj (bare(p_int,j_int), bare(p2_int,j2_int),ikx_C, iky_C, iz_C))
+        TColl_ = TColl_ + nadiab_moments_e(ip2,ij2,iky_,ikx_,iz_) &
+           *( nu_e  * CeipjT(bare(p_int,j_int), bare(p2_int,j2_int),iky_C, ikx_C, iz_C) &
+             +nu_ee * Ceepj (bare(p_int,j_int), bare(p2_int,j2_int),iky_C, ikx_C, iz_C))
       ENDDO jloopee
     ENDDO ploopee
 
@@ -570,8 +576,8 @@ CONTAINS
       jloopei: DO ij2 = ijs_i,ije_i
         j2_int = jarray_i(ij2)
         IF((CLOS .NE. 1) .OR. (p2_int+2*j2_int .LE. dmaxi))&
-        TColl_ = TColl_ + nadiab_moments_i(ip2,ij2,ikx_,iky_,iz_) &
-          *(nu_e * CeipjF(bare(p_int,j_int), bari(p2_int,j2_int),ikx_C, iky_C, iz_C))
+        TColl_ = TColl_ + nadiab_moments_i(ip2,ij2,iky_,ikx_,iz_) &
+          *(nu_e * CeipjF(bare(p_int,j_int), bari(p2_int,j2_int),iky_C, ikx_C, iz_C))
       END DO jloopei
     ENDDO ploopei
 
@@ -580,12 +586,12 @@ CONTAINS
   !******************************************************************************!
   !!!!!!! Compute ion collision term
   !******************************************************************************!
-  SUBROUTINE apply_COSOlver_mat_i(ip_,ij_,ikx_,iky_,iz_,TColl_)
+  SUBROUTINE apply_COSOlver_mat_i(ip_,ij_,iky_,ikx_,iz_,TColl_)
     IMPLICIT NONE
     INTEGER,     INTENT(IN)    :: ip_, ij_ ,ikx_, iky_, iz_
     COMPLEX(dp), INTENT(OUT)   :: TColl_
 
-    INTEGER     :: ip2,ij2, p_int,j_int, p2_int,j2_int, ikx_C, iky_C, iz_C
+    INTEGER     :: ip2,ij2, p_int,j_int, p2_int,j2_int, iky_C, ikx_C, iz_C
     p_int = parray_i_full(ip_); j_int = jarray_i_full(ij_);
 
     IF (gyrokin_CO) THEN ! GK operator (k-dependant)
@@ -602,11 +608,11 @@ CONTAINS
         j2_int = jarray_i(ij2)
         IF((CLOS .NE. 1) .OR. (p2_int+2*j2_int .LE. dmaxi))&
         ! Ion-ion collision
-        TColl_ = TColl_ + nadiab_moments_i(ip2,ij2,ikx_,iky_,iz_) &
-            * nu_i  * Ciipj (bari(p_int,j_int), bari(p2_int,j2_int), ikx_C, iky_C, iz_C)
+        TColl_ = TColl_ + nadiab_moments_i(ip2,ij2,iky_,ikx_,iz_) &
+            * nu_i  * Ciipj (bari(p_int,j_int), bari(p2_int,j2_int), iky_C, ikx_C, iz_C)
         IF(KIN_E) & ! Ion-electron collision test
-        TColl_ = TColl_ + nadiab_moments_i(ip2,ij2,ikx_,iky_,iz_) &
-            * nu_ie * CiepjT(bari(p_int,j_int), bari(p2_int,j2_int), ikx_C, iky_C, iz_C)
+        TColl_ = TColl_ + nadiab_moments_i(ip2,ij2,iky_,ikx_,iz_) &
+            * nu_ie * CiepjT(bari(p_int,j_int), bari(p2_int,j2_int), iky_C, ikx_C, iz_C)
       ENDDO jloopii
     ENDDO ploopii
 
@@ -616,8 +622,8 @@ CONTAINS
       jloopie: DO ij2 = ijs_e,ije_e
         j2_int = jarray_e(ij2)
         IF((CLOS .NE. 1) .OR. (p2_int+2*j2_int .LE. dmaxe))&
-        TColl_ = TColl_ + nadiab_moments_e(ip2,ij2,ikx_,iky_,iz_) &
-          *(nu_ie * CiepjF(bari(p_int,j_int), bare(p2_int,j2_int), ikx_C, iky_C, iz_C))
+        TColl_ = TColl_ + nadiab_moments_e(ip2,ij2,iky_,ikx_,iz_) &
+          *(nu_ie * CiepjF(bari(p_int,j_int), bare(p2_int,j2_int), iky_C, ikx_C, iz_C))
       ENDDO jloopie
     ENDDO ploopie
     ENDIF
@@ -834,7 +840,7 @@ CONTAINS
           DO iky = ikys,ikye
             DO iz = izs,ize
               ! Check for nonlinear case if we are in the anti aliased domain or the filtered one
-              kperp_sim = kparray(ikx,iky,iz,0) ! current simulation kperp
+              kperp_sim = kparray(iky,ikx,iz,0) ! current simulation kperp
               ! Find the interval in kp grid mat where kperp_sim is contained
               ! Loop over the whole kp mat grid to find the smallest kperp that is
               ! larger than the current kperp_sim (brute force...)
@@ -854,18 +860,18 @@ CONTAINS
               ! 0->1 variable for linear interp, i.e. zero2one = (k-k0)/(k1-k0)
               zerotoone = (kperp_sim - kp_grid_mat(ikp_prev))/(kp_grid_mat(ikp_next) - kp_grid_mat(ikp_prev))
               ! Linear interpolation between previous and next kperp matrix values
-              Ceepj (:,:,ikx,iky,iz) = (Ceepj__kp(:,:,ikp_next) - Ceepj__kp(:,:,ikp_prev))*zerotoone + Ceepj__kp(:,:,ikp_prev)
-              Ciipj (:,:,ikx,iky,iz) = (Ciipj__kp(:,:,ikp_next) - Ciipj__kp(:,:,ikp_prev))*zerotoone + Ciipj__kp(:,:,ikp_prev)
+              Ceepj (:,:,iky,ikx,iz) = (Ceepj__kp(:,:,ikp_next) - Ceepj__kp(:,:,ikp_prev))*zerotoone + Ceepj__kp(:,:,ikp_prev)
+              Ciipj (:,:,iky,ikx,iz) = (Ciipj__kp(:,:,ikp_next) - Ciipj__kp(:,:,ikp_prev))*zerotoone + Ciipj__kp(:,:,ikp_prev)
               IF(interspecies) THEN
-                CeipjT(:,:,ikx,iky,iz) = (CeipjT_kp(:,:,ikp_next) - CeipjT_kp(:,:,ikp_prev))*zerotoone + CeipjT_kp(:,:,ikp_prev)
-                CeipjF(:,:,ikx,iky,iz) = (CeipjF_kp(:,:,ikp_next) - CeipjF_kp(:,:,ikp_prev))*zerotoone + CeipjF_kp(:,:,ikp_prev)
-                CiepjT(:,:,ikx,iky,iz) = (CiepjT_kp(:,:,ikp_next) - CiepjT_kp(:,:,ikp_prev))*zerotoone + CiepjT_kp(:,:,ikp_prev)
-                CiepjF(:,:,ikx,iky,iz) = (CiepjF_kp(:,:,ikp_next) - CiepjF_kp(:,:,ikp_prev))*zerotoone + CiepjF_kp(:,:,ikp_prev)
+                CeipjT(:,:,iky,ikx,iz) = (CeipjT_kp(:,:,ikp_next) - CeipjT_kp(:,:,ikp_prev))*zerotoone + CeipjT_kp(:,:,ikp_prev)
+                CeipjF(:,:,iky,ikx,iz) = (CeipjF_kp(:,:,ikp_next) - CeipjF_kp(:,:,ikp_prev))*zerotoone + CeipjF_kp(:,:,ikp_prev)
+                CiepjT(:,:,iky,ikx,iz) = (CiepjT_kp(:,:,ikp_next) - CiepjT_kp(:,:,ikp_prev))*zerotoone + CiepjT_kp(:,:,ikp_prev)
+                CiepjF(:,:,iky,ikx,iz) = (CiepjF_kp(:,:,ikp_next) - CiepjF_kp(:,:,ikp_prev))*zerotoone + CiepjF_kp(:,:,ikp_prev)
               ELSE
-                CeipjT(:,:,ikx,iky,iz) = 0._dp
-                CeipjF(:,:,ikx,iky,iz) = 0._dp
-                CiepjT(:,:,ikx,iky,iz) = 0._dp
-                CiepjF(:,:,ikx,iky,iz) = 0._dp
+                CeipjT(:,:,iky,ikx,iz) = 0._dp
+                CeipjF(:,:,iky,ikx,iz) = 0._dp
+                CiepjT(:,:,iky,ikx,iz) = 0._dp
+                CiepjF(:,:,iky,ikx,iz) = 0._dp
               ENDIF
             ENDDO
           ENDDO
diff --git a/src/diagnose.F90 b/src/diagnose.F90
index c5b45f0dd97a95be2ae6a2eaf559840ca7fad87b..925f515b039d666129b75cd6ccf1106e7b00aea5 100644
--- a/src/diagnose.F90
+++ b/src/diagnose.F90
@@ -88,8 +88,8 @@ SUBROUTINE diagnose(kstep)
      CALL putarrnd(fidres, "/data/metric/gradzB",      gradzB(izs:ize,0:1), (/1, 1, 1/))
      CALL putarrnd(fidres, "/data/metric/Jacobian",    Jacobian(izs:ize,0:1), (/1, 1, 1/))
      CALL putarrnd(fidres, "/data/metric/gradz_coeff", gradz_coeff(izs:ize,0:1), (/1, 1, 1/))
-     CALL putarrnd(fidres, "/data/metric/Ckxky",       Ckxky(ikxs:ikxe,ikys:ikye,izs:ize,0:1), (/1, 1, 3/))
-     CALL putarrnd(fidres, "/data/metric/kernel_i",    kernel_i(ijs_i:ije_i,ikxs:ikxe,ikys:ikye,izs:ize,0:1), (/ 1, 2, 4/))
+     CALL putarrnd(fidres, "/data/metric/Ckxky",       Ckxky(ikys:ikye,ikxs:ikxe,izs:ize,0:1), (/1, 1, 3/))
+     CALL putarrnd(fidres, "/data/metric/kernel_i",    kernel_i(ijs_i:ije_i,ikys:ikye,ikxs:ikxe,izs:ize,0:1), (/ 1, 2, 4/))
 
      !  var0d group (gyro transport)
      IF (nsave_0d .GT. 0) THEN
@@ -217,7 +217,7 @@ SUBROUTINE diagnose(kstep)
      CALL attach(fidres, TRIM(str),    "cpu_time",       -1)
      CALL attach(fidres, TRIM(str),       "Nproc",   num_procs)
      CALL attach(fidres, TRIM(str),       "Np_p" , num_procs_p)
-     CALL attach(fidres, TRIM(str),       "Np_kx",num_procs_kx)
+     CALL attach(fidres, TRIM(str),       "Np_kx",num_procs_ky)
      CALL attach(fidres, TRIM(str), "write_gamma", write_gamma)
      CALL attach(fidres, TRIM(str),    "write_hf",    write_hf)
      CALL attach(fidres, TRIM(str),   "write_phi",   write_phi)
@@ -383,7 +383,7 @@ SUBROUTINE diagnose_2d
 
   IMPLICIT NONE
 
-  COMPLEX(dp) :: buffer(ikxs:ikxe,ikys:ikye)
+  COMPLEX(dp) :: buffer(ikys:ikye,ikxs:ikxe)
   INTEGER     :: i_, root, world_rank, world_size
 
   CALL append(fidres,  "/data/var2d/time",           time,ionode=0)
@@ -398,24 +398,24 @@ CONTAINS
     USE futils, ONLY: attach, putarr
     USE grid, ONLY: ikxs,ikxe, ikys,ikye, Nkx, Nky, local_nkx
     USE prec_const
-    USE basic, ONLY : comm_kx, num_procs_p, rank_p
+    USE basic, ONLY : comm_ky, num_procs_p, rank_p
     IMPLICIT NONE
 
-    COMPLEX(dp), DIMENSION(ikxs:ikxe, ikys:ikye), INTENT(IN) :: field
+    COMPLEX(dp), DIMENSION(ikys:ikye,ikxs:ikxe), INTENT(IN) :: field
     CHARACTER(*), INTENT(IN) :: text
-    COMPLEX(dp) :: buffer_dist(ikxs:ikxe,ikys:ikye)
-    COMPLEX(dp) :: buffer_full(1:Nkx,1:Nky)
+    COMPLEX(dp) :: buffer_dist(ikys:ikye,ikxs:ikxe)
+    COMPLEX(dp) :: buffer_full(1:Nky,1:Nkx)
     INTEGER     :: scount, rcount
     CHARACTER(LEN=50) :: dset_name
 
-    scount = (ikxe-ikxs+1) * (ikye-ikys+1)
+    scount = (ikye-ikys+1) * (ikxe-ikxs+1)
     rcount = scount
 
     WRITE(dset_name, "(A, '/', A, '/', i6.6)") "/data/var2d", TRIM(text), iframe2d
     IF (num_procs .EQ. 1) THEN ! no data distribution
-      CALL putarr(fidres, dset_name, field(ikxs:ikxe, ikys:ikye), ionode=0)
+      CALL putarr(fidres, dset_name, field(ikys:ikye,ikxs:ikxe), ionode=0)
     ELSE
-      CALL putarrnd(fidres, dset_name, field(ikxs:ikxe, ikys:ikye),  (/1, 1/))
+      CALL putarrnd(fidres, dset_name, field(ikys:ikye,ikxs:ikxe),  (/1, 1/))
     ENDIF
     CALL attach(fidres, dset_name, "time", time)
 
@@ -446,21 +446,21 @@ SUBROUTINE diagnose_3d
   iframe3d=iframe3d+1
   CALL attach(fidres,"/data/var3d/" , "frames", iframe3d)
 
-  IF (write_phi) CALL write_field3d(phi (ikxs:ikxe,ikys:ikye,izs:ize), 'phi')
+  IF (write_phi) CALL write_field3d(phi (ikys:ikye,ikxs:ikxe,izs:ize), 'phi')
 
   IF (write_Na00) THEN
     IF(KIN_E)THEN
     IF (ips_e .EQ. 1) THEN
-      Ne00(ikxs:ikxe,ikys:ikye,izs:ize) = moments_e(ips_e,1,ikxs:ikxe,ikys:ikye,izs:ize,updatetlevel)
+      Ne00(ikys:ikye,ikxs:ikxe,izs:ize) = moments_e(ips_e,1,ikys:ikye,ikxs:ikxe,izs:ize,updatetlevel)
     ENDIF
-    ! CALL manual_3D_bcast(Ne00(ikxs:ikxe,ikys:ikye,izs:ize))
-    CALL write_field3d(Ne00(ikxs:ikxe,ikys:ikye,izs:ize), 'Ne00')
+    ! CALL manual_3D_bcast(Ne00(ikys:ikye,ikxs:ikxe,izs:ize))
+    CALL write_field3d(Ne00(ikys:ikye,ikxs:ikxe,izs:ize), 'Ne00')
     ENDIF
     IF (ips_i .EQ. 1) THEN
-      Ni00(ikxs:ikxe,ikys:ikye,izs:ize) = moments_i(ips_e,1,ikxs:ikxe,ikys:ikye,izs:ize,updatetlevel)
+      Ni00(ikys:ikye,ikxs:ikxe,izs:ize) = moments_i(ips_e,1,ikys:ikye,ikxs:ikxe,izs:ize,updatetlevel)
     ENDIF
-    ! CALL manual_3D_bcast(Ni00(ikxs:ikxe,ikys:ikye,izs:ize))
-    CALL write_field3d(Ni00(ikxs:ikxe,ikys:ikye,izs:ize), 'Ni00')
+    ! CALL manual_3D_bcast(Ni00(ikys:ikye,ikxs:ikxe,izs:ize))
+    CALL write_field3d(Ni00(ikys:ikye,ikxs:ikxe,izs:ize), 'Ni00')
   ENDIF
 
   !! Fuid moments
@@ -469,29 +469,29 @@ SUBROUTINE diagnose_3d
 
   IF (write_dens) THEN
     IF(KIN_E)&
-    CALL write_field3d(dens_e(ikxs:ikxe,ikys:ikye,izs:ize), 'dens_e')
-    CALL write_field3d(dens_i(ikxs:ikxe,ikys:ikye,izs:ize), 'dens_i')
+    CALL write_field3d(dens_e(ikys:ikye,ikxs:ikxe,izs:ize), 'dens_e')
+    CALL write_field3d(dens_i(ikys:ikye,ikxs:ikxe,izs:ize), 'dens_i')
   ENDIF
 
   IF (write_fvel) THEN
     IF(KIN_E)&
-    CALL write_field3d(upar_e(ikxs:ikxe,ikys:ikye,izs:ize), 'upar_e')
-    CALL write_field3d(upar_i(ikxs:ikxe,ikys:ikye,izs:ize), 'upar_i')
+    CALL write_field3d(upar_e(ikys:ikye,ikxs:ikxe,izs:ize), 'upar_e')
+    CALL write_field3d(upar_i(ikys:ikye,ikxs:ikxe,izs:ize), 'upar_i')
     IF(KIN_E)&
-    CALL write_field3d(uper_e(ikxs:ikxe,ikys:ikye,izs:ize), 'uper_e')
-    CALL write_field3d(uper_i(ikxs:ikxe,ikys:ikye,izs:ize), 'uper_i')
+    CALL write_field3d(uper_e(ikys:ikye,ikxs:ikxe,izs:ize), 'uper_e')
+    CALL write_field3d(uper_i(ikys:ikye,ikxs:ikxe,izs:ize), 'uper_i')
   ENDIF
 
   IF (write_temp) THEN
     IF(KIN_E)&
-    CALL write_field3d(Tpar_e(ikxs:ikxe,ikys:ikye,izs:ize), 'Tpar_e')
-    CALL write_field3d(Tpar_i(ikxs:ikxe,ikys:ikye,izs:ize), 'Tpar_i')
+    CALL write_field3d(Tpar_e(ikys:ikye,ikxs:ikxe,izs:ize), 'Tpar_e')
+    CALL write_field3d(Tpar_i(ikys:ikye,ikxs:ikxe,izs:ize), 'Tpar_i')
     IF(KIN_E)&
-    CALL write_field3d(Tper_e(ikxs:ikxe,ikys:ikye,izs:ize), 'Tper_e')
-    CALL write_field3d(Tper_i(ikxs:ikxe,ikys:ikye,izs:ize), 'Tper_i')
+    CALL write_field3d(Tper_e(ikys:ikye,ikxs:ikxe,izs:ize), 'Tper_e')
+    CALL write_field3d(Tper_i(ikys:ikye,ikxs:ikxe,izs:ize), 'Tper_i')
     IF(KIN_E)&
-    CALL write_field3d(temp_e(ikxs:ikxe,ikys:ikye,izs:ize), 'temp_e')
-    CALL write_field3d(temp_i(ikxs:ikxe,ikys:ikye,izs:ize), 'temp_i')
+    CALL write_field3d(temp_e(ikys:ikye,ikxs:ikxe,izs:ize), 'temp_e')
+    CALL write_field3d(temp_i(ikys:ikye,ikxs:ikxe,izs:ize), 'temp_i')
   ENDIF
 
 CONTAINS
@@ -500,18 +500,18 @@ CONTAINS
     USE futils, ONLY: attach, putarr
     USE grid, ONLY: ikxs,ikxe, ikys,ikye, Nkx, Nky, local_nkx
     USE prec_const
-    USE basic, ONLY : comm_kx, num_procs_p, rank_p
+    USE basic, ONLY : comm_ky, num_procs_p, rank_p
     IMPLICIT NONE
 
-    COMPLEX(dp), DIMENSION(ikxs:ikxe, ikys:ikye, izs:ize), INTENT(IN) :: field
+    COMPLEX(dp), DIMENSION(ikys:ikye,ikxs:ikxe, izs:ize), INTENT(IN) :: field
     CHARACTER(*), INTENT(IN) :: text
     CHARACTER(LEN=50) :: dset_name
 
     WRITE(dset_name, "(A, '/', A, '/', i6.6)") "/data/var3d", TRIM(text), iframe3d
     IF (num_procs .EQ. 1) THEN ! no data distribution
-      CALL putarr(fidres, dset_name, field(ikxs:ikxe, ikys:ikye, izs:ize), ionode=0)
+      CALL putarr(fidres, dset_name, field(ikys:ikye,ikxs:ikxe, izs:ize), ionode=0)
     ELSE
-      CALL putarrnd(fidres, dset_name, field(ikxs:ikxe, ikys:ikye, izs:ize),  (/1, 1, 3/))
+      CALL putarrnd(fidres, dset_name, field(ikys:ikye,ikxs:ikxe, izs:ize),  (/1, 1, 3/))
     ENDIF
     CALL attach(fidres, dset_name, "time", time)
 
@@ -526,7 +526,8 @@ SUBROUTINE diagnose_5d
    USE fields
    USE array!, ONLY: Sepj, Sipj
    USE grid, ONLY: ips_e,ipe_e, ips_i, ipe_i, &
-                   ijs_e,ije_e, ijs_i, ije_i
+                   ijs_e,ije_e, ijs_i, ije_i, &
+                   ikxs,ikxe,ikys,ikye,izs,ize
    USE time_integration
    USE diagnostics_par
    USE prec_const
@@ -541,14 +542,14 @@ SUBROUTINE diagnose_5d
 
    IF (write_Napj) THEN
      IF(KIN_E)&
-    CALL write_field5d_e(moments_e(ips_e:ipe_e,ijs_e:ije_e,:,:,:,updatetlevel), 'moments_e')
-    CALL write_field5d_i(moments_i(ips_i:ipe_i,ijs_i:ije_i,:,:,:,updatetlevel), 'moments_i')
+    CALL write_field5d_e(moments_e(ips_e:ipe_e,ijs_e:ije_e,ikys:ikye,ikxs:ikxe,izs:ize,updatetlevel), 'moments_e')
+    CALL write_field5d_i(moments_i(ips_i:ipe_i,ijs_i:ije_i,ikys:ikye,ikxs:ikxe,izs:ize,updatetlevel), 'moments_i')
    ENDIF
 
    IF (write_Sapj) THEN
      IF(KIN_E)&
-     CALL write_field5d_e(Sepj(ips_e:ipe_e,ijs_e:ije_e,:,:,:), 'Sepj')
-     CALL write_field5d_i(Sipj(ips_i:ipe_i,ijs_i:ije_i,:,:,:), 'Sipj')
+     CALL write_field5d_e(Sepj(ips_e:ipe_e,ijs_e:ije_e,ikys:ikye,ikxs:ikxe,izs:ize), 'Sepj')
+     CALL write_field5d_i(Sipj(ips_i:ipe_i,ijs_i:ije_i,ikys:ikye,ikxs:ikxe,izs:ize), 'Sipj')
    ENDIF
 
  CONTAINS
@@ -559,16 +560,16 @@ SUBROUTINE diagnose_5d
      USE prec_const
      IMPLICIT NONE
 
-     COMPLEX(dp), DIMENSION(ips_e:ipe_e,ijs_e:ije_e,ikxs:ikxe,ikys:ikye,izs:ize), INTENT(IN) :: field
+     COMPLEX(dp), DIMENSION(ips_e:ipe_e,ijs_e:ije_e,ikys:ikye,ikxs:ikxe,izs:ize), INTENT(IN) :: field
      CHARACTER(*), INTENT(IN) :: text
 
      CHARACTER(LEN=50) :: dset_name
 
      WRITE(dset_name, "(A, '/', A, '/', i6.6)") "/data/var5d", TRIM(text), iframe5d
      IF (num_procs .EQ. 1) THEN
-       CALL putarr(fidres, dset_name, field(ips_e:ipe_e,ijs_e:ije_e,ikxs:ikxe,ikys:ikye,izs:ize), ionode=0)
+       CALL putarr(fidres, dset_name, field(ips_e:ipe_e,ijs_e:ije_e,ikys:ikye,ikxs:ikxe,izs:ize), ionode=0)
      ELSE
-       CALL putarrnd(fidres, dset_name, field(ips_e:ipe_e,ijs_e:ije_e,ikxs:ikxe,ikys:ikye,izs:ize),  (/1,3,5/))
+       CALL putarrnd(fidres, dset_name, field(ips_e:ipe_e,ijs_e:ije_e,ikys:ikye,ikxs:ikxe,izs:ize),  (/1,3,5/))
      ENDIF
      CALL attach(fidres, dset_name, 'cstep', cstep)
      CALL attach(fidres, dset_name, 'time', time)
@@ -585,16 +586,16 @@ SUBROUTINE diagnose_5d
       USE prec_const
       IMPLICIT NONE
 
-      COMPLEX(dp), DIMENSION(ips_i:ipe_i,ijs_i:ije_i,ikxs:ikxe,ikys:ikye,izs:ize), INTENT(IN) :: field
+      COMPLEX(dp), DIMENSION(ips_i:ipe_i,ijs_i:ije_i,ikys:ikye,ikxs:ikxe,izs:ize), INTENT(IN) :: field
       CHARACTER(*), INTENT(IN) :: text
 
       CHARACTER(LEN=50) :: dset_name
 
       WRITE(dset_name, "(A, '/', A, '/', i6.6)") "/data/var5d", TRIM(text), iframe5d
       IF (num_procs .EQ. 1) THEN
-        CALL putarr(fidres, dset_name, field(ips_i:ipe_i,ijs_i:ije_i,ikxs:ikxe,ikys:ikye,izs:ize), ionode=0)
+        CALL putarr(fidres, dset_name, field(ips_i:ipe_i,ijs_i:ije_i,ikys:ikye,ikxs:ikxe,izs:ize), ionode=0)
       ELSE
-        CALL putarrnd(fidres, dset_name, field(ips_i:ipe_i,ijs_i:ije_i,ikxs:ikxe,ikys:ikye,izs:ize),  (/1,3,5/))
+        CALL putarrnd(fidres, dset_name, field(ips_i:ipe_i,ijs_i:ije_i,ikys:ikye,ikxs:ikxe,izs:ize),  (/1,3,5/))
       ENDIF
      CALL attach(fidres, dset_name, 'cstep', cstep)
      CALL attach(fidres, dset_name, 'time', time)
diff --git a/src/fourier_mod.F90 b/src/fourier_mod.F90
index 5b947db46e95fbfcc79853df21afed50341d2d15..cdc2fefa87e990ffae94a1d50baaf3460b622e7c 100644
--- a/src/fourier_mod.F90
+++ b/src/fourier_mod.F90
@@ -20,7 +20,7 @@ MODULE fourier
   type(C_PTR) , PUBLIC                   :: planf, planb
   integer(C_INTPTR_T)                    :: i, ix, iy
   integer(C_INTPTR_T), PUBLIC            :: alloc_local_1, alloc_local_2
-  integer(C_INTPTR_T)                    :: NX_, NY_, NX_halved
+  integer(C_INTPTR_T)                    :: NX_, NY_, NY_halved
   integer                                :: communicator
   ! many plan data variables
   integer(C_INTPTR_T) :: howmany=9 ! numer of eleemnt of the tensor
@@ -34,38 +34,38 @@ MODULE fourier
 
     INTEGER, INTENT(IN) :: Nx,Ny
     NX_ = Nx; NY_ = Ny
-    NX_halved = NX_/2 + 1
+    NY_halved = NY_/2 + 1
 
     ! communicator = MPI_COMM_WORLD
-    communicator = comm_kx
+    communicator = comm_ky
 
     !! Complex arrays F, G
     ! Compute the room to allocate
-    alloc_local_1 = fftw_mpi_local_size_2d(NX_halved, NY_, communicator, local_nkx, local_nkx_offset)
+    alloc_local_1 = fftw_mpi_local_size_2d(NY_halved, NX_, communicator, local_nky, local_nky_offset)
     ! Initalize pointers to this room
     cdatac_f = fftw_alloc_complex(alloc_local_1)
     cdatac_g = fftw_alloc_complex(alloc_local_1)
     cdatac_c = fftw_alloc_complex(alloc_local_1)
     ! Initalize the arrays with the rooms pointed
-    call c_f_pointer(cdatac_f, cmpx_data_f, [NY_ ,local_nkx])
-    call c_f_pointer(cdatac_g, cmpx_data_g, [NY_ ,local_nkx])
-    call c_f_pointer(cdatac_c, bracket_sum_c, [NY_ ,local_nkx])
+    call c_f_pointer(cdatac_f,   cmpx_data_f, [NX_ ,local_nky])
+    call c_f_pointer(cdatac_g,   cmpx_data_g, [NX_ ,local_nky])
+    call c_f_pointer(cdatac_c, bracket_sum_c, [NX_ ,local_nky])
 
     !! Real arrays iFFT(F), iFFT(G)
     ! Compute the room to allocate
-    alloc_local_2 = fftw_mpi_local_size_2d(NY_, NX_halved, communicator, local_nky, local_nky_offset)
+    alloc_local_2 = fftw_mpi_local_size_2d(NX_, NY_halved, communicator, local_nkx, local_nkx_offset)
     ! Initalize pointers to this room
     cdatar_f = fftw_alloc_real(2*alloc_local_2)
     cdatar_g = fftw_alloc_real(2*alloc_local_2)
     cdatar_c = fftw_alloc_real(2*alloc_local_2)
     ! Initalize the arrays with the rooms pointed
-    call c_f_pointer(cdatar_f, real_data_f, [2*(NX_/2  + 1),local_nky])
-    call c_f_pointer(cdatar_g, real_data_g, [2*(NX_/2  + 1),local_nky])
-    call c_f_pointer(cdatar_c, bracket_sum_r, [2*(NX_/2  + 1),local_nky])
+    call c_f_pointer(cdatar_f,   real_data_f, [2*(NY_/2  + 1),local_nkx])
+    call c_f_pointer(cdatar_g,   real_data_g, [2*(NY_/2  + 1),local_nkx])
+    call c_f_pointer(cdatar_c, bracket_sum_r, [2*(NY_/2  + 1),local_nkx])
 
     ! Plan Creation (out-of-place forward and backward FFT)
-    planf = fftw_mpi_plan_dft_r2c_2D(NY_, NX_, real_data_f, cmpx_data_f, communicator,  ior(FFTW_MEASURE, FFTW_MPI_TRANSPOSED_OUT))
-    planb = fftw_mpi_plan_dft_c2r_2D(NY_, NX_, cmpx_data_f, real_data_f, communicator,  ior(FFTW_MEASURE, FFTW_MPI_TRANSPOSED_IN))
+    planf = fftw_mpi_plan_dft_r2c_2D(NX_, NY_, real_data_f, cmpx_data_f, communicator,  ior(FFTW_MEASURE, FFTW_MPI_TRANSPOSED_OUT))
+    planb = fftw_mpi_plan_dft_c2r_2D(NX_, NY_, cmpx_data_f, real_data_f, communicator,  ior(FFTW_MEASURE, FFTW_MPI_TRANSPOSED_IN))
 
    if ((.not. c_associated(planf)) .OR. (.not. c_associated(planb))) then
       write(*,*) "plan creation error!!"
@@ -79,15 +79,15 @@ MODULE fourier
   !   - Compute the convolution using the convolution theorem
   SUBROUTINE poisson_bracket_and_sum( F_, G_)
     IMPLICIT NONE
-    COMPLEX(C_DOUBLE_COMPLEX), DIMENSION(ikxs:ikxe,ikys:ikye),&
+    COMPLEX(C_DOUBLE_COMPLEX), DIMENSION(ikys:ikye,ikxs:ikxe),&
                     INTENT(IN)  :: F_, G_ ! input fields
     ! First term df/dx x dg/dy
     DO ikx = ikxs, ikxe
       DO iky = ikys, ikye
-        cmpx_data_f(iky,ikx-local_nkx_offset) = &
-              imagu*kxarray(ikx)*F_(ikx,iky)*AA_x(ikx)*AA_y(iky) !Anti aliasing filter
-        cmpx_data_g(iky,ikx-local_nkx_offset) = &
-              imagu*kyarray(iky)*G_(ikx,iky)*AA_x(ikx)*AA_y(iky) !Anti aliasing filter
+        cmpx_data_f(ikx,iky-local_nky_offset) = &
+              imagu*kxarray(ikx)*F_(iky,ikx)*AA_x(ikx)*AA_y(iky) !Anti aliasing filter
+        cmpx_data_g(ikx,iky-local_nky_offset) = &
+              imagu*kyarray(iky)*G_(iky,ikx)*AA_x(ikx)*AA_y(iky) !Anti aliasing filter
       ENDDO
     ENDDO
     call fftw_mpi_execute_dft_c2r(planb, cmpx_data_f, real_data_f)
@@ -96,10 +96,10 @@ MODULE fourier
     ! Second term -df/dy x dg/dx
     DO ikx = ikxs, ikxe
       DO iky = ikys, ikye
-        cmpx_data_f(iky,ikx-local_nkx_offset) = &
-              imagu*kyarray(iky)*F_(ikx,iky)*AA_x(ikx)*AA_y(iky) !Anti aliasing filter
-        cmpx_data_g(iky,ikx-local_nkx_offset) = &
-              imagu*kxarray(ikx)*G_(ikx,iky)*AA_x(ikx)*AA_y(iky) !Anti aliasing filter
+        cmpx_data_f(ikx,iky-local_nky_offset) = &
+              imagu*kyarray(iky)*F_(iky,ikx)*AA_x(ikx)*AA_y(iky) !Anti aliasing filter
+        cmpx_data_g(ikx,iky-local_nky_offset) = &
+              imagu*kxarray(ikx)*G_(iky,ikx)*AA_x(ikx)*AA_y(iky) !Anti aliasing filter
       ENDDO
     ENDDO
     call fftw_mpi_execute_dft_c2r(planb, cmpx_data_f, real_data_f)
@@ -111,13 +111,13 @@ END SUBROUTINE poisson_bracket_and_sum
 !   - Compute the convolution using the convolution theorem
 SUBROUTINE convolve_and_add( F_, G_)
   IMPLICIT NONE
-  COMPLEX(C_DOUBLE_COMPLEX), DIMENSION(ikxs:ikxe,ikys:ikye),&
+  COMPLEX(C_DOUBLE_COMPLEX), DIMENSION(ikys:ikye,ikxs:ikxe),&
                   INTENT(IN)  :: F_, G_ ! input fields
   ! First term df/dx x dg/dy
   DO ikx = ikxs, ikxe
     DO iky = ikys, ikye
-      cmpx_data_f(iky,ikx-local_nkx_offset) = F_(ikx,iky)*AA_x(ikx)*AA_y(iky) !Anti aliasing filter
-      cmpx_data_g(iky,ikx-local_nkx_offset) = G_(ikx,iky)*AA_x(ikx)*AA_y(iky) !Anti aliasing filter
+      cmpx_data_f(ikx,iky-local_nky_offset) = F_(iky,ikx)*AA_x(ikx)*AA_y(iky) !Anti aliasing filter
+      cmpx_data_g(ikx,iky-local_nky_offset) = G_(iky,ikx)*AA_x(ikx)*AA_y(iky) !Anti aliasing filter
     ENDDO
   ENDDO
   call fftw_mpi_execute_dft_c2r(planb, cmpx_data_f, real_data_f)
diff --git a/src/geometry_mod.F90 b/src/geometry_mod.F90
index 9c8ff8097e06448e69e5835116a215f32fc2361e..f57942cc4c2deeb5125c95c420aa424b9a6b9b4f 100644
--- a/src/geometry_mod.F90
+++ b/src/geometry_mod.F90
@@ -86,7 +86,7 @@ CONTAINS
         DO ikx = ikxs, ikxe
           kx = kxarray(ikx)
           DO iz = izgs,izge
-             kparray(ikx, iky, iz, eo) = &
+             kparray(iky, ikx, iz, eo) = &
               SQRT( gxx(iz,eo)*kx**2 + 2._dp*gxy(iz,eo)*kx*ky + gyy(iz,eo)*ky**2)/hatB(iz,eo)
               ! there is a factor 1/B from the normalization; important to match GENE
           ENDDO
@@ -209,7 +209,7 @@ CONTAINS
           ky = kyarray(iky)
            DO ikx= ikxs, ikxe
              kx = kxarray(ikx)
-             Ckxky(ikx, iky, iz,eo) = - ky * hatB(iz,eo) ! .. multiply by hatB to cancel the 1/ hatB factor in moments_eqs_rhs.f90 routine
+             Ckxky(iky, ikx, iz,eo) = - ky * hatB(iz,eo) ! .. multiply by hatB to cancel the 1/ hatB factor in moments_eqs_rhs.f90 routine
            ENDDO
         ENDDO
       ! coefficient in the front of parallel derivative
@@ -266,7 +266,7 @@ CONTAINS
    SUBROUTINE geometry_allocate_mem
 
        ! Curvature and geometry
-       CALL allocate_array( Ckxky,   ikxs,ikxe, ikys,ikye,izgs,izge,0,1)
+       CALL allocate_array( Ckxky,   ikys,ikye, ikxs,ikxe,izgs,izge,0,1)
        CALL allocate_array(   Jacobian,izgs,izge, 0,1)
        CALL allocate_array(        gxx,izgs,izge, 0,1)
        CALL allocate_array(        gxy,izgs,izge, 0,1)
@@ -286,7 +286,7 @@ CONTAINS
        CALL allocate_array(       dxdR,izgs,izge, 0,1)
        CALL allocate_array(       dxdZ,izgs,izge, 0,1)
        call allocate_array(gradz_coeff,izgs,izge, 0,1)
-       CALL allocate_array( kparray, ikxs,ikxe, ikys,ikye,izgs,izge,0,1)
+       CALL allocate_array( kparray, ikys,ikye, ikxs,ikxe,izgs,izge,0,1)
 
    END SUBROUTINE geometry_allocate_mem
 
diff --git a/src/ghosts_mod.F90 b/src/ghosts_mod.F90
index fee016af6f8b112176188be96c381bb3a580c8b9..59cf8ab72e3341fc606ab98160fe7c935449ba57 100644
--- a/src/ghosts_mod.F90
+++ b/src/ghosts_mod.F90
@@ -45,7 +45,7 @@ SUBROUTINE update_ghosts_p_e
 
     IMPLICIT NONE
 
-    count = (ijge_e-ijgs_e+1)*(ikxe-ikxs+1)*(ikye-ikys+1)*(izge-izgs+1)
+    count = (ijge_e-ijgs_e+1)*(ikye-ikys+1)*(ikxe-ikxs+1)*(izge-izgs+1)
 
     !!!!!!!!!!! Send ghost to right neighbour !!!!!!!!!!!!!!!!!!!!!!
     ! Send the last local moment to fill the -1 neighbour ghost
@@ -73,7 +73,7 @@ SUBROUTINE update_ghosts_p_i
 
     IMPLICIT NONE
 
-    count = (ijge_i-ijgs_i+1)*(ikxe-ikxs+1)*(ikye-ikys+1)*(izge-izgs+1) ! Number of elements sent
+    count = (ijge_i-ijgs_i+1)*(ikye-ikys+1)*(ikxe-ikxs+1)*(izge-izgs+1) ! Number of elements sent
 
     !!!!!!!!!!! Send ghost to right neighbour !!!!!!!!!!!!!!!!!!!!!!
     CALL mpi_sendrecv(moments_i(ipe_i  ,:,:,:,:,updatetlevel), count, MPI_DOUBLE_COMPLEX, nbr_R, 14, &
@@ -126,7 +126,7 @@ SUBROUTINE update_ghosts_z_e
   CALL MPI_BARRIER(MPI_COMM_WORLD,ierr)
   IF (num_procs_z .GT. 1) THEN
 
-    count = (ipge_e-ipgs_e+1)*(ijge_e-ijgs_e+1)*(ikxe-ikxs+1)*(ikye-ikys+1)
+    count = (ipge_e-ipgs_e+1)*(ijge_e-ijgs_e+1)*(ikye-ikys+1)*(ikxe-ikxs+1)
 
     !!!!!!!!!!! Send ghost to up neighbour !!!!!!!!!!!!!!!!!!!!!!
     ! Send the last local moment to fill the -1 neighbour ghost
@@ -163,7 +163,7 @@ SUBROUTINE update_ghosts_z_i
   CALL MPI_BARRIER(MPI_COMM_WORLD,ierr)
   IF (num_procs_z .GT. 1) THEN
 
-    count = (ipge_i-ipgs_i+1)*(ijge_i-ijgs_i+1)*(ikxe-ikxs+1)*(ikye-ikys+1)
+    count = (ipge_i-ipgs_i+1)*(ijge_i-ijgs_i+1)*(ikye-ikys+1)*(ikxe-ikxs+1)
 
     !!!!!!!!!!! Send ghost to up neighbour !!!!!!!!!!!!!!!!!!!!!!
     ! Send the last local moment to fill the -1 neighbour ghost
@@ -199,7 +199,7 @@ SUBROUTINE update_ghosts_z_phi
   IF(Nz .GT. 1) THEN
     CALL MPI_BARRIER(MPI_COMM_WORLD,ierr)
     IF (num_procs_z .GT. 1) THEN
-      count = (ikxe-ikxs+1) * (ikye-ikys+1)
+      count = (ikye-ikys+1) * (ikxe-ikxs+1)
 
       !!!!!!!!!!! Send ghost to up neighbour !!!!!!!!!!!!!!!!!!!!!!
       ! Send the last local moment to fill the -1 neighbour ghost
diff --git a/src/grid_mod.F90 b/src/grid_mod.F90
index 52889c105ddc87785ee789e476cae2d1db99acd5..50b9e5c76958ae06f4385e554ee3e2d17fdb9385 100644
--- a/src/grid_mod.F90
+++ b/src/grid_mod.F90
@@ -78,7 +78,7 @@ MODULE grid
   INTEGER,  PUBLIC            :: ikx, iky, ip, ij, ikp, pp2, eo ! counters
   LOGICAL,  PUBLIC, PROTECTED :: contains_kx0   = .false. ! flag if the proc contains kx=0 index
   LOGICAL,  PUBLIC, PROTECTED :: contains_ky0   = .false. ! flag if the proc contains ky=0 index
-  LOGICAL,  PUBLIC, PROTECTED :: contains_kxmax = .false. ! flag if the proc contains kx=kxmax index
+  LOGICAL,  PUBLIC, PROTECTED :: contains_kymax = .false. ! flag if the proc contains kx=kxmax index
 
   ! Grid containing the polynomials degrees
   INTEGER,  DIMENSION(:), ALLOCATABLE, PUBLIC :: parray_e, parray_e_full
@@ -147,10 +147,10 @@ CONTAINS
 
   SUBROUTINE init_1Dgrid_distr
     ! write(*,*) Nx
-    local_nkx        = (Nx/2+1)/num_procs_kx
+    local_nky        = (Ny/2+1)/num_procs_ky
     ! write(*,*) local_nkx
-    local_nkx_offset = rank_kx*local_nkx
-    if (rank_kx .EQ. num_procs_kx-1) local_nkx = (Nx/2+1)-local_nkx_offset
+    local_nky_offset = rank_ky*local_nky
+    if (rank_ky .EQ. num_procs_ky-1) local_nky = (Ny/2+1)-local_nky_offset
   END SUBROUTINE init_1Dgrid_distr
 
   SUBROUTINE set_pgrid
@@ -271,136 +271,126 @@ CONTAINS
   END SUBROUTINE set_jgrid
 
 
-  SUBROUTINE set_kxgrid
+  SUBROUTINE set_kygrid
     USE prec_const
     USE model, ONLY: LINEARITY
     IMPLICIT NONE
     INTEGER :: i_
-    Nkx = Nx/2+1 ! Defined only on positive kx since fields are real
+    Nky = Ny/2+1 ! Defined only on positive kx since fields are real
     ! Grid spacings
-    IF (Nx .EQ. 1) THEN
-      deltakx = 0._dp
-      kx_max  = 0._dp
-      kx_min  = 0._dp
+    IF (Ny .EQ. 1) THEN
+      deltaky = 0._dp
+      ky_max  = 0._dp
+      ky_min  = 0._dp
     ELSE
-      deltakx = 2._dp*PI/Lx
-      kx_max  = Nkx*deltakx
-      kx_min  = deltakx
+      deltaky = 2._dp*PI/Ly
+      ky_max  = Nky*deltaky
+      ky_min  = deltaky
     ENDIF
     ! Build the full grids on process 0 to diagnose it without comm
-    ALLOCATE(kxarray_full(1:Nkx))
-    DO ikx = 1,Nkx
-     kxarray_full(ikx) = REAL(ikx-1,dp) * deltakx
+    ALLOCATE(kyarray_full(1:Nky))
+    DO iky = 1,Nky
+     kyarray_full(iky) = REAL(iky-1,dp) * deltaky
     END DO
     !! Parallel distribution
-    ikxs = local_nkx_offset + 1
-    ikxe = ikxs + local_nkx - 1
-    ALLOCATE(kxarray(ikxs:ikxe))
-    local_kxmax = 0._dp
+    ikys = local_nky_offset + 1
+    ikye = ikys + local_nky - 1
+    ALLOCATE(kyarray(ikys:ikye))
+    local_kymax = 0._dp
     ! Creating a grid ordered as dk*(0 1 2 3)
-    DO ikx = ikxs,ikxe
-      kxarray(ikx) = REAL(ikx-1,dp) * deltakx
+    DO iky = ikys,ikye
+      kyarray(iky) = REAL(iky-1,dp) * deltaky
       ! Finding kx=0
-      IF (kxarray(ikx) .EQ. 0) THEN
-        ikx_0 = ikx
-        contains_kx0 = .true.
+      IF (kyarray(iky) .EQ. 0) THEN
+        iky_0 = iky
+        contains_ky0 = .true.
       ENDIF
       ! Finding local kxmax value
-      IF (ABS(kxarray(ikx)) .GT. local_kxmax) THEN
-        local_kxmax = ABS(kxarray(ikx))
+      IF (ABS(kyarray(iky)) .GT. local_kymax) THEN
+        local_kymax = ABS(kyarray(iky))
       ENDIF
       ! Finding kxmax idx
-      IF (kxarray(ikx) .EQ. kx_max) THEN
-        ikx_max = ikx
-        contains_kxmax = .true.
+      IF (kyarray(iky) .EQ. ky_max) THEN
+        iky_max = iky
+        contains_kymax = .true.
       ENDIF
     END DO
     ! Orszag 2/3 filter
-    two_third_kxmax = 2._dp/3._dp*deltakx*(Nkx-1)
-    ALLOCATE(AA_x(ikxs:ikxe))
-    DO ikx = ikxs,ikxe
-      IF ( (kxarray(ikx) .LT. two_third_kxmax) .OR. (LINEARITY .EQ. 'linear')) THEN
-        AA_x(ikx) = 1._dp;
+    two_third_kymax = 2._dp/3._dp*deltaky*(Nky-1)
+    ALLOCATE(AA_y(ikys:ikye))
+    DO iky = ikys,ikye
+      IF ( (kyarray(iky) .LT. two_third_kymax) .OR. (LINEARITY .EQ. 'linear')) THEN
+        AA_y(iky) = 1._dp;
       ELSE
-        AA_x(ikx) = 0._dp;
+        AA_y(iky) = 0._dp;
       ENDIF
     END DO
-  END SUBROUTINE set_kxgrid
+  END SUBROUTINE set_kygrid
 
-  SUBROUTINE set_kygrid
+  SUBROUTINE set_kxgrid
     USE prec_const
     USE model, ONLY: LINEARITY
     IMPLICIT NONE
     INTEGER :: i_, counter
 
-    Nky = Ny;
+    Nkx = Nx;
     ! Local data
     ! Start and END indices of grid
-    ikys = 1
-    ikye = Nky
-    local_nky = ikye - ikys + 1
-    ALLOCATE(kyarray(ikys:ikye))
-    ALLOCATE(kyarray_full(1:Nky))
-    IF (Ny .EQ. 1) THEN ! "cancel" y dimension
-      deltaky         = 1._dp
-      kyarray(1)      = 0._dp
-      iky_0           = 1
-      contains_ky0    = .true.
-      ky_max          = 0._dp
-      iky_max         = 1
-      ky_min          = 0._dp
-      kyarray_full(1) = 0._dp
-      local_kymax     = 0._dp
+    ikxs = 1
+    ikxe = Nkx
+    local_nkx = ikxe - ikxs + 1
+    ALLOCATE(kxarray(ikxs:ikxe))
+    ALLOCATE(kxarray_full(1:Nkx))
+    IF (Nx .EQ. 1) THEN ! "cancel" y dimension
+      deltakx         = 1._dp
+      kxarray(1)      = 0._dp
+      ikx_0           = 1
+      contains_kx0    = .true.
+      kx_max          = 0._dp
+      ikx_max         = 1
+      kx_min          = 0._dp
+      kxarray_full(1) = 0._dp
+      local_kxmax     = 0._dp
     ELSE ! Build apprpopriate grid
-      deltaky     = 2._dp*PI/Ly
-      ky_max      = (Ny/2)*deltakx
-      ky_min      = deltaky
+      deltakx     = 2._dp*PI/Lx
+      kx_max      = (Ny/2)*deltakx
+      kx_min      = deltakx
       ! Creating a grid ordered as dk*(0 1 2 3 -2 -1)
-      local_kymax = 0._dp
-      DO iky = ikys,ikye
-        SELECT CASE (LINEARITY)
-          CASE ('linear') ! only positive freq for linear runs dk*(0 1 2 3 4 5)
-            kyarray(iky) = deltaky*REAL(iky-1,dp)
-          CASE DEFAULT !
-            kyarray(iky) = deltaky*(MODULO(iky-1,Nky/2)-Nky/2*FLOOR(2.*real(iky-1)/real(Nky)))
-        END SELECT
-        if (iky .EQ. Ny/2+1)     kyarray(iky) = -kyarray(iky)
-        ! Finding ky=0
-        IF (kyarray(iky) .EQ. 0) THEN
-          iky_0 = iky
-          contains_ky0 = .true.
+      local_kxmax = 0._dp
+      DO ikx = ikxs,ikxe
+        kxarray(ikx) = deltakx*(MODULO(ikx-1,Nkx/2)-Nkx/2*FLOOR(2.*real(ikx-1)/real(Nkx)))
+        if (ikx .EQ. Nx/2+1)     kxarray(ikx) = -kxarray(ikx)
+        ! Finding kx=0
+        IF (kxarray(ikx) .EQ. 0) THEN
+          ikx_0 = ikx
+          contains_kx0 = .true.
         ENDIF
-        ! Finding local kymax
-        IF (ABS(kyarray(iky)) .GT. local_kymax) THEN
-          local_kymax = ABS(kyarray(iky))
+        ! Finding local kxmax
+        IF (ABS(kxarray(ikx)) .GT. local_kxmax) THEN
+          local_kxmax = ABS(kxarray(ikx))
         ENDIF
-        ! Finding kymax
-        IF (kyarray(iky) .EQ. ky_max) ikx_max = ikx
+        ! Finding kxmax
+        IF (kxarray(ikx) .EQ. kx_max) ikx_max = ikx
       END DO
       ! Build the full grids on process 0 to diagnose it without comm
-      ! ky
-      DO iky = 1,Nky
-        SELECT CASE (LINEARITY)
-          CASE ('linear') ! only positive freq for linear runs dk*(0 1 2 3 4 5)
-            kyarray_full(iky) = deltaky*REAL(iky-1,dp)
-          CASE DEFAULT !
-            kyarray_full(iky) = deltaky*(MODULO(iky-1,Nky/2)-Nky/2*FLOOR(2.*real(iky-1)/real(Nky)))
-            IF (iky .EQ. Ny/2+1) kyarray_full(iky) = -kyarray_full(iky)
-        END SELECT
+      ! kx
+      DO ikx = 1,Nkx
+          kxarray_full(ikx) = deltakx*(MODULO(ikx-1,Nkx/2)-Nkx/2*FLOOR(2.*real(ikx-1)/real(Nkx)))
+          IF (ikx .EQ. Nx/2+1) kxarray_full(ikx) = -kxarray_full(ikx)
       END DO
     ENDIF
     ! Orszag 2/3 filter
-    two_third_kymax = 2._dp/3._dp*deltaky*(Nky/2-1);
-    ALLOCATE(AA_y(ikys:ikye))
-    DO iky = ikys,ikye
-      IF ( ((kyarray(iky) .GT. -two_third_kymax) .AND. &
-           (kyarray(iky) .LT. two_third_kymax))   .OR. (LINEARITY .EQ. 'linear')) THEN
-        AA_y(iky) = 1._dp;
+    two_third_kxmax = 2._dp/3._dp*deltakx*(Nkx/2-1);
+    ALLOCATE(AA_x(ikxs:ikxe))
+    DO ikx = ikxs,ikxe
+      IF ( ((kxarray(ikx) .GT. -two_third_kxmax) .AND. &
+           (kxarray(ikx) .LT. two_third_kxmax))   .OR. (LINEARITY .EQ. 'linear')) THEN
+        AA_x(ikx) = 1._dp;
       ELSE
-        AA_y(iky) = 0._dp;
+        AA_x(ikx) = 0._dp;
       ENDIF
     END DO
-  END SUBROUTINE set_kygrid
+  END SUBROUTINE set_kxgrid
 
 
   SUBROUTINE set_zgrid
diff --git a/src/inital.F90 b/src/inital.F90
index ae42fbfbdef65dfb21dce0f7359576a5d6cda15e..aacfd20a0586eecf71f3db0131749ef1545f2c0c 100644
--- a/src/inital.F90
+++ b/src/inital.F90
@@ -124,13 +124,13 @@ SUBROUTINE init_moments
           DO iky=ikys,ikye
             DO iz=izs,ize
               CALL RANDOM_NUMBER(noise)
-              moments_e(ip,ij,ikx,iky,iz,:) = (init_background + init_noiselvl*(noise-0.5_dp))
+              moments_e(ip,ij,iky,ikx,iz,:) = (init_background + init_noiselvl*(noise-0.5_dp))
             END DO
           END DO
         END DO
-        IF ( contains_kx0 ) THEN
-          DO iky=2,Nky/2 !symmetry at kx = 0 for all z
-            moments_e(ip,ij,ikx_0,iky,:,:) = moments_e( ip,ij,ikx_0,Nky+2-iky,:, :)
+        IF ( contains_ky0 ) THEN
+          DO iky=2,Nky/2 !symmetry at ky = 0 for all z
+            moments_e(ip,ij,iky_0,ikx,:,:) = moments_e( ip,ij,iky_0,Nkx+2-ikx,:, :)
           END DO
         ENDIF
       END DO
@@ -144,14 +144,14 @@ SUBROUTINE init_moments
           DO iky=ikys,ikye
             DO iz=izs,ize
               CALL RANDOM_NUMBER(noise)
-              moments_i(ip,ij,ikx,iky,iz,:) = (init_background + init_noiselvl*(noise-0.5_dp))
+              moments_i(ip,ij,iky,ikx,iz,:) = (init_background + init_noiselvl*(noise-0.5_dp))
             END DO
           END DO
         END DO
 
-        IF ( contains_kx0 ) THEN
-          DO iky=2,Nky/2 !symmetry at kx = 0 for all z
-            moments_i( ip,ij,ikx_0,iky,:,:) = moments_i( ip,ij,ikx_0,Nky+2-iky,:,:)
+        IF ( contains_ky0 ) THEN
+          DO ikx=2,Nkx/2 !symmetry at ky = 0 for all z
+            moments_i( ip,ij,iky_0,ikx,:,:) = moments_i( ip,ij,iky_0,Nkx+2-ikx,:,:)
           END DO
         ENDIF
 
@@ -166,13 +166,13 @@ SUBROUTINE init_moments
         IF(KIN_E) THEN
         DO ip=ips_e,ipe_e
         DO ij=ijs_e,ije_e
-          moments_e( ip,ij,ikx,iky,iz, :) = moments_e( ip,ij,ikx,iky,iz, :)*AA_x(ikx)*AA_y(iky)
+          moments_e( ip,ij,iky,ikx,iz, :) = moments_e( ip,ij,iky,ikx,iz, :)*AA_x(ikx)*AA_y(iky)
         ENDDO
         ENDDO
         ENDIF
         DO ip=ips_i,ipe_i
         DO ij=ijs_i,ije_i
-          moments_i( ip,ij,ikx,iky,iz, :) = moments_i( ip,ij,ikx,iky,iz, :)*AA_x(ikx)*AA_y(iky)
+          moments_i( ip,ij,iky,ikx,iz, :) = moments_i( ip,ij,iky,ikx,iz, :)*AA_x(ikx)*AA_y(iky)
         ENDDO
         ENDDO
       ENDDO
@@ -212,16 +212,16 @@ SUBROUTINE init_gyrodens
             DO iz=izs,ize
               CALL RANDOM_NUMBER(noise)
               IF ( (ip .EQ. 1) .AND. (ij .EQ. 1) ) THEN
-                moments_e(ip,ij,ikx,iky,iz,:) = (init_background + init_noiselvl*(noise-0.5_dp))
+                moments_e(ip,ij,iky,ikx,iz,:) = (init_background + init_noiselvl*(noise-0.5_dp))
               ELSE
-                moments_e(ip,ij,ikx,iky,iz,:) = 0._dp
+                moments_e(ip,ij,iky,ikx,iz,:) = 0._dp
               ENDIF
             END DO
           END DO
         END DO
-        IF ( contains_kx0 ) THEN
-          DO iky=2,Nky/2 !symmetry at kx = 0 for all z
-            moments_e(ip,ij,ikx_0,iky,:,:) = moments_e( ip,ij,ikx_0,Nky+2-iky,:, :)
+        IF ( contains_ky0 ) THEN
+          DO ikx=2,Nkx/2 !symmetry at ky = 0 for all z
+            moments_e(ip,ij,iky_0,ikx,:,:) = moments_e( ip,ij,iky_0,Nkx+2-ikx,:, :)
           END DO
         ENDIF
       END DO
@@ -235,16 +235,16 @@ SUBROUTINE init_gyrodens
             DO iz=izs,ize
               CALL RANDOM_NUMBER(noise)
               IF ( (ip .EQ. 1) .AND. (ij .EQ. 1) ) THEN
-                moments_i(ip,ij,ikx,iky,iz,:) = (init_background + init_noiselvl*(noise-0.5_dp))
+                moments_i(ip,ij,iky,ikx,iz,:) = (init_background + init_noiselvl*(noise-0.5_dp))
               ELSE
-                moments_i(ip,ij,ikx,iky,iz,:) = 0._dp
+                moments_i(ip,ij,iky,ikx,iz,:) = 0._dp
               ENDIF
             END DO
           END DO
         END DO
-        IF ( contains_kx0 ) THEN
-          DO iky=2,Nky/2 !symmetry at kx = 0 for all z
-            moments_i( ip,ij,ikx_0,iky,:,:) = moments_i( ip,ij,ikx_0,Nky+2-iky,:,:)
+        IF ( contains_ky0 ) THEN
+          DO iky=2,Nky/2 !symmetry at ky = 0 for all z
+            moments_i( ip,ij,iky_0,ikx,:,:) = moments_i( ip,ij,iky_0,Nkx+2-ikx,:,:)
           END DO
         ENDIF
       END DO
@@ -258,13 +258,13 @@ SUBROUTINE init_gyrodens
         IF(KIN_E) THEN
         DO ip=ips_e,ipe_e
         DO ij=ijs_e,ije_e
-          moments_e( ip,ij,ikx,iky,iz, :) = moments_e( ip,ij,ikx,iky,iz, :)*AA_x(ikx)*AA_y(iky)
+          moments_e( ip,ij,iky,ikx,iz, :) = moments_e( ip,ij,iky,ikx,iz, :)*AA_x(ikx)*AA_y(iky)
         ENDDO
         ENDDO
         ENDIF
         DO ip=ips_i,ipe_i
         DO ij=ijs_i,ije_i
-          moments_i( ip,ij,ikx,iky,iz, :) = moments_i( ip,ij,ikx,iky,iz, :)*AA_x(ikx)*AA_y(iky)
+          moments_i( ip,ij,iky,ikx,iz, :) = moments_i( ip,ij,iky,ikx,iz, :)*AA_x(ikx)*AA_y(iky)
         ENDDO
         ENDDO
       ENDDO
@@ -300,17 +300,17 @@ SUBROUTINE init_phi
       DO iky=ikys,ikye
         DO iz=izs,ize
           CALL RANDOM_NUMBER(noise)
-          phi(ikx,iky,iz) = (init_background + init_noiselvl*(noise-0.5_dp))!*AA_x(ikx)*AA_y(iky)
+          phi(iky,ikx,iz) = (init_background + init_noiselvl*(noise-0.5_dp))!*AA_x(ikx)*AA_y(iky)
         ENDDO
       END DO
     END DO
 
-    !symmetry at kx = 0 to keep real inverse transform
-    IF ( contains_kx0 ) THEN
-      DO iky=2,Nky/2
-        phi(ikx_0,iky,izs:ize) = phi(ikx_0,Nky+2-iky,izs:ize)
+    !symmetry at ky = 0 to keep real inverse transform
+    IF ( contains_ky0 ) THEN
+      DO ikx=2,Nkx/2
+        phi(iky_0,ikx,izs:ize) = phi(iky_0,Nkx+2-ikx,izs:ize)
       END DO
-      phi(ikx_0,Ny/2,izs:ize) = REAL(phi(ikx_0,Ny/2,izs:ize)) !origin must be real
+      phi(iky_0,ikx_0,izs:ize) = REAL(phi(iky_0,ikx_0,izs:ize)) !origin must be real
     ENDIF
 
     !**** ensure no previous moments initialization
@@ -323,9 +323,9 @@ SUBROUTINE init_phi
       IF (my_id .EQ. 0) WRITE(*,*) 'Init ZF phi'
       IF( (INIT_ZF+1 .GT. ikxs) .AND. (INIT_ZF+1 .LT. ikxe) ) THEN
         DO iz = izs,ize
-          phi(INIT_ZF+1,iky_0,iz) = ZF_AMP*(2._dp*PI)**2/deltakx/deltaky/2._dp * COS((iz-1)/Nz*2._dp*PI)
-          moments_i(1,1,INIT_ZF+1,iky_0,iz,:) = kxarray(INIT_ZF+1)**2*phi(INIT_ZF+1,iky_0,iz)* COS((iz-1)/Nz*2._dp*PI)
-          IF(KIN_E) moments_e(1,1,INIT_ZF+1,iky_0,iz,:) = 0._dp
+          phi(iky_0,INIT_ZF+1,iz) = ZF_AMP*(2._dp*PI)**2/deltakx/deltaky/2._dp * COS((iz-1)/Nz*2._dp*PI)
+          moments_i(1,1,iky_0,INIT_ZF+1,iz,:) = kxarray(INIT_ZF+1)**2*phi(iky_0,INIT_ZF+1,iz)* COS((iz-1)/Nz*2._dp*PI)
+          IF(KIN_E) moments_e(1,1,iky_0,INIT_ZF+1,iz,:) = 0._dp
         ENDDO
       ENDIF
     ENDIF
@@ -354,7 +354,7 @@ SUBROUTINE initialize_blob
     DO ip=ips_i,ipe_i
     DO ij=ijs_i,ije_i
       IF( (iky .NE. iky_0) .AND. (ip .EQ. 1) .AND. (ij .EQ. 1)) THEN
-        moments_i( ip,ij,ikx,iky,iz, :) = moments_i( ip,ij,ikx,iky,iz, :) &
+        moments_i( ip,ij,iky,ikx,iz, :) = moments_i( ip,ij,iky,ikx,iz, :) &
         + gain*sigma/SQRT2 * exp(-(kx**2+ky**2)*sigma**2/4._dp) &
           * AA_x(ikx)*AA_y(iky)!&
           ! * exp(sigmai2_taui_o2*(kx**2+ky**2))
@@ -365,7 +365,7 @@ SUBROUTINE initialize_blob
     DO ip=ips_e,ipe_e
     DO ij=ijs_e,ije_e
       IF( (iky .NE. iky_0) .AND. (ip .EQ. 1) .AND. (ij .EQ. 1)) THEN
-        moments_e( ip,ij,ikx,iky,iz, :) = moments_e( ip,ij,ikx,iky,iz, :) &
+        moments_e( ip,ij,iky,ikx,iz, :) = moments_e( ip,ij,iky,ikx,iz, :) &
         + gain*sigma/SQRT2 * exp(-(kx**2+ky**2)*sigma**2/4._dp) &
           * AA_x(ikx)*AA_y(iky)!&
           ! * exp(sigmai2_taui_o2*(kx**2+ky**2))
@@ -416,28 +416,28 @@ SUBROUTINE init_ppj
                 z = zarray(iz,0)
                 IF (kx .EQ. 0) THEN
                   IF(ky .EQ. 0) THEN
-                    moments_e(ip,ij,ikx,iky,iz,:) = 0._dp
+                    moments_e(ip,ij,iky,ikx,iz,:) = 0._dp
                   ELSE
-                    moments_e(ip,ij,ikx,iky,iz,:) = 0.5_dp * ky_min/(ABS(ky)+ky_min)
+                    moments_e(ip,ij,iky,ikx,iz,:) = 0.5_dp * ky_min/(ABS(ky)+ky_min)
                   ENDIF
                 ELSE
                   IF(ky .GT. 0) THEN
-                    moments_e(ip,ij,ikx,iky,iz,:) = (kx_min/(ABS(kx)+kx_min))*(ky_min/(ABS(ky)+ky_min))
+                    moments_e(ip,ij,iky,ikx,iz,:) = (kx_min/(ABS(kx)+kx_min))*(ky_min/(ABS(ky)+ky_min))
                   ELSE
-                    moments_e(ip,ij,ikx,iky,iz,:) = 0.5_dp*(kx_min/(ABS(kx)+kx_min))
+                    moments_e(ip,ij,iky,ikx,iz,:) = 0.5_dp*(kx_min/(ABS(kx)+kx_min))
                   ENDIF
                 ENDIF
                 ! z-dep
-                moments_e(ip,ij,ikx,iky,iz,:) = moments_e(ip,ij,ikx,iky,iz,:) * &
+                moments_e(ip,ij,iky,ikx,iz,:) = moments_e(ip,ij,iky,ikx,iz,:) * &
                 ! (1 + exp(-(z/sigma_z)**2/2.0)*sqrt(2.0*sqrt(pi)/sigma_z))
                 (Jacobian(iz,0)*iInt_Jacobian)**2
               END DO
             END DO
           END DO
 
-          IF ( contains_kx0 ) THEN
-            DO iky=2,Nky/2 !symmetry at kx = 0 for all z
-              moments_e(ip,ij,ikx_0,iky,:,:) = moments_e( ip,ij,ikx_0,Nky+2-iky,:, :)
+          IF ( contains_ky0 ) THEN
+            DO ikx=2,Nkx/2 !symmetry at kx = 0 for all z
+              moments_e(ip,ij,iky_0,ikx,:,:) = moments_e( ip,ij,iky_0,Nkx+2-ikx,:, :)
             END DO
           ENDIF
         ELSE
@@ -459,28 +459,28 @@ SUBROUTINE init_ppj
                 z = zarray(iz,0)
                 IF (kx .EQ. 0) THEN
                   IF(ky .EQ. 0) THEN
-                    moments_i(ip,ij,ikx,iky,iz,:) = 0._dp
+                    moments_i(ip,ij,iky,ikx,iz,:) = 0._dp
                   ELSE
-                    moments_i(ip,ij,ikx,iky,iz,:) = 0.5_dp * ky_min/(ABS(ky)+ky_min)
+                    moments_i(ip,ij,iky,ikx,iz,:) = 0.5_dp * ky_min/(ABS(ky)+ky_min)
                   ENDIF
                 ELSE
                   IF(ky .GT. 0) THEN
-                    moments_i(ip,ij,ikx,iky,iz,:) = (kx_min/(ABS(kx)+kx_min))*(ky_min/(ABS(ky)+ky_min))
+                    moments_i(ip,ij,iky,ikx,iz,:) = (kx_min/(ABS(kx)+kx_min))*(ky_min/(ABS(ky)+ky_min))
                   ELSE
-                    moments_i(ip,ij,ikx,iky,iz,:) = 0.5_dp*(kx_min/(ABS(kx)+kx_min))
+                    moments_i(ip,ij,iky,ikx,iz,:) = 0.5_dp*(kx_min/(ABS(kx)+kx_min))
                   ENDIF
                 ENDIF
                 ! z-dep
-                moments_i(ip,ij,ikx,iky,iz,:) = moments_i(ip,ij,ikx,iky,iz,:) * &
+                moments_i(ip,ij,iky,ikx,iz,:) = moments_i(ip,ij,iky,ikx,iz,:) * &
                 ! (1 + exp(-(z/sigma_z)**2/2.0)*sqrt(2.0*sqrt(pi)/sigma_z))
                 (Jacobian(iz,0)*iInt_Jacobian)**2
               END DO
             END DO
           END DO
 
-          IF ( contains_kx0 ) THEN
-            DO iky=2,Nky/2 !symmetry at kx = 0 for all z
-              moments_i( ip,ij,ikx_0,iky,:,:) = moments_i( ip,ij,ikx_0,Nky+2-iky,:,:)
+          IF ( contains_ky0 ) THEN
+            DO ikx=2,Nkx/2 !symmetry at kx = 0 for all z
+              moments_i(ip,ij,iky_0,ikx,:,:) = moments_i( ip,ij,iky_0,Nkx+2-ikx,:, :)
             END DO
           ENDIF
         ELSE
@@ -496,12 +496,12 @@ SUBROUTINE init_ppj
       DO iz=izs,ize
         DO ip=ips_e,ipe_e
         DO ij=ijs_e,ije_e
-          moments_e( ip,ij,ikx,iky,iz, :) = moments_e( ip,ij,ikx,iky,iz, :)*AA_x(ikx)*AA_y(iky)
+          moments_e( ip,ij,iky,ikx,iz, :) = moments_e( ip,ij,iky,ikx,iz, :)*AA_x(ikx)*AA_y(iky)
         ENDDO
         ENDDO
         DO ip=ips_i,ipe_i
         DO ij=ijs_i,ije_i
-          moments_i( ip,ij,ikx,iky,iz, :) = moments_i( ip,ij,ikx,iky,iz, :)*AA_x(ikx)*AA_y(iky)
+          moments_i( ip,ij,iky,ikx,iz, :) = moments_i( ip,ij,iky,ikx,iz, :)*AA_x(ikx)*AA_y(iky)
         ENDDO
         ENDDO
       ENDDO
diff --git a/src/memory.F90 b/src/memory.F90
index a90fec8c24722e6bfb299bb2909f1e9ee04a08ee..a1ebae20539ab897cb0e0887645321db8ac0b196 100644
--- a/src/memory.F90
+++ b/src/memory.F90
@@ -13,31 +13,31 @@ SUBROUTINE memory
   IMPLICIT NONE
 
   ! Electrostatic potential
-  CALL allocate_array(           phi, ikxs,ikxe, ikys,ikye, izgs,izge)
+  CALL allocate_array(           phi, ikys,ikye, ikxs,ikxe, izgs,izge)
   CALL allocate_array(        phi_ZF, ikxs,ikxe, izs,ize)
   CALL allocate_array(        phi_EM, ikys,ikye, izs,ize)
-  CALL allocate_array(inv_poisson_op, ikxs,ikxe, ikys,ikye, izs,ize)
+  CALL allocate_array(inv_poisson_op, ikys,ikye, ikxs,ikxe, izs,ize)
 
   !Electrons arrays
   IF(KIN_E) THEN
-  CALL allocate_array(             Ne00, ikxs,ikxe, ikys,ikye, izs,ize)
-  CALL allocate_array(           dens_e, ikxs,ikxe, ikys,ikye, izs,ize)
-  CALL allocate_array(           upar_e, ikxs,ikxe, ikys,ikye, izs,ize)
-  CALL allocate_array(           uper_e, ikxs,ikxe, ikys,ikye, izs,ize)
-  CALL allocate_array(           Tpar_e, ikxs,ikxe, ikys,ikye, izs,ize)
-  CALL allocate_array(           Tper_e, ikxs,ikxe, ikys,ikye, izs,ize)
-  CALL allocate_array(           temp_e, ikxs,ikxe, ikys,ikye, izs,ize)
-  CALL allocate_array(         Kernel_e,                ijgs_e,ijge_e, ikxs,ikxe, ikys,ikye, izgs,izge,  0,1)
-  CALL allocate_array(        moments_e, ipgs_e,ipge_e, ijgs_e,ijge_e, ikxs,ikxe, ikys,ikye, izgs,izge, 1,ntimelevel )
-  CALL allocate_array(    moments_rhs_e,  ips_e,ipe_e,   ijs_e,ije_e,  ikxs,ikxe, ikys,ikye,  izs,ize,  1,ntimelevel )
-  CALL allocate_array( nadiab_moments_e, ipgs_e,ipge_e, ijgs_e,ijge_e, ikxs,ikxe, ikys,ikye, izgs,izge)
-  CALL allocate_array(         ddz_nepj, ipgs_e,ipge_e, ijgs_e,ijge_e, ikxs,ikxe, ikys,ikye, izgs,izge)
-  CALL allocate_array(        ddz2_Nepj, ipgs_e,ipge_e, ijgs_e,ijge_e, ikxs,ikxe, ikys,ikye, izgs,izge)
-  CALL allocate_array(      interp_nepj, ipgs_e,ipge_e, ijgs_e,ijge_e, ikxs,ikxe, ikys,ikye, izgs,izge)
+  CALL allocate_array(             Ne00, ikys,ikye, ikxs,ikxe, izs,ize)
+  CALL allocate_array(           dens_e, ikys,ikye, ikxs,ikxe, izs,ize)
+  CALL allocate_array(           upar_e, ikys,ikye, ikxs,ikxe, izs,ize)
+  CALL allocate_array(           uper_e, ikys,ikye, ikxs,ikxe, izs,ize)
+  CALL allocate_array(           Tpar_e, ikys,ikye, ikxs,ikxe, izs,ize)
+  CALL allocate_array(           Tper_e, ikys,ikye, ikxs,ikxe, izs,ize)
+  CALL allocate_array(           temp_e, ikys,ikye, ikxs,ikxe, izs,ize)
+  CALL allocate_array(         Kernel_e,                ijgs_e,ijge_e, ikys,ikye, ikxs,ikxe, izgs,izge,  0,1)
+  CALL allocate_array(        moments_e, ipgs_e,ipge_e, ijgs_e,ijge_e, ikys,ikye, ikxs,ikxe, izgs,izge, 1,ntimelevel )
+  CALL allocate_array(    moments_rhs_e,  ips_e,ipe_e,   ijs_e,ije_e,  ikys,ikye, ikxs,ikxe,  izs,ize,  1,ntimelevel )
+  CALL allocate_array( nadiab_moments_e, ipgs_e,ipge_e, ijgs_e,ijge_e, ikys,ikye, ikxs,ikxe, izgs,izge)
+  CALL allocate_array(         ddz_nepj, ipgs_e,ipge_e, ijgs_e,ijge_e, ikys,ikye, ikxs,ikxe, izgs,izge)
+  CALL allocate_array(        ddz2_Nepj, ipgs_e,ipge_e, ijgs_e,ijge_e, ikys,ikye, ikxs,ikxe, izgs,izge)
+  CALL allocate_array(      interp_nepj, ipgs_e,ipge_e, ijgs_e,ijge_e, ikys,ikye, ikxs,ikxe, izgs,izge)
   CALL allocate_array(     moments_e_ZF, ipgs_e,ipge_e, ijgs_e,ijge_e, ikxs,ikxe, izs,ize)
   CALL allocate_array(     moments_e_EM, ipgs_e,ipge_e, ijgs_e,ijge_e, ikys,ikye, izs,ize)
-  CALL allocate_array(          TColl_e,  ips_e,ipe_e,   ijs_e,ije_e , ikxs,ikxe, ikys,ikye, izs,ize)
-  CALL allocate_array(             Sepj,  ips_e,ipe_e,   ijs_e,ije_e,  ikxs,ikxe, ikys,ikye, izs,ize)
+  CALL allocate_array(          TColl_e,  ips_e,ipe_e,   ijs_e,ije_e , ikys,ikye, ikxs,ikxe, izs,ize)
+  CALL allocate_array(             Sepj,  ips_e,ipe_e,   ijs_e,ije_e,  ikys,ikye, ikxs,ikxe, izs,ize)
   CALL allocate_array(           xnepj,   ips_e,ipe_e,   ijs_e,ije_e)
   CALL allocate_array(           xnepp2j, ips_e,ipe_e)
   CALL allocate_array(           xnepp1j, ips_e,ipe_e)
@@ -55,24 +55,24 @@ SUBROUTINE memory
   ENDIF
 
   !Ions arrays
-  CALL allocate_array(             Ni00, ikxs,ikxe, ikys,ikye, izs,ize)
-  CALL allocate_array(           dens_i, ikxs,ikxe, ikys,ikye, izs,ize)
-  CALL allocate_array(           upar_i, ikxs,ikxe, ikys,ikye, izs,ize)
-  CALL allocate_array(           uper_i, ikxs,ikxe, ikys,ikye, izs,ize)
-  CALL allocate_array(           Tpar_i, ikxs,ikxe, ikys,ikye, izs,ize)
-  CALL allocate_array(           Tper_i, ikxs,ikxe, ikys,ikye, izs,ize)
-  CALL allocate_array(           temp_i, ikxs,ikxe, ikys,ikye, izs,ize)
-  CALL allocate_array(         Kernel_i,                ijgs_i,ijge_i, ikxs,ikxe, ikys,ikye, izgs,izge,  0,1)
-  CALL allocate_array(        moments_i, ipgs_i,ipge_i, ijgs_i,ijge_i, ikxs,ikxe, ikys,ikye, izgs,izge, 1,ntimelevel )
-  CALL allocate_array(    moments_rhs_i,  ips_i,ipe_i,   ijs_i,ije_i,  ikxs,ikxe, ikys,ikye,  izs,ize,  1,ntimelevel )
-  CALL allocate_array( nadiab_moments_i, ipgs_i,ipge_i, ijgs_i,ijge_i, ikxs,ikxe, ikys,ikye, izgs,izge)
-  CALL allocate_array(         ddz_nipj, ipgs_i,ipge_i, ijgs_i,ijge_i, ikxs,ikxe, ikys,ikye, izgs,izge)
-  CALL allocate_array(        ddz2_Nipj, ipgs_i,ipge_i, ijgs_i,ijge_i, ikxs,ikxe, ikys,ikye, izgs,izge)
-  CALL allocate_array(      interp_nipj, ipgs_i,ipge_i, ijgs_i,ijge_i, ikxs,ikxe, ikys,ikye, izgs,izge)
+  CALL allocate_array(             Ni00, ikys,ikye, ikxs,ikxe, izs,ize)
+  CALL allocate_array(           dens_i, ikys,ikye, ikxs,ikxe, izs,ize)
+  CALL allocate_array(           upar_i, ikys,ikye, ikxs,ikxe, izs,ize)
+  CALL allocate_array(           uper_i, ikys,ikye, ikxs,ikxe, izs,ize)
+  CALL allocate_array(           Tpar_i, ikys,ikye, ikxs,ikxe, izs,ize)
+  CALL allocate_array(           Tper_i, ikys,ikye, ikxs,ikxe, izs,ize)
+  CALL allocate_array(           temp_i, ikys,ikye, ikxs,ikxe, izs,ize)
+  CALL allocate_array(         Kernel_i,                ijgs_i,ijge_i, ikys,ikye, ikxs,ikxe, izgs,izge,  0,1)
+  CALL allocate_array(        moments_i, ipgs_i,ipge_i, ijgs_i,ijge_i, ikys,ikye, ikxs,ikxe, izgs,izge, 1,ntimelevel )
+  CALL allocate_array(    moments_rhs_i,  ips_i,ipe_i,   ijs_i,ije_i,  ikys,ikye, ikxs,ikxe,  izs,ize,  1,ntimelevel )
+  CALL allocate_array( nadiab_moments_i, ipgs_i,ipge_i, ijgs_i,ijge_i, ikys,ikye, ikxs,ikxe, izgs,izge)
+  CALL allocate_array(         ddz_nipj, ipgs_i,ipge_i, ijgs_i,ijge_i, ikys,ikye, ikxs,ikxe, izgs,izge)
+  CALL allocate_array(        ddz2_Nipj, ipgs_i,ipge_i, ijgs_i,ijge_i, ikys,ikye, ikxs,ikxe, izgs,izge)
+  CALL allocate_array(      interp_nipj, ipgs_i,ipge_i, ijgs_i,ijge_i, ikys,ikye, ikxs,ikxe, izgs,izge)
   CALL allocate_array(     moments_i_ZF, ipgs_i,ipge_i, ijgs_i,ijge_i, ikxs,ikxe, izs,ize)
   CALL allocate_array(     moments_i_EM, ipgs_i,ipge_i, ijgs_i,ijge_i, ikys,ikye, izs,ize)
-  CALL allocate_array(          TColl_i,  ips_i,ipe_i,   ijs_i,ije_i,  ikxs,ikxe, ikys,ikye, izs,ize)
-  CALL allocate_array(             Sipj,  ips_i,ipe_i,   ijs_i,ije_i,  ikxs,ikxe, ikys,ikye, izs,ize)
+  CALL allocate_array(          TColl_i,  ips_i,ipe_i,   ijs_i,ije_i,  ikys,ikye, ikxs,ikxe, izs,ize)
+  CALL allocate_array(             Sipj,  ips_i,ipe_i,   ijs_i,ije_i,  ikys,ikye, ikxs,ikxe, izs,ize)
   CALL allocate_array( xnipj,   ips_i,ipe_i, ijs_i,ije_i)
   CALL allocate_array( xnipp2j, ips_i,ipe_i)
   CALL allocate_array( xnipp1j, ips_i,ipe_i)
@@ -105,13 +105,13 @@ SUBROUTINE memory
   !! Collision matrices
   IF (gyrokin_CO) THEN !GK collision matrices (one for each kperp)
     IF (KIN_E) THEN
-    CALL allocate_array(  Ceepj, 1,(pmaxe+1)*(jmaxe+1), 1,(pmaxe+1)*(jmaxe+1), ikxs,ikxe, ikys,ikye, izs,ize)
-    CALL allocate_array( CeipjT, 1,(pmaxe+1)*(jmaxe+1), 1,(pmaxe+1)*(jmaxe+1), ikxs,ikxe, ikys,ikye, izs,ize)
-    CALL allocate_array( CeipjF, 1,(pmaxe+1)*(jmaxe+1), 1,(pmaxi+1)*(jmaxi+1), ikxs,ikxe, ikys,ikye, izs,ize)
-    CALL allocate_array( CiepjT, 1,(pmaxi+1)*(jmaxi+1), 1,(pmaxi+1)*(jmaxi+1), ikxs,ikxe, ikys,ikye, izs,ize)
-    CALL allocate_array( CiepjF, 1,(pmaxi+1)*(jmaxi+1), 1,(pmaxe+1)*(jmaxe+1), ikxs,ikxe, ikys,ikye, izs,ize)
+    CALL allocate_array(  Ceepj, 1,(pmaxe+1)*(jmaxe+1), 1,(pmaxe+1)*(jmaxe+1), ikys,ikye, ikxs,ikxe, izs,ize)
+    CALL allocate_array( CeipjT, 1,(pmaxe+1)*(jmaxe+1), 1,(pmaxe+1)*(jmaxe+1), ikys,ikye, ikxs,ikxe, izs,ize)
+    CALL allocate_array( CeipjF, 1,(pmaxe+1)*(jmaxe+1), 1,(pmaxi+1)*(jmaxi+1), ikys,ikye, ikxs,ikxe, izs,ize)
+    CALL allocate_array( CiepjT, 1,(pmaxi+1)*(jmaxi+1), 1,(pmaxi+1)*(jmaxi+1), ikys,ikye, ikxs,ikxe, izs,ize)
+    CALL allocate_array( CiepjF, 1,(pmaxi+1)*(jmaxi+1), 1,(pmaxe+1)*(jmaxe+1), ikys,ikye, ikxs,ikxe, izs,ize)
     ENDIF
-    CALL allocate_array(  Ciipj, 1,(pmaxi+1)*(jmaxi+1), 1,(pmaxi+1)*(jmaxi+1), ikxs,ikxe, ikys,ikye, izs,ize)
+    CALL allocate_array(  Ciipj, 1,(pmaxi+1)*(jmaxi+1), 1,(pmaxi+1)*(jmaxi+1), ikys,ikye, ikxs,ikxe, izs,ize)
   ELSE !DK collision matrix (same for every k)
       IF (KIN_E) THEN
       CALL allocate_array(  Ceepj, 1,(pmaxe+1)*(jmaxe+1), 1,(pmaxe+1)*(jmaxe+1), 1,1, 1,1, 1,1)
diff --git a/src/moments_eq_rhs_mod.F90 b/src/moments_eq_rhs_mod.F90
index 27012952444ee2b504fea4dddaef45a38222e89d..9d4dc7a12113430be824b38167a06342f9819f8f 100644
--- a/src/moments_eq_rhs_mod.F90
+++ b/src/moments_eq_rhs_mod.F90
@@ -35,20 +35,20 @@ SUBROUTINE moments_eq_rhs_e
   COMPLEX(dp) :: Tnepp1j, Tnepm1j, Tnepp1jm1, Tnepm1jm1 ! Terms from mirror force with non adiab moments
   COMPLEX(dp) :: Tperp, Tpar, Tmir, Tphi
   COMPLEX(dp) :: Unepm1j, Unepm1jp1, Unepm1jm1 ! Terms from mirror force with adiab moments
-  COMPLEX(dp) :: i_ky,phikxkyz
+  COMPLEX(dp) :: i_ky,phikykxz
 
    ! Measuring execution time
   CALL cpu_time(t0_rhs)
 
   ! Spatial loops
   zloope : DO  iz = izs,ize
-    kyloope : DO iky = ikys,ikye
-      ky     = kyarray(iky)   ! toroidal wavevector
-      i_ky   = imagu * ky     ! toroidal derivative
+    kxloope : DO ikx = ikxs,ikxe
+      kx       = kxarray(ikx)   ! radial wavevector
 
-      kxloope : DO ikx = ikxs,ikxe
-        kx       = kxarray(ikx)   ! radial wavevector
-        phikxkyz = phi(ikx,iky,iz)! tmp phi value
+      kyloope : DO iky = ikys,ikye
+        ky     = kyarray(iky)   ! toroidal wavevector
+        i_ky   = imagu * ky     ! toroidal derivative
+        phikykxz = phi(iky,ikx,iz)! tmp phi value
 
         ! Kinetic loops
         jloope : DO ij = ijs_e, ije_e  ! This loop is from 1 to jmaxi+1
@@ -57,50 +57,50 @@ SUBROUTINE moments_eq_rhs_e
           ploope : DO ip = ips_e, ipe_e  ! Hermite loop
             p_int = parray_e(ip)    ! Hermite degree
             eo    = MODULO(p_int,2) ! Indicates if we are on odd or even z grid
-            kperp2= kparray(ikx,iky,iz,eo)**2
+            kperp2= kparray(iky,ikx,iz,eo)**2
 
 
           !! Compute moments mixing terms
           Tperp = 0._dp; Tpar = 0._dp; Tmir = 0._dp
           ! Perpendicular dynamic
           ! term propto n_e^{p,j}
-          Tnepj   = xnepj(ip,ij)* nadiab_moments_e(ip,ij,ikx,iky,iz)
+          Tnepj   = xnepj(ip,ij)* nadiab_moments_e(ip,ij,iky,ikx,iz)
           ! term propto n_e^{p+2,j}
-          Tnepp2j = xnepp2j(ip) * nadiab_moments_e(ip+pp2,ij,ikx,iky,iz)
+          Tnepp2j = xnepp2j(ip) * nadiab_moments_e(ip+pp2,ij,iky,ikx,iz)
           ! term propto n_e^{p-2,j}
-          Tnepm2j = xnepm2j(ip) * nadiab_moments_e(ip-pp2,ij,ikx,iky,iz)
+          Tnepm2j = xnepm2j(ip) * nadiab_moments_e(ip-pp2,ij,iky,ikx,iz)
           ! term propto n_e^{p,j+1}
-          Tnepjp1 = xnepjp1(ij) * nadiab_moments_e(ip,ij+1,ikx,iky,iz)
+          Tnepjp1 = xnepjp1(ij) * nadiab_moments_e(ip,ij+1,iky,ikx,iz)
           ! term propto n_e^{p,j-1}
-          Tnepjm1 = xnepjm1(ij) * nadiab_moments_e(ip,ij-1,ikx,iky,iz)
+          Tnepjm1 = xnepjm1(ij) * nadiab_moments_e(ip,ij-1,iky,ikx,iz)
           ! Parallel dynamic
           ! ddz derivative for Landau damping term
-          Tpar      = xnepp1j(ip) * ddz_nepj(ip+1,ij,ikx,iky,iz) &
-                    + xnepm1j(ip) * ddz_nepj(ip-1,ij,ikx,iky,iz)
+          Tpar      = xnepp1j(ip) * ddz_nepj(ip+1,ij,iky,ikx,iz) &
+                    + xnepm1j(ip) * ddz_nepj(ip-1,ij,iky,ikx,iz)
           ! Mirror terms
-          Tnepp1j   = ynepp1j  (ip,ij) * interp_nepj(ip+1,ij  ,ikx,iky,iz)
-          Tnepp1jm1 = ynepp1jm1(ip,ij) * interp_nepj(ip+1,ij-1,ikx,iky,iz)
-          Tnepm1j   = ynepm1j  (ip,ij) * interp_nepj(ip-1,ij  ,ikx,iky,iz)
-          Tnepm1jm1 = ynepm1jm1(ip,ij) * interp_nepj(ip-1,ij-1,ikx,iky,iz)
+          Tnepp1j   = ynepp1j  (ip,ij) * interp_nepj(ip+1,ij  ,iky,ikx,iz)
+          Tnepp1jm1 = ynepp1jm1(ip,ij) * interp_nepj(ip+1,ij-1,iky,ikx,iz)
+          Tnepm1j   = ynepm1j  (ip,ij) * interp_nepj(ip-1,ij  ,iky,ikx,iz)
+          Tnepm1jm1 = ynepm1jm1(ip,ij) * interp_nepj(ip-1,ij-1,iky,ikx,iz)
           ! Trapping terms
-          Unepm1j   = znepm1j  (ip,ij) * interp_nepj(ip-1,ij  ,ikx,iky,iz)
-          Unepm1jp1 = znepm1jp1(ip,ij) * interp_nepj(ip-1,ij+1,ikx,iky,iz)
-          Unepm1jm1 = znepm1jm1(ip,ij) * interp_nepj(ip-1,ij-1,ikx,iky,iz)
+          Unepm1j   = znepm1j  (ip,ij) * interp_nepj(ip-1,ij  ,iky,ikx,iz)
+          Unepm1jp1 = znepm1jp1(ip,ij) * interp_nepj(ip-1,ij+1,iky,ikx,iz)
+          Unepm1jm1 = znepm1jm1(ip,ij) * interp_nepj(ip-1,ij-1,iky,ikx,iz)
 
           Tmir = Tnepp1j + Tnepp1jm1 + Tnepm1j + Tnepm1jm1 + Unepm1j + Unepm1jp1 + Unepm1jm1
           !! Electrical potential term
           IF ( p_int .LE. 2 ) THEN ! kronecker p0 p1 p2
-            Tphi = (xphij_i  (ip,ij)*kernel_e(ij  ,ikx,iky,iz,eo) &
-                  + xphijp1_i(ip,ij)*kernel_e(ij+1,ikx,iky,iz,eo) &
-                  + xphijm1_i(ip,ij)*kernel_e(ij-1,ikx,iky,iz,eo))*phikxkyz
+            Tphi = (xphij_i  (ip,ij)*kernel_e(ij  ,iky,ikx,iz,eo) &
+                  + xphijp1_i(ip,ij)*kernel_e(ij+1,iky,ikx,iz,eo) &
+                  + xphijm1_i(ip,ij)*kernel_e(ij-1,iky,ikx,iz,eo))*phikykxz
           ELSE
             Tphi = 0._dp
           ENDIF
 
           !! Sum of all RHS terms
-          moments_rhs_e(ip,ij,ikx,iky,iz,updatetlevel) = &
+          moments_rhs_e(ip,ij,iky,ikx,iz,updatetlevel) = &
               ! Perpendicular magnetic gradient/curvature effects
-              - imagu*Ckxky(ikx,iky,iz,eo)*hatR(iz,eo)* (Tnepj + Tnepp2j + Tnepm2j + Tnepjp1 + Tnepjm1)&
+              - imagu*Ckxky(iky,ikx,iz,eo)*hatR(iz,eo)* (Tnepj + Tnepp2j + Tnepm2j + Tnepjp1 + Tnepjm1)&
               ! Parallel coupling (Landau Damping)
               - Tpar*gradz_coeff(iz,eo) &
               ! Mirror term (parallel magnetic gradient)
@@ -108,18 +108,18 @@ SUBROUTINE moments_eq_rhs_e
               ! Drives (density + temperature gradients)
               - i_ky * Tphi &
               ! Numerical perpendicular hyperdiffusion (totally artificial, for stability purpose)
-              - (mu_x*kx**4 + mu_y*ky**4)*moments_e(ip,ij,ikx,iky,iz,updatetlevel) &
+              - (mu_x*kx**4 + mu_y*ky**4)*moments_e(ip,ij,iky,ikx,iz,updatetlevel) &
               ! Numerical parallel hyperdiffusion "+ (mu_z*kz**4)"
-              + mu_z * diff_dz_coeff * ddz2_Nepj(ip,ij,ikx,iky,iz) &
+              + mu_z * diff_dz_coeff * ddz2_Nepj(ip,ij,iky,ikx,iz) &
               ! Collision term
-              + TColl_e(ip,ij,ikx,iky,iz) &
+              + TColl_e(ip,ij,iky,ikx,iz) &
               ! Nonlinear term
-              - Sepj(ip,ij,ikx,iky,iz)
+              - Sepj(ip,ij,iky,ikx,iz)
 
           END DO ploope
         END DO jloope
-      END DO kxloope
-    END DO kyloope
+      END DO kyloope
+    END DO kxloope
   END DO zloope
 
   ! Execution time end
@@ -153,7 +153,7 @@ SUBROUTINE moments_eq_rhs_i
   COMPLEX(dp) :: Tnipp1j, Tnipm1j, Tnipp1jm1, Tnipm1jm1 ! Terms from mirror force with non adiab moments
   COMPLEX(dp) :: Unipm1j, Unipm1jp1, Unipm1jm1 ! Terms from mirror force with adiab moments
   COMPLEX(dp) :: Tperp, Tpar, Tmir, Tphi
-  COMPLEX(dp) :: i_ky, phikxkyz
+  COMPLEX(dp) :: i_ky, phikykxz
 
   ! Measuring execution time
   CALL cpu_time(t0_rhs)
@@ -161,13 +161,13 @@ SUBROUTINE moments_eq_rhs_i
 
   ! Spatial loops
   zloopi : DO  iz = izs,ize
-    kyloopi : DO iky = ikys,ikye
-      ky     = kyarray(iky)   ! toroidal wavevector
-      i_ky   = imagu * ky     ! toroidal derivative
+    kxloopi : DO ikx = ikxs,ikxe
+      kx       = kxarray(ikx)   ! radial wavevector
 
-      kxloopi : DO ikx = ikxs,ikxe
-        kx       = kxarray(ikx)   ! radial wavevector
-        phikxkyz = phi(ikx,iky,iz)! tmp phi value
+        kyloopi : DO iky = ikys,ikye
+          ky     = kyarray(iky)   ! toroidal wavevector
+          i_ky   = imagu * ky     ! toroidal derivative
+          phikykxz = phi(iky,ikx,iz)! tmp phi value
 
         ! Kinetic loops
         jloopi : DO ij = ijs_i, ije_i  ! This loop is from 1 to jmaxi+1
@@ -176,52 +176,52 @@ SUBROUTINE moments_eq_rhs_i
           ploopi : DO ip = ips_i, ipe_i  ! Hermite loop
             p_int = parray_i(ip)    ! Hermite degree
             eo    = MODULO(p_int,2) ! Indicates if we are on odd or even z grid
-            kperp2= kparray(ikx,iky,iz,eo)**2
+            kperp2= kparray(iky,ikx,iz,eo)**2
 
             !! Compute moments mixing terms
             Tperp = 0._dp; Tpar = 0._dp; Tmir = 0._dp
             ! Perpendicular dynamic
             ! term propto n_i^{p,j}
-            Tnipj   = xnipj(ip,ij) * nadiab_moments_i(ip    ,ij  ,ikx,iky,iz)
+            Tnipj   = xnipj(ip,ij) * nadiab_moments_i(ip    ,ij  ,iky,ikx,iz)
             ! term propto n_i^{p+2,j}
-            Tnipp2j = xnipp2j(ip)  * nadiab_moments_i(ip+pp2,ij  ,ikx,iky,iz)
+            Tnipp2j = xnipp2j(ip)  * nadiab_moments_i(ip+pp2,ij  ,iky,ikx,iz)
             ! term propto n_i^{p-2,j}
-            Tnipm2j = xnipm2j(ip)  * nadiab_moments_i(ip-pp2,ij  ,ikx,iky,iz)
+            Tnipm2j = xnipm2j(ip)  * nadiab_moments_i(ip-pp2,ij  ,iky,ikx,iz)
             ! term propto n_i^{p,j+1}
-            Tnipjp1 = xnipjp1(ij)  * nadiab_moments_i(ip    ,ij+1,ikx,iky,iz)
+            Tnipjp1 = xnipjp1(ij)  * nadiab_moments_i(ip    ,ij+1,iky,ikx,iz)
             ! term propto n_i^{p,j-1}
-            Tnipjm1 = xnipjm1(ij)  * nadiab_moments_i(ip    ,ij-1,ikx,iky,iz)
+            Tnipjm1 = xnipjm1(ij)  * nadiab_moments_i(ip    ,ij-1,iky,ikx,iz)
             ! Tperp
             Tperp   = Tnipj + Tnipp2j + Tnipm2j + Tnipjp1 + Tnipjm1
             ! Parallel dynamic
             ! ddz derivative for Landau damping term
-            Tpar      = xnipp1j(ip) * ddz_nipj(ip+1,ij,ikx,iky,iz) &
-                      + xnipm1j(ip) * ddz_nipj(ip-1,ij,ikx,iky,iz)
+            Tpar      = xnipp1j(ip) * ddz_nipj(ip+1,ij,iky,ikx,iz) &
+                      + xnipm1j(ip) * ddz_nipj(ip-1,ij,iky,ikx,iz)
             ! Mirror terms
-            Tnipp1j   = ynipp1j  (ip,ij) * interp_nipj(ip+1,ij  ,ikx,iky,iz)
-            Tnipp1jm1 = ynipp1jm1(ip,ij) * interp_nipj(ip+1,ij-1,ikx,iky,iz)
-            Tnipm1j   = ynipm1j  (ip,ij) * interp_nipj(ip-1,ij  ,ikx,iky,iz)
-            Tnipm1jm1 = ynipm1jm1(ip,ij) * interp_nipj(ip-1,ij-1,ikx,iky,iz)
+            Tnipp1j   = ynipp1j  (ip,ij) * interp_nipj(ip+1,ij  ,iky,ikx,iz)
+            Tnipp1jm1 = ynipp1jm1(ip,ij) * interp_nipj(ip+1,ij-1,iky,ikx,iz)
+            Tnipm1j   = ynipm1j  (ip,ij) * interp_nipj(ip-1,ij  ,iky,ikx,iz)
+            Tnipm1jm1 = ynipm1jm1(ip,ij) * interp_nipj(ip-1,ij-1,iky,ikx,iz)
             ! Trapping terms
-            Unipm1j   = znipm1j  (ip,ij) * interp_nipj(ip-1,ij  ,ikx,iky,iz)
-            Unipm1jp1 = znipm1jp1(ip,ij) * interp_nipj(ip-1,ij+1,ikx,iky,iz)
-            Unipm1jm1 = znipm1jm1(ip,ij) * interp_nipj(ip-1,ij-1,ikx,iky,iz)
+            Unipm1j   = znipm1j  (ip,ij) * interp_nipj(ip-1,ij  ,iky,ikx,iz)
+            Unipm1jp1 = znipm1jp1(ip,ij) * interp_nipj(ip-1,ij+1,iky,ikx,iz)
+            Unipm1jm1 = znipm1jm1(ip,ij) * interp_nipj(ip-1,ij-1,iky,ikx,iz)
 
             Tmir = Tnipp1j + Tnipp1jm1 + Tnipm1j + Tnipm1jm1 + Unipm1j + Unipm1jp1 + Unipm1jm1
 
             !! Electrical potential term
             IF ( p_int .LE. 2 ) THEN ! kronecker p0 p1 p2
-              Tphi = (xphij_i  (ip,ij)*kernel_i(ij  ,ikx,iky,iz,eo) &
-                    + xphijp1_i(ip,ij)*kernel_i(ij+1,ikx,iky,iz,eo) &
-                    + xphijm1_i(ip,ij)*kernel_i(ij-1,ikx,iky,iz,eo))*phikxkyz
+              Tphi = (xphij_i  (ip,ij)*kernel_i(ij  ,iky,ikx,iz,eo) &
+                    + xphijp1_i(ip,ij)*kernel_i(ij+1,iky,ikx,iz,eo) &
+                    + xphijm1_i(ip,ij)*kernel_i(ij-1,iky,ikx,iz,eo))*phikykxz
             ELSE
               Tphi = 0._dp
             ENDIF
 
             !! Sum of all RHS terms
-            moments_rhs_i(ip,ij,ikx,iky,iz,updatetlevel) = &
+            moments_rhs_i(ip,ij,iky,ikx,iz,updatetlevel) = &
                 ! Perpendicular magnetic gradient/curvature effects
-                - imagu*Ckxky(ikx,iky,iz,eo)*hatR(iz,eo) * Tperp &
+                - imagu*Ckxky(iky,ikx,iz,eo)*hatR(iz,eo) * Tperp &
                 ! Parallel coupling (Landau damping)
                 - gradz_coeff(iz,eo) * Tpar &
                 ! Mirror term (parallel magnetic gradient)
@@ -229,18 +229,18 @@ SUBROUTINE moments_eq_rhs_i
                 ! Drives (density + temperature gradients)
                 - i_ky * Tphi &
                 ! Numerical hyperdiffusion (totally artificial, for stability purpose)
-                - (mu_x*kx**4 + mu_y*ky**4)*moments_i(ip,ij,ikx,iky,iz,updatetlevel) &
+                - (mu_x*kx**4 + mu_y*ky**4)*moments_i(ip,ij,iky,ikx,iz,updatetlevel) &
                 ! Numerical parallel hyperdiffusion "+ (mu_z*kz**4)"
-                + mu_z * diff_dz_coeff * ddz2_Nipj(ip,ij,ikx,iky,iz) &
+                + mu_z * diff_dz_coeff * ddz2_Nipj(ip,ij,iky,ikx,iz) &
                 ! Collision term
-                + TColl_i(ip,ij,ikx,iky,iz)&
+                + TColl_i(ip,ij,iky,ikx,iz)&
                 ! Nonlinear term
-                - Sipj(ip,ij,ikx,iky,iz)
+                - Sipj(ip,ij,iky,ikx,iz)
 
           END DO ploopi
         END DO jloopi
-      END DO kxloopi
-    END DO kyloopi
+      END DO kyloopi
+    END DO kxloopi
   END DO zloopi
 
   ! Execution time end
diff --git a/src/nonlinear_mod.F90 b/src/nonlinear_mod.F90
index c70de47a619e10428f2fe0740c66df9a3415eea5..78ffce96817fe8a68febcd436eb73455525ac3c0 100644
--- a/src/nonlinear_mod.F90
+++ b/src/nonlinear_mod.F90
@@ -24,15 +24,15 @@ MODULE nonlinear
 CONTAINS
 
 SUBROUTINE nonlinear_init
-  ALLOCATE( F_cmpx(ikxs:ikxe,ikys:ikye))
-  ALLOCATE( G_cmpx(ikxs:ikxe,ikys:ikye))
+  ALLOCATE( F_cmpx(ikys:ikye,ikxs:ikxe))
+  ALLOCATE( G_cmpx(ikys:ikye,ikxs:ikxe))
 
-  ALLOCATE(Fx_cmpx(ikxs:ikxe,ikys:ikye))
-  ALLOCATE(Gy_cmpx(ikxs:ikxe,ikys:ikye))
-  ALLOCATE(Fy_cmpx(ikxs:ikxe,ikys:ikye))
-  ALLOCATE(Gx_cmpx(ikxs:ikxe,ikys:ikye))
+  ALLOCATE(Fx_cmpx(ikys:ikye,ikxs:ikxe))
+  ALLOCATE(Gy_cmpx(ikys:ikye,ikxs:ikxe))
+  ALLOCATE(Fy_cmpx(ikys:ikye,ikxs:ikxe))
+  ALLOCATE(Gx_cmpx(ikys:ikye,ikxs:ikxe))
 
-  ALLOCATE(F_conv_G(ikxs:ikxe,ikys:ikye))
+  ALLOCATE(F_conv_G(ikys:ikye,ikxs:ikxe))
 END SUBROUTINE nonlinear_init
 
 SUBROUTINE compute_Sapj
@@ -101,7 +101,7 @@ SUBROUTINE compute_nonlinear
       ! Retrieve convolution in input format
       DO ikx = ikxs, ikxe
         DO iky = ikys, ikye
-          Sepj(ip,ij,ikx,iky,iz) = bracket_sum_c(iky,ikx-local_nkx_offset)*AA_x(ikx)*AA_y(iky) !Anti aliasing filter
+          Sepj(ip,ij,iky,ikx,iz) = bracket_sum_c(ikx,iky-local_nky_offset)*AA_x(ikx)*AA_y(iky) !Anti aliasing filter
         ENDDO
       ENDDO
     ENDDO jloope
@@ -143,7 +143,7 @@ zloopi: DO iz = izs,ize
       ! Retrieve convolution in input format
       DO ikx = ikxs, ikxe
         DO iky = ikys, ikye
-          Sipj(ip,ij,ikx,iky,iz) = bracket_sum_c(iky,ikx-local_nkx_offset)*AA_x(ikx)*AA_y(iky)
+          Sipj(ip,ij,iky,ikx,iz) = bracket_sum_c(ikx,iky-local_nky_offset)*AA_x(ikx)*AA_y(iky)
         ENDDO
       ENDDO
     ENDDO jloopi
@@ -184,26 +184,26 @@ SUBROUTINE compute_semi_linear_ZF
             ky      = kyarray(iky)
             kerneln = kernel_e(in, ikx, iky, iz, eo)
             ! Zonal terms (=0 for all ky not 0)
-            Fx_cmpx(ikx,iky) = 0._dp
-            Gx_cmpx(ikx,iky) = 0._dp
+            Fx_cmpx(iky,ikx) = 0._dp
+            Gx_cmpx(iky,ikx) = 0._dp
             IF(iky .EQ. iky_0) THEN
-              Fx_cmpx(ikx,iky) = imagu*kx* phi(ikx,iky,iz) * kerneln
+              Fx_cmpx(iky,ikx) = imagu*kx* phi(iky,ikx,iz) * kerneln
               smax = MIN( (in-1)+(ij-1), jmaxe );
               DO is = 1, smax+1 ! sum truncation on number of moments
-                Gx_cmpx(ikx,iky) = Gx_cmpx(ikx,iky) + &
-                  dnjs(in,ij,is) * moments_e(ip,is,ikx,iky,iz,updatetlevel)
+                Gx_cmpx(iky,ikx) = Gx_cmpx(iky,ikx) + &
+                  dnjs(in,ij,is) * moments_e(ip,is,iky,ikx,iz,updatetlevel)
               ENDDO
-              Gx_cmpx(ikx,iky) = imagu*kx*Gx_cmpx(ikx,iky)
+              Gx_cmpx(iky,ikx) = imagu*kx*Gx_cmpx(iky,ikx)
             ENDIF
             ! NZ terms
-            Fy_cmpx(ikx,iky) = imagu*ky* phi(ikx,iky,iz) * kerneln
-            Gy_cmpx(ikx,iky) = 0._dp ! initialization of the sum
+            Fy_cmpx(iky,ikx) = imagu*ky* phi(iky,ikx,iz) * kerneln
+            Gy_cmpx(iky,ikx) = 0._dp ! initialization of the sum
             smax = MIN( (in-1)+(ij-1), jmaxe );
             DO is = 1, smax+1 ! sum truncation on number of moments
-              Gy_cmpx(ikx,iky) = Gy_cmpx(ikx,iky) + &
-                dnjs(in,ij,is) * moments_e(ip,is,ikx,iky,iz,updatetlevel)
+              Gy_cmpx(iky,ikx) = Gy_cmpx(iky,ikx) + &
+                dnjs(in,ij,is) * moments_e(ip,is,iky,ikx,iz,updatetlevel)
             ENDDO
-            Gy_cmpx(ikx,iky) = imagu*ky*Gy_cmpx(ikx,iky)
+            Gy_cmpx(iky,ikx) = imagu*ky*Gy_cmpx(iky,ikx)
           ENDDO kyloope
         ENDDO kxloope
         ! First term df/dx x dg/dy
@@ -216,7 +216,7 @@ SUBROUTINE compute_semi_linear_ZF
       ! Retrieve convolution in input format
       DO ikx = ikxs, ikxe
         DO iky = ikys, ikye
-          Sepj(ip,ij,ikx,iky,iz) = bracket_sum_c(iky,ikx-local_nkx_offset)*AA_x(ikx)*AA_y(iky) !Anti aliasing filter
+          Sepj(ip,ij,iky,ikx,iz) = bracket_sum_c(ikx,iky-local_nky_offset)*AA_x(ikx)*AA_y(iky) !Anti aliasing filter
         ENDDO
       ENDDO
     ENDDO jloope
@@ -244,27 +244,27 @@ zloopi: DO iz = izs,ize
         kxloopi: DO ikx = ikxs,ikxe ! Loop over kx
           kyloopi: DO iky = ikys,ikye ! Loop over ky
             ! Zonal terms (=0 for all ky not 0)
-            Fx_cmpx(ikx,iky) = 0._dp
-            Gx_cmpx(ikx,iky) = 0._dp
+            Fx_cmpx(iky,ikx) = 0._dp
+            Gx_cmpx(iky,ikx) = 0._dp
             IF(iky .EQ. iky_0) THEN
-              Fx_cmpx(ikx,iky) = imagu*kx* phi(ikx,iky,iz) * kerneln
+              Fx_cmpx(iky,ikx) = imagu*kx* phi(iky,ikx,iz) * kerneln
               smax = MIN( (in-1)+(ij-1), jmaxi );
               DO is = 1, smax+1 ! sum truncation on number of moments
-                Gx_cmpx(ikx,iky) = Gx_cmpx(ikx,iky) + &
-                  dnjs(in,ij,is) * moments_i(ip,is,ikx,iky,iz,updatetlevel)
+                Gx_cmpx(iky,ikx) = Gx_cmpx(iky,ikx) + &
+                  dnjs(in,ij,is) * moments_i(ip,is,iky,ikx,iz,updatetlevel)
               ENDDO
-              Gx_cmpx(ikx,iky) = imagu*kx*Gx_cmpx(ikx,iky)
+              Gx_cmpx(iky,ikx) = imagu*kx*Gx_cmpx(iky,ikx)
             ENDIF
 
             ! NZ terms
-            Fy_cmpx(ikx,iky) = imagu*ky* phi(ikx,iky,iz) * kerneln
-            Gy_cmpx(ikx,iky) = 0._dp ! initialization of the sum
+            Fy_cmpx(iky,ikx) = imagu*ky* phi(iky,ikx,iz) * kerneln
+            Gy_cmpx(iky,ikx) = 0._dp ! initialization of the sum
             smax = MIN( (in-1)+(ij-1), jmaxi );
             DO is = 1, smax+1 ! sum truncation on number of moments
-              Gy_cmpx(ikx,iky) = Gy_cmpx(ikx,iky) + &
-                dnjs(in,ij,is) * moments_i(ip,is,ikx,iky,iz,updatetlevel)
+              Gy_cmpx(iky,ikx) = Gy_cmpx(iky,ikx) + &
+                dnjs(in,ij,is) * moments_i(ip,is,iky,ikx,iz,updatetlevel)
             ENDDO
-            Gy_cmpx(ikx,iky) = imagu*ky*Gy_cmpx(ikx,iky)
+            Gy_cmpx(iky,ikx) = imagu*ky*Gy_cmpx(iky,ikx)
           ENDDO kyloopi
         ENDDO kxloopi
         ! First term drphi x dzf
@@ -277,7 +277,7 @@ zloopi: DO iz = izs,ize
       ! Retrieve convolution in input format
       DO ikx = ikxs, ikxe
         DO iky = ikys, ikye
-          Sipj(ip,ij,ikx,iky,iz) = bracket_sum_c(iky,ikx-local_nkx_offset)*AA_x(ikx)*AA_y(iky)
+          Sipj(ip,ij,iky,ikx,iz) = bracket_sum_c(ikx,iky-local_nky_offset)*AA_x(ikx)*AA_y(iky)
         ENDDO
       ENDDO
     ENDDO jloopi
@@ -316,25 +316,25 @@ SUBROUTINE compute_semi_linear_NZ
             ky      = kyarray(iky)
             kerneln = kernel_e(in, ikx, iky, iz, eo)
             ! All terms
-            Fx_cmpx(ikx,iky) = imagu*kx* phi(ikx,iky,iz) * kerneln
+            Fx_cmpx(iky,ikx) = imagu*kx* phi(iky,ikx,iz) * kerneln
             smax = MIN( (in-1)+(ij-1), jmaxe );
             DO is = 1, smax+1 ! sum truncation on number of moments
-              Gx_cmpx(ikx,iky) = Gx_cmpx(ikx,iky) + &
-                dnjs(in,ij,is) * moments_e(ip,is,ikx,iky,iz,updatetlevel)
+              Gx_cmpx(iky,ikx) = Gx_cmpx(iky,ikx) + &
+                dnjs(in,ij,is) * moments_e(ip,is,iky,ikx,iz,updatetlevel)
             ENDDO
-            Gx_cmpx(ikx,iky) = imagu*kx*Gx_cmpx(ikx,iky)
+            Gx_cmpx(iky,ikx) = imagu*kx*Gx_cmpx(iky,ikx)
             ! Kx = 0 terms
-            Fy_cmpx(ikx,iky) = 0._dp
-            Gy_cmpx(ikx,iky) = 0._dp
+            Fy_cmpx(iky,ikx) = 0._dp
+            Gy_cmpx(iky,ikx) = 0._dp
             IF (ikx .EQ. ikx_0) THEN
-              Fy_cmpx(ikx,iky) = imagu*ky* phi(ikx,iky,iz) * kerneln
-              Gy_cmpx(ikx,iky) = 0._dp ! initialization of the sum
+              Fy_cmpx(iky,ikx) = imagu*ky* phi(iky,ikx,iz) * kerneln
+              Gy_cmpx(iky,ikx) = 0._dp ! initialization of the sum
               smax = MIN( (in-1)+(ij-1), jmaxe );
               DO is = 1, smax+1 ! sum truncation on number of moments
-                Gy_cmpx(ikx,iky) = Gy_cmpx(ikx,iky) + &
-                  dnjs(in,ij,is) * moments_e(ip,is,ikx,iky,iz,updatetlevel)
+                Gy_cmpx(iky,ikx) = Gy_cmpx(iky,ikx) + &
+                  dnjs(in,ij,is) * moments_e(ip,is,iky,ikx,iz,updatetlevel)
               ENDDO
-              Gy_cmpx(ikx,iky) = imagu*ky*Gy_cmpx(ikx,iky)
+              Gy_cmpx(iky,ikx) = imagu*ky*Gy_cmpx(iky,ikx)
             ENDIF
           ENDDO kyloope
         ENDDO kxloope
@@ -348,7 +348,7 @@ SUBROUTINE compute_semi_linear_NZ
       ! Retrieve convolution in input format
       DO ikx = ikxs, ikxe
         DO iky = ikys, ikye
-          Sepj(ip,ij,ikx,iky,iz) = bracket_sum_c(iky,ikx-local_nkx_offset)*AA_x(ikx)*AA_y(iky) !Anti aliasing filter
+          Sepj(ip,ij,iky,ikx,iz) = bracket_sum_c(ikx,iky-local_nky_offset)*AA_x(ikx)*AA_y(iky) !Anti aliasing filter
         ENDDO
       ENDDO
     ENDDO jloope
@@ -376,26 +376,26 @@ zloopi: DO iz = izs,ize
         kxloopi: DO ikx = ikxs,ikxe ! Loop over kx
           kyloopi: DO iky = ikys,ikye ! Loop over ky
             ! Zonal terms (=0 for all ky not 0)
-            Fx_cmpx(ikx,iky) = imagu*kx* phi(ikx,iky,iz) * kerneln
+            Fx_cmpx(iky,ikx) = imagu*kx* phi(iky,ikx,iz) * kerneln
             smax = MIN( (in-1)+(ij-1), jmaxi );
             DO is = 1, smax+1 ! sum truncation on number of moments
-              Gx_cmpx(ikx,iky) = Gx_cmpx(ikx,iky) + &
-                dnjs(in,ij,is) * moments_i(ip,is,ikx,iky,iz,updatetlevel)
+              Gx_cmpx(iky,ikx) = Gx_cmpx(iky,ikx) + &
+                dnjs(in,ij,is) * moments_i(ip,is,iky,ikx,iz,updatetlevel)
             ENDDO
-            Gx_cmpx(ikx,iky) = imagu*kx*Gx_cmpx(ikx,iky)
+            Gx_cmpx(iky,ikx) = imagu*kx*Gx_cmpx(iky,ikx)
 
             ! Kx = 0 terms
-            Fy_cmpx(ikx,iky) = 0._dp
-            Gy_cmpx(ikx,iky) = 0._dp
+            Fy_cmpx(iky,ikx) = 0._dp
+            Gy_cmpx(iky,ikx) = 0._dp
             IF (ikx .EQ. ikx_0) THEN
-              Fy_cmpx(ikx,iky) = imagu*ky* phi(ikx,iky,iz) * kerneln
-              Gy_cmpx(ikx,iky) = 0._dp ! initialization of the sum
+              Fy_cmpx(iky,ikx) = imagu*ky* phi(iky,ikx,iz) * kerneln
+              Gy_cmpx(iky,ikx) = 0._dp ! initialization of the sum
               smax = MIN( (in-1)+(ij-1), jmaxi );
               DO is = 1, smax+1 ! sum truncation on number of moments
-                Gy_cmpx(ikx,iky) = Gy_cmpx(ikx,iky) + &
-                  dnjs(in,ij,is) * moments_i(ip,is,ikx,iky,iz,updatetlevel)
+                Gy_cmpx(iky,ikx) = Gy_cmpx(iky,ikx) + &
+                  dnjs(in,ij,is) * moments_i(ip,is,iky,ikx,iz,updatetlevel)
               ENDDO
-              Gy_cmpx(ikx,iky) = imagu*ky*Gy_cmpx(ikx,iky)
+              Gy_cmpx(iky,ikx) = imagu*ky*Gy_cmpx(iky,ikx)
             ENDIF
           ENDDO kyloopi
         ENDDO kxloopi
@@ -409,7 +409,7 @@ zloopi: DO iz = izs,ize
       ! Retrieve convolution in input format
       DO ikx = ikxs, ikxe
         DO iky = ikys, ikye
-          Sipj(ip,ij,ikx,iky,iz) = bracket_sum_c(iky,ikx-local_nkx_offset)*AA_x(ikx)*AA_y(iky)
+          Sipj(ip,ij,iky,ikx,iz) = bracket_sum_c(ikx,iky-local_nky_offset)*AA_x(ikx)*AA_y(iky)
         ENDDO
       ENDDO
     ENDDO jloopi
diff --git a/src/numerics_mod.F90 b/src/numerics_mod.F90
index ba8d0653e120c44d9ba44c48e120751cf89b3616..77d0d35749e853075968b23cdf9ac5d5f74ff357 100644
--- a/src/numerics_mod.F90
+++ b/src/numerics_mod.F90
@@ -55,7 +55,7 @@ SUBROUTINE evaluate_kernels
                     lambdaD, CLOS, sigmae2_taue_o2, sigmai2_taui_o2, KIN_E
   IMPLICIT NONE
   INTEGER    :: j_int
-  REAL(dp)   :: j_dp, y_, kp2_, kx_, ky_
+  REAL(dp)   :: j_dp, y_
 
 DO eo  = 0,1
 DO ikx = ikxs,ikxe
@@ -66,21 +66,21 @@ DO iz  = izgs,izge
   DO ij = ijgs_e, ijge_e
     j_int = jarray_e(ij)
     j_dp  = REAL(j_int,dp)
-    y_    =  sigmae2_taue_o2 * kparray(ikx,iky,iz,eo)**2
-    kernel_e(ij,ikx,iky,iz,eo) = y_**j_int*EXP(-y_)/GAMMA(j_dp+1._dp)!factj
+    y_    =  sigmae2_taue_o2 * kparray(iky,ikx,iz,eo)**2
+    kernel_e(ij,iky,ikx,iz,eo) = y_**j_int*EXP(-y_)/GAMMA(j_dp+1._dp)!factj
   ENDDO
   IF (ijs_e .EQ. 1) &
-  kernel_e(ijgs_e,ikx,iky,iz,eo) = 0._dp
+  kernel_e(ijgs_e,iky,ikx,iz,eo) = 0._dp
   ENDIF
   !!!!! Ion kernels !!!!!
   DO ij = ijgs_i, ijge_i
     j_int = jarray_i(ij)
     j_dp  = REAL(j_int,dp)
-    y_    =  sigmai2_taui_o2 * kparray(ikx,iky,iz,eo)**2
-    kernel_i(ij,ikx,iky,iz,eo) = y_**j_int*EXP(-y_)/GAMMA(j_dp+1._dp)!factj
+    y_    =  sigmai2_taui_o2 * kparray(iky,ikx,iz,eo)**2
+    kernel_i(ij,iky,ikx,iz,eo) = y_**j_int*EXP(-y_)/GAMMA(j_dp+1._dp)!factj
   ENDDO
   IF (ijs_i .EQ. 1) &
-  kernel_i(ijgs_i,ikx,iky,iz,eo) = 0._dp
+  kernel_i(ijgs_i,iky,ikx,iz,eo) = 0._dp
 ENDDO
 ENDDO
 ENDDO
@@ -107,13 +107,13 @@ SUBROUTINE evaluate_poisson_op
   kyloop: DO iky = ikys,ikye
   zloop:  DO iz  = izs,ize
   IF( (kxarray(ikx).EQ.0._dp) .AND. (kyarray(iky).EQ.0._dp) ) THEN
-      inv_poisson_op(ikx, iky, iz) =  0._dp
+      inv_poisson_op(iky, ikx, iz) =  0._dp
   ELSE
     !!!!!!!!!!!!!!!!! Ion contribution
     ! loop over n only if the max polynomial degree
     pol_i = 0._dp
     DO ini=1,jmaxi+1
-      pol_i = pol_i  + qi2_taui*kernel_i(ini,ikx,iky,iz,0)**2 ! ... sum recursively ...
+      pol_i = pol_i  + qi2_taui*kernel_i(ini,iky,ikx,iz,0)**2 ! ... sum recursively ...
     END DO
     !!!!!!!!!!!!! Electron contribution
     pol_e = 0._dp
@@ -121,13 +121,13 @@ SUBROUTINE evaluate_poisson_op
     IF (KIN_E) THEN
       ! loop over n only if the max polynomial degree
       DO ine=1,jmaxe+1 ! ine = n+1
-        pol_e = pol_e  + qe2_taue*kernel_e(ine,ikx,iky,iz,0)**2 ! ... sum recursively ...
+        pol_e = pol_e  + qe2_taue*kernel_e(ine,iky,ikx,iz,0)**2 ! ... sum recursively ...
       END DO
     ! Adiabatic model
     ELSE
       pol_e = 1._dp - qe2_taue
     ENDIF
-    inv_poisson_op(ikx, iky, iz) =  1._dp/(qe2_taue + qi2_taui - pol_i - pol_e)
+    inv_poisson_op(iky, ikx, iz) =  1._dp/(qe2_taue + qi2_taui - pol_i - pol_e)
   ENDIF
   END DO zloop
   END DO kyloop
@@ -281,15 +281,22 @@ SUBROUTINE save_EM_ZF_modes
   USE model, ONLY: KIN_E
   IMPLICIT NONE
   ! Store Zonal and entropy modes
+  IF(contains_ky0) THEN
   IF(KIN_E) &
-  moments_e_ZF(ips_e:ipe_e,ijs_e:ije_e,ikxs:ikxe,izs:ize) = moments_e(ips_e:ipe_e,ijs_e:ije_e,ikxs:ikxe,iky_0,izs:ize,updatetlevel)
-  moments_i_ZF(ips_i:ipe_i,ijs_i:ije_i,ikxs:ikxe,izs:ize) = moments_i(ips_i:ipe_i,ijs_i:ije_i,ikxs:ikxe,iky_0,izs:ize,updatetlevel)
-  phi_ZF(ikxs:ikxe,izs:ize) = phi(ikxs:ikxe,iky_0,izs:ize)
+    moments_e_ZF(ips_e:ipe_e,ijs_e:ije_e,ikxs:ikxe,izs:ize) = moments_e(ips_e:ipe_e,ijs_e:ije_e,iky_0,ikxs:ikxe,izs:ize,updatetlevel)
+    moments_i_ZF(ips_i:ipe_i,ijs_i:ije_i,ikxs:ikxe,izs:ize) = moments_i(ips_i:ipe_i,ijs_i:ije_i,iky_0,ikxs:ikxe,izs:ize,updatetlevel)
+    phi_ZF(ikxs:ikxe,izs:ize) = phi(iky_0,ikxs:ikxe,izs:ize)
+  ELSE
+    IF(KIN_E) &
+    moments_e_ZF(ips_e:ipe_e,ijs_e:ije_e,ikxs:ikxe,izs:ize) = 0._dp
+    moments_i_ZF(ips_i:ipe_i,ijs_i:ije_i,ikxs:ikxe,izs:ize) = 0._dp
+    phi_ZF(ikxs:ikxe,izs:ize) = 0._dp
+  ENDIF
   IF(contains_kx0) THEN
     IF(KIN_E) &
-    moments_e_EM(ips_e:ipe_e,ijs_e:ije_e,ikys:ikye,izs:ize) = moments_e(ips_e:ipe_e,ijs_e:ije_e,ikx_0,ikys:ikye,izs:ize,updatetlevel)
-    moments_i_EM(ips_i:ipe_i,ijs_i:ije_i,ikys:ikye,izs:ize) = moments_i(ips_i:ipe_i,ijs_i:ije_i,ikx_0,ikys:ikye,izs:ize,updatetlevel)
-    phi_EM(ikys:ikye,izs:ize) = phi(ikx_0,ikys:ikye,izs:ize)
+    moments_e_EM(ips_e:ipe_e,ijs_e:ije_e,ikys:ikye,izs:ize) = moments_e(ips_e:ipe_e,ijs_e:ije_e,ikys:ikye,ikx_0,izs:ize,updatetlevel)
+    moments_i_EM(ips_i:ipe_i,ijs_i:ije_i,ikys:ikye,izs:ize) = moments_i(ips_i:ipe_i,ijs_i:ije_i,ikys:ikye,ikx_0,izs:ize,updatetlevel)
+    phi_EM(ikys:ikye,izs:ize) = phi(ikys:ikye,ikx_0,izs:ize)
   ELSE
     IF(KIN_E) &
     moments_e_EM(ips_e:ipe_e,ijs_e:ije_e,ikys:ikye,izs:ize) = 0._dp
@@ -311,22 +318,22 @@ SUBROUTINE play_with_modes
   SELECT CASE(ACT_ON_MODES)
   CASE('wipe_zonal') ! Errase the zonal flow
     IF(KIN_E) &
-    moments_e(ips_e:ipe_e,ijs_e:ije_e,ikxs:ikxe,iky_0,izs:ize,updatetlevel) = 0._dp
-    moments_i(ips_i:ipe_i,ijs_i:ije_i,ikxs:ikxe,iky_0,izs:ize,updatetlevel) = 0._dp
-    phi(ikxs:ikxe,iky_0,izs:ize) = 0._dp
+    moments_e(ips_e:ipe_e,ijs_e:ije_e,iky_0,ikxs:ikxe,izs:ize,updatetlevel) = 0._dp
+    moments_i(ips_i:ipe_i,ijs_i:ije_i,iky_0,ikxs:ikxe,izs:ize,updatetlevel) = 0._dp
+    phi(iky_0,ikxs:ikxe,izs:ize) = 0._dp
   CASE('wipe_entropymode')
     IF(KIN_E) &
-    moments_e(ips_e:ipe_e,ijs_e:ije_e,ikx_0,ikys:ikye,izs:ize,updatetlevel) = 0._dp
-    moments_i(ips_i:ipe_i,ijs_i:ije_i,ikx_0,ikys:ikye,izs:ize,updatetlevel) = 0._dp
-    phi(ikx_0,ikys:ikye,izs:ize) = 0._dp
+    moments_e(ips_e:ipe_e,ijs_e:ije_e,ikys:ikye,ikx_0,izs:ize,updatetlevel) = 0._dp
+    moments_i(ips_i:ipe_i,ijs_i:ije_i,ikys:ikye,ikx_0,izs:ize,updatetlevel) = 0._dp
+    phi(ikys:ikye,ikx_0,izs:ize) = 0._dp
   CASE('wipe_turbulence')
     DO ikx = ikxs,ikxe
       DO iky = ikys, ikye
         IF ( (ikx .NE. ikx_0) .AND. (iky .NE. iky_0) ) THEN
           IF(KIN_E) &
-          moments_e(ips_e:ipe_e,ijs_e:ije_e,ikx,iky,izs:ize,updatetlevel) = 0._dp
-          moments_i(ips_i:ipe_i,ijs_i:ije_i,ikx,iky,izs:ize,updatetlevel) = 0._dp
-          phi(ikx,iky,izs:ize) = 0._dp
+          moments_e(ips_e:ipe_e,ijs_e:ije_e,iky,ikx,izs:ize,updatetlevel) = 0._dp
+          moments_i(ips_i:ipe_i,ijs_i:ije_i,iky,ikx,izs:ize,updatetlevel) = 0._dp
+          phi(iky,ikx,izs:ize) = 0._dp
         ENDIF
       ENDDO
     ENDDO
@@ -335,29 +342,29 @@ SUBROUTINE play_with_modes
       DO iky = ikys, ikye
         IF ( (ikx .NE. ikx_0) ) THEN
           IF(KIN_E) &
-          moments_e(ips_e:ipe_e,ijs_e:ije_e,ikx,iky,izs:ize,updatetlevel) = 0._dp
-          moments_i(ips_i:ipe_i,ijs_i:ije_i,ikx,iky,izs:ize,updatetlevel) = 0._dp
-          phi(ikx,iky,izs:ize) = 0._dp
+          moments_e(ips_e:ipe_e,ijs_e:ije_e,iky,ikx,izs:ize,updatetlevel) = 0._dp
+          moments_i(ips_i:ipe_i,ijs_i:ije_i,iky,ikx,izs:ize,updatetlevel) = 0._dp
+          phi(iky,ikx,izs:ize) = 0._dp
         ENDIF
       ENDDO
     ENDDO
   CASE('freeze_zonal')
     IF(KIN_E) &
-    moments_e(ips_e:ipe_e,ijs_e:ije_e,ikxs:ikxe,iky_0,izs:ize,updatetlevel) = moments_e_ZF(ips_e:ipe_e,ijs_e:ije_e,ikxs:ikxe,izs:ize)
-    moments_i(ips_i:ipe_i,ijs_i:ije_i,ikxs:ikxe,iky_0,izs:ize,updatetlevel) = moments_i_ZF(ips_i:ipe_i,ijs_i:ije_i,ikxs:ikxe,izs:ize)
-    phi(ikxs:ikxe,iky_0,izs:ize) = phi_ZF(ikxs:ikxe,izs:ize)
+    moments_e(ips_e:ipe_e,ijs_e:ije_e,iky_0,ikxs:ikxe,izs:ize,updatetlevel) = moments_e_ZF(ips_e:ipe_e,ijs_e:ije_e,ikxs:ikxe,izs:ize)
+    moments_i(ips_i:ipe_i,ijs_i:ije_i,iky_0,ikxs:ikxe,izs:ize,updatetlevel) = moments_i_ZF(ips_i:ipe_i,ijs_i:ije_i,ikxs:ikxe,izs:ize)
+    phi(iky_0,ikxs:ikxe,izs:ize) = phi_ZF(ikxs:ikxe,izs:ize)
   CASE('freeze_entropymode')
     IF(contains_kx0) THEN
       IF(KIN_E) &
-      moments_e(ips_e:ipe_e,ijs_e:ije_e,ikx_0,ikys:ikye,izs:ize,updatetlevel) = moments_e_EM(ips_e:ipe_e,ijs_e:ije_e,ikys:ikye,izs:ize)
-      moments_i(ips_i:ipe_i,ijs_i:ije_i,ikx_0,ikys:ikye,izs:ize,updatetlevel) = moments_i_EM(ips_i:ipe_i,ijs_i:ije_i,ikys:ikye,izs:ize)
-      phi(ikx_0,ikys:ikye,izs:ize) = phi_EM(ikys:ikye,izs:ize)
+      moments_e(ips_e:ipe_e,ijs_e:ije_e,ikys:ikye,ikx_0,izs:ize,updatetlevel) = moments_e_EM(ips_e:ipe_e,ijs_e:ije_e,ikys:ikye,izs:ize)
+      moments_i(ips_i:ipe_i,ijs_i:ije_i,ikys:ikye,ikx_0,izs:ize,updatetlevel) = moments_i_EM(ips_i:ipe_i,ijs_i:ije_i,ikys:ikye,izs:ize)
+      phi(ikys:ikye,ikx_0,izs:ize) = phi_EM(ikys:ikye,izs:ize)
     ENDIF
   CASE('amplify_zonal')
     IF(KIN_E) &
-    moments_e(ips_e:ipe_e,ijs_e:ije_e,ikxs:ikxe,iky_0,izs:ize,updatetlevel) = AMP*moments_e_ZF(ips_e:ipe_e,ijs_e:ije_e,ikxs:ikxe,izs:ize)
-    moments_i(ips_i:ipe_i,ijs_i:ije_i,ikxs:ikxe,iky_0,izs:ize,updatetlevel) = AMP*moments_i_ZF(ips_i:ipe_i,ijs_i:ije_i,ikxs:ikxe,izs:ize)
-    phi(ikxs:ikxe,iky_0,izs:ize) = AMP*phi_ZF(ikxs:ikxe,izs:ize)
+    moments_e(ips_e:ipe_e,ijs_e:ije_e,iky_0,ikxs:ikxe,izs:ize,updatetlevel) = AMP*moments_e_ZF(ips_e:ipe_e,ijs_e:ije_e,ikxs:ikxe,izs:ize)
+    moments_i(ips_i:ipe_i,ijs_i:ije_i,iky_0,ikxs:ikxe,izs:ize,updatetlevel) = AMP*moments_i_ZF(ips_i:ipe_i,ijs_i:ije_i,ikxs:ikxe,izs:ize)
+    phi(iky_0,ikxs:ikxe,izs:ize) = AMP*phi_ZF(ikxs:ikxe,izs:ize)
   END SELECT
 END SUBROUTINE
 
diff --git a/src/poisson.F90 b/src/poisson.F90
index c30d9d1298e016c8de0beabb5312df95bd06d44a..3936324eee0339353c29520b0486c7fd79ef04ee 100644
--- a/src/poisson.F90
+++ b/src/poisson.F90
@@ -17,7 +17,6 @@ SUBROUTINE poisson
   INTEGER     :: ini,ine, i_, root_bcast
   COMPLEX(dp) :: fa_phi, intf_   ! current flux averaged phi
   INTEGER     :: count !! mpi integer to broadcast the electric potential at the end
-  COMPLEX(dp) :: buffer(ikxs:ikxe,ikys:ikye)
   COMPLEX(dp), DIMENSION(izs:ize) :: rho_i, rho_e     ! charge density q_a n_a
 
   ! Execution time start
@@ -33,7 +32,7 @@ SUBROUTINE poisson
         DO ini=1,jmaxi+1
           DO iz = izs,ize
           rho_i(iz) = rho_i(iz) &
-           +q_i*kernel_i(ini,ikx,iky,iz,0)*moments_i(ip0_i,ini,ikx,iky,iz,updatetlevel)
+           +q_i*kernel_i(ini,iky,ikx,iz,0)*moments_i(ip0_i,ini,iky,ikx,iz,updatetlevel)
           ENDDO
         END DO
 
@@ -43,7 +42,7 @@ SUBROUTINE poisson
           DO ine=1,jmaxe+1
             DO iz = izs,ize
             rho_e(iz) = rho_e(iz) &
-             +q_e*kernel_e(ine,ikx,iky,iz,0)*moments_e(ip0_e,ine,ikx,iky,iz,updatetlevel)
+             +q_e*kernel_e(ine,iky,ikx,iz,0)*moments_e(ip0_e,ine,iky,ikx,iz,updatetlevel)
             ENDDO
           END DO
         ELSE  ! Adiabatic electrons
@@ -51,8 +50,8 @@ SUBROUTINE poisson
           fa_phi = 0._dp
           IF(kyarray(iky).EQ.0._dp) THEN ! take ky=0 mode (average)
             DO ini=1,jmaxi+1 ! some over FLR contributions
-                rho_e(izs:ize) = Jacobian(izs:ize,0)*moments_i(ip0_i,ini,ikx,iky,izs:ize,updatetlevel)&
-                           *kernel_i(ini,ikx,iky,izs:ize,0)*(inv_poisson_op(ikx,iky,izs:ize)-1._dp)
+                rho_e(izs:ize) = Jacobian(izs:ize,0)*moments_i(ip0_i,ini,iky,ikx,izs:ize,updatetlevel)&
+                           *kernel_i(ini,iky,ikx,izs:ize,0)*(inv_poisson_op(iky,ikx,izs:ize)-1._dp)
                 call simpson_rule_z(rho_e(izs:ize),intf_) ! integrate over z
                 fa_phi = fa_phi + intf_
             ENDDO
@@ -62,18 +61,18 @@ SUBROUTINE poisson
 
         !!!!!!!!!!!!!!! Inverting the poisson equation !!!!!!!!!!!!!!!!!!!!!!!!!!
         DO iz = izs,ize
-        phi(ikx, iky, iz) =  (rho_e(iz) + rho_i(iz))*inv_poisson_op(ikx,iky,iz)
+        phi(iky, ikx, iz) =  (rho_e(iz) + rho_i(iz))*inv_poisson_op(iky,ikx,iz)
         ENDDO
       END DO kyloop
     END DO kxloop
 
     ! Cancel origin singularity
-    IF (contains_kx0 .AND. contains_ky0) phi(ikx_0,iky_0,:) = 0._dp
+    IF (contains_kx0 .AND. contains_ky0) phi(iky_0,ikx_0,:) = 0._dp
 
   ENDIF
 
   ! Transfer phi to all the others process along p
-  CALL manual_3D_bcast(phi(ikxs:ikxe,ikys:ikye,izs:ize))
+  CALL manual_3D_bcast(phi(ikys:ikye,ikxs:ikxe,izs:ize))
 
   ! Execution time end
   CALL cpu_time(t1_poisson)
diff --git a/src/ppinit.F90 b/src/ppinit.F90
index b403fdbad15ad14d3bbd5c2bbcaffb1aa455e573..1a662babc6bc41ab9188b17ded43759e49d0bffc 100644
--- a/src/ppinit.F90
+++ b/src/ppinit.F90
@@ -37,13 +37,13 @@ SUBROUTINE ppinit
   END IF
 
   num_procs_p  = dims(1) ! Number of processes along p
-  num_procs_kx = dims(2) ! Number of processes along kx
+  num_procs_ky = dims(2) ! Number of processes along kx
   num_procs_z  = dims(3) ! Number of processes along z
 
   !
   !periodicity in p
   periods(1)=.FALSE.
-  !periodicity in kx
+  !periodicity in ky
   periods(2)=.FALSE.
   !periodicity in z
   periods(3)=.TRUE.
@@ -58,11 +58,11 @@ SUBROUTINE ppinit
   !  Partitions 3-dim cartesian topology of comm0 into 1-dim cartesian subgrids
   !
   CALL MPI_CART_SUB (comm0, (/.TRUE.,.FALSE.,.FALSE./),  comm_p, ierr)
-  CALL MPI_CART_SUB (comm0, (/.FALSE.,.TRUE.,.FALSE./), comm_kx, ierr)
+  CALL MPI_CART_SUB (comm0, (/.FALSE.,.TRUE.,.FALSE./), comm_ky, ierr)
   CALL MPI_CART_SUB (comm0, (/.FALSE.,.FALSE.,.TRUE./),  comm_z, ierr)
   ! Find id inside the 1d-sub communicators
   CALL MPI_COMM_RANK(comm_p,  rank_p,  ierr)
-  CALL MPI_COMM_RANK(comm_kx, rank_kx, ierr)
+  CALL MPI_COMM_RANK(comm_ky, rank_ky, ierr)
   CALL MPI_COMM_RANK(comm_z,  rank_z,  ierr)
 
   ! Find neighbours
diff --git a/src/processing_mod.F90 b/src/processing_mod.F90
index abcd31dbd4e5d46aa9adfa81edf30df8f9b03c98..84ca47df51f8d639c4d174b3998076a006e3c003 100644
--- a/src/processing_mod.F90
+++ b/src/processing_mod.F90
@@ -38,7 +38,7 @@ SUBROUTINE compute_radial_ion_transport
           ky_ = kyarray(iky)
           DO ikx = ikxs,ikxe
             DO iz = izgs,izge
-              integrant(iz) = Jacobian(iz,0)*imagu * ky_ * moments_i(ip0_i,1,ikx,iky,iz,updatetlevel) * CONJG(phi(ikx,iky,iz))
+              integrant(iz) = Jacobian(iz,0)*imagu * ky_ * moments_i(ip0_i,1,iky,ikx,iz,updatetlevel) * CONJG(phi(iky,ikx,iz))
             ENDDO
             ! Integrate over z
             call simpson_rule_z(integrant,integral)
@@ -54,8 +54,8 @@ SUBROUTINE compute_radial_ion_transport
               DO ij = ijs_i, ije_i
                 DO iz = izgs,izge
                   integrant(iz) = integrant(iz) + &
-                      Jacobian(iz,0)*imagu * ky_ * kernel_i(ij,ikx,iky,iz,0) &
-                      *moments_i(ip0_i,ij,ikx,iky,iz,updatetlevel) * CONJG(phi(ikx,iky,iz))
+                      Jacobian(iz,0)*imagu * ky_ * kernel_i(ij,iky,ikx,iz,0) &
+                      *moments_i(ip0_i,ij,iky,ikx,iz,updatetlevel) * CONJG(phi(iky,ikx,iz))
                 ENDDO
               ENDDO
               ! Integrate over z
@@ -71,15 +71,15 @@ SUBROUTINE compute_radial_ion_transport
     !Gather manually among the rank_p=0 processes and perform the sum
     gflux_ri = 0
     pflux_ri = 0
-    IF (num_procs_kx .GT. 1) THEN
+    IF (num_procs_ky .GT. 1) THEN
         !! Everyone sends its local_sum to root = 0
-        IF (rank_kx .NE. root) THEN
-            CALL MPI_SEND(buffer, 2 , MPI_DOUBLE_PRECISION, root, 1234, comm_kx, ierr)
+        IF (rank_ky .NE. root) THEN
+            CALL MPI_SEND(buffer, 2 , MPI_DOUBLE_PRECISION, root, 1234, comm_ky, ierr)
         ELSE
             ! Recieve from all the other processes
-            DO i_ = 0,num_procs_kx-1
-                IF (i_ .NE. rank_kx) &
-                    CALL MPI_RECV(buffer, 2 , MPI_DOUBLE_PRECISION, i_, 1234, comm_kx, MPI_STATUS_IGNORE, ierr)
+            DO i_ = 0,num_procs_ky-1
+                IF (i_ .NE. rank_ky) &
+                    CALL MPI_RECV(buffer, 2 , MPI_DOUBLE_PRECISION, i_, 1234, comm_ky, MPI_STATUS_IGNORE, ierr)
                     gflux_ri = gflux_ri + buffer(1)
                     pflux_ri = pflux_ri + buffer(2)
             ENDDO
@@ -113,23 +113,23 @@ SUBROUTINE compute_radial_heatflux
             integrant = 0._dp
             DO ij = ijs_i, ije_i
               DO iz = izgs,izge
-              integrant(iz) = integrant(iz) + Jacobian(iz,0)*imagu*ky_*CONJG(phi(ikx,iky,iz))&
-               *(twothird * (   2._dp*j_dp  * kernel_i(ij  ,ikx,iky,iz,0) &
-                                - (j_dp+1)  * kernel_i(ij+1,ikx,iky,iz,0) &
-                                -    j_dp   * kernel_i(ij-1,ikx,iky,iz,0))&
-               * (moments_i(ip0_i,ij,ikx,iky,iz,updatetlevel)+qi_taui*kernel_i(ij,ikx,iky,iz,0)*phi(ikx,iky,iz)) &
-              + SQRT2*onethird * kernel_i(ij,ikx,iky,iz,0) * moments_i(ip2_i,ij,ikx,iky,iz,updatetlevel))
+              integrant(iz) = integrant(iz) + Jacobian(iz,0)*imagu*ky_*CONJG(phi(iky,ikx,iz))&
+               *(twothird * (   2._dp*j_dp  * kernel_i(ij  ,iky,ikx,iz,0) &
+                                - (j_dp+1)  * kernel_i(ij+1,iky,ikx,iz,0) &
+                                -    j_dp   * kernel_i(ij-1,iky,ikx,iz,0))&
+               * (moments_i(ip0_i,ij,iky,ikx,iz,updatetlevel)+qi_taui*kernel_i(ij,iky,ikx,iz,0)*phi(iky,ikx,iz)) &
+              + SQRT2*onethird * kernel_i(ij,iky,ikx,iz,0) * moments_i(ip2_i,ij,iky,ikx,iz,updatetlevel))
               ENDDO
             ENDDO
             IF(KIN_E) THEN
             DO ij = ijs_e, ije_e
               DO iz = izgs,izge
-              integrant(iz) = integrant(iz) + Jacobian(iz,0)*imagu*ky_*CONJG(phi(ikx,iky,iz))&
-               *(twothird * (   2._dp*j_dp  * kernel_e(ij  ,ikx,iky,iz,0) &
-                                - (j_dp+1)  * kernel_e(ij+1,ikx,iky,iz,0) &
-                                -    j_dp   * kernel_e(ij-1,ikx,iky,iz,0))&
-               * (moments_e(ip0_e,ij,ikx,iky,iz,updatetlevel)+qe_taue*kernel_e(ij,ikx,iky,iz,0)*phi(ikx,iky,iz)) &
-              + SQRT2*onethird * kernel_e(ij,ikx,iky,iz,0) * moments_e(ip2_e,ij,ikx,iky,iz,updatetlevel))
+              integrant(iz) = integrant(iz) + Jacobian(iz,0)*imagu*ky_*CONJG(phi(iky,ikx,iz))&
+               *(twothird * (   2._dp*j_dp  * kernel_e(ij  ,iky,ikx,iz,0) &
+                                - (j_dp+1)  * kernel_e(ij+1,iky,ikx,iz,0) &
+                                -    j_dp   * kernel_e(ij-1,iky,ikx,iz,0))&
+               * (moments_e(ip0_e,ij,iky,ikx,iz,updatetlevel)+qe_taue*kernel_e(ij,iky,ikx,iz,0)*phi(iky,ikx,iz)) &
+              + SQRT2*onethird * kernel_e(ij,iky,ikx,iz,0) * moments_e(ip2_e,ij,iky,ikx,iz,updatetlevel))
               ENDDO
             ENDDO
             ENDIF
@@ -142,15 +142,15 @@ SUBROUTINE compute_radial_heatflux
         root = 0
         !Gather manually among the rank_p=0 processes and perform the sum
         hflux_x = 0
-        IF (num_procs_kx .GT. 1) THEN
+        IF (num_procs_ky .GT. 1) THEN
             !! Everyone sends its local_sum to root = 0
-            IF (rank_kx .NE. root) THEN
-                CALL MPI_SEND(buffer, 2 , MPI_DOUBLE_PRECISION, root, 1234, comm_kx, ierr)
+            IF (rank_ky .NE. root) THEN
+                CALL MPI_SEND(buffer, 2 , MPI_DOUBLE_PRECISION, root, 1234, comm_ky, ierr)
             ELSE
                 ! Recieve from all the other processes
-                DO i_ = 0,num_procs_kx-1
-                    IF (i_ .NE. rank_kx) &
-                        CALL MPI_RECV(buffer, 2 , MPI_DOUBLE_PRECISION, i_, 1234, comm_kx, MPI_STATUS_IGNORE, ierr)
+                DO i_ = 0,num_procs_ky-1
+                    IF (i_ .NE. rank_ky) &
+                        CALL MPI_RECV(buffer, 2 , MPI_DOUBLE_PRECISION, i_, 1234, comm_ky, MPI_STATUS_IGNORE, ierr)
                         hflux_x = hflux_x + buffer(2)
                 ENDDO
             ENDIF
@@ -209,36 +209,36 @@ SUBROUTINE compute_nadiab_moments_z_gradients_and_interp
 !------------- INTERP AND GRADIENTS ALONG Z ----------------------------------
 
   IF (KIN_E) THEN
-  DO iky = ikys,ikye
-    DO ikx = ikxs,ikxe
+  DO ikx = ikxs,ikxe
+    DO iky = ikys,ikye
       DO ij = ijgs_e,ijge_e
         DO ip = ipgs_e,ipge_e
           p_int = parray_e(ip)
           eo    = MODULO(p_int,2) ! Indicates if we are on even or odd z grid
           ! Compute z derivatives
-          CALL   grad_z(eo,nadiab_moments_e(ip,ij,ikx,iky,izgs:izge),    ddz_nepj(ip,ij,ikx,iky,izs:ize))
+          CALL   grad_z(eo,nadiab_moments_e(ip,ij,iky,ikx,izgs:izge),    ddz_nepj(ip,ij,iky,ikx,izs:ize))
           ! Parallel hyperdiffusion
-          CALL  grad_z2(moments_e(ip,ij,ikx,iky,izgs:izge,updatetlevel),ddz2_Nepj(ip,ij,ikx,iky,izs:ize))
+          CALL  grad_z2(moments_e(ip,ij,iky,ikx,izgs:izge,updatetlevel),ddz2_Nepj(ip,ij,iky,ikx,izs:ize))
           ! Compute even odd grids interpolation
-          CALL interp_z(eo,nadiab_moments_e(ip,ij,ikx,iky,izgs:izge), interp_nepj(ip,ij,ikx,iky,izs:ize))
+          CALL interp_z(eo,nadiab_moments_e(ip,ij,iky,ikx,izgs:izge), interp_nepj(ip,ij,iky,ikx,izs:ize))
         ENDDO
       ENDDO
     ENDDO
   ENDDO
   ENDIF
 
-  DO iky = ikys,ikye
-    DO ikx = ikxs,ikxe
+  DO ikx = ikxs,ikxe
+    DO iky = ikys,ikye
       DO ij = ijgs_i,ijge_i
         DO ip = ipgs_i,ipge_i
           p_int = parray_i(ip)
           eo    = MODULO(p_int,2) ! Indicates if we are on even or odd z grid
           ! Compute z first derivative
-          CALL   grad_z(eo,nadiab_moments_i(ip,ij,ikx,iky,izgs:izge),    ddz_nipj(ip,ij,ikx,iky,izs:ize))
+          CALL   grad_z(eo,nadiab_moments_i(ip,ij,iky,ikx,izgs:izge),    ddz_nipj(ip,ij,iky,ikx,izs:ize))
           ! Parallel hyperdiffusion
-          CALL  grad_z2(moments_i(ip,ij,ikx,iky,izgs:izge,updatetlevel),ddz2_Nipj(ip,ij,ikx,iky,izs:ize))
+          CALL  grad_z2(moments_i(ip,ij,iky,ikx,izgs:izge,updatetlevel),ddz2_Nipj(ip,ij,iky,ikx,izs:ize))
           ! Compute even odd grids interpolation
-          CALL interp_z(eo,nadiab_moments_i(ip,ij,ikx,iky,izgs:izge), interp_nipj(ip,ij,ikx,iky,izs:ize))
+          CALL interp_z(eo,nadiab_moments_i(ip,ij,iky,ikx,izgs:izge), interp_nipj(ip,ij,iky,ikx,izs:ize))
         ENDDO
       ENDDO
     ENDDO
@@ -268,16 +268,16 @@ SUBROUTINE compute_density
             ! electron density
             dens = 0._dp
             DO ij = ijs_e, ije_e
-                dens = dens + kernel_e(ij,ikx,iky,iz,0) * nadiab_moments_e(ip0_e,ij,ikx,iky,iz)
+                dens = dens + kernel_e(ij,iky,ikx,iz,0) * nadiab_moments_e(ip0_e,ij,iky,ikx,iz)
             ENDDO
-            dens_e(ikx,iky,iz) = dens
+            dens_e(iky,ikx,iz) = dens
             ENDIF
             ! ion density
             dens = 0._dp
             DO ij = ijs_i, ije_i
-                dens = dens + kernel_i(ij,ikx,iky,iz,0) * nadiab_moments_i(ip0_e,ij,ikx,iky,iz)
+                dens = dens + kernel_i(ij,iky,ikx,iz,0) * nadiab_moments_i(ip0_e,ij,iky,ikx,iz)
             ENDDO
-            dens_i(ikx,iky,iz) = dens
+            dens_i(iky,ikx,iz) = dens
           ENDDO
         ENDDO
       ENDDO
@@ -303,18 +303,18 @@ SUBROUTINE compute_uperp
             ! electron
             uperp = 0._dp
             DO ij = ijs_e, ije_e
-                uperp = uperp + kernel_e(ij,ikx,iky,iz,0) *&
-                 0.5_dp*(nadiab_moments_e(ip0_e,ij,ikx,iky,iz) - nadiab_moments_e(ip0_e,ij-1,ikx,iky,iz))
+                uperp = uperp + kernel_e(ij,iky,ikx,iz,0) *&
+                 0.5_dp*(nadiab_moments_e(ip0_e,ij,iky,ikx,iz) - nadiab_moments_e(ip0_e,ij-1,iky,ikx,iz))
             ENDDO
-            uper_e(ikx,iky,iz) = uperp
+            uper_e(iky,ikx,iz) = uperp
             ENDIF
             ! ion
             uperp = 0._dp
             DO ij = ijs_i, ije_i
-              uperp = uperp + kernel_i(ij,ikx,iky,iz,0) *&
-               0.5_dp*(nadiab_moments_i(ip0_i,ij,ikx,iky,iz) - nadiab_moments_i(ip0_i,ij-1,ikx,iky,iz))
+              uperp = uperp + kernel_i(ij,iky,ikx,iz,0) *&
+               0.5_dp*(nadiab_moments_i(ip0_i,ij,iky,ikx,iz) - nadiab_moments_i(ip0_i,ij-1,iky,ikx,iz))
              ENDDO
-            uper_i(ikx,iky,iz) = uperp
+            uper_i(iky,ikx,iz) = uperp
           ENDDO
         ENDDO
       ENDDO
@@ -339,16 +339,16 @@ SUBROUTINE compute_upar
           ! electron
           upar = 0._dp
           DO ij = ijs_e, ije_e
-            upar = upar + kernel_e(ij,ikx,iky,iz,1)*nadiab_moments_e(ip1_e,ij,ikx,iky,iz)
+            upar = upar + kernel_e(ij,iky,ikx,iz,1)*nadiab_moments_e(ip1_e,ij,iky,ikx,iz)
           ENDDO
-          upar_e(ikx,iky,iz) = upar
+          upar_e(iky,ikx,iz) = upar
           ENDIF
           ! ion
           upar = 0._dp
           DO ij = ijs_i, ije_i
-            upar = upar + kernel_i(ij,ikx,iky,iz,1)*nadiab_moments_i(ip1_i,ij,ikx,iky,iz)
+            upar = upar + kernel_i(ij,iky,ikx,iz,1)*nadiab_moments_i(ip1_i,ij,iky,ikx,iz)
            ENDDO
-          upar_i(ikx,iky,iz) = upar
+          upar_i(iky,ikx,iz) = upar
         ENDDO
       ENDDO
     ENDDO
@@ -381,23 +381,23 @@ SUBROUTINE compute_tperp
             Tperp  = 0._dp
             DO ij = ijs_e, ije_e
               j_dp = REAL(ij-1,dp)
-              Tperp = Tperp + kernel_e(ij,ikx,iky,iz,0)*&
-                  ((2_dp*j_dp+1)*nadiab_moments_e(ip0_e,ij  ,ikx,iky,iz)&
-                  -j_dp         *nadiab_moments_e(ip0_e,ij-1,ikx,iky,iz)&
-                  -j_dp+1       *nadiab_moments_e(ip0_e,ij+1,ikx,iky,iz))
+              Tperp = Tperp + kernel_e(ij,iky,ikx,iz,0)*&
+                  ((2_dp*j_dp+1)*nadiab_moments_e(ip0_e,ij  ,iky,ikx,iz)&
+                  -j_dp         *nadiab_moments_e(ip0_e,ij-1,iky,ikx,iz)&
+                  -j_dp+1       *nadiab_moments_e(ip0_e,ij+1,iky,ikx,iz))
             ENDDO
-            Tper_e(ikx,iky,iz) = Tperp
+            Tper_e(iky,ikx,iz) = Tperp
             ENDIF
             ! ion temperature
             Tperp = 0._dp
             DO ij = ijs_i, ije_i
               j_dp = REAL(ij-1,dp)
-              Tperp = Tperp + kernel_i(ij,ikx,iky,iz,0)*&
-                  ((2_dp*j_dp+1)*nadiab_moments_i(ip0_i,ij  ,ikx,iky,iz)&
-                  -j_dp         *nadiab_moments_i(ip0_i,ij-1,ikx,iky,iz)&
-                  -j_dp+1       *nadiab_moments_i(ip0_i,ij+1,ikx,iky,iz))
+              Tperp = Tperp + kernel_i(ij,iky,ikx,iz,0)*&
+                  ((2_dp*j_dp+1)*nadiab_moments_i(ip0_i,ij  ,iky,ikx,iz)&
+                  -j_dp         *nadiab_moments_i(ip0_i,ij-1,iky,ikx,iz)&
+                  -j_dp+1       *nadiab_moments_i(ip0_i,ij+1,iky,ikx,iz))
             ENDDO
-            Tper_i(ikx,iky,iz) = Tperp
+            Tper_i(iky,ikx,iz) = Tperp
           ENDDO
         ENDDO
       ENDDO
@@ -426,21 +426,21 @@ SUBROUTINE compute_Tpar
             Tpar  = 0._dp
             DO ij = ijs_e, ije_e
               j_dp = REAL(ij-1,dp)
-              Tpar  = Tpar + kernel_e(ij,ikx,iky,iz,0)*&
-               (SQRT2 * nadiab_moments_e(ip2_e,ij,ikx,iky,iz) &
-                      + nadiab_moments_e(ip0_e,ij,ikx,iky,iz))
+              Tpar  = Tpar + kernel_e(ij,iky,ikx,iz,0)*&
+               (SQRT2 * nadiab_moments_e(ip2_e,ij,iky,ikx,iz) &
+                      + nadiab_moments_e(ip0_e,ij,iky,ikx,iz))
             ENDDO
-            Tpar_e(ikx,iky,iz) = Tpar
+            Tpar_e(iky,ikx,iz) = Tpar
             ENDIF
             ! ion temperature
             Tpar  = 0._dp
             DO ij = ijs_i, ije_i
               j_dp = REAL(ij-1,dp)
-              Tpar  = Tpar + kernel_i(ij,ikx,iky,iz,0)*&
-               (SQRT2 * nadiab_moments_i(ip2_i,ij,ikx,iky,iz) &
-                      + nadiab_moments_i(ip0_i,ij,ikx,iky,iz))
+              Tpar  = Tpar + kernel_i(ij,iky,ikx,iz,0)*&
+               (SQRT2 * nadiab_moments_i(ip2_i,ij,iky,ikx,iz) &
+                      + nadiab_moments_i(ip0_i,ij,iky,ikx,iz))
             ENDDO
-            Tpar_i(ikx,iky,iz) = Tpar
+            Tpar_i(iky,ikx,iz) = Tpar
           ENDDO
         ENDDO
       ENDDO
diff --git a/src/restarts_mod.F90 b/src/restarts_mod.F90
index 613cf37f8175cc1b1a118e7fb867b39ee48f11ec..ea1697c311180786225e5ce74880114b9108f669 100644
--- a/src/restarts_mod.F90
+++ b/src/restarts_mod.F90
@@ -72,10 +72,10 @@ CONTAINS
           ! Read state of system from checkpoint file
           IF (KIN_E) THEN
           WRITE(dset_name, "(A, '/', i6.6)") "/data/var5d/moments_e", n_
-          CALL getarrnd(fidrst, dset_name, moments_e(ips_e:ipe_e, ijs_e:ije_e, ikxs:ikxe, ikys:ikye, izs:ize, 1),(/1,3,5/))
+          CALL getarrnd(fidrst, dset_name, moments_e(ips_e:ipe_e, ijs_e:ije_e, ikys:ikye, ikxs:ikxe, izs:ize, 1),(/1,3,5/))
           ENDIF
           WRITE(dset_name, "(A, '/', i6.6)") "/data/var5d/moments_i", n_
-          CALL getarrnd(fidrst, dset_name, moments_i(ips_i:ipe_i, ijs_i:ije_i, ikxs:ikxe, ikys:ikye, izs:ize, 1),(/1,3,5/))
+          CALL getarrnd(fidrst, dset_name, moments_i(ips_i:ipe_i, ijs_i:ije_i, ikys:ikye, ikxs:ikxe, izs:ize, 1),(/1,3,5/))
 
           CALL closef(fidrst)
 
@@ -113,7 +113,7 @@ CONTAINS
         CALL getatt(fidrst,"/data/input/" , "start_iframe5d", n0)
         ! Allocate the required size to load checkpoints moments
         ! CALL allocate_array(moments_e_cp, 1,pmaxe_cp+1, 1,jmaxe_cp+1, ikxs,ikxe, ikys,ikye, izs,ize)
-        CALL allocate_array(moments_e_cp, 1,pmaxe_cp+1, 1,jmaxe_cp+1, 1,Nkx_cp, 1,Nky_cp, 1,Nz_cp)
+        CALL allocate_array(moments_e_cp, 1,pmaxe_cp+1, 1,jmaxe_cp+1, 1,Nky_cp, 1,Nkx_cp, 1,Nz_cp)
         ! Find the last results of the checkpoint file by iteration
         n_ = n0+1
         WRITE(dset_name, "(A, '/', i6.6)") "/data/var5d/moments_e", n_ ! start with moments_e/000001
@@ -124,8 +124,8 @@ CONTAINS
         n_ = n_ - 1 ! n_ is not a file so take the previous one n_-1
         ! Read state of system from checkpoint file and load every moment to change the distribution
         WRITE(dset_name, "(A, '/', i6.6)") "/data/var5d/moments_e", n_
-        ! CALL getarrnd(fidrst, dset_name, moments_e_cp(1:pmaxe_cp+1, 1:jmaxe_cp+1, ikxs:ikxe, ikys:ikye, izs:ize),(/1,3/))
-        CALL getarr(fidrst, dset_name, moments_e_cp(1:pmaxe_cp+1, 1:jmaxe_cp+1, 1:Nkx_cp, 1:Nky_cp, 1:Nz_cp))
+        ! CALL getarrnd(fidrst, dset_name, moments_e_cp(1:pmaxe_cp+1, 1:jmaxe_cp+1, ikys:ikye, ikxs:ikxe, izs:ize),(/1,3/))
+        CALL getarr(fidrst, dset_name, moments_e_cp(1:pmaxe_cp+1, 1:jmaxe_cp+1, 1:Nky_cp, 1:Nkx_cp, 1:Nz_cp))
         ! Initialize simulation moments array with checkpoints ones
         ! (they may have a larger number of polynomials, set to 0 at the begining)
         moments_e = 0._dp;
@@ -138,7 +138,7 @@ CONTAINS
                 DO ikx=ikxs,ikxe
                 DO iky=ikys,ikye
                 DO iz = izs,ize
-                    moments_e(ip,ij,ikx,iky,iz,:) = moments_e_cp(ip,ij,ikx,iky,iz)
+                    moments_e(ip,ij,iky,ikx,iz,:) = moments_e_cp(ip,ij,iky,ikx,iz)
                 ENDDO
                 ENDDO
                 ENDDO
@@ -158,7 +158,7 @@ CONTAINS
         CALL getatt(fidrst,"/data/input/" , "start_iframe5d", n0)
         ! Allocate the required size to load checkpoints moments
         ! CALL allocate_array(moments_i_cp, 1,pmaxi_cp+1, 1,jmaxi_cp+1, ikxs,ikxe, ikys,ikye, izs,ize)
-        CALL allocate_array(moments_i_cp, 1,pmaxi_cp+1, 1,jmaxi_cp+1, 1,Nkx_cp, 1,Nky_cp, 1,Nz_cp)
+        CALL allocate_array(moments_i_cp, 1,pmaxi_cp+1, 1,jmaxi_cp+1, 1,Nky_cp, 1,Nkx_cp, 1,Nz_cp)
         ! Find the last results of the checkpoint file by iteration
         n_ = n0+1
         WRITE(dset_name, "(A, '/', i6.6)") "/data/var5d/moments_i", n_ ! start with moments_e/000001
@@ -170,8 +170,8 @@ CONTAINS
 
         ! Read state of system from checkpoint file and load every moment to change the distribution
         WRITE(dset_name, "(A, '/', i6.6)") "/data/var5d/moments_i", n_
-        ! CALL getarrnd(fidrst, dset_name, moments_i_cp(1:pmaxi_cp+1, 1:jmaxi_cp+1, ikxs:ikxe, ikys:ikye, izs:ize),(/1,3/))
-        CALL getarr(fidrst, dset_name, moments_i_cp(1:pmaxi_cp+1, 1:jmaxi_cp+1, 1:Nkx_cp, 1:Nky_cp, 1:Nz_cp))
+        ! CALL getarrnd(fidrst, dset_name, moments_i_cp(1:pmaxi_cp+1, 1:jmaxi_cp+1, ikys:ikye, ikxs:ikxe, izs:ize),(/1,3/))
+        CALL getarr(fidrst, dset_name, moments_i_cp(1:pmaxi_cp+1, 1:jmaxi_cp+1, 1:Nky_cp, 1:Nkx_cp, 1:Nz_cp))
 
         ! Initialize simulation moments array with checkpoints ones
         ! (they may have a larger number of polynomials, set to 0 at the begining)
@@ -185,7 +185,7 @@ CONTAINS
                 DO ikx=ikxs,ikxe
                 DO iky=ikys,ikye
                 DO iz = izs,ize
-                    moments_i(ip,ij,ikx,iky,iz,:) = moments_i_cp(ip,ij,ikx,iky,iz)
+                    moments_i(ip,ij,iky,ikx,iz,:) = moments_i_cp(ip,ij,iky,ikx,iz)
                 ENDDO
                 ENDDO
                 ENDDO
diff --git a/src/srcinfo.h b/src/srcinfo.h
index 37401921917253200fe476e0e73ef57cad15ad0f..1521a89638fe2b6222543ddba406baaf4ff274c5 100644
--- a/src/srcinfo.h
+++ b/src/srcinfo.h
@@ -3,8 +3,8 @@ character(len=40) BRANCH
 character(len=20) AUTHOR
 character(len=40) EXECDATE
 character(len=40) HOST
-parameter (VERSION='7642d96-dirty')
-parameter (BRANCH='master')
+parameter (VERSION='6458026-dirty')
+parameter (BRANCH='kx_pos_plane')
 parameter (AUTHOR='ahoffman')
-parameter (EXECDATE='Thu Apr 28 15:46:58 CEST 2022')
+parameter (EXECDATE='Tue May 3 10:57:28 CEST 2022')
 parameter (HOST ='spcpc606')
diff --git a/src/srcinfo/srcinfo.h b/src/srcinfo/srcinfo.h
index 37401921917253200fe476e0e73ef57cad15ad0f..1521a89638fe2b6222543ddba406baaf4ff274c5 100644
--- a/src/srcinfo/srcinfo.h
+++ b/src/srcinfo/srcinfo.h
@@ -3,8 +3,8 @@ character(len=40) BRANCH
 character(len=20) AUTHOR
 character(len=40) EXECDATE
 character(len=40) HOST
-parameter (VERSION='7642d96-dirty')
-parameter (BRANCH='master')
+parameter (VERSION='6458026-dirty')
+parameter (BRANCH='kx_pos_plane')
 parameter (AUTHOR='ahoffman')
-parameter (EXECDATE='Thu Apr 28 15:46:58 CEST 2022')
+parameter (EXECDATE='Tue May 3 10:57:28 CEST 2022')
 parameter (HOST ='spcpc606')
diff --git a/src/stepon.F90 b/src/stepon.F90
index d928a4b897f7e93a0eea422acc4fc40eba62e292..230f6bf0c47e6b95682c7174f0bb435e8a65a1bd 100644
--- a/src/stepon.F90
+++ b/src/stepon.F90
@@ -102,11 +102,11 @@ SUBROUTINE stepon
       SUBROUTINE anti_aliasing
         IF(KIN_E)THEN
         DO iz=izgs,izge
-          DO iky=ikys,ikye
-            DO ikx=ikxs,ikxe
+          DO ikx=ikxs,ikxe
+            DO iky=ikys,ikye
               DO ij=ijgs_e,ijge_e
                 DO ip=ipgs_e,ipge_e
-                  moments_e( ip,ij,ikx,iky,iz,:) = AA_x(ikx)* AA_y(iky) * moments_e( ip,ij,ikx,iky,iz,:)
+                  moments_e( ip,ij,iky,ikx,iz,:) = AA_x(ikx)* AA_y(iky) * moments_e( ip,ij,iky,ikx,iz,:)
                 END DO
               END DO
             END DO
@@ -114,11 +114,11 @@ SUBROUTINE stepon
         END DO
         ENDIF
         DO iz=izgs,izge
-          DO iky=ikys,ikye
-            DO ikx=ikxs,ikxe
+          DO ikx=ikxs,ikxe
+            DO iky=ikys,ikye
               DO ij=ijs_i,ije_i
                 DO ip=ipgs_i,ipge_i
-                  moments_i( ip,ij,ikx,iky,iz,:) = AA_x(ikx)* AA_y(iky) * moments_i( ip,ij,ikx,iky,iz,:)
+                  moments_i( ip,ij,iky,ikx,iz,:) = AA_x(ikx)* AA_y(iky) * moments_i( ip,ij,iky,ikx,iz,:)
                 END DO
               END DO
             END DO
@@ -127,17 +127,17 @@ SUBROUTINE stepon
       END SUBROUTINE anti_aliasing
 
       SUBROUTINE enforce_symmetry ! Force X(k) = X(N-k)* complex conjugate symmetry
-        IF ( contains_kx0 ) THEN
+        IF ( contains_ky0 ) THEN
           ! Electron moments
           IF(KIN_E) THEN
             DO iz=izs,ize
               DO ij=ijgs_e,ijge_e
                 DO ip=ipgs_e,ipge_e
-                  DO iky=2,Nky/2 !symmetry at kx = 0
-                    moments_e( ip,ij,ikx_0,iky,iz, :) = CONJG(moments_e( ip,ij,ikx_0,Nky+2-iky,iz, :))
+                  DO ikx=2,Nkx/2 !symmetry at ky = 0
+                    moments_e( ip,ij,iky_0,ikx,iz, :) = CONJG(moments_e( ip,ij,iky_0,Nkx+2-iky,iz, :))
                   END DO
                 ! must be real at origin
-                moments_e(ip,ij, ikx_0,iky_0,iz, :) = REAL(moments_e(ip,ij, ikx_0,iky_0,iz, :))
+                moments_e(ip,ij, iky_0,ikx_0,iz, :) = REAL(moments_e(ip,ij, iky_0,ikx_0,iz, :))
               END DO
             END DO
           END DO
@@ -146,20 +146,20 @@ SUBROUTINE stepon
           DO iz=izs,ize
             DO ij=ijgs_i,ijge_i
               DO ip=ipgs_i,ipge_i
-                DO iky=2,Nky/2 !symmetry at kx = 0
-                  moments_i( ip,ij,ikx_0,iky,iz, :) = CONJG(moments_i( ip,ij,ikx_0,Nky+2-iky,iz, :))
+                DO ikx=2,Nkx/2 !symmetry at ky = 0
+                  moments_i( ip,ij,iky_0,ikx,iz, :) = CONJG(moments_i( ip,ij,iky_0,Nkx+2-ikx,iz, :))
                 END DO
                 ! must be real at origin and top right
-                moments_i(ip,ij, ikx_0,iky_0,iz, :) = REAL(moments_i(ip,ij, ikx_0,iky_0,iz, :))
+                moments_i(ip,ij, iky_0,ikx_0,iz, :) = REAL(moments_i(ip,ij, iky_0,ikx_0,iz, :))
               END DO
             END DO
           END DO
           ! Phi
-          DO iky=2,Nky/2 !symmetry at kx = 0
-            phi(ikx_0,iky,izs:ize) = phi(ikx_0,Nky+2-iky,izs:ize)
+          DO ikx=2,Nkx/2 !symmetry at ky = 0
+            phi(iky_0,ikx,izs:ize) = phi(iky_0,Nkx+2-ikx,izs:ize)
           END DO
           ! must be real at origin
-          phi(ikx_0,iky_0,izs:ize) = REAL(phi(ikx_0,iky_0,izs:ize))
+          phi(iky_0,ikx_0,izs:ize) = REAL(phi(iky_0,ikx_0,izs:ize))
         ENDIF
       END SUBROUTINE enforce_symmetry
 
diff --git a/src/utility_mod.F90 b/src/utility_mod.F90
index bd3ab13b13a5322f9d3987c41316f2baba98e5b0..b6e989a746f8dedcdf7f634ee7d769835060af71 100644
--- a/src/utility_mod.F90
+++ b/src/utility_mod.F90
@@ -59,7 +59,7 @@ CONTAINS
     use prec_const
     IMPLICIT NONE
 
-    COMPLEX(dp), DIMENSION(ikxs:ikxe,ikys:ikye), INTENT(IN) :: field
+    COMPLEX(dp), DIMENSION(ikys:ikye,ikxs:ikxe), INTENT(IN) :: field
     CHARACTER(LEN=*), INTENT(IN) :: str
     LOGICAL :: mlend
     COMPLEX(dp) :: sumfield
@@ -75,8 +75,8 @@ CONTAINS
   SUBROUTINE manual_2D_bcast(field_)
     USE grid
     IMPLICIT NONE
-    COMPLEX(dp), INTENT(INOUT) :: field_(ikxs:ikxe,ikys:ikye)
-    COMPLEX(dp) :: buffer(ikxs:ikxe,ikys:ikye)
+    COMPLEX(dp), INTENT(INOUT) :: field_(ikys:ikye,ikxs:ikxe)
+    COMPLEX(dp) :: buffer(ikys:ikye,ikxs:ikxe)
     INTEGER     :: i_, root, world_rank, world_size
     root = 0;
     CALL MPI_COMM_RANK(comm_p,world_rank,ierr)
@@ -87,21 +87,21 @@ CONTAINS
         ! Fill the buffer
         DO ikx = ikxs,ikxe
           DO iky = ikys,ikye
-            buffer(ikx,iky) = field_(ikx,iky)
+            buffer(iky,ikx) = field_(iky,ikx)
           ENDDO
         ENDDO
         ! Send it to all the other processes
         DO i_ = 0,num_procs_p-1
           IF (i_ .NE. world_rank) &
-          CALL MPI_SEND(buffer, local_nkx * Nky , MPI_DOUBLE_COMPLEX, i_, 0, comm_p, ierr)
+          CALL MPI_SEND(buffer, local_nky * Nkx , MPI_DOUBLE_COMPLEX, i_, 0, comm_p, ierr)
         ENDDO
       ELSE
         ! Recieve buffer from root
-        CALL MPI_RECV(buffer, local_nkx * Nky , MPI_DOUBLE_COMPLEX, root, 0, comm_p, MPI_STATUS_IGNORE, ierr)
+        CALL MPI_RECV(buffer, local_nky * Nkx , MPI_DOUBLE_COMPLEX, root, 0, comm_p, MPI_STATUS_IGNORE, ierr)
         ! Write it in phi
         DO ikx = ikxs,ikxe
           DO iky = ikys,ikye
-            field_(ikx,iky) = buffer(ikx,iky)
+            field_(iky,ikx) = buffer(iky,ikx)
           ENDDO
         ENDDO
       ENDIF
@@ -112,11 +112,11 @@ CONTAINS
 SUBROUTINE manual_3D_bcast(field_)
   USE grid
   IMPLICIT NONE
-  COMPLEX(dp), INTENT(INOUT) :: field_(ikxs:ikxe,ikys:ikye,izs:ize)
-  COMPLEX(dp) :: buffer(ikxs:ikxe,ikys:ikye,izs:ize)
+  COMPLEX(dp), INTENT(INOUT) :: field_(ikys:ikye,ikxs:ikxe,izs:ize)
+  COMPLEX(dp) :: buffer(ikys:ikye,ikxs:ikxe,izs:ize)
   INTEGER     :: i_, root, world_rank, world_size, count
   root = 0;
-  count = (ikxe-ikxs+1) * (ikye-ikys+1) * (ize-izs+1);
+  count = (ikye-ikys+1) * (ikxe-ikxs+1) * (ize-izs+1);
 
   CALL MPI_COMM_RANK(comm_p,world_rank,ierr)
   CALL MPI_COMM_SIZE(comm_p,world_size,ierr)
@@ -124,11 +124,11 @@ SUBROUTINE manual_3D_bcast(field_)
     !! Broadcast phi to the other processes on the same k range (communicator along p)
     IF (world_rank .EQ. root) THEN
       ! Fill the buffer
-      DO ikx = ikxs,ikxe
-        DO iky = ikys,ikye
-          DO iz = izs,ize
-            buffer(ikx,iky,iz) = field_(ikx,iky,iz)
-          ENDDO
+      DO iz = izs,ize
+        DO ikx = ikxs,ikxe
+          DO iky = ikys,ikye
+              buffer(iky,ikx,iz) = field_(iky,ikx,iz)
+            ENDDO
         ENDDO
       ENDDO
       ! Send it to all the other processes
@@ -140,10 +140,10 @@ SUBROUTINE manual_3D_bcast(field_)
       ! Recieve buffer from root
       CALL MPI_RECV(buffer, count, MPI_DOUBLE_COMPLEX, root, 0, comm_p, MPI_STATUS_IGNORE, ierr)
       ! Write it in phi
-      DO ikx = ikxs,ikxe
-        DO iky = ikys,ikye
-          DO iz = izs,ize
-            field_(ikx,iky,iz) = buffer(ikx,iky,iz)
+      DO iz = izs,ize
+        DO ikx = ikxs,ikxe
+          DO iky = ikys,ikye
+            field_(iky,ikx,iz) = buffer(iky,ikx,iz)
           ENDDO
         ENDDO
       ENDDO
diff --git a/wk/analysis_3D.m b/wk/analysis_3D.m
index 2bcaece23872762f602ba06b3cd5c572c2b7a085..eba8d519a25149f53b33c9a05065c2deb10b5869 100644
--- a/wk/analysis_3D.m
+++ b/wk/analysis_3D.m
@@ -10,7 +10,7 @@ system(['mkdir -p ',MISCDIR]);
 CMD = ['rsync ', LOCALDIR,'outputs* ',MISCDIR]; disp(CMD);
 system(CMD);
 % Load outputs from jobnummin up to jobnummax
-JOBNUMMIN = 00; JOBNUMMAX = 10; 
+JOBNUMMIN = 00; JOBNUMMAX = 10;
 data = compile_results(MISCDIR,JOBNUMMIN,JOBNUMMAX); %Compile the results from first output found to JOBNUMMAX if existing
 
 
@@ -50,7 +50,7 @@ options.PLAN      = 'xy';
 % options.PLAN      = 'sx';
 options.COMP      = 'avg';
 % options.TIME      = dat.Ts5D;
-options.TIME      = 0:1:80;
+options.TIME      = 100:1:200;
 data.EPS          = 0.1;
 data.a = data.EPS * 2000;
 create_film(data,options,'.gif')
@@ -62,17 +62,17 @@ if 0
 options.INTERP    = 0;
 options.POLARPLOT = 0;
 options.AXISEQUAL = 1;
-% options.NAME      = '\phi';
-options.NAME      = 'n_i';
+options.NAME      = '\phi';
+% options.NAME      = 'n_i';
 % options.NAME      = 'N_i^{00}';
 % options.NAME      = 'T_i';
 % options.NAME      = '\Gamma_x';
 % options.NAME      = 'k^2n_e';
-options.PLAN      = 'xy';
+options.PLAN      = 'kxky';
 % options.NAME      = 'f_e';
 % options.PLAN      = 'sx';
-options.COMP      = 8;
-options.TIME      = [500 700 900];
+options.COMP      = 1;
+options.TIME      = [1];
 data.a = data.EPS * 1000;
 fig = photomaton(data,options);
 save_figure(data,fig)
@@ -155,7 +155,7 @@ options.K2PLOT = 1;
 options.TIME   = 5:1:15;
 options.NMA    = 1;
 options.NMODES = 5;
-options.iz     = 8;
+options.iz     = 1;
 fig = mode_growth_meter(data,options);
 save_figure(data,fig)
 end
@@ -189,4 +189,4 @@ options.kzkx = 0;
 options.kzky = 1;
 [lg, fig] = compute_3D_zpinch_growth_rate(data,trange,options);
 save_figure(data,fig)
-end
\ No newline at end of file
+end
diff --git a/wk/analysis_header.m b/wk/analysis_header.m
index f2149b60de00f70270205d3889ae3459c74c3c1f..3970fcc89874200ad09092a74155a4988fb67046 100644
--- a/wk/analysis_header.m
+++ b/wk/analysis_header.m
@@ -2,9 +2,11 @@
 helazdir = '/home/ahoffman/HeLaZ/';
 % Directory of the simulation (from results)
 % if 1% Local results
-outfile ='2D_Zpinch/LDDK';
+outfile ='';
+outfile ='quick_run/64x64_5x3_L_120_kN_2.0_kT_0.5_nu_1e-01_SGGK';
+% outfile ='pedestal/64x64x16x2x1_L_300_LnT_20_nu_0.1';
 % outfile ='quick_run/32x32x16_5x3_L_300_q0_2.5_e_0.18_kN_20_kT_20_nu_1e-01_DGGK';
 % outfile ='shearless_cyclone/128x128x16x4x2_L_120_CTC_1.0/';
 % outfile ='shearless_cyclone/180x180x20x4x2_L_120_CBC_0.8_to_1.0/';
 % outfile ='pedestal/128x128x16x4x2_L_120_LnT_40_nuDG_0.1';
-run analysis_3D
\ No newline at end of file
+run analysis_3D
diff --git a/wk/quick_run.m b/wk/quick_run.m
index 64400569c20e5f2a3d8288f3e907527402e34540..e7525829beff8ae20ce42b8b41387e759dc4ddea 100644
--- a/wk/quick_run.m
+++ b/wk/quick_run.m
@@ -15,8 +15,8 @@ CLUSTER.TIME  = '99:00:00'; % allocation time hh:mm:ss
 %% PHYSICAL PARAMETERS
 NU      = 0.1;   % Collision frequency
 TAU     = 1.0;    % e/i temperature ratio
-K_N     = 1.8;%1.9;%2.22;   % Density gradient drive
-K_T     = 0;%0.25*K_N;   % Temperature '''
+K_N     = 1.9;%2.22;   % Density gradient drive
+K_T     = 0.25*K_N;   % Temperature '''
 K_E     = 0.0;   % Electrostat '''
 SIGMA_E = 0.0233380;   % mass ratio sqrt(m_a/m_i) (correct = 0.0233380)
 KIN_E   = 1;     % 1: kinetic electrons, 2: adiabatic electrons
@@ -49,10 +49,10 @@ SPSCP   = 0;    % Sampling per time unit for checkpoints
 JOB2LOAD= -1;
 %% OPTIONS
 SIMID   = 'quick_run';  % Name of the simulation
-LINEARITY = 'linear';   % activate non-linearity (is cancelled if KXEQ0 = 1)
+LINEARITY = 'nonlinear';   % activate non-linearity (is cancelled if KXEQ0 = 1)
 % Collision operator
 % (LB:L.Bernstein, DG:Dougherty, SG:Sugama, LR: Lorentz, LD: Landau)
-CO      = 'DG';
+CO      = 'SG';
 GKCO    = 1; % gyrokinetic operator
 ABCO    = 1; % interspecies collisions
 INIT_ZF = 0; ZF_AMP = 0.0;
@@ -73,11 +73,11 @@ HD_CO   = 0.0;    % Hyper diffusivity cutoff ratio
 kmax    = NX*pi/LX;% Highest fourier mode
 MU      = 0.0; % Hyperdiffusivity coefficient
 INIT_BLOB = 0; WIPE_TURB = 0; ACT_ON_MODES = 0;
-MU_X    = MU;     % 
-MU_Y    = MU;     % 
+MU_X    = MU;     %
+MU_Y    = MU;     %
 MU_Z    = 0.0;     %
 MU_P    = 0.0;     %
-MU_J    = 0.0;     % 
+MU_J    = 0.0;     %
 LAMBDAD = 0.0;
 NOISE0  = 1.0e-5; % Init noise amplitude
 BCKGD0  = 0.0;    % Init background
@@ -89,7 +89,7 @@ setup
 system(['rm fort*.90']);
 % Run linear simulation
 if RUN
-    system(['cd ../results/',SIMID,'/',PARAMS,'/; time mpirun -np 1 ',HELAZDIR,'bin/',EXECNAME,' 1 1 1 0; cd ../../../wk'])
+    system(['cd ../results/',SIMID,'/',PARAMS,'/; time mpirun -np 4 ',HELAZDIR,'bin/',EXECNAME,' 1 4 1 0; cd ../../../wk'])
 %     system(['cd ../results/',SIMID,'/',PARAMS,'/; mpirun -np 2 ',HELAZDIR,'bin/',EXECNAME,' 2 1 1 0; cd ../../../wk'])
 %     system(['cd ../results/',SIMID,'/',PARAMS,'/; mpirun -np 4 ',HELAZDIR,'bin/',EXECNAME,' 1 2 2 0; cd ../../../wk'])
 %     system(['cd ../results/',SIMID,'/',PARAMS,'/; mpirun -np 6 ',HELAZDIR,'bin/',EXECNAME,' 1 3 2 0; cd ../../../wk'])
@@ -100,7 +100,7 @@ end
 filename = [SIMID,'/',PARAMS,'/'];
 LOCALDIR  = [HELAZDIR,'results/',filename,'/'];
 % Load outputs from jobnummin up to jobnummax
-JOBNUMMIN = 00; JOBNUMMAX = 00; 
+JOBNUMMIN = 00; JOBNUMMAX = 00;
 data = compile_results(LOCALDIR,JOBNUMMIN,JOBNUMMAX); %Compile the results from first output found to JOBNUMMAX if existing
 
 %% Short analysis