MODULE initial_par
  !   Module for initial parameters

  USE prec_const
  IMPLICIT NONE
  PRIVATE

  ! Initialization option (phi/mom00/allmom/blob)
  CHARACTER(len=32), PUBLIC, PROTECTED :: INIT_OPT = 'phi'
  ! Initialization through a zonal flow phi
  INTEGER,  PUBLIC, PROTECTED :: INIT_ZF    = 0
  REAL(xp), PUBLIC, PROTECTED :: ZF_AMP     = 1E+3_xp
  ! Act on modes artificially (keep/wipe, zonal, non zonal, entropy mode etc.)
  CHARACTER(len=32),  PUBLIC, PROTECTED :: ACT_ON_MODES = 'nothing'
  ! Initial background level
  REAL(xp), PUBLIC, PROTECTED :: init_background=0._xp
  ! Initial noise amplitude
  REAL(xp), PUBLIC, PROTECTED :: init_noiselvl=1E-6_xp
  ! Initialization for random number generator
  INTEGER,  PUBLIC, PROTECTED :: iseed=42

  PUBLIC :: initial_outputinputs, initial_readinputs

CONTAINS


  SUBROUTINE initial_readinputs
    ! Read the input parameters

    USE basic, ONLY : lu_in
    USE prec_const
    IMPLICIT NONE

    NAMELIST /INITIAL_CON/ INIT_OPT
    NAMELIST /INITIAL_CON/ ACT_ON_MODES
    NAMELIST /INITIAL_CON/ init_background
    NAMELIST /INITIAL_CON/ init_noiselvl
    NAMELIST /INITIAL_CON/ iseed

    READ(lu_in,initial_con)
    !WRITE(*,initial_con)

  END SUBROUTINE initial_readinputs


  SUBROUTINE initial_outputinputs(fid)
    ! Write the input parameters to the results_xx.h5 file
    USE futils, ONLY: attach, creatd
    IMPLICIT NONE
    INTEGER, INTENT(in) :: fid
    CHARACTER(len=256)  :: str
    WRITE(str,'(a)') '/data/input/intial'
    CALL creatd(fid, 0,(/0/),TRIM(str),'Initial Input')
    CALL attach(fid, TRIM(str), "INIT_OPT", INIT_OPT)
    CALL attach(fid, TRIM(str), "init_background", init_background)
    CALL attach(fid, TRIM(str), "init_noiselvl", init_noiselvl)
    CALL attach(fid, TRIM(str), "iseed", iseed)
  END SUBROUTINE initial_outputinputs

END MODULE initial_par