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
55 USE module_cam_mam_drydep, only: cam_mam_drydep_driver
57 use module_cam_support, only: pcnst => pcnst_runtime
58 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
59 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
60 USE module_cam_mam_drydep, only: cam_mam_drydep_driver
61 use module_scalar_tables, only: chem_dname_table !Balwinder.Singh@pnnl.gov:Added for MAM aerosols dry deposition
62 USE module_aerosols_sorgam_vbs, only: sorgam_vbs_depdriver
66 TYPE(grid_config_rec_type), INTENT(IN ) :: config_flags
67 LOGICAL, INTENT(IN) :: is_CAMMGMP_used !BSINGH:01/31/2013: Added is_CAMMGMP_used for MAM drydep
68 INTEGER, INTENT(IN ) :: id,julday, &
72 ids,ide, jds,jde, kds,kde, &
73 ims,ime, jms,jme, kms,kme, &
74 its,ite, jts,jte, kts,kte
75 INTEGER, INTENT(IN ) :: ktau
77 REAL(KIND=8), INTENT(IN ) :: curr_secs
78 REAL, DIMENSION( ims:ime, kms:kme, jms:jme, num_moist ), &
80 REAL, DIMENSION( ims:ime, kms:kme, jms:jme, num_scalar ), &
81 INTENT(INOUT ) :: scalar
82 REAL, DIMENSION( ims:ime, kms:kme, jms:jme, num_chem ), &
83 INTENT(INOUT ) :: chem
84 REAL, DIMENSION( ims:ime, kms:kme, jms:jme, num_tracer ), &
85 INTENT(INOUT ) :: tracer
87 REAL, DIMENSION( ims:ime, 1:config_flags%kemit, jms:jme,num_emis_ant),&
88 INTENT(IN ) :: emis_ant
90 REAL, DIMENSION( ims:ime, 1, jms:jme, num_ebu_in ), &
91 INTENT(INOUT ) :: ebu_in
93 REAL, DIMENSION( ims:ime, config_flags%kdepvel, jms:jme, config_flags%ndepvel ), &
94 INTENT(INOUT ) :: dep_vel
96 REAL, DIMENSION( ims:ime, config_flags%kdvel, jms:jme, num_dvel ), &
97 INTENT(INOUT ) :: dvel
100 REAL, DIMENSION( ims:ime , kms:kme , jms:jme ) , &
110 REAL, DIMENSION( ims:ime , kms:kme , jms:jme ) , &
112 h2oaj,h2oai,nu3,ac3,cor3,asulf,ahno3,anh3,cvaro1,cvaro2, &
113 cvalk1,cvole1,cvapi1,cvapi2,cvlim1,cvlim2
114 INTEGER,DIMENSION( ims:ime , jms:jme ) , &
117 REAL, DIMENSION( ims:ime , jms:jme ) , &
129 xland,znt,raincv,ash_fall
130 REAL, DIMENSION( ims:ime , kms:kme , jms:jme ) , &
132 cldfra, & ! cloud fraction current timestep
133 cldfra_old ! cloud fraction previous timestep
134 REAL, DIMENSION( ims:ime , jms:jme, 5 ) , &
135 INTENT(IN) :: seasin,dustin
136 REAL, DIMENSION( ims:ime , jms:jme ) , &
139 REAL, DIMENSION( ims:ime , jms:jme , num_chem ) , &
141 ddlen, & !dry deposition length
142 ddflx !dry deposition flux
144 REAL, INTENT(OUT), dimension(ims:ime,kms:kme,jms:jme) :: nsource, &
145 ccn1,ccn2,ccn3,ccn4,ccn5,ccn6 ! number conc of aerosols activated at supersat
147 REAL, INTENT(IN ) :: &
150 INTEGER, INTENT(INOUT) :: num_vert_mix
152 REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: &
153 dustdrydep_1, dustdrydep_2, dustdrydep_3, &
154 dustdrydep_4, dustdrydep_5, depvelocity
155 REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: &
156 dustgraset_1,dustgraset_2,dustgraset_3, &
157 dustgraset_4,dustgraset_5, &
158 setvel_1,setvel_2,setvel_3,setvel_4,setvel_5
159 INTEGER, INTENT(IN) :: imod
161 !--- deposition and emissions stuff
164 ! .. Local Scalars ..
165 REAL :: clwchem, dvfog, dvpart, &
166 rad, rhchem, ta, ustar, vegfrac, z1,zntt
167 REAL :: old, new, fac
169 INTEGER :: iland, iprt, iseason, jce, jcs, &
170 n, nr, ipr, jpr, nvr, &
171 idrydep_onoff, aer_mech_id
172 INTEGER :: l2,m,lnum,lmass
174 LOGICAL :: highnh3, rainflag, vegflag, wetflag
178 REAL, DIMENSION( its:ite, jts:jte, num_chem ) :: ddvel
179 REAL, DIMENSION( num_chem ) :: ddmassn
181 REAL, DIMENSION( ims:ime, jms:jme, num_chem ) :: qsrflx ! dry deposition flux of aerosols (explicit aq.-phase cases)
183 REAL, DIMENSION( ims:ime , kms:kme , jms:jme ) :: dryrho_phy
184 REAL, DIMENSION( kms:kme ) :: dryrho_1d
186 ! turbulent transport
187 real :: pblst(kts:kte),ekmfull(kts:kte+1),zzfull(kts:kte+1),zz(kts:kte)
188 integer :: ii,jj,kk,i,j,k,nv
191 ! necessary for aerosols (module dependent)
193 REAL, DIMENSION( its:ite, jts:jte ) :: aer_res, aer_res_def, aer_res_zcen
195 INTEGER, DIMENSION( pcnst ) :: lptr_q_to_chem !Balwinder.Singh@pnnl.gov: pointer from Q array to CHEM array
196 LOGICAL, DIMENSION( num_chem ) :: vertMixAero !Balwinder.Singh@pnnl.gov: Flag (true or false) which decides whether to vertical mix a constituent or not
198 real, parameter :: m2cm = 100.
200 REAL RSI ! gas constant in SI units (J/mol-K)
201 PARAMETER (RSI = 8.314510) ! RSI is the same as RGASUNIV in CONST.EXT
203 integer :: k_a, k_c, kmax, m_mam
204 real, dimension( its:ite, jts:jte ) :: frac_removed
208 ! .. Intrinsic Functions ..
211 !Balwinder.Singh@pnnl.gov: Following code sets vertMixAero(:) flag to true or false based on whether
212 !a particular CHEM array constituent should be mixed (vertically) by dry_dep_driver or not
213 !The constituents which are mixed in CAMMGMP microphysics are NOT mixed in dry_dep_driver.
214 if(is_CAMMGMP_used) then ! If CAMMGMP microphysics is selected
215 vertMixAero(:) = .FALSE.
216 lptr_q_to_chem(:) = -999888777 ! pointer which maps Q array (CAM's STATE%Q array) to CHEM array
219 l2 = lptr_chem_to_q(nv)
221 vertMixAero(nv) = .TRUE. !Set default true
222 lptr_q_to_chem(l2) = nv
226 !Set constitutents, which are mixed in CAMMGMP, False
228 lnum = numptr_amode(m)
230 vertMixAero(lptr_q_to_chem(lnum)) = .FALSE.
232 do l = 1, nspec_amode(m)
233 lmass = lmassptr_amode(l,m)
234 vertMixAero(lptr_q_to_chem(lmass)) = .FALSE.
240 ! compute dry deposition velocities = ddvel
242 ! 28-jun-2005 rce - initialize ddvel=0; call aerosol drydep routine
243 ! only when gas_drydep_opt == WESELY
244 ! the wesely_driver routine computes aer_res, and currently
245 ! you cannot compute aerosol drydep without it !!
246 ! 08-jul-2005 rce - pass idrydep_onoff to mixactivate routines
251 drydep_select: SELECT CASE(config_flags%gas_drydep_opt)
255 ! gas_drydep_opt == WESELY means
257 ! other (appropriate) routine for aerosols
259 CALL wrf_debug(15,'DOING DRY DEP VELOCITIES WITH WESELY METHOD')
261 IF( config_flags%chem_opt /= CHEM_TRACER .and. &
262 config_flags%chem_opt /= CHEM_TRACE2 .and. &
263 config_flags%chem_opt /= CO2_TRACER .and. &
264 config_flags%chem_opt /= GHG_TRACER .and. &
265 config_flags%chem_opt /= CHEM_VASH .and. &
266 config_flags%chem_opt /= CHEM_VOLC_4BIN .and. &
267 config_flags%chem_opt /= DUST .and. &
268 config_flags%chem_opt /= GOCART_SIMPLE .and. &
269 config_flags%chem_opt /= GOCARTRACM_KPP )THEN
270 call wesely_driver(id,ktau,dtstep, &
271 config_flags,current_month, &
272 gmt,julday,t_phy,moist,p8w,t8w,raincv, &
273 p_phy,chem,rho_phy,dz8w,ddvel,aer_res_def,aer_res_zcen, &
274 ivgtyp,tsk,gsw,vegfra,pbl,rmol,ust,znt,xlat,xlong,z,z_at_w,&
276 ids,ide, jds,jde, kds,kde, &
277 ims,ime, jms,jme, kms,kme, &
278 its,ite, jts,jte, kts,kte )
279 !-----------------------------------------------------------------
280 ! this does aerosol species (dust,seas, bc,oc) for gocart only
281 !-----------------------------------------------------------------
282 IF ( config_flags%chem_opt == MOZCART_KPP .or. &
283 config_flags%chem_opt == T1_MOZCART_KPP ) then
284 call gocart_drydep_driver( dtstep, &
285 config_flags, numgas, &
286 t_phy, moist, p8w, t8w, rmol,aer_res_def, &
287 p_phy, chem, rho_phy, dz8w, ddvel, xland, hfx, &
288 ivgtyp, tsk, vegfra, pbl, ust, znt, xlat, xlong, &
289 dustdrydep_1,dustdrydep_2,dustdrydep_3, &
290 dustdrydep_4,dustdrydep_5, &
292 ids,ide, jds,jde, kds,kde, &
293 ims,ime, jms,jme, kms,kme, &
294 its,ite, jts,jte, kts,kte )
297 if( config_flags%diagnostic_chem == DEPVEL1 .and. &
298 config_flags%chem_opt == CB05_SORG_VBS_AQ_KPP ) then
300 dvel(its:ite,1,j,p_dvel_o3) = m2cm*ddvel(its:ite,j,p_o3)
301 dvel(its:ite,1,j,p_dvel_no) = m2cm*ddvel(its:ite,j,p_no)
302 dvel(its:ite,1,j,p_dvel_no2) = m2cm*ddvel(its:ite,j,p_no2)
303 dvel(its:ite,1,j,p_dvel_nh3) = m2cm*ddvel(its:ite,j,p_nh3)
304 dvel(its:ite,1,j,p_dvel_so2) = m2cm*ddvel(its:ite,j,p_so2)
305 dvel(its:ite,1,j,p_dvel_so4) = m2cm*ddvel(its:ite,j,p_sulf)
306 dvel(its:ite,1,j,p_dvel_hno3) = m2cm*ddvel(its:ite,j,p_hno3)
310 if( config_flags%diagnostic_chem == DEPVEL1 .and. &
311 (config_flags%chem_opt == MOZCART_KPP .or. &
312 config_flags%chem_opt == T1_MOZCART_KPP .or. &
313 config_flags%chem_opt == MOZART_KPP .or. &
314 config_flags%chem_opt == MOZART_MOSAIC_4BIN_KPP .or. &
315 config_flags%chem_opt == MOZART_MOSAIC_4BIN_AQ_KPP ) ) then
317 dvel(its:ite,1,j,p_dvel_o3) = m2cm*ddvel(its:ite,j,p_o3)
318 dvel(its:ite,1,j,p_dvel_no) = m2cm*ddvel(its:ite,j,p_no)
319 dvel(its:ite,1,j,p_dvel_no2) = m2cm*ddvel(its:ite,j,p_no2)
320 dvel(its:ite,1,j,p_dvel_nh3) = m2cm*ddvel(its:ite,j,p_nh3)
321 dvel(its:ite,1,j,p_dvel_hno3) = m2cm*ddvel(its:ite,j,p_hno3)
322 dvel(its:ite,1,j,p_dvel_hno4) = m2cm*ddvel(its:ite,j,p_hno4)
323 dvel(its:ite,1,j,p_dvel_h2o2) = m2cm*ddvel(its:ite,j,p_h2o2)
324 dvel(its:ite,1,j,p_dvel_co) = m2cm*ddvel(its:ite,j,p_co)
325 dvel(its:ite,1,j,p_dvel_ch3ooh) = m2cm*ddvel(its:ite,j,p_ch3ooh)
326 dvel(its:ite,1,j,p_dvel_hcho) = m2cm*ddvel(its:ite,j,p_hcho)
327 dvel(its:ite,1,j,p_dvel_ch3oh) = m2cm*ddvel(its:ite,j,p_ch3oh)
328 dvel(its:ite,1,j,p_dvel_eo2) = m2cm*ddvel(its:ite,j,p_eo2)
329 dvel(its:ite,1,j,p_dvel_ald) = m2cm*ddvel(its:ite,j,p_ald)
330 dvel(its:ite,1,j,p_dvel_ch3cooh) = m2cm*ddvel(its:ite,j,p_ch3cooh)
331 dvel(its:ite,1,j,p_dvel_acet) = m2cm*ddvel(its:ite,j,p_acet)
332 dvel(its:ite,1,j,p_dvel_mgly) = m2cm*ddvel(its:ite,j,p_mgly)
333 dvel(its:ite,1,j,p_dvel_gly) = m2cm*ddvel(its:ite,j,p_gly)
334 dvel(its:ite,1,j,p_dvel_paa) = m2cm*ddvel(its:ite,j,p_paa)
335 dvel(its:ite,1,j,p_dvel_pooh) = m2cm*ddvel(its:ite,j,p_c3h6ooh)
336 dvel(its:ite,1,j,p_dvel_mpan) = m2cm*ddvel(its:ite,j,p_mpan)
337 dvel(its:ite,1,j,p_dvel_mco3) = m2cm*ddvel(its:ite,j,p_mco3)
338 dvel(its:ite,1,j,p_dvel_mvkooh) = m2cm*ddvel(its:ite,j,p_mvkooh)
339 dvel(its:ite,1,j,p_dvel_c2h5oh) = m2cm*ddvel(its:ite,j,p_c2h5oh)
340 dvel(its:ite,1,j,p_dvel_etooh) = m2cm*ddvel(its:ite,j,p_etooh)
341 dvel(its:ite,1,j,p_dvel_prooh) = m2cm*ddvel(its:ite,j,p_prooh)
342 dvel(its:ite,1,j,p_dvel_acetp) = m2cm*ddvel(its:ite,j,p_acetp)
343 dvel(its:ite,1,j,p_dvel_onit) = m2cm*ddvel(its:ite,j,p_onit)
344 dvel(its:ite,1,j,p_dvel_onitr) = m2cm*ddvel(its:ite,j,p_onitr)
345 dvel(its:ite,1,j,p_dvel_isooh) = m2cm*ddvel(its:ite,j,p_isooh)
346 dvel(its:ite,1,j,p_dvel_acetol) = m2cm*ddvel(its:ite,j,p_acetol)
347 dvel(its:ite,1,j,p_dvel_glyald) = m2cm*ddvel(its:ite,j,p_glyald)
348 dvel(its:ite,1,j,p_dvel_hydrald) = m2cm*ddvel(its:ite,j,p_hydrald)
349 dvel(its:ite,1,j,p_dvel_alkooh) = m2cm*ddvel(its:ite,j,p_alkooh)
350 dvel(its:ite,1,j,p_dvel_mekooh) = m2cm*ddvel(its:ite,j,p_mekooh)
351 dvel(its:ite,1,j,p_dvel_tolooh) = m2cm*ddvel(its:ite,j,p_tolooh)
352 dvel(its:ite,1,j,p_dvel_xooh) = m2cm*ddvel(its:ite,j,p_xooh)
353 dvel(its:ite,1,j,p_dvel_so2) = m2cm*ddvel(its:ite,j,p_so2)
354 dvel(its:ite,1,j,p_dvel_so4) = m2cm*ddvel(its:ite,j,p_sulf)
355 dvel(its:ite,1,j,p_dvel_pan) = m2cm*ddvel(its:ite,j,p_pan)
356 dvel(its:ite,1,j,p_dvel_terpooh) = m2cm*ddvel(its:ite,j,p_terpooh)
360 if ( config_flags%chem_opt == MOZART_MOSAIC_4BIN_AQ_KPP ) then
362 dvel(its:ite,1,j,p_dvel_cvasoaX) = 0.0
363 dvel(its:ite,1,j,p_dvel_cvasoa1) = m2cm*ddvel(its:ite,j,p_cvasoa1)
364 dvel(its:ite,1,j,p_dvel_cvasoa2) = m2cm*ddvel(its:ite,j,p_cvasoa2)
365 dvel(its:ite,1,j,p_dvel_cvasoa3) = m2cm*ddvel(its:ite,j,p_cvasoa3)
366 dvel(its:ite,1,j,p_dvel_cvasoa4) = m2cm*ddvel(its:ite,j,p_cvasoa4)
367 dvel(its:ite,1,j,p_dvel_cvbsoaX) = 0.0
368 dvel(its:ite,1,j,p_dvel_cvbsoa1) = m2cm*ddvel(its:ite,j,p_cvbsoa1)
369 dvel(its:ite,1,j,p_dvel_cvbsoa2) = m2cm*ddvel(its:ite,j,p_cvbsoa2)
370 dvel(its:ite,1,j,p_dvel_cvbsoa3) = m2cm*ddvel(its:ite,j,p_cvbsoa3)
371 dvel(its:ite,1,j,p_dvel_cvbsoa4) = m2cm*ddvel(its:ite,j,p_cvbsoa4)
375 ELSEIF ( config_flags%chem_opt == GOCART_SIMPLE ) then
376 call wesely_driver(id,ktau,dtstep, &
377 config_flags,current_month, &
378 gmt,julday,t_phy,moist,p8w,t8w,raincv, &
379 p_phy,chem,rho_phy,dz8w,ddvel,aer_res_def,aer_res_zcen, &
380 ivgtyp,tsk,gsw,vegfra,pbl,rmol,ust,znt,xlat,xlong,z,z_at_w,&
382 ids,ide, jds,jde, kds,kde, &
383 ims,ime, jms,jme, kms,kme, &
384 its,ite, jts,jte, kts,kte )
386 ! this does aerosol species (dust,seas, bc,oc) for gocart only
388 call gocart_drydep_driver(dtstep, &
389 config_flags,numgas, &
390 t_phy,moist,p8w,t8w,rmol,aer_res_def, &
391 p_phy,chem,rho_phy,dz8w,ddvel,xland,hfx, &
392 ivgtyp,tsk,vegfra,pbl,ust,znt,xlat,xlong, &
393 dustdrydep_1,dustdrydep_2,dustdrydep_3, &
394 dustdrydep_4,dustdrydep_5, &
396 ids,ide, jds,jde, kds,kde, &
397 ims,ime, jms,jme, kms,kme, &
398 its,ite, jts,jte, kts,kte )
399 ELSEIF ( config_flags%chem_opt == DUST) then
401 ! this does aerosol species (dust) for gocart only
403 call gocart_drydep_driver(dtstep, &
404 config_flags,numgas, &
405 t_phy,moist,p8w,t8w,rmol,aer_res_def, &
406 p_phy,chem,rho_phy,dz8w,ddvel,xland,hfx, &
407 ivgtyp,tsk,vegfra,pbl,ust,znt,xlat,xlong, &
408 dustdrydep_1,dustdrydep_2,dustdrydep_3, &
409 dustdrydep_4,dustdrydep_5, &
411 ids,ide, jds,jde, kds,kde, &
412 ims,ime, jms,jme, kms,kme, &
413 its,ite, jts,jte, kts,kte )
416 ELSEIF ( config_flags%chem_opt == GOCARTRACM_KPP) then
418 ! this does aerosol species (dust,seas, bc,oc) for gocart only
420 call wesely_driver(id,ktau,dtstep, &
421 config_flags,current_month, &
422 gmt,julday,t_phy,moist,p8w,t8w,raincv, &
423 p_phy,chem,rho_phy,dz8w,ddvel,aer_res_def,aer_res_zcen, &
424 ivgtyp,tsk,gsw,vegfra,pbl,rmol,ust,znt,xlat,xlong,z,z_at_w,&
426 ids,ide, jds,jde, kds,kde, &
427 ims,ime, jms,jme, kms,kme, &
428 its,ite, jts,jte, kts,kte )
429 call gocart_drydep_driver(dtstep, &
430 config_flags,numgas, &
431 t_phy,moist,p8w,t8w,rmol,aer_res_def, &
432 p_phy,chem,rho_phy,dz8w,ddvel,xland,hfx, &
433 ivgtyp,tsk,vegfra,pbl,ust,znt,xlat,xlong, &
434 dustdrydep_1,dustdrydep_2,dustdrydep_3, &
435 dustdrydep_4,dustdrydep_5, &
437 ids,ide, jds,jde, kds,kde, &
438 ims,ime, jms,jme, kms,kme, &
439 its,ite, jts,jte, kts,kte )
442 !Set dry deposition velocity to zero when using the
443 !chemistry tracer mode.
447 ! diagnose output dry deposition flux
448 if( config_flags%diagnostic_dep == 1) then
451 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
456 if (config_flags%aer_aerodynres_opt == 2) then
457 ! use aerodynamic resistance from center of layer kts to surface
458 aer_res(:,:) = aer_res_zcen(:,:)
460 ! this is the default -- use aerodynamic resistance from
461 ! "default reference height" (currently 2 m) to surface
462 aer_res(:,:) = aer_res_def(:,:)
466 aer_mech_id_select: SELECT CASE(config_flags%chem_opt)
469 CASE (RADM2SORG,RADM2SORG_AQ,RADM2SORG_AQCHEM,RADM2SORG_KPP, &
470 RACM_ESRLSORG_KPP,RACM_SOA_VBS_KPP,RACM_SOA_VBS_AQCHEM_KPP, &
471 RACM_SOA_VBS_HET_KPP, &
472 CBMZSORG,CBMZSORG_AQ, &
473 CB05_SORG_AQ_KPP,CB05_SORG_VBS_AQ_KPP)
475 CASE (RACMSORG_AQ,RACMSORG_AQCHEM_KPP,RACM_ESRLSORG_AQCHEM_KPP,RACMSORG_KPP)
477 CASE ( CBMZ_MOSAIC_4BIN, CBMZ_MOSAIC_KPP, CBMZ_MOSAIC_8BIN, CBMZ_MOSAIC_4BIN_AQ, &
478 CBMZ_MOSAIC_8BIN_AQ,SAPRC99_MOSAIC_4BIN_VBS2_KPP, &
479 CBMZ_MOSAIC_DMS_4BIN, CBMZ_MOSAIC_DMS_8BIN, CBMZ_MOSAIC_DMS_4BIN_AQ, CBMZ_MOSAIC_DMS_8BIN_AQ, &
480 MOZART_MOSAIC_4BIN_KPP, MOZART_MOSAIC_4BIN_AQ_KPP, &
481 CRI_MOSAIC_8BIN_AQ_KPP, CRI_MOSAIC_4BIN_AQ_KPP, SAPRC99_MOSAIC_8BIN_VBS2_AQ_KPP, &!BSINGH(12/03/2013): Added SAPRC 8 bin
482 SAPRC99_MOSAIC_8BIN_VBS2_KPP)!BSINGH(04/04/2014): Added SAPRC 8 bin non-aq
484 CASE ( CBMZ_CAM_MAM3_NOAQ, CBMZ_CAM_MAM3_AQ, CBMZ_CAM_MAM7_NOAQ, CBMZ_CAM_MAM7_AQ )
488 END SELECT aer_mech_id_select
490 ! config_flags%aer_drydep_opt <= 0 -- aerosol depositon velocities are set to zero
491 ! config_flags%aer_drydep_opt >= 100 -- aerosol depvels are calculated in subr aer_depvel_driver
492 ! (see module_aer_drydep.F for details)
493 ! config_flags%aer_drydep_opt == 1 -- SORGAM chem packages use subr vdvg_2 of module_aerosols_sorgam.F
494 ! MOSAIC chem packages subr aerosol_depvel_2 of module_mosaic_drydep.F
495 ! config_flags%aer_drydep_opt == 11 -- SORGAM chem packages use subr vdvg of module_aerosols_sorgam.F
497 if ((config_flags%aer_drydep_opt <= 0) .or. (aer_mech_id <= 0)) then
498 CALL wrf_debug(15,'AEROSOL DRY DEP VELOCITIES = 0.0')
500 else if (config_flags%aer_drydep_opt <= 99) then
502 adrydep_select: SELECT CASE(config_flags%chem_opt)
503 CASE (RADM2SORG,RADM2SORG_AQ,RADM2SORG_AQCHEM,RADM2SORG_KPP,RACM_ESRLSORG_KPP,CBMZSORG,CBMZSORG_AQ)
504 CALL wrf_debug(15,'DOING DRY DEP VELOCITIES FOR AEROSOLS/RADM')
505 call sorgam_depdriver (id,config_flags,ktau,dtstep, &
506 ust,t_phy,moist,p8w,t8w,rmol,znt,pbl, &
507 alt,p_phy,chem,rho_phy,dz8w,z,z_at_w, &
508 h2oaj,h2oai,nu3,ac3,cor3,asulf,ahno3,anh3,cvaro1,cvaro2, &
509 cvalk1,cvole1,cvapi1,cvapi2,cvlim1,cvlim2, &
510 aer_res,ddvel(:,:,numgas+1:num_chem), &
511 numgas,ddflx(:,:,numgas+1:num_chem), &
513 ids,ide, jds,jde, kds,kde, &
514 ims,ime, jms,jme, kms,kme, &
515 its,ite, jts,jte, kts,kte )
516 CASE (RACMSORG_AQ,RACMSORG_AQCHEM_KPP,RACM_ESRLSORG_AQCHEM_KPP,RACMSORG_KPP)
517 CALL wrf_debug(15,'DOING DRY DEP VELOCITIES FOR AEROSOLS/RACM')
518 call sorgam_depdriver (id,config_flags,ktau,dtstep, &
519 ust,t_phy,moist,p8w,t8w,rmol,znt,pbl, &
520 alt,p_phy,chem,rho_phy,dz8w,z,z_at_w, &
521 h2oaj,h2oai,nu3,ac3,cor3,asulf,ahno3,anh3,cvaro1,cvaro2, &
522 cvalk1,cvole1,cvapi1,cvapi2,cvlim1,cvlim2, &
523 aer_res,ddvel(:,:,numgas+1:num_chem), &
524 numgas,ddflx(:,:,numgas+1:num_chem), &
526 ids,ide, jds,jde, kds,kde, &
527 ims,ime, jms,jme, kms,kme, &
528 its,ite, jts,jte, kts,kte )
529 CASE (CB05_SORG_AQ_KPP)
530 CALL wrf_debug(15,'DOING DRY DEP VELOCITIES FOR AEROSOLS/CB05')
531 call sorgam_depdriver (id,config_flags,ktau,dtstep, &
532 ust,t_phy,moist,p8w,t8w,rmol,znt,pbl, &
533 alt,p_phy,chem,rho_phy,dz8w,z,z_at_w, &
534 h2oaj,h2oai,nu3,ac3,cor3,asulf,ahno3,anh3,cvaro1,cvaro2, &
535 cvalk1,cvole1,cvapi1,cvapi2,cvlim1,cvlim2, &
536 aer_res,ddvel(:,:,numgas+1:num_chem), &
537 numgas,ddflx(:,:,numgas+1:num_chem), &
539 ids,ide, jds,jde, kds,kde, &
540 ims,ime, jms,jme, kms,kme, &
541 its,ite, jts,jte, kts,kte )
542 CASE (CB05_SORG_VBS_AQ_KPP)
543 CALL wrf_debug(15,'DOING DRY DEP VELOCITIES FOR AEROSOLS/CB05')
544 call sorgam_vbs_depdriver (id,config_flags,ktau,dtstep, &
545 ust,t_phy,moist,p8w,t8w,rmol,znt,pbl, &
546 alt,p_phy,chem,rho_phy,dz8w,rh,z,z_at_w, &
547 h2oaj,h2oai,nu3,ac3,cor3,asulf,ahno3,anh3, &
548 aer_res,ddvel(:,:,numgas+1:num_chem), &
549 numgas,ddflx(:,:,numgas+1:num_chem), &
551 ids,ide, jds,jde, kds,kde, &
552 ims,ime, jms,jme, kms,kme, &
553 its,ite, jts,jte, kts,kte )
555 CASE ( CBMZ_MOSAIC_4BIN, CBMZ_MOSAIC_KPP, CBMZ_MOSAIC_8BIN, CBMZ_MOSAIC_4BIN_AQ, CBMZ_MOSAIC_8BIN_AQ, &
556 CBMZ_MOSAIC_DMS_4BIN, CBMZ_MOSAIC_DMS_8BIN, CBMZ_MOSAIC_DMS_4BIN_AQ, CBMZ_MOSAIC_DMS_8BIN_AQ, &
557 SAPRC99_MOSAIC_4BIN_VBS2_KPP, &
558 MOZART_MOSAIC_4BIN_KPP, MOZART_MOSAIC_4BIN_AQ_KPP, &
559 CRI_MOSAIC_8BIN_AQ_KPP, CRI_MOSAIC_4BIN_AQ_KPP, &
560 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
561 CALL wrf_debug(15,'DOING DRY DEP VELOCITIES FOR MOSAIC AEROSOLS')
562 call mosaic_drydep_driver( &
563 id, curr_secs, ktau, dtstep, config_flags, &
565 t_phy, rho_phy, p_phy, &
567 moist, chem, ddvel, &
568 ids,ide, jds,jde, kds,kde, &
569 ims,ime, jms,jme, kms,kme, &
570 its,ite, jts,jte, kts,kte )
572 CASE ( RACM_SOA_VBS_KPP,RACM_SOA_VBS_AQCHEM_KPP,RACM_SOA_VBS_HET_KPP )
573 CALL wrf_debug(15,'DOING DRY DEP VELOCITIES FOR SOA_VBS AEROSOLS')
574 call soa_vbs_depdriver (id,config_flags,ktau,dtstep, &
575 ust,t_phy,moist,p8w,t8w,rmol,znt,pbl, &
576 alt,p_phy,chem,rho_phy,dz8w,rh,z,z_at_w, &
577 h2oaj,h2oai,nu3,ac3,cor3,asulf,ahno3,anh3, &
578 aer_res,ddvel(:,:,numgas+1:num_chem), &
580 ids,ide, jds,jde, kds,kde, &
581 ims,ime, jms,jme, kms,kme, &
582 its,ite, jts,jte, kts,kte )
583 CASE (CBMZ_CAM_MAM3_NOAQ, CBMZ_CAM_MAM3_AQ, CBMZ_CAM_MAM7_NOAQ, CBMZ_CAM_MAM7_AQ)
584 CALL wrf_debug(15,'DOING DRY DEP VELOCITIES FOR CAM_MAM AEROSOLS')
585 call cam_mam_drydep_driver( &
586 id, curr_secs, ktau, dtstep, config_flags, &
588 t_phy, rho_phy, p_phy, &
590 moist, chem, ddvel, &
591 ids,ide, jds,jde, kds,kde, &
592 ims,ime, jms,jme, kms,kme, &
593 its,ite, jts,jte, kts,kte )
597 END SELECT adrydep_select
598 else ! (config_flags%aer_drydep_opt > 99)
599 CALL wrf_debug(15,'DOING DRY DEP VELOCITIES THRU AER_DRYDEP_DRIVER')
600 call aer_drydep_driver( &
601 id, ktau, dtstep, config_flags, aer_mech_id, &
603 t_phy, rho_phy, p_phy, &
604 alt, p8w, t8w, dz8w, z, z_at_w, &
605 ust, aer_res, ivgtyp, vegfra, pbl, rmol, znt, &
606 moist, chem, ddvel, &
607 h2oai, h2oaj, numgas, &
608 ids,ide, jds,jde, kds,kde, &
609 ims,ime, jms,jme, kms,kme, &
610 its,ite, jts,jte, kts,kte )
612 if (config_flags%aer_drydep_opt > 0) then
613 if ((aer_mech_id > 0) .and. (aer_mech_id <= 4)) then
614 ! limit aerosol ddvels to <= 0.5 m/s
615 ! drydep routines occasionally produce unrealistically-large particle
616 ! diameter leading to unrealistically-large sedimentation velocity
617 ddvel(:,:,numgas+1:num_chem) = min( 0.50, ddvel(:,:,numgas+1:num_chem) )
621 !For MAM aersols dry deposition
622 if ((aer_mech_id == 4)) then
623 do m_mam = 1, num_chem
624 !Look for species with _a or _c and adjust these species for dry deposition
625 k_a = index(trim(adjustl(chem_dname_table(1,m_mam))),'_a') !To include *_a* species
626 k_c = index(trim(adjustl(chem_dname_table(1,m_mam))),'_c') !To include *_c* species
628 if(kmax > 0 ) then !kmax>0 means a species has _a or _c
629 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) ) )
630 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
637 END SELECT drydep_select
639 ! Add dep_vel here for all aerosol and gas species in the dvel array
640 ll = max( 1, min( config_flags%ndepvel, num_vert_mix ) )
641 dep_vel(:,:,:,:) = 0.
644 do k=1,config_flags%kdepvel
646 dep_vel(i,k,j,l) = ddvel(i,j,l)
652 ! This will be called later from subgrd_transport_driver.F !!!!!!!!
655 if( config_flags%diagnostic_dep == 1) then
656 ddlen(its:ite,jts:jte,:)=ddlen(its:ite,jts:jte,:)+ddvel(its:ite,jts:jte,:)*m2cm
660 if (num_vert_mix == 0) then
667 !-- start with vertical mixing
670 zzfull(k)=z_at_w(i,k,j)-z_at_w(i,kts,j)
673 ekmfull(k)=max(1.e-6,exch_h(i,k,j))
678 !!$! UNCOMMENT THIS AND FINE TUNE LEVELS TO YOUR DOMAIN IF YOU WANT TO
679 !!$! FORCE MIXING ESPECIALLY OVER URBAN AREAS TO A CERTAIN DEPTH:
681 !!$! --- Mix the emissions up several layers in urban areas if no urban surface physics
682 !!$! if e_co > 0., the grid cell should not be over water
683 !!$! if e_co > 200, the grid cell should be over a large urban region
685 ! Do NOT increase mixing at surface/kts, where exch==0
686 ! this code is wrong - doesn't work if e_co is == param_first_scalar
687 ! (like it happened to be the case for MOZCART)
688 ! if (p_e_co > param_first_scalar )then
689 if (p_e_co >= param_first_scalar )then
690 if (sf_urban_physics .eq. 0 ) then
691 if (emis_ant(i,kts,j,p_e_co) .gt. 0) then
692 ekmfull(kts+1:kts+10) = max(ekmfull(kts+1:kts+10),1.)
694 if (emis_ant(i,kts,j,p_e_co) .gt. 200) then
695 ekmfull(kts+1:kte/2) = max(ekmfull(kts+1:kte/2),2.)
697 if (p_e_pm25i > param_first_scalar )then
698 if (emis_ant(i,kts,j,p_e_pm25i)+ emis_ant(i,kts,j,p_e_pm25j) .GT. 8.19e-4*200) then
699 ekmfull(kts+1:kte/2) = max(ekmfull(kts+1:kte/2),2.)
702 if (p_e_pm_25 > param_first_scalar )then
703 if (emis_ant(i,kts,j,p_e_pm_25) .GT. 8.19e-4*200) then
704 ekmfull(kts+1:kte/2) = max(ekmfull(kts+1:kte/2),2.)
709 !!$! --- Mix the emissions up several layers when satellite data shows a wildfire
710 !!$! if ebu_in_e_co > 0., a wildfire exists so increase vertical mixing
711 ! if (p_ebu_in_co > param_first_scalar )then
712 if (p_ebu_in_co >= param_first_scalar )then
713 if (ebu_in(i,1,j,p_ebu_in_co) .gt. 0) then
714 ekmfull(kts+1:kte/2) = max(ekmfull(kts+1:kte/2),2.)
719 zz(k)=z(i,k,j)-z_at_w(i,kts,j)
722 ! vertical mixing routine (including deposition)
723 ! need to be careful here with that dumm tracer in spot 1
724 ! do not need lho,lho2
725 ! (03-may-2006 rce - calc dryrho_1d and pass it to vertmx)
727 dep_vel_o3(i,j)=ddvel(i,j,p_o3)
729 if(is_CAMMGMP_used .and. .not.vertMixAero(nv))cycle !Balwinder.Singh@pnnl.gov: Do mix constituents which are already mixed by CAMMGMP microphysics
731 pblst(k)=max(epsilc,chem(i,k,j,nv))
732 dryrho_1d(k) = 1./alt(i,k,j)
735 mix_select: SELECT CASE(config_flags%chem_opt)
736 CASE (RADM2SORG_AQ, RADM2SORG_AQCHEM, RACMSORG_AQ, RACMSORG_AQCHEM_KPP, RACM_ESRLSORG_AQCHEM_KPP, CBMZ_MOSAIC_4BIN_AQ, &
737 CBMZ_MOSAIC_8BIN_AQ, CBMZSORG_AQ, CBMZ_MOSAIC_DMS_4BIN, CBMZ_MOSAIC_DMS_8BIN, CBMZ_MOSAIC_DMS_4BIN_AQ, &
738 CBMZ_MOSAIC_DMS_8BIN_AQ, CRI_MOSAIC_8BIN_AQ_KPP, CRI_MOSAIC_4BIN_AQ_KPP, &
739 MOZART_MOSAIC_4BIN_AQ_KPP, RACM_SOA_VBS_AQCHEM_KPP, &
740 SAPRC99_MOSAIC_8BIN_VBS2_AQ_KPP, &
741 CB05_SORG_AQ_KPP, CB05_SORG_VBS_AQ_KPP)
742 if(.not.is_aerosol(nv))then ! mix gases not aerosol
743 call vertmx(dtstep,pblst,ekmfull,dryrho_1d, &
744 zzfull,zz,ddvel(i,j,nv),kts,kte)
747 !The default case below does turbulent mixing for all gas and aerosol species
748 !If aqueous phase is not activated
749 !It requires ddvel array as a boundary condition near surface for flux of species
750 !The top boundary condition for eddy diffusivity is zero
752 call vertmx(dtstep,pblst,ekmfull,dryrho_1d, &
753 zzfull,zz,ddvel(i,j,nv),kts,kte)
755 END SELECT mix_select
758 ! dry deposition is combined with vertical mixing, but column independent.
759 ! Hence, all molecules lost per column must be dry deposited.
761 ! old and new column totals (mol/m2 or ug/m2)
767 if (nv <= numgas) then
768 ! from ppmv to mol/m2
769 ! fac = 1e-6 * rho * 1/mw_air * dz
771 fac = 1e-6 * dryrho_1d(k) * 1./(mwdry*1.e-3) * dz8w(i,k,j)
773 ! from ug/kg to ug/m2
776 fac = dryrho_1d(k) * dz8w(i,k,j)
779 old = old + max(epsilc,chem(i,k,j,nv)) * fac
780 new = new + max(epsilc,pblst(k)) * fac
783 ! we ignore (spurious) and add new dry deposition to
784 ! existing field (accumulated deposition!)
785 ddmassn(nv) = max( 0.0, (old - new) )
788 chem(i,k,j,nv)=max(epsilc,pblst(k))
792 if( config_flags%diagnostic_chem == DEPVEL1 .and. &
793 (config_flags%chem_opt == CB05_SORG_VBS_AQ_KPP) ) then
794 dvel(i,1,j,p_ddmass_o3) = dvel(i,1,j,p_ddmass_o3) + ddmassn(p_o3)
795 dvel(i,1,j,p_ddmass_no) = dvel(i,1,j,p_ddmass_no) + ddmassn(p_no)
796 dvel(i,1,j,p_ddmass_no2) = dvel(i,1,j,p_ddmass_no2) + ddmassn(p_no2)
797 dvel(i,1,j,p_ddmass_nh3) = dvel(i,1,j,p_ddmass_nh3) + ddmassn(p_nh3)
798 dvel(i,1,j,p_ddmass_hno3) = dvel(i,1,j,p_ddmass_hno3) + ddmassn(p_hno3)
799 dvel(i,1,j,p_ddmass_so2) = dvel(i,1,j,p_ddmass_so2) + ddmassn(p_so2)
800 dvel(i,1,j,p_ddmass_so4) = dvel(i,1,j,p_ddmass_so4) + ddmassn(p_sulf)
801 dvel(i,1,j,p_ddmass_so4aj) = dvel(i,1,j,p_ddmass_so4aj) + ddmassn(p_so4aj)
802 dvel(i,1,j,p_ddmass_so4ai) = dvel(i,1,j,p_ddmass_so4ai) + ddmassn(p_so4ai)
803 dvel(i,1,j,p_ddmass_no3aj) = dvel(i,1,j,p_ddmass_no3aj) + ddmassn(p_no3aj)
804 dvel(i,1,j,p_ddmass_no3ai) = dvel(i,1,j,p_ddmass_no3ai) + ddmassn(p_no3ai)
805 dvel(i,1,j,p_ddmass_nh4aj) = dvel(i,1,j,p_ddmass_nh4aj) + ddmassn(p_nh4aj)
806 dvel(i,1,j,p_ddmass_nh4ai) = dvel(i,1,j,p_ddmass_nh4ai) + ddmassn(p_nh4ai)
809 if( config_flags%diagnostic_chem == DEPVEL1 .and. &
810 (config_flags%chem_opt == MOZCART_KPP .or. &
811 config_flags%chem_opt == T1_MOZCART_KPP .or. &
812 config_flags%chem_opt == MOZART_KPP .or. &
813 config_flags%chem_opt == MOZART_MOSAIC_4BIN_KPP .or. &
814 config_flags%chem_opt == MOZART_MOSAIC_4BIN_AQ_KPP) ) then
816 dvel(i,1,j,p_ddmass_o3) = dvel(i,1,j,p_ddmass_o3) + ddmassn(p_o3)
817 dvel(i,1,j,p_ddmass_no) = dvel(i,1,j,p_ddmass_no) + ddmassn(p_no)
818 dvel(i,1,j,p_ddmass_no2) = dvel(i,1,j,p_ddmass_no2) + ddmassn(p_no2)
819 dvel(i,1,j,p_ddmass_nh3) = dvel(i,1,j,p_ddmass_nh3) + ddmassn(p_nh3)
820 dvel(i,1,j,p_ddmass_hno3) = dvel(i,1,j,p_ddmass_hno3) + ddmassn(p_hno3)
821 dvel(i,1,j,p_ddmass_hno4) = dvel(i,1,j,p_ddmass_hno4) + ddmassn(p_hno4)
822 dvel(i,1,j,p_ddmass_h2o2) = dvel(i,1,j,p_ddmass_h2o2) + ddmassn(p_h2o2)
823 dvel(i,1,j,p_ddmass_co) = dvel(i,1,j,p_ddmass_co) + ddmassn(p_co)
824 dvel(i,1,j,p_ddmass_ch3ooh) = dvel(i,1,j,p_ddmass_ch3ooh) + ddmassn(p_ch3ooh)
825 dvel(i,1,j,p_ddmass_hcho) = dvel(i,1,j,p_ddmass_hcho) + ddmassn(p_hcho)
826 dvel(i,1,j,p_ddmass_ch3oh) = dvel(i,1,j,p_ddmass_ch3oh) + ddmassn(p_ch3oh)
827 dvel(i,1,j,p_ddmass_eo2) = dvel(i,1,j,p_ddmass_eo2) + ddmassn(p_eo2)
828 dvel(i,1,j,p_ddmass_ald) = dvel(i,1,j,p_ddmass_ald) + ddmassn(p_ald)
829 dvel(i,1,j,p_ddmass_ch3cooh) = dvel(i,1,j,p_ddmass_ch3cooh) + ddmassn(p_ch3cooh)
830 dvel(i,1,j,p_ddmass_acet) = dvel(i,1,j,p_ddmass_acet) + ddmassn(p_acet)
831 dvel(i,1,j,p_ddmass_mgly) = dvel(i,1,j,p_ddmass_mgly) + ddmassn(p_mgly)
832 dvel(i,1,j,p_ddmass_gly) = dvel(i,1,j,p_ddmass_gly) + ddmassn(p_gly)
833 dvel(i,1,j,p_ddmass_paa) = dvel(i,1,j,p_ddmass_paa) + ddmassn(p_paa)
834 dvel(i,1,j,p_ddmass_pooh) = dvel(i,1,j,p_ddmass_pooh) + ddmassn(p_c3h6ooh)
835 dvel(i,1,j,p_ddmass_mpan) = dvel(i,1,j,p_ddmass_mpan) + ddmassn(p_mpan)
836 dvel(i,1,j,p_ddmass_mco3) = dvel(i,1,j,p_ddmass_mco3) + ddmassn(p_mco3)
837 dvel(i,1,j,p_ddmass_mvkooh) = dvel(i,1,j,p_ddmass_mvkooh) + ddmassn(p_mvkooh)
838 dvel(i,1,j,p_ddmass_c2h5oh) = dvel(i,1,j,p_ddmass_c2h5oh) + ddmassn(p_c2h5oh)
839 dvel(i,1,j,p_ddmass_etooh) = dvel(i,1,j,p_ddmass_etooh) + ddmassn(p_etooh)
840 dvel(i,1,j,p_ddmass_prooh) = dvel(i,1,j,p_ddmass_prooh) + ddmassn(p_prooh)
841 dvel(i,1,j,p_ddmass_acetp) = dvel(i,1,j,p_ddmass_acetp) + ddmassn(p_acetp)
842 dvel(i,1,j,p_ddmass_onit) = dvel(i,1,j,p_ddmass_onit) + ddmassn(p_onit)
843 dvel(i,1,j,p_ddmass_onitr) = dvel(i,1,j,p_ddmass_onitr) + ddmassn(p_onitr)
844 dvel(i,1,j,p_ddmass_isooh) = dvel(i,1,j,p_ddmass_isooh) + ddmassn(p_isooh)
845 dvel(i,1,j,p_ddmass_acetol) = dvel(i,1,j,p_ddmass_acetol) + ddmassn(p_acetol)
846 dvel(i,1,j,p_ddmass_glyald) = dvel(i,1,j,p_ddmass_glyald) + ddmassn(p_glyald)
847 dvel(i,1,j,p_ddmass_hydrald) = dvel(i,1,j,p_ddmass_hydrald) + ddmassn(p_hydrald)
848 dvel(i,1,j,p_ddmass_alkooh) = dvel(i,1,j,p_ddmass_alkooh) + ddmassn(p_alkooh)
849 dvel(i,1,j,p_ddmass_mekooh) = dvel(i,1,j,p_ddmass_mekooh) + ddmassn(p_mekooh)
850 dvel(i,1,j,p_ddmass_tolooh) = dvel(i,1,j,p_ddmass_tolooh) + ddmassn(p_tolooh)
851 dvel(i,1,j,p_ddmass_xooh) = dvel(i,1,j,p_ddmass_xooh) + ddmassn(p_xooh)
852 dvel(i,1,j,p_ddmass_so2) = dvel(i,1,j,p_ddmass_so2) + ddmassn(p_so2)
853 dvel(i,1,j,p_ddmass_so4) = dvel(i,1,j,p_ddmass_so4) + ddmassn(p_sulf)
854 dvel(i,1,j,p_ddmass_pan) = dvel(i,1,j,p_ddmass_pan) + ddmassn(p_pan)
855 dvel(i,1,j,p_ddmass_terpooh) = dvel(i,1,j,p_ddmass_terpooh) + ddmassn(p_terpooh)
857 if (config_flags%chem_opt == MOZART_MOSAIC_4BIN_AQ_KPP) then
858 dvel(i,1,j,p_ddmass_cvasoaX) = dvel(i,1,j,p_ddmass_cvasoaX) + ddmassn(p_cvasoaX)
859 dvel(i,1,j,p_ddmass_cvasoa1) = dvel(i,1,j,p_ddmass_cvasoa1) + ddmassn(p_cvasoa1)
860 dvel(i,1,j,p_ddmass_cvasoa2) = dvel(i,1,j,p_ddmass_cvasoa2) + ddmassn(p_cvasoa2)
861 dvel(i,1,j,p_ddmass_cvasoa3) = dvel(i,1,j,p_ddmass_cvasoa3) + ddmassn(p_cvasoa3)
862 dvel(i,1,j,p_ddmass_cvasoa4) = dvel(i,1,j,p_ddmass_cvasoa4) + ddmassn(p_cvasoa4)
863 dvel(i,1,j,p_ddmass_cvbsoaX) = dvel(i,1,j,p_ddmass_cvbsoaX) + ddmassn(p_cvbsoaX)
864 dvel(i,1,j,p_ddmass_cvbsoa1) = dvel(i,1,j,p_ddmass_cvbsoa1) + ddmassn(p_cvbsoa1)
865 dvel(i,1,j,p_ddmass_cvbsoa2) = dvel(i,1,j,p_ddmass_cvbsoa2) + ddmassn(p_cvbsoa2)
866 dvel(i,1,j,p_ddmass_cvbsoa3) = dvel(i,1,j,p_ddmass_cvbsoa3) + ddmassn(p_cvbsoa3)
867 dvel(i,1,j,p_ddmass_cvbsoa4) = dvel(i,1,j,p_ddmass_cvbsoa4) + ddmassn(p_cvbsoa4)
870 if (config_flags%chem_opt == MOZART_MOSAIC_4BIN_KPP .or. &
871 config_flags%chem_opt == MOZART_MOSAIC_4BIN_AQ_KPP) then
873 dvel(i,1,j,p_ddmass_so4_a01) = dvel(i,1,j,p_ddmass_so4_a01) + ddmassn(p_so4_a01)
874 dvel(i,1,j,p_ddmass_no3_a01) = dvel(i,1,j,p_ddmass_no3_a01) + ddmassn(p_no3_a01)
875 dvel(i,1,j,p_ddmass_cl_a01) = dvel(i,1,j,p_ddmass_cl_a01) + ddmassn(p_cl_a01)
876 dvel(i,1,j,p_ddmass_nh4_a01) = dvel(i,1,j,p_ddmass_nh4_a01) + ddmassn(p_nh4_a01)
877 dvel(i,1,j,p_ddmass_na_a01) = dvel(i,1,j,p_ddmass_na_a01) + ddmassn(p_na_a01)
878 dvel(i,1,j,p_ddmass_oin_a01) = dvel(i,1,j,p_ddmass_oin_a01) + ddmassn(p_oin_a01)
879 dvel(i,1,j,p_ddmass_oc_a01) = dvel(i,1,j,p_ddmass_oc_a01) + ddmassn(p_oc_a01)
880 dvel(i,1,j,p_ddmass_bc_a01) = dvel(i,1,j,p_ddmass_bc_a01) + ddmassn(p_bc_a01)
881 dvel(i,1,j,p_ddmass_so4_a02) = dvel(i,1,j,p_ddmass_so4_a02) + ddmassn(p_so4_a02)
882 dvel(i,1,j,p_ddmass_no3_a02) = dvel(i,1,j,p_ddmass_no3_a02) + ddmassn(p_no3_a02)
883 dvel(i,1,j,p_ddmass_cl_a02) = dvel(i,1,j,p_ddmass_cl_a02) + ddmassn(p_cl_a02)
884 dvel(i,1,j,p_ddmass_nh4_a02) = dvel(i,1,j,p_ddmass_nh4_a02) + ddmassn(p_nh4_a02)
885 dvel(i,1,j,p_ddmass_na_a02) = dvel(i,1,j,p_ddmass_na_a02) + ddmassn(p_na_a02)
886 dvel(i,1,j,p_ddmass_oin_a02) = dvel(i,1,j,p_ddmass_oin_a02) + ddmassn(p_oin_a02)
887 dvel(i,1,j,p_ddmass_oc_a02) = dvel(i,1,j,p_ddmass_oc_a02) + ddmassn(p_oc_a02)
888 dvel(i,1,j,p_ddmass_bc_a02) = dvel(i,1,j,p_ddmass_bc_a02) + ddmassn(p_bc_a02)
889 dvel(i,1,j,p_ddmass_so4_a03) = dvel(i,1,j,p_ddmass_so4_a03) + ddmassn(p_so4_a03)
890 dvel(i,1,j,p_ddmass_no3_a03) = dvel(i,1,j,p_ddmass_no3_a03) + ddmassn(p_no3_a03)
891 dvel(i,1,j,p_ddmass_cl_a03) = dvel(i,1,j,p_ddmass_cl_a03) + ddmassn(p_cl_a03)
892 dvel(i,1,j,p_ddmass_nh4_a03) = dvel(i,1,j,p_ddmass_nh4_a03) + ddmassn(p_nh4_a03)
893 dvel(i,1,j,p_ddmass_na_a03) = dvel(i,1,j,p_ddmass_na_a03) + ddmassn(p_na_a03)
894 dvel(i,1,j,p_ddmass_oin_a03) = dvel(i,1,j,p_ddmass_oin_a03) + ddmassn(p_oin_a03)
895 dvel(i,1,j,p_ddmass_oc_a03) = dvel(i,1,j,p_ddmass_oc_a03) + ddmassn(p_oc_a03)
896 dvel(i,1,j,p_ddmass_bc_a03) = dvel(i,1,j,p_ddmass_bc_a03) + ddmassn(p_bc_a03)
897 dvel(i,1,j,p_ddmass_so4_a04) = dvel(i,1,j,p_ddmass_so4_a04) + ddmassn(p_so4_a04)
898 dvel(i,1,j,p_ddmass_no3_a04) = dvel(i,1,j,p_ddmass_no3_a04) + ddmassn(p_no3_a04)
899 dvel(i,1,j,p_ddmass_cl_a04) = dvel(i,1,j,p_ddmass_cl_a04) + ddmassn(p_cl_a04)
900 dvel(i,1,j,p_ddmass_nh4_a04) = dvel(i,1,j,p_ddmass_nh4_a04) + ddmassn(p_nh4_a04)
901 dvel(i,1,j,p_ddmass_na_a04) = dvel(i,1,j,p_ddmass_na_a04) + ddmassn(p_na_a04)
902 dvel(i,1,j,p_ddmass_oin_a04) = dvel(i,1,j,p_ddmass_oin_a04) + ddmassn(p_oin_a04)
903 dvel(i,1,j,p_ddmass_oc_a04) = dvel(i,1,j,p_ddmass_oc_a04) + ddmassn(p_oc_a04)
904 dvel(i,1,j,p_ddmass_bc_a04) = dvel(i,1,j,p_ddmass_bc_a04) + ddmassn(p_bc_a04)
906 dvel(i,1,j,p_ddmass_ca_a01) = dvel(i,1,j,p_ddmass_ca_a01) + ddmassn(p_ca_a01)
907 dvel(i,1,j,p_ddmass_ca_a02) = dvel(i,1,j,p_ddmass_ca_a02) + ddmassn(p_ca_a02)
908 dvel(i,1,j,p_ddmass_ca_a03) = dvel(i,1,j,p_ddmass_ca_a03) + ddmassn(p_ca_a03)
909 dvel(i,1,j,p_ddmass_ca_a04) = dvel(i,1,j,p_ddmass_ca_a04) + ddmassn(p_ca_a04)
911 dvel(i,1,j,p_ddmass_co3_a01) = dvel(i,1,j,p_ddmass_co3_a01) + ddmassn(p_co3_a01)
912 dvel(i,1,j,p_ddmass_co3_a02) = dvel(i,1,j,p_ddmass_co3_a02) + ddmassn(p_co3_a02)
913 dvel(i,1,j,p_ddmass_co3_a03) = dvel(i,1,j,p_ddmass_co3_a03) + ddmassn(p_co3_a03)
914 dvel(i,1,j,p_ddmass_co3_a04) = dvel(i,1,j,p_ddmass_co3_a04) + ddmassn(p_co3_a04)
916 if (config_flags%chem_opt == MOZART_MOSAIC_4BIN_KPP .OR. &
917 config_flags%chem_opt == MOZART_MOSAIC_4BIN_AQ_KPP) then
918 dvel(i,1,j,p_ddmass_glysoa_a01) = dvel(i,1,j,p_ddmass_glysoa_a01) + &
919 ddmassn(p_glysoa_r1_a01) + &
920 ddmassn(p_glysoa_r2_a01) + &
921 ddmassn(p_glysoa_oh_a01) + &
922 ddmassn(p_glysoa_sfc_a01) + &
923 ddmassn(p_glysoa_nh4_a01)
925 dvel(i,1,j,p_ddmass_glysoa_a02) = dvel(i,1,j,p_ddmass_glysoa_a02) + &
926 ddmassn(p_glysoa_r1_a02) + &
927 ddmassn(p_glysoa_r2_a02) + &
928 ddmassn(p_glysoa_oh_a02) + &
929 ddmassn(p_glysoa_sfc_a02) + &
930 ddmassn(p_glysoa_nh4_a02)
932 dvel(i,1,j,p_ddmass_glysoa_a03) = dvel(i,1,j,p_ddmass_glysoa_a03) + &
933 ddmassn(p_glysoa_r1_a03) + &
934 ddmassn(p_glysoa_r2_a03) + &
935 ddmassn(p_glysoa_oh_a03) + &
936 ddmassn(p_glysoa_sfc_a03) + &
937 ddmassn(p_glysoa_nh4_a03)
939 dvel(i,1,j,p_ddmass_glysoa_a04) = dvel(i,1,j,p_ddmass_glysoa_a04) + &
940 ddmassn(p_glysoa_r1_a04) + &
941 ddmassn(p_glysoa_r2_a04) + &
942 ddmassn(p_glysoa_oh_a04) + &
943 ddmassn(p_glysoa_sfc_a04) + &
944 ddmassn(p_glysoa_nh4_a04)
947 if (config_flags%chem_opt == MOZART_MOSAIC_4BIN_KPP) then
949 dvel(i,1,j,p_ddmass_smpa_a01) = dvel(i,1,j,p_ddmass_smpa_a01) + ddmassn(p_smpa_a01)
950 dvel(i,1,j,p_ddmass_smpbb_a01) = dvel(i,1,j,p_ddmass_smpbb_a01) + ddmassn(p_smpbb_a01)
951 dvel(i,1,j,p_ddmass_biog1_c_a01) = dvel(i,1,j,p_ddmass_biog1_c_a01) + ddmassn(p_biog1_c_a01)
952 dvel(i,1,j,p_ddmass_biog1_o_a01) = dvel(i,1,j,p_ddmass_biog1_o_a01) + ddmassn(p_biog1_o_a01)
954 dvel(i,1,j,p_ddmass_smpa_a02) = dvel(i,1,j,p_ddmass_smpa_a02) + ddmassn(p_smpa_a02)
955 dvel(i,1,j,p_ddmass_smpbb_a02) = dvel(i,1,j,p_ddmass_smpbb_a02) + ddmassn(p_smpbb_a02)
956 dvel(i,1,j,p_ddmass_biog1_c_a02) = dvel(i,1,j,p_ddmass_biog1_c_a02) + ddmassn(p_biog1_c_a02)
957 dvel(i,1,j,p_ddmass_biog1_o_a02) = dvel(i,1,j,p_ddmass_biog1_o_a02) + ddmassn(p_biog1_o_a02)
959 dvel(i,1,j,p_ddmass_smpa_a03) = dvel(i,1,j,p_ddmass_smpa_a03) + ddmassn(p_smpa_a03)
960 dvel(i,1,j,p_ddmass_smpbb_a03) = dvel(i,1,j,p_ddmass_smpbb_a03) + ddmassn(p_smpbb_a03)
961 dvel(i,1,j,p_ddmass_biog1_c_a03) = dvel(i,1,j,p_ddmass_biog1_c_a03) + ddmassn(p_biog1_c_a03)
962 dvel(i,1,j,p_ddmass_biog1_o_a03) = dvel(i,1,j,p_ddmass_biog1_o_a03) + ddmassn(p_biog1_o_a03)
964 dvel(i,1,j,p_ddmass_smpa_a04) = dvel(i,1,j,p_ddmass_smpa_a04) + ddmassn(p_smpa_a04)
965 dvel(i,1,j,p_ddmass_smpbb_a04) = dvel(i,1,j,p_ddmass_smpbb_a04) + ddmassn(p_smpbb_a04)
966 dvel(i,1,j,p_ddmass_biog1_c_a04) = dvel(i,1,j,p_ddmass_biog1_c_a04) + ddmassn(p_biog1_c_a04)
967 dvel(i,1,j,p_ddmass_biog1_o_a04) = dvel(i,1,j,p_ddmass_biog1_o_a04) + ddmassn(p_biog1_o_a04)
971 if (config_flags%chem_opt == MOZART_MOSAIC_4BIN_AQ_KPP) then
973 dvel(i,1,j,p_ddmass_asoaX_a01) = dvel(i,1,j,p_ddmass_asoaX_a01) + ddmassn(p_asoaX_a01)
974 dvel(i,1,j,p_ddmass_asoa1_a01) = dvel(i,1,j,p_ddmass_asoa1_a01) + ddmassn(p_asoa1_a01)
975 dvel(i,1,j,p_ddmass_asoa2_a01) = dvel(i,1,j,p_ddmass_asoa2_a01) + ddmassn(p_asoa2_a01)
976 dvel(i,1,j,p_ddmass_asoa3_a01) = dvel(i,1,j,p_ddmass_asoa3_a01) + ddmassn(p_asoa3_a01)
977 dvel(i,1,j,p_ddmass_asoa4_a01) = dvel(i,1,j,p_ddmass_asoa4_a01) + ddmassn(p_asoa4_a01)
978 dvel(i,1,j,p_ddmass_bsoaX_a01) = dvel(i,1,j,p_ddmass_bsoaX_a01) + ddmassn(p_bsoaX_a01)
979 dvel(i,1,j,p_ddmass_bsoa1_a01) = dvel(i,1,j,p_ddmass_bsoa1_a01) + ddmassn(p_bsoa1_a01)
980 dvel(i,1,j,p_ddmass_bsoa2_a01) = dvel(i,1,j,p_ddmass_bsoa2_a01) + ddmassn(p_bsoa2_a01)
981 dvel(i,1,j,p_ddmass_bsoa3_a01) = dvel(i,1,j,p_ddmass_bsoa3_a01) + ddmassn(p_bsoa3_a01)
982 dvel(i,1,j,p_ddmass_bsoa4_a01) = dvel(i,1,j,p_ddmass_bsoa4_a01) + ddmassn(p_bsoa4_a01)
984 dvel(i,1,j,p_ddmass_asoaX_a02) = dvel(i,1,j,p_ddmass_asoaX_a02) + ddmassn(p_asoaX_a02)
985 dvel(i,1,j,p_ddmass_asoa1_a02) = dvel(i,1,j,p_ddmass_asoa1_a02) + ddmassn(p_asoa1_a02)
986 dvel(i,1,j,p_ddmass_asoa2_a02) = dvel(i,1,j,p_ddmass_asoa2_a02) + ddmassn(p_asoa2_a02)
987 dvel(i,1,j,p_ddmass_asoa3_a02) = dvel(i,1,j,p_ddmass_asoa3_a02) + ddmassn(p_asoa3_a02)
988 dvel(i,1,j,p_ddmass_asoa4_a02) = dvel(i,1,j,p_ddmass_asoa4_a02) + ddmassn(p_asoa4_a02)
989 dvel(i,1,j,p_ddmass_bsoaX_a02) = dvel(i,1,j,p_ddmass_bsoaX_a02) + ddmassn(p_bsoaX_a02)
990 dvel(i,1,j,p_ddmass_bsoa1_a02) = dvel(i,1,j,p_ddmass_bsoa1_a02) + ddmassn(p_bsoa1_a02)
991 dvel(i,1,j,p_ddmass_bsoa2_a02) = dvel(i,1,j,p_ddmass_bsoa2_a02) + ddmassn(p_bsoa2_a02)
992 dvel(i,1,j,p_ddmass_bsoa3_a02) = dvel(i,1,j,p_ddmass_bsoa3_a02) + ddmassn(p_bsoa3_a02)
993 dvel(i,1,j,p_ddmass_bsoa4_a02) = dvel(i,1,j,p_ddmass_bsoa4_a02) + ddmassn(p_bsoa4_a02)
995 dvel(i,1,j,p_ddmass_asoaX_a03) = dvel(i,1,j,p_ddmass_asoaX_a03) + ddmassn(p_asoaX_a03)
996 dvel(i,1,j,p_ddmass_asoa1_a03) = dvel(i,1,j,p_ddmass_asoa1_a03) + ddmassn(p_asoa1_a03)
997 dvel(i,1,j,p_ddmass_asoa2_a03) = dvel(i,1,j,p_ddmass_asoa2_a03) + ddmassn(p_asoa2_a03)
998 dvel(i,1,j,p_ddmass_asoa3_a03) = dvel(i,1,j,p_ddmass_asoa3_a03) + ddmassn(p_asoa3_a03)
999 dvel(i,1,j,p_ddmass_asoa4_a03) = dvel(i,1,j,p_ddmass_asoa4_a03) + ddmassn(p_asoa4_a03)
1000 dvel(i,1,j,p_ddmass_bsoaX_a03) = dvel(i,1,j,p_ddmass_bsoaX_a03) + ddmassn(p_bsoaX_a03)
1001 dvel(i,1,j,p_ddmass_bsoa1_a03) = dvel(i,1,j,p_ddmass_bsoa1_a03) + ddmassn(p_bsoa1_a03)
1002 dvel(i,1,j,p_ddmass_bsoa2_a03) = dvel(i,1,j,p_ddmass_bsoa2_a03) + ddmassn(p_bsoa2_a03)
1003 dvel(i,1,j,p_ddmass_bsoa3_a03) = dvel(i,1,j,p_ddmass_bsoa3_a03) + ddmassn(p_bsoa3_a03)
1004 dvel(i,1,j,p_ddmass_bsoa4_a03) = dvel(i,1,j,p_ddmass_bsoa4_a03) + ddmassn(p_bsoa4_a03)
1006 dvel(i,1,j,p_ddmass_asoaX_a04) = dvel(i,1,j,p_ddmass_asoaX_a04) + ddmassn(p_asoaX_a04)
1007 dvel(i,1,j,p_ddmass_asoa1_a04) = dvel(i,1,j,p_ddmass_asoa1_a04) + ddmassn(p_asoa1_a04)
1008 dvel(i,1,j,p_ddmass_asoa2_a04) = dvel(i,1,j,p_ddmass_asoa2_a04) + ddmassn(p_asoa2_a04)
1009 dvel(i,1,j,p_ddmass_asoa3_a04) = dvel(i,1,j,p_ddmass_asoa3_a04) + ddmassn(p_asoa3_a04)
1010 dvel(i,1,j,p_ddmass_asoa4_a04) = dvel(i,1,j,p_ddmass_asoa4_a04) + ddmassn(p_asoa4_a04)
1011 dvel(i,1,j,p_ddmass_bsoaX_a04) = dvel(i,1,j,p_ddmass_bsoaX_a04) + ddmassn(p_bsoaX_a04)
1012 dvel(i,1,j,p_ddmass_bsoa1_a04) = dvel(i,1,j,p_ddmass_bsoa1_a04) + ddmassn(p_bsoa1_a04)
1013 dvel(i,1,j,p_ddmass_bsoa2_a04) = dvel(i,1,j,p_ddmass_bsoa2_a04) + ddmassn(p_bsoa2_a04)
1014 dvel(i,1,j,p_ddmass_bsoa3_a04) = dvel(i,1,j,p_ddmass_bsoa3_a04) + ddmassn(p_bsoa3_a04)
1015 dvel(i,1,j,p_ddmass_bsoa4_a04) = dvel(i,1,j,p_ddmass_bsoa4_a04) + ddmassn(p_bsoa4_a04)
1023 tracer_select: SELECT CASE(config_flags%tracer_opt)
1025 ! only mixing one fire(smoke) scalar array
1027 CASE (TRACER_SMOKE,TRACER_TEST1,TRACER_TEST2)
1028 CALL wrf_debug(15,'DOING TRACER MIXING, 1 SPECIE ONLY')
1031 pblst(k)=max(epsilc,tracer(i,k,j,nv))
1034 call vertmx(dtstep,pblst,ekmfull,dryrho_1d, &
1035 zzfull,zz,0.,kts,kte)
1037 tracer(i,k,j,nv)=max(epsilc,pblst(k))
1041 ! CALL wrf_debug(15,'NOT YET DEFINED')
1042 END SELECT tracer_select
1045 endif ! num_vert_mix = 0
1047 ! vertical mixing and activation of aerosol
1049 where( alt(its:ite,kts:kte,jts:jte) /= 0. ) !get dry density to conserve mass in mixactivate, wig, 24-apr-2006
1050 dryrho_phy(its:ite,kts:kte,jts:jte) = 1./alt(its:ite,kts:kte,jts:jte)
1052 dryrho_phy(its:ite,kts:kte,jts:jte) = 0.
1057 mixactivate_select: SELECT CASE(config_flags%chem_opt)
1059 CASE (RADM2SORG_AQ, RADM2SORG_AQCHEM, RACMSORG_AQ, RACMSORG_AQCHEM_KPP, RACM_ESRLSORG_AQCHEM_KPP, CBMZSORG_AQ, &
1061 CALL wrf_debug(15,'call mixactivate for sorgam aerosol')
1062 call sorgam_mixactivate ( &
1063 id, ktau, dtstep, config_flags, idrydep_onoff, &
1064 dryrho_phy, t_phy, w, cldfra, cldfra_old, &
1065 ddvel, z, dz8w, p8w, t8w, exch_h, &
1066 moist(ims,kms,jms,P_QV), moist(ims,kms,jms,P_QC), moist(ims,kms,jms,P_QI), &
1067 scalar(ims,kms,jms,P_QNDROP), f_qc, f_qi, chem, &
1068 ccn1, ccn2, ccn3, ccn4, ccn5, ccn6, nsource, &
1069 ids,ide, jds,jde, kds,kde, &
1070 ims,ime, jms,jme, kms,kme, &
1071 its,ite, jts,jte, kts,kte )
1072 CASE (RACM_SOA_VBS_AQCHEM_KPP)
1073 CALL wrf_debug(15,'call mixactivate for soa-vbs aerosol')
1074 call soa_vbs_mixactivate ( &
1075 id, ktau, dtstep, config_flags, idrydep_onoff, &
1076 dryrho_phy, t_phy, w, cldfra, cldfra_old, &
1077 ddvel, z, dz8w, p8w, t8w, exch_h, &
1078 moist(ims,kms,jms,P_QV), moist(ims,kms,jms,P_QC),moist(ims,kms,jms,P_QI), &
1079 scalar(ims,kms,jms,P_QNDROP), f_qc, f_qi, chem, &
1080 ccn1, ccn2, ccn3, ccn4, ccn5, ccn6, nsource, &
1081 ids,ide, jds,jde, kds,kde, &
1082 ims,ime, jms,jme, kms,kme, &
1083 its,ite, jts,jte, kts,kte )
1084 CASE (CB05_SORG_VBS_AQ_KPP)
1085 CALL wrf_debug(15,'call mixactivate for sorgam_vbs aerosol')
1086 call sorgam_vbs_mixactivate ( &
1087 id, ktau, dtstep, config_flags, idrydep_onoff, &
1088 dryrho_phy, t_phy, w, cldfra, cldfra_old, &
1089 ddvel, z, dz8w, p8w, t8w, exch_h, &
1090 moist(ims,kms,jms,P_QV), moist(ims,kms,jms,P_QC), moist(ims,kms,jms,P_QI), &
1091 scalar(ims,kms,jms,P_QNDROP), f_qc, f_qi, chem, &
1092 ccn1, ccn2, ccn3, ccn4, ccn5, ccn6, nsource, &
1093 ids,ide, jds,jde, kds,kde, &
1094 ims,ime, jms,jme, kms,kme, &
1095 its,ite, jts,jte, kts,kte )
1096 ! Mixactivate called only for _AQ packages below MS 12/28/2013
1097 CASE (CBMZ_MOSAIC_4BIN_AQ, CBMZ_MOSAIC_8BIN_AQ, CBMZ_MOSAIC_DMS_4BIN_AQ, CBMZ_MOSAIC_DMS_8BIN_AQ, &
1098 CRI_MOSAIC_8BIN_AQ_KPP, CRI_MOSAIC_4BIN_AQ_KPP, &
1099 MOZART_MOSAIC_4BIN_AQ_KPP,SAPRC99_MOSAIC_8BIN_VBS2_AQ_KPP)!BSINGH(12/03/2013): Added SAPRC 8 bin)
1100 CALL wrf_debug(15,'call mixactivate for mosaic aerosol')
1101 call mosaic_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, &
1109 ids,ide, jds,jde, kds,kde, &
1110 ims,ime, jms,jme, kms,kme, &
1111 its,ite, jts,jte, kts,kte )
1113 if( config_flags%diagnostic_chem == DEPVEL1 .and. &
1114 config_flags%chem_opt == CB05_SORG_VBS_AQ_KPP ) then
1116 ! qsrflx is in kg/m2/s, recalculate to match ug/m2 for aerosols
1117 qsrflx = qsrflx * 1.0e9 * dtstep
1119 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)
1120 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)
1121 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)
1122 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)
1123 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)
1124 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)
1128 if( config_flags%diagnostic_chem == DEPVEL1 .and. &
1129 config_flags%chem_opt == MOZART_MOSAIC_4BIN_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_so4_a01) = dvel(ims:ime,1,jms:jme,p_ddmass_so4_a01) + qsrflx(ims:ime,jms:jme,p_so4_a01)
1135 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)
1136 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)
1137 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)
1138 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)
1139 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)
1140 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)
1141 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)
1142 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)
1143 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)
1144 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)
1145 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)
1146 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)
1147 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)
1148 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)
1149 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)
1150 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)
1151 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)
1152 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)
1153 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)
1154 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)
1155 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)
1156 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)
1157 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)
1158 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)
1159 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)
1160 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)
1161 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)
1162 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)
1163 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)
1164 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)
1165 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)
1167 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)
1168 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)
1169 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)
1170 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)
1172 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)
1173 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)
1174 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)
1175 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)
1177 dvel(ims:ime,1,jms:jme,p_ddmass_glysoa_a01) = dvel(ims:ime,1,jms:jme,p_ddmass_glysoa_a01) + &
1178 qsrflx(ims:ime,jms:jme,p_glysoa_r1_a01) + &
1179 qsrflx(ims:ime,jms:jme,p_glysoa_r2_a01) + &
1180 qsrflx(ims:ime,jms:jme,p_glysoa_oh_a01) + &
1181 qsrflx(ims:ime,jms:jme,p_glysoa_sfc_a01) + &
1182 qsrflx(ims:ime,jms:jme,p_glysoa_nh4_a01)
1184 dvel(ims:ime,1,jms:jme,p_ddmass_glysoa_a02) = dvel(ims:ime,1,jms:jme,p_ddmass_glysoa_a02) + &
1185 qsrflx(ims:ime,jms:jme,p_glysoa_r1_a02) + &
1186 qsrflx(ims:ime,jms:jme,p_glysoa_r2_a02) + &
1187 qsrflx(ims:ime,jms:jme,p_glysoa_oh_a02) + &
1188 qsrflx(ims:ime,jms:jme,p_glysoa_sfc_a02) + &
1189 qsrflx(ims:ime,jms:jme,p_glysoa_nh4_a02)
1191 dvel(ims:ime,1,jms:jme,p_ddmass_glysoa_a03) = dvel(ims:ime,1,jms:jme,p_ddmass_glysoa_a03) + &
1192 qsrflx(ims:ime,jms:jme,p_glysoa_r1_a03) + &
1193 qsrflx(ims:ime,jms:jme,p_glysoa_r2_a03) + &
1194 qsrflx(ims:ime,jms:jme,p_glysoa_oh_a03) + &
1195 qsrflx(ims:ime,jms:jme,p_glysoa_sfc_a03) + &
1196 qsrflx(ims:ime,jms:jme,p_glysoa_nh4_a03)
1198 dvel(ims:ime,1,jms:jme,p_ddmass_glysoa_a04) = dvel(ims:ime,1,jms:jme,p_ddmass_glysoa_a04) + &
1199 qsrflx(ims:ime,jms:jme,p_glysoa_r1_a04) + &
1200 qsrflx(ims:ime,jms:jme,p_glysoa_r2_a04) + &
1201 qsrflx(ims:ime,jms:jme,p_glysoa_oh_a04) + &
1202 qsrflx(ims:ime,jms:jme,p_glysoa_sfc_a04) + &
1203 qsrflx(ims:ime,jms:jme,p_glysoa_nh4_a04)
1205 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)
1206 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)
1207 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)
1208 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)
1209 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)
1210 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)
1211 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)
1212 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)
1213 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)
1214 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)
1216 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)
1217 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)
1218 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)
1219 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)
1220 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)
1221 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)
1222 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)
1223 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)
1224 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)
1225 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)
1227 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)
1228 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)
1229 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)
1230 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)
1231 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)
1232 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)
1233 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)
1234 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)
1235 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)
1236 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)
1238 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)
1239 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)
1240 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)
1241 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)
1242 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)
1243 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)
1244 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)
1245 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)
1246 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)
1247 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)
1249 ! and the same for settling cloud droplets
1251 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)
1252 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)
1253 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)
1254 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)
1255 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)
1256 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)
1257 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)
1258 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)
1259 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)
1260 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)
1261 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)
1262 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)
1263 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)
1264 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)
1265 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)
1266 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)
1267 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)
1268 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)
1269 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)
1270 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)
1271 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)
1272 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)
1273 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)
1274 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)
1275 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)
1276 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)
1277 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)
1278 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)
1279 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)
1280 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)
1281 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)
1282 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)
1284 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)
1285 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)
1286 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)
1287 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)
1289 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)
1290 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)
1291 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)
1292 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)
1294 dvel(ims:ime,1,jms:jme,p_ddmass_glysoa_cw01) = dvel(ims:ime,1,jms:jme,p_ddmass_glysoa_cw01) + &
1295 qsrflx(ims:ime,jms:jme,p_glysoa_r1_cw01) + &
1296 qsrflx(ims:ime,jms:jme,p_glysoa_r2_cw01) + &
1297 qsrflx(ims:ime,jms:jme,p_glysoa_oh_cw01) + &
1298 qsrflx(ims:ime,jms:jme,p_glysoa_sfc_cw01) + &
1299 qsrflx(ims:ime,jms:jme,p_glysoa_nh4_cw01)
1301 dvel(ims:ime,1,jms:jme,p_ddmass_glysoa_cw02) = dvel(ims:ime,1,jms:jme,p_ddmass_glysoa_cw02) + &
1302 qsrflx(ims:ime,jms:jme,p_glysoa_r1_cw02) + &
1303 qsrflx(ims:ime,jms:jme,p_glysoa_r2_cw02) + &
1304 qsrflx(ims:ime,jms:jme,p_glysoa_oh_cw02) + &
1305 qsrflx(ims:ime,jms:jme,p_glysoa_sfc_cw02) + &
1306 qsrflx(ims:ime,jms:jme,p_glysoa_nh4_cw02)
1308 dvel(ims:ime,1,jms:jme,p_ddmass_glysoa_cw03) = dvel(ims:ime,1,jms:jme,p_ddmass_glysoa_cw03) + &
1309 qsrflx(ims:ime,jms:jme,p_glysoa_r1_cw03) + &
1310 qsrflx(ims:ime,jms:jme,p_glysoa_r2_cw03) + &
1311 qsrflx(ims:ime,jms:jme,p_glysoa_oh_cw03) + &
1312 qsrflx(ims:ime,jms:jme,p_glysoa_sfc_cw03) + &
1313 qsrflx(ims:ime,jms:jme,p_glysoa_nh4_cw03)
1315 dvel(ims:ime,1,jms:jme,p_ddmass_glysoa_cw04) = dvel(ims:ime,1,jms:jme,p_ddmass_glysoa_cw04) + &
1316 qsrflx(ims:ime,jms:jme,p_glysoa_r1_cw04) + &
1317 qsrflx(ims:ime,jms:jme,p_glysoa_r2_cw04) + &
1318 qsrflx(ims:ime,jms:jme,p_glysoa_oh_cw04) + &
1319 qsrflx(ims:ime,jms:jme,p_glysoa_sfc_cw04) + &
1320 qsrflx(ims:ime,jms:jme,p_glysoa_nh4_cw04)
1322 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)
1323 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)
1324 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)
1325 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)
1326 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)
1327 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)
1328 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)
1329 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)
1330 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)
1331 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)
1333 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)
1334 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)
1335 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)
1336 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)
1337 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)
1338 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)
1339 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)
1340 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)
1341 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)
1342 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)
1344 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)
1345 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)
1346 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)
1347 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)
1348 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)
1349 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)
1350 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)
1351 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)
1352 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)
1353 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)
1355 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)
1356 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)
1357 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)
1358 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)
1359 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)
1360 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)
1361 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)
1362 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)
1363 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)
1364 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)
1369 END SELECT mixactivate_select
1371 IF((config_flags%dust_opt .EQ. 1) .OR. (config_flags%dust_opt .GE. 3) .OR. &
1372 (config_flags%seas_opt .GE. 1) ) THEN
1373 settling_select: SELECT CASE(config_flags%chem_opt)
1375 CASE (DUST,GOCART_SIMPLE,GOCARTRACM_KPP,MOZCART_KPP,T1_MOZCART_KPP,RADM2SORG,RADM2SORG_AQ, &
1376 RADM2SORG_AQCHEM,RACMSORG_AQCHEM_KPP,RACM_ESRLSORG_AQCHEM_KPP,RACM_SOA_VBS_AQCHEM_KPP)
1377 CALL wrf_debug(15,'call gocart settling routine')
1378 call gocart_settling_driver(dtstep,config_flags,t_phy,moist, &
1379 chem,rho_phy,dz8w,p8w,p_phy, &
1380 dustin,seasin,dx,g, &
1381 dustgraset_1,dustgraset_2,dustgraset_3, &
1382 dustgraset_4,dustgraset_5, &
1383 setvel_1,setvel_2,setvel_3,setvel_4,setvel_5, imod, &
1384 ids,ide, jds,jde, kds,kde, &
1385 ims,ime, jms,jme, kms,kme, &
1386 its,ite, jts,jte, kts,kte )
1387 CASE (CHEM_VASH, CHEM_VOLC, CHEM_VOLC_4BIN)
1388 CALL wrf_debug(15,'call vash settling routine')
1389 call vash_settling_driver(dtstep,config_flags,t_phy,moist, &
1390 chem,rho_phy,dz8w,p8w,p_phy, &
1392 ids,ide, jds,jde, kds,kde, &
1393 ims,ime, jms,jme, kms,kme, &
1394 its,ite, jts,jte, kts,kte )
1396 CALL wrf_debug(15,'no settling routine')
1397 END SELECT settling_select
1400 CALL wrf_debug(15,'end of dry_dep_driver')
1402 END SUBROUTINE dry_dep_driver
1404 END MODULE module_dry_dep_driver