updated top-level README and version_decl for V4.5 (#1847)
[WRF.git] / chem / module_prep_wetscav_sorgam.F
blobea070396824b05a956371c790306687826bb656c
1 MODULE module_prep_wetscav_sorgam 
3 USE module_state_description
4 USE module_configure
5 USE module_mosaic_wetscav,only:  initwet,wetscav
7 IMPLICIT NONE
9 #define cw_species_are_in_registry
11 CONTAINS
13 SUBROUTINE aerosols_sorgam_init_aercld_ptrs(   &
14          num_chem, is_aerosol, config_flags )
16 ! initialize pointers used by aerosol-cloud-interaction routines
18      USE module_data_sorgam
19 !    USE module_configure,only:  grid_config_rec_type
20 !    USE module_mosaic_wetscav,only:  initwet
22     implicit none
23     INTEGER, INTENT(IN) :: num_chem
24     LOGICAL, INTENT(OUT) :: is_aerosol(num_chem)
25     TYPE (grid_config_rec_type) , INTENT (in) :: config_flags
28     integer iphase, isize, itype, l, ll, n, p1st
29     REAL dp_meanvol_tmp
32         nphase_aer = 1
33         if(p_so4cwj.ge. param_first_scalar) then
34            nphase_aer = 2
35         endif
36         ai_phase=-999888777
37         cw_phase=-999888777
38         ci_phase=-999888777
39         cr_phase=-999888777
40         cs_phase=-999888777
41         cg_phase=-999888777
42         if(nphase_aer>=1)ai_phase=1
43         if(nphase_aer>=2)cw_phase=2
44         if(nphase_aer>=3)cr_phase=3
45         if(nphase_aer>=4)ci_phase=4
46         if(nphase_aer>=5)cw_phase=5
47         if(nphase_aer>=6)cg_phase=6
49 ! aitken and accum mode have same set of species 
50 !    so are treated as isize=1,2 of itype=1
51 ! coarse mode has different set of species
52 !    so is  treated as isize=1 of itype=2
53         ntype_aer = 2
54         nsize_aer(1)=2
55         nsize_aer(2)=1
57         msectional = 0
58         maerosolincw = 0
59 #if defined ( cw_species_are_in_registry )
60         maerosolincw = 1
61 #endif
62         name_mastercomp_aer( 1) = 'sulfate'
63         dens_mastercomp_aer( 1) = dens_so4_aer
64         mw_mastercomp_aer(   1) =   mw_so4_aer
65         hygro_mastercomp_aer(1) = hygro_so4_aer
67         name_mastercomp_aer( 2) = 'nitrate'
68         dens_mastercomp_aer( 2) = dens_no3_aer
69         mw_mastercomp_aer(   2) =   mw_no3_aer
70         hygro_mastercomp_aer(2) = hygro_no3_aer
72         name_mastercomp_aer( 3) = 'ammonium'
73         dens_mastercomp_aer( 3) = dens_nh4_aer
74         mw_mastercomp_aer(   3) =   mw_nh4_aer
75         hygro_mastercomp_aer(3) = hygro_nh4_aer
77         name_mastercomp_aer( 4) = 'orgaro1'
78         dens_mastercomp_aer( 4) = dens_oc_aer
79         mw_mastercomp_aer(   4) =   mw_oc_aer
80         hygro_mastercomp_aer(4) = hygro_oc_aer
82         name_mastercomp_aer( 5) = 'orgaro2'
83         dens_mastercomp_aer( 5) = dens_oc_aer
84         mw_mastercomp_aer(   5) =   mw_oc_aer
85         hygro_mastercomp_aer(5) = hygro_oc_aer
87         name_mastercomp_aer( 6) = 'orgalk'
88         dens_mastercomp_aer( 6) = dens_oc_aer
89         mw_mastercomp_aer(   6) =   mw_oc_aer
90         hygro_mastercomp_aer(6) = hygro_oc_aer
92         name_mastercomp_aer( 7) = 'orgole'
93         dens_mastercomp_aer( 7) = dens_oc_aer
94         mw_mastercomp_aer(   7) =   mw_oc_aer
95         hygro_mastercomp_aer(7) = hygro_oc_aer
97         name_mastercomp_aer( 8) = 'orgba1'
98         dens_mastercomp_aer( 8) = dens_oc_aer
99         mw_mastercomp_aer(   8) =   mw_oc_aer
100         hygro_mastercomp_aer(8) = hygro_oc_aer
102         name_mastercomp_aer( 9) = 'orgba2'
103         dens_mastercomp_aer( 9) = dens_oc_aer
104         mw_mastercomp_aer(   9) =   mw_oc_aer
105         hygro_mastercomp_aer(9) = hygro_oc_aer
107         name_mastercomp_aer( 10) = 'orgba3'
108         dens_mastercomp_aer( 10) = dens_oc_aer
109         mw_mastercomp_aer(   10) =   mw_oc_aer
110         hygro_mastercomp_aer(10) = hygro_oc_aer
112         name_mastercomp_aer( 11) = 'orgba4'
113         dens_mastercomp_aer( 11) = dens_oc_aer
114         mw_mastercomp_aer(   11) =   mw_oc_aer
115         hygro_mastercomp_aer(11) = hygro_oc_aer
117         name_mastercomp_aer( 12) = 'orgpa'
118         dens_mastercomp_aer( 12) = dens_oc_aer
119         mw_mastercomp_aer(   12) =   mw_oc_aer
120         hygro_mastercomp_aer(12) = hygro_oc_aer
122         name_mastercomp_aer( 13) = 'ec'
123         dens_mastercomp_aer( 13) = dens_ec_aer
124         mw_mastercomp_aer(   13) =   mw_ec_aer
125         hygro_mastercomp_aer(13) = hygro_ec_aer
126         name_mastercomp_aer( 14) = 'p25'
127         dens_mastercomp_aer( 14) = dens_oin_aer
128         mw_mastercomp_aer(   14) =   mw_oin_aer
129         hygro_mastercomp_aer(14) = hygro_oin_aer
131         name_mastercomp_aer( 15) = 'anth'
132         dens_mastercomp_aer( 15) = dens_oin_aer
133         mw_mastercomp_aer(   15) =   mw_oin_aer
134         hygro_mastercomp_aer(15) = hygro_oin_aer
136         name_mastercomp_aer( 16) = 'seas'
137         dens_mastercomp_aer( 16) = dens_seas_aer
138         mw_mastercomp_aer(   16) =   mw_seas_aer
139         hygro_mastercomp_aer(16) = hygro_seas_aer
141         name_mastercomp_aer( 17) = 'soil'
142         dens_mastercomp_aer( 17) = dens_dust_aer
143         mw_mastercomp_aer(   17) =  mw_dust_aer
144         hygro_mastercomp_aer(17) = hygro_dust_aer
146         name_mastercomp_aer(18)  = 'sodium'
147         dens_mastercomp_aer(18)  = dens_na_aer
148         mw_mastercomp_aer(  18)  =   mw_na_aer
149         hygro_mastercomp_aer(18) = hygro_na_aer
150   
151         name_mastercomp_aer(19)  = 'chloride'
152         dens_mastercomp_aer(19)  = dens_cl_aer
153         mw_mastercomp_aer(  19)  =   mw_cl_aer
154         hygro_mastercomp_aer(19) = hygro_cl_aer
156         lptr_so4_aer(    :,:,:) = 1
157         lptr_nh4_aer(    :,:,:) = 1
158         lptr_no3_aer(    :,:,:) = 1
159         lptr_na_aer(     :,:,:) = 1
160         lptr_cl_aer(     :,:,:) = 1
161         lptr_orgaro1_aer(:,:,:) = 1
162         lptr_orgaro2_aer(:,:,:) = 1
163         lptr_orgalk_aer( :,:,:) = 1
164         lptr_orgole_aer( :,:,:) = 1
165         lptr_orgba1_aer( :,:,:) = 1
166         lptr_orgba2_aer( :,:,:) = 1
167         lptr_orgba3_aer( :,:,:) = 1
168         lptr_orgba4_aer( :,:,:) = 1
169         lptr_orgpa_aer(  :,:,:) = 1
170         lptr_ec_aer(     :,:,:) = 1
171         lptr_p25_aer(    :,:,:) = 1
172         lptr_anth_aer(   :,:,:) = 1
173         lptr_seas_aer(   :,:,:) = 1
174         lptr_soil_aer(   :,:,:) = 1
175         numptr_aer(      :,:,:) = 1
177         do_cloudchem_aer(:,:) = .false.
179 ! Aitken mode
180         itype = 1
181         isize = 1
182         ncomp_aer(itype) = 16
183         numptr_aer(      isize,itype,ai_phase) = p_nu0
184         lptr_so4_aer(    isize,itype,ai_phase) = p_so4ai
185         lptr_nh4_aer(    isize,itype,ai_phase) = p_nh4ai
186         lptr_no3_aer(    isize,itype,ai_phase) = p_no3ai
187         lptr_na_aer(     isize,itype,ai_phase) = p_naai
188         lptr_cl_aer(     isize,itype,ai_phase) = p_clai
189         lptr_orgaro1_aer(isize,itype,ai_phase) = p_orgaro1i
190         lptr_orgaro2_aer(isize,itype,ai_phase) = p_orgaro2i
191         lptr_orgalk_aer( isize,itype,ai_phase) = p_orgalk1i
192         lptr_orgole_aer( isize,itype,ai_phase) = p_orgole1i
193         lptr_orgba1_aer( isize,itype,ai_phase) = p_orgba1i
194         lptr_orgba2_aer( isize,itype,ai_phase) = p_orgba2i
195         lptr_orgba3_aer( isize,itype,ai_phase) = p_orgba3i
196         lptr_orgba4_aer( isize,itype,ai_phase) = p_orgba4i
197         lptr_orgpa_aer(  isize,itype,ai_phase) = p_orgpai
198         lptr_ec_aer(     isize,itype,ai_phase) = p_eci
199         lptr_p25_aer(    isize,itype,ai_phase) = p_p25i
200 ! aerosol in cloud water
201         if(cw_phase.gt.0)then
202           numptr_aer(      isize,itype,cw_phase) = p_nu0cw
203           lptr_so4_aer(    isize,itype,cw_phase) = p_so4cwi
204           lptr_nh4_aer(    isize,itype,cw_phase) = p_nh4cwi
205           lptr_no3_aer(    isize,itype,cw_phase) = p_no3cwi
206           lptr_na_aer(     isize,itype,ai_phase) = p_nacwi
207           lptr_cl_aer(     isize,itype,ai_phase) = p_clcwi
208           lptr_orgaro1_aer(isize,itype,cw_phase) = p_orgaro1cwi
209           lptr_orgaro2_aer(isize,itype,cw_phase) = p_orgaro2cwi
210           lptr_orgalk_aer( isize,itype,cw_phase) = p_orgalk1cwi
211           lptr_orgole_aer( isize,itype,cw_phase) = p_orgole1cwi
212           lptr_orgba1_aer( isize,itype,cw_phase) = p_orgba1cwi
213           lptr_orgba2_aer( isize,itype,cw_phase) = p_orgba2cwi
214           lptr_orgba3_aer( isize,itype,cw_phase) = p_orgba3cwi
215           lptr_orgba4_aer( isize,itype,cw_phase) = p_orgba4cwi
216           lptr_orgpa_aer(  isize,itype,cw_phase) = p_orgpacwi
217           lptr_ec_aer(     isize,itype,cw_phase) = p_eccwi
218           lptr_p25_aer(    isize,itype,cw_phase) = p_p25cwi
219           do_cloudchem_aer(isize,itype) = .true.
220         endif
222 ! Accumulation mode
223         itype = 1
224         isize = 2
225         ncomp_aer(itype) = 16
226         numptr_aer(      isize,itype,ai_phase) = p_ac0
227         lptr_so4_aer(    isize,itype,ai_phase) = p_so4aj
228         lptr_nh4_aer(    isize,itype,ai_phase) = p_nh4aj
229         lptr_no3_aer(    isize,itype,ai_phase) = p_no3aj
230         lptr_na_aer(     isize,itype,ai_phase) = p_naaj
231         lptr_cl_aer(     isize,itype,ai_phase) = p_claj
232         lptr_orgaro1_aer(isize,itype,ai_phase) = p_orgaro1j
233         lptr_orgaro2_aer(isize,itype,ai_phase) = p_orgaro2j
234         lptr_orgalk_aer( isize,itype,ai_phase) = p_orgalk1j
235         lptr_orgole_aer( isize,itype,ai_phase) = p_orgole1j
236         lptr_orgba1_aer( isize,itype,ai_phase) = p_orgba1j
237         lptr_orgba2_aer( isize,itype,ai_phase) = p_orgba2j
238         lptr_orgba3_aer( isize,itype,ai_phase) = p_orgba3j
239         lptr_orgba4_aer( isize,itype,ai_phase) = p_orgba4j
240         lptr_orgpa_aer(  isize,itype,ai_phase) = p_orgpaj
241         lptr_ec_aer(     isize,itype,ai_phase) = p_ecj
242         lptr_p25_aer(    isize,itype,ai_phase) = p_p25j
243 ! aerosol in cloud water
244         if(cw_phase.gt.0)then
245           numptr_aer(      isize,itype,cw_phase) = p_ac0cw
246           lptr_so4_aer(    isize,itype,cw_phase) = p_so4cwj
247           lptr_nh4_aer(    isize,itype,cw_phase) = p_nh4cwj
248           lptr_no3_aer(    isize,itype,cw_phase) = p_no3cwj
249           lptr_na_aer(     isize,itype,ai_phase) = p_nacwj
250           lptr_cl_aer(     isize,itype,ai_phase) = p_clcwj
251           lptr_orgaro1_aer(isize,itype,cw_phase) = p_orgaro1cwj
252           lptr_orgaro2_aer(isize,itype,cw_phase) = p_orgaro2cwj
253           lptr_orgalk_aer( isize,itype,cw_phase) = p_orgalk1cwj
254           lptr_orgole_aer( isize,itype,cw_phase) = p_orgole1cwj
255           lptr_orgba1_aer( isize,itype,cw_phase) = p_orgba1cwj
256           lptr_orgba2_aer( isize,itype,cw_phase) = p_orgba2cwj
257           lptr_orgba3_aer( isize,itype,cw_phase) = p_orgba3cwj
258           lptr_orgba4_aer( isize,itype,cw_phase) = p_orgba4cwj
259           lptr_orgpa_aer(  isize,itype,cw_phase) = p_orgpacwj
260           lptr_ec_aer(     isize,itype,cw_phase) = p_eccwj
261           lptr_p25_aer(    isize,itype,cw_phase) = p_p25cwj
262           do_cloudchem_aer(isize,itype) = .true.
263         endif
265 ! coarse mode
266         itype = 2
267         isize = 1
268         ncomp_aer(itype) = 3
269         numptr_aer(      isize,itype,ai_phase) = p_corn
270         lptr_anth_aer(   isize,itype,ai_phase) = p_antha
271         lptr_seas_aer(   isize,itype,ai_phase) = p_seas
272         lptr_soil_aer(   isize,itype,ai_phase) = p_soila
273 ! aerosol in cloud water
274         if(cw_phase.gt.0)then
275           numptr_aer(      isize,itype,cw_phase) = p_corncw
276           lptr_anth_aer(   isize,itype,cw_phase) = p_anthcw
277           lptr_seas_aer(   isize,itype,cw_phase) = p_seascw
278           lptr_soil_aer(   isize,itype,cw_phase) = p_soilcw
280 ! no cloudchem for coarse mode because it has no so4/nh4/no3 species
281           do_cloudchem_aer(isize,itype) = .false.
282         endif
284         massptr_aer(:,:,:,:) = -999888777
285         mastercompptr_aer(:,:) = -999888777
287         p1st = param_first_scalar
289         do iphase=1,nphase_aer
290         do itype=1,ntype_aer
291         do n = 1, nsize_aer(itype)
292             ll = 0
293             if (lptr_so4_aer(n,itype,iphase) .ge. p1st) then
294                 ll = ll + 1
295                 massptr_aer(ll,n,itype,iphase) = lptr_so4_aer(n,itype,iphase)
296                 mastercompptr_aer(ll,itype) = 1
297             end if
298             if (lptr_no3_aer(n,itype,iphase) .ge. p1st) then
299                 ll = ll + 1
300                 massptr_aer(ll,n,itype,iphase) = lptr_no3_aer(n,itype,iphase)
301                 mastercompptr_aer(ll,itype) = 2
302             end if
303             if (lptr_nh4_aer(n,itype,iphase) .ge. p1st) then
304                 ll = ll + 1
305                 massptr_aer(ll,n,itype,iphase) = lptr_nh4_aer(n,itype,iphase)
306                 mastercompptr_aer(ll,itype) = 3
307             end if
308             if (lptr_orgaro1_aer(n,itype,iphase) .ge. p1st) then
309                 ll = ll + 1
310                 massptr_aer(ll,n,itype,iphase) = lptr_orgaro1_aer(n,itype,iphase)
311                 mastercompptr_aer(ll,itype) = 4
312             end if
313             if (lptr_orgaro2_aer(n,itype,iphase) .ge. p1st) then
314                 ll = ll + 1
315                 massptr_aer(ll,n,itype,iphase) = lptr_orgaro2_aer(n,itype,iphase)
316                 mastercompptr_aer(ll,itype) = 5
317             end if
318             if (lptr_orgalk_aer(n,itype,iphase) .ge. p1st) then
319                 ll = ll + 1
320                 massptr_aer(ll,n,itype,iphase) = lptr_orgalk_aer(n,itype,iphase)
321                 mastercompptr_aer(ll,itype) = 6
322             end if
323             if (lptr_orgole_aer(n,itype,iphase) .ge. p1st) then
324                 ll = ll + 1
325                 massptr_aer(ll,n,itype,iphase) = lptr_orgole_aer(n,itype,iphase)
326                 mastercompptr_aer(ll,itype) = 7
327             end if
328             if (lptr_orgba1_aer(n,itype,iphase) .ge. p1st) then
329                 ll = ll + 1
330                 massptr_aer(ll,n,itype,iphase) = lptr_orgba1_aer(n,itype,iphase)
331                 mastercompptr_aer(ll,itype) = 8
332             end if
333             if (lptr_orgba2_aer(n,itype,iphase) .ge. p1st) then
334                 ll = ll + 1
335                 massptr_aer(ll,n,itype,iphase) = lptr_orgba2_aer(n,itype,iphase)
336                 mastercompptr_aer(ll,itype) = 9
337             end if
338             if (lptr_orgba3_aer(n,itype,iphase) .ge. p1st) then
339                 ll = ll + 1
340                 massptr_aer(ll,n,itype,iphase) = lptr_orgba3_aer(n,itype,iphase)
341                 mastercompptr_aer(ll,itype) = 10
342             end if
343             if (lptr_orgba4_aer(n,itype,iphase) .ge. p1st) then
344                 ll = ll + 1
345                 massptr_aer(ll,n,itype,iphase) = lptr_orgba4_aer(n,itype,iphase)
346                 mastercompptr_aer(ll,itype) = 11
347             end if
348             if (lptr_orgpa_aer(n,itype,iphase) .ge. p1st) then
349                 ll = ll + 1
350                 massptr_aer(ll,n,itype,iphase) = lptr_orgpa_aer(n,itype,iphase)
351                 mastercompptr_aer(ll,itype) = 12
352             end if
353             if (lptr_ec_aer(n,itype,iphase) .ge. p1st) then
354                 ll = ll + 1
355                 massptr_aer(ll,n,itype,iphase) = lptr_ec_aer(n,itype,iphase)
356                 mastercompptr_aer(ll,itype) = 13
357             end if
358             if (lptr_p25_aer(n,itype,iphase) .ge. p1st) then
359                 ll = ll + 1
360                 massptr_aer(ll,n,itype,iphase) = lptr_p25_aer(n,itype,iphase)
361                 mastercompptr_aer(ll,itype) = 14
362             end if
363             if (lptr_anth_aer(n,itype,iphase) .ge. p1st) then
364                 ll = ll + 1
365                 massptr_aer(ll,n,itype,iphase) = lptr_anth_aer(n,itype,iphase)
366                 mastercompptr_aer(ll,itype) = 15
367             end if
368             if (lptr_seas_aer(n,itype,iphase) .ge. p1st) then
369                 ll = ll + 1
370                 massptr_aer(ll,n,itype,iphase) = lptr_seas_aer(n,itype,iphase)
371                 mastercompptr_aer(ll,itype) = 16
372             end if
373             if (lptr_soil_aer(n,itype,iphase) .ge. p1st) then
374                 ll = ll + 1
375                 massptr_aer(ll,n,itype,iphase) = lptr_soil_aer(n,itype,iphase)
376                 mastercompptr_aer(ll,itype) = 17
377             end if
378             if (lptr_na_aer(n,itype,iphase) .ge. p1st) then
379                 ll = ll + 1
380                 massptr_aer(ll,n,itype,iphase) = lptr_na_aer(n,itype,iphase)
381                 mastercompptr_aer(ll,itype) = 18
382             end if
383             if (lptr_cl_aer(n,itype,iphase) .ge. p1st) then
384                 ll = ll + 1
385                 massptr_aer(ll,n,itype,iphase) = lptr_cl_aer(n,itype,iphase)
386                 mastercompptr_aer(ll,itype) = 19
387             endif
388             ncomp_aer_nontracer(itype) = ll
390             ncomp_aer(itype) = ll
392             mprognum_aer(n,itype,iphase) = 0
393             if (numptr_aer(n,itype,iphase) .ge. p1st) then
394                 mprognum_aer(n,itype,iphase) = 1
395             end if
397         end do ! size
398         end do ! type
399         end do ! phase
401         waterptr_aer(:,:) = 0
403         do itype=1,ntype_aer
404         do ll=1,ncomp_aer(itype)
405            dens_aer(ll,itype) = dens_mastercomp_aer(mastercompptr_aer(ll,itype))
406            mw_aer(ll,itype) = mw_mastercomp_aer(mastercompptr_aer(ll,itype))
407            hygro_aer(ll,itype) = hygro_mastercomp_aer(mastercompptr_aer(ll,itype))
408            name_aer(ll,itype) = name_mastercomp_aer(mastercompptr_aer(ll,itype))
409         end do
410         end do
412         is_aerosol(:) = .false.
413         do iphase=1,nphase_aer
414         do itype=1,ntype_aer
415         do n = 1, nsize_aer(itype)
416             do ll = 1, ncomp_aer(itype)
417               is_aerosol(massptr_aer(ll,n,itype,iphase))=.true.
418             end do
419             is_aerosol(numptr_aer(n,itype,iphase))=.true.
420         end do ! size
421         end do ! type
422         end do ! phase
423         
424 ! for sectional
425 !    the dhi/dlo_sect are the upper/lower bounds for 
426 !       mean-volume diameter for a section/bin
427 ! for modal
428 !    they should be set to reasonable upper/lower
429 !       bounds for mean-volume diameters of each modes
430 !    they are primarily used to put reasonable bounds
431 !       on number (in relation to mass/volume)
432 !    the dcen_sect are used by initwet for the impaction scavenging
433 !       lookup tables, and should represent a "base" mean-volume diameter
434 ! dp_meanvol_tmp (below) is the made-sorgam default initial value 
435 !    for mean-volume diameter (in cm)
436 ! terminology:  (pi/6) * (mean-volume diameter)**3 ==
437 !       (volume mixing ratio of section/mode)/(number mixing ratio)
439         dhi_sect(:,:) = 0.0
440         dlo_sect(:,:) = 0.0
442         itype = 1
443         isize = 1
444         sigmag_aer(isize,itype) = sginin ! aitken
445         dp_meanvol_tmp = 1.0e2*dginin*exp(1.5*l2sginin) ! aitken
446         dcen_sect(isize,itype) = dp_meanvol_tmp
447         dhi_sect(isize,itype)  = dp_meanvol_tmp*4.0
448         dlo_sect(isize,itype)  = dp_meanvol_tmp/4.0
450         itype = 1
451         isize = 2
452         sigmag_aer(isize,itype) = sginia ! accum
453         dp_meanvol_tmp = 1.0e2*dginia*exp(1.5*l2sginia) ! accum 
454         dcen_sect(isize,itype) = dp_meanvol_tmp
455         dhi_sect(isize,itype)  = dp_meanvol_tmp*4.0
456         dlo_sect(isize,itype)  = dp_meanvol_tmp/4.0
458         itype = 2
459         isize = 1
460         sigmag_aer(isize,itype) = sginic ! coarse
461         dp_meanvol_tmp = 1.0e2*dginic*exp(1.5*l2sginic) ! coarse
462         dcen_sect(isize,itype) = dp_meanvol_tmp
463         dhi_sect(isize,itype)  = dp_meanvol_tmp*4.0
464         dlo_sect(isize,itype)  = dp_meanvol_tmp/4.0
466         do itype = 1, ntype_aer
467         do isize = 1, nsize_aer(itype)
468            volumcen_sect(isize,itype) = (pirs/6.0)*(dcen_sect(isize,itype)**3)
469            volumlo_sect(isize,itype)  = (pirs/6.0)*(dlo_sect(isize,itype)**3)
470            volumhi_sect(isize,itype)  = (pirs/6.0)*(dhi_sect(isize,itype)**3)
471         end do
472         end do
475 ! do initialization of the impaction/interception scavenging 
476 ! lookup tables
477         call initwet(   &
478             ntype_aer, nsize_aer, ncomp_aer,   &
479             massptr_aer, dens_aer, numptr_aer,           &
480             maxd_acomp, maxd_asize,maxd_atype, maxd_aphase,   &
481             dcen_sect, sigmag_aer, &
482             waterptr_aer, dens_water_aer, &
483             scavimptblvol, scavimptblnum, nimptblgrow_mind,   &
484             nimptblgrow_maxd, dlndg_nimptblgrow )
486 END SUBROUTINE aerosols_sorgam_init_aercld_ptrs
488 SUBROUTINE aerosols_soa_vbs_init_aercld_ptrs(   &
489          num_chem, is_aerosol, config_flags )
491 ! initialize pointers used by aerosol-cloud-interaction routines
493      USE module_data_soa_vbs
494 !    USE module_configure,only:  grid_config_rec_type
495 !    USE module_mosaic_wetscav,only:  initwet
497     implicit none
498     INTEGER, INTENT(IN) :: num_chem
499     LOGICAL, INTENT(OUT) :: is_aerosol(num_chem)
500     TYPE (grid_config_rec_type) , INTENT (in) :: config_flags
503     integer iphase, isize, itype, l, ll, n, p1st
504     REAL dp_meanvol_tmp
506         nphase_aer = 1
507         if(p_so4cwj.ge. param_first_scalar) then
508            nphase_aer = 2
509         endif
510         ai_phase=-999888777
511         cw_phase=-999888777
512         ci_phase=-999888777
513         cr_phase=-999888777
514         cs_phase=-999888777
515         cg_phase=-999888777
516         if(nphase_aer>=1)ai_phase=1
517         if(nphase_aer>=2)cw_phase=2
518         if(nphase_aer>=3)cr_phase=3
519         if(nphase_aer>=4)ci_phase=4
520         if(nphase_aer>=5)cw_phase=5
521         if(nphase_aer>=6)cg_phase=6
523 ! aitken and accum mode have same set of species 
524 !    so are treated as isize=1,2 of itype=1
525 ! coarse mode has different set of species
526 !    so is  treated as isize=1 of itype=2
527         ntype_aer = 2
528         nsize_aer(1)=2
529         nsize_aer(2)=1
531         msectional = 0
532         maerosolincw = 0
533 #if defined ( cw_species_are_in_registry )
534         maerosolincw = 1
535 #endif
536         name_mastercomp_aer( 1) = 'sulfate'
537         dens_mastercomp_aer( 1) = dens_so4_aer
538         mw_mastercomp_aer(   1) =   mw_so4_aer
539         hygro_mastercomp_aer(1) = hygro_so4_aer
541         name_mastercomp_aer( 2) = 'nitrate'
542         dens_mastercomp_aer( 2) = dens_no3_aer
543         mw_mastercomp_aer(   2) =   mw_no3_aer
544         hygro_mastercomp_aer(2) = hygro_no3_aer
546         name_mastercomp_aer( 3) = 'ammonium'
547         dens_mastercomp_aer( 3) = dens_nh4_aer
548         mw_mastercomp_aer(   3) =   mw_nh4_aer
549         hygro_mastercomp_aer(3) = hygro_nh4_aer
551         name_mastercomp_aer( 4) = 'asoa1'
552         dens_mastercomp_aer( 4) = dens_oc_aer
553         mw_mastercomp_aer(   4) =   mw_oc_aer
554         hygro_mastercomp_aer(4) = hygro_oc_aer
556         name_mastercomp_aer( 5) = 'asoa2'
557         dens_mastercomp_aer( 5) = dens_oc_aer
558         mw_mastercomp_aer(   5) =   mw_oc_aer
559         hygro_mastercomp_aer(5) = hygro_oc_aer
561         name_mastercomp_aer( 6) = 'asoa3'
562         dens_mastercomp_aer( 6) = dens_oc_aer
563         mw_mastercomp_aer(   6) =   mw_oc_aer
564         hygro_mastercomp_aer(6) = hygro_oc_aer
566         name_mastercomp_aer( 7) = 'asoa4'
567         dens_mastercomp_aer( 7) = dens_oc_aer
568         mw_mastercomp_aer(   7) =   mw_oc_aer
569         hygro_mastercomp_aer(7) = hygro_oc_aer
571         name_mastercomp_aer( 8) = 'bsoa1'
572         dens_mastercomp_aer( 8) = dens_oc_aer
573         mw_mastercomp_aer(   8) =   mw_oc_aer
574         hygro_mastercomp_aer(8) = hygro_oc_aer
576         name_mastercomp_aer( 9) = 'bsoa2'
577         dens_mastercomp_aer( 9) = dens_oc_aer
578         mw_mastercomp_aer(   9) =   mw_oc_aer
579         hygro_mastercomp_aer(9) = hygro_oc_aer
581         name_mastercomp_aer( 10) = 'bsoa3'
582         dens_mastercomp_aer( 10) = dens_oc_aer
583         mw_mastercomp_aer(   10) =   mw_oc_aer
584         hygro_mastercomp_aer(10) = hygro_oc_aer
586         name_mastercomp_aer( 11) = 'bsoa4'
587         dens_mastercomp_aer( 11) = dens_oc_aer
588         mw_mastercomp_aer(   11) =   mw_oc_aer
589         hygro_mastercomp_aer(11) = hygro_oc_aer
591         name_mastercomp_aer( 12) = 'orgpa'
592         dens_mastercomp_aer( 12) = dens_oc_aer
593         mw_mastercomp_aer(   12) =   mw_oc_aer
594         hygro_mastercomp_aer(12) = hygro_oc_aer
596         name_mastercomp_aer( 13) = 'ec'
597         dens_mastercomp_aer( 13) = dens_ec_aer
598         mw_mastercomp_aer(   13) =   mw_ec_aer
599         hygro_mastercomp_aer(13) = hygro_ec_aer
601         name_mastercomp_aer( 14) = 'p25'
602         dens_mastercomp_aer( 14) = dens_oin_aer
603         mw_mastercomp_aer(   14) =   mw_oin_aer
604         hygro_mastercomp_aer(14) = hygro_oin_aer
606         name_mastercomp_aer( 15) = 'anth'
607         dens_mastercomp_aer( 15) = dens_oin_aer
608         mw_mastercomp_aer(   15) =   mw_oin_aer
609         hygro_mastercomp_aer(15) = hygro_oin_aer
611         name_mastercomp_aer( 16) = 'seas'
612         dens_mastercomp_aer( 16) = dens_seas_aer
613         mw_mastercomp_aer(   16) =   mw_seas_aer
614         hygro_mastercomp_aer(16) = hygro_seas_aer
616         name_mastercomp_aer( 17) = 'soil'
617         dens_mastercomp_aer( 17) = dens_dust_aer
618         mw_mastercomp_aer(   17) =  mw_dust_aer
619         hygro_mastercomp_aer(17) = hygro_dust_aer
621         name_mastercomp_aer(18)  = 'sodium'
622         dens_mastercomp_aer(18)  = dens_na_aer
623         mw_mastercomp_aer(  18)  =   mw_na_aer
624         hygro_mastercomp_aer(18) = hygro_na_aer
626         name_mastercomp_aer(19)  = 'chloride'
627         dens_mastercomp_aer(19)  = dens_cl_aer
628         mw_mastercomp_aer(  19)  =   mw_cl_aer
629         hygro_mastercomp_aer(19) = hygro_cl_aer
631         lptr_so4_aer(    :,:,:) = 1
632         lptr_nh4_aer(    :,:,:) = 1
633         lptr_no3_aer(    :,:,:) = 1
634         lptr_na_aer(     :,:,:) = 1
635         lptr_cl_aer(     :,:,:) = 1
636         lptr_asoa1_aer(:,:,:) = 1
637         lptr_asoa2_aer(:,:,:) = 1
638         lptr_asoa3_aer( :,:,:) = 1
639         lptr_asoa4_aer( :,:,:) = 1
640         lptr_bsoa1_aer( :,:,:) = 1
641         lptr_bsoa2_aer( :,:,:) = 1
642         lptr_bsoa3_aer( :,:,:) = 1
643         lptr_bsoa4_aer( :,:,:) = 1
644         lptr_orgpa_aer(  :,:,:) = 1
645         lptr_ec_aer(     :,:,:) = 1
646         lptr_p25_aer(    :,:,:) = 1
647         lptr_anth_aer(   :,:,:) = 1
648         lptr_seas_aer(   :,:,:) = 1
649         lptr_soil_aer(   :,:,:) = 1
650         numptr_aer(      :,:,:) = 1
652         do_cloudchem_aer(:,:) = .false.
654 ! Aitken mode
655         itype = 1
656         isize = 1
657         ncomp_aer(itype) = 16
658         numptr_aer(      isize,itype,ai_phase) = p_nu0
659         lptr_so4_aer(    isize,itype,ai_phase) = p_so4ai
660         lptr_nh4_aer(    isize,itype,ai_phase) = p_nh4ai
661         lptr_no3_aer(    isize,itype,ai_phase) = p_no3ai
662         lptr_na_aer(     isize,itype,ai_phase) = p_naai
663         lptr_cl_aer(     isize,itype,ai_phase) = p_clai
664         lptr_asoa1_aer(  isize,itype,ai_phase) = p_asoa1i
665         lptr_asoa2_aer(  isize,itype,ai_phase) = p_asoa2i
666         lptr_asoa3_aer(  isize,itype,ai_phase) = p_asoa3i
667         lptr_asoa4_aer(  isize,itype,ai_phase) = p_asoa4i
668         lptr_bsoa1_aer(  isize,itype,ai_phase) = p_bsoa1i
669         lptr_bsoa2_aer(  isize,itype,ai_phase) = p_bsoa2i
670         lptr_bsoa3_aer(  isize,itype,ai_phase) = p_bsoa3i
671         lptr_bsoa4_aer(  isize,itype,ai_phase) = p_bsoa4i
672         lptr_orgpa_aer(  isize,itype,ai_phase) = p_orgpai
673         lptr_ec_aer(     isize,itype,ai_phase) = p_eci
674         lptr_p25_aer(    isize,itype,ai_phase) = p_p25i
675 ! aerosol in cloud water
676         if(cw_phase.gt.0)then
677           numptr_aer(      isize,itype,cw_phase) = p_nu0cw
678           lptr_so4_aer(    isize,itype,cw_phase) = p_so4cwi
679           lptr_nh4_aer(    isize,itype,cw_phase) = p_nh4cwi
680           lptr_no3_aer(    isize,itype,cw_phase) = p_no3cwi
681           lptr_na_aer(     isize,itype,ai_phase) = p_nacwi
682           lptr_cl_aer(     isize,itype,ai_phase) = p_clcwi
683           lptr_asoa1_aer(  isize,itype,cw_phase) = p_asoa1cwi
684           lptr_asoa2_aer(  isize,itype,cw_phase) = p_asoa2cwi
685           lptr_asoa3_aer(  isize,itype,cw_phase) = p_asoa3cwi
686           lptr_asoa4_aer(  isize,itype,cw_phase) = p_asoa4cwi
687           lptr_bsoa1_aer(  isize,itype,cw_phase) = p_bsoa1cwi
688           lptr_bsoa2_aer(  isize,itype,cw_phase) = p_bsoa2cwi
689           lptr_bsoa3_aer(  isize,itype,cw_phase) = p_bsoa3cwi
690           lptr_bsoa4_aer(  isize,itype,cw_phase) = p_bsoa4cwi
691           lptr_orgpa_aer(  isize,itype,cw_phase) = p_orgpacwi
692           lptr_ec_aer(     isize,itype,cw_phase) = p_eccwi
693           lptr_p25_aer(    isize,itype,cw_phase) = p_p25cwi
694           do_cloudchem_aer(isize,itype) = .true.
695         endif
697 ! Accumulation mode
698         itype = 1
699         isize = 2
700         ncomp_aer(itype) = 16
701         numptr_aer(      isize,itype,ai_phase) = p_ac0
702         lptr_so4_aer(    isize,itype,ai_phase) = p_so4aj
703         lptr_nh4_aer(    isize,itype,ai_phase) = p_nh4aj
704         lptr_no3_aer(    isize,itype,ai_phase) = p_no3aj
705         lptr_na_aer(     isize,itype,ai_phase) = p_naaj
706         lptr_cl_aer(     isize,itype,ai_phase) = p_claj
707         lptr_asoa1_aer(  isize,itype,ai_phase) = p_asoa1j
708         lptr_asoa2_aer(  isize,itype,ai_phase) = p_asoa2j
709         lptr_asoa3_aer(  isize,itype,ai_phase) = p_asoa3j
710         lptr_asoa4_aer(  isize,itype,ai_phase) = p_asoa4j
711         lptr_bsoa1_aer(  isize,itype,ai_phase) = p_bsoa1j
712         lptr_bsoa2_aer(  isize,itype,ai_phase) = p_bsoa2j
713         lptr_bsoa3_aer(  isize,itype,ai_phase) = p_bsoa3j
714         lptr_bsoa4_aer(  isize,itype,ai_phase) = p_bsoa4j
715         lptr_orgpa_aer(  isize,itype,ai_phase) = p_orgpaj
716         lptr_ec_aer(     isize,itype,ai_phase) = p_ecj
717         lptr_p25_aer(    isize,itype,ai_phase) = p_p25j
718 ! aerosol in cloud water
719         if(cw_phase.gt.0)then
720           numptr_aer(      isize,itype,cw_phase) = p_ac0cw
721           lptr_so4_aer(    isize,itype,cw_phase) = p_so4cwj
722           lptr_nh4_aer(    isize,itype,cw_phase) = p_nh4cwj
723           lptr_no3_aer(    isize,itype,cw_phase) = p_no3cwj
724           lptr_na_aer(     isize,itype,ai_phase) = p_nacwj
725           lptr_cl_aer(     isize,itype,ai_phase) = p_clcwj
726           lptr_asoa1_aer(  isize,itype,cw_phase) = p_asoa1cwj
727           lptr_asoa2_aer(  isize,itype,cw_phase) = p_asoa2cwj
728           lptr_asoa3_aer(  isize,itype,cw_phase) = p_asoa3cwj
729           lptr_asoa4_aer(  isize,itype,cw_phase) = p_asoa4cwj
730           lptr_bsoa1_aer(  isize,itype,cw_phase) = p_bsoa1cwj
731           lptr_bsoa2_aer(  isize,itype,cw_phase) = p_bsoa2cwj
732           lptr_bsoa3_aer(  isize,itype,cw_phase) = p_bsoa3cwj
733           lptr_bsoa4_aer(  isize,itype,cw_phase) = p_bsoa4cwj
734           lptr_orgpa_aer(  isize,itype,cw_phase) = p_orgpacwj
735           lptr_ec_aer(     isize,itype,cw_phase) = p_eccwj
736           lptr_p25_aer(    isize,itype,cw_phase) = p_p25cwj
737           do_cloudchem_aer(isize,itype) = .true.
738         endif
740 ! coarse mode
741         itype = 2
742         isize = 1
743         ncomp_aer(itype) = 3
744         numptr_aer(      isize,itype,ai_phase) = p_corn
745         lptr_anth_aer(   isize,itype,ai_phase) = p_antha
746         lptr_seas_aer(   isize,itype,ai_phase) = p_seas
747         lptr_soil_aer(   isize,itype,ai_phase) = p_soila
748 ! aerosol in cloud water
749         if(cw_phase.gt.0)then
750           numptr_aer(      isize,itype,cw_phase) = p_corncw
751           lptr_anth_aer(   isize,itype,cw_phase) = p_anthcw
752           lptr_seas_aer(   isize,itype,cw_phase) = p_seascw
753           lptr_soil_aer(   isize,itype,cw_phase) = p_soilcw
754 ! no cloudchem for coarse mode because it has no so4/nh4/no3 species
755           do_cloudchem_aer(isize,itype) = .false.
756         endif
758         massptr_aer(:,:,:,:) = -999888777
759         mastercompptr_aer(:,:) = -999888777
761         p1st = param_first_scalar
763         do iphase=1,nphase_aer
764         do itype=1,ntype_aer
765         do n = 1, nsize_aer(itype)
766             ll = 0
767             if (lptr_so4_aer(n,itype,iphase) .ge. p1st) then
768                 ll = ll + 1
769                 massptr_aer(ll,n,itype,iphase) = lptr_so4_aer(n,itype,iphase)
770                 mastercompptr_aer(ll,itype) = 1
771             end if
772             if (lptr_no3_aer(n,itype,iphase) .ge. p1st) then
773                 ll = ll + 1
774                 massptr_aer(ll,n,itype,iphase) = lptr_no3_aer(n,itype,iphase)
775                 mastercompptr_aer(ll,itype) = 2
776             end if
777             if (lptr_nh4_aer(n,itype,iphase) .ge. p1st) then
778                 ll = ll + 1
779                 massptr_aer(ll,n,itype,iphase) = lptr_nh4_aer(n,itype,iphase)
780                 mastercompptr_aer(ll,itype) = 3
781             end if
782             if (lptr_asoa1_aer(n,itype,iphase) .ge. p1st) then
783                 ll = ll + 1
784                 massptr_aer(ll,n,itype,iphase) = lptr_asoa1_aer(n,itype,iphase)
785                 mastercompptr_aer(ll,itype) = 4
786             end if
787             if (lptr_asoa2_aer(n,itype,iphase) .ge. p1st) then
788                 ll = ll + 1
789                 massptr_aer(ll,n,itype,iphase) = lptr_asoa2_aer(n,itype,iphase)
790                 mastercompptr_aer(ll,itype) = 5
791             end if
792             if (lptr_asoa3_aer(n,itype,iphase) .ge. p1st) then
793                 ll = ll + 1
794                 massptr_aer(ll,n,itype,iphase) = lptr_asoa3_aer(n,itype,iphase)
795                 mastercompptr_aer(ll,itype) = 6
796             end if
797             if (lptr_asoa4_aer(n,itype,iphase) .ge. p1st) then
798                 ll = ll + 1
799                 massptr_aer(ll,n,itype,iphase) = lptr_asoa4_aer(n,itype,iphase)
800                 mastercompptr_aer(ll,itype) = 7
801             end if
802             if (lptr_bsoa1_aer(n,itype,iphase) .ge. p1st) then
803                 ll = ll + 1
804                 massptr_aer(ll,n,itype,iphase) = lptr_bsoa1_aer(n,itype,iphase)
805                 mastercompptr_aer(ll,itype) = 8
806             end if
807             if (lptr_bsoa2_aer(n,itype,iphase) .ge. p1st) then
808                 ll = ll + 1
809                 massptr_aer(ll,n,itype,iphase) = lptr_bsoa2_aer(n,itype,iphase)
810                 mastercompptr_aer(ll,itype) = 9
811             end if
812             if (lptr_bsoa3_aer(n,itype,iphase) .ge. p1st) then
813                 ll = ll + 1
814                 massptr_aer(ll,n,itype,iphase) = lptr_bsoa3_aer(n,itype,iphase)
815                 mastercompptr_aer(ll,itype) = 10
816             end if
817             if (lptr_bsoa4_aer(n,itype,iphase) .ge. p1st) then
818                 ll = ll + 1
819             massptr_aer(ll,n,itype,iphase) = lptr_bsoa4_aer(n,itype,iphase)
820                 mastercompptr_aer(ll,itype) = 11
821             end if
822             if (lptr_orgpa_aer(n,itype,iphase) .ge. p1st) then
823                 ll = ll + 1
824                 massptr_aer(ll,n,itype,iphase) = lptr_orgpa_aer(n,itype,iphase)
825                 mastercompptr_aer(ll,itype) = 12
826             end if
827             if (lptr_ec_aer(n,itype,iphase) .ge. p1st) then
828                 ll = ll + 1
829                 massptr_aer(ll,n,itype,iphase) = lptr_ec_aer(n,itype,iphase)
830                 mastercompptr_aer(ll,itype) = 13
831             end if
832             if (lptr_p25_aer(n,itype,iphase) .ge. p1st) then
833                 ll = ll + 1
834                 massptr_aer(ll,n,itype,iphase) = lptr_p25_aer(n,itype,iphase)
835                 mastercompptr_aer(ll,itype) = 14
836             end if
837             if (lptr_anth_aer(n,itype,iphase) .ge. p1st) then
838                 ll = ll + 1
839                 massptr_aer(ll,n,itype,iphase) = lptr_anth_aer(n,itype,iphase)
840                 mastercompptr_aer(ll,itype) = 15
841             end if
842             if (lptr_seas_aer(n,itype,iphase) .ge. p1st) then
843                 ll = ll + 1
844                 massptr_aer(ll,n,itype,iphase) = lptr_seas_aer(n,itype,iphase)
845                 mastercompptr_aer(ll,itype) = 16
846             end if
847             if (lptr_soil_aer(n,itype,iphase) .ge. p1st) then
848                 ll = ll + 1
849                 massptr_aer(ll,n,itype,iphase) = lptr_soil_aer(n,itype,iphase)
850                 mastercompptr_aer(ll,itype) = 17
851             end if
852             if (lptr_na_aer(n,itype,iphase) .ge. p1st) then
853                 ll = ll + 1
854                 massptr_aer(ll,n,itype,iphase) = lptr_na_aer(n,itype,iphase)
855                 mastercompptr_aer(ll,itype) = 18
856             end if
857             if (lptr_cl_aer(n,itype,iphase) .ge. p1st) then
858                 ll = ll + 1
859                 massptr_aer(ll,n,itype,iphase) = lptr_cl_aer(n,itype,iphase)
860                 mastercompptr_aer(ll,itype) = 19
861             endif
862             ncomp_aer_nontracer(itype) = ll
864             ncomp_aer(itype) = ll
866             mprognum_aer(n,itype,iphase) = 0
867             if (numptr_aer(n,itype,iphase) .ge. p1st) then
868                 mprognum_aer(n,itype,iphase) = 1
869             end if
871         end do ! size
872         end do ! type
873         end do ! phase
875         waterptr_aer(:,:) = 0
877         do itype=1,ntype_aer
878         do ll=1,ncomp_aer(itype)
879            dens_aer(ll,itype) = dens_mastercomp_aer(mastercompptr_aer(ll,itype))
880            mw_aer(ll,itype) = mw_mastercomp_aer(mastercompptr_aer(ll,itype))
881            hygro_aer(ll,itype) = hygro_mastercomp_aer(mastercompptr_aer(ll,itype))
882            name_aer(ll,itype) = name_mastercomp_aer(mastercompptr_aer(ll,itype))
883         end do
884         end do
886         is_aerosol(:) = .false.
887         do iphase=1,nphase_aer
888         do itype=1,ntype_aer
889         do n = 1, nsize_aer(itype)
890             do ll = 1, ncomp_aer(itype)
891               is_aerosol(massptr_aer(ll,n,itype,iphase))=.true.
892             end do
893         is_aerosol(numptr_aer(n,itype,iphase))=.true.
894         end do ! size
895         end do ! type
896         end do ! phase
898 ! for sectional
899 !    the dhi/dlo_sect are the upper/lower bounds for 
900 !       mean-volume diameter for a section/bin
901 ! for modal
902 !    they should be set to reasonable upper/lower
903 !       bounds for mean-volume diameters of each modes
904 !    they are primarily used to put reasonable bounds
905 !       on number (in relation to mass/volume)
906 !    the dcen_sect are used by initwet for the impaction scavenging
907 !       lookup tables, and should represent a "base" mean-volume diameter
908 ! dp_meanvol_tmp (below) is the made-sorgam default initial value 
909 !    for mean-volume diameter (in cm)
910 ! terminology:  (pi/6) * (mean-volume diameter)**3 ==
911 !       (volume mixing ratio of section/mode)/(number mixing ratio)
913         dhi_sect(:,:) = 0.0
914         dlo_sect(:,:) = 0.0
916         itype = 1
917         isize = 1
918         sigmag_aer(isize,itype) = sginin ! aitken
919         dp_meanvol_tmp = 1.0e2*dginin*exp(1.5*l2sginin) ! aitken
920         dcen_sect(isize,itype) = dp_meanvol_tmp
921         dhi_sect(isize,itype)  = dp_meanvol_tmp*4.0
922         dlo_sect(isize,itype)  = dp_meanvol_tmp/4.0
924         itype = 1
925         isize = 2
926         sigmag_aer(isize,itype) = sginia ! accum
927         dp_meanvol_tmp = 1.0e2*dginia*exp(1.5*l2sginia) ! accum 
928         dcen_sect(isize,itype) = dp_meanvol_tmp
929         dhi_sect(isize,itype)  = dp_meanvol_tmp*4.0
930         dlo_sect(isize,itype)  = dp_meanvol_tmp/4.0
932         itype = 2
933         isize = 1
934         sigmag_aer(isize,itype) = sginic ! coarse
935         dp_meanvol_tmp = 1.0e2*dginic*exp(1.5*l2sginic) ! coarse
936         dcen_sect(isize,itype) = dp_meanvol_tmp
937         dhi_sect(isize,itype)  = dp_meanvol_tmp*4.0
938         dlo_sect(isize,itype)  = dp_meanvol_tmp/4.0
940         do itype = 1, ntype_aer
941         do isize = 1, nsize_aer(itype)
942            volumcen_sect(isize,itype) = (pirs/6.0)*(dcen_sect(isize,itype)**3)
943            volumlo_sect(isize,itype)  = (pirs/6.0)*(dlo_sect(isize,itype)**3)
944            volumhi_sect(isize,itype)  = (pirs/6.0)*(dhi_sect(isize,itype)**3)
945         end do
946         end do
948 ! do initialization of the impaction/interception scavenging 
949 ! lookup tables
950         call initwet(   &
951             ntype_aer, nsize_aer, ncomp_aer,   &
952             massptr_aer, dens_aer, numptr_aer,           &
953             maxd_acomp, maxd_asize,maxd_atype, maxd_aphase,   &
954             dcen_sect, sigmag_aer, &
955             waterptr_aer, dens_water_aer, &
956             scavimptblvol, scavimptblnum, nimptblgrow_mind,   &
957             nimptblgrow_maxd, dlndg_nimptblgrow )
959     END SUBROUTINE aerosols_soa_vbs_init_aercld_ptrs
960  !===========================================================================
961    subroutine wetscav_sorgam_driver (id,ktau,dtstep,ktauc,config_flags,      &
962                dtstepc,alt,t_phy,p8w,t8w,p_phy,chem,rho_phy,cldfra,        &
963                qlsink,precr,preci,precs,precg,qsrflx,                      &
964                gas_aqfrac, numgas_aqfrac,                                  &
965                ids,ide, jds,jde, kds,kde,                                  &
966                ims,ime, jms,jme, kms,kme,                                  &
967                its,ite, jts,jte, kts,kte                                   )
969 !  wet removal by grid-resolved precipitation
970 !  scavenging of cloud-phase aerosols and gases by collection, freezing, ...
971 !  scavenging of interstitial-phase aerosols by impaction
972 !  scavenging of gas-phase gases by mass transfer and reaction
974 !----------------------------------------------------------------------
975    !USE module_configure
976    !USE module_state_description
977    USE module_data_sorgam
978    !USE module_mosaic_wetscav,only:  wetscav
980 !----------------------------------------------------------------------
981    IMPLICIT NONE
983    TYPE(grid_config_rec_type),  INTENT(IN   )    :: config_flags
985    INTEGER,      INTENT(IN   )    ::                                &
986                                       ids,ide, jds,jde, kds,kde,    &
987                                       ims,ime, jms,jme, kms,kme,    &
988                                       its,ite, jts,jte, kts,kte,    &
989                                       id, ktau, ktauc, numgas_aqfrac
990       REAL,      INTENT(IN   ) :: dtstep,dtstepc
992 ! all advected chemical species
994    REAL, DIMENSION( ims:ime, kms:kme, jms:jme, num_chem ),          &
995          INTENT(INOUT ) ::                                chem
997 ! fraction of gas species in cloud water
998    REAL, DIMENSION( ims:ime, kms:kme, jms:jme, numgas_aqfrac ),     &
999          INTENT(IN ) ::                                   gas_aqfrac
1003 ! input from meteorology
1004    REAL,  DIMENSION( ims:ime , kms:kme , jms:jme )         ,        &
1005           INTENT(IN   ) ::                                          &
1006                                                         alt,        &
1007                                                       t_phy,        &
1008                                                       p_phy,        &
1009                                                    t8w,p8w,         &
1010                                     qlsink,precr,preci,precs,precg, &
1011                                                     rho_phy,cldfra
1012    REAL, DIMENSION( ims:ime, jms:jme, num_chem ),          &
1013          INTENT(OUT ) ::                                qsrflx ! column change due to scavening
1015    call wetscav (id,ktau,dtstep,ktauc,config_flags,                     &
1016         dtstepc,alt,t_phy,p8w,t8w,p_phy,chem,rho_phy,cldfra,            &
1017         qlsink,precr,preci,precs,precg,qsrflx,                          &
1018         gas_aqfrac, numgas_aqfrac,                                      &
1019         ntype_aer, nsize_aer, ncomp_aer,                                &
1020         massptr_aer, dens_aer, numptr_aer,                              &
1021         maxd_acomp, maxd_asize,maxd_atype, maxd_aphase, ai_phase, cw_phase, &
1022         volumcen_sect, volumlo_sect, volumhi_sect,                      &
1023         waterptr_aer, dens_water_aer,                                   &
1024         scavimptblvol, scavimptblnum, nimptblgrow_mind, nimptblgrow_maxd,dlndg_nimptblgrow, &
1025         ids,ide, jds,jde, kds,kde,                                      &
1026         ims,ime, jms,jme, kms,kme,                                      &
1027         its,ite, jts,jte, kts,kte                                       )
1029    end subroutine wetscav_sorgam_driver   
1030                                               
1031  subroutine wetscav_soa_vbs_driver (id,ktau,dtstep,ktauc,config_flags,      &
1032                dtstepc,alt,t_phy,p8w,t8w,p_phy,chem,rho_phy,cldfra,        &
1033                qlsink,precr,preci,precs,precg,qsrflx,                      &
1034                gas_aqfrac, numgas_aqfrac,                                  &
1035                ids,ide, jds,jde, kds,kde,                                  &
1036                ims,ime, jms,jme, kms,kme,                                  &
1037                its,ite, jts,jte, kts,kte                                   )
1039 !  wet removal by grid-resolved precipitation
1040 !  scavenging of cloud-phase aerosols and gases by collection, freezing, ...
1041 !  scavenging of interstitial-phase aerosols by impaction
1042 !  scavenging of gas-phase gases by mass transfer and reaction
1044 !----------------------------------------------------------------------
1045    !USE module_configure
1046    !USE module_state_description
1047    USE module_data_soa_vbs
1048    !USE module_mosaic_wetscav,only:  wetscav
1050 !----------------------------------------------------------------------
1051    IMPLICIT NONE
1053    TYPE(grid_config_rec_type),  INTENT(IN   )    :: config_flags
1055    INTEGER,      INTENT(IN   )    ::                                &
1056                                       ids,ide, jds,jde, kds,kde,    &
1057                                       ims,ime, jms,jme, kms,kme,    &
1058                                       its,ite, jts,jte, kts,kte,    &
1059                                       id, ktau, ktauc, numgas_aqfrac
1060       REAL,      INTENT(IN   ) :: dtstep,dtstepc
1062 ! all advected chemical species
1063 REAL, DIMENSION( ims:ime, kms:kme, jms:jme, num_chem ),          &
1064          INTENT(INOUT ) ::                                chem
1066 ! fraction of gas species in cloud water
1067    REAL, DIMENSION( ims:ime, kms:kme, jms:jme, numgas_aqfrac ),     &
1068          INTENT(IN ) ::                                   gas_aqfrac
1072 ! input from meteorology
1073    REAL,  DIMENSION( ims:ime , kms:kme , jms:jme )         ,        &
1074  INTENT(IN   ) ::                                                   &
1075                                                         alt,        &
1076                                                       t_phy,        &
1077                                                       p_phy,        &
1078                                                    t8w,p8w,         &
1079                                     qlsink,precr,preci,precs,precg, &
1080                                                     rho_phy,cldfra
1081    REAL, DIMENSION( ims:ime, jms:jme, num_chem ),          &
1082          INTENT(OUT ) ::                                qsrflx ! column change due to scavening
1084    call wetscav (id,ktau,dtstep,ktauc,config_flags,                     &
1085         dtstepc,alt,t_phy,p8w,t8w,p_phy,chem,rho_phy,cldfra,            &
1086         qlsink,precr,preci,precs,precg,qsrflx,                          &
1087         gas_aqfrac, numgas_aqfrac,                                      &
1088         ntype_aer, nsize_aer, ncomp_aer,                                &
1089         massptr_aer, dens_aer, numptr_aer,                              &
1090         maxd_acomp, maxd_asize,maxd_atype, maxd_aphase, ai_phase, cw_phase, &
1091         volumcen_sect, volumlo_sect, volumhi_sect,                      &
1092         waterptr_aer, dens_water_aer,                                   &
1093         scavimptblvol, scavimptblnum, nimptblgrow_mind, nimptblgrow_maxd,dlndg_nimptblgrow, &
1094         ids,ide, jds,jde, kds,kde,                                      &
1095         ims,ime, jms,jme, kms,kme,                                      &
1096         its,ite, jts,jte, kts,kte                                       )
1098    end subroutine wetscav_soa_vbs_driver
1100 END MODULE module_prep_wetscav_sorgam