m7_equil.F90 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302
  1. #include "tm5.inc"
  2. SUBROUTINE m7_equil (kproma, kbdim, klev, prelhum, paerml, paernl, &
  3. pm6rp, pm6dry, phplus, pww, prhop, ptp1 )
  4. !
  5. !**** *m7_equil* calculates the ambient radii of accumulation
  6. ! and coarse mode particles in presence of sea salt
  7. !
  8. !
  9. ! Authors:
  10. ! --------
  11. ! E. Vignati, JRC/EI (original source) 01/2000
  12. ! P. Stier, MPI (f90-version, changes, comments) 2001
  13. !
  14. ! Purpose:
  15. ! --------
  16. ! This routine calculates the equilibrium radius of sea salt
  17. ! particles, and of sea salt particles mixed with sulphate for
  18. ! accumulation and coarse modes.
  19. !
  20. ! Method:
  21. ! -------
  22. ! from the mass of sea salt and sulphate (in ug/m3),
  23. !
  24. !
  25. !**Interface:
  26. ! ----------
  27. ! *m7_equil* is called from *m7*
  28. !
  29. ! Externals:
  30. ! ----------
  31. ! none
  32. !
  33. ! References:
  34. ! -----------
  35. ! Jacobson, M.Z., Tabazadeh, A., Turco, R.P., (1996). Simulating
  36. ! equilibrium within aerosols and nonequilibrium between gases
  37. ! and aerosols.
  38. ! Tang, I.N., (1997). Thermodynamic and optical properties of
  39. ! mixed-salt aerosols of atmospheric importance.
  40. !
  41. !@@@ ToDo: Rewrite with identifiers of ions and ion pairs!!!!!
  42. !
  43. !--- Local variables: to be completed
  44. USE mo_aero_m7, ONLY: naermod, nsol, nss, nmod, &
  45. wnacl, wna2so4, wnahso4, wh2so4, &
  46. ddust, dbc, doc, dnacl, &
  47. dna2so4, dnahso4, dh2so4, dh2o, &
  48. ram2cmr, pi, r_kcal, crh, &
  49. avo
  50. IMPLICIT NONE
  51. !
  52. !--- Parameter list:
  53. !
  54. ! phplus = molality of H+ [mol/kg(water)]
  55. !
  56. !
  57. !--- Local variables:
  58. !
  59. ! zna(:,:,i) = sodium concentration [ug m-3]
  60. ! i=1: accumulation mode; i=2: coarse mode
  61. ! zcl(:,:,i) = chlorine concentration [ug m-3]
  62. ! i=1: accumulation mode; i=2: coarse mode
  63. !
  64. ! !@@@ To be completed!
  65. !
  66. ! Indices for the arrays zmm and zmmr:
  67. ! -----------------------------------
  68. ! | ions ion pair |
  69. ! | (mole m-3) (mole m-3) |
  70. ! | i zmm(i) zmmr(i) |
  71. ! | 1 Na+ NaCl |
  72. ! | 2 Cl- NaHSO4 |
  73. ! | 3 SO4-- Na2SO4 |
  74. ! | 4 HSO4- H2-SO4 |
  75. ! | 5 H+ |
  76. ! -----------------------------------
  77. !--- Parameters:
  78. INTEGER :: kproma, kbdim, klev
  79. REAL :: prelhum(kbdim,klev), ptp1(kbdim,klev)
  80. REAL :: paerml(kbdim,klev,naermod), paernl(kbdim,klev,nmod), &
  81. pm6rp(kbdim,klev,nmod), pm6dry(kbdim,klev,nsol), &
  82. prhop(kbdim,klev,nmod), pww(kbdim,klev,nmod)
  83. REAL :: phplus(kbdim,klev,nss)
  84. !--- Local variables:
  85. INTEGER :: i, jl, jk, jmod
  86. REAL :: zaw, zvolw, zdryvol, zdrymass, &
  87. zkw, zdryvol_mean, zambvol_mean
  88. REAL :: zmm(5), zmmr(5), zmol(5), zmo(4), &
  89. zmmt(4)
  90. !
  91. !
  92. DO 50 jmod=1,nss
  93. DO 60 jk=1,klev
  94. DO 70 jl=1,kproma
  95. IF ((paerml(jl,jk,jmod+12) > 1.E-15) .AND. (paernl(jl,jk,jmod+2)>1.E-10)) THEN
  96. !
  97. !--- 1) Dry Calculations: --------------------------------------------------
  98. !
  99. !--- 1.1) Calculate initial concentrations of the compounds in mole/m+3:
  100. !
  101. !--- Na, Cl:
  102. !
  103. zmm(1)=paerml(jl,jk,jmod+12)*1.E-6 / wnacl ! n(Na) [mole m-3]
  104. zmm(2)=paerml(jl,jk,jmod+12)*1.E-6 / wnacl ! n(Cl) [mole m-3]
  105. ! [ g m-3 ] / [g mole-1] = [mole m-3]
  106. !
  107. !--- SO4--:
  108. !
  109. zmm(3)=paerml(jl,jk,jmod+2) *1.E+6 / avo ! n(H2SO4) [mole m-3]
  110. ! [ m-3 ] / [mole-1] = [mole m-3]
  111. !
  112. !--- HSO4-:
  113. !
  114. zmm(4)=0. ! n(HSO4) [mole m-3]
  115. !
  116. !--- 1.2) Calculation of the concentration of the different species:
  117. ! The ions are supposed to be arranged such that
  118. ! sodium is associated to sulphate first in
  119. ! Na2SO4, the remaining sodium is associated to Cl
  120. ! in form of NaCl.
  121. !
  122. zmmt(1)=zmm(1) ! n(Na)
  123. zmmt(3)=zmm(3) ! n(SO4)
  124. !
  125. zmmr(3)=MIN(zmmt(1)/2. , zmmt(3)) ! n(Na2SO4)
  126. zmmt(1)=zmmt(1)-2*zmmr(3) ! Remaining n(Na) after association
  127. ! with Na2SO4: n(Na)=n(Na)-2*n(Na2SO4)
  128. !
  129. zmmr(1)=MIN(zmm(2),zmmt(1)) ! n(NaCl)
  130. !
  131. zmm(2)=zmmr(1) ! n(Cl) bound in NaCl, the rest is
  132. ! assumed to evaporate in presence of SO4
  133. !
  134. zmmr(2)=0. ! n(NaHSO4)
  135. !
  136. zmmr(4)=zmm(3)-zmmr(2)-zmmr(3) ! n(H2-SO4)(t)=n(H2SO4)(t0)-n(NaHSO4)-n(Na2SO4)
  137. ! ! as n(H2SO4)(t0)=n(SO4--)(t0)
  138. !
  139. !--- 1.3) Total aerosol dry volume [cm3/m3]:
  140. !
  141. zdryvol= zmmr(1)*wnacl/dnacl + &
  142. zmmr(2)*wnahso4/dnahso4 + &
  143. zmmr(3)*wna2so4/dna2so4 + &
  144. zmmr(4)*wh2so4/dh2so4 + &
  145. paerml(jl,jk,jmod+14)*1.e-6/ddust + &
  146. paerml(jl,jk,jmod+5) *1.e-6/dbc + &
  147. (paerml(jl,jk,jmod+9)+paerml(jl,jk,jmod+20)) *1.e-6/doc
  148. !
  149. !--- 1.4) Mean aerosol dry volume [cm+3]:
  150. zdryvol_mean = zdryvol / (paernl(jl,jk,jmod+2)*1.E6)
  151. ! [cm+3] = [cm+3/m+3] / [ m-3 ]
  152. !
  153. !--- 1.5) Dry radius [cm]:
  154. !
  155. pm6dry(jl,jk,jmod+2)=((3./(4.*pi))*zdryvol_mean)**(1./3.) * ram2cmr(jmod+2)
  156. !
  157. !--- 1.6) Total aerosol dry mass [gr/m3]:
  158. !
  159. zdrymass= zmmr(1)*wnacl + &
  160. zmmr(2)*wnahso4 + &
  161. zmmr(3)*wna2so4 + &
  162. zmmr(4)*wh2so4 + &
  163. paerml(jl,jk,jmod+14)*1.e-6 + & ! Dust
  164. paerml(jl,jk,jmod+5)*1.e-6 + & ! Black Carbon
  165. (paerml(jl,jk,jmod+9)+paerml(jl,jk,jmod+20))*1.e-6 ! Organic + Secondary Organic Carbon
  166. !
  167. !
  168. !--- 2) Wet calculations: --------------------------------------------------
  169. !
  170. !--- Set threshold for relative humidity:
  171. ! If RH is smaller than the Critical Relative Humidity
  172. ! (currently crh=0.45) the equilibrium radius is set to the dry radius:
  173. IF (prelhum(jl,jk) < crh) THEN
  174. !
  175. phplus(jl,jk,jmod) = 0.
  176. !
  177. pww(jl,jk,jmod+2) = 0.
  178. !
  179. pm6rp(jl,jk,jmod+2) = pm6dry(jl,jk,jmod+2)
  180. !
  181. prhop(jl,jk,jmod+2) = zdrymass/zdryvol
  182. !
  183. ELSE
  184. !
  185. !--- 2.1) Calculate thermodynamic properties under ambient conditions
  186. !
  187. !--- 2.1.1) Water activity:
  188. !
  189. zaw=prelhum(jl,jk)
  190. !
  191. !--- 2.1.2) Molality as function of the water activity:
  192. ! Currently sulfate is assumed to be fully dissociated,
  193. ! i.e. zmmr(2)=0. and zmo(2) is not calculated.
  194. !
  195. ! Changed reference to Jacobson et al. (1996):
  196. !
  197. !--- NaCl:
  198. zmo(1)=(-1.918004E2+2.001540E3*zaw-8.557205E3*zaw**2 &
  199. +1.987670E4*zaw**3-2.717192E4*zaw**4+2.187103E4*zaw**5 &
  200. -9.591577E3*zaw**6+1.763672E3*zaw**7 )**2
  201. !--- NaHSO4:
  202. zmo(2)=(+4.662777E0-1.128472E1*zaw+7.049464E1*zaw**2 &
  203. -2.788050E2*zaw**3+6.103105E2*zaw**4-7.409417E2*zaw**5 &
  204. +4.614577E2*zaw**6-1.150735E2*zaw**7 )**2
  205. !--- Na2SO4:
  206. zmo(3)=(-3.295311E3+3.188349E4*zaw-1.305168E5*zaw**2 &
  207. +2.935608E5*zaw**3-3.920423E5*zaw**4+3.109519E5*zaw**5 &
  208. -1.356439E5*zaw**6+2.510249E4*zaw**7 )**2
  209. !--- H2-SO4:
  210. zmo(4)=(+5.611895-1.387446E1*zaw+1.750682E1*zaw**2 &
  211. +7.138146E1*zaw**3-3.109173E2*zaw**4+4.662288E2*zaw**5 &
  212. -3.128612E2*zaw**6+7.76097E1*zaw**7 )**2
  213. !
  214. !
  215. !--- 2.2) Calculation of the water content in kg water/m3 air:
  216. ! (zmmr[mole/m3(air)]/zmo[mole/kg(water)] =zww[kg(water)/m3(air)]
  217. !
  218. pww(jl,jk,jmod+2)=zmmr(1)/zmo(1)+zmmr(2)/zmo(2)+zmmr(3)/zmo(3)+zmmr(4)/zmo(4)
  219. !
  220. !--- 2.3) Calculate the molality of the ions
  221. !
  222. !--- 2.3.1) For Na+, Cl-, SO4--, HSO4- :
  223. !
  224. DO i=1,4
  225. zmol(i)=zmm(i)/pww(jl,jk,jmod+2)
  226. END DO
  227. !
  228. !--- 2.3.2) For h+ :
  229. !
  230. ! [H+] = -[Na+] + [Cl-] + [OH-] + 2[SO4--] +[HSO4-]
  231. !
  232. ! with [OH-] = kw/[H+]
  233. !
  234. !--- Calculate autodissociation constant (kw) for water:
  235. ! (Seinfeld &Pandis (1998): Eq. (6.5) + Table 6.5)
  236. zkw=1.0E-14*exp( (13.35/r_kcal) * (1./298. - 1./ptp1(jl,jk)) )
  237. !--- Calculate molality of H+:
  238. zmol(5)=( (-zmol(1)+zmol(2)+2.*zmol(3)+zmol(4)) + &
  239. SQRT( (zmol(1)-zmol(2)-2.*zmol(3)-zmol(4))**2 + 4.*zkw ) ) / 2.
  240. !
  241. !
  242. zmm(5)=zmol(5)*pww(jl,jk,jmod+2)
  243. !
  244. phplus(jl,jk,jmod)=zmol(5)
  245. !
  246. !
  247. !--- 2.4) Calculation of the wet radius
  248. !
  249. !--- 2.4.1) Total water volume [cm3/m3]:
  250. !
  251. zvolw=pww(jl,jk,jmod+2)/(dh2o*1.E-3) ![cm3/m3]=[kg/m3]/([g/cm3]*[1.E-3 kg/g])
  252. !
  253. !
  254. !--- 2.4.2) Mean aerosol ambient volume:
  255. zambvol_mean = (zdryvol+zvolw) / (paernl(jl,jk,jmod+2)*1.E6)
  256. ! [cm+3] = [ cm+3/m+3 ] / [ m-3 ]
  257. !--- 2.4.3) Equilibrium wet count mean radius [cm]:
  258. !
  259. pm6rp(jl,jk,jmod+2)=((3./(4.*pi))*zambvol_mean)**(1./3.) * ram2cmr(jmod+2)
  260. !
  261. !--- 2.4.4) Calculation of the particle density (g cm-3):
  262. !
  263. prhop(jl,jk,jmod+2)=(zdrymass+zvolw*dh2o)/(zvolw+zdryvol)
  264. !
  265. END IF !(prelhum(jl,jk) < crh)
  266. END IF !((paerml(jl,jk,jmod+12) > 1.E-15) .AND. (paernl(jl,jk,jmod+2)>1.E-10))
  267. 70 END DO
  268. 60 END DO
  269. 50 END DO
  270. !
  271. END SUBROUTINE m7_equil