iom_def.F90 4.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. MODULE iom_def
  2. !!=====================================================================
  3. !! *** MODULE iom_def ***
  4. !! IOM variables definitions
  5. !!====================================================================
  6. !! History : 9.0 ! 06 09 (S. Masson) Original code
  7. !! " ! 07 07 (D. Storkey) Add uldname
  8. !!--------------------------------------------------------------------
  9. !!---------------------------------------------------------------------------------
  10. !! NEMO/OPA 3.3 , NEMO Consortium (2010)
  11. !! $Id: iom_def.F90 4205 2013-11-14 17:02:06Z clem $
  12. !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
  13. !!---------------------------------------------------------------------------------
  14. USE par_kind
  15. IMPLICIT NONE
  16. PRIVATE
  17. INTEGER, PARAMETER, PUBLIC :: jpdom_data = 1 !: ( 1 :jpidta, 1 :jpjdta)
  18. INTEGER, PARAMETER, PUBLIC :: jpdom_global = 2 !: ( 1 :jpiglo, 1 :jpjglo)
  19. INTEGER, PARAMETER, PUBLIC :: jpdom_local = 3 !: One of the 3 following cases
  20. INTEGER, PARAMETER, PUBLIC :: jpdom_local_full = 4 !: ( 1 :jpi , 1 :jpi )
  21. INTEGER, PARAMETER, PUBLIC :: jpdom_local_noextra = 5 !: ( 1 :nlci , 1 :nlcj )
  22. INTEGER, PARAMETER, PUBLIC :: jpdom_local_noovlap = 6 !: (nldi:nlei ,nldj:nlej )
  23. INTEGER, PARAMETER, PUBLIC :: jpdom_unknown = 7 !: No dimension checking
  24. INTEGER, PARAMETER, PUBLIC :: jpdom_autoglo = 8 !:
  25. INTEGER, PARAMETER, PUBLIC :: jpdom_autodta = 9 !:
  26. INTEGER, PARAMETER, PUBLIC :: jpioipsl = 100 !: Use ioipsl (fliocom only) library
  27. INTEGER, PARAMETER, PUBLIC :: jpnf90 = 101 !: Use nf90 library
  28. INTEGER, PARAMETER, PUBLIC :: jprstdimg = 102 !: Use restart dimgs (fortran direct acces) library
  29. #if defined key_dimgout
  30. INTEGER, PARAMETER, PUBLIC :: jprstlib = jprstdimg !: restarts io library
  31. #else
  32. INTEGER, PARAMETER, PUBLIC :: jprstlib = jpnf90 !: restarts io library
  33. #endif
  34. INTEGER, PARAMETER, PUBLIC :: jp_r8 = 200 !: write REAL(8)
  35. INTEGER, PARAMETER, PUBLIC :: jp_r4 = 201 !: write REAL(4)
  36. INTEGER, PARAMETER, PUBLIC :: jp_i4 = 202 !: write INTEGER(4)
  37. INTEGER, PARAMETER, PUBLIC :: jp_i2 = 203 !: write INTEGER(2)
  38. INTEGER, PARAMETER, PUBLIC :: jp_i1 = 204 !: write INTEGER(1)
  39. INTEGER, PARAMETER, PUBLIC :: jpmax_files = 100 !: maximum number of simultaneously opened file
  40. INTEGER, PARAMETER, PUBLIC :: jpmax_vars = 600 !: maximum number of variables in one file
  41. INTEGER, PARAMETER, PUBLIC :: jpmax_dims = 4 !: maximum number of dimensions for one variable
  42. INTEGER, PARAMETER, PUBLIC :: jpmax_digits = 5 !: maximum number of digits for the cpu number in the file name
  43. !$AGRIF_DO_NOT_TREAT
  44. INTEGER, PUBLIC :: iom_open_init = 0 !: used to initialize iom_file(:)%nfid to 0
  45. TYPE, PUBLIC :: file_descriptor
  46. CHARACTER(LEN=240) :: name !: name of the file
  47. INTEGER :: nfid !: identifier of the file (0 if closed)
  48. INTEGER :: iolib !: library used to read the file (jpioipsl, jpnf90 or jprstdimg)
  49. INTEGER :: nvars !: number of identified varibles in the file
  50. INTEGER :: iduld !: id of the unlimited dimension
  51. INTEGER :: irec !: writing record position
  52. CHARACTER(LEN=32) :: uldname !: name of the unlimited dimension
  53. CHARACTER(LEN=32), DIMENSION(jpmax_vars) :: cn_var !: names of the variables
  54. INTEGER, DIMENSION(jpmax_vars) :: nvid !: id of the variables
  55. INTEGER, DIMENSION(jpmax_vars) :: ndims !: number of dimensions of the variables
  56. LOGICAL, DIMENSION(jpmax_vars) :: luld !: variable using the unlimited dimension
  57. INTEGER, DIMENSION(jpmax_dims,jpmax_vars) :: dimsz !: size of variables dimensions
  58. REAL(kind=wp), DIMENSION(jpmax_vars) :: scf !: scale_factor of the variables
  59. REAL(kind=wp), DIMENSION(jpmax_vars) :: ofs !: add_offset of the variables
  60. END TYPE file_descriptor
  61. TYPE(file_descriptor), DIMENSION(jpmax_files), PUBLIC :: iom_file !: array containing the info for all opened files
  62. !$AGRIF_END_DO_NOT_TREAT
  63. !!=====================================================================
  64. END MODULE iom_def