Update version info for release v4.6.1 (#2122)
[WRF.git] / chem / dry_dep_driver.F
blobb5c2f665010bb43b772e837cc7a93096bcb58c15
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
10   IMPLICIT NONE
12 CONTAINS
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,       &
21                anh3,cvaro1,cvaro2,                                        &
22                cvalk1,cvole1,cvapi1,cvapi2,cvlim1,cvlim2,dep_vel_o3,      &
23                ddlen,ddflx,                                               &
24                emis_ant,ebu_in,                                           &
25                sf_urban_physics,numgas,current_month,dvel,snowh,          & 
26                dustdrydep_1,dustdrydep_2,dustdrydep_3,                    &
27                dustdrydep_4,dustdrydep_5,                                 &
28                depvelocity,                                               &               
29                dustgraset_1,dustgraset_2,dustgraset_3,                    &
30                dustgraset_4,dustgraset_5,                                 &
31                setvel_1,setvel_2,setvel_3,setvel_4,setvel_5, imod,        &         
32                is_CAMMGMP_used,                                           &
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
39   USE module_configure
40   USE module_state_description
41   USE module_domain_type, only : domain
42   USE module_dep_simple
43   USE module_vertmx_wrf
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
52   USE module_aer_drydep
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
57   
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
64   
65   IMPLICIT NONE
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,                    &
70                                   sf_urban_physics,             &
71                                   numgas,                       &
72                                   current_month,                &
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
77    integer l
78    REAL(KIND=8), INTENT(IN   ) :: curr_secs
79    REAL, DIMENSION( ims:ime, kms:kme, jms:jme, num_moist ),        &
80          INTENT(IN ) ::                                   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 )         ,    &
102           INTENT(IN   ) ::                                      &
103                                                       t_phy,    &
104                                                         alt,    &
105                                                       p_phy,    &
106                                                       dz8w,     &
107                                                         rh,     &
108                                               t8w,p8w,z_at_w ,  &
109                                                             w,  &
110                                               exch_h,rho_phy,z
111    REAL,  DIMENSION( ims:ime , kms:kme , jms:jme )         ,    &
112           INTENT(INOUT) ::                                      &
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 )                  ,    &
116           INTENT(IN   ) ::                                      &
117                                                      ivgtyp
118    REAL,  DIMENSION( ims:ime , jms:jme )                   ,    &
119           INTENT(INOUT) ::                                      &
120                                                      tsk,       &
121                                                      gsw,       &
122                                                   vegfra,       &
123                                                      pbl,       &
124                                                      rmol,       &
125                                                      ust,       &
126                                                      hfx,       &
127                                                      xlat,      &
128                                                      xlong,     &
129                                                      snowh,     &
130                                           xland,znt,raincv,ash_fall
131    REAL,  DIMENSION( ims:ime , kms:kme , jms:jme )         ,        &
132           INTENT(INOUT ) ::                                     &
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 )                   ,    &
138           INTENT(OUT) ::                                      &
139                                                      dep_vel_o3
140    REAL,  DIMENSION( ims:ime , jms:jme , num_chem )                   ,    &
141           INTENT(INOUT) ::                                      &
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   ) ::                               &
149                              dtstep,gmt,dx
151       INTEGER,  INTENT(INOUT) :: num_vert_mix
152       
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
161    
162 !--- deposition and emissions stuff
163 ! .. Parameters ..
164 ! ..
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
176 ! ..
177 ! .. Local Arrays ..
178       REAL :: p(kts:kte)
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
190    integer :: ll   
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
208 ! ..
209 ! .. Intrinsic Functions ..
210       INTRINSIC max, min
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
218          
219          do nv = 2, num_chem
220             l2 = lptr_chem_to_q(nv)
221             if (l2 >= 0) then 
222                vertMixAero(nv) = .TRUE. !Set default true
223                lptr_q_to_chem(l2) = nv
224             end if
225          enddo
226          
227          !Set constitutents, which are mixed in CAMMGMP, False
228          do m = 1, ntot_amode
229             lnum = numptr_amode(m)
230             if( lnum > 0 ) then
231                vertMixAero(lptr_q_to_chem(lnum)) = .FALSE.
232             endif
233             do l = 1, nspec_amode(m)
234                lmass = lmassptr_amode(l,m)
235                vertMixAero(lptr_q_to_chem(lmass)) = .FALSE.
236             enddo
237          enddo
238       endif
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
249    ddvel(:,:,:) = 0.0
250    idrydep_onoff = 0
252    drydep_select: SELECT CASE(config_flags%gas_drydep_opt)
254      CASE ( WESELY )
256 ! gas_drydep_opt == WESELY means 
257 !     wesely for gases 
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,&
276                snowh,numgas,                                              &
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,                              &
292                   depvelocity,                                            &                       
293                   ids,ide, jds,jde, kds,kde,                              &
294                   ims,ime, jms,jme, kms,kme,                              &
295                   its,ite, jts,jte, kts,kte )
296           ENDIF
298          if( config_flags%diagnostic_chem == DEPVEL1 .and. &
299               config_flags%chem_opt == CB05_SORG_VBS_AQ_KPP ) then
300                do j = jts,jte
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)
308                 enddo
309           endif
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
317                do j = jts,jte
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)
358                enddo
359           endif
361           if ( config_flags%chem_opt == MOZART_MOSAIC_4BIN_AQ_KPP ) then
362                do j = jts,jte
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)
373                 enddo
374            endif
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,&
382                snowh, numgas,                                             &
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,                                 &
396                depvelocity,                                               &                    
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,                                 &
411                depvelocity,                                               &                    
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,&
426                snowh, numgas,                                             &
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,                                 &
437                depvelocity,                                               &                    
438                ids,ide, jds,jde, kds,kde,                                 &
439                ims,ime, jms,jme, kms,kme,                                 &
440                its,ite, jts,jte, kts,kte                                  )
442        ELSE
443           !Set dry deposition velocity to zero when using the
444           !chemistry tracer mode.
445           ddvel(:,:,:) = 0.
446        END IF
448 ! diagnose output dry deposition flux
449        if( config_flags%diagnostic_dep == 1) then
450        do i = its, ite
451        do j = jts, jte
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
453        enddo
454        enddo
455        end if
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(:,:)
460        else
461           ! this is the default -- use aerodynamic resistance from 
462           ! "default reference height" (currently 2 m) to surface
463           aer_res(:,:) = aer_res_def(:,:)
464        end if
466        idrydep_onoff = 1
467        aer_mech_id_select: SELECT CASE(config_flags%chem_opt)
469 !!! TUCCELLA
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)
475              aer_mech_id = 1
476           CASE (RACMSORG_AQ,RACMSORG_AQCHEM_KPP,RACM_ESRLSORG_AQCHEM_KPP,RACMSORG_KPP)
477              aer_mech_id = 2
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
484              aer_mech_id = 3
485           CASE ( CBMZ_CAM_MAM3_NOAQ, CBMZ_CAM_MAM3_AQ, CBMZ_CAM_MAM7_NOAQ, CBMZ_CAM_MAM7_AQ )
486              aer_mech_id = 4
487           CASE DEFAULT
488              aer_mech_id = 0
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), &
513                num_chem-numgas,                                         &
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), &
526                num_chem-numgas,                                         &
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), &
539                num_chem-numgas,                                         &
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), &
551                num_chem-numgas,                                         &
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,               &
565                gmt, julday,                                             &
566                t_phy, rho_phy, p_phy,                                   &
567                ust, aer_res,                                            &
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                                )
572 !!! TUCCELLA
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),                    &
580                num_chem-numgas,                                         &
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),                    &
591                num_chem-numgas,                                         &
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,               &
599                gmt, julday,                                             &
600                t_phy, rho_phy, p_phy,                                   &
601                ust, aer_res,                                            &
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                                )
607      CASE DEFAULT
608                                                      
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,           &
614                       gmt, julday,                                             &
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                                )
623    end if
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) )
630           end if
631        end if
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
639              kmax = max(k_a, k_c)
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
643              endif
644           enddo
645        endif
646        
647     CASE DEFAULT 
648                                                      
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.
654       do l=1,ll
655       do j=jts,jte
656       do k=1,config_flags%kdepvel
657       do i=its,ite
658         dep_vel(i,k,j,l) = ddvel(i,j,l)
659       enddo
660       enddo
661       enddo
662       enddo
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
669       end if
671       dep_vel_o3=0.
672       if (num_vert_mix == 0) then
673       do 100 j=jts,jte
674       do 100 i=its,ite
675       pblst=0.
676       ddmassn(:) = 0.0
679 !-- start with vertical mixing
681       do k=kts,kte+1
682          zzfull(k)=z_at_w(i,k,j)-z_at_w(i,kts,j)
683       enddo
684       do k=kts,kte
685          ekmfull(k)=max(1.e-6,exch_h(i,k,j))
686       enddo
687       ekmfull(kts)=0.
688       ekmfull(kte+1)=0.
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:
692 !!$!
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
696 !!$!
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.)
705          endif
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.)
708          endif
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.)
712           endif
713          endif
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.)
717           endif
718          endif
719        endif
720      endif
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.)
727          endif
728      endif
730      do k=kts,kte
731         zz(k)=z(i,k,j)-z_at_w(i,kts,j)
732      enddo
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)
740       do nv=2,num_chem-0
741          if(is_CAMMGMP_used .and. .not.vertMixAero(nv))cycle !Balwinder.Singh@pnnl.gov: Do mix constituents which are already mixed by CAMMGMP microphysics
742          do k=kts,kte
743             pblst(k)=max(epsilc,chem(i,k,j,nv))
744             dryrho_1d(k) = 1./alt(i,k,j)
745          enddo
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)
758                endif
759             endif
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
764          CASE DEFAULT
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)
768             endif
769          END SELECT mix_select
771          ! chem is in ppmv
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)
776          old = 0.0
777          new = 0.0
779          do k=kts,kte-1
780            fac = 1.0
781            if (nv <= numgas) then
782              ! from ppmv to mol/m2
783              ! fac     = 1e-6 * rho * 1/mw_air * dz
784              !                 kg/m3   mol/kg    m
785              fac = 1e-6 * dryrho_1d(k) * 1./(mwdry*1.e-3) * dz8w(i,k,j)
786            else
787              ! from ug/kg to ug/m2
788              ! fac     = rho * dz
789              !          kg/m3  m
790              fac = dryrho_1d(k) * dz8w(i,k,j)
791            endif
793            old = old + max(epsilc,chem(i,k,j,nv)) * fac
794            new = new + max(epsilc,pblst(k)) * fac
795          enddo
797          ! we ignore (spurious) and add new dry deposition to
798          ! existing field (accumulated deposition!)
799          ddmassn(nv) =  max( 0.0, (old - new) )
801          do k=kts,kte-1
802             chem(i,k,j,nv)=max(epsilc,pblst(k))
803          enddo
804       enddo
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)
821       endif
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)
882         endif
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)
945                                               
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)
952                                               
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)
959           endif
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)
983           endif
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)
1031           endif
1033         endif
1035       endif
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')
1043          do nv=2,num_tracer
1044             do k=kts,kte
1045                pblst(k)=max(epsilc,tracer(i,k,j,nv))
1046             enddo
1047             if (.not.config_flags%mynn_chem_vertmx) then
1048                call vertmx(dtstep,pblst,ekmfull,dryrho_1d, &
1049                            zzfull,zz,0.,kts,kte)
1050             endif
1051             do k=kts,kte-1
1052                tracer(i,k,j,nv)=max(epsilc,pblst(k))
1053             enddo
1054          enddo
1055        CASE DEFAULT
1056 !        CALL wrf_debug(15,'NOT YET DEFINED')
1057        END SELECT tracer_select
1059 100   continue
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)
1066    elsewhere
1067       dryrho_phy(its:ite,kts:kte,jts:jte) = 0.
1068    end where
1070   qsrflx(:,:,:) = 0.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, &
1075          CB05_SORG_AQ_KPP)
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,      &
1123         qsrflx,                                           &
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)
1141        endif
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)
1381       endif
1383    CASE DEFAULT
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)
1389 !!! TUCCELLA
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,                                      &
1406          ash_fall,dx,g,                                                    &
1407          ids,ide, jds,jde, kds,kde,                                        &
1408          ims,ime, jms,jme, kms,kme,                                        &
1409          its,ite, jts,jte, kts,kte                                         )
1410    CASE DEFAULT
1411        CALL wrf_debug(15,'no settling routine')
1412    END SELECT settling_select
1413    ENDIF
1415        CALL wrf_debug(15,'end of dry_dep_driver')
1417 END SUBROUTINE dry_dep_driver
1419 END MODULE module_dry_dep_driver