chem_param.F90 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475
  1. !
  2. #include "tm5.inc"
  3. !
  4. !-----------------------------------------------------------------------
  5. !
  6. ! changed for coupling with M7 by Elisabetta Vignati 2005
  7. !-----------------------------------------------------------------------
  8. module chem_param
  9. use global_types, only : d3_data
  10. use dims, only : nregions
  11. use binas, only : xmair
  12. use reaction_data
  13. #ifndef without_photolysis
  14. use photolysis_data
  15. #endif
  16. use deposition_data
  17. ! JadB. There was nmodes (from here) and nmod (from m7), both set to 7. Use only one parameter. I chose nmod.
  18. #ifdef with_m7
  19. Use mo_aero_m7, only : nmod
  20. use mo_aero_m7, only : dh2so4, ddust, dbc, doc, dnacl
  21. use mo_aero, only : cmr_ff, cmr_bb, cmr_sk, cmr_sa, cmr_sc, facso2
  22. use mo_aero, only : zbb_wsoc_perc, zbge_wsoc_perc
  23. !use mo_aero, only : zom2oc
  24. #endif
  25. implicit none
  26. #ifndef with_m7
  27. integer, parameter :: nmod = 1
  28. #endif
  29. ! For compatibility with old code, we will redefine nmodes as the same as nmod
  30. Integer, Parameter :: nmodes = nmod
  31. ! budget of SO4: specific
  32. !PLS type(d3_data), dimension(nregions), target :: so4pg, so4pa
  33. ! budget of ozone, and CH4 oxidation (double check)
  34. type(d3_data), dimension(nregions), target :: o3t, o3s ! transport, stratospheric
  35. type(d3_data), dimension(nregions), target :: o3ts ! to store 'old' o3 field
  36. type(d3_data), dimension(nregions), target :: o3p, o3l ! o3 production and loss terms..
  37. !PLS type(d3_data), dimension(nregions), target :: ch4oh, ch4_ps ! ch4+oh descrutct. and pseudosource
  38. integer, parameter :: nmark= 1 ! number of 'marked' tracers
  39. integer, parameter :: nstd = 1 ! number of 'std deviation' in mmix output
  40. #ifdef with_cariolle
  41. #ifdef with_budgets
  42. integer, parameter :: ncar = 2 ! o3 and psc
  43. #endif
  44. #endif
  45. !
  46. ! molar weights of components.
  47. ! These need to be calculated to a variable to which is referred
  48. ! in Tracers.txt
  49. !
  50. real, parameter :: xmh=1.0079
  51. real, parameter :: xmn=14.0067
  52. real, parameter :: xmc=12.01115
  53. real, parameter :: xms=32.064
  54. real, parameter :: xmo=15.9994
  55. real, parameter :: xmna=22.990
  56. real, parameter :: xmcl=35.453
  57. real, parameter :: xmnacl=xmna+xmcl
  58. ! Sea salt is 30.6% sodium (Millero, 2004)
  59. real, parameter :: xmo3=xmo*3
  60. real, parameter :: xmnox=xmn
  61. real, parameter :: xmh2o2=xmo*2.+xmh*2.
  62. real, parameter :: xmch4=xmc+xmh*4.
  63. real, parameter :: xmco=xmc+xmo
  64. real, parameter :: xmhno3=xmh+xmn+xmo*3.
  65. real, parameter :: xmmepe=xmc+xmh*4.+xmo*2.
  66. real, parameter :: xmch2o=xmc+xmh*2.+xmo
  67. real, parameter :: xmno=xmn+xmo
  68. real, parameter :: xmho2=xmh+xmo*2.
  69. real, parameter :: xmch3o2=xmc+2.*xmo+3.*xmh
  70. real, parameter :: xmoh=xmo+xmh
  71. real, parameter :: xmno2=xmn+2.*xmo
  72. real, parameter :: xmno3=xmn+3.*xmo
  73. real, parameter :: xmn2o5=2.*xmn+5.*xmo
  74. real, parameter :: xmhno4=xmn+4.*xmo+xmh
  75. ! FD real, parameter :: xmair=28.94
  76. real, parameter :: xmh2o=xmh*2+xmo
  77. ! xmpar is the results of the CBM4 implementation...calculate as C
  78. real, parameter :: xmpar=xmc
  79. real, parameter :: xmeth=2.*xmc
  80. real, parameter :: xmole=2.*xmc
  81. real, parameter :: xmisop=5.*xmc+8.*xmh
  82. real, parameter :: xmgly=3.*xmc+4.*xmh+2.*xmo
  83. real, parameter :: xmald2=2.*xmc
  84. real, parameter :: xmc2o3=2.*xmc+3.*xmo+3.*xmh
  85. real, parameter :: xmpan=2.*xmc+3.*xmh+3.*xmo+xmn+2.*xmo! ch3co-o2-no2
  86. real, parameter :: xmror=2.*xmc+4.*xmh
  87. real, parameter :: xmrxpar=xmc
  88. real, parameter :: xmrooh=xmc+3.*xmh+2*xmo
  89. real, parameter :: xmorgntr=xmn+3.*xmh+xmc+3*xmo ! JEW CH3ONO2
  90. real, parameter :: xmxo2=2.*xmo+xmc
  91. real, parameter :: xmxo2n=2.*xmo+xmc
  92. real, parameter :: xmbc=xmc
  93. real, parameter :: xmpom=xmair
  94. !EV needed for M7
  95. real, parameter :: xmh2so4=2.*xmh+xms+4.*xmo
  96. real, parameter :: xmdust=xmair
  97. real, parameter :: xmnumb=xmair
  98. ! attention xmso2: conversion emissions done when added...
  99. real, parameter :: xmso2=xms+2.*xmo
  100. real, parameter :: xmdms=xms+2*xmc+6*xmh
  101. ! attention xmnh3: conversion emissions when added...
  102. real, parameter :: xmnh3=xmn+3.*xmh
  103. ! attention: conversion emissions when added...
  104. real, parameter :: xmnh4=xmn+4.*xmh
  105. real, parameter :: xmmsa=xms+xmc+3*xmo+4*xmh
  106. real, parameter :: xmnh2=xmn+xmh*2.
  107. real, parameter :: xmso4=xms+4.*xmo
  108. real, parameter :: xmno3_a=xmn+xmo*3
  109. real, parameter :: xmrn222=222.
  110. real, parameter :: xmpb210=210.
  111. ! this is a dummy molecular mass
  112. real, parameter :: xmnmv=999.
  113. ! The following lines will be in the include file
  114. #ifdef with_m7
  115. include 'm7_chem_param.inc'
  116. #else
  117. include 'chem_param.inc'
  118. #endif
  119. !
  120. integer, parameter :: maxtrace = ntrace + 4
  121. ! Half-life in days
  122. real, dimension(maxtrace), parameter :: half_life = 999999999.
  123. !
  124. ! definition of the chemistry: #reactions, order of species, etc.
  125. ! parameters needed for chemistry and rate constants
  126. !
  127. ! densities (kg/m3) used in emission and/or optics routines
  128. real, parameter :: density_ref = 1800.0 ! for 'reference' density calculations
  129. #ifdef with_m7
  130. real, parameter :: ss_density = dnacl * 1.e3
  131. real, parameter :: dust_density = ddust * 1.e3
  132. real, parameter :: carbon_density = dbc * 1.e3
  133. real, parameter :: pom_density = doc * 1.e3 ! Note that doc actually is the density of POM not OC
  134. ! H2-SO4 particle density:
  135. real, parameter :: so4_density = dh2so4 * 1.e3
  136. real, parameter :: h2so4_factor = xmh2so4 / xmso4
  137. ! Ammonium-nitrate particle density used in the optics routine:
  138. ! Value based on Lowenthal et al. (Atmos. Environ., 2000) (see also De Meij et al., ACP, 2006).
  139. !real, parameter :: nh4no3_density = 1700.
  140. real, parameter :: nh4no3_density = 1.73 * 1.e3
  141. real, parameter :: nh4no3_factor = (xmnh4+xmno3)/xmno3
  142. real, parameter :: msa_density = 1.48 * 1.e3
  143. ! not used anymore (previously used for Whitby distributions):
  144. !real, parameter :: sigma_whitby = 2.0
  145. !real, parameter :: radius_whitby = 0.034e-6
  146. !real, parameter :: radius_bc = 0.034e-6
  147. ! real, parameter :: nh4so4_density = 1760.
  148. ! Geometric mean dry radii for sea salt emissions.
  149. ! These values have been updated
  150. ! following Vignati et al. (Atmos. Environ., 2010)
  151. ! For further explanations, see emission_ss.F90.
  152. !real, parameter :: radius_ssa = 0.0794e-6
  153. !real, parameter :: radius_ssc = 0.63e-6
  154. real, parameter :: radius_ssa = 0.09e-6 ! accumulation mode
  155. real, parameter :: radius_ssc = 0.794e-6 ! coarse mode
  156. ! not used anymore:
  157. !real, parameter :: rad_soa = 0.01e-6 ! soa average radius
  158. ! assuming 3nm particle formation and growth to
  159. ! that size in half an hour
  160. ! Geometric mean radii of primary carbonaceous and sulfate emissions
  161. ! based on AeroCom-I recommendations (Dentener et al., ACP, 2006).
  162. ! The corresponding values for the M7 modes are given by Stier et al. (ACP, 2005).
  163. ! The same values have also been adopted in GLOMAP (Mann et al., 2010).
  164. !
  165. ! Biofuel emissions should have similar characteristics as biomass burning emissions.
  166. ! However, as biofuel emissions are not separately provided
  167. ! they are treated as fossil fuel emissions.
  168. ! This also implies that changes in size characteristics
  169. ! since pre-industrial times (Dentener et al., 2006)
  170. ! are only partially accounted for.
  171. !
  172. ! Mean radii for carbonaceous aerosol emissions from Dentener et al.,
  173. ! corresponding to sigma = 1.8:
  174. !real, parameter :: rad_emi_ff = 0.015e-6 ! fossil/biofuel emission radius
  175. !real, parameter :: rad_emi_vg = 0.04e-6 ! vegetation fires emission radius
  176. ! Corresponding values for sigma = 1.59 used in M7:
  177. real, parameter :: rad_emi_ff = cmr_ff ! fossil/biofuel emission radius
  178. real, parameter :: rad_emi_vg = cmr_bb ! vegetation fires emission radius
  179. ! Since cmr_bb lies in the accumulation mode,
  180. ! a reduced value has to be used for the insoluble fraction
  181. ! One could use 0.04e-6 or set it to cmr_ff as done by Stier et al.:
  182. real, parameter :: rad_emi_vg_insol = cmr_ff
  183. ! Mean radii for sulfate aerosol emissions adapted to the M7 modes:
  184. !real, parameter :: rad_so4_ind = 0.075e-6 ! industrial emission radius (not used)
  185. real, parameter :: rad_so4_ait = cmr_sk ! aitken mode radius
  186. real, parameter :: rad_so4_acc = cmr_sa ! accumulation mode radius
  187. real, parameter :: rad_so4_coa = cmr_sc ! coarse mode radius
  188. !
  189. real, parameter :: frac_pom_sol_vg = zbb_wsoc_perc ! fraction of soluble pom emitted from vegetation fires
  190. real, parameter :: frac_pom_sol_ff = 0.65 ! fraction of soluble pom emitted from fossil fuel
  191. ! use same value as for vegetation fires
  192. real, parameter :: frac_soa_sol = zbge_wsoc_perc ! fraction of soluble surrogate SOA emissions
  193. real, parameter :: frac_so4=1.-facso2 ! fraction of so2 emission emitted directly as sulfate
  194. #else
  195. real, parameter :: frac_so4=1.-0.975 ! fraction of so2 emission emitted directly as sulfate
  196. #endif
  197. #ifdef with_m7
  198. real, dimension(nmod), parameter :: sigma_lognormal = (/ 1.59, 1.59, 1.59, 2.00, 1.59, 1.59, 2.00 /)
  199. !
  200. ! mode numbers
  201. !
  202. integer, parameter :: mode_nuc = 1
  203. integer, parameter :: mode_ais = 2
  204. integer, parameter :: mode_acs = 3
  205. integer, parameter :: mode_cos = 4
  206. integer, parameter :: mode_aii = 5
  207. integer, parameter :: mode_aci = 6
  208. integer, parameter :: mode_coi = 7
  209. ! mode_number => mode_start
  210. integer, parameter :: mode_start (nmod) = (/ inus_n, iais_n, iacs_n, icos_n, iaii_n, iaci_n, icoi_n /) ! first tracer in mode
  211. integer, parameter :: mode_end_so4 (nmod) = (/ iso4nus, iso4ais, iso4acs, iso4cos, 0, 0, 0 /)
  212. integer, parameter :: mode_end_bc (nmod) = (/ 0, ibcais, ibcacs, ibccos, ibcaii, 0, 0 /)
  213. integer, parameter :: mode_end_pom (nmod) = (/ 0, ipomais, ipomacs, ipomcos, ipomaii, 0, 0 /)
  214. integer, parameter :: mode_end_ss (nmod) = (/ 0, 0, issacs, isscos, 0, 0, 0 /)
  215. integer, parameter :: mode_end_dust(nmod) = (/ 0, 0, iduacs, iducos, 0, iduaci, iducoi /)
  216. integer, parameter :: mode_nm (nmod) = (/ 1, 3, 5, 5, 2, 1, 1 /) ! # tracers in mode
  217. integer, parameter :: mode_end (nmod) = mode_start + mode_nm ! last tracer in mode
  218. integer, parameter :: mode_tracers(0:5,nmod) = &
  219. reshape( (/ inus_n, iso4nus, 0 , 0, 0, 0 , &
  220. iais_n, iso4ais, ibcais, ipomais, 0, 0, &
  221. iacs_n, iso4acs, ibcacs, ipomacs, issacs, iduacs, &
  222. icos_n, iso4cos, ibccos, ipomcos, isscos, iducos, &
  223. iaii_n, ibcaii, ipomaii, 0, 0, 0, &
  224. iaci_n, iduaci, 0,0,0,0, &
  225. icoi_n, iducoi, 0,0,0,0 /), (/ 6, nmod/) )
  226. #else
  227. ! for gas phase: introduce dummy modes
  228. real, dimension(nmod), parameter :: sigma_lognormal = (/ 1.59 /)
  229. integer, parameter, dimension(nmod) :: mode_start = (/999 /) ! first tracer in mode
  230. integer, parameter, dimension(nmod) :: mode_end = (/999 /) ! last tracer in mode
  231. integer, parameter :: mode_nm(nmod) = (/ 1 /) ! # tracers in mode
  232. integer, parameter :: mode_tracers(0:1,nmod) = &
  233. reshape( (/ 999, 999 /), (/ 2, nmod/) )
  234. #endif
  235. integer, parameter :: iacid = ntrace + 1 !these are used in the 'chemistry'
  236. integer, parameter :: iair = ntrace + 2
  237. integer, parameter :: ih2o = ntrace + 3
  238. integer, parameter :: io2 = ntrace + 4
  239. integer, parameter :: ico2 = -999
  240. !
  241. ! additional fields used in chemistry routine alone
  242. ! (more meteo-like files in units different from #/cm3)
  243. !
  244. integer, parameter :: n_extra = 15
  245. integer, parameter :: i_pres = 1
  246. integer, parameter :: i_temp = 2
  247. integer, parameter :: iairn = 3 !number density = ntrace+2
  248. integer, parameter :: ih2on = 4 !
  249. integer, parameter :: iairm = 5 !air mass in kg
  250. integer, parameter :: ilwc = 6
  251. integer, parameter :: iiwc = 7
  252. integer, parameter :: icc = 8
  253. integer, parameter :: irh = 9 !0-100%
  254. integer, parameter :: iph = 10
  255. integer, parameter :: idz = 11
  256. integer, parameter :: ieno = 12 !nox emissions
  257. integer, parameter :: irinc = 13 !relative increas in aerosol radius
  258. integer, parameter :: iclwc = 14
  259. integer, parameter :: iciwc = 15
  260. ! id list of species, for which standard deviation is wanted (must be transported species)
  261. integer, dimension(nstd), parameter :: istd=(/io3/)
  262. !
  263. !
  264. character(len=8), dimension(nmark),parameter :: marknam= (/'O3S '/)
  265. #ifdef with_cariolle
  266. character(len=8), dimension(ncar), parameter :: carnam = (/'O3C ','PSC '/)
  267. #endif
  268. ! Uptake coefficients for heterogeneous chemistry (Huijnen et al., ACPD13)
  269. ! Uptake on ice and liquid cloud.
  270. ! VH: note: I don't use g_n2o5_l, as it's better to use a temperature dependency (see chem_rates.F90)
  271. real, parameter :: g_n2o5_i=0.02, g_n2o5_l=0.02
  272. real, parameter :: g_ho2_i =0.025, g_ho2_l =0.06
  273. real, parameter :: g_no3_i =1e-5, g_no3_l =1e-5 ! So far no NO3 uptake on cloud?
  274. ! Assumed bulk aerosol uptake efficiency if no M7
  275. ! Note that until now in the original parameterization gam_n2o5 was set to 0.04 in sources_sinks.F90!
  276. real,parameter :: g_n2o5_aer=0.02
  277. real,parameter :: g_no3_aer =0.001
  278. real,parameter :: g_ho2_aer =0.06
  279. #ifdef with_m7
  280. ! Uptake coefficients on aerosol - allowing a variable efficiency per mode.
  281. ! Last entry (nmod+1) allocated for EQSAM aerosols NO3_a and NH4 and for MSA.
  282. ! VH: I do include MSA here, even though it may have a different uptake than for NO3_A and NH4.
  283. ! Also it may largely be covered by SS. Please consider something different if you have any idea.
  284. real, dimension(nmod+1),parameter :: g_n2o5 = (/ 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02 , 0.02 /)
  285. real, dimension(nmod+1),parameter :: g_no3 = (/ 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001/)
  286. real, dimension(nmod+1),parameter :: g_ho2 = (/ 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06 , 0.06 /)
  287. #endif
  288. ! cbm4 split in hydrocarbons...
  289. integer, parameter :: ncb4=6
  290. integer, parameter, dimension(ncb4) :: nmhc= &
  291. (/ipar,ieth,iole,iald2,imgly,ich2o/)
  292. real, parameter, dimension(ncb4) :: xmcb4= &
  293. (/xmpar,xmeth,xmole,xmald2,xmgly,xmch2o/)
  294. ! fscale(ntrace) scaling factor for conversion of mixing ratios in
  295. ! kg tracer per kg air to practical mixing ratio units (e.g. ppm)
  296. ! In this version: ratio of molecular weight of tracer to that of air
  297. real,dimension(ntrace),parameter :: fscale = xmair/ra(:)
  298. ! uscale is for user-scale. This is a scale factor used in
  299. ! user_output_column and user_output_mix.
  300. real, dimension(ntrace), parameter :: uscale = 1.
  301. real, dimension(ntracet,ntemp) :: henry ! heterogeneous removal rates
  302. ! ********************************************************************
  303. ! dry deposition
  304. ! ********************************************************************
  305. ! number of tracers on which dry depositions should be applied:
  306. integer, parameter :: ndep = 14
  307. ! tracer indices on which dry depositions should be applied:
  308. ! note: SO4 dry deposition refers to aerosol dry deposition
  309. ! This should only be applied in gas-phase chemistry version (see ebischeme.F90)
  310. integer, parameter :: idep(ndep) = &
  311. (/ io3 , ihno3, ino , ino2 , iso2, iso4, &
  312. ih2o2, iald2, ich2o, ich3o2h, inh3, &
  313. ipan , ico , ihno4 /)
  314. real, parameter :: ddep_diffrb(ndep)= &
  315. (/ diffrb_o3 , diffrb_hno3, diffrb_no , diffrb_no2 , diffrb_so2, diffrb_so4,&
  316. diffrb_h2o2, diffrb_ald2, diffrb_ch2o, diffrb_ch3o2h, diffrb_nh3, &
  317. diffrb_pan , diffrb_co , diffrb_hno4 /)
  318. real, parameter :: ddep_rsoil(ndep) = &
  319. (/ rsoil_o3 , rsoil_hno3, rsoil_no , rsoil_no2 , rsoil_so2, rsoil_so4, &
  320. rsoil_h2o2, rsoil_ald2, rsoil_ch2o, rsoil_ch3o2h, rsoil_nh3, &
  321. rsoil_pan , rsoil_co , rsoil_hno4 /)
  322. real, parameter :: ddep_rwat(ndep) = &
  323. (/ rwat_o3 , rwat_hno3, rwat_no , rwat_no2 , rwat_so2, rwat_so4,&
  324. rwat_h2o2, rwat_ald2, rwat_ch2o, rwat_ch3o2h, rwat_nh3, &
  325. rwat_pan , rwat_co , rwat_hno4 /)
  326. real, parameter :: ddep_rws(ndep) = &
  327. (/ rws_o3 , rws_hno3, rws_no , rws_no2 , rws_so2, rws_so4,&
  328. rws_h2o2, rws_ald2, rws_ch2o, rws_ch3o2h, rws_nh3, &
  329. rws_pan , rws_co , rws_hno4 /)
  330. real, parameter :: ddep_rsnow(ndep) = &
  331. (/ rsnow_o3 , rsnow_hno3, rsnow_no , rsnow_no2 , rsnow_so2, rsnow_so4, &
  332. rsnow_h2o2, rsnow_ald2, rsnow_ch2o, rsnow_ch3o2h, rsnow_nh3, &
  333. rsnow_pan , rsnow_co , rsnow_hno4 /)
  334. real, parameter :: ddep_rmes(ndep) = &
  335. (/ rmes_o3 , rmes_hno3, rmes_no , rmes_no2 , rmes_so2, rmes_so4, &
  336. rmes_h2o2, rmes_ald2, rmes_ch2o, rmes_ch3o2h, rmes_nh3, &
  337. rmes_pan , rmes_co , rmes_hno4 /)
  338. real, parameter :: ddep_rcut(ndep) = &
  339. (/ rcut_o3 , rcut_hno3, rcut_no , rcut_no2 , rcut_so2, rcut_so4, &
  340. rcut_h2o2, rcut_ald2, rcut_ch2o, rcut_ch3o2h, rcut_nh3, &
  341. rcut_pan , rcut_co , rcut_hno4 /)
  342. real, parameter :: ddep_diffcf(ndep) = &
  343. (/ diffcf_o3 , diffcf_hno3, diffcf_no , diffcf_no2 , diffcf_so2, diffcf_so4, &
  344. diffcf_h2o2, diffcf_ald2, diffcf_ch2o, diffcf_ch3o2h, diffcf_nh3, &
  345. diffcf_pan , diffcf_co , diffcf_hno4 /)
  346. ! some vd fields are copies:
  347. integer, parameter :: vd_ncopy = 7
  348. integer, parameter :: vd_copy_itarget(vd_ncopy) = (/ irooh , iorgntr, in2o5, ino3, io3s, imgly, ino3_a/)
  349. integer, parameter :: vd_copy_isource(vd_ncopy) = (/ ich3o2h, ipan , ihno3, ino2, io3, ich2o , iso4/)
  350. ! number of aerosol bins used for deposition:
  351. integer, parameter :: nrdep = 23
  352. ! aerosol radii used for each bin:
  353. real, parameter :: lur(nrdep) = &
  354. (/ 0.001, 0.01, 0.05, 0.1, 0.3, &
  355. 0.5 , 0.7 , 0.8 , 0.9, 1.0, &
  356. 1.2 , 1.5 , 2.0 , 3.0, 4.0, &
  357. 5.0 , 6.0 , 8.0 , 10.0, 15.0, &
  358. 20.0 , 50.0 , 100.0 /)
  359. ! ********************************************************************
  360. ! wet deposition
  361. ! ********************************************************************
  362. ! nscav : selected species for scavenging
  363. ! nscav_index : index for scavenging:
  364. ! nscav_type : type of scavenging:
  365. ! 0 no scavenging
  366. ! 1 scavenging 100 % solubility assumed
  367. ! 2 scavenging henry solubility assumed
  368. ! 3 scavenging, aerosol removal assumed
  369. ! 4 scavenging, special case for SO2 with aq phase diss.
  370. !
  371. #ifdef with_m7
  372. integer,parameter :: nscav=40
  373. #else
  374. integer,parameter :: nscav=15
  375. #endif
  376. integer,parameter,dimension(nscav) :: &
  377. nscav_index = (/ih2o2, ihno3, ich3o2h, ich2o, iald2 , &
  378. irooh, iorgntr, iso2, inh3, &
  379. iso4, inh4, imsa, &
  380. ino3_a, imgly, ipb210 &
  381. #ifdef with_m7
  382. ,inus_n, iais_n, iacs_n, icos_n, iaii_n, iaci_n, icoi_n, &
  383. iso4nus, iso4ais, iso4acs, iso4cos, &
  384. ibcais, ibcacs, ibccos, ibcaii, &
  385. ipomais, ipomacs, ipomcos, ipomaii, &
  386. issacs, isscos, &
  387. iduacs, iducos, iduaci, iducoi &
  388. #endif
  389. /)
  390. ! nscav_type = 5 : nu mode soluble aerosol
  391. ! nscav_type = 6 : ai mode soluble aerosol
  392. ! nscav_type = 7 : ac mode soluble aerosol
  393. ! nscav_type = 8 : co mode soluble aerosol
  394. ! nscav_type = 9 : ai mode insoluble aerosol
  395. ! nscav_type = 10 : ac mode insoluble aerosol
  396. ! nscav_type = 11 : co mode insoluble aerosol
  397. #ifdef with_m7
  398. ! in m7-version so4 is treated as gas-phase sulphuric acid (H2SO4) (scav-type 2)
  399. integer, dimension(nscav),parameter :: &
  400. nscav_type = (/ 2, 1, 2, 2, 2, &
  401. 2, 2, 4, 1, &
  402. 2, 3, 3, &
  403. 3, 2, 3, &
  404. 5, 6, 7, 8, 9, 10, 11, & ! particle number
  405. 5, 6, 7, 8, & ! sulphate mass
  406. 6, 7, 8, 9, & ! BC mass
  407. 6, 7, 8, 9, & ! POM mass
  408. 7, 8, & ! SS mass
  409. 7, 8, 10, 11 /) ! DUST mass
  410. #else
  411. ! in gas-phase version so4 represents the sulphate aerosol. (scav-type 3)
  412. integer, dimension(nscav),parameter :: &
  413. nscav_type = (/ 2, 1, 2, 2, 2, &
  414. 2, 2, 4, 1, &
  415. 3, 3, 3, &
  416. 3, 2, 3 /)
  417. #endif
  418. end module chem_param