2 ! WRF-chem V3.2 : Original version of dry_dep_driver written by Georg Grell (ESRL/GSD)
3 ! VERTMX was originally developed by Mariusz Pagowski and modified by
4 ! Richard C. Easter (PNNL)
5 ! 10/11/2011 - Ravan Ahmadov (NOAA) updated to include the RACM_SOA_VBS option
7 !WRF:MODEL_LAYER:CHEMICS
9 MODULE module_dry_dep_driver
14 subroutine dry_dep_driver(id,curr_secs,ktau,dtstep,config_flags, &
15 gmt,julday,t_phy,moist,scalar,p8w,t8w,w,alt, &
16 p_phy,chem,tracer,rho_phy,dz8w,rh,exch_h,hfx,dx, &
17 cldfra, cldfra_old,raincv,seasin,dustin, &
18 ccn1, ccn2, ccn3, ccn4, ccn5, ccn6, nsource, &
19 ivgtyp,tsk,gsw,vegfra,pbl,rmol,ust,znt,xlat,xlong,z,z_at_w,&
20 xland,ash_fall,h2oaj,h2oai,nu3,ac3,cor3,asulf,ahno3, &
22 cvalk1,cvole1,cvapi1,cvapi2,cvlim1,cvlim2,dep_vel_o3, &
25 sf_urban_physics,numgas,current_month,dvel,snowh, &
26 dustdrydep_1,dustdrydep_2,dustdrydep_3, &
27 dustdrydep_4,dustdrydep_5, &
29 dustgraset_1,dustgraset_2,dustgraset_3, &
30 dustgraset_4,dustgraset_5, &
31 setvel_1,setvel_2,setvel_3,setvel_4,setvel_5, imod, &
33 dep_vel,num_vert_mix, &
34 ids,ide, jds,jde, kds,kde, &
35 ims,ime, jms,jme, kms,kme, &
36 its,ite, jts,jte, kts,kte )
37 !----------------------------------------------------------------------
38 USE module_model_constants
40 USE module_state_description
41 USE module_domain_type, only : domain
44 USE module_data_sorgam
45 USE module_aerosols_sorgam
46 USE module_gocart_settling
47 USE module_vash_settling
48 USE module_gocart_drydep
49 USE module_mosaic_drydep, only: mosaic_drydep_driver
50 USE module_mixactivate_wrappers, only: mosaic_mixactivate, sorgam_mixactivate, &
51 sorgam_vbs_mixactivate, soa_vbs_mixactivate
53 USE module_aerosols_soa_vbs, only: soa_vbs_depdriver
54 USE module_aerosols_soa_vbs_het, only: soa_vbs_het_depdriver
56 USE module_cam_mam_drydep, only: cam_mam_drydep_driver
58 use module_cam_support, only: pcnst => pcnst_runtime
59 USE module_data_cam_mam_asect, only: lptr_chem_to_q, lptr_chem_to_qqcw !Balwinder.Singh@pnnl.gov: Added to avoid mixing of CHEM array constituents multiple times
60 USE modal_aero_data, only: numptr_amode, lmassptr_amode, ntot_amode, nspec_amode !Added by Balwinder.Singh@pnnl.gov to avoid mixing of CHEM array constituents multiple times
61 USE module_cam_mam_drydep, only: cam_mam_drydep_driver
62 use module_scalar_tables, only: chem_dname_table !Balwinder.Singh@pnnl.gov:Added for MAM aerosols dry deposition
63 USE module_aerosols_sorgam_vbs, only: sorgam_vbs_depdriver
67 TYPE(grid_config_rec_type), INTENT(IN ) :: config_flags
68 LOGICAL, INTENT(IN) :: is_CAMMGMP_used !BSINGH:01/31/2013: Added is_CAMMGMP_used for MAM drydep
69 INTEGER, INTENT(IN ) :: id,julday, &
73 ids,ide, jds,jde, kds,kde, &
74 ims,ime, jms,jme, kms,kme, &
75 its,ite, jts,jte, kts,kte
76 INTEGER, INTENT(IN ) :: ktau
78 REAL(KIND=8), INTENT(IN ) :: curr_secs
79 REAL, DIMENSION( ims:ime, kms:kme, jms:jme, num_moist ), &
81 REAL, DIMENSION( ims:ime, kms:kme, jms:jme, num_scalar ), &
82 INTENT(INOUT ) :: scalar
83 REAL, DIMENSION( ims:ime, kms:kme, jms:jme, num_chem ), &
84 INTENT(INOUT ) :: chem
85 REAL, DIMENSION( ims:ime, kms:kme, jms:jme, num_tracer ), &
86 INTENT(INOUT ) :: tracer
88 REAL, DIMENSION( ims:ime, 1:config_flags%kemit, jms:jme,num_emis_ant),&
89 INTENT(IN ) :: emis_ant
91 REAL, DIMENSION( ims:ime, 1, jms:jme, num_ebu_in ), &
92 INTENT(INOUT ) :: ebu_in
94 REAL, DIMENSION( ims:ime, config_flags%kdepvel, jms:jme, config_flags%ndepvel ), &
95 INTENT(INOUT ) :: dep_vel
97 REAL, DIMENSION( ims:ime, config_flags%kdvel, jms:jme, num_dvel ), &
98 INTENT(INOUT ) :: dvel
101 REAL, DIMENSION( ims:ime , kms:kme , jms:jme ) , &
111 REAL, DIMENSION( ims:ime , kms:kme , jms:jme ) , &
113 h2oaj,h2oai,nu3,ac3,cor3,asulf,ahno3,anh3,cvaro1,cvaro2, &
114 cvalk1,cvole1,cvapi1,cvapi2,cvlim1,cvlim2
115 INTEGER,DIMENSION( ims:ime , jms:jme ) , &
118 REAL, DIMENSION( ims:ime , jms:jme ) , &
130 xland,znt,raincv,ash_fall
131 REAL, DIMENSION( ims:ime , kms:kme , jms:jme ) , &
133 cldfra, & ! cloud fraction current timestep
134 cldfra_old ! cloud fraction previous timestep
135 REAL, DIMENSION( ims:ime , jms:jme, 5 ) , &
136 INTENT(IN) :: seasin,dustin
137 REAL, DIMENSION( ims:ime , jms:jme ) , &
140 REAL, DIMENSION( ims:ime , jms:jme , num_chem ) , &
142 ddlen, & !dry deposition length
143 ddflx !dry deposition flux
145 REAL, INTENT(OUT), dimension(ims:ime,kms:kme,jms:jme) :: nsource, &
146 ccn1,ccn2,ccn3,ccn4,ccn5,ccn6 ! number conc of aerosols activated at supersat
148 REAL, INTENT(IN ) :: &
151 INTEGER, INTENT(INOUT) :: num_vert_mix
153 REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: &
154 dustdrydep_1, dustdrydep_2, dustdrydep_3, &
155 dustdrydep_4, dustdrydep_5, depvelocity
156 REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: &
157 dustgraset_1,dustgraset_2,dustgraset_3, &
158 dustgraset_4,dustgraset_5, &
159 setvel_1,setvel_2,setvel_3,setvel_4,setvel_5
160 INTEGER, INTENT(IN) :: imod
162 !--- deposition and emissions stuff
165 ! .. Local Scalars ..
166 REAL :: clwchem, dvfog, dvpart, &
167 rad, rhchem, ta, ustar, vegfrac, z1,zntt
168 REAL :: old, new, fac
170 INTEGER :: iland, iprt, iseason, jce, jcs, &
171 n, nr, ipr, jpr, nvr, &
172 idrydep_onoff, aer_mech_id
173 INTEGER :: l2,m,lnum,lmass
175 LOGICAL :: highnh3, rainflag, vegflag, wetflag
179 REAL, DIMENSION( its:ite, jts:jte, num_chem ) :: ddvel
180 REAL, DIMENSION( num_chem ) :: ddmassn
182 REAL, DIMENSION( ims:ime, jms:jme, num_chem ) :: qsrflx ! dry deposition flux of aerosols (explicit aq.-phase cases)
184 REAL, DIMENSION( ims:ime , kms:kme , jms:jme ) :: dryrho_phy
185 REAL, DIMENSION( kms:kme ) :: dryrho_1d
187 ! turbulent transport
188 real :: pblst(kts:kte),ekmfull(kts:kte+1),zzfull(kts:kte+1),zz(kts:kte)
189 integer :: ii,jj,kk,i,j,k,nv
192 ! necessary for aerosols (module dependent)
194 REAL, DIMENSION( its:ite, jts:jte ) :: aer_res, aer_res_def, aer_res_zcen
196 INTEGER, DIMENSION( pcnst ) :: lptr_q_to_chem !Balwinder.Singh@pnnl.gov: pointer from Q array to CHEM array
197 LOGICAL, DIMENSION( num_chem ) :: vertMixAero !Balwinder.Singh@pnnl.gov: Flag (true or false) which decides whether to vertical mix a constituent or not
199 real, parameter :: m2cm = 100.
201 REAL RSI ! gas constant in SI units (J/mol-K)
202 PARAMETER (RSI = 8.314510) ! RSI is the same as RGASUNIV in CONST.EXT
204 integer :: k_a, k_c, kmax, m_mam
205 real, dimension( its:ite, jts:jte ) :: frac_removed
209 ! .. Intrinsic Functions ..
212 !Balwinder.Singh@pnnl.gov: Following code sets vertMixAero(:) flag to true or false based on whether
213 !a particular CHEM array constituent should be mixed (vertically) by dry_dep_driver or not
214 !The constituents which are mixed in CAMMGMP microphysics are NOT mixed in dry_dep_driver.
215 if(is_CAMMGMP_used) then ! If CAMMGMP microphysics is selected
216 vertMixAero(:) = .FALSE.
217 lptr_q_to_chem(:) = -999888777 ! pointer which maps Q array (CAM's STATE%Q array) to CHEM array
220 l2 = lptr_chem_to_q(nv)
222 vertMixAero(nv) = .TRUE. !Set default true
223 lptr_q_to_chem(l2) = nv
227 !Set constitutents, which are mixed in CAMMGMP, False
229 lnum = numptr_amode(m)
231 vertMixAero(lptr_q_to_chem(lnum)) = .FALSE.
233 do l = 1, nspec_amode(m)
234 lmass = lmassptr_amode(l,m)
235 vertMixAero(lptr_q_to_chem(lmass)) = .FALSE.
241 ! compute dry deposition velocities = ddvel
243 ! 28-jun-2005 rce - initialize ddvel=0; call aerosol drydep routine
244 ! only when gas_drydep_opt == WESELY
245 ! the wesely_driver routine computes aer_res, and currently
246 ! you cannot compute aerosol drydep without it !!
247 ! 08-jul-2005 rce - pass idrydep_onoff to mixactivate routines
252 drydep_select: SELECT CASE(config_flags%gas_drydep_opt)
256 ! gas_drydep_opt == WESELY means
258 ! other (appropriate) routine for aerosols
260 CALL wrf_debug(15,'DOING DRY DEP VELOCITIES WITH WESELY METHOD')
262 IF( config_flags%chem_opt /= CHEM_TRACER .and. &
263 config_flags%chem_opt /= CHEM_TRACE2 .and. &
264 config_flags%chem_opt /= CO2_TRACER .and. &
265 config_flags%chem_opt /= GHG_TRACER .and. &
266 config_flags%chem_opt /= CHEM_VASH .and. &
267 config_flags%chem_opt /= CHEM_VOLC_4BIN .and. &
268 config_flags%chem_opt /= DUST .and. &
269 config_flags%chem_opt /= GOCART_SIMPLE .and. &
270 config_flags%chem_opt /= GOCARTRACM_KPP )THEN
271 call wesely_driver(id,ktau,dtstep, &
272 config_flags,current_month, &
273 gmt,julday,t_phy,moist,p8w,t8w,raincv, &
274 p_phy,chem,rho_phy,dz8w,ddvel,aer_res_def,aer_res_zcen, &
275 ivgtyp,tsk,gsw,vegfra,pbl,rmol,ust,znt,xlat,xlong,z,z_at_w,&
277 ids,ide, jds,jde, kds,kde, &
278 ims,ime, jms,jme, kms,kme, &
279 its,ite, jts,jte, kts,kte )
280 !-----------------------------------------------------------------
281 ! this does aerosol species (dust,seas, bc,oc) for gocart only
282 !-----------------------------------------------------------------
283 IF ( config_flags%chem_opt == MOZCART_KPP .or. &
284 config_flags%chem_opt == T1_MOZCART_KPP ) then
285 call gocart_drydep_driver( dtstep, &
286 config_flags, numgas, &
287 t_phy, moist, p8w, t8w, rmol,aer_res_def, &
288 p_phy, chem, rho_phy, dz8w, ddvel, xland, hfx, &
289 ivgtyp, tsk, vegfra, pbl, ust, znt, xlat, xlong, &
290 dustdrydep_1,dustdrydep_2,dustdrydep_3, &
291 dustdrydep_4,dustdrydep_5, &
293 ids,ide, jds,jde, kds,kde, &
294 ims,ime, jms,jme, kms,kme, &
295 its,ite, jts,jte, kts,kte )
298 if( config_flags%diagnostic_chem == DEPVEL1 .and. &
299 config_flags%chem_opt == CB05_SORG_VBS_AQ_KPP ) then
301 dvel(its:ite,1,j,p_dvel_o3) = m2cm*ddvel(its:ite,j,p_o3)
302 dvel(its:ite,1,j,p_dvel_no) = m2cm*ddvel(its:ite,j,p_no)
303 dvel(its:ite,1,j,p_dvel_no2) = m2cm*ddvel(its:ite,j,p_no2)
304 dvel(its:ite,1,j,p_dvel_nh3) = m2cm*ddvel(its:ite,j,p_nh3)
305 dvel(its:ite,1,j,p_dvel_so2) = m2cm*ddvel(its:ite,j,p_so2)
306 dvel(its:ite,1,j,p_dvel_so4) = m2cm*ddvel(its:ite,j,p_sulf)
307 dvel(its:ite,1,j,p_dvel_hno3) = m2cm*ddvel(its:ite,j,p_hno3)
311 if( config_flags%diagnostic_chem == DEPVEL1 .and. &
312 (config_flags%chem_opt == MOZCART_KPP .or. &
313 config_flags%chem_opt == T1_MOZCART_KPP .or. &
314 config_flags%chem_opt == MOZART_KPP .or. &
315 config_flags%chem_opt == MOZART_MOSAIC_4BIN_KPP .or. &
316 config_flags%chem_opt == MOZART_MOSAIC_4BIN_AQ_KPP ) ) then
318 dvel(its:ite,1,j,p_dvel_o3) = m2cm*ddvel(its:ite,j,p_o3)
319 dvel(its:ite,1,j,p_dvel_no) = m2cm*ddvel(its:ite,j,p_no)
320 dvel(its:ite,1,j,p_dvel_no2) = m2cm*ddvel(its:ite,j,p_no2)
321 dvel(its:ite,1,j,p_dvel_nh3) = m2cm*ddvel(its:ite,j,p_nh3)
322 dvel(its:ite,1,j,p_dvel_hno3) = m2cm*ddvel(its:ite,j,p_hno3)
323 dvel(its:ite,1,j,p_dvel_hno4) = m2cm*ddvel(its:ite,j,p_hno4)
324 dvel(its:ite,1,j,p_dvel_h2o2) = m2cm*ddvel(its:ite,j,p_h2o2)
325 dvel(its:ite,1,j,p_dvel_co) = m2cm*ddvel(its:ite,j,p_co)
326 dvel(its:ite,1,j,p_dvel_ch3ooh) = m2cm*ddvel(its:ite,j,p_ch3ooh)
327 dvel(its:ite,1,j,p_dvel_hcho) = m2cm*ddvel(its:ite,j,p_hcho)
328 dvel(its:ite,1,j,p_dvel_ch3oh) = m2cm*ddvel(its:ite,j,p_ch3oh)
329 dvel(its:ite,1,j,p_dvel_eo2) = m2cm*ddvel(its:ite,j,p_eo2)
330 dvel(its:ite,1,j,p_dvel_ald) = m2cm*ddvel(its:ite,j,p_ald)
331 dvel(its:ite,1,j,p_dvel_ch3cooh) = m2cm*ddvel(its:ite,j,p_ch3cooh)
332 dvel(its:ite,1,j,p_dvel_acet) = m2cm*ddvel(its:ite,j,p_acet)
333 dvel(its:ite,1,j,p_dvel_mgly) = m2cm*ddvel(its:ite,j,p_mgly)
334 dvel(its:ite,1,j,p_dvel_gly) = m2cm*ddvel(its:ite,j,p_gly)
335 dvel(its:ite,1,j,p_dvel_paa) = m2cm*ddvel(its:ite,j,p_paa)
336 dvel(its:ite,1,j,p_dvel_pooh) = m2cm*ddvel(its:ite,j,p_c3h6ooh)
337 dvel(its:ite,1,j,p_dvel_mpan) = m2cm*ddvel(its:ite,j,p_mpan)
338 dvel(its:ite,1,j,p_dvel_mco3) = m2cm*ddvel(its:ite,j,p_mco3)
339 dvel(its:ite,1,j,p_dvel_mvkooh) = m2cm*ddvel(its:ite,j,p_mvkooh)
340 dvel(its:ite,1,j,p_dvel_c2h5oh) = m2cm*ddvel(its:ite,j,p_c2h5oh)
341 dvel(its:ite,1,j,p_dvel_etooh) = m2cm*ddvel(its:ite,j,p_etooh)
342 dvel(its:ite,1,j,p_dvel_prooh) = m2cm*ddvel(its:ite,j,p_prooh)
343 dvel(its:ite,1,j,p_dvel_acetp) = m2cm*ddvel(its:ite,j,p_acetp)
344 dvel(its:ite,1,j,p_dvel_onit) = m2cm*ddvel(its:ite,j,p_onit)
345 dvel(its:ite,1,j,p_dvel_onitr) = m2cm*ddvel(its:ite,j,p_onitr)
346 dvel(its:ite,1,j,p_dvel_isooh) = m2cm*ddvel(its:ite,j,p_isooh)
347 dvel(its:ite,1,j,p_dvel_acetol) = m2cm*ddvel(its:ite,j,p_acetol)
348 dvel(its:ite,1,j,p_dvel_glyald) = m2cm*ddvel(its:ite,j,p_glyald)
349 dvel(its:ite,1,j,p_dvel_hydrald) = m2cm*ddvel(its:ite,j,p_hydrald)
350 dvel(its:ite,1,j,p_dvel_alkooh) = m2cm*ddvel(its:ite,j,p_alkooh)
351 dvel(its:ite,1,j,p_dvel_mekooh) = m2cm*ddvel(its:ite,j,p_mekooh)
352 dvel(its:ite,1,j,p_dvel_tolooh) = m2cm*ddvel(its:ite,j,p_tolooh)
353 dvel(its:ite,1,j,p_dvel_xooh) = m2cm*ddvel(its:ite,j,p_xooh)
354 dvel(its:ite,1,j,p_dvel_so2) = m2cm*ddvel(its:ite,j,p_so2)
355 dvel(its:ite,1,j,p_dvel_so4) = m2cm*ddvel(its:ite,j,p_sulf)
356 dvel(its:ite,1,j,p_dvel_pan) = m2cm*ddvel(its:ite,j,p_pan)
357 dvel(its:ite,1,j,p_dvel_terpooh) = m2cm*ddvel(its:ite,j,p_terpooh)
361 if ( config_flags%chem_opt == MOZART_MOSAIC_4BIN_AQ_KPP ) then
363 dvel(its:ite,1,j,p_dvel_cvasoaX) = 0.0
364 dvel(its:ite,1,j,p_dvel_cvasoa1) = m2cm*ddvel(its:ite,j,p_cvasoa1)
365 dvel(its:ite,1,j,p_dvel_cvasoa2) = m2cm*ddvel(its:ite,j,p_cvasoa2)
366 dvel(its:ite,1,j,p_dvel_cvasoa3) = m2cm*ddvel(its:ite,j,p_cvasoa3)
367 dvel(its:ite,1,j,p_dvel_cvasoa4) = m2cm*ddvel(its:ite,j,p_cvasoa4)
368 dvel(its:ite,1,j,p_dvel_cvbsoaX) = 0.0
369 dvel(its:ite,1,j,p_dvel_cvbsoa1) = m2cm*ddvel(its:ite,j,p_cvbsoa1)
370 dvel(its:ite,1,j,p_dvel_cvbsoa2) = m2cm*ddvel(its:ite,j,p_cvbsoa2)
371 dvel(its:ite,1,j,p_dvel_cvbsoa3) = m2cm*ddvel(its:ite,j,p_cvbsoa3)
372 dvel(its:ite,1,j,p_dvel_cvbsoa4) = m2cm*ddvel(its:ite,j,p_cvbsoa4)
376 ELSEIF ( config_flags%chem_opt == GOCART_SIMPLE ) then
377 call wesely_driver(id,ktau,dtstep, &
378 config_flags,current_month, &
379 gmt,julday,t_phy,moist,p8w,t8w,raincv, &
380 p_phy,chem,rho_phy,dz8w,ddvel,aer_res_def,aer_res_zcen, &
381 ivgtyp,tsk,gsw,vegfra,pbl,rmol,ust,znt,xlat,xlong,z,z_at_w,&
383 ids,ide, jds,jde, kds,kde, &
384 ims,ime, jms,jme, kms,kme, &
385 its,ite, jts,jte, kts,kte )
387 ! this does aerosol species (dust,seas, bc,oc) for gocart only
389 call gocart_drydep_driver(dtstep, &
390 config_flags,numgas, &
391 t_phy,moist,p8w,t8w,rmol,aer_res_def, &
392 p_phy,chem,rho_phy,dz8w,ddvel,xland,hfx, &
393 ivgtyp,tsk,vegfra,pbl,ust,znt,xlat,xlong, &
394 dustdrydep_1,dustdrydep_2,dustdrydep_3, &
395 dustdrydep_4,dustdrydep_5, &
397 ids,ide, jds,jde, kds,kde, &
398 ims,ime, jms,jme, kms,kme, &
399 its,ite, jts,jte, kts,kte )
400 ELSEIF ( config_flags%chem_opt == DUST) then
402 ! this does aerosol species (dust) for gocart only
404 call gocart_drydep_driver(dtstep, &
405 config_flags,numgas, &
406 t_phy,moist,p8w,t8w,rmol,aer_res_def, &
407 p_phy,chem,rho_phy,dz8w,ddvel,xland,hfx, &
408 ivgtyp,tsk,vegfra,pbl,ust,znt,xlat,xlong, &
409 dustdrydep_1,dustdrydep_2,dustdrydep_3, &
410 dustdrydep_4,dustdrydep_5, &
412 ids,ide, jds,jde, kds,kde, &
413 ims,ime, jms,jme, kms,kme, &
414 its,ite, jts,jte, kts,kte )
417 ELSEIF ( config_flags%chem_opt == GOCARTRACM_KPP) then
419 ! this does aerosol species (dust,seas, bc,oc) for gocart only
421 call wesely_driver(id,ktau,dtstep, &
422 config_flags,current_month, &
423 gmt,julday,t_phy,moist,p8w,t8w,raincv, &
424 p_phy,chem,rho_phy,dz8w,ddvel,aer_res_def,aer_res_zcen, &
425 ivgtyp,tsk,gsw,vegfra,pbl,rmol,ust,znt,xlat,xlong,z,z_at_w,&
427 ids,ide, jds,jde, kds,kde, &
428 ims,ime, jms,jme, kms,kme, &
429 its,ite, jts,jte, kts,kte )
430 call gocart_drydep_driver(dtstep, &
431 config_flags,numgas, &
432 t_phy,moist,p8w,t8w,rmol,aer_res_def, &
433 p_phy,chem,rho_phy,dz8w,ddvel,xland,hfx, &
434 ivgtyp,tsk,vegfra,pbl,ust,znt,xlat,xlong, &
435 dustdrydep_1,dustdrydep_2,dustdrydep_3, &
436 dustdrydep_4,dustdrydep_5, &
438 ids,ide, jds,jde, kds,kde, &
439 ims,ime, jms,jme, kms,kme, &
440 its,ite, jts,jte, kts,kte )
443 !Set dry deposition velocity to zero when using the
444 !chemistry tracer mode.
448 ! diagnose output dry deposition flux
449 if( config_flags%diagnostic_dep == 1) then
452 ddflx(i, j,1:numgas)=ddflx(i,j,1:numgas)+chem(i,kts,j,1:numgas)*p_phy(i,kts,j)/(RSI*t_phy(i,kts,j))*ddvel(i,j,1:numgas)*dtstep*1.E-6
457 if (config_flags%aer_aerodynres_opt == 2) then
458 ! use aerodynamic resistance from center of layer kts to surface
459 aer_res(:,:) = aer_res_zcen(:,:)
461 ! this is the default -- use aerodynamic resistance from
462 ! "default reference height" (currently 2 m) to surface
463 aer_res(:,:) = aer_res_def(:,:)
467 aer_mech_id_select: SELECT CASE(config_flags%chem_opt)
470 CASE (RADM2SORG,RADM2SORG_AQ,RADM2SORG_AQCHEM,RADM2SORG_KPP, &
471 RACM_ESRLSORG_KPP,RACM_SOA_VBS_KPP,RACM_SOA_VBS_AQCHEM_KPP, &
472 RACM_SOA_VBS_HET_KPP, &
473 CBMZSORG,CBMZSORG_AQ, &
474 CB05_SORG_AQ_KPP,CB05_SORG_VBS_AQ_KPP)
476 CASE (RACMSORG_AQ,RACMSORG_AQCHEM_KPP,RACM_ESRLSORG_AQCHEM_KPP,RACMSORG_KPP)
478 CASE ( CBMZ_MOSAIC_4BIN, CBMZ_MOSAIC_KPP, CBMZ_MOSAIC_8BIN, CBMZ_MOSAIC_4BIN_AQ, &
479 CBMZ_MOSAIC_8BIN_AQ,SAPRC99_MOSAIC_4BIN_VBS2_KPP, &
480 CBMZ_MOSAIC_DMS_4BIN, CBMZ_MOSAIC_DMS_8BIN, CBMZ_MOSAIC_DMS_4BIN_AQ, CBMZ_MOSAIC_DMS_8BIN_AQ, &
481 MOZART_MOSAIC_4BIN_KPP, MOZART_MOSAIC_4BIN_AQ_KPP, &
482 CRI_MOSAIC_8BIN_AQ_KPP, CRI_MOSAIC_4BIN_AQ_KPP, SAPRC99_MOSAIC_8BIN_VBS2_AQ_KPP, &!BSINGH(12/03/2013): Added SAPRC 8 bin
483 SAPRC99_MOSAIC_8BIN_VBS2_KPP)!BSINGH(04/04/2014): Added SAPRC 8 bin non-aq
485 CASE ( CBMZ_CAM_MAM3_NOAQ, CBMZ_CAM_MAM3_AQ, CBMZ_CAM_MAM7_NOAQ, CBMZ_CAM_MAM7_AQ )
489 END SELECT aer_mech_id_select
491 ! config_flags%aer_drydep_opt <= 0 -- aerosol depositon velocities are set to zero
492 ! config_flags%aer_drydep_opt >= 100 -- aerosol depvels are calculated in subr aer_depvel_driver
493 ! (see module_aer_drydep.F for details)
494 ! config_flags%aer_drydep_opt == 1 -- SORGAM chem packages use subr vdvg_2 of module_aerosols_sorgam.F
495 ! MOSAIC chem packages subr aerosol_depvel_2 of module_mosaic_drydep.F
496 ! config_flags%aer_drydep_opt == 11 -- SORGAM chem packages use subr vdvg of module_aerosols_sorgam.F
498 if ((config_flags%aer_drydep_opt <= 0) .or. (aer_mech_id <= 0)) then
499 CALL wrf_debug(15,'AEROSOL DRY DEP VELOCITIES = 0.0')
501 else if (config_flags%aer_drydep_opt <= 99) then
503 adrydep_select: SELECT CASE(config_flags%chem_opt)
504 CASE (RADM2SORG,RADM2SORG_AQ,RADM2SORG_AQCHEM,RADM2SORG_KPP,RACM_ESRLSORG_KPP,CBMZSORG,CBMZSORG_AQ)
505 CALL wrf_debug(15,'DOING DRY DEP VELOCITIES FOR AEROSOLS/RADM')
506 call sorgam_depdriver (id,config_flags,ktau,dtstep, &
507 ust,t_phy,moist,p8w,t8w,rmol,znt,pbl, &
508 alt,p_phy,chem,rho_phy,dz8w,z,z_at_w, &
509 h2oaj,h2oai,nu3,ac3,cor3,asulf,ahno3,anh3,cvaro1,cvaro2, &
510 cvalk1,cvole1,cvapi1,cvapi2,cvlim1,cvlim2, &
511 aer_res,ddvel(:,:,numgas+1:num_chem), &
512 numgas,ddflx(:,:,numgas+1:num_chem), &
514 ids,ide, jds,jde, kds,kde, &
515 ims,ime, jms,jme, kms,kme, &
516 its,ite, jts,jte, kts,kte )
517 CASE (RACMSORG_AQ,RACMSORG_AQCHEM_KPP,RACM_ESRLSORG_AQCHEM_KPP,RACMSORG_KPP)
518 CALL wrf_debug(15,'DOING DRY DEP VELOCITIES FOR AEROSOLS/RACM')
519 call sorgam_depdriver (id,config_flags,ktau,dtstep, &
520 ust,t_phy,moist,p8w,t8w,rmol,znt,pbl, &
521 alt,p_phy,chem,rho_phy,dz8w,z,z_at_w, &
522 h2oaj,h2oai,nu3,ac3,cor3,asulf,ahno3,anh3,cvaro1,cvaro2, &
523 cvalk1,cvole1,cvapi1,cvapi2,cvlim1,cvlim2, &
524 aer_res,ddvel(:,:,numgas+1:num_chem), &
525 numgas,ddflx(:,:,numgas+1:num_chem), &
527 ids,ide, jds,jde, kds,kde, &
528 ims,ime, jms,jme, kms,kme, &
529 its,ite, jts,jte, kts,kte )
530 CASE (CB05_SORG_AQ_KPP)
531 CALL wrf_debug(15,'DOING DRY DEP VELOCITIES FOR AEROSOLS/CB05')
532 call sorgam_depdriver (id,config_flags,ktau,dtstep, &
533 ust,t_phy,moist,p8w,t8w,rmol,znt,pbl, &
534 alt,p_phy,chem,rho_phy,dz8w,z,z_at_w, &
535 h2oaj,h2oai,nu3,ac3,cor3,asulf,ahno3,anh3,cvaro1,cvaro2, &
536 cvalk1,cvole1,cvapi1,cvapi2,cvlim1,cvlim2, &
537 aer_res,ddvel(:,:,numgas+1:num_chem), &
538 numgas,ddflx(:,:,numgas+1:num_chem), &
540 ids,ide, jds,jde, kds,kde, &
541 ims,ime, jms,jme, kms,kme, &
542 its,ite, jts,jte, kts,kte )
543 CASE (CB05_SORG_VBS_AQ_KPP)
544 CALL wrf_debug(15,'DOING DRY DEP VELOCITIES FOR AEROSOLS/CB05')
545 call sorgam_vbs_depdriver (id,config_flags,ktau,dtstep, &
546 ust,t_phy,moist,p8w,t8w,rmol,znt,pbl, &
547 alt,p_phy,chem,rho_phy,dz8w,rh,z,z_at_w, &
548 h2oaj,h2oai,nu3,ac3,cor3,asulf,ahno3,anh3, &
549 aer_res,ddvel(:,:,numgas+1:num_chem), &
550 numgas,ddflx(:,:,numgas+1:num_chem), &
552 ids,ide, jds,jde, kds,kde, &
553 ims,ime, jms,jme, kms,kme, &
554 its,ite, jts,jte, kts,kte )
556 CASE ( CBMZ_MOSAIC_4BIN, CBMZ_MOSAIC_KPP, CBMZ_MOSAIC_8BIN, CBMZ_MOSAIC_4BIN_AQ, CBMZ_MOSAIC_8BIN_AQ, &
557 CBMZ_MOSAIC_DMS_4BIN, CBMZ_MOSAIC_DMS_8BIN, CBMZ_MOSAIC_DMS_4BIN_AQ, CBMZ_MOSAIC_DMS_8BIN_AQ, &
558 SAPRC99_MOSAIC_4BIN_VBS2_KPP, &
559 MOZART_MOSAIC_4BIN_KPP, MOZART_MOSAIC_4BIN_AQ_KPP, &
560 CRI_MOSAIC_8BIN_AQ_KPP, CRI_MOSAIC_4BIN_AQ_KPP, &
561 SAPRC99_MOSAIC_8BIN_VBS2_AQ_KPP,SAPRC99_MOSAIC_8BIN_VBS2_KPP)!BSINGH(12/03/2013): Added SAPRC 8 bin and non-aq on 04/04/2014
562 CALL wrf_debug(15,'DOING DRY DEP VELOCITIES FOR MOSAIC AEROSOLS')
563 call mosaic_drydep_driver( &
564 id, curr_secs, ktau, dtstep, config_flags, &
566 t_phy, rho_phy, p_phy, &
568 moist, chem, ddvel, &
569 ids,ide, jds,jde, kds,kde, &
570 ims,ime, jms,jme, kms,kme, &
571 its,ite, jts,jte, kts,kte )
573 CASE ( RACM_SOA_VBS_KPP,RACM_SOA_VBS_AQCHEM_KPP )
574 CALL wrf_debug(15,'DOING DRY DEP VELOCITIES FOR SOA_VBS AEROSOLS')
575 call soa_vbs_depdriver (id,config_flags,ktau,dtstep, &
576 ust,t_phy,moist,p8w,t8w,rmol,znt,pbl, &
577 alt,p_phy,chem,rho_phy,dz8w,rh,z,z_at_w, &
578 h2oaj,h2oai,nu3,ac3,cor3,asulf,ahno3,anh3, &
579 aer_res,ddvel(:,:,numgas+1:num_chem), &
581 ids,ide, jds,jde, kds,kde, &
582 ims,ime, jms,jme, kms,kme, &
583 its,ite, jts,jte, kts,kte )
584 CASE ( RACM_SOA_VBS_HET_KPP )
585 CALL wrf_debug(15,'DOING DRY DEP VELOCITIES FOR SOA_VBS_HET AEROSOLS')
586 call soa_vbs_het_depdriver (id,config_flags,ktau,dtstep, &
587 ust,t_phy,moist,p8w,t8w,rmol,znt,pbl, &
588 alt,p_phy,chem,rho_phy,dz8w,rh,z,z_at_w, &
589 h2oaj,h2oai,nu3,ac3,cor3,asulf,ahno3,anh3, &
590 aer_res,ddvel(:,:,numgas+1:num_chem), &
592 ids,ide, jds,jde, kds,kde, &
593 ims,ime, jms,jme, kms,kme, &
594 its,ite, jts,jte, kts,kte )
595 CASE (CBMZ_CAM_MAM3_NOAQ, CBMZ_CAM_MAM3_AQ, CBMZ_CAM_MAM7_NOAQ, CBMZ_CAM_MAM7_AQ)
596 CALL wrf_debug(15,'DOING DRY DEP VELOCITIES FOR CAM_MAM AEROSOLS')
597 call cam_mam_drydep_driver( &
598 id, curr_secs, ktau, dtstep, config_flags, &
600 t_phy, rho_phy, p_phy, &
602 moist, chem, ddvel, &
603 ids,ide, jds,jde, kds,kde, &
604 ims,ime, jms,jme, kms,kme, &
605 its,ite, jts,jte, kts,kte )
609 END SELECT adrydep_select
610 else ! (config_flags%aer_drydep_opt > 99)
611 CALL wrf_debug(15,'DOING DRY DEP VELOCITIES THRU AER_DRYDEP_DRIVER')
612 call aer_drydep_driver( &
613 id, ktau, dtstep, config_flags, aer_mech_id, &
615 t_phy, rho_phy, p_phy, &
616 alt, p8w, t8w, dz8w, z, z_at_w, &
617 ust, aer_res, ivgtyp, vegfra, pbl, rmol, znt, &
618 moist, chem, ddvel, &
619 h2oai, h2oaj, numgas, &
620 ids,ide, jds,jde, kds,kde, &
621 ims,ime, jms,jme, kms,kme, &
622 its,ite, jts,jte, kts,kte )
624 if (config_flags%aer_drydep_opt > 0) then
625 if ((aer_mech_id > 0) .and. (aer_mech_id <= 4)) then
626 ! limit aerosol ddvels to <= 0.5 m/s
627 ! drydep routines occasionally produce unrealistically-large particle
628 ! diameter leading to unrealistically-large sedimentation velocity
629 ddvel(:,:,numgas+1:num_chem) = min( 0.50, ddvel(:,:,numgas+1:num_chem) )
633 !For MAM aersols dry deposition
634 if ((aer_mech_id == 4)) then
635 do m_mam = 1, num_chem
636 !Look for species with _a or _c and adjust these species for dry deposition
637 k_a = index(trim(adjustl(chem_dname_table(1,m_mam))),'_a') !To include *_a* species
638 k_c = index(trim(adjustl(chem_dname_table(1,m_mam))),'_c') !To include *_c* species
640 if(kmax > 0 ) then !kmax>0 means a species has _a or _c
641 frac_removed(its:ite,jts:jte) = max( 0.0, min( 1.0, ddvel(its:ite,jts:jte,m_mam)*dtstep/dz8w(its:ite,1,jts:jte) ) )
642 chem(its:ite,1,jts:jte,m_mam) = chem(its:ite,1,jts:jte,m_mam)*(1.0 - frac_removed(its:ite,jts:jte)) !update lowest layer
649 END SELECT drydep_select
651 ! Add dep_vel here for all aerosol and gas species in the dvel array
652 ll = max( 1, min( config_flags%ndepvel, num_vert_mix ) )
653 dep_vel(:,:,:,:) = 0.
656 do k=1,config_flags%kdepvel
658 dep_vel(i,k,j,l) = ddvel(i,j,l)
664 ! This will be called later from subgrd_transport_driver.F !!!!!!!!
667 if( config_flags%diagnostic_dep == 1) then
668 ddlen(its:ite,jts:jte,:)=ddlen(its:ite,jts:jte,:)+ddvel(its:ite,jts:jte,:)*m2cm
672 if (num_vert_mix == 0) then
679 !-- start with vertical mixing
682 zzfull(k)=z_at_w(i,k,j)-z_at_w(i,kts,j)
685 ekmfull(k)=max(1.e-6,exch_h(i,k,j))
690 !!$! UNCOMMENT THIS AND FINE TUNE LEVELS TO YOUR DOMAIN IF YOU WANT TO
691 !!$! FORCE MIXING ESPECIALLY OVER URBAN AREAS TO A CERTAIN DEPTH:
693 !!$! --- Mix the emissions up several layers in urban areas if no urban surface physics
694 !!$! if e_co > 0., the grid cell should not be over water
695 !!$! if e_co > 200, the grid cell should be over a large urban region
697 ! Do NOT increase mixing at surface/kts, where exch==0
698 ! this code is wrong - doesn't work if e_co is == param_first_scalar
699 ! (like it happened to be the case for MOZCART)
700 ! if (p_e_co > param_first_scalar )then
701 if (p_e_co >= param_first_scalar )then
702 if (sf_urban_physics .eq. 0 ) then
703 if (emis_ant(i,kts,j,p_e_co) .gt. 0) then
704 ekmfull(kts+1:kts+10) = max(ekmfull(kts+1:kts+10),1.)
706 if (emis_ant(i,kts,j,p_e_co) .gt. 200) then
707 ekmfull(kts+1:kte/2) = max(ekmfull(kts+1:kte/2),2.)
709 if (p_e_pm25i > param_first_scalar )then
710 if (emis_ant(i,kts,j,p_e_pm25i)+ emis_ant(i,kts,j,p_e_pm25j) .GT. 8.19e-4*200) then
711 ekmfull(kts+1:kte/2) = max(ekmfull(kts+1:kte/2),2.)
714 if (p_e_pm_25 > param_first_scalar )then
715 if (emis_ant(i,kts,j,p_e_pm_25) .GT. 8.19e-4*200) then
716 ekmfull(kts+1:kte/2) = max(ekmfull(kts+1:kte/2),2.)
721 !!$! --- Mix the emissions up several layers when satellite data shows a wildfire
722 !!$! if ebu_in_e_co > 0., a wildfire exists so increase vertical mixing
723 ! if (p_ebu_in_co > param_first_scalar )then
724 if (p_ebu_in_co >= param_first_scalar )then
725 if (ebu_in(i,1,j,p_ebu_in_co) .gt. 0) then
726 ekmfull(kts+1:kte/2) = max(ekmfull(kts+1:kte/2),2.)
731 zz(k)=z(i,k,j)-z_at_w(i,kts,j)
734 ! vertical mixing routine (including deposition)
735 ! need to be careful here with that dumm tracer in spot 1
736 ! do not need lho,lho2
737 ! (03-may-2006 rce - calc dryrho_1d and pass it to vertmx)
739 dep_vel_o3(i,j)=ddvel(i,j,p_o3)
741 if(is_CAMMGMP_used .and. .not.vertMixAero(nv))cycle !Balwinder.Singh@pnnl.gov: Do mix constituents which are already mixed by CAMMGMP microphysics
743 pblst(k)=max(epsilc,chem(i,k,j,nv))
744 dryrho_1d(k) = 1./alt(i,k,j)
747 mix_select: SELECT CASE(config_flags%chem_opt)
748 CASE (RADM2SORG_AQ, RADM2SORG_AQCHEM, RACMSORG_AQ, RACMSORG_AQCHEM_KPP, RACM_ESRLSORG_AQCHEM_KPP, CBMZ_MOSAIC_4BIN_AQ, &
749 CBMZ_MOSAIC_8BIN_AQ, CBMZSORG_AQ, CBMZ_MOSAIC_DMS_4BIN, CBMZ_MOSAIC_DMS_8BIN, CBMZ_MOSAIC_DMS_4BIN_AQ, &
750 CBMZ_MOSAIC_DMS_8BIN_AQ, CRI_MOSAIC_8BIN_AQ_KPP, CRI_MOSAIC_4BIN_AQ_KPP, &
751 MOZART_MOSAIC_4BIN_AQ_KPP, RACM_SOA_VBS_AQCHEM_KPP, &
752 SAPRC99_MOSAIC_8BIN_VBS2_AQ_KPP, &
753 CB05_SORG_AQ_KPP, CB05_SORG_VBS_AQ_KPP)
754 if(.not.is_aerosol(nv))then ! mix gases not aerosol
755 if (.not.config_flags%mynn_chem_vertmx) then
756 call vertmx(dtstep,pblst,ekmfull,dryrho_1d, &
757 zzfull,zz,ddvel(i,j,nv),kts,kte)
760 !The default case below does turbulent mixing for all gas and aerosol species
761 !If aqueous phase is not activated
762 !It requires ddvel array as a boundary condition near surface for flux of species
763 !The top boundary condition for eddy diffusivity is zero
765 if (.not.config_flags%mynn_chem_vertmx) then
766 call vertmx(dtstep,pblst,ekmfull,dryrho_1d, &
767 zzfull,zz,ddvel(i,j,nv),kts,kte)
769 END SELECT mix_select
772 ! dry deposition is combined with vertical mixing, but column independent.
773 ! Hence, all molecules lost per column must be dry deposited.
775 ! old and new column totals (mol/m2 or ug/m2)
781 if (nv <= numgas) then
782 ! from ppmv to mol/m2
783 ! fac = 1e-6 * rho * 1/mw_air * dz
785 fac = 1e-6 * dryrho_1d(k) * 1./(mwdry*1.e-3) * dz8w(i,k,j)
787 ! from ug/kg to ug/m2
790 fac = dryrho_1d(k) * dz8w(i,k,j)
793 old = old + max(epsilc,chem(i,k,j,nv)) * fac
794 new = new + max(epsilc,pblst(k)) * fac
797 ! we ignore (spurious) and add new dry deposition to
798 ! existing field (accumulated deposition!)
799 ddmassn(nv) = max( 0.0, (old - new) )
802 chem(i,k,j,nv)=max(epsilc,pblst(k))
806 if( config_flags%diagnostic_chem == DEPVEL1 .and. &
807 (config_flags%chem_opt == CB05_SORG_VBS_AQ_KPP) ) then
808 dvel(i,1,j,p_ddmass_o3) = dvel(i,1,j,p_ddmass_o3) + ddmassn(p_o3)
809 dvel(i,1,j,p_ddmass_no) = dvel(i,1,j,p_ddmass_no) + ddmassn(p_no)
810 dvel(i,1,j,p_ddmass_no2) = dvel(i,1,j,p_ddmass_no2) + ddmassn(p_no2)
811 dvel(i,1,j,p_ddmass_nh3) = dvel(i,1,j,p_ddmass_nh3) + ddmassn(p_nh3)
812 dvel(i,1,j,p_ddmass_hno3) = dvel(i,1,j,p_ddmass_hno3) + ddmassn(p_hno3)
813 dvel(i,1,j,p_ddmass_so2) = dvel(i,1,j,p_ddmass_so2) + ddmassn(p_so2)
814 dvel(i,1,j,p_ddmass_so4) = dvel(i,1,j,p_ddmass_so4) + ddmassn(p_sulf)
815 dvel(i,1,j,p_ddmass_so4aj) = dvel(i,1,j,p_ddmass_so4aj) + ddmassn(p_so4aj)
816 dvel(i,1,j,p_ddmass_so4ai) = dvel(i,1,j,p_ddmass_so4ai) + ddmassn(p_so4ai)
817 dvel(i,1,j,p_ddmass_no3aj) = dvel(i,1,j,p_ddmass_no3aj) + ddmassn(p_no3aj)
818 dvel(i,1,j,p_ddmass_no3ai) = dvel(i,1,j,p_ddmass_no3ai) + ddmassn(p_no3ai)
819 dvel(i,1,j,p_ddmass_nh4aj) = dvel(i,1,j,p_ddmass_nh4aj) + ddmassn(p_nh4aj)
820 dvel(i,1,j,p_ddmass_nh4ai) = dvel(i,1,j,p_ddmass_nh4ai) + ddmassn(p_nh4ai)
823 if( config_flags%diagnostic_chem == DEPVEL1 .and. &
824 (config_flags%chem_opt == MOZCART_KPP .or. &
825 config_flags%chem_opt == T1_MOZCART_KPP .or. &
826 config_flags%chem_opt == MOZART_KPP .or. &
827 config_flags%chem_opt == MOZART_MOSAIC_4BIN_KPP .or. &
828 config_flags%chem_opt == MOZART_MOSAIC_4BIN_AQ_KPP) ) then
830 dvel(i,1,j,p_ddmass_o3) = dvel(i,1,j,p_ddmass_o3) + ddmassn(p_o3)
831 dvel(i,1,j,p_ddmass_no) = dvel(i,1,j,p_ddmass_no) + ddmassn(p_no)
832 dvel(i,1,j,p_ddmass_no2) = dvel(i,1,j,p_ddmass_no2) + ddmassn(p_no2)
833 dvel(i,1,j,p_ddmass_nh3) = dvel(i,1,j,p_ddmass_nh3) + ddmassn(p_nh3)
834 dvel(i,1,j,p_ddmass_hno3) = dvel(i,1,j,p_ddmass_hno3) + ddmassn(p_hno3)
835 dvel(i,1,j,p_ddmass_hno4) = dvel(i,1,j,p_ddmass_hno4) + ddmassn(p_hno4)
836 dvel(i,1,j,p_ddmass_h2o2) = dvel(i,1,j,p_ddmass_h2o2) + ddmassn(p_h2o2)
837 dvel(i,1,j,p_ddmass_co) = dvel(i,1,j,p_ddmass_co) + ddmassn(p_co)
838 dvel(i,1,j,p_ddmass_ch3ooh) = dvel(i,1,j,p_ddmass_ch3ooh) + ddmassn(p_ch3ooh)
839 dvel(i,1,j,p_ddmass_hcho) = dvel(i,1,j,p_ddmass_hcho) + ddmassn(p_hcho)
840 dvel(i,1,j,p_ddmass_ch3oh) = dvel(i,1,j,p_ddmass_ch3oh) + ddmassn(p_ch3oh)
841 dvel(i,1,j,p_ddmass_eo2) = dvel(i,1,j,p_ddmass_eo2) + ddmassn(p_eo2)
842 dvel(i,1,j,p_ddmass_ald) = dvel(i,1,j,p_ddmass_ald) + ddmassn(p_ald)
843 dvel(i,1,j,p_ddmass_ch3cooh) = dvel(i,1,j,p_ddmass_ch3cooh) + ddmassn(p_ch3cooh)
844 dvel(i,1,j,p_ddmass_acet) = dvel(i,1,j,p_ddmass_acet) + ddmassn(p_acet)
845 dvel(i,1,j,p_ddmass_mgly) = dvel(i,1,j,p_ddmass_mgly) + ddmassn(p_mgly)
846 dvel(i,1,j,p_ddmass_gly) = dvel(i,1,j,p_ddmass_gly) + ddmassn(p_gly)
847 dvel(i,1,j,p_ddmass_paa) = dvel(i,1,j,p_ddmass_paa) + ddmassn(p_paa)
848 dvel(i,1,j,p_ddmass_pooh) = dvel(i,1,j,p_ddmass_pooh) + ddmassn(p_c3h6ooh)
849 dvel(i,1,j,p_ddmass_mpan) = dvel(i,1,j,p_ddmass_mpan) + ddmassn(p_mpan)
850 dvel(i,1,j,p_ddmass_mco3) = dvel(i,1,j,p_ddmass_mco3) + ddmassn(p_mco3)
851 dvel(i,1,j,p_ddmass_mvkooh) = dvel(i,1,j,p_ddmass_mvkooh) + ddmassn(p_mvkooh)
852 dvel(i,1,j,p_ddmass_c2h5oh) = dvel(i,1,j,p_ddmass_c2h5oh) + ddmassn(p_c2h5oh)
853 dvel(i,1,j,p_ddmass_etooh) = dvel(i,1,j,p_ddmass_etooh) + ddmassn(p_etooh)
854 dvel(i,1,j,p_ddmass_prooh) = dvel(i,1,j,p_ddmass_prooh) + ddmassn(p_prooh)
855 dvel(i,1,j,p_ddmass_acetp) = dvel(i,1,j,p_ddmass_acetp) + ddmassn(p_acetp)
856 dvel(i,1,j,p_ddmass_onit) = dvel(i,1,j,p_ddmass_onit) + ddmassn(p_onit)
857 dvel(i,1,j,p_ddmass_onitr) = dvel(i,1,j,p_ddmass_onitr) + ddmassn(p_onitr)
858 dvel(i,1,j,p_ddmass_isooh) = dvel(i,1,j,p_ddmass_isooh) + ddmassn(p_isooh)
859 dvel(i,1,j,p_ddmass_acetol) = dvel(i,1,j,p_ddmass_acetol) + ddmassn(p_acetol)
860 dvel(i,1,j,p_ddmass_glyald) = dvel(i,1,j,p_ddmass_glyald) + ddmassn(p_glyald)
861 dvel(i,1,j,p_ddmass_hydrald) = dvel(i,1,j,p_ddmass_hydrald) + ddmassn(p_hydrald)
862 dvel(i,1,j,p_ddmass_alkooh) = dvel(i,1,j,p_ddmass_alkooh) + ddmassn(p_alkooh)
863 dvel(i,1,j,p_ddmass_mekooh) = dvel(i,1,j,p_ddmass_mekooh) + ddmassn(p_mekooh)
864 dvel(i,1,j,p_ddmass_tolooh) = dvel(i,1,j,p_ddmass_tolooh) + ddmassn(p_tolooh)
865 dvel(i,1,j,p_ddmass_xooh) = dvel(i,1,j,p_ddmass_xooh) + ddmassn(p_xooh)
866 dvel(i,1,j,p_ddmass_so2) = dvel(i,1,j,p_ddmass_so2) + ddmassn(p_so2)
867 dvel(i,1,j,p_ddmass_so4) = dvel(i,1,j,p_ddmass_so4) + ddmassn(p_sulf)
868 dvel(i,1,j,p_ddmass_pan) = dvel(i,1,j,p_ddmass_pan) + ddmassn(p_pan)
869 dvel(i,1,j,p_ddmass_terpooh) = dvel(i,1,j,p_ddmass_terpooh) + ddmassn(p_terpooh)
871 if (config_flags%chem_opt == MOZART_MOSAIC_4BIN_AQ_KPP) then
872 dvel(i,1,j,p_ddmass_cvasoaX) = dvel(i,1,j,p_ddmass_cvasoaX) + ddmassn(p_cvasoaX)
873 dvel(i,1,j,p_ddmass_cvasoa1) = dvel(i,1,j,p_ddmass_cvasoa1) + ddmassn(p_cvasoa1)
874 dvel(i,1,j,p_ddmass_cvasoa2) = dvel(i,1,j,p_ddmass_cvasoa2) + ddmassn(p_cvasoa2)
875 dvel(i,1,j,p_ddmass_cvasoa3) = dvel(i,1,j,p_ddmass_cvasoa3) + ddmassn(p_cvasoa3)
876 dvel(i,1,j,p_ddmass_cvasoa4) = dvel(i,1,j,p_ddmass_cvasoa4) + ddmassn(p_cvasoa4)
877 dvel(i,1,j,p_ddmass_cvbsoaX) = dvel(i,1,j,p_ddmass_cvbsoaX) + ddmassn(p_cvbsoaX)
878 dvel(i,1,j,p_ddmass_cvbsoa1) = dvel(i,1,j,p_ddmass_cvbsoa1) + ddmassn(p_cvbsoa1)
879 dvel(i,1,j,p_ddmass_cvbsoa2) = dvel(i,1,j,p_ddmass_cvbsoa2) + ddmassn(p_cvbsoa2)
880 dvel(i,1,j,p_ddmass_cvbsoa3) = dvel(i,1,j,p_ddmass_cvbsoa3) + ddmassn(p_cvbsoa3)
881 dvel(i,1,j,p_ddmass_cvbsoa4) = dvel(i,1,j,p_ddmass_cvbsoa4) + ddmassn(p_cvbsoa4)
884 if (config_flags%chem_opt == MOZART_MOSAIC_4BIN_KPP .or. &
885 config_flags%chem_opt == MOZART_MOSAIC_4BIN_AQ_KPP) then
887 dvel(i,1,j,p_ddmass_so4_a01) = dvel(i,1,j,p_ddmass_so4_a01) + ddmassn(p_so4_a01)
888 dvel(i,1,j,p_ddmass_no3_a01) = dvel(i,1,j,p_ddmass_no3_a01) + ddmassn(p_no3_a01)
889 dvel(i,1,j,p_ddmass_cl_a01) = dvel(i,1,j,p_ddmass_cl_a01) + ddmassn(p_cl_a01)
890 dvel(i,1,j,p_ddmass_nh4_a01) = dvel(i,1,j,p_ddmass_nh4_a01) + ddmassn(p_nh4_a01)
891 dvel(i,1,j,p_ddmass_na_a01) = dvel(i,1,j,p_ddmass_na_a01) + ddmassn(p_na_a01)
892 dvel(i,1,j,p_ddmass_oin_a01) = dvel(i,1,j,p_ddmass_oin_a01) + ddmassn(p_oin_a01)
893 dvel(i,1,j,p_ddmass_oc_a01) = dvel(i,1,j,p_ddmass_oc_a01) + ddmassn(p_oc_a01)
894 dvel(i,1,j,p_ddmass_bc_a01) = dvel(i,1,j,p_ddmass_bc_a01) + ddmassn(p_bc_a01)
895 dvel(i,1,j,p_ddmass_so4_a02) = dvel(i,1,j,p_ddmass_so4_a02) + ddmassn(p_so4_a02)
896 dvel(i,1,j,p_ddmass_no3_a02) = dvel(i,1,j,p_ddmass_no3_a02) + ddmassn(p_no3_a02)
897 dvel(i,1,j,p_ddmass_cl_a02) = dvel(i,1,j,p_ddmass_cl_a02) + ddmassn(p_cl_a02)
898 dvel(i,1,j,p_ddmass_nh4_a02) = dvel(i,1,j,p_ddmass_nh4_a02) + ddmassn(p_nh4_a02)
899 dvel(i,1,j,p_ddmass_na_a02) = dvel(i,1,j,p_ddmass_na_a02) + ddmassn(p_na_a02)
900 dvel(i,1,j,p_ddmass_oin_a02) = dvel(i,1,j,p_ddmass_oin_a02) + ddmassn(p_oin_a02)
901 dvel(i,1,j,p_ddmass_oc_a02) = dvel(i,1,j,p_ddmass_oc_a02) + ddmassn(p_oc_a02)
902 dvel(i,1,j,p_ddmass_bc_a02) = dvel(i,1,j,p_ddmass_bc_a02) + ddmassn(p_bc_a02)
903 dvel(i,1,j,p_ddmass_so4_a03) = dvel(i,1,j,p_ddmass_so4_a03) + ddmassn(p_so4_a03)
904 dvel(i,1,j,p_ddmass_no3_a03) = dvel(i,1,j,p_ddmass_no3_a03) + ddmassn(p_no3_a03)
905 dvel(i,1,j,p_ddmass_cl_a03) = dvel(i,1,j,p_ddmass_cl_a03) + ddmassn(p_cl_a03)
906 dvel(i,1,j,p_ddmass_nh4_a03) = dvel(i,1,j,p_ddmass_nh4_a03) + ddmassn(p_nh4_a03)
907 dvel(i,1,j,p_ddmass_na_a03) = dvel(i,1,j,p_ddmass_na_a03) + ddmassn(p_na_a03)
908 dvel(i,1,j,p_ddmass_oin_a03) = dvel(i,1,j,p_ddmass_oin_a03) + ddmassn(p_oin_a03)
909 dvel(i,1,j,p_ddmass_oc_a03) = dvel(i,1,j,p_ddmass_oc_a03) + ddmassn(p_oc_a03)
910 dvel(i,1,j,p_ddmass_bc_a03) = dvel(i,1,j,p_ddmass_bc_a03) + ddmassn(p_bc_a03)
911 dvel(i,1,j,p_ddmass_so4_a04) = dvel(i,1,j,p_ddmass_so4_a04) + ddmassn(p_so4_a04)
912 dvel(i,1,j,p_ddmass_no3_a04) = dvel(i,1,j,p_ddmass_no3_a04) + ddmassn(p_no3_a04)
913 dvel(i,1,j,p_ddmass_cl_a04) = dvel(i,1,j,p_ddmass_cl_a04) + ddmassn(p_cl_a04)
914 dvel(i,1,j,p_ddmass_nh4_a04) = dvel(i,1,j,p_ddmass_nh4_a04) + ddmassn(p_nh4_a04)
915 dvel(i,1,j,p_ddmass_na_a04) = dvel(i,1,j,p_ddmass_na_a04) + ddmassn(p_na_a04)
916 dvel(i,1,j,p_ddmass_oin_a04) = dvel(i,1,j,p_ddmass_oin_a04) + ddmassn(p_oin_a04)
917 dvel(i,1,j,p_ddmass_oc_a04) = dvel(i,1,j,p_ddmass_oc_a04) + ddmassn(p_oc_a04)
918 dvel(i,1,j,p_ddmass_bc_a04) = dvel(i,1,j,p_ddmass_bc_a04) + ddmassn(p_bc_a04)
920 dvel(i,1,j,p_ddmass_ca_a01) = dvel(i,1,j,p_ddmass_ca_a01) + ddmassn(p_ca_a01)
921 dvel(i,1,j,p_ddmass_ca_a02) = dvel(i,1,j,p_ddmass_ca_a02) + ddmassn(p_ca_a02)
922 dvel(i,1,j,p_ddmass_ca_a03) = dvel(i,1,j,p_ddmass_ca_a03) + ddmassn(p_ca_a03)
923 dvel(i,1,j,p_ddmass_ca_a04) = dvel(i,1,j,p_ddmass_ca_a04) + ddmassn(p_ca_a04)
925 dvel(i,1,j,p_ddmass_co3_a01) = dvel(i,1,j,p_ddmass_co3_a01) + ddmassn(p_co3_a01)
926 dvel(i,1,j,p_ddmass_co3_a02) = dvel(i,1,j,p_ddmass_co3_a02) + ddmassn(p_co3_a02)
927 dvel(i,1,j,p_ddmass_co3_a03) = dvel(i,1,j,p_ddmass_co3_a03) + ddmassn(p_co3_a03)
928 dvel(i,1,j,p_ddmass_co3_a04) = dvel(i,1,j,p_ddmass_co3_a04) + ddmassn(p_co3_a04)
930 if (config_flags%chem_opt == MOZART_MOSAIC_4BIN_KPP .OR. &
931 config_flags%chem_opt == MOZART_MOSAIC_4BIN_AQ_KPP) then
932 dvel(i,1,j,p_ddmass_glysoa_a01) = dvel(i,1,j,p_ddmass_glysoa_a01) + &
933 ddmassn(p_glysoa_r1_a01) + &
934 ddmassn(p_glysoa_r2_a01) + &
935 ddmassn(p_glysoa_oh_a01) + &
936 ddmassn(p_glysoa_sfc_a01) + &
937 ddmassn(p_glysoa_nh4_a01)
939 dvel(i,1,j,p_ddmass_glysoa_a02) = dvel(i,1,j,p_ddmass_glysoa_a02) + &
940 ddmassn(p_glysoa_r1_a02) + &
941 ddmassn(p_glysoa_r2_a02) + &
942 ddmassn(p_glysoa_oh_a02) + &
943 ddmassn(p_glysoa_sfc_a02) + &
944 ddmassn(p_glysoa_nh4_a02)
946 dvel(i,1,j,p_ddmass_glysoa_a03) = dvel(i,1,j,p_ddmass_glysoa_a03) + &
947 ddmassn(p_glysoa_r1_a03) + &
948 ddmassn(p_glysoa_r2_a03) + &
949 ddmassn(p_glysoa_oh_a03) + &
950 ddmassn(p_glysoa_sfc_a03) + &
951 ddmassn(p_glysoa_nh4_a03)
953 dvel(i,1,j,p_ddmass_glysoa_a04) = dvel(i,1,j,p_ddmass_glysoa_a04) + &
954 ddmassn(p_glysoa_r1_a04) + &
955 ddmassn(p_glysoa_r2_a04) + &
956 ddmassn(p_glysoa_oh_a04) + &
957 ddmassn(p_glysoa_sfc_a04) + &
958 ddmassn(p_glysoa_nh4_a04)
961 if (config_flags%chem_opt == MOZART_MOSAIC_4BIN_KPP) then
963 dvel(i,1,j,p_ddmass_smpa_a01) = dvel(i,1,j,p_ddmass_smpa_a01) + ddmassn(p_smpa_a01)
964 dvel(i,1,j,p_ddmass_smpbb_a01) = dvel(i,1,j,p_ddmass_smpbb_a01) + ddmassn(p_smpbb_a01)
965 dvel(i,1,j,p_ddmass_biog1_c_a01) = dvel(i,1,j,p_ddmass_biog1_c_a01) + ddmassn(p_biog1_c_a01)
966 dvel(i,1,j,p_ddmass_biog1_o_a01) = dvel(i,1,j,p_ddmass_biog1_o_a01) + ddmassn(p_biog1_o_a01)
968 dvel(i,1,j,p_ddmass_smpa_a02) = dvel(i,1,j,p_ddmass_smpa_a02) + ddmassn(p_smpa_a02)
969 dvel(i,1,j,p_ddmass_smpbb_a02) = dvel(i,1,j,p_ddmass_smpbb_a02) + ddmassn(p_smpbb_a02)
970 dvel(i,1,j,p_ddmass_biog1_c_a02) = dvel(i,1,j,p_ddmass_biog1_c_a02) + ddmassn(p_biog1_c_a02)
971 dvel(i,1,j,p_ddmass_biog1_o_a02) = dvel(i,1,j,p_ddmass_biog1_o_a02) + ddmassn(p_biog1_o_a02)
973 dvel(i,1,j,p_ddmass_smpa_a03) = dvel(i,1,j,p_ddmass_smpa_a03) + ddmassn(p_smpa_a03)
974 dvel(i,1,j,p_ddmass_smpbb_a03) = dvel(i,1,j,p_ddmass_smpbb_a03) + ddmassn(p_smpbb_a03)
975 dvel(i,1,j,p_ddmass_biog1_c_a03) = dvel(i,1,j,p_ddmass_biog1_c_a03) + ddmassn(p_biog1_c_a03)
976 dvel(i,1,j,p_ddmass_biog1_o_a03) = dvel(i,1,j,p_ddmass_biog1_o_a03) + ddmassn(p_biog1_o_a03)
978 dvel(i,1,j,p_ddmass_smpa_a04) = dvel(i,1,j,p_ddmass_smpa_a04) + ddmassn(p_smpa_a04)
979 dvel(i,1,j,p_ddmass_smpbb_a04) = dvel(i,1,j,p_ddmass_smpbb_a04) + ddmassn(p_smpbb_a04)
980 dvel(i,1,j,p_ddmass_biog1_c_a04) = dvel(i,1,j,p_ddmass_biog1_c_a04) + ddmassn(p_biog1_c_a04)
981 dvel(i,1,j,p_ddmass_biog1_o_a04) = dvel(i,1,j,p_ddmass_biog1_o_a04) + ddmassn(p_biog1_o_a04)
985 if (config_flags%chem_opt == MOZART_MOSAIC_4BIN_AQ_KPP) then
987 dvel(i,1,j,p_ddmass_asoaX_a01) = dvel(i,1,j,p_ddmass_asoaX_a01) + ddmassn(p_asoaX_a01)
988 dvel(i,1,j,p_ddmass_asoa1_a01) = dvel(i,1,j,p_ddmass_asoa1_a01) + ddmassn(p_asoa1_a01)
989 dvel(i,1,j,p_ddmass_asoa2_a01) = dvel(i,1,j,p_ddmass_asoa2_a01) + ddmassn(p_asoa2_a01)
990 dvel(i,1,j,p_ddmass_asoa3_a01) = dvel(i,1,j,p_ddmass_asoa3_a01) + ddmassn(p_asoa3_a01)
991 dvel(i,1,j,p_ddmass_asoa4_a01) = dvel(i,1,j,p_ddmass_asoa4_a01) + ddmassn(p_asoa4_a01)
992 dvel(i,1,j,p_ddmass_bsoaX_a01) = dvel(i,1,j,p_ddmass_bsoaX_a01) + ddmassn(p_bsoaX_a01)
993 dvel(i,1,j,p_ddmass_bsoa1_a01) = dvel(i,1,j,p_ddmass_bsoa1_a01) + ddmassn(p_bsoa1_a01)
994 dvel(i,1,j,p_ddmass_bsoa2_a01) = dvel(i,1,j,p_ddmass_bsoa2_a01) + ddmassn(p_bsoa2_a01)
995 dvel(i,1,j,p_ddmass_bsoa3_a01) = dvel(i,1,j,p_ddmass_bsoa3_a01) + ddmassn(p_bsoa3_a01)
996 dvel(i,1,j,p_ddmass_bsoa4_a01) = dvel(i,1,j,p_ddmass_bsoa4_a01) + ddmassn(p_bsoa4_a01)
998 dvel(i,1,j,p_ddmass_asoaX_a02) = dvel(i,1,j,p_ddmass_asoaX_a02) + ddmassn(p_asoaX_a02)
999 dvel(i,1,j,p_ddmass_asoa1_a02) = dvel(i,1,j,p_ddmass_asoa1_a02) + ddmassn(p_asoa1_a02)
1000 dvel(i,1,j,p_ddmass_asoa2_a02) = dvel(i,1,j,p_ddmass_asoa2_a02) + ddmassn(p_asoa2_a02)
1001 dvel(i,1,j,p_ddmass_asoa3_a02) = dvel(i,1,j,p_ddmass_asoa3_a02) + ddmassn(p_asoa3_a02)
1002 dvel(i,1,j,p_ddmass_asoa4_a02) = dvel(i,1,j,p_ddmass_asoa4_a02) + ddmassn(p_asoa4_a02)
1003 dvel(i,1,j,p_ddmass_bsoaX_a02) = dvel(i,1,j,p_ddmass_bsoaX_a02) + ddmassn(p_bsoaX_a02)
1004 dvel(i,1,j,p_ddmass_bsoa1_a02) = dvel(i,1,j,p_ddmass_bsoa1_a02) + ddmassn(p_bsoa1_a02)
1005 dvel(i,1,j,p_ddmass_bsoa2_a02) = dvel(i,1,j,p_ddmass_bsoa2_a02) + ddmassn(p_bsoa2_a02)
1006 dvel(i,1,j,p_ddmass_bsoa3_a02) = dvel(i,1,j,p_ddmass_bsoa3_a02) + ddmassn(p_bsoa3_a02)
1007 dvel(i,1,j,p_ddmass_bsoa4_a02) = dvel(i,1,j,p_ddmass_bsoa4_a02) + ddmassn(p_bsoa4_a02)
1009 dvel(i,1,j,p_ddmass_asoaX_a03) = dvel(i,1,j,p_ddmass_asoaX_a03) + ddmassn(p_asoaX_a03)
1010 dvel(i,1,j,p_ddmass_asoa1_a03) = dvel(i,1,j,p_ddmass_asoa1_a03) + ddmassn(p_asoa1_a03)
1011 dvel(i,1,j,p_ddmass_asoa2_a03) = dvel(i,1,j,p_ddmass_asoa2_a03) + ddmassn(p_asoa2_a03)
1012 dvel(i,1,j,p_ddmass_asoa3_a03) = dvel(i,1,j,p_ddmass_asoa3_a03) + ddmassn(p_asoa3_a03)
1013 dvel(i,1,j,p_ddmass_asoa4_a03) = dvel(i,1,j,p_ddmass_asoa4_a03) + ddmassn(p_asoa4_a03)
1014 dvel(i,1,j,p_ddmass_bsoaX_a03) = dvel(i,1,j,p_ddmass_bsoaX_a03) + ddmassn(p_bsoaX_a03)
1015 dvel(i,1,j,p_ddmass_bsoa1_a03) = dvel(i,1,j,p_ddmass_bsoa1_a03) + ddmassn(p_bsoa1_a03)
1016 dvel(i,1,j,p_ddmass_bsoa2_a03) = dvel(i,1,j,p_ddmass_bsoa2_a03) + ddmassn(p_bsoa2_a03)
1017 dvel(i,1,j,p_ddmass_bsoa3_a03) = dvel(i,1,j,p_ddmass_bsoa3_a03) + ddmassn(p_bsoa3_a03)
1018 dvel(i,1,j,p_ddmass_bsoa4_a03) = dvel(i,1,j,p_ddmass_bsoa4_a03) + ddmassn(p_bsoa4_a03)
1020 dvel(i,1,j,p_ddmass_asoaX_a04) = dvel(i,1,j,p_ddmass_asoaX_a04) + ddmassn(p_asoaX_a04)
1021 dvel(i,1,j,p_ddmass_asoa1_a04) = dvel(i,1,j,p_ddmass_asoa1_a04) + ddmassn(p_asoa1_a04)
1022 dvel(i,1,j,p_ddmass_asoa2_a04) = dvel(i,1,j,p_ddmass_asoa2_a04) + ddmassn(p_asoa2_a04)
1023 dvel(i,1,j,p_ddmass_asoa3_a04) = dvel(i,1,j,p_ddmass_asoa3_a04) + ddmassn(p_asoa3_a04)
1024 dvel(i,1,j,p_ddmass_asoa4_a04) = dvel(i,1,j,p_ddmass_asoa4_a04) + ddmassn(p_asoa4_a04)
1025 dvel(i,1,j,p_ddmass_bsoaX_a04) = dvel(i,1,j,p_ddmass_bsoaX_a04) + ddmassn(p_bsoaX_a04)
1026 dvel(i,1,j,p_ddmass_bsoa1_a04) = dvel(i,1,j,p_ddmass_bsoa1_a04) + ddmassn(p_bsoa1_a04)
1027 dvel(i,1,j,p_ddmass_bsoa2_a04) = dvel(i,1,j,p_ddmass_bsoa2_a04) + ddmassn(p_bsoa2_a04)
1028 dvel(i,1,j,p_ddmass_bsoa3_a04) = dvel(i,1,j,p_ddmass_bsoa3_a04) + ddmassn(p_bsoa3_a04)
1029 dvel(i,1,j,p_ddmass_bsoa4_a04) = dvel(i,1,j,p_ddmass_bsoa4_a04) + ddmassn(p_bsoa4_a04)
1037 tracer_select: SELECT CASE(config_flags%tracer_opt)
1039 ! only mixing one fire(smoke) scalar array
1041 CASE (TRACER_SMOKE,TRACER_TEST1,TRACER_TEST2)
1042 CALL wrf_debug(15,'DOING TRACER MIXING, 1 SPECIE ONLY')
1045 pblst(k)=max(epsilc,tracer(i,k,j,nv))
1047 if (.not.config_flags%mynn_chem_vertmx) then
1048 call vertmx(dtstep,pblst,ekmfull,dryrho_1d, &
1049 zzfull,zz,0.,kts,kte)
1052 tracer(i,k,j,nv)=max(epsilc,pblst(k))
1056 ! CALL wrf_debug(15,'NOT YET DEFINED')
1057 END SELECT tracer_select
1060 endif ! num_vert_mix = 0
1062 ! vertical mixing and activation of aerosol
1064 where( alt(its:ite,kts:kte,jts:jte) /= 0. ) !get dry density to conserve mass in mixactivate, wig, 24-apr-2006
1065 dryrho_phy(its:ite,kts:kte,jts:jte) = 1./alt(its:ite,kts:kte,jts:jte)
1067 dryrho_phy(its:ite,kts:kte,jts:jte) = 0.
1072 mixactivate_select: SELECT CASE(config_flags%chem_opt)
1074 CASE (RADM2SORG_AQ, RADM2SORG_AQCHEM, RACMSORG_AQ, RACMSORG_AQCHEM_KPP, RACM_ESRLSORG_AQCHEM_KPP, CBMZSORG_AQ, &
1076 CALL wrf_debug(15,'call mixactivate for sorgam aerosol')
1077 call sorgam_mixactivate ( &
1078 id, ktau, dtstep, config_flags, idrydep_onoff, &
1079 dryrho_phy, t_phy, w, cldfra, cldfra_old, &
1080 ddvel, z, dz8w, p8w, t8w, exch_h, &
1081 moist(ims,kms,jms,P_QV), moist(ims,kms,jms,P_QC), moist(ims,kms,jms,P_QI), &
1082 scalar(ims,kms,jms,P_QNDROP), f_qc, f_qi, chem, &
1083 ccn1, ccn2, ccn3, ccn4, ccn5, ccn6, nsource, &
1084 ids,ide, jds,jde, kds,kde, &
1085 ims,ime, jms,jme, kms,kme, &
1086 its,ite, jts,jte, kts,kte )
1087 CASE (RACM_SOA_VBS_AQCHEM_KPP)
1088 CALL wrf_debug(15,'call mixactivate for soa-vbs aerosol')
1089 call soa_vbs_mixactivate ( &
1090 id, ktau, dtstep, config_flags, idrydep_onoff, &
1091 dryrho_phy, t_phy, w, cldfra, cldfra_old, &
1092 ddvel, z, dz8w, p8w, t8w, exch_h, &
1093 moist(ims,kms,jms,P_QV), moist(ims,kms,jms,P_QC),moist(ims,kms,jms,P_QI), &
1094 scalar(ims,kms,jms,P_QNDROP), f_qc, f_qi, chem, &
1095 ccn1, ccn2, ccn3, ccn4, ccn5, ccn6, nsource, &
1096 ids,ide, jds,jde, kds,kde, &
1097 ims,ime, jms,jme, kms,kme, &
1098 its,ite, jts,jte, kts,kte )
1099 CASE (CB05_SORG_VBS_AQ_KPP)
1100 CALL wrf_debug(15,'call mixactivate for sorgam_vbs aerosol')
1101 call sorgam_vbs_mixactivate ( &
1102 id, ktau, dtstep, config_flags, idrydep_onoff, &
1103 dryrho_phy, t_phy, w, cldfra, cldfra_old, &
1104 ddvel, z, dz8w, p8w, t8w, exch_h, &
1105 moist(ims,kms,jms,P_QV), moist(ims,kms,jms,P_QC), moist(ims,kms,jms,P_QI), &
1106 scalar(ims,kms,jms,P_QNDROP), f_qc, f_qi, chem, &
1107 ccn1, ccn2, ccn3, ccn4, ccn5, ccn6, nsource, &
1108 ids,ide, jds,jde, kds,kde, &
1109 ims,ime, jms,jme, kms,kme, &
1110 its,ite, jts,jte, kts,kte )
1111 ! Mixactivate called only for _AQ packages below MS 12/28/2013
1112 CASE (CBMZ_MOSAIC_4BIN_AQ, CBMZ_MOSAIC_8BIN_AQ, CBMZ_MOSAIC_DMS_4BIN_AQ, CBMZ_MOSAIC_DMS_8BIN_AQ, &
1113 CRI_MOSAIC_8BIN_AQ_KPP, CRI_MOSAIC_4BIN_AQ_KPP, &
1114 MOZART_MOSAIC_4BIN_AQ_KPP,SAPRC99_MOSAIC_8BIN_VBS2_AQ_KPP)!BSINGH(12/03/2013): Added SAPRC 8 bin)
1115 CALL wrf_debug(15,'call mixactivate for mosaic aerosol')
1116 call mosaic_mixactivate ( &
1117 id, ktau, dtstep, config_flags, idrydep_onoff, &
1118 dryrho_phy, t_phy, w, cldfra, cldfra_old, &
1119 ddvel, z, dz8w, p8w, t8w, exch_h, &
1120 moist(ims,kms,jms,P_QV), moist(ims,kms,jms,P_QC), moist(ims,kms,jms,P_QI), &
1121 scalar(ims,kms,jms,P_QNDROP), f_qc, f_qi, chem, &
1122 ccn1, ccn2, ccn3, ccn4, ccn5, ccn6, nsource, &
1124 ids,ide, jds,jde, kds,kde, &
1125 ims,ime, jms,jme, kms,kme, &
1126 its,ite, jts,jte, kts,kte )
1128 if( config_flags%diagnostic_chem == DEPVEL1 .and. &
1129 config_flags%chem_opt == CB05_SORG_VBS_AQ_KPP ) then
1131 ! qsrflx is in kg/m2/s, recalculate to match ug/m2 for aerosols
1132 qsrflx = qsrflx * 1.0e9 * dtstep
1134 dvel(ims:ime,1,jms:jme,p_ddmass_so4aj) = dvel(ims:ime,1,jms:jme,p_ddmass_so4aj) + qsrflx(ims:ime,jms:jme,p_so4aj)
1135 dvel(ims:ime,1,jms:jme,p_ddmass_so4ai) = dvel(ims:ime,1,jms:jme,p_ddmass_so4ai) + qsrflx(ims:ime,jms:jme,p_so4ai)
1136 dvel(ims:ime,1,jms:jme,p_ddmass_no3aj) = dvel(ims:ime,1,jms:jme,p_ddmass_no3aj) + qsrflx(ims:ime,jms:jme,p_no3aj)
1137 dvel(ims:ime,1,jms:jme,p_ddmass_no3ai) = dvel(ims:ime,1,jms:jme,p_ddmass_no3ai) + qsrflx(ims:ime,jms:jme,p_no3ai)
1138 dvel(ims:ime,1,jms:jme,p_ddmass_nh4aj) = dvel(ims:ime,1,jms:jme,p_ddmass_nh4aj) + qsrflx(ims:ime,jms:jme,p_nh4aj)
1139 dvel(ims:ime,1,jms:jme,p_ddmass_nh4ai) = dvel(ims:ime,1,jms:jme,p_ddmass_nh4ai) + qsrflx(ims:ime,jms:jme,p_nh4ai)
1143 if( config_flags%diagnostic_chem == DEPVEL1 .and. &
1144 config_flags%chem_opt == MOZART_MOSAIC_4BIN_AQ_KPP ) then
1146 ! qsrflx is in kg/m2/s, recalculate to match ug/m2 for aerosols
1147 qsrflx = qsrflx * 1.0e9 * dtstep
1149 dvel(ims:ime,1,jms:jme,p_ddmass_so4_a01) = dvel(ims:ime,1,jms:jme,p_ddmass_so4_a01) + qsrflx(ims:ime,jms:jme,p_so4_a01)
1150 dvel(ims:ime,1,jms:jme,p_ddmass_no3_a01) = dvel(ims:ime,1,jms:jme,p_ddmass_no3_a01) + qsrflx(ims:ime,jms:jme,p_no3_a01)
1151 dvel(ims:ime,1,jms:jme,p_ddmass_cl_a01) = dvel(ims:ime,1,jms:jme,p_ddmass_cl_a01) + qsrflx(ims:ime,jms:jme,p_cl_a01)
1152 dvel(ims:ime,1,jms:jme,p_ddmass_nh4_a01) = dvel(ims:ime,1,jms:jme,p_ddmass_nh4_a01) + qsrflx(ims:ime,jms:jme,p_nh4_a01)
1153 dvel(ims:ime,1,jms:jme,p_ddmass_na_a01) = dvel(ims:ime,1,jms:jme,p_ddmass_na_a01) + qsrflx(ims:ime,jms:jme,p_na_a01)
1154 dvel(ims:ime,1,jms:jme,p_ddmass_oin_a01) = dvel(ims:ime,1,jms:jme,p_ddmass_oin_a01) + qsrflx(ims:ime,jms:jme,p_oin_a01)
1155 dvel(ims:ime,1,jms:jme,p_ddmass_oc_a01) = dvel(ims:ime,1,jms:jme,p_ddmass_oc_a01) + qsrflx(ims:ime,jms:jme,p_oc_a01)
1156 dvel(ims:ime,1,jms:jme,p_ddmass_bc_a01) = dvel(ims:ime,1,jms:jme,p_ddmass_bc_a01) + qsrflx(ims:ime,jms:jme,p_bc_a01)
1157 dvel(ims:ime,1,jms:jme,p_ddmass_so4_a02) = dvel(ims:ime,1,jms:jme,p_ddmass_so4_a02) + qsrflx(ims:ime,jms:jme,p_so4_a02)
1158 dvel(ims:ime,1,jms:jme,p_ddmass_no3_a02) = dvel(ims:ime,1,jms:jme,p_ddmass_no3_a02) + qsrflx(ims:ime,jms:jme,p_no3_a02)
1159 dvel(ims:ime,1,jms:jme,p_ddmass_cl_a02) = dvel(ims:ime,1,jms:jme,p_ddmass_cl_a02) + qsrflx(ims:ime,jms:jme,p_cl_a02)
1160 dvel(ims:ime,1,jms:jme,p_ddmass_nh4_a02) = dvel(ims:ime,1,jms:jme,p_ddmass_nh4_a02) + qsrflx(ims:ime,jms:jme,p_nh4_a02)
1161 dvel(ims:ime,1,jms:jme,p_ddmass_na_a02) = dvel(ims:ime,1,jms:jme,p_ddmass_na_a02) + qsrflx(ims:ime,jms:jme,p_na_a02)
1162 dvel(ims:ime,1,jms:jme,p_ddmass_oin_a02) = dvel(ims:ime,1,jms:jme,p_ddmass_oin_a02) + qsrflx(ims:ime,jms:jme,p_oin_a02)
1163 dvel(ims:ime,1,jms:jme,p_ddmass_oc_a02) = dvel(ims:ime,1,jms:jme,p_ddmass_oc_a02) + qsrflx(ims:ime,jms:jme,p_oc_a02)
1164 dvel(ims:ime,1,jms:jme,p_ddmass_bc_a02) = dvel(ims:ime,1,jms:jme,p_ddmass_bc_a02) + qsrflx(ims:ime,jms:jme,p_bc_a02)
1165 dvel(ims:ime,1,jms:jme,p_ddmass_so4_a03) = dvel(ims:ime,1,jms:jme,p_ddmass_so4_a03) + qsrflx(ims:ime,jms:jme,p_so4_a03)
1166 dvel(ims:ime,1,jms:jme,p_ddmass_no3_a03) = dvel(ims:ime,1,jms:jme,p_ddmass_no3_a03) + qsrflx(ims:ime,jms:jme,p_no3_a03)
1167 dvel(ims:ime,1,jms:jme,p_ddmass_cl_a03) = dvel(ims:ime,1,jms:jme,p_ddmass_cl_a03) + qsrflx(ims:ime,jms:jme,p_cl_a03)
1168 dvel(ims:ime,1,jms:jme,p_ddmass_nh4_a03) = dvel(ims:ime,1,jms:jme,p_ddmass_nh4_a03) + qsrflx(ims:ime,jms:jme,p_nh4_a03)
1169 dvel(ims:ime,1,jms:jme,p_ddmass_na_a03) = dvel(ims:ime,1,jms:jme,p_ddmass_na_a03) + qsrflx(ims:ime,jms:jme,p_na_a03)
1170 dvel(ims:ime,1,jms:jme,p_ddmass_oin_a03) = dvel(ims:ime,1,jms:jme,p_ddmass_oin_a03) + qsrflx(ims:ime,jms:jme,p_oin_a03)
1171 dvel(ims:ime,1,jms:jme,p_ddmass_oc_a03) = dvel(ims:ime,1,jms:jme,p_ddmass_oc_a03) + qsrflx(ims:ime,jms:jme,p_oc_a03)
1172 dvel(ims:ime,1,jms:jme,p_ddmass_bc_a03) = dvel(ims:ime,1,jms:jme,p_ddmass_bc_a03) + qsrflx(ims:ime,jms:jme,p_bc_a03)
1173 dvel(ims:ime,1,jms:jme,p_ddmass_so4_a04) = dvel(ims:ime,1,jms:jme,p_ddmass_so4_a04) + qsrflx(ims:ime,jms:jme,p_so4_a04)
1174 dvel(ims:ime,1,jms:jme,p_ddmass_no3_a04) = dvel(ims:ime,1,jms:jme,p_ddmass_no3_a04) + qsrflx(ims:ime,jms:jme,p_no3_a04)
1175 dvel(ims:ime,1,jms:jme,p_ddmass_cl_a04) = dvel(ims:ime,1,jms:jme,p_ddmass_cl_a04) + qsrflx(ims:ime,jms:jme,p_cl_a04)
1176 dvel(ims:ime,1,jms:jme,p_ddmass_nh4_a04) = dvel(ims:ime,1,jms:jme,p_ddmass_nh4_a04) + qsrflx(ims:ime,jms:jme,p_nh4_a04)
1177 dvel(ims:ime,1,jms:jme,p_ddmass_na_a04) = dvel(ims:ime,1,jms:jme,p_ddmass_na_a04) + qsrflx(ims:ime,jms:jme,p_na_a04)
1178 dvel(ims:ime,1,jms:jme,p_ddmass_oin_a04) = dvel(ims:ime,1,jms:jme,p_ddmass_oin_a04) + qsrflx(ims:ime,jms:jme,p_oin_a04)
1179 dvel(ims:ime,1,jms:jme,p_ddmass_oc_a04) = dvel(ims:ime,1,jms:jme,p_ddmass_oc_a04) + qsrflx(ims:ime,jms:jme,p_oc_a04)
1180 dvel(ims:ime,1,jms:jme,p_ddmass_bc_a04) = dvel(ims:ime,1,jms:jme,p_ddmass_bc_a04) + qsrflx(ims:ime,jms:jme,p_bc_a04)
1182 dvel(ims:ime,1,jms:jme,p_ddmass_ca_a01) = dvel(ims:ime,1,jms:jme,p_ddmass_ca_a01) + qsrflx(ims:ime,jms:jme,p_ca_a01)
1183 dvel(ims:ime,1,jms:jme,p_ddmass_ca_a02) = dvel(ims:ime,1,jms:jme,p_ddmass_ca_a02) + qsrflx(ims:ime,jms:jme,p_ca_a02)
1184 dvel(ims:ime,1,jms:jme,p_ddmass_ca_a03) = dvel(ims:ime,1,jms:jme,p_ddmass_ca_a03) + qsrflx(ims:ime,jms:jme,p_ca_a03)
1185 dvel(ims:ime,1,jms:jme,p_ddmass_ca_a04) = dvel(ims:ime,1,jms:jme,p_ddmass_ca_a04) + qsrflx(ims:ime,jms:jme,p_ca_a04)
1187 dvel(ims:ime,1,jms:jme,p_ddmass_co3_a01) = dvel(ims:ime,1,jms:jme,p_ddmass_co3_a01) + qsrflx(ims:ime,jms:jme,p_co3_a01)
1188 dvel(ims:ime,1,jms:jme,p_ddmass_co3_a02) = dvel(ims:ime,1,jms:jme,p_ddmass_co3_a02) + qsrflx(ims:ime,jms:jme,p_co3_a02)
1189 dvel(ims:ime,1,jms:jme,p_ddmass_co3_a03) = dvel(ims:ime,1,jms:jme,p_ddmass_co3_a03) + qsrflx(ims:ime,jms:jme,p_co3_a03)
1190 dvel(ims:ime,1,jms:jme,p_ddmass_co3_a04) = dvel(ims:ime,1,jms:jme,p_ddmass_co3_a04) + qsrflx(ims:ime,jms:jme,p_co3_a04)
1192 dvel(ims:ime,1,jms:jme,p_ddmass_glysoa_a01) = dvel(ims:ime,1,jms:jme,p_ddmass_glysoa_a01) + &
1193 qsrflx(ims:ime,jms:jme,p_glysoa_r1_a01) + &
1194 qsrflx(ims:ime,jms:jme,p_glysoa_r2_a01) + &
1195 qsrflx(ims:ime,jms:jme,p_glysoa_oh_a01) + &
1196 qsrflx(ims:ime,jms:jme,p_glysoa_sfc_a01) + &
1197 qsrflx(ims:ime,jms:jme,p_glysoa_nh4_a01)
1199 dvel(ims:ime,1,jms:jme,p_ddmass_glysoa_a02) = dvel(ims:ime,1,jms:jme,p_ddmass_glysoa_a02) + &
1200 qsrflx(ims:ime,jms:jme,p_glysoa_r1_a02) + &
1201 qsrflx(ims:ime,jms:jme,p_glysoa_r2_a02) + &
1202 qsrflx(ims:ime,jms:jme,p_glysoa_oh_a02) + &
1203 qsrflx(ims:ime,jms:jme,p_glysoa_sfc_a02) + &
1204 qsrflx(ims:ime,jms:jme,p_glysoa_nh4_a02)
1206 dvel(ims:ime,1,jms:jme,p_ddmass_glysoa_a03) = dvel(ims:ime,1,jms:jme,p_ddmass_glysoa_a03) + &
1207 qsrflx(ims:ime,jms:jme,p_glysoa_r1_a03) + &
1208 qsrflx(ims:ime,jms:jme,p_glysoa_r2_a03) + &
1209 qsrflx(ims:ime,jms:jme,p_glysoa_oh_a03) + &
1210 qsrflx(ims:ime,jms:jme,p_glysoa_sfc_a03) + &
1211 qsrflx(ims:ime,jms:jme,p_glysoa_nh4_a03)
1213 dvel(ims:ime,1,jms:jme,p_ddmass_glysoa_a04) = dvel(ims:ime,1,jms:jme,p_ddmass_glysoa_a04) + &
1214 qsrflx(ims:ime,jms:jme,p_glysoa_r1_a04) + &
1215 qsrflx(ims:ime,jms:jme,p_glysoa_r2_a04) + &
1216 qsrflx(ims:ime,jms:jme,p_glysoa_oh_a04) + &
1217 qsrflx(ims:ime,jms:jme,p_glysoa_sfc_a04) + &
1218 qsrflx(ims:ime,jms:jme,p_glysoa_nh4_a04)
1220 dvel(ims:ime,1,jms:jme,p_ddmass_asoaX_a01) = dvel(ims:ime,1,jms:jme,p_ddmass_asoaX_a01) + qsrflx(ims:ime,jms:jme,p_asoaX_a01)
1221 dvel(ims:ime,1,jms:jme,p_ddmass_asoa1_a01) = dvel(ims:ime,1,jms:jme,p_ddmass_asoa1_a01) + qsrflx(ims:ime,jms:jme,p_asoa1_a01)
1222 dvel(ims:ime,1,jms:jme,p_ddmass_asoa2_a01) = dvel(ims:ime,1,jms:jme,p_ddmass_asoa2_a01) + qsrflx(ims:ime,jms:jme,p_asoa2_a01)
1223 dvel(ims:ime,1,jms:jme,p_ddmass_asoa3_a01) = dvel(ims:ime,1,jms:jme,p_ddmass_asoa3_a01) + qsrflx(ims:ime,jms:jme,p_asoa3_a01)
1224 dvel(ims:ime,1,jms:jme,p_ddmass_asoa4_a01) = dvel(ims:ime,1,jms:jme,p_ddmass_asoa4_a01) + qsrflx(ims:ime,jms:jme,p_asoa4_a01)
1225 dvel(ims:ime,1,jms:jme,p_ddmass_bsoaX_a01) = dvel(ims:ime,1,jms:jme,p_ddmass_bsoaX_a01) + qsrflx(ims:ime,jms:jme,p_bsoaX_a01)
1226 dvel(ims:ime,1,jms:jme,p_ddmass_bsoa1_a01) = dvel(ims:ime,1,jms:jme,p_ddmass_bsoa1_a01) + qsrflx(ims:ime,jms:jme,p_bsoa1_a01)
1227 dvel(ims:ime,1,jms:jme,p_ddmass_bsoa2_a01) = dvel(ims:ime,1,jms:jme,p_ddmass_bsoa2_a01) + qsrflx(ims:ime,jms:jme,p_bsoa2_a01)
1228 dvel(ims:ime,1,jms:jme,p_ddmass_bsoa3_a01) = dvel(ims:ime,1,jms:jme,p_ddmass_bsoa3_a01) + qsrflx(ims:ime,jms:jme,p_bsoa3_a01)
1229 dvel(ims:ime,1,jms:jme,p_ddmass_bsoa4_a01) = dvel(ims:ime,1,jms:jme,p_ddmass_bsoa4_a01) + qsrflx(ims:ime,jms:jme,p_bsoa4_a01)
1231 dvel(ims:ime,1,jms:jme,p_ddmass_asoaX_a02) = dvel(ims:ime,1,jms:jme,p_ddmass_asoaX_a02) + qsrflx(ims:ime,jms:jme,p_asoaX_a02)
1232 dvel(ims:ime,1,jms:jme,p_ddmass_asoa1_a02) = dvel(ims:ime,1,jms:jme,p_ddmass_asoa1_a02) + qsrflx(ims:ime,jms:jme,p_asoa1_a02)
1233 dvel(ims:ime,1,jms:jme,p_ddmass_asoa2_a02) = dvel(ims:ime,1,jms:jme,p_ddmass_asoa2_a02) + qsrflx(ims:ime,jms:jme,p_asoa2_a02)
1234 dvel(ims:ime,1,jms:jme,p_ddmass_asoa3_a02) = dvel(ims:ime,1,jms:jme,p_ddmass_asoa3_a02) + qsrflx(ims:ime,jms:jme,p_asoa3_a02)
1235 dvel(ims:ime,1,jms:jme,p_ddmass_asoa4_a02) = dvel(ims:ime,1,jms:jme,p_ddmass_asoa4_a02) + qsrflx(ims:ime,jms:jme,p_asoa4_a02)
1236 dvel(ims:ime,1,jms:jme,p_ddmass_bsoaX_a02) = dvel(ims:ime,1,jms:jme,p_ddmass_bsoaX_a02) + qsrflx(ims:ime,jms:jme,p_bsoaX_a02)
1237 dvel(ims:ime,1,jms:jme,p_ddmass_bsoa1_a02) = dvel(ims:ime,1,jms:jme,p_ddmass_bsoa1_a02) + qsrflx(ims:ime,jms:jme,p_bsoa1_a02)
1238 dvel(ims:ime,1,jms:jme,p_ddmass_bsoa2_a02) = dvel(ims:ime,1,jms:jme,p_ddmass_bsoa2_a02) + qsrflx(ims:ime,jms:jme,p_bsoa2_a02)
1239 dvel(ims:ime,1,jms:jme,p_ddmass_bsoa3_a02) = dvel(ims:ime,1,jms:jme,p_ddmass_bsoa3_a02) + qsrflx(ims:ime,jms:jme,p_bsoa3_a02)
1240 dvel(ims:ime,1,jms:jme,p_ddmass_bsoa4_a02) = dvel(ims:ime,1,jms:jme,p_ddmass_bsoa4_a02) + qsrflx(ims:ime,jms:jme,p_bsoa4_a02)
1242 dvel(ims:ime,1,jms:jme,p_ddmass_asoaX_a03) = dvel(ims:ime,1,jms:jme,p_ddmass_asoaX_a03) + qsrflx(ims:ime,jms:jme,p_asoaX_a03)
1243 dvel(ims:ime,1,jms:jme,p_ddmass_asoa1_a03) = dvel(ims:ime,1,jms:jme,p_ddmass_asoa1_a03) + qsrflx(ims:ime,jms:jme,p_asoa1_a03)
1244 dvel(ims:ime,1,jms:jme,p_ddmass_asoa2_a03) = dvel(ims:ime,1,jms:jme,p_ddmass_asoa2_a03) + qsrflx(ims:ime,jms:jme,p_asoa2_a03)
1245 dvel(ims:ime,1,jms:jme,p_ddmass_asoa3_a03) = dvel(ims:ime,1,jms:jme,p_ddmass_asoa3_a03) + qsrflx(ims:ime,jms:jme,p_asoa3_a03)
1246 dvel(ims:ime,1,jms:jme,p_ddmass_asoa4_a03) = dvel(ims:ime,1,jms:jme,p_ddmass_asoa4_a03) + qsrflx(ims:ime,jms:jme,p_asoa4_a03)
1247 dvel(ims:ime,1,jms:jme,p_ddmass_bsoaX_a03) = dvel(ims:ime,1,jms:jme,p_ddmass_bsoaX_a03) + qsrflx(ims:ime,jms:jme,p_bsoaX_a03)
1248 dvel(ims:ime,1,jms:jme,p_ddmass_bsoa1_a03) = dvel(ims:ime,1,jms:jme,p_ddmass_bsoa1_a03) + qsrflx(ims:ime,jms:jme,p_bsoa1_a03)
1249 dvel(ims:ime,1,jms:jme,p_ddmass_bsoa2_a03) = dvel(ims:ime,1,jms:jme,p_ddmass_bsoa2_a03) + qsrflx(ims:ime,jms:jme,p_bsoa2_a03)
1250 dvel(ims:ime,1,jms:jme,p_ddmass_bsoa3_a03) = dvel(ims:ime,1,jms:jme,p_ddmass_bsoa3_a03) + qsrflx(ims:ime,jms:jme,p_bsoa3_a03)
1251 dvel(ims:ime,1,jms:jme,p_ddmass_bsoa4_a03) = dvel(ims:ime,1,jms:jme,p_ddmass_bsoa4_a03) + qsrflx(ims:ime,jms:jme,p_bsoa4_a03)
1253 dvel(ims:ime,1,jms:jme,p_ddmass_asoaX_a04) = dvel(ims:ime,1,jms:jme,p_ddmass_asoaX_a04) + qsrflx(ims:ime,jms:jme,p_asoaX_a04)
1254 dvel(ims:ime,1,jms:jme,p_ddmass_asoa1_a04) = dvel(ims:ime,1,jms:jme,p_ddmass_asoa1_a04) + qsrflx(ims:ime,jms:jme,p_asoa1_a04)
1255 dvel(ims:ime,1,jms:jme,p_ddmass_asoa2_a04) = dvel(ims:ime,1,jms:jme,p_ddmass_asoa2_a04) + qsrflx(ims:ime,jms:jme,p_asoa2_a04)
1256 dvel(ims:ime,1,jms:jme,p_ddmass_asoa3_a04) = dvel(ims:ime,1,jms:jme,p_ddmass_asoa3_a04) + qsrflx(ims:ime,jms:jme,p_asoa3_a04)
1257 dvel(ims:ime,1,jms:jme,p_ddmass_asoa4_a04) = dvel(ims:ime,1,jms:jme,p_ddmass_asoa4_a04) + qsrflx(ims:ime,jms:jme,p_asoa4_a04)
1258 dvel(ims:ime,1,jms:jme,p_ddmass_bsoaX_a04) = dvel(ims:ime,1,jms:jme,p_ddmass_bsoaX_a04) + qsrflx(ims:ime,jms:jme,p_bsoaX_a04)
1259 dvel(ims:ime,1,jms:jme,p_ddmass_bsoa1_a04) = dvel(ims:ime,1,jms:jme,p_ddmass_bsoa1_a04) + qsrflx(ims:ime,jms:jme,p_bsoa1_a04)
1260 dvel(ims:ime,1,jms:jme,p_ddmass_bsoa2_a04) = dvel(ims:ime,1,jms:jme,p_ddmass_bsoa2_a04) + qsrflx(ims:ime,jms:jme,p_bsoa2_a04)
1261 dvel(ims:ime,1,jms:jme,p_ddmass_bsoa3_a04) = dvel(ims:ime,1,jms:jme,p_ddmass_bsoa3_a04) + qsrflx(ims:ime,jms:jme,p_bsoa3_a04)
1262 dvel(ims:ime,1,jms:jme,p_ddmass_bsoa4_a04) = dvel(ims:ime,1,jms:jme,p_ddmass_bsoa4_a04) + qsrflx(ims:ime,jms:jme,p_bsoa4_a04)
1264 ! and the same for settling cloud droplets
1266 dvel(ims:ime,1,jms:jme,p_ddmass_so4_cw01) = dvel(ims:ime,1,jms:jme,p_ddmass_so4_cw01) + qsrflx(ims:ime,jms:jme,p_so4_cw01)
1267 dvel(ims:ime,1,jms:jme,p_ddmass_no3_cw01) = dvel(ims:ime,1,jms:jme,p_ddmass_no3_cw01) + qsrflx(ims:ime,jms:jme,p_no3_cw01)
1268 dvel(ims:ime,1,jms:jme,p_ddmass_cl_cw01) = dvel(ims:ime,1,jms:jme,p_ddmass_cl_cw01) + qsrflx(ims:ime,jms:jme,p_cl_cw01)
1269 dvel(ims:ime,1,jms:jme,p_ddmass_nh4_cw01) = dvel(ims:ime,1,jms:jme,p_ddmass_nh4_cw01) + qsrflx(ims:ime,jms:jme,p_nh4_cw01)
1270 dvel(ims:ime,1,jms:jme,p_ddmass_na_cw01) = dvel(ims:ime,1,jms:jme,p_ddmass_na_cw01) + qsrflx(ims:ime,jms:jme,p_na_cw01)
1271 dvel(ims:ime,1,jms:jme,p_ddmass_oin_cw01) = dvel(ims:ime,1,jms:jme,p_ddmass_oin_cw01) + qsrflx(ims:ime,jms:jme,p_oin_cw01)
1272 dvel(ims:ime,1,jms:jme,p_ddmass_oc_cw01) = dvel(ims:ime,1,jms:jme,p_ddmass_oc_cw01) + qsrflx(ims:ime,jms:jme,p_oc_cw01)
1273 dvel(ims:ime,1,jms:jme,p_ddmass_bc_cw01) = dvel(ims:ime,1,jms:jme,p_ddmass_bc_cw01) + qsrflx(ims:ime,jms:jme,p_bc_cw01)
1274 dvel(ims:ime,1,jms:jme,p_ddmass_so4_cw02) = dvel(ims:ime,1,jms:jme,p_ddmass_so4_cw02) + qsrflx(ims:ime,jms:jme,p_so4_cw02)
1275 dvel(ims:ime,1,jms:jme,p_ddmass_no3_cw02) = dvel(ims:ime,1,jms:jme,p_ddmass_no3_cw02) + qsrflx(ims:ime,jms:jme,p_no3_cw02)
1276 dvel(ims:ime,1,jms:jme,p_ddmass_cl_cw02) = dvel(ims:ime,1,jms:jme,p_ddmass_cl_cw02) + qsrflx(ims:ime,jms:jme,p_cl_cw02)
1277 dvel(ims:ime,1,jms:jme,p_ddmass_nh4_cw02) = dvel(ims:ime,1,jms:jme,p_ddmass_nh4_cw02) + qsrflx(ims:ime,jms:jme,p_nh4_cw02)
1278 dvel(ims:ime,1,jms:jme,p_ddmass_na_cw02) = dvel(ims:ime,1,jms:jme,p_ddmass_na_cw02) + qsrflx(ims:ime,jms:jme,p_na_cw02)
1279 dvel(ims:ime,1,jms:jme,p_ddmass_oin_cw02) = dvel(ims:ime,1,jms:jme,p_ddmass_oin_cw02) + qsrflx(ims:ime,jms:jme,p_oin_cw02)
1280 dvel(ims:ime,1,jms:jme,p_ddmass_oc_cw02) = dvel(ims:ime,1,jms:jme,p_ddmass_oc_cw02) + qsrflx(ims:ime,jms:jme,p_oc_cw02)
1281 dvel(ims:ime,1,jms:jme,p_ddmass_bc_cw02) = dvel(ims:ime,1,jms:jme,p_ddmass_bc_cw02) + qsrflx(ims:ime,jms:jme,p_bc_cw02)
1282 dvel(ims:ime,1,jms:jme,p_ddmass_so4_cw03) = dvel(ims:ime,1,jms:jme,p_ddmass_so4_cw03) + qsrflx(ims:ime,jms:jme,p_so4_cw03)
1283 dvel(ims:ime,1,jms:jme,p_ddmass_no3_cw03) = dvel(ims:ime,1,jms:jme,p_ddmass_no3_cw03) + qsrflx(ims:ime,jms:jme,p_no3_cw03)
1284 dvel(ims:ime,1,jms:jme,p_ddmass_cl_cw03) = dvel(ims:ime,1,jms:jme,p_ddmass_cl_cw03) + qsrflx(ims:ime,jms:jme,p_cl_cw03)
1285 dvel(ims:ime,1,jms:jme,p_ddmass_nh4_cw03) = dvel(ims:ime,1,jms:jme,p_ddmass_nh4_cw03) + qsrflx(ims:ime,jms:jme,p_nh4_cw03)
1286 dvel(ims:ime,1,jms:jme,p_ddmass_na_cw03) = dvel(ims:ime,1,jms:jme,p_ddmass_na_cw03) + qsrflx(ims:ime,jms:jme,p_na_cw03)
1287 dvel(ims:ime,1,jms:jme,p_ddmass_oin_cw03) = dvel(ims:ime,1,jms:jme,p_ddmass_oin_cw03) + qsrflx(ims:ime,jms:jme,p_oin_cw03)
1288 dvel(ims:ime,1,jms:jme,p_ddmass_oc_cw03) = dvel(ims:ime,1,jms:jme,p_ddmass_oc_cw03) + qsrflx(ims:ime,jms:jme,p_oc_cw03)
1289 dvel(ims:ime,1,jms:jme,p_ddmass_bc_cw03) = dvel(ims:ime,1,jms:jme,p_ddmass_bc_cw03) + qsrflx(ims:ime,jms:jme,p_bc_cw03)
1290 dvel(ims:ime,1,jms:jme,p_ddmass_so4_cw04) = dvel(ims:ime,1,jms:jme,p_ddmass_so4_cw04) + qsrflx(ims:ime,jms:jme,p_so4_cw04)
1291 dvel(ims:ime,1,jms:jme,p_ddmass_no3_cw04) = dvel(ims:ime,1,jms:jme,p_ddmass_no3_cw04) + qsrflx(ims:ime,jms:jme,p_no3_cw04)
1292 dvel(ims:ime,1,jms:jme,p_ddmass_cl_cw04) = dvel(ims:ime,1,jms:jme,p_ddmass_cl_cw04) + qsrflx(ims:ime,jms:jme,p_cl_cw04)
1293 dvel(ims:ime,1,jms:jme,p_ddmass_nh4_cw04) = dvel(ims:ime,1,jms:jme,p_ddmass_nh4_cw04) + qsrflx(ims:ime,jms:jme,p_nh4_cw04)
1294 dvel(ims:ime,1,jms:jme,p_ddmass_na_cw04) = dvel(ims:ime,1,jms:jme,p_ddmass_na_cw04) + qsrflx(ims:ime,jms:jme,p_na_cw04)
1295 dvel(ims:ime,1,jms:jme,p_ddmass_oin_cw04) = dvel(ims:ime,1,jms:jme,p_ddmass_oin_cw04) + qsrflx(ims:ime,jms:jme,p_oin_cw04)
1296 dvel(ims:ime,1,jms:jme,p_ddmass_oc_cw04) = dvel(ims:ime,1,jms:jme,p_ddmass_oc_cw04) + qsrflx(ims:ime,jms:jme,p_oc_cw04)
1297 dvel(ims:ime,1,jms:jme,p_ddmass_bc_cw04) = dvel(ims:ime,1,jms:jme,p_ddmass_bc_cw04) + qsrflx(ims:ime,jms:jme,p_bc_cw04)
1299 dvel(ims:ime,1,jms:jme,p_ddmass_ca_cw01) = dvel(ims:ime,1,jms:jme,p_ddmass_ca_cw01) + qsrflx(ims:ime,jms:jme,p_ca_cw01)
1300 dvel(ims:ime,1,jms:jme,p_ddmass_ca_cw02) = dvel(ims:ime,1,jms:jme,p_ddmass_ca_cw02) + qsrflx(ims:ime,jms:jme,p_ca_cw02)
1301 dvel(ims:ime,1,jms:jme,p_ddmass_ca_cw03) = dvel(ims:ime,1,jms:jme,p_ddmass_ca_cw03) + qsrflx(ims:ime,jms:jme,p_ca_cw03)
1302 dvel(ims:ime,1,jms:jme,p_ddmass_ca_cw04) = dvel(ims:ime,1,jms:jme,p_ddmass_ca_cw04) + qsrflx(ims:ime,jms:jme,p_ca_cw04)
1304 dvel(ims:ime,1,jms:jme,p_ddmass_co3_cw01) = dvel(ims:ime,1,jms:jme,p_ddmass_co3_cw01) + qsrflx(ims:ime,jms:jme,p_co3_cw01)
1305 dvel(ims:ime,1,jms:jme,p_ddmass_co3_cw02) = dvel(ims:ime,1,jms:jme,p_ddmass_co3_cw02) + qsrflx(ims:ime,jms:jme,p_co3_cw02)
1306 dvel(ims:ime,1,jms:jme,p_ddmass_co3_cw03) = dvel(ims:ime,1,jms:jme,p_ddmass_co3_cw03) + qsrflx(ims:ime,jms:jme,p_co3_cw03)
1307 dvel(ims:ime,1,jms:jme,p_ddmass_co3_cw04) = dvel(ims:ime,1,jms:jme,p_ddmass_co3_cw04) + qsrflx(ims:ime,jms:jme,p_co3_cw04)
1309 dvel(ims:ime,1,jms:jme,p_ddmass_glysoa_cw01) = dvel(ims:ime,1,jms:jme,p_ddmass_glysoa_cw01) + &
1310 qsrflx(ims:ime,jms:jme,p_glysoa_r1_cw01) + &
1311 qsrflx(ims:ime,jms:jme,p_glysoa_r2_cw01) + &
1312 qsrflx(ims:ime,jms:jme,p_glysoa_oh_cw01) + &
1313 qsrflx(ims:ime,jms:jme,p_glysoa_sfc_cw01) + &
1314 qsrflx(ims:ime,jms:jme,p_glysoa_nh4_cw01)
1316 dvel(ims:ime,1,jms:jme,p_ddmass_glysoa_cw02) = dvel(ims:ime,1,jms:jme,p_ddmass_glysoa_cw02) + &
1317 qsrflx(ims:ime,jms:jme,p_glysoa_r1_cw02) + &
1318 qsrflx(ims:ime,jms:jme,p_glysoa_r2_cw02) + &
1319 qsrflx(ims:ime,jms:jme,p_glysoa_oh_cw02) + &
1320 qsrflx(ims:ime,jms:jme,p_glysoa_sfc_cw02) + &
1321 qsrflx(ims:ime,jms:jme,p_glysoa_nh4_cw02)
1323 dvel(ims:ime,1,jms:jme,p_ddmass_glysoa_cw03) = dvel(ims:ime,1,jms:jme,p_ddmass_glysoa_cw03) + &
1324 qsrflx(ims:ime,jms:jme,p_glysoa_r1_cw03) + &
1325 qsrflx(ims:ime,jms:jme,p_glysoa_r2_cw03) + &
1326 qsrflx(ims:ime,jms:jme,p_glysoa_oh_cw03) + &
1327 qsrflx(ims:ime,jms:jme,p_glysoa_sfc_cw03) + &
1328 qsrflx(ims:ime,jms:jme,p_glysoa_nh4_cw03)
1330 dvel(ims:ime,1,jms:jme,p_ddmass_glysoa_cw04) = dvel(ims:ime,1,jms:jme,p_ddmass_glysoa_cw04) + &
1331 qsrflx(ims:ime,jms:jme,p_glysoa_r1_cw04) + &
1332 qsrflx(ims:ime,jms:jme,p_glysoa_r2_cw04) + &
1333 qsrflx(ims:ime,jms:jme,p_glysoa_oh_cw04) + &
1334 qsrflx(ims:ime,jms:jme,p_glysoa_sfc_cw04) + &
1335 qsrflx(ims:ime,jms:jme,p_glysoa_nh4_cw04)
1337 dvel(ims:ime,1,jms:jme,p_ddmass_asoaX_cw01) = dvel(ims:ime,1,jms:jme,p_ddmass_asoaX_cw01) + qsrflx(ims:ime,jms:jme,p_asoaX_cw01)
1338 dvel(ims:ime,1,jms:jme,p_ddmass_asoa1_cw01) = dvel(ims:ime,1,jms:jme,p_ddmass_asoa1_cw01) + qsrflx(ims:ime,jms:jme,p_asoa1_cw01)
1339 dvel(ims:ime,1,jms:jme,p_ddmass_asoa2_cw01) = dvel(ims:ime,1,jms:jme,p_ddmass_asoa2_cw01) + qsrflx(ims:ime,jms:jme,p_asoa2_cw01)
1340 dvel(ims:ime,1,jms:jme,p_ddmass_asoa3_cw01) = dvel(ims:ime,1,jms:jme,p_ddmass_asoa3_cw01) + qsrflx(ims:ime,jms:jme,p_asoa3_cw01)
1341 dvel(ims:ime,1,jms:jme,p_ddmass_asoa4_cw01) = dvel(ims:ime,1,jms:jme,p_ddmass_asoa4_cw01) + qsrflx(ims:ime,jms:jme,p_asoa4_cw01)
1342 dvel(ims:ime,1,jms:jme,p_ddmass_bsoaX_cw01) = dvel(ims:ime,1,jms:jme,p_ddmass_bsoaX_cw01) + qsrflx(ims:ime,jms:jme,p_bsoaX_cw01)
1343 dvel(ims:ime,1,jms:jme,p_ddmass_bsoa1_cw01) = dvel(ims:ime,1,jms:jme,p_ddmass_bsoa1_cw01) + qsrflx(ims:ime,jms:jme,p_bsoa1_cw01)
1344 dvel(ims:ime,1,jms:jme,p_ddmass_bsoa2_cw01) = dvel(ims:ime,1,jms:jme,p_ddmass_bsoa2_cw01) + qsrflx(ims:ime,jms:jme,p_bsoa2_cw01)
1345 dvel(ims:ime,1,jms:jme,p_ddmass_bsoa3_cw01) = dvel(ims:ime,1,jms:jme,p_ddmass_bsoa3_cw01) + qsrflx(ims:ime,jms:jme,p_bsoa3_cw01)
1346 dvel(ims:ime,1,jms:jme,p_ddmass_bsoa4_cw01) = dvel(ims:ime,1,jms:jme,p_ddmass_bsoa4_cw01) + qsrflx(ims:ime,jms:jme,p_bsoa4_cw01)
1348 dvel(ims:ime,1,jms:jme,p_ddmass_asoaX_cw02) = dvel(ims:ime,1,jms:jme,p_ddmass_asoaX_cw02) + qsrflx(ims:ime,jms:jme,p_asoaX_cw02)
1349 dvel(ims:ime,1,jms:jme,p_ddmass_asoa1_cw02) = dvel(ims:ime,1,jms:jme,p_ddmass_asoa1_cw02) + qsrflx(ims:ime,jms:jme,p_asoa1_cw02)
1350 dvel(ims:ime,1,jms:jme,p_ddmass_asoa2_cw02) = dvel(ims:ime,1,jms:jme,p_ddmass_asoa2_cw02) + qsrflx(ims:ime,jms:jme,p_asoa2_cw02)
1351 dvel(ims:ime,1,jms:jme,p_ddmass_asoa3_cw02) = dvel(ims:ime,1,jms:jme,p_ddmass_asoa3_cw02) + qsrflx(ims:ime,jms:jme,p_asoa3_cw02)
1352 dvel(ims:ime,1,jms:jme,p_ddmass_asoa4_cw02) = dvel(ims:ime,1,jms:jme,p_ddmass_asoa4_cw02) + qsrflx(ims:ime,jms:jme,p_asoa4_cw02)
1353 dvel(ims:ime,1,jms:jme,p_ddmass_bsoaX_cw02) = dvel(ims:ime,1,jms:jme,p_ddmass_bsoaX_cw02) + qsrflx(ims:ime,jms:jme,p_bsoaX_cw02)
1354 dvel(ims:ime,1,jms:jme,p_ddmass_bsoa1_cw02) = dvel(ims:ime,1,jms:jme,p_ddmass_bsoa1_cw02) + qsrflx(ims:ime,jms:jme,p_bsoa1_cw02)
1355 dvel(ims:ime,1,jms:jme,p_ddmass_bsoa2_cw02) = dvel(ims:ime,1,jms:jme,p_ddmass_bsoa2_cw02) + qsrflx(ims:ime,jms:jme,p_bsoa2_cw02)
1356 dvel(ims:ime,1,jms:jme,p_ddmass_bsoa3_cw02) = dvel(ims:ime,1,jms:jme,p_ddmass_bsoa3_cw02) + qsrflx(ims:ime,jms:jme,p_bsoa3_cw02)
1357 dvel(ims:ime,1,jms:jme,p_ddmass_bsoa4_cw02) = dvel(ims:ime,1,jms:jme,p_ddmass_bsoa4_cw02) + qsrflx(ims:ime,jms:jme,p_bsoa4_cw02)
1359 dvel(ims:ime,1,jms:jme,p_ddmass_asoaX_cw03) = dvel(ims:ime,1,jms:jme,p_ddmass_asoaX_cw03) + qsrflx(ims:ime,jms:jme,p_asoaX_cw03)
1360 dvel(ims:ime,1,jms:jme,p_ddmass_asoa1_cw03) = dvel(ims:ime,1,jms:jme,p_ddmass_asoa1_cw03) + qsrflx(ims:ime,jms:jme,p_asoa1_cw03)
1361 dvel(ims:ime,1,jms:jme,p_ddmass_asoa2_cw03) = dvel(ims:ime,1,jms:jme,p_ddmass_asoa2_cw03) + qsrflx(ims:ime,jms:jme,p_asoa2_cw03)
1362 dvel(ims:ime,1,jms:jme,p_ddmass_asoa3_cw03) = dvel(ims:ime,1,jms:jme,p_ddmass_asoa3_cw03) + qsrflx(ims:ime,jms:jme,p_asoa3_cw03)
1363 dvel(ims:ime,1,jms:jme,p_ddmass_asoa4_cw03) = dvel(ims:ime,1,jms:jme,p_ddmass_asoa4_cw03) + qsrflx(ims:ime,jms:jme,p_asoa4_cw03)
1364 dvel(ims:ime,1,jms:jme,p_ddmass_bsoaX_cw03) = dvel(ims:ime,1,jms:jme,p_ddmass_bsoaX_cw03) + qsrflx(ims:ime,jms:jme,p_bsoaX_cw03)
1365 dvel(ims:ime,1,jms:jme,p_ddmass_bsoa1_cw03) = dvel(ims:ime,1,jms:jme,p_ddmass_bsoa1_cw03) + qsrflx(ims:ime,jms:jme,p_bsoa1_cw03)
1366 dvel(ims:ime,1,jms:jme,p_ddmass_bsoa2_cw03) = dvel(ims:ime,1,jms:jme,p_ddmass_bsoa2_cw03) + qsrflx(ims:ime,jms:jme,p_bsoa2_cw03)
1367 dvel(ims:ime,1,jms:jme,p_ddmass_bsoa3_cw03) = dvel(ims:ime,1,jms:jme,p_ddmass_bsoa3_cw03) + qsrflx(ims:ime,jms:jme,p_bsoa3_cw03)
1368 dvel(ims:ime,1,jms:jme,p_ddmass_bsoa4_cw03) = dvel(ims:ime,1,jms:jme,p_ddmass_bsoa4_cw03) + qsrflx(ims:ime,jms:jme,p_bsoa4_cw03)
1370 dvel(ims:ime,1,jms:jme,p_ddmass_asoaX_cw04) = dvel(ims:ime,1,jms:jme,p_ddmass_asoaX_cw04) + qsrflx(ims:ime,jms:jme,p_asoaX_cw04)
1371 dvel(ims:ime,1,jms:jme,p_ddmass_asoa1_cw04) = dvel(ims:ime,1,jms:jme,p_ddmass_asoa1_cw04) + qsrflx(ims:ime,jms:jme,p_asoa1_cw04)
1372 dvel(ims:ime,1,jms:jme,p_ddmass_asoa2_cw04) = dvel(ims:ime,1,jms:jme,p_ddmass_asoa2_cw04) + qsrflx(ims:ime,jms:jme,p_asoa2_cw04)
1373 dvel(ims:ime,1,jms:jme,p_ddmass_asoa3_cw04) = dvel(ims:ime,1,jms:jme,p_ddmass_asoa3_cw04) + qsrflx(ims:ime,jms:jme,p_asoa3_cw04)
1374 dvel(ims:ime,1,jms:jme,p_ddmass_asoa4_cw04) = dvel(ims:ime,1,jms:jme,p_ddmass_asoa4_cw04) + qsrflx(ims:ime,jms:jme,p_asoa4_cw04)
1375 dvel(ims:ime,1,jms:jme,p_ddmass_bsoaX_cw04) = dvel(ims:ime,1,jms:jme,p_ddmass_bsoaX_cw04) + qsrflx(ims:ime,jms:jme,p_bsoaX_cw04)
1376 dvel(ims:ime,1,jms:jme,p_ddmass_bsoa1_cw04) = dvel(ims:ime,1,jms:jme,p_ddmass_bsoa1_cw04) + qsrflx(ims:ime,jms:jme,p_bsoa1_cw04)
1377 dvel(ims:ime,1,jms:jme,p_ddmass_bsoa2_cw04) = dvel(ims:ime,1,jms:jme,p_ddmass_bsoa2_cw04) + qsrflx(ims:ime,jms:jme,p_bsoa2_cw04)
1378 dvel(ims:ime,1,jms:jme,p_ddmass_bsoa3_cw04) = dvel(ims:ime,1,jms:jme,p_ddmass_bsoa3_cw04) + qsrflx(ims:ime,jms:jme,p_bsoa3_cw04)
1379 dvel(ims:ime,1,jms:jme,p_ddmass_bsoa4_cw04) = dvel(ims:ime,1,jms:jme,p_ddmass_bsoa4_cw04) + qsrflx(ims:ime,jms:jme,p_bsoa4_cw04)
1384 END SELECT mixactivate_select
1386 IF((config_flags%dust_opt .EQ. 1) .OR. (config_flags%dust_opt .GE. 3) .OR. &
1387 (config_flags%seas_opt .GE. 1) ) THEN
1388 settling_select: SELECT CASE(config_flags%chem_opt)
1390 CASE (DUST,GOCART_SIMPLE,GOCARTRACM_KPP,MOZCART_KPP,T1_MOZCART_KPP,RADM2SORG,RADM2SORG_AQ, &
1391 RADM2SORG_AQCHEM,RACMSORG_AQCHEM_KPP,RACM_ESRLSORG_AQCHEM_KPP,RACM_SOA_VBS_AQCHEM_KPP)
1392 CALL wrf_debug(15,'call gocart settling routine')
1393 call gocart_settling_driver(dtstep,config_flags,t_phy,moist, &
1394 chem,rho_phy,dz8w,p8w,p_phy, &
1395 dustin,seasin,dx,g, &
1396 dustgraset_1,dustgraset_2,dustgraset_3, &
1397 dustgraset_4,dustgraset_5, &
1398 setvel_1,setvel_2,setvel_3,setvel_4,setvel_5, imod, &
1399 ids,ide, jds,jde, kds,kde, &
1400 ims,ime, jms,jme, kms,kme, &
1401 its,ite, jts,jte, kts,kte )
1402 CASE (CHEM_VASH, CHEM_VOLC, CHEM_VOLC_4BIN)
1403 CALL wrf_debug(15,'call vash settling routine')
1404 call vash_settling_driver(dtstep,config_flags,t_phy,moist, &
1405 chem,rho_phy,dz8w,p8w,p_phy, &
1407 ids,ide, jds,jde, kds,kde, &
1408 ims,ime, jms,jme, kms,kme, &
1409 its,ite, jts,jte, kts,kte )
1411 CALL wrf_debug(15,'no settling routine')
1412 END SELECT settling_select
1415 CALL wrf_debug(15,'end of dry_dep_driver')
1417 END SUBROUTINE dry_dep_driver
1419 END MODULE module_dry_dep_driver