subroutine auxval
  !   Set auxiliary values, at beginning of simulation

  USE basic
  USE grid
  USE array
  USE model
  USE fourier, ONLY: init_grid_distr_and_plans
  use prec_const
  USE numerics
  USE geometry
  USE parallel, ONLY: init_parallel_var
  IMPLICIT NONE

  INTEGER :: i_
  IF (my_id .EQ. 0) WRITE(*,*) '=== Set auxiliary values ==='

  IF (LINEARITY .NE. 'linear') THEN
    IF (my_id .EQ. 0) write(*,*) 'FFTW3 y-grid distribution'
    CALL init_grid_distr_and_plans(Nx,Ny)
  ELSE
    CALL init_1Dgrid_distr
    IF (my_id .EQ. 0) write(*,*) 'Manual y-grid distribution'
  ENDIF
  ! Init the grids
  CALL set_pgrid ! parallel kin (MPI distributed)

  CALL set_jgrid ! perp kin

  CALL set_kxgrid(shear) ! radial modes (MPI distributed by FFTW)

  CALL set_kygrid ! azymuthal modes

  CALL set_zgrid  ! field aligned angle
  IF ((my_id .EQ. 0) .AND. SG) WRITE(*,*) '--2 staggered z grids--'

  CALL memory ! Allocate memory for global arrays

  CALL init_parallel_var

  CALL eval_magnetic_geometry ! precompute coeff for lin equation

  CALL compute_lin_coeff ! precompute coeff for lin equation and geometry

  CALL evaluate_kernels ! precompute the kernels

  CALL evaluate_EM_op ! compute inverse of poisson and ampere operators

  IF ( LINEARITY .NE. 'linear' ) THEN;
    CALL build_dnjs_table ! precompute the Laguerre nonlin product coeffs
  ENDIF

  !! Display parallel settings
  DO i_ = 0,num_procs-1
    CALL mpi_barrier(MPI_COMM_WORLD, ierr)
    IF (my_id .EQ. i_) THEN
      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_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_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)')&
       '              ijs_e = ', ijs_e, ', ije_e  = ', ije_e
       WRITE(*,'(A22,I3,A11,I3)')&
       '              ips_i = ', ips_i, ', ipe_i  = ', ipe_i
       WRITE(*,'(A22,I3,A11,I3)')&
       '              ijs_i = ', ijs_i, ', ije_i  = ', ije_i
       WRITE(*,'(A22,I3,A11,I3)')&
       '              ikxs  = ', ikxs , ', ikxe   = ', ikxe
       WRITE(*,'(A22,I3,A11,I3)')&
       '              ikys  = ', ikys , ', ikye   = ', ikye
       WRITE(*,'(A22,I3,A11,I3)')&
       '              izs   = ', izs  , ', ize    = ', ize
      IF (my_id .NE. num_procs-1) WRITE (*,*) ''
      IF (my_id .EQ. num_procs-1) WRITE(*,*) '------------------------------------------'
    ENDIF
  ENDDO
  CALL mpi_barrier(MPI_COMM_WORLD, ierr)

  IF((my_id.EQ.0) .AND. (CLOS .EQ. 1)) THEN
  IF(KIN_E) &
  write(*,*) 'Closure = 1 -> Maximal Nepj degree is min(Pmaxe,2*Jmaxe+1): De = ', dmaxi
  write(*,*) 'Closure = 1 -> Maximal Nipj degree is min(Pmaxi,2*Jmaxi+1): Di = ', dmaxi
  ENDIF

END SUBROUTINE auxval