1 MODULE module_prep_wetscav_sorgam
3 USE module_state_description
5 USE module_mosaic_wetscav,only: initwet,wetscav
9 #define cw_species_are_in_registry
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
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
33 if(p_so4cwj.ge. param_first_scalar) then
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
59 #if defined ( cw_species_are_in_registry )
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
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.
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.
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.
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.
284 massptr_aer(:,:,:,:) = -999888777
285 mastercompptr_aer(:,:) = -999888777
287 p1st = param_first_scalar
289 do iphase=1,nphase_aer
291 do n = 1, nsize_aer(itype)
293 if (lptr_so4_aer(n,itype,iphase) .ge. p1st) then
295 massptr_aer(ll,n,itype,iphase) = lptr_so4_aer(n,itype,iphase)
296 mastercompptr_aer(ll,itype) = 1
298 if (lptr_no3_aer(n,itype,iphase) .ge. p1st) then
300 massptr_aer(ll,n,itype,iphase) = lptr_no3_aer(n,itype,iphase)
301 mastercompptr_aer(ll,itype) = 2
303 if (lptr_nh4_aer(n,itype,iphase) .ge. p1st) then
305 massptr_aer(ll,n,itype,iphase) = lptr_nh4_aer(n,itype,iphase)
306 mastercompptr_aer(ll,itype) = 3
308 if (lptr_orgaro1_aer(n,itype,iphase) .ge. p1st) then
310 massptr_aer(ll,n,itype,iphase) = lptr_orgaro1_aer(n,itype,iphase)
311 mastercompptr_aer(ll,itype) = 4
313 if (lptr_orgaro2_aer(n,itype,iphase) .ge. p1st) then
315 massptr_aer(ll,n,itype,iphase) = lptr_orgaro2_aer(n,itype,iphase)
316 mastercompptr_aer(ll,itype) = 5
318 if (lptr_orgalk_aer(n,itype,iphase) .ge. p1st) then
320 massptr_aer(ll,n,itype,iphase) = lptr_orgalk_aer(n,itype,iphase)
321 mastercompptr_aer(ll,itype) = 6
323 if (lptr_orgole_aer(n,itype,iphase) .ge. p1st) then
325 massptr_aer(ll,n,itype,iphase) = lptr_orgole_aer(n,itype,iphase)
326 mastercompptr_aer(ll,itype) = 7
328 if (lptr_orgba1_aer(n,itype,iphase) .ge. p1st) then
330 massptr_aer(ll,n,itype,iphase) = lptr_orgba1_aer(n,itype,iphase)
331 mastercompptr_aer(ll,itype) = 8
333 if (lptr_orgba2_aer(n,itype,iphase) .ge. p1st) then
335 massptr_aer(ll,n,itype,iphase) = lptr_orgba2_aer(n,itype,iphase)
336 mastercompptr_aer(ll,itype) = 9
338 if (lptr_orgba3_aer(n,itype,iphase) .ge. p1st) then
340 massptr_aer(ll,n,itype,iphase) = lptr_orgba3_aer(n,itype,iphase)
341 mastercompptr_aer(ll,itype) = 10
343 if (lptr_orgba4_aer(n,itype,iphase) .ge. p1st) then
345 massptr_aer(ll,n,itype,iphase) = lptr_orgba4_aer(n,itype,iphase)
346 mastercompptr_aer(ll,itype) = 11
348 if (lptr_orgpa_aer(n,itype,iphase) .ge. p1st) then
350 massptr_aer(ll,n,itype,iphase) = lptr_orgpa_aer(n,itype,iphase)
351 mastercompptr_aer(ll,itype) = 12
353 if (lptr_ec_aer(n,itype,iphase) .ge. p1st) then
355 massptr_aer(ll,n,itype,iphase) = lptr_ec_aer(n,itype,iphase)
356 mastercompptr_aer(ll,itype) = 13
358 if (lptr_p25_aer(n,itype,iphase) .ge. p1st) then
360 massptr_aer(ll,n,itype,iphase) = lptr_p25_aer(n,itype,iphase)
361 mastercompptr_aer(ll,itype) = 14
363 if (lptr_anth_aer(n,itype,iphase) .ge. p1st) then
365 massptr_aer(ll,n,itype,iphase) = lptr_anth_aer(n,itype,iphase)
366 mastercompptr_aer(ll,itype) = 15
368 if (lptr_seas_aer(n,itype,iphase) .ge. p1st) then
370 massptr_aer(ll,n,itype,iphase) = lptr_seas_aer(n,itype,iphase)
371 mastercompptr_aer(ll,itype) = 16
373 if (lptr_soil_aer(n,itype,iphase) .ge. p1st) then
375 massptr_aer(ll,n,itype,iphase) = lptr_soil_aer(n,itype,iphase)
376 mastercompptr_aer(ll,itype) = 17
378 if (lptr_na_aer(n,itype,iphase) .ge. p1st) then
380 massptr_aer(ll,n,itype,iphase) = lptr_na_aer(n,itype,iphase)
381 mastercompptr_aer(ll,itype) = 18
383 if (lptr_cl_aer(n,itype,iphase) .ge. p1st) then
385 massptr_aer(ll,n,itype,iphase) = lptr_cl_aer(n,itype,iphase)
386 mastercompptr_aer(ll,itype) = 19
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
401 waterptr_aer(:,:) = 0
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))
412 is_aerosol(:) = .false.
413 do iphase=1,nphase_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.
419 is_aerosol(numptr_aer(n,itype,iphase))=.true.
425 ! the dhi/dlo_sect are the upper/lower bounds for
426 ! mean-volume diameter for a section/bin
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)
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
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
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)
475 ! do initialization of the impaction/interception scavenging
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
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
507 if(p_so4cwj.ge. param_first_scalar) then
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
533 #if defined ( cw_species_are_in_registry )
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.
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.
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.
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.
758 massptr_aer(:,:,:,:) = -999888777
759 mastercompptr_aer(:,:) = -999888777
761 p1st = param_first_scalar
763 do iphase=1,nphase_aer
765 do n = 1, nsize_aer(itype)
767 if (lptr_so4_aer(n,itype,iphase) .ge. p1st) then
769 massptr_aer(ll,n,itype,iphase) = lptr_so4_aer(n,itype,iphase)
770 mastercompptr_aer(ll,itype) = 1
772 if (lptr_no3_aer(n,itype,iphase) .ge. p1st) then
774 massptr_aer(ll,n,itype,iphase) = lptr_no3_aer(n,itype,iphase)
775 mastercompptr_aer(ll,itype) = 2
777 if (lptr_nh4_aer(n,itype,iphase) .ge. p1st) then
779 massptr_aer(ll,n,itype,iphase) = lptr_nh4_aer(n,itype,iphase)
780 mastercompptr_aer(ll,itype) = 3
782 if (lptr_asoa1_aer(n,itype,iphase) .ge. p1st) then
784 massptr_aer(ll,n,itype,iphase) = lptr_asoa1_aer(n,itype,iphase)
785 mastercompptr_aer(ll,itype) = 4
787 if (lptr_asoa2_aer(n,itype,iphase) .ge. p1st) then
789 massptr_aer(ll,n,itype,iphase) = lptr_asoa2_aer(n,itype,iphase)
790 mastercompptr_aer(ll,itype) = 5
792 if (lptr_asoa3_aer(n,itype,iphase) .ge. p1st) then
794 massptr_aer(ll,n,itype,iphase) = lptr_asoa3_aer(n,itype,iphase)
795 mastercompptr_aer(ll,itype) = 6
797 if (lptr_asoa4_aer(n,itype,iphase) .ge. p1st) then
799 massptr_aer(ll,n,itype,iphase) = lptr_asoa4_aer(n,itype,iphase)
800 mastercompptr_aer(ll,itype) = 7
802 if (lptr_bsoa1_aer(n,itype,iphase) .ge. p1st) then
804 massptr_aer(ll,n,itype,iphase) = lptr_bsoa1_aer(n,itype,iphase)
805 mastercompptr_aer(ll,itype) = 8
807 if (lptr_bsoa2_aer(n,itype,iphase) .ge. p1st) then
809 massptr_aer(ll,n,itype,iphase) = lptr_bsoa2_aer(n,itype,iphase)
810 mastercompptr_aer(ll,itype) = 9
812 if (lptr_bsoa3_aer(n,itype,iphase) .ge. p1st) then
814 massptr_aer(ll,n,itype,iphase) = lptr_bsoa3_aer(n,itype,iphase)
815 mastercompptr_aer(ll,itype) = 10
817 if (lptr_bsoa4_aer(n,itype,iphase) .ge. p1st) then
819 massptr_aer(ll,n,itype,iphase) = lptr_bsoa4_aer(n,itype,iphase)
820 mastercompptr_aer(ll,itype) = 11
822 if (lptr_orgpa_aer(n,itype,iphase) .ge. p1st) then
824 massptr_aer(ll,n,itype,iphase) = lptr_orgpa_aer(n,itype,iphase)
825 mastercompptr_aer(ll,itype) = 12
827 if (lptr_ec_aer(n,itype,iphase) .ge. p1st) then
829 massptr_aer(ll,n,itype,iphase) = lptr_ec_aer(n,itype,iphase)
830 mastercompptr_aer(ll,itype) = 13
832 if (lptr_p25_aer(n,itype,iphase) .ge. p1st) then
834 massptr_aer(ll,n,itype,iphase) = lptr_p25_aer(n,itype,iphase)
835 mastercompptr_aer(ll,itype) = 14
837 if (lptr_anth_aer(n,itype,iphase) .ge. p1st) then
839 massptr_aer(ll,n,itype,iphase) = lptr_anth_aer(n,itype,iphase)
840 mastercompptr_aer(ll,itype) = 15
842 if (lptr_seas_aer(n,itype,iphase) .ge. p1st) then
844 massptr_aer(ll,n,itype,iphase) = lptr_seas_aer(n,itype,iphase)
845 mastercompptr_aer(ll,itype) = 16
847 if (lptr_soil_aer(n,itype,iphase) .ge. p1st) then
849 massptr_aer(ll,n,itype,iphase) = lptr_soil_aer(n,itype,iphase)
850 mastercompptr_aer(ll,itype) = 17
852 if (lptr_na_aer(n,itype,iphase) .ge. p1st) then
854 massptr_aer(ll,n,itype,iphase) = lptr_na_aer(n,itype,iphase)
855 mastercompptr_aer(ll,itype) = 18
857 if (lptr_cl_aer(n,itype,iphase) .ge. p1st) then
859 massptr_aer(ll,n,itype,iphase) = lptr_cl_aer(n,itype,iphase)
860 mastercompptr_aer(ll,itype) = 19
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
875 waterptr_aer(:,:) = 0
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))
886 is_aerosol(:) = .false.
887 do iphase=1,nphase_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.
893 is_aerosol(numptr_aer(n,itype,iphase))=.true.
899 ! the dhi/dlo_sect are the upper/lower bounds for
900 ! mean-volume diameter for a section/bin
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)
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
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
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)
948 ! do initialization of the impaction/interception scavenging
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 !----------------------------------------------------------------------
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 ) , &
1010 qlsink,precr,preci,precs,precg, &
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
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 !----------------------------------------------------------------------
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 ) , &
1079 qlsink,precr,preci,precs,precg, &
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