m7_dconc.F90 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458
  1. #include "tm5.inc"
  2. #ifdef with_budgets
  3. SUBROUTINE m7_dconc (kproma, kbdim, klev, paerml, paernl, pm6dry, pprocess)
  4. #else
  5. SUBROUTINE m7_dconc (kproma, kbdim, klev, paerml, paernl, pm6dry)
  6. #endif
  7. !
  8. ! *m7_dconc* changes aerosol numbers and masses to account for
  9. ! condensational growth of the mode mean radii
  10. !
  11. ! Authors:
  12. ! --------
  13. ! J. Wilson and E. Vignati, JRC (original source) May 2000
  14. ! P. Stier, MPI-MET (f90 version, changes, comments) 2001
  15. !
  16. ! Purpose:
  17. ! --------
  18. ! This routine repartitions aerosol number and mass between the
  19. ! the modes to account for condensational growth and the formation
  20. ! of an accumulation mode from the upper tail of the aitken mode.
  21. !
  22. ! Interface:
  23. ! ----------
  24. ! *m7_dconc* is called from *m7*
  25. !
  26. ! Method:
  27. ! -------
  28. ! The routine calculates the cumulativ number and mass distribution of the
  29. ! modes up to the respective mode boundary:
  30. !
  31. ! / x _
  32. ! N | 1 1 ln(R)-ln(R) 2
  33. ! N(0,x) = --------- | -------- exp(- - ( ----------- ) ) d ln(R)
  34. ! ln(sigma) | sqrt(2PI) 2 ln(sigma)
  35. ! / 0
  36. !
  37. ! /tx 2
  38. ! | 1 t
  39. ! = N | -------- exp(- - ) d t
  40. ! | sqrt(2PI) 2
  41. ! /-inf
  42. !
  43. ! where:
  44. !
  45. ! _
  46. ! ln(R)-ln(R)
  47. ! t = -----------
  48. ! ln(sigma)
  49. !
  50. ! and:
  51. ! _
  52. ! ln(x)-ln(R)
  53. ! tx = -----------
  54. ! ln(sigma)
  55. ! _
  56. ! R is the Count Mean Radius or the Mass Mean Radius.
  57. !
  58. ! Practically, the routine m7_cumnor calculates the fraction of the number and
  59. ! mass distribution for each mode lying below the respective upper mode boundary (1).
  60. ! In a next step the net fraction of each mode lying between the upper and lower
  61. ! mode boundaries are summed up (2) and the numbers and masses exceeding the mode
  62. ! boundaries are transfered to the neighboring larger mode (3).
  63. ! Finally, these quantities are stored in the respective arrays
  64. ! paernl and paerml (4).
  65. ! The repartititioning is currently only done for the soluble modes as it is
  66. ! assumed that insoluble modes are rather transfered to the soluble modes
  67. ! and grow as soluble particles.
  68. !
  69. ! Externals:
  70. ! ----------
  71. ! None
  72. !
  73. !--- Parameter list:
  74. !
  75. ! paerml(kbdim,klev,naermod)= total aerosol mass for each compound
  76. ! [molec. cm-3 for sulfate and ug m-3 for others]
  77. ! paernl(kbdim,klev,nmod) = aerosol number for each mode [cm-3] !
  78. ! sigma(jmod) = standard deviation of mode jmod [1]
  79. ! crdiv = threshold radii between the different modes [cm]
  80. ! crdiv(jmod) is the lower bound and crdiv(jmod+1) is
  81. ! the upper bound of the respective mode
  82. !
  83. !--- Local Variables:
  84. !
  85. ! zfconn(:,:,jnum,jmod) = absolute fraction of the number of particles in mode jmod,
  86. ! with CMD=2*pm6dry(jmod) and a geometric standard
  87. ! deviation zrcsig, that are smaller than crdiv(jnum+1).
  88. ! I.e. with 0 < CMD < crdiv(jnum+1) [1]
  89. ! zfconm(:,:,jnum,jmod) = absolute fraction of the mass in mode jmod,
  90. ! with CMD=2*pm6dry(jmod) and a geometric standard
  91. ! deviation zrcsig, that are smaller than crdiv(jnum+1).
  92. ! I.e. with 0 < CMD < crdiv(jnum+1) [1]
  93. USE mo_kind, ONLY: wp
  94. USE mo_aero_m7, ONLY: sigma, crdiv, &
  95. nmod, naermod, nsol, &
  96. iso4ns,iso4ks, iso4as,&
  97. ibcks, ibcas, ibccs, &
  98. iocks, iocas, ioccs, &
  99. isoans, isoaks, isoaas, isoacs,&
  100. issas, isscs, &
  101. iduas, iducs, &
  102. pi, avo, wh2so4,&
  103. dh2so4,dbc, doc, &
  104. dnacl, ddust, &
  105. cmr2ram,cmedr2mmedr
  106. #ifdef with_budgets
  107. Use M7_Data, only: nm7procs
  108. #endif
  109. IMPLICIT NONE
  110. INTEGER :: kproma, kbdim, klev
  111. REAL :: paerml(kbdim,klev,naermod), paernl(kbdim,klev,nmod), &
  112. pm6dry(kbdim,klev,nsol)
  113. #ifdef with_budgets
  114. Real :: pprocess(kbdim,klev,nm7procs)
  115. #endif
  116. ! Local variables:
  117. !
  118. INTEGER :: jmod, jnum, jl, jk
  119. REAL :: zrcsig, zarg1, zarg2, zdpmm, zdpcm, &
  120. zarg3, zdpam, zcongn, zcongm, zdummy, &
  121. zr1, zr2, zttnj, zavnj, zmrj, &
  122. zmt, znt, zavmt, zmcr, zfconmj, &
  123. zntnew, zmtnew, zdm, zeps
  124. REAL :: zambc2(4), zambc3(4), zambc4(4), &
  125. zamoc2(4), zamoc3(4), zamoc4(4),&
  126. zamsoa1(4), zamsoa2(4), zamsoa3(4), zamsoa4(4), &
  127. zamss3(4), zamss4(4), &
  128. zamdu3(4), zamdu4(4)
  129. REAL :: ztotmass(kbdim,klev)
  130. REAL :: zsumn(kbdim,klev,nmod), zsumm(kbdim,klev,nmod), &
  131. zsumbc(kbdim,klev,3), zsumoc(kbdim,klev,3), &
  132. zsumsoa(kbdim,klev,4), &
  133. zsumss(kbdim,klev,2), zsumdu(kbdim,klev,2)
  134. REAL :: zfconn(kbdim,klev,nsol,nsol), zfconm(kbdim,klev,nsol,nsol)
  135. !--- 0) Initialisations: ----------------------------------------------------------
  136. zeps=EPSILON(1.0_wp)
  137. zsumn(:,:,:) = 0.
  138. zsumm(:,:,:) = 0.
  139. zsumbc(:,:,:) = 0.
  140. zsumoc(:,:,:) = 0.
  141. zsumsoa(:,:,:) = 0.
  142. zsumss(:,:,:) = 0.
  143. zsumdu(:,:,:) = 0.
  144. zfconm(:,:,:,:) = 0.
  145. zfconn(:,:,:,:) = 0.
  146. !
  147. !--- 1) Identify how much the mode jmod has grown into the next higher mode -------
  148. !
  149. DO jmod=1,nsol-1
  150. !--- Total mass of the mode in equivalent molecules of sulfate:
  151. SELECT CASE(jmod)
  152. CASE(1)
  153. ztotmass(1:kproma,:) = paerml(1:kproma,:,iso4ns)+ &
  154. paerml(1:kproma,:,isoans)/doc &
  155. *dh2so4/wh2so4*avo*1.E-12
  156. CASE(2)
  157. ztotmass(1:kproma,:) = paerml(1:kproma,:,iso4ks) + &
  158. (paerml(1:kproma,:,ibcks)/dbc+(paerml(1:kproma,:,iocks)+paerml(1:kproma,:,isoaks))/doc) &
  159. *dh2so4/wh2so4*avo*1.E-12
  160. CASE(3)
  161. ztotmass(1:kproma,:) = paerml(1:kproma,:,iso4as) + &
  162. (paerml(1:kproma,:,ibcas)/dbc+(paerml(1:kproma,:,iocas)+paerml(1:kproma,:,isoaas))/doc+ &
  163. paerml(1:kproma,:,issas)/dnacl+paerml(1:kproma,:,iduas)/ddust) &
  164. *dh2so4/wh2so4*avo*1.E-12
  165. END SELECT
  166. DO jnum=jmod,nsol-1
  167. DO jk=1,klev
  168. DO jl=1,kproma
  169. IF (paernl(jl,jk,jmod) .GT. zeps .AND. pm6dry(jl,jk,jmod) .GT. 0.0) THEN
  170. !--- 1.1) Calculate necessary parameters:
  171. !--- Geometric Standard Deviation:
  172. zrcsig=LOG(sigma(jmod))
  173. !--- Mass Median Radius:
  174. zarg1=pm6dry(jl,jk,jmod)*cmedr2mmedr(jmod)
  175. !--- Count Median Radius:
  176. zarg2=pm6dry(jl,jk,jmod)
  177. !--- Threshold radius between the modes:
  178. zarg3=crdiv(jnum+1)
  179. !--- Transfer to logarithmic scale:
  180. zdpmm=LOG(zarg1)
  181. zdpcm=LOG(zarg2)
  182. zdpam=LOG(zarg3)
  183. !--- Distance of the CMD of the mode from the threshold mode
  184. ! diameter in terms of geometric standard deviations:
  185. zcongn=(zdpam-zdpcm)/zrcsig
  186. !--- Distance of the MMD of the mode from the threshold mode
  187. ! diameter in terms of geometric standard deviations (t):
  188. zcongm=(zdpam-zdpmm)/zrcsig
  189. !--- Calculate the cumulative of the log-normal number distribution:
  190. CALL m7_cumnor(zcongn,zfconn(jl,jk,jnum,jmod),zdummy)
  191. !--- Limit transfer only to adjacent modes:
  192. IF (jnum .GT. jmod) THEN
  193. zfconn(jl,jk,jnum,jmod)= 1.0
  194. END IF
  195. !--- Set minimum radius and maximum radius:
  196. zr1 = crdiv(jmod)
  197. zr2 = crdiv(jmod+1)
  198. !--- Radius of average mass for a lognormal distribution
  199. zdm = EXP((LOG(zr1)+LOG(zr2))/2.0)*cmr2ram(jmod)
  200. !--- Average mass contained in the mode
  201. zttnj = ztotmass(jl,jk)/paernl(jl,jk,jmod)
  202. !--- Average number of sulfate molecules or equivalent for mixed modes,
  203. ! for a particle with radius zdm
  204. zavnj=zdm**3.0*pi*avo*dh2so4/wh2so4/0.75
  205. !--- If the average mass contained in the mode is larger than the average mass
  206. ! for a particle with radius zdm, the transfer of number and mass is done,
  207. ! else there is no transfer
  208. IF (zttnj .GT. zavnj .AND. jnum .EQ. jmod) THEN
  209. !--- Mass remaining in the mode
  210. zmrj=zfconn(jl,jk,jnum,jmod)*paernl(jl,jk,jmod)*zavnj
  211. !--- Mass transferred
  212. zmt=ztotmass(jl,jk)-zmrj
  213. !--- Numbers transferred
  214. znt=(1.0-zfconn(jl,jk,jnum,jmod))*paernl(jl,jk,jmod)
  215. !--- Average mass of particles transferred
  216. IF(znt>zeps) THEN
  217. zavmt=zmt/znt
  218. ELSE
  219. zavmt=0.
  220. END IF
  221. !--- Average mass of particles of radius zr2
  222. zmcr=(zr2*cmr2ram(jmod))**3.0*pi*avo*dh2so4/wh2so4/0.75
  223. !--- If the average mass of particle transferred is smaller than the average mass
  224. ! mass of particles with radius zr2 then reduce the particles transferred
  225. ! so that zavmt=zmcr, else calculate the mass fraction transferred zfconmj
  226. IF (zavmt .GE. zmcr) THEN
  227. zfconmj=zmrj/ztotmass(jl,jk)
  228. ELSE
  229. if ( zavmt == zavnj ) then
  230. zntnew = 0.0
  231. else
  232. zntnew = znt/(1.0 + (zmcr-zavmt)/(zavmt-zavnj))
  233. end if
  234. zmtnew = zntnew*zmcr
  235. zfconmj = 1.0 - zmtnew/ztotmass(jl,jk)
  236. zfconn(jl,jk,jnum,jmod) = 1.0 - zntnew/paernl(jl,jk,jmod)
  237. END IF
  238. zfconm(jl,jk,jnum,jmod)=zfconmj
  239. ELSE
  240. zfconn(jl,jk,jnum,jmod)=1.
  241. zfconm(jl,jk,jnum,jmod)=1.
  242. END IF
  243. ELSE
  244. zfconn(jl,jk,jnum,jmod)=1.
  245. zfconm(jl,jk,jnum,jmod)=1.
  246. END IF
  247. END DO
  248. END DO
  249. END DO
  250. END DO
  251. DO jmod=1,nsol
  252. DO jk=1,klev
  253. DO jl=1,kproma
  254. !--- 2) Calculate the net fraction of mode jmod that is transfered -------
  255. ! to the mode jnew zfconn(:,:,jnew,jmod) :
  256. !--- Numbers:
  257. zfconn(jl,jk,4,jmod)=1.0 -zfconn(jl,jk,3,jmod)
  258. zfconn(jl,jk,3,jmod)=zfconn(jl,jk,3,jmod)-zfconn(jl,jk,2,jmod)
  259. zfconn(jl,jk,2,jmod)=zfconn(jl,jk,2,jmod)-zfconn(jl,jk,1,jmod)
  260. !--- Mass:
  261. zfconm(jl,jk,4,jmod)=1.0 -zfconm(jl,jk,3,jmod)
  262. zfconm(jl,jk,3,jmod)=zfconm(jl,jk,3,jmod)-zfconm(jl,jk,2,jmod)
  263. zfconm(jl,jk,2,jmod)=zfconm(jl,jk,2,jmod)-zfconm(jl,jk,1,jmod)
  264. !--- 3) Sum the net masses and numbers transfered between the modes: -----
  265. !--- 3.1) Soluble mode numbers and sulfate mass:
  266. zsumn(jl,jk,1)=zsumn(jl,jk,1)+paernl(jl,jk,jmod)*zfconn(jl,jk,1,jmod)
  267. zsumm(jl,jk,1)=zsumm(jl,jk,1)+paerml(jl,jk,jmod)*zfconm(jl,jk,1,jmod)
  268. zsumn(jl,jk,2)=zsumn(jl,jk,2)+paernl(jl,jk,jmod)*zfconn(jl,jk,2,jmod)
  269. zsumm(jl,jk,2)=zsumm(jl,jk,2)+paerml(jl,jk,jmod)*zfconm(jl,jk,2,jmod)
  270. zsumn(jl,jk,3)=zsumn(jl,jk,3)+paernl(jl,jk,jmod)*zfconn(jl,jk,3,jmod)
  271. zsumm(jl,jk,3)=zsumm(jl,jk,3)+paerml(jl,jk,jmod)*zfconm(jl,jk,3,jmod)
  272. zsumn(jl,jk,4)=zsumn(jl,jk,4)+paernl(jl,jk,jmod)*zfconn(jl,jk,4,jmod)
  273. zsumm(jl,jk,4)=zsumm(jl,jk,4)+paerml(jl,jk,jmod)*zfconm(jl,jk,4,jmod)
  274. END DO
  275. END DO
  276. END DO
  277. DO jk=1,klev
  278. DO jl=1,kproma
  279. !--- 3.2) Non-sulfate masses:
  280. zambc2(2)=paerml(jl,jk,ibcks)*zfconm(jl,jk,2,2)
  281. zambc2(3)=paerml(jl,jk,ibcks)*zfconm(jl,jk,3,2)
  282. zambc2(4)=paerml(jl,jk,ibcks)*zfconm(jl,jk,4,2)
  283. zamsoa1(1)=paerml(jl,jk,isoans)*zfconm(jl,jk,1,1)
  284. zamsoa1(2)=paerml(jl,jk,isoans)*zfconm(jl,jk,2,1)
  285. zamsoa1(3)=paerml(jl,jk,isoans)*zfconm(jl,jk,3,1)
  286. zamsoa1(4)=paerml(jl,jk,isoans)*zfconm(jl,jk,4,1)
  287. zamoc2(2)=paerml(jl,jk,iocks)*zfconm(jl,jk,2,2)
  288. zamoc2(3)=paerml(jl,jk,iocks)*zfconm(jl,jk,3,2)
  289. zamoc2(4)=paerml(jl,jk,iocks)*zfconm(jl,jk,4,2)
  290. zamsoa2(2)=paerml(jl,jk,isoaks)*zfconm(jl,jk,2,2)
  291. zamsoa2(3)=paerml(jl,jk,isoaks)*zfconm(jl,jk,3,2)
  292. zamsoa2(4)=paerml(jl,jk,isoaks)*zfconm(jl,jk,4,2)
  293. zambc3(3)=paerml(jl,jk,ibcas)*zfconm(jl,jk,3,3)
  294. zambc3(4)=paerml(jl,jk,ibcas)*zfconm(jl,jk,4,3)
  295. zamoc3(3)=paerml(jl,jk,iocas)*zfconm(jl,jk,3,3)
  296. zamoc3(4)=paerml(jl,jk,iocas)*zfconm(jl,jk,4,3)
  297. zamsoa3(3)=paerml(jl,jk,isoaas)*zfconm(jl,jk,3,3)
  298. zamsoa3(4)=paerml(jl,jk,isoaas)*zfconm(jl,jk,4,3)
  299. zambc4(4)=paerml(jl,jk,ibccs)
  300. zamoc4(4)=paerml(jl,jk,ioccs)
  301. zamsoa4(4)=paerml(jl,jk,isoacs)
  302. zamss3(3)=paerml(jl,jk,issas)*zfconm(jl,jk,3,3)
  303. zamss3(4)=paerml(jl,jk,issas)*zfconm(jl,jk,4,3)
  304. zamdu3(3)=paerml(jl,jk,iduas)*zfconm(jl,jk,3,3)
  305. zamdu3(4)=paerml(jl,jk,iduas)*zfconm(jl,jk,4,3)
  306. zamss4(4)=paerml(jl,jk,isscs)
  307. zamdu4(4)=paerml(jl,jk,iducs)
  308. zsumbc(jl,jk,1)=zambc2(2)
  309. zsumbc(jl,jk,2)=zambc2(3)+zambc3(3)
  310. zsumbc(jl,jk,3)=zambc2(4)+zambc3(4)+zambc4(4)
  311. zsumoc(jl,jk,1)=zamoc2(2)
  312. zsumoc(jl,jk,2)=zamoc2(3)+zamoc3(3)
  313. zsumoc(jl,jk,3)=zamoc2(4)+zamoc3(4)+zamoc4(4)
  314. zsumsoa(jl,jk,1)=zamsoa1(1)
  315. zsumsoa(jl,jk,2)=zamsoa2(2)+zamsoa1(2)
  316. zsumsoa(jl,jk,3)=zamsoa2(3)+zamsoa3(3)+zamsoa1(3)
  317. zsumsoa(jl,jk,4)=zamsoa2(4)+zamsoa3(4)+zamsoa4(4)+zamsoa1(4)
  318. zsumss(jl,jk,1)=zamss3(3)
  319. zsumss(jl,jk,2)=zamss3(4)+zamss4(4)
  320. zsumdu(jl,jk,1)=zamdu3(3)
  321. zsumdu(jl,jk,2)=zamdu3(4)+zamdu4(4)
  322. END DO
  323. END DO
  324. !--- 4) Store final masses and numbers of the modes: ------------------------
  325. #ifdef with_budgets
  326. ! We have the results here. We can calculate the budget by first looking at the losses of mode 1 to get the growth 1->2, then 2->3 and so on.
  327. ! I add Max(0,...) to prevent negative rounding errors if the actual value is zero. They are ugly.
  328. pprocess(:,:,55) = Max(0.0,paernl(:,:,1) - zsumn(:,:,1)) ! Growth 1-2 N
  329. pprocess(:,:,56) = Max(0.0,paerml(:,:,1) - zsumm(:,:,1)) ! Growth 1-2 SU
  330. pprocess(:,:,85) = Max(0.0,paerml(:,:,isoans) - zsumsoa(:,:,1)) ! Growth 1-2 SOA
  331. pprocess(:,:,57) = Max(0.0,paernl(:,:,2) - zsumn(:,:,2) + pprocess(:,:,55)) ! Growth 2-3 N
  332. pprocess(:,:,58) = Max(0.0,paerml(:,:,2) - zsumm(:,:,2) + pprocess(:,:,56)) ! Growth 2-3 SU
  333. pprocess(:,:,59) = Max(0.0,paerml(:,:,ibcks) - zsumbc(:,:,1)) ! Growth 2-3 BC
  334. pprocess(:,:,60) = Max(0.0,paerml(:,:,iocks) - zsumoc(:,:,1)) ! Growth 2-3 OC
  335. pprocess(:,:,86) = Max(0.0,paerml(:,:,isoaks) - zsumsoa(:,:,2)) ! Growth 2-3 SOA
  336. pprocess(:,:,61) = Max(0.0,paernl(:,:,3) - zsumn(:,:,3) + pprocess(:,:,57)) ! Growth 3-4 N
  337. pprocess(:,:,62) = Max(0.0,paerml(:,:,3) - zsumm(:,:,3) + pprocess(:,:,58)) ! Growth 3-4 SU
  338. pprocess(:,:,63) = Max(0.0,paerml(:,:,ibcas) - zsumbc(:,:,2) + pprocess(:,:,59)) ! Growth 3-4 BC
  339. pprocess(:,:,64) = Max(0.0,paerml(:,:,iocas) - zsumoc(:,:,2) + pprocess(:,:,60)) ! Growth 3-4 OC
  340. pprocess(:,:,87) = Max(0.0,paerml(:,:,isoaas) - zsumsoa(:,:,3) + pprocess(:,:,68)) ! Growth 3-4 SOA
  341. pprocess(:,:,65) = Max(0.0,paerml(:,:,issas) - zsumss(:,:,1)) ! Growth 3-4 SS
  342. pprocess(:,:,66) = Max(0.0,paerml(:,:,iduas) - zsumdu(:,:,1)) ! Growth 3-4 DU
  343. #endif
  344. DO jmod=1,nsol
  345. DO jk=1,klev
  346. DO jl=1,kproma
  347. !--- Particle numbers:
  348. paernl(jl,jk,jmod)=zsumn(jl,jk,jmod)
  349. !--- Sulfate mass:
  350. paerml(jl,jk,jmod)=zsumm(jl,jk,jmod)
  351. END DO
  352. END DO
  353. END DO
  354. !--- Non sulfate masses:
  355. DO jk=1,klev
  356. DO jl=1,kproma
  357. paerml(jl,jk,ibcks)=zsumbc(jl,jk,1)
  358. paerml(jl,jk,ibcas)=zsumbc(jl,jk,2)
  359. paerml(jl,jk,ibccs)=zsumbc(jl,jk,3)
  360. paerml(jl,jk,iocks)=zsumoc(jl,jk,1)
  361. paerml(jl,jk,iocas)=zsumoc(jl,jk,2)
  362. paerml(jl,jk,ioccs)=zsumoc(jl,jk,3)
  363. paerml(jl,jk,isoans)=zsumsoa(jl,jk,1)
  364. paerml(jl,jk,isoaks)=zsumsoa(jl,jk,2)
  365. paerml(jl,jk,isoaas)=zsumsoa(jl,jk,3)
  366. paerml(jl,jk,isoacs)=zsumsoa(jl,jk,4)
  367. paerml(jl,jk,issas)=zsumss(jl,jk,1)
  368. paerml(jl,jk,isscs)=zsumss(jl,jk,2)
  369. paerml(jl,jk,iduas)=zsumdu(jl,jk,1)
  370. paerml(jl,jk,iducs)=zsumdu(jl,jk,2)
  371. END DO
  372. END DO
  373. END SUBROUTINE m7_dconc