diff --git a/src/auxval.F90 b/src/auxval.F90
index 07f7acde91e4074425cbd213350ed23a7b5f5391..6c281046b4d302f841de14e86335606c7266a894 100644
--- a/src/auxval.F90
+++ b/src/auxval.F90
@@ -13,9 +13,9 @@ subroutine auxval
 
   CALL init_grid_distr_and_plans(Nr,Nz)
 
-  CALL set_krgrid
+  CALL set_krgrid ! MPI Distributed dimension
 
-  CALL set_kzgrid ! Distributed dimension
+  CALL set_kzgrid
 
   CALL set_pj
 
@@ -26,7 +26,6 @@ subroutine auxval
     IF (my_id .EQ. i_) WRITE (*,'(I2,A9,I3,A8,I3,A8,I3,A8,I3,A15,I6)') &
     i_,': ikrs = ', ikrs, ' ikre = ', ikre, 'ikzs = ', ikzs, ' ikze = ', ikze, &
     'alloc_local = ', alloc_local_1+alloc_local_2
-    CALL mpi_barrier(MPI_COMM_WORLD, ierr)
   ENDDO
 
 END SUBROUTINE auxval
diff --git a/src/control.F90 b/src/control.F90
index d95e890f67a86c48e175641660375ae368702ea0..a3f251e5597c379c4838072ce0e0f6516d81215d 100644
--- a/src/control.F90
+++ b/src/control.F90
@@ -9,42 +9,48 @@ SUBROUTINE control
   !________________________________________________________________________________
   !              1.   Prologue
   !                   1.1     Initialize the parallel environment
-  IF (my_id .EQ. 1) WRITE(*,*) 'Initialize MPI...'
+  IF (my_id .EQ. 0) WRITE(*,*) 'Initialize MPI...'
   CALL ppinit
-  IF (my_id .EQ. 1) WRITE(*,'(a/)') '...MPI initialized'
+  IF (my_id .EQ. 0) WRITE(*,'(a/)') '...MPI initialized'
 
 
   CALL daytim('Start at ')
 
   !                   1.2     Define data specific to run
-  IF (my_id .EQ. 1) WRITE(*,*) 'Load basic data...'
+  IF (my_id .EQ. 0) WRITE(*,*) 'Load basic data...'
   CALL basic_data
-  IF (my_id .EQ. 1) WRITE(*,'(a/)') '...basic data loaded.'
+  CALL mpi_barrier(MPI_COMM_WORLD, ierr)
+  IF (my_id .EQ. 0) WRITE(*,'(a/)') '...basic data loaded.'
 
   !                   1.3   Read input parameters from input file
-  IF (my_id .EQ. 1) WRITE(*,*) 'Read input parameters...'
+  IF (my_id .EQ. 0) WRITE(*,*) 'Read input parameters...'
   CALL readinputs
-  IF (my_id .EQ. 1) WRITE(*,'(a/)') '...input parameters read'
+  CALL mpi_barrier(MPI_COMM_WORLD, ierr)
+  IF (my_id .EQ. 0) WRITE(*,'(a/)') '...input parameters read'
 
   !                   1.4     Set auxiliary values (allocate arrays, set grid, ...)
-  IF (my_id .EQ. 1) WRITE(*,*) 'Calculate auxval...'
+  IF (my_id .EQ. 0) WRITE(*,*) 'Calculate auxval...'
   CALL auxval
-  IF (my_id .EQ. 1) WRITE(*,'(a/)') '...auxval calculated'
+  CALL mpi_barrier(MPI_COMM_WORLD, ierr)
+  IF (my_id .EQ. 0) WRITE(*,'(a/)') '...auxval calculated'
 
   !                   1.5     Initial conditions
-  IF (my_id .EQ. 1) WRITE(*,*) 'Create initial state...'
+  IF (my_id .EQ. 0) WRITE(*,*) 'Create initial state...'
   CALL inital
-  IF (my_id .EQ. 1) WRITE(*,'(a/)') '...initial state created'
+  CALL mpi_barrier(MPI_COMM_WORLD, ierr)
+  IF (my_id .EQ. 0) WRITE(*,'(a/)') '...initial state created'
 
   !                   1.6     Initial diagnostics
-  IF (my_id .EQ. 1) WRITE(*,*) 'Initial diagnostics...'
+  IF (my_id .EQ. 0) WRITE(*,*) 'Initial diagnostics...'
   CALL diagnose(0)
-  IF (my_id .EQ. 1) WRITE(*,'(a/)') '...initial diagnostics done'
+  CALL mpi_barrier(MPI_COMM_WORLD, ierr)
+  IF (my_id .EQ. 0) WRITE(*,'(a/)') '...initial diagnostics done'
 
   CALL FLUSH(stdout)
+  CALL mpi_barrier(MPI_COMM_WORLD, ierr)
   !________________________________________________________________________________
 
-  IF (my_id .EQ. 1) WRITE(*,*) 'Time integration loop..'
+  IF (my_id .EQ. 0) WRITE(*,*) 'Time integration loop..'
   !________________________________________________________________________________
   !              2.   Main loop
   DO
