chem_param.F90 23 KB

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