dims_grid.F90 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. !#################################################################
  2. !
  3. ! Grids. This file is automaticaly generated with the PYCASSO script, and put
  4. ! here as an example. It is for a no-zoom, 6x4 simulation.
  5. !
  6. !### macro's #####################################################
  7. !
  8. #include "tm5.inc"
  9. !
  10. !#################################################################
  11. module dims_grid
  12. implicit none
  13. ! --- in/out ------------------------------
  14. public
  15. ! --- const -------------------------------
  16. ! Basic model definition: resolution etc. including some routines
  17. ! to fill the data structure.
  18. ! basic (coarsest) resolution in degrees for x and y (dz default 1.0)
  19. real, parameter :: dx = 6.0
  20. real, parameter :: dy = 4.0
  21. real, parameter :: dz = 1.0
  22. ! Maximum number of zoom regions,
  23. ! including the basic (coarsest grid) region;
  24. ! arrays are allocated for each of these regions:
  25. integer, parameter :: nregions_max = 1
  26. ! extra grid:
  27. integer, parameter :: nregions_all = nregions_max + 1
  28. integer, parameter :: iglbsfc = nregions_max + 1
  29. ! Actual number of zoom regions,
  30. ! during testing this could be set to 1 to quickly run the model.
  31. integer, parameter :: nregions = nregions_max
  32. ! region_name is used to recognise the METEO files
  33. ! region_name is also used in the HDF output file name
  34. ! region 1 should always be the global domain
  35. integer, parameter :: len_region_name = 10
  36. character(len=len_region_name), parameter :: region_name(0:nregions_all) = &
  37. (/ 'globe ', 'glb600x400', 'glb100x100'/)
  38. ! coordinates (in degrees) for each region:
  39. ! xcyc = 1 if the region has cyclic x-boundary conditions
  40. ! touch_np = 1 if region touches the north pole
  41. ! touch_sp = 1 if region touches the south pole
  42. ! xbeg : the westmost border of the region
  43. ! xend : the eastmost border of the region
  44. ! ybeg : the southmost border of the region
  45. ! yend : the northmost border of the region
  46. integer, parameter :: xcyc (0:nregions_all) = (/ 1, 1, 1 /)
  47. integer, parameter :: touch_np(0:nregions_all) = (/ 1, 1, 1 /)
  48. integer, parameter :: touch_sp(0:nregions_all) = (/ 1, 1, 1 /)
  49. integer, parameter :: xbeg (0:nregions_all) = (/ -180, -180, -180 /)
  50. integer, parameter :: xend (0:nregions_all) = (/ 180, 180, 180 /)
  51. integer, parameter :: ybeg (0:nregions_all) = (/ -90, -90, -90 /)
  52. integer, parameter :: yend (0:nregions_all) = (/ 90, 90, 90 /)
  53. integer, parameter :: im (0:nregions_all) = (/ 1, 60, 360 /)
  54. integer, parameter :: jm (0:nregions_all) = (/ 1, 45, 180 /)
  55. ! maximum refinement factor (can be arbitrary in principle):
  56. integer, parameter :: maxref = 10
  57. ! refinement factors for each region (<= maxref)
  58. ! tref may differ from xref/yref. In the current
  59. ! implementation it should be 1,2,4,6,...
  60. integer, parameter :: xref(0:nregions_max) = (/ 1, 1 /)
  61. integer, parameter :: yref(0:nregions_max) = (/ 1, 1 /)
  62. integer, parameter :: zref(0:nregions_max) = (/ 1, 1 /)
  63. integer, parameter :: tref(0:nregions_max) = (/ 1, 1 /)
  64. ! Define the parent of each region.
  65. ! Global region 1 should have parent 0 (globe single cell);
  66. ! global surface region should have parent 1 (global region).
  67. integer, parameter :: parent(1:nregions_all) = (/ 0, 1 /)
  68. end module dims_grid