diff --git a/src/inital.F90 b/src/inital.F90
index e17b69f455a414ab0136fae8dd42a7b7e54114e8..43cd7a495de61f8c6707c81fa43ad65029b995d6 100644
--- a/src/inital.F90
+++ b/src/inital.F90
@@ -15,6 +15,7 @@ SUBROUTINE inital
   USE restarts
   USE numerics, ONLY: play_with_modes, save_EM_ZF_modes
   USE processing, ONLY: compute_nadiab_moments
+  USE model, ONLY: KIN_E, LINEARITY
   IMPLICIT NONE
 
   CALL set_updatetlevel(1)
@@ -24,7 +25,7 @@ SUBROUTINE inital
   IF ( job2load .GE. 0 ) THEN
     IF (my_id .EQ. 0) WRITE(*,*) 'Load moments'
     CALL load_moments ! get N_0
-    
+
     CALL poisson ! compute phi_0=phi(N_0)
   ! through initialization
   ELSE
@@ -91,7 +92,7 @@ SUBROUTINE init_moments
   USE prec_const
   USE utility, ONLY: checkfield
   USE initial_par
-  USE model, ONLY : LINEARITY
+  USE model, ONLY : LINEARITY, KIN_E
   IMPLICIT NONE
 
   REAL(dp) :: noise
@@ -103,9 +104,10 @@ SUBROUTINE init_moments
   CALL RANDOM_SEED(PUT=iseedarr+my_id)
 
     !**** Broad noise initialization *******************************************
+    ! Electron init
+    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
@@ -114,16 +116,15 @@ SUBROUTINE init_moments
             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,:, :)
           END DO
         ENDIF
-
       END DO
     END DO
-
+    ENDIF
+    ! Ion init
     DO ip=ips_i,ipe_i
       DO ij=ijs_i,ije_i
 
@@ -150,11 +151,13 @@ SUBROUTINE init_moments
       DO ikx=ikxs,ikxe
       DO iky=ikys,ikye
       DO iz=izs,ize
+        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)
         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)
@@ -177,7 +180,7 @@ SUBROUTINE init_gyrodens
   USE prec_const
   USE utility, ONLY: checkfield
   USE initial_par
-  USE model, ONLY : LINEARITY
+  USE model, ONLY: KIN_E, LINEARITY
   IMPLICIT NONE
 
   REAL(dp) :: noise
@@ -189,9 +192,9 @@ SUBROUTINE init_gyrodens
   CALL RANDOM_SEED(PUT=iseedarr+my_id)
 
     !**** Broad noise initialization *******************************************
+    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
@@ -204,19 +207,17 @@ SUBROUTINE init_gyrodens
             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,:, :)
           END DO
         ENDIF
-
       END DO
     END DO
+    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
@@ -229,13 +230,11 @@ SUBROUTINE init_gyrodens
             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,:,:)
           END DO
         ENDIF
-
       END DO
     END DO
 
@@ -244,11 +243,13 @@ SUBROUTINE init_gyrodens
       DO ikx=ikxs,ikxe
       DO iky=ikys,ikye
       DO iz=izs,ize
+        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)
         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)
@@ -270,6 +271,7 @@ SUBROUTINE init_phi
   USE fields
   USE prec_const
   USE initial_par
+  USE model, ONLY: KIN_E, LINEARITY
   IMPLICIT NONE
 
   REAL(dp) :: noise
@@ -300,7 +302,8 @@ SUBROUTINE init_phi
     ENDIF
 
     !**** ensure no previous moments initialization
-    moments_e = 0._dp; moments_i = 0._dp
+    IF(KIN_E) moments_e = 0._dp
+    moments_i = 0._dp
 
     !**** Zonal Flow initialization *******************************************
     ! put a mode at ikx = mode number + 1, symmetry is already included since kx>=0
@@ -310,7 +313,7 @@ SUBROUTINE init_phi
         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)
-          moments_e(1,1,INIT_ZF+1,iky_0,iz,:) = 0._dp
+          IF(KIN_E) moments_e(1,1,INIT_ZF+1,iky_0,iz,:) = 0._dp
         ENDDO
       ENDIF
     ENDIF
@@ -325,7 +328,7 @@ END SUBROUTINE init_phi
 SUBROUTINE initialize_blob
   USE fields
   USE grid
-  USE model, ONLY: sigmai2_taui_o2
+  USE model, ONLY: sigmai2_taui_o2, KIN_E, LINEARITY
   IMPLICIT NONE
   REAL(dp) ::kx, ky, sigma, gain
   sigma = 0.5_dp
@@ -346,6 +349,7 @@ SUBROUTINE initialize_blob
       ENDIF
     ENDDO
     ENDDO
+    IF(KIN_E) THEN
     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
@@ -356,6 +360,7 @@ SUBROUTINE initialize_blob
       ENDIF
     ENDDO
     ENDDO
+    ENDIF
   ENDDO
   ENDDO
   ENDDO
@@ -373,7 +378,8 @@ SUBROUTINE init_ppj
   USE prec_const
   USE utility, ONLY: checkfield
   USE initial_par
-  USE model, ONLY : LINEARITY, KIN_E
+  USE model, ONLY: KIN_E, LINEARITY
+
   IMPLICIT NONE
 
   REAL(dp) :: noise