Skip to content
Snippets Groups Projects
diagnostics_par_mod.F90 3.45 KiB
MODULE diagnostics_par
  !   Module for diagnostic parameters

  USE prec_const
  IMPLICIT NONE
  PRIVATE

  LOGICAL, PUBLIC, PROTECTED :: write_doubleprecision = .FALSE.
  LOGICAL, PUBLIC, PROTECTED :: write_gamma, write_hf  ! output particle transport and heat flux
  LOGICAL, PUBLIC, PROTECTED :: write_phi,  write_Na00
  LOGICAL, PUBLIC, PROTECTED :: write_Napj, write_Sapj
  LOGICAL, PUBLIC, PROTECTED :: write_dens, write_fvel, write_temp

  INTEGER, PUBLIC, PROTECTED :: nsave_0d, nsave_1d, nsave_2d, nsave_3d, nsave_5d

  !  HDF5 file
  CHARACTER(len=256), PUBLIC :: resfile,resfile0 = "outputs"            ! Head of main result file name
  CHARACTER(len=256), PUBLIC :: momfile,momfile0 = "moments"   ! Head of the moment spectrum file (N_a(p,j,z))
  CHARACTER(len=256), PUBLIC :: mspfile,mspfile0 = "moments_spectrum"   ! Head of the moment spectrum file (N_a(p,j,z))
  CHARACTER(len=256), PUBLIC :: fldfile,fldfile0 = "fields"             ! Head of field (phi,A)
  CHARACTER(len=256), PUBLIC :: ttrfile,ttrfile0 = "time_traces"        ! Head of time traces (gamma_x,Q_x)
  CHARACTER(len=256), PUBLIC :: ggmfile,ggmfile0 = "grid_geometry"        ! Head of time traces (gamma_x,Q_x)
  CHARACTER(len=256), PUBLIC :: prffile,prffile0 = "profiler"        ! Head of time traces (gamma_x,Q_x)
  CHARACTER(len=256), PUBLIC :: input_fname
  CHARACTER(len=256), PUBLIC :: rstfile                     ! restart result file
  INTEGER, PUBLIC            :: job2load                    ! jobnum of the checkpoint to load
  INTEGER, PUBLIC            :: fidres,fidmsp,fidfld,fidttr ! FID for output
  INTEGER, PUBLIC            :: fidmom,fidggm, fidprf
  INTEGER, PUBLIC            :: fidrst                      ! FID for restart file

  PUBLIC :: diag_par_readinputs, diag_par_outputinputs

CONTAINS


  SUBROUTINE diag_par_readinputs
    !    Read the input parameters

    USE basic, ONLY : lu_in
    USE prec_const
    IMPLICIT NONE

    NAMELIST /OUTPUT_PAR/ nsave_0d, nsave_1d, nsave_2d, nsave_3d, nsave_5d
    NAMELIST /OUTPUT_PAR/ write_doubleprecision, write_gamma, write_hf, write_phi
    NAMELIST /OUTPUT_PAR/ write_Na00, write_Napj, write_Sapj
    NAMELIST /OUTPUT_PAR/ write_dens, write_fvel, write_temp
    NAMELIST /OUTPUT_PAR/ job2load

    READ(lu_in,output_par)

  END SUBROUTINE diag_par_readinputs


  SUBROUTINE diag_par_outputinputs(fid, str)
    !
    !    Write the input parameters to the results_xx.h5 file
    !
    USE prec_const
    USE futils, ONLY: attach
    IMPLICIT NONE
    INTEGER, INTENT(in) :: fid
    CHARACTER(len=256), INTENT(in) :: str

    CALL attach(fid, TRIM(str), "write_doubleprecision", write_doubleprecision)
    CALL attach(fid, TRIM(str), "nsave_0d", nsave_0d)
    CALL attach(fid, TRIM(str), "nsave_1d", nsave_1d)
    CALL attach(fid, TRIM(str), "nsave_2d", nsave_2d)
    CALL attach(fid, TRIM(str), "nsave_3d", nsave_3d)
    CALL attach(fid, TRIM(str), "nsave_5d", nsave_5d)
    CALL attach(fid, TRIM(str), "write_gamma", write_gamma)
    CALL attach(fid, TRIM(str),    "write_hf",    write_hf)
    CALL attach(fid, TRIM(str),   "write_phi",   write_phi)
    CALL attach(fid, TRIM(str),  "write_Na00",  write_Na00)
    CALL attach(fid, TRIM(str),  "write_Napj",  write_Napj)
    CALL attach(fid, TRIM(str),  "write_Sapj",  write_Sapj)
    CALL attach(fid, TRIM(str),  "write_dens",  write_dens)
    CALL attach(fid, TRIM(str),  "write_fvel",  write_fvel)
    CALL attach(fid, TRIM(str),  "write_temp",  write_temp)

  END SUBROUTINE diag_par_outputinputs


END MODULE diagnostics_par