chem_param.F90 22 KB

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