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