1 !************************************************************************
2 ! This computer software was prepared by Battelle Memorial Institute,
3 ! hereinafter the Contractor, under Contract No. DE-AC05-76RL0 1830 with
4 ! the Department of Energy (DOE). NEITHER THE GOVERNMENT NOR THE
5 ! CONTRACTOR MAKES ANY WARRANTY, EXPRESS OR IMPLIED, OR ASSUMES ANY
6 ! LIABILITY FOR THE USE OF THIS SOFTWARE.
8 ! MOSAIC module: see module_mosaic_driver.F for references and terms of
10 !************************************************************************
12 ! 2017-10-07 r.c.easter changes for new (openmp) mosaic version
14 ! nbin_a is now in module_data_mosaic_aero
15 ! nbin_a_maxd is set to nbin_a_max of module_data_mosaic_aero
17 !-----------------------------------------------------------------------
19 module module_data_mosaic_therm
22 use module_data_mosaic_aero, only: nbin_a_max, nbin_a
28 ! mosaic.h (mosaic.22.0)
29 ! 30-apr-07 raz - deleted alpha_gas
30 ! 05-feb-07 wig - converted reals to double
31 ! 10-jan-07 raz - compatible with mosaic.21.0
32 ! 19-dec-05 raz - compatible with mosaic.16.4
33 ! 27-apr-05 raz - compatible with mosaic.14.3
34 ! 07-jan-05 raz - updated and cleaned up variable lists
35 ! 08-jul-03 raz - updated many variables
36 ! 07-aug-02 rce - this is rahul's latest version from freshair
37 ! 19-aug-02 raz - declared mass_soluble_a and kg as real
38 ! 07-oct-02 raz - declared zc and za as integer
39 ! 09-oct-02 raz - explicitly declared all variables
40 ! 29-oct-02 raz - defined naercomp as the total number of aerosol compounds
41 !----------------------------------------------------------------------
43 ! nbin_a_maxd = maximum num of aerosol bins and is used to dimension arrays
44 ! integer, parameter :: nbin_a_maxd = 8
45 integer, parameter :: nbin_a_maxd = nbin_a_max
46 ! nbin_a = number of bins that are used in a run
47 ! (nbin_a is set at run time, and must be <= nbin_a_maxd)
48 ! integer, save :: nbin_a = 999888777
50 ! mosaic-specific parameters
51 ! Alma added 2 smp species - just before the traditional ant1_c
52 ! SOA is treated using a simplified approach for anthropogenic and biomass burning species based on Hodzic and Jimenez, GMD, 2011
53 integer ngas_ioa, ngas_soa, ngas_volatile, ngas_het, &
54 naer, naercomp, nelectrolyte, nsalt, &
55 nsoluble, ncation, nanion
56 parameter(ngas_ioa = 5) ! inorganic volatile aerosol species that have a gaseous counterpart
57 ! parameter(ngas_soa = 68+2+16) ! volatile soa species that have a gaseous counterpart
58 ! parameter(ngas_volatile = ngas_ioa + ngas_soa)
59 ! parameter(ngas_het = 2) ! gas species only involved in heterogeneous reactions ! DL - 9/9/2011
60 ! parameter(naer = 11+68+2+16) ! num of chemical species per bin (inorg + oc + bc + oin + soa)
61 ! parameter(naercomp = 26+68+2+16) ! num of electrolytes + oc, bc, oin, & soa
63 parameter(ngas_soa = 68+2+16+10) ! volatile soa species that have a gaseous counterpart
64 ! OH and glyoxal at the end
65 parameter(ngas_volatile = ngas_ioa + ngas_soa + 1 + 1)
66 parameter(ngas_het = 2) ! gas species only involved in heterogeneous reactions ! DL - 9/9/2011
67 ! 5 glyoxal SOA species, 10 VBS species
68 parameter(naer = 11+68+2+16+5+10) ! num of chemical species per bin (inorg + oc + bc + oin + soa) + 5*glysoa + 10*VBS
69 parameter(naercomp = 26+68+2+16+5+10) ! num of electrolytes + oc, bc, oin, & soa + 5*glysoa + 10*VBS
70 parameter(nelectrolyte = 22) ! num of electrolytes
71 parameter(nsalt = 15) ! num of soluble salts
72 parameter(nsoluble = 20) ! num of soluble electrolytes
73 parameter(ncation = 4) ! num of cations
74 parameter(nanion = 5) ! num of anions
76 integer nrxn_aer_gl, nrxn_aer_ll, nrxn_aer_sg, nrxn_aer_sl
77 parameter(nrxn_aer_gl = 4) ! num of gas-liquid equilibria
78 parameter(nrxn_aer_ll = 3) ! num of liquid-liquid equilibria
79 parameter(nrxn_aer_sg = 2) ! num of solid-gas equilibria
80 parameter(nrxn_aer_sl = nsalt)! num of solid-liquid equilibria
82 integer mmodal, msection, &
84 parameter(mmodal = 1) ! modal size distribution framework
85 parameter(msection= 2) ! sectional size distribution framework
86 parameter(mon = 1) ! flag: on
87 parameter(moff = 0) ! flag:off
88 parameter(myes = mon) ! flag: yes or true
89 parameter(mno = moff) ! flag: no or false
92 integer jtotal, jsolid, jliquid
97 integer jhyst_lo, jhyst_up
98 parameter(jhyst_lo = 0) ! lower hysteresis leg
99 parameter(jhyst_up = 1) ! upper hysteresis leg
102 ! allowable values for mhyst_method
103 integer, parameter :: mhyst_uporlo_waterhyst = 2 ! select upper/lower using "3-d method" involving water_a_hyst
104 integer, parameter :: mhyst_force_up = 3 ! force upper water hysteresis leg
105 integer, parameter :: mhyst_force_lo = 4 ! force lower water hysteresis leg
106 integer, parameter :: mhyst_method = mhyst_uporlo_waterhyst
108 real(kind=8), parameter :: xhyst_up_crustal_thresh = 0.30
109 ! when rh_crystal < rh < rh_deliquesce and bin mass fraction of crustal species (oin, caco3, and caso4)
110 ! exceeds xhyst_up_crustal_thresh, the bin is not allowed to be on the upper hysteresis curve.
111 ! mineral dust is mostly externally mixed, so a minor fraction of mineral dust species
112 ! will most likely reside in a minor fraction of the particles of the bin,
113 ! and should not control the bin aerosol water. (value = 0.0 in previous versions of mosaic)
115 integer, parameter :: mwater_kappa_nonelectro = 1 ! when > 0, use kappa_nonelectro for oin, oc, soa aerosol water
117 integer no_aerosol, all_solid, all_liquid, mixed
118 parameter(no_aerosol = 0) ! flag
119 parameter(all_solid = 1) ! flag
120 parameter(all_liquid = 2) ! flag
121 parameter(mixed = 3) ! flag
123 integer soluble, insoluble
124 parameter(soluble = 1) ! flag
125 parameter(insoluble = 2) ! flag
127 real(kind=8) mass_cutoff
128 parameter(mass_cutoff = 1.d-15) ! ng/m^3
131 !----------------------------------------------------------------------
132 ! mosaic species indices
136 ih2so4_g, ihno3_g, ihcl_g, inh3_g, &
137 imsa_g, in2o5_g, iclno2_g
140 ipcg1_b_c_g,ipcg2_b_c_g,ipcg3_b_c_g,ipcg4_b_c_g, &
141 ipcg5_b_c_g,ipcg6_b_c_g,ipcg7_b_c_g,ipcg8_b_c_g, &
142 ipcg9_b_c_g,ipcg1_b_o_g,ipcg2_b_o_g,ipcg3_b_o_g, &
143 ipcg4_b_o_g,ipcg5_b_o_g,ipcg6_b_o_g,ipcg7_b_o_g, &
144 ipcg8_b_o_g,ipcg9_b_o_g,iopcg1_b_c_g,iopcg2_b_c_g,&
145 iopcg3_b_c_g, iopcg4_b_c_g,iopcg5_b_c_g,iopcg6_b_c_g,&
146 iopcg7_b_c_g,iopcg8_b_c_g,iopcg1_b_o_g,iopcg2_b_o_g,&
147 iopcg3_b_o_g,iopcg4_b_o_g,iopcg5_b_o_g,iopcg6_b_o_g,&
148 iopcg7_b_o_g,iopcg8_b_o_g,&
149 ipcg1_f_c_g,ipcg2_f_c_g,ipcg3_f_c_g,ipcg4_f_c_g, &
150 ipcg5_f_c_g,ipcg6_f_c_g,ipcg7_f_c_g,ipcg8_f_c_g, &
151 ipcg9_f_c_g,ipcg1_f_o_g,ipcg2_f_o_g,ipcg3_f_o_g, &
152 ipcg4_f_o_g,ipcg5_f_o_g,ipcg6_f_o_g,ipcg7_f_o_g, &
153 ipcg8_f_o_g,ipcg9_f_o_g,iopcg1_f_c_g,iopcg2_f_c_g,&
154 iopcg3_f_c_g, iopcg4_f_c_g,iopcg5_f_c_g,iopcg6_f_c_g,&
155 iopcg7_f_c_g,iopcg8_f_c_g,iopcg1_f_o_g,iopcg2_f_o_g,&
156 iopcg3_f_o_g,iopcg4_f_o_g,iopcg5_f_o_g,iopcg6_f_o_g,&
157 iopcg7_f_o_g,iopcg8_f_o_g,iant1_c_g,iant2_c_g,iant3_c_g, &
158 iant4_c_g,ibiog1_c_g,ibiog2_c_g,ibiog3_c_g,ibiog4_c_g, &
159 iant1_o_g,iant2_o_g,iant3_o_g, &
160 iant4_o_g,ibiog1_o_g,ibiog2_o_g,ibiog3_o_g,ibiog4_o_g, &
162 iasoaX_g, iasoa1_g, iasoa2_g, iasoa3_g, iasoa4_g, &
163 ibsoaX_g, ibsoa1_g, ibsoa2_g, ibsoa3_g, ibsoa4_g, &
169 iso4_a, ino3_a, icl_a, inh4_a, ico3_a, &
170 imsa_a, ina_a, ica_a, ioc_a, ibc_a, &
174 ipcg1_b_c_a,ipcg2_b_c_a,ipcg3_b_c_a,ipcg4_b_c_a, &
175 ipcg5_b_c_a,ipcg6_b_c_a,ipcg7_b_c_a,ipcg8_b_c_a, &
176 ipcg9_b_c_a,ipcg1_b_o_a,ipcg2_b_o_a,ipcg3_b_o_a, &
177 ipcg4_b_o_a,ipcg5_b_o_a,ipcg6_b_o_a,ipcg7_b_o_a, &
178 ipcg8_b_o_a,ipcg9_b_o_a,iopcg1_b_c_a,iopcg2_b_c_a,&
179 iopcg3_b_c_a, iopcg4_b_c_a,iopcg5_b_c_a,iopcg6_b_c_a,&
180 iopcg7_b_c_a,iopcg8_b_c_a,iopcg1_b_o_a,iopcg2_b_o_a,&
181 iopcg3_b_o_a,iopcg4_b_o_a,iopcg5_b_o_a,iopcg6_b_o_a,&
182 iopcg7_b_o_a,iopcg8_b_o_a,&
183 ipcg1_f_c_a,ipcg2_f_c_a,ipcg3_f_c_a,ipcg4_f_c_a, &
184 ipcg5_f_c_a,ipcg6_f_c_a,ipcg7_f_c_a,ipcg8_f_c_a, &
185 ipcg9_f_c_a,ipcg1_f_o_a,ipcg2_f_o_a,ipcg3_f_o_a, &
186 ipcg4_f_o_a,ipcg5_f_o_a,ipcg6_f_o_a,ipcg7_f_o_a, &
187 ipcg8_f_o_a,ipcg9_f_o_a,iopcg1_f_c_a,iopcg2_f_c_a,&
188 iopcg3_f_c_a, iopcg4_f_c_a,iopcg5_f_c_a,iopcg6_f_c_a,&
189 iopcg7_f_c_a,iopcg8_f_c_a,iopcg1_f_o_a,iopcg2_f_o_a,&
190 iopcg3_f_o_a,iopcg4_f_o_a,iopcg5_f_o_a,iopcg6_f_o_a,&
191 iopcg7_f_o_a,iopcg8_f_o_a, &
193 iglysoa_r1_a, iglysoa_r2_a, iglysoa_oh_a, iglysoa_sfc_a, iglysoa_nh4_a, &
194 iant1_c_a,iant2_c_a,iant3_c_a, &
195 iant4_c_a,ibiog1_c_a,ibiog2_c_a,ibiog3_c_a,ibiog4_c_a, &
196 iant1_o_a,iant2_o_a,iant3_o_a, &
197 iant4_o_a,ibiog1_o_a,ibiog2_o_a,ibiog3_o_a,ibiog4_o_a, &
198 iasoaX_a, iasoa1_a,iasoa2_a,iasoa3_a,iasoa4_a,&
199 ibsoaX_a, ibsoa1_a,ibsoa2_a,ibsoa3_a,ibsoa4_a
202 ! aerosol elecctrolytes/compounds
204 jnh4so4, jlvcite, jnh4hso4, jnh4no3, jnh4cl, &
205 jna2so4, jna3hso4, jnahso4, jnano3, jnacl, &
206 jcaso4, jcano3, jcacl2, jcaco3, jh2so4, &
207 jhno3, jhcl, jhhso4, &
208 jnh4msa, jnamsa, jcamsa2, jmsa, &
212 jpcg1_b_c,jpcg2_b_c,jpcg3_b_c,jpcg4_b_c, &
213 jpcg5_b_c,jpcg6_b_c,jpcg7_b_c,jpcg8_b_c, &
214 jpcg9_b_c,jpcg1_b_o,jpcg2_b_o,jpcg3_b_o, &
215 jpcg4_b_o,jpcg5_b_o,jpcg6_b_o,jpcg7_b_o, &
216 jpcg8_b_o,jpcg9_b_o,jopcg1_b_c,jopcg2_b_c,&
217 jopcg3_b_c, jopcg4_b_c,jopcg5_b_c,jopcg6_b_c,&
218 jopcg7_b_c,jopcg8_b_c,jopcg1_b_o,jopcg2_b_o,&
219 jopcg3_b_o,jopcg4_b_o,jopcg5_b_o,jopcg6_b_o,&
220 jopcg7_b_o,jopcg8_b_o,&
221 jpcg1_f_c,jpcg2_f_c,jpcg3_f_c,jpcg4_f_c, &
222 jpcg5_f_c,jpcg6_f_c,jpcg7_f_c,jpcg8_f_c, &
223 jpcg9_f_c,jpcg1_f_o,jpcg2_f_o,jpcg3_f_o, &
224 jpcg4_f_o,jpcg5_f_o,jpcg6_f_o,jpcg7_f_o, &
225 jpcg8_f_o,jpcg9_f_o,jopcg1_f_c,jopcg2_f_c,&
226 jopcg3_f_c, jopcg4_f_c,jopcg5_f_c,jopcg6_f_c,&
227 jopcg7_f_c,jopcg8_f_c,jopcg1_f_o,jopcg2_f_o,&
228 jopcg3_f_o,jopcg4_f_o,jopcg5_f_o,jopcg6_f_o,&
229 jopcg7_f_o,jopcg8_f_o, &
231 jglysoa_r1, jglysoa_r2, jglysoa_oh, jglysoa_sfc, jglysoa_nh4, &
232 jant1_c,jant2_c,jant3_c, &
233 jant4_c,jbiog1_c,jbiog2_c,jbiog3_c,jbiog4_c, &
234 jant1_o,jant2_o,jant3_o, &
235 jant4_o,jbiog1_o,jbiog2_o,jbiog3_o,jbiog4_o, &
236 jasoaX,jasoa1,jasoa2,jasoa3,jasoa4,&
237 jbsoaX,jbsoa1,jbsoa2,jbsoa3,jbsoa4
242 jc_h, jc_nh4, jc_na, jc_ca, &
243 ja_hso4, ja_so4, ja_no3, ja_cl, ja_msa ! , ja_co3
246 !----------------------------------------------------------------------
249 iclm_aer, & ! i-location
250 jclm_aer, & ! j-location
251 kclm_aer, & ! k-location
252 kclm_aer_calcbgn, & ! k-loc for calc. to begin
253 kclm_aer_calcend, & ! k-loc for calc. to end
254 mclm_aer, & ! m-subarea
255 mgas_aer_xfer, & ! flag: mon, moff
256 mdynamic_solver, & ! flag: masteem, masceem
257 msize_framework, & ! flag: mmodal, msectional
258 jaerosolstate(nbin_a_maxd), & ! flag: no_aerosol, all_solid, all_liquid, mixed
259 jphase(nbin_a_maxd), & ! phase index: jtotal, jsolid, jliquid
260 jhyst_leg(nbin_a_maxd), & ! hysteresis leg: jhyst_up, jhyst_lo
261 iprint_input, & ! flag: mon, moff
264 n2o5_flag ! flag to control N2O5 het chem (0=off, 1=no Cl pathway, 2=full)
266 ! NOTE: Some of the following informational output defaults are overridden in
267 ! module_mosaic_driver.F based on the internal MOSAIC debug_level setting.
268 integer, save :: istat_mosaic_fe1
269 ! "fatal error status" for current problem (grid cell)
270 ! negative value means a fatal error has occured
271 integer, save :: nfe1_mosaic_cur = 0
272 ! fatal error count for current host-code time step
273 integer, save :: nfe1_mosaic_tot = 0
274 ! fatal error count for all time steps
275 integer, save :: iprint_mosaic_fe1 = 1
276 ! turns on/off output of fatal error diagnostics & counts
277 ! if iprint_mosaic_fe1 >= 10, mosaic_aerchem_error_dump
278 ! is called for each fatal error
279 integer, save :: iprint_mosaic_perform_stats = 1
280 ! turns on/off output of mosaic performance statistics
281 integer, save :: iprint_mosaic_diag1 = 1
282 ! turns on/off output of other warnings & diagnostics
283 integer, save :: iprint_mosaic_input_ok = 1
284 ! turns on/off output of mosaic initial values
285 ! when a serious error occurs
288 real(kind=8), save :: &
289 num_a(nbin_a_maxd), & ! #/cc(air)
290 dpgn_a(nbin_a_maxd), & ! cm
291 dp_dry_a(nbin_a_maxd), & ! cm
292 dp_wet_a(nbin_a_maxd), & ! cm
293 area_dry_a(nbin_a_maxd), & ! cm^2/cc(air)
294 area_wet_a(nbin_a_maxd), & ! cm^2/cc(air)
295 mass_dry_salt(nbin_a_maxd), & ! g/cc(air)
296 mass_dry_a(nbin_a_maxd), & ! g/cc(air)
297 mass_wet_a(nbin_a_maxd), & ! g/cc(air)
298 mass_soluble_a(nbin_a_maxd), & ! ng/cc(air)
299 vol_dry_a(nbin_a_maxd), & ! cc/cc(air)
300 vol_wet_a(nbin_a_maxd), & ! cc/cc(air)
301 dens_dry_a(nbin_a_maxd), & ! g/cc
302 dens_wet_a(nbin_a_maxd), & ! g/cc
303 sigmag_a(nbin_a_maxd), & ! -
304 water_a(nbin_a_maxd), & ! kg(water)/m^3(air)
305 water_a_hyst(nbin_a_maxd), & ! kg(water)/m^3(air) hysteresis (at 60% rh)
306 water_a_up(nbin_a_maxd), & ! kg(water)/m^3(air) at 60% rh
307 ph(nbin_a_maxd), & ! ph
308 c_as(nbin_a_maxd), & ! ammonium sulfate concentration (mol/kg water)
309 c_an(nbin_a_maxd), & ! ammonium nitrate concentration (mol/kg water)
310 a_nh4(nbin_a_maxd), & ! ammonium sulfate activity (mol/kg water)
311 aer(naer,3,nbin_a_maxd), & ! nmol/m^3
312 aer_sum(3,nbin_a_maxd), & ! nmol/m^3
313 aer_percent(naer,3,nbin_a_maxd), & ! %
314 comp_a(naercomp), & ! g/cc(air)
315 electrolyte(nelectrolyte,3,nbin_a_maxd), & ! nmol/m^3
316 electrolyte_sum(nelectrolyte,nbin_a_maxd), & ! nmol/m^3
317 epercent(nelectrolyte,3,nbin_a_maxd), & ! %
318 gas(ngas_volatile+ngas_het), & ! nmol/m^3
320 ah2o_a(nbin_a_maxd), & ! -
321 dpmv(nbin_a_maxd), & !
322 volume_a(nbin_a_maxd), & !
323 volume_bin(nbin_a_maxd), & ! dry volume of one particle
324 kelvin(nbin_a_maxd), & ! kelvin factor
325 kel(ngas_volatile+ngas_het,nbin_a_maxd), & ! kelvin factor for condensing species
328 total_species(ngas_volatile) !
331 !----------------------------------------------------------------------
334 idry_case3a(nbin_a_maxd), & ! mYES, mNO
335 ieqblm_bin(nbin_a_maxd), & ! myes, mno
336 ieqblm_astem, & ! myes, mno
337 ieqblm_soa, & ! mYES, mNO
343 nsteps_astem_max, & !
345 flagsoap(ngas_soa), & ! Added by Manish Shrivastav on 01/11/10
346 integrate(ngas_volatile,3,nbin_a_maxd) ! mYES, mNO
349 real(kind=8), save :: &
350 po_soa(ngas_volatile), & ! pascal
351 sat_soa(ngas_volatile), & ! nmol/m^3(air)
352 x_soa(naer), & ! soa mole fraction
353 sfc_a(ngas_volatile), & ! nmol/m^3
354 Heff(ngas_volatile,nbin_a_maxd), & !
355 kg(ngas_volatile+ngas_het,nbin_a_maxd), & ! 1/s
356 fraceq(ngas_volatile,nbin_a_maxd), & ! 1/s
357 df_gas_s(ngas_volatile,nbin_a_maxd), & ! nmol/m^3 (g-g*) = driving force)
358 df_gas_l(ngas_volatile,nbin_a_maxd), & ! nmol/m^3 (g-g*) = driving force)
359 df_gas_o(ngas_volatile,nbin_a_maxd), & ! nmol/m^3 (G-G*) = driving force)
360 flux_s(ngas_volatile,nbin_a_maxd), & ! nmol/m^3/s
361 flux_l(ngas_volatile,nbin_a_maxd), & ! nmol/m^3/s
362 flux_o(ngas_volatile,nbin_a_maxd), & ! nmol/m^3/s
369 delta_nh3_max(nbin_a_maxd), & ! nmol/m^3
370 delta_hno3_max(nbin_a_maxd), & ! nmol/m^3
371 delta_hcl_max(nbin_a_maxd), & ! nmol/m^3
376 volatile_s(ngas_volatile,nbin_a_maxd), & ! nmol/m^3
377 phi_volatile_s(ngas_volatile,nbin_a_maxd), & ! relative dr. force = (g-g*)/g
378 phi_volatile_l(ngas_volatile,nbin_a_maxd), & ! relative dr. force = (g-g*)/g
379 phi_volatile_o(ngas_volatile,nbin_a_maxd), & ! relative dr. force = (g-g*)/g
380 phi_nh4no3_s, & ! relative dr. force: 0 to 1
381 phi_nh4cl_s, & ! relative dr. force: 0 to 1
382 sum_vdf_s(ngas_volatile), & ! (nmol/m^3)^2
383 sum_vol_s(ngas_volatile), & ! nmol/m^3
384 sum_bin_s(ngas_volatile), & ! number of bins that have flux_s(iv) < 0
385 avg_df_gas_s(ngas_volatile), & ! nmol/m^3
386 h_s_i_m(ngas_volatile,nbin_a_maxd), & ! s
387 alpha_astem, & ! 0.01 to 0.05
388 rtol_eqb_astem, & ! 0.01 to 0.03
389 ptol_mol_astem, & ! 0.01 to 1.0
392 integer, parameter :: glysoa_param_off = 0, &
393 glysoa_param_simple = 1, &
394 glysoa_param_complex = 2
395 integer, save :: glysoa_param
397 !----------------------------------------------------------------------
400 jsalt_index(nsalt), &
403 jsalt_present(nsalt), &
407 iter_mesa(nbin_a_maxd), &
412 real(kind=8), save :: &
413 eleliquid(nelectrolyte), &
416 phi_salt_old(nsalt), &
422 frac_salt_liq(nsalt), &
423 frac_salt_solid(nsalt), &
424 growth_factor(nbin_a_maxd), &
425 d_mdrh(63,4), & ! mdrh(t) poly coeffs
428 molality0(nelectrolyte), &
433 !----------------------------------------------------------------------
434 ! mosaic physico-chemical constants
435 character(len=8), save :: &
436 ename(nelectrolyte), & ! electrolyte names
437 aer_name(naer), & ! generic aerosol species name
438 gas_name(ngas_volatile+ngas_het) ! gas species name
440 character(len=6), save :: &
444 real(kind=8), save :: &
445 t_k, & ! temperature (k)
446 p_atm, & ! pressure (atm)
447 rh_pc, & ! relative humidity (%)
448 cair_mol_cc, & ! air conc in mol/cc
449 cair_mol_m3, & ! air conc in mol/m^3
454 mw_electrolyte(nelectrolyte), & ! molecular wt of electrolytes
455 mw_aer_mac(naer), & ! molecular wt of generic species
456 mw_comp_a(naercomp), & ! molecular wt of compounds
457 mw_c(ncation), & ! molecular wt of cations
458 mw_a(nanion), & ! molecular wt of anions
459 dens_electrolyte(nelectrolyte), & ! g/cc
460 dens_aer_mac(naer), & ! g/cc
461 dens_comp_a(naercomp), & ! g/cc (density of compounds)
462 kappa_nonelectro(naer), & !
463 partial_molar_vol(ngas_volatile+ngas_het), & ! cc/mol
464 sigma_water, & ! water surface tension (n/m)
465 sigma_soln(nbin_a_maxd), & ! solution surface tension (n/m)
466 keq_gl(nrxn_aer_gl), & ! gas-liq eqblm const
467 keq_ll(nrxn_aer_ll), & ! liq-liq eqblm const
468 keq_sg(nrxn_aer_sg), & ! solid-gas eqbln const
469 keq_sl(nrxn_aer_sl), & ! solid-liq eqblm const
475 frac_n2o5_h2o(nbin_a_maxd) ! fraction of N2O5 which reacts with H2O after heterogeneous uptake
478 ref_index_a(naercomp), & ! refractive index of compounds
479 ri_avg_a(nbin_a_maxd) ! vol avg ref index of bin
482 !----------------------------------------------------------------------
483 ! mosaic activity coefficient models parameters
485 real(kind=8), save :: &
486 mc(ncation,nbin_a_maxd), & ! mol/kg(water)
487 ma(nanion,nbin_a_maxd), & ! mol/kg(water)
489 zc(ncation), & ! real charge
490 za(nanion), & ! real charge
491 gam(nelectrolyte,nbin_a_maxd), &
492 gam_ratio(nbin_a_maxd), &
493 log_gamz(nelectrolyte,nelectrolyte), &
494 log_gam(nelectrolyte), &
495 activity(nelectrolyte,nbin_a_maxd), &
500 a_zsr(6,nelectrolyte), & ! binary molality polynomial coeffs
501 b_zsr(nelectrolyte), & ! binary molality coeff
502 aw_min(nelectrolyte), & ! minimum frh at which molality polynomial can be used
503 b_mtem(6,nelectrolyte,nelectrolyte) ! mtem poly coeffs
506 !----------------------------------------------------------------------
507 ! mosaic massbalance variables
508 real(kind=8), save :: &
533 !----------------------------------------------------------------------
537 end module module_data_mosaic_therm