m7_equimix.F90 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239
  1. #include "tm5.inc"
  2. SUBROUTINE m7_equimix(kproma, kbdim, klev, &
  3. papp1, pttn, ptp1, &
  4. prelhum, pm6rp, pm6dry, &
  5. prhop, pww, paernl )
  6. !
  7. ! *m7_equimix* calculates the ambient radii of the particles with
  8. ! sulphate, b/o carbon and dust.
  9. !
  10. ! Authors:
  11. ! --------
  12. ! J. Wilson and E. Vignati, JRC (original source) 05/2000
  13. ! P. Stier, MPI (f90-version, changes, comments) 2001
  14. !
  15. ! Purpose:
  16. ! --------
  17. ! This routine calculates the ambient radii for mixed particles without
  18. ! sea salt with mass of ttn molecules, converts them to count mean radii and
  19. ! stores them in the array with address pm6rp.
  20. ! It additionally calculates the ambient particle density.
  21. !
  22. ! Method:
  23. ! -------
  24. ! The calculations of the ambient particle properties are based on
  25. ! parameterisations of the mass of sulfate and density derived
  26. ! by Julian Wilson from a regression analysis of results of solving
  27. ! the generalised Kelvin equation using (F. J. Zeleznik, J. Phys. Chem.
  28. ! Ref. Data 20, 1157, 1991), for an H2SO4-H2O mixture, in the
  29. ! following parameter ranges:
  30. ! 1e2 < pttn < 1E11 [molecules]
  31. ! 0.2 < prelhum < 0.9 [1]
  32. ! 240 < ptp1 < 330 [K]
  33. ! 10000 < papp1 < 100000 [Pa]
  34. !
  35. ! Due to the limitations of the parametrisation, the ambient temperature
  36. ! is restricted to a minimum of 240 K within this subroutine.
  37. !
  38. ! For this application to mixed aerosols with an insoluble core we
  39. ! assume the H2O uptake by the particle to be that of a pure
  40. ! H2SO4 / H2O particle containing the H2SO4 mass of the mixed aerosol.
  41. !
  42. ! Interface:
  43. ! ----------
  44. ! *m7_equimix* is called from *m7*
  45. !
  46. ! Externals:
  47. ! ----------
  48. ! none
  49. !
  50. USE mo_aero_m7, ONLY: naermod, nmod, nsol, isoans, &
  51. ibcks, iocks, isoaks, issas, &
  52. ibcas, iocas, isoaas, iduas, &
  53. isscs, ibccs, ioccs, isoacs,&
  54. iducs, &
  55. wvb, gmb, avo, wh2so4,&
  56. pi, ram2cmr, &
  57. dbc, doc, ddust, dh2so4,&
  58. dh2o, isoans
  59. IMPLICIT NONE
  60. !
  61. ! pttn = average mass for single compound in each mode
  62. ! [in molec. for sulphate and in ug for bc, oc, soa, ss, and dust]
  63. ! pm6rp = count mean radius under ambient conditions
  64. ! pm6dry = count mean radius under dry conditions
  65. ! paernl = aerosol number for each mode [cm-3]
  66. ! pww = aerosol water content for each mode [kg(water) m-3(air)]
  67. ! zwso4 = percentage by mass of sulfate in a H2O-H2SO4 particle
  68. ! containing pttn molecules of sulfate under ambient conditions
  69. ! zvso4 = volume of pttn molecules of sulfate [cm3]
  70. ! zmso4 = mass of pttn molecules of sulfate [g]
  71. ! zdso4h2o = density of sulfate-h2o fraction of a particle with average
  72. ! mass [g.cm-3]
  73. ! zmso4h2o = mass of sulfate-h2o fraction of a particle with average mass [g]
  74. ! zvso4h2o = volume of sulfate-h2o fraction of a particle with average
  75. ! mass [cm3]
  76. ! zinsvol = total volume of insoluble compounds in a single particle of
  77. ! average mass [cm3]
  78. ! zinsmass = total mass of insoluble compounds in a single
  79. ! particle of average mass [cm3]
  80. INTEGER :: kproma, kbdim, klev
  81. REAL :: papp1(kbdim,klev), ptp1(kbdim,klev), &
  82. prelhum(kbdim,klev)
  83. REAL :: pttn(kbdim,klev,naermod), prhop(kbdim,klev,nmod), &
  84. pm6dry(kbdim,klev,nsol), pm6rp(kbdim,klev,nmod), &
  85. pww(kbdim,klev,nmod), paernl(kbdim,klev,nmod)
  86. !
  87. ! Local variables:
  88. !
  89. INTEGER :: jk, jl, jmod
  90. REAL :: zseasalt, zinsvol, zinsmas, &
  91. zwso4, zvso4, zmso4, &
  92. zvso4h2o, zmso4h2o, zdso4h2o, &
  93. zapp1, zrh, ztk
  94. REAL :: zlnm2, zln3, zln32, ztk2, &
  95. zlnm, zss2
  96. !
  97. !
  98. !CDIR unroll=5
  99. DO 100 jmod=1,nsol
  100. DO 90 jk=1,klev
  101. DO 80 jl=1,kproma
  102. !--- 1) Split particle quantities into soluble (sea salt) and --------------
  103. ! non soluble (organic carbon + black carbon + dust) parts:
  104. ! (N.B. densities are assumed independent of temperature & pressure)
  105. SELECT CASE (jmod)
  106. CASE (1)
  107. zseasalt=0.
  108. zinsvol=1.e-6*(pttn(jl,jk,isoans)/doc)
  109. zinsmas=1.e-6*(pttn(jl,jk,isoans))
  110. CASE (2)
  111. zseasalt=0.
  112. zinsvol=1.e-6*(pttn(jl,jk,ibcks)/dbc+(pttn(jl,jk,iocks)+pttn(jl,jk,isoaks))/doc)
  113. zinsmas=1.e-6*(pttn(jl,jk,ibcks)+pttn(jl,jk,iocks)+pttn(jl,jk,isoaks))
  114. CASE (3)
  115. zseasalt=pttn(jl,jk,issas)
  116. zinsvol=1.e-6*(pttn(jl,jk,ibcas)/dbc+(pttn(jl,jk,iocas)+pttn(jl,jk,isoaas))/doc+ &
  117. pttn(jl,jk,iduas)/ddust)
  118. zinsmas=1.e-6*(pttn(jl,jk,ibcas)+pttn(jl,jk,iocas)+ &
  119. pttn(jl,jk,isoaas)+pttn(jl,jk,iduas))
  120. CASE (4)
  121. zseasalt=pttn(jl,jk,isscs)
  122. zinsvol=1.e-6*(pttn(jl,jk,ibccs)/dbc+(pttn(jl,jk,ioccs)+pttn(jl,jk,isoacs))/doc+ &
  123. pttn(jl,jk,iducs)/ddust)
  124. zinsmas=1.e-6*(pttn(jl,jk,ibccs)+pttn(jl,jk,ioccs)+ &
  125. pttn(jl,jk,isoacs)+pttn(jl,jk,iducs))
  126. END SELECT
  127. !--- 2) Calculation of the particle properties in the absense of sea salt: --
  128. !
  129. IF (pttn(jl,jk,jmod) > 0.0 .AND. zinsvol > 0.0 .AND. zseasalt < 1.E-15 ) THEN
  130. !--- 2.1) Calculation of the ambient particle properties: ----------------
  131. !
  132. !--- Constrain ambient temperature and relative humidity to
  133. ! conditions for which the parametrisation of the liquid
  134. ! water content works:
  135. !
  136. ! Temperature:
  137. ztk = ptp1(jl,jk)
  138. ztk = MAX(ztk , 240.)
  139. ! Relative Humidity:
  140. zrh = prelhum(jl,jk)
  141. zrh = MAX(zrh , 0.05)
  142. zrh = MIN(zrh , 0.90)
  143. !--- Assign auxiliary variables:
  144. zapp1=papp1(jl,jk)
  145. zlnm = LOG(pttn(jl,jk,jmod))
  146. zlnm2 = zlnm*zlnm
  147. zss2 = zrh**2
  148. ztk2 = ztk*ztk
  149. zln3 = zlnm/3.0
  150. zln32 = zln3*zln3
  151. !--- Percentage by weight of sulfate in the particle [%]:
  152. ! (Here we ignore any insoluble mass.)
  153. zwso4 = wvb(1) + wvb(2)*zlnm + wvb(3)*zrh*zlnm + wvb(4)*ztk*zlnm + &
  154. wvb(5)*zrh/ztk + wvb(6)*zlnm2*zrh + wvb(7)*zlnm2*ztk + &
  155. wvb(8)*zlnm*zss2 + wvb(9)*zlnm*ztk2 + wvb(10)*zlnm2*zss2 + &
  156. wvb(11)*zlnm2*ztk2 + wvb(12)*zss2/ztk2 + wvb(13)*zlnm2 + &
  157. wvb(14)*zlnm2*zlnm + wvb(15)*zlnm2*zlnm2 + &
  158. wvb(16)*zss2*zrh/(ztk2*ztk) + wvb(17)*LOG(zrh*ztk/zapp1)
  159. !--- Dry mass of sulfate in an average particle [g]:
  160. zmso4 = pttn(jl,jk,jmod)*wh2so4/avo
  161. !--- Dry volume of sulfate in an average particle [cm3]:
  162. ! Any temperature or pressure dependency of the
  163. ! sulfate density is ingored.
  164. zvso4 = zmso4/dh2so4
  165. !--- Mass of sulfate + water in an average particle [g]:
  166. zmso4h2o = zmso4/(zwso4/100.0)
  167. !--- Density of the sulfate-water fraction of an average particle [g cm-3]:
  168. !@@@ Check: changed zwvso4 into zwso4 (now the mass!)
  169. zdso4h2o = gmb(1) + gmb(2)*zwso4 + gmb(3)*zln3 + gmb(4)*zrh + &
  170. gmb(5)*ztk + gmb(6)*zln32 + gmb(7)*zln3/zrh + &
  171. gmb(8)*zln3/ztk + gmb(9)*ztk2
  172. !--- Limits for zdso4h2o: H2O(0.99) and pure H2SO4 (1.841):
  173. !
  174. zdso4h2o=MAX(zdso4h2o,dh2o)
  175. zdso4h2o=MIN(zdso4h2o,dh2so4)
  176. !--- Volume of sulfate-water fraction of an average particle [cm3]:
  177. zvso4h2o = zmso4h2o/zdso4h2o
  178. !--- 2.2) Calculatiion of the particle radii: ----------------------------
  179. !--- 2.2.1) Dry count mean radius [cm]:
  180. pm6dry(jl,jk,jmod)=((zvso4+zinsvol)*0.75/pi)**(1./3.)*ram2cmr(jmod)
  181. !--- 2.2.2) Equilibrium wet count mean radius [cm]:
  182. pm6rp(jl,jk,jmod) =((zvso4h2o+zinsvol)*0.75/pi)**(1./3.)*ram2cmr(jmod)
  183. !--- 2.3) Calculation of the particle density [g cm-3]:-------------------
  184. prhop(jl,jk,jmod)=(zmso4h2o+zinsmas)/ &
  185. (zvso4h2o+zinsvol)
  186. !--- 2.4) Store aerosol water for each mode [kg(water) m-3(air)]:
  187. pww(jl,jk,jmod)=(zmso4h2o-zmso4)*paernl(jl,jk,jmod)*1.E3
  188. END IF
  189. 80 END DO
  190. 90 END DO
  191. 100 END DO
  192. !write(2121,*)pm6rp(:,1,1)
  193. END SUBROUTINE m7_equimix