m7_equiz.F90 8.0 KB

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