photolysis_data.F90 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216
  1. !
  2. #include "tm5.inc"
  3. !
  4. MODULE PHOTOLYSIS_DATA
  5. use dims, only: nregions
  6. implicit none
  7. ! types used in photolysis...
  8. TYPE PHOT_DATA
  9. !
  10. ! o3klim_top
  11. ! vo3_surf : vertical column ozone at the surface (#/cm2)
  12. ! cloudfrac : maximum overlap cloud fraction (-)
  13. ! albedo : surface albedo (UV spectral region)
  14. ! vo3 : overhead ozone (#/cm2)
  15. ! ags_av : statistics: contains average albedo
  16. ! vo3s_av : statistics: contains average ozone column (#/cm2)
  17. ! cfr_av : statistics: average cloud fraction
  18. ! jo3_av : statistics: contains average jo3 (1/s)
  19. ! jno2_av : statistics: contains average jno2 (1/s)
  20. ! additional fields added to assess the upgrade to the photolysis
  21. ! jh2o2_av : statistics: contains average jh2o2(1/s)
  22. ! jhno3_av : statistics: contains average jhno3(1/s)
  23. ! jhno4_av : statistics: contains average jhno4(1/s)
  24. ! jn2o5_av : statistics: contains average jn2o5(1/s)
  25. ! jch2o_a_av : statistics: contains average jach2o(1/s)
  26. ! jch2o_b_av : statistics: contains average jbch2o(1/s)
  27. ! jmepe_av : statistics: contains average jch3ooh(1/s)
  28. ! jpan_av : statistics: contains average jpan(1/s)
  29. ! jorgn_av : statistics: contains average jorgn(1/s)
  30. ! jno3a_av : statistics: contains average jno3a(1/s)
  31. ! jno3b_av : statistics: contains average jno3b(1/s)
  32. ! nj_av, nvo3s_av, ncloud_av, nalb_av : couters for statistics
  33. !
  34. real, dimension(:), pointer :: o3klim_top
  35. real, dimension(:,:), pointer :: albedo
  36. ! real, dimension(:,:,:), pointer :: vo3
  37. real, dimension(:,:,:), pointer :: cloud_reff
  38. real, dimension(:,:,:), pointer :: sad_cld
  39. real, dimension(:,:,:), pointer :: sad_ice
  40. real, dimension(:,:,:), pointer :: sad_aer
  41. real, dimension(:,:,:), pointer :: sad_cld_av
  42. real, dimension(:,:,:), pointer :: sad_ice_av
  43. real, dimension(:,:,:), pointer :: sad_aer_av
  44. real, dimension(:,:,:), pointer :: cfr_av
  45. real, dimension(:,:,:), pointer :: lwp_av
  46. real, dimension(:,:,:), pointer :: reff_av
  47. real, dimension(:,:), pointer :: ags_av
  48. real, dimension(:,:), pointer :: sza_av
  49. integer, dimension(:,:), pointer :: aero_surface_clim
  50. ! J-values and their averages
  51. real, dimension(:,:,:), pointer :: jo3, jo3_av
  52. real, dimension(:,:,:), pointer :: jno2, jno2_av
  53. ! averaged optical
  54. real, dimension(:,:,:), pointer :: pmcld_av
  55. real, dimension(:,:,:), pointer :: taus_cld_av
  56. real, dimension(:,:,:), pointer :: taua_cld_av
  57. real, dimension(:,:,:,:,:), pointer :: pmaer_av
  58. real, dimension(:,:,:,:,:), pointer :: taus_aer_av
  59. real, dimension(:,:,:,:,:), pointer :: taua_aer_av
  60. ! counters for averages
  61. real :: nj_av, nvo3s_av, nalb_av, ncloud_av, naer_av, nsad_av
  62. ! ONLINE PARAMETERS
  63. ! ------------------
  64. ! optical depth aerosol
  65. real, dimension(:,:,:,:,:), pointer :: taus_aer, taua_aer
  66. ! optical depth clouds and aerosols
  67. real, dimension(:,:,:), pointer :: taua_cld, taus_cld
  68. ! scattering aerosol
  69. real, dimension(:,:,:,:,:), pointer :: pmaer
  70. ! scattering cloud
  71. real, dimension(:,:,:), pointer :: pmcld
  72. ! column densities
  73. real, dimension(:,:,:), pointer :: v2, v3
  74. ! scaling ratio limits
  75. real, dimension(:,:), pointer :: v3_surf
  76. ! band limits for low direct fluxes
  77. real, dimension(:,:), pointer :: band1_limit, band3_limit
  78. ! temp dependent cross-sections ; the o2 has been replaced by a 1-D array
  79. ! each individual look up array has been tuned to reduce the overhead (JEW, AUG 2008)
  80. ! the valuesa are now ascribed in the main loop calculating the photolysis rates
  81. real, dimension(:,:,:,:), pointer :: qy_ch3cocho
  82. END TYPE PHOT_DATA
  83. type(phot_data),dimension(nregions),target :: phot_dat
  84. integer,parameter :: nj = 17
  85. integer,parameter :: jo3d = 1
  86. integer,parameter :: jno2 = 2
  87. integer,parameter :: jh2o2 = 3
  88. integer,parameter :: jhno3 = 4
  89. integer,parameter :: jhno4 = 5
  90. integer,parameter :: jn2o5 = 6
  91. integer,parameter :: jach2o= 7
  92. integer,parameter :: jbch2o= 8
  93. integer,parameter :: jmepe = 9
  94. integer,parameter :: jano3 = 10
  95. integer,parameter :: jbno3 = 11
  96. integer,parameter :: jpan = 12
  97. integer,parameter :: jorgn = 13
  98. integer,parameter :: j45 = 14
  99. integer,parameter :: j74 = 15
  100. integer,parameter :: jrooh = 16
  101. integer,parameter :: jo2 = 17
  102. character(len=8), dimension(nj), parameter :: jnam = (/ &
  103. 'jo3d ','jno2 ','jh2o2 ','jhno3 ','jhno4 ', &
  104. 'jn2o5 ','jach2o ','jbch2o ','jmepe ','jano3 ', &
  105. 'jbno3 ','jpan ','jorgn ','j45 ','j74 ', &
  106. 'jrooh ','jo2 '/)
  107. integer, parameter :: maxwav = 122 ! maximal number of wave length intervals
  108. integer, parameter :: maxw = 120 ! maximal number of wave length intervals for calculations
  109. ! purely o2 and o3 absorbing atmosphere
  110. integer, parameter :: nmom = 16 ! number of moments of phase functions
  111. integer, parameter :: nbands_trop = 7 ! number of wave length intervals (bands)
  112. integer, parameter :: ngrid = 2 ! number of spectral grid types: normal and high angle
  113. integer :: nwdep ! number of wave length intervals (bands)
  114. ! o2 cross section in band 1
  115. real,dimension(17) :: cross_o2
  116. data cross_o2 /7.448E-24, 7.322E-24, 7.002E-24, 6.608E-24, 6.118E-24, 5.736E-24, 5.302E-24,&
  117. 4.741E-24, 4.261E-24, 3.788E-24, 3.213E-24, 2.69E-24, 2.218E-24, 1.793E-24,&
  118. 1.384E-24, 1.054E-24, 6.318E-25/
  119. ! rayleigh scattering cross section [cm^2/part.]
  120. real,dimension(maxwav) :: cs_ray
  121. !cross sections [cm^2/part.]
  122. real,dimension(maxwav,nj) :: cs
  123. real,dimension(maxwav,8,4) :: sca,abs_eff,g,ext
  124. ! effective scattering cross section [cm^2/p]
  125. ! effective absorption cross section [cm^2/p]
  126. ! effective asymmetry factor,extinction coefficient [1/km]
  127. ! different aerosol types:
  128. ! 1 = rural aerosol
  129. ! 2 = maritime aerosol
  130. ! 3 = urban aerosol
  131. ! 4 = free troposphere aerosol
  132. real,dimension(4) :: pn_ref = (/ 15000., 4000., 20000., 5000./)
  133. ! The wavelengths < 204 nm are not yet considered for the tropospheric version
  134. ! ------------------------------------------------------------------------
  135. ! O2 absorption features:
  136. ! ------------------------------------------------------------------------
  137. ! ( 121.4 - 121.9 nm Lyman-Alpha line : removed in trop version)
  138. ! ( 100 - 175 nm Schumann-Runge continuum : removed in trop version)
  139. ! ( 175 - 204 nm Schumann-Runge bands : removed in trop version)
  140. ! 204 - 241 nm Herzberg continuum : include scattering effects
  141. !
  142. ! ------------------------------------------------------------------------
  143. ! O3 absorption features:
  144. ! ------------------------------------------------------------------------
  145. ! 204 - 240 nm (no name) : include scattering effects
  146. ! 240 - 310 nm Hartley band : include scattering effects
  147. ! 310 - 400 nm Huggins band : include scattering effects
  148. ! 400 - 850 nm Chappuis bands : include scattering effects
  149. !
  150. ! ------------------------------------------------------------------------
  151. ! Scattering bands: The selection of the bands and their effective
  152. ! wavelengths are inspired on Landgraf and Crutzen
  153. ! ------------------------------------------------------------------------
  154. ! band spectral range eff. wavelength index spectral grid
  155. ! ------------------------------------------------------------------------
  156. ! 1 204.082 - 240.964 nm 205.128 1
  157. ! 2 240.964 - 289.855 nm 287.770 29
  158. ! 3 289.855 - 305.500 nm 303.000 33
  159. ! 4 305.500 - 313.500 nm 309.000 39
  160. ! 5 313.500 - 337.500 nm 320.000 46
  161. ! 6 337.500 - 422.500 nm 370.000 56
  162. ! 7 422.500 - 735.000 nm 580.000 98
  163. !
  164. ! JEW : band 7 has been optimized and truncated down to end of NO3 spectra
  165. ! JEW : Removal of bins < 204nm and >640nm reduces the main spectral array by ~25%
  166. ! JEW : Band limits for band 7 have subsequently changed
  167. real, dimension(:), allocatable :: photo_wavelengths
  168. integer, dimension(nbands_trop) :: wav_grid , wav_gridA
  169. integer,dimension(nbands_trop) :: &
  170. lini = (/1, 18, 31, 40, 48, 61, 78 /), &
  171. lfin = (/17, 30, 39, 47, 60, 77, 122/), &
  172. lmid = (/2, 30, 36, 43, 54, 67, 109/)
  173. integer,dimension(nbands_trop) :: &
  174. lini_gridA = (/1, 18, 31, 40, 48, 63, 90/), &
  175. lfin_gridA = (/17, 30, 39, 47, 62, 89, 122/), &
  176. lmid_gridA = (/4, 30, 36, 45, 58, 70, 115/)
  177. ! maximum zenith angle for photolysis calculations
  178. real, parameter :: sza_limit = 85. !calculations are shut off at sza=85
  179. real,dimension(maxwav) :: wave ! wavelength in the middle of the interval
  180. real,dimension(maxwav+54) :: wave_full ! full 8 band grid
  181. real,dimension(maxwav) :: dwave ! width of the wavelength intervals [cm]
  182. real,dimension(maxwav+54) :: dwave_full
  183. ! extra-terrestrial flux per wave length bin
  184. real,dimension(maxwav) :: flux
  185. end module photolysis_data