@@ -68,15 +74,14 @@ SUBROUTINE control
 
   END DO
 
-  CALL mpi_barrier(MPI_COMM_WORLD,ierr)
-  IF (my_id .EQ. 1) WRITE(*,'(a/)') '...time integration done'
+  IF (my_id .EQ. 0) WRITE(*,'(a/)') '...time integration done'
   !________________________________________________________________________________
   !              9.   Epilogue
 
   CALL diagnose(-1)
   CALL endrun
 
-  IF (my_id .EQ. 1) CALL daytim('Done at ')
+  IF (my_id .EQ. 0) CALL daytim('Done at ')
 
   CALL ppexit
 
diff --git a/src/fourier_mod.F90 b/src/fourier_mod.F90
index 528e21ddede3301b8f2b3a8b4baa928f19c2b2c9..2634028d5e32c0ded58286e458cd65b4d41162f0 100644
--- a/src/fourier_mod.F90
+++ b/src/fourier_mod.F90
@@ -20,7 +20,12 @@ 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)                    :: NR_, NZ_
+  integer(C_INTPTR_T)                    :: NR_, NZ_, NR_halved
+
+  ! many plan data variables
+  integer(C_INTPTR_T) :: howmany=9 ! numer of eleemnt of the tensor
+  integer :: rank=3                ! rank of the transform
+  integer(C_INTPTR_T), dimension(2) :: fft_dims ! array containing data extent
 
   CONTAINS
 
@@ -29,9 +34,12 @@ MODULE fourier
 
     INTEGER, INTENT(IN) :: Nr,Nz
     NR_ = Nr; NZ_ = Nz
+    NR_halved = NR_/2 + 1
 
+    !! Complex arrays F, G
     ! Compute the room to allocate
-    alloc_local_1 = fftw_mpi_local_size_2d(NR_/2 + 1, NZ_, MPI_COMM_WORLD, local_nkr, local_nkr_offset)
+    alloc_local_1 = fftw_mpi_local_size_2d(NR_halved, NZ_, MPI_COMM_WORLD, local_nkr, local_nkr_offset)
+    ! alloc_local_1 = fftw_mpi_local_size_2d_many(2, NR_halved, NZ_, MPI_COMM_WORLD, local_nkr, local_nkr_offset)
     ! Initalize pointers to this room
     cdatac_f = fftw_alloc_complex(alloc_local_1)
     cdatac_g = fftw_alloc_complex(alloc_local_1)
@@ -41,11 +49,15 @@ MODULE fourier
     call c_f_pointer(cdatac_g, cmpx_data_g, [NZ_ ,local_nkr])
     call c_f_pointer(cdatac_c, cmpx_data_c, [NZ_ ,local_nkr])
 
-    alloc_local_2 = fftw_mpi_local_size_2d(NZ_, NR_/2 + 1, MPI_COMM_WORLD, local_nz, local_nz_offset)
-
+    !! Real arrays iFFT(F), iFFT(G)
+    ! Compute the room to allocate
+    alloc_local_2 = fftw_mpi_local_size_2d(NZ_, NR_halved, MPI_COMM_WORLD, local_nz, local_nz_offset)
+    ! alloc_local_2 = fftw_mpi_local_size_2d_many(2, NZ_, NR_halved, MPI_COMM_WORLD, local_nz, local_nz_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*(NR_/2  + 1),local_nz])
     call c_f_pointer(cdatar_g, real_data_g, [2*(NR_/2  + 1),local_nz])
     call c_f_pointer(cdatar_c, real_data_c, [2*(NR_/2  + 1),local_nz])
@@ -59,13 +71,6 @@ MODULE fourier
       stop
    end if
 
-   DO ix = 0,num_procs-1
-     CALL mpi_barrier(MPI_COMM_WORLD, ierr)
-     IF (my_id .EQ. ix) print *, my_id,': alloc_local = ', alloc_local_1+alloc_local_2
-     CALL mpi_barrier(MPI_COMM_WORLD, ierr)
-   ENDDO
-
-
   END SUBROUTINE init_grid_distr_and_plans
 
 
diff --git a/src/inital.F90 b/src/inital.F90
index 048769d51e80b45cfabbb5b414e0d747866eac37..d3e3b8c827c42f335fe1837f18237ba6035085b6 100644
--- a/src/inital.F90
+++ b/src/inital.F90
@@ -22,14 +22,14 @@ SUBROUTINE inital
   ELSE
     CALL init_moments
     !!!!!! Set phi !!!!!!
-    IF (my_id .EQ. 1) WRITE(*,*) 'Init phi'
+    IF (my_id .EQ. 0) WRITE(*,*) 'Init phi'
     CALL poisson
   ENDIF
 
 
   !!!!!! Set Sepj, Sipj and dnjs coeff table !!!!!!
   IF ( NON_LIN ) THEN;
-    IF (my_id .EQ. 1) WRITE(*,*) 'Init Sapj'
+    IF (my_id .EQ. 0) WRITE(*,*) 'Init Sapj'
     CALL compute_Sapj
     ! WRITE(*,*) 'Building Dnjs table'
     CALL build_dnjs_table